CRM-14106 - Regex targeting the first part of if statements
[civicrm-core.git] / CRM / Contribute / Form / Contribution / ThankYou.php
1 <?php
2 /*
3 +--------------------------------------------------------------------+
4 | CiviCRM version 4.4 |
5 +--------------------------------------------------------------------+
6 | Copyright CiviCRM LLC (c) 2004-2013 |
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 +--------------------------------------------------------------------+
26 */
27
28 /**
29 *
30 * @package CRM
31 * @copyright CiviCRM LLC (c) 2004-2013
32 * $Id$
33 *
34 */
35
36 /**
37 * form for thank-you / success page - 3rd step of online contribution process
38 */
39 class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_ContributionBase {
40
41 /**
42 * membership price set status
43 *
44 */
45 public $_useForMember;
46
47 /**
48 * Function to set variables up before form is built
49 *
50 * @return void
51 * @access public
52 */
53 public function preProcess() {
54 parent::preProcess();
55
56 $this->_params = $this->get('params');
57 $this->_lineItem = $this->get('lineItem');
58 $is_deductible = $this->get('is_deductible');
59 $this->assign('is_deductible', $is_deductible);
60 $this->assign('thankyou_title', CRM_Utils_Array::value('thankyou_title', $this->_values));
61 $this->assign('thankyou_text', CRM_Utils_Array::value('thankyou_text', $this->_values));
62 $this->assign('thankyou_footer', CRM_Utils_Array::value('thankyou_footer', $this->_values));
63 $this->assign('max_reminders', CRM_Utils_Array::value('max_reminders', $this->_values));
64 $this->assign('initial_reminder_day', CRM_Utils_Array::value('initial_reminder_day', $this->_values));
65 CRM_Utils_System::setTitle(CRM_Utils_Array::value('thankyou_title', $this->_values));
66 // Make the contributionPageID avilable to the template
67 $this->assign('contributionPageID', $this->_id);
68 $this->assign('isShare', $this->_values['is_share']);
69
70 $this->_params['is_pay_later'] = $this->get('is_pay_later');
71 $this->assign('is_pay_later', $this->_params['is_pay_later']);
72 if ($this->_params['is_pay_later']) {
73 $this->assign('pay_later_receipt', $this->_values['pay_later_receipt']);
74 }
75 }
76
77 /**
78 * overwrite action, since we are only showing elements in frozen mode
79 * no help display needed
80 *
81 * @return int
82 * @access public
83 */
84 function getAction() {
85 if ($this->_action & CRM_Core_Action::PREVIEW) {
86 return CRM_Core_Action::VIEW | CRM_Core_Action::PREVIEW;
87 }
88 else {
89 return CRM_Core_Action::VIEW;
90 }
91 }
92
93 /**
94 * Function to actually build the form
95 *
96 * @return void
97 * @access public
98 */
99 public function buildQuickForm() {
100 $this->assignToTemplate();
101 $productID = $this->get('productID');
102 $option = $this->get('option');
103 $membershipTypeID = $this->get('membershipTypeID');
104 $this->assign('receiptFromEmail', CRM_Utils_Array::value('receipt_from_email', $this->_values));
105
106 if ($productID) {
107 CRM_Contribute_BAO_Premium::buildPremiumBlock($this, $this->_id, FALSE, $productID, $option);
108 }
109 if ($this->_priceSetId && !CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $this->_priceSetId, 'is_quick_config')) {
110 $this->assign('lineItem', $this->_lineItem);
111 } else {
112 if (is_array($membershipTypeID)) {
113 $membershipTypeID = current($membershipTypeID);
114 }
115 $this->assign('is_quick_config', 1);
116 $this->_params['is_quick_config'] = 1;
117 }
118 $this->assign('priceSetID', $this->_priceSetId);
119 $this->assign('useForMember', $this->get('useForMember'));
120
121 $params = $this->_params;
122 $honor_block_is_active = $this->get('honor_block_is_active');
123 if ($honor_block_is_active && CRM_Utils_Array::value('soft_credit_type_id', $params)) {
124 $honorName = null;
125 $softCreditTypes = CRM_Core_OptionGroup::values("soft_credit_type", FALSE);
126
127 $this->assign('honor_block_is_active', $honor_block_is_active);
128 $this->assign('soft_credit_type', $softCreditTypes[$params['soft_credit_type_id']]);
129 $profileContactType = CRM_Core_BAO_UFGroup::getContactType($params['honoree_profile_id']);
130 switch ($profileContactType) {
131 case 'Individual':
132 if (array_key_exists('prefix_id', $params['honor'])) {
133 $honorName = CRM_Utils_Array::value(CRM_Utils_Array::value('prefix_id',$params['honor']),
134 CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'prefix_id')
135 );
136 }
137 $honorName .= ' ' . $params['honor']['first_name'] . ' ' . $params['honor']['last_name'];
138 if (array_key_exists('suffix_id', $params['honor'])) {
139 $honorName .= ' ' . CRM_Utils_Array::value(CRM_Utils_Array::value('suffix_id',$params['honor']),
140 CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'suffix_id')
141 );
142 }
143 break;
144 case 'Organization':
145 $honorName = $params['honor']['organization_name'];
146 break;
147 case 'Household':
148 $honorName = $params['honor']['household_name'];
149 break;
150 }
151 $this->assign('honorName', $honorName);
152
153 $fieldTypes = array('Contact');
154 $fieldTypes[] = CRM_Core_BAO_UFGroup::getContactType($params['honoree_profile_id']);
155 $this->buildCustom($params['honoree_profile_id'], 'honoreeProfileFields', TRUE, 'honor', $fieldTypes);
156 }
157
158 $qParams = "reset=1&amp;id={$this->_id}";
159 //pcp elements
160 if ($this->_pcpId) {
161 $qParams .= "&amp;pcpId={$this->_pcpId}";
162 $this->assign('pcpBlock', TRUE);
163 foreach (array(
164 'pcp_display_in_roll', 'pcp_is_anonymous', 'pcp_roll_nickname', 'pcp_personal_note') as $val) {
165 if (!empty($this->_params[$val])) {
166 $this->assign($val, $this->_params[$val]);
167 }
168 }
169 }
170
171 $this->assign( 'qParams' , $qParams );
172
173 if ($membershipTypeID) {
174 $transactionID = $this->get('membership_trx_id');
175 $membershipAmount = $this->get('membership_amount');
176 $renewalMode = $this->get('renewal_mode');
177 $this->assign('membership_trx_id', $transactionID);
178 $this->assign('membership_amount', $membershipAmount);
179 $this->assign('renewal_mode', $renewalMode);
180
181 CRM_Member_BAO_Membership::buildMembershipBlock($this,
182 $this->_id,
183 $this->_membershipContactID,
184 FALSE,
185 $membershipTypeID,
186 TRUE,
187 NULL
188 );
189 }
190
191 $this->_separateMembershipPayment = $this->get('separateMembershipPayment');
192 $this->assign("is_separate_payment", $this->_separateMembershipPayment);
193
194 $this->buildCustom($this->_values['custom_pre_id'], 'customPre', TRUE);
195 $this->buildCustom($this->_values['custom_post_id'], 'customPost', TRUE);
196 if (!empty($params['hidden_onbehalf_profile'])) {
197 $ufJoinParams = array(
198 'module' => 'onBehalf',
199 'entity_table' => 'civicrm_contribution_page',
200 'entity_id' => $this->_id,
201 );
202 $OnBehalfProfile = CRM_Core_BAO_UFJoin::getUFGroupIds($ufJoinParams);
203 $profileId = $OnBehalfProfile[0];
204
205 $fieldTypes = array('Contact', 'Organization');
206 $contactSubType = CRM_Contact_BAO_ContactType::subTypes('Organization');
207 $fieldTypes = array_merge($fieldTypes, $contactSubType);
208 if (is_array($this->_membershipBlock) && !empty($this->_membershipBlock)) {
209 $fieldTypes = array_merge($fieldTypes, array('Membership'));
210 }
211 else {
212 $fieldTypes = array_merge($fieldTypes, array('Contribution'));
213 }
214
215 $this->buildCustom($profileId, 'onbehalfProfile', TRUE, 'onbehalf', $fieldTypes);
216 }
217
218 $this->assign('trxn_id',
219 CRM_Utils_Array::value('trxn_id',
220 $this->_params
221 )
222 );
223 $this->assign('receive_date',
224 CRM_Utils_Date::mysqlToIso(CRM_Utils_Array::value('receive_date', $this->_params))
225 );
226
227 $defaults = array();
228 $fields = array();
229 foreach ($this->_fields as $name => $dontCare) {
230 if ($name != 'onbehalf' || $name != 'honor') {
231 $fields[$name] = 1;
232 }
233 }
234 $fields['state_province'] = $fields['country'] = $fields['email'] = 1;
235 $contact = $this->_params = $this->controller->exportValues('Main');
236
237 foreach ($fields as $name => $dontCare) {
238 if (isset($contact[$name])) {
239 $defaults[$name] = $contact[$name];
240 if (substr($name, 0, 7) == 'custom_') {
241 $timeField = "{$name}_time";
242 if (isset($contact[$timeField])) {
243 $defaults[$timeField] = $contact[$timeField];
244 }
245 }
246 elseif (in_array($name, array('addressee', 'email_greeting', 'postal_greeting'))
247 && CRM_Utils_Array::value($name . '_custom', $contact)
248 ) {
249 $defaults[$name . '_custom'] = $contact[$name . '_custom'];
250 }
251 }
252 }
253
254 // now fix all state country selectors
255 CRM_Core_BAO_Address::fixAllStateSelects($this, $defaults);
256
257 $this->_submitValues = array_merge($this->_submitValues, $defaults);
258 $this->setDefaults($defaults);
259
260 $values['entity_id'] = $this->_id;
261 $values['entity_table'] = 'civicrm_contribution_page';
262
263 CRM_Friend_BAO_Friend::retrieve($values, $data);
264 $tellAFriend = FALSE;
265 if ($this->_pcpId) {
266 if ($this->_pcpBlock['is_tellfriend_enabled']) {
267 $this->assign('friendText', ts('Tell a Friend'));
268 $subUrl = "eid={$this->_pcpId}&blockId={$this->_pcpBlock['id']}&pcomponent=pcp";
269 $tellAFriend = TRUE;
270 }
271 }
272 elseif (!empty($data['is_active'])) {
273 $friendText = $data['title'];
274 $this->assign('friendText', $friendText);
275 $subUrl = "eid={$this->_id}&pcomponent=contribute";
276 $tellAFriend = TRUE;
277 }
278
279 if ($tellAFriend) {
280 if ($this->_action & CRM_Core_Action::PREVIEW) {
281 $url = CRM_Utils_System::url("civicrm/friend",
282 "reset=1&action=preview&{$subUrl}"
283 );
284 }
285 else {
286 $url = CRM_Utils_System::url("civicrm/friend",
287 "reset=1&{$subUrl}"
288 );
289 }
290 $this->assign('friendURL', $url);
291 }
292
293 $this->freeze();
294
295 // can we blow away the session now to prevent hackery
296 // CRM-9491
297 $this->controller->reset();
298 }
299 }
300