Passed
Pull Request — dev/6.0.0 (#277)
by Rajan
13:59 queued 10:46
created

DeleteCommentMetaModule::render()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 61
Code Lines 34

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 34
nc 1
nop 0
dl 0
loc 61
ccs 0
cts 29
cp 0
crap 2
rs 9.5147
c 0
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
namespace BulkWP\BulkDelete\Core\Metas\Modules;
3
4
use BulkWP\BulkDelete\Core\Metas\MetasModule;
5
6
defined( 'ABSPATH' ) || exit; // Exit if accessed directly.
7
8
/**
9
 * Delete Comment Meta.
10
 *
11
 * @since 6.0.0
12
 */
13
class DeleteCommentMetaModule extends MetasModule {
14
	protected function initialize() {
15
		$this->field_slug    = 'meta_comment';
16
		$this->meta_box_slug = 'bd-meta-comment';
17
		$this->action        = 'delete_meta_comment';
18
		$this->cron_hook     = 'do-bulk-delete-comment-meta';
19
		$this->messages      = array(
20
			'box_label' => __( 'Bulk Delete Comment Meta', 'bulk-delete' ),
21
			'scheduled' => __( 'Comment meta fields from the comments with the selected criteria are scheduled for deletion.', 'bulk-delete' ),
22
		);
23
	}
24
25
	/**
26
	 * Render the Modules.
27
	 *
28
	 * @return void
29
	 */
30
	public function render() {
31
		?>
32
		<!-- Comment Meta box start-->
33
		<fieldset class="options">
34
			<h4><?php _e( 'Select the post type whose comment meta fields you want to delete', 'bulk-delete' ); ?></h4>
35
			<table class="optiontable">
36
				<?php $this->render_post_type_as_radios(); ?>
37
			</table>
38
39
			<h4><?php _e( 'Choose your comment meta field settings', 'bulk-delete' ); ?></h4>
40
			<table class="optiontable">
41
				<tr>
42
					<td>
43
						<input name="smbd_<?php echo esc_attr( $this->field_slug ); ?>_use_value" value="false" type="radio" checked>
44
						<label for="smbd_<?php echo esc_attr( $this->field_slug ); ?>_use_value"><?php echo __( 'Delete based on comment meta key name only', 'bulk-delete' ); ?></label>
45
					</td>
46
				</tr>
47
48
				<tr>
49
					<td>
50
						<input name="smbd_<?php echo esc_attr( $this->field_slug ); ?>_use_value" id="smbd_<?php echo esc_attr( $this->field_slug ); ?>_use_value" value="true" type="radio" disabled>
51
						<label for="smbd_<?php echo esc_attr( $this->field_slug ); ?>_use_value"><?php echo __( 'Delete based on comment meta key name and value', 'bulk-delete' ); ?></label>
52
						<span class="bd-cm-pro" style="color:red; vertical-align: middle;">
53
							<?php _e( 'Only available in Pro Addon', 'bulk-delete' ); ?> <a href = "http://bulkwp.com/addons/bulk-delete-comment-meta/?utm_source=wpadmin&utm_campaign=BulkDelete&utm_medium=buynow&utm_content=bd-m-c" target="_blank">Buy now</a>
54
						</span>
55
					</td>
56
				</tr>
57
58
				<tr>
59
					<td>
60
						<label for="smbd_<?php echo esc_attr( $this->field_slug ); ?>_meta_key"><?php _e( 'Comment Meta Key ', 'bulk-delete' ); ?></label>
61
						<input name="smbd_<?php echo esc_attr( $this->field_slug ); ?>_meta_key" id="smbd_<?php echo esc_attr( $this->field_slug ); ?>_meta_key" placeholder="<?php _e( 'Meta Key', 'bulk-delete' ); ?>">
62
					</td>
63
				</tr>
64
			</table>
65
66
			<?php
67
			/**
68
			 * Add more fields to the delete comment meta field form.
69
			 * This hook can be used to add more fields to the delete comment meta field form.
70
			 *
71
			 * @since 5.4
72
			 */
73
			do_action( 'bd_delete_comment_meta_form' );
74
			?>
75
			<table class="optiontable">
76
				<tr>
77
					<td colspan="2">
78
						<h4><?php _e( 'Choose your deletion options', 'bulk-delete' ); ?></h4>
79
					</td>
80
				</tr>
81
82
				<?php $this->render_restrict_settings(); ?>
83
				<?php $this->render_limit_settings(); ?>
84
				<?php $this->render_cron_settings(); ?>
85
86
			</table>
87
		</fieldset>
88
89
		<?php $this->render_submit_button(); ?>
90
91
		<!-- Comment Meta box end-->
92
		<?php
93
	}
94
95
	protected function convert_user_input_to_options( $request, $options ) {
96
		$options['post_type'] = esc_sql( bd_array_get( $request, 'smbd_' . $this->field_slug . '_post_type', 'post' ) );
97
98
		$options['use_value'] = bd_array_get_bool( $request, 'smbd_' . $this->field_slug . '_use_value', false );
99
		$options['meta_key']  = esc_sql( bd_array_get( $request, 'smbd_' . $this->field_slug . '_meta_key', '' ) );
100
101
		return $options;
102
	}
103
104
	public function delete( $options ) {
105
		$args = array(
106
			'post_type' => $options['post_type'],
107
		);
108
109
		if ( $options['limit_to'] > 0 ) {
110
			$args['number'] = $options['limit_to'];
111
		}
112
113
		$op   = $options['date_op'];
114
		$days = $options['days'];
115
116
		if ( $options['restrict'] ) {
117
			$args['date_query'] = array(
118
				array(
119
					'column' => 'comment_date',
120
					$op      => "{$days} day ago",
121
				),
122
			);
123
		}
124
125
		if ( $options['use_value'] ) {
126
			$args['meta_query'] = apply_filters( 'bd_delete_comment_meta_query', array(), $options );
127
		} else {
128
			$args['meta_key'] = $options['meta_key'];
129
		}
130
131
		$meta_deleted = 0;
132
		$comments     = get_comments( $args );
133
134
		foreach ( $comments as $comment ) {
135
			if ( delete_comment_meta( $comment->comment_ID, $options['meta_key'] ) ) {
136
				$meta_deleted ++;
137
			}
138
		}
139
140
		return $meta_deleted;
141
	}
142
143
	public function filter_js_array( $js_array ) {
144
		$js_array['dt_iterators'][]              = '_' . $this->field_slug;
145
		$js_array['validators'][ $this->action ] = 'noValidation';
146
147
		$js_array['pre_action_msg'][ $this->action ] = 'deleteCMWarning';
148
		$js_array['msg']['deleteCMWarning']          = __( 'Are you sure you want to delete all the comment meta fields that match the selected filters?', 'bulk-delete' );
149
150
		return $js_array;
151
	}
152
153
	protected function get_success_message( $items_deleted ) {
154
		/* translators: 1 Number of posts deleted */
155
		return _n( 'Deleted comment meta field from %d comment', 'Deleted comment meta field from %d comments', $items_deleted, 'bulk-delete' );
156
	}
157
158
	/**
159
	 * Schedule job title.
160
	 *
161
	 * @return string humane readable title
162
	 */
163
	protected function get_cron_action_name(){
164
		return _e( 'Delete Comment Meta' );
0 ignored issues
show
Bug introduced by
Are you sure the usage of _e('Delete Comment Meta') is correct as it seems to always return null.

This check looks for function or method calls that always return null and whose return value is used.

class A
{
    function getObject()
    {
        return null;
    }

}

$a = new A();
if ($a->getObject()) {

The method getObject() can return nothing but null, so it makes no sense to use the return value.

The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes.

Loading history...
165
	}
166
}
167