aboutsummaryrefslogtreecommitdiff
path: root/app/Models/EntryDAO.php
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2013-12-16 22:22:56 +0100
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2013-12-16 22:22:56 +0100
commite29be10556e1994083bce7398eee0a3edc017a9d (patch)
tree6da30f3330afb22fba41a041e9f730fc468c2338 /app/Models/EntryDAO.php
parentba71d7747a8b0847ad59ff56870378b341c5171d (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.php37
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 .'%';
+ }
}
}
}