0) { $input_encoding = 'utf-8'; } else { $input_encoding = 'iso-8859-1'; if (function_exists('iconv') or function_exists('mb_convert_encoding')) { // using windows-1252 because it supports additional characters // such as "oe" in a single character (ligature). About the // difference between Windows-1252 and ISO-8859-1: the characters // 0x80-0x9F will not convert correctly. But these are control // characters which are almost never used. $input_encoding = 'windows-1252'; } } $value = convert_charset($value, $input_encoding, get_pwg_charset()); } } return $value; } /** * returns informations from EXIF metadata, mapping is done at the beginning * of the function * * @param string $filename * @return array */ function get_exif_data($filename, $map) { global $conf; $result = array(); if (!function_exists('read_exif_data')) { die('Exif extension not available, admin should disable exif use'); } // Read EXIF data if ($exif = @read_exif_data($filename)) { $exif = trigger_event('format_exif_data', $exif, $filename, $map ); foreach ($map as $key => $field) { if (strpos($field, ';') === false) { if (isset($exif[$field])) { $result[$key] = $exif[$field]; } } else { $tokens = explode(';', $field); if (isset($exif[$tokens[0]][$tokens[1]])) { $result[$key] = $exif[$tokens[0]][$tokens[1]]; } } } } if (!$conf['allow_html_in_metadata']) { foreach ($result as $key => $value) { // in case the origin of the photo is unsecure (user upload), we remove // HTML tags to avoid XSS (malicious execution of javascript) $result[$key] = strip_tags($value); } } return $result; } ?>