Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

Ignore whitespace Rev 279 → Rev 280

/trunk/services/modules/0.1/nvjfl/NomsVernaculaires.php
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