* @author Jean-Pascal MILCENT * @author Aurelien PERONNET * @license GPL v3 * @license CECILL v2 * @copyright 1999-2014 Tela Botanica */ class CelMessage extends Cel { private $mode = 'obs'; /** * Méthode appelée avec une requête de type POST avec un identifiant d'obs. * Envoi un message à l'utilisateur ayant saisi l'observation * * @param int $uid[0] mode interrogation (obs ou image) * @param int $uid[1] identifiant observation ou image suivant le mode * @param pairs array tableau contenant les valeurs du formulaire de messagerie * (même format que le web service messagerie utilisateur de l'annuaire) */ public function updateElement($uid,$pairs) { $this->verifierParametresObligatoires($uid, $pairs); if (isset($pairs['type_envoi'])) { unset($pairs['type_envoi']); } if ($uid[0] != 'obs' && $uid[0] != 'image') { $info = array(); $info = 'Aucun mode n\'a été indiqué '; $this->envoyer($info, 'text/html', 'utf-8', false); exit; } else { $this->mode = $uid[0]; $id = $uid[1]; $methode = 'obtenirCourrielUtilisateurPourId'.ucwords($this->mode); $courriel_utilisateur = $this->$methode($id); if ($courriel_utilisateur !== false) { $resultat = $this->envoyerRequeteMessage($courriel_utilisateur, $pairs); $this->envoyerJson($resultat); exit; } else { $info = array(); $info = 'Impossible de trouver le courriel associé à cet identifiant '; $this->envoyer($info, 'text/html', 'utf-8', false); exit; } } } private function envoyerRequeteMessage($courriel_utilisateur, $pairs) { $base_url = $this->config['settings']['baseURLServicesAnnuaireTpl']; $rest_client = $this->getRestClient(); $url_messagerie = str_replace('%s', "utilisateur/".urlencode($courriel_utilisateur)."/message", $base_url); $resultat_json = $rest_client->modifier($url_messagerie, $pairs); $resultat = json_decode($resultat_json); return $resultat; } private function verifierParametresObligatoires($uid ,$params) { $params_obligatoires = array('sujet', 'message', 'utilisateur_courriel', 'destinataire_id'); $info = array(); if(!isset($uid[1]) || !is_numeric($uid[1])) { $info .= 'l\' identifiant doit être un entier '; } foreach($params_obligatoires as $param) { if(!isset($params[$param]) || trim($params[$param]) == "") { $info = 'le paramètre '.$param.' doit exister et ne peut pas être vide '; } } if(!empty($info)) { $this->envoyer($info, 'text/html', 'utf-8', false); exit; } } private function obtenirCourrielUtilisateurPourIdObs($id_obs) { $rechercheObservation = new RechercheObservation($this->config); return $rechercheObservation->obtenirCourrielUtilisateurPourIdObs($id_obs); } private function obtenirCourrielUtilisateurPourIdImage($id_image) { $rechercheImage = new RechercheImage($this->config); return $rechercheImage->obtenirCourrielUtilisateurPourIdImage($id_image); } }