search: simplify code, allow searching by note and title content (note:blah, title:blah)

This commit is contained in:
Andrew Dolgov 2013-04-04 16:52:25 +04:00
parent 7f44364870
commit 0fc3930be4
1 changed files with 51 additions and 31 deletions

View File

@ -2132,42 +2132,62 @@
$commandpair = explode(":", mb_strtolower($k), 2); $commandpair = explode(":", mb_strtolower($k), 2);
if ($commandpair[0] == "note" && $commandpair[1]) { switch ($commandpair[0]) {
case "title":
if ($commandpair[1]) {
array_push($query_keywords, "($not (LOWER(ttrss_entries.title) LIKE '%".
db_escape_string($link, mb_strtolower($commandpair[1]))."%'))");
}
break;
case "author":
if ($commandpair[1]) {
array_push($query_keywords, "($not (LOWER(author) LIKE '%".
db_escape_string($link, mb_strtolower($commandpair[1]))."%'))");
}
break;
case "note":
if ($commandpair[1]) {
if ($commandpair[1] == "true")
array_push($query_keywords, "($not (note IS NOT NULL AND note != ''))");
else if ($commandpair[1] == "false")
array_push($query_keywords, "($not (note IS NULL OR note = ''))");
else
array_push($query_keywords, "($not (LOWER(note) LIKE '%".
db_escape_string($link, mb_strtolower($commandpair[1]))."%'))");
}
break;
case "star":
if ($commandpair[1] == "true") if ($commandpair[1]) {
array_push($query_keywords, "($not (note IS NOT NULL AND note != ''))"); if ($commandpair[1] == "true")
else if ($commandpair[1] == "false") array_push($query_keywords, "($not (marked = true))");
array_push($query_keywords, "($not (note IS NULL OR note = ''))"); else
else array_push($query_keywords, "($not (marked = false))");
array_push($query_keywords, "($not (note LIKE '%". }
db_escape_string($link, $commandpair[1])."%'))"); break;
case "pub":
if ($commandpair[1]) {
if ($commandpair[1] == "true")
array_push($query_keywords, "($not (published = true))");
else
array_push($query_keywords, "($not (published = false))");
} else if ($commandpair[0] == "star" && $commandpair[1]) { }
break;
default:
if (strpos($k, "@") === 0) {
if ($commandpair[1] == "true") $user_tz_string = get_pref($link, 'USER_TIMEZONE', $_SESSION['uid']);
array_push($query_keywords, "($not (marked = true))"); $orig_ts = strtotime(substr($k, 1));
else $k = date("Y-m-d", convert_timestamp($orig_ts, $user_tz_string, 'UTC'));
array_push($query_keywords, "($not (marked = false))");
} else if ($commandpair[0] == "pub" && $commandpair[1]) { //$k = date("Y-m-d", strtotime(substr($k, 1)));
if ($commandpair[1] == "true") array_push($query_keywords, "(".SUBSTRING_FOR_DATE."(updated,1,LENGTH('$k')) $not = '$k')");
array_push($query_keywords, "($not (published = true))"); } else {
else array_push($query_keywords, "(UPPER(ttrss_entries.title) $not LIKE UPPER('%$k%')
array_push($query_keywords, "($not (published = false))"); OR UPPER(ttrss_entries.content) $not LIKE UPPER('%$k%'))");
}
} else if (strpos($k, "@") === 0) {
$user_tz_string = get_pref($link, 'USER_TIMEZONE', $_SESSION['uid']);
$orig_ts = strtotime(substr($k, 1));
$k = date("Y-m-d", convert_timestamp($orig_ts, $user_tz_string, 'UTC'));
//$k = date("Y-m-d", strtotime(substr($k, 1)));
array_push($query_keywords, "(".SUBSTRING_FOR_DATE."(updated,1,LENGTH('$k')) $not = '$k')");
} else {
array_push($query_keywords, "(UPPER(ttrss_entries.title) $not LIKE UPPER('%$k%')
OR UPPER(ttrss_entries.content) $not LIKE UPPER('%$k%'))");
} }
} }