4 * This class provides the common functionality for creating PDF letter for
7 class CRM_Member_Form_Task_PDFLetterCommon
extends CRM_Contact_Form_Task_PDFLetterCommon
{
10 * process the form after the input has been submitted and validated
11 * @todo this is horrible copy & paste code because there is so much risk of breakage
12 * in fixing the existing pdfLetter classes to be suitably generic
17 static function postProcess(&$form, $membershipIDs, $skipOnHold, $skipDeceased, $contactIDs) {
19 list($formValues, $categories, $html_message, $messageToken, $returnProperties) = self
::processMessageTemplate($form);
21 $html = self
::generateHTML($membershipIDs, $returnProperties, $skipOnHold, $skipDeceased, $messageToken, $html_message);
22 self
::createActivities($form, $html_message, $contactIDs);
24 CRM_Utils_PDF_Utils
::html2pdf($html, "CiviLetter.pdf", FALSE, $formValues);
26 $form->postProcessHook();
28 CRM_Utils_System
::civiExit(1);
33 * generate htmlfor pdf letters
34 * @param unknown_type $membershipIDs
35 * @param unknown_type $returnProperties
36 * @param unknown_type $skipOnHold
37 * @param unknown_type $skipDeceased
38 * @param unknown_type $messageToken
41 static function generateHTML($membershipIDs, $returnProperties, $skipOnHold, $skipDeceased, $messageToken, $html_message) {
42 $memberships = CRM_Utils_Token
::getMembershipTokenDetails($membershipIDs);
44 foreach ($memberships as $membershipID => $membership) {
45 // get contact information
46 $contactId = $membership['contact_id'];
47 $params = array('contact_id' => $contactId);
48 //getTokenDetails is much like calling the api contact.get function - but - with some minor
49 // special handlings. It preceeds the existance of the api
50 list($contacts) = CRM_Utils_Token
::getTokenDetails(
57 'CRM_Contribution_Form_Task_PDFLetterCommon'
60 $tokenHtml = CRM_Utils_Token
::replaceContactTokens($html_message, $contacts[$contactId], TRUE, $messageToken);
61 $tokenHtml = CRM_Utils_Token
::replaceEntityTokens('membership', $membership, $tokenHtml, $messageToken);
62 $tokenHtml = CRM_Utils_Token
::replaceHookTokens($tokenHtml, $contact[$contactId], $categories, TRUE);
63 $tokenHtml = CRM_Utils_Token
::parseThroughSmarty($tokenHtml, $contact);