From 2b8dabcd95c211a52ba25b877829120573564051 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 1 May 2020 09:41:17 +0000 Subject: [PATCH] API search is now done via "tag" as well --- include/api.php | 28 ++++++++++------------------ static/dbstructure.config.php | 2 +- static/dbview.config.php | 1 + 3 files changed, 12 insertions(+), 19 deletions(-) diff --git a/include/api.php b/include/api.php index 97c30e317a..beddc5adcb 100644 --- a/include/api.php +++ b/include/api.php @@ -1540,32 +1540,24 @@ function api_search($type) $params = ['order' => ['id' => true], 'limit' => [$start, $count]]; if (preg_match('/^#(\w+)$/', $searchTerm, $matches) === 1 && isset($matches[1])) { $searchTerm = $matches[1]; - /// @todo $uriids = Tag::getURIIdListForTag($searchTerm, local_user()); - $condition = ["`oid` > ? - AND (`uid` = 0 OR (`uid` = ? AND NOT `global`)) - AND `otype` = ? AND `type` = ? AND `term` = ?", - $since_id, local_user(), Term::OBJECT_TYPE_POST, Tag::HASHTAG, $searchTerm]; - if ($max_id > 0) { - $condition[0] .= ' AND `oid` <= ?'; - $condition[] = $max_id; - } - $terms = DBA::select('term', ['oid'], $condition, []); - $itemIds = []; - while ($term = DBA::fetch($terms)) { - $itemIds[] = $term['oid']; + $condition = ["`iid` > ? AND `name` = ? AND (NOT `private` OR (`private` AND `uid` = ?))", $since_id, $searchTerm, local_user()]; + $tags = DBA::select('tag-search-view', ['uri-id'], $condition); + $uriids = []; + while ($tag = DBA::fetch($tags)) { + $uriids[] = $tag['uri-id']; } - DBA::close($terms); + DBA::close($tags); - if (empty($itemIds)) { + if (empty($uriids)) { return api_format_data('statuses', $type, $data); } - $preCondition = ['`id` IN (' . implode(', ', $itemIds) . ')']; + $condition = ['uri-id' => $uriids]; if ($exclude_replies) { - $preCondition[] = '`id` = `parent`'; + $condition['gravity'] = GRAVITY_PARENT; } - $condition = [implode(' AND ', $preCondition)]; + $params['group_by'] = ['uri-id']; } else { $condition = ["`id` > ? " . ($exclude_replies ? " AND `id` = `parent` " : ' ') . " diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index 72235d2777..2c3a9fb5fd 100755 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -51,7 +51,7 @@ use Friendica\Database\DBA; if (!defined('DB_UPDATE_VERSION')) { - define('DB_UPDATE_VERSION', 1342); + define('DB_UPDATE_VERSION', 1343); } return [ diff --git a/static/dbview.config.php b/static/dbview.config.php index 59b8686d0b..3be78bf694 100755 --- a/static/dbview.config.php +++ b/static/dbview.config.php @@ -223,6 +223,7 @@ return [ "tag-search-view" => [ "fields" => [ "uri-id" => ["post-tag", "uri-id"], + "iid" => ["item", "id"], "uri" => ["item", "uri"], "guid" => ["item", "guid"], "uid" => ["item", "uid"], -- 2.39.5