Rev 1826 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php// declare(encoding='UTF-8');/*** Permet la gestion des préférences utilisateur.** @category DEL* @package Services* @subpackage Utilisateurs* @version 0.1* @author Mathias CHOUET <mathias@tela-botanica.org>* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>* @author Aurelien PERONNET <aurelien@tela-botanica.org>* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>* @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org>*/class Preferences {private $conteneur;private $bdd;public function __construct(Conteneur $conteneur) {session_start();$this->conteneur = $conteneur;$this->bdd = $this->conteneur->getBdd();}/*** Renvoie les préférences utilisateurs* @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)* @param array $parametres les paramètres situés après le ? dans l'url* */public function consulter($ressources, $parametres) {$id_utilisateur = $ressources[0];// Mettre en forme le résultat et l'envoyer pour affichage$resultat = new ResultatService();$resultat->corps = $this->obtenirPreferencesUtilisateur($id_utilisateur);return $resultat;}private function obtenirPreferencesUtilisateur($id_utilisateur) {$requete = 'SELECT * '.'FROM del_utilisateur_infos '.'WHERE id_utilisateur = '.$this->bdd->proteger($id_utilisateur).' '.' -- '.__FILE__.' : '.__LINE__;$prefs_utilisateur = $this->bdd->recuperer($requete);if (empty($prefs_utilisateur)) {$this->initialiserInfosUtilisateur($id_utilisateur);$prefs_utilisateur = $this->renvoyerInfosUtilisateurDefaut($id_utilisateur);} else {if (empty($prefs_utilisateur['preferences'])) {$prefs_utilisateur['preferences'] = $this->obtenirTableauPreferenceDefaut();} else {$prefs_utilisateur['preferences'] = json_decode($prefs_utilisateur['preferences']);}$prefs_utilisateur['admin'] = $prefs_utilisateur['admin'];}return $prefs_utilisateur;}private function initialiserInfosUtilisateur($id_utilisateur) {$preferences_defaut = $this->obtenirTableauPreferenceDefaut();$prefsEncodeesP = $this->bdd->proteger(json_encode($preferences_defaut));$idUtilisateurP = $this->bdd->proteger($id_utilisateur);$requete = 'INSERT INTO del_utilisateur_infos '.'(id_utilisateur, admin, preferences, date_premiere_utilisation )'."VALUES ($idUtilisateurP, 0, $prefsEncodeesP, NOW()) ".'ON DUPLICATE KEY UPDATE date_premiere_utilisation = NOW() '.' -- '.__FILE__.' : '.__LINE__;return $this->bdd->executer($requete);}private function obtenirTableauPreferenceDefaut() {return array('mail_notification_mes_obs' => '1', 'mail_notification_toutes_obs' => '0');}private function renvoyerInfosUtilisateurDefaut($id_utilisateur) {return array('id_utilisateur' => $id_utilisateur,'admin' => '0','preferences' => $this->obtenirTableauPreferenceDefaut(),'date_premiere_utilisation' => date('Y-m-d H:i:s'));}/*** Méthode principale de la classe.* Modifie les préférences utilisateurs* @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)* @param array $parametres les paramètres situés dans le post* */public function modifier($ressources, $parametres) {$id_utilisateur = $ressources[0];$prefs = $this->modifierPreferencesUtilisateur($id_utilisateur, $parametres);// Mettre en forme le résultat et l'envoyer pour affichage$resultat = new ResultatService();$resultat->corps = $prefs;return $resultat;}private function modifierPreferencesUtilisateur($id_utilisateur, $prefs) {$requete = 'UPDATE del_utilisateur_infos '.'SET preferences = '.$this->bdd->proteger(json_encode($prefs)).' '.'WHERE id_utilisateur = '.$this->bdd->proteger($id_utilisateur).' '.' -- '.__FILE__.' : '.__LINE__;$resultat = $this->bdd->executer($requete);return $resultat;}}