diff options
author | Dries Buytaert <dries@buytaert.net> | 2007-01-03 10:59:02 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2007-01-03 10:59:02 +0000 |
commit | c3c8d7f13dfbdc53ce360e51247652342d174564 (patch) | |
tree | de52ac1eab06cf4153aecf6a1251a8bf794389ef /includes | |
parent | a7d58587cbb4ddb51bf3c1db2897e6a96fe042d7 (diff) | |
download | brdo-c3c8d7f13dfbdc53ce360e51247652342d174564.tar.gz brdo-c3c8d7f13dfbdc53ce360e51247652342d174564.tar.bz2 |
- Patch #106370 by naquah and chx: fixed query rewriting in presence of OR-clause.
Diffstat (limited to 'includes')
-rw-r--r-- | includes/database.inc | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/includes/database.inc b/includes/database.inc index 299fd54eb..7fede7d19 100644 --- a/includes/database.inc +++ b/includes/database.inc @@ -269,30 +269,30 @@ function db_rewrite_sql($query, $primary_table = 'n', $primary_field = 'nid', $ if (!empty($where) || !empty($join)) { if (!empty($where)) { - $new = " WHERE $where "; + $new = "WHERE $where "; } $new = " $join $new"; if (strpos($query, 'WHERE')) { - $replace = 'WHERE'; - $add = 'AND'; + $query = str_replace('WHERE', $new .'AND (', $query); + $insert = ') '; } - elseif (strpos($query, 'GROUP')) { + else { + $insert = $new; + } + if (strpos($query, 'GROUP')) { $replace = 'GROUP'; - $add = 'GROUP'; } elseif (strpos($query, 'ORDER')) { $replace = 'ORDER'; - $add = 'ORDER'; } elseif (strpos($query, 'LIMIT')) { $replace = 'LIMIT'; - $add = 'LIMIT'; } else { - $query .= $new; + $query .= $insert; } if (isset($replace)) { - $query = str_replace($replace, "$new $add ", $query); + $query = str_replace($replace, $insert . $replace, $query); } } |