Docs: Improve comments in some wp-admin files per the documentation standards.

Props passoniate.
Fixes #49215, #49216.
Built from https://develop.svn.wordpress.org/trunk@47084


git-svn-id: http://core.svn.wordpress.org/trunk@46884 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Sergey Biryukov 2020-01-18 00:54:04 +00:00
parent 1cfc32af58
commit 053a9cd5b8
11 changed files with 168 additions and 137 deletions

View File

@ -165,7 +165,7 @@ function get_pending_comments_num( $post_id ) {
$pending_keyed = array(); $pending_keyed = array();
// Default to zero pending for all posts in request // Default to zero pending for all posts in request.
foreach ( $post_id_array as $id ) { foreach ( $post_id_array as $id ) {
$pending_keyed[ $id ] = 0; $pending_keyed[ $id ] = 0;
} }

View File

@ -56,7 +56,7 @@ function wp_dashboard_setup() {
wp_add_dashboard_widget( 'dashboard_site_health', __( 'Site Health Status' ), 'wp_dashboard_site_health' ); wp_add_dashboard_widget( 'dashboard_site_health', __( 'Site Health Status' ), 'wp_dashboard_site_health' );
} }
// Right Now // Right Now.
if ( is_blog_admin() && current_user_can( 'edit_posts' ) ) { if ( is_blog_admin() && current_user_can( 'edit_posts' ) ) {
wp_add_dashboard_widget( 'dashboard_right_now', __( 'At a Glance' ), 'wp_dashboard_right_now' ); wp_add_dashboard_widget( 'dashboard_right_now', __( 'At a Glance' ), 'wp_dashboard_right_now' );
} }
@ -65,18 +65,18 @@ function wp_dashboard_setup() {
wp_add_dashboard_widget( 'network_dashboard_right_now', __( 'Right Now' ), 'wp_network_dashboard_right_now' ); wp_add_dashboard_widget( 'network_dashboard_right_now', __( 'Right Now' ), 'wp_network_dashboard_right_now' );
} }
// Activity Widget // Activity Widget.
if ( is_blog_admin() ) { if ( is_blog_admin() ) {
wp_add_dashboard_widget( 'dashboard_activity', __( 'Activity' ), 'wp_dashboard_site_activity' ); wp_add_dashboard_widget( 'dashboard_activity', __( 'Activity' ), 'wp_dashboard_site_activity' );
} }
// QuickPress Widget // QuickPress Widget.
if ( is_blog_admin() && current_user_can( get_post_type_object( 'post' )->cap->create_posts ) ) { if ( is_blog_admin() && current_user_can( get_post_type_object( 'post' )->cap->create_posts ) ) {
$quick_draft_title = sprintf( '<span class="hide-if-no-js">%1$s</span> <span class="hide-if-js">%2$s</span>', __( 'Quick Draft' ), __( 'Your Recent Drafts' ) ); $quick_draft_title = sprintf( '<span class="hide-if-no-js">%1$s</span> <span class="hide-if-js">%2$s</span>', __( 'Quick Draft' ), __( 'Your Recent Drafts' ) );
wp_add_dashboard_widget( 'dashboard_quick_press', $quick_draft_title, 'wp_dashboard_quick_press' ); wp_add_dashboard_widget( 'dashboard_quick_press', $quick_draft_title, 'wp_dashboard_quick_press' );
} }
// WordPress Events and News // WordPress Events and News.
wp_add_dashboard_widget( 'dashboard_primary', __( 'WordPress Events and News' ), 'wp_dashboard_events_news' ); wp_add_dashboard_widget( 'dashboard_primary', __( 'WordPress Events and News' ), 'wp_dashboard_events_news' );
if ( is_network_admin() ) { if ( is_network_admin() ) {
@ -139,7 +139,7 @@ function wp_dashboard_setup() {
if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset( $_POST['widget_id'] ) ) { if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset( $_POST['widget_id'] ) ) {
check_admin_referer( 'edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce' ); check_admin_referer( 'edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce' );
ob_start(); // hack - but the same hack wp-admin/widgets.php uses ob_start(); // Hack - but the same hack wp-admin/widgets.php uses.
wp_dashboard_trigger_widget_control( $_POST['widget_id'] ); wp_dashboard_trigger_widget_control( $_POST['widget_id'] );
ob_end_clean(); ob_end_clean();
wp_redirect( remove_query_arg( 'edit' ) ); wp_redirect( remove_query_arg( 'edit' ) );
@ -278,7 +278,7 @@ function wp_dashboard_right_now() {
<div class="main"> <div class="main">
<ul> <ul>
<?php <?php
// Posts and Pages // Posts and Pages.
foreach ( array( 'post', 'page' ) as $post_type ) { foreach ( array( 'post', 'page' ) as $post_type ) {
$num_posts = wp_count_posts( $post_type ); $num_posts = wp_count_posts( $post_type );
if ( $num_posts && $num_posts->publish ) { if ( $num_posts && $num_posts->publish ) {
@ -298,7 +298,7 @@ function wp_dashboard_right_now() {
} }
} }
} }
// Comments // Comments.
$num_comm = wp_count_comments(); $num_comm = wp_count_comments();
if ( $num_comm && ( $num_comm->approved || $num_comm->moderated ) ) { if ( $num_comm && ( $num_comm->approved || $num_comm->moderated ) ) {
/* translators: %s: Number of comments. */ /* translators: %s: Number of comments. */
@ -506,21 +506,21 @@ function wp_dashboard_quick_press( $error_msg = false ) {
} }
/* Check if a new auto-draft (= no new post_ID) is needed or if the old can be used */ /* Check if a new auto-draft (= no new post_ID) is needed or if the old can be used */
$last_post_id = (int) get_user_option( 'dashboard_quick_press_last_post_id' ); // Get the last post_ID $last_post_id = (int) get_user_option( 'dashboard_quick_press_last_post_id' ); // Get the last post_ID.
if ( $last_post_id ) { if ( $last_post_id ) {
$post = get_post( $last_post_id ); $post = get_post( $last_post_id );
if ( empty( $post ) || $post->post_status != 'auto-draft' ) { // auto-draft doesn't exists anymore if ( empty( $post ) || $post->post_status != 'auto-draft' ) { // auto-draft doesn't exists anymore.
$post = get_default_post_to_edit( 'post', true ); $post = get_default_post_to_edit( 'post', true );
update_user_option( get_current_user_id(), 'dashboard_quick_press_last_post_id', (int) $post->ID ); // Save post_ID update_user_option( get_current_user_id(), 'dashboard_quick_press_last_post_id', (int) $post->ID ); // Save post_ID.
} else { } else {
$post->post_title = ''; // Remove the auto draft title $post->post_title = ''; // Remove the auto draft title.
} }
} else { } else {
$post = get_default_post_to_edit( 'post', true ); $post = get_default_post_to_edit( 'post', true );
$user_id = get_current_user_id(); $user_id = get_current_user_id();
// Don't create an option if this is a super admin who does not belong to this site. // Don't create an option if this is a super admin who does not belong to this site.
if ( in_array( get_current_blog_id(), array_keys( get_blogs_of_user( $user_id ) ) ) ) { if ( in_array( get_current_blog_id(), array_keys( get_blogs_of_user( $user_id ) ) ) ) {
update_user_option( $user_id, 'dashboard_quick_press_last_post_id', (int) $post->ID ); // Save post_ID update_user_option( $user_id, 'dashboard_quick_press_last_post_id', (int) $post->ID ); // Save post_ID.
} }
} }
@ -760,7 +760,7 @@ function _wp_dashboard_recent_comments_row( &$comment, $show_date = true ) {
++$i; ++$i;
( ( ( 'approve' == $action || 'unapprove' == $action ) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | '; ( ( ( 'approve' == $action || 'unapprove' == $action ) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | ';
// Reply and quickedit need a hide-if-no-js span // Reply and quickedit need a hide-if-no-js span.
if ( 'reply' == $action || 'quickedit' == $action ) { if ( 'reply' == $action || 'quickedit' == $action ) {
$action .= ' hide-if-no-js'; $action .= ' hide-if-no-js';
} }
@ -1108,7 +1108,8 @@ function wp_dashboard_cached_rss_widget( $widget_id, $callback, $check_urls = ar
array_unshift( $args, $widget_id, $check_urls ); array_unshift( $args, $widget_id, $check_urls );
ob_start(); ob_start();
call_user_func_array( $callback, $args ); call_user_func_array( $callback, $args );
set_transient( $cache_key, ob_get_flush(), 12 * HOUR_IN_SECONDS ); // Default lifetime in cache of 12 hours (same as the feeds) // Default lifetime in cache of 12 hours (same as the feeds).
set_transient( $cache_key, ob_get_flush(), 12 * HOUR_IN_SECONDS );
} }
return true; return true;
@ -1163,7 +1164,8 @@ function wp_dashboard_rss_control( $widget_id, $form_inputs = array() ) {
$widget_options[ $widget_id ] = array(); $widget_options[ $widget_id ] = array();
} }
$number = 1; // Hack to use wp_widget_rss_form() $number = 1; // Hack to use wp_widget_rss_form().
$widget_options[ $widget_id ]['number'] = $number; $widget_options[ $widget_id ]['number'] = $number;
if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset( $_POST['widget-rss'][ $number ] ) ) { if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset( $_POST['widget-rss'][ $number ] ) ) {
@ -1662,7 +1664,7 @@ function wp_check_browser_version() {
$response = get_site_transient( 'browser_' . $key ); $response = get_site_transient( 'browser_' . $key );
if ( false === $response ) { if ( false === $response ) {
// include an unmodified $wp_version // Include an unmodified $wp_version.
include( ABSPATH . WPINC . '/version.php' ); include( ABSPATH . WPINC . '/version.php' );
$url = 'http://api.wordpress.org/core/browse-happy/1.1/'; $url = 'http://api.wordpress.org/core/browse-happy/1.1/';

View File

@ -233,7 +233,7 @@ function get_author_user_ids() {
if ( !is_multisite() ) if ( !is_multisite() )
$level_key = $wpdb->get_blog_prefix() . 'user_level'; $level_key = $wpdb->get_blog_prefix() . 'user_level';
else else
$level_key = $wpdb->get_blog_prefix() . 'capabilities'; // wpmu site admins don't have user_levels $level_key = $wpdb->get_blog_prefix() . 'capabilities'; // WPMU site admins don't have user_levels.
return $wpdb->get_col( $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s AND meta_value != '0'", $level_key) ); return $wpdb->get_col( $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s AND meta_value != '0'", $level_key) );
} }
@ -295,7 +295,7 @@ function get_editable_user_ids( $user_id, $exclude_zeros = true, $post_type = 'p
if ( !is_multisite() ) if ( !is_multisite() )
$level_key = $wpdb->get_blog_prefix() . 'user_level'; $level_key = $wpdb->get_blog_prefix() . 'user_level';
else else
$level_key = $wpdb->get_blog_prefix() . 'capabilities'; // wpmu site admins don't have user_levels $level_key = $wpdb->get_blog_prefix() . 'capabilities'; // WPMU site admins don't have user_levels.
$query = $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s", $level_key); $query = $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s", $level_key);
if ( $exclude_zeros ) if ( $exclude_zeros )
@ -319,7 +319,7 @@ function get_nonauthor_user_ids() {
if ( !is_multisite() ) if ( !is_multisite() )
$level_key = $wpdb->get_blog_prefix() . 'user_level'; $level_key = $wpdb->get_blog_prefix() . 'user_level';
else else
$level_key = $wpdb->get_blog_prefix() . 'capabilities'; // wpmu site admins don't have user_levels $level_key = $wpdb->get_blog_prefix() . 'capabilities'; // WPMU site admins don't have user_levels.
return $wpdb->get_col( $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s AND meta_value = '0'", $level_key) ); return $wpdb->get_col( $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s AND meta_value = '0'", $level_key) );
} }
@ -544,7 +544,7 @@ class WP_User_Search {
$this->query_from .= " INNER JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id"; $this->query_from .= " INNER JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id";
$this->query_where .= $wpdb->prepare(" AND $wpdb->usermeta.meta_key = '{$wpdb->prefix}capabilities' AND $wpdb->usermeta.meta_value LIKE %s", '%' . $this->role . '%'); $this->query_where .= $wpdb->prepare(" AND $wpdb->usermeta.meta_key = '{$wpdb->prefix}capabilities' AND $wpdb->usermeta.meta_value LIKE %s", '%' . $this->role . '%');
} elseif ( is_multisite() ) { } elseif ( is_multisite() ) {
$level_key = $wpdb->prefix . 'capabilities'; // wpmu site admins don't have user_levels $level_key = $wpdb->prefix . 'capabilities'; // WPMU site admins don't have user_levels.
$this->query_from .= ", $wpdb->usermeta"; $this->query_from .= ", $wpdb->usermeta";
$this->query_where .= " AND $wpdb->users.ID = $wpdb->usermeta.user_id AND meta_key = '{$level_key}'"; $this->query_where .= " AND $wpdb->users.ID = $wpdb->usermeta.user_id AND meta_key = '{$level_key}'";
} }
@ -564,7 +564,7 @@ class WP_User_Search {
$this->results = $wpdb->get_col("SELECT DISTINCT($wpdb->users.ID)" . $this->query_from . $this->query_where . $this->query_orderby . $this->query_limit); $this->results = $wpdb->get_col("SELECT DISTINCT($wpdb->users.ID)" . $this->query_from . $this->query_where . $this->query_orderby . $this->query_limit);
if ( $this->results ) if ( $this->results )
$this->total_users_for_query = $wpdb->get_var("SELECT COUNT(DISTINCT($wpdb->users.ID))" . $this->query_from . $this->query_where); // no limit $this->total_users_for_query = $wpdb->get_var("SELECT COUNT(DISTINCT($wpdb->users.ID))" . $this->query_from . $this->query_where); // No limit.
else else
$this->search_errors = new WP_Error('no_matching_users_found', __('No users found.')); $this->search_errors = new WP_Error('no_matching_users_found', __('No users found.'));
} }
@ -584,7 +584,7 @@ class WP_User_Search {
* @access public * @access public
*/ */
public function do_paging() { public function do_paging() {
if ( $this->total_users_for_query > $this->users_per_page ) { // have to page the results if ( $this->total_users_for_query > $this->users_per_page ) { // Have to page the results.
$args = array(); $args = array();
if ( ! empty($this->search_term) ) if ( ! empty($this->search_term) )
$args['usersearch'] = urlencode($this->search_term); $args['usersearch'] = urlencode($this->search_term);
@ -1319,7 +1319,7 @@ function wp_dashboard_secondary_control() {}
function wp_dashboard_plugins_output( $rss, $args = array() ) { function wp_dashboard_plugins_output( $rss, $args = array() ) {
_deprecated_function( __FUNCTION__, '4.8.0' ); _deprecated_function( __FUNCTION__, '4.8.0' );
// Plugin feeds plus link to install them // Plugin feeds plus link to install them.
$popular = fetch_feed( $args['url']['popular'] ); $popular = fetch_feed( $args['url']['popular'] );
if ( false === $plugin_slugs = get_transient( 'plugin_slugs' ) ) { if ( false === $plugin_slugs = get_transient( 'plugin_slugs' ) ) {
@ -1335,9 +1335,9 @@ function wp_dashboard_plugins_output( $rss, $args = array() ) {
$items = $feed->get_items(0, 5); $items = $feed->get_items(0, 5);
// Pick a random, non-installed plugin // Pick a random, non-installed plugin.
while ( true ) { while ( true ) {
// Abort this foreach loop iteration if there's no plugins left of this type // Abort this foreach loop iteration if there's no plugins left of this type.
if ( 0 == count($items) ) if ( 0 == count($items) )
continue 2; continue 2;
@ -1367,7 +1367,7 @@ function wp_dashboard_plugins_output( $rss, $args = array() ) {
break; break;
} }
// Eliminate some common badly formed plugin descriptions // Eliminate some common badly formed plugin descriptions.
while ( ( null !== $item_key = array_rand($items) ) && false !== strpos( $items[$item_key]->get_description(), 'Plugin Name:' ) ) while ( ( null !== $item_key = array_rand($items) ) && false !== strpos( $items[$item_key]->get_description(), 'Plugin Name:' ) )
unset($items[$item_key]); unset($items[$item_key]);

View File

@ -21,7 +21,7 @@ $wp_file_descriptions = array(
'searchform.php' => __( 'Search Form' ), 'searchform.php' => __( 'Search Form' ),
'404.php' => __( '404 Template' ), '404.php' => __( '404 Template' ),
'link.php' => __( 'Links Template' ), 'link.php' => __( 'Links Template' ),
// Archives // Archives.
'index.php' => __( 'Main Index Template' ), 'index.php' => __( 'Main Index Template' ),
'archive.php' => __( 'Archives' ), 'archive.php' => __( 'Archives' ),
'author.php' => __( 'Author Template' ), 'author.php' => __( 'Author Template' ),
@ -31,33 +31,33 @@ $wp_file_descriptions = array(
'home.php' => __( 'Posts Page' ), 'home.php' => __( 'Posts Page' ),
'search.php' => __( 'Search Results' ), 'search.php' => __( 'Search Results' ),
'date.php' => __( 'Date Template' ), 'date.php' => __( 'Date Template' ),
// Content // Content.
'singular.php' => __( 'Singular Template' ), 'singular.php' => __( 'Singular Template' ),
'single.php' => __( 'Single Post' ), 'single.php' => __( 'Single Post' ),
'page.php' => __( 'Single Page' ), 'page.php' => __( 'Single Page' ),
'front-page.php' => __( 'Homepage' ), 'front-page.php' => __( 'Homepage' ),
'privacy-policy.php' => __( 'Privacy Policy Page' ), 'privacy-policy.php' => __( 'Privacy Policy Page' ),
// Attachments // Attachments.
'attachment.php' => __( 'Attachment Template' ), 'attachment.php' => __( 'Attachment Template' ),
'image.php' => __( 'Image Attachment Template' ), 'image.php' => __( 'Image Attachment Template' ),
'video.php' => __( 'Video Attachment Template' ), 'video.php' => __( 'Video Attachment Template' ),
'audio.php' => __( 'Audio Attachment Template' ), 'audio.php' => __( 'Audio Attachment Template' ),
'application.php' => __( 'Application Attachment Template' ), 'application.php' => __( 'Application Attachment Template' ),
// Embeds // Embeds.
'embed.php' => __( 'Embed Template' ), 'embed.php' => __( 'Embed Template' ),
'embed-404.php' => __( 'Embed 404 Template' ), 'embed-404.php' => __( 'Embed 404 Template' ),
'embed-content.php' => __( 'Embed Content Template' ), 'embed-content.php' => __( 'Embed Content Template' ),
'header-embed.php' => __( 'Embed Header Template' ), 'header-embed.php' => __( 'Embed Header Template' ),
'footer-embed.php' => __( 'Embed Footer Template' ), 'footer-embed.php' => __( 'Embed Footer Template' ),
// Stylesheets // Stylesheets.
'style.css' => __( 'Stylesheet' ), 'style.css' => __( 'Stylesheet' ),
'editor-style.css' => __( 'Visual Editor Stylesheet' ), 'editor-style.css' => __( 'Visual Editor Stylesheet' ),
'editor-style-rtl.css' => __( 'Visual Editor RTL Stylesheet' ), 'editor-style-rtl.css' => __( 'Visual Editor RTL Stylesheet' ),
'rtl.css' => __( 'RTL Stylesheet' ), 'rtl.css' => __( 'RTL Stylesheet' ),
// Other // Other.
'my-hacks.php' => __( 'my-hacks.php (legacy hacks support)' ), 'my-hacks.php' => __( 'my-hacks.php (legacy hacks support)' ),
'.htaccess' => __( '.htaccess (for rewrite rules )' ), '.htaccess' => __( '.htaccess (for rewrite rules )' ),
// Deprecated files // Deprecated files.
'wp-layout.css' => __( 'Stylesheet' ), 'wp-layout.css' => __( 'Stylesheet' ),
'wp-comments.php' => __( 'Comments Template' ), 'wp-comments.php' => __( 'Comments Template' ),
'wp-comments-popup.php' => __( 'Popup Comments Template' ), 'wp-comments-popup.php' => __( 'Popup Comments Template' ),
@ -455,7 +455,7 @@ function wp_edit_theme_plugin_file( $args ) {
} }
} }
// Compare based on relative paths // Compare based on relative paths.
if ( 0 !== validate_file( $file, array_keys( $allowed_files ) ) ) { if ( 0 !== validate_file( $file, array_keys( $allowed_files ) ) ) {
return new WP_Error( 'disallowed_theme_file', __( 'Sorry, that file cannot be edited.' ) ); return new WP_Error( 'disallowed_theme_file', __( 'Sorry, that file cannot be edited.' ) );
} }
@ -507,7 +507,8 @@ function wp_edit_theme_plugin_file( $args ) {
$scrape_key = md5( rand() ); $scrape_key = md5( rand() );
$transient = 'scrape_key_' . $scrape_key; $transient = 'scrape_key_' . $scrape_key;
$scrape_nonce = strval( rand() ); $scrape_nonce = strval( rand() );
set_transient( $transient, $scrape_nonce, 60 ); // It shouldn't take more than 60 seconds to make the two loopback requests. // It shouldn't take more than 60 seconds to make the two loopback requests.
set_transient( $transient, $scrape_nonce, 60 );
$cookies = wp_unslash( $_COOKIE ); $cookies = wp_unslash( $_COOKIE );
$scrape_params = array( $scrape_params = array(
@ -644,7 +645,7 @@ function wp_tempnam( $filename = '', $dir = '' ) {
$filename = uniqid(); $filename = uniqid();
} }
// Use the basename of the given file without the extension as the name for the temporary directory // Use the basename of the given file without the extension as the name for the temporary directory.
$temp_filename = basename( $filename ); $temp_filename = basename( $filename );
$temp_filename = preg_replace( '|\.[^.]*$|', '', $temp_filename ); $temp_filename = preg_replace( '|\.[^.]*$|', '', $temp_filename );
@ -653,7 +654,7 @@ function wp_tempnam( $filename = '', $dir = '' ) {
return wp_tempnam( dirname( $filename ), $dir ); return wp_tempnam( dirname( $filename ), $dir );
} }
// Suffix some random data to avoid filename conflicts // Suffix some random data to avoid filename conflicts.
$temp_filename .= '-' . wp_generate_password( 6, false ); $temp_filename .= '-' . wp_generate_password( 6, false );
$temp_filename .= '.tmp'; $temp_filename .= '.tmp';
$temp_filename = $dir . wp_unique_filename( $dir, $temp_filename ); $temp_filename = $dir . wp_unique_filename( $dir, $temp_filename );
@ -735,7 +736,7 @@ function _wp_handle_upload( &$file, $overrides, $time, $action ) {
*/ */
$file = apply_filters( "{$action}_prefilter", $file ); $file = apply_filters( "{$action}_prefilter", $file );
// You may define your own function and pass the name in $overrides['upload_error_handler'] // You may define your own function and pass the name in $overrides['upload_error_handler'].
$upload_error_handler = 'wp_handle_upload_error'; $upload_error_handler = 'wp_handle_upload_error';
if ( isset( $overrides['upload_error_handler'] ) ) { if ( isset( $overrides['upload_error_handler'] ) ) {
$upload_error_handler = $overrides['upload_error_handler']; $upload_error_handler = $overrides['upload_error_handler'];
@ -748,7 +749,7 @@ function _wp_handle_upload( &$file, $overrides, $time, $action ) {
// Install user overrides. Did we mention that this voids your warranty? // Install user overrides. Did we mention that this voids your warranty?
// You may define your own function and pass the name in $overrides['unique_filename_callback'] // You may define your own function and pass the name in $overrides['unique_filename_callback'].
$unique_filename_callback = null; $unique_filename_callback = null;
if ( isset( $overrides['unique_filename_callback'] ) ) { if ( isset( $overrides['unique_filename_callback'] ) ) {
$unique_filename_callback = $overrides['unique_filename_callback']; $unique_filename_callback = $overrides['unique_filename_callback'];
@ -822,7 +823,7 @@ function _wp_handle_upload( &$file, $overrides, $time, $action ) {
$type = empty( $wp_filetype['type'] ) ? '' : $wp_filetype['type']; $type = empty( $wp_filetype['type'] ) ? '' : $wp_filetype['type'];
$proper_filename = empty( $wp_filetype['proper_filename'] ) ? '' : $wp_filetype['proper_filename']; $proper_filename = empty( $wp_filetype['proper_filename'] ) ? '' : $wp_filetype['proper_filename'];
// Check to see if wp_check_filetype_and_ext() determined the filename was incorrect // Check to see if wp_check_filetype_and_ext() determined the filename was incorrect.
if ( $proper_filename ) { if ( $proper_filename ) {
$file['name'] = $proper_filename; $file['name'] = $proper_filename;
} }
@ -869,7 +870,7 @@ function _wp_handle_upload( &$file, $overrides, $time, $action ) {
if ( 'wp_handle_upload' === $action ) { if ( 'wp_handle_upload' === $action ) {
$move_new_file = @move_uploaded_file( $file['tmp_name'], $new_file ); $move_new_file = @move_uploaded_file( $file['tmp_name'], $new_file );
} else { } else {
// use copy and unlink because rename breaks streams. // Use copy and unlink because rename breaks streams.
// phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
$move_new_file = @copy( $file['tmp_name'], $new_file ); $move_new_file = @copy( $file['tmp_name'], $new_file );
unlink( $file['tmp_name'] ); unlink( $file['tmp_name'] );
@ -1001,7 +1002,7 @@ function wp_handle_sideload( &$file, $overrides = false, $time = null ) {
* @return string|WP_Error Filename on success, WP_Error on failure. * @return string|WP_Error Filename on success, WP_Error on failure.
*/ */
function download_url( $url, $timeout = 300, $signature_verification = false ) { function download_url( $url, $timeout = 300, $signature_verification = false ) {
//WARNING: The file is not automatically deleted, The script must unlink() the file. // WARNING: The file is not automatically deleted, the script must unlink() the file.
if ( ! $url ) { if ( ! $url ) {
return new WP_Error( 'http_no_url', __( 'Invalid URL Provided.' ) ); return new WP_Error( 'http_no_url', __( 'Invalid URL Provided.' ) );
} }
@ -1082,7 +1083,7 @@ function download_url( $url, $timeout = 300, $signature_verification = false ) {
$signature = wp_remote_retrieve_header( $response, 'x-content-signature' ); $signature = wp_remote_retrieve_header( $response, 'x-content-signature' );
if ( ! $signature ) { if ( ! $signature ) {
// Retrieve signatures from a file if the header wasn't included. // Retrieve signatures from a file if the header wasn't included.
// WordPress.org stores signatures at $package_url.sig // WordPress.org stores signatures at $package_url.sig.
$signature_url = false; $signature_url = false;
$url_path = parse_url( $url, PHP_URL_PATH ); $url_path = parse_url( $url, PHP_URL_PATH );
@ -1104,7 +1105,7 @@ function download_url( $url, $timeout = 300, $signature_verification = false ) {
$signature_request = wp_safe_remote_get( $signature_request = wp_safe_remote_get(
$signature_url, $signature_url,
array( array(
'limit_response_size' => 10 * 1024, // 10KB should be large enough for quite a few signatures. 'limit_response_size' => 10 * KB_IN_BYTES, // 10KB should be large enough for quite a few signatures.
) )
); );
@ -1161,7 +1162,7 @@ function verify_file_md5( $filename, $expected_md5 ) {
} elseif ( 24 == strlen( $expected_md5 ) ) { } elseif ( 24 == strlen( $expected_md5 ) ) {
$expected_raw_md5 = base64_decode( $expected_md5 ); $expected_raw_md5 = base64_decode( $expected_md5 );
} else { } else {
return false; // unknown format return false; // Unknown format.
} }
$file_md5 = md5_file( $filename, true ); $file_md5 = md5_file( $filename, true );
@ -1210,7 +1211,7 @@ function verify_file_signature( $filename, $signatures, $filename_for_errors = f
); );
} }
// Check for a edge-case affecting PHP Maths abilities // Check for a edge-case affecting PHP Maths abilities.
if ( if (
! extension_loaded( 'sodium' ) && ! extension_loaded( 'sodium' ) &&
in_array( PHP_VERSION_ID, [ 70200, 70201, 70202 ], true ) && in_array( PHP_VERSION_ID, [ 70200, 70201, 70202 ], true ) &&
@ -1250,7 +1251,7 @@ function verify_file_signature( $filename, $signatures, $filename_for_errors = f
// phpcs:enable // phpcs:enable
} }
// This cannot be performed in a reasonable amount of time // This cannot be performed in a reasonable amount of time.
// https://github.com/paragonie/sodium_compat#help-sodium_compat-is-slow-how-can-i-make-it-fast // https://github.com/paragonie/sodium_compat#help-sodium_compat-is-slow-how-can-i-make-it-fast
if ( ! $sodium_compat_is_fast ) { if ( ! $sodium_compat_is_fast ) {
return new WP_Error( return new WP_Error(
@ -1478,7 +1479,7 @@ function _unzip_file_ziparchive( $file, $to, $needed_dirs = array() ) {
return new WP_Error( 'stat_failed_ziparchive', __( 'Could not retrieve file from archive.' ) ); return new WP_Error( 'stat_failed_ziparchive', __( 'Could not retrieve file from archive.' ) );
} }
if ( '__MACOSX/' === substr( $info['name'], 0, 9 ) ) { // Skip the OS X-created __MACOSX directory if ( '__MACOSX/' === substr( $info['name'], 0, 9 ) ) { // Skip the OS X-created __MACOSX directory.
continue; continue;
} }
@ -1515,10 +1516,10 @@ function _unzip_file_ziparchive( $file, $to, $needed_dirs = array() ) {
$needed_dirs = array_unique( $needed_dirs ); $needed_dirs = array_unique( $needed_dirs );
foreach ( $needed_dirs as $dir ) { foreach ( $needed_dirs as $dir ) {
// Check the parent folders of the folders all exist within the creation array. // Check the parent folders of the folders all exist within the creation array.
if ( untrailingslashit( $to ) == $dir ) { // Skip over the working directory, We know this exists (or will exist) if ( untrailingslashit( $to ) == $dir ) { // Skip over the working directory, we know this exists (or will exist).
continue; continue;
} }
if ( strpos( $dir, $to ) === false ) { // If the directory is not within the working directory, Skip it if ( strpos( $dir, $to ) === false ) { // If the directory is not within the working directory, skip it.
continue; continue;
} }
@ -1549,7 +1550,7 @@ function _unzip_file_ziparchive( $file, $to, $needed_dirs = array() ) {
continue; continue;
} }
if ( '__MACOSX/' === substr( $info['name'], 0, 9 ) ) { // Don't extract the OS X-created __MACOSX directory files if ( '__MACOSX/' === substr( $info['name'], 0, 9 ) ) { // Don't extract the OS X-created __MACOSX directory files.
continue; continue;
} }
@ -1615,9 +1616,9 @@ function _unzip_file_pclzip( $file, $to, $needed_dirs = array() ) {
$uncompressed_size = 0; $uncompressed_size = 0;
// Determine any children directories needed (From within the archive) // Determine any children directories needed (From within the archive).
foreach ( $archive_files as $file ) { foreach ( $archive_files as $file ) {
if ( '__MACOSX/' === substr( $file['filename'], 0, 9 ) ) { // Skip the OS X-created __MACOSX directory if ( '__MACOSX/' === substr( $file['filename'], 0, 9 ) ) { // Skip the OS X-created __MACOSX directory.
continue; continue;
} }
@ -1641,10 +1642,10 @@ function _unzip_file_pclzip( $file, $to, $needed_dirs = array() ) {
$needed_dirs = array_unique( $needed_dirs ); $needed_dirs = array_unique( $needed_dirs );
foreach ( $needed_dirs as $dir ) { foreach ( $needed_dirs as $dir ) {
// Check the parent folders of the folders all exist within the creation array. // Check the parent folders of the folders all exist within the creation array.
if ( untrailingslashit( $to ) == $dir ) { // Skip over the working directory, We know this exists (or will exist) if ( untrailingslashit( $to ) == $dir ) { // Skip over the working directory, we know this exists (or will exist).
continue; continue;
} }
if ( strpos( $dir, $to ) === false ) { // If the directory is not within the working directory, Skip it if ( strpos( $dir, $to ) === false ) { // If the directory is not within the working directory, skip it.
continue; continue;
} }
@ -1665,13 +1666,13 @@ function _unzip_file_pclzip( $file, $to, $needed_dirs = array() ) {
} }
unset( $needed_dirs ); unset( $needed_dirs );
// Extract the files from the zip // Extract the files from the zip.
foreach ( $archive_files as $file ) { foreach ( $archive_files as $file ) {
if ( $file['folder'] ) { if ( $file['folder'] ) {
continue; continue;
} }
if ( '__MACOSX/' === substr( $file['filename'], 0, 9 ) ) { // Don't extract the OS X-created __MACOSX directory files if ( '__MACOSX/' === substr( $file['filename'], 0, 9 ) ) { // Don't extract the OS X-created __MACOSX directory files.
continue; continue;
} }
@ -1730,7 +1731,7 @@ function copy_dir( $from, $to, $skip_list = array() ) {
} }
} }
// generate the $sub_skip_list for the subdirectory as a sub-set of the existing $skip_list // Generate the $sub_skip_list for the subdirectory as a sub-set of the existing $skip_list.
$sub_skip_list = array(); $sub_skip_list = array();
foreach ( $skip_list as $skip_item ) { foreach ( $skip_list as $skip_item ) {
if ( 0 === strpos( $skip_item, $filename . '/' ) ) { if ( 0 === strpos( $skip_item, $filename . '/' ) ) {
@ -1748,7 +1749,7 @@ function copy_dir( $from, $to, $skip_list = array() ) {
} }
/** /**
* Initialises and connects the WordPress Filesystem Abstraction classes. * Initializes and connects the WordPress Filesystem Abstraction classes.
* *
* This function will include the chosen transport and attempt connecting. * This function will include the chosen transport and attempt connecting.
* *
@ -1800,7 +1801,10 @@ function WP_Filesystem( $args = false, $context = false, $allow_relaxed_file_own
$wp_filesystem = new $method( $args ); $wp_filesystem = new $method( $args );
//Define the timeouts for the connections. Only available after the construct is called to allow for per-transport overriding of the default. /*
* Define the timeouts for the connections. Only available after the constructor is called
* to allow for per-transport overriding of the default.
*/
if ( ! defined( 'FS_CONNECT_TIMEOUT' ) ) { if ( ! defined( 'FS_CONNECT_TIMEOUT' ) ) {
define( 'FS_CONNECT_TIMEOUT', 30 ); define( 'FS_CONNECT_TIMEOUT', 30 );
} }
@ -1813,7 +1817,7 @@ function WP_Filesystem( $args = false, $context = false, $allow_relaxed_file_own
} }
if ( ! $wp_filesystem->connect() ) { if ( ! $wp_filesystem->connect() ) {
return false; //There was an error connecting to the server. return false; // There was an error connecting to the server.
} }
// Set the permission constants if not already set. // Set the permission constants if not already set.
@ -1854,7 +1858,8 @@ function WP_Filesystem( $args = false, $context = false, $allow_relaxed_file_own
* @return string The transport to use, see description for valid return values. * @return string The transport to use, see description for valid return values.
*/ */
function get_filesystem_method( $args = array(), $context = '', $allow_relaxed_file_ownership = false ) { function get_filesystem_method( $args = array(), $context = '', $allow_relaxed_file_ownership = false ) {
$method = defined( 'FS_METHOD' ) ? FS_METHOD : false; // Please ensure that this is either 'direct', 'ssh2', 'ftpext' or 'ftpsockets' // Please ensure that this is either 'direct', 'ssh2', 'ftpext', or 'ftpsockets'.
$method = defined( 'FS_METHOD' ) ? FS_METHOD : false;
if ( ! $context ) { if ( ! $context ) {
$context = WP_CONTENT_DIR; $context = WP_CONTENT_DIR;
@ -1873,7 +1878,7 @@ function get_filesystem_method( $args = array(), $context = '', $allow_relaxed_f
$temp_handle = @fopen( $temp_file_name, 'w' ); $temp_handle = @fopen( $temp_file_name, 'w' );
if ( $temp_handle ) { if ( $temp_handle ) {
// Attempt to determine the file owner of the WordPress files, and that of newly created files // Attempt to determine the file owner of the WordPress files, and that of newly created files.
$wp_file_owner = false; $wp_file_owner = false;
$temp_file_owner = false; $temp_file_owner = false;
if ( function_exists( 'fileowner' ) ) { if ( function_exists( 'fileowner' ) ) {
@ -1882,13 +1887,18 @@ function get_filesystem_method( $args = array(), $context = '', $allow_relaxed_f
} }
if ( $wp_file_owner !== false && $wp_file_owner === $temp_file_owner ) { if ( $wp_file_owner !== false && $wp_file_owner === $temp_file_owner ) {
// WordPress is creating files as the same owner as the WordPress files, /*
// this means it's safe to modify & create new files via PHP. * WordPress is creating files as the same owner as the WordPress files,
* this means it's safe to modify & create new files via PHP.
*/
$method = 'direct'; $method = 'direct';
$GLOBALS['_wp_filesystem_direct_method'] = 'file_owner'; $GLOBALS['_wp_filesystem_direct_method'] = 'file_owner';
} elseif ( $allow_relaxed_file_ownership ) { } elseif ( $allow_relaxed_file_ownership ) {
// The $context directory is writable, and $allow_relaxed_file_ownership is set, this means we can modify files /*
// safely in this directory. This mode doesn't create new files, only alter existing ones. * The $context directory is writable, and $allow_relaxed_file_ownership is set,
* this means we can modify files safely in this directory.
* This mode doesn't create new files, only alter existing ones.
*/
$method = 'direct'; $method = 'direct';
$GLOBALS['_wp_filesystem_direct_method'] = 'relaxed_ownership'; $GLOBALS['_wp_filesystem_direct_method'] = 'relaxed_ownership';
} }
@ -1905,7 +1915,7 @@ function get_filesystem_method( $args = array(), $context = '', $allow_relaxed_f
$method = 'ftpext'; $method = 'ftpext';
} }
if ( ! $method && ( extension_loaded( 'sockets' ) || function_exists( 'fsockopen' ) ) ) { if ( ! $method && ( extension_loaded( 'sockets' ) || function_exists( 'fsockopen' ) ) ) {
$method = 'ftpsockets'; //Sockets: Socket extension; PHP Mode: FSockopen / fwrite / fread $method = 'ftpsockets'; // Sockets: Socket extension; PHP Mode: FSockopen / fwrite / fread.
} }
/** /**
@ -1998,7 +2008,7 @@ function request_filesystem_credentials( $form_post, $type = '', $error = false,
$submitted_form = wp_unslash( $_POST ); $submitted_form = wp_unslash( $_POST );
// Verify nonce, or unset submitted form field values on failure // Verify nonce, or unset submitted form field values on failure.
if ( ! isset( $_POST['_fs_nonce'] ) || ! wp_verify_nonce( $_POST['_fs_nonce'], 'filesystem-credentials' ) ) { if ( ! isset( $_POST['_fs_nonce'] ) || ! wp_verify_nonce( $_POST['_fs_nonce'], 'filesystem-credentials' ) ) {
unset( unset(
$submitted_form['hostname'], $submitted_form['hostname'],
@ -2010,17 +2020,17 @@ function request_filesystem_credentials( $form_post, $type = '', $error = false,
); );
} }
// If defined, set it to that, Else, If POST'd, set it to that, If not, Set it to whatever it previously was(saved details in option) // If defined, set it to that. Else, if POST'd, set it to that. If not, set it to whatever it previously was (saved details in option).
$credentials['hostname'] = defined( 'FTP_HOST' ) ? FTP_HOST : ( ! empty( $submitted_form['hostname'] ) ? $submitted_form['hostname'] : $credentials['hostname'] ); $credentials['hostname'] = defined( 'FTP_HOST' ) ? FTP_HOST : ( ! empty( $submitted_form['hostname'] ) ? $submitted_form['hostname'] : $credentials['hostname'] );
$credentials['username'] = defined( 'FTP_USER' ) ? FTP_USER : ( ! empty( $submitted_form['username'] ) ? $submitted_form['username'] : $credentials['username'] ); $credentials['username'] = defined( 'FTP_USER' ) ? FTP_USER : ( ! empty( $submitted_form['username'] ) ? $submitted_form['username'] : $credentials['username'] );
$credentials['password'] = defined( 'FTP_PASS' ) ? FTP_PASS : ( ! empty( $submitted_form['password'] ) ? $submitted_form['password'] : '' ); $credentials['password'] = defined( 'FTP_PASS' ) ? FTP_PASS : ( ! empty( $submitted_form['password'] ) ? $submitted_form['password'] : '' );
// Check to see if we are setting the public/private keys for ssh // Check to see if we are setting the public/private keys for ssh.
$credentials['public_key'] = defined( 'FTP_PUBKEY' ) ? FTP_PUBKEY : ( ! empty( $submitted_form['public_key'] ) ? $submitted_form['public_key'] : '' ); $credentials['public_key'] = defined( 'FTP_PUBKEY' ) ? FTP_PUBKEY : ( ! empty( $submitted_form['public_key'] ) ? $submitted_form['public_key'] : '' );
$credentials['private_key'] = defined( 'FTP_PRIKEY' ) ? FTP_PRIKEY : ( ! empty( $submitted_form['private_key'] ) ? $submitted_form['private_key'] : '' ); $credentials['private_key'] = defined( 'FTP_PRIKEY' ) ? FTP_PRIKEY : ( ! empty( $submitted_form['private_key'] ) ? $submitted_form['private_key'] : '' );
// Sanitize the hostname, Some people might pass in odd-data: // Sanitize the hostname, some people might pass in odd data.
$credentials['hostname'] = preg_replace( '|\w+://|', '', $credentials['hostname'] ); //Strip any schemes off $credentials['hostname'] = preg_replace( '|\w+://|', '', $credentials['hostname'] ); // Strip any schemes off.
if ( strpos( $credentials['hostname'], ':' ) ) { if ( strpos( $credentials['hostname'], ':' ) ) {
list( $credentials['hostname'], $credentials['port'] ) = explode( ':', $credentials['hostname'], 2 ); list( $credentials['hostname'], $credentials['port'] ) = explode( ':', $credentials['hostname'], 2 );
@ -2033,11 +2043,11 @@ function request_filesystem_credentials( $form_post, $type = '', $error = false,
if ( ( defined( 'FTP_SSH' ) && FTP_SSH ) || ( defined( 'FS_METHOD' ) && 'ssh2' == FS_METHOD ) ) { if ( ( defined( 'FTP_SSH' ) && FTP_SSH ) || ( defined( 'FS_METHOD' ) && 'ssh2' == FS_METHOD ) ) {
$credentials['connection_type'] = 'ssh'; $credentials['connection_type'] = 'ssh';
} elseif ( ( defined( 'FTP_SSL' ) && FTP_SSL ) && 'ftpext' == $type ) { //Only the FTP Extension understands SSL } elseif ( ( defined( 'FTP_SSL' ) && FTP_SSL ) && 'ftpext' == $type ) { // Only the FTP Extension understands SSL.
$credentials['connection_type'] = 'ftps'; $credentials['connection_type'] = 'ftps';
} elseif ( ! empty( $submitted_form['connection_type'] ) ) { } elseif ( ! empty( $submitted_form['connection_type'] ) ) {
$credentials['connection_type'] = $submitted_form['connection_type']; $credentials['connection_type'] = $submitted_form['connection_type'];
} elseif ( ! isset( $credentials['connection_type'] ) ) { //All else fails (And it's not defaulted to something else saved), Default to FTP } elseif ( ! isset( $credentials['connection_type'] ) ) { // All else fails (and it's not defaulted to something else saved), default to FTP.
$credentials['connection_type'] = 'ftp'; $credentials['connection_type'] = 'ftp';
} }
if ( ! $error && if ( ! $error &&
@ -2046,7 +2056,7 @@ function request_filesystem_credentials( $form_post, $type = '', $error = false,
( 'ssh' == $credentials['connection_type'] && ! empty( $credentials['public_key'] ) && ! empty( $credentials['private_key'] ) ) ( 'ssh' == $credentials['connection_type'] && ! empty( $credentials['public_key'] ) && ! empty( $credentials['private_key'] ) )
) ) { ) ) {
$stored_credentials = $credentials; $stored_credentials = $credentials;
if ( ! empty( $stored_credentials['port'] ) ) { //save port as part of hostname to simplify above code. if ( ! empty( $stored_credentials['port'] ) ) { // Save port as part of hostname to simplify above code.
$stored_credentials['hostname'] .= ':' . $stored_credentials['port']; $stored_credentials['hostname'] .= ':' . $stored_credentials['port'];
} }
@ -2075,7 +2085,7 @@ function request_filesystem_credentials( $form_post, $type = '', $error = false,
if ( extension_loaded( 'ftp' ) || extension_loaded( 'sockets' ) || function_exists( 'fsockopen' ) ) { if ( extension_loaded( 'ftp' ) || extension_loaded( 'sockets' ) || function_exists( 'fsockopen' ) ) {
$types['ftp'] = __( 'FTP' ); $types['ftp'] = __( 'FTP' );
} }
if ( extension_loaded( 'ftp' ) ) { //Only this supports FTPS if ( extension_loaded( 'ftp' ) ) { // Only this supports FTPS.
$types['ftps'] = __( 'FTPS (SSL)' ); $types['ftps'] = __( 'FTPS (SSL)' );
} }
if ( extension_loaded( 'ssh2' ) && function_exists( 'stream_get_contents' ) ) { if ( extension_loaded( 'ssh2' ) && function_exists( 'stream_get_contents' ) ) {

View File

@ -199,7 +199,7 @@ function wp_image_editor( $post_id, $msg = false ) {
<button type="button" onclick="imageEdit.handleCropToolClick( <?php echo "$post_id, '$nonce'"; ?>, this )" class="imgedit-crop button disabled" disabled><?php esc_html_e( 'Crop' ); ?></button> <button type="button" onclick="imageEdit.handleCropToolClick( <?php echo "$post_id, '$nonce'"; ?>, this )" class="imgedit-crop button disabled" disabled><?php esc_html_e( 'Crop' ); ?></button>
<?php <?php
// On some setups GD library does not provide imagerotate() - Ticket #11536 // On some setups GD library does not provide imagerotate() - Ticket #11536.
if ( wp_image_editor_supports( if ( wp_image_editor_supports(
array( array(
'mime_type' => get_post_mime_type( $post_id ), 'mime_type' => get_post_mime_type( $post_id ),
@ -601,10 +601,10 @@ function image_edit_apply_changes( $image, $changes ) {
$w = $size['width']; $w = $size['width'];
$h = $size['height']; $h = $size['height'];
$scale = 1 / _image_get_preview_ratio( $w, $h ); // discard preview scaling $scale = 1 / _image_get_preview_ratio( $w, $h ); // Discard preview scaling.
$image->crop( $sel->x * $scale, $sel->y * $scale, $sel->w * $scale, $sel->h * $scale ); $image->crop( $sel->x * $scale, $sel->y * $scale, $sel->w * $scale, $sel->h * $scale );
} else { } else {
$scale = 1 / _image_get_preview_ratio( imagesx( $image ), imagesy( $image ) ); // discard preview scaling $scale = 1 / _image_get_preview_ratio( imagesx( $image ), imagesy( $image ) ); // Discard preview scaling.
$image = _crop_image_resource( $image, $sel->x * $scale, $sel->y * $scale, $sel->w * $scale, $sel->h * $scale ); $image = _crop_image_resource( $image, $sel->x * $scale, $sel->y * $scale, $sel->w * $scale, $sel->h * $scale );
} }
break; break;
@ -955,7 +955,7 @@ function wp_save_image( $post_id ) {
update_post_meta( $post_id, '_wp_attachment_backup_sizes', $backup_sizes ); update_post_meta( $post_id, '_wp_attachment_backup_sizes', $backup_sizes );
if ( $target == 'thumbnail' || $target == 'all' || $target == 'full' ) { if ( $target == 'thumbnail' || $target == 'all' || $target == 'full' ) {
// Check if it's an image edit from attachment edit screen // Check if it's an image edit from attachment edit screen.
if ( ! empty( $_REQUEST['context'] ) && 'edit-attachment' == $_REQUEST['context'] ) { if ( ! empty( $_REQUEST['context'] ) && 'edit-attachment' == $_REQUEST['context'] ) {
$thumb_url = wp_get_attachment_image_src( $post_id, array( 900, 600 ), true ); $thumb_url = wp_get_attachment_image_src( $post_id, array( 900, 600 ), true );
$return->thumbnail = $thumb_url[0]; $return->thumbnail = $thumb_url[0];

View File

@ -24,7 +24,7 @@
*/ */
function wp_crop_image( $src, $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h, $src_abs = false, $dst_file = false ) { function wp_crop_image( $src, $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h, $src_abs = false, $dst_file = false ) {
$src_file = $src; $src_file = $src;
if ( is_numeric( $src ) ) { // Handle int as attachment ID if ( is_numeric( $src ) ) { // Handle int as attachment ID.
$src_file = get_attached_file( $src ); $src_file = get_attached_file( $src );
if ( ! file_exists( $src_file ) ) { if ( ! file_exists( $src_file ) ) {
@ -117,11 +117,13 @@ function wp_get_missing_image_subsizes( $attachment_id ) {
$image_meta['sizes'] = array(); $image_meta['sizes'] = array();
} }
// Remove sizes that already exist. Only checks for matching "size names". /*
// It is possible that the dimensions for a particular size name have changed. * Remove sizes that already exist. Only checks for matching "size names".
// For example the user has changed the values on the Settings -> Media screen. * It is possible that the dimensions for a particular size name have changed.
// However we keep the old sub-sizes with the previous dimensions * For example the user has changed the values on the Settings -> Media screen.
// as the image may have been used in an older post. * However we keep the old sub-sizes with the previous dimensions
* as the image may have been used in an older post.
*/
$missing_sizes = array_diff_key( $possible_sizes, $image_meta['sizes'] ); $missing_sizes = array_diff_key( $possible_sizes, $image_meta['sizes'] );
/** /**
@ -229,7 +231,7 @@ function wp_create_image_subsizes( $file, $attachment_id ) {
return array(); return array();
} }
// Default image meta // Default image meta.
$image_meta = array( $image_meta = array(
'width' => $imagesize[0], 'width' => $imagesize[0],
'height' => $imagesize[1], 'height' => $imagesize[1],
@ -318,7 +320,7 @@ function wp_create_image_subsizes( $file, $attachment_id ) {
return $image_meta; return $image_meta;
} }
// Rotate the image // Rotate the image.
$rotated = $editor->maybe_exif_rotate(); $rotated = $editor->maybe_exif_rotate();
if ( true === $rotated ) { if ( true === $rotated ) {
@ -339,9 +341,11 @@ function wp_create_image_subsizes( $file, $attachment_id ) {
} }
} }
// Initial save of the new metadata. /*
// At this point the file was uploaded and moved to the uploads directory * Initial save of the new metadata.
// but the image sub-sizes haven't been created yet and the `sizes` array is empty. * At this point the file was uploaded and moved to the uploads directory
* but the image sub-sizes haven't been created yet and the `sizes` array is empty.
*/
wp_update_attachment_metadata( $attachment_id, $image_meta ); wp_update_attachment_metadata( $attachment_id, $image_meta );
$new_sizes = wp_get_registered_image_subsizes(); $new_sizes = wp_get_registered_image_subsizes();
@ -386,9 +390,11 @@ function _wp_make_subsizes( $new_sizes, $file, $image_meta, $attachment_id ) {
// Check if any of the new sizes already exist. // Check if any of the new sizes already exist.
if ( isset( $image_meta['sizes'] ) && is_array( $image_meta['sizes'] ) ) { if ( isset( $image_meta['sizes'] ) && is_array( $image_meta['sizes'] ) ) {
foreach ( $image_meta['sizes'] as $size_name => $size_meta ) { foreach ( $image_meta['sizes'] as $size_name => $size_meta ) {
// Only checks "size name" so we don't override existing images even if the dimensions /*
// don't match the currently defined size with the same name. * Only checks "size name" so we don't override existing images even if the dimensions
// To change the behavior, unset changed/mismatched sizes in the `sizes` array in image meta. * don't match the currently defined size with the same name.
* To change the behavior, unset changed/mismatched sizes in the `sizes` array in image meta.
*/
if ( array_key_exists( $size_name, $new_sizes ) ) { if ( array_key_exists( $size_name, $new_sizes ) ) {
unset( $new_sizes[ $size_name ] ); unset( $new_sizes[ $size_name ] );
} }
@ -402,9 +408,11 @@ function _wp_make_subsizes( $new_sizes, $file, $image_meta, $attachment_id ) {
return $image_meta; return $image_meta;
} }
// Sort the image sub-sizes in order of priority when creating them. /*
// This ensures there is an appropriate sub-size the user can access immediately * Sort the image sub-sizes in order of priority when creating them.
// even when there was an error and not all sub-sizes were created. * This ensures there is an appropriate sub-size the user can access immediately
* even when there was an error and not all sub-sizes were created.
*/
$priority = array( $priority = array(
'medium' => null, 'medium' => null,
'large' => null, 'large' => null,
@ -733,21 +741,21 @@ function wp_read_image_metadata( $file ) {
$meta['caption'] = $caption; $meta['caption'] = $caption;
} }
if ( ! empty( $iptc['2#110'][0] ) ) { // credit if ( ! empty( $iptc['2#110'][0] ) ) { // Credit.
$meta['credit'] = trim( $iptc['2#110'][0] ); $meta['credit'] = trim( $iptc['2#110'][0] );
} elseif ( ! empty( $iptc['2#080'][0] ) ) { // creator / legacy byline } elseif ( ! empty( $iptc['2#080'][0] ) ) { // Creator / legacy byline.
$meta['credit'] = trim( $iptc['2#080'][0] ); $meta['credit'] = trim( $iptc['2#080'][0] );
} }
if ( ! empty( $iptc['2#055'][0] ) && ! empty( $iptc['2#060'][0] ) ) { // created date and time if ( ! empty( $iptc['2#055'][0] ) && ! empty( $iptc['2#060'][0] ) ) { // Created date and time.
$meta['created_timestamp'] = strtotime( $iptc['2#055'][0] . ' ' . $iptc['2#060'][0] ); $meta['created_timestamp'] = strtotime( $iptc['2#055'][0] . ' ' . $iptc['2#060'][0] );
} }
if ( ! empty( $iptc['2#116'][0] ) ) { // copyright if ( ! empty( $iptc['2#116'][0] ) ) { // Copyright.
$meta['copyright'] = trim( $iptc['2#116'][0] ); $meta['copyright'] = trim( $iptc['2#116'][0] );
} }
if ( ! empty( $iptc['2#025'][0] ) ) { // keywords array if ( ! empty( $iptc['2#025'][0] ) ) { // Keywords array.
$meta['keywords'] = array_values( $iptc['2#025'] ); $meta['keywords'] = array_values( $iptc['2#025'] );
} }
} }
@ -773,7 +781,7 @@ function wp_read_image_metadata( $file ) {
reset_mbstring_encoding(); reset_mbstring_encoding();
if ( empty( $meta['title'] ) && $description_length < 80 ) { if ( empty( $meta['title'] ) && $description_length < 80 ) {
// Assume the title is stored in ImageDescription // Assume the title is stored in ImageDescription.
$meta['title'] = trim( $exif['ImageDescription'] ); $meta['title'] = trim( $exif['ImageDescription'] );
} }

View File

@ -103,7 +103,7 @@ function wp_import_handle_upload() {
return $upload; return $upload;
} }
// Construct the object array // Construct the object array.
$object = array( $object = array(
'post_title' => wp_basename( $upload['file'] ), 'post_title' => wp_basename( $upload['file'] ),
'post_content' => $upload['url'], 'post_content' => $upload['url'],
@ -113,7 +113,7 @@ function wp_import_handle_upload() {
'post_status' => 'private', 'post_status' => 'private',
); );
// Save the data // Save the data.
$id = wp_insert_attachment( $object, $upload['file'] ); $id = wp_insert_attachment( $object, $upload['file'] );
/* /*
@ -136,7 +136,7 @@ function wp_import_handle_upload() {
* @return array Importers with metadata for each. * @return array Importers with metadata for each.
*/ */
function wp_get_popular_importers() { function wp_get_popular_importers() {
include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version include( ABSPATH . WPINC . '/version.php' ); // Include an unmodified $wp_version.
$locale = get_user_locale(); $locale = get_user_locale();
$cache_key = 'popular_importers_' . md5( $locale . $wp_version ); $cache_key = 'popular_importers_' . md5( $locale . $wp_version );
@ -184,7 +184,7 @@ function wp_get_popular_importers() {
} }
return array( return array(
// slug => name, description, plugin slug, and register_importer() slug // slug => name, description, plugin slug, and register_importer() slug.
'blogger' => array( 'blogger' => array(
'name' => __( 'Blogger' ), 'name' => __( 'Blogger' ),
'description' => __( 'Import posts, comments, and users from a Blogger blog.' ), 'description' => __( 'Import posts, comments, and users from a Blogger blog.' ),

View File

@ -21,7 +21,7 @@
*/ */
function _get_list_table( $class, $args = array() ) { function _get_list_table( $class, $args = array() ) {
$core_classes = array( $core_classes = array(
//Site Admin // Site Admin.
'WP_Posts_List_Table' => 'posts', 'WP_Posts_List_Table' => 'posts',
'WP_Media_List_Table' => 'media', 'WP_Media_List_Table' => 'media',
'WP_Terms_List_Table' => 'terms', 'WP_Terms_List_Table' => 'terms',
@ -34,12 +34,12 @@ function _get_list_table( $class, $args = array() ) {
'WP_Theme_Install_List_Table' => array( 'themes', 'theme-install' ), 'WP_Theme_Install_List_Table' => array( 'themes', 'theme-install' ),
'WP_Plugins_List_Table' => 'plugins', 'WP_Plugins_List_Table' => 'plugins',
// Network Admin // Network Admin.
'WP_MS_Sites_List_Table' => 'ms-sites', 'WP_MS_Sites_List_Table' => 'ms-sites',
'WP_MS_Users_List_Table' => 'ms-users', 'WP_MS_Users_List_Table' => 'ms-users',
'WP_MS_Themes_List_Table' => 'ms-themes', 'WP_MS_Themes_List_Table' => 'ms-themes',
// Privacy requests tables // Privacy requests tables.
'WP_Privacy_Data_Export_Requests_List_Table' => 'privacy-data-export-requests', 'WP_Privacy_Data_Export_Requests_List_Table' => 'privacy-data-export-requests',
'WP_Privacy_Data_Removal_Requests_List_Table' => 'privacy-data-removal-requests', 'WP_Privacy_Data_Removal_Requests_List_Table' => 'privacy-data-removal-requests',
); );

View File

@ -15,7 +15,7 @@
*/ */
function media_upload_tabs() { function media_upload_tabs() {
$_default_tabs = array( $_default_tabs = array(
'type' => __( 'From Computer' ), // handler action suffix => tab text 'type' => __( 'From Computer' ), // Handler action suffix => tab text.
'type_url' => __( 'From URL' ), 'type_url' => __( 'From URL' ),
'gallery' => __( 'Gallery' ), 'gallery' => __( 'Gallery' ),
'library' => __( 'Media Library' ), 'library' => __( 'Media Library' ),
@ -226,7 +226,7 @@ function image_add_caption( $html, $id, $caption, $title, $align, $url, $size, $
$caption = str_replace( array( "\r\n", "\r" ), "\n", $caption ); $caption = str_replace( array( "\r\n", "\r" ), "\n", $caption );
$caption = preg_replace_callback( '/<[a-zA-Z0-9]+(?: [^<>]+>)*/', '_cleanup_image_add_caption', $caption ); $caption = preg_replace_callback( '/<[a-zA-Z0-9]+(?: [^<>]+>)*/', '_cleanup_image_add_caption', $caption );
// Convert any remaining line breaks to <br>. // Convert any remaining line breaks to <br />.
$caption = preg_replace( '/[ \n\t]*\n[ \t]*/', '<br />', $caption ); $caption = preg_replace( '/[ \n\t]*\n[ \t]*/', '<br />', $caption );
$html = preg_replace( '/(class=["\'][^\'"]*)align(none|left|right|center)\s?/', '$1', $html ); $html = preg_replace( '/(class=["\'][^\'"]*)align(none|left|right|center)\s?/', '$1', $html );
@ -388,7 +388,7 @@ function media_handle_upload( $file_id, $post_id, $post_data = array(), $overrid
} }
} }
// Construct the attachment array // Construct the attachment array.
$attachment = array_merge( $attachment = array_merge(
array( array(
'post_mime_type' => $type, 'post_mime_type' => $type,
@ -404,7 +404,7 @@ function media_handle_upload( $file_id, $post_id, $post_data = array(), $overrid
// This should never be set as it would then overwrite an existing attachment. // This should never be set as it would then overwrite an existing attachment.
unset( $attachment['ID'] ); unset( $attachment['ID'] );
// Save the data // Save the data.
$attachment_id = wp_insert_attachment( $attachment, $file, $post_id, true ); $attachment_id = wp_insert_attachment( $attachment, $file, $post_id, true );
if ( ! is_wp_error( $attachment_id ) ) { if ( ! is_wp_error( $attachment_id ) ) {
@ -490,7 +490,7 @@ function media_handle_sideload( $file_array, $post_id = 0, $desc = null, $post_d
// This should never be set as it would then overwrite an existing attachment. // This should never be set as it would then overwrite an existing attachment.
unset( $attachment['ID'] ); unset( $attachment['ID'] );
// Save the attachment metadata // Save the attachment metadata.
$attachment_id = wp_insert_attachment( $attachment, $file, $post_id, true ); $attachment_id = wp_insert_attachment( $attachment, $file, $post_id, true );
if ( ! is_wp_error( $attachment_id ) ) { if ( ! is_wp_error( $attachment_id ) ) {
@ -519,7 +519,7 @@ function wp_iframe( $content_func, ...$args ) {
<?php <?php
wp_enqueue_style( 'colors' ); wp_enqueue_style( 'colors' );
// Check callback name for 'media' // Check callback name for 'media'.
if ( if (
( is_array( $content_func ) && ! empty( $content_func[1] ) && 0 === strpos( (string) $content_func[1], 'media' ) ) || ( is_array( $content_func ) && ! empty( $content_func[1] ) && 0 === strpos( (string) $content_func[1], 'media' ) ) ||
( ! is_array( $content_func ) && 0 === strpos( $content_func, 'media' ) ) ( ! is_array( $content_func ) && 0 === strpos( $content_func, 'media' ) )
@ -849,7 +849,7 @@ function wp_media_upload_handler() {
if ( isset( $_POST['html-upload'] ) && ! empty( $_FILES ) ) { if ( isset( $_POST['html-upload'] ) && ! empty( $_FILES ) ) {
check_admin_referer( 'media-form' ); check_admin_referer( 'media-form' );
// Upload File button was clicked // Upload File button was clicked.
$id = media_handle_upload( 'async-upload', $_REQUEST['post_id'] ); $id = media_handle_upload( 'async-upload', $_REQUEST['post_id'] );
unset( $_FILES ); unset( $_FILES );
@ -1421,8 +1421,12 @@ function get_attachment_fields_to_edit( $post, $errors = null ) {
$form_fields[ $taxonomy ] = $t; $form_fields[ $taxonomy ] = $t;
} }
// Merge default fields with their errors, so any key passed with the error (e.g. 'error', 'helps', 'value') will replace the default /*
// The recursive merge is easily traversed with array casting: foreach ( (array) $things as $thing ) * Merge default fields with their errors, so any key passed with the error
* (e.g. 'error', 'helps', 'value') will replace the default.
* The recursive merge is easily traversed with array casting:
* foreach ( (array) $things as $thing )
*/
$form_fields = array_merge_recursive( $form_fields, (array) $errors ); $form_fields = array_merge_recursive( $form_fields, (array) $errors );
// This was formerly in image_attachment_fields_to_edit(). // This was formerly in image_attachment_fields_to_edit().
@ -1596,7 +1600,7 @@ function get_media_item( $attachment_id, $args = null ) {
$toggle_links = ''; $toggle_links = '';
} }
$display_title = ( ! empty( $title ) ) ? $title : $filename; // $title shouldn't ever be empty, but just in case $display_title = ( ! empty( $title ) ) ? $title : $filename; // $title shouldn't ever be empty, but just in case.
$display_title = $parsed_args['show_title'] ? "<div class='filename new'><span class='title'>" . wp_html_excerpt( $display_title, 60, '&hellip;' ) . '</span></div>' : ''; $display_title = $parsed_args['show_title'] ? "<div class='filename new'><span class='title'>" . wp_html_excerpt( $display_title, 60, '&hellip;' ) . '</span></div>' : '';
$gallery = ( ( isset( $_REQUEST['tab'] ) && 'gallery' == $_REQUEST['tab'] ) || ( isset( $redir_tab ) && 'gallery' == $redir_tab ) ); $gallery = ( ( isset( $_REQUEST['tab'] ) && 'gallery' == $_REQUEST['tab'] ) || ( isset( $redir_tab ) && 'gallery' == $redir_tab ) );
@ -1710,7 +1714,7 @@ function get_media_item( $attachment_id, $args = null ) {
if ( isset( $_GET['post_id'] ) ) { if ( isset( $_GET['post_id'] ) ) {
$calling_post_id = absint( $_GET['post_id'] ); $calling_post_id = absint( $_GET['post_id'] );
} elseif ( isset( $_POST ) && count( $_POST ) ) {// Like for async-upload where $_GET['post_id'] isn't set } elseif ( isset( $_POST ) && count( $_POST ) ) {// Like for async-upload where $_GET['post_id'] isn't set.
$calling_post_id = $post->post_parent; $calling_post_id = $post->post_parent;
} }
@ -1875,8 +1879,12 @@ function get_compat_media_markup( $attachment_id, $args = null ) {
} }
} }
// Merge default fields with their errors, so any key passed with the error (e.g. 'error', 'helps', 'value') will replace the default /*
// The recursive merge is easily traversed with array casting: foreach ( (array) $things as $thing ) * Merge default fields with their errors, so any key passed with the error
* (e.g. 'error', 'helps', 'value') will replace the default.
* The recursive merge is easily traversed with array casting:
* foreach ( (array) $things as $thing )
*/
$form_fields = array_merge_recursive( $form_fields, (array) $args['errors'] ); $form_fields = array_merge_recursive( $form_fields, (array) $args['errors'] );
/** This filter is documented in wp-admin/includes/media.php */ /** This filter is documented in wp-admin/includes/media.php */
@ -2132,8 +2140,11 @@ function media_upload_form( $errors = null ) {
'multipart_params' => $post_params, 'multipart_params' => $post_params,
); );
// Currently only iOS Safari supports multiple files uploading but iOS 7.x has a bug that prevents uploading of videos /*
// when enabled. See #29602. * Currently only iOS Safari supports multiple files uploading,
* but iOS 7.x has a bug that prevents uploading of videos when enabled.
* See #29602.
*/
if ( if (
wp_is_mobile() && wp_is_mobile() &&
strpos( $_SERVER['HTTP_USER_AGENT'], 'OS 7_' ) !== false && strpos( $_SERVER['HTTP_USER_AGENT'], 'OS 7_' ) !== false &&
@ -2700,7 +2711,7 @@ function media_upload_library_form( $errors ) {
} }
} }
} }
// If available type specified by media button clicked, filter by that type // If available type specified by media button clicked, filter by that type.
if ( empty( $_GET['post_mime_type'] ) && ! empty( $num_posts[ $type ] ) ) { if ( empty( $_GET['post_mime_type'] ) && ! empty( $num_posts[ $type ] ) ) {
$_GET['post_mime_type'] = $type; $_GET['post_mime_type'] = $type;
list($post_mime_types, $avail_post_mime_types) = wp_edit_attachments_query(); list($post_mime_types, $avail_post_mime_types) = wp_edit_attachments_query();

View File

@ -208,13 +208,13 @@ function add_menu_classes( $menu ) {
foreach ( $menu as $order => $top ) { foreach ( $menu as $order => $top ) {
$i++; $i++;
if ( 0 == $order ) { // dashboard is always shown/single if ( 0 == $order ) { // Dashboard is always shown/single.
$menu[0][4] = add_cssclass( 'menu-top-first', $top[4] ); $menu[0][4] = add_cssclass( 'menu-top-first', $top[4] );
$lastorder = 0; $lastorder = 0;
continue; continue;
} }
if ( 0 === strpos( $top[2], 'separator' ) && false !== $lastorder ) { // if separator if ( 0 === strpos( $top[2], 'separator' ) && false !== $lastorder ) { // If separator.
$first = true; $first = true;
$c = $menu[ $lastorder ][4]; $c = $menu[ $lastorder ][4];
$menu[ $lastorder ][4] = add_cssclass( 'menu-top-last', $c ); $menu[ $lastorder ][4] = add_cssclass( 'menu-top-last', $c );
@ -227,7 +227,7 @@ function add_menu_classes( $menu ) {
$first = false; $first = false;
} }
if ( $mc == $i ) { // last item if ( $mc == $i ) { // Last item.
$c = $menu[ $order ][4]; $c = $menu[ $order ][4];
$menu[ $order ][4] = add_cssclass( 'menu-top-last', $c ); $menu[ $order ][4] = add_cssclass( 'menu-top-last', $c );
} }
@ -245,7 +245,7 @@ function add_menu_classes( $menu ) {
return apply_filters( 'add_menu_classes', $menu ); return apply_filters( 'add_menu_classes', $menu );
} }
uksort( $menu, 'strnatcasecmp' ); // make it all pretty uksort( $menu, 'strnatcasecmp' ); // Make it all pretty.
/** /**
* Filters whether to enable custom ordering of the administration menu. * Filters whether to enable custom ordering of the administration menu.
@ -310,21 +310,21 @@ if ( apply_filters( 'custom_menu_order', false ) ) {
unset( $menu_order, $default_menu_order ); unset( $menu_order, $default_menu_order );
} }
// Prevent adjacent separators // Prevent adjacent separators.
$prev_menu_was_separator = false; $prev_menu_was_separator = false;
foreach ( $menu as $id => $data ) { foreach ( $menu as $id => $data ) {
if ( false === stristr( $data[4], 'wp-menu-separator' ) ) { if ( false === stristr( $data[4], 'wp-menu-separator' ) ) {
// This item is not a separator, so falsey the toggler and do nothing // This item is not a separator, so falsey the toggler and do nothing.
$prev_menu_was_separator = false; $prev_menu_was_separator = false;
} else { } else {
// The previous item was a separator, so unset this one // The previous item was a separator, so unset this one.
if ( true === $prev_menu_was_separator ) { if ( true === $prev_menu_was_separator ) {
unset( $menu[ $id ] ); unset( $menu[ $id ] );
} }
// This item is a separator, so truthy the toggler and move on // This item is a separator, so truthy the toggler and move on.
$prev_menu_was_separator = true; $prev_menu_was_separator = true;
} }
} }

View File

@ -13,7 +13,7 @@
* *
* @global string $wp_version * @global string $wp_version
*/ */
$wp_version = '5.4-alpha-47083'; $wp_version = '5.4-alpha-47084';
/** /**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema. * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.