alecpl
2009-12-03 3815e050e0e0ddafb919741426f3c36ebdadb9a8
program/include/rcube_message.php
@@ -323,8 +323,16 @@
      $p->ctype_primary = 'text';
      $p->ctype_secondary = 'plain';
      $p->body = rcube_label('encryptedmessage');
      $p->size = strlen($p->body);
      
      $this->parts[] = $p;
      // maybe some plugins are able to decode this encrypted message part
      $data = $this->app->plugins->exec_hook('message_part_encrypted', array('object' => $this, 'struct' => $structure, 'part' => $p));
      if (is_array($data['parts'])) {
        $this->parts = array_merge($this->parts, $data['parts']);
      }
      else if ($data['part']) {
        $this->parts[] = $p;
      }
    }
    // message contains multiple parts
    else if (is_array($structure->parts) && !empty($structure->parts)) {
@@ -342,14 +350,13 @@
        else if (($primary_type == 'text' && ($secondary_type == 'plain' || $secondary_type == 'html') && $mail_part->disposition != 'attachment') ||
                 ($primary_type == 'message' && ($secondary_type == 'delivery-status' || $secondary_type == 'disposition-notification'))) {
          // add text part if we're not in alternative mode or if it matches the prefs
          if (!$this->parse_alternative ||
              ($secondary_type == 'html' && $this->opt['prefer_html']) ||
          // add text part if it matches the prefs
          if (($secondary_type == 'html' && $this->opt['prefer_html']) ||
              ($secondary_type == 'plain' && !$this->opt['prefer_html'])) {
            $mail_part->type = 'content';
            $this->parts[] = $mail_part;
          }
          // list as attachment as well
          if (!empty($mail_part->filename))
            $this->attachments[] = $mail_part;
@@ -384,16 +391,17 @@
          // part belongs to a related message and is linked
          if ($message_ctype_secondary == 'related'
         && ($mail_part->headers['content-id'] || $mail_part->headers['content-location'])) {
              && preg_match('!^image/!', $mail_part->mimetype)
              && ($mail_part->headers['content-id'] || $mail_part->headers['content-location'])) {
            if ($mail_part->headers['content-id'])
              $mail_part->content_id = preg_replace(array('/^</', '/>$/'), '', $mail_part->headers['content-id']);
            if ($mail_part->headers['content-location'])
              $mail_part->content_location = $mail_part->headers['content-base'] . $mail_part->headers['content-location'];
            $this->inline_parts[] = $mail_part;
          }
          // is a regular attachment
          else {
          else if (preg_match('!^[a-z]+/[a-z0-9-.+]+$!i', $mail_part->mimetype)) {
            if (!$mail_part->filename)
              $mail_part->filename = 'Part '.$mail_part->mime_id;
            $this->attachments[] = $mail_part;