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:----gVr0ElQBhaqKxevlzxFfGMrdaPUw4EYZG9EEewp4zMaUgAXhwxpll/7vQeZ/U7MtxNSxi5gL/EZZ9j2RSoQ+ats0qc1HVSs2hVKB7gx72PfoYwfp3tBapNmP9+QkEk5GR0eJWtPJc0SytLUS6ESCvObSUlM8rpT7v0anHbm7BgSOTpbPfPmeE88PaILleVK+BXkZkdFggiCuPLjo114fh0wLfXygirGNL193MN8WCZK2K49CdlVpzjKKwo+Gr4pW9gyepS4X6u/X/fg6cYuSd0u7dph9jPH/RlLNIheB4uhENh6QdOwjg68Sm/80IeRy+BfuA6K1JWN8kmDLmjyts1PxAen1cyvN9RGdKPx6PJAD9V+L1u++Cl+zkseXv9k4el/ctilX0tuwB9aIcydz0PcDwWjKiA5xuu6HXsXl1mdj+paMPrqrcVkrpcKpLjOxXgQNlmYIDWlBDQGmAgRmPa3oT/2agnJXaBdurY4I7EV1EtH/AgsrkKZ+O+tP9nJwfiyubD8jR7Q6fmsEg6xHhdkmTGDLo9bKr/4V2fw9IkOdsioeuX77yGevH+XmWkYzT3UK3TmHE5/6VTJ/8fYqHO/xJVX4EVj8M4z025xzKLxmp7wMc6djCCeoYht2+Ee/FRN4Dqi6giRaG4CnCiJXTvRGt0Zi3WGG5oDFCj7CIh0=----ATTACHMENT:----NzMyNjI4OTU4MTY3ODA1OCAyNTUzMDQ3Mzc0NjQyOTYgMTI5MDQ1MjYxNTk3OTk5NA==