Passed
Push — 52-feature/delete-posts-by-no-... ( 78ba55 )
by
unknown
13:21
created

DeletePostsByStatusModule::delete()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 2.032

Importance

Changes 0
Metric Value
cc 2
eloc 4
c 0
b 0
f 0
nc 2
nop 1
dl 0
loc 8
ccs 4
cts 5
cp 0.8
crap 2.032
rs 10
1
<?php
2
3
namespace BulkWP\BulkDelete\Core\Posts\Modules;
4
5
use BulkWP\BulkDelete\Core\Posts\PostsModule;
6
7
defined( 'ABSPATH' ) || exit; // Exit if accessed directly.
8
9
/**
10
 * Delete Posts by Status Module.
11
 *
12
 * @since 6.0.0
13
 */
14
class DeletePostsByStatusModule extends PostsModule {
15
	protected function initialize() {
16
		$this->item_type     = 'posts';
17
		$this->field_slug    = 'post_status';
18
		$this->meta_box_slug = 'bd_posts_by_status';
19
		$this->action        = 'delete_posts_by_status';
20
		$this->cron_hook     = 'do-bulk-delete-post-status';
21
		$this->scheduler_url = 'http://bulkwp.com/addons/scheduler-for-deleting-posts-by-status/?utm_source=wpadmin&utm_campaign=BulkDelete&utm_medium=buynow&utm_content=bd-sps';
22
		$this->messages      = array(
23
			'box_label'  => __( 'By Post Status', 'bulk-delete' ),
24
			'scheduled'  => __( 'The selected posts are scheduled for deletion', 'bulk-delete' ),
25
			'cron_label' => __( 'Delete Post By Status', 'bulk-delete' ),
26
		);
27
	}
28
29
	public function render() {
30
		?>
31
		<h4><?php _e( 'Select the post statuses from which you want to delete posts', 'bulk-delete' ); ?></h4>
32
33
		<fieldset class="options">
34
35
			<table class="optiontable">
36
				<?php $this->render_post_status(); ?>
37
			</table>
38
39
			<table class="optiontable">
40
				<?php
41
				$this->render_filtering_table_header();
42
				$this->render_restrict_settings();
43
				$this->render_delete_settings();
44
				$this->render_limit_settings();
45
				$this->render_cron_settings();
46
				?>
47
			</table>
48
49
		</fieldset>
50
51
		<?php
52
		$this->render_submit_button();
53
	}
54
55
	// phpcs:ignore Squiz.Commenting.FunctionComment.Missing
56
	public function filter_js_array( $js_array ) {
57
		$js_array['dt_iterators'][] = '_' . $this->field_slug;
58
59
		$js_array['error_msg'][ $this->action ]      = 'selectPostStatus';
60
		$js_array['pre_action_msg'][ $this->action ] = 'postStatusWarning';
61
62
		$js_array['msg']['selectPostStatus']  = __( 'Please select at least one post status from which posts should be deleted', 'bulk-delete' );
63
		$js_array['msg']['postStatusWarning'] = __( 'Are you sure you want to delete all the posts from the selected post status?', 'bulk-delete' );
64
65
		return $js_array;
66
	}
67
68
	protected function convert_user_input_to_options( $request, $options ) {
69
		$options['post_status'] = array_map( 'sanitize_text_field', bd_array_get( $request, 'smbd_' . $this->field_slug, array() ) );
70
71
		return $options;
72
	}
73
74
	protected function build_query( $options ) {
75
		if ( empty( $options['post_status'] ) ) {
76
			return array();
77
		}
78
79
		$query = array(
80
			'post_status' => $options['post_status'],
81
		);
82
83
		return $query;
84
	}
85
86
	protected function get_success_message( $items_deleted ) {
87
		/* translators: 1 Number of pages deleted */
88
		return _n( 'Deleted %d post from the selected post status', 'Deleted %d posts fro selected post status', $items_deleted, 'bulk-delete' );
89
	}
90
}
91