thomascube
2011-09-16 f7387d5f0c5ffc4bb068e06687914c0bc8cc76e4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 
    function getStructurePartType($structure, $part)
    {
        $part_a = self::getPartArray($structure, $part);
        if (!empty($part_a)) {
            if (is_array($part_a[0]))
                return 'multipart';
            else if ($part_a[0])
                return $part_a[0];
        }
 
        return 'other';
    }
 
    function getStructurePartEncoding($structure, $part)
    {
        $part_a = self::getPartArray($structure, $part);
        if ($part_a) {
            if (!is_array($part_a[0]))
                return $part_a[5];
        }
 
        return '';
    }
 
    function getStructurePartCharset($structure, $part)
    {
        $part_a = self::getPartArray($structure, $part);
        if ($part_a) {
            if (is_array($part_a[0]))
                return '';
            else {
                if (is_array($part_a[2])) {
                    $name = '';
                    while (list($key, $val) = each($part_a[2]))
                        if (strcasecmp($val, 'charset') == 0)
                            return $part_a[2][$key+1];
                }
            }
        }
 
        return '';
    }
 
    function getStructurePartArray($a, $part)
    {
        if (!is_array($a)) {
            return false;
        }
        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];
            }
            return self::getPartArray($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];
            }
            if (is_array($a[$part-1]))
                return $a[$part-1];
            else
                return $a;
        }
        else if (($part == 0) || (empty($part))) {
            return $a;
        }
    }