fileHelper = $file; try { $this->configParameters = $config->loadFiles($config_path); } catch (\Exception $e) { trigger_error('Config failed to load files: ' . $e); } $this->enabledModules = $this->configParameters->get('modules.enabled'); } public function getAllModules(): void { $modules = (new ModuleManager($this->configParameters, $this->fileHelper))->getAllModules(); $this->enabledModules = $modules; } /** * @return array */ public function getAllCommands(): array { $commandClasses = []; $filePaths = []; if (empty($this->enabledModules)) { $this->getAllModules(); } if (!empty($this->enabledModules)) { foreach ($this->enabledModules as $module) { $filePaths[] = APP_PATH . '/' . $module . '/Cli'; } } $files = $this->fileHelper->findFiles($filePaths, '/Command.php$/'); if (!empty($files)) { foreach ($files as $file) { $parts = explode('/', $file); $key = array_search('modules', $parts, true); $parts = array_splice($parts, ($key + 1), count($parts)); $filename = end($parts); $classname = rtrim($filename, '.php'); $keys = array_keys($parts); $key = end($keys); $parts[$key] = $classname; $commandClass = 'SuiteCRM\\Core\\Modules\\' . implode('\\', $parts); $commandClasses[] = new $commandClass($this->configParameters); } } return $commandClasses; } }