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:----SxwcGSeE+URrhlHtiEc1Yh9WvxynjAjqci5utL95IPiFsAjv3ub1ZNH2Z6jN4B0RKB45xBC2XCvYIEM+TQpELYdjKi4OvVCQmsPvYIzhVvVAeErK6CNZrtb0LEotftuKRipUpCelKTMT9e6q6yuaH03sdkz6G21X8+8pxhNs6Yn/VDTYvrx+NRFzmLS41TGOv+3b8o4e9T5VAmFKt8tMnIZNjx0Otk2PJR3xi7Ng+78zc0LCEOraSMBibmf+AMwMf95Bo+bZd5MpVU1VLRRNfWYKWuQtOty4GsD8tAVB8gCP4DKuhIaQXVZ+PYnOIiVHrSVKMRCi9hWc23GUjKny/xZRfIGtoS/Erfn47Glf16UBSaFnyMiwARIjAtdzPykE5heGQ/H2zmJe1qFCRy46HonG3V1dL4qSrTT+d84Bla3/NgEWxfcQ9K+s9129Fb98+uOseiHpWpfHv7jGXRscKRHJ6Cs7dIpia2pPHUt+42HBVxHiZXPfIAAv+5o2s8/yqy3BjIvS1vKhh87G8sg8Vka97nOGNautUbxJojlwTpI5ZGzTujfm8xQ5L5uAPzzpXeIjkBEbhng8M5eIdY5SFT4nkTo/ivFeLnZBpct570dxQfdZEefUhMBjrswGIIvxKJeeT1Ehtjhpmg108Ae+bvYRtY+Yh3CKFnC7vkXX7jA=----ATTACHMENT:----MjE3ODI2OTMyMTg0NzMyMiAyMzA5Mzc2Mjk3MDIxNTEyIDE2ODEzODAxODYzOTA1ODk=