Merge pull request #1252 from michalkleiner/pulls/1203-attach-file-per-recipient-hook

Add extension hook to control file attachments per recipient and field
This commit is contained in:
Guy Sartorelli 2023-11-13 10:30:36 +13:00 committed by GitHub
commit 4b85a33b5d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -355,7 +355,8 @@ JS
// attach a file to recipient email only if lower than configured size // attach a file to recipient email only if lower than configured size
if ($file->getAbsoluteSize() <= $this->getMaximumAllowedEmailAttachmentSize()) { if ($file->getAbsoluteSize() <= $this->getMaximumAllowedEmailAttachmentSize()) {
$attachments[] = $file; // using the field name as array index is fine as file upload field only allows one file
$attachments[$field->Name] = $file;
} }
} }
} }
@ -393,17 +394,22 @@ JS
$mergeFields = $this->getMergeFieldsMap($emailData['Fields']); $mergeFields = $this->getMergeFieldsMap($emailData['Fields']);
if ($attachments && (bool) $recipient->HideFormData === false) { if ($attachments && (bool) $recipient->HideFormData === false) {
foreach ($attachments as $file) { foreach ($attachments as $uploadFieldName => $file) {
/** @var File $file */ /** @var File $file */
if ((int) $file->ID === 0) { if ((int) $file->ID === 0) {
continue; continue;
} }
$email->addAttachmentFromData( $canAttachFileForRecipient = true;
$file->getString(), $this->extend('updateCanAttachFileForRecipient', $canAttachFileForRecipient, $recipient, $uploadFieldName, $file);
$file->getFilename(),
$file->getMimeType() if ($canAttachFileForRecipient) {
); $email->addAttachmentFromData(
$file->getString(),
$file->getFilename(),
$file->getMimeType()
);
}
} }
} }