1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
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\Marketplace\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', $default = true, 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');
});
}
}
|