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