wp_object = $wp_object; } /** * Transform all properties with available get(ter) functions. * * @param Base_Object|object $object * * @return Base_Object|object $object */ protected function transform_object_properties( $activitypub_object ) { $vars = $activitypub_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( $activitypub_object, $setter ), $value ); } } } return $activitypub_object; } /** * Transform the WordPress Object into an ActivityPub Object. * * @return Activitypub\Activity\Base_Object */ public function to_object() { $activitypub_object = new Base_Object(); $activitypub_object = $this->transform_object_properties( $activitypub_object ); return $activitypub_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 ); // Pre-fill the Activity with data (for example cc and to). $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 ); }