Search is now changed as well.

This commit is contained in:
Michael 2018-06-10 14:36:22 +00:00
parent 4d4cce4867
commit c1d9c29eea

View file

@ -10,6 +10,7 @@ use Friendica\Core\Config;
use Friendica\Core\L10n; use Friendica\Core\L10n;
use Friendica\Core\System; use Friendica\Core\System;
use Friendica\Database\DBM; use Friendica\Database\DBM;
use Friendica\Model\Item;
require_once 'include/security.php'; require_once 'include/security.php';
require_once 'include/conversation.php'; require_once 'include/conversation.php';
@ -197,34 +198,34 @@ function search_content(App $a) {
if ($tag) { if ($tag) {
logger("Start tag search for '".$search."'", LOGGER_DEBUG); logger("Start tag search for '".$search."'", LOGGER_DEBUG);
$r = q("SELECT %s $condition = ["(`uid` = 0 OR (`uid` = ? AND NOT `global`))
FROM `term` AND `otype` = ? AND `type` = ? AND `term` = ?",
STRAIGHT_JOIN `item` ON `item`.`id`=`term`.`oid` %s local_user(), TERM_OBJ_POST, TERM_HASHTAG, $search];
WHERE %s AND (`term`.`uid` = 0 OR (`term`.`uid` = %d AND NOT `term`.`global`)) $params = ['order' => ['created' => true],
AND `term`.`otype` = %d AND `term`.`type` = %d AND `term`.`term` = '%s' AND `item`.`verb` = '%s' 'limit' => [$a->pager['start'], $a->pager['itemspage']]];
AND NOT `author`.`blocked` AND NOT `author`.`hidden` $terms = dba::select('term', ['oid'], $condition, $params);
ORDER BY term.created DESC LIMIT %d , %d ",
item_fieldlists(), item_joins(local_user()), item_condition(), $itemids = [];
intval(local_user()), while ($term = dba::fetch($terms)) {
intval(TERM_OBJ_POST), intval(TERM_HASHTAG), dbesc(protect_sprintf($search)), dbesc(ACTIVITY_POST), $itemids[] = $term['oid'];
intval($a->pager['start']), intval($a->pager['itemspage'])); }
dba::close($terms);
$items = Item::select(local_user(), [], ['id' => array_reverse($itemids)]);
$r = dba::inArray($items);
} else { } else {
logger("Start fulltext search for '".$search."'", LOGGER_DEBUG); logger("Start fulltext search for '".$search."'", LOGGER_DEBUG);
$sql_extra = sprintf(" AND `item`.`body` REGEXP '%s' ", dbesc(protect_sprintf(preg_quote($search)))); $condition = ["(`uid` = 0 OR (`uid` = ? AND NOT `global`))
AND `body` LIKE CONCAT('%',?,'%')",
$r = q("SELECT %s local_user(), $search];
FROM `item` %s $params = ['order' => ['id' => true],
WHERE %s AND (`item`.`uid` = 0 OR (`item`.`uid` = %s AND NOT `item`.`global`)) 'limit' => [$a->pager['start'], $a->pager['itemspage']]];
AND NOT `author`.`blocked` AND NOT `author`.`hidden` $items = Item::select(local_user(), [], $condition, $params);
$sql_extra $r = dba::inArray($items);
GROUP BY `item`.`uri`, `item`.`id` ORDER BY `item`.`id` DESC LIMIT %d , %d",
item_fieldlists(), item_joins(local_user()), item_condition(),
intval(local_user()),
intval($a->pager['start']), intval($a->pager['itemspage']));
} }
if (! DBM::is_result($r)) { if (!DBM::is_result($r)) {
info(L10n::t('No results.') . EOL); info(L10n::t('No results.') . EOL);
return $o; return $o;
} }