From 8ae4796288fe6c169a75e3769c48aaab62504603 Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers Date: Thu, 7 Mar 2019 21:31:50 +0000 Subject: [PATCH] General: Add a way to specify a direct link for a user to update PHP. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A direct URL to where a user can update PHP for their website can now be specified in one of two ways: - Defining the `WP_DIRECT_UPDATE_PHP_URL` environment variable. - Returning a URL to the `wp_direct_php_update_url` filter. When a URL is specified, an additional “Update PHP” button will be displayed at the bottom of the Core dashboard widget informing administrators that their site is running an outdated version of PHP (see [42832]). Fixes #46074. Props afragen, desrosj, lukecarbis. git-svn-id: https://develop.svn.wordpress.org/trunk@44814 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/dashboard.php | 1 + src/wp-includes/functions.php | 55 +++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/src/wp-admin/includes/dashboard.php b/src/wp-admin/includes/dashboard.php index e3e8cca9a7..cf13fcfc24 100644 --- a/src/wp-admin/includes/dashboard.php +++ b/src/wp-admin/includes/dashboard.php @@ -1647,6 +1647,7 @@ function wp_dashboard_php_nag() { '; } + +/** + * Gets the URL for directly updating the PHP version the site is running on. + * + * A URL will only be returned if the `WP_DIRECT_UPDATE_PHP_URL` environment variable is specified or + * by using the {@see 'wp_direct_php_update_url'} filter. This allows hosts to send users directly to + * the page where they can update PHP to a newer version. + * + * @return string URL for directly updating PHP or empty string. + */ +function wp_get_direct_php_update_url() { + $direct_update_url = ''; + + if ( false !== getenv( 'WP_DIRECT_UPDATE_PHP_URL' ) ) { + $direct_update_url = getenv( 'WP_DIRECT_UPDATE_PHP_URL' ); + } + + /** + * Filters the URL for directly updating the PHP version the site is running on from the host. + * + * @since 5.1.1 + * + * @param string $direct_update_url URL for directly updating PHP. + */ + $direct_update_url = apply_filters( 'wp_direct_php_update_url', $direct_update_url ); + + return $direct_update_url; +} + +/** + * Display a button directly linking to a PHP update process. + * + * This provides hosts with a way for users to be sent directly to their PHP update process. + * + * The button is only displayed if a URL is returned by `wp_get_direct_php_update_url()`. + * + * @since 5.1.1 + */ +function wp_direct_php_update_button() { + $direct_update_url = wp_get_direct_php_update_url(); + + if ( empty( $direct_update_url ) ) { + return; + } + + echo '

'; + printf( + '%2$s %3$s', + esc_url( $direct_update_url ), + __( 'Update PHP' ), + /* translators: accessibility text */ + __( '(opens in a new tab)' ) + ); + echo '

'; +}