Subversion Repositories Applications.annuaire

Rev

Rev 562 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 562 Rev 580
Line 82... Line 82...
82
			$this->envoyerTxt($info);
82
			$this->envoyerTxt($info);
83
		}
83
		}
84
	}
84
	}
Line 85... Line 85...
85
 
85
 
86
	/**
-
 
87
	 * Crée un nom Wiki (de la forme "JeanTalus") à partir des données de l'utilisateur;
-
 
88
	 * gère l'utilisation du pseudo mais pas la collision de noms Wiki @TODO s'en occuper
-
 
89
	 * 
-
 
90
	 * @param array $infos des infos de profil utilisateur - on admet qu'elles contiennent "intitule"
-
 
91
	 * @return string un nom wiki correspondant à l' "intitulé" de l'utilisateur (prénom-nom ou pseudo)
-
 
92
	 * 		ou la valeur par défaut de $defaut si celui-ci est fourni et si le nom Wiki n'a pu être construit
-
 
93
	 */
-
 
94
	public function formaterNomWiki($infos, $defaut="ProblemeNomWiki") {
-
 
95
		$nw = $this->convertirEnCamelCase($infos['intitule']);
-
 
96
		// on sait jamais
-
 
97
		if ($nw == "") {
-
 
98
			$nw = $defaut;
-
 
99
		}
-
 
100
 
-
 
101
		return $nw;
-
 
102
	}
-
 
103
	
-
 
104
	protected function convertirEnCamelCase($str) {
-
 
105
		// Suppression des accents
-
 
106
		$str = $this->supprimerAccents($str);
-
 
107
		// Suppression des caractères non alphanumériques
-
 
108
		$str = preg_replace('/[^\da-z]/i', '', ucwords(strtolower($str)));
-
 
109
		return $str;
-
 
110
	}
-
 
111
 
-
 
112
	protected function supprimerAccents($str, $charset='utf-8') {
-
 
113
		$str = htmlentities($str, ENT_NOQUOTES, $charset);
-
 
114
 
-
 
115
		$str = preg_replace('#&([A-za-z])(?:acute|cedil|caron|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str);
-
 
116
		$str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str); // pour les ligatures e.g. 'œ'
-
 
117
		$str = preg_replace('#&[^;]+;#', '', $str); // supprime les autres caractères
-
 
118
 
-
 
119
		return $str;
-
 
120
	}
-
 
121
 
-
 
122
	/**
86
	/**
123
	 * Permet d'obtenir des infos pour un ou plusieurs ids utilisateurs indiqué(s) dans la ressource.
87
	 * Permet d'obtenir des infos pour un ou plusieurs ids utilisateurs indiqué(s) dans la ressource.
124
	 * RESSOURCE : /infos-par-ids/#id[,#id]*
88
	 * RESSOURCE : /infos-par-ids/#id[,#id]*
125
	 * PARAMÈTRES : forceArrayOfArrays - si true, retourne un tableau associatif même s'il n'y a qu'un
89
	 * PARAMÈTRES : forceArrayOfArrays - si true, retourne un tableau associatif même s'il n'y a qu'un
126
	 * 		résultat (casse la rétrocompatibilté)
90
	 * 		résultat (casse la rétrocompatibilté)
Line 153... Line 117...
153
		}
117
		}
Line 154... Line 118...
154
 
118
 
155
		return $infos;
119
		return $infos;
Line -... Line 120...
-
 
120
	}
-
 
121
 
-
 
122
	// proxy pour AnnuaireModele::obtenirIdParMail() car le présent service
-
 
123
	// est utilisé comme une lib => c'est MAL ! @TODO séparer lib et service !!
-
 
124
	public function getIdParCourriel($courriel) {
-
 
125
		return $this->getAnnuaire()->obtenirIdParMail($this->idAnnuaire, $courriel);
-
 
126
	}
-
 
127
 
-
 
128
	// proxy pour AnnuaireModele::inscrireUtilisateurCommeUnGrosPorc() car le présent service
-
 
129
	// est utilisé comme une lib => c'est MAL ! @TODO séparer lib et service !!
-
 
130
	public function inscrireUtilisateurCommeUnGrosPorc($donnees) {
-
 
131
		return $this->getAnnuaire()->inscrireUtilisateurCommeUnGrosPorc($donnees);
156
	}
132
	}
157
 
133
 
158
	/**
134
	/**
159
	 * Méthode rétrocompatible : appelle getInfosParIds et s'il n'y a qu'un résultat,
135
	 * Méthode rétrocompatible : appelle getInfosParIds et s'il n'y a qu'un résultat,
160
	 * ne retourne pas un tableau associatif mais un tableau simple
136
	 * ne retourne pas un tableau associatif mais un tableau simple
Line 196... Line 172...
196
		foreach ($utilisateurs as $courriel => $utilisateur) {
172
		foreach ($utilisateurs as $courriel => $utilisateur) {
197
			$id = $utilisateur['id'];
173
			$id = $utilisateur['id'];
198
			$utilisateur['pseudo'] = $this->obtenirPseudo($id);
174
			$utilisateur['pseudo'] = $this->obtenirPseudo($id);
199
			$utilisateur['pseudoUtilise'] = $this->obtenirPseudoUtilise($id);
175
			$utilisateur['pseudoUtilise'] = $this->obtenirPseudoUtilise($id);
200
			$utilisateur['intitule'] = $this->formaterIntitule($utilisateur);
176
			$utilisateur['intitule'] = $this->formaterIntitule($utilisateur);
201
			$utilisateur['nomWiki'] = $this->formaterNomWiki($utilisateur);
177
			$utilisateur['nomWiki'] = $this->formaterNomWiki($utilisateur['intitule']);
202
			$courriel = strtolower($courriel);
178
			$courriel = strtolower($courriel);
203
			$infos_utilisateurs[$courriel] = $utilisateur;
179
			$infos_utilisateurs[$courriel] = $utilisateur;
204
		}
180
		}
205
		return $infos_utilisateurs;
181
		return $infos_utilisateurs;
206
	}
182
	}
Line 433... Line 409...
433
				$infos = $this->$methode();
409
				$infos = $this->$methode();
434
			} else {
410
			} else {
435
				$this->messages[] = "Ce type de méthode '$methode_demande' n'est pas disponible pour la requete PUT.";
411
				$this->messages[] = "Ce type de méthode '$methode_demande' n'est pas disponible pour la requete PUT.";
436
			}
412
			}
437
		} else {
413
		} else {
438
			$this->messages[] = "Ce service n'est pas implémanté.";
414
			$this->messages[] = "Ce service n'est pas implémenté.";
439
		}
415
		}
Line 440... Line 416...
440
 
416
 
441
		if (!is_null($infos)) {
417
		if (!is_null($infos)) {
442
			$this->envoyerJson($infos);
418
			$this->envoyerJson($infos);