Make WordPress Core

Ticket #56199: 56199.diff

File 56199.diff, 11.2 KB (added by azaozz, 2 years ago)

Dashboard widget and Site Health warnings.

  • src/wp-admin/css/dashboard.css

     
    11861186        padding-right: 6px;
    11871187}
    11881188
    1189 #dashboard_php_nag.php-insecure .dashicons-warning {
     1189#dashboard_php_nag.php-no-security-updates .dashicons-warning,
     1190#dashboard_php_nag.php-version-lower-than-future-minimum .dashicons-warning {
    11901191        color: #d63638;
    11911192}
    11921193
     
    11981199        margin: 12px 0;
    11991200}
    12001201
    1201 #dashboard_php_nag h3 {
    1202         font-weight: 600;
    1203 }
    1204 
    12051202#dashboard_php_nag .button .dashicons-external {
    12061203        line-height: 25px;
    12071204}
    12081205
     1206.bigger-bolder-text {
     1207        font-weight: 600;
     1208        font-size: 14px;
     1209}
     1210
    12091211/* =Media Queries
    12101212-------------------------------------------------------------- */
    12111213
  • src/wp-admin/includes/class-wp-site-health.php

     
    741741                                '<p>%s</p>',
    742742                                sprintf(
    743743                                        /* translators: %s: The minimum recommended PHP version. */
    744                                         __( 'PHP is the programming language used to build and maintain WordPress. Newer versions of PHP are created with increased performance in mind, so you may see a positive effect on your site&#8217;s performance. The minimum recommended version of PHP is %s.' ),
     744                                        __( 'PHP is one of the programming languages used to build WordPress. Newer versions of PHP receive regular security updates and may increase your site&#8217;s performance. The minimum recommended version of PHP is %s.' ),
    745745                                        $response ? $response['recommended_version'] : ''
    746746                                )
    747747                        ),
     
    764764                if ( $response['is_supported'] ) {
    765765                        $result['label'] = sprintf(
    766766                                /* translators: %s: The server PHP version. */
    767                                 __( 'Your site is running an older version of PHP (%s)' ),
     767                                __( 'Your site is running on an older version of PHP (%s)' ),
    768768                                PHP_VERSION
    769769                        );
    770770                        $result['status'] = 'recommended';
     
    772772                        return $result;
    773773                }
    774774
     775                // The PHP version is still receiving security fixes, but is lower than
     776                // the expected minimum version that will be required by WordPress in the near future.
     777                if ( $response['is_secure'] && $response['is_lower_than_future_minimum'] ) {
     778                        // The `is_secure` array key name doesn't actually imply this is a secure version of PHP. It only means it receives security updates.
     779
     780                        $result['label'] = sprintf(
     781                                /* translators: %s: The server PHP version. */
     782                                __( 'Your site is running on an outdated version of PHP (%s), which soon will not be supported by WordPress.' ),
     783                                PHP_VERSION
     784                        );
     785
     786                        $result['status']         = 'critical';
     787                        $result['badge']['label'] = __( 'Requirements' );
     788
     789                        return $result;
     790                }
     791
    775792                // The PHP version is only receiving security fixes.
    776793                if ( $response['is_secure'] ) {
    777794                        $result['label'] = sprintf(
    778795                                /* translators: %s: The server PHP version. */
    779                                 __( 'Your site is running an older version of PHP (%s), which should be updated' ),
     796                                __( 'Your site is running on an older version of PHP (%s), which should be updated' ),
    780797                                PHP_VERSION
    781798                        );
    782799                        $result['status'] = 'recommended';
     
    784801                        return $result;
    785802                }
    786803
    787                 // Anything no longer secure must be updated.
    788                 $result['label'] = sprintf(
    789                         /* translators: %s: The server PHP version. */
    790                         __( 'Your site is running an outdated version of PHP (%s), which requires an update' ),
    791                         PHP_VERSION
    792                 );
    793                 $result['status']         = 'critical';
     804                // No more security updates for the PHP version, and lower than the expected minimum version required by WordPress.
     805                if ( $response['is_lower_than_future_minimum'] ) {
     806                        $message = sprintf(
     807                                /* translators: %s: The server PHP version. */
     808                                __( 'Your site is running on an outdated version of PHP (%s), which does not receive security updates and soon will not be supported by WordPress.' ),
     809                                PHP_VERSION
     810                        );
     811                } else {
     812                        // No more security updates for the PHP version, must be updated.
     813                        $message = sprintf(
     814                                /* translators: %s: The server PHP version. */
     815                                __( 'Your site is running on an outdated version of PHP (%s), which does not receive security updates. It should be updated.' ),
     816                                PHP_VERSION
     817                        );
     818                }
     819
     820                $result['label']  = $message;
     821                $result['status'] = 'critical';
     822
    794823                $result['badge']['label'] = __( 'Security' );
    795824
    796825                return $result;
  • src/wp-admin/includes/dashboard.php

     
    2020function wp_dashboard_setup() {
    2121        global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;
    2222
    23         $wp_dashboard_control_callbacks = array();
    24         $screen                         = get_current_screen();
     23        $screen = get_current_screen();
    2524
    2625        /* Register Widgets and Controls */
     26        $wp_dashboard_control_callbacks = array();
    2727
    28         $response = wp_check_browser_version();
     28        // Browser version
     29        $check_browser = wp_check_browser_version();
    2930
    30         if ( $response && $response['upgrade'] ) {
     31        if ( $check_browser && $check_browser['upgrade'] ) {
    3132                add_filter( 'postbox_classes_dashboard_dashboard_browser_nag', 'dashboard_browser_nag_class' );
    3233
    33                 if ( $response['insecure'] ) {
     34                if ( $check_browser['insecure'] ) {
    3435                        wp_add_dashboard_widget( 'dashboard_browser_nag', __( 'You are using an insecure browser!' ), 'wp_dashboard_browser_nag' );
    3536                } else {
    3637                        wp_add_dashboard_widget( 'dashboard_browser_nag', __( 'Your browser is out of date!' ), 'wp_dashboard_browser_nag' );
     
    3839        }
    3940
    4041        // PHP Version.
    41         $response = wp_check_php_version();
     42        $check_php = wp_check_php_version();
    4243
    43         if ( $response && isset( $response['is_acceptable'] ) && ! $response['is_acceptable']
    44                 && current_user_can( 'update_php' )
    45         ) {
    46                 add_filter( 'postbox_classes_dashboard_dashboard_php_nag', 'dashboard_php_nag_class' );
     44        if ( $check_php && current_user_can( 'update_php' ) ) {
     45                // If "not acceptable" the widget will be shown.
     46                if ( isset( $check_php['is_acceptable'] ) && ! $check_php['is_acceptable'] ) {
     47                        add_filter( 'postbox_classes_dashboard_dashboard_php_nag', 'dashboard_php_nag_class' );
    4748
    48                 wp_add_dashboard_widget( 'dashboard_php_nag', __( 'PHP Update Recommended' ), 'wp_dashboard_php_nag' );
     49                        if ( $check_php['is_lower_than_future_minimum'] ) {
     50                                wp_add_dashboard_widget( 'dashboard_php_nag', __( 'PHP Update Required' ), 'wp_dashboard_php_nag' );
     51                        } else {
     52                                wp_add_dashboard_widget( 'dashboard_php_nag', __( 'PHP Update Recommended' ), 'wp_dashboard_php_nag' );
     53                        }
     54                }
    4955        }
    5056
    5157        // Site Health.
     
    18251831        }
    18261832
    18271833        if ( isset( $response['is_secure'] ) && ! $response['is_secure'] ) {
    1828                 $msg = sprintf(
     1834                // The `is_secure` array key name doesn't actually imply this is a secure version of PHP. It only means it receives security updates.
     1835
     1836                if ( $response['is_lower_than_future_minimum'] ) {
     1837                        $message = sprintf(
     1838                                /* translators: %s: The server PHP version. */
     1839                                __( 'Your site is running on an outdated version of PHP (%s), which does not receive security updates and soon will not be supported by WordPress. Ensure that PHP is updated on your server as soon as possible. Otherwise you will not be able to upgrade WordPress.' ),
     1840                                PHP_VERSION
     1841                        );
     1842                } else {
     1843                        $message = sprintf(
     1844                                /* translators: %s: The server PHP version. */
     1845                                __( 'Your site is running on an outdated version of PHP (%s), which does not receive security updates. It should be updated.' ),
     1846                                PHP_VERSION
     1847                        );
     1848                }
     1849        } elseif ( $response['is_lower_than_future_minimum'] ) {
     1850                $message = sprintf(
    18291851                        /* translators: %s: The server PHP version. */
    1830                         __( 'Your site is running an insecure version of PHP (%s), which should be updated.' ),
     1852                        __( 'Your site is running on an outdated version of PHP (%s), which soon will not be supported by WordPress. Ensure that PHP is updated on your server as soon as possible. Otherwise you will not be able to upgrade WordPress.' ),
    18311853                        PHP_VERSION
    18321854                );
    18331855        } else {
    1834                 $msg = sprintf(
     1856                $message = sprintf(
    18351857                        /* translators: %s: The server PHP version. */
    1836                         __( 'Your site is running an outdated version of PHP (%s), which should be updated.' ),
     1858                        __( 'Your site is running on an outdated version of PHP (%s), which should be updated.' ),
    18371859                        PHP_VERSION
    18381860                );
    18391861        }
    18401862        ?>
    1841         <p><?php echo $msg; ?></p>
     1863        <p class="bigger-bolder-text"><?php echo $message; ?></p>
    18421864
    1843         <h3><?php _e( 'What is PHP and how does it affect my site?' ); ?></h3>
     1865        <p><?php _e( 'What is PHP and how does it affect my site?' ); ?></p>
    18441866        <p>
     1867                <?php _e( 'PHP is one of the programming languages used to build WordPress. Newer versions of PHP receive regular security updates and may increase your site&#8217;s performance.' ); ?>
    18451868                <?php
    1846                 printf(
    1847                         /* translators: %s: The minimum recommended PHP version. */
    1848                         __( 'PHP is the programming language used to build and maintain WordPress. Newer versions of PHP are created with increased performance in mind, so you may see a positive effect on your site&#8217;s performance. The minimum recommended version of PHP is %s.' ),
    1849                         $response ? $response['recommended_version'] : ''
    1850                 );
     1869                if ( ! empty( $response['recommended_version'] ) ) {
     1870                        printf(
     1871                                /* translators: %s: The minimum recommended PHP version. */
     1872                                __( 'The minimum recommended version of PHP is %s.' ),
     1873                                $response['recommended_version']
     1874                        );
     1875                }
    18511876                ?>
    18521877        </p>
    18531878
     
    18791904function dashboard_php_nag_class( $classes ) {
    18801905        $response = wp_check_php_version();
    18811906
    1882         if ( $response && isset( $response['is_secure'] ) && ! $response['is_secure'] ) {
    1883                 $classes[] = 'php-insecure';
     1907        if ( ! $response ) {
     1908                return $classes;
    18841909        }
    18851910
     1911        if ( isset( $response['is_secure'] ) && ! $response['is_secure'] ) {
     1912                $classes[] = 'php-no-security-updates';
     1913        } elseif ( $response['is_lower_than_future_minimum'] ) {
     1914                $classes[] = 'php-version-lower-than-future-minimum';
     1915        }
     1916
    18861917        return $classes;
    18871918}
    18881919
  • src/wp-admin/includes/misc.php

     
    15851585                 *  'recommended_version' - string - The PHP version recommended by WordPress.
    15861586                 *  'is_supported' - boolean - Whether the PHP version is actively supported.
    15871587                 *  'is_secure' - boolean - Whether the PHP version receives security updates.
    1588                  *  'is_acceptable' - boolean - Whether the PHP version is still acceptable for WordPress.
     1588                 *  'is_acceptable' - boolean - Whether the PHP version is still acceptable or warnings
     1589                 *                              should be shown and an update recommended.
    15891590                 */
    15901591                $response = json_decode( wp_remote_retrieve_body( $response ), true );
    15911592
     
    16131614                $response['is_acceptable'] = (bool) apply_filters( 'wp_is_php_version_acceptable', true, $version );
    16141615        }
    16151616
     1617        $response['is_lower_than_future_minimum'] = false;
     1618
     1619        // The minimum supported PHP version will be updated to 7.2. Check if the current version is lower.
     1620        if ( version_compare( $version, '7.2', '<' ) ) {
     1621                $response['is_lower_than_future_minimum'] = true;
     1622
     1623                // Force showing of warnings.
     1624                $response['is_acceptable'] = false;
     1625        }
     1626
    16161627        return $response;
    16171628}