initialiserProjet('liste_rouge'); $cmd = $this->getParametre('a'); switch ($cmd) { case 'chargerTous' : $this->chargerStructureSql(); $this->chargerDonnees(); $this->genererChampNumNomRetenu(); break; case 'chargerStructureSql' : $this->chargerStructureSql(); break; case 'chargerDonnees' : $this->chargerDonnees(); $this->genererChampNumNomRetenu(); break; case 'genererChampNumNomRetenu' : $this->genererChampNumNomRetenu(); break; case 'ajouterChampNumNomRetenu' : $this->ajouterChampNumNomRetenu(); break; case 'supprimerTous' : $this->supprimerTous(); break; default : throw new Exception("Erreur : la commande '$cmd' n'existe pas!"); } } catch (Exception $e) { $this->traiterErreur($e->getMessage()); } } private function chargerDonnees() { $chemin = Config::get('chemins.listeRouge'); $table = Config::get('tables.listeRouge'); $requete = "LOAD DATA INFILE '$chemin' ". "REPLACE INTO TABLE $table ". 'CHARACTER SET utf8 '. 'FIELDS '. " TERMINATED BY '\t' ". " ENCLOSED BY '' ". " ESCAPED BY '\\\' ". 'IGNORE 1 LINES'; $this->getBdd()->requeter($requete); } private function genererChampNumNomRetenu() { $this->preparerTablePrChpNumNomRetenu(); $this->genererNumNomRetenu(); $this->recupererNumNomNonTrouve(); } private function preparerTablePrChpNumNomRetenu() { $table = Config::get('tables.listeRouge'); $requete = "SHOW COLUMNS FROM $table LIKE 'num_nom_retenu' "; $resultat = $this->getBdd()->recuperer($requete); if ($resultat === false) { $requete = "ALTER TABLE $table ". ' ADD `num_nom_retenu` VARCHAR( 10 ) NOT NULL ,'. ' ADD `nom_sci` VARCHAR( 500 ) NOT NULL ,'. ' ADD INDEX ( `num_nom_retenu` ) '; $this->getBdd()->requeter($requete); } } private function genererNumNomRetenu() { $table = Config::get('tables.listeRouge'); $table_referentiel = Config::get('tables.referentielTaxo'); $requete = 'UPDATE '.$table.' s, '.$table_referentiel.' r '. 'SET s.num_nom_retenu = r.num_nom_retenu, s.nom_sci = r.nom_complet '. 'WHERE s.nom_sci_orig = r.nom_complet '; $this->getBdd()->requeter($requete); } private function recupererNumNomNonTrouve() { $table = Config::get('tables.listeRouge'); $requete = 'SELECT `id`, `nom_sci_orig`'. ' FROM '.$table. ' WHERE `num_nom_retenu` = ""'; $noms = $this->getBdd()->recupererTous($requete); $debug = "Noms sans correspondance avec bdtfx :\n"; foreach ($noms as $nom) { $debug .= $nom['id']." ".$nom['nom_sci_orig']."\n"; } Debug::printr($debug); } private function ajouterChampNumNomRetenu() { $chemin = Config::get('chemins.listeRougeCorresp'); $table = Config::get('tables.listeRouge'); $requetes = $this->recupererContenu($chemin); $this->executerScripSql($requetes); } private function supprimerTous() { $requete = "DROP TABLE IF EXISTS liste_rouge_meta, liste_rouge_v2012"; $this->getBdd()->requeter($requete); Debug::printr('suppression'); } } ?>