/**
  * Supprime de façon logique tous les modules installés.
  */
 public static function reset()
 {
     $cacheFile = self::_getCompiledFileName();
     if (is_file($cacheFile)) {
         unlink($cacheFile);
     }
     if (self::_dbConfigured()) {
         _ioDAO('copix:CopixModule')->deleteBy(_daoSP());
     }
     CopixListenerFactory::clearCompiledFile();
 }
 /**
  * Retourne les logs sous forme d'idérateur
  *
  * @param 	string	$pProfil	Nom du profil dont on souhaite afficher le contenu
  * @param 	int 	$pNbItems	Nombres d'items à afficher
  * @return 	Iterator
  */
 public function getLog($pProfil, $pNbItems = 20)
 {
     // Mise en place des limites
     $page = CopixSession::get('log|numpage') - 1;
     $start = $page * $pNbItems;
     // Création du Search Params
     $sp = _daoSP()->addCondition('profile', '=', $pProfil)->orderBy(array('date', 'DESC'));
     $dbNbLines = _ioDAO('copixlog')->countBy($sp);
     CopixSession::set('log|nbpage', ceil($dbNbLines / $pNbItems));
     $sp = $sp->setLimit($start, $pNbItems);
     return _ioDAO('copixlog')->findBy($sp);
 }
 /**
  * Vérifie que l'on est bien authentifié (A voir).
  */
 public function beforeAction()
 {
     $pServiceName = CopixRequest::get('wsname');
     $this->_path = CopixModule::getPath('wsserver');
     if (isset($pServiceName)) {
         $this->_wsname = $pServiceName;
         $arRes = _ioDAO('wsservices')->findBy(_daoSP()->addCondition('name_wsservices', '=', $pServiceName));
         if (count($arRes) == 0) {
             throw new CopixException('Service introuvable ' . htmlentities($pServiceName));
         }
         $wsServiceInfo = $arRes[0];
         $this->_exportModule = $wsServiceInfo->module_wsservices;
         $this->_exportClass = $wsServiceInfo->class_wsservices;
         $this->_exportClassFilename = CopixModule::getPath($this->_exportModule) . COPIX_CLASSES_DIR . strtolower($wsServiceInfo->file_wsservices);
     } else {
         $this->_exportModule = CopixConfig::get('wsserver|exportedModule');
         $this->_exportClass = CopixConfig::get('wsserver|exportedClass');
         $this->_exportClassFilename = CopixModule::getPath($this->_exportModule) . COPIX_CLASSES_DIR . strtolower(CopixConfig::get('wsserver|exportedClassFile'));
     }
 }
 public function setUp()
 {
     $copixConfig = CopixConfig::instance();
     $this->_userHandlers = $copixConfig->copixauth_getRegisteredUserHandlers();
     $copixConfig->copixauth_clearUserHandlers();
     $copixConfig->copixauth_registerUserHandler(array('name' => 'auth|dbuserhandler', 'priority' => 10, 'required' => false));
     $this->_groupHandlers = $copixConfig->copixauth_getRegisteredGroupHandlers();
     $copixConfig->copixauth_clearGroupHandlers();
     $this->_credentialHandlers = $copixConfig->copixauth_getRegisteredCredentialHandlers();
     $copixConfig->copixauth_clearCredentialHandlers();
     $sp = _daoSP();
     $sp->addCondition('login_dbuser', '=', 'CopixTest');
     _dao('dbuser')->deleteBy($sp);
     $record = _record('dbuser');
     $record->login_dbuser = '******';
     $record->password_dbuser = md5('CopixTestPassword');
     $record->enabled_dbuser = 1;
     $record->email_dbuser = '******';
     _dao('dbuser')->insert($record);
     $this->_userId = $record->id_dbuser;
 }
 public function registerCredential($pName, $pValues = array())
 {
     $result = _dao('dynamiccredentials')->findBy(_daoSP()->addCondition('name_dc', '=', $pName));
     if (!isset($result[0])) {
         $record = _record('dynamiccredentials');
         $record->name_dc = $pName;
         _dao('dynamiccredentials')->insert($record);
     } else {
         $record = $result[0];
     }
     foreach ($pValues as $key => $value) {
         $resultValue = _dao('dynamiccredentialsvalues')->findBy(_daoSP()->addCondition('value_dcv', '=', $key)->addCondition('id_dc', '=', $record->id_dc));
         if (!isset($resultValue[0])) {
             $recordValue = _record('dynamiccredentialsvalues');
             $recordValue->id_dc = $record->id_dc;
             $recordValue->value_dcv = $key;
             $recordValue->level_dcv = $value;
             _dao('dynamiccredentialsvalues')->insert($recordValue);
         } else {
         }
     }
 }
 /**
  * Get the configVars from dao group array
  * We will not load values that do not exists in the XML file.
  * We will only load the values of the config variables, not their captions or so.
  * We remind that the database here is just a _Saving_ purpose in case the "temp" directory is deleted.
  * We will test the presence of the CopixDB plugin to store values in the database.
  */
 private function _loadFromDatabase()
 {
     if (!$this->_checkDBConnection()) {
         return;
     }
     $arVars = _ioDAO('copix:CopixConfig')->findBy(_daoSP()->addCondition('module_ccfg', '=', $this->module));
     foreach ($arVars as $vars) {
         $arExplode = explode('|', $vars->id_ccfg);
         $paramName = $arExplode[count($arExplode) - 1];
         $paramInfos = $this->_getParam($paramName);
         if (isset($this->_configVars[$vars->id_ccfg])) {
             $this->_configVars[$vars->id_ccfg]['Value'] = $vars->value_ccfg;
             $listValues = $this->_strToArray($paramInfos['ListValues']);
             switch ($paramInfos['Type']) {
                 case 'select':
                 case 'multiSelect':
                     $valueStr = isset($listValues[$vars->value_ccfg]) ? $listValues[$vars->value_ccfg] : $vars->value_ccfg;
                     break;
                 case 'bool':
                     $valueStr = $vars->value_ccfg == 0 ? _i18n('copix:copix.no') : _i18n('copix:copix.yes');
                     break;
                 default:
                     $valueStr = $vars->value_ccfg;
                     break;
             }
             $this->_configVars[$vars->id_ccfg]['ValueStr'] = $valueStr;
         }
         if (isset($this->_values[$vars->id_ccfg])) {
             $this->_values[$vars->id_ccfg] = $vars->value_ccfg;
         }
     }
 }
 /**
  * Effectue une recherche
  *
  * @param int $pPage Numéro de la page à retourner
  * @param string $pOrder Order de tri
  * @param string $pSens Type de tri : ASC ou DESC
  * @return array
  */
 public function find($pPage = 0, $pOrder = null, $pSens = 'ASC')
 {
     if ($pOrder != null) {
         $this->_sp->orderBy(array($pOrder, $pSens));
     }
     if ($this->_max !== null) {
         if ($this->_max != 0) {
             $this->_nbrecord = $this->_dao->countBy($this->_sp);
             $this->_nbpages = ceil($this->_nbrecord / $this->_max);
         }
         $this->_sp->setLimit($this->_max * $pPage, $this->_max);
     }
     $results = $this->_dao->findBy($this->_sp);
     $this->_sp = _daoSP();
     return $results->fetchAll();
 }
 public function testDateTimeOverloaded()
 {
     _dao('copixtest|datetimetests_overloaded')->deleteBy(_daoSp());
     $record = _record('copixtest|datetimetests_overloaded');
     $record->date_dtt = '20071121';
     $record->datetime_dtt = '20071129101222';
     $record->time_dtt = '101222';
     _dao('copixtest|datetimetests_overloaded')->insert($record);
     $record = _record('copixtest|datetimetests_overloaded');
     $record->date_dtt = '20071120';
     $record->datetime_dtt = '20071120101242';
     $record->time_dtt = '101242';
     _dao('copixtest|datetimetests_overloaded')->insert($record);
     $recordGot = _dao('copixtest|datetimetests_overloaded')->get($record->id_dtt);
     $this->assertEquals($recordGot->date_dtt, '20071120');
     $results = _dao('copixtest|datetimetests_overloaded')->findAll();
     //premier enregistrement
     $this->assertEquals($results[0]->date_dtt, '20071121');
     $this->assertEquals($results[0]->datetime_dtt, '20071129101222');
     $this->assertEquals($results[0]->time_dtt, '101222');
     //second enregistrement
     $this->assertEquals($results[1]->date_dtt, '20071120');
     $this->assertEquals($results[1]->datetime_dtt, '20071120101242');
     $this->assertEquals($results[1]->time_dtt, '101242');
     //vérification des findBy
     //doit récupérer le premier enregistrement
     $sp = _daoSP()->addCondition('date_dtt', '=', '20071121');
     $results = _dao('copixtest|datetimetests_overloaded')->findBy($sp);
     $this->assertEquals(count($results), 1);
     $this->assertEquals($results[0]->date_dtt, '20071121');
     $this->assertEquals($results[0]->datetime_dtt, '20071129101222');
     $this->assertEquals($results[0]->time_dtt, '101222');
     $sp = _daoSP()->addCondition('datetime_dtt', '=', '20071129101222');
     $results = _dao('copixtest|datetimetests_overloaded')->findBy($sp);
     $this->assertEquals(count($results), 1);
     $this->assertEquals($results[0]->date_dtt, '20071121');
     $this->assertEquals($results[0]->datetime_dtt, '20071129101222');
     $this->assertEquals($results[0]->time_dtt, '101222');
     $sp = _daoSP()->addCondition('time_dtt', '=', '101222');
     $results = _dao('copixtest|datetimetests_overloaded')->findBy($sp);
     $this->assertEquals(count($results), 1);
     $this->assertEquals($results[0]->date_dtt, '20071121');
     $this->assertEquals($results[0]->datetime_dtt, '20071129101222');
     $this->assertEquals($results[0]->time_dtt, '101222');
     //doit récupérer le second enregistrement
     $sp = _daoSP()->addCondition('date_dtt', '=', '20071120');
     $results = _dao('copixtest|datetimetests_overloaded')->findBy($sp);
     $this->assertEquals(count($results), 1);
     $this->assertEquals($results[0]->date_dtt, '20071120');
     $this->assertEquals($results[0]->datetime_dtt, '20071120101242');
     $this->assertEquals($results[0]->time_dtt, '101242');
     $sp = _daoSP()->addCondition('datetime_dtt', '=', '20071120101242');
     $results = _dao('copixtest|datetimetests_overloaded')->findBy($sp);
     $this->assertEquals(count($results), 1);
     $this->assertEquals($results[0]->date_dtt, '20071120');
     $this->assertEquals($results[0]->datetime_dtt, '20071120101242');
     $this->assertEquals($results[0]->time_dtt, '101242');
     $sp = _daoSP()->addCondition('time_dtt', '=', '101242');
     $results = _dao('copixtest|datetimetests_overloaded')->findBy($sp);
     $this->assertEquals(count($results), 1);
     $this->assertEquals($results[0]->date_dtt, '20071120');
     $this->assertEquals($results[0]->datetime_dtt, '20071120101242');
     $this->assertEquals($results[0]->time_dtt, '101242');
 }
 /**
  * Permet d'exporter les classes des modukes
  *
  * @return CopixActionReturn
  */
 public function processExportClass()
 {
     $pModuleName = CopixRequest::get('moduleName');
     $pClassFileName = CopixRequest::get('classFileName');
     // si on a confirmé l'ajout
     if (CopixRequest::get('confirm')) {
         $pServiceName = trim(CopixRequest::get('serviceName'));
         $pClassName = CopixRequest::get('className');
         $pClassFileName = _request('classFileName');
         $pModuleName = _request('moduleName');
         // nom de service vide
         if ($pServiceName == '') {
             return _arRedirect(_url('admin|ExportClass', array('error' => 'serviceEmpty', 'moduleName' => $pModuleName, 'classFileName' => $pClassFileName)));
         }
         // verification si on n'a pas déja un service de ce nom
         $wsservices = _ioDao('wsservices')->findBy(_daoSP()->addCondition('name_wsservices', '=', $pServiceName));
         if (count($wsservices) > 0) {
             return _arRedirect(_url('admin|ExportClass', array('error' => 'serviceExists', 'moduleName' => $pModuleName, 'classFileName' => $pClassFileName)));
         }
         CopixDB::getConnection()->doQuery("insert into wsservices (name_wsservices, module_wsservices, file_wsservices, class_wsservices) values ('" . $pServiceName . "','" . $pModuleName . "','" . $pClassFileName . "', '" . $pClassName . "')");
         $res = 'Url du Webservice  : <a href="' . _url('wsserver||', array('wsname' => $pServiceName)) . '">' . _url('wsserver||', array('wsname' => $pServiceName)) . '</a><br/>' . "\n";
         $res .= 'Url du fichier wsdl : <a href="' . _url('wsserver|default|wsdl', array('wsname' => $pServiceName)) . '">' . _url('wsserver|default|wsdl', array('wsname' => $pServiceName)) . '</a><br/>' . "\n";
         $res .= '<br />';
         $res .= '<input type="button" value="' . _i18n('wsserver.back') . '" onclick="javascript: document.location=\'' . _url('admin|manageWebServices') . '\';" />';
         $tpl = new CopixTpl();
         $tpl->assign('MAIN', $res);
         return new CopixActionReturn(CopixActionReturn::DISPLAY, $tpl);
         // si on doit afficher le formulaire d'ajout
     } else {
         $ppo = new CopixPPO();
         $ppo->TITLE_PAGE = _i18n('wsserver.title.manageWebServices');
         $ppo->classFileName = $pClassFileName;
         $ppo->arErrors = array();
         // erreur "service existant" passée en paramètre
         if (_request('error') !== null) {
             $ppo->arErrors[] = _i18n('wsserver.error.' . _request('error'));
         }
         $ppo->ModuleName = $pModuleName;
         $arBefore = get_declared_classes();
         include CopixModule::getPath($pModuleName) . COPIX_CLASSES_DIR . $pClassFileName;
         $arAfter = get_declared_classes();
         $arClass = array_diff($arAfter, $arBefore);
         sort($arClass);
         if (count($arClass) == 0) {
             throw new Exception('Pas de classe à exporter');
         }
         $ppo->arClass = $arClass;
         return _arPPO($ppo, 'wsservices.add.php');
     }
 }
 /**
  * Efface tous les droits associés a un id_dc ou un id_dcv
  */
 public function processDelete()
 {
     $id_dc = _request('id_dc');
     if ($id_dc !== null) {
         _dao('dynamiccredentials')->delete($id_dc);
         _dao('dynamiccredentialsvalues')->deleteBy(_daoSP()->addCondition('id_dc', '=', $id_dc));
         _dao('dynamiccredentialsgroups')->deleteBy(_daoSP()->addCondition('id_dc', '=', $id_dc));
     }
     $id_dcv = _request('id_dcv');
     if ($id_dcv !== null) {
         _dao('dynamiccredentialsvalues')->delete($id_dcv);
         _dao('dynamiccredentialsgroups')->deleteBy(_daoSP()->addCondition('id_dcv', '=', $id_dcv));
     }
     return _arRedirect(_url('auth|dynamic|list', array('id_group' => _request('id_group'), 'handler_group' => _request('handler_group'), 'url_return' => _request('url_return'))));
 }
 /**
  * Editer un captcha
  */
 public function processEditCaptcha()
 {
     CopixRequest::assert('captchaid');
     if (CopixRequest::getInt('confirm') == 1) {
         $arrCaptcha = _ioDAO('commentscaptcha')->findBy(_daoSP()->addCondition("captcha_id", "=", _request('captchaid')));
         $objCaptcha = $arrCaptcha[0];
         $objCaptcha->captcha_question = _request('captcha_question');
         $objCaptcha->captcha_answer = _request('captcha_answer');
         _ioDAO('commentscaptcha')->update($objCaptcha);
         return _arRedirect(_url('comments|admin|listcaptcha'));
     } else {
         $ppo = new CopixPPO();
         $ppo->TITLE_PAGE = _i18n('comments.admin.captchalist');
         $ppo->arrCaptcha = _ioDAO('commentscaptcha')->findall();
         $ppo->editedCaptcha = _request('captchaid');
         return _arPPO($ppo, 'captcha.list.tpl');
     }
 }