function imap_utf7_decode_local($s)
{
    global $languages, $squirrelmail_language;
    if (isset($languages[$squirrelmail_language]['XTRA_CODE']) && function_exists($languages[$squirrelmail_language]['XTRA_CODE'])) {
        return $languages[$squirrelmail_language]['XTRA_CODE']('utf7-imap_decode', $s);
    }
    $b64_s = '';
    $iso_8859_1_s = '';
    for ($i = 0, $len = strlen($s); $i < $len; $i++) {
        $c = $s[$i];
        if (strlen($b64_s) > 0) {
            if ($c == '-') {
                if ($b64_s == '&') {
                    $iso_8859_1_s = $iso_8859_1_s . '&';
                } else {
                    $iso_8859_1_s = $iso_8859_1_s . decodeBASE64(substr($b64_s, 1));
                }
                $b64_s = '';
            } else {
                $b64_s = $b64_s . $c;
            }
        } else {
            if ($c == '&') {
                $b64_s = '&';
            } else {
                $iso_8859_1_s = $iso_8859_1_s . $c;
            }
        }
    }
    return $iso_8859_1_s;
}
Example #2
0
function imap_utf7_decode_local($s)
{
    global $languages, $squirrelmail_language;
    if (isset($languages[$squirrelmail_language]['XTRA_CODE']) && function_exists($languages[$squirrelmail_language]['XTRA_CODE'])) {
        return $languages[$squirrelmail_language]['XTRA_CODE']('utf7-imap_decode', $s);
    }
    if ($s == '') {
        //If empty, don't bother
        return '';
    }
    global $default_charset;
    set_my_charset();
    //must be called before using $default_charset
    if (strtolower($default_charset) != 'iso-8859-1' && $default_charset != '') {
        $utf7_s = sqimap_mb_convert_encoding($s, $default_charset, 'UTF7-IMAP', $default_charset);
        if ($utf7_s != '') {
            return $utf7_s;
        }
    }
    // Later code works only for ISO-8859-1
    $b64_s = '';
    $iso_8859_1_s = '';
    for ($i = 0, $len = strlen($s); $i < $len; $i++) {
        $c = $s[$i];
        if (strlen($b64_s) > 0) {
            if ($c == '-') {
                if ($b64_s == '&') {
                    $iso_8859_1_s = $iso_8859_1_s . '&';
                } else {
                    $iso_8859_1_s = $iso_8859_1_s . decodeBASE64(substr($b64_s, 1));
                }
                $b64_s = '';
            } else {
                $b64_s = $b64_s . $c;
            }
        } else {
            if ($c == '&') {
                $b64_s = '&';
            } else {
                $iso_8859_1_s = $iso_8859_1_s . $c;
            }
        }
    }
    return $iso_8859_1_s;
}