/** * * @param type $moduleName * @param type $moduleListenersPath */ private static function attachModuleEventListeners($moduleSource, $moduleTarget, $moduleListenersPath) { $emitter = Di::getDefault()->get('events'); $myListeners = File::getFiles($moduleListenersPath, 'php'); foreach ($myListeners as $myListener) { $listener = basename($myListener, '.php'); $eventName = CamelCaseTransformation::camelCaseToCustom($moduleTarget, '-') . '.' . CamelCaseTransformation::camelCaseToCustom($listener, '.'); $emitter->on(strtolower($eventName), function ($params) use($listener, $moduleSource, $moduleTarget) { call_user_func(array($moduleSource . "\\Listeners\\" . $moduleTarget . "\\" . $listener, "execute"), $params); }); } }
/** * * @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 string $dirname * @param string $targetDbName */ public static function loadDefaultDatas($dirname, $targetDbName = 'centreon') { $dirname = rtrim($dirname, '/'); $orderFile = $dirname . '/' . $targetDbName . '.json'; $db = self::getDbConnector($targetDbName); $db->beginTransaction(); if (file_exists($orderFile)) { $insertionOrder = json_decode(file_get_contents($orderFile), true); foreach ($insertionOrder as $fileBaseName) { $datasFile = $dirname . '/' . $targetDbName . '/' . $fileBaseName . '.json'; self::insertDatas($datasFile, $targetDbName); } } else { $datasFiles = File::getFiles($dirname, 'json'); foreach ($datasFiles as $datasFile) { self::insertDatas($datasFile, $targetDbName); } } $db->commit(); }