Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 299 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
//declare(encoding='UTF-8');
/**
 * Exemple de lancement du script : :
 * /opt/lampp/bin/php cli.php cel -a chargerTous
 *
 * @category    php 5.2
 * @package             eFlore/Scripts
 * @author              Jean-Pascal MILCENT <jpm@tela-botanica.org>
 * @copyright   Copyright (c) 2011, Tela Botanica (accueil@tela-botanica.org)
 * @license             http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
 * @license             http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
 * @version             $Id$
 */
class BiblioBota extends EfloreScript {

        public function executer() {
                try {
                        $this->initialiserProjet('biblio_bota');

                        // Lancement de l'action demandée
                        $cmd = $this->getParametre('a');
                        switch ($cmd) {
                                case 'chargerTous' :
                                        $this->chargerStructureSql();
                                        $this->chargerBiblioBota();
                                        break;
                                case 'supprimerTous' :
                                        $this->supprimerTous();
                                        break;
                                default :
                                        throw new Exception("Erreur : la commande '$cmd' n'existe pas!");
                        }
                } catch (Exception $e) {
                        $this->traiterErreur($e->getMessage());
                }
        }

        public function chargerBiblioBota() {
                $tablesCodes = array_keys(Config::get('tables'));
                foreach ($tablesCodes as $code) {
                        echo "Chargement de la table : $code\n";
                        $this->chargerFichierTsvDansTable($code);
                }
        }

        private function chargerFichierTsvDansTable($code) {
                $chemin = Config::get('chemins.'.$code);
                $table = Config::get('tables.'.$code);
                $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 supprimerTous() {
                $requete = "DROP TABLE `biblio_article`, `biblio_article_sauv`, `biblio_aut_saisie`, `biblio_collection`, `biblio_domaine`, `biblio_domaine_lier`, `biblio_domaine_lier_sauv`, `biblio_fasc`, `biblio_fasc_sauv`, `biblio_item`, `biblio_item_sauv`, `biblio_item_typlog`, `biblio_item_typphy`, `biblio_link`, `biblio_link_categ`, `biblio_link_categoriser`, `biblio_link_sauv`, `biblio_media`, `biblio_modif`, `biblio_serie`, `biblio_spy`, `biblio_str`, `biblio_str_sauve`, `biblio_str_type`";
                $this->getBdd()->requeter($requete);
        }
}
?>