189,7 → 189,6 |
' FROM '.$this->table |
.$this->formerRequeteCondition() |
.$this->formerRequeteLimite(); |
|
return $requete; |
} |
|
335,32 → 334,38 |
if (isset($url['suivant']) && $url['suivant'] != '') { |
$table_retour_json['entete']['href.suivant'] = $url['suivant']; |
} |
|
foreach ($resultat as $tab) { |
|
foreach ($resultat as &$tab) { |
$resultat_json[$tab['num_nom_vernaculaire']]['id'] = $tab['id']; |
$resultat_json[$tab['num_nom_vernaculaire']]['nom_vernaculaire'] = $tab['nom_vernaculaire']; |
$resultat_json[$tab['num_nom_vernaculaire']]['langue.code'] = $tab['code_langue']; |
$resultat_json[$tab['num_nom_vernaculaire']]['code_langue'] = $tab['code_langue']; |
$resultat_json[$tab['num_nom_vernaculaire']]['taxon.code'] = 'bdtfx.nt:'.$tab['num_taxon']; |
if ($this->retour_format == 'max') { |
$resultat_json[$tab['num_nom_vernaculaire']]['taxon'] = $tab['num_taxon']; |
$resultat_json[$tab['num_nom_vernaculaire']]['nom_retenu.code'] = $tab['num_taxon']; |
$this->taxons[] = $tab['num_taxon']; // utiliser pour chercher les noms latins |
$this->taxons[] = $tab['num_taxon']; // utilisé pour chercher les noms latins |
$resultat_json[$tab['num_nom_vernaculaire']]['href'] = $this->ajouterHref('noms-vernaculaires', $tab['id']); |
$resultat_json[$tab['num_nom_vernaculaire']] = $this->ajouterChampsOntologieLigneResultat($tab); |
} |
|
if($this->retour_format == 'max') { |
//TODO: la fonction afficherTaxonsAttributions itere sur tout le tableau de résultats alors qu'elle ne devrait |
// traiter qu'une ligne à la fois (i.e.: la ligne en cours dans $tab), ce qui serait bien plus rapide |
$resultat_json = $this->afficherTaxonsAttributions($resultat_json); |
$resultat_json[$tab['num_nom_vernaculaire']] = $this->afficherChampsSupplementairesOntologie($tab); |
} |
|
if ($this->retour_format == 'max') { |
// On est obligé de faire un deuxième boucle pour demander tous les taxons présents en une |
// fois et les attribuer aux noms car c'est beaucoup plus rapide |
$noms_sci = $this->recupererNomTaxons(); |
foreach ($resultat_json as &$tab) { |
$tab = $this->ajouterTaxonsAttributionsLigneResultat(&$resultat_json[$tab['num_nom_vernaculaire']], &$noms_sci); |
} |
} |
|
uasort($resultat_json, array($this,'trierLigneTableau')); |
$table_retour_json['resultat'] = $resultat_json; |
return $table_retour_json; |
} |
|
public function afficherChampsSupplementairesOntologie($ligne_resultat) { |
public function ajouterChampsOntologieLigneResultat($ligne_resultat) { |
|
$intitule = ''; |
foreach($this->champ_infos as $cle => $champs_supplementaires) { |
extract($champs_supplementaires); |
$valeur_recherche = ''; |
367,12 → 372,15 |
switch($cle) { |
case 'taxon': |
$valeur_recherche = $ligne_resultat['num_taxon']; |
$intitule = 'taxon.code'; |
break; |
case 'genre': |
$valeur_recherche = $ligne_resultat['num_genre']; |
$intitule = 'genre'; |
break; |
case 'conseil_emploi': |
$valeur_recherche = $ligne_resultat['num_statut']; |
$intitule = 'conseil_emploi'; |
break; |
} |
$code_valeur = ''; |
380,29 → 388,53 |
$url = $this->ajouterHrefAutreProjet($service, $ressource, $valeur_recherche, $projet); |
$code_valeur = $this->chercherSignificationCode($url, $nom); |
} |
$ligne_resultat[$cle] = $code_valeur; |
$ligne_resultat[$intitule] = $code_valeur; |
} |
return $ligne_resultat; |
} |
|
public function afficherTaxonsAttributions($resultat) { |
$nom_sci = $this->recupererNomTaxons(); |
foreach ($resultat as $num=>$tab) { |
if (isset($nom_sci[$tab['taxon']])) { |
$resultat[$num]['nom_retenu.code'] = $nom_sci[$tab['taxon']]['id']; |
$resultat[$num]['taxon'] = $nom_sci[$tab['taxon']]['nom_sci']; |
/** |
* Fonction qui ajoute les attributions à une ligne de résultats |
* |
* @param array $ligne_tableau_resultat |
* @param array $ligne_originale |
* @param array $nom_sci |
*/ |
public function ajouterTaxonsAttributionsLigneResultat($ligne_tableau_resultat, $noms_sci) { |
if (isset($nom_sci[$ligne_tableau_resultat['taxon.code']])) { |
$ligne_tableau_resultat['nom_retenu.code'] = $nom_sci[$ligne_tableau_resultat['taxon']]['id']; |
$ligne_tableau_resultat['taxon'] = $nom_sci[$ligne_tableau_resultat['taxon']]['nom_sci']; |
} |
return $ligne_tableau_resultat; |
} |
|
private function trierLigneTableau($a, $b) { |
$retour = 0; |
|
if ($a[$this->champ_tri] == $b[$this->champ_tri]) { |
$retour = 0; |
} |
|
if($this->champ_tri == 'code_langue') { |
if ($a[$this->champ_tri] == 'fra' && $b[$this->champ_tri] != 'fra') { |
$retour = ($this->direction_tri == 'asc') ? -1 : 1; |
} else if ($a[$this->champ_tri] != 'fra' && $b[$this->champ_tri] == 'fra') { |
$retour = ($this->direction_tri == 'asc') ? 1 : -1; |
} else { |
$retour = $this->comparerChaineSelonDirectionTri($a[$this->champ_tri], $b[$this->champ_tri]); |
} |
} else { |
$retour = $this->comparerChaineSelonDirectionTri($a[$this->champ_tri], $b[$this->champ_tri]); |
} |
return $resultat; |
return $retour; |
} |
|
private function trierLigneTableau($a, $b) { |
if ($a[$this->champ_tri] == $b[$this->champ_tri]) return 0; |
private function comparerChaineSelonDirectionTri($a, $b) { |
if($this->direction_tri == 'asc') { |
return ($a[$this->champ_tri] < $b[$this->champ_tri]) ? -1 : 1; |
return ($a < $b) ? -1 : 1; |
} else { |
return ($a[$this->champ_tri] > $b[$this->champ_tri]) ? -1 : 1; |
} |
return ($a > $b) ? -1 : 1; |
} |
} |
|
// formatage de la reponse /id ss la forme |