PluginProbe
ActivityPub / 7.6.1
ActivityPub v7.6.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 / handler / class-undo.php

class-undo.php in ActivityPub 7.6.1, at includes/handler/class-undo.php

86 lines 2.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Undo handler file.
4 *
5 * @package Activitypub
6 */
7
8 namespace Activitypub\Handler;
9
10 use Activitypub\Collection\Inbox as Inbox_Collection;
11
12 use function Activitypub\object_to_uri;
13
14 /**
15 * Handle Undo requests.
16 */
17 class Undo {
18 /**
19 * Initialize the class, registering WordPress hooks.
20 */
21 public static function init() {
22 \add_action( 'activitypub_inbox_undo', array( self::class, 'handle_undo' ), 10, 2 );
23 \add_action( 'activitypub_validate_object', array( self::class, 'validate_object' ), 10, 3 );
24 }
25
26 /**
27 * Handle "Unfollow" requests.
28 *
29 * @param array $activity The JSON "Undo" Activity.
30 * @param int|int[]|null $user_ids The user ID(s).
31 */
32 public static function handle_undo( $activity, $user_ids ) {
33 $success = false;
34 $result = Inbox_Collection::undo( object_to_uri( $activity['object'] ) );
35
36 if ( $result && ! \is_wp_error( $result ) ) {
37 $success = true;
38 }
39
40 /**
41 * Fires after an ActivityPub Undo activity has been handled.
42 *
43 * @param array $activity The ActivityPub activity data.
44 * @param int[] $user_ids The local user IDs.
45 * @param bool $success True on success, false on failure.
46 * @param \WP_Comment|string $result The target, based on the activity that is being undone.
47 */
48 \do_action( 'activitypub_handled_undo', $activity, (array) $user_ids, $success, $result );
49 }
50
51 /**
52 * Validate the object.
53 *
54 * @param bool $valid The validation state.
55 * @param string $param The object parameter.
56 * @param \WP_REST_Request $request The request object.
57 *
58 * @return bool The validation state: true if valid, false if not.
59 */
60 public static function validate_object( $valid, $param, $request ) {
61 $activity = $request->get_json_params();
62
63 if ( empty( $activity['type'] ) ) {
64 return false;
65 }
66
67 if ( 'Undo' !== $activity['type'] ) {
68 return $valid;
69 }
70
71 if ( ! isset( $activity['actor'], $activity['object'] ) ) {
72 return false;
73 }
74
75 if ( ! \is_array( $activity['object'] ) && ! \is_string( $activity['object'] ) ) {
76 return false;
77 }
78
79 if ( \is_array( $activity['object'] ) && ! isset( $activity['object']['id'] ) ) {
80 return false;
81 }
82
83 return $valid;
84 }
85 }
86