File "class-wp-rest-attachments-controller.php"
Full path: /home/kosmetik/public_html/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php
File
size: 32.21 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
class WP_REST_Attachments_Controller extends WP_REST_Posts_Controller
{
public function register_routes()
{
parent::register_routes();
register_rest_route($this->namespace, '/' . $this->rest_base . '/(?P<id>[\\d]+)/post-process', array('methods' => WP_REST_Server::CREATABLE, 'callback' => array($this, 'post_process_item'), 'permission_callback' => array($this, 'post_process_item_permissions_check'), 'args' => array('id' => array('description' => __('Unique identifier for the object.'), 'type' => 'integer'), 'action' => array('type' => 'string', 'enum' => array('create-image-subsizes'), 'required' => true))));
register_rest_route($this->namespace, '/' . $this->rest_base . '/(?P<id>[\\d]+)/edit', array('methods' => WP_REST_Server::CREATABLE, 'callback' => array($this, 'edit_media_item'), 'permission_callback' => array($this, 'edit_media_item_permissions_check'), 'args' => $this->get_edit_media_item_args()));
}
protected function prepare_items_query($prepared_args = array(), $request = null)
{
$query_args = parent::prepare_items_query($prepared_args, $request);
if (empty($query_args['post_status'])) {
$query_args['post_status'] = 'inherit';
}
$media_types = $this->get_media_types();
if (!empty($request['media_type']) && isset($media_types[$request['media_type']])) {
$query_args['post_mime_type'] = $media_types[$request['media_type']];
}
if (!empty($request['mime_type'])) {
$parts = explode('/', $request['mime_type']);
if (isset($media_types[$parts[0]]) && in_array($request['mime_type'], $media_types[$parts[0]], true)) {
$query_args['post_mime_type'] = $request['mime_type'];
}
}
if (isset($query_args['s'])) {
add_filter('posts_clauses', '_filter_query_attachment_filenames');
}
return $query_args;
}
public function create_item_permissions_check($request)
{
$ret = parent::create_item_permissions_check($request);
if (!$ret || is_wp_error($ret)) {
return $ret;
}
if (!current_user_can('upload_files')) {
return new WP_Error('rest_cannot_create', __('Sorry, you are not allowed to upload media on this site.'), array('status' => 400));
}
if (!empty($request['post']) && !current_user_can('edit_post', (int) $request['post'])) {
return new WP_Error('rest_cannot_edit', __('Sorry, you are not allowed to upload media to this post.'), array('status' => rest_authorization_required_code()));
}
return true;
}
public function create_item($request)
{
if (!empty($request['post']) && in_array(get_post_type($request['post']), array('revision', 'attachment'), true)) {
return new WP_Error('rest_invalid_param', __('Invalid parent type.'), array('status' => 400));
}
$insert = $this->insert_attachment($request);
if (is_wp_error($insert)) {
return $insert;
}
$schema = $this->get_item_schema();
$attachment_id = $insert['attachment_id'];
$file = $insert['file'];
if (isset($request['alt_text'])) {
update_post_meta($attachment_id, '_wp_attachment_image_alt', sanitize_text_field($request['alt_text']));
}
if (!empty($schema['properties']['meta']) && isset($request['meta'])) {
$meta_update = $this->meta->update_value($request['meta'], $attachment_id);
if (is_wp_error($meta_update)) {
return $meta_update;
}
}
$attachment = get_post($attachment_id);
$fields_update = $this->update_additional_fields_for_object($attachment, $request);
if (is_wp_error($fields_update)) {
return $fields_update;
}
$request->set_param('context', 'edit');
do_action('rest_after_insert_attachment', $attachment, $request, true);
wp_after_insert_post($attachment, false, null);
if (defined('REST_REQUEST') && REST_REQUEST) {
header('X-WP-Upload-Attachment-ID: ' . $attachment_id);
}
require_once ABSPATH . 'wp-admin/includes/media.php';
require_once ABSPATH . 'wp-admin/includes/image.php';
wp_update_attachment_metadata($attachment_id, wp_generate_attachment_metadata($attachment_id, $file));
$response = $this->prepare_item_for_response($attachment, $request);
$response = rest_ensure_response($response);
$response->set_status(201);
$response->header('Location', rest_url(sprintf('%s/%s/%d', $this->namespace, $this->rest_base, $attachment_id)));
return $response;
}
protected function insert_attachment($request)
{
$files = $request->get_file_params();
$headers = $request->get_headers();
if (!empty($files)) {
$file = $this->upload_from_file($files, $headers);
} else {
$file = $this->upload_from_data($request->get_body(), $headers);
}
if (is_wp_error($file)) {
return $file;
}
$name = wp_basename($file['file']);
$name_parts = pathinfo($name);
$name = trim(substr($name, 0, -(1 + strlen($name_parts['extension']))));
$url = $file['url'];
$type = $file['type'];
$file = $file['file'];
require_once ABSPATH . 'wp-admin/includes/image.php';
$image_meta = wp_read_image_metadata($file);
if (!empty($image_meta)) {
if (empty($request['title']) && trim($image_meta['title']) && !is_numeric(sanitize_title($image_meta['title']))) {
$request['title'] = $image_meta['title'];
}
if (empty($request['caption']) && trim($image_meta['caption'])) {
$request['caption'] = $image_meta['caption'];
}
}
$attachment = $this->prepare_item_for_database($request);
$attachment->post_mime_type = $type;
$attachment->guid = $url;
if (empty($attachment->post_title)) {
$attachment->post_title = preg_replace('/\\.[^.]+$/', '', wp_basename($file));
}
$id = wp_insert_attachment(wp_slash((array) $attachment), $file, 0, true, false);
if (is_wp_error($id)) {
if ('db_update_error' === $id->get_error_code()) {
$id->add_data(array('status' => 500));
} else {
$id->add_data(array('status' => 400));
}
return $id;
}
$attachment = get_post($id);
do_action('rest_insert_attachment', $attachment, $request, true);
return array('attachment_id' => $id, 'file' => $file);
}
public function update_item($request)
{
if (!empty($request['post']) && in_array(get_post_type($request['post']), array('revision', 'attachment'), true)) {
return new WP_Error('rest_invalid_param', __('Invalid parent type.'), array('status' => 400));
}
$attachment_before = get_post($request['id']);
$response = parent::update_item($request);
if (is_wp_error($response)) {
return $response;
}
$response = rest_ensure_response($response);
$data = $response->get_data();
if (isset($request['alt_text'])) {
update_post_meta($data['id'], '_wp_attachment_image_alt', $request['alt_text']);
}
$attachment = get_post($request['id']);
$fields_update = $this->update_additional_fields_for_object($attachment, $request);
if (is_wp_error($fields_update)) {
return $fields_update;
}
$request->set_param('context', 'edit');
do_action('rest_after_insert_attachment', $attachment, $request, false);
wp_after_insert_post($attachment, true, $attachment_before);
$response = $this->prepare_item_for_response($attachment, $request);
$response = rest_ensure_response($response);
return $response;
}
public function post_process_item($request)
{
switch ($request['action']) {
case 'create-image-subsizes':
require_once ABSPATH . 'wp-admin/includes/image.php';
wp_update_image_subsizes($request['id']);
break;
}
$request['context'] = 'edit';
return $this->prepare_item_for_response(get_post($request['id']), $request);
}
public function post_process_item_permissions_check($request)
{
return $this->update_item_permissions_check($request);
}
public function edit_media_item_permissions_check($request)
{
if (!current_user_can('upload_files')) {
return new WP_Error('rest_cannot_edit_image', __('Sorry, you are not allowed to upload media on this site.'), array('status' => rest_authorization_required_code()));
}
return $this->update_item_permissions_check($request);
}
public function edit_media_item($request)
{
require_once ABSPATH . 'wp-admin/includes/image.php';
$attachment_id = $request['id'];
$image_file = wp_get_original_image_path($attachment_id);
$image_meta = wp_get_attachment_metadata($attachment_id);
if (!$image_meta || !$image_file || !wp_image_file_matches_image_meta($request['src'], $image_meta, $attachment_id)) {
return new WP_Error('rest_unknown_attachment', __('Unable to get meta information for file.'), array('status' => 404));
}
$supported_types = array('image/jpeg', 'image/png', 'image/gif');
$mime_type = get_post_mime_type($attachment_id);
if (!in_array($mime_type, $supported_types, true)) {
return new WP_Error('rest_cannot_edit_file_type', __('This type of file cannot be edited.'), array('status' => 400));
}
if (isset($request['modifiers'])) {
$modifiers = $request['modifiers'];
} else {
$modifiers = array();
if (!empty($request['rotation'])) {
$modifiers[] = array('type' => 'rotate', 'args' => array('angle' => $request['rotation']));
}
if (isset($request['x'], $request['y'], $request['width'], $request['height'])) {
$modifiers[] = array('type' => 'crop', 'args' => array('left' => $request['x'], 'top' => $request['y'], 'width' => $request['width'], 'height' => $request['height']));
}
if (0 === count($modifiers)) {
return new WP_Error('rest_image_not_edited', __('The image was not edited. Edit the image before applying the changes.'), array('status' => 400));
}
}
$image_file_to_edit = $image_file;
if (!file_exists($image_file_to_edit)) {
$image_file_to_edit = _load_image_to_edit_path($attachment_id);
}
$image_editor = wp_get_image_editor($image_file_to_edit);
if (is_wp_error($image_editor)) {
return new WP_Error('rest_unknown_image_file_type', __('Unable to edit this image.'), array('status' => 500));
}
foreach ($modifiers as $modifier) {
$args = $modifier['args'];
switch ($modifier['type']) {
case 'rotate':
$rotate = 0 - $args['angle'];
if (0 !== $rotate) {
$result = $image_editor->rotate($rotate);
if (is_wp_error($result)) {
return new WP_Error('rest_image_rotation_failed', __('Unable to rotate this image.'), array('status' => 500));
}
}
break;
case 'crop':
$size = $image_editor->get_size();
$crop_x = round($size['width'] * $args['left'] / 100.0);
$crop_y = round($size['height'] * $args['top'] / 100.0);
$width = round($size['width'] * $args['width'] / 100.0);
$height = round($size['height'] * $args['height'] / 100.0);
if ($size['width'] !== $width && $size['height'] !== $height) {
$result = $image_editor->crop($crop_x, $crop_y, $width, $height);
if (is_wp_error($result)) {
return new WP_Error('rest_image_crop_failed', __('Unable to crop this image.'), array('status' => 500));
}
}
break;
}
}
$image_ext = pathinfo($image_file, PATHINFO_EXTENSION);
$image_name = wp_basename($image_file, ".{$image_ext}");
if (preg_match('/-edited(-\\d+)?$/', $image_name)) {
$image_name = preg_replace('/-edited(-\\d+)?$/', '-edited', $image_name);
} else {
$image_name .= '-edited';
}
$filename = "{$image_name}.{$image_ext}";
$uploads = wp_upload_dir();
$filename = wp_unique_filename($uploads['path'], $filename);
$saved = $image_editor->save($uploads['path'] . "/{$filename}");
if (is_wp_error($saved)) {
return $saved;
}
$new_attachment_post = array('post_mime_type' => $saved['mime-type'], 'guid' => $uploads['url'] . "/{$filename}", 'post_title' => $image_name, 'post_content' => '');
$attachment_post = get_post($attachment_id);
if ($attachment_post) {
$new_attachment_post['post_content'] = $attachment_post->post_content;
$new_attachment_post['post_excerpt'] = $attachment_post->post_excerpt;
$new_attachment_post['post_title'] = $attachment_post->post_title;
}
$new_attachment_id = wp_insert_attachment(wp_slash($new_attachment_post), $saved['path'], 0, true);
if (is_wp_error($new_attachment_id)) {
if ('db_update_error' === $new_attachment_id->get_error_code()) {
$new_attachment_id->add_data(array('status' => 500));
} else {
$new_attachment_id->add_data(array('status' => 400));
}
return $new_attachment_id;
}
$image_alt = get_post_meta($attachment_id, '_wp_attachment_image_alt', true);
if (!empty($image_alt)) {
update_post_meta($new_attachment_id, '_wp_attachment_image_alt', wp_slash($image_alt));
}
if (defined('REST_REQUEST') && REST_REQUEST) {
header('X-WP-Upload-Attachment-ID: ' . $new_attachment_id);
}
$new_image_meta = wp_generate_attachment_metadata($new_attachment_id, $saved['path']);
if (isset($image_meta['image_meta']) && isset($new_image_meta['image_meta']) && is_array($new_image_meta['image_meta'])) {
foreach ((array) $image_meta['image_meta'] as $key => $value) {
if (empty($new_image_meta['image_meta'][$key]) && !empty($value)) {
$new_image_meta['image_meta'][$key] = $value;
}
}
}
if (!empty($new_image_meta['image_meta']['orientation'])) {
$new_image_meta['image_meta']['orientation'] = 1;
}
$new_image_meta['parent_image'] = array('attachment_id' => $attachment_id, 'file' => _wp_relative_upload_path($image_file));
$new_image_meta = apply_filters('wp_edited_image_metadata', $new_image_meta, $new_attachment_id, $attachment_id);
wp_update_attachment_metadata($new_attachment_id, $new_image_meta);
$response = $this->prepare_item_for_response(get_post($new_attachment_id), $request);
$response->set_status(201);
$response->header('Location', rest_url(sprintf('%s/%s/%s', $this->namespace, $this->rest_base, $new_attachment_id)));
return $response;
}
protected function prepare_item_for_database($request)
{
$prepared_attachment = parent::prepare_item_for_database($request);
if (isset($request['caption'])) {
if (is_string($request['caption'])) {
$prepared_attachment->post_excerpt = $request['caption'];
} elseif (isset($request['caption']['raw'])) {
$prepared_attachment->post_excerpt = $request['caption']['raw'];
}
}
if (isset($request['description'])) {
if (is_string($request['description'])) {
$prepared_attachment->post_content = $request['description'];
} elseif (isset($request['description']['raw'])) {
$prepared_attachment->post_content = $request['description']['raw'];
}
}
if (isset($request['post'])) {
$prepared_attachment->post_parent = (int) $request['post'];
}
return $prepared_attachment;
}
public function prepare_item_for_response($post, $request)
{
$response = parent::prepare_item_for_response($post, $request);
$fields = $this->get_fields_for_response($request);
$data = $response->get_data();
if (in_array('description', $fields, true)) {
$data['description'] = array('raw' => $post->post_content, 'rendered' => apply_filters('the_content', $post->post_content));
}
if (in_array('caption', $fields, true)) {
$caption = apply_filters('get_the_excerpt', $post->post_excerpt, $post);
$caption = apply_filters('the_excerpt', $caption);
$data['caption'] = array('raw' => $post->post_excerpt, 'rendered' => $caption);
}
if (in_array('alt_text', $fields, true)) {
$data['alt_text'] = get_post_meta($post->ID, '_wp_attachment_image_alt', true);
}
if (in_array('media_type', $fields, true)) {
$data['media_type'] = wp_attachment_is_image($post->ID) ? 'image' : 'file';
}
if (in_array('mime_type', $fields, true)) {
$data['mime_type'] = $post->post_mime_type;
}
if (in_array('media_details', $fields, true)) {
$data['media_details'] = wp_get_attachment_metadata($post->ID);
if (empty($data['media_details'])) {
$data['media_details'] = new stdClass();
} elseif (!empty($data['media_details']['sizes'])) {
foreach ($data['media_details']['sizes'] as $size => &$size_data) {
if (isset($size_data['mime-type'])) {
$size_data['mime_type'] = $size_data['mime-type'];
unset($size_data['mime-type']);
}
$image_src = wp_get_attachment_image_src($post->ID, $size);
if (!$image_src) {
continue;
}
$size_data['source_url'] = $image_src[0];
}
$full_src = wp_get_attachment_image_src($post->ID, 'full');
if (!empty($full_src)) {
$data['media_details']['sizes']['full'] = array('file' => wp_basename($full_src[0]), 'width' => $full_src[1], 'height' => $full_src[2], 'mime_type' => $post->post_mime_type, 'source_url' => $full_src[0]);
}
} else {
$data['media_details']['sizes'] = new stdClass();
}
}
if (in_array('post', $fields, true)) {
$data['post'] = !empty($post->post_parent) ? (int) $post->post_parent : null;
}
if (in_array('source_url', $fields, true)) {
$data['source_url'] = wp_get_attachment_url($post->ID);
}
if (in_array('missing_image_sizes', $fields, true)) {
require_once ABSPATH . 'wp-admin/includes/image.php';
$data['missing_image_sizes'] = array_keys(wp_get_missing_image_subsizes($post->ID));
}
$context = !empty($request['context']) ? $request['context'] : 'view';
$data = $this->filter_response_by_context($data, $context);
$links = $response->get_links();
$response = rest_ensure_response($data);
foreach ($links as $rel => $rel_links) {
foreach ($rel_links as $link) {
$response->add_link($rel, $link['href'], $link['attributes']);
}
}
return apply_filters('rest_prepare_attachment', $response, $post, $request);
}
public function get_item_schema()
{
if ($this->schema) {
return $this->add_additional_fields_schema($this->schema);
}
$schema = parent::get_item_schema();
$schema['properties']['alt_text'] = array('description' => __('Alternative text to display when attachment is not displayed.'), 'type' => 'string', 'context' => array('view', 'edit', 'embed'), 'arg_options' => array('sanitize_callback' => 'sanitize_text_field'));
$schema['properties']['caption'] = array('description' => __('The attachment caption.'), 'type' => 'object', 'context' => array('view', 'edit', 'embed'), 'arg_options' => array('sanitize_callback' => null, 'validate_callback' => null), 'properties' => array('raw' => array('description' => __('Caption for the attachment, as it exists in the database.'), 'type' => 'string', 'context' => array('edit')), 'rendered' => array('description' => __('HTML caption for the attachment, transformed for display.'), 'type' => 'string', 'context' => array('view', 'edit', 'embed'), 'readonly' => true)));
$schema['properties']['description'] = array('description' => __('The attachment description.'), 'type' => 'object', 'context' => array('view', 'edit'), 'arg_options' => array('sanitize_callback' => null, 'validate_callback' => null), 'properties' => array('raw' => array('description' => __('Description for the object, as it exists in the database.'), 'type' => 'string', 'context' => array('edit')), 'rendered' => array('description' => __('HTML description for the object, transformed for display.'), 'type' => 'string', 'context' => array('view', 'edit'), 'readonly' => true)));
$schema['properties']['media_type'] = array('description' => __('Attachment type.'), 'type' => 'string', 'enum' => array('image', 'file'), 'context' => array('view', 'edit', 'embed'), 'readonly' => true);
$schema['properties']['mime_type'] = array('description' => __('The attachment MIME type.'), 'type' => 'string', 'context' => array('view', 'edit', 'embed'), 'readonly' => true);
$schema['properties']['media_details'] = array('description' => __('Details about the media file, specific to its type.'), 'type' => 'object', 'context' => array('view', 'edit', 'embed'), 'readonly' => true);
$schema['properties']['post'] = array('description' => __('The ID for the associated post of the attachment.'), 'type' => 'integer', 'context' => array('view', 'edit'));
$schema['properties']['source_url'] = array('description' => __('URL to the original attachment file.'), 'type' => 'string', 'format' => 'uri', 'context' => array('view', 'edit', 'embed'), 'readonly' => true);
$schema['properties']['missing_image_sizes'] = array('description' => __('List of the missing image sizes of the attachment.'), 'type' => 'array', 'items' => array('type' => 'string'), 'context' => array('edit'), 'readonly' => true);
unset($schema['properties']['password']);
$this->schema = $schema;
return $this->add_additional_fields_schema($this->schema);
}
protected function upload_from_data($data, $headers)
{
if (empty($data)) {
return new WP_Error('rest_upload_no_data', __('No data supplied.'), array('status' => 400));
}
if (empty($headers['content_type'])) {
return new WP_Error('rest_upload_no_content_type', __('No Content-Type supplied.'), array('status' => 400));
}
if (empty($headers['content_disposition'])) {
return new WP_Error('rest_upload_no_content_disposition', __('No Content-Disposition supplied.'), array('status' => 400));
}
$filename = self::get_filename_from_disposition($headers['content_disposition']);
if (empty($filename)) {
return new WP_Error('rest_upload_invalid_disposition', __('Invalid Content-Disposition supplied. Content-Disposition needs to be formatted as `attachment; filename="image.png"` or similar.'), array('status' => 400));
}
if (!empty($headers['content_md5'])) {
$content_md5 = array_shift($headers['content_md5']);
$expected = trim($content_md5);
$actual = md5($data);
if ($expected !== $actual) {
return new WP_Error('rest_upload_hash_mismatch', __('Content hash did not match expected.'), array('status' => 412));
}
}
$type = array_shift($headers['content_type']);
require_once ABSPATH . 'wp-admin/includes/file.php';
$tmpfname = wp_tempnam($filename);
$fp = fopen($tmpfname, 'w+');
if (!$fp) {
return new WP_Error('rest_upload_file_error', __('Could not open file handle.'), array('status' => 500));
}
fwrite($fp, $data);
fclose($fp);
$file_data = array('error' => null, 'tmp_name' => $tmpfname, 'name' => $filename, 'type' => $type);
$size_check = self::check_upload_size($file_data);
if (is_wp_error($size_check)) {
return $size_check;
}
$overrides = array('test_form' => false);
$sideloaded = wp_handle_sideload($file_data, $overrides);
if (isset($sideloaded['error'])) {
@unlink($tmpfname);
return new WP_Error('rest_upload_sideload_error', $sideloaded['error'], array('status' => 500));
}
return $sideloaded;
}
public static function get_filename_from_disposition($disposition_header)
{
$filename = null;
foreach ($disposition_header as $value) {
$value = trim($value);
if (strpos($value, ';') === false) {
continue;
}
list($type, $attr_parts) = explode(';', $value, 2);
$attr_parts = explode(';', $attr_parts);
$attributes = array();
foreach ($attr_parts as $part) {
if (strpos($part, '=') === false) {
continue;
}
list($key, $value) = explode('=', $part, 2);
$attributes[trim($key)] = trim($value);
}
if (empty($attributes['filename'])) {
continue;
}
$filename = trim($attributes['filename']);
if (substr($filename, 0, 1) === '"' && substr($filename, -1, 1) === '"') {
$filename = substr($filename, 1, -1);
}
}
return $filename;
}
public function get_collection_params()
{
$params = parent::get_collection_params();
$params['status']['default'] = 'inherit';
$params['status']['items']['enum'] = array('inherit', 'private', 'trash');
$media_types = $this->get_media_types();
$params['media_type'] = array('default' => null, 'description' => __('Limit result set to attachments of a particular media type.'), 'type' => 'string', 'enum' => array_keys($media_types));
$params['mime_type'] = array('default' => null, 'description' => __('Limit result set to attachments of a particular MIME type.'), 'type' => 'string');
return $params;
}
protected function upload_from_file($files, $headers)
{
if (empty($files)) {
return new WP_Error('rest_upload_no_data', __('No data supplied.'), array('status' => 400));
}
if (!empty($headers['content_md5'])) {
$content_md5 = array_shift($headers['content_md5']);
$expected = trim($content_md5);
$actual = md5_file($files['file']['tmp_name']);
if ($expected !== $actual) {
return new WP_Error('rest_upload_hash_mismatch', __('Content hash did not match expected.'), array('status' => 412));
}
}
$overrides = array('test_form' => false);
if (defined('DIR_TESTDATA') && DIR_TESTDATA) {
$overrides['action'] = 'wp_handle_mock_upload';
}
$size_check = self::check_upload_size($files['file']);
if (is_wp_error($size_check)) {
return $size_check;
}
require_once ABSPATH . 'wp-admin/includes/file.php';
$file = wp_handle_upload($files['file'], $overrides);
if (isset($file['error'])) {
return new WP_Error('rest_upload_unknown_error', $file['error'], array('status' => 500));
}
return $file;
}
protected function get_media_types()
{
$media_types = array();
foreach (get_allowed_mime_types() as $mime_type) {
$parts = explode('/', $mime_type);
if (!isset($media_types[$parts[0]])) {
$media_types[$parts[0]] = array();
}
$media_types[$parts[0]][] = $mime_type;
}
return $media_types;
}
protected function check_upload_size($file)
{
if (!is_multisite()) {
return true;
}
if (get_site_option('upload_space_check_disabled')) {
return true;
}
$space_left = get_upload_space_available();
$file_size = filesize($file['tmp_name']);
if ($space_left < $file_size) {
return new WP_Error('rest_upload_limited_space', sprintf(__('Not enough space to upload. %s KB needed.'), number_format(($file_size - $space_left) / KB_IN_BYTES)), array('status' => 400));
}
if ($file_size > KB_IN_BYTES * get_site_option('fileupload_maxk', 1500)) {
return new WP_Error('rest_upload_file_too_big', sprintf(__('This file is too big. Files must be less than %s KB in size.'), get_site_option('fileupload_maxk', 1500)), array('status' => 400));
}
require_once ABSPATH . 'wp-admin/includes/ms.php';
if (upload_is_user_over_quota(false)) {
return new WP_Error('rest_upload_user_quota_exceeded', __('You have used your space quota. Please delete files before uploading.'), array('status' => 400));
}
return true;
}
protected function get_edit_media_item_args()
{
return array('src' => array('description' => __('URL to the edited image file.'), 'type' => 'string', 'format' => 'uri', 'required' => true), 'modifiers' => array('description' => __('Array of image edits.'), 'type' => 'array', 'minItems' => 1, 'items' => array('description' => __('Image edit.'), 'type' => 'object', 'required' => array('type', 'args'), 'oneOf' => array(array('title' => __('Rotation'), 'properties' => array('type' => array('description' => __('Rotation type.'), 'type' => 'string', 'enum' => array('rotate')), 'args' => array('description' => __('Rotation arguments.'), 'type' => 'object', 'required' => array('angle'), 'properties' => array('angle' => array('description' => __('Angle to rotate clockwise in degrees.'), 'type' => 'number'))))), array('title' => __('Crop'), 'properties' => array('type' => array('description' => __('Crop type.'), 'type' => 'string', 'enum' => array('crop')), 'args' => array('description' => __('Crop arguments.'), 'type' => 'object', 'required' => array('left', 'top', 'width', 'height'), 'properties' => array('left' => array('description' => __('Horizontal position from the left to begin the crop as a percentage of the image width.'), 'type' => 'number'), 'top' => array('description' => __('Vertical position from the top to begin the crop as a percentage of the image height.'), 'type' => 'number'), 'width' => array('description' => __('Width of the crop as a percentage of the image width.'), 'type' => 'number'), 'height' => array('description' => __('Height of the crop as a percentage of the image height.'), 'type' => 'number')))))))), 'rotation' => array('description' => __('The amount to rotate the image clockwise in degrees. DEPRECATED: Use `modifiers` instead.'), 'type' => 'integer', 'minimum' => 0, 'exclusiveMinimum' => true, 'maximum' => 360, 'exclusiveMaximum' => true), 'x' => array('description' => __('As a percentage of the image, the x position to start the crop from. DEPRECATED: Use `modifiers` instead.'), 'type' => 'number', 'minimum' => 0, 'maximum' => 100), 'y' => array('description' => __('As a percentage of the image, the y position to start the crop from. DEPRECATED: Use `modifiers` instead.'), 'type' => 'number', 'minimum' => 0, 'maximum' => 100), 'width' => array('description' => __('As a percentage of the image, the width to crop the image to. DEPRECATED: Use `modifiers` instead.'), 'type' => 'number', 'minimum' => 0, 'maximum' => 100), 'height' => array('description' => __('As a percentage of the image, the height to crop the image to. DEPRECATED: Use `modifiers` instead.'), 'type' => 'number', 'minimum' => 0, 'maximum' => 100));
}
}