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 |
}
|