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; |
} |
} |
?> |