public function __construct($config)
{
$_alldbtype = array('mysql', 'pgsql', 'mssql', 'sybase', 'dblib');
$driver_options = array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_PERSISTENT => $config['persistent'], PDO::ATTR_CASE => PDO::CASE_LOWER, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC);
if (in_array($config['dbtype'], $_alldbtype)) {
$dsn = $config['dbtype'] . ':dbname=' . $config['dbname'] . ';host=' . $config['dbhost'] . ';charset=' . $config['charset'];
if (!empty($config['dbport'])) {
$dsn .= ';port=' . $config['dbport'];
}
$driver_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
} elseif ($config['dbtype'] == 'oci') {
$dsn = 'oci:dbname=//' . $config['dbhost'] . ':' . $config['dbport'] . '/' . $config['dbname'] . ';charset=AL32UTF8';
$driver_options[PDO::ATTR_STRINGIFY_FETCHES] = true;
} elseif ($config['dbtype'] == 'sqlite') {
$dsn = 'sqlite:' . $config['dbname'];
} else {
trigger_error($config['dbtype'] . ' is not supported', 256);
}
$this->server = $config['dbhost'];
$this->dbtype = $config['dbtype'];
$this->dbname = $config['dbname'];
$this->user = $config['dbuname'];
try {
parent::__construct($dsn, $config['dbuname'], $config['dbpass'], $driver_options);
parent::exec("SET SESSION time_zone='" . NV_SITE_TIMEZONE_GMT_NAME . "'");
$this->connect = 1;
} catch (PDOException $e) {
trigger_error($e->getMessage());
}
}