/** * @ticket 32171 */ public function testImageEditOverwriteConstant() { define('IMAGE_EDIT_OVERWRITE', true); include_once ABSPATH . 'wp-admin/includes/image-edit.php'; $filename = DIR_TESTDATA . '/images/canola.jpg'; $contents = file_get_contents($filename); $upload = wp_upload_bits(basename($filename), null, $contents); $id = $this->_make_attachment($upload); $_REQUEST['action'] = 'image-editor'; $_REQUEST['context'] = 'edit-attachment'; $_REQUEST['postid'] = $id; $_REQUEST['target'] = 'all'; $_REQUEST['do'] = 'save'; $_REQUEST['history'] = '[{"c":{"x":5,"y":8,"w":289,"h":322}}]'; $ret = wp_save_image($id); $media_meta = wp_get_attachment_metadata($id); $sizes1 = $media_meta['sizes']; $_REQUEST['history'] = '[{"c":{"x":5,"y":8,"w":189,"h":322}}]'; $ret = wp_save_image($id); $media_meta = wp_get_attachment_metadata($id); $sizes2 = $media_meta['sizes']; $file_path = dirname(get_attached_file($id)); foreach ($sizes1 as $key => $size) { if ($sizes2[$key]['file'] !== $size['file']) { $files_that_shouldnt_exist[] = $file_path . '/' . $size['file']; } } foreach ($files_that_shouldnt_exist as $file) { $this->assertFileNotExists($file, 'IMAGE_EDIT_OVERWRITE is leaving garbage image files behind.'); } }
/** * @ticket 22985 */ public function testCropImageThumbnail() { include_once ABSPATH . 'wp-admin/includes/image-edit.php'; $filename = DIR_TESTDATA . '/images/canola.jpg'; $contents = file_get_contents($filename); $upload = wp_upload_bits(basename($filename), null, $contents); $id = $this->_make_attachment($upload); $_REQUEST['action'] = 'image-editor'; $_REQUEST['context'] = 'edit-attachment'; $_REQUEST['postid'] = $id; $_REQUEST['target'] = 'thumbnail'; $_REQUEST['do'] = 'save'; $_REQUEST['history'] = '[{"c":{"x":5,"y":8,"w":289,"h":322}}]'; $media_meta = wp_get_attachment_metadata($id); $this->assertArrayHasKey('sizes', $media_meta, 'attachment should have size data'); $this->assertArrayHasKey('medium', $media_meta['sizes'], 'attachment should have data for medium size'); $ret = wp_save_image($id); $media_meta = wp_get_attachment_metadata($id); $this->assertArrayHasKey('sizes', $media_meta, 'cropped attachment should have size data'); $this->assertArrayHasKey('medium', $media_meta['sizes'], 'cropped attachment should have data for medium size'); }
/** * Ajax handler for image editing. * * @since 3.1.0 */ function wp_ajax_image_editor() { $attachment_id = intval($_POST['postid']); if (empty($attachment_id) || !current_user_can('edit_post', $attachment_id)) { wp_die(-1); } check_ajax_referer("image_editor-{$attachment_id}"); include_once ABSPATH . 'wp-admin/includes/image-edit.php'; $msg = false; switch ($_POST['do']) { case 'save': $msg = wp_save_image($attachment_id); $msg = wp_json_encode($msg); wp_die($msg); break; case 'scale': $msg = wp_save_image($attachment_id); break; case 'restore': $msg = wp_restore_image($attachment_id); break; } wp_image_editor($attachment_id, $msg); wp_die(); }
case 'image-editor': $attachment_id = intval($_POST['postid']); if (empty($attachment_id) || !current_user_can('edit_post', $attachment_id)) { die('-1'); } check_ajax_referer("image_editor-{$attachment_id}"); include_once ABSPATH . 'wp-admin/includes/image-edit.php'; $msg = false; switch ($_POST['do']) { case 'save': $msg = wp_save_image($attachment_id); $msg = json_encode($msg); die($msg); break; case 'scale': $msg = wp_save_image($attachment_id); break; case 'restore': $msg = wp_restore_image($attachment_id); break; } wp_image_editor($attachment_id, $msg); die; break; case 'set-post-thumbnail': $post_id = intval($_POST['post_id']); if (!current_user_can('edit_post', $post_id)) { die('-1'); } $thumbnail_id = intval($_POST['thumbnail_id']); if ($thumbnail_id == '-1') {
die; } if ($form = $wp_registered_widget_controls[$widget_id]) { call_user_func_array($form['callback'], $form['params']); } die; break; case 'image-edit-save': // $post_id is the attachment ID $post_id = intval($_POST['postid']); if (empty($post_id) || !current_user_can('edit_post', $post_id)) { die('-1'); } check_ajax_referer("image_editor-{$post_id}"); include_once ABSPATH . 'wp-admin/includes/image-edit.php'; $msg = wp_save_image($post_id); die($msg); break; case 'open-image-editor': $post_id = intval($_POST['postid']); if (empty($post_id) || !current_user_can('edit_post', $post_id)) { die('-1'); } check_ajax_referer("image_editor-{$post_id}"); include_once ABSPATH . 'wp-admin/includes/image-edit.php'; wp_image_editor($post_id); die; break; default: do_action('wp_ajax_' . $_POST['action']); die('0');