Merge branch 'wip-MDL-60591-master' of git://github.com/marinaglancy/moodle
authorEloy Lafuente (stronk7) <stronk7@moodle.org>
Tue, 28 Nov 2017 21:35:58 +0000 (22:35 +0100)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Tue, 28 Nov 2017 21:35:58 +0000 (22:35 +0100)
mod/forum/classes/message/inbound/reply_handler.php

index 874626a..cd369e5 100644 (file)
@@ -170,9 +170,20 @@ class reply_handler extends \core\message\inbound\handler {
         // We don't trust text coming from e-mail.
         $addpost->messagetrust = false;
 
+        // Find all attachments. If format is plain text, treat inline attachments as regular ones.
+        $attachments = !empty($messagedata->attachments['attachment']) ? $messagedata->attachments['attachment'] : [];
+        $inlineattachments = [];
+        if (!empty($messagedata->attachments['inline'])) {
+            if ($addpost->messageformat == FORMAT_HTML) {
+                $inlineattachments = $messagedata->attachments['inline'];
+            } else {
+                $attachments = array_merge($attachments, $messagedata->attachments['inline']);
+            }
+        }
+
         // Add attachments to the post.
-        if (!empty($messagedata->attachments['attachment']) && count($messagedata->attachments['attachment'])) {
-            $attachmentcount = count($messagedata->attachments['attachment']);
+        if ($attachments) {
+            $attachmentcount = count($attachments);
             if (!forum_can_create_attachment($forum, $modcontext)) {
                 // Attachments are not allowed.
                 mtrace("--> User does not have permission to attach files in this forum. Rejecting e-mail.");
@@ -196,7 +207,7 @@ class reply_handler extends \core\message\inbound\handler {
 
             $filesize = 0;
             $addpost->attachments  = file_get_unused_draft_itemid();
-            foreach ($messagedata->attachments['attachment'] as $attachment) {
+            foreach ($attachments as $attachment) {
                 mtrace("--> Processing {$attachment->filename} as an attachment.");
                 $this->process_attachment('*', $usercontext, $addpost->attachments, $attachment);
                 $filesize += $attachment->filesize;
@@ -215,8 +226,8 @@ class reply_handler extends \core\message\inbound\handler {
         }
 
         // Process any files in the message itself.
-        if (!empty($messagedata->attachments['inline'])) {
-            foreach ($messagedata->attachments['inline'] as $attachment) {
+        if ($inlineattachments) {
+            foreach ($inlineattachments as $attachment) {
                 mtrace("--> Processing {$attachment->filename} as an inline attachment.");
                 $this->process_attachment('*', $usercontext, $addpost->itemid, $attachment);