PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.2.2
GiveWP – Donation Plugin and Fundraising Platform v2.2.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 7 years ago functions.php 8 years ago manual.php 8 years ago offline-donations.php 7 years ago paypal-standard.php 7 years ago
functions.php
352 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
129 if ( $gateway == 'manual' ) {
130 $label = __( 'Test Donation', 'give' );
131 }
132
133 return apply_filters( 'give_gateway_admin_label', $label, $gateway );
134 }
135
136 /**
137 * Returns the checkout label for the specified gateway
138 *
139 * @since 1.0
140 *
141 * @param string $gateway Name of the gateway to retrieve a label for
142 *
143 * @return string Checkout label for the gateway
144 */
145 function give_get_gateway_checkout_label( $gateway ) {
146 $gateways = give_get_payment_gateways();
147 $label = isset( $gateways[ $gateway ] ) ? $gateways[ $gateway ]['checkout_label'] : $gateway;
148
149 if ( $gateway == 'manual' ) {
150 $label = __( 'Test Donation', 'give' );
151 }
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'] : array();
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 * @since 1.0
246 * @since 2.0 Use global logs object
247 *
248 * @param string $title Log title. Default is empty.
249 * @param string $message Log message. Default is empty.
250 * @param int $parent Parent log. Default is 0.
251 * @param string $type Log type. Default is null.
252 *
253 * @return int ID of the new log entry.
254 */
255 function give_record_log( $title = '', $message = '', $parent = 0, $type = null ) {
256 return Give()->logs->add( $title, $message, $parent, $type );
257 }
258
259 /**
260 * Record a gateway error.
261 *
262 * A simple wrapper function for give_record_log().
263 *
264 * @access public
265 * @since 1.0
266 *
267 * @param string $title Title of the log entry (default: empty)
268 * @param string $message Message to store in the log entry (default: empty)
269 * @param int $parent Parent log entry (default: 0)
270 *
271 * @return int ID of the new log entry
272 */
273 function give_record_gateway_error( $title = '', $message = '', $parent = 0 ) {
274 $title = empty( $title ) ? esc_html__( 'Payment Error', 'give' ) : $title;
275
276 return give_record_log( $title, $message, $parent, 'gateway_error' );
277 }
278
279 /**
280 * Counts the number of donations made with a gateway.
281 *
282 * @since 1.0
283 *
284 * @param string $gateway_id
285 * @param array|string $status
286 *
287 * @return int
288 */
289 function give_count_sales_by_gateway( $gateway_id = 'paypal', $status = 'publish' ) {
290
291 $ret = 0;
292 $args = array(
293 'meta_key' => '_give_payment_gateway',
294 'meta_value' => $gateway_id,
295 'nopaging' => true,
296 'post_type' => 'give_payment',
297 'post_status' => $status,
298 'fields' => 'ids',
299 );
300
301 $payments = new WP_Query( $args );
302
303 if ( $payments ) {
304 $ret = $payments->post_count;
305 }
306
307 return $ret;
308 }
309
310
311 /**
312 * Returns a ordered list of all available gateways.
313 *
314 * @since 1.4.5
315 *
316 * @param array $gateways List of payment gateways
317 *
318 * @return array $gateways All the available gateways
319 */
320 function give_get_ordered_payment_gateways( $gateways ) {
321
322 // Get gateways setting.
323 $gateways_setting = isset( $_POST['gateways'] ) ? $_POST['gateways'] : give_get_option( 'gateways' );
324
325 // Return from here if we do not have gateways setting.
326 if ( empty( $gateways_setting ) ) {
327 return $gateways;
328 }
329
330 // Reverse array to order payment gateways.
331 $gateways_setting = array_reverse( $gateways_setting );
332
333 // Reorder gateways array
334 foreach ( $gateways_setting as $gateway_key => $value ) {
335
336 $new_gateway_value = isset( $gateways[ $gateway_key ] ) ? $gateways[ $gateway_key ] : '';
337 unset( $gateways[ $gateway_key ] );
338
339 if ( ! empty( $new_gateway_value ) ) {
340 $gateways = array_merge( array( $gateway_key => $new_gateway_value ), $gateways );
341 }
342 }
343
344 /**
345 * Filter payment gateways order.
346 *
347 * @since 1.7
348 *
349 * @param array $gateways All the available gateways
350 */
351 return apply_filters( 'give_payment_gateways_order', $gateways );
352 }