diff options
Diffstat (limited to 'classes/db.php')
-rw-r--r-- | classes/db.php | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/classes/db.php b/classes/db.php index 3b71f3c8f..aba249a50 100644 --- a/classes/db.php +++ b/classes/db.php @@ -3,15 +3,13 @@ class Db implements IDb { private static $instance; private $adapter; private $link; + private $pdo; private function __construct() { $er = error_reporting(E_ALL); - if (defined('_ENABLE_PDO') && _ENABLE_PDO && class_exists("PDO")) { - $this->adapter = new Db_PDO(); - } else { - switch (DB_TYPE) { + switch (DB_TYPE) { case "mysql": $this->adapter = new Db_Mysqli(); break; @@ -20,7 +18,6 @@ class Db implements IDb { break; default: die("Unknown DB_TYPE: " . DB_TYPE); - } } if (!$this->adapter) { @@ -28,6 +25,34 @@ class Db implements IDb { exit(100); } + $db_port = defined(DB_PORT) ? ';port='.DB_PORT : ''; + + $this->pdo = new PDO(DB_TYPE . ':dbname='.DB_NAME.';host='.DB_HOST.$db_port, + DB_USER, + DB_PASS); + + $this->pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING ); + + if (!$this->pdo) { + print("Error connecting via PDO."); + exit(101); + } + + if (DB_TYPE == "pgsql") { + + $this->pdo->query("set client_encoding = 'UTF-8'"); + $this->pdo->query("set datestyle = 'ISO, european'"); + $this->pdo->query("set TIME ZONE 0"); + $this->pdo->query("set cpu_tuple_cost = 0.5"); + + } else if (DB_TYPE == "mysql") { + $this->pdo->query("SET time_zone = '+0:0'"); + + if (defined('MYSQL_CHARSET') && MYSQL_CHARSET) { + $this->pdo->query("SET NAMES " . MYSQL_CHARSET); + } + } + $this->link = $this->adapter->connect(DB_HOST, DB_USER, DB_PASS, DB_NAME, defined('DB_PORT') ? DB_PORT : ""); if (!$this->link) { @@ -49,6 +74,13 @@ class Db implements IDb { return self::$instance; } + public static function pdo() { + if (self::$instance == null) + self::$instance = new self(); + + return self::$instance->pdo; + } + static function quote($str){ return("'$str'"); } |