PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 1.3.1
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v1.3.1
5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / app / core / Plugin / ReleaseChannels.php
matomo / app / core / Plugin Last commit date
Dimension 6 years ago API.php 6 years ago AggregatedMetric.php 6 years ago ArchivedMetric.php 6 years ago Archiver.php 6 years ago Categories.php 6 years ago ComponentFactory.php 6 years ago ComputedMetric.php 6 years ago ConsoleCommand.php 6 years ago Controller.php 6 years ago ControllerAdmin.php 6 years ago Dependency.php 6 years ago LogTablesProvider.php 6 years ago Manager.php 6 years ago Menu.php 6 years ago MetadataLoader.php 6 years ago Metric.php 6 years ago PluginException.php 6 years ago ProcessedMetric.php 6 years ago ReleaseChannels.php 6 years ago Report.php 6 years ago ReportsProvider.php 6 years ago RequestProcessors.php 6 years ago Segment.php 6 years ago SettingsProvider.php 6 years ago Tasks.php 6 years ago ThemeStyles.php 6 years ago ViewDataTable.php 6 years ago Visualization.php 6 years ago WidgetsProvider.php 6 years ago
ReleaseChannels.php
104 lines
1 <?php
2 /**
3 * Piwik - free/libre analytics platform
4 *
5 * @link https://matomo.org
6 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
7 *
8 */
9 namespace Piwik\Plugin;
10
11 use Piwik\Config;
12 use Piwik\Container\StaticContainer;
13 use Piwik\UpdateCheck\ReleaseChannel;
14
15 /**
16 * Get release channels that are defined by plugins.
17 */
18 class ReleaseChannels
19 {
20 /**
21 * @var Manager
22 */
23 private $pluginManager;
24
25 public function __construct(Manager $pluginManager)
26 {
27 $this->pluginManager = $pluginManager;
28 }
29
30 /**
31 * @return ReleaseChannel[]
32 */
33 public function getAllReleaseChannels()
34 {
35 $classNames = $this->pluginManager->findMultipleComponents('ReleaseChannel', 'Piwik\\UpdateCheck\\ReleaseChannel');
36 $channels = array();
37
38 foreach ($classNames as $className) {
39 $channels[] = StaticContainer::get($className);
40 }
41
42 usort($channels, function (ReleaseChannel $a, ReleaseChannel $b) {
43 if ($a->getOrder() === $b->getOrder()) {
44 return 0;
45 }
46
47 return ($a->getOrder() < $b->getOrder()) ? -1 : 1;
48 });
49
50 return $channels;
51 }
52
53 /**
54 * @return ReleaseChannel
55 */
56 public function getActiveReleaseChannel()
57 {
58 $channel = Config::getInstance()->General['release_channel'];
59 $channel = $this->factory($channel);
60
61 if (!empty($channel)) {
62 return $channel;
63 }
64
65 $channels = $this->getAllReleaseChannels();
66
67 // we default to the one with lowest id
68 return reset($channels);
69 }
70
71 /**
72 * Sets the given release channel in config but does not save id. $config->forceSave() still needs to be called
73 * @internal tests only
74 * @param string $channel
75 */
76 public function setActiveReleaseChannelId($channel)
77 {
78 $general = Config::getInstance()->General;
79 $general['release_channel'] = $channel;
80 Config::getInstance()->General = $general;
81 }
82
83 public function isValidReleaseChannelId($releaseChannelId)
84 {
85 $channel = $this->factory($releaseChannelId);
86
87 return !empty($channel);
88 }
89
90 /**
91 * @param string $releaseChannelId
92 * @return ReleaseChannel
93 */
94 private function factory($releaseChannelId)
95 {
96 $releaseChannelId = strtolower($releaseChannelId);
97
98 foreach ($this->getAllReleaseChannels() as $releaseChannel) {
99 if ($releaseChannelId === strtolower($releaseChannel->getId())) {
100 return $releaseChannel;
101 }
102 }
103 }
104 }