* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) */ namespace PrestaShop\Module\AutoUpgrade; use PrestaShop\Module\AutoUpgrade\Parameters\UpgradeConfiguration; class ChannelInfo { /** * @var array */ private $info = []; /** * @var string */ private $channel; public function __construct(Upgrader $upgrader, UpgradeConfiguration $config, string $channel) { $this->channel = $channel; $publicChannels = ['minor', 'major', 'rc', 'beta', 'alpha']; $upgrader->branch = VersionUtils::splitPrestaShopVersion(_PS_VERSION_)['major']; $upgrader->channel = $channel; if (in_array($channel, $publicChannels)) { if ($channel == 'private' && !$config->get('private_allow_major')) { $upgrader->checkPSVersion(false, ['private', 'minor']); } else { $upgrader->checkPSVersion(false, ['minor']); } $this->info = [ 'branch' => $upgrader->branch, 'available' => $upgrader->available, 'version_num' => $upgrader->version_num, 'version_name' => $upgrader->version_name, 'link' => $upgrader->link, 'md5' => $upgrader->md5, 'changelog' => $upgrader->changelog, ]; return; } switch ($channel) { case 'private': if (!$config->get('private_allow_major')) { $upgrader->checkPSVersion(false, ['private', 'minor']); } else { $upgrader->checkPSVersion(false, ['minor']); } $this->info = [ 'available' => $upgrader->available, 'branch' => $upgrader->branch, 'version_num' => $upgrader->version_num, 'version_name' => $upgrader->version_name, 'link' => $config->get('private_release_link'), 'md5' => $config->get('private_release_md5'), 'changelog' => $upgrader->changelog, ]; break; case 'archive': case 'directory': $this->info = [ 'available' => true, ]; break; } } /** * @return array */ public function getInfo(): array { return $this->info; } public function getChannel(): string { return $this->channel; } }