Source
File: wp-admin/includes/media.php
function media_upload_library_form( $errors ) {
global $wpdb, $wp_query, $wp_locale, $type, $tab, $post_mime_types;
media_upload_header();
$post_id = isset( $_REQUEST['post_id'] ) ? intval( $_REQUEST['post_id'] ) : 0;
$form_action_url = admin_url( "media-upload.php?type=$type&tab=library&post_id=$post_id" );
/** This filter is documented in wp-admin/includes/media.php */
$form_action_url = apply_filters( 'media_upload_form_url', $form_action_url, $type );
$form_class = 'media-upload-form validate';
if ( get_user_setting( 'uploader' ) ) {
$form_class .= ' html-uploader';
}
$q = $_GET;
$q['posts_per_page'] = 10;
$q['paged'] = isset( $q['paged'] ) ? intval( $q['paged'] ) : 0;
if ( $q['paged'] < 1 ) {
$q['paged'] = 1;
}
$q['offset'] = ( $q['paged'] - 1 ) * 10;
if ( $q['offset'] < 1 ) {
$q['offset'] = 0;
}
list($post_mime_types, $avail_post_mime_types) = wp_edit_attachments_query( $q );
?>
<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; ?>" />
<input type="hidden" name="post_mime_type" value="<?php echo isset( $_GET['post_mime_type'] ) ? esc_attr( $_GET['post_mime_type'] ) : ''; ?>" />
<input type="hidden" name="context" value="<?php echo isset( $_GET['context'] ) ? esc_attr( $_GET['context'] ) : ''; ?>" />
<p id="media-search" class="search-box">
<label class="screen-reader-text" for="media-search-input"><?php _e( 'Search Media' ); ?>:</label>
<input type="search" id="media-search-input" name="s" value="<?php the_search_query(); ?>" />
<?php submit_button( __( 'Search Media' ), '', '', false ); ?>
</p>
<ul class="subsubsub">
<?php
$type_links = array();
$_num_posts = (array) wp_count_attachments();
$matches = wp_match_mime_types( array_keys( $post_mime_types ), array_keys( $_num_posts ) );
foreach ( $matches as $_type => $reals ) {
foreach ( $reals as $real ) {
if ( isset( $num_posts[ $_type ] ) ) {
$num_posts[ $_type ] += $_num_posts[ $real ];
} else {
$num_posts[ $_type ] = $_num_posts[ $real ];
}
}
}
// If available type specified by media button clicked, filter by that type.
if ( empty( $_GET['post_mime_type'] ) && ! empty( $num_posts[ $type ] ) ) {
$_GET['post_mime_type'] = $type;
list($post_mime_types, $avail_post_mime_types) = wp_edit_attachments_query();
}
if ( empty( $_GET['post_mime_type'] ) || 'all' === $_GET['post_mime_type'] ) {
$class = ' class="current"';
} else {
$class = '';
}
$type_links[] = '<li><a href="' . esc_url(
add_query_arg(
array(
'post_mime_type' => 'all',
'paged' => false,
'm' => false,
)
)
) . '"' . $class . '>' . __( 'All Types' ) . '</a>';
foreach ( $post_mime_types as $mime_type => $label ) {
$class = '';
if ( ! wp_match_mime_types( $mime_type, $avail_post_mime_types ) ) {
continue;
}
if ( isset( $_GET['post_mime_type'] ) && wp_match_mime_types( $mime_type, $_GET['post_mime_type'] ) ) {
$class = ' class="current"';
}
$type_links[] = '<li><a href="' . esc_url(
add_query_arg(
array(
'post_mime_type' => $mime_type,
'paged' => false,
)
)
) . '"' . $class . '>' . sprintf( translate_nooped_plural( $label[2], $num_posts[ $mime_type ] ), '<span id="' . $mime_type . '-counter">' . number_format_i18n( $num_posts[ $mime_type ] ) . '</span>' ) . '</a>';
}
/**
* Filters the media upload mime type list items.
*
* Returned values should begin with an `<li>` tag.
*
* @since 3.1.0
*
* @param string[] $type_links An array of list items containing mime type link HTML.
*/
echo implode( ' | </li>', apply_filters( 'media_upload_mime_type_links', $type_links ) ) . '</li>';
unset( $type_links );
?>
</ul>
<div class="tablenav">
<?php
$page_links = paginate_links(
array(
'base' => add_query_arg( 'paged', '%#%' ),
'format' => '',
'prev_text' => __( '«' ),
'next_text' => __( '»' ),
'total' => ceil( $wp_query->found_posts / 10 ),
'current' => $q['paged'],
)
);
if ( $page_links ) {
echo "<div class='tablenav-pages'>$page_links</div>";
}
?>
<div class="alignleft actions">
<?php
$arc_query = "SELECT DISTINCT YEAR(post_date) AS yyear, MONTH(post_date) AS mmonth FROM $wpdb->posts WHERE post_type = 'attachment' ORDER BY post_date DESC";
$arc_result = $wpdb->get_results( $arc_query );
$month_count = count( $arc_result );
$selected_month = isset( $_GET['m'] ) ? $_GET['m'] : 0;
if ( $month_count && ! ( 1 == $month_count && 0 == $arc_result[0]->mmonth ) ) {
?>
<select name='m'>
<option<?php selected( $selected_month, 0 ); ?> value='0'><?php _e( 'All dates' ); ?></option>
<?php
foreach ( $arc_result as $arc_row ) {
if ( 0 == $arc_row->yyear ) {
continue;
}
$arc_row->mmonth = zeroise( $arc_row->mmonth, 2 );
if ( $arc_row->yyear . $arc_row->mmonth == $selected_month ) {
$default = ' selected="selected"';
} else {
$default = '';
}
echo "<option$default value='" . esc_attr( $arc_row->yyear . $arc_row->mmonth ) . "'>";
echo esc_html( $wp_locale->get_month( $arc_row->mmonth ) . " $arc_row->yyear" );
echo "</option>\n";
}
?>
</select>
<?php } ?>
<?php submit_button( __( 'Filter »' ), '', 'post-query-submit', false ); ?>
</div>
<br class="clear" />
</div>
</form>
<form enctype="multipart/form-data" method="post" action="<?php echo esc_url( $form_action_url ); ?>" class="<?php echo $form_class; ?>" id="library-form">
<?php wp_nonce_field( 'media-form' ); ?>
<?php // media_upload_form( $errors ); ?>
<script type="text/javascript">
jQuery(function($){
var preloaded = $(".media-item.preloaded");
if ( preloaded.length > 0 ) {
preloaded.each(function(){prepareMediaItem({id:this.id.replace(/[^0-9]/g, '')},'');});
updateMediaForm();
}
});
</script>
<div id="media-items">
<?php add_filter( 'attachment_fields_to_edit', 'media_post_single_attachment_fields_to_edit', 10, 2 ); ?>
<?php echo get_media_items( null, $errors ); ?>
</div>
<p class="ml-submit">
<?php submit_button( __( 'Save all changes' ), 'savebutton', 'save', false ); ?>
<input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />
</p>
</form>
<?php
}