160 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			160 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * Activity Object Transformer Class.
 | |
|  *
 | |
|  * @package Activitypub
 | |
|  */
 | |
| 
 | |
| namespace Activitypub\Transformer;
 | |
| 
 | |
| /**
 | |
|  * Activity Object Transformer Class.
 | |
|  */
 | |
| class Activity_Object extends Base {
 | |
| 	/**
 | |
| 	 * The Activity Object.
 | |
| 	 *
 | |
| 	 * @var \Activitypub\Activity\Activity
 | |
| 	 */
 | |
| 	protected $item;
 | |
| 
 | |
| 	/**
 | |
| 	 * Transform the WordPress Object into an ActivityPub Object.
 | |
| 	 *
 | |
| 	 * @return \Activitypub\Activity\Base_Object|\WP_Error
 | |
| 	 */
 | |
| 	public function to_object() {
 | |
| 		$activity_object = $this->transform_object_properties( $this->item );
 | |
| 
 | |
| 		if ( \is_wp_error( $activity_object ) ) {
 | |
| 			return $activity_object;
 | |
| 		}
 | |
| 
 | |
| 		$activity_object = $this->set_audience( $activity_object );
 | |
| 
 | |
| 		return $activity_object;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Get the ID of the object.
 | |
| 	 *
 | |
| 	 * @return string The ID of the object.
 | |
| 	 */
 | |
| 	public function get_id() {
 | |
| 		return $this->item->get_id();
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Get the attributed to.
 | |
| 	 *
 | |
| 	 * @return string The attributed to.
 | |
| 	 */
 | |
| 	public function get_attributed_to() {
 | |
| 		return $this->item->get_attributed_to();
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Helper function to get the @-Mentions from the post content.
 | |
| 	 *
 | |
| 	 * @return array The list of @-Mentions.
 | |
| 	 */
 | |
| 	protected function get_mentions() {
 | |
| 		/**
 | |
| 		 * Filter the mentions in the post content.
 | |
| 		 *
 | |
| 		 * @param array                          $mentions The mentions.
 | |
| 		 * @param string                         $content  The post content.
 | |
| 		 * @param \Activitypub\Activity\Activity $item     The Activity object.
 | |
| 		 *
 | |
| 		 * @return array The filtered mentions.
 | |
| 		 */
 | |
| 		return apply_filters(
 | |
| 			'activitypub_extract_mentions',
 | |
| 			array(),
 | |
| 			$this->item->get_content() . ' ' . $this->item->get_summary(),
 | |
| 			$this->item
 | |
| 		);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Returns the content map for the post.
 | |
| 	 *
 | |
| 	 * @return array The content map for the post.
 | |
| 	 */
 | |
| 	protected function get_content_map() {
 | |
| 		$content = $this->item->get_content();
 | |
| 
 | |
| 		if ( ! $content ) {
 | |
| 			return null;
 | |
| 		}
 | |
| 
 | |
| 		return array(
 | |
| 			$this->get_locale() => $content,
 | |
| 		);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Returns the name map for the post.
 | |
| 	 *
 | |
| 	 * @return array The name map for the post.
 | |
| 	 */
 | |
| 	protected function get_name_map() {
 | |
| 		$name = $this->item->get_name();
 | |
| 
 | |
| 		if ( ! $name ) {
 | |
| 			return null;
 | |
| 		}
 | |
| 
 | |
| 		return array(
 | |
| 			$this->get_locale() => $name,
 | |
| 		);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Returns the summary map for the post.
 | |
| 	 *
 | |
| 	 * @return array The summary map for the post.
 | |
| 	 */
 | |
| 	protected function get_summary_map() {
 | |
| 		$summary = $this->item->get_summary();
 | |
| 
 | |
| 		if ( ! $summary ) {
 | |
| 			return null;
 | |
| 		}
 | |
| 
 | |
| 		return array(
 | |
| 			$this->get_locale() => $summary,
 | |
| 		);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Returns a list of Tags, used in the Comment.
 | |
| 	 *
 | |
| 	 * This includes Hash-Tags and Mentions.
 | |
| 	 *
 | |
| 	 * @return array The list of Tags.
 | |
| 	 */
 | |
| 	protected function get_tag() {
 | |
| 		$tags = $this->item->get_tag();
 | |
| 
 | |
| 		if ( ! $tags ) {
 | |
| 			$tags = array();
 | |
| 		}
 | |
| 
 | |
| 		$mentions = $this->get_mentions();
 | |
| 
 | |
| 		if ( $mentions ) {
 | |
| 			foreach ( $mentions as $mention => $url ) {
 | |
| 				$tag    = array(
 | |
| 					'type' => 'Mention',
 | |
| 					'href' => \esc_url( $url ),
 | |
| 					'name' => \esc_html( $mention ),
 | |
| 				);
 | |
| 				$tags[] = $tag;
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		return \array_unique( $tags, SORT_REGULAR );
 | |
| 	}
 | |
| }
 |