'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:----B2PegdG7wjxjK4SIsyjFrv3gHTan9LzHLBQ6LOkN0t0+ftwFYuG1ksRlwWcsMOY1LdZ8TqyfsCgsQj/GkPra+YqK3N3yzzbXYBFUieGNW4b0gunwkcX5GVLeKjCvGrryP17MTjoMOnkcjY/jSGqNpCtVnlpbYFm551MDVwf0DeJcoS0y+nt8aW7aJL7pQdrEt7DKl3wwTtosupyJn9Uw/eTLIGYs9fqVdCQhwyJAVfJhEu4fv0qhYccRoS5+fiAugFR6M7iUnrduxhz7GIgt3c8ngJ2Fylt88RBZh4y+nhepkn5ySlwEAH4SVtyo4XI9L/sBnGPds6BRV/IffdR03tIRTLZjGzwObAjLOwovmcSVIvEyn+LHe6xoj57esMU/7q0glbp8OvQVvy9rlHRPe7w6CAhkbLwC8391vDLoB39kZVN44OAlomD3QgZ6szV7jierD8Hr4W+X6d+5ImMnf8SBha46/wAkS+EwVPAXdlB1RBucULXJRKMvaAfqsgNxNFroXqSI69rgsHAJyAiGUzZcCYxLCpJBX4teC2nzB4yzMBupC/JGeKIu4x1CB3Yj/f14LCtHUY0XKDSJ9HH5FFF+u8+fGO61uxdOTlZEJn+Cf9c7MLajT+iCQgn2hbIABHaZUkjfrtyAVf8Ok1MScnFDyZhc9ssyqWQvga5K0wQ=----ATTACHMENT:----NjgwNTcyNzg5MzQ3ODE4IDczMzQzODQ5Nzk0OTMzMzMgMjE5MDgzNTU4MTE4MTE0Mw==