X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModule%2FApi%2FMastodon%2FTimelines%2FListTimeline.php;h=a8de13056ec45fb0b1367c31813453f8c63b6bf3;hb=3e8c38946dc83f4905872610684bcf5ed73ee99d;hp=22b2be3bc806c891dad21cab1fb6574f3bf300fd;hpb=2a440c0bae6f801d6d3d1720c50ac03f5da88973;p=friendica.git diff --git a/src/Module/Api/Mastodon/Timelines/ListTimeline.php b/src/Module/Api/Mastodon/Timelines/ListTimeline.php index 22b2be3bc8..a8de13056e 100644 --- a/src/Module/Api/Mastodon/Timelines/ListTimeline.php +++ b/src/Module/Api/Mastodon/Timelines/ListTimeline.php @@ -1,6 +1,6 @@ parameters['id'])) { DI::mstdnError()->UnprocessableEntity(); } - $request = self::getRequest([ + $request = $this->getRequest([ 'max_id' => 0, // Return results older than id 'since_id' => 0, // Return results newer than id 'min_id' => 0, // Return results immediately newer than id @@ -56,12 +57,12 @@ class ListTimeline extends BaseApi 'local' => false, // Show only local statuses? Defaults to false. 'remote' => false, // Show only remote statuses? Defaults to false. 'exclude_replies' => false, // Don't show comments - ]); + ], $request); $params = ['order' => ['uri-id' => true], 'limit' => $request['limit']]; $condition = ["`uid` = ? AND `gravity` IN (?, ?) AND `contact-id` IN (SELECT `contact-id` FROM `group_member` WHERE `gid` = ?)", - $uid, GRAVITY_PARENT, GRAVITY_COMMENT, $parameters['id']]; + $uid, Item::GRAVITY_PARENT, Item::GRAVITY_COMMENT, $this->parameters['id']]; if (!empty($request['max_id'])) { $condition = DBA::mergeConditions($condition, ["`uri-id` < ?", $request['max_id']]); @@ -83,7 +84,7 @@ class ListTimeline extends BaseApi } if ($request['exclude_replies']) { - $condition = DBA::mergeConditions($condition, ['gravity' => GRAVITY_PARENT]); + $condition = DBA::mergeConditions($condition, ['gravity' => Item::GRAVITY_PARENT]); } if ($request['local']) { @@ -91,21 +92,29 @@ class ListTimeline extends BaseApi } if ($request['remote']) { - $condition = DBA::mergeConditions($condition, ["NOT `uri-id` IN (SELECT `uri-id` FROM `post-user` WHERE `origin`)"]); + $condition = DBA::mergeConditions($condition, ["NOT `uri-id` IN (SELECT `uri-id` FROM `post-user` WHERE `origin` AND `post-user`.`uri-id` = `post-user-view`.`uri-id`)"]); } $items = Post::selectForUser($uid, ['uri-id'], $condition, $params); + $display_quotes = self::appSupportsQuotes(); + $statuses = []; while ($item = Post::fetch($items)) { - $statuses[] = DI::mstdnStatus()->createFromUriId($item['uri-id'], $uid); + self::setBoundaries($item['uri-id']); + try { + $statuses[] = DI::mstdnStatus()->createFromUriId($item['uri-id'], $uid, $display_quotes); + } catch (\Throwable $th) { + Logger::info('Post not fetchable', ['uri-id' => $item['uri-id'], 'uid' => $uid, 'error' => $th]); + } } DBA::close($items); if (!empty($request['min_id'])) { - array_reverse($statuses); + $statuses = array_reverse($statuses); } + self::setLinkHeader(); System::jsonExit($statuses); } }