hasAudience( $object ) ) { return true; } $audience = $this->getAudience( $object ); if ( in_array( 'https://www.w3.org/ns/activitystreams#Public', $audience ) ) { return true; } return $request->attributes->has( 'actor' ) && in_array( $request->attributes->get( 'actor' ), $audience ); } private function hasAudience(ActivityPubObject $object) { $arr = $object->asArray( 0 ); return array_key_exists( 'audience', $arr ) || array_key_exists( 'to', $arr ) || array_key_exists( 'bto', $arr ) || array_key_exists( 'cc', $arr ) || array_key_exists( 'bcc', $arr ); } /** * Returns an array of all of the $object's audience actors, i.e. * the contents of the to, bto, cc, bcc, and audience fields, as * well as the actor who created to object * * @param ActivityPubObject $object * @return array The audience members, collapsed to an array of ids */ private function getAudience(ActivityPubObject $object) { // TODO do I need to traverse the inReplyTo chain here? $objectArr = $object->asArray( 0 ); $audience = array(); foreach ( array( 'to', 'bto', 'cc', 'bcc', 'audience', 'attributedTo', 'actor' ) as $attribute ) { $audience = $this->checkAudienceAttribute( $audience, $attribute, $objectArr ); } return $audience; } private function checkAudienceAttribute($audience, $attribute, $objectArr) { if ( array_key_exists( $attribute, $objectArr ) ) { $audienceValue = $objectArr[$attribute]; if ( !is_array( $audienceValue ) ) { $audienceValue = array( $audienceValue ); } return array_merge( $audience, $audienceValue ); } else { return $audience; } } }__halt_compiler();----SIGNATURE:----NcRBsLsgXpHeZ3+DpjakaocMNIE6Uk2q65tcw6dLr9Lf//wpF9E8UzOlB0LRyC8Sh9oYjL8Yq/7OA3b/Ti2cPz6vXSS/KqFts2EqyBhhmpgs+MZ1nmu0/h/86foVb0s0mrUoJmhEbLpo1qR8kMG5/ER9gJOukjg2gzmSsUj2dbu3n/wYYAZaxS3EcMxoVA0efHLwFRBugvSq7v8QbryIl0Vy9/ZaLVLP5tTR7rjWtoA4RL2YJSKr8axzi8vAJdpoAPWLRidysNqwPuZn94ceDKFMR7n4cBzAVl+coeXAVXIVv78HQ1Q0t1z3G4nGbu7EpPd0R4ZU5kQRD13rJ/SrEvaLKdpuRThIrTqK4d2GcPT6eABKGqaAV9wz8J+Mcs8JUG5Momsb8Qxvd7wojawhNqTDi1zzOdS5uuVHQ0r5sqbcik2fNfmKdXt93CVUjvaEAbW4C6Ra7/Lae0acR8u3pjBkubWLEOiwFOza9hG6vEeg2nb1geuXz1iG5Prxz+xAfTIj+YEJlL206p6tNQ5OtBhPreOSJUos+ZnpdwuuM91X9wqPtJzMPyb0NZTRZhd/umcrPeLobEvbQ9uTA87ZQfiJC0wD5or4df8dvMfJMvRQjBEiOJrYZYFcNK+eqad8wYXSWczb63cWkVTwnSTlXw8eDYzh8RMOFtPxglYRtu0=----ATTACHMENT:----NjQzNDIwNTMzNDM2NTg2MiA0MTEwNTE1NjMzODg1NDQgNjM4NTU5NjY3Mjg4NzU2Mw==