| Line 631... |
Line 631... |
| 631 |
$masque = $this->recupererMasquePrincipal();
|
631 |
$masque = $this->recupererMasquePrincipal();
|
| 632 |
if ($masque && isset($this->parametres[$masque[0]] /* à éclaircir */ ) && !isset($this->parametres['retour.tri'])) {
|
632 |
if ($masque && isset($this->parametres[$masque[0]] /* à éclaircir */ ) && !isset($this->parametres['retour.tri'])) {
|
| 633 |
$resultat = $this->trierRechercheFloue($this->parametres[$masque[0]], $resultat, $masque[1]);
|
633 |
$resultat = $this->trierRechercheFloue($this->parametres[$masque[0]], $resultat, $masque[1]);
|
| 634 |
}
|
634 |
}
|
| Line -... |
Line 635... |
| - |
|
635 |
|
| - |
|
636 |
// Tri à la mode du CeL : lexicographique puis noms retenus (retour.tri = "alpharet")
|
| - |
|
637 |
if (isset($this->parametres['retour.tri']) && ($this->parametres['retour.tri'] == "alpharet")) {
|
| - |
|
638 |
usort($resultat, array($this, 'genrePuisNomsRetenusEnTete'));
|
| - |
|
639 |
}
|
| 635 |
|
640 |
|
| 636 |
$table_retour_json['entete'] = $this->afficherEnteteResultat('/'.$this->service);
|
641 |
$table_retour_json['entete'] = $this->afficherEnteteResultat('/'.$this->service);
|
| 637 |
$table_retour_json['resultat'] = $this->remplirJsonResultat($resultat);
|
642 |
$table_retour_json['resultat'] = $this->remplirJsonResultat($resultat);
|
| 638 |
return $table_retour_json;
|
643 |
return $table_retour_json;
|
| Line -... |
Line 644... |
| - |
|
644 |
}
|
| - |
|
645 |
|
| - |
|
646 |
// Trie les éléments du tableau de résultats : le genre en tête, puis les noms retenus, puis le reste
|
| - |
|
647 |
// mais à partir du jeu de données retourné par SQL (indépendents du statut "retenu")
|
| - |
|
648 |
private function genrePuisNomsRetenusEnTete($a, $b) {
|
| - |
|
649 |
// On pourrait utiliser l'indice ['retenu'] mais il contient parfois "absent", qui est dur à traiter
|
| - |
|
650 |
$aEstRetenu = ($a['num_nom'] == $a['num_nom_retenu']);
|
| - |
|
651 |
$bEstRetenu = ($b['num_nom'] == $b['num_nom_retenu']);
|
| - |
|
652 |
$retour = 0;
|
| - |
|
653 |
|
| - |
|
654 |
// les noms retenus en premier ("inférieurs")
|
| - |
|
655 |
if ($aEstRetenu) {
|
| - |
|
656 |
if (! $bEstRetenu) {
|
| - |
|
657 |
$retour = -1;
|
| - |
|
658 |
}
|
| - |
|
659 |
} else {
|
| - |
|
660 |
if ($bEstRetenu) {
|
| - |
|
661 |
$retour = 1;
|
| - |
|
662 |
}
|
| - |
|
663 |
}
|
| - |
|
664 |
|
| - |
|
665 |
// en cas d'égalité on conserve le tri lexicographique - devrait faire sortir le genre en première position
|
| - |
|
666 |
// car il ne contient pas le nom d'auteur
|
| - |
|
667 |
if ($retour == 0) {
|
| - |
|
668 |
$retour = strcasecmp($a['nom_sci'], $b['nom_sci']);
|
| - |
|
669 |
}
|
| - |
|
670 |
|
| - |
|
671 |
return $retour;
|
| 639 |
}
|
672 |
}
|
| 640 |
|
673 |
|
| 641 |
public function remplirJsonResultat($resultat) {
|
674 |
public function remplirJsonResultat($resultat) {
|
| 642 |
$champs = null;
|
675 |
$champs = null;
|
| 643 |
if (array_key_exists('retour.champs', $this->parametres)) {
|
676 |
if (array_key_exists('retour.champs', $this->parametres)) {
|