mcramer
2012-09-27 d6363ba9dd38e98c8f2d48085677c4bafdfdc7cd
interface/lib/classes/functions.inc.php
@@ -315,7 +315,7 @@
    /** IDN converter wrapper.
     * all converter classes should be placed in ISPC_CLASS_PATH.'/idn/'
     */
    public function idn_encode($domain) {
    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
        
@@ -326,6 +326,7 @@
            $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')) {
@@ -342,21 +343,7 @@
            }
            $domain = $this->idn_converter->encode($domain);
        }
        if($user_part !== false) return $user_part . '@' . $domain;
        else return $domain;
    }
    public function idn_decode($domain) {
        if($domain == '') return '';
        if(preg_match('/^[0-9\.]+$/', $domain)) return $domain; // may be an ip address - anyway does not need to bee decoded
        // 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);
        }
        } else {
        if(function_exists('idn_to_utf8')) {
            $domain = idn_to_utf8($domain);
        } elseif(file_exists(ISPC_CLASS_PATH.'/idn/idna_convert.class.php')) {
@@ -373,11 +360,28 @@
            }
            $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);
    }
}
?>