/** * Check the dependency graph * * @param bool $isEnable * @param string[] $moduleNames list of modules to be enabled/disabled * @param string[] $enabledModules list of enabled modules assuming enable/disable succeeds * @return array */ private function checkDependencyGraph($isEnable, $moduleNames, $enabledModules) { $dependenciesMissingAll = []; $graphMode = $isEnable ? Graph::DIRECTIONAL : Graph::INVERSE; foreach ($moduleNames as $moduleName) { $dependenciesMissing = []; $paths = $this->graph->findPathsToReachableNodes($moduleName, $graphMode); foreach (array_keys($this->fullModuleList) as $module) { if (isset($paths[$module])) { if ($isEnable && !in_array($module, $enabledModules)) { $dependenciesMissing[$module] = $paths[$module]; } else { if (!$isEnable && in_array($module, $enabledModules)) { $dependenciesMissing[$module] = array_reverse($paths[$module]); } } } } $dependenciesMissingAll[$moduleName] = $dependenciesMissing; } return $dependenciesMissingAll; }