diff -r 7b1b88e27a20 -r 48c4eec2b7e6 wp/wp-admin/includes/class-wp-ms-sites-list-table.php --- a/wp/wp-admin/includes/class-wp-ms-sites-list-table.php Thu Sep 29 08:06:27 2022 +0200 +++ b/wp/wp-admin/includes/class-wp-ms-sites-list-table.php Fri Sep 05 18:40:08 2025 +0200 @@ -11,7 +11,6 @@ * Core class used to implement displaying sites in a list table for the network admin. * * @since 3.1.0 - * @access private * * @see WP_List_Table */ @@ -82,7 +81,7 @@ $s = isset( $_REQUEST['s'] ) ? wp_unslash( trim( $_REQUEST['s'] ) ) : ''; $wild = ''; - if ( false !== strpos( $s, '*' ) ) { + if ( str_contains( $s, '*' ) ) { $wild = '*'; $s = trim( $s, '*' ); } @@ -110,12 +109,17 @@ if ( empty( $s ) ) { // Nothing to do. - } elseif ( preg_match( '/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/', $s ) || - preg_match( '/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.?$/', $s ) || - preg_match( '/^[0-9]{1,3}\.[0-9]{1,3}\.?$/', $s ) || - preg_match( '/^[0-9]{1,3}\.$/', $s ) ) { + } elseif ( preg_match( '/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/', $s ) + || preg_match( '/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.?$/', $s ) + || preg_match( '/^[0-9]{1,3}\.[0-9]{1,3}\.?$/', $s ) + || preg_match( '/^[0-9]{1,3}\.$/', $s ) + ) { // IPv4 address. - $sql = $wpdb->prepare( "SELECT blog_id FROM {$wpdb->registration_log} WHERE {$wpdb->registration_log}.IP LIKE %s", $wpdb->esc_like( $s ) . ( ! empty( $wild ) ? '%' : '' ) ); + $sql = $wpdb->prepare( + "SELECT blog_id FROM {$wpdb->registration_log} WHERE {$wpdb->registration_log}.IP LIKE %s", + $wpdb->esc_like( $s ) . ( ! empty( $wild ) ? '%' : '' ) + ); + $reg_blog_ids = $wpdb->get_col( $sql ); if ( $reg_blog_ids ) { @@ -262,23 +266,23 @@ $url = 'sites.php'; foreach ( $statuses as $status => $label_count ) { - $current_link_attributes = $requested_status === $status || ( '' === $requested_status && 'all' === $status ) - ? ' class="current" aria-current="page"' - : ''; if ( (int) $counts[ $status ] > 0 ) { - $label = sprintf( translate_nooped_plural( $label_count, $counts[ $status ] ), number_format_i18n( $counts[ $status ] ) ); + $label = sprintf( + translate_nooped_plural( $label_count, $counts[ $status ] ), + number_format_i18n( $counts[ $status ] ) + ); + $full_url = 'all' === $status ? $url : add_query_arg( 'status', $status, $url ); - $view_links[ $status ] = sprintf( - '%3$s', - esc_url( $full_url ), - $current_link_attributes, - $label + $view_links[ $status ] = array( + 'url' => esc_url( $full_url ), + 'label' => $label, + 'current' => $requested_status === $status || ( '' === $requested_status && 'all' === $status ), ); } } - return $view_links; + return $this->get_views_links( $view_links ); } /** @@ -298,7 +302,7 @@ /** * @global string $mode List table view mode. * - * @param string $which The location of the pagination nav markup: 'top' or 'bottom'. + * @param string $which The location of the pagination nav markup: Either 'top' or 'bottom'. */ protected function pagination( $which ) { global $mode; @@ -311,11 +315,11 @@ } /** - * Extra controls to be displayed between bulk actions and pagination. + * Displays extra controls between bulk actions and pagination. * * @since 5.3.0 * - * @param string $which The location of the extra table nav markup: 'top' or 'bottom'. + * @param string $which The location of the extra table nav markup: Either 'top' or 'bottom'. */ protected function extra_tablenav( $which ) { ?> @@ -329,7 +333,7 @@ * * @since 5.3.0 * - * @param string $which The location of the extra table nav markup: 'top' or 'bottom'. + * @param string $which The location of the extra table nav markup: Either 'top' or 'bottom'. */ do_action( 'restrict_manage_sites', $which ); @@ -349,13 +353,13 @@ * * @since 5.3.0 * - * @param string $which The location of the extra table nav markup: 'top' or 'bottom'. + * @param string $which The location of the extra table nav markup: Either 'top' or 'bottom'. */ do_action( 'manage_sites_extra_tablenav', $which ); } /** - * @return array + * @return string[] Array of column titles keyed by their column name. */ public function get_columns() { $sites_columns = array( @@ -385,10 +389,19 @@ * @return array */ protected function get_sortable_columns() { + + if ( is_subdomain_install() ) { + $blogname_abbr = __( 'Domain' ); + $blogname_orderby_text = __( 'Table ordered by Site Domain Name.' ); + } else { + $blogname_abbr = __( 'Path' ); + $blogname_orderby_text = __( 'Table ordered by Site Path.' ); + } + return array( - 'blogname' => 'blogname', - 'lastupdated' => 'lastupdated', - 'registered' => 'blog_id', + 'blogname' => array( 'blogname', false, $blogname_abbr, $blogname_orderby_text ), + 'lastupdated' => array( 'lastupdated', true, __( 'Last Updated' ), __( 'Table ordered by Last Updated.' ) ), + 'registered' => array( 'blog_id', true, _x( 'Registered', 'site' ), __( 'Table ordered by Site Registered Date.' ), 'desc' ), ); } @@ -407,13 +420,15 @@ if ( ! is_main_site( $blog['blog_id'] ) ) : $blogname = untrailingslashit( $blog['domain'] . $blog['path'] ); ?> -