Subversion Repositories eFlore/Applications.cel

Rev

Rev 2461 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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