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:----j27/qbVTUoP58Qs4EL5d4vCFm0FCHcWpTAZUnXf8FRzubTRpEZ9ljxBtGzs2vGgWQqz6FyHampdTJ4AOeiaOmjblwXfETqDc9oAiY5Dm3ChUrWE/2sIA5jWuzRJbgZV6rNm4XDpaJFWps5WuQEdaaMY/24IH45/TxTEhvDcFH05/DcOiMdxUGHoJm4XDqhYwfVeB2GScK4ypPDSVgHxkWKyk/4FVuV0JGfq5dSb5c0Xm+GVr1IdJVlOPWiuwvsWGOvuJW8l7kxXciVeTMAiWBJ/q4bKG0QeFf5VVVJq+HXg3CUXKW2h0cdGj4TT8rCtc6TSyWys5tZsPL3Wyy0qulXgwIzO07jut+js4OaG/qt+Bf29aRAAk+yOqxbuzCu/ip4EsVxQW9GI2nV1fiJLyc+UvwUyJtCoELLdmEhsugZv6TZLHAPnSoFONc5rtJPuspmzVzDBGCd9tU9LeItiXed8LeNhV7tcf4bTz7n51E11N5u2XwcpZvpjEN4iVrjXJkA93H2KVhsrizVGGII1dbPYhdqgfTsH+7E40589QQIs/I7xz3pPtg8k1t6+gBPdegEAhQvk7UCq3gqUNk6cAZ7j55jLat8w6e+SSrNBfteaxyvkf/CpeLU8grVmpNSgMA3iOYmk+g4vNFiQdOfVn6nxBPYZMn0eqqmxEn1g3GTo=----ATTACHMENT:----MjU2NDE1MDM0ODU4MDgzOCAxODE2NzA3NDc1MTE5NjA2IDYyNjU5NDc4Mzc1NDUwMjE=