PluginProbe
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI / 6.0.2
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI v6.0.2
6.0.2 6.0.1 6.0.0 5.8.6 5.8.5 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0 5.7.9.2 5.7.9.1 5.7.8 5.7.9 5.7.6 5.7.7 5.7.5 5.7.4 5.7.3 5.7.2 5.7.1 trunk 5.6.0 5.6.1 5.6.2 All 33 releases
automatorwp / integrations / wordpress / actions / delete-user.php

delete-user.php in AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI 6.0.2, at integrations/wordpress/actions/delete-user.php

125 lines 4.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Delete user
4 *
5 * @package AutomatorWP\Integrations\WordPress\Actions\Delete_User
6 * @author AutomatorWP <contact@automatorwp.com>, Ruben Garcia <rubengcdev@gmail.com>, Dionisio Sánchez <dionisio@automatorwp.com>
7 * @since 1.0.0
8 */
9 // Exit if accessed directly
10 if( !defined( 'ABSPATH' ) ) exit;
11
12 class AutomatorWP_WordPress_Delete_User extends AutomatorWP_Integration_Action {
13
14 /**
15 * Initialize the trigger
16 *
17 * @since 1.0.0
18 */
19 public function __construct( $integration ) {
20
21 $this->integration = $integration;
22 $this->action = $integration . '_delete_user';
23
24 parent::__construct();
25
26 }
27
28 /**
29 * Register the action
30 *
31 * @since 1.0.0
32 */
33 public function register() {
34
35 automatorwp_register_action( $this->action, array(
36 'integration' => $this->integration,
37 'label' => __( 'Delete a user', 'automatorwp' ),
38 'select_option' => __( 'Delete <strong>a user</strong>', 'automatorwp' ),
39 /* translators: %1$s: User. */
40 'edit_label' => sprintf( __( 'Delete a %1$s', 'automatorwp' ), '{user}' ),
41 /* translators: %1$s: User. */
42 'log_label' => sprintf( __( 'Delete a %1$s', 'automatorwp' ), '{user}' ),
43 'options' => array(
44 'user' => array(
45 'default' => __ ( 'user', 'automatorwp' ),
46 'fields' => array(
47 'user_id' => array(
48 'name' => __( 'User ID:', 'automatorwp' ),
49 'desc' => __( 'The user\'s ID to delete. Leave empty to assign the user that completes the automation.', 'automatorwp' ),
50 'type' => 'text',
51 'default' => ''
52 ),
53 'target_user_id' => array(
54 'name' => __( 'User ID to reassign the content:', 'automatorwp' ),
55 'desc' => __( 'The user\'s ID to reassign the content owned by the user that will get deleted. Leave empty to do not reassign the content.', 'automatorwp' ),
56 'type' => 'text',
57 'default' => ''
58 ),
59 ),
60 ),
61
62 ),
63 ) );
64
65 }
66
67 /**
68 * Action execution function
69 *
70 * @since 1.0.0
71 *
72 * @param stdClass $action The action object
73 * @param int $user_id The user ID
74 * @param array $action_options The action's stored options (with tags already passed)
75 * @param stdClass $automation The action's automation object
76 */
77 public function execute( $action, $user_id, $action_options, $automation ) {
78
79 $user_id_to_delete = absint( $action_options['user_id'] );
80 $target_user_id = absint( $action_options['target_user_id'] );
81
82 if( $user_id_to_delete === 0 ) {
83 $user_id_to_delete = $user_id;
84 }
85
86 $user = get_userdata( $user_id_to_delete );
87
88 // Bail if user to delete does not exists
89 if ( ! $user ) {
90 return;
91 }
92
93 // Ensure that wp_delete_user is available
94 if( ! function_exists( 'wp_delete_user' ) ) {
95 include_once( ABSPATH . 'wp-admin/includes/user.php' );
96 }
97
98 if ( $target_user_id !== 0 ) {
99
100 $target_user = get_userdata( $target_user_id );
101
102 // Bail if user to reassign does not exists
103 if ( ! $target_user ) {
104 return;
105 }
106
107 // Bail if user to reassign is equal to the user that will get deleted
108 if( $target_user->ID === $user->ID ) {
109 return;
110 }
111
112 // Delete the user and reassign its content
113 wp_delete_user( $user->ID, $target_user->ID );
114
115 } else {
116 // Delete the user
117 wp_delete_user( $user->ID );
118 }
119
120 }
121
122 }
123
124 new AutomatorWP_WordPress_Delete_User( 'wordpress' );
125 new AutomatorWP_WordPress_Delete_User( 'users' );