Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/CoreUpdater/SystemSettings.php')
-rw-r--r--plugins/CoreUpdater/SystemSettings.php109
1 files changed, 109 insertions, 0 deletions
diff --git a/plugins/CoreUpdater/SystemSettings.php b/plugins/CoreUpdater/SystemSettings.php
new file mode 100644
index 0000000000..4827a74676
--- /dev/null
+++ b/plugins/CoreUpdater/SystemSettings.php
@@ -0,0 +1,109 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CoreUpdater;
+
+use Piwik\Piwik;
+use Piwik\Plugin\ReleaseChannels;
+use Piwik\Plugins\CoreAdminHome\Controller as CoreAdminController;
+use Piwik\Plugins\CorePluginsAdmin\UpdateCommunication as PluginUpdateCommunication;
+use Piwik\Settings\Setting;
+use Piwik\Settings\FieldConfig;
+
+/**
+ * Defines Settings for CoreUpdater.
+ *
+ * Usage like this:
+ * $settings = new SystemSettings();
+ * $settings->metric->getValue();
+ * $settings->description->getValue();
+ */
+class SystemSettings extends \Piwik\Settings\Plugin\SystemSettings
+{
+ /** @var Setting */
+ public $releaseChannel;
+
+ /** @var Setting */
+ public $sendPluginUpdateEmail;
+
+ /**
+ * @var ReleaseChannels
+ */
+ private $releaseChannels;
+
+ public function __construct(ReleaseChannels $releaseChannels)
+ {
+ $this->releaseChannels = $releaseChannels;
+
+ parent::__construct();
+ }
+
+ protected function init()
+ {
+ $this->title = Piwik::translate('CoreAdminHome_UpdateSettings');
+
+ $isWritable = Piwik::hasUserSuperUserAccess() && CoreAdminController::isGeneralSettingsAdminEnabled();
+ $this->releaseChannel = $this->createReleaseChannel();
+ $this->releaseChannel->setIsWritableByCurrentUser($isWritable);
+
+ $isWritable = $isWritable && PluginUpdateCommunication::canBeEnabled();
+ $this->sendPluginUpdateEmail = $this->createSendPluginUpdateEmail();
+ $this->sendPluginUpdateEmail->setIsWritableByCurrentUser($isWritable);
+ }
+
+ private function createReleaseChannel()
+ {
+ $releaseChannels = $this->releaseChannels;
+ $default = 'latest_stable';
+
+ return $this->makeSettingManagedInConfigOnly('General', 'release_channel', $default, FieldConfig::TYPE_STRING, function (FieldConfig $field) use ($releaseChannels) {
+
+ $field->introduction = Piwik::translate('CoreAdminHome_ReleaseChannel');
+ $field->uiControl = FieldConfig::UI_CONTROL_RADIO;
+
+ $field->availableValues = array();
+ foreach ($releaseChannels->getAllReleaseChannels() as $channel) {
+ $name = $channel->getName();
+ $description = $channel->getDescription();
+ if (!empty($description)) {
+ $name .= ' (' . $description . ')';
+ }
+
+ $field->availableValues[$channel->getId()] = $name;
+ }
+
+ $field->validate = function ($channel) use ($releaseChannels) {
+ if (!$releaseChannels->isValidReleaseChannelId($channel)) {
+ throw new \Exception('Release channel is not valid');
+ };
+ };
+
+ $field->inlineHelp = Piwik::translate('CoreAdminHome_DevelopmentProcess',
+ array("<a href='?module=Proxy&action=redirect&url=http://piwik.org/participate/development-process/' target='_blank'>",
+ "</a>"))
+ . Piwik::translate('<br/>')
+ . Piwik::translate('CoreAdminHome_StableReleases',
+ array("<a href='?module=Proxy&action=redirect&url=http%3A%2F%2Fdeveloper.piwik.org%2Fguides%2Fcore-team-workflow%23influencing-piwik-development' target='_blank'>",
+ "</a>"))
+ . Piwik::translate('<br />')
+ . Piwik::translate('CoreAdminHome_LtsReleases');
+ });
+ }
+
+ private function createSendPluginUpdateEmail()
+ {
+ return $this->makeSetting('enable_plugin_update_communication', false, FieldConfig::TYPE_BOOL, function (FieldConfig $field) {
+ $field->introduction = Piwik::translate('CoreAdminHome_SendPluginUpdateCommunication');
+ $field->uiControl = FieldConfig::UI_CONTROL_RADIO;
+ $field->availableValues = array('1' => Piwik::translate('General_Yes'),
+ '0' => sprintf('%s (%s)', Piwik::translate('General_No'), Piwik::translate('General_Default')));
+ $field->inlineHelp = Piwik::translate('CoreAdminHome_SendPluginUpdateCommunicationHelp');
+ });
+ }
+
+}