Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 2143 Rev 2175
Line 401... Line 401...
401
 
401
 
Line 402... Line 402...
402
		$requete = $select.$from.$where;
402
		$requete = $select.$from.$where;
403
 
403
 
-
 
404
		return $requete;
-
 
405
	}
-
 
406
 
-
 
407
 
-
 
408
	/**
-
 
409
	 * Retourne les n principaux contributeurs depuis x jours,
-
 
410
	 * en termes d'observations ajoutées, d'images ajoutées, ou les deux
-
 
411
	 * Paramètres : "jours" (int), "nombre" (int), "critere" ("obs" ou "img" ou "")
-
 
412
	 * @return array
-
 
413
	 */
-
 
414
	private function getGrandsContributeurs() {
-
 
415
 
-
 
416
		$nombre = 10; // les $nombre plus importants contributeurs
-
 
417
		$jours = 7; // depuis $jours jours
-
 
418
		$critere = null; // "obs", "img" ou null (les deux)
-
 
419
 
-
 
420
		if (isset($this->parametres['nombre'])) {
-
 
421
			$nombre = $this->parametres['nombre'];
-
 
422
		}
-
 
423
		if (isset($this->parametres['jours'])) {
-
 
424
			$jours = $this->parametres['jours'];
-
 
425
		}
-
 
426
		if (isset($this->parametres['critere'])) {
-
 
427
			$critere = $this->parametres['critere'];
-
 
428
		}
-
 
429
 
-
 
430
		$requete = $this->construireRequeteGrandsContributeurs($nombre, $jours, $critere);
-
 
431
		$resultats = Cel::db()->requeter($requete);
-
 
432
 
-
 
433
		$liste = array();
-
 
434
		if ($resultats != false) {
-
 
435
			foreach ($resultats as $resultat) {
-
 
436
				$liste[$resultat['ce_utilisateur']] = $resultat;
-
 
437
			}
-
 
438
		}
-
 
439
		return $liste;
-
 
440
	}
-
 
441
 
-
 
442
	private function construireRequeteGrandsContributeurs($nombre = 10, $jours = 7, $critere = null) {
-
 
443
		$req = "";
-
 
444
		switch ($critere) {
-
 
445
			case "obs":
-
 
446
				$req = "SELECT ce_utilisateur , prenom_utilisateur , nom_utilisateur , courriel_utilisateur , count(*) as nombre" .
-
 
447
					" FROM cel_obs" .
-
 
448
					" WHERE transmission = 1" .
-
 
449
					" AND TO_DAYS(NOW()) - TO_DAYS(date_transmission) <= $jours" .
-
 
450
					" GROUP BY courriel_utilisateur ORDER BY nombre DESC LIMIT $nombre;";
-
 
451
				break;
-
 
452
			case "img":
-
 
453
				$req = "SELECT co.ce_utilisateur , co.prenom_utilisateur , co.nom_utilisateur , co.courriel_utilisateur , count(DISTINCT ci.id_image) as nombre" .
-
 
454
					" FROM cel_images ci" .
-
 
455
					" RIGHT JOIN cel_obs_images coi ON coi.id_image = ci.id_image" .
-
 
456
					" LEFT JOIN cel_obs co ON coi.id_observation = co.id_observation" .
-
 
457
					" WHERE co.transmission = 1" .
-
 
458
					" AND TO_DAYS(NOW()) - TO_DAYS(co.date_transmission) <= $jours" .
-
 
459
					" GROUP BY co.courriel_utilisateur ORDER BY nombre DESC LIMIT $nombre;";
-
 
460
				break;
-
 
461
			default:
-
 
462
				$req = "SELECT co.ce_utilisateur , co.prenom_utilisateur , co.nom_utilisateur , co.courriel_utilisateur ," .
-
 
463
						" count(DISTINCT ci.id_image) as nombreImg, count(DISTINCT co.id_observation) as nombreObs," .
-
 
464
						" count(DISTINCT ci.id_image) + count(DISTINCT co.id_observation) as somme" .
-
 
465
					" FROM cel_images ci" .
-
 
466
					" RIGHT JOIN cel_obs_images coi ON coi.id_image = ci.id_image" .
-
 
467
					" LEFT JOIN cel_obs co ON coi.id_observation = co.id_observation" .
-
 
468
					" WHERE co.transmission = 1" .
-
 
469
					" AND TO_DAYS(NOW()) - TO_DAYS(co.date_transmission) <= $jours" .
-
 
470
					" GROUP BY co.courriel_utilisateur" .
-
 
471
					" ORDER BY somme DESC LIMIT $nombre;";
-
 
472
		}
-
 
473
 
404
		return $requete;
474
		return $req;
405
	}
475
	}
406
}
476
}