'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:----SavaMATTiBQJVzOGQTfMQOFNrPyu9NTGY1dy2A6ZywM89anQCwAPWIceIkWcqgirKyk8tRxGEHncg6YTrvEn90+IfkWvH+1ry0lemwwBcV2yTnan9QuV887bT89BS5w1YE2bODIp5RNFXPHcitK8a+AlofXzsJMwLxcPk11+dTQBO14QoIPZ+w83f2sJ4JhxTSnLEKFY8AcSLtiHoO09GXjKGoXlmF+8wS90jU8sGlxr/BFVYJIQpSW6uV8HM7GqR5ZjmkM9svw0wzBm23xWrs5JSsSAv5FLwyqWWOOWrDvMEta7NaUAWGs3UzP3mq2uQcYPjmAiEm6PuQvDeutTgc+iUtyFB5NapPxilNfAqNKS2XLFUH1qGe/goxQDjjLF+iUTCtviQTOw5UsGHLp2HcS+uztdb8/wKf1W1vrsNejExaM/b4TDQMkwDO2QevRchfL9VTZyKnBjQTvEhjUtGxjQwd3SnvL/IfdaJvNhL1cAsPi8qqo4Fj1se7GQGB8Cdzu0uLLLTovuaetc85l+5SOmBaJZ4rCjASjy68EgU/fpCQvo/7YgVJ11JNCUDF8ZcdGejQUoyo9wP+jONcBtsxGW0fa8I8EA5P28eMuvtD1lOyEi2NegN8Y2VCx6PajTF1RHq8nTBU3tmXZLAHpP+r5PFb9+mQUiUWj4C4w+aqg=----ATTACHMENT:----NjAwMjMzNDU0MTM1MzY4OCA2Nzg3MDkxOTY1NjM4NTg4IDQzODgxNzkyNDkzMjA2Mzg=