summaryrefslogtreecommitdiff
path: root/app/Models/EntryDAO.php
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2013-12-16 21:58:47 +0100
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2013-12-16 21:58:47 +0100
commita1f8bade6176f03a6e2399d5de24975bb47d09d6 (patch)
tree6678bc05b283e76307617126b2de9bd97422f394 /app/Models/EntryDAO.php
parent8abeeaf65e79a464aae6d40f8868ecd29889df4c (diff)
SQL : petits changement recherche
Traite mieux les caractères spéciaux. Permet par exemple une recherche sur des mots contenant des apostrophes, ou le signe pourcentage, etc. Il faudra toujours essayer d'améliorer la recherche en particulier lorsque plusieurs mots sont fournis
Diffstat (limited to 'app/Models/EntryDAO.php')
-rw-r--r--app/Models/EntryDAO.php28
1 files changed, 17 insertions, 11 deletions
diff --git a/app/Models/EntryDAO.php b/app/Models/EntryDAO.php
index c4eb0a84a..2af511527 100644
--- a/app/Models/EntryDAO.php
+++ b/app/Models/EntryDAO.php
@@ -309,18 +309,24 @@ class FreshRSS_EntryDAO extends Minz_ModelPdo {
$where .= 'AND (e1.id >= ' . $date_min . '000000 OR e1.is_favorite = 1 OR f.keep_history = 1) ';
$joinFeed = true;
}
- $terms = array_unique(explode(' ', trim($filter)));
- sort($terms); //Put #tags first
$search = '';
- foreach ($terms as $word) {
- if (!empty($word)) {
- if ($word[0] === '#' && isset($word[1])) {
- $search .= 'AND e1.tags LIKE ? ';
- $values[] = '%' . $word .'%';
- } elseif (!empty($word)) {
- $search .= 'AND (e1.title LIKE ? OR UNCOMPRESS(e1.content_bin) LIKE ?) ';
- $values[] = '%' . $word .'%';
- $values[] = '%' . $word .'%';
+ if ($filter !== '') {
+ $filter = trim($filter);
+ $filter = addcslashes($filter, '\\%_');
+ $terms = array_unique(explode(' ', $filter));
+ sort($terms); //Put #tags first
+ foreach ($terms as $word) {
+ $word = trim($word);
+ if (strlen($word) > 0) {
+ if ($word[0] === '#') {
+ if (isset($word[1])) {
+ $search .= 'AND e1.tags LIKE ? ';
+ $values[] = '%' . $word .'%';
+ }
+ } else {
+ $search .= 'AND CONCAT(e1.title, UNCOMPRESS(e1.content_bin)) LIKE ? ';
+ $values[] = '%' . $word .'%';
+ }
}
}
}