From db175a9868b404210bb7ec5bd3a579ee08ede1fd Mon Sep 17 00:00:00 2001 From: Sergey Biryukov <sergeybiryukov.ru@gmail.com> Date: Tue, 28 Jul 2020 01:02:04 +0000 Subject: [PATCH] Themes: Display a message in theme updates list if an update requires a higher version of PHP or WordPress. This applies to the WordPress Updates screen. Props afragen, SergeyBiryukov. Fixes #48491. Built from https://develop.svn.wordpress.org/trunk@48654 git-svn-id: http://core.svn.wordpress.org/trunk@48416 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/update-core.php | 110 ++++++++++++++++++++++++++++++++------- wp-includes/version.php | 2 +- 2 files changed, 93 insertions(+), 19 deletions(-) diff --git a/wp-admin/update-core.php b/wp-admin/update-core.php index dc4b9b40a2..a876d0e384 100644 --- a/wp-admin/update-core.php +++ b/wp-admin/update-core.php @@ -409,15 +409,15 @@ function list_plugin_updates() { ?> <tr> <td class="check-column"> - <?php if ( $compatible_php ) : ?> - <input type="checkbox" name="checked[]" id="<?php echo $checkbox_id; ?>" value="<?php echo esc_attr( $plugin_file ); ?>" /> - <label for="<?php echo $checkbox_id; ?>" class="screen-reader-text"> - <?php - /* translators: %s: Plugin name. */ - printf( __( 'Select %s' ), $plugin_data->Name ); - ?> - </label> - <?php endif; ?> + <?php if ( $compatible_php ) : ?> + <input type="checkbox" name="checked[]" id="<?php echo $checkbox_id; ?>" value="<?php echo esc_attr( $plugin_file ); ?>" /> + <label for="<?php echo $checkbox_id; ?>" class="screen-reader-text"> + <?php + /* translators: %s: Plugin name. */ + printf( __( 'Select %s' ), $plugin_data->Name ); + ?> + </label> + <?php endif; ?> </td> <td class="plugin-title"><p> <?php echo $icon; ?> @@ -429,14 +429,16 @@ function list_plugin_updates() { $plugin_data->Version, $plugin_data->update->new_version ); + echo ' ' . $details . $compat . $upgrade_notice; + if ( in_array( $plugin_file, $auto_updates, true ) ) { echo $auto_update_notice; } ?> </p></td> </tr> - <?php + <?php } ?> </tbody> @@ -499,18 +501,87 @@ function list_theme_updates() { } foreach ( $themes as $stylesheet => $theme ) { - $checkbox_id = 'checkbox_' . md5( $theme->get( 'Name' ) ); + $requires_wp = isset( $theme->update['requires'] ) ? $theme->update['requires'] : null; + $requires_php = isset( $theme->update['requires_php'] ) ? $theme->update['requires_php'] : null; + $compatible_wp = is_wp_version_compatible( $requires_wp ); + $compatible_php = is_php_version_compatible( $requires_php ); + + $compat = ''; + + if ( ! $compatible_wp && ! $compatible_php ) { + $compat .= '<br>' . __( 'This update doesn’t work with your versions of WordPress and PHP.' ) . ' '; + if ( current_user_can( 'update_core' ) && current_user_can( 'update_php' ) ) { + $compat .= sprintf( + /* translators: 1: URL to WordPress Updates screen, 2: URL to Update PHP page. */ + __( '<a href="%1$s">Please update WordPress</a>, and then <a href="%2$s">learn more about updating PHP</a>.' ), + self_admin_url( 'update-core.php' ), + esc_url( wp_get_update_php_url() ) + ); + + $annotation = wp_get_update_php_annotation(); + + if ( $annotation ) { + $compat .= '</p><p><em>' . $annotation . '</em>'; + } + } elseif ( current_user_can( 'update_core' ) ) { + $compat .= sprintf( + /* translators: %s: URL to WordPress Updates screen. */ + __( '<a href="%s">Please update WordPress</a>.' ), + self_admin_url( 'update-core.php' ) + ); + } elseif ( current_user_can( 'update_php' ) ) { + $compat .= sprintf( + /* translators: %s: URL to Update PHP page. */ + __( '<a href="%s">Learn more about updating PHP</a>.' ), + esc_url( wp_get_update_php_url() ) + ); + + $annotation = wp_get_update_php_annotation(); + + if ( $annotation ) { + $compat .= '</p><p><em>' . $annotation . '</em>'; + } + } + } elseif ( ! $compatible_wp ) { + $compat .= '<br>' . __( 'This update doesn’t work with your version of WordPress.' ) . ' '; + if ( current_user_can( 'update_core' ) ) { + $compat .= sprintf( + /* translators: %s: URL to WordPress Updates screen. */ + __( '<a href="%s">Please update WordPress</a>.' ), + self_admin_url( 'update-core.php' ) + ); + } + } elseif ( ! $compatible_php ) { + $compat .= '<br>' . __( 'This update doesn’t work with your version of PHP.' ) . ' '; + if ( current_user_can( 'update_php' ) ) { + $compat .= sprintf( + /* translators: %s: URL to Update PHP page. */ + __( '<a href="%s">Learn more about updating PHP</a>.' ), + esc_url( wp_get_update_php_url() ) + ); + + $annotation = wp_get_update_php_annotation(); + + if ( $annotation ) { + $compat .= '</p><p><em>' . $annotation . '</em>'; + } + } + } + + $checkbox_id = 'checkbox_' . md5( $theme->get( 'Name' ) ); ?> <tr> <td class="check-column"> - <input type="checkbox" name="checked[]" id="<?php echo $checkbox_id; ?>" value="<?php echo esc_attr( $stylesheet ); ?>" /> - <label for="<?php echo $checkbox_id; ?>" class="screen-reader-text"> - <?php - /* translators: %s: Theme name. */ - printf( __( 'Select %s' ), $theme->display( 'Name' ) ); - ?> - </label> + <?php if ( $compatible_wp && $compatible_php ) : ?> + <input type="checkbox" name="checked[]" id="<?php echo $checkbox_id; ?>" value="<?php echo esc_attr( $stylesheet ); ?>" /> + <label for="<?php echo $checkbox_id; ?>" class="screen-reader-text"> + <?php + /* translators: %s: Theme name. */ + printf( __( 'Select %s' ), $theme->display( 'Name' ) ); + ?> + </label> + <?php endif; ?> </td> <td class="plugin-title"><p> <img src="<?php echo esc_url( $theme->get_screenshot() ); ?>" width="85" height="64" class="updates-table-screenshot" alt="" /> @@ -522,6 +593,9 @@ function list_theme_updates() { $theme->display( 'Version' ), $theme->update['new_version'] ); + + echo ' ' . $compat; + if ( in_array( $stylesheet, $auto_updates, true ) ) { echo $auto_update_notice; } diff --git a/wp-includes/version.php b/wp-includes/version.php index b9c4bcb034..f0f858a45d 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -13,7 +13,7 @@ * * @global string $wp_version */ -$wp_version = '5.5-beta4-48653'; +$wp_version = '5.5-beta4-48654'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.