202 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			202 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/**
 | 
						|
 * WP-CLI file.
 | 
						|
 *
 | 
						|
 * @package Activitypub
 | 
						|
 */
 | 
						|
 | 
						|
namespace Activitypub;
 | 
						|
 | 
						|
use WP_CLI;
 | 
						|
use WP_CLI_Command;
 | 
						|
 | 
						|
/**
 | 
						|
 * WP-CLI commands.
 | 
						|
 *
 | 
						|
 * @package Activitypub
 | 
						|
 */
 | 
						|
class Cli extends WP_CLI_Command {
 | 
						|
	/**
 | 
						|
	 * Check the Plugins Meta-Information.
 | 
						|
	 *
 | 
						|
	 * ## OPTIONS
 | 
						|
	 *
 | 
						|
	 * [--Name]
 | 
						|
	 * The Plugin Name.
 | 
						|
	 *
 | 
						|
	 * [--PluginURI]
 | 
						|
	 * The Plugin URI.
 | 
						|
	 *
 | 
						|
	 * [--Version]
 | 
						|
	 * The Plugin Version.
 | 
						|
	 *
 | 
						|
	 * [--Description]
 | 
						|
	 * The Plugin Description.
 | 
						|
	 *
 | 
						|
	 * [--Author]
 | 
						|
	 * The Plugin Author.
 | 
						|
	 *
 | 
						|
	 * [--AuthorURI]
 | 
						|
	 * The Plugin Author URI.
 | 
						|
	 *
 | 
						|
	 * [--TextDomain]
 | 
						|
	 * The Plugin Text Domain.
 | 
						|
	 *
 | 
						|
	 * [--DomainPath]
 | 
						|
	 * The Plugin Domain Path.
 | 
						|
	 *
 | 
						|
	 * [--Network]
 | 
						|
	 * The Plugin Network.
 | 
						|
	 *
 | 
						|
	 * [--RequiresWP]
 | 
						|
	 * The Plugin Requires at least.
 | 
						|
	 *
 | 
						|
	 * [--RequiresPHP]
 | 
						|
	 * The Plugin Requires PHP.
 | 
						|
	 *
 | 
						|
	 * [--UpdateURI]
 | 
						|
	 * The Plugin Update URI.
 | 
						|
	 *
 | 
						|
	 * See: https://developer.wordpress.org/reference/functions/get_plugin_data/#return
 | 
						|
	 *
 | 
						|
	 * ## EXAMPLES
 | 
						|
	 *
 | 
						|
	 *     $ wp webmention meta
 | 
						|
	 *
 | 
						|
	 *     $ wp webmention meta --Version
 | 
						|
	 *     Version: 1.0.0
 | 
						|
	 *
 | 
						|
	 * @param array|null $args       The arguments.
 | 
						|
	 * @param array|null $assoc_args The associative arguments.
 | 
						|
	 *
 | 
						|
	 * @return void
 | 
						|
	 */
 | 
						|
	public function meta( $args, $assoc_args ) {
 | 
						|
		$plugin_data = get_plugin_meta();
 | 
						|
 | 
						|
		if ( $assoc_args ) {
 | 
						|
			$plugin_data = array_intersect_key( $plugin_data, $assoc_args );
 | 
						|
		} else {
 | 
						|
			WP_CLI::line( __( "ActivityPub Plugin Meta:\n", 'activitypub' ) );
 | 
						|
		}
 | 
						|
 | 
						|
		foreach ( $plugin_data as $key => $value ) {
 | 
						|
			WP_CLI::line( $key . ':	' . $value );
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Remove the entire blog from the Fediverse.
 | 
						|
	 *
 | 
						|
	 * ## EXAMPLES
 | 
						|
	 *
 | 
						|
	 *     $ wp activitypub self-destruct
 | 
						|
	 *
 | 
						|
	 * @param array|null $args       The arguments.
 | 
						|
	 * @param array|null $assoc_args The associative arguments.
 | 
						|
	 *
 | 
						|
	 * @return void
 | 
						|
	 */
 | 
						|
	public function self_destruct( $args, $assoc_args ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
 | 
						|
		WP_CLI::warning( __( 'Self-Destructing is not implemented yet.', 'activitypub' ) );
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Delete or Update a Post, Page, Custom Post Type or Attachment.
 | 
						|
	 *
 | 
						|
	 * ## OPTIONS
 | 
						|
	 *
 | 
						|
	 * <action>
 | 
						|
	 * : The action to perform. Either `delete` or `update`.
 | 
						|
	 * ---
 | 
						|
	 * options:
 | 
						|
	 *   - delete
 | 
						|
	 *   - update
 | 
						|
	 * ---
 | 
						|
	 *
 | 
						|
	 * <id>
 | 
						|
	 * : The id of the Post, Page, Custom Post Type or Attachment.
 | 
						|
	 *
 | 
						|
	 * ## EXAMPLES
 | 
						|
	 *
 | 
						|
	 *     $ wp activitypub post delete 1
 | 
						|
	 *
 | 
						|
	 * @synopsis <action> <id>
 | 
						|
	 *
 | 
						|
	 * @param array|null $args The arguments.
 | 
						|
	 */
 | 
						|
	public function post( $args ) {
 | 
						|
		$post = get_post( $args[1] );
 | 
						|
 | 
						|
		if ( ! $post ) {
 | 
						|
			WP_CLI::error( __( 'Post not found.', 'activitypub' ) );
 | 
						|
		}
 | 
						|
 | 
						|
		switch ( $args[0] ) {
 | 
						|
			case 'delete':
 | 
						|
				// translators: %s is the ID of the post.
 | 
						|
				WP_CLI::confirm( sprintf( __( 'Do you really want to delete the (Custom) Post with the ID: %s', 'activitypub' ), $args[1] ) );
 | 
						|
				Scheduler::schedule_post_activity( 'trash', 'publish', $args[1] );
 | 
						|
				WP_CLI::success( __( '"Delete"-Activity is queued.', 'activitypub' ) );
 | 
						|
				break;
 | 
						|
			case 'update':
 | 
						|
				Scheduler::schedule_post_activity( 'publish', 'publish', $args[1] );
 | 
						|
				WP_CLI::success( __( '"Update"-Activity is queued.', 'activitypub' ) );
 | 
						|
				break;
 | 
						|
			default:
 | 
						|
				WP_CLI::error( __( 'Unknown action.', 'activitypub' ) );
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Delete or Update a Comment.
 | 
						|
	 *
 | 
						|
	 * ## OPTIONS
 | 
						|
	 *
 | 
						|
	 * <action>
 | 
						|
	 * : The action to perform. Either `delete` or `update`.
 | 
						|
	 * ---
 | 
						|
	 * options:
 | 
						|
	 *   - delete
 | 
						|
	 *   - update
 | 
						|
	 * ---
 | 
						|
	 *
 | 
						|
	 * <id>
 | 
						|
	 * : The id of the Comment.
 | 
						|
	 *
 | 
						|
	 * ## EXAMPLES
 | 
						|
	 *
 | 
						|
	 *     $ wp activitypub comment delete 1
 | 
						|
	 *
 | 
						|
	 * @synopsis <action> <id>
 | 
						|
	 *
 | 
						|
	 * @param array|null $args The arguments.
 | 
						|
	 */
 | 
						|
	public function comment( $args ) {
 | 
						|
		$comment = get_comment( $args[1] );
 | 
						|
 | 
						|
		if ( ! $comment ) {
 | 
						|
			WP_CLI::error( __( 'Comment not found.', 'activitypub' ) );
 | 
						|
		}
 | 
						|
 | 
						|
		if ( was_comment_received( $comment ) ) {
 | 
						|
			WP_CLI::error( __( 'This comment was received via ActivityPub and cannot be deleted or updated.', 'activitypub' ) );
 | 
						|
		}
 | 
						|
 | 
						|
		switch ( $args[0] ) {
 | 
						|
			case 'delete':
 | 
						|
				// translators: %s is the ID of the comment.
 | 
						|
				WP_CLI::confirm( sprintf( __( 'Do you really want to delete the Comment with the ID: %s', 'activitypub' ), $args[1] ) );
 | 
						|
				Scheduler::schedule_comment_activity( 'trash', 'approved', $args[1] );
 | 
						|
				WP_CLI::success( __( '"Delete"-Activity is queued.', 'activitypub' ) );
 | 
						|
				break;
 | 
						|
			case 'update':
 | 
						|
				Scheduler::schedule_comment_activity( 'approved', 'approved', $args[1] );
 | 
						|
				WP_CLI::success( __( '"Update"-Activity is queued.', 'activitypub' ) );
 | 
						|
				break;
 | 
						|
			default:
 | 
						|
				WP_CLI::error( __( 'Unknown action.', 'activitypub' ) );
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |