Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

Ignore whitespace Rev 1040 → Rev 1067

/trunk/services/modules/0.1/bdtxa/Noms.php
645,11 → 645,44
//$resultat = $this->trierRechercheFloue($this->parametres[$index], $resultat, $masque[1]);
}
 
// Tri à la mode du CeL : lexicographique puis noms retenus (retour.tri = "alpharet")
if (isset($this->parametres['retour.tri']) && ($this->parametres['retour.tri'] == "alpharet")) {
usort($resultat, array($this, 'genrePuisNomsRetenusEnTete'));
}
 
$table_retour_json['entete'] = $this->remplirJsonEntete();
$table_retour_json['resultat'] = $this->remplirJsonResultat($resultat);
return $table_retour_json;
}
 
// Trie les éléments du tableau de résultats : le genre en tête, puis les noms retenus, puis le reste
// mais à partir du jeu de données retourné par SQL (indépendents du statut "retenu")
private function genrePuisNomsRetenusEnTete($a, $b) {
// On pourrait utiliser l'indice ['retenu'] mais il contient parfois "absent", qui est dur à traiter
$aEstRetenu = ($a['num_nom'] == $a['num_nom_retenu']);
$bEstRetenu = ($b['num_nom'] == $b['num_nom_retenu']);
$retour = 0;
 
// les noms retenus en premier ("inférieurs")
if ($aEstRetenu) {
if (! $bEstRetenu) {
$retour = -1;
}
} else {
if ($bEstRetenu) {
$retour = 1;
}
}
 
// en cas d'égalité on conserve le tri lexicographique - devrait faire sortir le genre en première position
// car il ne contient pas le nom d'auteur
if ($retour == 0) {
$retour = strcasecmp($a['nom_sci'], $b['nom_sci']);
}
 
return $retour;
}
 
public function remplirJsonResultat($resultat) {
$champs = null;
if (array_key_exists('retour.champs', $this->parametres)) {