'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:----N6b95P8AIl2Yxkn0JYjQc3ORvoSWzTxRwAw6oxztUVivEAC1v1YKvFYQA5hwSR9+vkzUqpHKc3v9hQfr5GmkGbAd9MX1b9nnFaLTFQiAbK1pogNi3qUIbOQKP3VVZtiNy+KH2/wTr60TNlixyyov3n5J1fHl+Hr1z/Qof+uXPCVp1Eq+JMouipJjE/Pmls0GNxes3gpMHw0jHVo0EXUbz6P0TUSrj30eJjcqPDE9gJ9UtXEVgMNFy5Hlkqt6jjvmhXVScKoILDgc7mt33sPXSBfxQumX9ohUZH92f+S6siwQwOm4ISzwhgFdUPLmmePJX7MULfF7zHWohH0e6TJA0oS5W9ynI6gm54/5CAGAQJcX4JoFY01VSvM2Fkx6y98NJL0HlzZXhr60yvkNr6oadIl+LnhwS5SwdNOkl/iTlNYddGSfBI/hKvFwFWda5A8toK0Pt4HaVtCSXxWHPlkOTSWdIfIug1X7EeF2f1uN3gw8qvKMYjfO4qvZqHODNqh/9A4ulXXO+Au5o5mmKZjzMgkUMKkqFwihfuaagPZ3UFcNZRH0kaIu9qwDmQ+wA2NAH+Lwk7atk6ao1T2nXU2Yzs8QYFoBJj+H/WQY4koC//qhLZYcw1PDiR9fSNHDR2YX1GEHDEGUQ0ZTvgpbDu54wFBt8Nfv3W/T3+JgQiQi7ME=----ATTACHMENT:----ODAzNzMwNjE4NDY4ODg2NSA2NjUzODQ1MjM0ODM1MDQ3IDUzNTczMDc3MTE2NzM0NA==