Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 1856 → Rev 1857

/trunk/scripts/modules/import/Import.php
9,6 → 9,9
protected $parametres_autorises = array(
'-n' => array(true, false, 'Nom du fichier à importer.'));
protected $table_publication = null;
protected $table_auteur = null;
protected $colonnes_obligatoires = array();
protected $colonnes_acceptees = array();
26,8 → 29,7
$fichier = $this->getParametre('n');
switch ($cmd) {
case "import" :
//testerauteur
$this->charger($fichier); break;
$resultat = $this->charger($fichier); break;
default :
$this->traiterErreur('Erreur : la commande "%s" n\'existe pas!', array($cmd));
}
34,6 → 36,9
} catch (Exception $erreur) {
$this->traiterErreur($erreur->getMessage());
}
// renvoi du résultat vers la sortie php
echo $resultat;
}
private function initialiserScript() {
48,6 → 53,10
$this->colonnes_obligatoires= Config::get('champs_obligatoires');
$this->colonnes_acceptees = Config::get('champs');
$tables = Config::get('tables');
$this->table_publication = $tables['publication'];
$this->table_auteur = $tables['auteur'];
}
 
private function charger($fichier) {
92,26 → 101,64
}
}
// Ajout du nom complet formaté de la publication
$ligne_inseree[] = $this->formaterNomComplet($ligne, $index_colonnes_importees);
$ligne_inseree[] = $this->bdd->proteger($this->formaterNomComplet($ligne, $index_colonnes_importees));
$lignes[] = "(".implode(",", $ligne_inseree).")";
}
// Ajout de la colonne nom complet aux champs de la requête
$colonnes_importees[] = 'cpu_fmt_nom_complet';
$this->insererPublications($colonnes_importees, $lignes);
// le script renvoie le nombre de publications importées
return $this->insererPublications($colonnes_importees, $lignes);
}
protected function formaterNomComplet($ligne, $roles) {
// TODO: écrire la fonction
return 'aaaaa';
$roles = array_flip($roles);
// Intitulé de la publication complet : fmt_auteur, date_parution(année). titre. Editeur (nom), collection, fascicule, indication_nvt. pages.
// indication_nvt = serie_tome
$champs_nom_complet = array('auteur', 'annee', 'titre', 'editeur', 'intitule_revue', 'fascicule', 'serie_tome', 'pages');
$champs_fmt = array();
$fmt_nom_complet = "";
foreach($champs_nom_complet as $champ) {
$index = $roles[$champ];
if(!isset($ligne[$index])) {
$champs_fmt[$champ] = "";
} else {
$champs_fmt[$champ] = $ligne[$index];
}
}
$indication_nvt_pages = array($champs_fmt['serie_tome'], $champs_fmt['pages']);
$indication_nvt_pages = array_filter($indication_nvt_pages, 'strlen');
$indication_nvt_pages = trim(implode(". ", $indication_nvt_pages));
$indication_nvt_pages .= !empty($indication_nvt_pages) ? "." : "";
$annee_titre_editeur = array($champs_fmt['annee'], $champs_fmt['titre'], $champs_fmt['editeur']);
$annee_titre_editeur = array_filter($annee_titre_editeur, 'strlen');
$annee_titre_editeur = trim(implode(". ", $annee_titre_editeur));
$fmt_nom_complet = array($champs_fmt['auteur'],
$annee_titre_editeur,
$champs_fmt['intitule_revue'],
$champs_fmt['fascicule'],
$indication_nvt_pages);
$fmt_nom_complet = array_filter($fmt_nom_complet, 'strlen');
$fmt_nom_complet = implode(", ", $fmt_nom_complet);
return $fmt_nom_complet;
}
private function insererPublications(&$colonnes, &$publications) {
$requete = "INSERT INTO $table ".
$requete = "INSERT INTO ".$this->table_publication." ".
"(".implode(',', $colonnes).") ".
"VALUES ".implode(","."\n", $publications)."\n";
echo $requete;exit;
return $this->bdd->executer($requete);
}
private function traiterChamp($valeur, $role) {
127,22 → 174,25
return $this->bdd->proteger($valeur);
}
private function obtenirInfosAuteur($auteur) {
$retour = $auteur;
if(isset($cache_auteur[$auteur])) {
$retour = $cache_auteur[$auteur];
private function obtenirInfosAuteur($auteur_intitule) {
$retour = $auteur_intitule;
if(isset($this->cache_auteur[$auteur_intitule])) {
$retour = !empty($this->cache_auteur[$auteur_intitule]['cp_id_personne']) ?
$this->cache_auteur[$auteur_intitule]['cp_id_personne'] :
$this->cache_auteur[$auteur_intitule];
} else {
$auteur = $this->fabriquerCombinaisonsAuteur($auteur);
$auteur = $this->fabriquerCombinaisonsAuteur($auteur_intitule);
$auteur_req = "(".implode(', ', $auteur).")";
$requete = "SELECT cp_id_personne FROM coel_personne WHERE cp_fmt_nom_complet IN ".$auteur_req;
$requete = "SELECT cp_id_personne, cp_fmt_nom_complet FROM ".$this->table_auteur." WHERE cp_fmt_nom_complet IN ".$auteur_req;
$infos_auteur = $this->bdd->recupererTous($requete);
if(!empty($infos_auteur)) {
$retour = $infos_auteur[0]['cp_id_personne'];
$cache_auteur[$auteur] = $infos_auteur[0]['cp_id_personne'];
$this->cache_auteur[$auteur_intitule] = $infos_auteur[0];
} else {
$cache_auteur[$auteur] = $auteur;
$retour = $auteur_intitule;
$this->cache_auteur[$auteur_intitule] = $auteur_intitule;
}
}
192,8 → 242,6
$possibilites_auteurs = $this->cartesian(array($combinaisons[0], $combinaisons[1]));
$possibilites_auteurs = array_merge($possibilites_auteurs, $this->cartesian(array($combinaisons[1], $combinaisons[0])));
}
// Elimination d'éventuels doublons
array_unique($possibilites_auteurs);
$auteurs_formates = array();
foreach($possibilites_auteurs as &$possibilite) {