/** * * @return array */ public static function buildTemplatesList() { $rawTemplatesFileList = array(); $moduleList = Informations::getModuleList(); foreach ($moduleList as $module) { $modulePath = Informations::getModulePath($module); $pollerTemplatesFilePath = $modulePath . '/pollers/*.json'; $rawTemplatesFileList = array_merge($rawTemplatesFileList, glob($pollerTemplatesFilePath)); } $templatesList = array(); foreach ($rawTemplatesFileList as $templateFile) { $liteTemplate = self::liteFileParser($templateFile); if (!isset($templatesList[$liteTemplate['name']])) { $myLiteTemplate = new LiteTemplate($liteTemplate['name']); if ($liteTemplate['engine']) { $myLiteTemplate->setEnginePath($templateFile); } if ($liteTemplate['broker']) { $myLiteTemplate->setBrokerPath($templateFile); } $templatesList[$liteTemplate['name']] = $myLiteTemplate; } else { $enginePath = $templatesList[$liteTemplate['name']]->getEnginePath(); if ($liteTemplate['engine'] && empty($enginePath)) { $templatesList[$liteTemplate['name']]->setEnginePath($templateFile); } $brokerPath = $templatesList[$liteTemplate['name']]->getBrokerPath(); if ($liteTemplate['broker']) { $templatesList[$liteTemplate['name']]->setBrokerPath($templateFile); } } unset($liteTemplate); } return $templatesList; }
/** * List module names * @param string $type * @param string $status */ public function simpleListAction($onlyActivated = 1) { $moduleList = Informations::getModuleList($onlyActivated); foreach ($moduleList as $module) { echo $module . "\n"; } }
/** * Init event listeners of modules */ public static function initEventListeners() { $moduleList = Informations::getModuleList(); foreach ($moduleList as $module) { $listenersPath = Informations::getModulePath($module) . '/listeners/'; if (file_exists($listenersPath)) { $ModuleListenersList = glob($listenersPath . '*'); foreach ($ModuleListenersList as $moduleListenersPath) { $mTarget = substr($moduleListenersPath, strlen($listenersPath)); $mSource = CamelCaseTransformation::customToCamelCase($module, '-'); self::attachModuleEventListeners($mSource, $mTarget, $moduleListenersPath); } } } }
/** * */ private function parseManifest() { $manifestDir = realpath(Informations::getModulePath(static::$moduleShortName) . '/'); $manifestFile = $this->objectName . 'Manifest.json'; $manifestPath = $manifestDir . '/api/internal/' . $manifestFile; $objectManifest = json_decode(file_get_contents($manifestPath), true); $moduleList = Informations::getModuleList(); foreach ($moduleList as $module) { if ($module !== static::$moduleShortName) { $modulePath = Informations::getModulePath($module); if (file_exists($modulePath . '/api/internal/' . $manifestFile)) { $objectManifest = self::mergeManifest($objectManifest, json_decode(file_get_contents($modulePath . '/api/internal/' . $manifestFile), true)); } } } $this->objectManifest = $objectManifest; foreach ($this->objectManifest as $mKey => $mValue) { if (property_exists($this, $mKey)) { $this->{$mKey} = $mValue; } } }
private static function getFilesystemWidget(&$resultSet) { // Get current moduleName $widgetNameList = array(); foreach ($resultSet as $cWidget) { $widgetNameList[] = $cWidget['shortname']; } $path = rtrim(Di::getDefault()->get('config')->get('global', 'centreon_path'), '/'); $modules = Informations::getModuleList(true); // Add file system repo $possibleWidgetDir = array($path . "/widgets/*Widget/"); foreach ($modules as $module) { $directoryModule = str_replace(' ', '', ucwords(str_replace('-', ' ', $module))) . "Module"; $possibleWidgetDir[] = $path . "/modules/" . $directoryModule . "/widgets/*Widget/"; } foreach ($possibleWidgetDir as $d) { $rawWidgetList = glob($d); foreach ($rawWidgetList as $widget) { if ($widget == "." || $widget == "..") { continue; } if (file_exists(realpath($widget . '/install/config.json'))) { $info = json_decode(file_get_contents($widget . '/install/config.json'), true); if (!in_array($info['shortname'], $widgetNameList)) { $resultSet[] = array('widget_model_id' => 0, 'name' => $info['name'], 'shortname' => $info['shortname'], 'description' => $info['description'], 'version' => $info['version'], 'author' => $info['author'], 'isactivated' => 0, 'isinstalled' => 0); } } } } }
/** * * @param string $module * @return array */ private function getModulesTablesFiles($module = 'centreon') { // Get Mandatory tables files $fileList = File::getFiles($this->appPath . '/install/db/' . $this->dbName, 'xml'); // Get Modules tables files $moduleList = Informations::getModuleList(false); foreach ($moduleList as $module) { $expModuleName = array_map(function ($n) { return ucfirst($n); }, explode('-', $module)); $moduleFileSystemName = implode("", $expModuleName) . 'Module'; $fileList = array_merge($fileList, File::getFiles($this->appPath . '/modules/' . $moduleFileSystemName . '/install/db/' . $this->dbName, 'xml')); } return $fileList; }
/** * * @param type $targetDbName * @return type */ private static function buildTargetDbSchema($targetDbName = 'centreon') { // Initialize configuration $di = Di::getDefault(); $config = $di->get('config'); $centreonPath = $config->get('global', 'centreon_path'); $targetFolder = ''; $tmpFolder = ''; $tmpFolder .= trim($config->get('global', 'centreon_generate_tmp_dir')); if (!empty($tmpFolder)) { $targetFolder .= $tmpFolder . '/centreon/db/target/' . $targetDbName . '/'; } else { $targetFolder .= $centreonPath . '/tmp/db/target/' . $targetDbName . '/'; } $fileList = array(); // Mandatory tables $fileList = array_merge($fileList, File::getFiles($centreonPath . '/install/db/' . $targetDbName, 'xml')); $moduleList = Informations::getModuleList(false); foreach ($moduleList as $module) { $expModuleName = array_map(function ($n) { return ucfirst($n); }, explode('-', $module)); $moduleFileSystemName = implode("", $expModuleName) . 'Module'; $fileList = array_merge($fileList, File::getFiles($centreonPath . '/modules/' . $moduleFileSystemName . '/install/db/' . $targetDbName, 'xml')); } // Copy to destination if (!file_exists($targetFolder)) { mkdir($targetFolder, 0777, true); } $nbOfFiles = count($fileList); for ($i = 0; $i < $nbOfFiles; $i++) { $targetFile = $targetFolder . basename($fileList[$i]); copy($fileList[$i], $targetFile); } // send back the computed db return glob($targetFolder . '/*.xml'); }
/** * * @return array */ private function getRoutesList() { // getting controllers list using current activate module list $modulesList = Informations::getModuleList(true); $modules = array(); foreach ($modulesList as $currentModule) { $modules[$currentModule]['path'] = Informations::getModulePath($currentModule); $modules[$currentModule]['commonName'] = Informations::getModuleCommonName($currentModule); } $controllersFullList = $this->getControllersList($modules); // getting front route $routesFullList = array('front' => array(), 'api' => array()); foreach ($controllersFullList as $type => $controllersList) { foreach ($controllersList as $moduleName => $controllers) { $this->getRoutesFromController($moduleName, $controllers, $routesFullList[$type]); } } return $routesFullList; }
/** * * @param type $resultSet */ private static function getFilesystemModule(&$resultSet) { // Get current moduleName $moduleNameList = Informations::getModuleList(); $path = rtrim(Di::getDefault()->get('config')->get('global', 'centreon_path'), '/'); $rawModuleList = glob($path . "/modules/*Module/"); foreach ($rawModuleList as $module) { if (file_exists(realpath($module . 'install/config.json'))) { $b = json_decode(file_get_contents($module . 'install/config.json'), true); if (!in_array($b['shortname'], $moduleNameList)) { $resultSet[] = array('id' => 0, 'name' => $b['shortname'], 'description' => $b['name'], 'version' => $b['version'], 'author' => implode(", ", $b['author']), 'isactivated' => 0, 'isinstalled' => 0, 'action' => 0, 'alias' => $b['name']); } } } }
/** * Load application constant * * Load module constant if database is loaded */ private function initConstants() { require $this->di->get('config')->get('global', 'centreon_path') . '/core/internal/Constant.php'; try { $this->di->get('db_centreon'); foreach (Module::getModuleList() as $moduleName) { $modulePath = Module::getModulePath($moduleName); if (file_exists($modulePath . '/config/Constant.php')) { require $modulePath . '/config/Constant.php'; } } } catch (\Exception $e) { } }