/** * gets module list, we only get modules with parameters */ function _getModuleWithParams() { $toReturn = array(); foreach (CopixModule::getList() as $moduleName) { if (count(CopixConfig::getParams($moduleName)) > 0) { $informations = CopixModule::getInformations($moduleName); $toReturn[$moduleName] = $informations->description; } } return $toReturn; }
public function _createContent(&$toReturn) { $moduleName = CopixZone::getParam('moduleName'); $infos = CopixModule::getInformations($moduleName); $tpl = new CopixTpl(); if (in_array($moduleName, CopixModule::getList())) { $arModule = CopixModule::getDependenciesForDelete($moduleName); $template = 'detailmoduledelete.tpl'; $record = _dao('Copix:copixmodule')->get($moduleName); $tpl->assign('version', $record->version_cpm); } else { $arDependencies = CopixModule::getDependenciesForInstall($moduleName); $arModule = array(); $arExtension = array(); $install = true; foreach ($arDependencies as $key => $dependency) { if ($dependency->kind === 'module') { if (CopixModule::testDependency($dependency)) { $dependency->exists = true; $dependency->isInabled = CopixModule::isEnabled($dependency->name); $arModule[] = $dependency; } else { $dependency->exists = false; $install = false; $arModule[] = $dependency; } } else { if (CopixModule::testDependency($dependency)) { $dependency->exists = true; $arExtension[] = $dependency; } else { $dependency->exists = false; $install = false; $arExtension[] = $dependency; } } } $tpl->assign('arExtension', $arExtension); $tpl->assign('install', $install); $template = 'detailmoduleinstall.tpl'; } $tpl->assign('path', CopixModule::getPath($moduleName)); $tpl->assign('arModule', $arModule); $tpl->assign('info', $infos); $tpl->assign('moduleName', $moduleName); $toReturn = $tpl->fetch($template); return true; }
function _createContent(&$toReturn) { $tpl =& new CopixTpl(); $toAdd = $this->params['toAdd']; $toDelete = $this->params['toDelete']; foreach ($toAdd as $key => $elem) { $toAdd[$key] = CopixModule::getInformations($elem); } foreach ($toDelete as $key => $elem) { $toDelete[$key] = CopixModule::getInformations($elem); } $tpl->assign('toAdd', $toAdd); $tpl->assign('toDelete', $toDelete); $toReturn = $tpl->fetch('install.confirm.tpl'); return true; }
/** * Ecran d'accueil des opérations d'administration * */ public function processDefault() { //Inclusion de la classe checker pour tester les pré-requis _classInclude('InstallChecker'); $checker = new InstallChecker(); $ppo = new CopixPPO(); $ppo->TITLE_PAGE = _i18n('install.title.admin'); $tips = $this->_getTips(); $ppo->tips = $tips->tips; $ppo->warning = $tips->warning; $ppo->homePageUrl = CopixConfig::get('|homePage'); $ppo->pdomysqlEnabled = $checker->typeDbInstalled('pdo_mysql'); if (!$ppo->pdomysqlEnabled) { $ppo->tips[] = _i18n('install.tips.pdomysql'); } $ppo->phpunitEnabled = @(include_once 'PHPUnit/Framework.php'); if (!$ppo->phpunitEnabled) { $ppo->tips[] = _i18n('install.tips.unittest'); } $ppo->databaseEnabled = $checker->isValidDefaultDatabase(); if (!$ppo->databaseEnabled) { $ppo->tips[] = _i18n('install.tips.database'); } if (!_currentUser()->testCredential('basic:admin')) { $ppo->tips = array(); } // recherche des liens $ppo->links = array(); foreach (CopixModule::getList() as $moduleName) { $moduleInformations = CopixModule::getInformations($moduleName); // si on a au moins un lien if (count($moduleInformations->admin_links) > 0) { $groupid = !is_null($moduleInformations->admin_links_group->id) ? $moduleInformations->admin_links_group->id : uniqid(); foreach ($moduleInformations->admin_links as $linkInformations) { if ($linkInformations['credentials'] == null || CopixAuth::getCurrentUser()->testCredential($linkInformations['credentials'])) { $ppo->links[$groupid]['modules'][][$linkInformations['url']] = $linkInformations['caption']; $ppo->links[$groupid]['caption'] = $moduleInformations->description; $ppo->links[$groupid]['groupcaption'] = $moduleInformations->admin_links_group->caption; $ppo->links[$groupid]['icon'] = !is_null($moduleInformations->admin_links_group->icon) ? $moduleInformations->admin_links_group->icon : $moduleInformations->icon; } } } } return _arPPO($ppo, 'admin.tpl'); }
/** * Récupération des modules dans l'ordre de leur description * */ public function _getModuleOrderByDescription() { $arReturn = array(); foreach (CopixModule::getList(true) as $module) { $temp = CopixModule::getInformations($module); $modulePath = CopixModule::getPath($module); if (is_dir($modulePath . COPIX_CLASSES_DIR)) { $servicesDir = opendir($modulePath . COPIX_CLASSES_DIR); while ($file = readdir($servicesDir)) { if (preg_match("/class.php\$/", $file)) { $temp->services[] = $file; } } } if (isset($temp->services)) { $arReturn[] = $temp; } } return $arReturn; }
/** * get all installable modules and their status (install or not), and depedency * @return array of object * @access private */ public function getModules($pGroupId = null) { $toReturn = array(); $arInstalledModule = CopixModule::getList(true); //Liste des modules installables foreach (CopixModule::getList(false, $pGroupId) as $name) { if (($temp = CopixModule::getInformations($name)) !== null) { //check if they are installed or not if (in_array($temp->name, $arInstalledModule)) { $temp->isInstalled = true; } else { $temp->isInstalled = false; } $toReturn[] = $temp; } } // tri des modules par ordre alphabétique sur la description $tri = true; $nbrModule = count($toReturn); while ($tri) { $tri = false; for ($boucle = 1; $boucle < $nbrModule; $boucle++) { $moduleDesc1 = $toReturn[$boucle - 1]->description != '' ? $toReturn[$boucle - 1]->description : $toReturn[$boucle - 1]->name; $moduleDesc2 = $toReturn[$boucle]->description != '' ? $toReturn[$boucle]->description : $toReturn[$boucle]->name; //echo '[<b>' . $moduleDesc1 . '</b>] [<font color="red">' . $moduleDesc2 . '</font>]<br />'; $comp = strcasecmp($moduleDesc1, $moduleDesc2); if ($comp > 0) { $temp = $toReturn[$boucle - 1]; $toReturn[$boucle - 1] = $toReturn[$boucle]; $toReturn[$boucle] = $temp; $tri = true; } } } return $toReturn; }
/** * Return the dependance Tree * @param : string $moduleName : moduleName to use * @param : string $todo : action (add // remove) * @param : array $arModules : modules to remove/add */ function _getDependenciesArray($moduleName, $toDo, $arModules) { if ($toDo == "add") { $toCheck = CopixModule::getInformations($moduleName); foreach ($toCheck->dependencies as $dependency) { if (!in_array($dependency, CopixModule::getList(true)) && !in_array($dependency, $arModules)) { $arModules[] = $dependency; $arModules = CopixModule::_getDependenciesArray($dependency, $toDo, $arModules); } } } elseif ($toDo == "remove") { $strResult = ''; foreach (CopixModule::getList(true) as $installedModule) { $toCheck = CopixModule::getInformations($installedModule); foreach ((array) $toCheck->dependencies as $dependency) { if ($dependency == $moduleName && !in_array($toCheck->name, $arModules)) { $arModules[] = $toCheck->name; $arModules = CopixModule::_getDependenciesArray($toCheck->name, $toDo, $arModules); } } } } return $arModules; }
/** * Ajoute un module comme install dans la base de donnes * @param string $moduleName le nom du module ajouter * @return void */ private static function _addModuleInDatabase($moduleName) { //insert in database if we can $dao = _ioDAO('copix:CopixModule'); if (!$dao->get($moduleName)) { $record = _record('copix:CopixModule'); $record->name_cpm = $moduleName; $record->path_cpm = CopixModule::getBasePath($moduleName); $record->version_cpm = CopixModule::getInformations($moduleName)->version; $dao->insert($record); } }
/** * get all installable modules and their status (install or not), and depedency * @return array of object * @access private */ function getModules() { $toReturn = array(); $arInstalledModule = CopixModule::getList(true); //lsit all available modules foreach (CopixModule::getList(false) as $name) { //check they have an xml description file if (($temp = CopixModule::getInformations($name)) !== null) { //check if they are installed or not if (in_array($temp->name, $arInstalledModule)) { $temp->isInstalled = true; } else { $temp->isInstalled = false; } $toReturn[] = $temp; } } return $toReturn; }
public function processList() { CopixRequest::assert('id_group', 'handler_group'); $id_group = _request('id_group'); $handler_group = _request('handler_group'); $arDroit = array(); $arDroitSansModule = array(); foreach (CopixModule::getList() as $module) { $arDroitSansModule = array_merge($arDroitSansModule, CopixModule::getInformations($module)->credential_notspecific); $arDroit[$module] = CopixModule::getInformations($module)->credential; //Creation des droits si ils n'existent pas foreach ($arDroit[$module] as $name => $values) { $results = _dao('modulecredentials')->findBy(_daoSP()->addCondition('name_mc', '=', $name)->addCondition('module_mc', '=', $module)); $id_mc = null; if (count($results) == 0) { $record = _record('modulecredentials'); $record->name_mc = $name; $record->module_mc = $module; _dao('modulecredentials')->insert($record); $id_mc = $record->id_mc; } else { $id_mc = $results[0]->id_mc; } foreach ($values as $value) { $results = _dao('modulecredentialsvalues')->findBy(_daoSP()->addCondition('id_mc', '=', $id_mc)->addCondition('value_mcv', '=', $value->name)->addCondition('level_mcv', '=', $value->level)); if (count($results) == 0) { $record = _record('modulecredentialsvalues'); $record->id_mc = $id_mc; $record->value_mcv = $value->name; $record->level_mcv = $value->level; _dao('modulecredentialsvalues')->insert($record); } } } //Fin de création des droits } $arData = array(); $arModuleCredential = _dao('modulecredentials')->findBy(_daoSP()->groupBy('module_mc')); foreach ($arModuleCredential as $module) { $module = $module->module_mc; $droits = new StdClass(); $droits->name = $module; $droits->delete = false; if ($module != null) { if (!isset($arDroit[$module]) || count($arDroit[$module]) == 0) { $droits->delete = true; } } $arMc = _dao('modulecredentials')->findBy(_daoSP()->addCondition('module_mc', '=', $module)); $arDroitMc = array(); foreach ($arMc as $mc) { $arDroitMCTemp = new stdClass(); $arDroitMCTemp->record = $mc; $arDroitMCTemp->checked = count(_dao('modulecredentialsgroups')->findBy(_daoSP()->addCondition('id_mc', '=', $mc->id_mc)->addCondition('id_mcv', '=', null)->addCondition('id_group', '=', $id_group)->addCondition('handler_group', '=', $handler_group))) > 0 ? 'checked' : ''; $arDroitMCTemp->delete = true; if ($module != null) { if (isset($arDroit[$module]) && isset($arDroit[$module][$mc->name_mc])) { $arDroitMCTemp->delete = false; } } else { if (isset($arDroitSansModule[$mc->name_mc])) { $arDroitMCTemp->delete = false; } } $arValues = array(); foreach (_dao('modulecredentialsvalues')->findBy(_daoSP()->addCondition('id_mc', '=', $mc->id_mc)->orderBy('level_mcv')) as $value) { $value->checked = count(_dao('modulecredentialsgroups')->findBy(_daoSP()->addCondition('id_mc', '=', $mc->id_mc)->addCondition('id_mcv', '=', $value->id_mcv)->addCondition('id_group', '=', $id_group)->addCondition('handler_group', '=', $handler_group))) > 0 ? 'checked' : ''; $value->delete = true; if ($module != null) { if (isset($arDroit[$module]) && isset($arDroit[$module][$mc->name_mc])) { $valueName = $value->value_mcv; foreach ($arDroit[$mc->module_mc][$mc->name_mc] as $ssDroit) { if ($ssDroit->name == $valueName) { $value->delete = false; } } } } else { if (isset($arDroitSansModule[$mc->name_mc])) { $valueName = $value->value_mcv; foreach ($arDroitSansModule[$mc->name_mc] as $ssDroit) { if ($ssDroit->name == $valueName) { $value->delete = false; } } } } $arValues[] = $value; } $arDroitMCTemp->data = $arValues; $arDroitMc[] = $arDroitMCTemp; } $droits->data = $arDroitMc; $arData[] = $droits; } //Le groupe en cours de modification est en session, on peut le récupérer. if ($group = CopixSession::get('auth|group')) { $groupName = $group->id_dbgroup === null ? _i18n('auth.newGroup') : $group->caption_dbgroup; } else { $groupName = _i18n('auth.newGroup'); } return _arPpo(new CopixPpo(array('TITLE_PAGE' => _i18n('auth.editModuleCredentials', $groupName), 'id_group' => $id_group, 'handler_group' => $handler_group, 'list' => $arData, 'url_return' => _request('url_return', _url('#')))), 'modules.list.php'); }