X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/61343b82c4f0da4c68e4c6373daafff4a81efdd1..refs/tags/wordpress-4.3:/wp-admin/includes/class-wp-list-table.php
diff --git a/wp-admin/includes/class-wp-list-table.php b/wp-admin/includes/class-wp-list-table.php
index 22c35f5e..ad35fc67 100644
--- a/wp-admin/includes/class-wp-list-table.php
+++ b/wp-admin/includes/class-wp-list-table.php
@@ -2,18 +2,11 @@
/**
* Base class for displaying a list of items in an ajaxified HTML table.
*
- * @package WordPress
- * @subpackage List_Table
* @since 3.1.0
- */
-
-/**
- * Base class for displaying a list of items in an ajaxified HTML table.
+ * @access private
*
* @package WordPress
* @subpackage List_Table
- * @since 3.1.0
- * @access private
*/
class WP_List_Table {
@@ -22,27 +15,26 @@ class WP_List_Table {
*
* @since 3.1.0
* @var array
- * @access protected
+ * @access public
*/
- var $items;
+ public $items;
/**
* Various information about the current table
*
* @since 3.1.0
* @var array
- * @access private
+ * @access protected
*/
- var $_args;
+ protected $_args;
/**
* Various information needed for displaying the pagination
*
* @since 3.1.0
* @var array
- * @access private
*/
- var $_pagination_args = array();
+ protected $_pagination_args = array();
/**
* The current screen
@@ -51,7 +43,7 @@ class WP_List_Table {
* @var object
* @access protected
*/
- var $screen;
+ protected $screen;
/**
* Cached bulk actions
@@ -60,7 +52,7 @@ class WP_List_Table {
* @var array
* @access private
*/
- var $_actions;
+ private $_actions;
/**
* Cached pagination output
@@ -69,15 +61,58 @@ class WP_List_Table {
* @var string
* @access private
*/
- var $_pagination;
+ private $_pagination;
/**
- * Constructor. The child class should call this constructor from its own constructor
+ * The view switcher modes.
*
- * @param array $args An associative array with information about the current table
+ * @since 4.1.0
+ * @var array
* @access protected
*/
- function __construct( $args = array() ) {
+ protected $modes = array();
+
+ /**
+ * Stores the value returned by ->get_column_info()
+ *
+ * @var array
+ */
+ protected $_column_headers;
+
+ protected $compat_fields = array( '_args', '_pagination_args', 'screen', '_actions', '_pagination' );
+
+ protected $compat_methods = array( 'set_pagination_args', 'get_views', 'get_bulk_actions', 'bulk_actions',
+ 'row_actions', 'months_dropdown', 'view_switcher', 'comments_bubble', 'get_items_per_page', 'pagination',
+ 'get_sortable_columns', 'get_column_info', 'get_table_classes', 'display_tablenav', 'extra_tablenav',
+ 'single_row_columns' );
+
+ /**
+ * Constructor.
+ *
+ * The child class should call this constructor from its own constructor to override
+ * the default $args.
+ *
+ * @since 3.1.0
+ * @access public
+ *
+ * @param array|string $args {
+ * Array or string of arguments.
+ *
+ * @type string $plural Plural value used for labels and the objects being listed.
+ * This affects things such as CSS class-names and nonces used
+ * in the list table, e.g. 'posts'. Default empty.
+ * @type string $singular Singular label for an object being listed, e.g. 'post'.
+ * Default empty
+ * @type bool $ajax Whether the list table supports AJAX. This includes loading
+ * and sorting data, for example. If true, the class will call
+ * the {@see _js_vars()} method in the footer to provide variables
+ * to any scripts handling AJAX events. Default false.
+ * @type string $screen String containing the hook name used to determine the current
+ * screen. If left null, the current screen will be automatically set.
+ * Default null.
+ * }
+ */
+ public function __construct( $args = array() ) {
$args = wp_parse_args( $args, array(
'plural' => '',
'singular' => '',
@@ -87,7 +122,7 @@ class WP_List_Table {
$this->screen = convert_to_screen( $args['screen'] );
- add_filter( "manage_{$this->screen->id}_columns", array( &$this, 'get_columns' ), 0 );
+ add_filter( "manage_{$this->screen->id}_columns", array( $this, 'get_columns' ), 0 );
if ( !$args['plural'] )
$args['plural'] = $this->screen->base;
@@ -99,19 +134,102 @@ class WP_List_Table {
if ( $args['ajax'] ) {
// wp_enqueue_script( 'list-table' );
- add_action( 'admin_footer', array( &$this, '_js_vars' ) );
+ add_action( 'admin_footer', array( $this, '_js_vars' ) );
+ }
+
+ if ( empty( $this->modes ) ) {
+ $this->modes = array(
+ 'list' => __( 'List View' ),
+ 'excerpt' => __( 'Excerpt View' )
+ );
+ }
+ }
+
+ /**
+ * Make private properties readable for backwards compatibility.
+ *
+ * @since 4.0.0
+ * @access public
+ *
+ * @param string $name Property to get.
+ * @return mixed Property.
+ */
+ public function __get( $name ) {
+ if ( in_array( $name, $this->compat_fields ) ) {
+ return $this->$name;
+ }
+ }
+
+ /**
+ * Make private properties settable for backwards compatibility.
+ *
+ * @since 4.0.0
+ * @access public
+ *
+ * @param string $name Property to check if set.
+ * @param mixed $value Property value.
+ * @return mixed Newly-set property.
+ */
+ public function __set( $name, $value ) {
+ if ( in_array( $name, $this->compat_fields ) ) {
+ return $this->$name = $value;
+ }
+ }
+
+ /**
+ * Make private properties checkable for backwards compatibility.
+ *
+ * @since 4.0.0
+ * @access public
+ *
+ * @param string $name Property to check if set.
+ * @return bool Whether the property is set.
+ */
+ public function __isset( $name ) {
+ if ( in_array( $name, $this->compat_fields ) ) {
+ return isset( $this->$name );
+ }
+ }
+
+ /**
+ * Make private properties un-settable for backwards compatibility.
+ *
+ * @since 4.0.0
+ * @access public
+ *
+ * @param string $name Property to unset.
+ */
+ public function __unset( $name ) {
+ if ( in_array( $name, $this->compat_fields ) ) {
+ unset( $this->$name );
}
}
+ /**
+ * Make private/protected methods readable for backwards compatibility.
+ *
+ * @since 4.0.0
+ * @access public
+ *
+ * @param callable $name Method to call.
+ * @param array $arguments Arguments to pass when calling.
+ * @return mixed|bool Return value of the callback, false otherwise.
+ */
+ public function __call( $name, $arguments ) {
+ if ( in_array( $name, $this->compat_methods ) ) {
+ return call_user_func_array( array( $this, $name ), $arguments );
+ }
+ return false;
+ }
+
/**
* Checks the current user's permissions
- * @uses wp_die()
*
* @since 3.1.0
* @access public
* @abstract
*/
- function ajax_user_can() {
+ public function ajax_user_can() {
die( 'function WP_List_Table::ajax_user_can() must be over-ridden in a sub-class.' );
}
@@ -123,7 +241,7 @@ class WP_List_Table {
* @access public
* @abstract
*/
- function prepare_items() {
+ public function prepare_items() {
die( 'function WP_List_Table::prepare_items() must be over-ridden in a sub-class.' );
}
@@ -132,8 +250,10 @@ class WP_List_Table {
*
* @param array $args An associative array with information about the pagination
* @access protected
+ *
+ * @param array|string $args
*/
- function set_pagination_args( $args ) {
+ protected function set_pagination_args( $args ) {
$args = wp_parse_args( $args, array(
'total_items' => 0,
'total_pages' => 0,
@@ -143,7 +263,7 @@ class WP_List_Table {
if ( !$args['total_pages'] && $args['per_page'] > 0 )
$args['total_pages'] = ceil( $args['total_items'] / $args['per_page'] );
- // redirect if page number is invalid and headers are not already sent
+ // Redirect if page number is invalid and headers are not already sent.
if ( ! headers_sent() && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) && $args['total_pages'] > 0 && $this->get_pagenum() > $args['total_pages'] ) {
wp_redirect( add_query_arg( 'paged', $args['total_pages'] ) );
exit;
@@ -153,15 +273,16 @@ class WP_List_Table {
}
/**
- * Access the pagination args
+ * Access the pagination args.
*
* @since 3.1.0
* @access public
*
- * @param string $key
- * @return array
+ * @param string $key Pagination argument to retrieve. Common values include 'total_items',
+ * 'total_pages', 'per_page', or 'infinite_scroll'.
+ * @return int Number of items that correspond to the given pagination argument.
*/
- function get_pagination_arg( $key ) {
+ public function get_pagination_arg( $key ) {
if ( 'page' == $key )
return $this->get_pagenum();
@@ -177,7 +298,7 @@ class WP_List_Table {
*
* @return bool
*/
- function has_items() {
+ public function has_items() {
return !empty( $this->items );
}
@@ -187,7 +308,7 @@ class WP_List_Table {
* @since 3.1.0
* @access public
*/
- function no_items() {
+ public function no_items() {
_e( 'No items found.' );
}
@@ -200,7 +321,7 @@ class WP_List_Table {
* @param string $text The search button text
* @param string $input_id The search input id
*/
- function search_box( $text, $input_id ) {
+ public function search_box( $text, $input_id ) {
if ( empty( $_REQUEST['s'] ) && !$this->has_items() )
return;
@@ -218,7 +339,7 @@ class WP_List_Table {
- 'search-submit') ); ?>
+ 'search-submit') ); ?>
get_views();
- $views = apply_filters( 'views_' . $this->screen->id, $views );
+ /**
+ * Filter the list of available list table views.
+ *
+ * The dynamic portion of the hook name, `$this->screen->id`, refers
+ * to the ID of the current screen, usually a string.
+ *
+ * @since 3.5.0
+ *
+ * @param array $views An array of available list table views.
+ */
+ $views = apply_filters( "views_{$this->screen->id}", $views );
if ( empty( $views ) )
return;
@@ -266,7 +397,7 @@ class WP_List_Table {
*
* @return array
*/
- function get_bulk_actions() {
+ protected function get_bulk_actions() {
return array();
}
@@ -274,13 +405,27 @@ class WP_List_Table {
* Display the bulk actions dropdown.
*
* @since 3.1.0
- * @access public
+ * @access protected
+ *
+ * @param string $which The location of the bulk actions: 'top' or 'bottom'.
+ * This is designated as optional for backwards-compatibility.
*/
- function bulk_actions() {
+ protected function bulk_actions( $which = '' ) {
if ( is_null( $this->_actions ) ) {
$no_new_actions = $this->_actions = $this->get_bulk_actions();
- // This filter can currently only be used to remove actions.
- $this->_actions = apply_filters( 'bulk_actions-' . $this->screen->id, $this->_actions );
+ /**
+ * Filter the list table Bulk Actions drop-down.
+ *
+ * The dynamic portion of the hook name, `$this->screen->id`, refers
+ * to the ID of the current screen, usually a string.
+ *
+ * This filter can currently only be used to remove bulk actions.
+ *
+ * @since 3.5.0
+ *
+ * @param array $actions An array of the available bulk actions.
+ */
+ $this->_actions = apply_filters( "bulk_actions-{$this->screen->id}", $this->_actions );
$this->_actions = array_intersect_assoc( $this->_actions, $no_new_actions );
$two = '';
} else {
@@ -290,7 +435,8 @@ class WP_List_Table {
if ( empty( $this->_actions ) )
return;
- echo "