Subversion Repositories Applications.annuaire

Rev

Rev 388 | Rev 394 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 388 Rev 390
Line 58... Line 58...
58
 
58
 
59
	protected function envoyerJson($donnees, $encodage = 'utf-8') {
59
	protected function envoyerJson($donnees, $encodage = 'utf-8') {
60
		$contenu = json_encode($donnees);
60
		$contenu = json_encode($donnees);
61
		$this->envoyer($contenu, 'application/json', $encodage, false);
61
		$this->envoyer($contenu, 'application/json', $encodage, false);
62
	}
62
	}
63
	
63
 
64
	protected function envoyerJsonVar($variable, $donnees = null, $encodage = 'utf-8') {
64
	protected function envoyerJsonVar($variable, $donnees = null, $encodage = 'utf-8') {
65
		$contenu = "var $variable = ".json_encode($donnees);
65
		$contenu = "var $variable = ".json_encode($donnees);
66
		$this->envoyer($contenu, 'text/html', $encodage, false);
66
		$this->envoyer($contenu, 'text/html', $encodage, false);
67
	}
67
	}
68
	
68
 
69
	protected function envoyerJsonp($donnees = null, $encodage = 'utf-8') {
69
	protected function envoyerJsonp($donnees = null, $encodage = 'utf-8') {
70
		$contenu = $_GET['callback'].'('.json_encode($donnees).');';
70
		$contenu = $_GET['callback'].'('.json_encode($donnees).');';
71
		$this->envoyer($contenu, 'text/html', $encodage, false);
71
		$this->envoyer($contenu, 'text/html', $encodage, false);
72
	}
72
	}
73
	
73
 
74
	protected function envoyerTxt($donnees, $encodage = 'utf-8') {
74
	protected function envoyerTxt($donnees, $encodage = 'utf-8') {
75
		$this->envoyer($contenu, 'text/html', $encodage, false);
75
		$this->envoyer($contenu, 'text/html', $encodage, false);
Line 76... Line 76...
76
	}
76
	}
Line 118... Line 118...
118
		} else if (!is_null($mime) && is_null($encodage)) {
118
		} else if (!is_null($mime) && is_null($encodage)) {
119
			header("Content-Type: $mime");
119
			header("Content-Type: $mime");
120
		}
120
		}
121
		print $contenu;
121
		print $contenu;
122
	}
122
	}
123
	
123
 
124
	private function envoyerAuth($message_accueil, $message_echec) {
124
	private function envoyerAuth($message_accueil, $message_echec) {
125
		header('HTTP/1.0 401 Unauthorized');
125
		header('HTTP/1.0 401 Unauthorized');
126
		header('WWW-Authenticate: Basic realm="'.mb_convert_encoding($message_accueil, 'ISO-8859-1', 'UTF-8').'"');
126
		header('WWW-Authenticate: Basic realm="'.mb_convert_encoding($message_accueil, 'ISO-8859-1', 'UTF-8').'"');
127
		header('Content-type: text/plain; charset=UTF-8');
127
		header('Content-type: text/plain; charset=UTF-8');
128
		print $message_echec;
128
		print $message_echec;
129
		exit(0);
129
		exit(0);
130
	}
130
	}
131
	
131
 
132
	//+----------------------------------------------------------------------------------------------------------------+
132
	//+----------------------------------------------------------------------------------------------------------------+
133
	// GESTION de la BASE de DONNÉES
133
	// GESTION de la BASE de DONNÉES
134
	
134
 
135
	private function connecterPDO($config, $base = 'database') {
135
	private function connecterPDO($config, $base = 'database') {
136
        $cfg = $config[$base];
136
  		$cfg = $config[$base];
-
 
137
        // ATTENTION : la connexin à la bdd peut échouer si l'host vaut localhost. Utiliser 127.0.0.1 à la place.
137
		$dsn = $cfg['phptype'].':dbname='.$cfg['database'].';host='.$cfg['hostspec'];
138
		$dsn = $cfg['phptype'].':dbname='.$cfg['database'].';host='.$cfg['hostspec'];
138
		try {
139
		try {
-
 
140
    		// Création de la connexion en UTF-8 à la BDD
139
    		$PDO = new PDO($dsn, $cfg['username'], $cfg['password']);
141
			$PDO = new PDO($dsn, $cfg['username'], $cfg['password'], array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"));
140
		} catch (PDOException $e) {
142
		} catch (PDOException $e) {
141
    		echo 'La connexion à la base de donnée via PDO a échouée : ' . $e->getMessage();
143
    		echo 'La connexion à la base de donnée via PDO a échouée : ' .$dsn. $e->getMessage();
142
		}
144
		}
143
		// Passe en UTF-8 la connexion à la BDD
-
 
144
		$PDO->exec("SET NAMES 'utf8'");
-
 
145
		// Affiche les erreurs détectées par PDO (sinon mode silencieux => aucune erreur affiché)
145
		// Affiche les erreurs détectées par PDO (sinon mode silencieux => aucune erreur affiché)
146
		$PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
146
		$PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
147
        return $PDO;
147
        return $PDO;
148
	}
148
	}
Line 156... Line 156...
156
		return $sortie;
156
		return $sortie;
157
	}
157
	}
Line 158... Line 158...
158
 
158
 
159
	//+----------------------------------------------------------------------------------------------------------------+
159
	//+----------------------------------------------------------------------------------------------------------------+
160
	// TRAITEMENT des URLs et des PARAMÊTRES
160
	// TRAITEMENT des URLs et des PARAMÊTRES
161
	
161
 
162
	protected function traiterNomMethodeGet($nom) {
162
	protected function traiterNomMethodeGet($nom) {
163
		$methode = 'get';
163
		$methode = 'get';
164
		$methode .= str_replace(' ', '', ucwords(str_replace('-', ' ', strtolower($nom))));
164
		$methode .= str_replace(' ', '', ucwords(str_replace('-', ' ', strtolower($nom))));
165
		return $methode;
165
		return $methode;
166
	}
166
	}
167
	
167
 
168
	protected function traiterNomMethodePost($nom) {
168
	protected function traiterNomMethodePost($nom) {
169
		$methode = 'update';
169
		$methode = 'update';
170
		$methode .= str_replace(' ', '', ucwords(str_replace('-', ' ', strtolower($nom))));
170
		$methode .= str_replace(' ', '', ucwords(str_replace('-', ' ', strtolower($nom))));
171
		return $methode;
171
		return $methode;
172
	}
172
	}
173
	
173
 
174
	protected function traiterParametresUrl($params_attendu, $params, $pourBDD = true) {
174
	protected function traiterParametresUrl($params_attendu, $params, $pourBDD = true) {
175
		$sortie = array();
175
		$sortie = array();
176
		foreach ($params_attendu as $num => $nom) {
176
		foreach ($params_attendu as $num => $nom) {
177
			if (isset($params[$num]) && $params[$num] != '*') {
177
			if (isset($params[$num]) && $params[$num] != '*') {
Line 192... Line 192...
192
		return $sortie;
192
		return $sortie;
193
	}
193
	}
Line 194... Line 194...
194
 
194
 
195
	//+----------------------------------------------------------------------------------------------------------------+
195
	//+----------------------------------------------------------------------------------------------------------------+
196
	// GESTION DE L'IDENTIFICATION
196
	// GESTION DE L'IDENTIFICATION
197
	
197
 
198
	protected function getIdentification(&$params) {
198
	protected function getIdentification(&$params) {
199
		// Initialisation des variables
199
		// Initialisation des variables
Line 200... Line 200...
200
		$utilisateur = array(0, session_id());
200
		$utilisateur = array(0, session_id());
Line 232... Line 232...
232
	}
232
	}
Line 233... Line 233...
233
 
233
 
234
	protected function getUtilisateur() {
234
	protected function getUtilisateur() {
235
		return (isset($_SESSION['coel_utilisateur']) ? $_SESSION['coel_utilisateur'] : '');
235
		return (isset($_SESSION['coel_utilisateur']) ? $_SESSION['coel_utilisateur'] : '');
236
	}
236
	}
237
	
237
 
238
	protected function authentifier() {
238
	protected function authentifier() {
239
		if (!isset($_SERVER['PHP_AUTH_USER'])) {
239
		if (!isset($_SERVER['PHP_AUTH_USER'])) {
240
			header('WWW-Authenticate: Basic realm="www.tela-botanica.org"');
240
			header('WWW-Authenticate: Basic realm="www.tela-botanica.org"');
241
			header('HTTP/1.0 401 Unauthorized');
241
			header('HTTP/1.0 401 Unauthorized');
Line 259... Line 259...
259
		$query = 'SELECT '.$this->config['database_ident']['ann_id'].' AS name '.
259
		$query = 'SELECT '.$this->config['database_ident']['ann_id'].' AS name '.
260
			'FROM '.$this->config['database_ident']['database'].'.'.$this->config['database_ident']['annuaire'].' '.
260
			'FROM '.$this->config['database_ident']['database'].'.'.$this->config['database_ident']['annuaire'].' '.
261
			'WHERE '.$this->config['database_ident']['ann_id'].' = '.$this->bdd->quote($id).' '.
261
			'WHERE '.$this->config['database_ident']['ann_id'].' = '.$this->bdd->quote($id).' '.
262
			'	AND '.$this->config['database_ident']['ann_pwd'].' = '.$this->config['database_ident']['pass_crypt_funct'].'('.$this->bdd->quote($_SERVER['PHP_AUTH_PW']).')' ;
262
			'	AND '.$this->config['database_ident']['ann_pwd'].' = '.$this->config['database_ident']['pass_crypt_funct'].'('.$this->bdd->quote($_SERVER['PHP_AUTH_PW']).')' ;
263
		$res = $this->bdd->query($query);
263
		$res = $this->bdd->query($query);
264
		
264
 
265
		if ($res == '') {
265
		if ($res == '') {
266
			return false ;
266
			return false ;
267
		}
267
		}
Line 268... Line 268...
268
 
268
 
269
		if (DB::isError($res)) {
269
		if (DB::isError($res)) {
270
			die($res->getMessage());
270
			die($res->getMessage());
Line 271... Line 271...
271
		}
271
		}
272
 
272
 
273
		return true;
273
		return true;
274
	}
274
	}
275
	
275
 
276
	protected function estAutoriseMessagerie($adresse) {
276
	protected function estAutoriseMessagerie($adresse) {
277
		$utilisateurs_messagerie = explode(',', $this->config['messagerie']['utilisateurs_autorises']);
277
		$utilisateurs_messagerie = explode(',', $this->config['messagerie']['utilisateurs_autorises']);
Line 278... Line 278...
278
		return in_array($adresse, $utilisateurs_messagerie);
278
		return in_array($adresse, $utilisateurs_messagerie);
279
	}
279
	}
280
	
280
	
281
	//+----------------------------------------------------------------------------------------------------------------+
281
	//+----------------------------------------------------------------------------------------------------------------+
282
	// GESTION DES SQUELETTES PHP
282
	// GESTION DES SQUELETTES PHP
283
	
283
 
284
	/**
284
	/**
285
	 * Méthode prenant en paramètre un chemin de fichier squelette et un tableau associatif de données,
285
	 * Méthode prenant en paramètre un chemin de fichier squelette et un tableau associatif de données,