| @@ 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 | ||