* @author Jean-Pascal MILCENT * @author Aurelien PERONNET * @license GPL v3 * @license CECILL v2 * @copyright 1999-2014 Tela Botanica */ class ImageDateList extends Cel { private $correspondance_fonction = array(1 => 'year', 2 => 'month', 3 => 'day'); /** * uid[0] : utilisateur obligatoire * uid[1] : si absent : valeur 'all' (annee) * uid[2] : si absent : valeur 'all' (mois) * uid[3] : si absent : valeur 'all' (jour) */ public function getElement($uid){ // Controle detournement utilisateur $this->controleUtilisateur($uid[0]); if (!is_numeric($uid[0])) { return; } $conditions = $this->traiterParametresEtConstruireRequete($uid); $requete_liste_dates = 'SELECT DISTINCT date_prise_de_vue AS id '. 'FROM cel_images '. "WHERE $conditions ". 'ORDER BY date_prise_de_vue '. ' -- '.__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) { if ($date['id'] == null || trim($date['id']) == '' || $date['id'] == 'null') { $date = '0000-00-00'; } else { $date_heures = explode(' ',$date['id']); $date = (count($date_heures) > 1) ? $date_heures[0] : $date['id']; } } return $liste_dates; } private function traiterParametresEtConstruireRequete($params) { $conditions = ' 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]; $conditions .= ' AND '.$fonction_date.'(date_prise_de_vue) = '.Cel::db()->proteger($params[$i]); } } return $conditions; } private function estUnParametreDate($valeur) { return is_numeric($valeur) && $valeur != 'all'; } }