From c3c8d7f13dfbdc53ce360e51247652342d174564 Mon Sep 17 00:00:00 2001 From: Dries Buytaert Date: Wed, 3 Jan 2007 10:59:02 +0000 Subject: [PATCH] - Patch #106370 by naquah and chx: fixed query rewriting in presence of OR-clause. --- includes/database.inc | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/includes/database.inc b/includes/database.inc index 299fd54eba4..7fede7d1996 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); } }