From aa370627b211a51dc46891cfa4b6e3d2ef3e52db Mon Sep 17 00:00:00 2001 From: mcramer <m.cramer@pixcept.de> Date: Tue, 16 Jul 2013 10:45:17 -0400 Subject: [PATCH] - Fixed FS#2924 - the month will not set automatically in the autoresponder by click now Along with this fixed some display problems with the combo boxes introduced in 3.0.5. Some fields were not correctly displayed with the predefined values if value and text of the underlying option element differ. --- interface/lib/classes/functions.inc.php | 92 +++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 87 insertions(+), 5 deletions(-) diff --git a/interface/lib/classes/functions.inc.php b/interface/lib/classes/functions.inc.php index b0e1f3b..74f8400 100644 --- a/interface/lib/classes/functions.inc.php +++ b/interface/lib/classes/functions.inc.php @@ -32,7 +32,8 @@ //* This class is loaded automatically by the ispconfig framework. class functions { - + var $idn_converter = null; + var $idn_converter_name = ''; public function mail($to, $subject, $text, $from, $filepath = '', $filetype = 'application/pdf', $filename = '', $cc = '', $bcc = '', $from_name = '') { global $app,$conf; @@ -129,10 +130,21 @@ } public function get_ispconfig_url() { + global $app; + $url = (stristr($_SERVER['SERVER_PROTOCOL'],'HTTPS') || stristr($_SERVER['HTTPS'],'on'))?'https':'http'; - $url .= '://'.$_SERVER['SERVER_NAME']; - if($_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443) { - $url .= ':'.$_SERVER['SERVER_PORT']; + if($_SERVER['SERVER_NAME'] != '_') { + $url .= '://'.$_SERVER['SERVER_NAME']; + if($_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443) { + $url .= ':'.$_SERVER['SERVER_PORT']; + } + } else { + $app->uses("getconf"); + $server_config = $app->getconf->get_server_config(1,'server'); + $url .= '://'.$server_config['hostname']; + if($_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443) { + $url .= ':'.$_SERVER['SERVER_PORT']; + } } return $url; } @@ -302,7 +314,7 @@ } public function intval($string, $force_numeric = false) { - if(intval($string) == 2147483647) { + if(intval($string) == 2147483647 || ($string > 0 && intval($string) < 0)) { if($force_numeric == true) return floatval($string); elseif(preg_match('/^([-]?)[0]*([1-9][0-9]*)([^0-9].*)*$/', $string, $match)) return $match[1].$match[2]; else return 0; @@ -310,6 +322,76 @@ return intval($string); } } + + /** IDN converter wrapper. + * all converter classes should be placed in ISPC_CLASS_PATH.'/idn/' + */ + private function _idn_encode_decode($domain, $encode = true) { + if($domain == '') return ''; + if(preg_match('/^[0-9\.]+$/', $domain)) return $domain; // may be an ip address - anyway does not need to bee encoded + + // get domain and user part if it is an email + $user_part = false; + if(strpos($domain, '@') !== false) { + $user_part = substr($domain, 0, strrpos($domain, '@')); + $domain = substr($domain, strrpos($domain, '@') + 1); + } + + if($encode == true) { + if(function_exists('idn_to_ascii')) { + $domain = idn_to_ascii($domain); + } elseif(file_exists(ISPC_CLASS_PATH.'/idn/idna_convert.class.php')) { + /* use idna class: + * @author Matthias Sommerfeld <mso@phlylabs.de> + * @copyright 2004-2011 phlyLabs Berlin, http://phlylabs.de + * @version 0.8.0 2011-03-11 + */ + + if(!is_object($this->idn_converter) || $this->idn_converter_name != 'idna_convert.class') { + include_once(ISPC_CLASS_PATH.'/idn/idna_convert.class.php'); + $this->idn_converter = new idna_convert(array('idn_version' => 2008)); + $this->idn_converter_name = 'idna_convert.class'; + } + $domain = $this->idn_converter->encode($domain); + } + } else { + if(function_exists('idn_to_utf8')) { + $domain = idn_to_utf8($domain); + } elseif(file_exists(ISPC_CLASS_PATH.'/idn/idna_convert.class.php')) { + /* use idna class: + * @author Matthias Sommerfeld <mso@phlylabs.de> + * @copyright 2004-2011 phlyLabs Berlin, http://phlylabs.de + * @version 0.8.0 2011-03-11 + */ + + if(!is_object($this->idn_converter) || $this->idn_converter_name != 'idna_convert.class') { + include_once(ISPC_CLASS_PATH.'/idn/idna_convert.class.php'); + $this->idn_converter = new idna_convert(array('idn_version' => 2008)); + $this->idn_converter_name = 'idna_convert.class'; + } + $domain = $this->idn_converter->decode($domain); + } + } + + if($user_part !== false) return $user_part . '@' . $domain; + else return $domain; + } + + public function idn_encode($domain) { + $domains = explode("\n", $domain); + for($d = 0; $d < count($domains); $d++) { + $domains[$d] = $this->_idn_encode_decode($domains[$d], true); + } + return implode("\n", $domains); + } + + public function idn_decode($domain) { + $domains = explode("\n", $domain); + for($d = 0; $d < count($domains); $d++) { + $domains[$d] = $this->_idn_encode_decode($domains[$d], false); + } + return implode("\n", $domains); + } } -- Gitblit v1.9.1