Subversion Repositories Applications.reseau

Rev

Rev 5 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5 Rev 77
Line 38... Line 38...
38
	protected function traiterNomMethodeExecuter($nom) {
38
	protected function traiterNomMethodeExecuter($nom) {
39
		$methode = 'executer';
39
		$methode = 'executer';
40
		$methode .= str_replace(' ', '', ucwords(str_replace('-', ' ', strtolower($nom))));
40
		$methode .= str_replace(' ', '', ucwords(str_replace('-', ' ', strtolower($nom))));
41
		return $methode;
41
		return $methode;
42
	}
42
	}
43
	
-
 
44
	//+----------------------------------------------------------------------------------------------------------------+
-
 
45
	// GESTION des CLASSES CHARGÉES à la DEMANDE
-
 
46
	
-
 
47
	protected function getDao() {
-
 
48
		if (! isset($this->dao)) {
-
 
49
			$this->dao = new Dao();
-
 
50
		}
-
 
51
		return $this->dao;
-
 
52
	}
-
 
53
	
-
 
54
	//+----------------------------------------------------------------------------------------------------------------+
-
 
55
	// GESTION DE MÉTHODES COMMUNES ENTRE LES SERVICES
-
 
56
	
-
 
57
	protected function getUrlImage($id, $format = 'L') {
-
 
58
		$url_tpl = $this->config['chemins']['celImgUrlTpl'];
-
 
59
		$id = sprintf('%09s', $id).$format;
-
 
60
		$url = sprintf($url_tpl, $id); 
-
 
61
		return $url;
-
 
62
	}
-
 
63
	
-
 
64
	protected function encoderMotCle($mot_cle) {
-
 
65
		return md5(mb_strtolower($mot_cle));
-
 
66
	}
-
 
67
	
-
 
68
	private function protegerMotsCles($mots_cles, $type) {
-
 
69
		$separateur = ($type == self::TYPE_IMG) ? ',' : ';' ;
-
 
70
		$mots_cles_a_proteger = explode($separateur,rtrim(trim($mots_cles), $separateur));
-
 
71
		foreach ($mots_cles_a_proteger as $mot) {
-
 
72
			$mots_cles_proteges[] = $this->bdd->quote($mot);
-
 
73
		}
-
 
74
		$mots_cles = implode(',', $mots_cles_proteges);
-
 
75
		return $mots_cles;
-
 
76
	}
-
 
77
	
-
 
78
	protected function tronquerCourriel($courriel) {
-
 
79
		$courriel = preg_replace('/[^@]+$/i', '...', $courriel);
-
 
80
		return $courriel;
-
 
81
	}
-
 
82
	
-
 
83
	protected function nettoyerTableau($tableau) {
-
 
84
		foreach ($tableau as $cle => $valeur) {
-
 
85
			if (is_array($valeur)) {
-
 
86
				$valeur = $this->nettoyerTableau($valeur);
-
 
87
			} else {
-
 
88
				$valeur = $this->nettoyerTexte($valeur);
-
 
89
			}
-
 
90
			$tableau[$cle] = $valeur;
-
 
91
		}
-
 
92
		return $tableau;
-
 
93
	}
-
 
94
	
-
 
95
	protected function nettoyerTexte($txt) {
-
 
96
		$txt = preg_replace('/&(?!([a-z]+|#[0-9]+|#x[0-9][a-f]+);)/i', '&', $txt);
-
 
97
		$txt = preg_replace('/^(?:000null|null)$/i', '', $txt);
-
 
98
		return $txt;
-
 
99
	}
-
 
100
	
-
 
101
	protected function etreVide($valeur) {
-
 
102
		$vide = false;
-
 
103
		if ($valeur == '' || $valeur == 'null'|| $valeur == '000null' || $valeur == '0') {
-
 
104
			$vide = true;
-
 
105
		}
-
 
106
		return $vide;
-
 
107
	}
-
 
108
	
-
 
109
	protected function formaterDate($date_heure_mysql, $format = '%A %d %B %Y à %H:%M') {
-
 
110
		$date_formatee = '';
-
 
111
		if (!$this->etreVide($date_heure_mysql)) {
-
 
112
			$timestamp = $this->convertirDateHeureMysqlEnTimestamp($date_heure_mysql);
-
 
113
			$date_formatee = strftime($format, $timestamp);
-
 
114
		}
-
 
115
		return $date_formatee;
-
 
116
	}
-
 
Line 117... Line -...
117
 
-
 
118
	protected function convertirDateHeureMysqlEnTimestamp($date_heure_mysql){
-
 
119
       $val = explode(' ', $date_heure_mysql);
-
 
120
       $date = explode('-', $val[0]);
-
 
121
       $heure = explode(':', $val[1]);
-
 
122
       return mktime((int) $heure[0], (int) $heure[1], (int) $heure[2], (int) $date[1], (int) $date[2], (int) $date[0]);
-
 
123
	}
-
 
124
	
-
 
125
	//+----------------------------------------------------------------------------------------------------------------+
-
 
126
	// GESTION DE L'IDENTIFICATION et des UTILISATEURS
-
 
127
	
-
 
128
	protected function getAuthIdentifiant() {
-
 
129
		$id = (isset($_SERVER['PHP_AUTH_USER'])) ? $_SERVER['PHP_AUTH_USER'] : null;
-
 
130
		return $id;
-
 
131
	}
-
 
132
	
-
 
133
	protected function getAuthMotDePasse() {
-
 
134
		$mdp = (isset($_SERVER['PHP_AUTH_PW'])) ? $_SERVER['PHP_AUTH_PW'] : null;
-
 
135
		return $mdp;
-
 
136
	}
-
 
137
	
-
 
138
	protected function authentifierAdmin() { 
-
 
139
		$message_accueil = "Veuillez vous identifier avec votre compte Tela Botanica.";
-
 
140
		$message_echec = "Accès limité aux administrateurs du CEL.\n".
-
 
141
			"Votre tentative d'identification a échoué.\n".
-
 
142
			"Actualiser la page pour essayer à nouveau si vous êtes bien inscrit comme administrateur.";
-
 
143
		return $this->authentifier($message_accueil, $message_echec, 'Admin');
-
 
144
	}
-
 
145
	
-
 
146
	protected function authentifierUtilisateur() { 
-
 
147
		$message_accueil = "Veuillez vous identifier avec votre compte Tela Botanica.";
-
 
148
		$message_echec = "Accès limité aux utilisateur du CEL.\n".
-
 
149
			"Inscrivez vous http://www.tela-botanica.org/page:inscription pour le devenir.\n".
-
 
150
			"Votre tentative d'identification a échoué.\n".
-
 
151
			"Actualiser la page pour essayer à nouveau si vous êtes déjà inscrit ou contacter 'accueil@tela-botanica.org'.";
-
 
152
		return $this->authentifier($message_accueil, $message_echec, 'Utilisateur');
-
 
153
	}
-
 
154
	
-
 
155
	private function authentifier($message_accueil, $message_echec, $type) {
-
 
156
		$id = $this->getAuthIdentifiant();
-
 
157
		if (!isset($id)) {
-
 
158
			$this->envoyerAuth($message_accueil, $message_echec);
-
 
159
		} else {
-
 
160
			if ($type == 'Utilisateur' && $this->getAuthMotDePasse() == 'debug') {
-
 
161
				$autorisation = true;
-
 
162
			} else {
-
 
163
				$methodeAutorisation = "etre{$type}Autorise";
-
 
164
				$autorisation = $this->$methodeAutorisation();
-
 
165
			}
-
 
166
			if ($autorisation == false) {
-
 
167
				$this->envoyerAuth($message_accueil, $message_echec);
-
 
168
			}
-
 
169
		}
-
 
170
		return true;
-
 
171
	} 
-
 
172
    
-
 
173
	protected function etreUtilisateurAutorise() {
-
 
174
		$identifiant = $this->getAuthIdentifiant();
-
 
175
		$mdp = md5($this->getAuthMotDePasse());
-
 
176
		$url = sprintf($this->config['authentification']['serviceUrlTpl'], $identifiant, $mdp);
-
 
177
		$json = $this->getDao()->consulter($url);
-
 
178
		$existe = json_decode($json);
-
 
179
		
-
 
180
		$autorisation = (isset($existe) && $existe) ? true :false;
-
 
181
		return $autorisation;
-
 
182
	}
-
 
183
	
-
 
184
	protected function etreAdminAutorise($identifiant) {
-
 
185
		$identifiant = $this->getAuthIdentifiant();
-
 
186
		$autorisation = ($this->etreUtilisateurAutorise() && $this->etreAdminCel($identifiant)) ? true : false;
-
 
187
		return $autorisation;
-
 
188
	}
-
 
189
	
-
 
190
	protected function etreAdminCel($courriel) {
-
 
191
		$admins = $this->config['authentification']['administrateurs'];
-
 
192
		$courriels_autorises = explode(',', $admins);
-
 
193
 
-
 
194
		$autorisation = (in_array($courriel, $courriels_autorises)) ? true : false ;
-
 
195
		return $autorisation;
-
 
196
	}
-
 
197
	
-
 
198
	protected function recupererUtilisateursIdentite(Array $courriels) {
-
 
199
		// Récupération des données au format Json
-
 
200
		$service = "utilisateur/identite-par-courriel/".implode(',', $courriels);
-
 
201
		$url = sprintf($this->config['chemins']['baseURLServicesAnnuaireTpl'], $service);
-
 
202
		$json = $this->getDao()->consulter($url);
-
 
203
		$utilisateurs = json_decode($json);
-
 
204
		foreach ($courriels as $courriel) {
-
 
205
			$info = array('id' => null, 'intitule' => '');
-
 
206
			if (isset($utilisateurs->$courriel)) {
-
 
207
				$info['intitule'] = $utilisateurs->$courriel->intitule;
-
 
208
				$info['id'] = $utilisateurs->$courriel->id;
-
 
209
			} else {
-
 
210
				$info['intitule'] = $this->tronquerCourriel($courriel);
-
 
211
			}
-
 
212
			$noms[$courriel] = $info;
-
 
213
		}	
-
 
214
		return $noms;
-
 
215
	}
-
 
216
	
43
 
217
	//+----------------------------------------------------------------------------------------------------------------+
44
	//+----------------------------------------------------------------------------------------------------------------+
Line 218... Line 45...
218
	// GESTION de l'ENVOIE au NAVIGATEUR
45
	// GESTION de l'ENVOI au NAVIGATEUR
219
 
46
 
220
	protected function envoyerJsonp($donnees = null, $encodage = 'utf-8') {
47
	protected function envoyerJsonp($donnees = null, $encodage = 'utf-8') {
221
		$contenu = $_GET['callback'].'('.json_encode($donnees).');';
48
		$contenu = $_GET['callback'].'('.json_encode($donnees).');';
Line 266... Line 93...
266
		} else if (!is_null($mime) && is_null($encodage)) {
93
		} else if (!is_null($mime) && is_null($encodage)) {
267
			header("Content-Type: $mime");
94
			header("Content-Type: $mime");
268
		}
95
		}
269
		print_r($contenu);
96
		print_r($contenu);
270
	}
97
	}
271
		
-
 
272
	private function envoyerAuth($message_accueil, $message_echec) {
-
 
273
		header('HTTP/1.0 401 Unauthorized');
-
 
274
		header('WWW-Authenticate: Basic realm="'.mb_convert_encoding($message_accueil, 'ISO-8859-1', 'UTF-8').'"');
-
 
275
		header('Content-type: text/plain; charset=UTF-8');
-
 
276
		print $message_echec;
-
 
277
		exit(0);
-
 
278
	}
-
 
Line 279... Line 98...
279
	
98
	
280
	//+----------------------------------------------------------------------------------------------------------------+
99
	//+----------------------------------------------------------------------------------------------------------------+
Line 281... Line 100...
281
	// GESTION DES SQUELETTES (PHP, TXT...)
100
	// GESTION DES SQUELETTES (PHP, TXT...)