Subversion Repositories Applications.annuaire

Rev

Rev 348 | Rev 377 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
332 jpm 1
<?php
2
// declare(encoding='UTF-8');
3
/**
333 jpm 4
 * Service retournant les prénoms et nom  d'un utilisateur en fonction de son courriel.
5
 * UNe liste de courriel peut être passé dans la ressource.
6
 * Exemple :
7
 * /utilisateur/Prenom-nom-par-courriel/jpm@tela-botanica.org,aurelien@tela-botanica.org
332 jpm 8
 *
9
 * @category	php 5.2
10
 * @package		Annuaire::Services
11
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
12
 * @copyright	Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
13
 * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
14
 * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
15
 * @version		$Id$
16
 */
17
class Utilisateur extends JRestService {
344 jpm 18
 
348 jpm 19
	private $donnees = null;
344 jpm 20
	private $idAnnuaire = null;
348 jpm 21
	private $utilisateurId = null;
344 jpm 22
	private $metadonneeModele = null;
23
	private $annuaireModele = null;
348 jpm 24
	private $messagerieModele = null;
344 jpm 25
 
332 jpm 26
	public function getElement($ressources){
27
		$this->ressources = $ressources;
344 jpm 28
		$this->idAnnuaire = Config::get('annuaire_defaut');
332 jpm 29
		$infos = null;
30
 
31
		if (isset($this->ressources[0])) {
32
			$methode_demande = array_shift($this->ressources);
33
			$methode = $this->traiterNomMethodeGet($methode_demande);
34
			if (method_exists($this, $methode)) {
35
				$infos = $this->$methode();
36
			} else {
348 jpm 37
				$this->messages[] = "Ce type de ressource '$methode_demande' n'est pas disponible pour la requete GET.";
332 jpm 38
			}
39
		} else {
40
			$this->messages[] = "Le premier paramêtre du chemin du service doit correspondre au type de ressource demandée.";
41
		}
42
 
43
		if (!is_null($infos)) {
44
			$this->envoyerJson($infos);
45
		} else {
46
			$info = 'Un problème est survenu : '.print_r($this->messages, true);
47
			$this->envoyerTxt($info);
48
		}
49
	}
50
 
348 jpm 51
	/**
52
	 * Permet d'obtenir les prénoms et noms des courriels des utilisateurs indiqués dans la ressource.
53
	 * RESSOURCE : /utilisateur/prenom-nom-par-courriel/[courriel,courriel,...]
54
	 * PARAMÊTRES : aucun
55
	 * RÉPONSE : Tableau possédant un courriel de la ressource en clé et en valeur :
56
	 *  - id : identifiant numérique de l'utilisateur
57
	 *  - prenom : prénom
58
	 *  - nom : nom de famille.
59
	 */
332 jpm 60
	public function getPrenomNomParCourriel() {
61
		$courriels = explode(',', $this->ressources[0]);
344 jpm 62
		$infos = $this->getAnnuaire()->obtenirPrenomNomParCourriel($this->idAnnuaire, $courriels);
332 jpm 63
		return $infos;
64
	}
344 jpm 65
 
348 jpm 66
	/**
67
	 * Permet d'obtenir les identités des utilisateurs indiqués dans la ressource.
68
	 * RESSOURCE : /utilisateur/identite-par-courriel/[courriel,courriel,...]
69
	 * PARAMÊTRES : aucun
70
	 * RÉPONSE : Tableau possédant un courriel de la ressource en clé et en valeur :
71
	 *  - id : identifiant numérique de l'utilisateur
72
	 *  - pseudoUtilise : indique si on doit utiliser le pseudo à la place de Prénom NOM
73
	 *  - pseudo : pseudo de l'utilisateur.
74
	 *  - prenom : prénom
75
	 *  - nom : nom de famille.
76
	 */
344 jpm 77
	public function getIdentiteParCourriel() {
78
	    $utilisateurs = $this->getPrenomNomParCourriel();
79
		foreach ($utilisateurs as $courriel => $utilisateur) {
80
			$id = $utilisateur['id'];
81
			$utilisateur['pseudo'] = $this->obtenirPseudo($id);
82
			$utilisateur['pseudoUtilise'] = $this->obtenirPseudoUtilise($id);
83
			$utilisateur['intitule'] = $this->formaterIntitule($utilisateur);
84
			$utilisateurs[$courriel] = $utilisateur;
85
		}
86
		return $utilisateurs;
87
	}
88
 
89
	private function getAnnuaire() {
90
		if (!isset($this->annuaireModele)) {
91
			$this->annuaireModele = new AnnuaireModele();
92
		}
93
		return $this->annuaireModele;
94
	}
95
 
96
	private function getMeta() {
97
		if (!isset($this->metadonneeModele)) {
98
			$this->metadonneeModele = new MetadonneeModele();
99
		}
100
		return $this->metadonneeModele;
101
	}
102
 
103
	private function obtenirPseudo($id_utilisateur) {
104
		$pseudo = '';
105
		$id_champ_pseudo = $this->getMeta()->renvoyerIdChampMetadonneeParAbreviation($this->idAnnuaire, 'pseudo');
106
		if ($this->getMeta()->valeurExiste($id_champ_pseudo, $id_utilisateur)) {
107
			$pseudo = $this->getMeta()->obtenirValeurMetadonnee($id_champ_pseudo, $id_utilisateur);
108
		}
109
		return $pseudo;
110
	}
111
 
112
	private function obtenirPseudoUtilise($id_utilisateur) {
113
		$pseudo_utilise = false;
114
		$id_champ_utilise_pseudo = $this->getMeta()->renvoyerIdChampMetadonneeParAbreviation($this->idAnnuaire, 'utilise_pseudo');
115
		if ($this->getMeta()->valeurExiste($id_champ_utilise_pseudo, $id_utilisateur)) {
116
				$booleen = $this->getMeta()->obtenirValeurMetadonnee($id_champ_utilise_pseudo, $id_utilisateur);
117
				$pseudo_utilise = ($booleen == 0) ? false : true;
118
		}
119
		return $pseudo_utilise;
120
	}
121
 
122
	private function formaterIntitule($utilisateur) {
123
		$intitule = '';
345 jpm 124
		if ($utilisateur['pseudoUtilise'] && trim($utilisateur['pseudo']) != '') {
344 jpm 125
			$intitule = $utilisateur['pseudo'];
126
		} else {
127
			$intitule = $utilisateur['prenom'].' '.$utilisateur['nom'];
128
		}
129
		return $intitule;
130
	}
131
 
348 jpm 132
	public function updateElement($ressources, $donnees) {
133
		$this->ressources = $ressources;
134
		$this->donnees = $donnees;
135
		$this->idAnnuaire = Config::get('annuaire_defaut');
136
 
137
		$infos = null;
138
		if (isset($this->ressources[0])) {
139
			$this->utilisateurId = array_shift($this->ressources);
140
			if (isset($this->ressources[0])) {
141
				$methode_demande = array_shift($this->ressources);
142
				$methode = $this->traiterNomMethodePost($methode_demande);
143
				if (method_exists($this, $methode)) {
144
					$infos = $this->$methode();
145
				} else {
146
					$this->messages[] = "Ce type de ressource '$methode_demande' n'est pas disponible pour la requete POST.";
147
				}
148
			} else {
149
				$this->messages[] = "La seconde ressource du service pour les requêtes POST doit correspondre au type de ressource demandée.";
150
			}
151
		} else {
152
			$this->messages[] = "La première ressource du service pour les requêtes POST doit être l'identifiant de l'utilisateur.";
153
		}
154
 
155
		if (!is_null($infos)) {
156
			$this->envoyerJson($infos);
157
		} else {
158
			$info = 'Un problème est survenu : '.print_r($this->messages, true);
159
			$this->envoyerTxt($info);
160
		}
161
	}
162
 
163
	/**
164
	 * Permet d'envoyer un message à un utilisateur.
165
	 * RESSOURCE : /utilisateur/[id]/message
166
	 * POST :
167
	 *  - sujet : contient le sujet du message à envoyer.
168
	 *  - message : contient le contenu du message à envoyer.
169
	 *  - utilisateur_courriel : contient le courriel de l'utilisateur qui envoie le message (Il doit être
170
	 *  inscrit dans l'annuaire par défaut de Tela Botanica).
171
	 *  - copies : peut contenir une liste de courriels séparés par des virguels auxquels une copie du
172
	 *  message sera envoyée.
173
	 * RÉPONSE :
174
	 *  - message : contient le message d'information concernant l'envoie.
175
	 */
176
	private function updateMessage() {
177
		$destinataireId = $this->utilisateurId;//$this->donnees['destinataire_id'];
178
		$sujet = stripslashes($this->donnees['sujet']);
179
		$contenu = stripslashes($this->donnees['message']);
180
		$envoyeur = $this->donnees['utilisateur_courriel'];
181
		$copies = array_key_exists('copies', $this->donnees) ? explode(',', $this->donnees['copies']) : null;
182
 
183
		$info = null;
184
		if ($this->getAnnuaire()->utilisateurExisteParMail($this->idAnnuaire, $envoyeur)) {
185
			$destinataire = $this->getAnnuaire()->obtenirMailParId($this->idAnnuaire, $destinataireId);
186
			if ($destinataire) {
187
				$envoie = $this->getMessagerie()->envoyerMailText($envoyeur, $destinataire, $sujet, $contenu);
188
				if ($envoie) {
189
					$info['message'] = "Votre message a bien été envoyé.";
190
					foreach ($copies as $copie) {
191
						$sujet = '[COPIE] '.$sujet;
192
						$contenu = "Message original envoyé par $envoyeur pour $destinataire.\n--\n".$contenu;
193
						$this->getMessagerie()->envoyerMailText($envoyeur, $copie, $sujet, $contenu);
194
					}
195
				} else {
196
					$info['message'] = "Le message n'a pas pu être envoyé.";
197
				}
198
			} else {
199
				$info['message'] = "Aucun courriel ne correspond à l'id du destinataire.";
200
			}
201
		} else {
202
			$info['message'] = "Vous n'êtes pas inscrit à Tela Botanica avec le courriel : $envoyeur.\n".
352 jpm 203
				"Veuillez saisir votre courriel d'inscription ou vous inscrire à Tela Botanica.";
348 jpm 204
		}
205
		return $info;
206
	}
207
 
208
	private function getMessagerie() {
209
		if (!isset($this->messagerieModele)) {
210
			$this->messagerieModele = new MessageControleur();
211
		}
212
		return $this->messagerieModele;
213
	}
214
 
332 jpm 215
}
333 jpm 216
?>