Line 16... |
Line 16... |
16 |
protected $table_meta = null;
|
16 |
protected $table_meta = null;
|
17 |
protected $table_structure = 'coel_structure'; // @TODO configurer
|
17 |
protected $table_structure = 'coel_structure'; // @TODO configurer
|
18 |
protected $table_collection = 'coel_collection'; // @TODO configurer
|
18 |
protected $table_collection = 'coel_collection'; // @TODO configurer
|
19 |
protected $table_collection_bota = 'coel_collection_botanique'; // @TODO configurer
|
19 |
protected $table_collection_bota = 'coel_collection_botanique'; // @TODO configurer
|
Line 20... |
Line 20... |
20 |
|
20 |
|
21 |
protected $id_table_publication = null;
|
21 |
protected $id_table_publication = null;
|
Line 22... |
Line 22... |
22 |
protected $id_table_publication_personne = null;
|
22 |
protected $id_table_publication_personne = null;
|
Line 23... |
Line 23... |
23 |
|
23 |
|
Line 69... |
Line 69... |
69 |
}
|
69 |
}
|
Line 70... |
Line 70... |
70 |
|
70 |
|
71 |
private function traiterInfosUtilisateur($utilisateur) {
|
71 |
private function traiterInfosUtilisateur($utilisateur) {
|
72 |
$utilisateur_infos = json_decode($utilisateur, true);
|
72 |
$utilisateur_infos = json_decode($utilisateur, true);
|
73 |
if(!empty($utilisateur_infos)) {
|
73 |
if(!empty($utilisateur_infos)) {
|
74 |
$this->id_utilisateur = !empty($utilisateur_infos['id']) ? $utilisateur_infos['id'] : $this->id_utilisateur;
|
74 |
$this->id_utilisateur = !empty($utilisateur_infos['id']) ? $utilisateur_infos['id'] : $this->id_utilisateur;
|
75 |
$this->id_session = !empty($utilisateur_infos['session']) ? $utilisateur_infos['session'] : $this->id_session;
|
75 |
$this->id_session = !empty($utilisateur_infos['session']) ? $utilisateur_infos['session'] : $this->id_session;
|
76 |
$this->ip_utilisateur = !empty($utilisateur_infos['ip']) ? $utilisateur_infos['ip'] : $this->ip_utilisateur;
|
76 |
$this->ip_utilisateur = !empty($utilisateur_infos['ip']) ? $utilisateur_infos['ip'] : $this->ip_utilisateur;
|
77 |
}
|
77 |
}
|
Line 78... |
Line 78... |
78 |
}
|
78 |
}
|
Line 89... |
Line 89... |
89 |
|
89 |
|
90 |
$this->colonnes_obligatoires= Config::get('champs_obligatoires');
|
90 |
$this->colonnes_obligatoires= Config::get('champs_obligatoires');
|
Line 91... |
Line 91... |
91 |
$this->colonnes_acceptees = Config::get('champs');
|
91 |
$this->colonnes_acceptees = Config::get('champs');
|
92 |
|
92 |
|
93 |
$tables = Config::get('tables');
|
93 |
$tables = Config::get('tables');
|
94 |
$this->table_publication = $tables['publication'];
|
94 |
$this->table_publication = $tables['publication'];
|
95 |
$this->table_auteur = $tables['auteur'];
|
95 |
$this->table_auteur = $tables['auteur'];
|
Line 96... |
Line 96... |
96 |
$this->table_publication_a_auteur = $tables['publication_a_auteur'];
|
96 |
$this->table_publication_a_auteur = $tables['publication_a_auteur'];
|
97 |
$this->table_meta = $tables['meta'];
|
97 |
$this->table_meta = $tables['meta'];
|
Line 98... |
Line 98... |
98 |
|
98 |
|
99 |
$this->id_table_publication = $tables['id_table_publication'];
|
99 |
$this->id_table_publication = $tables['id_table_publication'];
|
Line 164... |
Line 164... |
164 |
// @TODO vérifier qu'elles existent pour ne pas insérer de doublons en relançant le script !!
|
164 |
// @TODO vérifier qu'elles existent pour ne pas insérer de doublons en relançant le script !!
|
165 |
$idCollection = $this->creerCollection($idStructure, $ligne, $colonnesParNom);
|
165 |
$idCollection = $this->creerCollection($idStructure, $ligne, $colonnesParNom);
|
166 |
$idCollectionsParIdTemp[$ligne[$colonnesParNom['id']]] = $idCollection;
|
166 |
$idCollectionsParIdTemp[$ligne[$colonnesParNom['id']]] = $idCollection;
|
167 |
}
|
167 |
}
|
Line -... |
Line 168... |
- |
|
168 |
|
- |
|
169 |
// mettre à jour le GUID des collections et des structures
|
- |
|
170 |
$this->mettreAJourGUIDCollections();
|
- |
|
171 |
$this->mettreAJourGUIDStructures();
|
168 |
|
172 |
|
169 |
//ouvrir le fichier collection botanique
|
173 |
//ouvrir le fichier collection botanique
|
170 |
$pointeurCollectionsBota = fopen($fichierCollectionsBota, "r");
|
174 |
$pointeurCollectionsBota = fopen($fichierCollectionsBota, "r");
|
171 |
// Chargement de la première colonne (qui contient les noms de colonnes à importer)
|
175 |
// Chargement de la première colonne (qui contient les noms de colonnes à importer)
|
172 |
$colonnesBota = fgetcsv($pointeurCollectionsBota, 0, $separateur);
|
176 |
$colonnesBota = fgetcsv($pointeurCollectionsBota, 0, $separateur);
|
Line 213... |
Line 217... |
213 |
protected function creerStructure($nomStructure) {
|
217 |
protected function creerStructure($nomStructure) {
|
214 |
$nsp = $this->bdd->proteger($nomStructure);
|
218 |
$nsp = $this->bdd->proteger($nomStructure);
|
215 |
$requete = "INSERT INTO " . $this->table_structure . " (cs_nom)"
|
219 |
$requete = "INSERT INTO " . $this->table_structure . " (cs_nom)"
|
216 |
. " VALUES ($nsp)";
|
220 |
. " VALUES ($nsp)";
|
217 |
//echo "REQ INS: $requete\n";
|
221 |
//echo "REQ INS: $requete\n";
|
218 |
$resultat = $this->bdd->executer($requete);
|
222 |
$this->bdd->executer($requete);
|
219 |
$idStructure = $this->bdd->recupererIdDernierAjout();
|
223 |
$idStructure = $this->bdd->recupererIdDernierAjout();
|
Line 220... |
Line 224... |
220 |
|
224 |
|
221 |
return $idStructure;
|
225 |
return $idStructure;
|
Line 228... |
Line 232... |
228 |
*/
|
232 |
*/
|
229 |
protected function creerCollection($idStructure, $ligne, $colonnesParNom) {
|
233 |
protected function creerCollection($idStructure, $ligne, $colonnesParNom) {
|
230 |
//echo "Insertion ! : "; var_dump($ligne); echo "<br/>";
|
234 |
//echo "Insertion ! : "; var_dump($ligne); echo "<br/>";
|
231 |
$nom = $this->bdd->proteger($ligne[$colonnesParNom['cc_nom']]);
|
235 |
$nom = $this->bdd->proteger($ligne[$colonnesParNom['cc_nom']]);
|
232 |
$desc = $this->bdd->proteger($ligne[$colonnesParNom['cc_description']]);
|
236 |
$desc = $this->bdd->proteger($ligne[$colonnesParNom['cc_description']]);
|
- |
|
237 |
$type = $this->bdd->proteger($ligne[$colonnesParNom['cc_ce_type']]);
|
233 |
$pcd = $this->bdd->proteger($ligne[$colonnesParNom['cc_periode_constitution_debut']]);
|
238 |
$pcd = $this->bdd->proteger($ligne[$colonnesParNom['cc_periode_constitution_debut']]);
|
234 |
$pcf = $this->bdd->proteger($ligne[$colonnesParNom['cc_periode_constitution_fin']]);
|
239 |
$pcf = $this->bdd->proteger($ligne[$colonnesParNom['cc_periode_constitution_fin']]);
|
235 |
$tcl = $this->bdd->proteger($ligne[$colonnesParNom['cc_truk_couverture_lieu']]);
|
240 |
$tcl = $this->bdd->proteger($ligne[$colonnesParNom['cc_truk_couverture_lieu']]);
|
236 |
$cst = $this->bdd->proteger($ligne[$colonnesParNom['cc_ce_specimen_type']]);
|
241 |
$cst = $this->bdd->proteger($ligne[$colonnesParNom['cc_ce_specimen_type']]);
|
Line 237... |
Line 242... |
237 |
|
242 |
|
238 |
$requete = "INSERT INTO " . $this->table_collection
|
243 |
$requete = "INSERT INTO " . $this->table_collection
|
239 |
. " (cc_ce_structure, cc_nom, cc_description, cc_periode_constitution_debut, cc_periode_constitution_fin, cc_truk_couverture_lieu, cc_ce_specimen_type)"
|
244 |
. " (cc_ce_structure, cc_nom, cc_description, cc_ce_type, cc_periode_constitution_debut, cc_periode_constitution_fin, cc_truk_couverture_lieu, cc_ce_specimen_type)"
|
240 |
. " VALUES ($idStructure, $nom, $desc, $pcd, $pcf, $tcl, $cst)";
|
245 |
. " VALUES ($idStructure, $nom, $desc, $type, $pcd, $pcf, $tcl, $cst)";
|
241 |
//echo "REQ INS: $requete\n";
|
246 |
//echo "REQ INS: $requete\n";
|
242 |
$resultat = $this->bdd->executer($requete);
|
247 |
$this->bdd->executer($requete);
|
Line 243... |
Line 248... |
243 |
$idCollection = $this->bdd->recupererIdDernierAjout();
|
248 |
$idCollection = $this->bdd->recupererIdDernierAjout();
|
244 |
|
249 |
|
Line 245... |
Line 250... |
245 |
return $idCollection;
|
250 |
return $idCollection;
|
- |
|
251 |
}
|
- |
|
252 |
|
- |
|
253 |
/**
|
- |
|
254 |
* Reconstruit les GUID des structures à partir de leurs ID
|
- |
|
255 |
*/
|
- |
|
256 |
protected function mettreAJourGUIDStructures() {
|
- |
|
257 |
$requete = "UPDATE coel_structure SET cs_guid = CONCAT('urn:lsid:tela-botanica.org:str', cs_id_structure)";
|
- |
|
258 |
$this->bdd->executer($requete);
|
- |
|
259 |
}
|
- |
|
260 |
|
- |
|
261 |
/**
|
- |
|
262 |
* Reconstruit les GUID des collections à partir de leurs ID
|
- |
|
263 |
*/
|
- |
|
264 |
protected function mettreAJourGUIDCollections() {
|
- |
|
265 |
$requete = "UPDATE coel_collection SET cc_guid = CONCAT('urn:lsid:tela-botanica.org:coll', cc_id_collection)";
|
- |
|
266 |
$this->bdd->executer($requete);
|
246 |
}
|
267 |
}
|
247 |
|
268 |
|
248 |
/**
|
269 |
/**
|
249 |
* Crée une collection botanique; la remplit avec les données issues de $ligne en se
|
270 |
* Crée une collection botanique; la remplit avec les données issues de $ligne en se
|
250 |
* servant de $colonnesParNom pour accéder aux valeurs par clés textuelles
|
271 |
* servant de $colonnesParNom pour accéder aux valeurs par clés textuelles
|
Line 258... |
Line 279... |
258 |
$ac = $this->bdd->proteger($ligne[$colonnesBotaParNom['ccb_annotation_classement']]);
|
279 |
$ac = $this->bdd->proteger($ligne[$colonnesBotaParNom['ccb_annotation_classement']]);
|
259 |
$ct = $this->bdd->proteger($ligne[$colonnesBotaParNom['ccb_ce_traitement']]);
|
280 |
$ct = $this->bdd->proteger($ligne[$colonnesBotaParNom['ccb_ce_traitement']]);
|
260 |
$ci = $this->bdd->proteger($ligne[$colonnesBotaParNom['ccb_ce_inventaire']]);
|
281 |
$ci = $this->bdd->proteger($ligne[$colonnesBotaParNom['ccb_ce_inventaire']]);
|
261 |
$ii = $this->bdd->proteger($ligne[$colonnesBotaParNom['ccb_inventaire_info']]);
|
282 |
$ii = $this->bdd->proteger($ligne[$colonnesBotaParNom['ccb_inventaire_info']]);
|
262 |
$aur = $this->bdd->proteger($ligne[$colonnesBotaParNom['ccb_autres_unite_rangement']]);
|
283 |
$aur = $this->bdd->proteger($ligne[$colonnesBotaParNom['ccb_autres_unite_rangement']]);
|
- |
|
284 |
$nph = $this->bdd->proteger($ligne[$colonnesBotaParNom['ccb_nb_planches_herbiers']]);
|
263 |
$tcpt = $this->bdd->proteger($ligne[$colonnesBotaParNom['ccb_truk_conservation_papier_type']]);
|
285 |
$tcpt = $this->bdd->proteger($ligne[$colonnesBotaParNom['ccb_truk_conservation_papier_type']]);
|
Line 264... |
Line 286... |
264 |
|
286 |
|
265 |
// @TODO comment gérer la colonne "Nombre de parts" ? Faut la mettre dans quoi ?
|
287 |
// @TODO comment gérer la colonne "Nombre de parts" ? Faut la mettre dans quoi ?
|
266 |
$requete = "INSERT INTO " . $this->table_collection_bota
|
288 |
$requete = "INSERT INTO " . $this->table_collection_bota
|
267 |
. " (ccb_id_collection, ccb_ce_etat_general, ccb_nbre_echantillon, ccb_specialite, ccb_annotation_classement, ccb_ce_traitement, ccb_ce_inventaire,"
|
289 |
. " (ccb_id_collection, ccb_ce_etat_general, ccb_nbre_echantillon, ccb_specialite, ccb_annotation_classement, ccb_ce_traitement, ccb_ce_inventaire,"
|
268 |
. " ccb_inventaire_info, ccb_autres_unites_rangement, ccb_truk_conservation_papier_type)"
|
290 |
. " ccb_inventaire_info, ccb_autres_unites_rangement, ccb_nb_planches_herbiers, ccb_truk_conservation_papier_type)"
|
269 |
. " VALUES ($id, $ceg, $ne, $spec, $ac, $ct, $ci, $ii, $aur, $tcpt)";
|
291 |
. " VALUES ($id, $ceg, $ne, $spec, $ac, $ct, $ci, $ii, $aur, $nph, $tcpt)";
|
270 |
//echo "REQ INS: $requete\n";
|
292 |
//echo "REQ INS: $requete\n";
|
271 |
$resultat = $this->bdd->executer($requete);
|
293 |
$this->bdd->executer($requete);
|
Line 272... |
Line 294... |
272 |
}
|
294 |
}
|
Line 273... |
Line 295... |
273 |
|
295 |
|
274 |
private function chargerPubli($fichier) {
|
296 |
private function chargerPubli($fichier) {
|
275 |
|
297 |
|
276 |
// vérification existence fichier
|
298 |
// vérification existence fichier
|
277 |
if(!file_exists(Config::get('dossiertmp').$fichier)) {
|
299 |
if(!file_exists(Config::get('dossiertmp').$fichier)) {
|
Line 278... |
Line 300... |
278 |
$erreur = "Le fichier ".Config::get('dossiertmp').$fichier." n'existe pas.";
|
300 |
$erreur = "Le fichier ".Config::get('dossiertmp').$fichier." n'existe pas.";
|
279 |
throw new Exception($erreur);
|
301 |
throw new Exception($erreur);
|
280 |
}
|
302 |
}
|
Line 281... |
Line 303... |
281 |
|
303 |
|
282 |
$pointeur = fopen(Config::get('dossiertmp').$fichier, "r");
|
304 |
$pointeur = fopen(Config::get('dossiertmp').$fichier, "r");
|
283 |
// Chargement de la première colonne (qui contient les noms de colonnes à importer
|
305 |
// Chargement de la première colonne (qui contient les noms de colonnes à importer
|
284 |
$colonnes = fgetcsv($pointeur, 0, ";");
|
306 |
$colonnes = fgetcsv($pointeur, 0, ";");
|
285 |
|
307 |
|
286 |
// Vérification des colonnes obligatoires et en même temps du séparateur
|
308 |
// Vérification des colonnes obligatoires et en même temps du séparateur
|
Line 287... |
Line 309... |
287 |
if(count($colonnes) < 2 || !array_intersect(array_keys($this->colonnes_obligatoires), $colonnes)) {
|
309 |
if(count($colonnes) < 2 || !array_intersect(array_keys($this->colonnes_obligatoires), $colonnes)) {
|
Line 308... |
Line 330... |
308 |
foreach($index_colonnes_refusees as $colonne_refusee) {
|
330 |
foreach($index_colonnes_refusees as $colonne_refusee) {
|
309 |
unset($index_colonnes_importees[$colonne_refusee]);
|
331 |
unset($index_colonnes_importees[$colonne_refusee]);
|
310 |
}
|
332 |
}
|
Line 311... |
Line 333... |
311 |
|
333 |
|
312 |
$roles_a_num_colonnes = array_flip($index_colonnes_importees);
|
334 |
$roles_a_num_colonnes = array_flip($index_colonnes_importees);
|
313 |
|
335 |
|
314 |
// Ajout de la colonne nom complet aux champs de la requête
|
336 |
// Ajout de la colonne nom complet aux champs de la requête
|
Line 315... |
Line 337... |
315 |
$colonnes_importees[] = 'cpu_fmt_nom_complet';
|
337 |
$colonnes_importees[] = 'cpu_fmt_nom_complet';
|
316 |
|
338 |
|
317 |
$nb_publis_inserees = 0;
|
339 |
$nb_publis_inserees = 0;
|
Line 333... |
Line 355... |
333 |
$id_publication = $this->insererPublication($colonnes_importees, $ligne_inseree);
|
355 |
$id_publication = $this->insererPublication($colonnes_importees, $ligne_inseree);
|
334 |
// TODO: quoi faire en cas d'échec pour une publication ?
|
356 |
// TODO: quoi faire en cas d'échec pour une publication ?
|
335 |
if(!empty($id_publication)) {
|
357 |
if(!empty($id_publication)) {
|
336 |
$nb_publis_inserees++;
|
358 |
$nb_publis_inserees++;
|
337 |
// Pour aller plus vite on pourrait éventuellement faire une grosse requete d'ajout des publications
|
359 |
// Pour aller plus vite on pourrait éventuellement faire une grosse requete d'ajout des publications
|
338 |
// à personne à la fin, mais ça nous priverait de faire une transaction (TODO: faire une transaction)
|
360 |
// à personne à la fin, mais ça nous priverait de faire une transaction (TODO: faire une transaction)
|
339 |
$nb_auteurs_lies = $this->insererLiensPublicationAuteurs($id_publication, $ligne[$roles_a_num_colonnes['auteur']]);
|
361 |
$nb_auteurs_lies = $this->insererLiensPublicationAuteurs($id_publication, $ligne[$roles_a_num_colonnes['auteur']]);
|
340 |
}
|
362 |
}
|
Line 341... |
Line 363... |
341 |
|
363 |
|
Line 365... |
Line 387... |
365 |
|
387 |
|
366 |
return $id_publi;
|
388 |
return $id_publi;
|
Line 367... |
Line 389... |
367 |
}
|
389 |
}
|
368 |
|
390 |
|
369 |
protected function insererLiensPublicationAuteurs($id_publication, &$auteurs) {
|
391 |
protected function insererLiensPublicationAuteurs($id_publication, &$auteurs) {
|
370 |
$colonnes = array('cpuap_id_publication', 'cpuap_id_personne', 'cpuap_id_role', 'cpuap_ce_truk_type', 'cpuap_ordre', 'cpuap_ce_meta');
|
392 |
$colonnes = array('cpuap_id_publication', 'cpuap_id_personne', 'cpuap_id_role', 'cpuap_ce_truk_type', 'cpuap_ordre', 'cpuap_ce_meta');
|
Line 371... |
Line 393... |
371 |
$requete = "INSERT IGNORE INTO ".$this->table_publication_a_auteur." ".
|
393 |
$requete = "INSERT IGNORE INTO ".$this->table_publication_a_auteur." ".
|
372 |
"(".implode(",", $colonnes).") VALUES ";
|
394 |
"(".implode(",", $colonnes).") VALUES ";
|
Line 373... |
Line 395... |
373 |
|
395 |
|
374 |
// L'ordre des auteurs commence à 1
|
396 |
// L'ordre des auteurs commence à 1
|
375 |
$ordre_auteur = 1;
|
397 |
$ordre_auteur = 1;
|
Line 376... |
Line 398... |
376 |
|
398 |
|
377 |
// Découpage des différents auteurs
|
399 |
// Découpage des différents auteurs
|
378 |
$auteurs_tab = explode(',', $auteurs);
|
400 |
$auteurs_tab = explode(',', $auteurs);
|
379 |
$auteurs_tab = array_filter($auteurs_tab);
|
401 |
$auteurs_tab = array_filter($auteurs_tab);
|
380 |
|
402 |
|
Line 381... |
Line 403... |
381 |
// Les auteurs sont normalement cités dans l'ordre dans l'import
|
403 |
// Les auteurs sont normalement cités dans l'ordre dans l'import
|
Line 382... |
Line 404... |
382 |
foreach($auteurs_tab as $auteur) {
|
404 |
foreach($auteurs_tab as $auteur) {
|
383 |
// si les infos auteurs sont un tableau dans le cache alors l'id existe bien en base de données
|
405 |
// si les infos auteurs sont un tableau dans le cache alors l'id existe bien en base de données
|
Line 384... |
Line 406... |
384 |
if(is_array($this->cache_auteur[$auteur])) {
|
406 |
if(is_array($this->cache_auteur[$auteur])) {
|
385 |
$id_auteur = $this->cache_auteur[$auteur]['cp_id_personne'];
|
407 |
$id_auteur = $this->cache_auteur[$auteur]['cp_id_personne'];
|
386 |
|
408 |
|
Line 402... |
Line 424... |
402 |
// L'ordre des auteurs est conservé même pour ceux qui n'existe pas dans la bdd
|
424 |
// L'ordre des auteurs est conservé même pour ceux qui n'existe pas dans la bdd
|
403 |
$ordre_auteur++;
|
425 |
$ordre_auteur++;
|
404 |
}
|
426 |
}
|
405 |
}
|
427 |
}
|
Line 406... |
Line 428... |
406 |
|
428 |
|
407 |
protected function creerXmlHisto($donnees) {
|
429 |
protected function creerXmlHisto($donnees) {
|
408 |
// Création du xml de l'enregistrement à historiser
|
430 |
// Création du xml de l'enregistrement à historiser
|
409 |
$info = null;
|
431 |
$info = null;
|
410 |
$xml_tpl = '<?xml version="1.0" encoding="UTF-8" ?>'."\n<resultset>\n<row>\n%s</row>\n</resultset>";
|
432 |
$xml_tpl = '<?xml version="1.0" encoding="UTF-8" ?>'."\n<resultset>\n<row>\n%s</row>\n</resultset>";
|
411 |
$xml = null;
|
433 |
$xml = null;
|
412 |
|
434 |
|
413 |
foreach ($donnees as $cle => $valeur) {
|
435 |
foreach ($donnees as $cle => $valeur) {
|
414 |
// Pour éviter un éventuel double échappement des valeurs
|
436 |
// Pour éviter un éventuel double échappement des valeurs
|
415 |
$valeur = stripslashes($valeur);
|
437 |
$valeur = stripslashes($valeur);
|
416 |
$valeur = trim($valeur, "'");
|
438 |
$valeur = trim($valeur, "'");
|
417 |
if (!is_null($valeur) && $valeur != '') {
|
439 |
if (!is_null($valeur) && $valeur != '') {
|
418 |
$xml .= "<$cle>$valeur</$cle>\n";
|
440 |
$xml .= "<$cle>$valeur</$cle>\n";
|
419 |
}
|
441 |
}
|
420 |
}
|
442 |
}
|
421 |
if ($xml !== null) {
|
443 |
if ($xml !== null) {
|
422 |
$info = sprintf($xml_tpl, $xml);
|
444 |
$info = sprintf($xml_tpl, $xml);
|
423 |
$info = $this->bdd->proteger($info);
|
445 |
$info = $this->bdd->proteger($info);
|
424 |
}
|
446 |
}
|
425 |
|
447 |
|
426 |
return $info;
|
448 |
return $info;
|
427 |
}
|
449 |
}
|
428 |
|
450 |
|
429 |
protected function historiser($table_id, $ligne_cle, $info) {
|
451 |
protected function historiser($table_id, $ligne_cle, $info) {
|
430 |
date_default_timezone_set('Europe/Paris');
|
452 |
date_default_timezone_set('Europe/Paris');
|
431 |
// Pré-traitement des variables
|
453 |
// Pré-traitement des variables
|
432 |
$info = (is_null($info)) ? 'NULL' : $info;
|
454 |
$info = (is_null($info)) ? 'NULL' : $info;
|
433 |
|
455 |
|
434 |
// Historisation (Ajout des méta-données)
|
456 |
// Historisation (Ajout des méta-données)
|
435 |
$requete = 'INSERT INTO coel_meta_historique_ligne '.
|
457 |
$requete = 'INSERT INTO coel_meta_historique_ligne '.
|
436 |
' (cmhl_ce_table, cmhl_cle_ligne, cmhl_enregistrement, cmhl_date_modification, cmhl_ce_modifier_par, cmhl_ce_etat, cmhl_ip, cmhl_session_id) '.
|
458 |
' (cmhl_ce_table, cmhl_cle_ligne, cmhl_enregistrement, cmhl_date_modification, cmhl_ce_modifier_par, cmhl_ce_etat, cmhl_ip, cmhl_session_id) '.
|
437 |
'VALUES ('.
|
459 |
'VALUES ('.
|
438 |
" $table_id, ".
|
460 |
" $table_id, ".
|
439 |
' "'.$ligne_cle.'", '.
|
461 |
' "'.$ligne_cle.'", '.
|
440 |
" $info, ".
|
462 |
" $info, ".
|
441 |
' "'.date('Y-m-d H:i:s', time()).'", '.
|
463 |
' "'.date('Y-m-d H:i:s', time()).'", '.
|
442 |
" $this->id_utilisateur, ".
|
464 |
" $this->id_utilisateur, ".
|
443 |
" ".self::ETAT_AJOUTER.", ".
|
465 |
" ".self::ETAT_AJOUTER.", ".
|
444 |
' "'.$this->ip_utilisateur.'", '.
|
466 |
' "'.$this->ip_utilisateur.'", '.
|
445 |
' "'.$this->id_session.'") ';
|
467 |
' "'.$this->id_session.'") ';
|
446 |
$resultat = $this->bdd->executer($requete);
|
468 |
$resultat = $this->bdd->executer($requete);
|
447 |
return $this->bdd->recupererIdDernierAjout();
|
469 |
return $this->bdd->recupererIdDernierAjout();
|
Line 448... |
Line 470... |
448 |
}
|
470 |
}
|
Line 449... |
Line 471... |
449 |
|
471 |
|
Line 510... |
Line 532... |
510 |
}
|
532 |
}
|
511 |
}
|
533 |
}
|
Line 512... |
Line 534... |
512 |
|
534 |
|
513 |
return implode(', ', $auteurs_fmt);
|
535 |
return implode(', ', $auteurs_fmt);
|
514 |
}
|
536 |
}
|
515 |
|
537 |
|
516 |
private function obtenirInfosAuteur($auteur_intitule) {
|
538 |
private function obtenirInfosAuteur($auteur_intitule) {
|
517 |
$retour = $auteur_intitule;
|
539 |
$retour = $auteur_intitule;
|
518 |
// Si on déjà recherché et trouvé (ou non l'auteur)
|
540 |
// Si on déjà recherché et trouvé (ou non l'auteur)
|
519 |
if(isset($this->cache_auteur[$auteur_intitule])) {
|
541 |
if(isset($this->cache_auteur[$auteur_intitule])) {
|
520 |
// On renvoie son nom complet formaté s'il existe en bdd ou sinon
|
542 |
// On renvoie son nom complet formaté s'il existe en bdd ou sinon
|
521 |
// le nom qui a été donné dans la feuille csv
|
543 |
// le nom qui a été donné dans la feuille csv
|
522 |
$retour = !empty($this->cache_auteur[$auteur_intitule]['cp_fmt_nom_complet']) ?
|
544 |
$retour = !empty($this->cache_auteur[$auteur_intitule]['cp_fmt_nom_complet']) ?
|
Line 543... |
Line 565... |
543 |
$retour = $auteur_intitule;
|
565 |
$retour = $auteur_intitule;
|
544 |
$this->cache_auteur[$auteur_intitule] = $auteur_intitule;
|
566 |
$this->cache_auteur[$auteur_intitule] = $auteur_intitule;
|
545 |
}
|
567 |
}
|
546 |
}
|
568 |
}
|
Line 547... |
Line 569... |
547 |
|
569 |
|
548 |
return $retour;
|
570 |
return $retour;
|
Line 549... |
Line 571... |
549 |
}
|
571 |
}
|
Line 550... |
Line 572... |
550 |
|
572 |
|
Line 606... |
Line 628... |
606 |
}
|
628 |
}
|
Line 607... |
Line 629... |
607 |
|
629 |
|
608 |
return $auteurs_formates;
|
630 |
return $auteurs_formates;
|
Line 609... |
Line 631... |
609 |
}
|
631 |
}
|
610 |
|
632 |
|
611 |
// http://stackoverflow.com/questions/6311779/finding-cartesian-product-with-php-associative-arrays
|
633 |
// http://stackoverflow.com/questions/6311779/finding-cartesian-product-with-php-associative-arrays
|
612 |
function cartesian($input) {
|
634 |
function cartesian($input) {
|
613 |
// filter out empty values
|
635 |
// filter out empty values
|
614 |
$input = array_filter($input);
|
636 |
$input = array_filter($input);
|
615 |
|
637 |
|
616 |
$result = array(array());
|
638 |
$result = array(array());
|
617 |
|
639 |
|
618 |
foreach ($input as $key => $values) {
|
640 |
foreach ($input as $key => $values) {
|
619 |
$append = array();
|
641 |
$append = array();
|
620 |
|
642 |
|
621 |
foreach($result as $product) {
|
643 |
foreach($result as $product) {
|
622 |
foreach($values as $item) {
|
644 |
foreach($values as $item) {
|
623 |
$product[$key] = $item;
|
645 |
$product[$key] = $item;
|
624 |
$append[] = $product;
|
646 |
$append[] = $product;
|
625 |
}
|
647 |
}
|
626 |
}
|
648 |
}
|
627 |
|
649 |
|
628 |
$result = $append;
|
650 |
$result = $append;
|
629 |
}
|
651 |
}
|
630 |
|
652 |
|
631 |
return $result;
|
653 |
return $result;
|
632 |
}
|
654 |
}
|
633 |
}
|
655 |
}
|