alternative approach to remove snippet dependency
[civicrm-core.git] / CRM / Contribute / Form / Contribution / ThankYou.php
CommitLineData
6a488035
TO
1<?php
2/*
3 +--------------------------------------------------------------------+
7e9e8871 4 | CiviCRM version 4.7 |
6a488035 5 +--------------------------------------------------------------------+
e7112fa7 6 | Copyright CiviCRM LLC (c) 2004-2015 |
6a488035
TO
7 +--------------------------------------------------------------------+
8 | This file is a part of CiviCRM. |
9 | |
10 | CiviCRM is free software; you can copy, modify, and distribute it |
11 | under the terms of the GNU Affero General Public License |
12 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
13 | |
14 | CiviCRM is distributed in the hope that it will be useful, but |
15 | WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
17 | See the GNU Affero General Public License for more details. |
18 | |
19 | You should have received a copy of the GNU Affero General Public |
20 | License and the CiviCRM Licensing Exception along |
21 | with this program; if not, contact CiviCRM LLC |
22 | at info[AT]civicrm[DOT]org. If you have questions about the |
23 | GNU Affero General Public License or the licensing of CiviCRM, |
24 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
25 +--------------------------------------------------------------------+
d25dd0ee 26 */
6a488035
TO
27
28/**
29 *
30 * @package CRM
e7112fa7 31 * @copyright CiviCRM LLC (c) 2004-2015
6a488035
TO
32 */
33
34/**
95cdcc0f 35 * Form for thank-you / success page - 3rd step of online contribution process.
6a488035
TO
36 */
37class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_ContributionBase {
38
39 /**
fe482240 40 * Membership price set status.
6a488035
TO
41 */
42 public $_useForMember;
43
44 /**
fe482240 45 * Set variables up before form is built.
6a488035
TO
46 */
47 public function preProcess() {
48 parent::preProcess();
49
353ffa53 50 $this->_params = $this->get('params');
6a488035 51 $this->_lineItem = $this->get('lineItem');
353ffa53 52 $is_deductible = $this->get('is_deductible');
6a488035
TO
53 $this->assign('is_deductible', $is_deductible);
54 $this->assign('thankyou_title', CRM_Utils_Array::value('thankyou_title', $this->_values));
55 $this->assign('thankyou_text', CRM_Utils_Array::value('thankyou_text', $this->_values));
56 $this->assign('thankyou_footer', CRM_Utils_Array::value('thankyou_footer', $this->_values));
57 $this->assign('max_reminders', CRM_Utils_Array::value('max_reminders', $this->_values));
58 $this->assign('initial_reminder_day', CRM_Utils_Array::value('initial_reminder_day', $this->_values));
59 CRM_Utils_System::setTitle(CRM_Utils_Array::value('thankyou_title', $this->_values));
f4aaa82a 60 // Make the contributionPageID available to the template
6a488035
TO
61 $this->assign('contributionPageID', $this->_id);
62 $this->assign('isShare', $this->_values['is_share']);
63
64 $this->_params['is_pay_later'] = $this->get('is_pay_later');
65 $this->assign('is_pay_later', $this->_params['is_pay_later']);
66 if ($this->_params['is_pay_later']) {
67 $this->assign('pay_later_receipt', $this->_values['pay_later_receipt']);
68 }
69 }
70
71 /**
100fef9d 72 * Overwrite action, since we are only showing elements in frozen mode
6a488035
TO
73 * no help display needed
74 *
75 * @return int
6a488035 76 */
00be9182 77 public function getAction() {
6a488035
TO
78 if ($this->_action & CRM_Core_Action::PREVIEW) {
79 return CRM_Core_Action::VIEW | CRM_Core_Action::PREVIEW;
80 }
81 else {
82 return CRM_Core_Action::VIEW;
83 }
84 }
85
86 /**
fe482240 87 * Build the form object.
6a488035
TO
88 */
89 public function buildQuickForm() {
90 $this->assignToTemplate();
353ffa53
TO
91 $productID = $this->get('productID');
92 $option = $this->get('option');
6a488035
TO
93 $membershipTypeID = $this->get('membershipTypeID');
94 $this->assign('receiptFromEmail', CRM_Utils_Array::value('receipt_from_email', $this->_values));
95
96 if ($productID) {
97 CRM_Contribute_BAO_Premium::buildPremiumBlock($this, $this->_id, FALSE, $productID, $option);
98 }
9da8dc8c 99 if ($this->_priceSetId && !CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $this->_priceSetId, 'is_quick_config')) {
6a488035 100 $this->assign('lineItem', $this->_lineItem);
0db6c3e1
TO
101 }
102 else {
6a488035
TO
103 if (is_array($membershipTypeID)) {
104 $membershipTypeID = current($membershipTypeID);
105 }
106 $this->assign('is_quick_config', 1);
107 $this->_params['is_quick_config'] = 1;
108 }
109 $this->assign('priceSetID', $this->_priceSetId);
110 $this->assign('useForMember', $this->get('useForMember'));
111
112 $params = $this->_params;
874c9be7 113 $invoiceSettings = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::CONTRIBUTE_PREFERENCES_NAME, 'contribution_invoice_settings');
03b412ae
PB
114 $invoicing = CRM_Utils_Array::value('invoicing', $invoiceSettings);
115 if ($invoicing) {
116 $getTaxDetails = FALSE;
117 $taxTerm = CRM_Utils_Array::value('tax_term', $invoiceSettings);
118 foreach ($this->_lineItem as $key => $value) {
119 foreach ($value as $v) {
120 if (isset($v['tax_rate'])) {
121 if ($v['tax_rate'] != '') {
122 $getTaxDetails = TRUE;
123 }
124 }
125 }
126 }
127 $this->assign('getTaxDetails', $getTaxDetails);
128 $this->assign('taxTerm', $taxTerm);
129 $this->assign('totalTaxAmount', $params['tax_amount']);
130 }
c043358f 131 if (!empty($params['honor']) && !empty($params['soft_credit_type_id'])) {
874c9be7 132 $honorName = NULL;
133e2c99 133 $softCreditTypes = CRM_Core_OptionGroup::values("soft_credit_type", FALSE);
134
133e2c99 135 $this->assign('soft_credit_type', $softCreditTypes[$params['soft_credit_type_id']]);
1421174e 136 CRM_Contribute_BAO_ContributionSoft::formatHonoreeProfileFields($this, $params['honor'], $params['honoree_profile_id']);
6a488035 137
133e2c99 138 $fieldTypes = array('Contact');
353ffa53 139 $fieldTypes[] = CRM_Core_BAO_UFGroup::getContactType($params['honoree_profile_id']);
133e2c99 140 $this->buildCustom($params['honoree_profile_id'], 'honoreeProfileFields', TRUE, 'honor', $fieldTypes);
6a488035
TO
141 }
142
143 $qParams = "reset=1&amp;id={$this->_id}";
144 //pcp elements
145 if ($this->_pcpId) {
146 $qParams .= "&amp;pcpId={$this->_pcpId}";
147 $this->assign('pcpBlock', TRUE);
148 foreach (array(
353ffa53
TO
149 'pcp_display_in_roll',
150 'pcp_is_anonymous',
151 'pcp_roll_nickname',
389bcebf 152 'pcp_personal_note',
353ffa53 153 ) as $val) {
a7488080 154 if (!empty($this->_params[$val])) {
6a488035
TO
155 $this->assign($val, $this->_params[$val]);
156 }
157 }
158 }
159
481a74f4 160 $this->assign('qParams', $qParams);
6a488035
TO
161
162 if ($membershipTypeID) {
353ffa53 163 $transactionID = $this->get('membership_trx_id');
6a488035 164 $membershipAmount = $this->get('membership_amount');
353ffa53 165 $renewalMode = $this->get('renewal_mode');
6a488035
TO
166 $this->assign('membership_trx_id', $transactionID);
167 $this->assign('membership_amount', $membershipAmount);
168 $this->assign('renewal_mode', $renewalMode);
169
42e3a033 170 $this->buildMembershipBlock(
5b757295 171 $this->_membershipContactID,
6a488035
TO
172 FALSE,
173 $membershipTypeID,
5b757295 174 TRUE,
175 NULL
6a488035 176 );
9cc96227 177
178 if (!empty($params['auto_renew'])) {
179 $this->assign('auto_renew', TRUE);
180 }
6a488035
TO
181 }
182
183 $this->_separateMembershipPayment = $this->get('separateMembershipPayment');
184 $this->assign("is_separate_payment", $this->_separateMembershipPayment);
185
186 $this->buildCustom($this->_values['custom_pre_id'], 'customPre', TRUE);
187 $this->buildCustom($this->_values['custom_post_id'], 'customPost', TRUE);
c043358f 188 if (!empty($params['onbehalf'])) {
353ffa53 189 $fieldTypes = array('Contact', 'Organization');
6a488035 190 $contactSubType = CRM_Contact_BAO_ContactType::subTypes('Organization');
353ffa53 191 $fieldTypes = array_merge($fieldTypes, $contactSubType);
6a488035
TO
192 if (is_array($this->_membershipBlock) && !empty($this->_membershipBlock)) {
193 $fieldTypes = array_merge($fieldTypes, array('Membership'));
194 }
195 else {
196 $fieldTypes = array_merge($fieldTypes, array('Contribution'));
197 }
198
e63910c5 199 $this->buildCustom($params['onbehalf_profile_id'], 'onbehalfProfile', TRUE, 'onbehalf', $fieldTypes);
6a488035
TO
200 }
201
202 $this->assign('trxn_id',
203 CRM_Utils_Array::value('trxn_id',
204 $this->_params
205 )
206 );
207 $this->assign('receive_date',
208 CRM_Utils_Date::mysqlToIso(CRM_Utils_Array::value('receive_date', $this->_params))
209 );
210
211 $defaults = array();
212 $fields = array();
213 foreach ($this->_fields as $name => $dontCare) {
133e2c99 214 if ($name != 'onbehalf' || $name != 'honor') {
6a488035
TO
215 $fields[$name] = 1;
216 }
217 }
218 $fields['state_province'] = $fields['country'] = $fields['email'] = 1;
219 $contact = $this->_params = $this->controller->exportValues('Main');
220
221 foreach ($fields as $name => $dontCare) {
133e2c99 222 if (isset($contact[$name])) {
6a488035
TO
223 $defaults[$name] = $contact[$name];
224 if (substr($name, 0, 7) == 'custom_') {
225 $timeField = "{$name}_time";
226 if (isset($contact[$timeField])) {
227 $defaults[$timeField] = $contact[$timeField];
228 }
229 }
353ffa53
TO
230 elseif (in_array($name, array(
231 'addressee',
232 'email_greeting',
389bcebf 233 'postal_greeting',
353ffa53
TO
234 )) && !empty($contact[$name . '_custom'])
235 ) {
6a488035
TO
236 $defaults[$name . '_custom'] = $contact[$name . '_custom'];
237 }
238 }
239 }
240
6a488035 241 $this->_submitValues = array_merge($this->_submitValues, $defaults);
6cc679d2 242
243 if (!empty($this->_params['onbehalf_values'])) {
244 $defaults['onbehalf'] = (array) json_decode($this->_params['onbehalf_values']);
245 }
6a488035 246 $this->setDefaults($defaults);
eea16664 247
6a488035
TO
248 $values['entity_id'] = $this->_id;
249 $values['entity_table'] = 'civicrm_contribution_page';
250
251 CRM_Friend_BAO_Friend::retrieve($values, $data);
252 $tellAFriend = FALSE;
253 if ($this->_pcpId) {
254 if ($this->_pcpBlock['is_tellfriend_enabled']) {
255 $this->assign('friendText', ts('Tell a Friend'));
256 $subUrl = "eid={$this->_pcpId}&blockId={$this->_pcpBlock['id']}&pcomponent=pcp";
257 $tellAFriend = TRUE;
258 }
259 }
a7488080 260 elseif (!empty($data['is_active'])) {
6a488035
TO
261 $friendText = $data['title'];
262 $this->assign('friendText', $friendText);
263 $subUrl = "eid={$this->_id}&pcomponent=contribute";
264 $tellAFriend = TRUE;
265 }
266
267 if ($tellAFriend) {
268 if ($this->_action & CRM_Core_Action::PREVIEW) {
269 $url = CRM_Utils_System::url("civicrm/friend",
270 "reset=1&action=preview&{$subUrl}"
271 );
272 }
273 else {
274 $url = CRM_Utils_System::url("civicrm/friend",
275 "reset=1&{$subUrl}"
276 );
277 }
278 $this->assign('friendURL', $url);
279 }
280
281 $this->freeze();
282
283 // can we blow away the session now to prevent hackery
284 // CRM-9491
285 $this->controller->reset();
286 }
96025800 287
6a488035 288}