Selaa lähdekoodia

Fixed members search case sensitive in PostgreSQL [Bug: 4764]

Signed-off-by: emanuele <[email protected]>
emanuele 12 vuotta sitten
vanhempi
commit
aaa61eca09
2 muutettua tiedostoa jossa 9 lisäystä ja 2 poistoa
  1. 4 1
      Sources/ManageMembers.php
  2. 5 1
      Sources/Memberlist.php

+ 4 - 1
Sources/ManageMembers.php

@@ -369,7 +369,10 @@ function ViewMemberlist()
 				// Replace the wildcard characters ('*' and '?') into MySQL ones.
 				// Replace the wildcard characters ('*' and '?') into MySQL ones.
 				$parameter = strtolower(strtr($smcFunc['htmlspecialchars']($search_params[$param_name], ENT_QUOTES), array('%' => '\%', '_' => '\_', '*' => '%', '?' => '_')));
 				$parameter = strtolower(strtr($smcFunc['htmlspecialchars']($search_params[$param_name], ENT_QUOTES), array('%' => '\%', '_' => '\_', '*' => '%', '?' => '_')));
 
 
-				$query_parts[] = '(' . implode( ' LIKE {string:' . $param_name . '_normal} OR ', $param_info['db_fields']) . ' LIKE {string:' . $param_name . '_normal})';
+				if ($smcFunc['db_case_sensitive'])
+					$query_parts[] = '(LOWER(' . implode( ') LIKE {string:' . $param_name . '_normal} OR LOWER(', $param_info['db_fields']) . ') LIKE {string:' . $param_name . '_normal})';
+				else
+					$query_parts[] = '(' . implode( ' LIKE {string:' . $param_name . '_normal} OR ', $param_info['db_fields']) . ' LIKE {string:' . $param_name . '_normal})';
 				$where_params[$param_name . '_normal'] = '%' . $parameter . '%';
 				$where_params[$param_name . '_normal'] = '%' . $parameter . '%';
 			}
 			}
 		}
 		}

+ 5 - 1
Sources/Memberlist.php

@@ -501,6 +501,10 @@ function MLSearch()
 		else
 		else
 			$condition = '';
 			$condition = '';
 
 
+		if ($smcFunc['db_case_sensitive'])
+			foreach ($fields as $key => $field)
+				$fields[$key] = 'LOWER(' . $field . ')';
+
 		$customJoin = array();
 		$customJoin = array();
 		$customCount = 10;
 		$customCount = 10;
 
 
@@ -516,7 +520,7 @@ function MLSearch()
 			}
 			}
 		}
 		}
 
 
-		$query = $_POST['search'] == '' ? '= {string:blank_string}' : 'LIKE {string:search}';
+		$query = $_POST['search'] == '' ? '= {string:blank_string}' : ($smcFunc['db_case_sensitive'] ? 'LIKE LOWER({string:search})' : 'LIKE {string:search}');
 
 
 		$request = $smcFunc['db_query']('', '
 		$request = $smcFunc['db_query']('', '
 			SELECT COUNT(*)
 			SELECT COUNT(*)