X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/5aa86a9053fb0fa15846bb60aac2fb8fdfff524a..refs/tags/wordpress-4.0:/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 446174d4..8d2bc51e 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,9 +15,9 @@ class WP_List_Table {
*
* @since 3.1.0
* @var array
- * @access protected
+ * @access public
*/
- var $items;
+ public $items;
/**
* Various information about the current table
@@ -33,7 +26,7 @@ class WP_List_Table {
* @var array
* @access private
*/
- var $_args;
+ private $_args;
/**
* Various information needed for displaying the pagination
@@ -42,7 +35,7 @@ class WP_List_Table {
* @var array
* @access private
*/
- var $_pagination_args = array();
+ private $_pagination_args = array();
/**
* The current screen
@@ -51,7 +44,7 @@ class WP_List_Table {
* @var object
* @access protected
*/
- var $screen;
+ protected $screen;
/**
* Cached bulk actions
@@ -60,7 +53,7 @@ class WP_List_Table {
* @var array
* @access private
*/
- var $_actions;
+ private $_actions;
/**
* Cached pagination output
@@ -69,27 +62,48 @@ class WP_List_Table {
* @var string
* @access private
*/
- var $_pagination;
+ private $_pagination;
/**
- * Constructor. The child class should call this constructor from it's own constructor
+ * Constructor.
*
- * @param array $args An associative array with information about the current table
- * @access protected
+ * 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.
+ * }
*/
- function __construct( $args = array() ) {
+ public function __construct( $args = array() ) {
$args = wp_parse_args( $args, array(
'plural' => '',
'singular' => '',
- 'ajax' => false
+ 'ajax' => false,
+ 'screen' => null,
) );
- $screen = get_current_screen();
+ $this->screen = convert_to_screen( $args['screen'] );
- add_filter( "manage_{$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'] = $screen->base;
+ $args['plural'] = $this->screen->base;
$args['plural'] = sanitize_key( $args['plural'] );
$args['singular'] = sanitize_key( $args['singular'] );
@@ -98,10 +112,76 @@ 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' ) );
}
}
+ /**
+ * 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 ) {
+ return $this->$name;
+ }
+
+ /**
+ * Make private properties settable for backwards compatibility.
+ *
+ * @since 4.0.0
+ * @access public
+ *
+ * @param string $name Property to set.
+ * @param mixed $value Property value.
+ * @return mixed Newly-set property.
+ */
+ public function __set( $name, $value ) {
+ 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 ) {
+ 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 ) {
+ 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 ) {
+ return call_user_func_array( array( $this, $name ), $arguments );
+ }
+
/**
* Checks the current user's permissions
* @uses wp_die()
@@ -110,7 +190,7 @@ class WP_List_Table {
* @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.' );
}
@@ -122,7 +202,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,7 +212,7 @@ class WP_List_Table {
* @param array $args An associative array with information about the pagination
* @access protected
*/
- function set_pagination_args( $args ) {
+ protected function set_pagination_args( $args ) {
$args = wp_parse_args( $args, array(
'total_items' => 0,
'total_pages' => 0,
@@ -142,7 +222,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;
@@ -160,7 +240,7 @@ class WP_List_Table {
* @param string $key
* @return array
*/
- function get_pagination_arg( $key ) {
+ public function get_pagination_arg( $key ) {
if ( 'page' == $key )
return $this->get_pagenum();
@@ -176,7 +256,7 @@ class WP_List_Table {
*
* @return bool
*/
- function has_items() {
+ public function has_items() {
return !empty( $this->items );
}
@@ -186,7 +266,7 @@ class WP_List_Table {
* @since 3.1.0
* @access public
*/
- function no_items() {
+ public function no_items() {
_e( 'No items found.' );
}
@@ -199,7 +279,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;
@@ -209,10 +289,14 @@ class WP_List_Table {
echo '';
if ( ! empty( $_REQUEST['order'] ) )
echo '';
+ if ( ! empty( $_REQUEST['post_mime_type'] ) )
+ echo '';
+ if ( ! empty( $_REQUEST['detached'] ) )
+ echo '';
?>
-
+
'search-submit') ); ?>
get_views();
- $views = apply_filters( 'views_' . $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;
@@ -263,7 +355,7 @@ class WP_List_Table {
*
* @return array
*/
- function get_bulk_actions() {
+ protected function get_bulk_actions() {
return array();
}
@@ -271,15 +363,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() {
- $screen = get_current_screen();
-
+ 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-' . $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 {
@@ -289,7 +393,8 @@ class WP_List_Table {
if ( empty( $this->_actions ) )
return;
- echo "