summaryrefslogtreecommitdiffstats
path: root/system/database/DB.php
diff options
context:
space:
mode:
authorDerek Jones <derek.jones@ellislab.com>2008-05-14 17:01:50 +0200
committerDerek Jones <derek.jones@ellislab.com>2008-05-14 17:01:50 +0200
commit97bc010749830b183fffa7c5faf29744c095864e (patch)
treec98b36a2199963ca720e2d6c819febde90edbc0f /system/database/DB.php
parent454fa7e0039689ca480eb6ef999d3fa753f5f875 (diff)
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
Diffstat (limited to 'system/database/DB.php')
-rw-r--r--system/database/DB.php25
1 files changed, 23 insertions, 2 deletions
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'] == '')
{