/** Get PDO from the loaded database core module */ public static function getPDO($uid = null) { // Set uid to logged user if ($uid === null) { $uid = get_user_id(); } // Return cached pdo if same uid if (PDOBuilder::$pdo !== null && $uid === PDOBuilder::$pdoUid) { return PDOBuilder::$pdo; } $dsn = null; switch (get_db_type($uid)) { case 'mysql': $dsn = "mysql:dbname=" . get_db_name($uid) . ";host=" . get_db_host($uid) . ";port=" . get_db_port($uid); $options = array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''); $attributes = array(\PDO::ATTR_CASE => \PDO::CASE_UPPER); break; case 'postgresql': $dsn = "pgsql:dbname=" . get_db_name($uid) . ";host=" . get_db_host($uid) . ";port=" . get_db_port($uid); $options = array(); $attributes = array(\PDO::ATTR_CASE => \PDO::CASE_UPPER); break; default: die("Config error"); } try { PDOBuilder::$pdo = new \PDO($dsn, get_db_user($uid), get_db_password($uid), $options); foreach ($attributes as $key => $value) { PDOBuilder::$pdo->setAttribute($key, $value); } PDOBuilder::$pdoUid = $uid; return PDOBuilder::$pdo; } catch (\PDOException $e) { die("Connexion error " . $e); } }