Skip to content

Commit

Permalink
Merge branch 'dev/6.0.0' into 375-fix/greater-than-option-not-working
Browse files Browse the repository at this point in the history
# Conflicts:
#	include/Core/Metas/Modules/DeleteUserMetaModule.php
  • Loading branch information
Maria Daniel Deepak committed Jul 16, 2018
2 parents 8237c48 + 52998e9 commit 2a052d9
Show file tree
Hide file tree
Showing 6 changed files with 166 additions and 133 deletions.
7 changes: 7 additions & 0 deletions include/Core/Base/BaseDeletePage.php
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,13 @@ protected function register_modules() {
$module->register( $this->hook_suffix, $this->page_slug );
$this->actions[] = $module->get_action();
}

/**
* Triggered after all post modules are registered.
*
* @since 6.0.0
*/
do_action( 'bd_add_meta_box_for_posts' );
}

/**
Expand Down
12 changes: 11 additions & 1 deletion include/Core/Base/BasePage.php
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,17 @@ protected function register_hooks() {
* @return bool True if nonce is verified, False otherwise.
*/
public function verify_nonce( $result, $action ) {
if ( in_array( $action, $this->actions, true ) ) {
/**
* List of actions for page.
*
* @param array $actions Actions.
* @param BasePage $page Page objects.
*
* @since 6.0.0
*/
$page_actions = apply_filters( 'bd_page_actions', $this->actions, $this );

if ( in_array( $action, $page_actions, true ) ) {
if ( check_admin_referer( "bd-{$this->page_slug}", "bd-{$this->page_slug}-nonce" ) ) {
return true;
}
Expand Down
9 changes: 8 additions & 1 deletion include/Core/Metas/Modules/DeleteCommentMetaModule.php
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,14 @@ protected function convert_user_input_to_options( $request, $options ) {
$options['use_value'] = bd_array_get_bool( $request, 'smbd_' . $this->field_slug . '_use_value', false );
$options['meta_key'] = esc_sql( bd_array_get( $request, 'smbd_' . $this->field_slug . '_meta_key', '' ) );

return $options;
/**
* Delete comment-meta delete options filter.
*
* This filter is for processing filtering options for deleting comment meta.
*
* @since 5.4
*/
return apply_filters( 'bd_delete_comment_meta_options', $options, $request );
}

protected function do_delete( $options ) {
Expand Down
215 changes: 91 additions & 124 deletions include/Core/Metas/Modules/DeletePostMetaModule.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ protected function initialize() {
$this->meta_box_slug = 'bd-post-meta';
$this->action = 'delete_post_meta';
$this->cron_hook = 'do-bulk-delete-post-meta';
$this->scheduler_url = 'http://bulkwp.com/addons/bulk-delete-post-meta/?utm_source=wpadmin&utm_campaign=BulkDelete&utm_medium=buynow&utm_content=bd-m-p';
$this->messages = array(
'box_label' => __( 'Bulk Delete Post Meta', 'bulk-delete' ),
'scheduled' => __( 'Post meta fields from the posts with the selected criteria are scheduled for deletion.', 'bulk-delete' ),
Expand All @@ -31,125 +32,82 @@ protected function initialize() {
public function render() {
?>
<!-- Post Meta box start-->
<fieldset class="options">
<h4><?php _e( 'Select the post type whose post meta fields you want to delete', 'bulk-delete' ); ?></h4>
<table class="optiontable">
<?php $this->render_post_type_dropdown(); ?>
</table>

<h4><?php _e( 'Choose your post meta field settings', 'bulk-delete' ); ?></h4>
<table class="optiontable">
<tr>
<td>
<input name="smbd_<?php echo esc_attr( $this->field_slug ); ?>_use_value" value="use_key" type="radio" checked>
<label for="smbd_<?php echo esc_attr( $this->field_slug ); ?>_use_value"><?php echo __( 'Delete based on post meta key name only', 'bulk-delete' ); ?></label>
</td>
</tr>

<tr>
<td>
<input name="smbd_<?php echo esc_attr( $this->field_slug ); ?>_use_value" id="smdb_<?php echo esc_attr( $this->field_slug ); ?>_use_key_compare" value="use_key_compare" type="radio" disabled>
<label for="smbd_<?php echo esc_attr( $this->field_slug ); ?>_use_value"><?php echo __( 'Delete based on post meta key name prefix or postfix', 'bulk-delete' ); ?></label>
<span class="bd-pm-pro" style="color:red; vertical-align: middle;">
<?php _e( 'Only available in Pro Addon', 'bulk-delete' ); ?> <a href = "http://bulkwp.com/addons/bulk-delete-post-meta/?utm_source=wpadmin&utm_campaign=BulkDelete&utm_medium=buynow&utm_content=bd-m-p" target="_blank">Buy now</a>
</span>
</td>
</tr>

<tr>
<td>
<input name="smbd_<?php echo esc_attr( $this->field_slug ); ?>_use_value" id="smbd_<?php echo esc_attr( $this->field_slug ); ?>_use_value" value="use_value" type="radio" disabled>
<label for="smbd_<?php echo esc_attr( $this->field_slug ); ?>_use_value"><?php echo __( 'Delete based on post meta key name and value', 'bulk-delete' ); ?></label>
<span class="bd-pm-pro" style="color:red; vertical-align: middle;">
<?php _e( 'Only available in Pro Addon', 'bulk-delete' ); ?> <a href = "http://bulkwp.com/addons/bulk-delete-post-meta/?utm_source=wpadmin&utm_campaign=BulkDelete&utm_medium=buynow&utm_content=bd-m-p" target="_blank">Buy now</a>
</span>
</td>
</tr>

<tr>
<td>
<label for="smbd_<?php echo esc_attr( $this->field_slug ); ?>_key"><?php _e( 'Post Meta Key ', 'bulk-delete' ); ?></label>
<select name="smbd_<?php echo esc_attr( $this->field_slug ); ?>_key_prefix_postfix" id="smbd_<?php echo esc_attr( $this->field_slug ); ?>_key_prefix_postfix" style="display: none;">
<option value="starts_with">starts with</option>
<option value="contains">contains</option>
<option value="ends_with">ends with</option>
</select>
<input name="smbd_<?php echo esc_attr( $this->field_slug ); ?>_key" id="smbd_<?php echo esc_attr( $this->field_slug ); ?>_key" placeholder="<?php _e( 'Meta Key', 'bulk-delete' ); ?>">
</td>
</tr>
</table>
<?php
/**
* Add more fields to the delete post meta field form.
* This hook can be used to add more fields to the delete post meta field form.
*
* @since 5.4
*/
do_action( 'bd_delete_post_meta_form' );
?>
<table class="optiontable">
<tr>
<td>
<h4><?php _e( 'Choose your deletion options', 'bulk-delete' ); ?></h4>
</td>
</tr>

<tr>
<td>
<input name="smbd_<?php echo esc_attr( $this->field_slug ); ?>_restrict" id="smbd_<?php echo esc_attr( $this->field_slug ); ?>_restrict" value = "true" type = "checkbox" >
<?php _e( 'Only restrict to posts which are ', 'bulk-delete' );?>
<select name="smbd_<?php echo esc_attr( $this->field_slug ); ?>_op" id="smbd_<?php echo esc_attr( $this->field_slug ); ?>_op" disabled>
<option value ="before"><?php _e( 'older than', 'bulk-delete' );?></option>
<option value ="after"><?php _e( 'posted within last', 'bulk-delete' );?></option>
</select>
<input type ="text" name="smbd_<?php echo esc_attr( $this->field_slug ); ?>_days" id="smbd_<?php echo esc_attr( $this->field_slug ); ?>_days" disabled value ="0" maxlength="4" size="4"><?php _e( 'days', 'bulk-delete' );?>
</td>
</tr>

<tr>
<td>
<input name="smbd_<?php echo esc_attr( $this->field_slug ); ?>_limit" id="smbd_<?php echo esc_attr( $this->field_slug ); ?>_limit" value = "true" type = "checkbox">
<?php _e( 'Only delete post meta field from first ', 'bulk-delete' );?>
<input type ="text" name="smbd_<?php echo esc_attr( $this->field_slug ); ?>_limit_to" id="smbd_<?php echo esc_attr( $this->field_slug ); ?>_limit_to" disabled value ="0" maxlength="4" size="4"><?php _e( 'posts.', 'bulk-delete' );?>
<?php _e( 'Use this option if there are more than 1000 posts and the script times out.', 'bulk-delete' ) ?>
</td>
</tr>

<tr>
<td>
<input name="smbd_<?php echo esc_attr( $this->field_slug ); ?>_cron" value = "false" type = "radio" checked="checked"> <?php _e( 'Delete now', 'bulk-delete' ); ?>
<input name="smbd_<?php echo esc_attr( $this->field_slug ); ?>_cron" value = "true" type = "radio" id = "smbd_<?php echo esc_attr( $this->field_slug ); ?>_cron" disabled > <?php _e( 'Schedule', 'bulk-delete' ); ?>
<input name="smbd_<?php echo esc_attr( $this->field_slug ); ?>_cron_start" id = "smbd_<?php echo esc_attr( $this->field_slug ); ?>_cron_start" value = "now" type = "text" disabled><?php _e( 'repeat ', 'bulk-delete' );?>
<select name="smbd_<?php echo esc_attr( $this->field_slug ); ?>_cron_freq" id = "smbd_pm_cron_freq" disabled>
<option value = "-1"><?php _e( "Don't repeat", 'bulk-delete' ); ?></option>
<?php
$schedules = wp_get_schedules();
foreach ( $schedules as $key => $value ) {
?>
<option value = "<?php echo $key; ?>"><?php echo $value['display']; ?></option>
<?php
}
?>
</select>
<span class="bd-pm-pro" style="color:red">
<?php _e( 'Only available in Pro Addon', 'bulk-delete' ); ?> <a href = "http://bulkwp.com/addons/bulk-delete-post-meta/?utm_source=wpadmin&utm_campaign=BulkDelete&utm_medium=buynow&utm_content=bd-m-p">Buy now</a>
</span>
</td>
</tr>

<tr>
<td>
<?php _e( 'Enter time in Y-m-d H:i:s format or enter now to use current time', 'bulk-delete' );?>
</td>
</tr>

</table>
</fieldset>

<p>
<button type="submit" name="bd_action" value="delete_meta_post" class="button-primary"><?php _e( 'Bulk Delete ', 'bulk-delete' ) ?>&raquo;</button>
</p>
<!-- Post Meta box end-->
<fieldset class="options">
<h4><?php _e( 'Select the post type whose post meta fields you want to delete', 'bulk-delete' ); ?></h4>

<table class="optiontable">
<?php $this->render_post_type_dropdown(); ?>
</table>

<h4><?php _e( 'Choose your post meta field settings', 'bulk-delete' ); ?></h4>
<table class="optiontable">
<tr>
<td>
<input name="smbd_<?php echo esc_attr( $this->field_slug ); ?>_use_value" value="use_key" type="radio" checked>
<label for="smbd_<?php echo esc_attr( $this->field_slug ); ?>_use_value"><?php echo __( 'Delete based on post meta key name only', 'bulk-delete' ); ?></label>
</td>
</tr>

<tr>
<td>
<input name="smbd_<?php echo esc_attr( $this->field_slug ); ?>_use_value" id="smdb_<?php echo esc_attr( $this->field_slug ); ?>_use_key_compare" value="use_key_compare" type="radio" disabled>
<label for="smbd_<?php echo esc_attr( $this->field_slug ); ?>_use_value"><?php echo __( 'Delete based on post meta key name prefix or postfix', 'bulk-delete' ); ?></label>
<span class="bd-pm-pro" style="color:red; vertical-align: middle;">
<?php _e( 'Only available in Pro Addon', 'bulk-delete' ); ?> <a href = "http://bulkwp.com/addons/bulk-delete-post-meta/?utm_source=wpadmin&utm_campaign=BulkDelete&utm_medium=buynow&utm_content=bd-m-p" target="_blank">Buy now</a>
</span>
</td>
</tr>

<tr>
<td>
<input name="smbd_<?php echo esc_attr( $this->field_slug ); ?>_use_value" id="smbd_<?php echo esc_attr( $this->field_slug ); ?>_use_value" value="use_value" type="radio" disabled>
<label for="smbd_<?php echo esc_attr( $this->field_slug ); ?>_use_value"><?php echo __( 'Delete based on post meta key name and value', 'bulk-delete' ); ?></label>
<span class="bd-pm-pro" style="color:red; vertical-align: middle;">
<?php _e( 'Only available in Pro Addon', 'bulk-delete' ); ?> <a href = "http://bulkwp.com/addons/bulk-delete-post-meta/?utm_source=wpadmin&utm_campaign=BulkDelete&utm_medium=buynow&utm_content=bd-m-p" target="_blank">Buy now</a>
</span>
</td>
</tr>

<tr>
<td>
<label for="smbd_<?php echo esc_attr( $this->field_slug ); ?>_key"><?php _e( 'Post Meta Key ', 'bulk-delete' ); ?></label>
<select name="smbd_<?php echo esc_attr( $this->field_slug ); ?>_key_prefix_postfix" id="smbd_<?php echo esc_attr( $this->field_slug ); ?>_key_prefix_postfix" style="display: none;">
<option value="starts_with">starts with</option>
<option value="contains">contains</option>
<option value="ends_with">ends with</option>
</select>
<input name="smbd_<?php echo esc_attr( $this->field_slug ); ?>_key" id="smbd_<?php echo esc_attr( $this->field_slug ); ?>_key" placeholder="<?php _e( 'Meta Key', 'bulk-delete' ); ?>">
</td>
</tr>
</table>

<?php
/**
* Add more fields to the delete post meta field form.
* This hook can be used to add more fields to the delete post meta field form.
*
* @since 5.4
*/
do_action( 'bd_delete_post_meta_form' );
?>

<table class="optiontable">
<tr>
<td colspan="2">
<h4><?php _e( 'Choose your deletion options', 'bulk-delete' ); ?></h4>
</td>
</tr>

<?php $this->render_restrict_settings(); ?>
<?php $this->render_limit_settings(); ?>
<?php $this->render_cron_settings(); ?>

</table>
</fieldset>

<?php $this->render_submit_button(); ?>

<!-- Post Meta box end-->
<?php
}

Expand All @@ -159,7 +117,14 @@ protected function convert_user_input_to_options( $request, $options ) {
$options['use_value'] = bd_array_get( $request, 'smbd_' . $this->field_slug . '_use_value', 'use_key' );
$options['meta_key'] = esc_sql( bd_array_get( $request, 'smbd_' . $this->field_slug . '_key', '' ) );

return $options;
/**
* Delete post-meta delete options filter.
*
* This filter is for processing filtering options for deleting post meta.
*
* @since 5.4
*/
return apply_filters( 'bd_delete_post_meta_options', $options, $request );
}

protected function do_delete( $options ) {
Expand All @@ -170,6 +135,8 @@ protected function do_delete( $options ) {

if ( $options['limit_to'] > 0 ) {
$args['number'] = $options['limit_to'];
} else {
$args['nopaging'] = 'true';
}

$op = $options['date_op'];
Expand Down Expand Up @@ -214,11 +181,11 @@ protected function do_delete( $options ) {
}

public function filter_js_array( $js_array ) {
$js_array['dt_iterators'][] = '_' . $this->field_slug;
$js_array['validators']['delete_meta_post'] = 'noValidation';
$js_array['dt_iterators'][] = '_' . $this->field_slug;
$js_array['validators'][ $this->action ] = 'noValidation';

$js_array['pre_action_msg']['delete_meta_post'] = 'deletePMWarning';
$js_array['msg']['deletePMWarning'] = __( 'Are you sure you want to delete all the post meta fields that match the selected filters?', 'bulk-delete' );
$js_array['pre_action_msg'][ $this->action ] = 'deletePMWarning';
$js_array['msg']['deletePMWarning'] = __( 'Are you sure you want to delete all the post meta fields that match the selected filters?', 'bulk-delete' );

return $js_array;
}
Expand Down
23 changes: 16 additions & 7 deletions include/Core/Metas/Modules/DeleteUserMetaModule.php
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,14 @@ protected function convert_user_input_to_options( $request, $options ) {
$options['use_value'] = bd_array_get_bool( $request, 'smbd_' . $this->field_slug . '_use_value', false );
$options['meta_key'] = esc_sql( bd_array_get( $request, 'smbd_' . $this->field_slug . '_key', '' ) );

return $options;
/**
* Delete user-meta delete options filter.
*
* This filter is for processing filtering options for deleting user meta.
*
* @since 5.4
*/
return apply_filters( 'bd_delete_user_meta_options', $options, $request );
}

protected function do_delete( $options ) {
Expand All @@ -141,19 +148,21 @@ protected function do_delete( $options ) {
$use_value = $options['use_value'];
$limit_to = $options['limit_to'];

$options['role__in'] = $options['selected_roles'];
unset( $options['selected_roles'] );
$args = array(
'role__in' => $options['selected_roles'],
);

if ( $limit_to > 0 ) {
$options['number'] = $limit_to;
$args['number'] = $limit_to;
}

if ( $use_value ) {
$options['meta_query'] = apply_filters( 'bd_delete_user_meta_query', array(), $options );
$args['meta_query'] = apply_filters( 'bd_delete_user_meta_query', array(), $options );
} else {
$options['meta_key'] = $meta_key;
$args['meta_key'] = $meta_key;
}
$users = get_users( $options );

$users = get_users( $args );

foreach ( $users as $user ) {
if ( delete_user_meta( $user->ID, $meta_key ) ) {
Expand Down
33 changes: 33 additions & 0 deletions include/deprecated/support-old-addons.php
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,36 @@ function bd_load_deprecated_page_modules( $page ) {
$trash_module->load_if_needed( $page );
}
add_action( 'bd_after_pages_modules', 'bd_load_deprecated_page_modules' );

/**
* Enable nonce checks for old post add-ons.
*
* This is needed only to do automatic nonce checks for old add-ons and will be eventually removed.
*
* @since 6.0.0
*
* @param array $actions Actions.
* @param \BulkWP\BulkDelete\Core\Base\BasePage $page Page to which actions might be added.
*
* @return array List of modified actions.
*/
function bd_enable_nonce_check_for_old_post_addons( $actions, $page ) {
if ( 'bulk-delete-posts' !== $page->get_page_slug() ) {
return $actions;
}

if ( class_exists( '\Bulk_Delete_Posts_By_User' ) ) {
$actions[] = 'delete_posts_by_user';
}

if ( class_exists( '\Bulk_Delete_Posts_By_Attachment' ) ) {
$actions[] = 'delete_posts_by_attachment';
}

if ( class_exists( '\Bulk_Delete_Posts_By_Content' ) ) {
$actions[] = 'delete_posts_by_content';
}

return $actions;
}
add_filter( 'bd_page_actions', 'bd_enable_nonce_check_for_old_post_addons', 10, 2 );

0 comments on commit 2a052d9

Please sign in to comment.