Make WordPress Core

Changeset 59174


Ignore:
Timestamp:
10/05/2024 03:57:06 PM (16 months ago)
Author:
dmsnell
Message:

WP_Debug_Data: Extract wp-core data into separate methods.

This is the ninth part in a larger modularization of the data in WP_Debug_Data. Previously this was a single massive method drawing in debug data from various groups of related data, where the groups were independent from each other.

This patch separates the tenth of twelve groups, the wp-core info, into a separate method focused on that data.

This work precedes changes to make the WP_Debug_Data class more extensible for better use by plugin and theme code.

Developed in https://github.com/wordpress/wordpress-develop/pull/7357
Discussed in https://core.trac.wordpress.org/ticket/61648

Props apermo, dmsnell.
See #61648.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/includes/class-wp-debug-data.php

    r59172 r59174  
    4040        // Save few function calls.
    4141        $upload_dir             = wp_upload_dir();
    42         $permalink_structure    = get_option( 'permalink_structure' );
    43         $is_ssl                 = is_ssl();
    4442        $is_multisite           = is_multisite();
    45         $users_can_register     = get_option( 'users_can_register' );
    46         $blog_public            = get_option( 'blog_public' );
    47         $default_comment_status = get_option( 'default_comment_status' );
    48         $environment_type       = wp_get_environment_type();
    49         $core_version           = wp_get_wp_version();
    50         $core_updates           = get_core_updates();
    51         $core_update_needed     = '';
    52 
    53         if ( is_array( $core_updates ) ) {
    54             foreach ( $core_updates as $core => $update ) {
    55                 if ( 'upgrade' === $update->response ) {
    56                     /* translators: %s: Latest WordPress version number. */
    57                     $core_update_needed = ' ' . sprintf( __( '(Latest version: %s)' ), $update->version );
    58                 } else {
    59                     $core_update_needed = '';
    60                 }
    61             }
    62         }
    6343
    6444        /*
     
    7656         */
    7757        $info = array(
    78             'wp-core'             => array(),
     58            'wp-core'             => self::get_wp_core(),
    7959            'wp-paths-sizes'      => array(),
    8060            'wp-dropins'          => self::get_wp_dropins(),
     
    9777        }
    9878
    99         $info['wp-core'] = array(
    100             'label'  => __( 'WordPress' ),
    101             'fields' => array(
    102                 'version'                => array(
    103                     'label' => __( 'Version' ),
    104                     'value' => $core_version . $core_update_needed,
    105                     'debug' => $core_version,
    106                 ),
    107                 'site_language'          => array(
    108                     'label' => __( 'Site Language' ),
    109                     'value' => get_locale(),
    110                 ),
    111                 'user_language'          => array(
    112                     'label' => __( 'User Language' ),
    113                     'value' => get_user_locale(),
    114                 ),
    115                 'timezone'               => array(
    116                     'label' => __( 'Timezone' ),
    117                     'value' => wp_timezone_string(),
    118                 ),
    119                 'home_url'               => array(
    120                     'label'   => __( 'Home URL' ),
    121                     'value'   => get_bloginfo( 'url' ),
    122                     'private' => true,
    123                 ),
    124                 'site_url'               => array(
    125                     'label'   => __( 'Site URL' ),
    126                     'value'   => get_bloginfo( 'wpurl' ),
    127                     'private' => true,
    128                 ),
    129                 'permalink'              => array(
    130                     'label' => __( 'Permalink structure' ),
    131                     'value' => $permalink_structure ? $permalink_structure : __( 'No permalink structure set' ),
    132                     'debug' => $permalink_structure,
    133                 ),
    134                 'https_status'           => array(
    135                     'label' => __( 'Is this site using HTTPS?' ),
    136                     'value' => $is_ssl ? __( 'Yes' ) : __( 'No' ),
    137                     'debug' => $is_ssl,
    138                 ),
    139                 'multisite'              => array(
    140                     'label' => __( 'Is this a multisite?' ),
    141                     'value' => $is_multisite ? __( 'Yes' ) : __( 'No' ),
    142                     'debug' => $is_multisite,
    143                 ),
    144                 'user_registration'      => array(
    145                     'label' => __( 'Can anyone register on this site?' ),
    146                     'value' => $users_can_register ? __( 'Yes' ) : __( 'No' ),
    147                     'debug' => $users_can_register,
    148                 ),
    149                 'blog_public'            => array(
    150                     'label' => __( 'Is this site discouraging search engines?' ),
    151                     'value' => $blog_public ? __( 'No' ) : __( 'Yes' ),
    152                     'debug' => $blog_public,
    153                 ),
    154                 'default_comment_status' => array(
    155                     'label' => __( 'Default comment status' ),
    156                     'value' => 'open' === $default_comment_status ? _x( 'Open', 'comment status' ) : _x( 'Closed', 'comment status' ),
    157                     'debug' => $default_comment_status,
    158                 ),
    159                 'environment_type'       => array(
    160                     'label' => __( 'Environment type' ),
    161                     'value' => $environment_type,
    162                     'debug' => $environment_type,
    163                 ),
    164             ),
    165         );
    166 
    16779        if ( ! $is_multisite ) {
    16880            $info['wp-paths-sizes'] = array(
     
    188100            'fields'     => array(),
    189101        );
    190 
    191         // Conditionally add debug information for multisite setups.
    192         if ( is_multisite() ) {
    193             $site_id = get_current_blog_id();
    194 
    195             $info['wp-core']['fields']['site_id'] = array(
    196                 'label' => __( 'Site ID' ),
    197                 'value' => $site_id,
    198                 'debug' => $site_id,
    199             );
    200 
    201             $network_query = new WP_Network_Query();
    202             $network_ids   = $network_query->query(
    203                 array(
    204                     'fields'        => 'ids',
    205                     'number'        => 100,
    206                     'no_found_rows' => false,
    207                 )
    208             );
    209 
    210             $site_count = 0;
    211             foreach ( $network_ids as $network_id ) {
    212                 $site_count += get_blog_count( $network_id );
    213             }
    214 
    215             $info['wp-core']['fields']['site_count'] = array(
    216                 'label' => __( 'Site count' ),
    217                 'value' => $site_count,
    218             );
    219 
    220             $info['wp-core']['fields']['network_count'] = array(
    221                 'label' => __( 'Network count' ),
    222                 'value' => $network_query->found_networks,
    223             );
    224         }
    225 
    226         $info['wp-core']['fields']['user_count'] = array(
    227             'label' => __( 'User count' ),
    228             'value' => get_user_count(),
    229         );
    230 
    231         // WordPress features requiring processing.
    232         $wp_dotorg = wp_remote_get( 'https://wordpress.org', array( 'timeout' => 10 ) );
    233 
    234         if ( ! is_wp_error( $wp_dotorg ) ) {
    235             $info['wp-core']['fields']['dotorg_communication'] = array(
    236                 'label' => __( 'Communication with WordPress.org' ),
    237                 'value' => __( 'WordPress.org is reachable' ),
    238                 'debug' => 'true',
    239             );
    240         } else {
    241             $info['wp-core']['fields']['dotorg_communication'] = array(
    242                 'label' => __( 'Communication with WordPress.org' ),
    243                 'value' => sprintf(
    244                     /* translators: 1: The IP address WordPress.org resolves to. 2: The error returned by the lookup. */
    245                     __( 'Unable to reach WordPress.org at %1$s: %2$s' ),
    246                     gethostbyname( 'wordpress.org' ),
    247                     $wp_dotorg->get_error_message()
    248                 ),
    249                 'debug' => $wp_dotorg->get_error_message(),
    250             );
    251         }
    252102
    253103        // Remove accordion for Directories and Sizes if in Multisite.
     
    699549
    700550    /**
     551     * Gets the WordPress core section of the debug data.
     552     *
     553     * @since 6.7.0
     554     *
     555     * @return array
     556     */
     557    private static function get_wp_core(): array {
     558        // Save few function calls.
     559        $permalink_structure    = get_option( 'permalink_structure' );
     560        $is_ssl                 = is_ssl();
     561        $users_can_register     = get_option( 'users_can_register' );
     562        $blog_public            = get_option( 'blog_public' );
     563        $default_comment_status = get_option( 'default_comment_status' );
     564        $environment_type       = wp_get_environment_type();
     565        $core_version           = wp_get_wp_version();
     566        $core_updates           = get_core_updates();
     567        $core_update_needed     = '';
     568
     569        if ( is_array( $core_updates ) ) {
     570            foreach ( $core_updates as $core => $update ) {
     571                if ( 'upgrade' === $update->response ) {
     572                    /* translators: %s: Latest WordPress version number. */
     573                    $core_update_needed = ' ' . sprintf( __( '(Latest version: %s)' ), $update->version );
     574                } else {
     575                    $core_update_needed = '';
     576                }
     577            }
     578        }
     579
     580        $fields = array(
     581            'version'                => array(
     582                'label' => __( 'Version' ),
     583                'value' => $core_version . $core_update_needed,
     584                'debug' => $core_version,
     585            ),
     586            'site_language'          => array(
     587                'label' => __( 'Site Language' ),
     588                'value' => get_locale(),
     589            ),
     590            'user_language'          => array(
     591                'label' => __( 'User Language' ),
     592                'value' => get_user_locale(),
     593            ),
     594            'timezone'               => array(
     595                'label' => __( 'Timezone' ),
     596                'value' => wp_timezone_string(),
     597            ),
     598            'home_url'               => array(
     599                'label'   => __( 'Home URL' ),
     600                'value'   => get_bloginfo( 'url' ),
     601                'private' => true,
     602            ),
     603            'site_url'               => array(
     604                'label'   => __( 'Site URL' ),
     605                'value'   => get_bloginfo( 'wpurl' ),
     606                'private' => true,
     607            ),
     608            'permalink'              => array(
     609                'label' => __( 'Permalink structure' ),
     610                'value' => $permalink_structure ? $permalink_structure : __( 'No permalink structure set' ),
     611                'debug' => $permalink_structure,
     612            ),
     613            'https_status'           => array(
     614                'label' => __( 'Is this site using HTTPS?' ),
     615                'value' => $is_ssl ? __( 'Yes' ) : __( 'No' ),
     616                'debug' => $is_ssl,
     617            ),
     618            'multisite'              => array(
     619                'label' => __( 'Is this a multisite?' ),
     620                'value' => is_multisite() ? __( 'Yes' ) : __( 'No' ),
     621                'debug' => is_multisite(),
     622            ),
     623            'user_registration'      => array(
     624                'label' => __( 'Can anyone register on this site?' ),
     625                'value' => $users_can_register ? __( 'Yes' ) : __( 'No' ),
     626                'debug' => $users_can_register,
     627            ),
     628            'blog_public'            => array(
     629                'label' => __( 'Is this site discouraging search engines?' ),
     630                'value' => $blog_public ? __( 'No' ) : __( 'Yes' ),
     631                'debug' => $blog_public,
     632            ),
     633            'default_comment_status' => array(
     634                'label' => __( 'Default comment status' ),
     635                'value' => 'open' === $default_comment_status ? _x( 'Open', 'comment status' ) : _x( 'Closed', 'comment status' ),
     636                'debug' => $default_comment_status,
     637            ),
     638            'environment_type'       => array(
     639                'label' => __( 'Environment type' ),
     640                'value' => $environment_type,
     641                'debug' => $environment_type,
     642            ),
     643        );
     644
     645        // Conditionally add debug information for multisite setups.
     646        if ( is_multisite() ) {
     647            $site_id = get_current_blog_id();
     648
     649            $fields['site_id'] = array(
     650                'label' => __( 'Site ID' ),
     651                'value' => $site_id,
     652                'debug' => $site_id,
     653            );
     654
     655            $network_query = new WP_Network_Query();
     656            $network_ids   = $network_query->query(
     657                array(
     658                    'fields'        => 'ids',
     659                    'number'        => 100,
     660                    'no_found_rows' => false,
     661                )
     662            );
     663
     664            $site_count = 0;
     665            foreach ( $network_ids as $network_id ) {
     666                $site_count += get_blog_count( $network_id );
     667            }
     668
     669            $fields['site_count'] = array(
     670                'label' => __( 'Site count' ),
     671                'value' => $site_count,
     672            );
     673
     674            $fields['network_count'] = array(
     675                'label' => __( 'Network count' ),
     676                'value' => $network_query->found_networks,
     677            );
     678        }
     679
     680        $fields['user_count'] = array(
     681            'label' => __( 'User count' ),
     682            'value' => get_user_count(),
     683        );
     684
     685        // WordPress features requiring processing.
     686        $wp_dotorg = wp_remote_get( 'https://wordpress.org', array( 'timeout' => 10 ) );
     687
     688        if ( ! is_wp_error( $wp_dotorg ) ) {
     689            $fields['dotorg_communication'] = array(
     690                'label' => __( 'Communication with WordPress.org' ),
     691                'value' => __( 'WordPress.org is reachable' ),
     692                'debug' => 'true',
     693            );
     694        } else {
     695            $fields['dotorg_communication'] = array(
     696                'label' => __( 'Communication with WordPress.org' ),
     697                'value' => sprintf(
     698                /* translators: 1: The IP address WordPress.org resolves to. 2: The error returned by the lookup. */
     699                    __( 'Unable to reach WordPress.org at %1$s: %2$s' ),
     700                    gethostbyname( 'wordpress.org' ),
     701                    $wp_dotorg->get_error_message()
     702                ),
     703                'debug' => $wp_dotorg->get_error_message(),
     704            );
     705        }
     706
     707        return array(
     708            'label'  => __( 'WordPress' ),
     709            'fields' => $fields,
     710        );
     711    }
     712
     713    /**
    701714     * Gets the WordPress drop-in section of the debug data.
    702715     *
Note: See TracChangeset for help on using the changeset viewer.