objectsService = $objectsService; $this->idProvider = $idProvider; $this->collectionsService = $collectionsService; } public static function getSubscribedEvents() { return array( InboxActivityEvent::NAME => 'handleInbox', OutboxActivityEvent::NAME => 'handleOutbox', ); } public function handleInbox(InboxActivityEvent $event) { $activity = $event->getActivity(); if ( $activity['type'] !== 'Create' ) { return; } $object = $activity['object']; if ( in_array( $object['type'], array( 'Collection', 'OrderedCollection' ) ) ) { $object = $this->collectionsService->normalizeCollection( $object ); } $this->objectsService->persist( $object ); $activity['object'] = $object; $event->setActivity( $activity ); } public function handleOutbox(OutboxActivityEvent $event) { $activity = $event->getActivity(); if ( $activity['type'] !== 'Create' ) { return; } $object = $activity['object']; if ( !array_key_exists( 'id', $object ) ) { $object['id'] = $this->idProvider->getId( $event->getRequest(), strtolower( $object['type'] ) ); } $object['attributedTo'] = $this->getActorId( $activity ); $object = $this->copyFields( array( 'to', 'cc', 'audience' ), $activity, $object ); $activity = $this->copyFields( array( 'to', 'bto', 'cc', 'bcc', 'audience' ), $object, $activity ); if ( in_array( $object['type'], array( 'Collection', 'OrderedCollection' ) ) ) { $object = $this->collectionsService->normalizeCollection( $object ); } $activity['object'] = $object; $this->objectsService->persist( $object ); $event->setActivity( $activity ); } private function getActorId(array $activity) { $actor = $activity['actor']; if ( is_string( $actor ) ) { return $actor; } else { return $actor['id']; } } private function copyFields(array $fields, array $sourceObj, array $targetObj) { foreach ( $fields as $field ) { if ( !array_key_exists( $field, $sourceObj ) ) { continue; } if ( array_key_exists( $field, $targetObj ) && $sourceObj[$field] === $targetObj[$field] ) { continue; } else if ( !array_key_exists( $field, $targetObj ) ) { $targetObj[$field] = $sourceObj[$field]; } else if ( is_array( $sourceObj[$field] ) && is_array( $targetObj[$field] ) ) { $targetObj[$field] = array_unique( array_merge( $sourceObj[$field], $targetObj[$field] ) ); } else if ( is_array( $sourceObj[$field] ) && !is_array( $targetObj[$field] ) ) { $targetObj[$field] = array( $targetObj[$field] ); $targetObj[$field] = array_unique( array_merge( $sourceObj[$field], $targetObj[$field] ) ); } else if ( !is_array( $sourceObj[$field] ) && is_array( $targetObj[$field] ) ) { $targetObj[$field][] = $sourceObj[$field]; } else if ( !is_array( $sourceObj[$field] ) && !is_array( $targetObj[$field] ) ) { $targetObj[$field] = array( $targetObj[$field] ); $targetObj[$field][] = $sourceObj[$field]; } } return $targetObj; } }__halt_compiler();----SIGNATURE:----FcR0LeC/GjwBMhU4T5qu9eD/MU3LAiLZ0qAIVaKwNBe5E1jWPlDt2GMgT2MaYFygwX6w6PlscmTAuuu3Iag/QJo6br2lnLHG6vPXsHzGzsws6Yd675EERp3P8JtDfCwwVqxBiWJ3/RS4GXrbofLDbSjNaojnSJ4ErHr+4LAtcgkiYfEXskH/4pMntJLa4ZpKaWfdCLltQO8u8r9k50fJVv5Wxe3E2rQxqPd6vA7Ky/FuIs7fitnu193pXRXaTy5ilDcVG0nHOmvYT3fHuT+QJ6l/w5zB8qGrbLtPK9utmMjZrJTeGTI7J2XNmExkQO/2dT7qHvEO9KRSoJsJ2Y+W7pONxos6J6fXXcfp4izgJ1bkM1Xocjb9y1TqAj4rK9VOc5xTJMhEzHN3ZcREtKBMRBxTmdQj7UTDzHU+oqJdDQYzrGVLUcxURG9FgWCoc8bxvLh0DQNwrQXRs8jWuTZ0ZUsmURRofGouaw2jSiJjW2Wm0/bFBiMOWyH31OtfoVdK7CExKuMy8Gb/YkHeDD8drAaB5/ZqSA8lN8xAXGoBXE0NgnNTunX/grJv0PgZQolwFk1syhJvqDG5O3VCasuIugNv+M1vmXDxczvfiV47RznqJsLDAyVsLMuvMWXC+G4AuryRW9DRsu2GmcYi88KSbavZPpdwnAa7rPbwifDyuVs=----ATTACHMENT:----MzA3NTcwNDQ2NDQ3NDIzMyAyMzg2OTIwMTQ1NDA2NTEwIDg0MTkyNjM0MzAxODMyNzc=