* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 */ namespace PrestaShop\Module\PrestashopFacebook\Repository; use Context; use Module; use PrestaShop\Module\PrestashopFacebook\Config\Config; use PrestaShop\PrestaShop\Adapter\SymfonyContainer; class ModuleRepository { /** * @var string */ private $moduleName; public function __construct(string $moduleName) { $this->moduleName = $moduleName; } /** * @return string|null */ public function getModuleVersion() { /** @var Module|null $module */ $module = Module::getInstanceByName($this->moduleName); if (!empty($module)) { return $module->version; } return null; } /** * @return string */ public function getUpgradeLink() { $router = SymfonyContainer::getInstance()->get('router'); return \Tools::getHttpHost(true) . $router->generate('admin_module_manage_action', [ 'action' => 'upgrade', 'module_name' => $this->moduleName, ]); } /** * @return string */ public function getEnableLink() { $router = SymfonyContainer::getInstance()->get('router'); return \Tools::getHttpHost(true) . $router->generate('admin_module_manage_action', [ 'action' => 'enable', 'module_name' => $this->moduleName, ]); } /** * @return array */ public function getInformationsAboutModule(): array { return [ 'version' => $this->getModuleVersion(), 'upgradeLink' => $this->getUpgradeLink(), 'hooks' => $this->getActiveHooks(), ]; } /** * @return bool */ public function moduleIsEnabled(): bool { return Module::isEnabled($this->moduleName); } /** * @return array */ public function getActiveHooks(): array { $context = Context::getContext(); $hooks = []; /** @var Module|null $moduleInstance */ $moduleInstance = Module::getInstanceByName($this->moduleName); if (empty($moduleInstance)) { return $hooks; } foreach (Config::HOOK_LIST as $hook) { $hooks[$hook] = \Hook::isModuleRegisteredOnHook($moduleInstance, $hook, $context->shop->id); } return $hooks; } }