Subversion Repositories eFlore/Applications.cel

Rev

Rev 1492 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1490 aurelien 1
<?php
2461 jpm 2
// declare(encoding='UTF-8');
3
/**
4
 * Service encapsulant l'envoie de courriel via le web service de l'annuaire.
5
 *
6
 * @internal   Mininum PHP version : 5.2
7
 * @category   CEL
8
 * @package    Services
9
 * @subpackage Encapsulation
10
 * @version    0.1
11
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
12
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
13
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
14
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
15
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
16
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
17
 */
1492 aurelien 18
class CelMessage extends Cel {
2461 jpm 19
 
1492 aurelien 20
	private $mode = 'obs';
2461 jpm 21
 
1490 aurelien 22
	/**
23
	* Méthode appelée avec une requête de type POST avec un identifiant d'obs.
24
	* Envoi un message à l'utilisateur ayant saisi l'observation
25
	*
1492 aurelien 26
	* @param int $uid[0] mode interrogation (obs ou image)
27
	* @param int $uid[1] identifiant observation ou image suivant le mode
1490 aurelien 28
	* @param pairs array tableau contenant les valeurs du formulaire de messagerie
1492 aurelien 29
	* (même format que le web service messagerie utilisateur de l'annuaire)
1490 aurelien 30
	*/
2461 jpm 31
	public function updateElement($uid,$pairs) {
1490 aurelien 32
		$this->verifierParametresObligatoires($uid, $pairs);
2461 jpm 33
		if (isset($pairs['type_envoi'])) {
1490 aurelien 34
			unset($pairs['type_envoi']);
35
		}
2461 jpm 36
 
37
		if ($uid[0] != 'obs' && $uid[0] != 'image') {
1490 aurelien 38
			$info = array();
1492 aurelien 39
			$info = 'Aucun mode n\'a été indiqué ';
1490 aurelien 40
			$this->envoyer($info, 'text/html', 'utf-8', false);
41
			exit;
1492 aurelien 42
		} else {
43
			$this->mode = $uid[0];
44
			$id = $uid[1];
2461 jpm 45
 
1492 aurelien 46
			$methode = 'obtenirCourrielUtilisateurPourId'.ucwords($this->mode);
47
			$courriel_utilisateur = $this->$methode($id);
2461 jpm 48
 
49
			if ($courriel_utilisateur !== false) {
1492 aurelien 50
				$resultat = $this->envoyerRequeteMessage($courriel_utilisateur, $pairs);
51
				$this->envoyerJson($resultat);
52
				exit;
53
			} else {
54
				$info = array();
55
				$info = 'Impossible de trouver le courriel associé à cet identifiant ';
56
				$this->envoyer($info, 'text/html', 'utf-8', false);
57
				exit;
58
			}
1490 aurelien 59
		}
60
	}
2461 jpm 61
 
1490 aurelien 62
	private function envoyerRequeteMessage($courriel_utilisateur, $pairs) {
63
		$base_url = $this->config['settings']['baseURLServicesAnnuaireTpl'];
64
		$rest_client = $this->getRestClient();
65
		$url_messagerie = str_replace('%s', "utilisateur/".urlencode($courriel_utilisateur)."/message", $base_url);
2461 jpm 66
		$resultat_json = $rest_client->modifier($url_messagerie, $pairs);
1490 aurelien 67
		$resultat = json_decode($resultat_json);
68
		return $resultat;
69
	}
2461 jpm 70
 
1490 aurelien 71
	private function verifierParametresObligatoires($uid ,$params) {
72
		$params_obligatoires = array('sujet', 'message', 'utilisateur_courriel', 'destinataire_id');
73
		$info = array();
2461 jpm 74
 
1492 aurelien 75
		if(!isset($uid[1]) || !is_numeric($uid[1])) {
76
			$info .= 'l\' identifiant doit être un entier ';
1490 aurelien 77
		}
2461 jpm 78
 
1490 aurelien 79
		foreach($params_obligatoires as $param) {
80
			if(!isset($params[$param]) || trim($params[$param]) == "") {
81
				$info = 'le paramètre '.$param.' doit exister et ne peut pas être vide ';
82
			}
83
		}
2461 jpm 84
 
1490 aurelien 85
		if(!empty($info)) {
86
			$this->envoyer($info, 'text/html', 'utf-8', false);
87
			exit;
88
		}
89
	}
2461 jpm 90
 
1490 aurelien 91
	private function obtenirCourrielUtilisateurPourIdObs($id_obs) {
1492 aurelien 92
		$rechercheObservation = new RechercheObservation($this->config);
93
		return $rechercheObservation->obtenirCourrielUtilisateurPourIdObs($id_obs);
1490 aurelien 94
	}
2461 jpm 95
 
1492 aurelien 96
	private function obtenirCourrielUtilisateurPourIdImage($id_image) {
97
		$rechercheImage = new RechercheImage($this->config);
98
		return $rechercheImage->obtenirCourrielUtilisateurPourIdImage($id_image);
99
	}
2461 jpm 100
}