Subversion Repositories Applications.framework

Rev

Rev 355 | Rev 406 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 355 Rev 401
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 355 2011-08-08 13:31:31Z jpm $
20
 * @version	$Id: Bdd.php 401 2011-12-29 10:44:38Z 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 94... Line 94...
94
		$this->bdd_nom = Config::get('bdd_nom');
94
		$this->bdd_nom = Config::get('bdd_nom');
95
		$this->utilisateur = Config::get('bdd_utilisateur');
95
		$this->utilisateur = Config::get('bdd_utilisateur');
96
		$this->pass = Config::get('bdd_mot_de_passe');
96
		$this->pass = Config::get('bdd_mot_de_passe');
97
		$this->encodage = Config::get('bdd_encodage');
97
		$this->encodage = Config::get('bdd_encodage');
Line -... Line 98...
-
 
98
 
-
 
99
		if ($this->type == 'sqlite' || $this->type == 'sqlite2') {
-
 
100
			$this->dsn = $this->type.':'.$this->hote;
98
 
101
		} else {
-
 
102
			$this->dsn = $this->type.':dbname='.$this->bdd_nom.';host='.$this->hote;
99
		$this->dsn = $this->type.':dbname='.$this->bdd_nom.';host='.$this->hote;
103
		}
100
		$this->initialiserProtocole();
104
		$this->initialiserProtocole();
Line 101... Line 105...
101
	}
105
	}
102
 
106
 
Line 139... Line 143...
139
						$this->connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
143
						$this->connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
140
					} catch (PDOException $e) {
144
					} catch (PDOException $e) {
141
						$e = sprintf(self::ERREUR_CONNEXION_TPL, $e->getMessage());
145
						$e = sprintf(self::ERREUR_CONNEXION_TPL, $e->getMessage());
142
						trigger_error($e, E_USER_WARNING);
146
						trigger_error($e, E_USER_WARNING);
143
					}
147
					}
-
 
148
					if ($this->encodage != null && $this->type == 'mysql') {
-
 
149
						$this->requeter("SET names '".$this->encodage."'");
-
 
150
					} else if ($this->type == 'sqlite') {
-
 
151
						$this->requeter("PRAGMA case_sensitive_like = false");
-
 
152
					}
144
					break;
153
					break;
145
				case self::ABSTRACTION_MYSQL :
154
				case self::ABSTRACTION_MYSQL :
146
					$this->connexion = mysql_connect($this->hote, $this->utilisateur, $this->pass);
155
					$this->connexion = mysql_connect($this->hote, $this->utilisateur, $this->pass);
147
					if ($this->connexion !== false) {
156
					if ($this->connexion !== false) {
148
						$selection = mysql_select_db($this->bdd_nom, $this->connexion);
157
						$selection = mysql_select_db($this->bdd_nom, $this->connexion);
Line 152... Line 161...
152
						}
161
						}
153
					} else {
162
					} else {
154
						$e = sprintf(self::ERREUR_CONNEXION_TPL, mysql_error());
163
						$e = sprintf(self::ERREUR_CONNEXION_TPL, mysql_error());
155
						trigger_error($e, E_USER_WARNING);
164
						trigger_error($e, E_USER_WARNING);
156
					}
165
					}
-
 
166
					if ($this->encodage != null) {
-
 
167
						$this->requeter("SET names '".$this->encodage."'");
-
 
168
					}
157
					break;
169
					break;
158
				case self::ABSTRACTION_MYSQLI :
170
				case self::ABSTRACTION_MYSQLI :
159
					$this->connexion = @new mysqli($this->hote, $this->utilisateur, $this->pass, $this->bdd_nom);
171
					$this->connexion = @new mysqli($this->hote, $this->utilisateur, $this->pass, $this->bdd_nom);
160
					if ($this->connexion->connect_errno) {
172
					if ($this->connexion->connect_errno) {
161
						$e = sprintf(self::ERREUR_CONNEXION_TPL, $this->connexion->connect_error);
173
						$e = sprintf(self::ERREUR_CONNEXION_TPL, $this->connexion->connect_error);
162
						trigger_error($e, E_USER_WARNING);
174
						trigger_error($e, E_USER_WARNING);
163
					}
175
					}
-
 
176
					if ($this->encodage != null) {
-
 
177
						$this->requeter("SET names '".$this->encodage."'");
-
 
178
					}
164
					break;
179
					break;
165
				case self::ABSTRACTION_SQLITE3 :
180
				case self::ABSTRACTION_SQLITE3 :
166
					// cas particulier de sqllite, on considère que le nom de la base de données correspond au fichier à ouvrir
181
					// cas particulier de sqllite, on considère que le nom de la base de données correspond au fichier à ouvrir
167
					$this->connexion = new SQLite3($this->bdd_nom);
182
					$this->connexion = new SQLite3($this->bdd_nom);
168
					if (!$this->connexion) {
183
					if (!$this->connexion) {
169
						$e = sprintf(self::ERREUR_CONNEXION_TPL, '');
184
						$e = sprintf(self::ERREUR_CONNEXION_TPL, '');
170
						trigger_error($e, E_USER_WARNING);
185
						trigger_error($e, E_USER_WARNING);
171
					}
186
					}
-
 
187
					$this->requeter("PRAGMA case_sensitive_like = false");
172
					break;
188
					break;
173
				default:
189
				default:
174
					$this->connexion = null;
190
					$this->connexion = null;
175
			}
191
			}