__('From Computer'), // handler action suffix => tab text
'type_url' => __('From URL'),
'gallery' => __('Gallery'),
'library' => __('Media Library')
);
return apply_filters('media_upload_tabs', $_default_tabs);
}
/**
* {@internal Missing Short Description}}
*
* @since 2.5.0
*
* @param unknown_type $tabs
* @return unknown
*/
function update_gallery_tab($tabs) {
global $wpdb;
if ( !isset($_REQUEST['post_id']) ) {
unset($tabs['gallery']);
return $tabs;
}
$post_id = intval($_REQUEST['post_id']);
if ( $post_id )
$attachments = intval( $wpdb->get_var( $wpdb->prepare( "SELECT count(*) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_status != 'trash' AND post_parent = %d", $post_id ) ) );
if ( empty($attachments) ) {
unset($tabs['gallery']);
return $tabs;
}
$tabs['gallery'] = sprintf(__('Gallery (%s)'), "$attachments");
return $tabs;
}
add_filter('media_upload_tabs', 'update_gallery_tab');
/**
* {@internal Missing Short Description}}
*
* @since 2.5.0
*/
function the_media_upload_tabs() {
global $redir_tab, $is_iphone;
$tabs = media_upload_tabs();
if ( $is_iphone ) {
unset($tabs['type']);
$default = 'type_url';
} else {
$default = 'type';
}
if ( !empty($tabs) ) {
echo "
\n";
}
}
/**
* {@internal Missing Short Description}}
*
* @since 2.5.0
*
* @param unknown_type $id
* @param unknown_type $alt
* @param unknown_type $title
* @param unknown_type $align
* @param unknown_type $url
* @param unknown_type $rel
* @param unknown_type $size
* @return unknown
*/
function get_image_send_to_editor($id, $caption, $title, $align, $url='', $rel = false, $size='medium', $alt = '') {
$html = get_image_tag($id, $alt, $title, $align, $size);
$rel = $rel ? ' rel="attachment wp-att-' . esc_attr($id).'"' : '';
if ( $url )
$html = '$html";
$html = apply_filters( 'image_send_to_editor', $html, $id, $caption, $title, $align, $url, $size, $alt );
return $html;
}
/**
* {@internal Missing Short Description}}
*
* @since 2.6.0
*
* @param unknown_type $html
* @param unknown_type $id
* @param unknown_type $alt
* @param unknown_type $title
* @param unknown_type $align
* @param unknown_type $url
* @param unknown_type $size
* @return unknown
*/
function image_add_caption( $html, $id, $caption, $title, $align, $url, $size, $alt = '' ) {
if ( empty($caption) || apply_filters( 'disable_captions', '' ) )
return $html;
$id = ( 0 < (int) $id ) ? 'attachment_' . $id : '';
if ( ! preg_match( '/width=["\']([0-9]+)/', $html, $matches ) )
return $html;
$width = $matches[1];
$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( '/\n+/', '
', str_replace('"', '"', $caption) );
$html = preg_replace( '/(class=["\'][^\'"]*)align(none|left|right|center)\s?/', '$1', $html );
if ( empty($align) )
$align = 'none';
$shcode = '[caption id="' . $id . '" align="align' . $align
. '" width="' . $width . '" caption="' . $caption . '"]' . $html . '[/caption]';
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()
function _cleanup_image_add_caption($str) {
if ( isset($str[0]) ) {
// remove any line breaks from inside the tags
$s = preg_replace( '/[\r\n\t]+/', ' ', $str[0]);
// look for single quotes inside html attributes (for example in title)
$s = preg_replace_callback( '/="[^"]+"/', '_cleanup_image_add_caption2', $s );
return str_replace( '"', "'", $s );
}
return '';
}
// Private, preg_replace callback used in image_add_caption()
function _cleanup_image_add_caption2($str) {
return str_replace( "'", ''', $str );
}
/**
* {@internal Missing Short Description}}
*
* @since 2.5.0
*
* @param unknown_type $html
*/
function media_send_to_editor($html) {
?>
false )) {
$time = current_time('mysql');
if ( $post = get_post($post_id) ) {
if ( substr( $post->post_date, 0, 4 ) > 0 )
$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'])) ) );
$url = $file['url'];
$type = $file['type'];
$file = $file['file'];
$title = $name;
$content = '';
// 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'];
if ( trim( $image_meta['caption'] ) )
$content = $image_meta['caption'];
}
// Construct the attachment array
$attachment = array_merge( array(
'post_mime_type' => $type,
'guid' => $url,
'post_parent' => $post_id,
'post_title' => $title,
'post_content' => $content,
), $post_data );
// This should never be set as it would then overwrite an existing attachment.
if ( isset( $attachment['ID'] ) )
unset( $attachment['ID'] );
// Save the data
$id = wp_insert_attachment($attachment, $file, $post_id);
if ( !is_wp_error($id) ) {
wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) );
}
return $id;
}
/**
* This handles a sideloaded file in the same way as an uploaded file is handled by {@link 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
*/
function media_handle_sideload($file_array, $post_id, $desc = null, $post_data = array()) {
$overrides = array('test_form'=>false);
$file = wp_handle_sideload($file_array, $overrides);
if ( isset($file['error']) )
return new WP_Error( 'upload_error', $file['error'] );
$url = $file['url'];
$type = $file['type'];
$file = $file['file'];
$title = preg_replace('/\.[^.]+$/', '', basename($file));
$content = '';
// 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'];
if ( trim( $image_meta['caption'] ) )
$content = $image_meta['caption'];
}
if ( isset( $desc ) )
$title = $desc;
// Construct the attachment array
$attachment = array_merge( array(
'post_mime_type' => $type,
'guid' => $url,
'post_parent' => $post_id,
'post_title' => $title,
'post_content' => $content,
), $post_data );
// This should never be set as it would then overwrite an existing attachment.
if ( isset( $attachment['ID'] ) )
unset( $attachment['ID'] );
// Save the attachment metadata
$id = wp_insert_attachment($attachment, $file, $post_id);
if ( !is_wp_error($id) )
wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) );
return $id;
}
/**
* {@internal Missing Short Description}}
*
* Wrap iframe content (produced by $content_func) in a doctype, html head/body
* etc any additional function args will be passed to content_func.
*
* @since 2.5.0
*
* @param unknown_type $content_func
*/
function wp_iframe($content_func /* ... */) {
_wp_admin_html_begin();
?>
› —
class="no-js">