X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=class%2Fmime%2FMessage.class.php;h=d9282f759e0e478e0216208782326a1e580af652;hb=ad2f0b546afcb978ee67ef25332cf4f12c363892;hp=e19b2e9d9c10721807c8ebea74083d5c96ffc1a1;hpb=75b7d0427336801badc83fecdd4b25da55c6bb81;p=squirrelmail.git diff --git a/class/mime/Message.class.php b/class/mime/Message.class.php index e19b2e9d..d9282f75 100644 --- a/class/mime/Message.class.php +++ b/class/mime/Message.class.php @@ -5,7 +5,7 @@ * * This file contains functions needed to handle mime messages. * - * @copyright © 2003-2007 The SquirrelMail Project Team + * @copyright 2003-2012 The SquirrelMail Project Team * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @version $Id$ * @package squirrelmail @@ -86,6 +86,11 @@ class Message { * @var boolean */ var $is_answered = 0; + /** + * Message forward status + * @var boolean + */ + var $is_forwarded = 0; /** * Message \deleted status * @var boolean @@ -156,9 +161,9 @@ class Message { $name = $header->getParameter('name'); if(!trim($name)) { if (!trim( $header->id )) { - $filename = 'untitled-[' . $this->entity_id . ']' ; + $filename = 'untitled-[' . $this->entity_id . ']' . '.' . strtolower($header->type1); } else { - $filename = 'cid: ' . $header->id; + $filename = 'cid: ' . $header->id . '.' . strtolower($header->type1); } } else { $filename = $name; @@ -173,9 +178,9 @@ class Message { $filename = $header->getParameter('name'); if (!trim($filename)) { if (!trim( $header->id )) { - $filename = 'untitled-[' . $this->entity_id . ']' ; + $filename = 'untitled-[' . $this->entity_id . ']' . '.' . strtolower($header->type1); } else { - $filename = 'cid: ' . $header->id; + $filename = 'cid: ' . $header->id . '.' . strtolower($header->type1); } } } @@ -357,7 +362,8 @@ class Message { $hdr = new MessageHeader(); $hdr->type0 = 'text'; $hdr->type1 = 'plain'; - $hdr->encoding = 'us-ascii'; + $hdr->encoding = '7bit'; + $msg->header = $hdr; } else { $msg->header->type0 = 'multipart'; $msg->type0 = 'multipart'; @@ -456,17 +462,17 @@ class Message { $arg_a[] = $msg->parseLiteral($read, $i); ++$arg_no; break; - case '0': + case '0': case is_numeric($read{$i}): /* process integers */ if ($read{$i} == ' ') { break; } - ++$arg_no; - if (preg_match('/^([0-9]+).*/',substr($read,$i), $regs)) { - $i += strlen($regs[1])-1; - $arg_a[] = $regs[1]; - } else { - $arg_a[] = 0; - } + ++$arg_no; + if (preg_match('/^([0-9]+).*/',substr($read,$i), $regs)) { + $i += strlen($regs[1])-1; + $arg_a[] = $regs[1]; + } else { + $arg_a[] = 0; + } break; case ')': $multipart = (isset($msg->type0) && ($msg->type0 == 'multipart')); @@ -982,12 +988,14 @@ class Message { if ($this->type0 == 'multipart') { if($this->type1 == 'alternative') { $msg = $this->findAlternativeEntity($alt_order); - if (count($msg->entities) == 0) { - $entity[] = $msg->entity_id; - } else { - $entity = $msg->findDisplayEntity($entity, $alt_order, $strict); + if ( ! is_null($msg) ) { + if (count($msg->entities) == 0) { + $entity[] = $msg->entity_id; + } else { + $entity = $msg->findDisplayEntity($entity, $alt_order, $strict); + } + $found = true; } - $found = true; } else if ($this->type1 == 'related') { /* RFC 2387 */ $msgs = $this->findRelatedEntity(); foreach ($msgs as $msg) { @@ -1052,19 +1060,19 @@ class Message { /** * @param array $alt_order - * @return array + * @return entity */ function findAlternativeEntity($alt_order) { /* If we are dealing with alternative parts then we */ /* choose the best viewable message supported by SM. */ $best_view = 0; - $entity = array(); + $entity = null; foreach($this->entities as $ent) { $type = $ent->header->type0 . '/' . $ent->header->type1; if ($type == 'multipart/related') { $type = $ent->header->getParameter('type'); - // Mozilla bug. Mozilla does not provide the parameter type. - if (!$type) $type = 'text/html'; + // Mozilla bug. Mozilla does not provide the parameter type. + if (!$type) $type = 'text/html'; } $altCount = count($alt_order); for ($j = $best_view; $j < $altCount; ++$j) { @@ -1118,8 +1126,7 @@ class Message { } if (!$exclude) { - if (($entity->type0 == 'multipart') && - ($entity->type1 != 'related')) { + if ($entity->type0 == 'multipart') { $result = $entity->getAttachments($exclude_id, $result); } else if ($entity->type0 != 'multipart') { $result[] = $entity;