Line 121... |
Line 121... |
121 |
public function verifierParamChamps($param, $val) {
|
121 |
public function verifierParamChamps($param, $val) {
|
122 |
$this->recupererTableSignification('correspondance_champs,champs_api,champs_comp');
|
122 |
$this->recupererTableSignification('correspondance_champs,champs_api,champs_comp');
|
123 |
$champs_demandes = explode(',', $val);
|
123 |
$champs_demandes = explode(',', $val);
|
124 |
$champs_verifies = array();
|
124 |
$champs_verifies = array();
|
125 |
$champs_api = array_flip($this->champs_api);
|
125 |
$champs_api = array_flip($this->champs_api);
|
126 |
$champs_supp = array('nom_retenu_complet'=>'num_nom_retenu', 'basionyme_complet'=>'basionyme');
|
126 |
$champs_supp = array('nom_retenu_complet'=>'num_nom_retenu', 'num_basionyme_complet'=>'num_basionyme');
|
127 |
$champs_api = array_merge($champs_api, $champs_supp);
|
127 |
$champs_api = array_merge($champs_api, $champs_supp);
|
128 |
foreach ($champs_demandes as $champ) {
|
128 |
foreach ($champs_demandes as $champ) {
|
129 |
if (array_key_exists($champ, $champs_api)) {
|
129 |
if (array_key_exists($champ, $champs_api)) {
|
130 |
$champs_verifies[] = $champs_api[$champ];
|
130 |
$champs_verifies[] = $champs_api[$champ];
|
131 |
}
|
131 |
}
|
Line 214... |
Line 214... |
214 |
}
|
214 |
}
|
215 |
}
|
215 |
}
|
216 |
}
|
216 |
}
|
Line 217... |
Line 217... |
217 |
|
217 |
|
218 |
public function traiterRessourceIdSynonymie() {
|
218 |
public function traiterRessourceIdSynonymie() {
|
219 |
// SELECT num_nom, nom_sci, num_nom_retenu, basionyme FROM bdtfx_v2_00 WHERE num_nom = X LIMIT 0,100;
|
219 |
// SELECT num_nom, nom_sci, num_nom_retenu, num_basionyme FROM bdtfx_v2_00 WHERE num_nom = X LIMIT 0,100;
|
220 |
$this->format_reponse .= '/synonymie';
|
220 |
$this->format_reponse .= '/synonymie';
|
221 |
if (strrpos($this->requete_champ, ', basionyme') === false) {
|
221 |
if (strrpos($this->requete_champ, ', num_basionyme') === false) {
|
222 |
$this->requete_champ .= ', basionyme ';
|
222 |
$this->requete_champ .= ', num_basionyme ';
|
223 |
}
|
223 |
}
|
224 |
if (strrpos($this->requete_champ, ', num_type') === false) {
|
224 |
if (strrpos($this->requete_champ, ', num_type') === false) {
|
225 |
$this->requete_champ .= ', num_type ';
|
225 |
$this->requete_champ .= ', num_type ';
|
- |
|
226 |
}
|
226 |
}
|
227 |
$this->requete_champ .= ', source_biblio ';
|
227 |
$this->requete_condition[0] = 'num_nom_retenu = '.
|
228 |
$this->requete_condition[0] = 'num_nom_retenu = '.
|
228 |
'(SELECT num_nom_retenu FROM '.$this->table.' WHERE '.$this->requete_condition[0].')';
|
229 |
'(SELECT num_nom_retenu FROM '.$this->table.' WHERE '.$this->requete_condition[0].')';
|
Line 229... |
Line 230... |
229 |
}
|
230 |
}
|
Line 241... |
Line 242... |
241 |
if (preg_match('/^flore_.*$/', $champ)) {
|
242 |
if (preg_match('/^flore_.*$/', $champ)) {
|
242 |
$champ_flores .= ', '.$champ;
|
243 |
$champ_flores .= ', '.$champ;
|
243 |
}
|
244 |
}
|
244 |
}
|
245 |
}
|
245 |
$this->format_reponse .= '/flores';
|
246 |
$this->format_reponse .= '/flores';
|
246 |
$this->requete_champ = 'num_nom'.$champ_flores;
|
247 |
$this->requete_champ = 'num_nom,num_nom_retenu,nom_sci,flores'.$champ_flores;
|
- |
|
248 |
$this->requete_condition = null;
|
- |
|
249 |
$this->requete_condition[] = "num_nom_retenu = ".$this->ressources[0]." OR num_nom = ".$this->ressources[0];
|
247 |
}
|
250 |
}
|
Line 248... |
Line 251... |
248 |
|
251 |
|
249 |
public function traiterRessourceStatsRangs() {
|
252 |
public function traiterRessourceStatsRangs() {
|
250 |
// SELECT count(*) as nombre, rang FROM bdtfx_v2_00 [WHERE rang = 290] GROUP BY rang ORDER BY rang;
|
253 |
// SELECT count(*) as nombre, rang FROM bdtfx_v2_00 [WHERE rang = 290] GROUP BY rang ORDER BY rang;
|
Line 394... |
Line 397... |
394 |
break;
|
397 |
break;
|
395 |
case 'noms/id/relations/homonymie' :
|
398 |
case 'noms/id/relations/homonymie' :
|
396 |
$reponse = $this->formaterIdHomonymie($resultat);
|
399 |
$reponse = $this->formaterIdHomonymie($resultat);
|
397 |
break;
|
400 |
break;
|
398 |
case 'noms/id/relations/flores' : //ds CommunsNomsTaxons
|
401 |
case 'noms/id/relations/flores' : //ds CommunsNomsTaxons
|
399 |
$reponse = $this->formaterIdFlores($resultat[0]);
|
402 |
$reponse = $this->formaterIdFlores($resultat);
|
400 |
break;
|
403 |
break;
|
401 |
case 'noms/stats/annees' : //ds CommunNomsTaxons
|
404 |
case 'noms/stats/annees' : //ds CommunNomsTaxons
|
402 |
$reponse = $this->formaterStatsAnnee($resultat);
|
405 |
$reponse = $this->formaterStatsAnnee($resultat);
|
403 |
break;
|
406 |
break;
|
404 |
case 'noms/stats/rangs' : //ds CommunNomsTaxons
|
407 |
case 'noms/stats/rangs' : //ds CommunNomsTaxons
|
Line 483... |
Line 486... |
483 |
$retour_id_syn['resultat'] = array();
|
486 |
$retour_id_syn['resultat'] = array();
|
Line 484... |
Line 487... |
484 |
|
487 |
|
485 |
// résultat contient aussi l'original
|
488 |
// résultat contient aussi l'original
|
486 |
if(count($resultat) > 1) {
|
489 |
if(count($resultat) > 1) {
|
- |
|
490 |
//on remplit d'abord l'entete du resultat
|
- |
|
491 |
$this->table_retour['id'] = $this->ressources[0];
|
- |
|
492 |
$this->afficherEnteteResultat('/'.$this->service.'/'.$this->ressources[0].'/relations/synonymie');
|
- |
|
493 |
$retour_id_syn['entete'] = $this->table_retour;
|
487 |
//on remplit d'abord l'entete du resultat
|
494 |
$this->table_retour = array();
|
488 |
foreach ($resultat as $tab) {
|
495 |
foreach ($resultat as $tab) {
|
489 |
//pour chaque basionyme, on recupère le résultat : num_nom, nom_sci, basionyme et num_nom_retenu :
|
496 |
//pour chaque basionyme, on recupère le résultat : num_nom, nom_sci, num_basionyme et num_nom_retenu :
|
490 |
$this->resultat_req = $tab;
|
497 |
$this->resultat_req = $tab;
|
491 |
$num = $tab['num_nom'];
|
498 |
$num = $tab['num_nom'];
|
492 |
$this->afficherNomHrefRetenu($tab, $num);
|
499 |
$this->afficherNomHrefRetenu($tab, $num);
|
493 |
$this->afficherDonnees('basionyme', $tab['basionyme']);
|
500 |
$this->afficherDonnees('num_basionyme', $tab['num_basionyme']);
|
- |
|
501 |
$this->afficherDonnees('num_type', $tab['num_type']);
|
494 |
$this->afficherDonnees('num_type', $tab['num_type']);
|
502 |
$this->afficherDonnees('source_biblio', $tab['source_biblio']);
|
495 |
$retour_id_syn['resultat'][$num] = $this->table_retour;
|
503 |
$retour_id_syn['resultat'][$num] = $this->table_retour;
|
496 |
$this->table_retour = array();
|
504 |
$this->table_retour = array();
|
497 |
}
|
505 |
}
|
498 |
if (!isset($retour_id_syn['resultat']) && !in_array('nom_retenu N.D.', $retour_id_syn)) {
|
506 |
if (!isset($retour_id_syn['resultat']) && !in_array('nom_retenu N.D.', $retour_id_syn)) {
|
Line 527... |
Line 535... |
527 |
$retour_id_hom = null;
|
535 |
$retour_id_hom = null;
|
528 |
}
|
536 |
}
|
529 |
return $retour_id_hom;
|
537 |
return $retour_id_hom;
|
530 |
}
|
538 |
}
|
Line 531... |
Line -... |
531 |
|
- |
|
532 |
public function obtenirSynonymesParNumNomAvecInfosFlore($num_nom, $version='1_02') {
|
- |
|
533 |
|
- |
|
534 |
$champs_flore = 'flore_bonnier_num, flore_bonnier_rem,'.
|
- |
|
535 |
'flore_cnrs_num, flore_cnrs_rem '.
|
- |
|
536 |
'flore_fe_num, flore_fe_rem '.
|
- |
|
537 |
'flore_coste_num, flore_coste_rem '.
|
- |
|
538 |
'flore_fh_num, flore_fh_rem '.
|
- |
|
539 |
'flore_fournier_num, flore_fournier_rem';
|
- |
|
540 |
|
- |
|
541 |
$requete = 'SELECT num_nom, nom_sci, '.$champs_flore.' '.
|
- |
|
542 |
'FROM '.$this->table.' '.
|
- |
|
543 |
'WHERE num_nom_retenu = '.
|
- |
|
544 |
'('.
|
- |
|
545 |
'SELECT num_nom_retenu FROM '.$this->table.' WHERE num_nom = "'.$num_nom.'"'.
|
- |
|
Line 546... |
Line -... |
546 |
')';
|
- |
|
547 |
|
- |
|
548 |
return $this->getBdd()->recupererTous($requete . ' -- ' . __FILE__ . ':' . __LINE__ );
|
- |
|
549 |
}
|
539 |
|
550 |
|
540 |
|
551 |
public function formaterIdFlores($resultat) {
|
- |
|
552 |
$this->recupererTableSignification('correspondance_champs,champs_api,champs_comp,noms_projets');
|
- |
|
553 |
$this->resultat_req = $resultat;
|
- |
|
554 |
$id = array_shift($resultat);
|
- |
|
555 |
$reponse['entete']['id'] = $id;
|
541 |
public function formaterIdFlores($synonymes_flores) {//print_r($resultat);
|
556 |
$synonymes_flores = $this->obtenirSynonymesParNumNomAvecInfosFlore($this->ressources[0]);
|
542 |
$this->recupererTableSignification('noms_projets');
|
557 |
if(is_array($synonymes_flores)) {
|
543 |
if (is_array($synonymes_flores)) {//print_r($synonymes_flores);
|
558 |
foreach ($synonymes_flores as $synonyme) {
|
544 |
foreach ($synonymes_flores as $synonyme) {
|
- |
|
545 |
if ($synonyme['num_nom'] === $synonyme['num_nom_retenu']) {
|
- |
|
546 |
$reponse['entete']['id'] = $synonyme['num_nom'];
|
- |
|
547 |
}
|
- |
|
548 |
foreach ($this->noms_projets as $flore => $valeur) {
|
- |
|
549 |
if (isset($synonyme[$flore.'_num']) && $synonyme[$flore.'_num'] != '') {
|
- |
|
550 |
$presence[$valeur] = $flore;
|
- |
|
551 |
$this->table_retour[$flore]['type'] = "code";
|
- |
|
552 |
$this->afficherInfosFlore($synonyme, $flore, $valeur, '_num');
|
- |
|
553 |
} else if (isset($synonyme[$flore.'_page']) && $synonyme[$flore.'_page'] != '') {
|
- |
|
554 |
$this->table_retour[$flore]['type'] = "page";
|
- |
|
555 |
$this->afficherInfosFlore($synonyme, $flore, $valeur, '_page');
|
- |
|
556 |
} else if (isset($synonyme[$flore]) && $synonyme[$flore] != '') {
|
- |
|
557 |
$this->table_retour[$flore]['type'] = "page";
|
- |
|
558 |
$this->afficherInfosFlore($synonyme, $flore, $valeur, 'page');
|
559 |
$nom_sci = $synonyme['nom_sci'];
|
559 |
}
|
- |
|
560 |
}
|
560 |
$num_nom = $synonyme['num_nom'];
|
561 |
if ($synonyme['flores'] != "") {
|
- |
|
562 |
$this->recupererTableSignification('correspondance_flores');
|
561 |
unset($synonyme['nom_sci']);
|
563 |
$flores = explode(',', $synonyme['flores']);
|
562 |
unset($synonyme['num_nom']);
|
564 |
$projet = array_flip($this->noms_projets);
|
- |
|
565 |
foreach ($flores as $b =>$code) {
|
563 |
foreach ($synonyme as $flores => $valeur) {
|
566 |
$code = trim($code);
|
- |
|
567 |
if (isset($this->correspondance_flores[$code]) && !isset($presence[$this->correspondance_flores[$code]])) {
|
- |
|
568 |
$this->table_retour[$projet[$this->correspondance_flores[$code]]]['nom_flore'] = $this->correspondance_flores[$code];
|
564 |
if ($valeur != '' && $valeur != '0') {
|
569 |
}
|
565 |
$this->afficherInfosFlore($synonyme, $flores, $valeur, $nom_sci, $num_nom);
|
570 |
|
566 |
}
|
571 |
}
|
567 |
}
|
572 |
}
|
Line 575... |
Line 580... |
575 |
$reponse = null;
|
580 |
$reponse = null;
|
576 |
}
|
581 |
}
|
577 |
return $reponse;
|
582 |
return $reponse;
|
578 |
}
|
583 |
}
|
Line 579... |
Line -... |
579 |
|
- |
|
580 |
public function getNomCompletFlore($flore) {
|
- |
|
581 |
return Config::get($flore.'_texte');
|
- |
|
Line 582... |
Line 584... |
582 |
}
|
584 |
|
583 |
|
585 |
|
584 |
public function afficherInfosFlore(&$resultat, $flores, $valeur, $nom_sci, $num_nom) {
|
586 |
public function afficherInfosFlore($synonyme, $flore, $nom_flore, $type) {
|
585 |
$flore = substr($flores,0,strrpos($flores, '_'));
|
- |
|
586 |
$projet = $this->noms_projets[$flore];
|
- |
|
587 |
|
- |
|
588 |
//TODO voir si l'on peut factoriser les affectations à la table retour
|
587 |
$statuts = array('R'=> 'nom retenu', 'S' => 'synonyme','r' => 'nom retenu', 'c' => 'cité hors clé', 's' => 'synonyme d’un nom retenu', 'cs' => 'synonyme d’un nom cité hors clé', 'i' => 'nom d’un taxon inclus dans un autre', 'is' => 'syn d’un nom d’un taxon inclus dans un autre');
|
589 |
// et simplifier ce gros pavé
|
- |
|
590 |
if (strrpos($flores, 'num') !== false) {
|
588 |
preg_match('/^([0-9]+)(.*)?$/', $synonyme[$flore.$type], $match);
|
591 |
if (preg_match('/^([0-9]+)(?:[.]syn[^a-z]*|(.*))?$/', $valeur, $match)) {
|
- |
|
592 |
$this->table_retour[$num_nom][$flore]['id'] = $match[1];
|
589 |
$this->table_retour[$flore]['nom_flore'] = $nom_flore;
|
593 |
if ($projet == 'coste') {
|
- |
|
594 |
$this->table_retour[$num_nom][$flore]['href'] = $this->ajouterHrefAutreProjet('noms', 'nn_coste:', $match[1], $projet);
|
590 |
$this->table_retour[$flore]['num'][$synonyme[$flore.$type]]['id'] = $match['1'];
|
595 |
}
|
591 |
$this->table_retour[$flore]['num'][$synonyme[$flore.$type]]['num_nom'] = $synonyme['num_nom'];
|
596 |
if (isset($match[2]) && $match[2] != '') $this->table_retour[$num_nom][$flore]['cle'] = $match[2];
|
592 |
$this->table_retour[$flore]['num'][$synonyme[$flore.$type]]['nom_sci'] = $synonyme['nom_sci'];
|
597 |
$this->table_retour[$num_nom][$flore]['nom_flore'] = $this->getNomCompletFlore($flore);
|
593 |
if (isset($synonyme[$flore.'_rem']) && $synonyme[$flore.'_rem'] != '') {
|
598 |
$this->table_retour[$num_nom][$flore]['nom_sci'] = $nom_sci;
|
594 |
$this->table_retour[$flore]['num'][$synonyme[$flore.$type]]['remarques'] = $synonyme[$flore.'_rem'];
|
599 |
}
|
- |
|
600 |
if (isset($resultat[$flore.'_rem']) && !empty($resultat[$flore.'_rem'])) {
|
595 |
}
|
601 |
$this->table_retour[$num_nom][$flore]['remarque'] = $resultat[$flore.'_rem'];
|
- |
|
602 |
$this->table_retour[$num_nom][$flore]['nom_flore'] = $this->getNomCompletFlore($flore);
|
- |
|
603 |
$this->table_retour[$num_nom][$flore]['nom_sci'] = $nom_sci;
|
596 |
if ($flore == flore_coste) {
|
604 |
unset($resultat[$flore.'_rem']);
|
597 |
$this->table_retour[$flore]['num'][$synonyme[$flore.$type]]['href'] = $this->ajouterHrefAutreProjet('noms', 'nn_coste:', $match[1], $projet);
|
605 |
}
|
- |
|
606 |
} elseif (strrpos($flores,'belge') !== false) {
|
- |
|
607 |
if (preg_match('/^([0-9]+) (R|S)?$/', $valeur, $match)) {
|
598 |
}
|
608 |
if (isset($match[2])) $type = ($match[2] == 'R') ? 'taxons' : 'synonyme';
|
599 |
if (isset($statuts[trim($match[2])])) {
|
609 |
$this->table_retour[$num_nom][$flore]['page'] = $match[1];
|
- |
|
610 |
$this->table_retour[$num_nom][$flore]['type'] = $type;
|
600 |
$this->table_retour[$flore]['num'][$synonyme[$flore.$type]]['statut'] = $statuts[trim($match[2])];
|
611 |
$this->table_retour[$num_nom][$flore]['nom_flore'] = $this->getNomCompletFlore($flore);
|
- |
|
612 |
$this->table_retour[$num_nom][$flore]['nom_sci'] = $nom_sci;
|
601 |
} else if(trim($match[2]) != "") {
|
613 |
}
|
602 |
$this->table_retour[$flore]['num'][$synonyme[$flore.$type]]['statut'] = trim($match[2]);
|
Line 614... |
Line 603... |
614 |
}
|
603 |
}
|