X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/8ab4a4532479e8db471032b51042ec8c4716d091..refs/tags/wordpress-4.7-scripts:/wp-admin/includes/media.php diff --git a/wp-admin/includes/media.php b/wp-admin/includes/media.php index 75811962..ede25b3d 100644 --- a/wp-admin/includes/media.php +++ b/wp-admin/includes/media.php @@ -22,7 +22,7 @@ function media_upload_tabs() { ); /** - * Filter the available tabs in the legacy (pre-3.5.0) media popup. + * Filters the available tabs in the legacy (pre-3.5.0) media popup. * * @since 2.5.0 * @@ -36,6 +36,8 @@ function media_upload_tabs() { * * @since 2.5.0 * + * @global wpdb $wpdb WordPress database abstraction object. + * * @param array $tabs * @return array $tabs with gallery if post has image attachment */ @@ -61,12 +63,13 @@ function update_gallery_tab($tabs) { return $tabs; } -add_filter('media_upload_tabs', 'update_gallery_tab'); /** - * {@internal Missing Short Description}} + * Outputs the legacy media upload tabs UI. * * @since 2.5.0 + * + * @global string $redir_tab */ function the_media_upload_tabs() { global $redir_tab; @@ -99,42 +102,52 @@ function the_media_upload_tabs() { } /** - * {@internal Missing Short Description}} + * Retrieves the image HTML to send to the editor. * * @since 2.5.0 * - * @param integer $id image attachment id - * @param string $caption image caption - * @param string $alt image alt attribute - * @param string $title image title attribute - * @param string $align image css alignment property - * @param string $url image src url - * @param string|bool $rel image rel attribute - * @param string $size image size (thumbnail, medium, large, full or added with add_image_size() ) - * @return string the html to insert into editor + * @param int $id Image attachment id. + * @param string $caption Image caption. + * @param string $title Image title attribute. + * @param string $align Image CSS alignment property. + * @param string $url Optional. Image src URL. Default empty. + * @param bool|string $rel Optional. Value for rel attribute or whether to add a default value. Default false. + * @param string|array $size Optional. Image size. Accepts any valid image size, or an array of width + * and height values in pixels (in that order). Default 'medium'. + * @param string $alt Optional. Image alt attribute. Default empty. + * @return string The HTML output to insert into the editor. */ -function get_image_send_to_editor($id, $caption, $title, $align, $url='', $rel = false, $size='medium', $alt = '') { +function get_image_send_to_editor( $id, $caption, $title, $align, $url = '', $rel = false, $size = 'medium', $alt = '' ) { - $html = get_image_tag($id, $alt, '', $align, $size); + $html = get_image_tag( $id, $alt, '', $align, $size ); - $rel = $rel ? ' rel="attachment wp-att-' . esc_attr($id).'"' : ''; + if ( $rel ) { + if ( is_string( $rel ) ) { + $rel = ' rel="' . esc_attr( $rel ) . '"'; + } else { + $rel = ' rel="attachment wp-att-' . intval( $id ) . '"'; + } + } else { + $rel = ''; + } if ( $url ) - $html = '$html"; + $html = '' . $html . ''; /** - * Filter the image HTML markup to send to the editor. + * Filters the image HTML markup to send to the editor when inserting an image. * * @since 2.5.0 * - * @param string $html The image HTML markup to send. - * @param int $id The attachment id. - * @param string $caption The image caption. - * @param string $title The image title. - * @param string $align The image alignment. - * @param string $url The image source URL. - * @param string $size The image size. - * @param string $alt The image alternative, or alt, text. + * @param string $html The image HTML markup to send. + * @param int $id The attachment id. + * @param string $caption The image caption. + * @param string $title The image title. + * @param string $align The image alignment. + * @param string $url The image source URL. + * @param string|array $size Size of image. Image size or array of width and height values + * (in that order). Default 'medium'. + * @param string $alt The image alternative, or alt, text. */ $html = apply_filters( 'image_send_to_editor', $html, $id, $caption, $title, $align, $url, $size, $alt ); @@ -149,23 +162,23 @@ function get_image_send_to_editor($id, $caption, $title, $align, $url='', $rel = * @param string $html * @param integer $id * @param string $caption image caption - * @param string $alt image alt attribute * @param string $title image title attribute * @param string $align image css alignment property * @param string $url image src url * @param string $size image size (thumbnail, medium, large, full or added with add_image_size() ) + * @param string $alt image alt attribute * @return string */ function image_add_caption( $html, $id, $caption, $title, $align, $url, $size, $alt = '' ) { /** - * Filter the caption text. + * Filters 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()}. + * Filters from being evaluated at the end of image_add_caption(). * * @since 4.1.0 * @@ -175,7 +188,7 @@ function image_add_caption( $html, $id, $caption, $title, $align, $url, $size, $ $caption = apply_filters( 'image_add_caption_text', $caption, $id ); /** - * Filter whether to disable captions. + * Filters whether to disable captions. * * Prevents image captions from being appended to image HTML when inserted into the editor. * @@ -207,7 +220,7 @@ function image_add_caption( $html, $id, $caption, $title, $align, $url, $size, $ $shcode = '[caption id="' . $id . '" align="align' . $align . '" width="' . $width . '"]' . $html . ' ' . $caption . '[/caption]'; /** - * Filter the image HTML markup including the caption shortcode. + * Filters the image HTML markup including the caption shortcode. * * @since 2.6.0 * @@ -216,7 +229,6 @@ function image_add_caption( $html, $id, $caption, $title, $align, $url, $size, $ */ return apply_filters( 'image_add_caption_shortcode', $shcode, $html ); } -add_filter( 'image_send_to_editor', 'image_add_caption', 20, 8 ); /** * Private preg_replace callback used in image_add_caption() @@ -240,7 +252,7 @@ function media_send_to_editor($html) { ?> '); * * @since 2.5.0 * - * @param string $file_id Index of the {@link $_FILES} array that the file was sent. Required. + * @param string $file_id Index of the `$_FILES` array that the file was sent. Required. * @param int $post_id The post ID of a post to attach the media item to. Required, but can * be set to 0, creating a media item that has no relationship to a post. * @param array $post_data Overwrite some of the attachment. Optional. - * @param array $overrides Override the {@link wp_handle_upload()} behavior. Optional. + * @param array $overrides Override the wp_handle_upload() behavior. Optional. * @return int|WP_Error ID of the attachment or a WP_Error object on failure. */ function media_handle_upload($file_id, $post_id, $post_data = array(), $overrides = array( 'test_form' => false )) { @@ -266,19 +278,19 @@ function media_handle_upload($file_id, $post_id, $post_data = array(), $override $time = $post->post_date; } - $name = $_FILES[$file_id]['name']; $file = wp_handle_upload($_FILES[$file_id], $overrides, $time); if ( isset($file['error']) ) return new WP_Error( 'upload_error', $file['error'] ); - $name_parts = pathinfo($name); - $name = trim( substr( $name, 0, -(1 + strlen($name_parts['extension'])) ) ); + $name = $_FILES[$file_id]['name']; + $ext = pathinfo( $name, PATHINFO_EXTENSION ); + $name = wp_basename( $name, ".$ext" ); $url = $file['url']; $type = $file['type']; $file = $file['file']; - $title = $name; + $title = sanitize_text_field( $name ); $content = ''; $excerpt = ''; @@ -301,6 +313,7 @@ function media_handle_upload($file_id, $post_id, $post_data = array(), $override /* translators: 1: audio track title, 2: artist name */ $content .= sprintf( __( '"%1$s" by %2$s.' ), $title, $meta['artist'] ); } else { + /* translators: 1: audio track title */ $content .= sprintf( __( '"%s".' ), $title ); } @@ -319,19 +332,26 @@ function media_handle_upload($file_id, $post_id, $post_data = array(), $override } - if ( ! empty( $meta['year'] ) ) + if ( ! empty( $meta['year'] ) ) { + /* translators: Audio file track information. 1: Year of audio track release */ $content .= ' ' . sprintf( __( 'Released: %d.' ), $meta['year'] ); + } if ( ! empty( $meta['track_number'] ) ) { $track_number = explode( '/', $meta['track_number'] ); - if ( isset( $track_number[1] ) ) + if ( isset( $track_number[1] ) ) { + /* translators: Audio file track information. 1: Audio track number, 2: Total audio tracks */ $content .= ' ' . sprintf( __( 'Track %1$s of %2$s.' ), number_format_i18n( $track_number[0] ), number_format_i18n( $track_number[1] ) ); - else + } else { + /* translators: Audio file track information. 1: Audio track number */ $content .= ' ' . sprintf( __( 'Track %1$s.' ), number_format_i18n( $track_number[0] ) ); + } } - if ( ! empty( $meta['genre'] ) ) + if ( ! empty( $meta['genre'] ) ) { + /* translators: Audio file genre information. 1: Audio genre name */ $content .= ' ' . sprintf( __( 'Genre: %s.' ), $meta['genre'] ); + } // Use image exif/iptc data for title and caption defaults if possible. } elseif ( 0 === strpos( $type, 'image/' ) && $image_meta = @wp_read_image_metadata( $file ) ) { @@ -355,8 +375,7 @@ function media_handle_upload($file_id, $post_id, $post_data = array(), $override ), $post_data ); // This should never be set as it would then overwrite an existing attachment. - if ( isset( $attachment['ID'] ) ) - unset( $attachment['ID'] ); + unset( $attachment['ID'] ); // Save the data $id = wp_insert_attachment($attachment, $file, $post_id); @@ -369,17 +388,17 @@ function media_handle_upload($file_id, $post_id, $post_data = array(), $override } /** - * This handles a sideloaded file in the same way as an uploaded file is handled by {@link media_handle_upload()} + * Handles a side-loaded file in the same way as an uploaded file is handled by media_handle_upload(). * * @since 2.6.0 * - * @param array $file_array Array similar to a {@link $_FILES} upload array - * @param int $post_id The post ID the media is associated with - * @param string $desc Description of the sideloaded file - * @param array $post_data allows you to overwrite some of the attachment - * @return int|object The ID of the attachment or a WP_Error on failure + * @param array $file_array Array similar to a `$_FILES` upload array. + * @param int $post_id The post ID the media is associated with. + * @param string $desc Optional. Description of the side-loaded file. Default null. + * @param array $post_data Optional. Post data to override. Default empty array. + * @return int|object The ID of the attachment or a WP_Error on failure. */ -function media_handle_sideload($file_array, $post_id, $desc = null, $post_data = array()) { +function media_handle_sideload( $file_array, $post_id, $desc = null, $post_data = array() ) { $overrides = array('test_form'=>false); $time = current_time( 'mysql' ); @@ -419,8 +438,7 @@ function media_handle_sideload($file_array, $post_id, $desc = null, $post_data = ), $post_data ); // This should never be set as it would then overwrite an existing attachment. - if ( isset( $attachment['ID'] ) ) - unset( $attachment['ID'] ); + unset( $attachment['ID'] ); // Save the attachment metadata $id = wp_insert_attachment($attachment, $file, $post_id); @@ -435,6 +453,8 @@ function media_handle_sideload($file_array, $post_id, $desc = null, $post_data = * * @since 2.5.0 * + * @global int $body_id + * * @param string|callable $content_func */ function wp_iframe($content_func /* ... */) { @@ -447,7 +467,7 @@ wp_enqueue_style( 'colors' ); // Check callback name for 'media' if ( ( is_array( $content_func ) && ! empty( $content_func[1] ) && 0 === strpos( (string) $content_func[1], 'media' ) ) || ( ! is_array( $content_func ) && 0 === strpos( $content_func, 'media' ) ) ) - wp_enqueue_style( 'media' ); + wp_enqueue_style( 'deprecated-media' ); wp_enqueue_style( 'ie' ); ?> \n"; + + echo ''; if ( empty( $_GET['chromeless'] ) ) { echo '
'; the_media_upload_tabs(); @@ -1724,10 +1786,15 @@ function media_upload_header() { } /** - * {@internal Missing Short Description}} + * Outputs the legacy media upload form. * * @since 2.5.0 * + * @global string $type + * @global string $tab + * @global bool $is_IE + * @global bool $is_opera + * * @param array $errors */ function media_upload_form( $errors = null ) { @@ -1788,7 +1855,7 @@ $post_params = array( ); /** - * Filter the media upload post parameters. + * Filters the media upload post parameters. * * @since 3.1.0 As 'swfupload_post_params' * @since 3.3.0 @@ -1821,7 +1888,7 @@ if ( wp_is_mobile() && strpos( $_SERVER['HTTP_USER_AGENT'], 'OS 7_' ) !== false } /** - * Filter the default Plupload settings. + * Filters the default Plupload settings. * * @since 3.3.0 * @@ -1883,7 +1950,7 @@ do_action( 'post-plupload-upload-ui' ); ?>

- +

@@ -1911,7 +1978,7 @@ do_action( 'post-html-upload-ui' ); } /** - * {@internal Missing Short Description}} + * Outputs the legacy media upload form for a given media type. * * @since 2.5.0 * @@ -1928,7 +1995,7 @@ function media_upload_type_form($type = 'file', $errors = null, $id = null) { $form_action_url = admin_url("media-upload.php?type=$type&tab=type&post_id=$post_id"); /** - * Filter the media upload form action URL. + * Filters the media upload form action URL. * * @since 2.6.0 * @@ -1974,14 +2041,14 @@ if ( $id ) { ?>

- +

" alt="" />'; }, @@ -2108,7 +2175,7 @@ jQuery(document).ready( function($) {

- 'save-all', 'style' => 'display: none;' ) ); ?> + 'save-all', 'style' => 'display: none;' ) ); ?> @@ -2268,10 +2339,17 @@ jQuery(function($){ } /** - * {@internal Missing Short Description}} + * Outputs the legacy media upload form for the media library. * * @since 2.5.0 * + * @global wpdb $wpdb + * @global WP_Query $wp_query + * @global WP_Locale $wp_locale + * @global string $type + * @global string $tab + * @global array $post_mime_types + * * @param array $errors */ function media_upload_library_form($errors) { @@ -2314,7 +2392,7 @@ function media_upload_library_form($errors) {

@@ -2441,7 +2519,7 @@ jQuery(function($){

- +

@@ -2484,21 +2562,21 @@ function wp_media_insert_url_form( $default_view = 'image' ) { return '

   

+

' . sprintf( __( 'Required fields are marked %s' ), '*' ) . '

- + - + @@ -2544,7 +2622,7 @@ function wp_media_insert_url_form( $default_view = 'image' ) {
- - * + +
- - * +

' . __('Link text, e.g. “Ransom Demands (PDF)”') . '

- ' . get_submit_button( __( 'Insert into Post' ), 'button', 'insertonlybutton', false ) . ' + ' . get_submit_button( __( 'Insert into Post' ), '', 'insertonlybutton', false ) . '
@@ -2556,6 +2634,8 @@ function wp_media_insert_url_form( $default_view = 'image' ) { * Displays the multi-file uploader message. * * @since 2.6.0 + * + * @global int $post_ID */ function media_upload_flash_bypass() { $browser_uploader = admin_url( 'media-new.php?browser-uploader' ); @@ -2571,7 +2651,6 @@ function media_upload_flash_bypass() {

ID, '_wp_attachment_image_alt', true ); $att_url = wp_get_attachment_url( $post->ID ); ?> -
+
ID ) ) : $image_edit_button = ''; @@ -2656,7 +2736,7 @@ function edit_form_image_editor( $post ) {
- class="wp_attachment_image" id="media-head-"> + class="wp_attachment_image wp-clearfix" id="media-head-">

@@ -2694,6 +2774,27 @@ function edit_form_image_editor( $post ) { echo wp_video_shortcode( $attr ); + elseif ( isset( $thumb_url[0] ) ): + + ?> +
+

+ +

+
+
@@ -2721,7 +2822,7 @@ function edit_form_image_editor( $post ) { ); ?> - @@ -2735,14 +2836,15 @@ function edit_form_image_editor( $post ) { } /** - * Displays non-editable attachment metadata in the publish metabox + * Displays non-editable attachment metadata in the publish meta box. * * @since 3.5.0 */ function attachment_submitbox_metadata() { $post = get_post(); - $filename = esc_html( wp_basename( $post->guid ) ); + $file = get_attached_file( $post->ID ); + $filename = esc_html( wp_basename( $file ) ); $media_dims = ''; $meta = wp_get_attachment_metadata( $post->ID ); @@ -2754,8 +2856,8 @@ function attachment_submitbox_metadata() { $att_url = wp_get_attachment_url( $post->ID ); ?>
- - + +
@@ -2777,7 +2879,6 @@ function attachment_submitbox_metadata() {
ID ); $file_size = false; if ( isset( $meta['filesize'] ) ) @@ -2795,7 +2896,7 @@ function attachment_submitbox_metadata() { if ( preg_match( '#^(audio|video)/#', $post->post_mime_type ) ) { /** - * Filter the audio and video metadata fields to be shown in the publish meta box. + * Filters the audio and video metadata fields to be shown in the publish meta box. * * The key for each item in the array should correspond to an attachment * metadata key, and the value should be the desired label. @@ -2833,7 +2934,7 @@ function attachment_submitbox_metadata() { } /** - * Filter the audio attachment metadata fields to be shown in the publish meta box. + * Filters the audio attachment metadata fields to be shown in the publish meta box. * * The key for each item in the array should correspond to an attachment * metadata key, and the value should be the desired label. @@ -2868,21 +2969,6 @@ function attachment_submitbox_metadata() { endif; } -add_filter( 'async_upload_image', 'get_media_item', 10, 2 ); -add_filter( 'async_upload_audio', 'get_media_item', 10, 2 ); -add_filter( 'async_upload_video', 'get_media_item', 10, 2 ); -add_filter( 'async_upload_file', 'get_media_item', 10, 2 ); - -add_action( 'media_upload_image', 'wp_media_upload_handler' ); -add_action( 'media_upload_audio', 'wp_media_upload_handler' ); -add_action( 'media_upload_video', 'wp_media_upload_handler' ); -add_action( 'media_upload_file', 'wp_media_upload_handler' ); - -add_filter( 'media_upload_gallery', 'media_upload_gallery' ); -add_filter( 'media_upload_library', 'media_upload_library' ); - -add_action( 'attachment_submitbox_misc_actions', 'attachment_submitbox_metadata' ); - /** * Parse ID3v2, ID3v1, and getID3 comments to extract usable data * @@ -2936,13 +3022,19 @@ function wp_add_id3_tag_data( &$metadata, $data ) { * @return array|bool Returns array of metadata, if found. */ function wp_read_video_metadata( $file ) { - if ( ! file_exists( $file ) ) + if ( ! file_exists( $file ) ) { return false; + } $metadata = array(); - if ( ! class_exists( 'getID3' ) ) + if ( ! defined( 'GETID3_TEMP_DIR' ) ) { + define( 'GETID3_TEMP_DIR', get_temp_dir() ); + } + + if ( ! class_exists( 'getID3', false ) ) { require( ABSPATH . WPINC . '/ID3/getid3.php' ); + } $id3 = new getID3(); $data = $id3->analyze( $file ); @@ -2989,15 +3081,21 @@ function wp_read_video_metadata( $file ) { * @since 3.6.0 * * @param string $file Path to file. - * @return array|boolean Returns array of metadata, if found. + * @return array|bool Returns array of metadata, if found. */ function wp_read_audio_metadata( $file ) { - if ( ! file_exists( $file ) ) + if ( ! file_exists( $file ) ) { return false; + } $metadata = array(); - if ( ! class_exists( 'getID3' ) ) + if ( ! defined( 'GETID3_TEMP_DIR' ) ) { + define( 'GETID3_TEMP_DIR', get_temp_dir() ); + } + + if ( ! class_exists( 'getID3', false ) ) { require( ABSPATH . WPINC . '/ID3/getid3.php' ); + } $id3 = new getID3(); $data = $id3->analyze( $file ); @@ -3041,7 +3139,7 @@ function wp_media_attach_action( $parent_id, $action = 'attach' ) { } if ( ! current_user_can( 'edit_post', $parent_id ) ) { - wp_die( __( 'You are not allowed to edit this post.' ) ); + wp_die( __( 'Sorry, you are not allowed to edit this post.' ) ); } $ids = array(); foreach ( (array) $_REQUEST['media'] as $att_id ) {