Skip to content

Commit

Permalink
MDL-60591 mod_forum: inline attachments are not displayed in plain text
Browse files Browse the repository at this point in the history
  • Loading branch information
marinaglancy committed Nov 27, 2017
1 parent 20cb5f4 commit 73e4f14
Showing 1 changed file with 16 additions and 5 deletions.
21 changes: 16 additions & 5 deletions mod/forum/classes/message/inbound/reply_handler.php
Expand Up @@ -170,9 +170,20 @@ public function process_message(\stdClass $record, \stdClass $messagedata) {
// 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.");
Expand All @@ -196,7 +207,7 @@ public function process_message(\stdClass $record, \stdClass $messagedata) {

$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;
Expand All @@ -215,8 +226,8 @@ public function process_message(\stdClass $record, \stdClass $messagedata) {
}

// 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);

Expand Down

0 comments on commit 73e4f14

Please sign in to comment.