Exemple #1
0
 /**
  * Sort module declarations based on module dependencies
  *
  * @param array $modules
  * @return array
  * @SuppressWarnings(PHPMD.ShortVariable)
  * @SuppressWarnings(PHPMD.UnusedLocalVariable)
  */
 protected function _sortModules(array $modules)
 {
     /**
      * The following map is needed only for sorting
      * (in order not to add extra information about dependencies to module config)
      */
     $moduleDependencyMap = array();
     foreach ($modules as $moduleName => $value) {
         $moduleDependencyMap[] = array('moduleName' => $moduleName, 'dependencies' => $this->dependencyManager->getExtendedModuleDependencies($moduleName, $modules));
     }
     // Use "bubble sorting" because usort does not check each pair of elements and in this case it is important
     $modulesCount = count($moduleDependencyMap);
     for ($i = 0; $i < $modulesCount - 1; $i++) {
         for ($j = $i; $j < $modulesCount; $j++) {
             if (in_array($moduleDependencyMap[$j]['moduleName'], $moduleDependencyMap[$i]['dependencies'])) {
                 $temp = $moduleDependencyMap[$i];
                 $moduleDependencyMap[$i] = $moduleDependencyMap[$j];
                 $moduleDependencyMap[$j] = $temp;
             }
         }
     }
     $sortedModules = array();
     foreach ($moduleDependencyMap as $moduleDependencyPair) {
         $sortedModules[$moduleDependencyPair['moduleName']] = $modules[$moduleDependencyPair['moduleName']];
     }
     return $sortedModules;
 }
Exemple #2
0
 /**
  * Check all necessary extensions are loaded and available
  *
  * @return void
  * @throws \Exception
  */
 protected function checkExtensionsLoaded()
 {
     try {
         foreach ($this->moduleList->getModules() as $moduleData) {
             $this->dependencyManager->checkModuleDependencies($moduleData);
         }
     } catch (\Exception $exception) {
         $this->messageManager->addError($exception->getMessage());
         throw new \Exception($exception->getMessage());
     }
 }