Ver código fonte

Fix MariaDB case sensitivity (#4537)

* Fix MariaDB case sensitivity
#fix https://github.com/FreshRSS/FreshRSS/issues/4535
Collation regression from https://github.com/FreshRSS/FreshRSS/pull/4505

* faster

* Minor syntax

* Minor parentheses
Alexandre Alapetite 3 anos atrás
pai
commit
03f5a42640
1 arquivos alterados com 16 adições e 8 exclusões
  1. 16 8
      app/Models/EntryDAO.php

+ 16 - 8
app/Models/EntryDAO.php

@@ -978,18 +978,26 @@ SQL;
 
 			if ($filter->getSearch()) {
 				foreach ($filter->getSearch() as $search_value) {
-					$sub_search .= 'AND (' . $alias . 'title LIKE ? OR ' .
-						(static::isCompressed() ? 'UNCOMPRESS(' . $alias . 'content_bin)' : '' . $alias . 'content') . ' LIKE ?) ';
-					$values[] = "%{$search_value}%";
-					$values[] = "%{$search_value}%";
+					if (static::isCompressed()) {	// MySQL-only
+						$sub_search .= 'AND CONCAT(' . $alias . 'title, UNCOMPRESS(' . $alias . 'content_bin)) LIKE ? ';
+						$values[] = "%{$search_value}%";
+					} else {
+						$sub_search .= 'AND (' . $alias . 'title LIKE ? OR ' . $alias . 'content LIKE ?) ';
+						$values[] = "%{$search_value}%";
+						$values[] = "%{$search_value}%";
+					}
 				}
 			}
 			if ($filter->getNotSearch()) {
 				foreach ($filter->getNotSearch() as $search_value) {
-					$sub_search .= 'AND ' . $alias . 'title NOT LIKE ? AND ' .
-						(static::isCompressed() ? 'UNCOMPRESS(' . $alias . 'content_bin)' : '' . $alias . 'content') . ' NOT LIKE ? ';
-					$values[] = "%{$search_value}%";
-					$values[] = "%{$search_value}%";
+					if (static::isCompressed()) {	// MySQL-only
+						$sub_search .= 'AND CONCAT(' . $alias . 'title, UNCOMPRESS(' . $alias . 'content_bin)) NOT LIKE ? ';
+						$values[] = "%{$search_value}%";
+					} else {
+						$sub_search .= 'AND ' . $alias . 'title NOT LIKE ? AND ' . $alias . 'content NOT LIKE ? ';
+						$values[] = "%{$search_value}%";
+						$values[] = "%{$search_value}%";
+					}
 				}
 			}