* @copyright 2010 Tela-Botanica * @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL * @version SVN: * @link /doc/papyrus_bp/ */ /** * Liste les date des images par utilisateur * * in=utf8 * out=utf8 * * 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) **/ class ImageDateList extends Cel { private $correspondance_fonction = array(1 => 'year', 2 => 'month', 3 => 'day'); function getElement($uid){ // Controle detournement utilisateur $this->controleUtilisateur($uid[0]); if(!is_numeric($uid[0])) { return; } $condition_requete = $this->traiterParametresEtConstruireRequete($uid); $requete_liste_dates = 'SELECT DISTINCT '. 'date_prise_de_vue AS id '. 'FROM cel_images WHERE '.$condition_requete.' '. 'ORDER BY date_prise_de_vue'; $liste_dates = Cel::db()->executerRequete($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']); if(count($date_heures) > 1) { $date = $date_heures[0]; } else { $date = $date['id']; } } } 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_prise_de_vue) = '.Cel::db()->proteger($params[$i]); } } return $requete_condition; } private function estUnParametreDate($valeur) { return is_numeric($valeur) && $valeur != "all"; } } ?>