From b43ee64783c4ec7c6ba115e3830f73009bec47e2 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Mon, 14 Nov 2011 14:42:35 +0100 Subject: [PATCH] Fixing database::parse_conditions to accept likes and simple conditions --- main/inc/lib/database.lib.php | 12 ++++++++---- main/inc/lib/database.mysqli.lib.php | 15 ++++++++++----- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/main/inc/lib/database.lib.php b/main/inc/lib/database.lib.php index f45d1fd43c..a6a3bc01c4 100644 --- a/main/inc/lib/database.lib.php +++ b/main/inc/lib/database.lib.php @@ -1203,14 +1203,18 @@ class Database { $clean_values = $value_array; } - if (!empty($condition) && $clean_values != '') { + if (!empty($condition) && $clean_values != '') { $condition = str_replace('%',"'@percentage@'", $condition); //replace "%" $condition = str_replace("'?'","%s", $condition); $condition = str_replace("?","%s", $condition); - //Treat conditons as string + + $condition = str_replace("@%s@","@-@", $condition); $condition = str_replace("%s","'%s'", $condition); - $condition = vsprintf($condition, $clean_values); - $condition = str_replace('@percentage@','%', $condition); //replace "%" + $condition = str_replace("@-@","@%s@", $condition); + + //Treat conditons as string + $condition = vsprintf($condition, $clean_values); + $condition = str_replace('@percentage@','%', $condition); //replace "%" $where_return .= $condition; } } diff --git a/main/inc/lib/database.mysqli.lib.php b/main/inc/lib/database.mysqli.lib.php index d5e27f6436..e325072d9a 100644 --- a/main/inc/lib/database.mysqli.lib.php +++ b/main/inc/lib/database.mysqli.lib.php @@ -1138,16 +1138,21 @@ class Database { $value_array = Database::escape_string($value_array); $clean_values = $value_array; } - if (!empty($condition) && $clean_values != '') { + if (!empty($condition) && $clean_values != '') { $condition = str_replace('%',"'@percentage@'", $condition); //replace "%" $condition = str_replace("'?'","%s", $condition); $condition = str_replace("?","%s", $condition); - //Treat conditons as string + + $condition = str_replace("@%s@","@-@", $condition); $condition = str_replace("%s","'%s'", $condition); - $condition = vsprintf($condition, $clean_values); - $condition = str_replace('@percentage@','%', $condition); //replace "%" + $condition = str_replace("@-@","@%s@", $condition); + + //Treat conditons as string + $condition = vsprintf($condition, $clean_values); + $condition = str_replace('@percentage@','%', $condition); //replace "%" $where_return .= $condition; - } } + } + } if (!empty($where_return)) { $return_value = " WHERE $where_return" ; }