Commit | Line | Data |
---|---|---|
6a488035 TO |
1 | <?php |
2 | /* | |
3 | +--------------------------------------------------------------------+ | |
232624b1 | 4 | | CiviCRM version 4.4 | |
6a488035 TO |
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 | } | |
9da8dc8c | 109 | if ($this->_priceSetId && !CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $this->_priceSetId, 'is_quick_config')) { |
6a488035 TO |
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 && | |
124 | ((!empty($params["honor_first_name"]) && !empty($params["honor_last_name"])) || | |
125 | (!empty($params["honor_email"])) | |
126 | ) | |
127 | ) { | |
128 | $this->assign('honor_block_is_active', $honor_block_is_active); | |
129 | $this->assign('honor_block_title', CRM_Utils_Array::value('honor_block_title', $this->_values)); | |
130 | ||
e6c4755b | 131 | $prefix = CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'prefix_id'); |
cbf48754 | 132 | $honor = CRM_Core_PseudoConstant::get('CRM_Contribute_DAO_Contribution', 'honor_type_id'); |
6a488035 TO |
133 | $this->assign('honor_type', $honor[$params["honor_type_id"]]); |
134 | $this->assign('honor_prefix', ($params["honor_prefix_id"]) ? $prefix[$params["honor_prefix_id"]] : ' '); | |
135 | $this->assign('honor_first_name', $params["honor_first_name"]); | |
136 | $this->assign('honor_last_name', $params["honor_last_name"]); | |
137 | $this->assign('honor_email', $params["honor_email"]); | |
138 | } | |
139 | ||
140 | $qParams = "reset=1&id={$this->_id}"; | |
141 | //pcp elements | |
142 | if ($this->_pcpId) { | |
143 | $qParams .= "&pcpId={$this->_pcpId}"; | |
144 | $this->assign('pcpBlock', TRUE); | |
145 | foreach (array( | |
146 | 'pcp_display_in_roll', 'pcp_is_anonymous', 'pcp_roll_nickname', 'pcp_personal_note') as $val) { | |
147 | if (CRM_Utils_Array::value($val, $this->_params)) { | |
148 | $this->assign($val, $this->_params[$val]); | |
149 | } | |
150 | } | |
151 | } | |
152 | ||
153 | $this->assign( 'qParams' , $qParams ); | |
154 | ||
155 | if ($membershipTypeID) { | |
156 | $transactionID = $this->get('membership_trx_id'); | |
157 | $membershipAmount = $this->get('membership_amount'); | |
158 | $renewalMode = $this->get('renewal_mode'); | |
159 | $this->assign('membership_trx_id', $transactionID); | |
160 | $this->assign('membership_amount', $membershipAmount); | |
161 | $this->assign('renewal_mode', $renewalMode); | |
162 | ||
163 | CRM_Member_BAO_Membership::buildMembershipBlock($this, | |
164 | $this->_id, | |
5b757295 | 165 | $this->_membershipContactID, |
6a488035 TO |
166 | FALSE, |
167 | $membershipTypeID, | |
5b757295 | 168 | TRUE, |
169 | NULL | |
6a488035 TO |
170 | ); |
171 | } | |
172 | ||
173 | $this->_separateMembershipPayment = $this->get('separateMembershipPayment'); | |
174 | $this->assign("is_separate_payment", $this->_separateMembershipPayment); | |
175 | ||
176 | $this->buildCustom($this->_values['custom_pre_id'], 'customPre', TRUE); | |
177 | $this->buildCustom($this->_values['custom_post_id'], 'customPost', TRUE); | |
178 | if (CRM_Utils_Array::value('hidden_onbehalf_profile', $params)) { | |
179 | $ufJoinParams = array( | |
180 | 'module' => 'onBehalf', | |
181 | 'entity_table' => 'civicrm_contribution_page', | |
182 | 'entity_id' => $this->_id, | |
183 | ); | |
184 | $OnBehalfProfile = CRM_Core_BAO_UFJoin::getUFGroupIds($ufJoinParams); | |
185 | $profileId = $OnBehalfProfile[0]; | |
186 | ||
187 | $fieldTypes = array('Contact', 'Organization'); | |
188 | $contactSubType = CRM_Contact_BAO_ContactType::subTypes('Organization'); | |
189 | $fieldTypes = array_merge($fieldTypes, $contactSubType); | |
190 | if (is_array($this->_membershipBlock) && !empty($this->_membershipBlock)) { | |
191 | $fieldTypes = array_merge($fieldTypes, array('Membership')); | |
192 | } | |
193 | else { | |
194 | $fieldTypes = array_merge($fieldTypes, array('Contribution')); | |
195 | } | |
196 | ||
197 | $this->buildCustom($profileId, 'onbehalfProfile', TRUE, TRUE, $fieldTypes); | |
198 | } | |
199 | ||
200 | $this->assign('trxn_id', | |
201 | CRM_Utils_Array::value('trxn_id', | |
202 | $this->_params | |
203 | ) | |
204 | ); | |
205 | $this->assign('receive_date', | |
206 | CRM_Utils_Date::mysqlToIso(CRM_Utils_Array::value('receive_date', $this->_params)) | |
207 | ); | |
208 | ||
209 | $defaults = array(); | |
210 | $fields = array(); | |
211 | foreach ($this->_fields as $name => $dontCare) { | |
212 | if ($name == 'onbehalf') { | |
213 | foreach ($dontCare as $key => $value) { | |
214 | $fields['onbehalf'][$key] = 1; | |
215 | } | |
216 | } | |
217 | else { | |
218 | $fields[$name] = 1; | |
219 | } | |
220 | } | |
221 | $fields['state_province'] = $fields['country'] = $fields['email'] = 1; | |
222 | $contact = $this->_params = $this->controller->exportValues('Main'); | |
223 | ||
224 | foreach ($fields as $name => $dontCare) { | |
225 | if ($name == 'onbehalf') { | |
226 | foreach ($dontCare as $key => $value) { | |
227 | //$defaults[$key] = $contact['onbehalf'][$key]; | |
228 | if (isset($contact['onbehalf'][$key])) { | |
229 | $defaults[$key] = $contact['onbehalf'][$key]; | |
230 | } | |
231 | if (isset($contact['onbehalf']["{$key}_id"])) { | |
232 | $defaults["{$key}_id"] = $contact['onbehalf']["{$key}_id"]; | |
233 | } | |
234 | ||
235 | } | |
236 | } | |
237 | elseif (isset($contact[$name])) { | |
238 | $defaults[$name] = $contact[$name]; | |
239 | if (substr($name, 0, 7) == 'custom_') { | |
240 | $timeField = "{$name}_time"; | |
241 | if (isset($contact[$timeField])) { | |
242 | $defaults[$timeField] = $contact[$timeField]; | |
243 | } | |
244 | } | |
245 | elseif (in_array($name, array('addressee', 'email_greeting', 'postal_greeting')) | |
246 | && CRM_Utils_Array::value($name . '_custom', $contact) | |
247 | ) { | |
248 | $defaults[$name . '_custom'] = $contact[$name . '_custom']; | |
249 | } | |
250 | } | |
251 | } | |
252 | ||
253 | // now fix all state country selectors | |
254 | CRM_Core_BAO_Address::fixAllStateSelects($this, $defaults); | |
255 | ||
256 | $this->_submitValues = array_merge($this->_submitValues, $defaults); | |
257 | $this->setDefaults($defaults); | |
eea16664 | 258 | |
6a488035 TO |
259 | $values['entity_id'] = $this->_id; |
260 | $values['entity_table'] = 'civicrm_contribution_page'; | |
261 | ||
262 | CRM_Friend_BAO_Friend::retrieve($values, $data); | |
263 | $tellAFriend = FALSE; | |
264 | if ($this->_pcpId) { | |
265 | if ($this->_pcpBlock['is_tellfriend_enabled']) { | |
266 | $this->assign('friendText', ts('Tell a Friend')); | |
267 | $subUrl = "eid={$this->_pcpId}&blockId={$this->_pcpBlock['id']}&pcomponent=pcp"; | |
268 | $tellAFriend = TRUE; | |
269 | } | |
270 | } | |
271 | elseif (CRM_Utils_Array::value('is_active', $data)) { | |
272 | $friendText = $data['title']; | |
273 | $this->assign('friendText', $friendText); | |
274 | $subUrl = "eid={$this->_id}&pcomponent=contribute"; | |
275 | $tellAFriend = TRUE; | |
276 | } | |
277 | ||
278 | if ($tellAFriend) { | |
279 | if ($this->_action & CRM_Core_Action::PREVIEW) { | |
280 | $url = CRM_Utils_System::url("civicrm/friend", | |
281 | "reset=1&action=preview&{$subUrl}" | |
282 | ); | |
283 | } | |
284 | else { | |
285 | $url = CRM_Utils_System::url("civicrm/friend", | |
286 | "reset=1&{$subUrl}" | |
287 | ); | |
288 | } | |
289 | $this->assign('friendURL', $url); | |
290 | } | |
291 | ||
292 | $this->freeze(); | |
293 | ||
294 | // can we blow away the session now to prevent hackery | |
295 | // CRM-9491 | |
296 | $this->controller->reset(); | |
297 | } | |
298 | } | |
299 |