X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/fef8173b8c3bad08f495551e43cfdeac1cae6021..9c2096d803812dacbdf6cf8efe90053e39f00b96:/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 1d80a7ba..446174d4 100644 --- a/wp-admin/includes/class-wp-list-table.php +++ b/wp-admin/includes/class-wp-list-table.php @@ -77,7 +77,7 @@ class WP_List_Table { * @param array $args An associative array with information about the current table * @access protected */ - function WP_List_Table( $args = array() ) { + function __construct( $args = array() ) { $args = wp_parse_args( $args, array( 'plural' => '', 'singular' => '', @@ -91,6 +91,9 @@ class WP_List_Table { if ( !$args['plural'] ) $args['plural'] = $screen->base; + $args['plural'] = sanitize_key( $args['plural'] ); + $args['singular'] = sanitize_key( $args['singular'] ); + $this->_args = $args; if ( $args['ajax'] ) { @@ -139,6 +142,12 @@ 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 + 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; + } + $this->_pagination_args = $args; } @@ -223,7 +232,7 @@ class WP_List_Table { } /** - * Display the bulk actions dropdown. + * Display the list of views available on this table. * * @since 3.1.0 * @access public @@ -282,8 +291,13 @@ class WP_List_Table { echo "\n"; submit_button( __( 'Apply' ), 'button-secondary action', false, false, array( 'id' => "doaction$two" ) ); @@ -315,7 +329,7 @@ class WP_List_Table { * @access protected * * @param array $actions The list of actions - * @param bool $always_visible Wether the actions should be always visible + * @param bool $always_visible Whether the actions should be always visible * @return string */ function row_actions( $actions, $always_visible = false ) { @@ -528,9 +542,12 @@ class WP_List_Table { '»' ); - $output .= "\n" . join( "\n", $page_links ); + $output .= "\n" . join( "\n", $page_links ) . ''; - $page_class = $total_pages < 2 ? ' one-page' : ''; + if ( $total_pages ) + $page_class = $total_pages < 2 ? ' one-page' : ''; + else + $page_class = ' no-pages'; $this->_pagination = "
$output
"; @@ -883,9 +900,14 @@ class WP_List_Table { * @access private */ function _js_vars() { + $current_screen = get_current_screen(); + $args = array( - 'class' => get_class( $this ), - 'screen' => get_current_screen() + 'class' => get_class( $this ), + 'screen' => array( + 'id' => $current_screen->id, + 'base' => $current_screen->base, + ) ); printf( "\n", json_encode( $args ) );