aboutsummaryrefslogtreecommitdiff
path: root/app/Models/EntryDAO.php
diff options
context:
space:
mode:
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 .'%';
+ }
}
}
}