123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\Module;
- use Magento\Framework\App\DeploymentConfig;
- use Magento\Framework\Config\ConfigOptionsListConstants;
- /**
- * A list of modules in the Magento application
- *
- * Encapsulates information about whether modules are enabled or not.
- * Represents only enabled modules through its interface
- */
- class ModuleList implements ModuleListInterface
- {
- /**
- * Deployment configuration
- *
- * @var DeploymentConfig
- */
- private $config;
- /**
- * Loader of module information from source code
- *
- * @var ModuleList\Loader
- */
- private $loader;
- /**
- * An associative array of modules
- *
- * The possible values are 1 (enabled) or 0 (disabled)
- *
- * @var int[]
- */
- private $configData;
- /**
- * Enumeration of the enabled module names
- *
- * @var string[]
- */
- private $enabled;
- /**
- * Constructor
- *
- * @param DeploymentConfig $config
- * @param ModuleList\Loader $loader
- */
- public function __construct(DeploymentConfig $config, ModuleList\Loader $loader)
- {
- $this->config = $config;
- $this->loader = $loader;
- }
- /**
- * {@inheritdoc}
- *
- * Note that this triggers loading definitions of all existing modules in the system.
- * Use this method only when you actually need modules' declared meta-information.
- *
- * @see getNames()
- */
- public function getAll()
- {
- if (null === $this->enabled) {
- $all = $this->loader->load();
- if (empty($all)) {
- return []; // don't record erroneous value into memory
- }
- $this->enabled = [];
- foreach ($all as $key => $value) {
- if ($this->has($key)) {
- $this->enabled[$key] = $value;
- }
- }
- }
- return $this->enabled;
- }
- /**
- * {@inheritdoc}
- * @see has()
- */
- public function getOne($name)
- {
- $enabled = $this->getAll();
- return $enabled[$name] ?? null;
- }
- /**
- * {@inheritdoc}
- */
- public function getNames()
- {
- $this->loadConfigData();
- if (!$this->configData) {
- return [];
- }
- $result = array_keys(array_filter($this->configData));
- return $result;
- }
- /**
- * {@inheritdoc}
- */
- public function has($name)
- {
- $this->loadConfigData();
- if (!$this->configData) {
- return false;
- }
- return !empty($this->configData[$name]);
- }
- /**
- * Checks if module list information is available.
- *
- * @return bool
- */
- public function isModuleInfoAvailable()
- {
- $this->loadConfigData();
- if ($this->configData) {
- return true;
- }
- return false;
- }
- /**
- * Loads configuration data only
- *
- * @return void
- */
- private function loadConfigData()
- {
- $this->config->resetData();
- if (null === $this->configData && null !== $this->config->get(ConfigOptionsListConstants::KEY_MODULES)) {
- $this->configData = $this->config->get(ConfigOptionsListConstants::KEY_MODULES);
- }
- }
- }
|