![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/amasty/base/Model/ |
<?php /** * @author Amasty Team * @copyright Copyright (c) Amasty (https://www.amasty.com) * @package Magento 2 Base Package */ namespace Amasty\Base\Model; use Amasty\Base\Model\Feed\ExtensionsProvider; use Magento\Framework\Module\ModuleListInterface; class ModuleListProcessor { /** * @var ModuleListInterface */ private $moduleList; /** * @var array */ private $modules; /** * @var Feed\ExtensionsProvider */ private $extensionsProvider; /** * @var ModuleInfoProvider */ private $moduleInfoProvider; public function __construct( ModuleListInterface $moduleList, ExtensionsProvider $extensionsProvider, ModuleInfoProvider $moduleInfoProvider ) { $this->moduleList = $moduleList; $this->extensionsProvider = $extensionsProvider; $this->moduleInfoProvider = $moduleInfoProvider; } /** * @return array */ public function getModuleList() { if ($this->modules !== null) { return $this->modules; } $this->modules = [ 'lastVersion' => [], 'hasUpdate' => [] ]; $modules = $this->moduleList->getNames(); sort($modules); foreach ($modules as $moduleName) { if ($moduleName === 'Amasty_Base' || strpos($moduleName, 'Amasty_') === false || in_array($moduleName, $this->moduleInfoProvider->getRestrictedModules(), true) ) { continue; } try { if (empty($module = $this->getModuleInfo($moduleName))) { continue; } } catch (\Exception $e) { continue; } if (empty($module['hasUpdate'])) { $this->modules['lastVersion'][] = $module; } else { $this->modules['hasUpdate'][] = $module; } } return $this->modules; } /** * @param string $moduleCode * @return array */ protected function getModuleInfo(string $moduleCode): array { $module = $this->moduleInfoProvider->getModuleInfo($moduleCode); if (!is_array($module) || !isset($module['version']) || !isset($module['description']) ) { return []; } $currentVer = $module['version']; $module['description'] = $this->replaceAmastyText($module['description']); $allExtensions = $this->extensionsProvider->getAllFeedExtensions(); if ($allExtensions && isset($allExtensions[$moduleCode])) { $ext = end($allExtensions[$moduleCode]); $lastVer = $ext['version']; $module['lastVersion'] = $lastVer; $module['hasUpdate'] = version_compare($currentVer, $lastVer, '<'); $module['description'] = $this->replaceAmastyText($ext['name']); $module['url'] = !empty($ext['url']) ? $ext['url'] : ''; $module['date'] = !empty($ext['date']) ? $ext['date'] : ''; $module['code'] = $moduleCode; return $module; } return []; } /** * @param string $moduleName * * @return string */ protected function replaceAmastyText($moduleName) { return str_replace(['for Magento 2', 'by Amasty'], '', $moduleName); } }