Backend\Modules\Extensions\Engine\Model::getModules PHP Méthode

getModules() public static méthode

If a module contains a info.xml it will be parsed.
public static getModules ( ) : array
Résultat array
    public static function getModules()
    {
        $installedModules = (array) BackendModel::getContainer()->getParameter('installed_modules');
        $modules = BackendModel::getModulesOnFilesystem(false);
        $manageableModules = array();
        // get more information for each module
        foreach ($modules as $moduleName) {
            if (in_array($moduleName, self::$ignoredModules)) {
                continue;
            }
            $module = array();
            $module['id'] = 'module_' . $moduleName;
            $module['raw_name'] = $moduleName;
            $module['name'] = \SpoonFilter::ucfirst(BL::getLabel(\SpoonFilter::toCamelCase($moduleName)));
            $module['description'] = '';
            $module['version'] = '';
            $module['installed'] = false;
            $module['cronjobs_active'] = true;
            if (in_array($moduleName, $installedModules)) {
                $module['installed'] = true;
            }
            try {
                $infoXml = @new \SimpleXMLElement(BACKEND_MODULES_PATH . '/' . $module['raw_name'] . '/info.xml', LIBXML_NOCDATA, true);
                $info = self::processModuleXml($infoXml);
                // set fields if they were found in the XML
                if (isset($info['description'])) {
                    $module['description'] = BackendDataGridFunctions::truncate($info['description'], 80);
                }
                if (isset($info['version'])) {
                    $module['version'] = $info['version'];
                }
                // check if cronjobs are set
                if (isset($info['cronjobs'])) {
                    foreach ($info['cronjobs'] as $cronjob) {
                        if (!$cronjob['active']) {
                            $module['cronjobs_active'] = false;
                            break;
                        }
                    }
                }
            } catch (\Exception $e) {
                // don't act upon error, we simply won't possess some info
            }
            $manageableModules[] = $module;
        }
        return $manageableModules;
    }

Usage Example

Exemple #1
0
 /**
  * Load the data for the 2 data grids.
  */
 private function loadData()
 {
     // get all manageable modules
     $modules = BackendExtensionsModel::getModules();
     // split the modules in 2 separate data grid sources
     foreach ($modules as $module) {
         if ($module['installed']) {
             $this->installedModules[] = $module;
         } else {
             $this->installableModules[] = $module;
         }
     }
 }