| | |
| | | +-----------------------------------------------------------------------+ |
| | | | rcube_shared.inc | |
| | | | | |
| | | | This file is part of the RoundCube PHP suite | |
| | | | Copyright (C) 2005-2007, RoundCube Dev. - Switzerland | |
| | | | This file is part of the Roundcube PHP suite | |
| | | | Copyright (C) 2005-2007, Roundcube Dev. - Switzerland | |
| | | | Licensed under the GNU GPL | |
| | | | | |
| | | | CONTENTS: | |
| | |
| | | |
| | | |
| | | /** |
| | | * RoundCube shared functions |
| | | * Roundcube shared functions |
| | | * |
| | | * @package Core |
| | | */ |
| | |
| | | // cut base_url to the last directory |
| | | if (strrpos($base_url, '/')>7) |
| | | { |
| | | $host_url = substr($base_url, 0, strpos($base_url, '/')); |
| | | $host_url = substr($base_url, 0, strpos($base_url, '/', 7)); |
| | | $base_url = substr($base_url, 0, strrpos($base_url, '/')); |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | /** |
| | | * Replace the middle part of a string with ... |
| | | * if it is longer than the allowed length |
| | | * Truncate string if it is longer than the allowed length |
| | | * Replace the middle or the ending part of a string with a placeholder |
| | | * |
| | | * @param string Input string |
| | | * @param int Max. length |
| | | * @param string Replace removed chars with this |
| | | * @param bool Set to True if string should be truncated from the end |
| | | * @return string Abbreviated string |
| | | */ |
| | | function abbreviate_string($str, $maxlength, $place_holder='...') |
| | | function abbreviate_string($str, $maxlength, $place_holder='...', $ending=false) |
| | | { |
| | | $length = mb_strlen($str); |
| | | |
| | | if ($length > $maxlength) |
| | | { |
| | | if ($ending) |
| | | return mb_substr($str, 0, $maxlength) . $place_holder; |
| | | |
| | | $place_holder_length = mb_strlen($place_holder); |
| | | $first_part_length = floor(($maxlength - $place_holder_length)/2); |
| | | $second_starting_location = $length - $maxlength + $first_part_length + $place_holder_length; |
| | |
| | | // fall back to user-submitted string |
| | | if (!$mime_type) { |
| | | $mime_type = $failover; |
| | | } |
| | | else { |
| | | // sometimes content-type contains charset definition, |
| | | // remove useless "charset=binary", should we remove any charset def. here? |
| | | $mime_type = preg_replace('/; charset=binary;*/i', '', $mime_type); |
| | | } |
| | | |
| | | return $mime_type; |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 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; |
| | | } |
| | | } |
| | | |