From: Jan Schneider Date: Thu, 23 Sep 2010 11:37:43 +0000 (+0200) Subject: Thanks to badly broken distributions, IDN extension != IDN extension. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=a3ffbadc38944841ed8971eb55aef8d7d2281f09;p=horde.git Thanks to badly broken distributions, IDN extension != IDN extension. --- diff --git a/framework/Mime/lib/Horde/Mime/Address.php b/framework/Mime/lib/Horde/Mime/Address.php index 30d3d6c2d..4ac5e7e04 100644 --- a/framework/Mime/lib/Horde/Mime/Address.php +++ b/framework/Mime/lib/Horde/Mime/Address.php @@ -53,7 +53,12 @@ class Horde_Mime_Address if ((!isset($opts['idn']) || !$opts['idn']) && (stripos($host, 'xn--') === 0) && Horde_Util::extensionExists('idn')) { - $host = Horde_String::convertCharset(idn_to_utf8($host), 'UTF-8'); + if (function_exists('idn_to_utf8')) { + $host = idn_to_utf8($host); + } elseif (function_exists('idn_punycode_decode')) { + $host = idn_punycode_decode($host); + } + $host = Horde_String::convertCharset($host, 'UTF-8'); } $address .= self::encode($mailbox, 'address') . '@' . $host; diff --git a/imp/lib/Compose.php b/imp/lib/Compose.php index 5be3b61d1..fb9a624bf 100644 --- a/imp/lib/Compose.php +++ b/imp/lib/Compose.php @@ -1007,7 +1007,12 @@ class IMP_Compose // Convert IDN hosts to ASCII. if (Horde_Util::extensionExists('idn')) { $old_error = error_reporting(0); - $host = idn_to_ascii(Horde_String::convertCharset($host, $GLOBALS['registry']->getCharset(), 'UTF-8')); + $host = Horde_String::convertCharset($host, $GLOBALS['registry']->getCharset(), 'UTF-8'); + if (function_exists('idn_to_ascii')) { + $host = idn_to_ascii($host); + } elseif (function_exists('idn_punycode_encode')) { + $host = idn_punycode_encode($host); + } error_reporting($old_error); } elseif (Horde_Mime::is8bit($ob['mailbox'], $GLOBALS['registry']->getCharset())) { throw new IMP_Compose_Exception(sprintf(_("Invalid character in e-mail address: %s."), $email)); diff --git a/kronolith/lib/Event.php b/kronolith/lib/Event.php index b39d401bb..94741ad37 100644 --- a/kronolith/lib/Event.php +++ b/kronolith/lib/Event.php @@ -2023,7 +2023,12 @@ abstract class Kronolith_Event // Convert IDN hosts to ASCII. if (Horde_Util::extensionExists('idn')) { $old_error = error_reporting(0); - $url['host'] = idn_to_ascii(Horde_String::convertCharset($url['host'], $GLOBALS['registry']->getCharset(), 'UTF-8')); + $url['host'] = Horde_String::convertCharset($url['host'], $GLOBALS['registry']->getCharset(), 'UTF-8'); + if (function_exists('idn_to_ascii')) { + $url['host'] = idn_to_ascii($url['host']); + } elseif (function_exists('idn_punycode_encode')) { + $url['host'] = idn_punycode_encode($url['host']); + } error_reporting($old_error); } elseif (Horde_Mime::is8bit($url['host'])) { //throw new Kronolith_Exception(_("Invalid character in URL."));