Merge pull request #8806 from mlutfy/master-crm19168
[civicrm-core.git] / CRM / Member / Form / Task / PDFLetterCommon.php
CommitLineData
2d3e3c7b 1<?php
2
3/**
4 * This class provides the common functionality for creating PDF letter for
5 * members
6 */
7class CRM_Member_Form_Task_PDFLetterCommon extends CRM_Contact_Form_Task_PDFLetterCommon {
8
9 /**
fe482240 10 * Process the form after the input has been submitted and validated.
2d3e3c7b 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
2d3e3c7b 13 *
c490a46a 14 * @param CRM_Core_Form $form
77b97be7
EM
15 * @param $membershipIDs
16 * @param $skipOnHold
17 * @param $skipDeceased
18 * @param $contactIDs
2d3e3c7b 19 */
00be9182 20 public static function postProcessMembers(&$form, $membershipIDs, $skipOnHold, $skipDeceased, $contactIDs) {
2d3e3c7b 21
e7483cbe
J
22 list($formValues, $categories, $html_message, $messageToken, $returnProperties)
23 = self::processMessageTemplate($form);
53e258d3 24
e7483cbe
J
25 $html
26 = self::generateHTML(
53e258d3
DL
27 $membershipIDs,
28 $returnProperties,
29 $skipOnHold,
30 $skipDeceased,
31 $messageToken,
32 $html_message,
33 $categories
34 );
2d3e3c7b 35 self::createActivities($form, $html_message, $contactIDs);
36
37 CRM_Utils_PDF_Utils::html2pdf($html, "CiviLetter.pdf", FALSE, $formValues);
38
39 $form->postProcessHook();
40
41 CRM_Utils_System::civiExit(1);
42 }
2d3e3c7b 43
44 /**
fe482240 45 * Generate htmlfor pdf letters.
fd31fa4c 46 *
e3946c7f
EM
47 * @param array $membershipIDs
48 * @param array $returnProperties
49 * @param bool $skipOnHold
50 * @param bool $skipDeceased
07945b3c 51 * @param array $messageToken
fd31fa4c
EM
52 * @param $html_message
53 * @param $categories
54 *
07945b3c 55 * @return array
2d3e3c7b 56 */
00be9182 57 public static function generateHTML($membershipIDs, $returnProperties, $skipOnHold, $skipDeceased, $messageToken, $html_message, $categories) {
2d3e3c7b 58 $memberships = CRM_Utils_Token::getMembershipTokenDetails($membershipIDs);
07945b3c 59 $html = array();
2d3e3c7b 60
995fc677
E
61 foreach ($membershipIDs as $membershipID) {
62 $membership = $memberships[$membershipID];
2d3e3c7b 63 // get contact information
64 $contactId = $membership['contact_id'];
65 $params = array('contact_id' => $contactId);
66 //getTokenDetails is much like calling the api contact.get function - but - with some minor
b44e3f84 67 // special handlings. It precedes the existence of the api
2d3e3c7b 68 list($contacts) = CRM_Utils_Token::getTokenDetails(
69 $params,
70 $returnProperties,
71 $skipOnHold,
72 $skipDeceased,
73 NULL,
74 $messageToken,
75 'CRM_Contribution_Form_Task_PDFLetterCommon'
76 );
77
78 $tokenHtml = CRM_Utils_Token::replaceContactTokens($html_message, $contacts[$contactId], TRUE, $messageToken);
79 $tokenHtml = CRM_Utils_Token::replaceEntityTokens('membership', $membership, $tokenHtml, $messageToken);
0cc4a61d 80 $tokenHtml = CRM_Utils_Token::replaceHookTokens($tokenHtml, $contacts[$contactId], $categories, TRUE);
81 $tokenHtml = CRM_Utils_Token::parseThroughSmarty($tokenHtml, $contacts[$contactId]);
2d3e3c7b 82
83 $html[] = $tokenHtml;
84
85 }
86 return $html;
87 }
96025800 88
2d3e3c7b 89}