Make WordPress Core

Ticket #51665: 51665.2.diff

File 51665.2.diff, 1.6 KB (added by johnbillion, 15 months ago)
  • src/wp-includes/class-wp-image-editor-imagick.php

     
    741741                                return true;
    742742                        }
    743743                } else {
     744                        $dir_name   = dirname( $filename );
     745                        $dir_exists = wp_mkdir_p( $dir_name );
     746
     747                        if ( ! $dir_exists ) {
     748                                return new WP_Error(
     749                                        'image_save_error',
     750                                        sprintf(
     751                                                /* translators: %s: Directory path. */
     752                                                __( 'Unable to create directory %s. Is its parent directory writable by the server?' ),
     753                                                esc_html( $dir_name )
     754                                        )
     755                                );
     756                        }
     757
    744758                        try {
    745759                                return $image->writeImage( $filename );
    746760                        } catch ( Exception $e ) {
  • tests/phpunit/tests/image/editorImagick.php

     
    604604                }
    605605                unlink( $temp_file );
    606606        }
     607
     608        /**
     609         * @ticket 51665
     610         */
     611        public function test_directory_creation() {
     612                $file      = DIR_TESTDATA . '/images/a2-small.jpg';
     613                $directory = DIR_TESTDATA . '/images/nonexistent-directory';
     614                $editor    = new WP_Image_Editor_Imagick( $file );
     615
     616                $loaded = $editor->load();
     617                $this->assertNotWPError( $loaded );
     618
     619                $resized = $editor->resize( 100, 100, true );
     620                $this->assertNotWPError( $resized );
     621
     622                $saved = $editor->save( $directory . '/a2-small-cropped.jpg' );
     623                $this->assertNotWPError( $saved );
     624        }
    607625}