alecpl
2012-01-03 a128fafbe8ba5657f0c2cbc6dd2caeba79d4ad4c
- Backport r5689 from trunk


1 files modified
32 ■■■■ changed files
program/include/rcube_imap_generic.php 32 ●●●● patch | view | raw | blame | history
program/include/rcube_imap_generic.php
@@ -3232,28 +3232,30 @@
        if (!is_array($a)) {
            return false;
        }
        if (empty($part)) {
            return $a;
        }
        $ctype = is_string($a[0]) && is_string($a[1]) ? $a[0] . '/' . $a[1] : '';
        if (strcasecmp($ctype, 'message/rfc822') == 0) {
            $a = $a[8];
        }
        if (strpos($part, '.') > 0) {
            $original_part = $part;
            $pos = strpos($part, '.');
            $rest = substr($original_part, $pos+1);
            $part = substr($original_part, 0, $pos);
            if ((strcasecmp($a[0], 'message') == 0) && (strcasecmp($a[1], 'rfc822') == 0)) {
                $a = $a[8];
            }
            $orig_part = $part;
            $pos       = strpos($part, '.');
            $rest      = substr($orig_part, $pos+1);
            $part      = substr($orig_part, 0, $pos);
            return self::getStructurePartArray($a[$part-1], $rest);
        }
        else if ($part>0) {
            if (!is_array($a[0]) && (strcasecmp($a[0], 'message') == 0)
                && (strcasecmp($a[1], 'rfc822') == 0)) {
                $a = $a[8];
            }
        else if ($part > 0) {
            if (is_array($a[$part-1]))
                return $a[$part-1];
            else
                return $a;
        }
        else if (($part == 0) || (empty($part))) {
            return $a;
        }
    }