Completed
Push — 552-feature/reassign-contnet-o... ( ff18e1 )
by
unknown
05:02
created

DeletePostsByStatusModule   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 76
Duplicated Lines 0 %

Test Coverage

Coverage 40%

Importance

Changes 0
Metric Value
eloc 45
dl 0
loc 76
ccs 16
cts 40
cp 0.4
rs 10
c 0
b 0
f 0
wmc 7

6 Methods

Rating   Name   Duplication   Size   Complexity  
A initialize() 0 11 1
A render() 0 25 1
A get_success_message() 0 3 1
A build_query() 0 10 2
A filter_js_array() 0 10 1
A convert_user_input_to_options() 0 4 1
1
<?php
2
3
namespace BulkWP\BulkDelete\Core\Posts\Modules;
4
5
use BulkWP\BulkDelete\Core\Posts\PostsModule;
6
7 1
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 19
	protected function initialize() {
16 19
		$this->item_type     = 'posts';
17 19
		$this->field_slug    = 'post_status';
18 19
		$this->meta_box_slug = 'bd_posts_by_status';
19 19
		$this->action        = 'delete_posts_by_status';
20 19
		$this->cron_hook     = 'do-bulk-delete-post-status';
21 19
		$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 19
		$this->messages      = array(
23 19
			'box_label'  => __( 'By Post Status', 'bulk-delete' ),
24 19
			'scheduled'  => __( 'The selected posts are scheduled for deletion', 'bulk-delete' ),
25 19
			'cron_label' => __( 'Delete Post By Status', 'bulk-delete' ),
26
		);
27 19
	}
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_exclude_sticky_settings();
44
				$this->render_delete_settings();
45
				$this->render_limit_settings();
46
				$this->render_cron_settings();
47
				?>
48
			</table>
49
50
		</fieldset>
51
52
		<?php
53
		$this->render_submit_button();
54
	}
55
56
	// phpcs:ignore Squiz.Commenting.FunctionComment.Missing
57
	public function filter_js_array( $js_array ) {
58
		$js_array['dt_iterators'][] = '_' . $this->field_slug;
59
60
		$js_array['error_msg'][ $this->action ]      = 'selectPostStatus';
61
		$js_array['pre_action_msg'][ $this->action ] = 'postStatusWarning';
62
63
		$js_array['msg']['selectPostStatus']  = __( 'Please select at least one post status from which posts should be deleted', 'bulk-delete' );
64
		$js_array['msg']['postStatusWarning'] = __( 'Are you sure you want to delete all the posts from the selected post status?', 'bulk-delete' );
65
66
		return $js_array;
67
	}
68
69
	protected function convert_user_input_to_options( $request, $options ) {
70
		$options['post_status'] = array_map( 'sanitize_text_field', bd_array_get( $request, 'smbd_' . $this->field_slug, array() ) );
71
72
		return $options;
73
	}
74
75 19
	protected function build_query( $options ) {
76 19
		if ( empty( $options['post_status'] ) ) {
77
			return array();
78
		}
79
80
		$query = array(
81 19
			'post_status' => $options['post_status'],
82
		);
83
84 19
		return $query;
85
	}
86
87
	protected function get_success_message( $items_deleted ) {
88
		/* translators: 1 Number of pages deleted */
89
		return _n( 'Deleted %d post from the selected post status', 'Deleted %d posts fro selected post status', $items_deleted, 'bulk-delete' );
90
	}
91
}
92