| <?php |
|
|
| |
| |
| |
| |
| |
| |
|
|
| namespace Piwik\Plugin; |
|
|
| use Piwik\Config; |
| use Piwik\Container\StaticContainer; |
| use Piwik\UpdateCheck\ReleaseChannel; |
|
|
| |
| |
| |
| class ReleaseChannels |
| { |
| |
| |
| |
| private $pluginManager; |
|
|
| public function __construct(Manager $pluginManager) |
| { |
| $this->pluginManager = $pluginManager; |
| } |
|
|
| |
| |
| |
| public function getAllReleaseChannels() |
| { |
| $classNames = $this->pluginManager->findMultipleComponents('ReleaseChannel', 'Piwik\\UpdateCheck\\ReleaseChannel'); |
| $channels = array(); |
|
|
| foreach ($classNames as $className) { |
| $channels[] = StaticContainer::get($className); |
| } |
|
|
| usort($channels, function (ReleaseChannel $a, ReleaseChannel $b) { |
| if ($a->getOrder() === $b->getOrder()) { |
| return 0; |
| } |
|
|
| return ($a->getOrder() < $b->getOrder()) ? -1 : 1; |
| }); |
|
|
| return $channels; |
| } |
|
|
| |
| |
| |
| public function getActiveReleaseChannel() |
| { |
| $channel = Config::getInstance()->General['release_channel']; |
| $channel = $this->factory($channel); |
|
|
| if (!empty($channel)) { |
| return $channel; |
| } |
|
|
| $channels = $this->getAllReleaseChannels(); |
|
|
| |
| return reset($channels); |
| } |
|
|
| |
| |
| |
| |
| |
| public function setActiveReleaseChannelId($channel) |
| { |
| $general = Config::getInstance()->General; |
| $general['release_channel'] = $channel; |
| Config::getInstance()->General = $general; |
| } |
|
|
| public function isValidReleaseChannelId($releaseChannelId) |
| { |
| $channel = $this->factory($releaseChannelId); |
|
|
| return !empty($channel); |
| } |
|
|
| |
| |
| |
| private function factory($releaseChannelId): ?ReleaseChannel |
| { |
| $releaseChannelId = strtolower($releaseChannelId); |
|
|
| foreach ($this->getAllReleaseChannels() as $releaseChannel) { |
| if ($releaseChannelId === strtolower($releaseChannel->getId())) { |
| return $releaseChannel; |
| } |
| } |
|
|
| return null; |
| } |
| } |
|
|