André Menrath
fb2db28926
Some checks are pending
PHP_CodeSniffer / phpcs (push) Waiting to run
Unit Testing / phpunit (5.6, 6.2) (push) Waiting to run
Unit Testing / phpunit (7.0) (push) Waiting to run
Unit Testing / phpunit (7.2) (push) Waiting to run
Unit Testing / phpunit (7.3) (push) Waiting to run
Unit Testing / phpunit (7.4) (push) Waiting to run
Unit Testing / phpunit (8.0) (push) Waiting to run
Unit Testing / phpunit (8.1) (push) Waiting to run
Unit Testing / phpunit (8.2) (push) Waiting to run
Unit Testing / phpunit (latest) (push) Waiting to run
135 lines
2.9 KiB
PHP
135 lines
2.9 KiB
PHP
<?php
|
|
namespace Activitypub\Transformer;
|
|
|
|
use Activitypub\Activity\Activity;
|
|
use Activitypub\Activity\Base_Object;
|
|
|
|
/**
|
|
* WordPress Base Transformer
|
|
*
|
|
* Transformers are responsible for transforming a WordPress objects into different ActivityPub
|
|
* Object-Types or Activities.
|
|
*/
|
|
abstract class Base {
|
|
/**
|
|
* The WP_Post object.
|
|
*
|
|
* @var
|
|
*/
|
|
protected $object;
|
|
|
|
protected $activitypub_object_type = 'Base_Object';
|
|
|
|
/**
|
|
* Static function to Transform a WordPress Object.
|
|
*
|
|
* This helps to chain the output of the Transformer.
|
|
*
|
|
* @param stdClass $object The WP_Post object
|
|
*
|
|
* @return void
|
|
*/
|
|
public static function transform( $object ) {
|
|
return new static( $object );
|
|
}
|
|
|
|
/**
|
|
* Base constructor.
|
|
*
|
|
* @param stdClass $object
|
|
*/
|
|
public function __construct( $object=null ) {
|
|
if ( $object ) {
|
|
$this->object = $object;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Transform the WordPress Object into an ActivityPub Object.
|
|
*
|
|
* @return Activitypub\Activity\Base_Object
|
|
*/
|
|
public function to_object() {
|
|
$object = new Base_Object();
|
|
|
|
$vars = $object->get_object_var_keys();
|
|
|
|
foreach ( $vars as $var ) {
|
|
$getter = 'get_' . $var;
|
|
|
|
if ( method_exists( $this, $getter ) ) {
|
|
$value = call_user_func( array( $this, $getter ) );
|
|
|
|
if ( isset( $value ) ) {
|
|
$setter = 'set_' . $var;
|
|
|
|
call_user_func( array( $object, $setter ), $value );
|
|
}
|
|
}
|
|
}
|
|
|
|
return $object;
|
|
}
|
|
|
|
/**
|
|
* Transforms the ActivityPub Object to an Activity
|
|
*
|
|
* @param string $type The Activity-Type.
|
|
*
|
|
* @return \Activitypub\Activity\Activity The Activity.
|
|
*/
|
|
public function to_activity( $type ) {
|
|
$object = $this->to_object();
|
|
|
|
$activity = new Activity();
|
|
$activity->set_type( $type );
|
|
$activity->set_object( $object );
|
|
|
|
// Use simple Object (only ID-URI) for Like and Announce
|
|
if ( in_array( $type, array( 'Like', 'Announce' ), true ) ) {
|
|
$activity->set_object( $object->get_id() );
|
|
}
|
|
|
|
return $activity;
|
|
}
|
|
|
|
/**
|
|
* Returns the ID of the WordPress Object.
|
|
*
|
|
* @return int The ID of the WordPress Object
|
|
*/
|
|
abstract public function get_wp_user_id();
|
|
|
|
/**
|
|
* Change the User-ID of the WordPress Post.
|
|
*
|
|
* @return int The User-ID of the WordPress Post
|
|
*/
|
|
abstract public function change_wp_user_id( $user_id );
|
|
|
|
/**
|
|
* Get the name used for registering the transformer with the ActivityPub plugin.
|
|
*
|
|
* @since version_number_transformer_management_placeholder
|
|
* @return string name
|
|
*/
|
|
abstract public function get_name();
|
|
|
|
/**
|
|
* Get the display name for the ActivityPub transformer.
|
|
*
|
|
* @since version_number_transformer_management_placeholder
|
|
* @return string display name
|
|
*/
|
|
abstract public function get_label();
|
|
|
|
/**
|
|
* Returns the ActivityStreams 2.0 Object-Type.
|
|
*
|
|
* @see https://www.w3.org/TR/activitystreams-vocabulary/#activity-types
|
|
*
|
|
* @return string The Object-Type.
|
|
*/
|
|
abstract protected function get_type();
|
|
|
|
}
|