Subversion Repositories eFlore/Applications.coel

Rev

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

<?php
/**
 * Exemple lancement:
 * /opt/lampp/bin/php -d memory_limit=3500M cli.php import -n
 */
class Import extends Script {
        private $bdd = null;
        private $auteurs = array();
        protected $parametres_autorises = array(
                        '-n' => array(true, false, 'Nom du fichier à importer.'));
        
        
        public function __construct($script_nom, $parametres) {
                parent::__construct($script_nom, $parametres);
                $this->bdd = new Bdd();
        }
        
        
        public function executer() {
                try {
                        $this->initialiserScript();
                        $cmd = $this->getParametre('a');
                        $fichier = $this->getParametre('n');
                        switch ($cmd) {
                                case "import" :
                                        //testerauteur
                                        $this->charger($fichier); break;
                                default :
                                        $this->traiterErreur('Erreur : la commande "%s" n\'existe pas!', array($cmd));
                        }
                } catch (Exception $erreur) {
                        $this->traiterErreur($erreur->getMessage());
                }
        }
        
        private function initialiserScript() {
                $fichierIni = $this->getScriptChemin().'import.ini';
                if (file_exists($fichierIni)) {
                        Config::charger($fichierIni);
                } else {
                        $erreur = "Veuillez configurer le projet en créant le fichier 'communes.ini' ".
                                        "dans le dossier du module de script du projet à partir du fichier 'config.defaut.ini'.";
                        throw new Exception($erreur);
                }
        }

        private function charger($fichier) {
                // vérifier si fichier existe
                // charger fichier
                // vérifier séparateur
                // vérifier nom colonne
                // vérifier si colonne "titre" et "auteur" sont bien présent
                // modifier champ editeur ajouter AUTRES##
                // vérifier si auteurs sont déjà présents et récupérer le numéro (publi_a_pers)
                // créer champ nom complet
                // faire un insert
                
                $chemin = Config::get('dossiertmp').$fichier;
                $table = Config::get('tables.publication');
                $requete = "LOAD DATA INFILE '$chemin' ".
                        " INTO TABLE $table ".
                        'CHARACTER SET utf8 '.
                        'FIELDS '.
                        "       TERMINATED BY ';' ".
                        "       ENCLOSED BY '\"' ".
                        "       ESCAPED BY '\\\' ".
                        'IGNORE 0 LINES (`cpu_ce_truk_editeur`, `cpu_collection`, `cpu_indication_nvt`, `cpu_fascicule`, `cpu_date_parution`, `cpu_truk_pages`, `cpu_titre`, `cpu_fmt_auteur`, cpu_resume_motcle)';
                $this->bdd->requeter($requete);
        }

}
?>