WordPress.org

Make WordPress Core

Ticket #9417: 9417.4.patch

File 9417.4.patch, 5.1 KB (added by SergeyBiryukov, 22 months ago)

Refreshed

  • wp-admin/includes/image.php

     
    253253 
    254254                        // headline, "A brief synopsis of the caption." 
    255255                        if ( ! empty( $iptc['2#105'][0] ) ) 
    256                                 $meta['title'] = utf8_encode( trim( $iptc['2#105'][0] ) ); 
     256                                $meta['title'] = _maybe_utf8_encode( trim( $iptc['2#105'][0] ) ); 
    257257                        // title, "Many use the Title field to store the filename of the image, though the field may be used in many ways." 
    258258                        elseif ( ! empty( $iptc['2#005'][0] ) ) 
    259                                 $meta['title'] = utf8_encode( trim( $iptc['2#005'][0] ) ); 
     259                                $meta['title'] = _maybe_utf8_encode( trim( $iptc['2#005'][0] ) ); 
    260260 
    261261                        if ( ! empty( $iptc['2#120'][0] ) ) { // description / legacy caption 
    262                                 $caption = utf8_encode( trim( $iptc['2#120'][0] ) ); 
     262                                $caption = _maybe_utf8_encode( trim( $iptc['2#120'][0] ) ); 
    263263                                if ( empty( $meta['title'] ) ) { 
    264264                                        // Assume the title is stored in 2:120 if it's short. 
    265265                                        if ( strlen( $caption ) < 80 ) 
     
    272272                        } 
    273273 
    274274                        if ( ! empty( $iptc['2#110'][0] ) ) // credit 
    275                                 $meta['credit'] = utf8_encode(trim($iptc['2#110'][0])); 
     275                                $meta['credit'] = _maybe_utf8_encode( trim( $iptc['2#110'][0] ) ); 
    276276                        elseif ( ! empty( $iptc['2#080'][0] ) ) // creator / legacy byline 
    277                                 $meta['credit'] = utf8_encode(trim($iptc['2#080'][0])); 
     277                                $meta['credit'] = _maybe_utf8_encode( trim( $iptc['2#080'][0] ) ); 
    278278 
    279279                        if ( ! empty( $iptc['2#055'][0] ) and ! empty( $iptc['2#060'][0] ) ) // created date and time 
    280280                                $meta['created_timestamp'] = strtotime( $iptc['2#055'][0] . ' ' . $iptc['2#060'][0] ); 
    281281 
    282282                        if ( ! empty( $iptc['2#116'][0] ) ) // copyright 
    283                                 $meta['copyright'] = utf8_encode( trim( $iptc['2#116'][0] ) ); 
     283                                $meta['copyright'] = _maybe_utf8_encode( trim( $iptc['2#116'][0] ) ); 
    284284                 } 
    285285        } 
    286286 
     
    289289                $exif = @exif_read_data( $file ); 
    290290 
    291291                if ( !empty( $exif['Title'] ) ) 
    292                         $meta['title'] = utf8_encode( trim( $exif['Title'] ) ); 
     292                        $meta['title'] = _maybe_utf8_encode( trim( $exif['Title'] ) ); 
    293293 
    294294                if ( ! empty( $exif['ImageDescription'] ) ) { 
    295295                        if ( empty( $meta['title'] ) && strlen( $exif['ImageDescription'] ) < 80 ) { 
    296296                                // Assume the title is stored in ImageDescription 
    297                                 $meta['title'] = utf8_encode( trim( $exif['ImageDescription'] ) ); 
     297                                $meta['title'] = _maybe_utf8_encode( trim( $exif['ImageDescription'] ) ); 
    298298                                if ( ! empty( $exif['COMPUTED']['UserComment'] ) && trim( $exif['COMPUTED']['UserComment'] ) != $meta['title'] ) 
    299                                         $meta['caption'] = utf8_encode( trim( $exif['COMPUTED']['UserComment'] ) ); 
     299                                        $meta['caption'] = _maybe_utf8_encode( trim( $exif['COMPUTED']['UserComment'] ) ); 
    300300                        } elseif ( trim( $exif['ImageDescription'] ) != $meta['title'] ) { 
    301                                 $meta['caption'] = utf8_encode( trim( $exif['ImageDescription'] ) ); 
     301                                $meta['caption'] = _maybe_utf8_encode( trim( $exif['ImageDescription'] ) ); 
    302302                        } 
    303303                } elseif ( ! empty( $exif['Comments'] ) && trim( $exif['Comments'] ) != $meta['title'] ) { 
    304                         $meta['caption'] = utf8_encode( trim( $exif['Comments'] ) ); 
     304                        $meta['caption'] = _maybe_utf8_encode( trim( $exif['Comments'] ) ); 
    305305                } 
    306306 
    307307                if ( ! empty( $exif['Artist'] ) ) 
    308                         $meta['credit'] = utf8_encode( trim( $exif['Artist'] ) ); 
     308                        $meta['credit'] = _maybe_utf8_encode( trim( $exif['Artist'] ) ); 
    309309                elseif ( ! empty($exif['Author'] ) ) 
    310                         $meta['credit'] = utf8_encode( trim( $exif['Author'] ) ); 
     310                        $meta['credit'] = _maybe_utf8_encode( trim( $exif['Author'] ) ); 
    311311 
    312312                if ( ! empty( $exif['Copyright'] ) ) 
    313                         $meta['copyright'] = utf8_encode( trim( $exif['Copyright'] ) ); 
     313                        $meta['copyright'] = _maybe_utf8_encode( trim( $exif['Copyright'] ) ); 
    314314                if ( ! empty($exif['FNumber'] ) ) 
    315315                        $meta['aperture'] = round( wp_exif_frac2dec( $exif['FNumber'] ), 2 ); 
    316316                if ( ! empty($exif['Model'] ) ) 
    317                         $meta['camera'] = utf8_encode( trim( $exif['Model'] ) ); 
     317                        $meta['camera'] = _maybe_utf8_encode( trim( $exif['Model'] ) ); 
    318318                if ( ! empty($exif['DateTimeDigitized'] ) ) 
    319319                        $meta['created_timestamp'] = wp_exif_date2ts($exif['DateTimeDigitized'] ); 
    320320                if ( ! empty($exif['FocalLength'] ) ) 
    321321                        $meta['focal_length'] = wp_exif_frac2dec( $exif['FocalLength'] ); 
    322322                if ( ! empty($exif['ISOSpeedRatings'] ) ) { 
    323323                        $meta['iso'] = is_array( $exif['ISOSpeedRatings'] ) ? reset( $exif['ISOSpeedRatings'] ) : $exif['ISOSpeedRatings']; 
    324                         $meta['iso'] = utf8_encode( trim( $meta['iso'] ) ); 
     324                        $meta['iso'] = _maybe_utf8_encode( trim( $meta['iso'] ) ); 
    325325                } 
    326326                if ( ! empty($exif['ExposureTime'] ) ) 
    327327                        $meta['shutter_speed'] = wp_exif_frac2dec( $exif['ExposureTime'] ); 
     
    332332} 
    333333 
    334334/** 
     335 * Encode IPTC data to UTF-8. 
     336 *  
     337 * a) If the data is valid UTF-8 then there is nothing to do. 
     338 * b) If not, assume ISO-8859-1 and encode it to UTF-8. 
     339 *  
     340 * @since 3.5 
     341 * 
     342 * @param string $itpc raw IRB value returned by iptcparse() 
     343 * @return string utf8 encoded value 
     344 */ 
     345function _maybe_utf8_encode( $itpc ) { 
     346         
     347        if ( ! seems_utf8( $itpc ) ) 
     348                $itpc = utf8_encode( $itpc ); 
     349         
     350        return $itpc; 
     351} 
     352 
     353/** 
    335354 * Validate that file is an image. 
    336355 * 
    337356 * @since 2.5.0