Ejegg has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/395566 )

Change subject: CRM-21521: read multipart-related inside report
......................................................................

CRM-21521: read multipart-related inside report

When a multipart-report email body's first part is
multipart-related, extract the text correctly instead of crashing.

Bug: T181934
Change-Id: I736acde96885aa6f6dde87af8770de5f812ea3ad
---
M CRM/Utils/Mail/EmailProcessor.php
1 file changed, 22 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/wikimedia/fundraising/crm/civicrm 
refs/changes/66/395566/1

diff --git a/CRM/Utils/Mail/EmailProcessor.php 
b/CRM/Utils/Mail/EmailProcessor.php
index b602649..ee48d4c 100644
--- a/CRM/Utils/Mail/EmailProcessor.php
+++ b/CRM/Utils/Mail/EmailProcessor.php
@@ -325,17 +325,15 @@
                   }
                   elseif (($part = $mail->body->getReadablePart()) != NULL) {
                     watchdog('EmailProcessor', "Part is not DeliveryStatus but 
supposedly has ReadablePart: " . print_r($part, true), array(), WATCHDOG_DEBUG);
-                    $text = $part->text;
+                    if (isset($part->text)) {
+                      $text = $part->text;
+                    } elseif ($part instanceof ezcMailMultipartRelated) {
+                      $text = self::getTextFromRelated($part);
+                    }
                   }
                 }
                 elseif ($mail->body instanceof ezcMailMultipartRelated) {
-                  foreach ($mail->body->getRelatedParts() as $part) {
-                    watchdog('EmailProcessor', "Looking at related part", 
array(), WATCHDOG_DEBUG);
-                    if (isset($part->subType) and $part->subType == 'plain') {
-                      $text = $part->text;
-                      break;
-                    }
-                  }
+                  $text = self::getTextFromRelated($mail->body);
                 }
                 else {
                   foreach ($mail->body->getParts() as $part) {
@@ -486,4 +484,20 @@
     }
   }
 
+  /**
+   * @param \ezcMailMultipartRelated $related
+   *
+   * @return array
+   */
+  protected static function getTextFromRelated($related) {
+    foreach ($related->getRelatedParts() as $part) {
+      watchdog('EmailProcessor', "Looking at related part", [], 
WATCHDOG_DEBUG);
+      if (isset($part->subType) and $part->subType == 'plain') {
+        $text = $part->text;
+        return $text;
+      }
+    }
+    return null;
+  }
+
 }

-- 
To view, visit https://gerrit.wikimedia.org/r/395566
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I736acde96885aa6f6dde87af8770de5f812ea3ad
Gerrit-PatchSet: 1
Gerrit-Project: wikimedia/fundraising/crm/civicrm
Gerrit-Branch: master
Gerrit-Owner: Ejegg <ej...@ejegg.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to