/**
  * 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');
 }