} else {
require_once($CFG->libdir.'/filelib.php');
$mimetype = mimeinfo('type', $attachname);
- $mail->addAttachment($CFG->dataroot .'/'. $attachment, $attachname, 'base64', $mimetype);
+
+ $attachmentpath = $attachment;
+
+ // If the attachment is a full path to a file in the tempdir, use it as is,
+ // otherwise assume it is a relative path from the dataroot (for backwards compatibility reasons).
+ if (strpos($attachmentpath, $CFG->tempdir) !== 0) {
+ $attachmentpath = $CFG->dataroot . '/' . $attachmentpath;
+ }
+
+ $mail->addAttachment($attachmentpath, $attachname, 'base64', $mimetype);
}
}
$email = reset($emails);
$this->assertTrue(strpos($email->body, 'Content-Disposition: attachment;') !== false);
$this->assertTrue(strpos($email->body, 'emailtest.txt') !== false);
+
+ // Check if the stored file still exists after remove the temporary attachment.
+ $storedfileexists = $fs->file_exists($filerecord['contextid'], $filerecord['component'], $filerecord['filearea'],
+ $filerecord['itemid'], $filerecord['filepath'], $filerecord['filename']);
+ $this->assertTrue($storedfileexists);
}
/**
} else {
// Copy attachment file to a temporary directory and get the file path.
$attachment = $eventdata->attachment->copy_content_to_temp();
- // Function email_to_user() adds $CFG->dataroot to file path, so removing it here.
- $attachment = str_replace($CFG->dataroot, '', $attachment);
+
// Get attachment file name.
$attachname = clean_filename($eventdata->attachname);
}
$eventdata->fullmessagehtml, $attachment, $attachname);
// Remove an attachment file if any.
- if (!empty($attachment) && file_exists($CFG->dataroot.'/'.$attachment)) {
- unlink($CFG->dataroot.'/'.$attachment);
+ if (!empty($attachment) && file_exists($attachment)) {
+ unlink($attachment);
}
return $result;