From 97bc010749830b183fffa7c5faf29744c095864e Mon Sep 17 00:00:00 2001 From: Derek Jones Date: Wed, 14 May 2008 15:01:50 +0000 Subject: fixed bug #3419 where the 'database' setting for DSN connections was using the host portion of the URL instead of the path. Added ability to set other db config values in DSN connections via query string --- system/database/DB.php | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'system/database/DB.php') diff --git a/system/database/DB.php b/system/database/DB.php index 2446645a7..eb25273a1 100644 --- a/system/database/DB.php +++ b/system/database/DB.php @@ -66,10 +66,31 @@ function &DB($params = '', $active_record_override = FALSE) 'hostname' => (isset($dns['host'])) ? rawurldecode($dns['host']) : '', 'username' => (isset($dns['user'])) ? rawurldecode($dns['user']) : '', 'password' => (isset($dns['pass'])) ? rawurldecode($dns['pass']) : '', - 'database' => (isset($dns['path'])) ? rawurldecode(substr($dns['host'], 1)) : '' + 'database' => (isset($dns['path'])) ? rawurldecode(substr($dns['path'], 1)) : '' ); + + // were additional config items set? + if (isset($dns['query'])) + { + parse_str($dns['query'], $extra); + + foreach($extra as $key => $val) + { + // booleans please + if (strtoupper($val) == "TRUE") + { + $val = TRUE; + } + elseif (strtoupper($val) == "FALSE") + { + $val = FALSE; + } + + $params[$key] = $val; + } + } } - + // No DB specified yet? Beat them senseless... if ( ! isset($params['dbdriver']) OR $params['dbdriver'] == '') { -- cgit v1.2.3-24-g4f1b