Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 1040 | Rev 1113 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1040 Rev 1067
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)) {