. * */ namespace Friendica\Module\Api\Mastodon\Trends; use Friendica\Core\Protocol; use Friendica\Core\System; use Friendica\Database\DBA; use Friendica\DI; use Friendica\Model\Post; use Friendica\Module\BaseApi; use Friendica\Util\DateTimeFormat; /** * @see https://docs.joinmastodon.org/methods/trends/#statuses */ class Statuses extends BaseApi { /** * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ protected function rawContent(array $request = []) { $request = $this->getRequest([ 'limit' => 10, // Maximum number of results to return. Defaults to 10. ], $request); $trending = []; $condition = ["NOT `private` AND `commented` > ?", DateTimeFormat::utc('now -1 day')]; $condition = DBA::mergeConditions($condition, ['network' => Protocol::FEDERATED]); $statuses = Post::selectPostThread(['uri-id'], $condition, ['limit' => $request['limit'], 'order' => ['total-comments' => true]]); while ($status = Post::fetch($statuses)) { $trending[] = DI::mstdnStatus()->createFromUriId($status['uri-id']); } DBA::close($statuses); System::jsonExit($trending); } }