WPCOM_JSON_API_Endpoint::get_media_item_v1_1 PHP Méthode

get_media_item_v1_1() public méthode

public get_media_item_v1_1 ( $media_id )
    function get_media_item_v1_1($media_id)
    {
        $media_item = get_post($media_id);
        if (!$media_item || is_wp_error($media_item)) {
            return new WP_Error('unknown_media', 'Unknown Media', 404);
        }
        $file = basename(wp_get_attachment_url($media_item->ID));
        $file_info = pathinfo($file);
        $ext = $file_info['extension'];
        $response = array('ID' => $media_item->ID, 'URL' => wp_get_attachment_url($media_item->ID), 'guid' => $media_item->guid, 'date' => (string) $this->format_date($media_item->post_date_gmt, $media_item->post_date), 'post_ID' => $media_item->post_parent, 'author_ID' => (int) $media_item->post_author, 'file' => $file, 'mime_type' => $media_item->post_mime_type, 'extension' => $ext, 'title' => $media_item->post_title, 'caption' => $media_item->post_excerpt, 'description' => $media_item->post_content, 'alt' => get_post_meta($media_item->ID, '_wp_attachment_image_alt', true), 'thumbnails' => array());
        if (in_array($ext, array('jpg', 'jpeg', 'png', 'gif'))) {
            $metadata = wp_get_attachment_metadata($media_item->ID);
            if (isset($metadata['height'], $metadata['width'])) {
                $response['height'] = $metadata['height'];
                $response['width'] = $metadata['width'];
            }
            if (isset($metadata['sizes'])) {
                /**
                 * Filter the thumbnail sizes available for each attachment ID.
                 *
                 * @module json-api
                 *
                 * @since 3.9.0
                 *
                 * @param array $metadata['sizes'] Array of thumbnail sizes available for a given attachment ID.
                 * @param string $media_id Attachment ID.
                 */
                $sizes = apply_filters('rest_api_thumbnail_sizes', $metadata['sizes'], $media_id);
                if (is_array($sizes)) {
                    foreach ($sizes as $size => $size_details) {
                        $response['thumbnails'][$size] = dirname($response['URL']) . '/' . $size_details['file'];
                    }
                }
            }
            if (isset($metadata['image_meta'])) {
                $response['exif'] = $metadata['image_meta'];
            }
        }
        if (in_array($ext, array('mp3', 'm4a', 'wav', 'ogg'))) {
            $metadata = wp_get_attachment_metadata($media_item->ID);
            $response['length'] = $metadata['length'];
            $response['exif'] = $metadata;
        }
        if (in_array($ext, array('ogv', 'mp4', 'mov', 'wmv', 'avi', 'mpg', '3gp', '3g2', 'm4v'))) {
            $metadata = wp_get_attachment_metadata($media_item->ID);
            if (isset($metadata['height'], $metadata['width'])) {
                $response['height'] = $metadata['height'];
                $response['width'] = $metadata['width'];
            }
            if (isset($metadata['length'])) {
                $response['length'] = $metadata['length'];
            }
            // add VideoPress info
            if (function_exists('video_get_info_by_blogpostid')) {
                $info = video_get_info_by_blogpostid($this->api->get_blog_id_for_output(), $media_id);
                // Thumbnails
                if (function_exists('video_format_done') && function_exists('video_image_url_by_guid')) {
                    $response['thumbnails'] = array('fmt_hd' => '', 'fmt_dvd' => '', 'fmt_std' => '');
                    foreach ($response['thumbnails'] as $size => $thumbnail_url) {
                        if (video_format_done($info, $size)) {
                            $response['thumbnails'][$size] = video_image_url_by_guid($info->guid, $size);
                        } else {
                            unset($response['thumbnails'][$size]);
                        }
                    }
                }
                $response['videopress_guid'] = $info->guid;
                $response['videopress_processing_done'] = true;
                if ('0000-00-00 00:00:00' == $info->finish_date_gmt) {
                    $response['videopress_processing_done'] = false;
                }
            }
        }
        $response['thumbnails'] = (object) $response['thumbnails'];
        $response['meta'] = (object) array('links' => (object) array('self' => (string) $this->links->get_media_link($this->api->get_blog_id_for_output(), $media_id), 'help' => (string) $this->links->get_media_link($this->api->get_blog_id_for_output(), $media_id, 'help'), 'site' => (string) $this->links->get_site_link($this->api->get_blog_id_for_output())));
        // add VideoPress link to the meta
        if (in_array($ext, array('ogv', 'mp4', 'mov', 'wmv', 'avi', 'mpg', '3gp', '3g2', 'm4v'))) {
            if (function_exists('video_get_info_by_blogpostid')) {
                $response['meta']->links->videopress = (string) $this->links->get_link('/videos/%s', $response['videopress_guid'], '');
            }
        }
        if ($media_item->post_parent > 0) {
            $response['meta']->links->parent = (string) $this->links->get_post_link($this->api->get_blog_id_for_output(), $media_item->post_parent);
        }
        return (object) $response;
    }