Commit eb221dd6 authored by Erick Hitter's avatar Erick Hitter

Begin adding bulk actions

parent c4502d89
Pipeline #1058 passed with stages
in 3 minutes and 30 seconds
<?php
/**
* Bulk actions.
*
* @package WP_Revisions_Control
*/
/**
* Class WP_Revisions_Control_Bulk_Actions.
*/
class WP_Revisions_Control_Bulk_Actions {
/**
* Supported post types.
*
* @var array
*/
protected $post_types;
/**
* Custom bulk actions.
*
* @var array
*/
protected $actions;
/**
* Constructor.
*
* @param array $post_types Supported post types.
*/
public function __construct( $post_types ) {
if ( empty( $post_types ) || ! is_array( $post_types ) ) {
return;
}
$this->post_types = $post_types;
$this->register_actions();
add_action( 'load-edit.php', array( $this, 'setup' ) );
}
/**
* Register custom actions.
*/
protected function register_actions() {
$actions = array();
$action_base = 'wp_rev_ctl_bulk_';
$actions[ $action_base . 'purge_excess' ] = __( 'Purge excess revisions', 'wp_revisions_control' );
$actions[ $action_base . 'purge_all' ] = __( 'Purge ALL revisions', 'wp_revisions_control' );
$this->actions = $actions;
}
/**
* Register various hooks.
*/
public function setup() {
$screen = get_current_screen();
if ( null === $screen ) {
return;
}
$post_types = array_keys( $this->post_types );
if ( ! in_array( $screen->post_type, $post_types, true ) ) {
return;
}
if ( 'edit' !== $screen->base ) {
return;
}
add_filter( 'bulk_actions-' . $screen->id, array( $this, 'add_actions' ) );
add_filter( 'handle_bulk_actions-' . $screen->id, array( $this, 'handle_action' ), 10, 3 );
}
/**
* Add our actions.
*
* @param string[] $actions Array of available actions.
* @return array
*/
public function add_actions( $actions ) {
return array_merge( $actions, $this->actions );
}
/**
* Handle our bulk actions.
*
* @param string $redirect_to Redirect URL.
* @param string $action Bulk action being taken.
* @param array $ids Object IDs to manipulate.
* @return string
*/
public function handle_action( $redirect_to, $action, $ids ) {
if ( ! array_key_exists( $action, $this->actions ) ) {
return $redirect_to;
}
// TODO: implement and add a query string to trigger a message.
return $redirect_to;
}
}
......@@ -125,12 +125,14 @@ class WP_Revisions_Control {
* Plugin title is intentionally not translatable.
*/
public function action_admin_init() {
$post_types = $this->get_post_types();
// Plugin setting section.
register_setting( $this->settings_page, $this->settings_section, array( $this, 'sanitize_options' ) );
add_settings_section( $this->settings_section, 'WP Revisions Control', array( $this, 'settings_section_intro' ), $this->settings_page );
foreach ( $this->get_post_types() as $post_type => $name ) {
foreach ( $post_types as $post_type => $name ) {
add_settings_field( $this->settings_section . '-' . $post_type, $name, array( $this, 'field_post_type' ), $this->settings_page, $this->settings_section, array( 'post_type' => $post_type ) );
}
......@@ -138,6 +140,9 @@ class WP_Revisions_Control {
add_action( 'add_meta_boxes', array( $this, 'action_add_meta_boxes' ), 10, 2 );
add_action( 'wp_ajax_' . $this->settings_section . '_purge', array( $this, 'ajax_purge' ) );
add_action( 'save_post', array( $this, 'action_save_post' ) );
// Bulk actions.
new WP_Revisions_Control_Bulk_Actions( $post_types );
}
/**
......
......@@ -30,4 +30,5 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
require_once __DIR__ . '/inc/class-wp-revisions-control-bulk-actions.php';
require_once __DIR__ . '/inc/class-wp-revisions-control.php';
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment