/**
  * @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.');
     }
 }
예제 #2
0
 /**
  * @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');
 }
예제 #3
0
/**
 * 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();
}
예제 #4
0
 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') {
예제 #5
0
         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');