AdminRemoteReport.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. namespace App\Http\Resources;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Http\Resources\Json\JsonResource;
  5. use App\Instance;
  6. use App\Services\AccountService;
  7. use App\Services\StatusService;
  8. class AdminRemoteReport extends JsonResource
  9. {
  10. /**
  11. * Transform the resource into an array.
  12. *
  13. * @return array<string, mixed>
  14. */
  15. public function toArray(Request $request): array
  16. {
  17. $instance = parse_url($this->uri, PHP_URL_HOST);
  18. $statuses = [];
  19. if($this->status_ids && count($this->status_ids)) {
  20. foreach($this->status_ids as $sid) {
  21. $s = StatusService::get($sid, false);
  22. if($s && $s['in_reply_to_id'] != null) {
  23. $parent = StatusService::get($s['in_reply_to_id'], false);
  24. if($parent) {
  25. $s['parent'] = $parent;
  26. }
  27. }
  28. if($s) {
  29. $statuses[] = $s;
  30. }
  31. }
  32. }
  33. $res = [
  34. 'id' => $this->id,
  35. 'instance' => $instance,
  36. 'reported' => AccountService::get($this->account_id, true),
  37. 'status_ids' => $this->status_ids,
  38. 'statuses' => $statuses,
  39. 'message' => $this->comment,
  40. 'report_meta' => $this->report_meta,
  41. 'created_at' => optional($this->created_at)->format('c'),
  42. 'action_taken_at' => optional($this->action_taken_at)->format('c'),
  43. ];
  44. return $res;
  45. }
  46. }