3 +--------------------------------------------------------------------+
4 | CiviCRM version 4.4 |
5 +--------------------------------------------------------------------+
6 | Copyright CiviCRM LLC (c) 2004-2013 |
7 +--------------------------------------------------------------------+
8 | This file is a part of CiviCRM. |
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. |
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. |
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 +--------------------------------------------------------------------+
31 * @copyright CiviCRM LLC (c) 2004-2013
37 * form for thank-you / success page - 3rd step of online contribution process
39 class CRM_Contribute_Form_Contribution_ThankYou
extends CRM_Contribute_Form_ContributionBase
{
42 * membership price set status
45 public $_useForMember;
48 * Function to set variables up before form is built
53 public function preProcess() {
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']);
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']);
78 * overwrite action, since we are only showing elements in frozen mode
79 * no help display needed
84 function getAction() {
85 if ($this->_action
& CRM_Core_Action
::PREVIEW
) {
86 return CRM_Core_Action
::VIEW | CRM_Core_Action
::PREVIEW
;
89 return CRM_Core_Action
::VIEW
;
94 * Function to actually build the form
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
));
107 CRM_Contribute_BAO_Premium
::buildPremiumBlock($this, $this->_id
, FALSE, $productID, $option);
109 if ($this->_priceSetId
&& !CRM_Core_DAO
::getFieldValue('CRM_Price_DAO_PriceSet', $this->_priceSetId
, 'is_quick_config')) {
110 $this->assign('lineItem', $this->_lineItem
);
112 if (is_array($membershipTypeID)) {
113 $membershipTypeID = current($membershipTypeID);
115 $this->assign('is_quick_config', 1);
116 $this->_params
['is_quick_config'] = 1;
118 $this->assign('priceSetID', $this->_priceSetId
);
119 $this->assign('useForMember', $this->get('useForMember'));
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"]))
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
));
131 $prefix = CRM_Core_PseudoConstant
::get('CRM_Contact_DAO_Contact', 'prefix_id');
132 $honor = CRM_Core_PseudoConstant
::get('CRM_Contribute_DAO_Contribution', 'honor_type_id');
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"]);
140 $qParams = "reset=1&id={$this->_id}";
143 $qParams .= "&pcpId={$this->_pcpId}";
144 $this->assign('pcpBlock', TRUE);
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]);
153 $this->assign( 'qParams' , $qParams );
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);
163 CRM_Member_BAO_Membership
::buildMembershipBlock($this,
165 $this->_membershipContactID
,
173 $this->_separateMembershipPayment
= $this->get('separateMembershipPayment');
174 $this->assign("is_separate_payment", $this->_separateMembershipPayment
);
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
,
184 $OnBehalfProfile = CRM_Core_BAO_UFJoin
::getUFGroupIds($ufJoinParams);
185 $profileId = $OnBehalfProfile[0];
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'));
194 $fieldTypes = array_merge($fieldTypes, array('Contribution'));
197 $this->buildCustom($profileId, 'onbehalfProfile', TRUE, TRUE, $fieldTypes);
200 $this->assign('trxn_id',
201 CRM_Utils_Array
::value('trxn_id',
205 $this->assign('receive_date',
206 CRM_Utils_Date
::mysqlToIso(CRM_Utils_Array
::value('receive_date', $this->_params
))
211 foreach ($this->_fields
as $name => $dontCare) {
212 if ($name == 'onbehalf') {
213 foreach ($dontCare as $key => $value) {
214 $fields['onbehalf'][$key] = 1;
221 $fields['state_province'] = $fields['country'] = $fields['email'] = 1;
222 $contact = $this->_params
= $this->controller
->exportValues('Main');
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];
231 if (isset($contact['onbehalf']["{$key}_id"])) {
232 $defaults["{$key}_id"] = $contact['onbehalf']["{$key}_id"];
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];
245 elseif (in_array($name, array('addressee', 'email_greeting', 'postal_greeting'))
246 && CRM_Utils_Array
::value($name . '_custom', $contact)
248 $defaults[$name . '_custom'] = $contact[$name . '_custom'];
253 // now fix all state country selectors
254 CRM_Core_BAO_Address
::fixAllStateSelects($this, $defaults);
256 $this->_submitValues
= array_merge($this->_submitValues
, $defaults);
257 $this->setDefaults($defaults);
259 $values['entity_id'] = $this->_id
;
260 $values['entity_table'] = 'civicrm_contribution_page';
262 CRM_Friend_BAO_Friend
::retrieve($values, $data);
263 $tellAFriend = FALSE;
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";
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";
279 if ($this->_action
& CRM_Core_Action
::PREVIEW
) {
280 $url = CRM_Utils_System
::url("civicrm/friend",
281 "reset=1&action=preview&{$subUrl}"
285 $url = CRM_Utils_System
::url("civicrm/friend",
289 $this->assign('friendURL', $url);
294 // can we blow away the session now to prevent hackery
296 $this->controller
->reset();