Move towards allowing sending 500 http errors back by switching civiExit(1) to be...
[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) {
b0738a9b 21 $formValues = $form->controller->exportValues($form->getName());
22 list($formValues, $categories, $html_message, $messageToken, $returnProperties) = self::processMessageTemplate($formValues);
53e258d3 23
e7483cbe
J
24 $html
25 = self::generateHTML(
53e258d3
DL
26 $membershipIDs,
27 $returnProperties,
28 $skipOnHold,
29 $skipDeceased,
30 $messageToken,
31 $html_message,
32 $categories
33 );
3280f327 34 self::createActivities($form, $html_message, $contactIDs, $formValues['subject'], CRM_Utils_Array::value('campaign_id', $formValues));
2d3e3c7b 35
36 CRM_Utils_PDF_Utils::html2pdf($html, "CiviLetter.pdf", FALSE, $formValues);
37
38 $form->postProcessHook();
39
292c8687 40 CRM_Utils_System::civiExit();
2d3e3c7b 41 }
2d3e3c7b 42
43 /**
fe482240 44 * Generate htmlfor pdf letters.
fd31fa4c 45 *
e3946c7f
EM
46 * @param array $membershipIDs
47 * @param array $returnProperties
48 * @param bool $skipOnHold
49 * @param bool $skipDeceased
07945b3c 50 * @param array $messageToken
fd31fa4c
EM
51 * @param $html_message
52 * @param $categories
53 *
07945b3c 54 * @return array
2d3e3c7b 55 */
00be9182 56 public static function generateHTML($membershipIDs, $returnProperties, $skipOnHold, $skipDeceased, $messageToken, $html_message, $categories) {
2d3e3c7b 57 $memberships = CRM_Utils_Token::getMembershipTokenDetails($membershipIDs);
07945b3c 58 $html = array();
2d3e3c7b 59
995fc677
E
60 foreach ($membershipIDs as $membershipID) {
61 $membership = $memberships[$membershipID];
2d3e3c7b 62 // get contact information
63 $contactId = $membership['contact_id'];
64 $params = array('contact_id' => $contactId);
65 //getTokenDetails is much like calling the api contact.get function - but - with some minor
b44e3f84 66 // special handlings. It precedes the existence of the api
2d3e3c7b 67 list($contacts) = CRM_Utils_Token::getTokenDetails(
68 $params,
69 $returnProperties,
70 $skipOnHold,
71 $skipDeceased,
72 NULL,
73 $messageToken,
74 'CRM_Contribution_Form_Task_PDFLetterCommon'
75 );
76
77 $tokenHtml = CRM_Utils_Token::replaceContactTokens($html_message, $contacts[$contactId], TRUE, $messageToken);
78 $tokenHtml = CRM_Utils_Token::replaceEntityTokens('membership', $membership, $tokenHtml, $messageToken);
0cc4a61d 79 $tokenHtml = CRM_Utils_Token::replaceHookTokens($tokenHtml, $contacts[$contactId], $categories, TRUE);
80 $tokenHtml = CRM_Utils_Token::parseThroughSmarty($tokenHtml, $contacts[$contactId]);
2d3e3c7b 81
82 $html[] = $tokenHtml;
83
84 }
85 return $html;
86 }
96025800 87
2d3e3c7b 88}