PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.18.0
GiveWP – Donation Plugin and Fundraising Platform v2.18.0
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
paypal 4 years ago stripe 4 years ago actions.php 6 years ago functions.php 4 years ago manual.php 6 years ago offline-donations.php 4 years ago
functions.php
361 lines
1 <?php
2 /**
3 * Gateway Functions
4 *
5 * @package Give
6 * @subpackage Gateways
7 * @copyright Copyright (c) 2016, GiveWP
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 = apply_filters(
26 'give_payment_gateways',
27 Give_Cache_Setting::get_option( 'gateways', [] )
28 );
29 $gatewayLabels = give_get_option( 'gateways_label', [] );
30
31 // Replace payment gateway checkout label with admin defined checkout label.
32 if ( $gatewayLabels ) {
33 foreach ( $gatewayLabels as $gatewayId => $checkoutLabel ) {
34 if ( $checkoutLabel && array_key_exists( $gatewayId, $gateways ) ) {
35 $gateways[ $gatewayId ]['checkout_label'] = $checkoutLabel;
36 }
37 }
38 }
39
40 return $gateways;
41 }
42
43 /**
44 * Returns a list of all enabled gateways.
45 *
46 * @since 1.0
47 *
48 * @param int $form_id Form ID
49 *
50 * @return array $gateway_list All the available gateways
51 */
52 function give_get_enabled_payment_gateways( $form_id = 0 ) {
53
54 $gateways = give_get_payment_gateways();
55
56 $enabled = isset( $_POST['gateways'] ) ? $_POST['gateways'] : give_get_option( 'gateways' );
57
58 $gateway_list = [];
59
60 foreach ( $gateways as $key => $gateway ) {
61 if ( isset( $enabled[ $key ] ) && $enabled[ $key ] == 1 ) {
62 $gateway_list[ $key ] = $gateway;
63 }
64 }
65
66 // Set order of payment gateway in list.
67 $gateway_list = give_get_ordered_payment_gateways( $gateway_list );
68
69 return apply_filters( 'give_enabled_payment_gateways', $gateway_list, $form_id );
70 }
71
72 /**
73 * Checks whether a specified gateway is activated.
74 *
75 * @since 1.0
76 *
77 * @param string $gateway Name of the gateway to check for
78 *
79 * @return boolean true if enabled, false otherwise
80 */
81 function give_is_gateway_active( $gateway ) {
82 $gateways = give_get_enabled_payment_gateways();
83
84 $ret = array_key_exists( $gateway, $gateways );
85
86 return apply_filters( 'give_is_gateway_active', $ret, $gateway, $gateways );
87 }
88
89 /**
90 * Gets the default payment gateway selected from the Give Settings
91 *
92 * @since 1.0
93 *
94 * @param $form_id int ID of the Give Form
95 *
96 * @return string Gateway ID
97 */
98 function give_get_default_gateway( $form_id ) {
99
100 $enabled_gateways = array_keys( give_get_enabled_payment_gateways() );
101 $default_gateway = give_get_option( 'default_gateway' );
102 $default = ! empty( $default_gateway ) && give_is_gateway_active( $default_gateway ) ? $default_gateway : $enabled_gateways[0];
103 $form_default = give_get_meta( $form_id, '_give_default_gateway', true );
104
105 // Single Form settings varies compared to the Global default settings.
106 if (
107 ! empty( $form_default ) &&
108 $form_id !== null &&
109 $default !== $form_default &&
110 'global' !== $form_default &&
111 give_is_gateway_active( $form_default )
112 ) {
113 $default = $form_default;
114 }
115
116 return apply_filters( 'give_default_gateway', $default );
117 }
118
119 /**
120 * Returns the admin label for the specified gateway
121 *
122 * @since 1.0
123 *
124 * @param string $gateway Name of the gateway to retrieve a label for
125 *
126 * @return string Gateway admin label
127 */
128 function give_get_gateway_admin_label( $gateway ) {
129 $gateways = give_get_payment_gateways();
130 $label = isset( $gateways[ $gateway ] ) ? $gateways[ $gateway ]['admin_label'] : $gateway;
131
132 if ( $gateway == 'manual' ) {
133 $label = __( 'Test Donation', 'give' );
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 * @since 2.15.0 Code removed. Here no need to forcefully change manual payment gateway checkout label to "Test Donation".
144 *
145 * @param string $gateway Name of the gateway to retrieve a label for
146 *
147 * @return string Checkout label for the gateway
148 */
149 function give_get_gateway_checkout_label( $gateway ) {
150 $gateways = give_get_payment_gateways();
151 $label = isset( $gateways[ $gateway ] ) ? $gateways[ $gateway ]['checkout_label'] : $gateway;
152
153 return apply_filters( 'give_gateway_checkout_label', $label, $gateway );
154 }
155
156 /**
157 * Returns the options a gateway supports
158 *
159 * @since 1.8
160 *
161 * @param string $gateway ID of the gateway to retrieve a label for
162 *
163 * @return array Options the gateway supports
164 */
165 function give_get_gateway_supports( $gateway ) {
166 $gateways = give_get_enabled_payment_gateways();
167 $supports = isset( $gateways[ $gateway ]['supports'] ) ? $gateways[ $gateway ]['supports'] : [];
168
169 return apply_filters( 'give_gateway_supports', $supports, $gateway );
170 }
171
172 /**
173 * Sends all the payment data to the specified gateway
174 *
175 * @since 1.0
176 *
177 * @param string $gateway Name of the gateway
178 * @param array $payment_data All the payment data to be sent to the gateway
179 *
180 * @return void
181 */
182 function give_send_to_gateway( $gateway, $payment_data ) {
183
184 $payment_data['gateway_nonce'] = wp_create_nonce( 'give-gateway' );
185
186 /**
187 * Fires while loading payment gateway via AJAX.
188 *
189 * The dynamic portion of the hook name '$gateway' must match the ID used when registering the gateway.
190 *
191 * @since 1.0
192 *
193 * @param array $payment_data All the payment data to be sent to the gateway.
194 */
195 do_action( "give_gateway_{$gateway}", $payment_data );
196 }
197
198
199 /**
200 * Determines the currently selected donation payment gateway.
201 *
202 * @access public
203 * @since 1.0
204 *
205 * @param int $form_id The ID of the Form
206 *
207 * @return string $enabled_gateway The slug of the gateway
208 */
209 function give_get_chosen_gateway( $form_id ) {
210
211 $request_form_id = isset( $_REQUEST['give_form_id'] ) ? $_REQUEST['give_form_id'] : 0;
212
213 // Back to check if 'form-id' is present.
214 if ( empty( $request_form_id ) ) {
215 $request_form_id = isset( $_REQUEST['form-id'] ) ? $_REQUEST['form-id'] : 0;
216 }
217
218 $request_payment_mode = isset( $_REQUEST['payment-mode'] ) ? $_REQUEST['payment-mode'] : '';
219 $chosen = false;
220
221 // If both 'payment-mode' and 'form-id' then set for only this form.
222 if ( ! empty( $request_form_id ) && $form_id == $request_form_id ) {
223 $chosen = $request_payment_mode;
224 } elseif ( empty( $request_form_id ) && $request_payment_mode ) {
225 // If no 'form-id' but there is 'payment-mode'.
226 $chosen = $request_payment_mode;
227 }
228
229 // Get the enable gateway based of chosen var.
230 if ( $chosen && give_is_gateway_active( $chosen ) ) {
231 $enabled_gateway = urldecode( $chosen );
232 } else {
233 $enabled_gateway = give_get_default_gateway( $form_id );
234 }
235
236 return apply_filters( 'give_chosen_gateway', $enabled_gateway );
237
238 }
239
240 /**
241 * Record a log entry
242 *
243 * A wrapper function for the Give_Logging class add() method.
244 *
245 * @deprecated 2.10.0
246 * @use Log::LOG_TYPE( $message );
247 * @see Log
248 *
249 * @since 1.0
250 * @since 2.0 Use global logs object
251 *
252 * @param string $title Log title. Default is empty.
253 * @param string $message Log message. Default is empty.
254 * @param int $parent Parent log. Default is 0.
255 * @param string $type Log type. Default is null.
256 *
257 * @return int ID of the new log entry.
258 */
259 function give_record_log( $title = '', $message = '', $parent = 0, $type = null ) {
260 return Give()->logs->add( $title, $message, $parent, $type );
261 }
262
263 /**
264 * Record a gateway error.
265 *
266 * A simple wrapper function for give_record_log().
267 *
268 * @deprecated 2.10.0
269 * @use Log::LOG_TYPE( $message );
270 * @see Log
271 *
272 * @access public
273 * @since 1.0
274 *
275 * @param string $title Title of the log entry (default: empty)
276 * @param string $message Message to store in the log entry (default: empty)
277 * @param int $parent Parent log entry (default: 0)
278 *
279 * @return int ID of the new log entry
280 */
281 function give_record_gateway_error( $title = '', $message = '', $parent = 0 ) {
282 $title = empty( $title ) ? esc_html__( 'Payment Error', 'give' ) : $title;
283
284 return give_record_log( $title, $message, $parent, 'gateway_error' );
285 }
286
287 /**
288 * Counts the number of donations made with a gateway.
289 *
290 * @since 1.0
291 *
292 * @param string $gateway_id
293 * @param array|string $status
294 *
295 * @return int
296 */
297 function give_count_sales_by_gateway( $gateway_id = 'paypal', $status = 'publish' ) {
298
299 $ret = 0;
300 $args = [
301 'meta_key' => '_give_payment_gateway',
302 'meta_value' => $gateway_id,
303 'nopaging' => true,
304 'post_type' => 'give_payment',
305 'post_status' => $status,
306 'fields' => 'ids',
307 ];
308
309 $payments = new WP_Query( $args );
310
311 if ( $payments ) {
312 $ret = $payments->post_count;
313 }
314
315 return $ret;
316 }
317
318
319 /**
320 * Returns a ordered list of all available gateways.
321 *
322 * @since 1.4.5
323 *
324 * @param array $gateways List of payment gateways
325 *
326 * @return array $gateways All the available gateways
327 */
328 function give_get_ordered_payment_gateways( $gateways ) {
329
330 // Get gateways setting.
331 $gateways_setting = isset( $_POST['gateways'] ) ? $_POST['gateways'] : give_get_option( 'gateways' );
332
333 // Return from here if we do not have gateways setting.
334 if ( empty( $gateways_setting ) ) {
335 return $gateways;
336 }
337
338 // Reverse array to order payment gateways.
339 $gateways_setting = array_reverse( $gateways_setting );
340
341 // Reorder gateways array
342 foreach ( $gateways_setting as $gateway_key => $value ) {
343
344 $new_gateway_value = isset( $gateways[ $gateway_key ] ) ? $gateways[ $gateway_key ] : '';
345 unset( $gateways[ $gateway_key ] );
346
347 if ( ! empty( $new_gateway_value ) ) {
348 $gateways = array_merge( [ $gateway_key => $new_gateway_value ], $gateways );
349 }
350 }
351
352 /**
353 * Filter payment gateways order.
354 *
355 * @since 1.7
356 *
357 * @param array $gateways All the available gateways
358 */
359 return apply_filters( 'give_payment_gateways_order', $gateways );
360 }
361