diff options
Diffstat (limited to 'Digitigrade/Timeline/Timeline.php')
| -rw-r--r-- | Digitigrade/Timeline/Timeline.php | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/Digitigrade/Timeline/Timeline.php b/Digitigrade/Timeline/Timeline.php index b3def28..f53eaa4 100644 --- a/Digitigrade/Timeline/Timeline.php +++ b/Digitigrade/Timeline/Timeline.php @@ -1,6 +1,9 @@ <?php namespace Digitigrade\Timeline; +use Digitigrade\Model\Note; +use Digitigrade\Model\UserAccount; + abstract class Timeline { // TODO: currently making this number up. probably should be modifiable somewhere private const RESULTS_PER_PAGE = 50; @@ -11,7 +14,25 @@ abstract class Timeline { * @return TimelineItem[] */ public function getPage(int $page = 0): array { - return $this->getItems(self::RESULTS_PER_PAGE, self::RESULTS_PER_PAGE * $page); + return $this->getItemsFiltered(self::RESULTS_PER_PAGE, self::RESULTS_PER_PAGE * $page); + } + + /** + * @return TimelineItem[] + */ + private function getItemsFiltered(int $limit, int $offset): array { + $user = UserAccount::findByCurrentSession(); + $items = $this->getItems($limit, $offset); + if ($user == null) + return $items; + // filter out notes from blocked users + return array_filter($items, function (TimelineItem $item) use ($user) { + $obj = $item->getObject(); + if ($obj instanceof Note && $user->actor->blocks($obj->author)) { + return false; + } + return true; + }); } /** |
