| | |
| | | | rcube_shared.inc | |
| | | | | |
| | | | This file is part of the Roundcube PHP suite | |
| | | | Copyright (C) 2005-2007, Roundcube Dev. - Switzerland | |
| | | | Copyright (C) 2005-2007, The Roundcube Dev Team | |
| | | | Licensed under the GNU GPL | |
| | | | | |
| | | | CONTENTS: | |
| | |
| | | if (!$mime_type) { |
| | | $mime_type = $failover; |
| | | } |
| | | else { |
| | | // Sometimes (PHP-5.3?) content-type contains charset definition, |
| | | // Remove it (#1487122) also "charset=binary" is useless |
| | | $mime_type = array_shift(preg_split('/[; ]/', $mime_type)); |
| | | } |
| | | |
| | | return $mime_type; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Detect image type of the given binary data by checking magic numbers |
| | | * |
| | | * @param string Binary file content |
| | | * @return string Detected mime-type or jpeg as fallback |
| | | */ |
| | | function rc_image_content_type($data) |
| | | { |
| | | $type = 'jpeg'; |
| | | if (preg_match('/^\x89\x50\x4E\x47/', $data)) $type = 'png'; |
| | | else if (preg_match('/^\x47\x49\x46\x38/', $data)) $type = 'gif'; |
| | | else if (preg_match('/^\x00\x00\x01\x00/', $data)) $type = 'ico'; |
| | | // else if (preg_match('/^\xFF\xD8\xFF\xE0/', $data)) $type = 'jpeg'; |
| | | |
| | | return 'image/' . $type; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * A method to guess encoding of a string. |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * intl replacement functions |
| | | */ |
| | | |
| | | if (!function_exists('idn_to_utf8')) |
| | | { |
| | | function idn_to_utf8($domain, $flags=null) |
| | | { |
| | | static $idn, $loaded; |
| | | |
| | | if (!$loaded) { |
| | | $idn = new Net_IDNA2(); |
| | | $loaded = true; |
| | | } |
| | | |
| | | if ($idn && $domain && preg_match('/(^|\.)xn--/i', $domain)) { |
| | | try { |
| | | $domain = $idn->decode($domain); |
| | | } |
| | | catch (Exception $e) { |
| | | } |
| | | } |
| | | return $domain; |
| | | } |
| | | } |
| | | |
| | | if (!function_exists('idn_to_ascii')) |
| | | { |
| | | function idn_to_ascii($domain, $flags=null) |
| | | { |
| | | static $idn, $loaded; |
| | | |
| | | if (!$loaded) { |
| | | $idn = new Net_IDNA2(); |
| | | $loaded = true; |
| | | } |
| | | |
| | | if ($idn && $domain && preg_match('/[^\x20-\x7E]/', $domain)) { |
| | | try { |
| | | $domain = $idn->encode($domain); |
| | | } |
| | | catch (Exception $e) { |
| | | } |
| | | } |
| | | return $domain; |
| | | } |
| | | } |
| | | |