*
* This file contains functions needed to handle mime messages.
*
- * @copyright © 2003-2009 The SquirrelMail Project Team
+ * @copyright 2003-2017 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id$
* @package squirrelmail
* @var boolean
*/
var $is_answered = 0;
+ /**
+ * Message forward status
+ * @var boolean
+ */
+ var $is_forwarded = 0;
/**
* Message \deleted status
* @var boolean
$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;
$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);
}
}
}
* @return object Message object
* @todo define argument and return types
*/
- function parseStructure($read, &$i, $sub_msg = '') {
+ static function parseStructure($read, &$i, $sub_msg = '') {
$msg = Message::parseBodyStructure($read, $i, $sub_msg);
if($msg) $msg->setEntIds($msg,false,0);
return $msg;
* @todo document me
* @since 1.4.0 (code was part of parseStructure() in 1.3.x)
*/
- function parseBodyStructure($read, &$i, $sub_msg = '') {
+ static function parseBodyStructure($read, &$i, $sub_msg = '') {
$arg_no = 0;
$arg_a = array();
if ($sub_msg) {
$hdr->type0 = 'text';
$hdr->type1 = 'plain';
$hdr->encoding = '7bit';
+ $msg->header = $hdr;
} else {
$msg->header->type0 = 'multipart';
$msg->type0 = 'multipart';
$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'));
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) {
/**
* @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) {
}
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;