| 1172 | aurelien | 1 | <?php
 | 
        
           |  |  | 2 | // declare(encoding='UTF-8');
 | 
        
           |  |  | 3 | /**
 | 
        
           | 1820 | jpm | 4 |  * Permet la gestion des préférences utilisateur.
 | 
        
           | 1172 | aurelien | 5 |  *
 | 
        
           | 1820 | jpm | 6 |  * @category   DEL
 | 
        
           |  |  | 7 |  * @package    Services
 | 
        
           |  |  | 8 |  * @subpackage Utilisateurs
 | 
        
           |  |  | 9 |  * @version    0.1
 | 
        
           |  |  | 10 |  * @author     Mathias CHOUET <mathias@tela-botanica.org>
 | 
        
           |  |  | 11 |  * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
 | 
        
           |  |  | 12 |  * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
 | 
        
           |  |  | 13 |  * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
 | 
        
           |  |  | 14 |  * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
 | 
        
           |  |  | 15 |  * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
 | 
        
           | 1172 | aurelien | 16 |  */
 | 
        
           |  |  | 17 |   | 
        
           |  |  | 18 | class Preferences {
 | 
        
           | 1666 | jpm | 19 |   | 
        
           | 1172 | aurelien | 20 | 	private $conteneur;
 | 
        
           |  |  | 21 | 	private $bdd;
 | 
        
           | 1666 | jpm | 22 |   | 
        
           | 1172 | aurelien | 23 | 	public function __construct(Conteneur $conteneur = null) {
 | 
        
           |  |  | 24 | 		session_start();
 | 
        
           |  |  | 25 | 		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
 | 
        
           |  |  | 26 | 		$this->conteneur->chargerConfiguration('config_utilisateurs.ini');
 | 
        
           | 1793 | jpm | 27 | 		$this->bdd = $this->conteneur->getBdd();
 | 
        
           | 1172 | aurelien | 28 | 	}
 | 
        
           | 1666 | jpm | 29 |   | 
        
           | 1172 | aurelien | 30 | 	/**
 | 
        
           |  |  | 31 | 	 * Renvoie les préférences utilisateurs
 | 
        
           |  |  | 32 | 	 * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
 | 
        
           |  |  | 33 | 	 * @param array $parametres les paramètres situés après le ? dans l'url
 | 
        
           |  |  | 34 | 	 * */
 | 
        
           |  |  | 35 | 	public function consulter($ressources, $parametres) {
 | 
        
           |  |  | 36 | 		$id_utilisateur = $ressources[0];
 | 
        
           |  |  | 37 | 		$prefs = $this->obtenirPreferencesUtilisateur($id_utilisateur);
 | 
        
           |  |  | 38 | 		// Mettre en forme le résultat et l'envoyer pour affichage
 | 
        
           |  |  | 39 | 		$resultat = new ResultatService();
 | 
        
           |  |  | 40 | 		$resultat->corps = $prefs;
 | 
        
           |  |  | 41 | 		return $resultat;
 | 
        
           |  |  | 42 | 	}
 | 
        
           | 1666 | jpm | 43 |   | 
        
           | 1172 | aurelien | 44 | 	private function obtenirPreferencesUtilisateur($id_utilisateur) {
 | 
        
           |  |  | 45 | 		$requete = 'SELECT * FROM del_utilisateur_infos WHERE id_utilisateur = '.$this->bdd->proteger($id_utilisateur);
 | 
        
           |  |  | 46 | 		$prefs_utilisateur = $this->bdd->recupererTous($requete);
 | 
        
           | 1666 | jpm | 47 |   | 
        
           |  |  | 48 | 		if (empty($prefs_utilisateur)) {
 | 
        
           | 1172 | aurelien | 49 | 			$this->initialiserInfosUtilisateur($id_utilisateur);
 | 
        
           |  |  | 50 | 			$prefs_utilisateur = $this->renvoyerInfosUtilisateurDefaut($id_utilisateur);
 | 
        
           |  |  | 51 | 		} else {
 | 
        
           |  |  | 52 | 			$prefs_utilisateur = $prefs_utilisateur[0];
 | 
        
           |  |  | 53 | 			$prefs_utilisateur['preferences'] = json_decode($prefs_utilisateur['preferences']);
 | 
        
           |  |  | 54 | 			$prefs_utilisateur['admin'] = $prefs_utilisateur['admin'];
 | 
        
           |  |  | 55 | 		}
 | 
        
           | 1666 | jpm | 56 |   | 
        
           | 1172 | aurelien | 57 | 		return $prefs_utilisateur;
 | 
        
           |  |  | 58 | 	}
 | 
        
           | 1666 | jpm | 59 |   | 
        
           | 1172 | aurelien | 60 | 	private function initialiserInfosUtilisateur($id_utilisateur) {
 | 
        
           |  |  | 61 | 		$preferences_defaut = $this->obtenirTableauPreferenceDefaut();
 | 
        
           | 1666 | jpm | 62 | 		$prefsEncodeesP = $this->bdd->proteger(json_encode($preferences_defaut));
 | 
        
           |  |  | 63 | 		$idUtilisateurP = $this->bdd->proteger($id_utilisateur);
 | 
        
           | 1172 | aurelien | 64 | 		$requete = 'INSERT INTO del_utilisateur_infos '.
 | 
        
           | 1666 | jpm | 65 | 				'(id_utilisateur, admin, preferences, date_premiere_utilisation )'.
 | 
        
           |  |  | 66 | 				"VALUES ($idUtilisateurP, 0, $prefsEncodeesP, NOW()) ".
 | 
        
           |  |  | 67 | 				'ON DUPLICATE KEY UPDATE date_premiere_utilisation = NOW() ';
 | 
        
           |  |  | 68 |   | 
        
           | 1172 | aurelien | 69 | 		$resultat = $this->bdd->requeter($requete);
 | 
        
           |  |  | 70 | 		return $resultat;
 | 
        
           |  |  | 71 | 	}
 | 
        
           | 1666 | jpm | 72 |   | 
        
           |  |  | 73 | 	private function obtenirTableauPreferenceDefaut() {
 | 
        
           |  |  | 74 | 		return array('mail_notification_mes_obs' => '1', 'mail_notification_toutes_obs' => '0');
 | 
        
           |  |  | 75 | 	}
 | 
        
           |  |  | 76 |   | 
        
           | 1172 | aurelien | 77 | 	private function renvoyerInfosUtilisateurDefaut($id_utilisateur) {
 | 
        
           | 1666 | jpm | 78 | 		return array('id_utilisateur' => $id_utilisateur,
 | 
        
           |  |  | 79 | 				'admin' => '0',
 | 
        
           |  |  | 80 | 				'preferences' => $this->obtenirTableauPreferenceDefaut(),
 | 
        
           |  |  | 81 | 				'date_premiere_utilisation' => date('Y-m-d H:i:s'));
 | 
        
           | 1172 | aurelien | 82 | 	}
 | 
        
           | 1666 | jpm | 83 |   | 
        
           |  |  | 84 | 	/**
 | 
        
           |  |  | 85 | 	* Méthode principale de la classe.
 | 
        
           |  |  | 86 | 	* Modifie les préférences utilisateurs
 | 
        
           |  |  | 87 | 	* @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
 | 
        
           |  |  | 88 | 	* @param array $parametres les paramètres situés dans le post
 | 
        
           |  |  | 89 | 	* */
 | 
        
           |  |  | 90 | 	public function modifier($ressources, $parametres) {
 | 
        
           |  |  | 91 | 		$id_utilisateur = $ressources[0];
 | 
        
           |  |  | 92 | 		$prefs = $this->modifierPreferencesUtilisateur($id_utilisateur, $parametres);
 | 
        
           |  |  | 93 | 		// Mettre en forme le résultat et l'envoyer pour affichage
 | 
        
           |  |  | 94 | 		$resultat = new ResultatService();
 | 
        
           |  |  | 95 | 		$resultat->corps = $prefs;
 | 
        
           |  |  | 96 | 		return $resultat;
 | 
        
           | 1172 | aurelien | 97 | 	}
 | 
        
           | 1666 | jpm | 98 |   | 
        
           |  |  | 99 | 	private function modifierPreferencesUtilisateur($id_utilisateur, $prefs) {
 | 
        
           |  |  | 100 | 		$requete = 'UPDATE del_utilisateur_infos '.
 | 
        
           |  |  | 101 | 			'SET preferences = '.$this->bdd->proteger(json_encode($prefs)).' '.
 | 
        
           |  |  | 102 | 			'WHERE id_utilisateur = '.$this->bdd->proteger($id_utilisateur);
 | 
        
           |  |  | 103 |   | 
        
           |  |  | 104 | 		$resultat = $this->bdd->requeter($requete);
 | 
        
           |  |  | 105 | 		return $resultat;
 | 
        
           |  |  | 106 | 	}
 | 
        
           | 1795 | jpm | 107 | }
 |