. * */ 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 = []) { $uid = self::getCurrentUserID(); $request = $this->getRequest([ 'limit' => 10, // Maximum number of results to return. Defaults to 10. ], $request); $condition = ["NOT `private` AND `commented` > ? AND `created` > ?", DateTimeFormat::utc('now -1 day'), DateTimeFormat::utc('now -1 week')]; $condition = DBA::mergeConditions($condition, ['network' => Protocol::FEDERATED]); $trending = []; $statuses = Post::selectPostThread(['uri-id'], $condition, ['limit' => $request['limit'], 'order' => ['total-actors' => true]]); while ($status = Post::fetch($statuses)) { $trending[] = DI::mstdnStatus()->createFromUriId($status['uri-id'], $uid); } DBA::close($statuses); System::jsonExit($trending); } }