PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.2.0
GiveWP – Donation Plugin and Fundraising Platform v2.2.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 / actions.php
give / includes Last commit date
admin 7 years ago api 7 years ago deprecated 7 years ago donors 7 years ago emails 7 years ago forms 7 years ago gateways 7 years ago libraries 7 years ago payments 7 years ago actions.php 7 years ago ajax-functions.php 7 years ago class-give-async-process.php 8 years ago class-give-background-updater.php 7 years ago class-give-cache.php 7 years ago class-give-cli-commands.php 8 years ago class-give-comment.php 7 years ago class-give-cron.php 8 years ago class-give-db-donor-meta.php 8 years ago class-give-db-donors.php 7 years ago class-give-db-form-meta.php 8 years ago class-give-db-logs-meta.php 8 years ago class-give-db-logs.php 7 years ago class-give-db-meta.php 7 years ago class-give-db-payment-meta.php 7 years ago class-give-db-sequential-ordering.php 7 years ago class-give-db-sessions.php 7 years ago class-give-db.php 8 years ago class-give-donate-form.php 8 years ago class-give-donor-wall-widget.php 7 years ago class-give-donor.php 7 years ago class-give-email-access.php 8 years ago class-give-html-elements.php 7 years ago class-give-license-handler.php 7 years ago class-give-logging.php 8 years ago class-give-readme-parser.php 8 years ago class-give-roles.php 8 years ago class-give-scripts.php 7 years ago class-give-session.php 7 years ago class-give-stats.php 8 years ago class-give-template-loader.php 8 years ago class-give-tooltips.php 8 years ago class-give-translation.php 8 years ago class-notices.php 7 years ago country-functions.php 8 years ago currency-functions.php 7 years ago error-tracking.php 8 years ago filters.php 7 years ago formatting.php 7 years ago import-functions.php 7 years ago install.php 7 years ago login-register.php 8 years ago misc-functions.php 7 years ago plugin-compatibility.php 8 years ago post-types.php 8 years ago price-functions.php 7 years ago process-donation.php 7 years ago shortcodes.php 7 years ago template-functions.php 8 years ago user-functions.php 7 years ago
actions.php
405 lines
1 <?php
2 /**
3 * Front-end Actions
4 *
5 * @package Give
6 * @subpackage Functions
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 * Hooks Give actions, when present in the $_GET superglobal. Every give_action
19 * present in $_GET is called using WordPress's do_action function. These
20 * functions are called on init.
21 *
22 * @since 1.0
23 *
24 * @return void
25 */
26 function give_get_actions() {
27
28 $get_data = give_clean( $_GET ); // WPCS: input var ok, sanitization ok, CSRF ok.
29
30 $_get_action = ! empty( $get_data['give_action'] ) ? $get_data['give_action'] : null;
31
32 // Add backward compatibility to give-action param ( $_GET ).
33 if ( empty( $_get_action ) ) {
34 $_get_action = ! empty( $get_data['give-action'] ) ? $get_data['give-action'] : null;
35 }
36
37 if ( isset( $_get_action ) ) {
38 /**
39 * Fires in WordPress init or admin init, when give_action is present in $_GET.
40 *
41 * @since 1.0
42 *
43 * @param array $_GET Array of HTTP GET variables.
44 */
45 do_action( "give_{$_get_action}", $get_data );
46 }
47
48 }
49
50 add_action( 'init', 'give_get_actions' );
51
52 /**
53 * Hooks Give actions, when present in the $_POST super global. Every give_action
54 * present in $_POST is called using WordPress's do_action function. These
55 * functions are called on init.
56 *
57 * @since 1.0
58 *
59 * @return void
60 */
61 function give_post_actions() {
62
63 $post_data = give_clean( $_POST ); // WPCS: input var ok, sanitization ok, CSRF ok.
64
65 $_post_action = ! empty( $post_data['give_action'] ) ? $post_data['give_action'] : null;
66
67 // Add backward compatibility to give-action param ( $_POST ).
68 if ( empty( $_post_action ) ) {
69 $_post_action = ! empty( $post_data['give-action'] ) ? $post_data['give-action'] : null;
70 }
71
72 if ( isset( $_post_action ) ) {
73 /**
74 * Fires in WordPress init or admin init, when give_action is present in $_POST.
75 *
76 * @since 1.0
77 *
78 * @param array $_POST Array of HTTP POST variables.
79 */
80 do_action( "give_{$_post_action}", $post_data );
81 }
82
83 }
84
85 add_action( 'init', 'give_post_actions' );
86
87 /**
88 * Connect WordPress user with Donor.
89 *
90 * @param int $user_id User ID.
91 * @param array $user_data User Data.
92 *
93 * @since 1.7
94 *
95 * @return void
96 */
97 function give_connect_donor_to_wpuser( $user_id, $user_data ) {
98 /* @var Give_Donor $donor */
99 $donor = new Give_Donor( $user_data['user_email'] );
100
101 // Validate donor id and check if do nor is already connect to wp user or not.
102 if ( $donor->id && ! $donor->user_id ) {
103
104 // Update donor user_id.
105 if ( $donor->update( array( 'user_id' => $user_id ) ) ) {
106 $donor_note = sprintf( esc_html__( 'WordPress user #%d is connected to #%d', 'give' ), $user_id, $donor->id );
107 $donor->add_note( $donor_note );
108
109 // Update user_id meta in payments.
110 // if( ! empty( $donor->payment_ids ) && ( $donations = explode( ',', $donor->payment_ids ) ) ) {
111 // foreach ( $donations as $donation ) {
112 // give_update_meta( $donation, '_give_payment_user_id', $user_id );
113 // }
114 // }
115 // Do not need to update user_id in payment because we will get user id from donor id now.
116 }
117 }
118 }
119
120 add_action( 'give_insert_user', 'give_connect_donor_to_wpuser', 10, 2 );
121
122
123 /**
124 * Processing after donor batch export complete
125 *
126 * @since 1.8
127 *
128 * @param $data
129 */
130 function give_donor_batch_export_complete( $data ) {
131 // Remove donor ids cache.
132 if (
133 isset( $data['class'] )
134 && 'Give_Batch_Donors_Export' === $data['class']
135 && ! empty( $data['forms'] )
136 && isset( $data['give_export_option']['query_id'] )
137 ) {
138 Give_Cache::delete( Give_Cache::get_key( $data['give_export_option']['query_id'] ) );
139 }
140 }
141
142 add_action( 'give_file_export_complete', 'give_donor_batch_export_complete' );
143
144 /**
145 * Print css for wordpress setting pages.
146 *
147 * @since 1.8.7
148 */
149 function give_admin_quick_css() {
150 /* @var WP_Screen $screen */
151 $screen = get_current_screen();
152
153 if ( ! ( $screen instanceof WP_Screen ) ) {
154 return false;
155 }
156
157 switch ( true ) {
158 case ( 'plugins' === $screen->base || 'plugins-network' === $screen->base ):
159 ?>
160 <style>
161 tr.active.update + tr.give-addon-notice-tr td {
162 box-shadow: none;
163 -webkit-box-shadow: none;
164 }
165
166 tr.active + tr.give-addon-notice-tr td {
167 position: relative;
168 top: -1px;
169 }
170
171 tr.active + tr.give-addon-notice-tr .notice {
172 margin: 5px 20px 15px 40px;
173 }
174
175 tr.give-addon-notice-tr .dashicons {
176 color: #f56e28;
177 }
178
179 tr.give-addon-notice-tr td {
180 border-left: 4px solid #00a0d2;
181 }
182
183 tr.give-addon-notice-tr td {
184 padding: 0 !important;
185 }
186
187 tr.active.update + tr.give-addon-notice-tr .notice {
188 margin: 5px 20px 5px 40px;
189 }
190 </style>
191 <?php
192 }
193 }
194
195 add_action( 'admin_head', 'give_admin_quick_css' );
196
197
198 /**
199 * Set Donation Amount for Multi Level Donation Forms
200 *
201 * @param int $form_id Donation Form ID.
202 *
203 * @since 1.8.9
204 *
205 * @return void
206 */
207 function give_set_donation_levels_max_min_amount( $form_id ) {
208 if (
209 ( 'set' === $_POST['_give_price_option'] ) ||
210 ( in_array( '_give_donation_levels', $_POST ) && count( $_POST['_give_donation_levels'] ) <= 0 ) ||
211 ! ( $donation_levels_amounts = wp_list_pluck( $_POST['_give_donation_levels'], '_give_amount' ) )
212 ) {
213 // Delete old meta.
214 give_delete_meta( $form_id, '_give_levels_minimum_amount' );
215 give_delete_meta( $form_id, '_give_levels_maximum_amount' );
216
217 return;
218 }
219
220 // Sanitize donation level amounts.
221 $donation_levels_amounts = array_map( 'give_maybe_sanitize_amount', $donation_levels_amounts );
222
223 $min_amount = min( $donation_levels_amounts );
224 $max_amount = max( $donation_levels_amounts );
225
226 // Set Minimum and Maximum amount for Multi Level Donation Forms.
227 give_update_meta( $form_id, '_give_levels_minimum_amount', $min_amount ? give_sanitize_amount_for_db( $min_amount ) : 0 );
228 give_update_meta( $form_id, '_give_levels_maximum_amount', $max_amount ? give_sanitize_amount_for_db( $max_amount ) : 0 );
229 }
230
231 add_action( 'give_pre_process_give_forms_meta', 'give_set_donation_levels_max_min_amount', 30 );
232
233
234 /**
235 * Save donor address when donation complete
236 *
237 * @since 2.0
238 *
239 * @param int $payment_id
240 */
241 function _give_save_donor_billing_address( $payment_id ) {
242 $donor_id = absint( give_get_payment_donor_id( $payment_id ));
243
244 // Bailout
245 if ( ! $donor_id ) {
246 return;
247 }
248
249
250 /* @var Give_Donor $donor */
251 $donor = new Give_Donor( $donor_id );
252
253 // Save address.
254 $donor->add_address( 'billing[]', give_get_donation_address( $payment_id ) );
255 }
256
257 add_action( 'give_complete_donation', '_give_save_donor_billing_address', 9999 );
258
259
260 /**
261 * Update form id in payment logs
262 *
263 * @since 2.0
264 *
265 * @param array $args
266 */
267 function give_update_log_form_id( $args ) {
268 $new_form_id = absint( $args[0] );
269 $payment_id = absint( $args[1] );
270 $logs = Give()->logs->get_logs( $payment_id );
271
272 // Bailout.
273 if ( empty( $logs ) ) {
274 return;
275 }
276
277 /* @var object $log */
278 foreach ( $logs as $log ) {
279 Give()->logs->logmeta_db->update_meta( $log->ID, '_give_log_form_id', $new_form_id );
280 }
281
282 // Delete cache.
283 Give()->logs->delete_cache();
284 }
285
286 add_action( 'give_update_log_form_id', 'give_update_log_form_id' );
287
288 /**
289 * Verify addon dependency before addon update
290 *
291 * @since 2.1.4
292 *
293 * @param $error
294 * @param $hook_extra
295 *
296 * @return WP_Error
297 */
298 function __give_verify_addon_dependency_before_update( $error, $hook_extra ) {
299 // Bailout.
300 if ( is_wp_error( $error ) ) {
301 return $error;
302 }
303
304 $plugin_base = strtolower( $hook_extra['plugin'] );
305 $licensed_addon = array_map( 'strtolower', Give_License::get_licensed_addons() );
306
307 // Skip if not a Give addon.
308 if ( ! in_array( $plugin_base, $licensed_addon ) ) {
309 return $error;
310 }
311
312 $plugin_base = strtolower( $plugin_base );
313 $plugin_slug = str_replace( '.php', '', basename( $plugin_base ) );
314
315 /**
316 * Filter the addon readme.txt url
317 *
318 * @since 2.1.4
319 */
320 $url = apply_filters(
321 'give_addon_readme_file_url',
322 "https://givewp.com/downloads/plugins/{$plugin_slug}/readme.txt",
323 $plugin_slug
324 );
325
326 $parser = new Give_Readme_Parser( $url );
327 $give_min_version = $parser->requires_at_least();
328
329
330 if ( version_compare( GIVE_VERSION, $give_min_version, '<' ) ) {
331 return new WP_Error(
332 'Give_Addon_Update_Error',
333 sprintf(
334 __( 'Give version %s is required to update this add-on.', 'give' ),
335 $give_min_version
336 )
337 );
338 }
339
340 return $error;
341 }
342
343 add_filter( 'upgrader_pre_install', '__give_verify_addon_dependency_before_update', 10, 2 );
344
345 /**
346 * Function to add suppress_filters param if WPML add-on is activated.
347 *
348 * @since 2.1.4
349 *
350 * @param array WP query argument for Total Goal.
351 *
352 * @return array WP query argument for Total Goal.
353 */
354 function __give_wpml_total_goal_shortcode_agrs( $args ) {
355 $args['suppress_filters'] = true;
356
357 return $args;
358 }
359
360 /**
361 * Function to remove WPML post where filter in goal total amount shortcode.
362 *
363 * @since 2.1.4
364 * @global SitePress $sitepress
365 */
366 function __give_remove_wpml_parse_query_filter() {
367 global $sitepress;
368 remove_action('parse_query', array($sitepress, 'parse_query'));
369 }
370
371
372 /**
373 * Function to add WPML post where filter in goal total amount shortcode.
374 *
375 * @since 2.1.4
376 * @global SitePress $sitepress
377 */
378 function __give_add_wpml_parse_query_filter() {
379 global $sitepress;
380 add_action('parse_query', array($sitepress, 'parse_query'));
381 }
382
383 /**
384 * Action all the hook that add support for WPML.
385 *
386 * @since 2.1.4
387 */
388 function give_add_support_for_wpml() {
389 if ( ! function_exists( 'is_plugin_active' ) ) {
390 include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
391 }
392
393
394 if ( is_plugin_active( 'sitepress-multilingual-cms/sitepress.php' ) ) {
395
396 add_filter( 'give_totals_goal_shortcode_query_args', '__give_wpml_total_goal_shortcode_agrs' );
397
398 // @see https://wpml.org/forums/topic/problem-with-query-filter-in-get_posts-function/#post-271309
399 add_action( 'give_totals_goal_shortcode_before_render', '__give_remove_wpml_parse_query_filter', 99 );
400 add_action( 'give_totals_goal_shortcode_after_render', '__give_add_wpml_parse_query_filter', 99 );
401 }
402 }
403
404 add_action( 'give_init', 'give_add_support_for_wpml', 1000 );
405