X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/41578db67d72562346e4dbb2a14889b23d522813..88550bc3400cc7c035ff590ecb007c7938041ded:/wp-admin/includes/media.php
diff --git a/wp-admin/includes/media.php b/wp-admin/includes/media.php
index 06cd1c12..7fa4dd8f 100644
--- a/wp-admin/includes/media.php
+++ b/wp-admin/includes/media.php
@@ -158,6 +158,22 @@ function get_image_send_to_editor($id, $caption, $title, $align, $url='', $rel =
*/
function image_add_caption( $html, $id, $caption, $title, $align, $url, $size, $alt = '' ) {
+ /**
+ * Filter the caption text.
+ *
+ * Note: If the caption text is empty, the caption shortcode will not be appended
+ * to the image HTML when inserted into the editor.
+ *
+ * Passing an empty value also prevents the {@see 'image_add_caption_shortcode'}
+ * filter from being evaluated at the end of {@see image_add_caption()}.
+ *
+ * @since 4.1.0
+ *
+ * @param string $caption The original caption text.
+ * @param int $id The attachment ID.
+ */
+ $caption = apply_filters( 'image_add_caption_text', $caption, $id );
+
/**
* Filter whether to disable captions.
*
@@ -180,7 +196,8 @@ function image_add_caption( $html, $id, $caption, $title, $align, $url, $size, $
$caption = str_replace( array("\r\n", "\r"), "\n", $caption);
$caption = preg_replace_callback( '/<[a-zA-Z0-9]+(?: [^<>]+>)*/', '_cleanup_image_add_caption', $caption );
- // convert any remaining line breaks to
+
+ // Convert any remaining line breaks to
.
$caption = preg_replace( '/[ \n\t]*\n[ \t]*/', '
', $caption );
$html = preg_replace( '/(class=["\'][^\'"]*)align(none|left|right|center)\s?/', '$1', $html );
@@ -208,7 +225,7 @@ add_filter( 'image_send_to_editor', 'image_add_caption', 20, 8 );
* @since 3.4.0
*/
function _cleanup_image_add_caption( $matches ) {
- // remove any line breaks from inside the tags
+ // Remove any line breaks from inside the tags.
return preg_replace( '/[\r\n\t]+/', ' ', $matches[0] );
}
@@ -317,8 +334,8 @@ function media_handle_upload($file_id, $post_id, $post_data = array(), $override
if ( ! empty( $meta['genre'] ) )
$content .= ' ' . sprintf( __( 'Genre: %s.' ), $meta['genre'] );
- // use image exif/iptc data for title and caption defaults if possible
- } elseif ( $image_meta = @wp_read_image_metadata( $file ) ) {
+ // Use image exif/iptc data for title and caption defaults if possible.
+ } elseif ( 0 === strpos( $type, 'image/' ) && $image_meta = @wp_read_image_metadata( $file ) ) {
if ( trim( $image_meta['title'] ) && ! is_numeric( sanitize_title( $image_meta['title'] ) ) )
$title = $image_meta['title'];
if ( trim( $image_meta['caption'] ) )
@@ -378,7 +395,7 @@ function media_handle_sideload($file_array, $post_id, $desc = null, $post_data =
$title = preg_replace('/\.[^.]+$/', '', basename($file));
$content = '';
- // use image exif/iptc data for title and caption defaults if possible
+ // Use image exif/iptc data for title and caption defaults if possible.
if ( $image_meta = @wp_read_image_metadata($file) ) {
if ( trim( $image_meta['title'] ) && ! is_numeric( sanitize_title( $image_meta['title'] ) ) )
$title = $image_meta['title'];
@@ -389,7 +406,7 @@ function media_handle_sideload($file_array, $post_id, $desc = null, $post_data =
if ( isset( $desc ) )
$title = $desc;
- // Construct the attachment array
+ // Construct the attachment array.
$attachment = array_merge( array(
'post_mime_type' => $type,
'guid' => $url,
@@ -415,7 +432,7 @@ function media_handle_sideload($file_array, $post_id, $desc = null, $post_data =
*
* @since 2.5.0
*
- * @param array $content_func
+ * @param string|callable $content_func
*/
function wp_iframe($content_func /* ... */) {
_wp_admin_html_begin();
@@ -477,7 +494,7 @@ if ( is_string( $content_func ) ) {
* Fires in the admin header for each specific form tab in the legacy
* (pre-3.5.0) media upload popup.
*
- * The dynamic portion of the hook, $content_func, refers to the form
+ * The dynamic portion of the hook, `$content_func`, refers to the form
* callback for the media upload type. Possible values include
* 'media_upload_type_form', 'media_upload_type_url_form', and
* 'media_upload_library_form'.
@@ -514,6 +531,9 @@ document.body.className = document.body.className.replace('no-js', 'js');
* @param string $editor_id
*/
function media_buttons($editor_id = 'content') {
+ static $instance = 0;
+ $instance++;
+
$post = get_post();
if ( ! $post && ! empty( $GLOBALS['post_ID'] ) )
$post = $GLOBALS['post_ID'];
@@ -524,8 +544,13 @@ function media_buttons($editor_id = 'content') {
$img = ' ';
- echo '' . $img . __( 'Add Media' ) . '';
-
+ $id_attribute = $instance === 1 ? ' id="insert-media-button"' : '';
+ printf( '%s',
+ $id_attribute,
+ esc_attr( $editor_id ),
+ esc_attr__( 'Add Media' ),
+ $img . __( 'Add Media' )
+ );
/**
* Filter the legacy (pre-3.5.0) media buttons.
*
@@ -545,6 +570,14 @@ function media_buttons($editor_id = 'content') {
}
add_action( 'media_buttons', 'media_buttons' );
+/**
+ *
+ * @global int $post_ID
+ * @param string $type
+ * @param int $post_id
+ * @param string $tab
+ * @return string
+ */
function get_upload_iframe_src( $type = null, $post_id = null, $tab = null ) {
global $post_ID;
@@ -562,7 +595,7 @@ function get_upload_iframe_src( $type = null, $post_id = null, $tab = null ) {
/**
* Filter the upload iframe source URL for a specific media type.
*
- * The dynamic portion of the hook name, $type, refers to the type
+ * The dynamic portion of the hook name, `$type`, refers to the type
* of media uploaded.
*
* @since 3.0.0
@@ -627,7 +660,8 @@ function media_upload_form_handler() {
$image_alt = wp_unslash( $attachment['image_alt'] );
if ( $image_alt != get_post_meta($attachment_id, '_wp_attachment_image_alt', true) ) {
$image_alt = wp_strip_all_tags( $image_alt, true );
- // update_meta expects slashed
+
+ // Update_meta expects slashed.
update_post_meta( $attachment_id, '_wp_attachment_image_alt', wp_slash( $image_alt ) );
}
}
@@ -691,7 +725,7 @@ function media_upload_form_handler() {
*
* @since 2.5.0
*
- * @return mixed
+ * @return null|string
*/
function wp_media_upload_handler() {
$errors = array();
@@ -729,7 +763,7 @@ function wp_media_upload_handler() {
/**
* Filter the URL sent to the editor for a specific media type.
*
- * The dynamic portion of the hook name, $type, refers to the type
+ * The dynamic portion of the hook name, `$type`, refers to the type
* of media being sent.
*
* @since 3.3.0
@@ -766,7 +800,10 @@ function wp_media_upload_handler() {
return media_send_to_editor($html);
}
- if ( !empty($_POST) ) {
+ if ( isset( $_POST['save'] ) ) {
+ $errors['upload_notice'] = __('Saved.');
+ return media_upload_gallery();
+ } elseif ( ! empty( $_POST ) ) {
$return = media_upload_form_handler();
if ( is_string($return) )
@@ -775,11 +812,6 @@ function wp_media_upload_handler() {
$errors = $return;
}
- if ( isset($_POST['save']) ) {
- $errors['upload_notice'] = __('Saved.');
- return media_upload_gallery();
- }
-
if ( isset($_GET['tab']) && $_GET['tab'] == 'type_url' ) {
$type = 'image';
if ( isset( $_GET['type'] ) && in_array( $_GET['type'], array( 'video', 'audio', 'file' ) ) )
@@ -800,37 +832,36 @@ function wp_media_upload_handler() {
* @param string $desc Optional. Description of the image
* @return string|WP_Error Populated HTML img tag on success
*/
-function media_sideload_image($file, $post_id, $desc = null) {
- if ( ! empty($file) ) {
- // Download file to temp location
- $tmp = download_url( $file );
-
- // Set variables for storage
- // fix file filename for query strings
+function media_sideload_image( $file, $post_id, $desc = null ) {
+ if ( ! empty( $file ) ) {
+ // Set variables for storage, fix file filename for query strings.
preg_match( '/[^\?]+\.(jpe?g|jpe|gif|png)\b/i', $file, $matches );
- $file_array['name'] = basename($matches[0]);
- $file_array['tmp_name'] = $tmp;
+ $file_array = array();
+ $file_array['name'] = basename( $matches[0] );
- // If error storing temporarily, unlink
- if ( is_wp_error( $tmp ) ) {
- @unlink($file_array['tmp_name']);
- $file_array['tmp_name'] = '';
+ // Download file to temp location.
+ $file_array['tmp_name'] = download_url( $file );
+
+ // If error storing temporarily, return the error.
+ if ( is_wp_error( $file_array['tmp_name'] ) ) {
+ return $file_array['tmp_name'];
}
- // do the validation and storage stuff
+ // Do the validation and storage stuff.
$id = media_handle_sideload( $file_array, $post_id, $desc );
- // If error storing permanently, unlink
- if ( is_wp_error($id) ) {
- @unlink($file_array['tmp_name']);
+
+ // If error storing permanently, unlink.
+ if ( is_wp_error( $id ) ) {
+ @unlink( $file_array['tmp_name'] );
return $id;
}
$src = wp_get_attachment_url( $id );
}
- // Finally check to make sure the file has been saved, then return the html
- if ( ! empty($src) ) {
- $alt = isset($desc) ? esc_attr($desc) : '';
+ // Finally check to make sure the file has been saved, then return the HTML.
+ if ( ! empty( $src ) ) {
+ $alt = isset( $desc ) ? esc_attr( $desc ) : '';
$html = "";
return $html;
}
@@ -841,7 +872,7 @@ function media_sideload_image($file, $post_id, $desc = null) {
*
* @since 2.5.0
*
- * @return unknown
+ * @return string|null
*/
function media_upload_gallery() {
$errors = array();
@@ -864,7 +895,7 @@ function media_upload_gallery() {
*
* @since 2.5.0
*
- * @return unknown
+ * @return string|null
*/
function media_upload_library() {
$errors = array();
@@ -885,7 +916,7 @@ function media_upload_library() {
*
* @since 2.7.0
*
- * @param object $post
+ * @param WP_Post $post
* @param string $checked
* @return string
*/
@@ -913,7 +944,7 @@ function image_align_input_fields( $post, $checked = '' ) {
*
* @since 2.7.0
*
- * @param object $post
+ * @param WP_Post $post
* @param bool|string $check
* @return array
*/
@@ -941,17 +972,21 @@ function image_size_input_fields( $post, $check = '' ) {
$downsize = image_downsize($post->ID, $size);
$checked = '';
- // is this size selectable?
+ // Is this size selectable?
$enabled = ( $downsize[3] || 'full' == $size );
$css_id = "image-size-{$size}-{$post->ID}";
- // if this size is the default but that's not available, don't select it
+
+ // If this size is the default but that's not available, don't select it.
if ( $size == $check ) {
if ( $enabled )
$checked = " checked='checked'";
else
$check = '';
} elseif ( !$check && $enabled && 'thumbnail' != $size ) {
- // if $check is not enabled, default to the first available size that's bigger than a thumbnail
+ /*
+ * If $check is not enabled, default to the first available size
+ * that's bigger than a thumbnail.
+ */
$check = $size;
$checked = " checked='checked'";
}
@@ -959,7 +994,8 @@ function image_size_input_fields( $post, $check = '' ) {
$html = "
' . sprintf( __('The web browser on your device cannot be used to upload files. You may be able to use the native app for your device instead.'), 'https://wordpress.org/mobile/' ) . '
'; + echo '' . sprintf( __('The web browser on your device cannot be used to upload files. You may be able to use the native app for your device instead.'), 'https://apps.wordpress.org/' ) . '
'; return; } @@ -1696,18 +1735,9 @@ function media_upload_form( $errors = null ) { $_type = isset($type) ? $type : ''; $_tab = isset($tab) ? $tab : ''; - $upload_size_unit = $max_upload_size = wp_max_upload_size(); - $sizes = array( 'KB', 'MB', 'GB' ); - - for ( $u = -1; $upload_size_unit > 1024 && $u < count( $sizes ) - 1; $u++ ) { - $upload_size_unit /= 1024; - } - - if ( $u < 0 ) { - $upload_size_unit = 0; - $u = 0; - } else { - $upload_size_unit = (int) $upload_size_unit; + $max_upload_size = wp_max_upload_size(); + if ( ! $max_upload_size ) { + $max_upload_size = 0; } ?> @@ -1742,11 +1772,11 @@ if ( is_multisite() && !is_upload_space_available() ) { do_action( 'pre-upload-ui' ); $post_params = array( - "post_id" => $post_id, - "_wpnonce" => wp_create_nonce('media-form'), - "type" => $_type, - "tab" => $_tab, - "short" => "1", + "post_id" => $post_id, + "_wpnonce" => wp_create_nonce('media-form'), + "type" => $_type, + "tab" => $_tab, + "short" => "1", ); /** @@ -1774,10 +1804,13 @@ $plupload_init = array( 'multipart_params' => $post_params, ); -// Multi-file uploading doesn't currently work in iOS Safari, -// single-file allows the built-in camera to be used as source for images -if ( wp_is_mobile() ) +// 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 ( wp_is_mobile() && strpos( $_SERVER['HTTP_USER_AGENT'], 'OS 7_' ) !== false && + strpos( $_SERVER['HTTP_USER_AGENT'], 'like Mac OS X' ) !== false ) { + $plupload_init['multi_selection'] = false; +} /** * Filter the default Plupload settings. @@ -1801,7 +1834,7 @@ if( !$large_size_w ) $large_size_w = 1024; ?> var resize_height = , resize_width = , -wpUploaderInit = ; +wpUploaderInit = ; - +