diff --git a/all-in-one-wp-security/admin/general/wp-security-list-table.php b/all-in-one-wp-security/admin/general/wp-security-list-table.php index 66287b7..e35b51c 100644 --- a/all-in-one-wp-security/admin/general/wp-security-list-table.php +++ b/all-in-one-wp-security/admin/general/wp-security-list-table.php @@ -1,141 +1,298 @@ '', - 'singular' => '', - 'ajax' => false, - 'screen' => null, - ) ); + protected $modes = array(); + + /** + * Stores the value returned by ->get_column_info(). + * + * @since 4.1.0 + * @var array + */ + protected $_column_headers; + + /** + * {@internal Missing Summary} + * + * @var array + */ + protected $compat_fields = array( '_args', '_pagination_args', 'screen', '_actions', '_pagination' ); + + /** + * {@internal Missing Summary} + * + * @var array + */ + 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 + * + * @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 _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' => '', + 'ajax' => false, + 'screen' => null, + ) + ); $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'] ) + if ( ! $args['plural'] ) { $args['plural'] = $this->screen->base; + } - $args['plural'] = sanitize_key( $args['plural'] ); + $args['plural'] = sanitize_key( $args['plural'] ); $args['singular'] = sanitize_key( $args['singular'] ); $this->_args = $args; 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 backward compatibility. + * + * @since 4.0.0 + * + * @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 backward compatibility. + * + * @since 4.0.0 + * + * @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 backward compatibility. + * + * @since 4.0.0 + * + * @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 backward compatibility. + * + * @since 4.0.0 + * + * @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 backward compatibility. + * + * @since 4.0.0 + * + * @param string $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 AIOWPSecurity_List_Table::ajax_user_can() must be over-ridden in a sub-class.' ); } /** * Prepares the list of items for displaying. + * * @uses AIOWPSecurity_List_Table::set_pagination_args() * * @since 3.1.0 - * @access public * @abstract */ - function prepare_items() { + public function prepare_items() { die( 'function AIOWPSecurity_List_Table::prepare_items() must be over-ridden in a sub-class.' ); } /** * An internal method that sets all the necessary pagination arguments * - * @param array $args An associative array with information about the pagination - * @access protected + * @since 3.1.0 + * + * @param array|string $args Array or string of arguments with information about the pagination. */ - function set_pagination_args( $args ) { - $args = wp_parse_args( $args, array( - 'total_items' => 0, - 'total_pages' => 0, - 'per_page' => 0, - ) ); + protected function set_pagination_args( $args ) { + $args = wp_parse_args( + $args, + array( + 'total_items' => 0, + 'total_pages' => 0, + 'per_page' => 0, + ) + ); - if ( !$args['total_pages'] && $args['per_page'] > 0 ) + 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'] ) { + // Redirect if page number is invalid and headers are not already sent. + if ( ! headers_sent() && ! wp_doing_ajax() && $args['total_pages'] > 0 && $this->get_pagenum() > $args['total_pages'] ) { wp_redirect( add_query_arg( 'paged', $args['total_pages'] ) ); exit; } @@ -144,74 +301,78 @@ function set_pagination_args( $args ) { } /** - * 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 ) { - if ( 'page' == $key ) + public function get_pagination_arg( $key ) { + if ( 'page' === $key ) { return $this->get_pagenum(); + } - if ( isset( $this->_pagination_args[$key] ) ) - return $this->_pagination_args[$key]; + if ( isset( $this->_pagination_args[ $key ] ) ) { + return $this->_pagination_args[ $key ]; + } } /** * Whether the table has items to display or not * * @since 3.1.0 - * @access public * * @return bool */ - function has_items() { - return !empty( $this->items ); + public function has_items() { + return ! empty( $this->items ); } /** * Message to be displayed when there are no items * * @since 3.1.0 - * @access public */ - function no_items() { + public function no_items() { _e( 'No items found.' ); } /** - * Display the search box. + * Displays the search box. * * @since 3.1.0 - * @access public * - * @param string $text The search button text - * @param string $input_id The search input id + * @param string $text The 'submit' button label. + * @param string $input_id ID attribute value for the search input field. */ - function search_box( $text, $input_id ) { - if ( empty( $_REQUEST['s'] ) && !$this->has_items() ) + public function search_box( $text, $input_id ) { + if ( empty( $_REQUEST['s'] ) && ! $this->has_items() ) { return; + } $input_id = $input_id . '-search-input'; - if ( ! empty( $_REQUEST['orderby'] ) ) + if ( ! empty( $_REQUEST['orderby'] ) ) { echo ''; - if ( ! empty( $_REQUEST['order'] ) ) + } + if ( ! empty( $_REQUEST['order'] ) ) { echo ''; - if ( ! empty( $_REQUEST['post_mime_type'] ) ) + } + if ( ! empty( $_REQUEST['post_mime_type'] ) ) { echo ''; - if ( ! empty( $_REQUEST['detached'] ) ) + } + if ( ! empty( $_REQUEST['detached'] ) ) { echo ''; -?> + } + ?>
- - - 'search-submit') ); ?> + + + 'search-submit' ) ); ?>
-get_views(); - $views = apply_filters( 'views_' . $this->screen->id, $views ); - - if ( empty( $views ) ) + /** + * Filters 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 string[] $views An array of available list table views. + */ + $views = apply_filters( "views_{$this->screen->id}", $views ); + + if ( empty( $views ) ) { return; + } + + $this->screen->render_screen_reader_content( 'heading_views' ); echo "