Subversion Repositories Applications.framework

Rev

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

Rev 424 Rev 435
Line 15... Line 15...
15
 * @author		Aurélien PERONNET <aurelien@tela-botanica.org>
15
 * @author		Aurélien PERONNET <aurelien@tela-botanica.org>
16
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
16
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
17
 * @copyright	Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
17
 * @copyright	Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
18
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
18
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
19
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
19
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
20
 * @version	$Id: Bdd.php 424 2013-04-15 09:45:53Z aurelien $
20
 * @version	$Id: Bdd.php 435 2013-09-04 14:29:43Z jpm $
21
 * @link		/doc/framework/
21
 * @link		/doc/framework/
22
 */
22
 */
23
class Bdd {
23
class Bdd {
24
	/** Constante stockant le squelette du message en cas d'erreur de requête sql. */
24
	/** Constante stockant le squelette du message en cas d'erreur de requête sql. */
25
	const ERREUR_REQUETE_TPL = 'Requête echec.\nFichier : %s.\nLigne : %s.\nMessage : %s.\nRequête : %s';
25
	const ERREUR_REQUETE_TPL = 'Requête echec.\nFichier : %s.\nLigne : %s.\nMessage : %s.\nRequête : %s';
Line 107... Line 107...
107
	/** Initialise les constantes de classe à leur bonne valeur et déclenche une erreur si le protocole n'est pas bien défini. */
107
	/** Initialise les constantes de classe à leur bonne valeur et déclenche une erreur si le protocole n'est pas bien défini. */
108
	protected function initialiserProtocole() {
108
	protected function initialiserProtocole() {
109
		switch ($this->abstraction) {
109
		switch ($this->abstraction) {
110
			case self::ABSTRACTION_PDO :
110
			case self::ABSTRACTION_PDO :
111
				$this->ASSOC = PDO::FETCH_ASSOC;
111
				$this->ASSOC = PDO::FETCH_ASSOC;
112
				$this->OBJECT = PDO::FETCH_CLASS;
112
				$this->OBJECT = PDO::FETCH_OBJ;
113
				break;
113
				break;
114
			case self::ABSTRACTION_MYSQL :
114
			case self::ABSTRACTION_MYSQL :
115
				$this->ASSOC = 'mysql_fetch_assoc';
115
				$this->ASSOC = 'mysql_fetch_assoc';
116
				$this->OBJECT = 'mysql_fetch_object';
116
				$this->OBJECT = 'mysql_fetch_object';
117
				break;
117
				break;
Line 131... Line 131...
131
 
131
 
132
	/**
132
	/**
133
	 * Connection à la base de données en utilisant les informations fournies par
133
	 * Connection à la base de données en utilisant les informations fournies par
134
	 * le fichier de configuration.
134
	 * le fichier de configuration.
-
 
135
	 * Cette méthode est private et final car elle n'a pas vocation a être appelée par l'utilisateur.
-
 
136
	 * TODO : il est peut être nécessaire pour MYSQL, MYSQLi et SQLITE3 afin d'éviter les boucles infinis
135
	 * Cette méthode est private et final car elle n'a pas vocation a être appelée par l'utilisateur.
137
	 * d'erreur quand la bdd n'est pas configuré d'utiliser : $this->connexion->query (comme pour PDO)
136
	 */
138
	 */
137
	protected function connecter() {
139
	protected function connecter() {
138
		if ($this->connexion == null) {
140
		if ($this->connexion == null) {
139
			switch ($this->abstraction) {
141
			switch ($this->abstraction) {
Line 144... Line 146...
144
					} catch (PDOException $e) {
146
					} catch (PDOException $e) {
145
						$e = sprintf(self::ERREUR_CONNEXION_TPL, $e->getMessage());
147
						$e = sprintf(self::ERREUR_CONNEXION_TPL, $e->getMessage());
146
						trigger_error($e, E_USER_WARNING);
148
						trigger_error($e, E_USER_WARNING);
147
					}
149
					}
148
					if ($this->encodage != null && $this->type == 'mysql') {
150
					if ($this->encodage != null && $this->type == 'mysql') {
149
						$this->requeter("SET names '".$this->encodage."'");
151
						$this->connexion->query("SET names '".$this->encodage."'");
150
					} else if ($this->type == 'sqlite') {
152
					} else if ($this->type == 'sqlite') {
151
						$this->requeter("PRAGMA case_sensitive_like = false");
153
						$this->connexion->query("PRAGMA case_sensitive_like = false");
152
					}
154
					}
153
					break;
155
					break;
154
				case self::ABSTRACTION_MYSQL :
156
				case self::ABSTRACTION_MYSQL :
155
					$this->connexion = mysql_connect($this->hote, $this->utilisateur, $this->pass);
157
					$this->connexion = mysql_connect($this->hote, $this->utilisateur, $this->pass);
156
					if ($this->connexion !== false) {
158
					if ($this->connexion !== false) {
Line 392... Line 394...
392
				$retour = $this->connexion->escapeString($chaine);
394
				$retour = $this->connexion->escapeString($chaine);
393
				break;
395
				break;
394
		}
396
		}
395
		return $retour;
397
		return $retour;
396
	}
398
	}
397
	
399
 
398
	/**
400
	/**
399
	* Protège les chaines d'un tableau de caractères avant l'insertion dans la base de données (ajout de quotes ou guillemets).
401
	* Protège les chaines d'un tableau de caractères avant l'insertion dans la base de données (ajout de quotes ou guillemets).
400
	* @param array le tableau de chaines à protéger
402
	* @param array le tableau de chaines à protéger
401
	* @return array le tableau avec les chaines protégées
403
	* @return array le tableau avec les chaines protégées
402
	*/
404
	*/