ProfileOutbox.php 926 B

123456789101112131415161718192021222324252627282930313233343536
  1. <?php
  2. namespace App\Transformer\ActivityPub;
  3. use App\Profile;
  4. use League\Fractal;
  5. use App\Transformer\ActivityPub\Verb\CreateNote;
  6. class ProfileOutbox extends Fractal\TransformerAbstract
  7. {
  8. protected $defaultIncludes = ['orderedItems'];
  9. public function transform(Profile $profile)
  10. {
  11. $count = $profile->statuses()->whereHas('media')->count();
  12. return [
  13. '@context' => 'https://www.w3.org/ns/activitystreams',
  14. 'id' => $profile->permalink('/outbox'),
  15. 'type' => 'OrderedCollection',
  16. 'totalItems' => $count,
  17. ];
  18. }
  19. public function includeOrderedItems(Profile $profile)
  20. {
  21. $statuses = $profile
  22. ->statuses()
  23. ->with('media')
  24. ->whereScope('public')
  25. ->orderBy('created_at', 'desc')
  26. ->paginate(10);
  27. return $this->collection($statuses, new CreateNote);
  28. }
  29. }