Subversion Repositories Applications.annuaire

Compare Revisions

Ignore whitespace Rev 579 → Rev 580

/trunk/jrest/services/Utilisateur.php
84,42 → 84,6
}
 
/**
* Crée un nom Wiki (de la forme "JeanTalus") à partir des données de l'utilisateur;
* gère l'utilisation du pseudo mais pas la collision de noms Wiki @TODO s'en occuper
*
* @param array $infos des infos de profil utilisateur - on admet qu'elles contiennent "intitule"
* @return string un nom wiki correspondant à l' "intitulé" de l'utilisateur (prénom-nom ou pseudo)
* ou la valeur par défaut de $defaut si celui-ci est fourni et si le nom Wiki n'a pu être construit
*/
public function formaterNomWiki($infos, $defaut="ProblemeNomWiki") {
$nw = $this->convertirEnCamelCase($infos['intitule']);
// on sait jamais
if ($nw == "") {
$nw = $defaut;
}
 
return $nw;
}
protected function convertirEnCamelCase($str) {
// Suppression des accents
$str = $this->supprimerAccents($str);
// Suppression des caractères non alphanumériques
$str = preg_replace('/[^\da-z]/i', '', ucwords(strtolower($str)));
return $str;
}
 
protected function supprimerAccents($str, $charset='utf-8') {
$str = htmlentities($str, ENT_NOQUOTES, $charset);
 
$str = preg_replace('#&([A-za-z])(?:acute|cedil|caron|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str);
$str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str); // pour les ligatures e.g. 'œ'
$str = preg_replace('#&[^;]+;#', '', $str); // supprime les autres caractères
 
return $str;
}
 
/**
* Permet d'obtenir des infos pour un ou plusieurs ids utilisateurs indiqué(s) dans la ressource.
* RESSOURCE : /infos-par-ids/#id[,#id]*
* PARAMÈTRES : forceArrayOfArrays - si true, retourne un tableau associatif même s'il n'y a qu'un
155,6 → 119,18
return $infos;
}
 
// proxy pour AnnuaireModele::obtenirIdParMail() car le présent service
// est utilisé comme une lib => c'est MAL ! @TODO séparer lib et service !!
public function getIdParCourriel($courriel) {
return $this->getAnnuaire()->obtenirIdParMail($this->idAnnuaire, $courriel);
}
 
// proxy pour AnnuaireModele::inscrireUtilisateurCommeUnGrosPorc() car le présent service
// est utilisé comme une lib => c'est MAL ! @TODO séparer lib et service !!
public function inscrireUtilisateurCommeUnGrosPorc($donnees) {
return $this->getAnnuaire()->inscrireUtilisateurCommeUnGrosPorc($donnees);
}
 
/**
* Méthode rétrocompatible : appelle getInfosParIds et s'il n'y a qu'un résultat,
* ne retourne pas un tableau associatif mais un tableau simple
198,7 → 174,7
$utilisateur['pseudo'] = $this->obtenirPseudo($id);
$utilisateur['pseudoUtilise'] = $this->obtenirPseudoUtilise($id);
$utilisateur['intitule'] = $this->formaterIntitule($utilisateur);
$utilisateur['nomWiki'] = $this->formaterNomWiki($utilisateur);
$utilisateur['nomWiki'] = $this->formaterNomWiki($utilisateur['intitule']);
$courriel = strtolower($courriel);
$infos_utilisateurs[$courriel] = $utilisateur;
}
435,7 → 411,7
$this->messages[] = "Ce type de méthode '$methode_demande' n'est pas disponible pour la requete PUT.";
}
} else {
$this->messages[] = "Ce service n'est pas implémanté.";
$this->messages[] = "Ce service n'est pas implémenté.";
}
 
if (!is_null($infos)) {