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) { |