WordPress.org

Make WordPress Core

Ticket #22768: 22768.5.diff

File 22768.5.diff, 4.7 KB (added by SergeyBiryukov, 6 years ago)
  • src/wp-admin/includes/image.php

     
    299299
    300300                        if ( ! empty( $iptc['2#120'][0] ) ) { // description / legacy caption
    301301                                $caption = trim( $iptc['2#120'][0] );
    302                                 if ( empty( $meta['title'] ) ) {
    303                                         mbstring_binary_safe_encoding();
    304                                         $caption_length = strlen( $caption );
    305                                         reset_mbstring_encoding();
    306302
     303                                mbstring_binary_safe_encoding();
     304                                $caption_length = strlen( $caption );
     305                                reset_mbstring_encoding();
     306
     307                                if ( empty( $meta['title'] ) && $caption_length < 80 ) {
    307308                                        // Assume the title is stored in 2:120 if it's short.
    308                                         if ( $caption_length < 80 ) {
    309                                                 $meta['title'] = $caption;
    310                                         } else {
    311                                                 $meta['caption'] = $caption;
    312                                         }
    313                                 } elseif ( $caption != $meta['title'] ) {
    314                                         $meta['caption'] = $caption;
     309                                        $meta['title'] = $caption;
    315310                                }
     311
     312                                $meta['caption'] = $caption;
    316313                        }
    317314
    318315                        if ( ! empty( $iptc['2#110'][0] ) ) // credit
     
    346343                        if ( empty( $meta['title'] ) && $description_length < 80 ) {
    347344                                // Assume the title is stored in ImageDescription
    348345                                $meta['title'] = trim( $exif['ImageDescription'] );
    349                                 if ( empty( $meta['caption'] ) && ! empty( $exif['COMPUTED']['UserComment'] ) && trim( $exif['COMPUTED']['UserComment'] ) != $meta['title'] ) {
    350                                         $meta['caption'] = trim( $exif['COMPUTED']['UserComment'] );
    351                                 }
    352                         } elseif ( empty( $meta['caption'] ) && trim( $exif['ImageDescription'] ) != $meta['title'] ) {
     346                        }
     347
     348                        if ( empty( $meta['caption'] ) && ! empty( $exif['COMPUTED']['UserComment'] ) ) {
     349                                $meta['caption'] = trim( $exif['COMPUTED']['UserComment'] );
     350                        }
     351
     352                        if ( empty( $meta['caption'] ) ) {
    353353                                $meta['caption'] = trim( $exif['ImageDescription'] );
    354354                        }
    355                 } elseif ( empty( $meta['caption'] ) && ! empty( $exif['Comments'] ) && trim( $exif['Comments'] ) != $meta['title'] ) {
     355                } elseif ( empty( $meta['caption'] ) && ! empty( $exif['Comments'] ) ) {
    356356                        $meta['caption'] = trim( $exif['Comments'] );
    357357                }
    358358
  • src/wp-admin/includes/media.php

     
    280280        $file = $file['file'];
    281281        $title = $name;
    282282        $content = '';
     283        $excerpt = '';
    283284
    284285        if ( preg_match( '#^audio#', $type ) ) {
    285286                $meta = wp_read_audio_metadata( $file );
    286287
    287                 if ( ! empty( $meta['title'] ) )
     288                if ( ! empty( $meta['title'] ) ) {
    288289                        $title = $meta['title'];
     290                }
    289291
    290                 $content = '';
    291 
    292292                if ( ! empty( $title ) ) {
    293293
    294294                        if ( ! empty( $meta['album'] ) && ! empty( $meta['artist'] ) ) {
     
    335335
    336336        // Use image exif/iptc data for title and caption defaults if possible.
    337337        } elseif ( 0 === strpos( $type, 'image/' ) && $image_meta = @wp_read_image_metadata( $file ) ) {
    338                 if ( trim( $image_meta['title'] ) && ! is_numeric( sanitize_title( $image_meta['title'] ) ) )
     338                if ( trim( $image_meta['title'] ) && ! is_numeric( sanitize_title( $image_meta['title'] ) ) ) {
    339339                        $title = $image_meta['title'];
    340                 if ( trim( $image_meta['caption'] ) )
    341                         $content = $image_meta['caption'];
     340                }
     341
     342                if ( trim( $image_meta['caption'] ) ) {
     343                        $excerpt = $image_meta['caption'];
     344                }
    342345        }
    343346
    344347        // Construct the attachment array
     
    348351                'post_parent' => $post_id,
    349352                'post_title' => $title,
    350353                'post_content' => $content,
     354                'post_excerpt' => $excerpt,
    351355        ), $post_data );
    352356
    353357        // This should never be set as it would then overwrite an existing attachment.
  • tests/phpunit/tests/media.php

     
    540540                );
    541541                $this->assertEquals( $expected, $filetype );
    542542        }
     543
     544        /**
     545         * @ticket 22768
     546         */
     547        public function test_media_handle_upload_sets_post_excerpt() {
     548                $iptc_file = DIR_TESTDATA . '/images/test-image-iptc.jpg';
     549
     550                // Make a copy of this file as it gets moved during the file upload
     551                $tmp_name = wp_tempnam( $iptc_file );
     552
     553                copy( $iptc_file, $tmp_name );
     554
     555                $_FILES['upload'] = array(
     556                        'tmp_name' => $tmp_name,
     557                        'name'     => 'test-image-iptc.jpg',
     558                        'type'     => 'image/jpeg',
     559                        'error'    => 0,
     560                        'size'     => filesize( $iptc_file )
     561                );
     562
     563                $post_id = media_handle_upload( 'upload', 0, array(), array( 'action' => 'test_iptc_upload', 'test_form' => false ) );
     564
     565                unset( $_FILES['upload'] );
     566
     567                $post = get_post( $post_id );
     568
     569                $this->assertEquals( 'This is a comment. / Это комментарий. / Βλέπετε ένα σχόλιο.', $post->post_excerpt );
     570        }
     571
    543572}