Completed
Push — dev/6.0.0 ( ee7fd2...7ea4f4 )
by Sudar
12:00
created

DeleteUsersByUserRoleModule::get_success_message()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
ccs 0
cts 2
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace BulkWP\BulkDelete\Core\Users\Modules;
4
5
use BulkWP\BulkDelete\Core\Users\UsersModule;
6
7 1
defined( 'ABSPATH' ) || exit; // Exit if accessed directly.
8
9
/**
10
 * Bulk Delete Users by User Role Module.
11
 *
12
 * @since 5.5
13
 * @since 6.0.0 Renamed to DeleteUsersByUserRoleModule
14
 */
15
class DeleteUsersByUserRoleModule extends UsersModule {
16
17
	/**
18
	 * Initialize and setup variables.
19
	 *
20
	 * @since 5.5
21
	 */
22 4
	protected function initialize() {
23 4
		$this->item_type     = 'users';
24 4
		$this->field_slug    = 'u_role';
25 4
		$this->meta_box_slug = 'bd_users_by_role';
26 4
		$this->action        = 'delete_users_by_role';
27 4
		$this->cron_hook     = 'do-bulk-delete-users-by-role';
28 4
		$this->scheduler_url = 'https://bulkwp.com/addons/scheduler-for-deleting-users-by-role/?utm_source=wpadmin&utm_campaign=BulkDelete&utm_medium=buynow&utm_content=bd-u-ur';
29 4
		$this->messages      = array(
30 4
			'box_label'  => __( 'By User Role', 'bulk-delete' ),
31 4
			'scheduled'  => __( 'Users from the selected user role are scheduled for deletion.', 'bulk-delete' ),
32 4
			'cron_label' => __( 'Delete Users by User Role', 'bulk-delete' ),
33
		);
34 4
	}
35
36
	/**
37
	 * Render delete users box.
38
	 *
39
	 * @since 5.5
40
	 */
41
	public function render() {
42
	?>
43
		<h4><?php _e( 'Select the user roles from which you want to delete users', 'bulk-delete' ); ?></h4>
44
45
		<fieldset class="options">
46
			<table class="optiontable">
47
				<?php
48
				$users_count = count_users();
49
				foreach ( $users_count['avail_roles'] as $role => $count ) {
50
					?>
51
					<tr>
52
						<td scope="row">
53
							<input name="smbd_u_roles[]" value="<?php echo $role; ?>" type="checkbox">
54
							<label for="smbd_u_roles"><?php echo $role; ?> (<?php echo $count . ' ';
55
								_e( 'Users', 'bulk-delete' ); ?>)</label>
56
						</td>
57
					</tr>
58
					<?php
59
				}
60
				?>
61
			</table>
62
63
			<table class="optiontable">
64
				<?php
65
					$this->render_filtering_table_header();
66
					$this->render_user_login_restrict_settings();
67
					$this->render_user_with_no_posts_settings();
68
					$this->render_limit_settings();
69
					$this->render_cron_settings();
70
				?>
71
			</table>
72
		</fieldset>
73
	<?php
74
		$this->render_submit_button();
75
	}
76
77
	protected function convert_user_input_to_options( $request, $options ) {
78
		$options['selected_roles'] = bd_array_get( $request, 'smbd_u_roles', array() );
0 ignored issues
show
Bug introduced by
array() of type array is incompatible with the type string expected by parameter $default of bd_array_get(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

78
		$options['selected_roles'] = bd_array_get( $request, 'smbd_u_roles', /** @scrutinizer ignore-type */ array() );
Loading history...
79
80
		return $options;
81
	}
82
83
	/**
84
	 * Build query params for WP_User_Query by using delete options.
85
	 *
86
	 * Return an empty query array to short-circuit deletion.
87
	 *
88
	 * @since 6.0.0
89
	 *
90
	 * @param array $options Delete options.
91
	 *
92
	 * @return array Query.
93
	 */
94 4
	protected function build_query( $options ) {
95
		$query = array(
96 4
			'role__in' => $options['selected_roles'],
97 4
			'number'   => $options['limit_to'],
98
		);
99
100 4
		return $query;
101
	}
102
103
	/**
104
	 * Filter JS Array and add validation hooks.
105
	 *
106
	 * @since 5.5
107
	 *
108
	 * @param array $js_array JavaScript Array.
109
	 *
110
	 * @return array Modified JavaScript Array
111
	 */
112
	public function filter_js_array( $js_array ) {
113
		$js_array['dt_iterators'][] = '_' . $this->field_slug;
114
115
		$js_array['pre_action_msg'][ $this->action ] = 'deleteUsersWarning';
116
		$js_array['msg']['deleteUsersWarning']       = __( 'Are you sure you want to delete all the users from the selected user role?', 'bulk-delete' );
117
118
		$js_array['error_msg'][ $this->action ] = 'selectOneUserRole';
119
		$js_array['msg']['selectOneUserRole']   = __( 'Select at least one user role from which users should be deleted', 'bulk-delete' );
120
121
		return $js_array;
122
	}
123
124
	protected function get_success_message( $items_deleted ) {
125
		/* translators: 1 Number of users deleted */
126
		return _n( 'Deleted %d user from the selected roles', 'Deleted %d users from the selected roles', $items_deleted, 'bulk-delete' );
127
	}
128
}
129