Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2174 → Rev 2175

/trunk/jrest/services/CelStatistiqueTxt.php
403,5 → 403,75
 
return $requete;
}
 
 
/**
* Retourne les n principaux contributeurs depuis x jours,
* en termes d'observations ajoutées, d'images ajoutées, ou les deux
* Paramètres : "jours" (int), "nombre" (int), "critere" ("obs" ou "img" ou "")
* @return array
*/
private function getGrandsContributeurs() {
 
$nombre = 10; // les $nombre plus importants contributeurs
$jours = 7; // depuis $jours jours
$critere = null; // "obs", "img" ou null (les deux)
 
if (isset($this->parametres['nombre'])) {
$nombre = $this->parametres['nombre'];
}
if (isset($this->parametres['jours'])) {
$jours = $this->parametres['jours'];
}
if (isset($this->parametres['critere'])) {
$critere = $this->parametres['critere'];
}
 
$requete = $this->construireRequeteGrandsContributeurs($nombre, $jours, $critere);
$resultats = Cel::db()->requeter($requete);
 
$liste = array();
if ($resultats != false) {
foreach ($resultats as $resultat) {
$liste[$resultat['ce_utilisateur']] = $resultat;
}
}
return $liste;
}
 
private function construireRequeteGrandsContributeurs($nombre = 10, $jours = 7, $critere = null) {
$req = "";
switch ($critere) {
case "obs":
$req = "SELECT ce_utilisateur , prenom_utilisateur , nom_utilisateur , courriel_utilisateur , count(*) as nombre" .
" FROM cel_obs" .
" WHERE transmission = 1" .
" AND TO_DAYS(NOW()) - TO_DAYS(date_transmission) <= $jours" .
" GROUP BY courriel_utilisateur ORDER BY nombre DESC LIMIT $nombre;";
break;
case "img":
$req = "SELECT co.ce_utilisateur , co.prenom_utilisateur , co.nom_utilisateur , co.courriel_utilisateur , count(DISTINCT ci.id_image) as nombre" .
" FROM cel_images ci" .
" RIGHT JOIN cel_obs_images coi ON coi.id_image = ci.id_image" .
" LEFT JOIN cel_obs co ON coi.id_observation = co.id_observation" .
" WHERE co.transmission = 1" .
" AND TO_DAYS(NOW()) - TO_DAYS(co.date_transmission) <= $jours" .
" GROUP BY co.courriel_utilisateur ORDER BY nombre DESC LIMIT $nombre;";
break;
default:
$req = "SELECT co.ce_utilisateur , co.prenom_utilisateur , co.nom_utilisateur , co.courriel_utilisateur ," .
" count(DISTINCT ci.id_image) as nombreImg, count(DISTINCT co.id_observation) as nombreObs," .
" count(DISTINCT ci.id_image) + count(DISTINCT co.id_observation) as somme" .
" FROM cel_images ci" .
" RIGHT JOIN cel_obs_images coi ON coi.id_image = ci.id_image" .
" LEFT JOIN cel_obs co ON coi.id_observation = co.id_observation" .
" WHERE co.transmission = 1" .
" AND TO_DAYS(NOW()) - TO_DAYS(co.date_transmission) <= $jours" .
" GROUP BY co.courriel_utilisateur" .
" ORDER BY somme DESC LIMIT $nombre;";
}
 
return $req;
}
}
?>