public function __construct()
 {
     $this->connection_old = CopixDB::getConnection($this->connection_name_old)->getProfile()->getConnectionStringParts();
     $this->connection_new = CopixDB::getConnection($this->connection_name_new)->getProfile()->getConnectionStringParts();
     $this->bdname_old = $connection_old['dbname'];
     $this->bdname_new = $connection_new['dbname'];
 }
Ejemplo n.º 2
0
 /**
  * Set the data mode
  * @param string $dataset_name
  * @param strong $mode "static" or "db"
  */
 public function setDataMode($mode = "static", $dataset = null, $connectionName = null)
 {
     if (empty($dataset) && $mode == "db") {
         throw new Exception("No dataset given for CopixBayesian datas used with database");
     }
     $this->dataset = "bayesiantable_" . $dataset;
     $this->mode = $mode == "db" ? "db" : "static";
     //get tables
     if ($this->mode == "db") {
         $this->connectionName = $connectionName;
         $ct = CopixDB::getConnection($connectionName);
         if (!in_array($this->dataset, $ct->getTableList())) {
             if ($ct instanceof CopixDBConnectionMySQL || $ct instanceof CopixDBConnectionPDO_MySQL) {
                 $sql = CopixFile::read(dirname(__FILE__) . "/../install/template_scripts/install.pdo_mysql.sql");
             } elseif ($ct instanceof CopixDBConnectionPDO_SQLite) {
                 $sql = CopixFile::read(dirname(__FILE__) . "/../install/template_scripts/install.pdo_sqlite.sql");
             } elseif ($ct instanceof CopixDBConnectionPDO_PgSQL) {
                 $sql = CopixFile::read(dirname(__FILE__) . "/../install/template_scripts/install.pdo_pgsql.sql");
             } else {
                 //throw new CopixException("Data type: ".get_class($ct)." not currently supported");
             }
             $sql = str_replace('%TABLENAME%', $this->dataset, $sql);
             _doQuery($sql, array(), $connectionName);
         }
     }
 }
 /**
  * Récupère les informations sur un groupe donné
  */
 public function getInformations($pGroupId)
 {
     $result = CopixDB::getConnection()->doQuery('select superadmin_dbgroup, public_dbgroup, registered_dbgroup, description_dbgroup from dbgroup where id_dbgroup=:id_dbgroup', array('id_dbgroup' => $pGroupId));
     if (count($result)) {
         return $result[0];
     }
     throw new CopixException('No informations on Group ' . $pGroupId);
 }
Ejemplo n.º 4
0
 public function nbComments()
 {
     // Requêtes permettant de compter les commentaires
     $query = 'select count(*) as count_comments from comments ';
     // On récupère la connection à la base
     $arResults = CopixDB::getConnection()->doQuery($query);
     // On fait la requête
     $toReturn = $arResults[0]->count_comments;
     return $toReturn;
 }
 /**
  * Page d'accueil du framework
  */
 public function processWelcome()
 {
     $ppo = new CopixPPO();
     $ppo->TITLE_PAGE = _i18n('default.welcome2Copix3');
     try {
         CopixDB::getConnection();
         $ppo->dbOK = true;
     } catch (Exception $e) {
         $ppo->dbOK = false;
     }
     return _arPPO($ppo, 'welcome.php');
 }
 /**
  * Test de connexion à toutes les connexions définies
  * On dois faire ce test avant les autres car les autres tests peuvent créer des profils incorrects
  */
 public function testAllDefinedProfiles()
 {
     foreach (CopixConfig::instance()->copixdb_getProfiles() as $name) {
         try {
             CopixDB::getConnection($name);
             $this->assertTrue(true);
             //ok
         } catch (Exception $exception) {
             $this->assertTrue($exception->getMessage());
             //n'a pas fonctionné
         }
     }
 }
 /**
  * Préparation de l'installation
  */
 public function processInstallFramework()
 {
     // find the current connection type (defined in /plugins/copixDB/profils.definition.xml)
     $config = CopixConfig::instance();
     $driver = $config->copixdb_getProfile();
     $typeDB = $driver->getDriverName();
     // Search each module install file
     $scriptName = 'prepareinstall.' . $typeDB . '.sql';
     $file = CopixModule::getPath('admin') . COPIX_INSTALL_DIR . 'scripts/' . $scriptName;
     CopixDB::getConnection()->doSQLScript($file);
     //make sure that copixmodule is reset
     CopixModule::reset();
     $tpl = new CopixTpl();
     $tpl->assignZone('MAIN', 'admin|installmodulewithdep', array('arModule' => array('generictools', 'auth', 'default', 'admin'), 'url_return' => _url('admin|database|done'), 'messageConfirm' => false));
     return _arDisplay($tpl);
 }
 /**
  * Remplit le tableau $pArSections avec les informations sur le serveur MySql
  *
  * @param array	$pArSections	tableau dans lequel on va remplir les informations disponibles sur le serveur
  */
 public function fillInformations(&$pArSections)
 {
     $section = _i18n('copix.section.globalInfos');
     $result = CopixDB::getConnection()->doQuery('SELECT VERSION() mysql_version');
     $pArSections[$section][_i18n('copix.dbserver.version')] = $result[0]->mysql_version;
     $result = CopixDB::getConnection()->doQuery('SELECT NOW() time');
     $pArSections[$section][_i18n('copix.dbserver.date')] = $result[0]->time;
     $status = CopixDB::getConnection()->doQuery('SHOW STATUS');
     $uptime = $this->_getMySQLStatusVariable($status, 'Uptime');
     $days = floor($uptime / (3600 * 24));
     $uptime -= $days * 3600 * 24;
     $hours = floor($uptime / 3600);
     $uptime -= $hours * 3600;
     $minutes = floor($uptime / 60);
     $uptime -= $minutes * 60;
     $seconds = $uptime;
     $uptimeStr = '';
     if ($days > 0) {
         $uptimeStr .= $days . ' ' . _i18n('copix.days') . ' ';
     }
     if ($hours > 0) {
         $uptimeStr .= $hours . ' ' . _i18n('copix.hours') . ' ';
     }
     if ($minutes > 0) {
         $uptimeStr .= $minutes . ' ' . _i18n('copix.minutes') . ' ';
     }
     if ($seconds > 0) {
         $uptimeStr .= $seconds . ' ' . _i18n('copix.seconds') . ' ';
     }
     $pArSections[$section][_i18n('copix.dbserver.uptime')] = $uptimeStr;
     $pArSections[$section][_i18n('copix.dbserver.questions')] = $this->_getMySQLStatusVariable($status, 'Questions');
     $pArSections[$section][_i18n('copix.dbserver.lastquerycost')] = $this->_getMySQLStatusVariable($status, 'Last_query_cost') . ' ' . _i18n('copix.seconds');
     $section = _i18n('copix.section.config');
     $result = CopixDB::getConnection()->doQuery('SHOW VARIABLES');
     foreach ($result as $variable) {
         $pArSections[$section][$variable->Variable_name] = $variable->Value;
     }
 }
 /**
  * Lance un script SQL
  * @param	string	$pFilePath	le chemin du fichier SQL à exécuter
  * @param	boolean	$pRollbackOnFailure	indique si l'on doit réaliser un rollback en cas d'échec d'une requête
  * @return 	integer le nombre de requêtes exécutées avec succès
  */
 public function doSQLScript($pFilePath, $pRollbackOnFailure = true)
 {
     $lines = file($pFilePath);
     $cmdSQL = '';
     $nbCmd = 0;
     if ($pRollbackOnFailure) {
         CopixDB::begin();
     }
     foreach ((array) $lines as $key => $line) {
         if (!preg_match($this->_scriptComment, $line) && strlen(trim($line)) > 0) {
             // la ligne n'est ni vide ni commentaire
             if (strlen(trim($line)) > 0) {
                 $cmdSQL .= $line;
                 if (preg_match($this->_scriptEndOfQuery, $line)) {
                     //Si on est à la ligne de fin de la commande on l'execute
                     // On nettoie la commande du ";" de fin et on l'execute
                     $cmdSQL = preg_replace($this->_scriptEndOfQuery, '', $cmdSQL);
                     try {
                         $this->doQuery($cmdSQL);
                     } catch (Exception $e) {
                         if ($pRollbackOnFailure) {
                             CopixDB::rollback();
                         }
                         throw $e;
                     }
                     $nbCmd++;
                     $cmdSQL = '';
                 }
             }
         }
     }
     if ($pRollbackOnFailure) {
         CopixDB::commit();
     }
     return $nbCmd;
 }
 public function afterInstall()
 {
     // find the current connection type (defined in /plugins/copixDB/profils.definition.xml)
     $config = CopixConfig::instance();
     $driver = $config->copixdb_getProfile();
     $typeDB = $driver->getDriverName();
     // Search each module install file
     $scriptName = 'afterinstall.' . $typeDB . '.sql';
     $file = CopixModule::getPath('admin') . COPIX_INSTALL_DIR . 'scripts/' . $scriptName;
     CopixDB::getConnection()->doSQLScript($file);
 }
 /**
  * Test de groupe OR sur un array
  */
 public function testDAOConditionGroupArray()
 {
     $ct = CopixDB::getConnection();
     $ct->doQuery('delete from copixtestautodao');
     $dao = _dao('copixtestautodao');
     $sp = _daoSearchParams();
     $record = _daoRecord('copixtestautodao');
     $record->type_test = '1';
     $record->titre_test = 'Titre 3';
     $record->description_test = 'Description du troisième élément';
     $record->date_test = '20060203';
     $dao->insert($record);
     $record->type_test = '3';
     $record->titre_test = 'Titre 4';
     $record->description_test = 'Description du quatrième élément';
     $record->date_test = '20060204';
     $dao->insert($record);
     $tab = array();
     $tab[] = 'Titre 3';
     $tab[] = 'Titre 4';
     $sp->addCondition('titre_test', '=', $tab);
     $this->assertTrue(count($dao->findBy($sp)) > 1);
 }
 /**
  * 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');
     }
 }
 /**
  * Est ce que le type de la base est disponible?
  *
  * @param string $pTypeDb
  * @return boolean
  */
 public function typeDbInstalled($pTypeDb)
 {
     $availableDriver = CopixDB::getAvailableDrivers();
     return in_array($pTypeDb, $availableDriver);
 }
 /**
  * Connexion
  *
  * @param array $pParams	paramètres de connexion
  * @return CopixUserLogResponse
  */
 public function login($pParams)
 {
     if (!isset($pParams['login'])) {
         return new CopixUserLogResponse(false, null, null, null);
     }
     if (count($results = CopixDB::getConnection()->doQuery('select id_dbuser, login_dbuser, password_dbuser, enabled_dbuser from dbuser where login_dbuser=:login', array('login' => $pParams['login'])))) {
         if ($results[0]->enabled_dbuser == 0) {
             return new CopixUserLogResponse(false, null, null, null);
         }
         // Si en SSO, mot de passe deja crypte
         $password_test = isset($pParams['ssoIn']) && $pParams['ssoIn'] ? $pParams['password'] : $this->_cryptPassword(isset($pParams['password']) ? $pParams['password'] : '');
         if (!(isset($pParams['assistance']) && $pParams['assistance'] || $results[0]->password_dbuser == $password_test)) {
             // Si le mot de passe crypt� commence par "$1$"
             if (0 == strncmp($results[0]->password_dbuser, '$1$', 3)) {
                 // Si la fonction "crypt" supporte le MD5 (hachage MD5 � 12 caract�res commen�ant par $1$)
                 if (CRYPT_MD5 == 1) {
                     // Si le mot de passe est le bon
                     if ($results[0]->password_dbuser == crypt($pParams['password'], $results[0]->password_dbuser)) {
                         // Changement de mot de passe...
                         $user_tmp = _ioDAO('dbuser')->get($results[0]->id_dbuser);
                         $user_tmp->password_dbuser = $this->_cryptPassword($pParams['password']);
                         _ioDAO('dbuser')->update($user_tmp);
                         //_dump($user_tmp);
                         $password_test = $results[0]->password_dbuser = $user_tmp->password_dbuser;
                     }
                 }
             }
         }
         if (isset($pParams['assistance']) && $pParams['assistance'] || $results[0]->password_dbuser == $password_test) {
             $extra = array();
             $getUserInfo = Kernel::getUserInfo("LOGIN", $results[0]->login_dbuser);
             //var_dump($getUserInfo);
             $extra = $getUserInfo;
             return new CopixUserLogResponse(true, 'auth|dbuserhandler', $results[0]->id_dbuser, $results[0]->login_dbuser, $extra);
         }
     }
     return new CopixUserLogResponse(false, null, null, null);
 }
 /**
  * Mets a jour un module
  * @param $pModuleName string Nom du module
  * @return mixed true si tout va bien, le message en cas d'exception et false si impossible de maj
  */
 public static function updateModule($pModuleName)
 {
     $dao = _ioDAO('copix:CopixModule');
     $infos = CopixModule::getInformations($pModuleName);
     $currentVersion = $dao->get($pModuleName);
     $moduleVersion = $infos->version;
     if ($currentVersion->version_cpm == $moduleVersion) {
         return true;
     }
     $error = false;
     $moduleInstaller = self::_getModuleInstaller($pModuleName);
     while ($currentVersion->version_cpm != $moduleVersion && !$error) {
         $error = true;
         foreach ($infos->update as $version) {
             if ($version->from == $currentVersion->version_cpm) {
                 try {
                     $scriptFile = self::_getScriptFile($pModuleName, $version->script);
                     if ($scriptFile) {
                         $ct = CopixDB::getConnection();
                         $ct->doSQLScript($scriptFile);
                     }
                     $method = 'process' . $version->script;
                     if (method_exists($moduleInstaller, $method)) {
                         $moduleInstaller->{$method}();
                     }
                     $error = false;
                     $currentVersion->version_cpm = $version->to;
                     _ioDAO('copix:CopixModule')->update($currentVersion);
                     break;
                 } catch (Exception $e) {
                     return $e->getMessage();
                 }
             }
         }
     }
     if (!$error) {
         return true;
     } else {
         return false;
     }
 }
 public function testSpecialChar()
 {
     $ct = CopixDB::getConnection();
     $value = "test ' avec une quote et un antislash \\";
     $query = "insert into copixtestmain (type_test , titre_test , description_test , date_test ) VALUES ('1', " . $ct->quote($value) . ", 'test1desc', '20060202')";
     $countNow = count(CopixDB::getConnection()->doQuery('select * from copixtestmain'));
     try {
         CopixDB::getConnection()->doQuery($query);
     } catch (Exception $exception) {
     }
     $this->assertTrue($countNow == count(CopixDB::getConnection()->doQuery('select * from copixtestmain')) - 1);
     /*
     $value = "test:antislash\\";
     $query = "insert into copixtestmain (id_test , type_test , titre_test , description_test , date_test ) VALUES (NULL , '1', ".$ct->quote($value).", 'test1desc', '20060202')";
     $countNow = count (CopixDB::getConnection ()->doQuery ('select * from copixtestmain'));
     try {
     CopixDB::getConnection ()->doQuery ($query);
     }catch (Exception $exception){
     }
     $this->assertTrue ($countNow == count (CopixDB::getConnection ()->doQuery ('select * from copixtestmain')) - 1);
     
     $value = 'test:doublequote"';
     $query = "insert into copixtestmain (id_test , type_test , titre_test , description_test , date_test ) VALUES (NULL , '1', ".$ct->quote($value).", 'test1desc', '20060202')";
     $countNow = count (CopixDB::getConnection ()->doQuery ('select * from copixtestmain'));
     try {
     CopixDB::getConnection ()->doQuery ($query);
     }catch (Exception $exception){
     }
     $this->assertTrue ($countNow == count (CopixDB::getConnection ()->doQuery ('select * from copixtestmain')) - 1);
     */
     $value = 'test:doublequote"';
     $query = "insert into copixtestmain (type_test , titre_test , description_test , date_test ) VALUES ('1', :parameter, 'test1desc', '20060202')";
     $countNow = count(CopixDB::getConnection()->doQuery('select * from copixtestmain'));
     try {
         CopixDB::getConnection()->doQuery($query, array(':parameter' => $value));
     } catch (Exception $exception) {
     }
     $this->assertTrue($countNow == count(CopixDB::getConnection()->doQuery('select * from copixtestmain')) - 1);
 }
 /**
  * Demande l'exécution d'un service donné
  * @param string $pServiceId L'identifiant du service que l'on souhaite lancer
  * @param array $vars parameters
  */
 public static function process($pServiceId, $pParams = array(), $pTransactionContext = self::NEW_TRANSACTION)
 {
     $extractedPath = self::_extractPath($pServiceId);
     $service = self::_create($extractedPath, $pParams);
     $methName = $extractedPath->method;
     CopixContext::push($extractedPath->module);
     try {
         if ($pTransactionContext == self::NEW_TRANSACTION) {
             CopixDB::begin();
         }
         $toReturn = $service->{$methName}();
         if ($pTransactionContext == self::NEW_TRANSACTION) {
             CopixDB::commit();
         }
         CopixContext::pop();
         return $toReturn;
     } catch (Exception $e) {
         if ($pTransactionContext == self::NEW_TRANSACTION) {
             CopixDB::rollback();
         }
         CopixContext::pop();
         throw $e;
     }
 }
Ejemplo n.º 18
0
 /**
  * Supression d'une transaction de la pile
  * @param string $pTransactionId l'identifiant de la transaction à supprimer
  */
 private static function _removeTransaction($pTransactionId)
 {
     //Supression de la trasaction dans la liste des identifiant de transaction en cours.
     $tmp = self::$_transactionId;
     //on passe pour un tableau temporaire car on veut garder
     //des identifiants de tableaux séquentiels sans blanc (0, 1, 2, 3, et non 0, 2, 3, 6)
     self::$_transactionId = array();
     foreach ($tmp as $transactionPosition => $transactionId) {
         if ($transactionId != $pTransactionId) {
             self::$_transactionId[] = $transactionId;
         }
     }
     //on supprime la transaction courante
     unset(self::$_transactions[$pTransactionId]);
 }
 /**
  * Marque les tests de connection pour les connections configurées en session
  *
  * @return boolean Vrai si les connections sont toutes accessibles
  */
 private function _testConnections()
 {
     $toReturn = true;
     $arConnections = $this->_getConnections();
     foreach ($arConnections as $position => $connection) {
         try {
             $profile = new CopixDBProfile('test_' . $position, $connection['driver'] . ':' . $connection['connectionString'], $connection['user'], $connection['password'], $connection['extra']);
             if (($result = CopixDB::testConnection($profile)) !== true) {
                 $toReturn = false;
             }
             $arConnections[$position]['available'] = $result === true;
             $arConnections[$position]['errorNotAvailable'] = $result === true ? '' : $result;
         } catch (CopixDBException $e) {
             $toReturn = false;
             $arConnections[$position]['available'] = false;
             $arConnections[$position]['errorNotAvailable'] = $e->getMessage();
         }
     }
     // var_dump($arConnections);
     CopixSession::set('admin|database|configure', $arConnections);
     return $toReturn;
 }
Ejemplo n.º 20
0
/**
 * Alias à CopixDB::getConnection ($base)->iDoQuery ($query, $params)
 * @param	string	$pQuery	La requête à lancer
 * @param 	array	$pParams	tableau des paramètres à passer à la base
 * @param	string	$pBase		La connexion à utiliser
 * @return mixed
 */
function _iDoQuery($pQuery, $pParams = array(), $pBase = null)
{
    return CopixDB::getConnection($pBase)->iDoQuery($pQuery, $pParams);
}
 /**
  * Création de l'objet définition à partir du XM
  */
 public function getDefinition()
 {
     $definition = new CopixDAODefinition();
     $definition->setDAOId($this->_DAOId);
     if (isset($this->_options['xmlFilePath'])) {
         if (!($parsedFile = @simplexml_load_file($this->_options['xmlFilePath']))) {
             throw new Exception('Impossible d\'analyser le fichier XML pour le DAO ' . $this->_options['xmlFilePath']);
         }
     } else {
         throw new Exception('Impossible de trouver le fichier XML ' . $this->_options['xmlFilePath'] . ' pour le DAO ' . $this->_DAOId);
     }
     $pBase = null;
     if (isset($parsedFile->datasource->connection)) {
         $connection = $parsedFile->datasource->connection->attributes();
         if (isset($connection['name'])) {
             $definition->setConnectionName((string) $connection['name']);
             $pBase = (string) $connection['name'];
         }
     }
     if ($pBase == null) {
         $pBase = CopixConfig::instance()->copixdb_getDefaultProfileName();
     }
     $ct = CopixDB::getConnection($pBase);
     $listTable = array();
     $listTable = $ct->getTableList();
     if (isset($parsedFile->datasource) && isset($parsedFile->datasource->table)) {
         $pTableName = (string) $parsedFile->datasource->table['name'];
         if (!in_array($pTableName, $listTable)) {
             throw new Exception(_i18n('copix:dao.error.tableMissing ', $pTableName));
         }
         $definition->addTable(array('name' => $pTableName, 'tablename' => $pTableName, 'primary' => 'yes'));
     } else {
         throw new Exception(_i18n('copix: dao.error.definitionfile.table.missing'));
     }
     if ($definition->getPrimaryTableName() === null) {
         throw new Exception(_i18n('copix:dao.error.definitionfile.table.primary.missing '));
     }
     $fields = $ct->getFieldList($pTableName);
     $champAjoute = array();
     //Ajout des propriétés
     if (isset($parsedFile->properties) && isset($parsedFile->properties->property)) {
         foreach ($parsedFile->properties->property as $field) {
             $definition->addProperty(new CopixPropertyForDAO($field->attributes(), $definition));
             $champAjoute[] = isset($field['fieldName']) ? $field['fieldName'] : $field['name'];
         }
         foreach ($fields as $field) {
             if (in_array($field->name, $champAjoute)) {
                 continue;
             }
             $definition->addProperty(new CopixPropertyForDAO($field, $definition));
         }
     } else {
         throw new Exception(_i18n('copix:dao.error.definitionfile.properties.missing'));
     }
     //Assignation du fichier PHP s'il existe et est lisible
     if (isset($this->_options['phpClassFilePath']) && is_readable($this->_options['phpClassFilePath'])) {
         $definition->setPHPClassFilePath($this->_options['phpClassFilePath']);
     }
     return $definition;
 }
 /**
  * Retourne une connexion à la base de test.
  *
  * @return CopixDBConnection
  */
 protected function _getConnection()
 {
     return CopixDB::getConnection(self::TEST_PROFILE_NAME);
 }
 public function processDoCreateAccounts()
 {
     $comptes_service =& CopixClassesFactory::Create('comptes|ComptesService');
     if (!Admin::canAdmin()) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.noRights'), 'back' => CopixUrl::get()));
     }
     $limit = $this->getRequest('limit', 5);
     $password = $this->getRequest('password', '123456');
     $ppo = new CopixPPO();
     // dbuser : id_dbuser 	login_dbuser 	password_dbuser 	email_dbuser 	enabled_dbuser
     // kernel_link_bu2user : user_id 	bu_type 	bu_id
     $sql_params = array();
     $sql = '
         SELECT
             E.idEleve, E.nom, E.prenom1 AS prenom,
             KLB2U.*
         FROM
             kernel_bu_eleve E
         LEFT JOIN
             kernel_link_bu2user KLB2U ON E.idEleve=KLB2U.bu_id AND KLB2U.bu_type="USER_ELE"
         WHERE bu_type IS NULL';
     $ppo->user_ele = CopixDB::getConnection()->doQuery($sql, $sql_params);
     $sql = '
         SELECT
             P.numero, P.nom, P.prenom1 AS prenom, P.civilite, P.id_sexe,
             PE.role,
             KLB2U.*
         FROM
             kernel_bu_personnel_entite PE, kernel_bu_personnel P
         LEFT JOIN
             kernel_link_bu2user KLB2U ON P.numero=KLB2U.bu_id AND KLB2U.bu_type="USER_ENS"
         WHERE PE.type_ref="ECOLE" AND (PE.role=1 OR PE.role=2) AND PE.id_per=P.numero
         AND bu_type IS NULL';
     $ppo->user_ens = CopixDB::getConnection()->doQuery($sql, $sql_params);
     $sql = '
         SELECT
             P.numero, P.nom, P.prenom1 AS prenom, P.civilite, P.id_sexe,
             PE.role,
             KLB2U.*
         FROM
             kernel_bu_personnel_entite PE, kernel_bu_personnel P
         LEFT JOIN
             kernel_link_bu2user KLB2U ON P.numero=KLB2U.bu_id AND KLB2U.bu_type="USER_VIL"
         WHERE PE.type_ref="VILLE" AND PE.role=4 AND PE.id_per=P.numero
         AND bu_type IS NULL';
     $ppo->user_vil = CopixDB::getConnection()->doQuery($sql, $sql_params);
     $sql = '
         SELECT
             R.numero, R.nom, R.prenom1 AS prenom, R.civilite, R.id_sexe,
             KLB2U.*
         FROM
             kernel_bu_responsable R
         LEFT JOIN
             kernel_link_bu2user KLB2U ON R.numero=KLB2U.bu_id AND KLB2U.bu_type="USER_RES"
         WHERE bu_type IS NULL';
     $ppo->user_res = CopixDB::getConnection()->doQuery($sql, $sql_params);
     $fusible = $limit;
     echo "<pre>";
     foreach ($ppo->user_ele as $eleve) {
         if ($fusible-- <= 0) {
             break;
         }
         $user_infos = Kernel::getUserInfo('USER_ELE', $eleve->idEleve);
         $login = $comptes_service->createLogin($user_infos);
         $user_new = CopixDAOFactory::createRecord("kernel|kernel_copixuser");
         $user_new->login_dbuser = $login;
         $user_new->password_dbuser = md5($password);
         $user_new->email_dbuser = '';
         $user_new->enabled_dbuser = 1;
         _dao("kernel|kernel_copixuser")->insert($user_new);
         $bu_new = _record("kernel|kernel_bu2user2");
         $bu_new->user_id = $user_new->id_dbuser;
         $bu_new->bu_type = 'USER_ELE';
         $bu_new->bu_id = $eleve->idEleve;
         _dao("kernel|kernel_bu2user2")->insert($bu_new);
         echo $eleve->nom . ";" . $eleve->prenom . ";" . $login . ";" . $password . "\n";
     }
     foreach ($ppo->user_ens as $ens) {
         if ($fusible-- <= 0) {
             break;
         }
         $user_infos = Kernel::getUserInfo('USER_ENS', $ens->numero);
         $login = $comptes_service->createLogin($user_infos);
         $user_new = CopixDAOFactory::createRecord("kernel|kernel_copixuser");
         $user_new->login_dbuser = $login;
         $user_new->password_dbuser = md5($password);
         $user_new->email_dbuser = '';
         $user_new->enabled_dbuser = 1;
         _dao("kernel|kernel_copixuser")->insert($user_new);
         $bu_new = _record("kernel|kernel_bu2user2");
         $bu_new->user_id = $user_new->id_dbuser;
         $bu_new->bu_type = 'USER_ENS';
         $bu_new->bu_id = $ens->numero;
         _dao("kernel|kernel_bu2user2")->insert($bu_new);
         echo $ens->nom . ";" . $ens->prenom . ";" . $login . ";" . $password . "\n";
     }
     foreach ($ppo->user_vil as $vil) {
         if ($fusible-- <= 0) {
             break;
         }
         $user_infos = Kernel::getUserInfo('USER_VIL', $vil->numero);
         $login = $comptes_service->createLogin($user_infos);
         $user_new = CopixDAOFactory::createRecord("kernel|kernel_copixuser");
         $user_new->login_dbuser = $login;
         $user_new->password_dbuser = md5($password);
         $user_new->email_dbuser = '';
         $user_new->enabled_dbuser = 1;
         _dao("kernel|kernel_copixuser")->insert($user_new);
         $bu_new = _record("kernel|kernel_bu2user2");
         $bu_new->user_id = $user_new->id_dbuser;
         $bu_new->bu_type = 'USER_VIL';
         $bu_new->bu_id = $vil->numero;
         _dao("kernel|kernel_bu2user2")->insert($bu_new);
         echo $vil->nom . ";" . $vil->prenom . ";" . $login . ";" . $password . "\n";
     }
     foreach ($ppo->user_res as $res) {
         if ($fusible-- <= 0) {
             break;
         }
         $user_infos = Kernel::getUserInfo('USER_RES', $res->numero);
         $login = $comptes_service->createLogin($user_infos);
         $user_new = CopixDAOFactory::createRecord("kernel|kernel_copixuser");
         $user_new->login_dbuser = $login;
         $user_new->password_dbuser = md5($password);
         $user_new->email_dbuser = '';
         $user_new->enabled_dbuser = 1;
         _dao("kernel|kernel_copixuser")->insert($user_new);
         $bu_new = _record("kernel|kernel_bu2user2");
         $bu_new->user_id = $user_new->id_dbuser;
         $bu_new->bu_type = 'USER_RES';
         $bu_new->bu_id = $res->numero;
         _dao("kernel|kernel_bu2user2")->insert($bu_new);
         echo $res->nom . ";" . $res->prenom . ";" . $login . ";" . $password . "\n";
     }
     echo "</pre>";
     die;
     /*
              *
              *
              *
              * 				$user_infos = Kernel::getUserInfo( $user_type, $user_id );
     
                     // V�rification de l'existance d'un login.
                     // -> Si c'est le cas, il ne faut pas proposer un nouveau login.
                     $bu_user = $bu_dao->getByBUID( $user_type, $user_id );
     
                     if( !count($bu_user) ) {
     
                         $user_infos['login']  = $comptes_service->createLogin( $user_infos );
                     $user_new = CopixDAOFactory::createRecord("kernel|kernel_copixuser");
                             $user_new->login_dbuser = $pLogin[$typeid];
                             $user_new->password_dbuser = md5($pPasswd[$typeid]);
                             $user_new->email_dbuser = '';
                             $user_new->enabled_dbuser = 1;
                                                     if( $user_dao->insert( $user_new ) ) {
     
                                 // Cr�ation du lien entre l'utilisateur de la base unique et le login.
                                 $bu_new = _record("kernel|kernel_bu2user2");
                                 $bu_new->user_id = $user_new->id_dbuser;
                                 $bu_new->bu_type = $user_type;
                                 $bu_new->bu_id = $user_id;
     
                                 // Enregistrement et v�rification de l'insertion.
                                 if( _dao("kernel|kernel_bu2user2")->insert( $bu_new ) ) {
     */
 }
 /**
  * Affichage des infos sur copix.
  */
 public function processDefault()
 {
     $ppo = new CopixPPO();
     $ppo->TITLE_PAGE = _i18n('copix.titlepage');
     $sections = array();
     // infos de version
     $section = _i18n('copix.section.version');
     $sections[$section]['COPIX_VERSION'] = COPIX_VERSION;
     $sections[$section]['COPIX_VERSION_MAJOR'] = COPIX_VERSION_MAJOR;
     $sections[$section]['COPIX_VERSION_MINOR'] = COPIX_VERSION_MINOR;
     $sections[$section]['COPIX_VERSION_FIX'] = COPIX_VERSION_FIX;
     $sections[$section]['COPIX_VERSION_RC'] = COPIX_VERSION_RC;
     $sections[$section]['COPIX_VERSION_BETA'] = COPIX_VERSION_BETA;
     $sections[$section]['COPIX_VERSION_DEV'] = COPIX_VERSION_DEV;
     // infos sur les répertoires
     $section = _i18n('copix.section.path');
     $sections[$section]['COPIX_PATH'] = COPIX_PATH;
     $sections[$section]['COPIX_CORE_PATH'] = COPIX_CORE_PATH;
     $sections[$section]['COPIX_UTILS_PATH'] = COPIX_UTILS_PATH;
     $sections[$section]['COPIX_PROJECT_PATH'] = COPIX_PROJECT_PATH;
     $sections[$section]['COPIX_TEMP_PATH'] = COPIX_TEMP_PATH;
     $sections[$section]['COPIX_CACHE_PATH'] = COPIX_CACHE_PATH;
     $sections[$section]['COPIX_LOG_PATH'] = COPIX_LOG_PATH;
     $sections[$section]['COPIX_VAR_PATH'] = COPIX_VAR_PATH;
     $sections[$section]['COPIX_SMARTY_PATH'] = COPIX_SMARTY_PATH;
     $sections[$section]['COPIX_ACTIONGROUP_DIR'] = COPIX_ACTIONGROUP_DIR;
     $sections[$section]['COPIX_DESC_DIR'] = COPIX_DESC_DIR;
     $sections[$section]['COPIX_ZONES_DIR'] = COPIX_ZONES_DIR;
     $sections[$section]['COPIX_TEMPLATES_DIR'] = COPIX_TEMPLATES_DIR;
     $sections[$section]['COPIX_CLASSES_DIR'] = COPIX_CLASSES_DIR;
     $sections[$section]['COPIX_RESOURCES_DIR'] = COPIX_RESOURCES_DIR;
     $sections[$section]['COPIX_PLUGINS_DIR'] = COPIX_PLUGINS_DIR;
     $sections[$section]['COPIX_INSTALL_DIR'] = COPIX_INSTALL_DIR;
     $sections[$section]['arModulesPath'] = CopixConfig::instance()->arModulesPath;
     $sections[$section]['arPluginsPath'] = CopixConfig::instance()->arPluginsPath;
     // configuration générale
     $section = _i18n('copix.section.config');
     switch (CopixConfig::instance()->getMode()) {
         case CopixConfig::DEVEL:
             $sections[$section]['mode'] = 'DEVEL';
             break;
         case CopixConfig::PRODUCTION:
             $sections[$section]['mode'] = 'PRODUCTION';
             break;
         case CopixConfig::FORCE_INITIALISATION:
             $sections[$section]['mode'] = 'FORCE_INITIALISATION';
             break;
         default:
             $sections[$section]['mode'] = 'UNKNOW';
             break;
     }
     $sections[$section]['checkTrustedModules'] = CopixFormatter::getBool(CopixConfig::instance()->checkTrustedModules);
     $sections[$section]['sessionName'] = CopixConfig::instance()->sessionName;
     $sections[$section]['apcEnabled'] = CopixFormatter::getBool(CopixConfig::instance()->apcEnabled);
     $sections[$section]['default_language'] = CopixConfig::instance()->default_language;
     $sections[$section]['default_country'] = CopixConfig::instance()->default_country;
     $sections[$section]['default_charset'] = CopixConfig::instance()->default_charset;
     $sections[$section]['i18n_path_enabled'] = CopixFormatter::getBool(CopixConfig::instance()->i18n_path_enabled);
     $sections[$section]['missingKeyTriggerErrorLevel'] = CopixConfig::instance()->missingKeyTriggerErrorLevel == E_USER_ERROR ? 'E_USER_ERROR' : CopixConfig::instance()->missingKeyTriggerErrorLevel;
     $sections[$section]['compile_check'] = CopixFormatter::getBool(CopixConfig::instance()->compile_check);
     $sections[$section]['force_compile'] = CopixFormatter::getBool(CopixConfig::instance()->force_compile);
     $sections[$section]['template_caching'] = CopixFormatter::getBool(CopixConfig::instance()->template_caching);
     $sections[$section]['template_use_sub_dirs'] = CopixFormatter::getBool(CopixConfig::instance()->template_use_sub_dirs);
     $sections[$section]['mainTemplate'] = CopixConfig::instance()->mainTemplate;
     $sections[$section]['invalidActionTriggersError'] = CopixFormatter::getBool(CopixConfig::instance()->invalidActionTriggersError);
     $sections[$section]['notFoundDefaultRedirectTo'] = CopixFormatter::getBool(CopixConfig::instance()->notFoundDefaultRedirectTo);
     $sections[$section]['overrideUnserializeCallbackEnabled'] = CopixFormatter::getBool(CopixConfig::instance()->overrideUnserializeCallbackEnabled);
     // configuration des url
     $section = _i18n('copix.section.configUrl');
     $sections[$section]['significant_url_mode'] = CopixConfig::instance()->significant_url_mode;
     $sections[$section]['significant_url_prependIIS_path_key'] = CopixConfig::instance()->significant_url_prependIIS_path_key;
     $sections[$section]['stripslashes_prependIIS_path_key'] = CopixFormatter::getBool(CopixConfig::instance()->stripslashes_prependIIS_path_key);
     $sections[$section]['url_requestedscript_variable'] = CopixConfig::instance()->url_requestedscript_variable;
     // configuration des bases de données
     $section = _i18n('copix.section.configDb');
     $sections[$section][_i18n('copix.configDb.givenDrivers')] = CopixDB::getAllDrivers();
     $sections[$section][_i18n('copix.configDb.availableDrivers')] = CopixDB::getAvailableDrivers();
     $sections[$section][_i18n('copix.configDb.profils')] = CopixConfig::instance()->copixdb_getProfiles();
     $sections[$section][_i18n('copix.configDb.defaultProfil')] = CopixConfig::instance()->copixdb_getDefaultProfileName();
     // profil de connexion utilisé actuellement
     $profile = CopixDb::getConnection()->getProfile();
     $parts = $profile->getConnectionStringParts();
     $section = _i18n('copix.section.dbProfile', array($profile->getName()));
     $sections[$section][_i18n('copix.dbProfile.connexionString')] = $profile->getConnectionString();
     $sections[$section][_i18n('copix.dbProfile.driverName')] = $profile->getDriverName();
     $sections[$section][_i18n('copix.dbProfile.databaseType')] = $profile->getDatabase();
     $sections[$section][_i18n('copix.dbProfile.user')] = $profile->getUser();
     $sections[$section][_i18n('copix.dbProfile.database')] = $parts['dbname'];
     $sections[$section][_i18n('copix.dbProfile.serverName')] = isset($parts['host']) ? $parts['host'] : 'localhost';
     $sections[$section][_i18n('copix.dbProfile.options')] = $profile->getOptions();
     $section = _i18n('copix.section.auth');
     $sections[$section]['copixauth_cache'] = CopixFormatter::getBool(CopixConfig::instance()->copixauth_cache);
     $userHandlers = CopixConfig::instance()->copixauth_getRegisteredUserHandlers();
     //echo '<pre><div align="left">';
     foreach ($userHandlers as $key => $item) {
         $userHandlers[$key]['required'] = CopixFormatter::getBool($userHandlers[$key]['required']);
     }
     $sections[$section]['userHandlers'] = $userHandlers;
     $groupHandlers = CopixConfig::instance()->copixauth_getRegisteredGroupHandlers();
     foreach ($groupHandlers as $key => $item) {
         $groupHandlers[$key]['required'] = CopixFormatter::getBool($groupHandlers[$key]['required']);
     }
     $sections[$section]['groupHandlers'] = $groupHandlers;
     $credentialHandlers = CopixConfig::instance()->copixauth_getRegisteredCredentialHandlers();
     foreach ($credentialHandlers as $key => $item) {
         $credentialHandlers[$key]['stopOnSuccess'] = CopixFormatter::getBool($credentialHandlers[$key]['stopOnSuccess']);
         $credentialHandlers[$key]['stopOnFailure'] = CopixFormatter::getBool($credentialHandlers[$key]['stopOnFailure']);
     }
     $sections[$section]['credentialHandlers'] = $credentialHandlers;
     //$sections[$section][''] = ;
     $ppo->sections = $sections;
     return _arPPO($ppo, 'infos.tpl');
 }