Subversion Repositories Applications.annuaire

Rev

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

<?php
// declare(encoding='UTF-8');
/**
 * Service retournant les prénoms et nom  d'un utilisateur en fonction de son courriel.
 * UNe liste de courriel peut être passé dans la ressource.
 * Exemple :
 * /utilisateur/Prenom-nom-par-courriel/jpm@tela-botanica.org,aurelien@tela-botanica.org
 *
 * @category    php 5.2
 * @package             Annuaire::Services
 * @author              Jean-Pascal MILCENT <jpm@tela-botanica.org>
 * @copyright   Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
 * @license             http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
 * @license             http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
 * @version             $Id$
 */
class Utilisateur extends JRestService {
        
        private $idAnnuaire = null;
        private $metadonneeModele = null;
        private $annuaireModele = null;
        
        public function getElement($ressources){
                $this->ressources = $ressources;
                $this->idAnnuaire = Config::get('annuaire_defaut');
                $infos = null;
                
                if (isset($this->ressources[0])) {
                        $methode_demande = array_shift($this->ressources);
                        $methode = $this->traiterNomMethodeGet($methode_demande);
                        if (method_exists($this, $methode)) {
                                $infos = $this->$methode();
                        } else {
                                $this->messages[] = "Ce type de ressource '$methode_demande' n'est pas disponible.";
                        }
                } else {
                        $this->messages[] = "Le premier paramêtre du chemin du service doit correspondre au type de ressource demandée.";
                }

                if (!is_null($infos)) {
                        $this->envoyerJson($infos);
                } else {
                        $info = 'Un problème est survenu : '.print_r($this->messages, true);
                        $this->envoyerTxt($info);
                }
        }
        
        public function getPrenomNomParCourriel() {
                $courriels = explode(',', $this->ressources[0]);
                $infos = $this->getAnnuaire()->obtenirPrenomNomParCourriel($this->idAnnuaire, $courriels);
                return $infos;
        }
        
        public function getIdentiteParCourriel() {
            $utilisateurs = $this->getPrenomNomParCourriel();
                foreach ($utilisateurs as $courriel => $utilisateur) {
                        $id = $utilisateur['id'];
                        $utilisateur['pseudo'] = $this->obtenirPseudo($id);
                        $utilisateur['pseudoUtilise'] = $this->obtenirPseudoUtilise($id);
                        $utilisateur['intitule'] = $this->formaterIntitule($utilisateur);
                        $utilisateurs[$courriel] = $utilisateur;
                }
                return $utilisateurs;
        }
        
        private function getAnnuaire() {
                if (!isset($this->annuaireModele)) {
                        $this->annuaireModele = new AnnuaireModele();
                }
                return $this->annuaireModele;
        }
        
        private function getMeta() {
                if (!isset($this->metadonneeModele)) {
                        $this->metadonneeModele = new MetadonneeModele();
                }
                return $this->metadonneeModele;
        }
        
        private function obtenirPseudo($id_utilisateur) {
                $pseudo = '';
                $id_champ_pseudo = $this->getMeta()->renvoyerIdChampMetadonneeParAbreviation($this->idAnnuaire, 'pseudo');
                if ($this->getMeta()->valeurExiste($id_champ_pseudo, $id_utilisateur)) {
                        $pseudo = $this->getMeta()->obtenirValeurMetadonnee($id_champ_pseudo, $id_utilisateur);
                }
                return $pseudo;
        }
        
        private function obtenirPseudoUtilise($id_utilisateur) {
                $pseudo_utilise = false;
                $id_champ_utilise_pseudo = $this->getMeta()->renvoyerIdChampMetadonneeParAbreviation($this->idAnnuaire, 'utilise_pseudo');
                if ($this->getMeta()->valeurExiste($id_champ_utilise_pseudo, $id_utilisateur)) {
                                $booleen = $this->getMeta()->obtenirValeurMetadonnee($id_champ_utilise_pseudo, $id_utilisateur);
                                $pseudo_utilise = ($booleen == 0) ? false : true;
                }
                return $pseudo_utilise;
        }
        
        private function formaterIntitule($utilisateur) {
                $intitule = '';
                if ($utilisateur['pseudoUtilise'] && trim($utilisateur['pseudo']) != '') {
                        $intitule = $utilisateur['pseudo'];
                } else {
                        $intitule = $utilisateur['prenom'].' '.$utilisateur['nom'];
                }
                return $intitule;
        }
        
}
?>