Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1862 → Rev 1863

/trunk/services/bibliotheque/Sql.php
390,7 → 390,7
if (isset($this->parametres['tri'])) {
$tri = $this->parametres['tri'];
 
if (isset($this->parametres['protocole']) && ($tri == 'votes' || $tri == 'points')) {
if (isset($this->parametres['protocole']) && ($tri == 'moyenne-arithmetique' || $tri == 'points')) {
// $this->parametres['protocole'] *est* défini (cf Outils::filtrerUrlsParams...())
$sqlTpl = 'LEFT JOIN del_image_stat dis ON vdi.id_image = dis.ce_image AND dis.ce_protocole = %d';
$triSql = sprintf($sqlTpl, $this->parametres['protocole']);
485,29 → 485,26
 
/**
* Partie spécifique à PictoFlora:
* génération de la clause ORDER BY (génère la valeur de la clef orderby' de $req)
* nécessaire ? tableau sprintf(key (tri) => value (ordre), key => value ...).
* Cependant il est impensable de joindre sur un AVG() des valeurs des votes pour
* *chaque* couple (id_image, protocole) de la base afin de trouver les images
* les "mieux notées", ou bien les images ayant le "plus de tags" (COUNT())
* Attention : si le critère de tri n'est pas suffisant, les résultats affichés peuvent varier à chaque appel
* de la même page de résultat de PictoFlora.
*/
public function definirOrdreSqlAppliImg() {
$ordre = $this->parametres['ordre'];
 
// parmi self::$tri_possible
switch ($this->parametres['tri']) {
case 'votes' :
$this->addOrderBy("dis.moyenne $ordre, dis.nb_votes $ordre");
case 'moyenne-arithmetique' :
$this->addOrderBy("dis.moyenne $ordre, dis.nb_votes $ordre, id_image DESC");
break;
case 'points' :
$this->addOrderBy("dis.nb_points $ordre, dis.moyenne $ordre, dis.nb_votes $ordre");
$this->addOrderBy("dis.nb_points $ordre, dis.moyenne $ordre, dis.nb_votes $ordre, id_image DESC");
break;
case 'tags' :
$this->addOrderBy("dis.nb_tags $ordre");
$this->addOrderBy("dis.nb_tags $ordre, id_image DESC");
break;
case 'date_observation' :
$this->addOrderBy("date_observation $ordre, id_observation $ordre");
break;
case 'date_transmission' :
default:
$this->addOrderBy("date_transmission $ordre, id_observation $ordre");
}
583,7 → 580,7
$protoId = $vote['protocole.id'];
 
if (!array_key_exists('protocoles_votes', $images[$imgId]) ||
!array_key_exists($protoId, $images[$imgId]['protocoles_votes'])) {
!array_key_exists($protoId, $images[$imgId]['protocoles_votes'])) {
// extrait les champs spécifique au protocole (le LEFT JOIN de chargerVotesImage les ramène en doublons
$protocole = array_intersect_key($vote, array_flip($mappingProtocoles));
$images[$imgId]['protocoles_votes'][$protoId] = $protocole;