Make WordPress Core

Ticket #11417: 11417.patch

File 11417.patch, 3.4 KB (added by miqrogroove, 16 years ago)

Fixes several major problems with EXIF, IPTC, and slug handling.

  • wp-admin/includes/image.php

     
    254254                getimagesize($file, $info);
    255255                if ( !empty($info['APP13']) ) {
    256256                        $iptc = iptcparse($info['APP13']);
     257
    257258                        if ( !empty($iptc['2#110'][0]) ) // credit
    258259                                $meta['credit'] = utf8_encode(trim($iptc['2#110'][0]));
    259                         elseif ( !empty($iptc['2#080'][0]) ) // byline
     260                        elseif ( !empty($iptc['2#080'][0]) ) // creator / legacy byline
    260261                                $meta['credit'] = utf8_encode(trim($iptc['2#080'][0]));
     262
    261263                        if ( !empty($iptc['2#055'][0]) and !empty($iptc['2#060'][0]) ) // created date and time
    262264                                $meta['created_timestamp'] = strtotime($iptc['2#055'][0] . ' ' . $iptc['2#060'][0]);
    263                         if ( !empty($iptc['2#120'][0]) ) // caption
     265
     266                        if ( !empty($iptc['2#120'][0]) ) // description / legacy caption
    264267                                $meta['caption'] = utf8_encode(trim($iptc['2#120'][0]));
     268
    265269                        if ( !empty($iptc['2#116'][0]) ) // copyright
    266270                                $meta['copyright'] = utf8_encode(trim($iptc['2#116'][0]));
    267                         if ( !empty($iptc['2#005'][0]) ) // title
     271
     272                        if ( !empty($iptc['2#105'][0]) ) // headline, "A brief synopsis of the caption."
     273                                $meta['title'] = utf8_encode(trim($iptc['2#105'][0]));
     274                        elseif ( !empty($iptc['2#005'][0]) ) // title, "Many use the Title field to store the filename of the image, though the field may be used in many ways."
    268275                                $meta['title'] = utf8_encode(trim($iptc['2#005'][0]));
    269276                 }
    270277        }
     
    272279        // fetch additional info from exif if available
    273280        if ( is_callable('exif_read_data') && in_array($sourceImageType, apply_filters('wp_read_image_metadata_types', array(IMAGETYPE_JPEG, IMAGETYPE_TIFF_II, IMAGETYPE_TIFF_MM)) ) ) {
    274281                $exif = @exif_read_data( $file );
     282                if (!empty($exif['ImageDescription'])) {
     283                        if (empty($meta['title']) && strlen($exif['ImageDescription']) < 80) {
     284                                // In this situation, the title is stored in ImageDescription
     285                                $meta['title'] = trim($exif['ImageDescription']);
     286                                if (!empty($exif['COMPUTED']['UserComment'])) {
     287                                        $meta['caption'] = trim($exif['COMPUTED']['UserComment']);
     288                                }
     289                        } else {
     290                                $meta['caption'] = trim($exif['ImageDescription']);
     291                        }
     292                }
     293                if (!empty($exif['Artist']))
     294                        $meta['credit'] = trim( $exif['Artist'] );
     295                if (!empty($exif['Copyright']))
     296                        $meta['copyright'] = trim( $exif['Copyright'] );
    275297                if (!empty($exif['FNumber']))
    276298                        $meta['aperture'] = round( wp_exif_frac2dec( $exif['FNumber'] ), 2 );
    277299                if (!empty($exif['Model']))
  • wp-admin/includes/media.php

     
    208208
    209209        // use image exif/iptc data for title and caption defaults if possible
    210210        if ( $image_meta = @wp_read_image_metadata($file) ) {
    211                 if ( trim($image_meta['title']) )
     211                if ( !is_numeric(sanitize_title($image_meta['title'])) )
    212212                        $title = $image_meta['title'];
    213213                if ( trim($image_meta['caption']) )
    214214                        $content = $image_meta['caption'];
     
    259259
    260260        // use image exif/iptc data for title and caption defaults if possible
    261261        if ( $image_meta = @wp_read_image_metadata($file) ) {
    262                 if ( trim($image_meta['title']) )
     262                if ( !is_numeric(sanitize_title($image_meta['title'])) )
    263263                        $title = $image_meta['title'];
    264264                if ( trim($image_meta['caption']) )
    265265                        $content = $image_meta['caption'];