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