@@ 557-678 (lines=122) @@ | ||
554 | } |
|
555 | ||
556 | // TODO: factor this out into site |
|
557 | private function get_media_item_v1_1( $media_id ) { |
|
558 | $media_item = get_post( $media_id ); |
|
559 | ||
560 | if ( ! $media_item || is_wp_error( $media_item ) ) |
|
561 | return new WP_Error( 'unknown_media', 'Unknown Media', 404 ); |
|
562 | ||
563 | $file = basename( wp_get_attachment_url( $media_item->ID ) ); |
|
564 | $file_info = pathinfo( $file ); |
|
565 | $ext = $file_info['extension']; |
|
566 | ||
567 | $response = array( |
|
568 | 'ID' => $media_item->ID, |
|
569 | 'URL' => wp_get_attachment_url( $media_item->ID ), |
|
570 | 'guid' => $media_item->guid, |
|
571 | 'date' => (string) WPCOM_JSON_API_Date::format_date( $media_item->post_date_gmt, $media_item->post_date ), |
|
572 | 'post_ID' => $media_item->post_parent, |
|
573 | 'author_ID' => (int) $media_item->post_author, |
|
574 | 'file' => $file, |
|
575 | 'mime_type' => $media_item->post_mime_type, |
|
576 | 'extension' => $ext, |
|
577 | 'title' => $media_item->post_title, |
|
578 | 'caption' => $media_item->post_excerpt, |
|
579 | 'description' => $media_item->post_content, |
|
580 | 'alt' => get_post_meta( $media_item->ID, '_wp_attachment_image_alt', true ), |
|
581 | 'thumbnails' => array() |
|
582 | ); |
|
583 | ||
584 | if ( in_array( $ext, array( 'jpg', 'jpeg', 'png', 'gif' ) ) ) { |
|
585 | $metadata = wp_get_attachment_metadata( $media_item->ID ); |
|
586 | if ( isset( $metadata['height'], $metadata['width'] ) ) { |
|
587 | $response['height'] = $metadata['height']; |
|
588 | $response['width'] = $metadata['width']; |
|
589 | } |
|
590 | ||
591 | if ( isset( $metadata['sizes'] ) ) { |
|
592 | /** |
|
593 | * Filter the thumbnail sizes available for each attachment ID. |
|
594 | * |
|
595 | * @module json-api |
|
596 | * |
|
597 | * @since 3.9.0 |
|
598 | * |
|
599 | * @param array $metadata['sizes'] Array of thumbnail sizes available for a given attachment ID. |
|
600 | * @param string $media_id Attachment ID. |
|
601 | */ |
|
602 | $sizes = apply_filters( 'rest_api_thumbnail_sizes', $metadata['sizes'], $media_id ); |
|
603 | if ( is_array( $sizes ) ) { |
|
604 | foreach ( $sizes as $size => $size_details ) { |
|
605 | $response['thumbnails'][ $size ] = dirname( $response['URL'] ) . '/' . $size_details['file']; |
|
606 | } |
|
607 | } |
|
608 | } |
|
609 | ||
610 | if ( isset( $metadata['image_meta'] ) ) { |
|
611 | $response['exif'] = $metadata['image_meta']; |
|
612 | } |
|
613 | } |
|
614 | ||
615 | if ( in_array( $ext, array( 'mp3', 'm4a', 'wav', 'ogg' ) ) ) { |
|
616 | $metadata = wp_get_attachment_metadata( $media_item->ID ); |
|
617 | $response['length'] = $metadata['length']; |
|
618 | $response['exif'] = $metadata; |
|
619 | } |
|
620 | ||
621 | if ( in_array( $ext, array( 'ogv', 'mp4', 'mov', 'wmv', 'avi', 'mpg', '3gp', '3g2', 'm4v' ) ) ) { |
|
622 | $metadata = wp_get_attachment_metadata( $media_item->ID ); |
|
623 | if ( isset( $metadata['height'], $metadata['width'] ) ) { |
|
624 | $response['height'] = $metadata['height']; |
|
625 | $response['width'] = $metadata['width']; |
|
626 | } |
|
627 | ||
628 | if ( isset( $metadata['length'] ) ) { |
|
629 | $response['length'] = $metadata['length']; |
|
630 | } |
|
631 | ||
632 | // add VideoPress info |
|
633 | if ( function_exists( 'video_get_info_by_blogpostid' ) ) { |
|
634 | $info = video_get_info_by_blogpostid( $this->site->get_id(), $media_id ); |
|
635 | ||
636 | // Thumbnails |
|
637 | if ( function_exists( 'video_format_done' ) && function_exists( 'video_image_url_by_guid' ) ) { |
|
638 | $response['thumbnails'] = array( 'fmt_hd' => '', 'fmt_dvd' => '', 'fmt_std' => '' ); |
|
639 | foreach ( $response['thumbnails'] as $size => $thumbnail_url ) { |
|
640 | if ( video_format_done( $info, $size ) ) { |
|
641 | $response['thumbnails'][ $size ] = video_image_url_by_guid( $info->guid, $size ); |
|
642 | } else { |
|
643 | unset( $response['thumbnails'][ $size ] ); |
|
644 | } |
|
645 | } |
|
646 | } |
|
647 | ||
648 | $response['videopress_guid'] = $info->guid; |
|
649 | $response['videopress_processing_done'] = true; |
|
650 | if ( '0000-00-00 00:00:00' == $info->finish_date_gmt ) { |
|
651 | $response['videopress_processing_done'] = false; |
|
652 | } |
|
653 | } |
|
654 | } |
|
655 | ||
656 | $response['thumbnails'] = (object) $response['thumbnails']; |
|
657 | ||
658 | $response['meta'] = (object) array( |
|
659 | 'links' => (object) array( |
|
660 | 'self' => (string) $this->links->get_media_link( $this->site->get_id(), $media_id ), |
|
661 | 'help' => (string) $this->links->get_media_link( $this->site->get_id(), $media_id, 'help' ), |
|
662 | 'site' => (string) $this->links->get_site_link( $this->site->get_id() ), |
|
663 | ), |
|
664 | ); |
|
665 | ||
666 | // add VideoPress link to the meta |
|
667 | if ( in_array( $ext, array( 'ogv', 'mp4', 'mov', 'wmv', 'avi', 'mpg', '3gp', '3g2', 'm4v' ) ) ) { |
|
668 | if ( function_exists( 'video_get_info_by_blogpostid' ) ) { |
|
669 | $response['meta']->links->videopress = (string) $this->links->get_link( '/videos/%s', $response['videopress_guid'], '' ); |
|
670 | } |
|
671 | } |
|
672 | ||
673 | if ( $media_item->post_parent > 0 ) { |
|
674 | $response['meta']->links->parent = (string) $this->links->get_post_link( $this->site->get_id(), $media_item->post_parent ); |
|
675 | } |
|
676 | ||
677 | return (object) $response; |
|
678 | } |
|
679 | } |
|
680 |
@@ 1185-1306 (lines=122) @@ | ||
1182 | return (object) $response; |
|
1183 | } |
|
1184 | ||
1185 | function get_media_item_v1_1( $media_id ) { |
|
1186 | $media_item = get_post( $media_id ); |
|
1187 | ||
1188 | if ( ! $media_item || is_wp_error( $media_item ) ) |
|
1189 | return new WP_Error( 'unknown_media', 'Unknown Media', 404 ); |
|
1190 | ||
1191 | $file = basename( wp_get_attachment_url( $media_item->ID ) ); |
|
1192 | $file_info = pathinfo( $file ); |
|
1193 | $ext = isset( $file_info['extension'] ) ? $file_info['extension'] : null; |
|
1194 | ||
1195 | $response = array( |
|
1196 | 'ID' => $media_item->ID, |
|
1197 | 'URL' => wp_get_attachment_url( $media_item->ID ), |
|
1198 | 'guid' => $media_item->guid, |
|
1199 | 'date' => (string) $this->format_date( $media_item->post_date_gmt, $media_item->post_date ), |
|
1200 | 'post_ID' => $media_item->post_parent, |
|
1201 | 'author_ID' => (int) $media_item->post_author, |
|
1202 | 'file' => $file, |
|
1203 | 'mime_type' => $media_item->post_mime_type, |
|
1204 | 'extension' => $ext, |
|
1205 | 'title' => $media_item->post_title, |
|
1206 | 'caption' => $media_item->post_excerpt, |
|
1207 | 'description' => $media_item->post_content, |
|
1208 | 'alt' => get_post_meta( $media_item->ID, '_wp_attachment_image_alt', true ), |
|
1209 | 'thumbnails' => array() |
|
1210 | ); |
|
1211 | ||
1212 | if ( in_array( $ext, array( 'jpg', 'jpeg', 'png', 'gif' ) ) ) { |
|
1213 | $metadata = wp_get_attachment_metadata( $media_item->ID ); |
|
1214 | if ( isset( $metadata['height'], $metadata['width'] ) ) { |
|
1215 | $response['height'] = $metadata['height']; |
|
1216 | $response['width'] = $metadata['width']; |
|
1217 | } |
|
1218 | ||
1219 | if ( isset( $metadata['sizes'] ) ) { |
|
1220 | /** |
|
1221 | * Filter the thumbnail sizes available for each attachment ID. |
|
1222 | * |
|
1223 | * @module json-api |
|
1224 | * |
|
1225 | * @since 3.9.0 |
|
1226 | * |
|
1227 | * @param array $metadata['sizes'] Array of thumbnail sizes available for a given attachment ID. |
|
1228 | * @param string $media_id Attachment ID. |
|
1229 | */ |
|
1230 | $sizes = apply_filters( 'rest_api_thumbnail_sizes', $metadata['sizes'], $media_id ); |
|
1231 | if ( is_array( $sizes ) ) { |
|
1232 | foreach ( $sizes as $size => $size_details ) { |
|
1233 | $response['thumbnails'][ $size ] = dirname( $response['URL'] ) . '/' . $size_details['file']; |
|
1234 | } |
|
1235 | } |
|
1236 | } |
|
1237 | ||
1238 | if ( isset( $metadata['image_meta'] ) ) { |
|
1239 | $response['exif'] = $metadata['image_meta']; |
|
1240 | } |
|
1241 | } |
|
1242 | ||
1243 | if ( in_array( $ext, array( 'mp3', 'm4a', 'wav', 'ogg' ) ) ) { |
|
1244 | $metadata = wp_get_attachment_metadata( $media_item->ID ); |
|
1245 | $response['length'] = $metadata['length']; |
|
1246 | $response['exif'] = $metadata; |
|
1247 | } |
|
1248 | ||
1249 | if ( in_array( $ext, array( 'ogv', 'mp4', 'mov', 'wmv', 'avi', 'mpg', '3gp', '3g2', 'm4v' ) ) ) { |
|
1250 | $metadata = wp_get_attachment_metadata( $media_item->ID ); |
|
1251 | if ( isset( $metadata['height'], $metadata['width'] ) ) { |
|
1252 | $response['height'] = $metadata['height']; |
|
1253 | $response['width'] = $metadata['width']; |
|
1254 | } |
|
1255 | ||
1256 | if ( isset( $metadata['length'] ) ) { |
|
1257 | $response['length'] = $metadata['length']; |
|
1258 | } |
|
1259 | ||
1260 | // add VideoPress info |
|
1261 | if ( function_exists( 'video_get_info_by_blogpostid' ) ) { |
|
1262 | $info = video_get_info_by_blogpostid( $this->api->get_blog_id_for_output(), $media_id ); |
|
1263 | ||
1264 | // Thumbnails |
|
1265 | if ( function_exists( 'video_format_done' ) && function_exists( 'video_image_url_by_guid' ) ) { |
|
1266 | $response['thumbnails'] = array( 'fmt_hd' => '', 'fmt_dvd' => '', 'fmt_std' => '' ); |
|
1267 | foreach ( $response['thumbnails'] as $size => $thumbnail_url ) { |
|
1268 | if ( video_format_done( $info, $size ) ) { |
|
1269 | $response['thumbnails'][ $size ] = video_image_url_by_guid( $info->guid, $size ); |
|
1270 | } else { |
|
1271 | unset( $response['thumbnails'][ $size ] ); |
|
1272 | } |
|
1273 | } |
|
1274 | } |
|
1275 | ||
1276 | $response['videopress_guid'] = $info->guid; |
|
1277 | $response['videopress_processing_done'] = true; |
|
1278 | if ( '0000-00-00 00:00:00' == $info->finish_date_gmt ) { |
|
1279 | $response['videopress_processing_done'] = false; |
|
1280 | } |
|
1281 | } |
|
1282 | } |
|
1283 | ||
1284 | $response['thumbnails'] = (object) $response['thumbnails']; |
|
1285 | ||
1286 | $response['meta'] = (object) array( |
|
1287 | 'links' => (object) array( |
|
1288 | 'self' => (string) $this->links->get_media_link( $this->api->get_blog_id_for_output(), $media_id ), |
|
1289 | 'help' => (string) $this->links->get_media_link( $this->api->get_blog_id_for_output(), $media_id, 'help' ), |
|
1290 | 'site' => (string) $this->links->get_site_link( $this->api->get_blog_id_for_output() ), |
|
1291 | ), |
|
1292 | ); |
|
1293 | ||
1294 | // add VideoPress link to the meta |
|
1295 | if ( in_array( $ext, array( 'ogv', 'mp4', 'mov', 'wmv', 'avi', 'mpg', '3gp', '3g2', 'm4v' ) ) ) { |
|
1296 | if ( function_exists( 'video_get_info_by_blogpostid' ) ) { |
|
1297 | $response['meta']->links->videopress = (string) $this->links->get_link( '/videos/%s', $response['videopress_guid'], '' ); |
|
1298 | } |
|
1299 | } |
|
1300 | ||
1301 | if ( $media_item->post_parent > 0 ) { |
|
1302 | $response['meta']->links->parent = (string) $this->links->get_post_link( $this->api->get_blog_id_for_output(), $media_item->post_parent ); |
|
1303 | } |
|
1304 | ||
1305 | return (object) $response; |
|
1306 | } |
|
1307 | ||
1308 | function get_taxonomy( $taxonomy_id, $taxonomy_type, $context ) { |
|
1309 |