From ba7ea3958ea07bea7064291c762b5adb512b8454 Mon Sep 17 00:00:00 2001 From: Justin Freeman Date: Fri, 27 Aug 2021 13:10:24 +1000 Subject: [PATCH] CIVICRM-1812 Change the default PDF file name from "CiviLetter.pdf" to use the Activity Subject, if available --- CRM/Contribute/Form/Task/PDFLetter.php | 14 ++++++++++---- CRM/Core/Form/Task/PDFLetterCommon.php | 13 +++++++++++-- CRM/Member/Form/Task/PDFLetterCommon.php | 12 ++++++++++-- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/CRM/Contribute/Form/Task/PDFLetter.php b/CRM/Contribute/Form/Task/PDFLetter.php index 90f6044011..2c216ee0c8 100644 --- a/CRM/Contribute/Form/Task/PDFLetter.php +++ b/CRM/Contribute/Form/Task/PDFLetter.php @@ -241,13 +241,19 @@ class CRM_Contribute_Form_Task_PDFLetter extends CRM_Contribute_Form_Task { //CRM-19761 if (!empty($html)) { - $type = $this->getSubmittedValue('document_type'); + // Set the filename for the PDF using the Activity Subject, if defined. Remove unwanted characters and limit the length to 200 characters. + if (!empty($formValues['subject'])) { + $fileName = CRM_Utils_File::makeFilenameWithUnicode($formValues['subject'], '_', 200); + } + else { + $fileName = 'CiviLetter'; + } - if ($type === 'pdf') { - CRM_Utils_PDF_Utils::html2pdf($html, "CiviLetter.pdf", FALSE, $formValues); + if ($this->getSubmittedValue('document_type') === 'pdf') { + CRM_Utils_PDF_Utils::html2pdf($html, $fileName . '.pdf', FALSE, $formValues); } else { - CRM_Utils_PDF_Document::html2doc($html, "CiviLetter.$type", $formValues); + CRM_Utils_PDF_Document::html2doc($html, $fileName . '.' . $this->getSubmittedValue('document_type'), $formValues); } } diff --git a/CRM/Core/Form/Task/PDFLetterCommon.php b/CRM/Core/Form/Task/PDFLetterCommon.php index 2b5fcda24c..e3eae67808 100644 --- a/CRM/Core/Form/Task/PDFLetterCommon.php +++ b/CRM/Core/Form/Task/PDFLetterCommon.php @@ -376,11 +376,20 @@ class CRM_Core_Form_Task_PDFLetterCommon { * @param array $html */ protected static function outputFromHtml($formValues, array $html) { + + // Set the filename for the PDF using the Activity Subject, if defined. Remove unwanted characters and limit the length to 200 characters. + if (!empty($formValues['subject'])) { + $fileName = CRM_Utils_File::makeFilenameWithUnicode($formValues['subject'], '_', 200); + } + else { + $fileName = 'CiviLetter'; + } + if ($formValues['document_type'] === 'pdf') { - CRM_Utils_PDF_Utils::html2pdf($html, 'CiviLetter.pdf', FALSE, $formValues); + CRM_Utils_PDF_Utils::html2pdf($html, $fileName . '.pdf', FALSE, $formValues); } else { - CRM_Utils_PDF_Document::html2doc($html, 'CiviLetter.' . $formValues['document_type'], $formValues); + CRM_Utils_PDF_Document::html2doc($html, $fileName . '.' . $formValues['document_type'], $formValues); } } diff --git a/CRM/Member/Form/Task/PDFLetterCommon.php b/CRM/Member/Form/Task/PDFLetterCommon.php index 80c83e8f11..66838d8262 100644 --- a/CRM/Member/Form/Task/PDFLetterCommon.php +++ b/CRM/Member/Form/Task/PDFLetterCommon.php @@ -33,7 +33,15 @@ class CRM_Member_Form_Task_PDFLetterCommon extends CRM_Contact_Form_Task_PDFLett ); self::createActivities($form, $html_message, $contactIDs, $formValues['subject'], CRM_Utils_Array::value('campaign_id', $formValues)); - CRM_Utils_PDF_Utils::html2pdf($html, "CiviLetter.pdf", FALSE, $formValues); + // Set the filename for the PDF using the Activity Subject, if defined. Remove unwanted characters and limit the length to 200 characters. + if (!empty($form->getSubmittedValue('subject'))) { + $fileName = CRM_Utils_File::makeFilenameWithUnicode($form->getSubmittedValue('subject'), '_', 200) . '.pdf'; + } + else { + $fileName = 'CiviLetter.pdf'; + } + + CRM_Utils_PDF_Utils::html2pdf($html, $fileName, FALSE, $formValues); $form->postProcessHook(); @@ -41,7 +49,7 @@ class CRM_Member_Form_Task_PDFLetterCommon extends CRM_Contact_Form_Task_PDFLett } /** - * Generate htmlfor pdf letters. + * Generate html for pdf letters. * * @param array $membershipIDs * @param array $returnProperties -- 2.25.1