diff options
author | Derek Jones <derek.jones@ellislab.com> | 2008-05-14 17:01:50 +0200 |
---|---|---|
committer | Derek Jones <derek.jones@ellislab.com> | 2008-05-14 17:01:50 +0200 |
commit | 97bc010749830b183fffa7c5faf29744c095864e (patch) | |
tree | c98b36a2199963ca720e2d6c819febde90edbc0f /system/database/DB.php | |
parent | 454fa7e0039689ca480eb6ef999d3fa753f5f875 (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.php | 25 |
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'] == '')
{
|