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']; }
/** * 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); }
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; } }
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); }
/** * Retourne une connexion à la base de test. * * @return CopixDBConnection */ protected function _getConnection() { return CopixDB::getConnection(self::TEST_PROFILE_NAME); }
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'); } }
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 ) ) { */ }
/** * 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; } }
/** * 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); }
/** * 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); }
/** * 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; }