1d1fee72 |
1 | <?php |
2 | /* |
3 | +--------------------------------------------------------------------+ |
4 | | CiviCRM version 4.7 | |
5 | +--------------------------------------------------------------------+ |
6 | | Copyright CiviCRM LLC (c) 2004-2015 | |
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-2015 |
32 | */ |
33 | class CRM_Core_Payment_Manual extends CRM_Core_Payment { |
34 | |
35 | protected $result; |
36 | |
37 | /** |
38 | * This function checks to see if we have the right config values. |
1d1fee72 |
39 | */ |
f48e6cf7 |
40 | public function checkConfig() {} |
1d1fee72 |
41 | |
42 | /** |
43 | * Get billing fields required for this processor. |
44 | * |
45 | * We apply the existing default of returning fields only for payment processor type 1. Processors can override to |
46 | * alter. |
47 | * |
48 | * @param int $billingLocationID |
49 | * |
50 | * @return array |
51 | */ |
52 | public function getBillingAddressFields($billingLocationID = NULL) { |
53 | if (!$billingLocationID) { |
54 | // Note that although the billing id is passed around the forms the idea that it would be anything other than |
55 | // the result of the function below doesn't seem to have eventuated. |
56 | // So taking this as a param is possibly something to be removed in favour of the standard default. |
57 | $billingLocationID = CRM_Core_BAO_LocationType::getBilling(); |
58 | } |
59 | |
60 | // Only handle pseudo-profile billing for now. |
61 | if ($this->billingProfile == 'billing') { |
62 | // @todo - use profile api to retrieve this - either as pseudo-profile or (better) set up billing |
63 | // as a reserved profile in the DB and (even better) allow the profile to be selected |
64 | // on the form instead of just 'billing for pay=later bool' |
65 | return array( |
66 | 'first_name' => 'billing_first_name', |
67 | 'middle_name' => 'billing_middle_name', |
68 | 'last_name' => 'billing_last_name', |
69 | 'street_address' => "billing_street_address-{$billingLocationID}", |
70 | 'city' => "billing_city-{$billingLocationID}", |
71 | 'country' => "billing_country_id-{$billingLocationID}", |
72 | 'state_province' => "billing_state_province_id-{$billingLocationID}", |
73 | 'postal_code' => "billing_postal_code-{$billingLocationID}", |
74 | ); |
75 | } |
76 | else { |
77 | return array(); |
78 | } |
79 | } |
80 | |
81 | /** |
82 | * Get array of fields that should be displayed on the payment form. |
83 | * |
84 | * @return array |
85 | */ |
86 | public function getPaymentFormFields() { |
87 | return array(); |
88 | } |
89 | /** |
90 | * Process payment. |
91 | * |
92 | * The function ensures an exception is thrown & moves some of this logic out of the form layer and makes the forms |
93 | * more agnostic. |
94 | * |
95 | * @param array $params |
96 | * |
97 | * @param string $component |
98 | * |
99 | * @return array |
100 | * Result array |
101 | * |
102 | * @throws \Civi\Payment\Exception\PaymentProcessorException |
103 | */ |
104 | public function doPayment(&$params, $component = 'contribute') { |
105 | $params['payment_status_id'] = $this->getResult(); |
106 | return $params; |
107 | } |
108 | |
109 | /** |
110 | * Get the result of the payment. |
111 | * |
112 | * Usually this will be pending but the calling layer has a chance to set the result. |
113 | * |
114 | * This would apply in particular when the form accepts status id. |
115 | * |
116 | * Note that currently this payment class is only being used to manage the 'billing block' aspect |
117 | * of pay later. However, a longer term idea is that by treating 'pay-later' as 'just another processor' |
118 | * will allow code simplification. |
119 | * |
120 | * @return int |
121 | */ |
122 | protected function getResult() { |
123 | if (!$this->result) { |
124 | $this->setResult(CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'status_id', 'Pending')); |
125 | } |
126 | return $this->result; |
127 | } |
128 | |
129 | /** |
130 | * Set the result to be returned. |
131 | * |
132 | * This would be set from outside the function where we want to pass on the status from the form. |
133 | * |
134 | * @param int $result |
135 | */ |
136 | public function setResult($result) { |
137 | $this->result = $result; |
138 | } |
139 | |
140 | /** |
141 | * Get the name of the payment type. |
142 | * |
143 | * @return string |
144 | */ |
145 | public function getPaymentTypeName() { |
146 | return 'pay-later'; |
147 | } |
148 | |
149 | /** |
150 | * Get the name of the payment type. |
151 | * |
152 | * @return string |
153 | */ |
154 | public function getPaymentTypeLabel() { |
155 | return ''; |
156 | } |
f48e6cf7 |
157 | |
1d1fee72 |
158 | } |