20 private $enabledModuleList;
27 private $fullModuleList;
50 $this->enabledModuleList = $list->
getNames();
51 $this->fullModuleList =
$loader->load();
52 $this->packageInfo = $packageInfoFactory->
create();
64 $masterList = isset($currentlyEnabledModules) ? $currentlyEnabledModules : $this->enabledModuleList;
66 $enabledModules = array_diff($masterList, $toBeDisabledModules);
67 return $this->checkDependencyGraph(
false, $toBeDisabledModules, $enabledModules);
79 $masterList = isset($currentlyEnabledModules) ? $currentlyEnabledModules : $this->enabledModuleList;
81 $enabledModules = array_unique(array_merge($masterList, $toBeEnabledModules));
82 return $this->checkDependencyGraph(
true, $toBeEnabledModules, $enabledModules);
93 private function checkDependencyGraph($isEnable, $moduleNames, $enabledModules)
95 $this->graph = $this->createGraph();
96 $dependenciesMissingAll = [];
98 foreach ($moduleNames as $moduleName) {
99 $dependenciesMissing = [];
100 $paths = $this->graph->findPathsToReachableNodes($moduleName, $graphMode);
101 $modules = array_merge(
102 array_keys($this->fullModuleList),
103 $this->packageInfo->getNonExistingDependencies()
105 foreach ($modules as $module) {
106 if (isset(
$paths[$module])) {
107 if ($isEnable && !in_array($module, $enabledModules)) {
108 $dependenciesMissing[$module] =
$paths[$module];
109 }
elseif (!$isEnable && in_array($module, $enabledModules)) {
110 $dependenciesMissing[$module] = array_reverse(
$paths[$module]);
114 $dependenciesMissingAll[$moduleName] = $dependenciesMissing;
116 return $dependenciesMissingAll;
124 private function createGraph()
130 foreach (array_keys($this->fullModuleList) as $moduleName) {
131 $nodes[] = $moduleName;
132 foreach ($this->packageInfo->getRequire($moduleName) as $dependModuleName) {
133 if ($dependModuleName) {
134 $dependencies[] = [$moduleName, $dependModuleName];
138 $nodes = array_unique(
139 array_merge($nodes, $this->packageInfo->getNonExistingDependencies())
142 return new Graph($nodes, $dependencies);
elseif(isset( $params[ 'redirect_parent']))
checkDependenciesWhenDisableModules($toBeDisabledModules, $currentlyEnabledModules=null)
__construct(ModuleList $list, ModuleList\Loader $loader, PackageInfoFactory $packageInfoFactory)
checkDependenciesWhenEnableModules($toBeEnabledModules, $currentlyEnabledModules=null)