diff options
| author | 2013-12-16 22:22:56 +0100 | |
|---|---|---|
| committer | 2013-12-16 22:22:56 +0100 | |
| commit | e29be10556e1994083bce7398eee0a3edc017a9d (patch) | |
| tree | 6da30f3330afb22fba41a041e9f730fc468c2338 /app/Models/EntryDAO.php | |
| parent | ba71d7747a8b0847ad59ff56870378b341c5171d (diff) | |
Recherches spéciales intitle: ou inurl: ou author:
Permet de chercher en utilisant intitle: ou inurl: ou author: comme dans
certains moteurs de recherche. Pour l'instant, un seul de ces mots clefs
à la fois peut être spécifié en tout début de chaîne de recherche et
sera appliqué à l'ensemble du reste de la recherche.
NB: À ajouter à la documentation, wiki
Diffstat (limited to 'app/Models/EntryDAO.php')
| -rw-r--r-- | app/Models/EntryDAO.php | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/app/Models/EntryDAO.php b/app/Models/EntryDAO.php index d1f595d42..c9989622a 100644 --- a/app/Models/EntryDAO.php +++ b/app/Models/EntryDAO.php @@ -313,17 +313,46 @@ class FreshRSS_EntryDAO extends Minz_ModelPdo { if ($filter !== '') { $filter = trim($filter); $filter = addcslashes($filter, '\\%_'); + if (stripos($filter, 'intitle:') === 0) { + $filter = substr($filter, strlen('intitle:')); + $intitle = true; + } else { + $intitle = false; + } + if (stripos($filter, 'inurl:') === 0) { + $filter = substr($filter, strlen('inurl:')); + $inurl = true; + } else { + $inurl = false; + } + if (stripos($filter, 'author:') === 0) { + $filter = substr($filter, strlen('author:')); + $author = true; + } else { + $author = false; + } $terms = array_unique(explode(' ', $filter)); sort($terms); //Put #tags first foreach ($terms as $word) { $word = trim($word); if (strlen($word) > 0) { - if ($word[0] === '#' && isset($word[1])) { - $search .= 'AND e1.tags LIKE ? '; + if ($intitle) { + $search .= 'AND e1.title LIKE ? '; $values[] = '%' . $word .'%'; - } else { - $search .= 'AND CONCAT(e1.title, UNCOMPRESS(e1.content_bin)) LIKE ? '; + } elseif ($inurl) { + $search .= 'AND CONCAT(e1.link, e1.guid) LIKE ? '; $values[] = '%' . $word .'%'; + } elseif ($author) { + $search .= 'AND e1.author LIKE ? '; + $values[] = '%' . $word .'%'; + } else { + if ($word[0] === '#' && isset($word[1])) { + $search .= 'AND e1.tags LIKE ? '; + $values[] = '%' . $word .'%'; + } else { + $search .= 'AND CONCAT(e1.title, UNCOMPRESS(e1.content_bin)) LIKE ? '; + $values[] = '%' . $word .'%'; + } } } } |
