* @author Jean-Pascal MILCENT * @author Aurelien PERONNET * @license GPL v3 * @license CECILL v2 * @copyright 1999-2014 Tela Botanica */ class InventoryDateList extends Cel { private $correspondance_fonction = array(1 => 'year', 2 => 'month', 3 => 'day'); /** * @param int uid[0] : utilisateur obligatoire * @param int uid[1] : si absent : valeur 'all' (annee) * @param int uid[2] : si absent : valeur 'all' (mois) * @param int uid[3] : si absent : valeur 'all' (jour) */ public function getElement($uid){ // Controle detournement utilisateur $this->controleUtilisateur($uid[0]); $condition_requete = $this->traiterParametresEtConstruireRequete($uid); $requete_liste_dates = 'SELECT DISTINCT date_observation AS id '. 'FROM cel_obs WHERE '.$condition_requete.' '. 'ORDER BY date_observation '. ' -- '.__FILE__.':'.__LINE__; $liste_dates = Cel::db()->requeter($requete_liste_dates); $liste_dates = $this->formaterListeResultats($liste_dates); $this->envoyerJson($liste_dates); return true; } private function formaterListeResultats($liste_dates) { if (!$liste_dates) { $liste_dates = array(); } foreach ($liste_dates as &$date) { $date_heures = explode(' ',$date['id']); if (count($date_heures) > 1) { $date = $date_heures[0]; } $date = $date; } return $liste_dates; } private function traiterParametresEtConstruireRequete($params) { $requete_condition = ' ce_utilisateur = '.Cel::db()->proteger($params[0]); $taille_tableau_parametres = count($params); for ($i = 1; $i < $taille_tableau_parametres; $i++) { if ($this->estUnParametreDate($params[$i])) { $fonction_date = $this->correspondance_fonction[$i]; $requete_condition .= ' AND '.$fonction_date.'(date_observation) = '.Cel::db()->proteger($params[$i]); } } return $requete_condition; } private function estUnParametreDate($valeur) { return is_numeric($valeur) && $valeur != 'all'; } }