extensions = $extensions; $this->informationContainerFactory = $informationContainerFactory; $this->getExtensionName = $getExtensionName; $this->extensionsConfig = $extensionsConfig; $this->moduleList = $moduleList; } /** * @inheritDoc */ public function execute(string $moduleName): ExtensionInformationInterface { $moduleName = $this->getExtensionName->execute($moduleName); if (! isset($this->extensions[$moduleName])) { /** @var \Plumrocket\Base\Model\Extension\Information\Container $infoContainer */ $infoContainer = $this->informationContainerFactory->create(); $infoContainer->setModuleName($moduleName); if ($extensionConfig = $this->extensionsConfig->get($moduleName)) { $infoContainer->setIsService($extensionConfig[ExtensionInformationInterface::FIELD_IS_SERVICE]) ->setModuleName($extensionConfig['name']) ->setTitle($extensionConfig['title']) ->setConfigSection($extensionConfig['config_section']) ->setIsEnabledFieldConfigPath($extensionConfig['is_enabled_path']) ->setDocumentationLink($extensionConfig['documentation'] ?: $extensionConfig['wiki']) ->setUrl($extensionConfig[ExtensionInformationInterface::FIELD_URL] ?? '') ->setMarketplaceUrl( $extensionConfig[ExtensionInformationInterface::FIELD_MARKETPLACE_URL] ?? '' ); } else { if ($this->moduleList->has("Plumrocket_$moduleName")) { $infoContainer->setIsService(in_array($moduleName, $this->services, true)); } } $this->extensions[$moduleName] = $infoContainer; } return $this->extensions[$moduleName]; } }