Subversion Repositories Applications.annuaire

Compare Revisions

Ignore whitespace Rev 449 → Rev 454

/trunk/jrest/jrest.ini.defaut.php
7,8 → 7,8
; Default
[appli]
phptype = mysql
username =
password =
username =
password =
hostspec = localhost
database = tb_v4
 
21,8 → 21,8
; Identification
[database_ident]
phptype = mysql
username =
password =
username =
password =
hostspec = localhost
database = tb_v4
annuaire = annuaire_tela
45,4 → 45,6
; ADMIN
[jrest_admin]
admin = aurelien@tela-botanica.org,david.delon@clapas.net,jpm@tela-botanica.org,marie@tela-botanica.org
; Liste des ips (nom de domaine) autorisés à accéder aux services de DEL
ip_autorisees = "127.0.0.1, 193.54.123.169, 193.54.123.216, 162.38.234.6"
;*/?>
/trunk/jrest/services/Utilisateur.php
1,302 → 1,360
<?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 $donnees = null;
private $idAnnuaire = null;
private $utilisateurId = null;
private $metadonneeModele = null;
private $annuaireModele = null;
private $messagerieModele = null;
 
/*+----------------------------------------------------------------------------------------------------+*/
// GET : consultation
 
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 pour la requete GET.";
}
} 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);
}
}
 
/**
* Permet d'obtenir les prénoms et noms des courriels des utilisateurs indiqués dans la ressource.
* RESSOURCE : /utilisateur/prenom-nom-par-courriel/[courriel,courriel,...]
* PARAMÊTRES : aucun
* RÉPONSE : Tableau possédant un courriel de la ressource en clé et en valeur :
* - id : identifiant numérique de l'utilisateur
* - prenom : prénom
* - nom : nom de famille.
*/
public function getPrenomNomParCourriel() {
$courriels = explode(',', $this->ressources[0]);
$infos = $this->getAnnuaire()->obtenirPrenomNomParCourriel($this->idAnnuaire, $courriels);
$infous_courriel_minuscule = array();
foreach ($infos as $courriel => $utilisateur) {
$courriel = strtolower($courriel);
$infous_courriel_minuscule[$courriel] = $utilisateur;
}
return $infos;
}
 
/**
* Permet d'obtenir les identités des utilisateurs indiqués dans la ressource.
* RESSOURCE : /utilisateur/identite-par-courriel/[courriel,courriel,...]
* PARAMÊTRES : aucun
* RÉPONSE : Tableau possédant un courriel de la ressource en clé et en valeur :
* - id : identifiant numérique de l'utilisateur
* - pseudoUtilise : indique si on doit utiliser le pseudo à la place de Prénom NOM
* - pseudo : pseudo de l'utilisateur.
* - prenom : prénom
* - nom : nom de famille.
*/
public function getIdentiteParCourriel() {
$infos_utilisateurs = array();
$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);
$infos_utilisateurs[$courriel] = $utilisateur;
}
return $infos_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;
}
 
/*+----------------------------------------------------------------------------------------------------+*/
// POST : mise à jour
 
public function updateElement($ressources, $donnees) {
$this->ressources = $ressources;
$this->donnees = $donnees;
$this->idAnnuaire = Config::get('annuaire_defaut');
 
$infos = null;
if (isset($this->ressources[0])) {
$this->utilisateurId = array_shift($this->ressources);
if (isset($this->ressources[0])) {
$methode_demande = array_shift($this->ressources);
$methode = $this->traiterNomMethodePost($methode_demande);
if (method_exists($this, $methode)) {
$infos = $this->$methode();
} else {
$this->messages[] = "Ce type de ressource '$methode_demande' n'est pas disponible pour la requete POST.";
}
} else {
$this->messages[] = "La seconde ressource du service pour les requêtes POST doit correspondre au type de ressource demandée.";
}
} else {
$this->messages[] = "La première ressource du service pour les requêtes POST doit être l'identifiant de l'utilisateur.";
}
 
if (!is_null($infos)) {
$this->envoyerJson($infos);
} else {
$info = 'Un problème est survenu : '.print_r($this->messages, true);
$this->envoyerTxt($info);
}
}
 
/**
* Permet d'envoyer un message à un utilisateur.
* RESSOURCE : /utilisateur/[id]/message
* POST :
* - sujet : contient le sujet du message à envoyer.
* - message : contient le contenu du message à envoyer.
* - utilisateur_courriel : contient le courriel de l'utilisateur qui envoie le message (Il doit être
* inscrit dans l'annuaire par défaut de Tela Botanica).
* - copies : peut contenir une liste de courriels séparés par des virguels auxquels une copie du
* message sera envoyée.
* - format (optionnel) : text ou html
* RÉPONSE :
* - message : contient le message d'information concernant l'envoie.
*/
private function updateMessage() {
$destinataireId = $this->utilisateurId;//$this->donnees['destinataire_id'];
$sujet = stripslashes($this->donnees['sujet']);
$contenu = stripslashes($this->donnees['message']);
$envoyeur = $this->donnees['utilisateur_courriel'];
$copies = array_key_exists('copies', $this->donnees) ? explode(',', $this->donnees['copies']) : null;
$format = isset($this->donnees['format']) ? $this->donnees['format'] : 'text';
 
$info = null;
if ($this->estAutoriseMessagerie($envoyeur) || $this->getAnnuaire()->utilisateurExisteParMail($this->idAnnuaire, $envoyeur)) {
// il est possible de passer directement un email ou bien un id utilisateur
if(filter_var($destinataireId, FILTER_VALIDATE_EMAIL)) {
$destinataire = $destinataireId;
} else {
$destinataire = $this->getAnnuaire()->obtenirMailParId($this->idAnnuaire, $destinataireId);
}
if ($destinataire) {
if ($format == 'html') {
$envoie = $this->getMessagerie()->envoyerMail($envoyeur, $destinataire, $sujet, $contenu);
} else {
$envoie = $this->getMessagerie()->envoyerMailText($envoyeur, $destinataire, $sujet, $contenu);
}
if ($envoie) {
$info['message'] = "Votre message a bien été envoyé.";
foreach ($copies as $copie) {
$sujet = '[COPIE] '.$sujet;
$contenu = "Message original envoyé par $envoyeur pour $destinataire.\n--\n".$contenu;
$this->getMessagerie()->envoyerMailText($envoyeur, $copie, $sujet, $contenu);
}
} else {
$info['message'] = "Le message n'a pas pu être envoyé.";
}
} else {
$info['message'] = "Aucun courriel ne correspond à l'id du destinataire.";
}
} else {
$info['message'] = "Vous n'êtes pas inscrit à Tela Botanica avec le courriel : $envoyeur.\n".
"Veuillez saisir votre courriel d'inscription ou vous inscrire à Tela Botanica.";
}
return $info;
}
 
private function getMessagerie() {
if (!isset($this->messagerieModele)) {
$this->messagerieModele = new MessageControleur();
}
return $this->messagerieModele;
}
 
/*+----------------------------------------------------------------------------------------------------+*/
// PUT : ajout
 
public function createElement($donnees) {
$this->donnees = $donnees;
$this->idAnnuaire = Config::get('annuaire_defaut');
 
$infos = null;
if (isset($this->donnees['methode'])) {
$methode_demande = $this->donnees['methode'];
$methode = $this->traiterNomMethodePut($methode_demande);
if (method_exists($this, $methode)) {
$infos = $this->$methode();
} else {
$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é.";
}
 
if (!is_null($infos)) {
$this->envoyerJson($infos);
} else {
$info = 'Un problème est survenu : '.print_r($this->messages, true);
$this->envoyerTxt($info);
}
}
 
/**
* Permet d'identifier un utilisateur.
* RESSOURCE : /utilisateur
* POST :
* - methode = 'connexion' : methode doit valoir 'connexion' pour connecter l'utilisateur.
* - courriel : contient le courriel de l'utilisateur .
* - mdp : le mot de passe de l'utilisateur.
* - persistance : true si on veut laisser l'utilisateur connecté au delà de la session sinon false
* RÉPONSE :
* - identifie : indiquer si l'utilisateur a été identifié (true) ou pas (false)
* - message : contient un message d'information complémentaire de l'état.
*/
private function createConnexion() {
$courriel = stripslashes($this->donnees['courriel']);
$mdp = stripslashes($this->donnees['mdp']);
$persistance = (stripslashes($this->donnees['persistance']) == 'true') ? true : false;
 
$infos = null;
$infos['persistance'] = $persistance;
if ($this->verifierAcces($courriel, $mdp)) {
$infos['identifie'] = true;
$infos['message'] = "Bienvenu.";
$dureeCookie = 0;
if ($persistance === true) {
$dureeCookie = time()+3600*24*30;
$this->creerCookiePersistant($dureeCookie, $courriel, $mdp);
}
$this->creerCookieUtilisateur($dureeCookie, $courriel);
$infos['message'] = $_COOKIE;
} else {
$infos['identifie'] = false;
$infos['message'] = "Le courriel ou le mot de passe saisi est incorrect.";
}
return $infos;
}
}
?>
<?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 $donnees = null;
private $idAnnuaire = null;
private $utilisateurId = null;
private $metadonneeModele = null;
private $annuaireModele = null;
private $messagerieModele = null;
 
/*+----------------------------------------------------------------------------------------------------+*/
// GET : consultation
 
public function getElement($ressources){
$this->ressources = $ressources;
$this->idAnnuaire = Config::get('annuaire_defaut');
$infos = null;
 
if (isset($this->ressources[0])) {
if (preg_match('/^[0-9]+$/', $this->ressources[0])) {
// ATTENTION : Ces web services ne doivent être accessible que depuis des applis installées sur nos serveurs
// pour les communications inter-serveurs.
$this->controlerIpAutorisees();
$infos = $this->getInfosParId($this->ressources[0]);
} else {
$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 pour la requete GET.";
}
}
} 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);
}
}
 
 
/**
* Permet d'obtenir des infos pour un id utilisateur indiqué dans la ressource.
* RESSOURCE : /utilisateur/#id
* PARAMÊTRES : aucun
* RÉPONSE : Tableau possédant un courriel de la ressource en clé et en valeur :
* - id : identifiant numérique de l'utilisateur
* - pseudoUtilise : indique si on doit utiliser le pseudo à la place de Prénom NOM
* - pseudo : pseudo de l'utilisateur.
* - intitule : l'intitulé à affiche (choix auto entre "pseudo" et "prénom nom")
* - prenom : prénom
* - nom : nom de famille.
* - courriel : courriel
*/
public function getInfosParId($id_utilisateur) {
$infos = $this->getAnnuaire()->obtenirInfosUtilisateurParId($this->idAnnuaire, $id_utilisateur);
 
$infos['pseudoUtilise'] = $this->obtenirPseudoUtilise($id_utilisateur);
$infos['pseudo'] = $this->obtenirPseudo($id_utilisateur);
$infos['intitule'] = $this->formaterIntitule($infos);
 
return $infos;
}
 
/**
* Permet d'obtenir l'identité pour un id utilisateur indiqué dans la ressource.
* RESSOURCE : /utilisateur/#id
* PARAMÊTRES : aucun
* RÉPONSE : Tableau possédant un courriel de la ressource en clé et en valeur :
* - id : identifiant numérique de l'utilisateur
* - pseudoUtilise : indique si on doit utiliser le pseudo à la place de Prénom NOM
* - pseudo : pseudo de l'utilisateur.
* - intitule : l'intitulé à affiche (choix auto entre "pseudo" et "prénom nom")
* - prenom : prénom
* - nom : nom de famille.
* - courriel : courriel
*/
public function getIdentiteParId() {
$infos_utilisateurs = array();
$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);
$infos_utilisateurs[$courriel] = $utilisateur;
}
return $infos_utilisateurs;
}
 
/**
* Permet d'obtenir les prénoms et noms des courriels des utilisateurs indiqués dans la ressource.
* RESSOURCE : /utilisateur/prenom-nom-par-courriel/[courriel,courriel,...]
* PARAMÊTRES : aucun
* RÉPONSE : Tableau possédant un courriel de la ressource en clé et en valeur :
* - id : identifiant numérique de l'utilisateur
* - prenom : prénom
* - nom : nom de famille.
*/
public function getPrenomNomParCourriel() {
$courriels = explode(',', $this->ressources[0]);
$infos = $this->getAnnuaire()->obtenirPrenomNomParCourriel($this->idAnnuaire, $courriels);
$infous_courriel_minuscule = array();
foreach ($infos as $courriel => $utilisateur) {
$courriel = strtolower($courriel);
$infous_courriel_minuscule[$courriel] = $utilisateur;
}
return $infos;
}
 
/**
* Permet d'obtenir les identités des utilisateurs indiqués dans la ressource.
* RESSOURCE : /utilisateur/identite-par-courriel/[courriel,courriel,...]
* PARAMÊTRES : aucun
* RÉPONSE : Tableau possédant un courriel de la ressource en clé et en valeur :
* - id : identifiant numérique de l'utilisateur
* - pseudoUtilise : indique si on doit utiliser le pseudo à la place de Prénom NOM
* - pseudo : pseudo de l'utilisateur.
* - intitule : l'intitulé à affiche (choix auto entre "pseudo" et "prénom nom")
* - prenom : prénom
* - nom : nom de famille.
*/
public function getIdentiteParCourriel() {
$infos_utilisateurs = array();
$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);
$infos_utilisateurs[$courriel] = $utilisateur;
}
return $infos_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;
}
 
/*+----------------------------------------------------------------------------------------------------+*/
// POST : mise à jour
 
public function updateElement($ressources, $donnees) {
$this->ressources = $ressources;
$this->donnees = $donnees;
$this->idAnnuaire = Config::get('annuaire_defaut');
 
$infos = null;
if (isset($this->ressources[0])) {
$this->utilisateurId = array_shift($this->ressources);
if (isset($this->ressources[0])) {
$methode_demande = array_shift($this->ressources);
$methode = $this->traiterNomMethodePost($methode_demande);
if (method_exists($this, $methode)) {
$infos = $this->$methode();
} else {
$this->messages[] = "Ce type de ressource '$methode_demande' n'est pas disponible pour la requete POST.";
}
} else {
$this->messages[] = "La seconde ressource du service pour les requêtes POST doit correspondre au type de ressource demandée.";
}
} else {
$this->messages[] = "La première ressource du service pour les requêtes POST doit être l'identifiant de l'utilisateur.";
}
 
if (!is_null($infos)) {
$this->envoyerJson($infos);
} else {
$info = 'Un problème est survenu : '.print_r($this->messages, true);
$this->envoyerTxt($info);
}
}
 
/**
* Permet d'envoyer un message à un utilisateur.
* RESSOURCE : /utilisateur/[id]/message
* POST :
* - sujet : contient le sujet du message à envoyer.
* - message : contient le contenu du message à envoyer.
* - utilisateur_courriel : contient le courriel de l'utilisateur qui envoie le message (Il doit être
* inscrit dans l'annuaire par défaut de Tela Botanica).
* - copies : peut contenir une liste de courriels séparés par des virguels auxquels une copie du
* message sera envoyée.
* - format (optionnel) : text ou html
* RÉPONSE :
* - message : contient le message d'information concernant l'envoie.
*/
private function updateMessage() {
$destinataireId = $this->utilisateurId;//$this->donnees['destinataire_id'];
$sujet = stripslashes($this->donnees['sujet']);
$contenu = stripslashes($this->donnees['message']);
$envoyeur = $this->donnees['utilisateur_courriel'];
$copies = array_key_exists('copies', $this->donnees) ? explode(',', $this->donnees['copies']) : null;
$format = isset($this->donnees['format']) ? $this->donnees['format'] : 'text';
 
$info = null;
if ($this->estAutoriseMessagerie($envoyeur) || $this->getAnnuaire()->utilisateurExisteParMail($this->idAnnuaire, $envoyeur)) {
// il est possible de passer directement un email ou bien un id utilisateur
if(filter_var($destinataireId, FILTER_VALIDATE_EMAIL)) {
$destinataire = $destinataireId;
} else {
$destinataire = $this->getAnnuaire()->obtenirMailParId($this->idAnnuaire, $destinataireId);
}
if ($destinataire) {
if ($format == 'html') {
$envoie = $this->getMessagerie()->envoyerMail($envoyeur, $destinataire, $sujet, $contenu);
} else {
$envoie = $this->getMessagerie()->envoyerMailText($envoyeur, $destinataire, $sujet, $contenu);
}
if ($envoie) {
$info['message'] = "Votre message a bien été envoyé.";
foreach ($copies as $copie) {
$sujet = '[COPIE] '.$sujet;
$contenu = "Message original envoyé par $envoyeur pour $destinataire.\n--\n".$contenu;
$this->getMessagerie()->envoyerMailText($envoyeur, $copie, $sujet, $contenu);
}
} else {
$info['message'] = "Le message n'a pas pu être envoyé.";
}
} else {
$info['message'] = "Aucun courriel ne correspond à l'id du destinataire.";
}
} else {
$info['message'] = "Vous n'êtes pas inscrit à Tela Botanica avec le courriel : $envoyeur.\n".
"Veuillez saisir votre courriel d'inscription ou vous inscrire à Tela Botanica.";
}
return $info;
}
 
private function getMessagerie() {
if (!isset($this->messagerieModele)) {
$this->messagerieModele = new MessageControleur();
}
return $this->messagerieModele;
}
 
/*+----------------------------------------------------------------------------------------------------+*/
// PUT : ajout
 
public function createElement($donnees) {
$this->donnees = $donnees;
$this->idAnnuaire = Config::get('annuaire_defaut');
 
$infos = null;
if (isset($this->donnees['methode'])) {
$methode_demande = $this->donnees['methode'];
$methode = $this->traiterNomMethodePut($methode_demande);
if (method_exists($this, $methode)) {
$infos = $this->$methode();
} else {
$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é.";
}
 
if (!is_null($infos)) {
$this->envoyerJson($infos);
} else {
$info = 'Un problème est survenu : '.print_r($this->messages, true);
$this->envoyerTxt($info);
}
}
 
/**
* Permet d'identifier un utilisateur.
* RESSOURCE : /utilisateur
* POST :
* - methode = 'connexion' : methode doit valoir 'connexion' pour connecter l'utilisateur.
* - courriel : contient le courriel de l'utilisateur .
* - mdp : le mot de passe de l'utilisateur.
* - persistance : true si on veut laisser l'utilisateur connecté au delà de la session sinon false
* RÉPONSE :
* - identifie : indiquer si l'utilisateur a été identifié (true) ou pas (false)
* - message : contient un message d'information complémentaire de l'état.
*/
private function createConnexion() {
$courriel = stripslashes($this->donnees['courriel']);
$mdp = stripslashes($this->donnees['mdp']);
$persistance = (stripslashes($this->donnees['persistance']) == 'true') ? true : false;
 
$infos = null;
$infos['persistance'] = $persistance;
if ($this->verifierAcces($courriel, $mdp)) {
$infos['identifie'] = true;
$infos['message'] = "Bienvenu.";
$dureeCookie = 0;
if ($persistance === true) {
$dureeCookie = time()+3600*24*30;
$this->creerCookiePersistant($dureeCookie, $courriel, $mdp);
}
$this->creerCookieUtilisateur($dureeCookie, $courriel);
$infos['message'] = $_COOKIE;
} else {
$infos['identifie'] = false;
$infos['message'] = "Le courriel ou le mot de passe saisi est incorrect.";
}
return $infos;
}
}
?>
/trunk/modeles/AnnuaireModele.php
292,7 → 292,7
*
*/
public function chargerNombreAnnuaireListeInscritsParPays($id_annuaire, $ids_recherchees) {
$requete_informations_annuaire = 'SELECT aa_bdd, aa_table '.
$requete_informations_annuaire = 'SELECT aa_bdd, aa_table '.
'FROM annu_annuaire '.
'WHERE aa_id_annuaire = '.$id_annuaire.' ';
 
685,7 → 685,7
 
/**
* Renvoie le nom et prénom associé au mail d'un utilisateur dans un annuaire donné
* @param int $id_annuair l'identifiant de l'annuaire
* @param int $id_annuaire l'identifiant de l'annuaire
* @param array $courriels un tableau de courriel d'utilisateur
* @return array un tableau contenant en clé le courriel et en valeur un tableau avec le prénom dans le champ 'prenom' et le nom dans le champ 'nom'.
*/
728,6 → 728,42
 
}
 
/**
* Renvoie les infos pour un utilisateur et un annuaire donné
* @param int $id_annuaire l'identifiant de l'annuaire
* @param array $id identifiant d'utilisateur
* @return array un tableau.
*/
public function obtenirInfosUtilisateurParId($id_annuaire, $id_utilisateur) {
$requete = 'SELECT * '.
'FROM annu_annuaire '.
'WHERE aa_id_annuaire = '.$id_annuaire.' ';
 
$annuaire = $this->requeteUn($requete);
if (!$annuaire) {
return false;
}
 
$mappageInfos = $this->obtenirChampsMappageAnnuaire($id_annuaire, $id_utilisateur);
// on ne garde que les champs de mappage correspondant au champ de l'annuaire principal
$mappage = $mappageInfos[0];
$requete = 'SELECT '.$mappage['champ_id'].', '.$mappage['champ_mail'].', '.$mappage['champ_prenom'].', '.$mappage['champ_nom'].' '.
'FROM '.$annuaire['aa_bdd'].'.'.$annuaire['aa_table'].' '.
'WHERE '.$mappage['champ_id'].' = '.$id_utilisateur.' ';
$resultat = $this->requeteUn($requete);
 
$infos = false;
if ($resultat) {
$id = $resultat[$mappage['champ_id']];
$prenom = AppControleur::formaterMotPremiereLettreChaqueMotEnMajuscule($resultat[$mappage['champ_prenom']]);
$nom = AppControleur::formaterMotEnMajuscule($resultat[$mappage['champ_nom']]);
$courriel = $resultat[$mappage['champ_mail']];
 
$infos = array('id' => $id, 'prenom' => $prenom, 'nom' => $nom, 'courriel' => $courriel);
}
return $infos;
}
 
// TODO: commenter
public function comparerIdentifiantMotDePasse($id_annuaire, $id_utilisateur, $mot_de_passe) {
$requete_infos_annuaire = 'SELECT * '.
1157,4 → 1193,4
return false;
}
}
?>
?>