X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/4feeb71a9d812a9ae371c28a3d8b442a4394ded7..607b7e02d77e7326161e8ec15639052d2040f745:/wp-admin/includes/update.php diff --git a/wp-admin/includes/update.php b/wp-admin/includes/update.php index e412073e..74899e37 100644 --- a/wp-admin/includes/update.php +++ b/wp-admin/includes/update.php @@ -230,10 +230,30 @@ function update_nag() { if ( ! isset( $cur->response ) || $cur->response != 'upgrade' ) return false; - if ( current_user_can('update_core') ) { - $msg = sprintf( __( 'WordPress %1$s is available! Please update now.' ), $cur->current, network_admin_url( 'update-core.php' ) ); + if ( current_user_can( 'update_core' ) ) { + $msg = sprintf( + /* translators: 1: Codex URL to release notes, 2: new WordPress version, 3: URL to network admin, 4: accessibility text */ + __( 'WordPress %2$s is available! Please update now.' ), + sprintf( + /* translators: %s: WordPress version */ + esc_url( __( 'https://codex.wordpress.org/Version_%s' ) ), + $cur->current + ), + $cur->current, + network_admin_url( 'update-core.php' ), + esc_attr__( 'Please update WordPress now' ) + ); } else { - $msg = sprintf( __('WordPress %1$s is available! Please notify the site administrator.'), $cur->current ); + $msg = sprintf( + /* translators: 1: Codex URL to release notes, 2: new WordPress version */ + __( 'WordPress %2$s is available! Please notify the site administrator.' ), + sprintf( + /* translators: %s: WordPress version */ + esc_url( __( 'https://codex.wordpress.org/Version_%s' ) ), + $cur->current + ), + $cur->current + ); } echo "
$msg
"; } @@ -258,7 +278,7 @@ function update_right_now_message() { $content = __( 'WordPress %1$s running %2$s theme.' ); /** - * Filter the text displayed in the 'At a Glance' dashboard widget. + * Filters the text displayed in the 'At a Glance' dashboard widget. * * Prior to 3.8.0, the widget was named 'Right Now'. * @@ -309,65 +329,84 @@ function wp_plugin_update_rows() { } /** + * Displays update information for a plugin. * - * @param string $file - * @param array $plugin_data + * @param string $file Plugin basename. + * @param array $plugin_data Plugin information. * @return false|void */ function wp_plugin_update_row( $file, $plugin_data ) { $current = get_site_transient( 'update_plugins' ); - if ( !isset( $current->response[ $file ] ) ) + if ( ! isset( $current->response[ $file ] ) ) { return false; + } - $r = $current->response[ $file ]; + $response = $current->response[ $file ]; - $plugins_allowedtags = array('a' => array('href' => array(),'title' => array()),'abbr' => array('title' => array()),'acronym' => array('title' => array()),'code' => array(),'em' => array(),'strong' => array()); - $plugin_name = wp_kses( $plugin_data['Name'], $plugins_allowedtags ); + $plugins_allowedtags = array( + 'a' => array( 'href' => array(), 'title' => array() ), + 'abbr' => array( 'title' => array() ), + 'acronym' => array( 'title' => array() ), + 'code' => array(), + 'em' => array(), + 'strong' => array(), + ); - $details_url = self_admin_url('plugin-install.php?tab=plugin-information&plugin=' . $r->slug . '§ion=changelog&TB_iframe=true&width=600&height=800'); + $plugin_name = wp_kses( $plugin_data['Name'], $plugins_allowedtags ); + $details_url = self_admin_url( 'plugin-install.php?tab=plugin-information&plugin=' . $response->slug . '§ion=changelog&TB_iframe=true&width=600&height=800' ); - $wp_list_table = _get_list_table('WP_Plugins_List_Table'); + /** @var WP_Plugins_List_Table $wp_list_table */ + $wp_list_table = _get_list_table( 'WP_Plugins_List_Table' ); - if ( is_network_admin() || !is_multisite() ) { + if ( is_network_admin() || ! is_multisite() ) { if ( is_network_admin() ) { - $active_class = is_plugin_active_for_network( $file ) ? ' active': ''; + $active_class = is_plugin_active_for_network( $file ) ? ' active' : ''; } else { $active_class = is_plugin_active( $file ) ? ' active' : ''; } - echo '
'; + echo '

'; if ( ! current_user_can( 'update_plugins' ) ) { - /* translators: 1: plugin name, 2: details URL, 3: accessibility text, 4: version number */ - printf( __( 'There is a new version of %1$s available. View version %4$s details.' ), + /* translators: 1: plugin name, 2: details URL, 3: additional link attributes, 4: version number */ + printf( __( 'There is a new version of %1$s available. View version %4$s details.' ), $plugin_name, esc_url( $details_url ), - /* translators: 1: plugin name, 2: version number */ - esc_attr( sprintf( __( 'View %1$s version %2$s details' ), $plugin_name, $r->new_version ) ), - $r->new_version + sprintf( 'class="thickbox open-plugin-details-modal" aria-label="%s"', + /* translators: 1: plugin name, 2: version number */ + esc_attr( sprintf( __( 'View %1$s version %2$s details' ), $plugin_name, $response->new_version ) ) + ), + $response->new_version ); - } elseif ( empty( $r->package ) ) { - /* translators: 1: plugin name, 2: details URL, 3: accessibility text, 4: version number */ - printf( __( 'There is a new version of %1$s available. View version %4$s details. Automatic update is unavailable for this plugin.' ), + } elseif ( empty( $response->package ) ) { + /* translators: 1: plugin name, 2: details URL, 3: additional link attributes, 4: version number */ + printf( __( 'There is a new version of %1$s available. View version %4$s details. Automatic update is unavailable for this plugin.' ), $plugin_name, esc_url( $details_url ), - /* translators: 1: plugin name, 2: version number */ - esc_attr( sprintf( __( 'View %1$s version %2$s details' ), $plugin_name, $r->new_version ) ), - $r->new_version + sprintf( 'class="thickbox open-plugin-details-modal" aria-label="%s"', + /* translators: 1: plugin name, 2: version number */ + esc_attr( sprintf( __( 'View %1$s version %2$s details' ), $plugin_name, $response->new_version ) ) + ), + $response->new_version ); } else { - /* translators: 1: plugin name, 2: details URL, 3: accessibility text, 4: version number, 5: update URL, 6: accessibility text */ - printf( __( 'There is a new version of %1$s available. View version %4$s details or update now.' ), + /* translators: 1: plugin name, 2: details URL, 3: additional link attributes, 4: version number, 5: update URL, 6: additional link attributes */ + printf( __( 'There is a new version of %1$s available. View version %4$s details or update now.' ), $plugin_name, esc_url( $details_url ), - /* translators: 1: plugin name, 2: version number */ - esc_attr( sprintf( __( 'View %1$s version %2$s details' ), $plugin_name, $r->new_version ) ), - $r->new_version, + sprintf( 'class="thickbox open-plugin-details-modal" aria-label="%s"', + /* translators: 1: plugin name, 2: version number */ + esc_attr( sprintf( __( 'View %1$s version %2$s details' ), $plugin_name, $response->new_version ) ) + ), + $response->new_version, wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' ) . $file, 'upgrade-plugin_' . $file ), - /* translators: %s: plugin name */ - esc_attr( sprintf( __( 'Update %s now' ), $plugin_name ) ) + sprintf( 'class="update-link" aria-label="%s"', + /* translators: %s: plugin name */ + esc_attr( sprintf( __( 'Update %s now' ), $plugin_name ) ) + ) ); } + /** * Fires at the end of the update message container in each * row of the plugins list table. @@ -380,32 +419,32 @@ function wp_plugin_update_row( $file, $plugin_data ) { * @param array $plugin_data { * An array of plugin metadata. * - * @type string $name The human-readable name of the plugin. - * @type string $plugin_uri Plugin URI. - * @type string $version Plugin version. - * @type string $description Plugin description. - * @type string $author Plugin author. - * @type string $author_uri Plugin author URI. - * @type string $text_domain Plugin text domain. - * @type string $domain_path Relative path to the plugin's .mo file(s). - * @type bool $network Whether the plugin can only be activated network wide. - * @type string $title The human-readable title of the plugin. - * @type string $author_name Plugin author's name. - * @type bool $update Whether there's an available update. Default null. - * } - * @param array $r { - * An array of metadata about the available plugin update. - * - * @type int $id Plugin ID. - * @type string $slug Plugin slug. - * @type string $new_version New plugin version. - * @type string $url Plugin URL. - * @type string $package Plugin update package URL. - * } + * @type string $name The human-readable name of the plugin. + * @type string $plugin_uri Plugin URI. + * @type string $version Plugin version. + * @type string $description Plugin description. + * @type string $author Plugin author. + * @type string $author_uri Plugin author URI. + * @type string $text_domain Plugin text domain. + * @type string $domain_path Relative path to the plugin's .mo file(s). + * @type bool $network Whether the plugin can only be activated network wide. + * @type string $title The human-readable title of the plugin. + * @type string $author_name Plugin author's name. + * @type bool $update Whether there's an available update. Default null. + * } + * @param array $response { + * An array of metadata about the available plugin update. + * + * @type int $id Plugin ID. + * @type string $slug Plugin slug. + * @type string $new_version New plugin version. + * @type string $url Plugin URL. + * @type string $package Plugin update package URL. + * } */ - do_action( "in_plugin_update_message-{$file}", $plugin_data, $r ); + do_action( "in_plugin_update_message-{$file}", $plugin_data, $response ); - echo '

'; + echo '

'; } } @@ -446,58 +485,73 @@ function wp_theme_update_rows() { } /** + * Displays update information for a theme. * - * @param string $theme_key - * @param WP_Theme $theme + * @param string $theme_key Theme stylesheet. + * @param WP_Theme $theme Theme object. * @return false|void */ function wp_theme_update_row( $theme_key, $theme ) { $current = get_site_transient( 'update_themes' ); - if ( !isset( $current->response[ $theme_key ] ) ) - return false; - $r = $current->response[ $theme_key ]; + if ( ! isset( $current->response[ $theme_key ] ) ) { + return false; + } - $theme_name = $theme['Name']; + $response = $current->response[ $theme_key ]; - $details_url = add_query_arg( array( 'TB_iframe' => 'true', 'width' => 1024, 'height' => 800 ), $current->response[ $theme_key ]['url'] ); + $details_url = add_query_arg( array( + 'TB_iframe' => 'true', + 'width' => 1024, + 'height' => 800, + ), $current->response[ $theme_key ]['url'] ); - $wp_list_table = _get_list_table('WP_MS_Themes_List_Table'); + /** @var WP_MS_Themes_List_Table $wp_list_table */ + $wp_list_table = _get_list_table( 'WP_MS_Themes_List_Table' ); - $active = $theme->is_allowed( 'network' ) ? ' active': ''; + $active = $theme->is_allowed( 'network' ) ? ' active' : ''; - echo '
'; - if ( ! current_user_can('update_themes') ) { - /* translators: 1: theme name, 2: details URL, 3: accessibility text, 4: version number */ - printf( __( 'There is a new version of %1$s available. View version %4$s details.'), - $theme_name, + echo '

'; + if ( ! current_user_can( 'update_themes' ) ) { + /* translators: 1: theme name, 2: details URL, 3: additional link attributes, 4: version number */ + printf( __( 'There is a new version of %1$s available. View version %4$s details.'), + $theme['Name'], esc_url( $details_url ), - /* translators: 1: theme name, 2: version number */ - esc_attr( sprintf( __( 'View %1$s version %2$s details' ), $theme_name, $r['new_version'] ) ), - $r['new_version'] + sprintf( 'class="thickbox open-plugin-details-modal" aria-label="%s"', + /* translators: 1: theme name, 2: version number */ + esc_attr( sprintf( __( 'View %1$s version %2$s details' ), $theme['Name'], $response['new_version'] ) ) + ), + $response['new_version'] ); - } elseif ( empty( $r['package'] ) ) { - /* translators: 1: theme name, 2: details URL, 3: accessibility text, 4: version number */ - printf( __( 'There is a new version of %1$s available. View version %4$s details. Automatic update is unavailable for this theme.' ), - $theme_name, + } elseif ( empty( $response['package'] ) ) { + /* translators: 1: theme name, 2: details URL, 3: additional link attributes, 4: version number */ + printf( __( 'There is a new version of %1$s available. View version %4$s details. Automatic update is unavailable for this theme.' ), + $theme['Name'], esc_url( $details_url ), - /* translators: 1: theme name, 2: version number */ - esc_attr( sprintf( __( 'View %1$s version %2$s details' ), $theme_name, $r['new_version'] ) ), - $r['new_version'] + sprintf( 'class="thickbox open-plugin-details-modal" aria-label="%s"', + /* translators: 1: theme name, 2: version number */ + esc_attr( sprintf( __( 'View %1$s version %2$s details' ), $theme['Name'], $response['new_version'] ) ) + ), + $response['new_version'] ); } else { - /* translators: 1: theme name, 2: details URL, 3: accessibility text, 4: version number, 5: update URL, 6: accessibility text */ - printf( __( 'There is a new version of %1$s available. View version %4$s details or update now.' ), - $theme_name, + /* translators: 1: theme name, 2: details URL, 3: additional link attributes, 4: version number, 5: update URL, 6: additional link attributes */ + printf( __( 'There is a new version of %1$s available. View version %4$s details or update now.' ), + $theme['Name'], esc_url( $details_url ), - /* translators: 1: theme name, 2: version number */ - esc_attr( sprintf( __( 'View %1$s version %2$s details' ), $theme_name, $r['new_version'] ) ), - $r['new_version'], + sprintf( 'class="thickbox open-plugin-details-modal" aria-label="%s"', + /* translators: 1: theme name, 2: version number */ + esc_attr( sprintf( __( 'View %1$s version %2$s details' ), $theme['Name'], $response['new_version'] ) ) + ), + $response['new_version'], wp_nonce_url( self_admin_url( 'update.php?action=upgrade-theme&theme=' ) . $theme_key, 'upgrade-theme_' . $theme_key ), - /* translators: %s: theme name */ - esc_attr( sprintf( __( 'Update %s now' ), $theme_name ) ) + sprintf( 'class="update-link" aria-label="%s"', + /* translators: %s: theme name */ + esc_attr( sprintf( __( 'Update %s now' ), $theme['Name'] ) ) + ) ); } + /** * Fires at the end of the update message container in each * row of the themes list table. @@ -507,8 +561,8 @@ function wp_theme_update_row( $theme_key, $theme ) { * * @since 3.1.0 * - * @param WP_Theme $theme The WP_Theme object. - * @param array $r { + * @param WP_Theme $theme The WP_Theme object. + * @param array $response { * An array of metadata about the available theme update. * * @type string $new_version New theme version. @@ -516,9 +570,9 @@ function wp_theme_update_row( $theme_key, $theme ) { * @type string $package Theme update package URL. * } */ - do_action( "in_theme_update_message-{$theme_key}", $theme, $r ); + do_action( "in_theme_update_message-{$theme_key}", $theme, $response ); - echo '

'; + echo '

'; } /** @@ -557,3 +611,146 @@ function maintenance_nag() { echo "
$msg
"; } + +/** + * Prints the JavaScript templates for update admin notices. + * + * Template takes one argument with four values: + * + * param {object} data { + * Arguments for admin notice. + * + * @type string id ID of the notice. + * @type string className Class names for the notice. + * @type string message The notice's message. + * @type string type The type of update the notice is for. Either 'plugin' or 'theme'. + * } + * + * @since 4.6.0 + */ +function wp_print_admin_notice_templates() { + ?> + + + + + +