Test Failed
Push — issues/2531 ( 9a539e...9ee8d9 )
by Ravinder
05:01
created

actions.php ➔ give_update_log_form_id()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 18
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 9
nc 3
nop 1
dl 0
loc 18
rs 9.4285
c 0
b 0
f 0
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 View Code Duplication
function give_get_actions() {
0 ignored issues
show
Duplication introduced by
This function seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
27
28
	$_get_action = ! empty( $_GET['give_action'] ) ? $_GET['give_action'] : null;
0 ignored issues
show
introduced by
Detected access of super global var $_GET, probably need manual inspection.
Loading history...
introduced by
Detected usage of a non-sanitized input variable: $_GET
Loading history...
29
30
	// Add backward compatibility to give-action param ( $_GET )
31
	if ( empty( $_get_action ) ) {
32
		$_get_action = ! empty( $_GET['give-action'] ) ? $_GET['give-action'] : null;
0 ignored issues
show
introduced by
Detected access of super global var $_GET, probably need manual inspection.
Loading history...
introduced by
Detected usage of a non-sanitized input variable: $_GET
Loading history...
33
	}
34
35
	if ( isset( $_get_action ) ) {
36
		/**
37
		 * Fires in WordPress init or admin init, when give_action is present in $_GET.
38
		 *
39
		 * @since 1.0
40
		 *
41
		 * @param array $_GET Array of HTTP GET variables.
42
		 */
43
		do_action( "give_{$_get_action}", $_GET );
0 ignored issues
show
introduced by
Detected access of super global var $_GET, probably need manual inspection.
Loading history...
44
	}
45
46
}
47
48
add_action( 'init', 'give_get_actions' );
49
50
/**
51
 * Hooks Give actions, when present in the $_POST super global. Every give_action
52
 * present in $_POST is called using WordPress's do_action function. These
53
 * functions are called on init.
54
 *
55
 * @since  1.0
56
 *
57
 * @return void
58
 */
59 View Code Duplication
function give_post_actions() {
0 ignored issues
show
Duplication introduced by
This function seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
60
61
	$_post_action = ! empty( $_POST['give_action'] ) ? $_POST['give_action'] : null;
0 ignored issues
show
introduced by
Detected access of super global var $_POST, probably need manual inspection.
Loading history...
introduced by
Detected usage of a non-sanitized input variable: $_POST
Loading history...
62
63
	// Add backward compatibility to give-action param ( $_POST ).
64
	if ( empty( $_post_action ) ) {
65
		$_post_action = ! empty( $_POST['give-action'] ) ? $_POST['give-action'] : null;
0 ignored issues
show
introduced by
Detected access of super global var $_POST, probably need manual inspection.
Loading history...
introduced by
Detected usage of a non-sanitized input variable: $_POST
Loading history...
66
	}
67
68
	if ( isset( $_post_action ) ) {
69
		/**
70
		 * Fires in WordPress init or admin init, when give_action is present in $_POST.
71
		 *
72
		 * @since 1.0
73
		 *
74
		 * @param array $_POST Array of HTTP POST variables.
75
		 */
76
		do_action( "give_{$_post_action}", $_POST );
0 ignored issues
show
introduced by
Detected access of super global var $_POST, probably need manual inspection.
Loading history...
77
	}
78
79
}
80
81
add_action( 'init', 'give_post_actions' );
82
83
/**
84
 * Connect WordPress user with Donor.
85
 *
86
 * @param  int   $user_id   User ID.
87
 * @param  array $user_data User Data.
88
 *
89
 * @since  1.7
90
 *
91
 * @return void
92
 */
93
function give_connect_donor_to_wpuser( $user_id, $user_data ) {
94
	/* @var Give_Donor $donor */
95
	$donor = new Give_Donor( $user_data['user_email'] );
96
97
	// Validate donor id and check if do nor is already connect to wp user or not.
98
	if ( $donor->id && ! $donor->user_id ) {
99
100
		// Update donor user_id.
101
		if ( $donor->update( array( 'user_id' => $user_id ) ) ) {
102
			$donor_note = sprintf( esc_html__( 'WordPress user #%d is connected to #%d', 'give' ), $user_id, $donor->id );
103
			$donor->add_note( $donor_note );
104
105
			// Update user_id meta in payments.
106
			// if( ! empty( $donor->payment_ids ) && ( $donations = explode( ',', $donor->payment_ids ) ) ) {
107
			// 	foreach ( $donations as $donation  ) {
108
			// 		give_update_meta( $donation, '_give_payment_user_id', $user_id );
109
			// 	}
110
			// }
111
			// Do not need to update user_id in payment because we will get user id from donor id now.
112
		}
113
	}
114
}
115
116
add_action( 'give_insert_user', 'give_connect_donor_to_wpuser', 10, 2 );
117
118
119
/**
120
 * Setup site home url check
121
 *
122
 * Note: if location of site changes then run cron to validate licenses
123
 *
124
 * @since   1.7
125
 * @updated 1.8.15 - Resolved issue with endless looping because of URL mismatches.
126
 * @return void
127
 */
128
function give_validate_license_when_site_migrated() {
129
	// Store current site address if not already stored.
130
	$home_url_parts              = parse_url( home_url() );
131
	$home_url                    = isset( $home_url_parts['host'] ) ? $home_url_parts['host'] : false;
132
	$home_url                    .= isset( $home_url_parts['path'] ) ? $home_url_parts['path'] : '';
133
	$site_address_before_migrate = get_option( 'give_site_address_before_migrate' );
134
135
	// Need $home_url to proceed.
136
	if ( ! $home_url ) {
137
		return;
138
	}
139
140
	// Save site address.
141
	if ( ! $site_address_before_migrate ) {
142
		// Update site address.
143
		update_option( 'give_site_address_before_migrate', $home_url );
144
145
		return;
146
	}
147
148
	// Backwards compat. for before when we were storing URL scheme.
149
	if ( strpos( $site_address_before_migrate, 'http' ) ) {
150
		$site_address_before_migrate = parse_url( $site_address_before_migrate );
151
		$site_address_before_migrate = isset( $site_address_before_migrate['host'] ) ? $site_address_before_migrate['host'] : false;
152
153
		// Add path for multisite installs.
154
		$site_address_before_migrate .= isset( $site_address_before_migrate['path'] ) ? $site_address_before_migrate['path'] : '';
155
	}
156
157
	// If the two URLs don't match run CRON.
158
	if ( $home_url !== $site_address_before_migrate ) {
159
		// Immediately run cron.
160
		wp_schedule_single_event( time(), 'give_validate_license_when_site_migrated' );
161
162
		// Update site address.
163
		update_option( 'give_site_address_before_migrate', $home_url );
164
	}
165
166
}
167
168
add_action( 'admin_init', 'give_validate_license_when_site_migrated' );
169
170
171
/**
172
 * Processing after donor batch export complete
173
 *
174
 * @since 1.8
175
 *
176
 * @param $data
177
 */
178
function give_donor_batch_export_complete( $data ) {
179
	// Remove donor ids cache.
180
	if (
181
		isset( $data['class'] )
182
		&& 'Give_Batch_Donors_Export' === $data['class']
183
		&& ! empty( $data['forms'] )
184
		&& isset( $data['give_export_option']['query_id'] )
185
	) {
186
		Give_Cache::delete( Give_Cache::get_key( $data['give_export_option']['query_id'] ) );
187
	}
188
}
189
190
add_action( 'give_file_export_complete', 'give_donor_batch_export_complete' );
191
192
/**
193
 * Print css for wordpress setting pages.
194
 *
195
 * @since 1.8.7
196
 */
197
function give_admin_quick_css() {
198
	/* @var WP_Screen $screen */
199
	$screen = get_current_screen();
200
201
	if ( ! ( $screen instanceof WP_Screen ) ) {
0 ignored issues
show
Bug introduced by
The class WP_Screen does not exist. Did you forget a USE statement, or did you not list all dependencies?

This error could be the result of:

1. Missing dependencies

PHP Analyzer uses your composer.json file (if available) to determine the dependencies of your project and to determine all the available classes and functions. It expects the composer.json to be in the root folder of your repository.

Are you sure this class is defined by one of your dependencies, or did you maybe not list a dependency in either the require or require-dev section?

2. Missing use statement

PHP does not complain about undefined classes in ìnstanceof checks. For example, the following PHP code will work perfectly fine:

if ($x instanceof DoesNotExist) {
    // Do something.
}

If you have not tested against this specific condition, such errors might go unnoticed.

Loading history...
202
		return false;
203
	}
204
205
	switch ( true ) {
206
		case ( 'plugins' === $screen->base || 'plugins-network' === $screen->base ):
207
			?>
208
			<style>
209
				tr.active.update + tr.give-addon-notice-tr td {
210
					box-shadow: none;
211
					-webkit-box-shadow: none;
212
				}
213
214
				tr.active + tr.give-addon-notice-tr td {
215
					position: relative;
216
					top: -1px;
217
				}
218
219
				tr.active + tr.give-addon-notice-tr .notice {
220
					margin: 5px 20px 15px 40px;
221
				}
222
223
				tr.give-addon-notice-tr .dashicons {
224
					color: #f56e28;
225
				}
226
227
				tr.give-addon-notice-tr td {
228
					border-left: 4px solid #00a0d2;
229
				}
230
231
				tr.give-addon-notice-tr td {
232
					padding: 0 !important;
233
				}
234
235
				tr.active.update + tr.give-addon-notice-tr .notice {
236
					margin: 5px 20px 5px 40px;
237
				}
238
			</style>
239
			<?php
240
	}
241
}
242
243
add_action( 'admin_head', 'give_admin_quick_css' );
244
245
246
/**
247
 * Set Donation Amount for Multi Level Donation Forms
248
 *
249
 * @param int $form_id Donation Form ID.
250
 *
251
 * @since 1.8.9
252
 *
253
 * @return void
254
 */
255
function give_set_donation_levels_max_min_amount( $form_id ) {
256
	if (
257
		( 'set' === $_POST['_give_price_option'] ) ||
258
		( in_array( '_give_donation_levels', $_POST ) && count( $_POST['_give_donation_levels'] ) <= 0 ) ||
259
		! ( $donation_levels_amounts = wp_list_pluck( $_POST['_give_donation_levels'], '_give_amount' ) )
0 ignored issues
show
introduced by
Detected access of super global var $_POST, probably need manual inspection.
Loading history...
introduced by
Detected usage of a non-validated input variable: $_POST
Loading history...
introduced by
Detected usage of a non-sanitized input variable: $_POST
Loading history...
260
	) {
261
		// Delete old meta.
262
		give_delete_meta( $form_id, '_give_levels_minimum_amount' );
263
		give_delete_meta( $form_id, '_give_levels_maximum_amount' );
264
265
		return;
266
	}
267
268
	// Sanitize donation level amounts.
269
	$donation_levels_amounts = array_map( 'give_maybe_sanitize_amount', $donation_levels_amounts );
270
271
	$min_amount = min( $donation_levels_amounts );
272
	$max_amount = max( $donation_levels_amounts );
273
274
	// Set Minimum and Maximum amount for Multi Level Donation Forms.
275
	give_update_meta( $form_id, '_give_levels_minimum_amount', $min_amount ? give_sanitize_amount_for_db( $min_amount ) : 0 );
276
	give_update_meta( $form_id, '_give_levels_maximum_amount', $max_amount ? give_sanitize_amount_for_db( $max_amount ) : 0 );
277
}
278
279
add_action( 'give_pre_process_give_forms_meta', 'give_set_donation_levels_max_min_amount', 30 );
280
281
282
/**
283
 * Save donor address when donation complete
284
 *
285
 * @since 2.0
286
 *
287
 * @param int $payment_id
288
 */
289
function _give_save_donor_billing_address( $payment_id ) {
290
	/* @var Give_Payment $donation */
291
	$donation = new Give_Payment( $payment_id );
292
293
	// Bailout
294
	if ( ! $donation->customer_id ) {
295
		return;
296
	}
297
0 ignored issues
show
Coding Style introduced by
Functions must not contain multiple empty lines in a row; found 2 empty lines
Loading history...
298
299
	/* @var Give_Donor $donor */
300
	$donor = new Give_Donor( $donation->customer_id );
0 ignored issues
show
Documentation introduced by
$donation->customer_id is of type integer, but the function expects a boolean.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
301
302
	// Save address.
303
	$donor->add_address( 'billing[]', $donation->address );
304
}
305
306
add_action( 'give_complete_donation', '_give_save_donor_billing_address', 9999 );
307
308
309
/**
310
 * Update form id in payment logs
311
 *
312
 * @since 2.0
313
 *
314
 * @param array $args
315
 */
316
function give_update_log_form_id( $args ) {
317
	$new_form_id = absint( $args[0] );
318
	$payment_id  = absint( $args[1] );
319
	$logs        = Give()->logs->get_logs( $payment_id );
320
321
	// Bailout.
322
	if ( empty( $logs ) ) {
323
		return;
324
	}
325
326
	/* @var object $log */
327
	foreach ( $logs as $log ) {
328
		Give()->logs->logmeta_db->update_meta( $log->ID, '_give_log_form_id', $new_form_id );
329
	}
330
331
	// Delete cache.
332
	Give()->logs->delete_cache();
333
}
334
335
add_action( 'give_update_log_form_id', 'give_update_log_form_id' );
336
337
338