Sfoglia il codice sorgente

r13926 from stable:
code in findDisplayEntity expects object, not array. Make findAltenativeEntity
return an object or null consistently.

Thijs Kinkhorst 15 anni fa
parent
commit
fee4b7be06
1 ha cambiato i file con 11 aggiunte e 9 eliminazioni
  1. 11 9
      class/mime/Message.class.php

+ 11 - 9
class/mime/Message.class.php

@@ -987,12 +987,14 @@ class Message {
         if ($this->type0 == 'multipart') {
         if ($this->type0 == 'multipart') {
             if($this->type1 == 'alternative') {
             if($this->type1 == 'alternative') {
                 $msg = $this->findAlternativeEntity($alt_order);
                 $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 */
             } else if ($this->type1 == 'related') { /* RFC 2387 */
                 $msgs = $this->findRelatedEntity();
                 $msgs = $this->findRelatedEntity();
                 foreach ($msgs as $msg) {
                 foreach ($msgs as $msg) {
@@ -1057,19 +1059,19 @@ class Message {
 
 
     /**
     /**
      * @param array $alt_order
      * @param array $alt_order
-     * @return array
+     * @return entity
      */
      */
     function findAlternativeEntity($alt_order) {
     function findAlternativeEntity($alt_order) {
         /* If we are dealing with alternative parts then we  */
         /* If we are dealing with alternative parts then we  */
         /* choose the best viewable message supported by SM. */
         /* choose the best viewable message supported by SM. */
         $best_view = 0;
         $best_view = 0;
-        $entity = array();
+        $entity = null;
         foreach($this->entities as $ent) {
         foreach($this->entities as $ent) {
             $type = $ent->header->type0 . '/' . $ent->header->type1;
             $type = $ent->header->type0 . '/' . $ent->header->type1;
             if ($type == 'multipart/related') {
             if ($type == 'multipart/related') {
                 $type = $ent->header->getParameter('type');
                 $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);
             $altCount = count($alt_order);
             for ($j = $best_view; $j < $altCount; ++$j) {
             for ($j = $best_view; $j < $altCount; ++$j) {