diff --git a/mod/ping.php b/mod/ping.php index 8efddb757..146e7e75b 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -138,7 +138,7 @@ function ping_init(App $a) $condition = ["`unseen` AND `uid` = ? AND NOT `origin` AND (`vid` != ? OR `vid` IS NULL)", local_user(), Verb::getID(Activity::FOLLOW)]; - $items = Post::selectForUser(local_user(), ['wall', 'uid', 'uri-id'], $condition); + $items = Post::selectForUser(local_user(), ['wall', 'uid', 'uri-id'], $condition, ['limit' => 1000]); if (DBA::isResult($items)) { $items_unseen = Post::toArray($items, false); $arr = ['items' => $items_unseen]; @@ -253,8 +253,8 @@ function ping_init(App $a) $data['intro'] = $intro_count; $data['mail'] = $mail_count; - $data['net'] = $network_count; - $data['home'] = $home_count; + $data['net'] = ($network_count < 1000) ? $network_count : '999+'; + $data['home'] = ($home_count < 1000) ? $home_count : '999+'; $data['register'] = $register_count; $data['all-events'] = $all_events; diff --git a/src/Content/ForumManager.php b/src/Content/ForumManager.php index 8556ba353..4f4165420 100644 --- a/src/Content/ForumManager.php +++ b/src/Content/ForumManager.php @@ -215,8 +215,9 @@ class ForumManager AND `contact`.`network` IN (?, ?) AND `contact`.`contact-type` = ? AND NOT `contact`.`blocked` AND NOT `contact`.`hidden` AND NOT `contact`.`pending` AND NOT `contact`.`archive` + AND `contact`.`uid` = ? GROUP BY `contact`.`id`", - local_user(), Protocol::DFRN, Protocol::ACTIVITYPUB, Contact::TYPE_COMMUNITY + local_user(), Protocol::DFRN, Protocol::ACTIVITYPUB, Contact::TYPE_COMMUNITY, local_user() ); return DBA::toArray($stmtContacts); diff --git a/src/Model/Tag.php b/src/Model/Tag.php index 1bc700c3f..ab7845c2c 100644 --- a/src/Model/Tag.php +++ b/src/Model/Tag.php @@ -545,13 +545,21 @@ class Tag */ public static function setGlobalTrendingHashtags(int $period, int $limit = 10) { + // Get a uri-id that is at least X hours old. + // We use the uri-id in the query for the hash tags since this is much faster + $post = Post::selectFirstThread(['uri-id'], ["`uid` = ? AND `received` < UTC_TIMESTAMP() - INTERVAL ? HOUR", 0, $period], + ['order' => ['received' => true]]); + if (empty($post['uri-id'])) { + return []; + } + $block_sql = self::getBlockedSQL(); $tagsStmt = DBA::p("SELECT `name` AS `term`, COUNT(*) AS `score`, COUNT(DISTINCT(`author-id`)) as `authors` FROM `tag-search-view` - WHERE `private` = ? AND `uid` = ? AND `received` > DATE_SUB(NOW(), INTERVAL ? HOUR) $block_sql + WHERE `private` = ? AND `uid` = ? AND `uri-id` > ? $block_sql GROUP BY `term` ORDER BY `authors` DESC, `score` DESC LIMIT ?", - Item::PUBLIC, 0, $period, $limit); + Item::PUBLIC, 0, $post['uri-id'], $limit); if (DBA::isResult($tagsStmt)) { $tags = DBA::toArray($tagsStmt); @@ -590,13 +598,21 @@ class Tag */ public static function setLocalTrendingHashtags(int $period, int $limit = 10) { + // Get a uri-id that is at least X hours old. + // We use the uri-id in the query for the hash tags since this is much faster + $post = Post::selectFirstThread(['uri-id'], ["`uid` = ? AND `received` < UTC_TIMESTAMP() - INTERVAL ? HOUR", 0, $period], + ['order' => ['received' => true]]); + if (empty($post['uri-id'])) { + return []; + } + $block_sql = self::getBlockedSQL(); $tagsStmt = DBA::p("SELECT `name` AS `term`, COUNT(*) AS `score`, COUNT(DISTINCT(`author-id`)) as `authors` FROM `tag-search-view` - WHERE `private` = ? AND `wall` AND `origin` AND `received` > DATE_SUB(NOW(), INTERVAL ? HOUR) $block_sql + WHERE `private` = ? AND `wall` AND `origin` AND `uri-id` > ? $block_sql GROUP BY `term` ORDER BY `authors` DESC, `score` DESC LIMIT ?", - Item::PUBLIC, $period, $limit); + Item::PUBLIC, $post['uri-id'], $limit); if (DBA::isResult($tagsStmt)) { $tags = DBA::toArray($tagsStmt); diff --git a/src/Worker/ExpirePosts.php b/src/Worker/ExpirePosts.php index de650f667..bd1addf11 100644 --- a/src/Worker/ExpirePosts.php +++ b/src/Worker/ExpirePosts.php @@ -170,7 +170,7 @@ class ExpirePosts { // We have to avoid deleting newly created "item-uri" entries. // So we fetch a post that had been stored yesterday and only delete older ones. - $item = Post::selectFirst(['uri-id'], ["`uid` = ? AND `received` < UTC_TIMESTAMP() - INTERVAL ? DAY", 0, 1], + $item = Post::selectFirstThread(['uri-id'], ["`uid` = ? AND `received` < UTC_TIMESTAMP() - INTERVAL ? DAY", 0, 1], ['order' => ['received' => true]]); if (empty($item['uri-id'])) { Logger::warning('No item with uri-id found - we better quit here');