Ticket #11417: 11417.3.patch

File 11417.3.patch, 4.4 KB (added by miqrogroove, 3 years ago)

Check for more situations where caption was used instead of title.

  • wp-admin/includes/image.php

     
    252252        // as caption, description etc 
    253253        if ( is_callable('iptcparse') ) { 
    254254                getimagesize($file, $info); 
     255 
    255256                if ( !empty($info['APP13']) ) { 
    256257                        $iptc = iptcparse($info['APP13']); 
     258 
     259                        if ( !empty($iptc['2#105'][0]) ) // headline, "A brief synopsis of the caption." 
     260                                $meta['title'] = utf8_encode(trim($iptc['2#105'][0])); 
     261                        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." 
     262                                $meta['title'] = utf8_encode(trim($iptc['2#005'][0])); 
     263 
     264                        if ( !empty($iptc['2#120'][0]) ) { // description / legacy caption 
     265                                $caption = utf8_encode(trim($iptc['2#120'][0])); 
     266                                if (empty($meta['title'])) { 
     267                                        if (strlen($caption) < 80) { 
     268                                                // In this situation, assume the title is stored in 2:120. 
     269                                                $meta['title'] = $caption; 
     270                                        } else { 
     271                                                $meta['caption'] = $caption; 
     272                                        } 
     273                                } elseif ($caption != $meta['title']) { 
     274                                        $meta['caption'] = $caption; 
     275                                } 
     276                        } 
     277 
    257278                        if ( !empty($iptc['2#110'][0]) ) // credit 
    258279                                $meta['credit'] = utf8_encode(trim($iptc['2#110'][0])); 
    259                         elseif ( !empty($iptc['2#080'][0]) ) // byline 
     280                        elseif ( !empty($iptc['2#080'][0]) ) // creator / legacy byline 
    260281                                $meta['credit'] = utf8_encode(trim($iptc['2#080'][0])); 
     282 
    261283                        if ( !empty($iptc['2#055'][0]) and !empty($iptc['2#060'][0]) ) // created date and time 
    262284                                $meta['created_timestamp'] = strtotime($iptc['2#055'][0] . ' ' . $iptc['2#060'][0]); 
    263                         if ( !empty($iptc['2#120'][0]) ) // caption 
    264                                 $meta['caption'] = utf8_encode(trim($iptc['2#120'][0])); 
     285 
    265286                        if ( !empty($iptc['2#116'][0]) ) // copyright 
    266287                                $meta['copyright'] = utf8_encode(trim($iptc['2#116'][0])); 
    267                         if ( !empty($iptc['2#005'][0]) ) // title 
    268                                 $meta['title'] = utf8_encode(trim($iptc['2#005'][0])); 
    269288                 } 
    270289        } 
    271290 
    272291        // fetch additional info from exif if available 
    273292        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)) ) ) { 
    274293                $exif = @exif_read_data( $file ); 
     294 
     295                if (!empty($exif['Title'])) 
     296                        $meta['title'] = trim( $exif['Title'] ); 
     297                         
     298                if (!empty($exif['ImageDescription'])) { 
     299                        if (empty($meta['title']) && strlen($exif['ImageDescription']) < 80) { 
     300                                // In this situation, the title is stored in ImageDescription 
     301                                $meta['title'] = trim($exif['ImageDescription']); 
     302                                if (!empty($exif['COMPUTED']['UserComment']) && trim($exif['COMPUTED']['UserComment']) != $meta['title']) { 
     303                                        $meta['caption'] = trim($exif['COMPUTED']['UserComment']); 
     304                                } 
     305                        } elseif (trim($exif['ImageDescription']) != $meta['title']) { 
     306                                $meta['caption'] = trim($exif['ImageDescription']); 
     307                        } 
     308                } elseif (!empty($exif['Comments']) && trim($exif['Comments']) != $meta['title']) { 
     309                        $meta['caption'] = trim( $exif['Comments'] ); 
     310                } 
     311                 
     312                if (!empty($exif['Artist'])) 
     313                        $meta['credit'] = trim( $exif['Artist'] ); 
     314                elseif (!empty($exif['Author'])) 
     315                        $meta['credit'] = trim( $exif['Author'] ); 
     316 
     317                if (!empty($exif['Copyright'])) 
     318                        $meta['copyright'] = trim( $exif['Copyright'] ); 
    275319                if (!empty($exif['FNumber'])) 
    276320                        $meta['aperture'] = round( wp_exif_frac2dec( $exif['FNumber'] ), 2 ); 
    277321                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 ( strlen(trim($image_meta['title'])) > 0 && !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 ( strlen(trim($image_meta['title'])) > 0 && !is_numeric(sanitize_title($image_meta['title'])) ) 
    263263                        $title = $image_meta['title']; 
    264264                if ( trim($image_meta['caption']) ) 
    265265                        $content = $image_meta['caption'];