diff --git a/src/Model/Tag.php b/src/Model/Tag.php index 7eb475d727..40f2f8d6a1 100644 --- a/src/Model/Tag.php +++ b/src/Model/Tag.php @@ -440,6 +440,21 @@ class Tag return $return; } + /** + * Counts posts for given tag + * + * @param string $search + * @param integer $uid + * @return integer number of posts + */ + public static function countByTag(string $search, int $uid = 0) + { + $condition = ["`name` = ? AND (NOT `private` OR (`private` AND `uid` = ?))", $search, $uid]; + $params = ['group_by' => ['uri-id']]; + + return DBA::count('tag-search-view', $condition, $params); + } + /** * Search posts for given tag * diff --git a/src/Module/Search/Index.php b/src/Module/Search/Index.php index bf3ae2585b..6cee581c2b 100644 --- a/src/Module/Search/Index.php +++ b/src/Module/Search/Index.php @@ -156,8 +156,9 @@ class Index extends BaseSearch $params = ['order' => ['id' => true], 'group_by' => ['uri-id']]; $items = Item::selectForUser(local_user(), [], ['uri-id' => $uriids], $params); $r = Item::inArray($items); + $count = Tag::countByTag($search, local_user()); } else { - $r = []; + $count = 0; } } else { Logger::info('Start fulltext search.', ['q' => $search]); @@ -173,6 +174,7 @@ class Index extends BaseSearch ]; $items = Item::selectForUser(local_user(), [], $condition, $params); $r = Item::inArray($items); + $count = DBA::count('item', $condition); } if (!DBA::isResult($r)) { @@ -194,7 +196,7 @@ class Index extends BaseSearch $o .= conversation(DI::app(), $r, 'search', false, false, 'commented', local_user()); - $o .= $pager->renderMinimal(count($r)); + $o .= $pager->renderMinimal($count); return $o; }