diff options
author | Stefan Giehl <stefan@matomo.org> | 2020-05-17 23:39:32 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-17 23:39:32 +0300 |
commit | b6ace0e06c2ef3f8f98ac55feb934ebe0d304107 (patch) | |
tree | f257e7b38af89a61c4e15e8aef2a854882676570 /plugins/CoreUpdater/SystemSettings.php | |
parent | d89c2b7fb4b295542204cd5d81c35f79b5c93489 (diff) |
Use utf8mb4 character set if possible (#15618)
Diffstat (limited to 'plugins/CoreUpdater/SystemSettings.php')
-rw-r--r-- | plugins/CoreUpdater/SystemSettings.php | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/plugins/CoreUpdater/SystemSettings.php b/plugins/CoreUpdater/SystemSettings.php index 8bf13a03b9..e8de1fb493 100644 --- a/plugins/CoreUpdater/SystemSettings.php +++ b/plugins/CoreUpdater/SystemSettings.php @@ -8,6 +8,8 @@ namespace Piwik\Plugins\CoreUpdater; +use Piwik\Db\Settings; +use Piwik\DbHelper; use Piwik\Piwik; use Piwik\Plugin\ReleaseChannels; use Piwik\Plugins\CoreAdminHome\Controller as CoreAdminController; @@ -31,6 +33,9 @@ class SystemSettings extends \Piwik\Settings\Plugin\SystemSettings /** @var Setting */ public $sendPluginUpdateEmail; + /** @var Setting */ + public $updateToUtf8mb4; + /** * @var ReleaseChannels */ @@ -54,6 +59,12 @@ class SystemSettings extends \Piwik\Settings\Plugin\SystemSettings $isWritable = $isWritable && PluginUpdateCommunication::canBeEnabled(); $this->sendPluginUpdateEmail = $this->createSendPluginUpdateEmail(); $this->sendPluginUpdateEmail->setIsWritableByCurrentUser($isWritable); + + $isWritable = Piwik::hasUserSuperUserAccess() && CoreAdminController::isGeneralSettingsAdminEnabled(); + $dbSettings = new Settings(); + if ($isWritable && $dbSettings->getUsedCharset() !== 'utf8mb4' && DbHelper::getDefaultCharset() === 'utf8mb4') { + $this->updateToUtf8mb4 = $this->createUpdateToUtf8mb4(); + } } private function createReleaseChannel() @@ -104,4 +115,19 @@ class SystemSettings extends \Piwik\Settings\Plugin\SystemSettings }); } + private function createUpdateToUtf8mb4() + { + return $this->makeSetting('update_to_utf8mb4', $default = false, FieldConfig::TYPE_BOOL, function (FieldConfig $field) { + $field->introduction = Piwik::translate('CoreUpdater_ConvertToUtf8mb4'); + $field->title = Piwik::translate('CoreUpdater_TriggerDatabaseConversion'); + $field->uiControl = FieldConfig::UI_CONTROL_CHECKBOX; + $field->inlineHelp = Piwik::translate('CoreUpdater_Utf8mb4ConversionHelp', [ + '�', + '<code>' . PIWIK_INCLUDE_PATH . '/console core:convert-to-utf8mb4</code>', + '<a href="https://matomo.org/faq/how-to-update/how-to-convert-the-database-to-utf8mb4-charset/" rel="noreferrer noopener" target="_blank">', + '</a>' + ]); + }); + } + } |