Subversion Repositories eFlore/Applications.cel

Rev

Rev 3857 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
416 aurelien 1
<?php
2458 jpm 2
// declare(encoding='UTF-8');
882 aurelien 3
/**
2458 jpm 4
 * Liste les date de releves par utilisateur.
2143 jpm 5
 *
2458 jpm 6
 * @internal   Mininum PHP version : 5.2
7
 * @category   CEL
8
 * @package    Services
9
 * @subpackage Observations
10
 * @version    0.1
11
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
12
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
13
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
14
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
15
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
16
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
17
 */
757 aurelien 18
class InventoryDateList extends Cel {
2143 jpm 19
 
757 aurelien 20
	private $correspondance_fonction = array(1 => 'year', 2 => 'month', 3 => 'day');
2143 jpm 21
 
22
	/**
882 aurelien 23
	* @param int uid[0] : utilisateur obligatoire
24
	* @param int uid[1] : si absent : valeur 'all' (annee)
25
	* @param int uid[2] : si absent : valeur 'all' (mois)
26
	* @param int uid[3] : si absent : valeur 'all' (jour)
27
	*/
2458 jpm 28
	public function getElement($uid){
29
		// Controle detournement utilisateur
30
		$this->controleUtilisateur($uid[0]);
2143 jpm 31
 
1014 aurelien 32
		$condition_requete = $this->traiterParametresEtConstruireRequete($uid);
2143 jpm 33
 
2458 jpm 34
		$requete_liste_dates = 'SELECT DISTINCT date_observation AS id '.
35
			'FROM cel_obs WHERE '.$condition_requete.' '.
36
			'ORDER BY date_observation '.
37
			' -- '.__FILE__.':'.__LINE__;
2143 jpm 38
 
2458 jpm 39
		$liste_dates = Cel::db()->requeter($requete_liste_dates);
40
		$liste_dates = $this->formaterListeResultats($liste_dates);
2143 jpm 41
		$this->envoyerJson($liste_dates);
42
		return true;
757 aurelien 43
	}
2143 jpm 44
 
757 aurelien 45
	private function formaterListeResultats($liste_dates) {
46
		if (!$liste_dates) {
2458 jpm 47
			$liste_dates = array();
48
		}
2143 jpm 49
 
2458 jpm 50
		foreach ($liste_dates as &$date) {
51
			$date_heures = explode(' ',$date['id']);
52
			if (count($date_heures) > 1) {
53
				$date = $date_heures[0];
54
			}
55
			$date = $date;
56
		}
57
		return $liste_dates;
757 aurelien 58
	}
2143 jpm 59
 
757 aurelien 60
	private function traiterParametresEtConstruireRequete($params) {
1765 raphael 61
		$requete_condition = ' ce_utilisateur = '.Cel::db()->proteger($params[0]);
2143 jpm 62
 
757 aurelien 63
		$taille_tableau_parametres = count($params);
2458 jpm 64
		for ($i = 1; $i < $taille_tableau_parametres; $i++) {
65
			if ($this->estUnParametreDate($params[$i])) {
2143 jpm 66
				$fonction_date = $this->correspondance_fonction[$i];
1765 raphael 67
				$requete_condition .= ' AND '.$fonction_date.'(date_observation) = '.Cel::db()->proteger($params[$i]);
757 aurelien 68
			}
69
		}
70
		return $requete_condition;
416 aurelien 71
	}
2143 jpm 72
 
757 aurelien 73
	private function estUnParametreDate($valeur) {
2458 jpm 74
		 return is_numeric($valeur) && $valeur != 'all';
757 aurelien 75
	}
2458 jpm 76
}