5 * @package WordPress |
5 * @package WordPress |
6 * @subpackage Administration |
6 * @subpackage Administration |
7 */ |
7 */ |
8 |
8 |
9 /** WordPress Administration Bootstrap */ |
9 /** WordPress Administration Bootstrap */ |
10 require_once('admin.php'); |
10 require_once( './admin.php' ); |
|
11 |
|
12 if ( !current_user_can('upload_files') ) |
|
13 wp_die( __( 'You do not have permission to upload files.' ) ); |
|
14 |
|
15 $wp_list_table = _get_list_table('WP_Media_List_Table'); |
|
16 $pagenum = $wp_list_table->get_pagenum(); |
|
17 |
|
18 // Handle bulk actions |
|
19 $doaction = $wp_list_table->current_action(); |
|
20 |
|
21 if ( $doaction ) { |
|
22 check_admin_referer('bulk-media'); |
|
23 |
|
24 if ( 'delete_all' == $doaction ) { |
|
25 $post_ids = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_type='attachment' AND post_status = 'trash'" ); |
|
26 $doaction = 'delete'; |
|
27 } elseif ( isset( $_REQUEST['media'] ) ) { |
|
28 $post_ids = $_REQUEST['media']; |
|
29 } elseif ( isset( $_REQUEST['ids'] ) ) { |
|
30 $post_ids = explode( ',', $_REQUEST['ids'] ); |
|
31 } |
|
32 |
|
33 $location = 'upload.php'; |
|
34 if ( $referer = wp_get_referer() ) { |
|
35 if ( false !== strpos( $referer, 'upload.php' ) ) |
|
36 $location = remove_query_arg( array( 'trashed', 'untrashed', 'deleted', 'message', 'ids', 'posted' ), $referer ); |
|
37 } |
|
38 |
|
39 switch ( $doaction ) { |
|
40 case 'find_detached': |
|
41 if ( !current_user_can('edit_posts') ) |
|
42 wp_die( __('You are not allowed to scan for lost attachments.') ); |
|
43 |
|
44 $lost = $wpdb->get_col( " |
|
45 SELECT ID FROM $wpdb->posts |
|
46 WHERE post_type = 'attachment' AND post_parent > '0' |
|
47 AND post_parent NOT IN ( |
|
48 SELECT ID FROM $wpdb->posts |
|
49 WHERE post_type NOT IN ( 'attachment', '" . join( "', '", get_post_types( array( 'public' => false ) ) ) . "' ) |
|
50 ) |
|
51 " ); |
|
52 |
|
53 $_REQUEST['detached'] = 1; |
|
54 break; |
|
55 case 'attach': |
|
56 $parent_id = (int) $_REQUEST['found_post_id']; |
|
57 if ( !$parent_id ) |
|
58 return; |
|
59 |
|
60 $parent = &get_post( $parent_id ); |
|
61 if ( !current_user_can( 'edit_post', $parent_id ) ) |
|
62 wp_die( __( 'You are not allowed to edit this post.' ) ); |
|
63 |
|
64 $attach = array(); |
|
65 foreach ( (array) $_REQUEST['media'] as $att_id ) { |
|
66 $att_id = (int) $att_id; |
|
67 |
|
68 if ( !current_user_can( 'edit_post', $att_id ) ) |
|
69 continue; |
|
70 |
|
71 $attach[] = $att_id; |
|
72 clean_attachment_cache( $att_id ); |
|
73 } |
|
74 |
|
75 if ( ! empty( $attach ) ) { |
|
76 $attach = implode( ',', $attach ); |
|
77 $attached = $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET post_parent = %d WHERE post_type = 'attachment' AND ID IN ( $attach )", $parent_id ) ); |
|
78 } |
|
79 |
|
80 if ( isset( $attached ) ) { |
|
81 $location = 'upload.php'; |
|
82 if ( $referer = wp_get_referer() ) { |
|
83 if ( false !== strpos( $referer, 'upload.php' ) ) |
|
84 $location = $referer; |
|
85 } |
|
86 |
|
87 $location = add_query_arg( array( 'attached' => $attached ) , $location ); |
|
88 wp_redirect( $location ); |
|
89 exit; |
|
90 } |
|
91 break; |
|
92 case 'trash': |
|
93 if ( !isset( $post_ids ) ) |
|
94 break; |
|
95 foreach ( (array) $post_ids as $post_id ) { |
|
96 if ( !current_user_can( 'delete_post', $post_id ) ) |
|
97 wp_die( __( 'You are not allowed to move this post to the trash.' ) ); |
|
98 |
|
99 if ( !wp_trash_post( $post_id ) ) |
|
100 wp_die( __( 'Error in moving to trash...' ) ); |
|
101 } |
|
102 $location = add_query_arg( array( 'trashed' => count( $post_ids ), 'ids' => join( ',', $post_ids ) ), $location ); |
|
103 break; |
|
104 case 'untrash': |
|
105 if ( !isset( $post_ids ) ) |
|
106 break; |
|
107 foreach ( (array) $post_ids as $post_id ) { |
|
108 if ( !current_user_can( 'delete_post', $post_id ) ) |
|
109 wp_die( __( 'You are not allowed to move this post out of the trash.' ) ); |
|
110 |
|
111 if ( !wp_untrash_post( $post_id ) ) |
|
112 wp_die( __( 'Error in restoring from trash...' ) ); |
|
113 } |
|
114 $location = add_query_arg( 'untrashed', count( $post_ids ), $location ); |
|
115 break; |
|
116 case 'delete': |
|
117 if ( !isset( $post_ids ) ) |
|
118 break; |
|
119 foreach ( (array) $post_ids as $post_id_del ) { |
|
120 if ( !current_user_can( 'delete_post', $post_id_del ) ) |
|
121 wp_die( __( 'You are not allowed to delete this post.' ) ); |
|
122 |
|
123 if ( !wp_delete_attachment( $post_id_del ) ) |
|
124 wp_die( __( 'Error in deleting...' ) ); |
|
125 } |
|
126 $location = add_query_arg( 'deleted', count( $post_ids ), $location ); |
|
127 break; |
|
128 } |
|
129 |
|
130 wp_redirect( $location ); |
|
131 exit; |
|
132 } elseif ( ! empty( $_GET['_wp_http_referer'] ) ) { |
|
133 wp_redirect( remove_query_arg( array( '_wp_http_referer', '_wpnonce' ), stripslashes( $_SERVER['REQUEST_URI'] ) ) ); |
|
134 exit; |
|
135 } |
|
136 |
|
137 $wp_list_table->prepare_items(); |
|
138 |
|
139 $title = __('Media Library'); |
|
140 $parent_file = 'upload.php'; |
|
141 |
11 wp_enqueue_script( 'wp-ajax-response' ); |
142 wp_enqueue_script( 'wp-ajax-response' ); |
12 wp_enqueue_script( 'jquery-ui-draggable' ); |
143 wp_enqueue_script( 'jquery-ui-draggable' ); |
13 |
144 wp_enqueue_script( 'media' ); |
14 if ( !current_user_can('upload_files') ) |
145 |
15 wp_die(__('You do not have permission to upload files.')); |
146 add_screen_option( 'per_page', array('label' => _x( 'Media items', 'items per page (screen options)' )) ); |
16 |
147 |
17 if ( isset($_GET['find_detached']) ) { |
148 get_current_screen()->add_help_tab( array( |
18 check_admin_referer('bulk-media'); |
149 'id' => 'overview', |
19 |
150 'title' => __('Overview'), |
20 if ( !current_user_can('edit_posts') ) |
151 'content' => |
21 wp_die( __('You are not allowed to scan for lost attachments.') ); |
152 '<p>' . __( 'All the files you’ve uploaded are listed in the Media Library, with the most recent uploads listed first. You can use the Screen Options tab to customize the display of this screen.' ) . '</p>' . |
22 |
153 '<p>' . __( 'You can narrow the list by file type/status using the text link filters at the top of the screen. You also can refine the list by date using the dropdown menu above the media table.' ) . '</p>' |
23 $all_posts = $wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE post_type = 'post' OR post_type = 'page'"); |
154 ) ); |
24 $all_att = $wpdb->get_results("SELECT ID, post_parent FROM $wpdb->posts WHERE post_type = 'attachment'"); |
155 get_current_screen()->add_help_tab( array( |
25 |
156 'id' => 'actions-links', |
26 $lost = array(); |
157 'title' => __('Available Actions'), |
27 foreach ( (array) $all_att as $att ) { |
158 'content' => |
28 if ( $att->post_parent > 0 && ! in_array($att->post_parent, $all_posts) ) |
159 '<p>' . __( 'Hovering over a row reveals action links: Edit, Delete Permanently, and View. Clicking Edit or on the media file’s name displays a simple screen to edit that individual file’s metadata. Clicking Delete Permanently will delete the file from the media library (as well as from any posts to which it is currently attached). View will take you to the display page for that file.' ) . '</p>' |
29 $lost[] = $att->ID; |
160 ) ); |
30 } |
161 get_current_screen()->add_help_tab( array( |
31 $_GET['detached'] = 1; |
162 'id' => 'attaching-files', |
32 |
163 'title' => __('Attaching Files'), |
33 } elseif ( isset($_GET['found_post_id']) && isset($_GET['media']) ) { |
164 'content' => |
34 check_admin_referer('bulk-media'); |
165 '<p>' . __( 'If a media file has not been attached to any post, you will see that in the Attached To column, and can click on Attach File to launch a small popup that will allow you to search for a post and attach the file.' ) . '</p>' |
35 |
166 ) ); |
36 if ( ! ( $parent_id = (int) $_GET['found_post_id'] ) ) |
167 |
37 return; |
168 get_current_screen()->set_help_sidebar( |
38 |
169 '<p><strong>' . __( 'For more information:' ) . '</strong></p>' . |
39 $parent = &get_post($parent_id); |
170 '<p>' . __( '<a href="http://codex.wordpress.org/Media_Library_Screen" target="_blank">Documentation on Media Library</a>' ) . '</p>' . |
40 if ( !current_user_can('edit_post', $parent_id) ) |
171 '<p>' . __( '<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>' ) . '</p>' |
41 wp_die( __('You are not allowed to edit this post.') ); |
172 ); |
42 |
173 |
43 $attach = array(); |
174 require_once('./admin-header.php'); |
44 foreach( (array) $_GET['media'] as $att_id ) { |
|
45 $att_id = (int) $att_id; |
|
46 |
|
47 if ( !current_user_can('edit_post', $att_id) ) |
|
48 continue; |
|
49 |
|
50 $attach[] = $att_id; |
|
51 } |
|
52 |
|
53 if ( ! empty($attach) ) { |
|
54 $attach = implode(',', $attach); |
|
55 $attached = $wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET post_parent = %d WHERE post_type = 'attachment' AND ID IN ($attach)", $parent_id) ); |
|
56 } |
|
57 |
|
58 if ( isset($attached) ) { |
|
59 $location = 'upload.php'; |
|
60 if ( $referer = wp_get_referer() ) { |
|
61 if ( false !== strpos($referer, 'upload.php') ) |
|
62 $location = $referer; |
|
63 } |
|
64 |
|
65 $location = add_query_arg( array( 'attached' => $attached ) , $location ); |
|
66 wp_redirect($location); |
|
67 exit; |
|
68 } |
|
69 |
|
70 } elseif ( isset($_GET['doaction']) || isset($_GET['doaction2']) || isset($_GET['delete_all']) || isset($_GET['delete_all2']) ) { |
|
71 check_admin_referer('bulk-media'); |
|
72 |
|
73 if ( isset($_GET['delete_all']) || isset($_GET['delete_all2']) ) { |
|
74 $post_ids = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_type='attachment' AND post_status = 'trash'" ); |
|
75 $doaction = 'delete'; |
|
76 } elseif ( ( $_GET['action'] != -1 || $_GET['action2'] != -1 ) && ( isset($_GET['media']) || isset($_GET['ids']) ) ) { |
|
77 $post_ids = isset($_GET['media']) ? $_GET['media'] : explode(',', $_GET['ids']); |
|
78 $doaction = ($_GET['action'] != -1) ? $_GET['action'] : $_GET['action2']; |
|
79 } else { |
|
80 wp_redirect($_SERVER['HTTP_REFERER']); |
|
81 } |
|
82 |
|
83 $location = 'upload.php'; |
|
84 if ( $referer = wp_get_referer() ) { |
|
85 if ( false !== strpos($referer, 'upload.php') ) |
|
86 $location = remove_query_arg( array('trashed', 'untrashed', 'deleted', 'message', 'ids', 'posted'), $referer ); |
|
87 } |
|
88 |
|
89 switch ( $doaction ) { |
|
90 case 'trash': |
|
91 foreach( (array) $post_ids as $post_id ) { |
|
92 if ( !current_user_can('delete_post', $post_id) ) |
|
93 wp_die( __('You are not allowed to move this post to the trash.') ); |
|
94 |
|
95 if ( !wp_trash_post($post_id) ) |
|
96 wp_die( __('Error in moving to trash...') ); |
|
97 } |
|
98 $location = add_query_arg( array( 'message' => 4, 'ids' => join(',', $post_ids) ), $location ); |
|
99 break; |
|
100 case 'untrash': |
|
101 foreach( (array) $post_ids as $post_id ) { |
|
102 if ( !current_user_can('delete_post', $post_id) ) |
|
103 wp_die( __('You are not allowed to move this post out of the trash.') ); |
|
104 |
|
105 if ( !wp_untrash_post($post_id) ) |
|
106 wp_die( __('Error in restoring from trash...') ); |
|
107 } |
|
108 $location = add_query_arg('message', 5, $location); |
|
109 break; |
|
110 case 'delete': |
|
111 foreach( (array) $post_ids as $post_id_del ) { |
|
112 if ( !current_user_can('delete_post', $post_id_del) ) |
|
113 wp_die( __('You are not allowed to delete this post.') ); |
|
114 |
|
115 if ( !wp_delete_attachment($post_id_del) ) |
|
116 wp_die( __('Error in deleting...') ); |
|
117 } |
|
118 $location = add_query_arg('message', 2, $location); |
|
119 break; |
|
120 } |
|
121 |
|
122 wp_redirect($location); |
|
123 exit; |
|
124 } elseif ( isset($_GET['_wp_http_referer']) && ! empty($_GET['_wp_http_referer']) ) { |
|
125 wp_redirect( remove_query_arg( array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI']) ) ); |
|
126 exit; |
|
127 } |
|
128 |
|
129 $title = __('Media Library'); |
|
130 $parent_file = 'upload.php'; |
|
131 |
|
132 if ( ! isset( $_GET['paged'] ) || $_GET['paged'] < 1 ) |
|
133 $_GET['paged'] = 1; |
|
134 |
|
135 if ( isset($_GET['detached']) ) { |
|
136 |
|
137 $media_per_page = (int) get_user_option( 'upload_per_page', 0, false ); |
|
138 if ( empty($media_per_page) || $media_per_page < 1 ) |
|
139 $media_per_page = 20; |
|
140 $media_per_page = apply_filters( 'upload_per_page', $media_per_page ); |
|
141 |
|
142 if ( !empty($lost) ) { |
|
143 $start = ( (int) $_GET['paged'] - 1 ) * $media_per_page; |
|
144 $page_links_total = ceil(count($lost) / $media_per_page); |
|
145 $lost = implode(',', $lost); |
|
146 |
|
147 $orphans = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE post_type = 'attachment' AND ID IN (%s) LIMIT %d, %d", $lost, $start, $media_per_page ) ); |
|
148 } else { |
|
149 $start = ( (int) $_GET['paged'] - 1 ) * $media_per_page; |
|
150 $orphans = $wpdb->get_results( $wpdb->prepare( "SELECT SQL_CALC_FOUND_ROWS * FROM $wpdb->posts WHERE post_type = 'attachment' AND post_status != 'trash' AND post_parent < 1 LIMIT %d, %d", $start, $media_per_page ) ); |
|
151 $page_links_total = ceil($wpdb->get_var( "SELECT FOUND_ROWS()" ) / $media_per_page); |
|
152 } |
|
153 |
|
154 $post_mime_types = get_post_mime_types(); |
|
155 $avail_post_mime_types = get_available_post_mime_types('attachment'); |
|
156 |
|
157 if ( isset($_GET['post_mime_type']) && !array_intersect( (array) $_GET['post_mime_type'], array_keys($post_mime_types) ) ) |
|
158 unset($_GET['post_mime_type']); |
|
159 |
|
160 } else { |
|
161 list($post_mime_types, $avail_post_mime_types) = wp_edit_attachments_query(); |
|
162 } |
|
163 |
|
164 $is_trash = ( isset($_GET['status']) && $_GET['status'] == 'trash' ); |
|
165 |
|
166 wp_enqueue_script('media'); |
|
167 require_once('admin-header.php'); |
|
168 |
|
169 do_action('restrict_manage_posts'); |
|
170 ?> |
175 ?> |
171 |
176 |
172 <div class="wrap"> |
177 <div class="wrap"> |
173 <?php screen_icon(); ?> |
178 <?php screen_icon(); ?> |
174 <h2><?php echo esc_html( $title ); ?> <a href="media-new.php" class="button add-new-h2"><?php echo esc_html_x('Add New', 'file'); ?></a> <?php |
179 <h2> |
175 if ( isset($_GET['s']) && $_GET['s'] ) |
180 <?php |
176 printf( '<span class="subtitle">' . __('Search results for “%s”') . '</span>', esc_html( get_search_query() ) ); ?> |
181 echo esc_html( $title ); |
|
182 if ( current_user_can( 'upload_files' ) ) { ?> |
|
183 <a href="media-new.php" class="add-new-h2"><?php echo esc_html_x('Add New', 'file'); ?></a><?php |
|
184 } |
|
185 if ( ! empty( $_REQUEST['s'] ) ) |
|
186 printf( '<span class="subtitle">' . __('Search results for “%s”') . '</span>', get_search_query() ); ?> |
177 </h2> |
187 </h2> |
178 |
188 |
179 <?php |
189 <?php |
180 $message = ''; |
190 $message = ''; |
181 if ( isset($_GET['posted']) && (int) $_GET['posted'] ) { |
191 if ( ! empty( $_GET['posted'] ) ) { |
182 $_GET['message'] = '1'; |
192 $message = __('Media attachment updated.'); |
183 $_SERVER['REQUEST_URI'] = remove_query_arg(array('posted'), $_SERVER['REQUEST_URI']); |
193 $_SERVER['REQUEST_URI'] = remove_query_arg(array('posted'), $_SERVER['REQUEST_URI']); |
184 } |
194 } |
185 |
195 |
186 if ( isset($_GET['attached']) && (int) $_GET['attached'] ) { |
196 if ( ! empty( $_GET['attached'] ) && $attached = absint( $_GET['attached'] ) ) { |
187 $attached = (int) $_GET['attached']; |
197 $message = sprintf( _n('Reattached %d attachment.', 'Reattached %d attachments.', $attached), $attached ); |
188 $message = sprintf( _n('Reattached %d attachment', 'Reattached %d attachments', $attached), $attached ); |
|
189 $_SERVER['REQUEST_URI'] = remove_query_arg(array('attached'), $_SERVER['REQUEST_URI']); |
198 $_SERVER['REQUEST_URI'] = remove_query_arg(array('attached'), $_SERVER['REQUEST_URI']); |
190 } |
199 } |
191 |
200 |
192 if ( isset($_GET['deleted']) && (int) $_GET['deleted'] ) { |
201 if ( ! empty( $_GET['deleted'] ) && $deleted = absint( $_GET['deleted'] ) ) { |
193 $_GET['message'] = '2'; |
202 $message = sprintf( _n( 'Media attachment permanently deleted.', '%d media attachments permanently deleted.', $deleted ), number_format_i18n( $_GET['deleted'] ) ); |
194 $_SERVER['REQUEST_URI'] = remove_query_arg(array('deleted'), $_SERVER['REQUEST_URI']); |
203 $_SERVER['REQUEST_URI'] = remove_query_arg(array('deleted'), $_SERVER['REQUEST_URI']); |
195 } |
204 } |
196 |
205 |
197 if ( isset($_GET['trashed']) && (int) $_GET['trashed'] ) { |
206 if ( ! empty( $_GET['trashed'] ) && $trashed = absint( $_GET['trashed'] ) ) { |
198 $_GET['message'] = '4'; |
207 $message = sprintf( _n( 'Media attachment moved to the trash.', '%d media attachments moved to the trash.', $trashed ), number_format_i18n( $_GET['trashed'] ) ); |
|
208 $message .= ' <a href="' . esc_url( wp_nonce_url( 'upload.php?doaction=undo&action=untrash&ids='.(isset($_GET['ids']) ? $_GET['ids'] : ''), "bulk-media" ) ) . '">' . __('Undo') . '</a>'; |
199 $_SERVER['REQUEST_URI'] = remove_query_arg(array('trashed'), $_SERVER['REQUEST_URI']); |
209 $_SERVER['REQUEST_URI'] = remove_query_arg(array('trashed'), $_SERVER['REQUEST_URI']); |
200 } |
210 } |
201 |
211 |
202 if ( isset($_GET['untrashed']) && (int) $_GET['untrashed'] ) { |
212 if ( ! empty( $_GET['untrashed'] ) && $untrashed = absint( $_GET['untrashed'] ) ) { |
203 $_GET['message'] = '5'; |
213 $message = sprintf( _n( 'Media attachment restored from the trash.', '%d media attachments restored from the trash.', $untrashed ), number_format_i18n( $_GET['untrashed'] ) ); |
204 $_SERVER['REQUEST_URI'] = remove_query_arg(array('untrashed'), $_SERVER['REQUEST_URI']); |
214 $_SERVER['REQUEST_URI'] = remove_query_arg(array('untrashed'), $_SERVER['REQUEST_URI']); |
205 } |
215 } |
206 |
216 |
207 $messages[1] = __('Media attachment updated.'); |
217 $messages[1] = __('Media attachment updated.'); |
208 $messages[2] = __('Media permanently deleted.'); |
218 $messages[2] = __('Media permanently deleted.'); |
209 $messages[3] = __('Error saving media attachment.'); |
219 $messages[3] = __('Error saving media attachment.'); |
210 $messages[4] = __('Media moved to the trash.') . ' <a href="' . esc_url( wp_nonce_url( 'upload.php?doaction=undo&action=untrash&ids='.(isset($_GET['ids']) ? $_GET['ids'] : ''), "bulk-media" ) ) . '">' . __('Undo') . '</a>'; |
220 $messages[4] = __('Media moved to the trash.') . ' <a href="' . esc_url( wp_nonce_url( 'upload.php?doaction=undo&action=untrash&ids='.(isset($_GET['ids']) ? $_GET['ids'] : ''), "bulk-media" ) ) . '">' . __('Undo') . '</a>'; |
211 $messages[5] = __('Media restored from the trash.'); |
221 $messages[5] = __('Media restored from the trash.'); |
212 |
222 |
213 if ( isset($_GET['message']) && (int) $_GET['message'] ) { |
223 if ( ! empty( $_GET['message'] ) && isset( $messages[ $_GET['message'] ] ) ) { |
214 $message = $messages[$_GET['message']]; |
224 $message = $messages[ $_GET['message'] ]; |
215 $_SERVER['REQUEST_URI'] = remove_query_arg(array('message'), $_SERVER['REQUEST_URI']); |
225 $_SERVER['REQUEST_URI'] = remove_query_arg(array('message'), $_SERVER['REQUEST_URI']); |
216 } |
226 } |
217 |
227 |
218 if ( !empty($message) ) { ?> |
228 if ( !empty($message) ) { ?> |
219 <div id="message" class="updated fade"><p><?php echo $message; ?></p></div> |
229 <div id="message" class="updated"><p><?php echo $message; ?></p></div> |
220 <?php } ?> |
230 <?php } ?> |
221 |
231 |
222 <ul class="subsubsub"> |
232 <?php $wp_list_table->views(); ?> |
223 <?php |
233 |
224 $type_links = array(); |
234 <form id="posts-filter" action="" method="get"> |
225 $_num_posts = (array) wp_count_attachments(); |
235 |
226 $_total_posts = array_sum($_num_posts) - $_num_posts['trash']; |
236 <?php $wp_list_table->search_box( __( 'Search Media' ), 'media' ); ?> |
227 $matches = wp_match_mime_types(array_keys($post_mime_types), array_keys($_num_posts)); |
237 |
228 foreach ( $matches as $type => $reals ) |
238 <?php $wp_list_table->display(); ?> |
229 foreach ( $reals as $real ) |
239 |
230 $num_posts[$type] = ( isset( $num_posts[$type] ) ) ? $num_posts[$type] + $_num_posts[$real] : $_num_posts[$real]; |
240 <div id="ajax-response"></div> |
231 |
241 <?php find_posts_div(); ?> |
232 $class = ( empty($_GET['post_mime_type']) && !isset($_GET['detached']) && !isset($_GET['status']) ) ? ' class="current"' : ''; |
242 <br class="clear" /> |
233 $type_links[] = "<li><a href='upload.php'$class>" . sprintf( _nx( 'All <span class="count">(%s)</span>', 'All <span class="count">(%s)</span>', $_total_posts, 'uploaded files' ), number_format_i18n( $_total_posts ) ) . '</a>'; |
243 |
234 foreach ( $post_mime_types as $mime_type => $label ) { |
|
235 $class = ''; |
|
236 |
|
237 if ( !wp_match_mime_types($mime_type, $avail_post_mime_types) ) |
|
238 continue; |
|
239 |
|
240 if ( !empty($_GET['post_mime_type']) && wp_match_mime_types($mime_type, $_GET['post_mime_type']) ) |
|
241 $class = ' class="current"'; |
|
242 |
|
243 $type_links[] = "<li><a href='upload.php?post_mime_type=$mime_type'$class>" . sprintf( _n( $label[2][0], $label[2][1], $num_posts[$mime_type] ), number_format_i18n( $num_posts[$mime_type] )) . '</a>'; |
|
244 } |
|
245 $type_links[] = '<li><a href="upload.php?detached=1"' . ( isset($_GET['detached']) ? ' class="current"' : '' ) . '>' . __('Unattached') . '</a>'; |
|
246 if ( EMPTY_TRASH_DAYS && ( MEDIA_TRASH || !empty($_num_posts['trash']) ) ) |
|
247 $type_links[] = '<li><a href="upload.php?status=trash"' . ( (isset($_GET['status']) && $_GET['status'] == 'trash' ) ? ' class="current"' : '') . '>' . sprintf( _nx( 'Trash <span class="count">(%s)</span>', 'Trash <span class="count">(%s)</span>', $_num_posts['trash'], 'uploaded files' ), number_format_i18n( $_num_posts['trash'] ) ) . '</a>'; |
|
248 |
|
249 echo implode( " |</li>\n", $type_links) . '</li>'; |
|
250 unset($type_links); |
|
251 ?> |
|
252 </ul> |
|
253 |
|
254 <form class="search-form" action="" method="get"> |
|
255 <p class="search-box"> |
|
256 <label class="screen-reader-text" for="media-search-input"><?php _e( 'Search Media' ); ?>:</label> |
|
257 <input type="text" id="media-search-input" name="s" value="<?php the_search_query(); ?>" /> |
|
258 <input type="submit" value="<?php esc_attr_e( 'Search Media' ); ?>" class="button" /> |
|
259 </p> |
|
260 </form> |
244 </form> |
261 |
|
262 <form id="posts-filter" action="" method="get"> |
|
263 <div class="tablenav"> |
|
264 <?php |
|
265 if ( ! isset($page_links_total) ) |
|
266 $page_links_total = $wp_query->max_num_pages; |
|
267 |
|
268 $page_links = paginate_links( array( |
|
269 'base' => add_query_arg( 'paged', '%#%' ), |
|
270 'format' => '', |
|
271 'prev_text' => __('«'), |
|
272 'next_text' => __('»'), |
|
273 'total' => $page_links_total, |
|
274 'current' => $_GET['paged'] |
|
275 )); |
|
276 |
|
277 if ( $page_links ) : ?> |
|
278 <div class="tablenav-pages"><?php $page_links_text = sprintf( '<span class="displaying-num">' . __( 'Displaying %s–%s of %s' ) . '</span>%s', |
|
279 number_format_i18n( ( $_GET['paged'] - 1 ) * $wp_query->query_vars['posts_per_page'] + 1 ), |
|
280 number_format_i18n( min( $_GET['paged'] * $wp_query->query_vars['posts_per_page'], $wp_query->found_posts ) ), |
|
281 number_format_i18n( $wp_query->found_posts ), |
|
282 $page_links |
|
283 ); echo $page_links_text; ?></div> |
|
284 <?php endif; ?> |
|
285 |
|
286 <div class="alignleft actions"> |
|
287 <select name="action" class="select-action"> |
|
288 <option value="-1" selected="selected"><?php _e('Bulk Actions'); ?></option> |
|
289 <?php if ( $is_trash ) { ?> |
|
290 <option value="untrash"><?php _e('Restore'); ?></option> |
|
291 <?php } if ( $is_trash || !EMPTY_TRASH_DAYS || !MEDIA_TRASH ) { ?> |
|
292 <option value="delete"><?php _e('Delete Permanently'); ?></option> |
|
293 <?php } else { ?> |
|
294 <option value="trash"><?php _e('Move to Trash'); ?></option> |
|
295 <?php } if ( isset($orphans) ) { ?> |
|
296 <option value="attach"><?php _e('Attach to a post'); ?></option> |
|
297 <?php } ?> |
|
298 </select> |
|
299 <input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction" id="doaction" class="button-secondary action" /> |
|
300 <?php wp_nonce_field('bulk-media'); ?> |
|
301 |
|
302 <?php |
|
303 if ( !is_singular() && !isset($_GET['detached']) && !$is_trash ) { |
|
304 $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"; |
|
305 |
|
306 $arc_result = $wpdb->get_results( $arc_query ); |
|
307 |
|
308 $month_count = count($arc_result); |
|
309 |
|
310 if ( $month_count && !( 1 == $month_count && 0 == $arc_result[0]->mmonth ) ) : ?> |
|
311 <select name='m'> |
|
312 <option value='0'><?php _e('Show all dates'); ?></option> |
|
313 <?php |
|
314 foreach ($arc_result as $arc_row) { |
|
315 if ( $arc_row->yyear == 0 ) |
|
316 continue; |
|
317 $arc_row->mmonth = zeroise( $arc_row->mmonth, 2 ); |
|
318 |
|
319 if ( isset($_GET['m']) && ( $arc_row->yyear . $arc_row->mmonth == $_GET['m'] ) ) |
|
320 $default = ' selected="selected"'; |
|
321 else |
|
322 $default = ''; |
|
323 |
|
324 echo "<option$default value='" . esc_attr("$arc_row->yyear$arc_row->mmonth") . "'>"; |
|
325 echo $wp_locale->get_month($arc_row->mmonth) . " $arc_row->yyear"; |
|
326 echo "</option>\n"; |
|
327 } |
|
328 ?> |
|
329 </select> |
|
330 <?php endif; // month_count ?> |
|
331 |
|
332 <input type="submit" id="post-query-submit" value="<?php esc_attr_e('Filter'); ?>" class="button-secondary" /> |
|
333 |
|
334 <?php } // ! is_singular ?> |
|
335 |
|
336 <?php if ( isset($_GET['detached']) ) { ?> |
|
337 <input type="submit" id="find_detached" name="find_detached" value="<?php esc_attr_e('Scan for lost attachments'); ?>" class="button-secondary" /> |
|
338 <?php } elseif ( isset($_GET['status']) && $_GET['status'] == 'trash' && current_user_can('edit_others_posts') ) { ?> |
|
339 <input type="submit" id="delete_all" name="delete_all" value="<?php esc_attr_e('Empty Trash'); ?>" class="button-secondary apply" /> |
|
340 <?php } ?> |
|
341 |
|
342 </div> |
245 </div> |
343 |
246 |
344 <br class="clear" /> |
247 <?php |
345 </div> |
248 include('./admin-footer.php'); |
346 |
|
347 <div class="clear"></div> |
|
348 |
|
349 <?php if ( isset($orphans) ) { ?> |
|
350 <table class="widefat" cellspacing="0"> |
|
351 <thead> |
|
352 <tr> |
|
353 <th scope="col" class="check-column"><input type="checkbox" /></th> |
|
354 <th scope="col"></th> |
|
355 <th scope="col"><?php /* translators: column name in media */ echo _x('Media', 'media column name'); ?></th> |
|
356 <th scope="col"><?php /* translators: column name in media */ echo _x('Author', 'media column name'); ?></th> |
|
357 <th scope="col"><?php /* translators: column name in media */ echo _x('Date Added', 'media column name'); ?></th> |
|
358 </tr> |
|
359 </thead> |
|
360 |
|
361 <tfoot> |
|
362 <tr> |
|
363 <th scope="col" class="check-column"><input type="checkbox" /></th> |
|
364 <th scope="col"></th> |
|
365 <th scope="col"><?php /* translators: column name in media */ echo _x('Media', 'media column name'); ?></th> |
|
366 <th scope="col"><?php /* translators: column name in media */ echo _x('Author', 'media column name'); ?></th> |
|
367 <th scope="col"><?php /* translators: column name in media */ echo _x('Date Added', 'media column name'); ?></th> |
|
368 </tr> |
|
369 </tfoot> |
|
370 |
|
371 <tbody id="the-list" class="list:post"> |
|
372 <?php |
|
373 if ( $orphans ) { |
|
374 foreach ( $orphans as $post ) { |
|
375 $class = 'alternate' == $class ? '' : 'alternate'; |
|
376 $att_title = esc_html( _draft_or_post_title($post->ID) ); |
|
377 ?> |
|
378 <tr id='post-<?php echo $post->ID; ?>' class='<?php echo $class; ?>' valign="top"> |
|
379 <th scope="row" class="check-column"><?php if ( current_user_can('edit_post', $post->ID) ) { ?><input type="checkbox" name="media[]" value="<?php echo esc_attr($post->ID); ?>" /><?php } ?></th> |
|
380 |
|
381 <td class="media-icon"><?php |
|
382 if ( $thumb = wp_get_attachment_image( $post->ID, array(80, 60), true ) ) { ?> |
|
383 <a href="media.php?action=edit&attachment_id=<?php echo $post->ID; ?>" title="<?php echo esc_attr(sprintf(__('Edit “%s”'), $att_title)); ?>"><?php echo $thumb; ?></a> |
|
384 <?php } ?></td> |
|
385 |
|
386 <td class="media column-media"><strong><a href="<?php echo get_edit_post_link( $post->ID ); ?>" title="<?php echo esc_attr(sprintf(__('Edit “%s”'), $att_title)); ?>"><?php echo $att_title; ?></a></strong><br /> |
|
387 <?php echo strtoupper(preg_replace('/^.*?\.(\w+)$/', '$1', get_attached_file($post->ID))); ?> |
|
388 |
|
389 <div class="row-actions"> |
|
390 <?php |
|
391 $actions = array(); |
|
392 if ( current_user_can('edit_post', $post->ID) ) |
|
393 $actions['edit'] = '<a href="' . get_edit_post_link($post->ID, true) . '">' . __('Edit') . '</a>'; |
|
394 if ( current_user_can('delete_post', $post->ID) ) |
|
395 if ( EMPTY_TRASH_DAYS && MEDIA_TRASH ) { |
|
396 $actions['trash'] = "<a class='submitdelete' href='" . wp_nonce_url("post.php?action=trash&post=$post->ID", 'trash-post_' . $post->ID) . "'>" . __('Trash') . "</a>"; |
|
397 } else { |
|
398 $delete_ays = !MEDIA_TRASH ? " onclick='return showNotice.warn();'" : ''; |
|
399 $actions['delete'] = "<a class='submitdelete'$delete_ays href='" . wp_nonce_url("post.php?action=delete&post=$post->ID", 'delete-post_' . $post->ID) . "'>" . __('Delete Permanently') . "</a>"; |
|
400 } |
|
401 $actions['view'] = '<a href="' . get_permalink($post->ID) . '" title="' . esc_attr(sprintf(__('View “%s”'), $title)) . '" rel="permalink">' . __('View') . '</a>'; |
|
402 if ( current_user_can('edit_post', $post->ID) ) |
|
403 $actions['attach'] = '<a href="#the-list" onclick="findPosts.open(\'media[]\',\''.$post->ID.'\');return false;" class="hide-if-no-js">'.__('Attach').'</a>'; |
|
404 $actions = apply_filters( 'media_row_actions', $actions, $post ); |
|
405 $action_count = count($actions); |
|
406 $i = 0; |
|
407 foreach ( $actions as $action => $link ) { |
|
408 ++$i; |
|
409 ( $i == $action_count ) ? $sep = '' : $sep = ' | '; |
|
410 echo "<span class='$action'>$link$sep</span>"; |
|
411 } ?> |
|
412 </div></td> |
|
413 <td class="author column-author"><?php $author = get_userdata($post->post_author); echo $author->display_name; ?></td> |
|
414 <?php if ( '0000-00-00 00:00:00' == $post->post_date && 'date' == $column_name ) { |
|
415 $t_time = $h_time = __('Unpublished'); |
|
416 } else { |
|
417 $t_time = get_the_time(__('Y/m/d g:i:s A')); |
|
418 $m_time = $post->post_date; |
|
419 $time = get_post_time( 'G', true ); |
|
420 if ( ( abs($t_diff = time() - $time) ) < 86400 ) { |
|
421 if ( $t_diff < 0 ) |
|
422 $h_time = sprintf( __('%s from now'), human_time_diff( $time ) ); |
|
423 else |
|
424 $h_time = sprintf( __('%s ago'), human_time_diff( $time ) ); |
|
425 } else { |
|
426 $h_time = mysql2date(__('Y/m/d'), $m_time); |
|
427 } |
|
428 } ?> |
|
429 <td class="date column-date"><?php echo $h_time ?></td> |
|
430 </tr> |
|
431 <?php } |
|
432 |
|
433 } else { ?> |
|
434 <tr><td colspan="5"><?php _e('No media attachments found.') ?></td></tr> |
|
435 <?php } ?> |
|
436 </tbody> |
|
437 </table> |
|
438 |
|
439 <?php |
|
440 |
|
441 } else { |
|
442 include( 'edit-attachment-rows.php' ); |
|
443 } ?> |
|
444 |
|
445 <div id="ajax-response"></div> |
|
446 |
|
447 <div class="tablenav"> |
|
448 |
|
449 <?php |
|
450 if ( $page_links ) |
|
451 echo "<div class='tablenav-pages'>$page_links_text</div>"; |
|
452 ?> |
|
453 |
|
454 <div class="alignleft actions"> |
|
455 <select name="action2" class="select-action"> |
|
456 <option value="-1" selected="selected"><?php _e('Bulk Actions'); ?></option> |
|
457 <?php if ($is_trash) { ?> |
|
458 <option value="untrash"><?php _e('Restore'); ?></option> |
|
459 <?php } if ( $is_trash || !EMPTY_TRASH_DAYS || !MEDIA_TRASH ) { ?> |
|
460 <option value="delete"><?php _e('Delete Permanently'); ?></option> |
|
461 <?php } else { ?> |
|
462 <option value="trash"><?php _e('Move to Trash'); ?></option> |
|
463 <?php } if (isset($orphans)) { ?> |
|
464 <option value="attach"><?php _e('Attach to a post'); ?></option> |
|
465 <?php } ?> |
|
466 </select> |
|
467 <input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" /> |
|
468 |
|
469 <?php if ( isset($_GET['status']) && $_GET['status'] == 'trash' && current_user_can('edit_others_posts') ) { ?> |
|
470 <input type="submit" id="delete_all2" name="delete_all2" value="<?php esc_attr_e('Empty Trash'); ?>" class="button-secondary apply" /> |
|
471 <?php } ?> |
|
472 </div> |
|
473 |
|
474 <br class="clear" /> |
|
475 </div> |
|
476 <?php find_posts_div(); ?> |
|
477 </form> |
|
478 <br class="clear" /> |
|
479 |
|
480 </div> |
|
481 |
|
482 <?php |
|
483 include('admin-footer.php'); |
|