PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.0.2
GiveWP – Donation Plugin and Fundraising Platform v2.0.2
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / includes / gateways / functions.php
give / includes / gateways Last commit date
actions.php 8 years ago functions.php 8 years ago manual.php 8 years ago offline-donations.php 8 years ago paypal-standard.php 8 years ago
functions.php
355 lines
1 <?php
2 /**
3 * Gateway Functions
4 *
5 * @package Give
6 * @subpackage Gateways
7 * @copyright Copyright (c) 2016, WordImpress
8 * @license https://opensource.org/licenses/gpl-license GNU Public License
9 * @since 1.0
10 */
11
12 // Exit if accessed directly.
13 if ( ! defined( 'ABSPATH' ) ) {
14 exit;
15 }
16
17 /**
18 * Returns a list of all available gateways.
19 *
20 * @since 1.0
21 * @return array $gateways All the available gateways
22 */
23 function give_get_payment_gateways() {
24 // Default, built-in gateways
25 $gateways = array(
26 'paypal' => array(
27 'admin_label' => __( 'PayPal Standard', 'give' ),
28 'checkout_label' => __( 'PayPal', 'give' ),
29 ),
30 'manual' => array(
31 'admin_label' => __( 'Test Donation', 'give' ),
32 'checkout_label' => __( 'Test Donation', 'give' )
33 ),
34 );
35
36 return apply_filters( 'give_payment_gateways', $gateways );
37
38 }
39
40 /**
41 * Returns a list of all enabled gateways.
42 *
43 * @since 1.0
44 *
45 * @param int $form_id Form ID
46 *
47 * @return array $gateway_list All the available gateways
48 */
49 function give_get_enabled_payment_gateways( $form_id = 0 ) {
50
51 $gateways = give_get_payment_gateways();
52
53 $enabled = isset( $_POST['gateways'] ) ? $_POST['gateways'] : give_get_option( 'gateways' );
54
55 $gateway_list = array();
56
57 foreach ( $gateways as $key => $gateway ) {
58 if ( isset( $enabled[ $key ] ) && $enabled[ $key ] == 1 ) {
59 $gateway_list[ $key ] = $gateway;
60 }
61 }
62
63 // Set order of payment gateway in list.
64 $gateway_list = give_get_ordered_payment_gateways( $gateway_list );
65
66 return apply_filters( 'give_enabled_payment_gateways', $gateway_list, $form_id );
67 }
68
69 /**
70 * Checks whether a specified gateway is activated.
71 *
72 * @since 1.0
73 *
74 * @param string $gateway Name of the gateway to check for
75 *
76 * @return boolean true if enabled, false otherwise
77 */
78 function give_is_gateway_active( $gateway ) {
79 $gateways = give_get_enabled_payment_gateways();
80
81 $ret = array_key_exists( $gateway, $gateways );
82
83 return apply_filters( 'give_is_gateway_active', $ret, $gateway, $gateways );
84 }
85
86 /**
87 * Gets the default payment gateway selected from the Give Settings
88 *
89 * @since 1.0
90 *
91 * @param $form_id int ID of the Give Form
92 *
93 * @return string Gateway ID
94 */
95 function give_get_default_gateway( $form_id ) {
96
97 $enabled_gateways = array_keys( give_get_enabled_payment_gateways() );
98 $default_gateway = give_get_option('default_gateway');
99 $default = ! empty( $default_gateway ) && give_is_gateway_active( $default_gateway ) ? $default_gateway : $enabled_gateways[0];
100 $form_default = give_get_meta( $form_id, '_give_default_gateway', true );
101
102 // Single Form settings varies compared to the Global default settings.
103 if (
104 ! empty( $form_default ) &&
105 $form_id !== null &&
106 $default !== $form_default &&
107 'global' !== $form_default &&
108 give_is_gateway_active( $form_default )
109 ) {
110 $default = $form_default;
111 }
112
113 return apply_filters( 'give_default_gateway', $default );
114 }
115
116 /**
117 * Returns the admin label for the specified gateway
118 *
119 * @since 1.0
120 *
121 * @param string $gateway Name of the gateway to retrieve a label for
122 *
123 * @return string Gateway admin label
124 */
125 function give_get_gateway_admin_label( $gateway ) {
126 $gateways = give_get_payment_gateways();
127 $label = isset( $gateways[ $gateway ] ) ? $gateways[ $gateway ]['admin_label'] : $gateway;
128 $payment = isset( $_GET['id'] ) ? absint( $_GET['id'] ) : false;
129
130 if ( $gateway == 'manual' && $payment ) {
131 if ( give_donation_amount( $payment ) == 0 ) {
132 $label = __( 'Test Donation', 'give' );
133 }
134 }
135
136 return apply_filters( 'give_gateway_admin_label', $label, $gateway );
137 }
138
139 /**
140 * Returns the checkout label for the specified gateway
141 *
142 * @since 1.0
143 *
144 * @param string $gateway Name of the gateway to retrieve a label for
145 *
146 * @return string Checkout label for the gateway
147 */
148 function give_get_gateway_checkout_label( $gateway ) {
149 $gateways = give_get_payment_gateways();
150 $label = isset( $gateways[ $gateway ] ) ? $gateways[ $gateway ]['checkout_label'] : $gateway;
151
152 if ( $gateway == 'manual' ) {
153 $label = __( 'Test Donation', 'give' );
154 }
155
156 return apply_filters( 'give_gateway_checkout_label', $label, $gateway );
157 }
158
159 /**
160 * Returns the options a gateway supports
161 *
162 * @since 1.8
163 *
164 * @param string $gateway ID of the gateway to retrieve a label for
165 *
166 * @return array Options the gateway supports
167 */
168 function give_get_gateway_supports( $gateway ) {
169 $gateways = give_get_enabled_payment_gateways();
170 $supports = isset( $gateways[ $gateway ]['supports'] ) ? $gateways[ $gateway ]['supports'] : array();
171
172 return apply_filters( 'give_gateway_supports', $supports, $gateway );
173 }
174
175 /**
176 * Sends all the payment data to the specified gateway
177 *
178 * @since 1.0
179 *
180 * @param string $gateway Name of the gateway
181 * @param array $payment_data All the payment data to be sent to the gateway
182 *
183 * @return void
184 */
185 function give_send_to_gateway( $gateway, $payment_data ) {
186
187 $payment_data['gateway_nonce'] = wp_create_nonce( 'give-gateway' );
188
189 /**
190 * Fires while loading payment gateway via AJAX.
191 *
192 * The dynamic portion of the hook name '$gateway' must match the ID used when registering the gateway.
193 *
194 * @since 1.0
195 *
196 * @param array $payment_data All the payment data to be sent to the gateway.
197 */
198 do_action( "give_gateway_{$gateway}", $payment_data );
199 }
200
201
202 /**
203 * Determines the currently selected donation payment gateway.
204 *
205 * @access public
206 * @since 1.0
207 *
208 * @param int $form_id The ID of the Form
209 *
210 * @return string $enabled_gateway The slug of the gateway
211 */
212 function give_get_chosen_gateway( $form_id ) {
213
214 $request_form_id = isset( $_REQUEST['give_form_id'] ) ? $_REQUEST['give_form_id'] : 0;
215
216 // Back to check if 'form-id' is present.
217 if ( empty( $request_form_id ) ) {
218 $request_form_id = isset( $_REQUEST['form-id'] ) ? $_REQUEST['form-id'] : 0;
219 }
220
221 $request_payment_mode = isset( $_REQUEST['payment-mode'] ) ? $_REQUEST['payment-mode'] : '';
222 $chosen = false;
223
224 // If both 'payment-mode' and 'form-id' then set for only this form.
225 if ( ! empty( $request_form_id ) && $form_id == $request_form_id ) {
226 $chosen = $request_payment_mode;
227 } elseif ( empty( $request_form_id ) && $request_payment_mode ) {
228 // If no 'form-id' but there is 'payment-mode'.
229 $chosen = $request_payment_mode;
230 }
231
232 // Get the enable gateway based of chosen var.
233 if ( $chosen && give_is_gateway_active( $chosen ) ) {
234 $enabled_gateway = urldecode( $chosen );
235 } else {
236 $enabled_gateway = give_get_default_gateway( $form_id );
237 }
238
239 return apply_filters( 'give_chosen_gateway', $enabled_gateway );
240
241 }
242
243 /**
244 * Record a log entry
245 *
246 * A wrapper function for the Give_Logging class add() method.
247 *
248 * @since 1.0
249 * @since 2.0 Use global logs object
250 *
251 * @param string $title Log title. Default is empty.
252 * @param string $message Log message. Default is empty.
253 * @param int $parent Parent log. Default is 0.
254 * @param string $type Log type. Default is null.
255 *
256 * @return int ID of the new log entry.
257 */
258 function give_record_log( $title = '', $message = '', $parent = 0, $type = null ) {
259 return Give()->logs->add( $title, $message, $parent, $type );
260 }
261
262 /**
263 * Record a gateway error.
264 *
265 * A simple wrapper function for give_record_log().
266 *
267 * @access public
268 * @since 1.0
269 *
270 * @param string $title Title of the log entry (default: empty)
271 * @param string $message Message to store in the log entry (default: empty)
272 * @param int $parent Parent log entry (default: 0)
273 *
274 * @return int ID of the new log entry
275 */
276 function give_record_gateway_error( $title = '', $message = '', $parent = 0 ) {
277 $title = empty( $title ) ? esc_html__( 'Payment Error', 'give' ) : $title;
278
279 return give_record_log( $title, $message, $parent, 'gateway_error' );
280 }
281
282 /**
283 * Counts the number of donations made with a gateway.
284 *
285 * @since 1.0
286 *
287 * @param string $gateway_id
288 * @param array|string $status
289 *
290 * @return int
291 */
292 function give_count_sales_by_gateway( $gateway_id = 'paypal', $status = 'publish' ) {
293
294 $ret = 0;
295 $args = array(
296 'meta_key' => '_give_payment_gateway',
297 'meta_value' => $gateway_id,
298 'nopaging' => true,
299 'post_type' => 'give_payment',
300 'post_status' => $status,
301 'fields' => 'ids',
302 );
303
304 $payments = new WP_Query( $args );
305
306 if ( $payments ) {
307 $ret = $payments->post_count;
308 }
309
310 return $ret;
311 }
312
313
314 /**
315 * Returns a ordered list of all available gateways.
316 *
317 * @since 1.4.5
318 *
319 * @param array $gateways List of payment gateways
320 *
321 * @return array $gateways All the available gateways
322 */
323 function give_get_ordered_payment_gateways( $gateways ) {
324
325 // Get gateways setting.
326 $gateways_setting = isset( $_POST['gateways'] ) ? $_POST['gateways'] : give_get_option( 'gateways' );
327
328 // Return from here if we do not have gateways setting.
329 if ( empty( $gateways_setting ) ) {
330 return $gateways;
331 }
332
333 // Reverse array to order payment gateways.
334 $gateways_setting = array_reverse( $gateways_setting );
335
336 // Reorder gateways array
337 foreach ( $gateways_setting as $gateway_key => $value ) {
338
339 $new_gateway_value = isset( $gateways[ $gateway_key ] ) ? $gateways[ $gateway_key ] : '';
340 unset( $gateways[ $gateway_key ] );
341
342 if ( ! empty( $new_gateway_value ) ) {
343 $gateways = array_merge( array( $gateway_key => $new_gateway_value ), $gateways );
344 }
345 }
346
347 /**
348 * Filter payment gateways order.
349 *
350 * @since 1.7
351 *
352 * @param array $gateways All the available gateways
353 */
354 return apply_filters( 'give_payment_gateways_order', $gateways );
355 }