Archived
Updates
This commit is contained in:
1 parent
70d2335bba
commit
7428b67da5
1086 files changed
+94145
-59082
No files matched your search
+191
-96
@@ -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.
|
||||
*
|
||||
@@ -223,24 +239,23 @@ function _cleanup_image_add_caption( $matches ) {
|
||||
function media_send_to_editor($html) {
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
/* <![CDATA[ */
|
||||
var win = window.dialogArguments || opener || parent || top;
|
||||
win.send_to_editor('<?php echo addslashes($html); ?>');
|
||||
/* ]]> */
|
||||
</script>
|
||||
<?php
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* This handles the file upload POST itself, creating the attachment post.
|
||||
* Save a file submitted from a POST request and create an attachment post for it.
|
||||
*
|
||||
* @since 2.5.0
|
||||
*
|
||||
* @param string $file_id Index into the {@link $_FILES} array of the upload
|
||||
* @param int $post_id The post ID the media is associated with
|
||||
* @param array $post_data allows you to overwrite some of the attachment
|
||||
* @param array $overrides allows you to override the {@link wp_handle_upload()} behavior
|
||||
* @param string $file_id Index of the {@link $_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.
|
||||
* @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 )) {
|
||||
@@ -265,31 +280,31 @@ function media_handle_upload($file_id, $post_id, $post_data = array(), $override
|
||||
$file = $file['file'];
|
||||
$title = $name;
|
||||
$content = '';
|
||||
$excerpt = '';
|
||||
|
||||
if ( preg_match( '#^audio#', $type ) ) {
|
||||
$meta = wp_read_audio_metadata( $file );
|
||||
|
||||
if ( ! empty( $meta['title'] ) )
|
||||
if ( ! empty( $meta['title'] ) ) {
|
||||
$title = $meta['title'];
|
||||
|
||||
$content = '';
|
||||
}
|
||||
|
||||
if ( ! empty( $title ) ) {
|
||||
|
||||
if ( ! empty( $meta['album'] ) && ! empty( $meta['artist'] ) ) {
|
||||
/* translators: 1: audio track title, 2: album title, 3: artist name */
|
||||
$content .= sprintf( __( '"%1$s" from %2$s by %3$s.' ), $title, $meta['album'], $meta['artist'] );
|
||||
} else if ( ! empty( $meta['album'] ) ) {
|
||||
} elseif ( ! empty( $meta['album'] ) ) {
|
||||
/* translators: 1: audio track title, 2: album title */
|
||||
$content .= sprintf( __( '"%1$s" from %2$s.' ), $title, $meta['album'] );
|
||||
} else if ( ! empty( $meta['artist'] ) ) {
|
||||
} elseif ( ! empty( $meta['artist'] ) ) {
|
||||
/* translators: 1: audio track title, 2: artist name */
|
||||
$content .= sprintf( __( '"%1$s" by %2$s.' ), $title, $meta['artist'] );
|
||||
} else {
|
||||
$content .= sprintf( __( '"%s".' ), $title );
|
||||
}
|
||||
|
||||
} else if ( ! empty( $meta['album'] ) ) {
|
||||
} elseif ( ! empty( $meta['album'] ) ) {
|
||||
|
||||
if ( ! empty( $meta['artist'] ) ) {
|
||||
/* translators: 1: audio album title, 2: artist name */
|
||||
@@ -298,7 +313,7 @@ function media_handle_upload($file_id, $post_id, $post_data = array(), $override
|
||||
$content .= $meta['album'] . '.';
|
||||
}
|
||||
|
||||
} else if ( ! empty( $meta['artist'] ) ) {
|
||||
} elseif ( ! empty( $meta['artist'] ) ) {
|
||||
|
||||
$content .= $meta['artist'] . '.';
|
||||
|
||||
@@ -319,11 +334,14 @@ function media_handle_upload($file_id, $post_id, $post_data = array(), $override
|
||||
$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 ) ) {
|
||||
if ( trim( $image_meta['title'] ) && ! is_numeric( sanitize_title( $image_meta['title'] ) ) )
|
||||
} 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'] ) )
|
||||
$content = $image_meta['caption'];
|
||||
}
|
||||
|
||||
if ( trim( $image_meta['caption'] ) ) {
|
||||
$excerpt = $image_meta['caption'];
|
||||
}
|
||||
}
|
||||
|
||||
// Construct the attachment array
|
||||
@@ -333,6 +351,7 @@ function media_handle_upload($file_id, $post_id, $post_data = array(), $override
|
||||
'post_parent' => $post_id,
|
||||
'post_title' => $title,
|
||||
'post_content' => $content,
|
||||
'post_excerpt' => $excerpt,
|
||||
), $post_data );
|
||||
|
||||
// This should never be set as it would then overwrite an existing attachment.
|
||||
@@ -416,7 +435,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();
|
||||
@@ -432,11 +451,9 @@ if ( ( is_array( $content_func ) && ! empty( $content_func[1] ) && 0 === strpos(
|
||||
wp_enqueue_style( 'ie' );
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
addLoadEvent = function(func){if(typeof jQuery!="undefined")jQuery(document).ready(func);else if(typeof wpOnload!='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
|
||||
var ajaxurl = '<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>', pagenow = 'media-upload-popup', adminpage = 'media-upload-popup',
|
||||
isRtl = <?php echo (int) is_rtl(); ?>;
|
||||
//]]>
|
||||
</script>
|
||||
<?php
|
||||
/** This action is documented in wp-admin/admin-header.php */
|
||||
@@ -478,7 +495,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'.
|
||||
@@ -554,6 +571,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;
|
||||
|
||||
@@ -571,7 +596,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
|
||||
@@ -596,8 +621,8 @@ function media_upload_form_handler() {
|
||||
$errors = null;
|
||||
|
||||
if ( isset($_POST['send']) ) {
|
||||
$keys = array_keys($_POST['send']);
|
||||
$send_id = (int) array_shift($keys);
|
||||
$keys = array_keys( $_POST['send'] );
|
||||
$send_id = (int) reset( $keys );
|
||||
}
|
||||
|
||||
if ( !empty($_POST['attachments']) ) foreach ( $_POST['attachments'] as $attachment_id => $attachment ) {
|
||||
@@ -658,10 +683,8 @@ function media_upload_form_handler() {
|
||||
|
||||
if ( isset($_POST['insert-gallery']) || isset($_POST['update-gallery']) ) { ?>
|
||||
<script type="text/javascript">
|
||||
/* <![CDATA[ */
|
||||
var win = window.dialogArguments || opener || parent || top;
|
||||
win.tb_remove();
|
||||
/* ]]> */
|
||||
</script>
|
||||
<?php
|
||||
exit;
|
||||
@@ -701,7 +724,7 @@ function media_upload_form_handler() {
|
||||
*
|
||||
* @since 2.5.0
|
||||
*
|
||||
* @return mixed
|
||||
* @return null|string
|
||||
*/
|
||||
function wp_media_upload_handler() {
|
||||
$errors = array();
|
||||
@@ -739,7 +762,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
|
||||
@@ -806,9 +829,10 @@ function wp_media_upload_handler() {
|
||||
* @param string $file The URL of the image to download
|
||||
* @param int $post_id The post ID the media is to be associated with
|
||||
* @param string $desc Optional. Description of the image
|
||||
* @param string $return Optional. What to return: an image tag (default) or only the src.
|
||||
* @return string|WP_Error Populated HTML img tag on success
|
||||
*/
|
||||
function media_sideload_image( $file, $post_id, $desc = null ) {
|
||||
function media_sideload_image( $file, $post_id, $desc = null, $return = 'html' ) {
|
||||
if ( ! empty( $file ) ) {
|
||||
// Set variables for storage, fix file filename for query strings.
|
||||
preg_match( '/[^\?]+\.(jpe?g|jpe|gif|png)\b/i', $file, $matches );
|
||||
@@ -837,9 +861,15 @@ function media_sideload_image( $file, $post_id, $desc = null ) {
|
||||
|
||||
// Finally check to make sure the file has been saved, then return the HTML.
|
||||
if ( ! empty( $src ) ) {
|
||||
if ( $return === 'src' ) {
|
||||
return $src;
|
||||
}
|
||||
|
||||
$alt = isset( $desc ) ? esc_attr( $desc ) : '';
|
||||
$html = "<img src='$src' alt='$alt' />";
|
||||
return $html;
|
||||
} else {
|
||||
return new WP_Error( 'image_sideload_failed' );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -848,7 +878,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();
|
||||
@@ -871,7 +901,7 @@ function media_upload_gallery() {
|
||||
*
|
||||
* @since 2.5.0
|
||||
*
|
||||
* @return unknown
|
||||
* @return string|null
|
||||
*/
|
||||
function media_upload_library() {
|
||||
$errors = array();
|
||||
@@ -892,7 +922,7 @@ function media_upload_library() {
|
||||
*
|
||||
* @since 2.7.0
|
||||
*
|
||||
* @param object $post
|
||||
* @param WP_Post $post
|
||||
* @param string $checked
|
||||
* @return string
|
||||
*/
|
||||
@@ -920,12 +950,11 @@ function image_align_input_fields( $post, $checked = '' ) {
|
||||
*
|
||||
* @since 2.7.0
|
||||
*
|
||||
* @param object $post
|
||||
* @param WP_Post $post
|
||||
* @param bool|string $check
|
||||
* @return array
|
||||
*/
|
||||
function image_size_input_fields( $post, $check = '' ) {
|
||||
|
||||
/**
|
||||
* Filter the names and labels of the default image sizes.
|
||||
*
|
||||
@@ -941,50 +970,53 @@ function image_size_input_fields( $post, $check = '' ) {
|
||||
'full' => __( 'Full Size' )
|
||||
) );
|
||||
|
||||
if ( empty($check) )
|
||||
$check = get_user_setting('imgsize', 'medium');
|
||||
if ( empty( $check ) ) {
|
||||
$check = get_user_setting('imgsize', 'medium');
|
||||
}
|
||||
$out = array();
|
||||
|
||||
foreach ( $size_names as $size => $label ) {
|
||||
$downsize = image_downsize($post->ID, $size);
|
||||
$checked = '';
|
||||
foreach ( $size_names as $size => $label ) {
|
||||
$downsize = image_downsize( $post->ID, $size );
|
||||
$checked = '';
|
||||
|
||||
// Is this size selectable?
|
||||
$enabled = ( $downsize[3] || 'full' == $size );
|
||||
$css_id = "image-size-{$size}-{$post->ID}";
|
||||
// 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 ( $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.
|
||||
*/
|
||||
$check = $size;
|
||||
// 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 = '';
|
||||
}
|
||||
|
||||
$html = "<div class='image-size-item'><input type='radio' " . disabled( $enabled, false, false ) . "name='attachments[$post->ID][image-size]' id='{$css_id}' value='{$size}'$checked />";
|
||||
|
||||
$html .= "<label for='{$css_id}'>$label</label>";
|
||||
|
||||
// Only show the dimensions if that choice is available.
|
||||
if ( $enabled )
|
||||
$html .= " <label for='{$css_id}' class='help'>" . sprintf( "(%d × %d)", $downsize[1], $downsize[2] ). "</label>";
|
||||
|
||||
$html .= '</div>';
|
||||
|
||||
$out[] = $html;
|
||||
} elseif ( ! $check && $enabled && 'thumbnail' != $size ) {
|
||||
/*
|
||||
* If $check is not enabled, default to the first available size
|
||||
* that's bigger than a thumbnail.
|
||||
*/
|
||||
$check = $size;
|
||||
$checked = " checked='checked'";
|
||||
}
|
||||
|
||||
return array(
|
||||
'label' => __('Size'),
|
||||
'input' => 'html',
|
||||
'html' => join("\n", $out),
|
||||
);
|
||||
$html = "<div class='image-size-item'><input type='radio' " . disabled( $enabled, false, false ) . "name='attachments[$post->ID][image-size]' id='{$css_id}' value='{$size}'$checked />";
|
||||
|
||||
$html .= "<label for='{$css_id}'>$label</label>";
|
||||
|
||||
// Only show the dimensions if that choice is available.
|
||||
if ( $enabled ) {
|
||||
$html .= " <label for='{$css_id}' class='help'>" . sprintf( "(%d × %d)", $downsize[1], $downsize[2] ). "</label>";
|
||||
}
|
||||
$html .= '</div>';
|
||||
|
||||
$out[] = $html;
|
||||
}
|
||||
|
||||
return array(
|
||||
'label' => __( 'Size' ),
|
||||
'input' => 'html',
|
||||
'html' => join( "\n", $out ),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -992,7 +1024,7 @@ function image_size_input_fields( $post, $check = '' ) {
|
||||
*
|
||||
* @since 2.7.0
|
||||
*
|
||||
* @param object $post
|
||||
* @param WP_Post $post
|
||||
* @param string $url_type
|
||||
* @return string
|
||||
*/
|
||||
@@ -1075,8 +1107,8 @@ function media_post_single_attachment_fields_to_edit( $form_fields, $post ) {
|
||||
*
|
||||
* @since 2.5.0
|
||||
*
|
||||
* @param WP_Post $post The WP_Post attachment object.
|
||||
* @param array $attachment An array of attachment metadata.
|
||||
* @param array $post The WP_Post attachment object converted to an array.
|
||||
* @param array $attachment An array of attachment metadata.
|
||||
* @return array Filtered attachment post object.
|
||||
*/
|
||||
function image_attachment_fields_to_save( $post, $attachment ) {
|
||||
@@ -1101,7 +1133,7 @@ add_filter( 'attachment_fields_to_save', 'image_attachment_fields_to_save', 10,
|
||||
* @param string $html
|
||||
* @param integer $attachment_id
|
||||
* @param array $attachment
|
||||
* @return array
|
||||
* @return string
|
||||
*/
|
||||
function image_media_send_to_editor($html, $attachment_id, $attachment) {
|
||||
$post = get_post($attachment_id);
|
||||
@@ -1125,7 +1157,7 @@ add_filter('media_send_to_editor', 'image_media_send_to_editor', 10, 3);
|
||||
*
|
||||
* @since 2.5.0
|
||||
*
|
||||
* @param object $post
|
||||
* @param WP_Post $post
|
||||
* @param array $errors
|
||||
* @return array
|
||||
*/
|
||||
@@ -1325,7 +1357,7 @@ function get_media_item( $attachment_id, $args = null ) {
|
||||
|
||||
$post_mime_types = get_post_mime_types();
|
||||
$keys = array_keys( wp_match_mime_types( array_keys( $post_mime_types ), $post->post_mime_type ) );
|
||||
$type = array_shift( $keys );
|
||||
$type = reset( $keys );
|
||||
$type_html = "<input type='hidden' id='type-of-$attachment_id' value='" . esc_attr( $type ) . "' />";
|
||||
|
||||
$form_fields = get_attachment_fields_to_edit( $post, $r['errors'] );
|
||||
@@ -1696,13 +1728,13 @@ function media_upload_header() {
|
||||
*
|
||||
* @since 2.5.0
|
||||
*
|
||||
* @param unknown_type $errors
|
||||
* @param array $errors
|
||||
*/
|
||||
function media_upload_form( $errors = null ) {
|
||||
global $type, $tab, $is_IE, $is_opera;
|
||||
|
||||
if ( ! _device_can_upload() ) {
|
||||
echo '<p>' . sprintf( __('The web browser on your device cannot be used to upload files. You may be able to use the <a href="%s">native app for your device</a> instead.'), 'http://apps.wordpress.org/' ) . '</p>';
|
||||
echo '<p>' . sprintf( __('The web browser on your device cannot be used to upload files. You may be able to use the <a href="%s">native app for your device</a> instead.'), 'https://apps.wordpress.org/' ) . '</p>';
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1780,6 +1812,14 @@ $plupload_init = array(
|
||||
'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.
|
||||
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.
|
||||
*
|
||||
@@ -1802,7 +1842,7 @@ if( !$large_size_w )
|
||||
$large_size_w = 1024;
|
||||
?>
|
||||
var resize_height = <?php echo $large_size_h; ?>, resize_width = <?php echo $large_size_w; ?>,
|
||||
wpUploaderInit = <?php echo json_encode($plupload_init); ?>;
|
||||
wpUploaderInit = <?php echo wp_json_encode( $plupload_init ); ?>;
|
||||
</script>
|
||||
|
||||
<div id="plupload-upload-ui" class="hide-if-no-js">
|
||||
@@ -1912,7 +1952,6 @@ function media_upload_type_form($type = 'file', $errors = null, $id = null) {
|
||||
<?php media_upload_form( $errors ); ?>
|
||||
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
jQuery(function($){
|
||||
var preloaded = $(".media-item.preloaded");
|
||||
if ( preloaded.length > 0 ) {
|
||||
@@ -1920,7 +1959,6 @@ jQuery(function($){
|
||||
}
|
||||
updateMediaForm();
|
||||
});
|
||||
//]]>
|
||||
</script>
|
||||
<div id="media-items"><?php
|
||||
|
||||
@@ -1975,7 +2013,6 @@ function media_upload_type_url_form($type = null, $errors = null, $id = null) {
|
||||
<h3 class="media-title"><?php _e('Insert media from another website'); ?></h3>
|
||||
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
var addExtImage = {
|
||||
|
||||
width : '',
|
||||
@@ -2052,21 +2089,19 @@ var addExtImage = {
|
||||
return false;
|
||||
}
|
||||
|
||||
document.getElementById('status_img').innerHTML = '<img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" width="16" />';
|
||||
document.getElementById('status_img').innerHTML = '<img src="<?php echo esc_url( admin_url( 'images/spinner-2x.gif' ) ); ?>" alt="" width="16" height="16" />';
|
||||
t.preloadImg = new Image();
|
||||
t.preloadImg.onload = t.updateImageData;
|
||||
t.preloadImg.onerror = t.resetImageData;
|
||||
t.preloadImg.src = src;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
jQuery(document).ready( function($) {
|
||||
$('.media-types input').click( function() {
|
||||
$('table.describe').toggleClass('not-image', $('#not-image').prop('checked') );
|
||||
});
|
||||
});
|
||||
|
||||
//]]>
|
||||
</script>
|
||||
|
||||
<div id="media-items">
|
||||
@@ -2269,7 +2304,7 @@ function media_upload_library_form($errors) {
|
||||
|
||||
?>
|
||||
|
||||
<form id="filter" action="" method="get">
|
||||
<form id="filter" method="get">
|
||||
<input type="hidden" name="type" value="<?php echo esc_attr( $type ); ?>" />
|
||||
<input type="hidden" name="tab" value="<?php echo esc_attr( $tab ); ?>" />
|
||||
<input type="hidden" name="post_id" value="<?php echo (int) $post_id; ?>" />
|
||||
@@ -2317,7 +2352,7 @@ foreach ( $post_mime_types as $mime_type => $label ) {
|
||||
/**
|
||||
* Filter the media upload mime type list items.
|
||||
*
|
||||
* Returned values should begin with an <li> tag.
|
||||
* Returned values should begin with an `<li>` tag.
|
||||
*
|
||||
* @since 3.1.0
|
||||
*
|
||||
@@ -2629,13 +2664,13 @@ function edit_form_image_editor( $post ) {
|
||||
<?php if ( $open ) wp_image_editor( $attachment_id ); ?>
|
||||
</div>
|
||||
<?php
|
||||
elseif ( $attachment_id && 0 === strpos( $post->post_mime_type, 'audio/' ) ):
|
||||
elseif ( $attachment_id && wp_attachment_is( 'audio', $post ) ):
|
||||
|
||||
wp_maybe_generate_attachment_metadata( $post );
|
||||
|
||||
echo wp_audio_shortcode( array( 'src' => $att_url ) );
|
||||
|
||||
elseif ( $attachment_id && 0 === strpos( $post->post_mime_type, 'video/' ) ):
|
||||
elseif ( $attachment_id && wp_attachment_is( 'video', $post ) ):
|
||||
|
||||
wp_maybe_generate_attachment_metadata( $post );
|
||||
|
||||
@@ -2860,7 +2895,7 @@ function wp_add_id3_tag_data( &$metadata, $data ) {
|
||||
foreach ( array( 'id3v2', 'id3v1' ) as $version ) {
|
||||
if ( ! empty( $data[$version]['comments'] ) ) {
|
||||
foreach ( $data[$version]['comments'] as $key => $list ) {
|
||||
if ( ! empty( $list ) ) {
|
||||
if ( 'length' !== $key && ! empty( $list ) ) {
|
||||
$metadata[$key] = reset( $list );
|
||||
// Fix bug in byte stream analysis.
|
||||
if ( 'terms_of_use' === $key && 0 === strpos( $metadata[$key], 'yright notice.' ) )
|
||||
@@ -2898,7 +2933,7 @@ function wp_add_id3_tag_data( &$metadata, $data ) {
|
||||
* @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_video_metadata( $file ) {
|
||||
if ( ! file_exists( $file ) )
|
||||
@@ -2922,7 +2957,7 @@ function wp_read_video_metadata( $file ) {
|
||||
if ( ! empty( $data['mime_type'] ) )
|
||||
$metadata['mime_type'] = $data['mime_type'];
|
||||
if ( ! empty( $data['playtime_seconds'] ) )
|
||||
$metadata['length'] = (int) ceil( $data['playtime_seconds'] );
|
||||
$metadata['length'] = (int) round( $data['playtime_seconds'] );
|
||||
if ( ! empty( $data['playtime_string'] ) )
|
||||
$metadata['length_formatted'] = $data['playtime_string'];
|
||||
if ( ! empty( $data['video']['resolution_x'] ) )
|
||||
@@ -2978,7 +3013,7 @@ function wp_read_audio_metadata( $file ) {
|
||||
if ( ! empty( $data['mime_type'] ) )
|
||||
$metadata['mime_type'] = $data['mime_type'];
|
||||
if ( ! empty( $data['playtime_seconds'] ) )
|
||||
$metadata['length'] = (int) ceil( $data['playtime_seconds'] );
|
||||
$metadata['length'] = (int) round( $data['playtime_seconds'] );
|
||||
if ( ! empty( $data['playtime_string'] ) )
|
||||
$metadata['length_formatted'] = $data['playtime_string'];
|
||||
|
||||
@@ -2986,3 +3021,63 @@ function wp_read_audio_metadata( $file ) {
|
||||
|
||||
return $metadata;
|
||||
}
|
||||
|
||||
/**
|
||||
* Encapsulate logic for Attach/Detach actions
|
||||
*
|
||||
* @since 4.2.0
|
||||
*
|
||||
* @global wpdb $wpdb WordPress database abstraction object.
|
||||
*
|
||||
* @param int $parent_id Attachment parent ID.
|
||||
* @param string $action Optional. Attach/detach action. Accepts 'attach' or 'detach'.
|
||||
* Default 'attach'.
|
||||
*/
|
||||
function wp_media_attach_action( $parent_id, $action = 'attach' ) {
|
||||
global $wpdb;
|
||||
|
||||
if ( ! $parent_id ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( ! current_user_can( 'edit_post', $parent_id ) ) {
|
||||
wp_die( __( 'You are not allowed to edit this post.' ) );
|
||||
}
|
||||
$ids = array();
|
||||
foreach ( (array) $_REQUEST['media'] as $att_id ) {
|
||||
$att_id = (int) $att_id;
|
||||
|
||||
if ( ! current_user_can( 'edit_post', $att_id ) ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$ids[] = $att_id;
|
||||
}
|
||||
|
||||
if ( ! empty( $ids ) ) {
|
||||
$ids_string = implode( ',', $ids );
|
||||
if ( 'attach' === $action ) {
|
||||
$result = $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET post_parent = %d WHERE post_type = 'attachment' AND ID IN ( $ids_string )", $parent_id ) );
|
||||
} else {
|
||||
$result = $wpdb->query( "UPDATE $wpdb->posts SET post_parent = 0 WHERE post_type = 'attachment' AND ID IN ( $ids_string )" );
|
||||
}
|
||||
|
||||
foreach ( $ids as $att_id ) {
|
||||
clean_attachment_cache( $att_id );
|
||||
}
|
||||
}
|
||||
|
||||
if ( isset( $result ) ) {
|
||||
$location = 'upload.php';
|
||||
if ( $referer = wp_get_referer() ) {
|
||||
if ( false !== strpos( $referer, 'upload.php' ) ) {
|
||||
$location = remove_query_arg( array( 'attached', 'detach' ), $referer );
|
||||
}
|
||||
}
|
||||
|
||||
$key = 'attach' === $action ? 'attached' : 'detach';
|
||||
$location = add_query_arg( array( $key => $result ), $location );
|
||||
wp_redirect( $location );
|
||||
exit;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user