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:----D/e9Ni4Oh+iWc65f8H9XBgf+6XDgezJd+P+zJvgrpSHJxirHdhejPRNaxm8gmNdPCwxnd1Sf3azC5NNL0WKH+dMAgdpBMEK92IFXjYl73UcihUH4vpaS9Zaov9rzWXwRf6oPfU5gi4mJBJvqWQHs+SrUVpk5SsBfKmx4l8OcZ/+uaWAxD2703IXaQcT4kJk1Zq6Kx9f2+vvw/8AH2D4T2xrOYcoVYWt6Tt42avvLNruH1unO/SoZIP4ZTuuHTNJhMztolnZde37iDSU8oadRq+R2cmdPCWi9HlNOge/V7BohsQcRVHA+tjdvc++I19XqPxamNQ/I+7MNNNzgNiAFTW1ZaoMZ+C3gdS1pv345ZdnOkkeHFJYxOv/LXqzG8MkqkDW7DzSVo+KdlZszxW25Vow0+Fb6s/ccn76QM2hWQGSAffQZUmK9T6IvWwW9K/K2KoFNtZl/MOAM869Cs9AD7aSLIiWqH0y4uPTYj9Un4k3Oe1GizMCV08KR1hWbInGF2AV/VyZb3ckDVIsp9EAc9KcwUeaXcwK/5ycqG/EY0cmNfCqZ96aDQfZI6uknuiQUsTys76DL7oyaG2O3YDDNv3Z7YH2+mlV2yjnmF8aiDFhfHvqT/dcfr2zWXuwOFJeuDY6WgiM65ug0YPPN4HObTG5WwU5LHUn1tkoWEIYirVQ=----ATTACHMENT:----NzcyNzk2ODcxODYzMzAzOSAzMjMxMDQ4NTA1ODE0NjE1IDEyMTM1OTk5NjE5NjEzOQ==