Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ModuleStatus.php
Go to the documentation of this file.
1 <?php
7 namespace Magento\Setup\Model;
8 
13 
15 {
21  protected $allModules;
22 
28  protected $deploymentConfig;
29 
35  private $dependencyChecker;
36 
44  public function __construct(
45  ModuleLoader $moduleLoader,
47  ObjectManagerProvider $objectManagerProvider
48  ) {
49  $this->allModules = $moduleLoader->load();
50  foreach (array_keys($this->allModules) as $module) {
51  $this->allModules[$module]['selected'] = true;
52  $this->allModules[$module]['disabled'] = true;
53  }
54  $this->deploymentConfig = $deploymentConfig;
55  $this->dependencyChecker = $objectManagerProvider->get()
56  ->get(\Magento\Framework\Module\DependencyChecker::class);
57  }
58 
65  public function getAllModules(array $selectedModules = null)
66  {
67  if (isset($this->allModules)) {
68  if (isset($selectedModules)) {
69  $diff = array_diff(array_keys($this->allModules), $selectedModules);
70  foreach ($diff as $module) {
71  $this->allModules[$module]['selected'] = false;
72  }
73  } else {
74  $this->deselectDisabledModules();
75  }
76  $disableModules = $this->getListOfDisableModules();
77  if (isset($disableModules)) {
78  foreach ($disableModules as $module) {
79  $this->allModules[$module]['disabled'] = false;
80  }
81  }
82  //check if module is not checked and disabled - possible when config is incorrectly modified.
83  foreach ($this->allModules as $module) {
84  if (!$module['selected'] && $module['disabled']) {
85  $this->allModules[$module['name']]['disabled'] = false;
86  }
87  }
88  return $this->allModules;
89  }
90  return [];
91  }
92 
98  private function getListOfDisableModules()
99  {
100  $canBeDisabled = [];
101  $enabledModules = $this->getListOfEnabledModules();
102  foreach ($this->allModules as $module) {
103  $errorMessages = $this->dependencyChecker->checkDependenciesWhenDisableModules(
104  [$module['name']],
105  $enabledModules
106  );
107  if (sizeof($errorMessages[$module['name']]) === 0) {
108  $canBeDisabled[] = $module['name'];
109  }
110  }
111  return $canBeDisabled;
112  }
113 
119  private function getListOfEnabledModules()
120  {
121  $enabledModules = [];
122  foreach ($this->allModules as $module) {
123  if ($module['selected']) {
124  $enabledModules[] = $module['name'];
125  }
126  }
127  return $enabledModules;
128  }
129 
136  public function setIsEnabled($status, $moduleName)
137  {
138  $this->allModules[$moduleName]['selected'] = $status;
139  }
140 
146  private function deselectDisabledModules()
147  {
148  $existingModules = $this->deploymentConfig->get(ConfigOptionsListConstants::KEY_MODULES);
149  if (isset($existingModules)) {
150  foreach ($existingModules as $module => $value) {
151  if (!$value) {
152  $this->allModules[$module]['selected'] = false;
153  }
154  }
155  }
156  }
157 }
__construct(ModuleLoader $moduleLoader, DeploymentConfig $deploymentConfig, ObjectManagerProvider $objectManagerProvider)
setIsEnabled($status, $moduleName)
$value
Definition: gender.phtml:16
$status
Definition: order_status.php:8
getAllModules(array $selectedModules=null)