PluginProbe
ActivityPub / 3.3.1
ActivityPub v3.3.1
9.3.1 9.3.0 9.2.2 9.2.1 9.2.0 9.1.0 9.0.2 9.0.1 9.0.0 8.3.0 8.2.1 8.2.0 8.1.1 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.2.0 1.3.0 2.0.0 2.0.1 2.1.0 2.1.1 All 160 releases
activitypub / includes / class-cli.php

class-cli.php in ActivityPub 3.3.1, at includes/class-cli.php

205 lines 4.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Activitypub;
3
4 use WP_CLI;
5 use WP_CLI_Command;
6 use Activitypub\Scheduler;
7
8 use function Activitypub\was_comment_received;
9
10 /**
11 * WP-CLI commands
12 *
13 * @package Activitypub
14 */
15 class Cli extends WP_CLI_Command {
16 /**
17 * Check the Plugins Meta-Informations
18 *
19 * ## OPTIONS
20 *
21 * [--Name]
22 * The Plugin Name
23 *
24 * [--PluginURI]
25 * The Plugin URI
26 *
27 * [--Version]
28 * The Plugin Version
29 *
30 * [--Description]
31 * The Plugin Description
32 *
33 * [--Author]
34 * The Plugin Author
35 *
36 * [--AuthorURI]
37 * The Plugin Author URI
38 *
39 * [--TextDomain]
40 * The Plugin Text Domain
41 *
42 * [--DomainPath]
43 * The Plugin Domain Path
44 *
45 * [--Network]
46 * The Plugin Network
47 *
48 * [--RequiresWP]
49 * The Plugin Requires at least
50 *
51 * [--RequiresPHP]
52 * The Plugin Requires PHP
53 *
54 * [--UpdateURI]
55 * The Plugin Update URI
56 *
57 * See: https://developer.wordpress.org/reference/functions/get_plugin_data/#return
58 *
59 * ## EXAMPLES
60 *
61 * $ wp webmention meta
62 *
63 * $ wp webmention meta --Version
64 * Version: 1.0.0
65 *
66 * @param array|null $args The arguments.
67 * @param array|null $assoc_args The associative arguments.
68 *
69 * @return void
70 */
71 public function meta( $args, $assoc_args ) {
72 $plugin_data = get_plugin_meta();
73
74 if ( $assoc_args ) {
75 $plugin_data = array_intersect_key( $plugin_data, $assoc_args );
76 } else {
77 WP_CLI::line( __( "ActivityPub Plugin Meta:\n", 'activitypub' ) );
78 }
79
80 foreach ( $plugin_data as $key => $value ) {
81 WP_CLI::line( $key . ': ' . $value );
82 }
83 }
84
85 /**
86 * Remove the entire blog from the Fediverse.
87 *
88 * ## EXAMPLES
89 *
90 * $ wp activitypub self-destruct
91 *
92 * @param array|null $args The arguments.
93 * @param array|null $assoc_args The associative arguments.
94 *
95 * @return void
96 */
97 public function self_destruct( $args, $assoc_args ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
98 WP_CLI::warning( __( 'Self-Destructing is not implemented yet.', 'activitypub' ) );
99 }
100
101 /**
102 * Delete or Update a Post, Page, Custom Post Type or Attachment.
103 *
104 * ## OPTIONS
105 *
106 * <action>
107 * : The action to perform. Either `delete` or `update`.
108 * ---
109 * options:
110 * - delete
111 * - update
112 * ---
113 *
114 * <id>
115 * : The id of the Post, Page, Custom Post Type or Attachment.
116 *
117 * ## EXAMPLES
118 *
119 * $ wp activitypub post delete 1
120 *
121 * @synopsis <action> <id>
122 *
123 * @param array|null $args The arguments.
124 * @param array|null $assoc_args The associative arguments.
125 *
126 * @return void
127 */
128 public function post( $args, $assoc_args ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
129 $post = get_post( $args[1] );
130
131 if ( ! $post ) {
132 WP_CLI::error( __( 'Post not found.', 'activitypub' ) );
133 }
134
135 switch ( $args[0] ) {
136 case 'delete':
137 // translators: %s is the ID of the post.
138 WP_CLI::confirm( sprintf( __( 'Do you really want to delete the (Custom) Post with the ID: %s', 'activitypub' ), $args[1] ) );
139 Scheduler::schedule_post_activity( 'trash', 'publish', $args[1] );
140 WP_CLI::success( __( '"Delete"-Activity is queued.', 'activitypub' ) );
141 break;
142 case 'update':
143 Scheduler::schedule_post_activity( 'publish', 'publish', $args[1] );
144 WP_CLI::success( __( '"Update"-Activity is queued.', 'activitypub' ) );
145 break;
146 default:
147 WP_CLI::error( __( 'Unknown action.', 'activitypub' ) );
148 }
149 }
150
151 /**
152 * Delete or Update a Comment.
153 *
154 * ## OPTIONS
155 *
156 * <action>
157 * : The action to perform. Either `delete` or `update`.
158 * ---
159 * options:
160 * - delete
161 * - update
162 * ---
163 *
164 * <id>
165 * : The id of the Comment.
166 *
167 * ## EXAMPLES
168 *
169 * $ wp activitypub comment delete 1
170 *
171 * @synopsis <action> <id>
172 *
173 * @param array|null $args The arguments.
174 * @param array|null $assoc_args The associative arguments.
175 *
176 * @return void
177 */
178 public function comment( $args, $assoc_args ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
179 $comment = get_comment( $args[1] );
180
181 if ( ! $comment ) {
182 WP_CLI::error( __( 'Comment not found.', 'activitypub' ) );
183 }
184
185 if ( was_comment_received( $comment ) ) {
186 WP_CLI::error( __( 'This comment was received via ActivityPub and cannot be deleted or updated.', 'activitypub' ) );
187 }
188
189 switch ( $args[0] ) {
190 case 'delete':
191 // translators: %s is the ID of the comment.
192 WP_CLI::confirm( sprintf( __( 'Do you really want to delete the Comment with the ID: %s', 'activitypub' ), $args[1] ) );
193 Scheduler::schedule_comment_activity( 'trash', 'approved', $args[1] );
194 WP_CLI::success( __( '"Delete"-Activity is queued.', 'activitypub' ) );
195 break;
196 case 'update':
197 Scheduler::schedule_comment_activity( 'approved', 'approved', $args[1] );
198 WP_CLI::success( __( '"Update"-Activity is queued.', 'activitypub' ) );
199 break;
200 default:
201 WP_CLI::error( __( 'Unknown action.', 'activitypub' ) );
202 }
203 }
204 }
205