like = $like; } /** * Execute the job. * * @return void */ public function handle() { $like = $this->like; $status = $this->like->status; $actor = $this->like->actor; if (! $status) { // Ignore notifications to deleted statuses return; } $count = $status->likes_count > 1 ? $status->likes_count : $status->likes()->count(); $status->likes_count = $count - 1; $status->save(); StatusService::del($status->id); if ($actor->id !== $status->profile_id && $status->url && $actor->domain == null) { $this->remoteLikeDeliver(); } $exists = Notification::whereProfileId($status->profile_id) ->whereActorId($actor->id) ->whereAction('group:like') ->whereItemId($status->id) ->whereItemType('App\Status') ->first(); if ($exists) { $exists->delete(); } $like = Like::whereProfileId($actor->id)->whereStatusId($status->id)->first(); if (! $like) { return; } $like->forceDelete(); } public function remoteLikeDeliver() { $like = $this->like; $status = $this->like->status; $actor = $this->like->actor; $fractal = new Fractal\Manager; $fractal->setSerializer(new ArraySerializer); $resource = new Fractal\Resource\Item($like, new LikeTransformer); $activity = $fractal->createData($resource)->toArray(); $url = $status->profile->sharedInbox ?? $status->profile->inbox_url; Helpers::sendSignedObject($actor, $url, $activity); } }