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