Ejemplo n.º 1
0
 /**
  * 
  * @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;
 }
Ejemplo n.º 2
0
 /**
  * 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";
     }
 }
Ejemplo n.º 3
0
 /**
  * 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);
             }
         }
     }
 }
Ejemplo n.º 4
0
 /**
  * 
  */
 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;
         }
     }
 }
Ejemplo n.º 5
0
 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);
                 }
             }
         }
     }
 }
Ejemplo n.º 6
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;
 }
Ejemplo n.º 7
0
 /**
  * 
  * @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');
 }
Ejemplo n.º 8
0
 /**
  * 
  * @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;
 }
Ejemplo n.º 9
0
 /**
  * 
  * @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']);
             }
         }
     }
 }
Ejemplo n.º 10
0
 /**
  * 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) {
     }
 }