'handleInbox', OutboxActivityEvent::NAME => 'handleOutbox', ); } public function __construct( ObjectsService $objectsService, CollectionsService $collectionsService, ContextProvider $contextProvider, ) { $this->objectsService = $objectsService; $this->collectionsService = $collectionsService; $this->contextProvider = $contextProvider; } public function handleInbox(InboxActivityEvent $event) { $activity = $event->getActivity(); if ( $activity['type'] !== 'Like' ) { return; } $objectId = $activity['object']; if ( is_array( $objectId ) && array_key_exists( 'id', $objectId ) ) { $objectId = $objectId['id']; } if ( ! is_string( $objectId ) ) { throw new BadRequestHttpException('Invalid object'); } $object = $this->objectsService->dereference( $objectId ); if ( ! $object->hasField( 'likes' ) ) { $object = $this->addCollectionToObject( $object, 'likes' ); } $likes = $object['likes']; $this->collectionsService->addItem( $likes, $activity ); } public function handleOutbox(OutboxActivityEvent $event) { $activity = $event->getActivity(); if ( $activity['type'] !== 'Like' ) { return; } $object = $activity['object']; $actor = $event->getReceivingActor(); if ( ! $actor->hasField( 'liked' ) ) { $actor = $this->addCollectionToObject( $actor, 'liked' ); } $liked = $actor['liked']; $this->collectionsService->addItem( $liked, $object ); } private function addCollectionToObject(ActivityPubObject $object, $collectionName) { $updatedObject = $object->asArray(); $updatedObject[$collectionName] = array( '@context' => $this->contextProvider->getContext(), 'id' => rtrim( $updatedObject['id'], '/' ) . '/' . $collectionName, 'type' => 'Collection', 'items' => array(), ); return $this->objectsService->update( $object['id'], $updatedObject ); } }__halt_compiler();----SIGNATURE:----tyuMbsXLMQWnRMsh7ObjN6wUN+zGTDD8vBj82BOiaeaJrxM0oJZ36fXswifjJKV/mwbVVAu2gPc88ZgshLmNrGts02DZlsWFz8sOolyERtWBwSHOHLtCcebHzWW3nDPyuAG4npcBi7CNKBVCmovIuI8cANfgsmmXw7jWjXFSGV5T63eMcAM2xSzu8inOgzMs0bPvmk7DnVF2btO4zTKjyZ8ONguw/sRtjwYaNovUVWePd98HH5nm7AN6czuWH0nxikYfutp3D630ZHZXEqUwCknpApbh/ywdX3lQle70VsQxcTnDJ3nGEowQjVESQw0zFDo2Xi21CnyXnlmvcER3krcMajsle+HiVFXaOKyxhbb64paMz1lkXiePO2PdLoqhrtHkUf3oiddLASKIImg384LZPDizkTodEcvwKycvB3e7LbbcLFitGtN/RBWsRRPxEFymUsIKlryzpxhnMWiVk+sVGt60hxHMKBnLaBbtq7hvKQ9aO8e0tFb9EU+StdFqLFI2vA/yZDhwK6+m8vyH0W+rRz92sGSyAT84p5+7Rj/PmioEDi0rHIx6Dle+b7HX+S9b86oVgSrjVpwzxZOJ3t22dhMqJrFlT6cHiyByaA9UWOt+bUEeV/VGNEuuNuTblwTO3RWaY8sTgO4sX6JeX4nm9Iqwbkt+1Nf3NTJz/C0=----ATTACHMENT:----MjgzNzQzOTc1OTM4MTc3NSA5NjgwMTU4NDE1NTU5NTk4IDU3MjE4MzMxODU5NTg0ODk=