Issues (4296)

Security Analysis    not enabled

This project does not seem to handle request data directly as such no vulnerable execution paths were found.

  Cross-Site Scripting
Cross-Site Scripting enables an attacker to inject code into the response of a web-request that is viewed by other users. It can for example be used to bypass access controls, or even to take over other users' accounts.
  File Exposure
File Exposure allows an attacker to gain access to local files that he should not be able to access. These files can for example include database credentials, or other configuration files.
  File Manipulation
File Manipulation enables an attacker to write custom data to files. This potentially leads to injection of arbitrary code on the server.
  Object Injection
Object Injection enables an attacker to inject an object into PHP code, and can lead to arbitrary code execution, file exposure, or file manipulation attacks.
  Code Injection
Code Injection enables an attacker to execute arbitrary code on the server.
  Response Splitting
Response Splitting can be used to send arbitrary responses.
  File Inclusion
File Inclusion enables an attacker to inject custom files into PHP's file loading mechanism, either explicitly passed to include, or for example via PHP's auto-loading mechanism.
  Command Injection
Command Injection enables an attacker to inject a shell command that is execute with the privileges of the web-server. This can be used to expose sensitive data, or gain access of your server.
  SQL Injection
SQL Injection enables an attacker to execute arbitrary SQL code on your database server gaining access to user data, or manipulating user data.
  XPath Injection
XPath Injection enables an attacker to modify the parts of XML document that are read. If that XML document is for example used for authentication, this can lead to further vulnerabilities similar to SQL Injection.
  LDAP Injection
LDAP Injection enables an attacker to inject LDAP statements potentially granting permission to run unauthorized queries, or modify content inside the LDAP tree.
  Header Injection
  Other Vulnerability
This category comprises other attack vectors such as manipulating the PHP runtime, loading custom extensions, freezing the runtime, or similar.
  Regex Injection
Regex Injection enables an attacker to execute arbitrary code in your PHP process.
  XML Injection
XML Injection enables an attacker to read files on your local filesystem including configuration files, or can be abused to freeze your web-server process.
  Variable Injection
Variable Injection enables an attacker to overwrite program variables with custom data, and can lead to further vulnerabilities.
Unfortunately, the security analysis is currently not available for your project. If you are a non-commercial open-source project, please contact support to gain access.

includes/gateways/offline-donations.php (26 issues)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
/**
3
 * Offline Donations Gateway
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
/**
13
 * Register the payment gateway
14
 *
15
 * @since  1.0
16
 *
17
 * @param array $gateways
18
 *
19
 * @return array
20
 */
21
function give_offline_register_gateway( $gateways ) {
22
	// Format: ID => Name
23 44
	$gateways['offline'] = array(
24 44
		'admin_label'    => esc_attr__( 'Offline Donation', 'give' ),
25 44
		'checkout_label' => esc_attr__( 'Offline Donation', 'give' ),
26 44
	);
27
28 44
	return $gateways;
29
}
30
31
add_filter( 'give_payment_gateways', 'give_offline_register_gateway', 1 );
32
33
/**
34
 * Add our payment instructions to the checkout
35
 *
36
 * @since  1.0
37
 *
38
 * @param  int $form_id Give form id.
39
 *
40
 * @return void
41
 */
42
function give_offline_payment_cc_form( $form_id ) {
43
	// Get offline payment instruction.
44
	$offline_instructions = give_get_offline_payment_instruction( $form_id, true );
45
46
	ob_start();
47
48
	/**
49
	 * Fires before the offline info fields.
50
	 *
51
	 * @since 1.0
52
	 *
53
	 * @param int $form_id Give form id.
54
	 */
55
	do_action( 'give_before_offline_info_fields', $form_id );
56
	?>
57
    <fieldset id="give_offline_payment_info">
58
		<?php echo stripslashes( $offline_instructions ); ?>
0 ignored issues
show
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'stripslashes'
Loading history...
59
    </fieldset>
60
	<?php
61
	/**
62
	 * Fires after the offline info fields.
63
	 *
64
	 * @since 1.0
65
	 *
66
	 * @param int $form_id Give form id.
67
	 */
68
	do_action( 'give_after_offline_info_fields', $form_id );
69
70
	echo ob_get_clean();
0 ignored issues
show
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'ob_get_clean'
Loading history...
71
}
72
73
add_action( 'give_offline_cc_form', 'give_offline_payment_cc_form' );
74
75
/**
76
 * Give Offline Billing Field
77
 *
78
 * @param $form_id
79
 */
80
function give_offline_billing_fields( $form_id ) {
81
	//Enable Default CC fields (billing info)
82
	$post_offline_cc_fields        = give_get_meta( $form_id, '_give_offline_donation_enable_billing_fields_single', true );
83
	$post_offline_customize_option = give_get_meta( $form_id, '_give_customize_offline_donations', true );
84
85
	$global_offline_cc_fields = give_get_option( 'give_offline_donation_enable_billing_fields' );
86
87
	//Output CC Address fields if global option is on and user hasn't elected to customize this form's offline donation options
88
	if (
89
		( give_is_setting_enabled( $post_offline_customize_option, 'global' ) && give_is_setting_enabled( $global_offline_cc_fields ) )
90
		|| ( give_is_setting_enabled( $post_offline_customize_option, 'enabled' ) && give_is_setting_enabled( $post_offline_cc_fields ) )
91
	) {
92
		give_default_cc_address_fields( $form_id );
93
	}
94
}
95
96
add_action( 'give_before_offline_info_fields', 'give_offline_billing_fields', 10, 1 );
97
98
/**
99
 * Process the payment
100
 *
101
 * @since  1.0
102
 *
103
 * @param $purchase_data
104
 *
105
 * @return void
106
 */
107
function give_offline_process_payment( $purchase_data ) {
108
109
	// Setup the payment details.
110
	$payment_data = array(
111
		'price'           => $purchase_data['price'],
112
		'give_form_title' => $purchase_data['post_data']['give-form-title'],
113
		'give_form_id'    => intval( $purchase_data['post_data']['give-form-id'] ),
114
		'give_price_id'   => isset( $purchase_data['post_data']['give-price-id'] ) ? $purchase_data['post_data']['give-price-id'] : '',
115
		'date'            => $purchase_data['date'],
116
		'user_email'      => $purchase_data['user_email'],
117
		'purchase_key'    => $purchase_data['purchase_key'],
118
		'currency'        => give_get_currency( $purchase_data['post_data']['give-form-id'], $purchase_data ),
119
		'user_info'       => $purchase_data['user_info'],
120
		'status'          => 'pending',
121
		'gateway'         => 'offline',
122
	);
123
0 ignored issues
show
Functions must not contain multiple empty lines in a row; found 2 empty lines
Loading history...
124
125
	// record the pending payment
126
	$payment = give_insert_payment( $payment_data );
127
128
	if ( $payment ) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $payment of type false|integer is loosely compared to true; this is ambiguous if the integer can be zero. You might want to explicitly use !== null instead.

In PHP, under loose comparison (like ==, or !=, or switch conditions), values of different types might be equal.

For integer values, zero is a special case, in particular the following results might be unexpected:

0   == false // true
0   == null  // true
123 == false // false
123 == null  // false

// It is often better to use strict comparison
0 === false // false
0 === null  // false
Loading history...
129
		give_send_to_success_page();
130
	} else {
131
		// if errors are present, send the user back to the donation form so they can be corrected
132
		give_send_back_to_checkout( '?payment-mode=' . $purchase_data['post_data']['give-gateway'] );
133
	}
134
135
}
136
137
add_action( 'give_gateway_offline', 'give_offline_process_payment' );
138
139
140
/**
141
 * Send Offline Donation Instructions
142
 *
143
 * Sends a notice to the donor with offline instructions; can be customized per form
144
 *
145
 * @param int $payment_id
146
 *
147
 * @since       1.0
148
 * @return void
149
 */
150
function give_offline_send_donor_instructions( $payment_id = 0 ) {
151
152
	$payment_data                      = give_get_payment_meta( $payment_id );
153
	$post_offline_customization_option = give_get_meta( $payment_data['form_id'], '_give_customize_offline_donations', true );
154
155
	//Customize email content depending on whether the single form has been customized
156
	$email_content = give_get_option( 'global_offline_donation_email' );
157
158
	if ( give_is_setting_enabled( $post_offline_customization_option, 'enabled' ) ) {
159
		$email_content = give_get_meta( $payment_data['form_id'], '_give_offline_donation_email', true );
160
	}
161
162
	$from_name = give_get_option( 'from_name', wp_specialchars_decode( get_bloginfo( 'name' ), ENT_QUOTES ) );
163
164
	/**
165
	 * Filters the from name.
166
	 *
167
	 * @since 1.7
168
	 */
169
	$from_name = apply_filters( 'give_donation_from_name', $from_name, $payment_id, $payment_data );
170
171
	$from_email = give_get_option( 'from_email', get_bloginfo( 'admin_email' ) );
172
173
	/**
174
	 * Filters the from email.
175
	 *
176
	 * @since 1.7
177
	 */
178
	$from_email = apply_filters( 'give_donation_from_address', $from_email, $payment_id, $payment_data );
179
180
	$to_email = give_get_payment_user_email( $payment_id );
181
182
	$subject = give_get_option( 'offline_donation_subject', __( 'Offline Donation Instructions', 'give' ) );
183
	if ( give_is_setting_enabled( $post_offline_customization_option, 'enabled' ) ) {
184
		$subject = give_get_meta( $payment_data['form_id'], '_give_offline_donation_subject', true );
185
	}
186
187
	$subject = apply_filters( 'give_offline_donation_subject', wp_strip_all_tags( $subject ), $payment_id );
188
	$subject = give_do_email_tags( $subject, $payment_id );
189
190
	$attachments = apply_filters( 'give_offline_donation_attachments', array(), $payment_id, $payment_data );
191
	$message     = give_do_email_tags( $email_content, $payment_id );
192
193
	$emails = Give()->emails;
194
195
	$emails->__set( 'from_name', $from_name );
196
	$emails->__set( 'from_email', $from_email );
197
	$emails->__set( 'heading', __( 'Offline Donation Instructions', 'give' ) );
198
199
	$headers = apply_filters( 'give_receipt_headers', $emails->get_headers(), $payment_id, $payment_data );
200
	$emails->__set( 'headers', $headers );
201
202
	$emails->send( $to_email, $subject, $message, $attachments );
203
204
}
205
206
207
/**
208
 * Send Offline Donation Admin Notice.
209
 *
210
 * Sends a notice to site admins about the pending donation.
211
 *
212
 * @since       1.0
213
 *
214
 * @param int $payment_id
215
 *
216
 * @return void
217
 *
218
 */
219
function give_offline_send_admin_notice( $payment_id = 0 ) {
220
221
	/* Send an email notification to the admin */
222
	$admin_email = give_get_admin_notice_emails();
223
	$user_info   = give_get_payment_meta_user_info( $payment_id );
224
225
	if ( isset( $user_info['id'] ) && $user_info['id'] > 0 ) {
226
		$user_data = get_userdata( $user_info['id'] );
227
		$name      = $user_data->display_name;
0 ignored issues
show
$name is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
228
	} elseif ( isset( $user_info['first_name'] ) && isset( $user_info['last_name'] ) ) {
229
		$name = $user_info['first_name'] . ' ' . $user_info['last_name'];
0 ignored issues
show
$name is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
230
	} else {
231
		$name = $user_info['email'];
0 ignored issues
show
$name is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
232
	}
233
234
	$amount = give_donation_amount( $payment_id );
235
236
	$admin_subject = apply_filters( 'give_offline_admin_donation_notification_subject', __( 'New Pending Donation', 'give' ), $payment_id );
237
238
	$admin_message = __( 'Dear Admin,', 'give' ) . "\n\n";
239
	$admin_message .= sprintf(__( 'A new offline donation has been made on your website for %s.', 'give' ), $amount) . "\n\n";
0 ignored issues
show
Expected 1 spaces after opening bracket; 0 found
Loading history...
Expected 1 spaces before closing bracket; 0 found
Loading history...
240
	$admin_message .= __( 'The donation is in a pending status and is awaiting payment. Donation instructions have been emailed to the donor. Once you receive payment, be sure to mark the donation as complete using the link below.', 'give' ) . "\n\n";
241
0 ignored issues
show
Functions must not contain multiple empty lines in a row; found 2 empty lines
Loading history...
242
243
	$admin_message .= '<strong>' . __( 'Donor:', 'give' ) . '</strong> {fullname}' . "\n";
244
	$admin_message .= '<strong>' . __( 'Amount:', 'give' ) . '</strong> {amount}' . "\n\n";
245
246
	$admin_message .= sprintf(
247
		                  '<a href="%1$s">%2$s</a>',
0 ignored issues
show
This line of the multi-line function call does not seem to be indented correctly. Expected 8 spaces, but found 26.
Loading history...
248
		                  admin_url( 'edit.php?post_type=give_forms&page=give-payment-history&view=view-payment-details&id=' . $payment_id ),
0 ignored issues
show
This line of the multi-line function call does not seem to be indented correctly. Expected 8 spaces, but found 26.
Loading history...
249
		                  __( 'View Donation Details &raquo;', 'give' )
0 ignored issues
show
This line of the multi-line function call does not seem to be indented correctly. Expected 8 spaces, but found 26.
Loading history...
250
	                  ) . "\n\n";
0 ignored issues
show
This line of the multi-line function call does not seem to be indented correctly. Expected 4 spaces, but found 22.
Loading history...
251
252
	$admin_message = apply_filters( 'give_offline_admin_donation_notification', $admin_message, $payment_id );
253
	$admin_message = give_do_email_tags( $admin_message, $payment_id );
254
255
	$attachments   = apply_filters( 'give_offline_admin_donation_notification_attachments', array(), $payment_id );
256
	$admin_headers = apply_filters( 'give_offline_admin_donation_notification_headers', array(), $payment_id );
257
258
	//Send Email
259
	$emails = Give()->emails;
260
	$emails->__set( 'heading', __( 'New Offline Donation', 'give' ) );
261
262
	if ( ! empty( $admin_headers ) ) {
263
		$emails->__set( 'headers', $admin_headers );
264
	}
265
266
	$emails->send( $admin_email, $admin_subject, $admin_message, $attachments );
267
268
}
269
270
271
/**
272
 * Register gateway settings.
273
 *
274
 * @param $settings
275
 *
276
 * @return array
277
 */
278
function give_offline_add_settings( $settings ) {
279
280
	// Bailout: Do not show offline gateways setting in to metabox if its disabled globally.
281
	if ( in_array( 'offline', (array) give_get_option( 'gateways' ) ) ) {
282
		return $settings;
283
	}
284
285
	//Vars
286
	$prefix = '_give_';
287
288
	$is_gateway_active = give_is_gateway_active( 'offline' );
289
290
	//this gateway isn't active
291
	if ( ! $is_gateway_active ) {
292
		//return settings and bounce
293
		return $settings;
294
	}
295
296
	//Fields
297
	$check_settings = array(
298
299
		array(
300
			'name'    => __( 'Offline Donations', 'give' ),
301
			'desc'    => __( 'Do you want to customize the donation instructions for this form?', 'give' ),
302
			'id'      => $prefix . 'customize_offline_donations',
303
			'type'    => 'radio_inline',
304
			'default' => 'global',
305
			'options' => apply_filters( 'give_forms_content_options_select', array(
306
					'global'   => __( 'Global Option', 'give' ),
307
					'enabled'  => __( 'Customize', 'give' ),
308
					'disabled' => __( 'Disable', 'give' ),
309
				)
310
			),
311
		),
312
		array(
313
			'name'        => __( 'Billing Fields', 'give' ),
314
			'desc'        => __( 'This option will enable the billing details section for this form\'s offline donation payment gateway. The fieldset will appear above the offline donation instructions.', 'give' ),
315
			'id'          => $prefix . 'offline_donation_enable_billing_fields_single',
316
			'row_classes' => 'give-subfield give-hidden',
317
			'type'        => 'radio_inline',
318
			'default'     => 'disabled',
319
			'options'     => array(
320
				'enabled'  => __( 'Enabled', 'give' ),
321
				'disabled' => __( 'Disabled', 'give' ),
322
			),
323
		),
324
		array(
325
			'id'          => $prefix . 'offline_checkout_notes',
326
			'name'        => __( 'Donation Instructions', 'give' ),
327
			'desc'        => __( 'Enter the instructions you want to display to the donor during the donation process. Most likely this would include important information like mailing address and who to make the check out to.', 'give' ),
328
			'default'     => give_get_default_offline_donation_content(),
329
			'type'        => 'wysiwyg',
330
			'row_classes' => 'give-subfield give-hidden',
331
			'options'     => array(
332
				'textarea_rows' => 6,
333
			)
334
		),
335
		array(
336
			'name'  => 'offline_docs',
337
			'type'  => 'docs_link',
338
			'url'   => 'http://docs.givewp.com/settings-gateway-offline-donations',
339
			'title' => __( 'Offline Donations', 'give' ),
340
		),
341
	);
342
343
	return array_merge( $settings, $check_settings );
344
}
345
346
add_filter( 'give_forms_offline_donations_metabox_fields', 'give_offline_add_settings' );
347
348
349
/**
350
 * Offline Donation Content
351
 *
352
 * Get default offline donation text
353
 *
354
 * @return string
355
 */
356
function give_get_default_offline_donation_content() {
357
	$default_text = '<p>' . __( 'In order to make an offline donation we ask that you please follow these instructions', 'give' ) . ': </p>';
358
	$default_text .= '<ol>';
359
	$default_text .= '<li>';
360
	$default_text .= sprintf(
361
	/* translators: %s: site name */
0 ignored issues
show
This line of the multi-line function call does not seem to be indented correctly. Expected 8 spaces, but found 4.
Loading history...
362
		__( 'Make a check payable to "{sitename}"', 'give' ) );
0 ignored issues
show
This line of the multi-line function call does not seem to be indented correctly. Expected 4 spaces, but found 8.
Loading history...
363
	$default_text .= '</li>';
364
	$default_text .= '<li>';
365
	$default_text .= sprintf(
366
	/* translators: %s: site name */
0 ignored issues
show
This line of the multi-line function call does not seem to be indented correctly. Expected 8 spaces, but found 4.
Loading history...
367
		__( 'On the memo line of the check, please indicate that the donation is for "{sitename}"', 'give' ) );
0 ignored issues
show
This line of the multi-line function call does not seem to be indented correctly. Expected 4 spaces, but found 8.
Loading history...
368
	$default_text .= '</li>';
369
	$default_text .= '<li>' . __( 'Please mail your check to:', 'give' ) . '</li>';
370
	$default_text .= '</ol>';
371
	$default_text .= '{offline_mailing_address}<br>';
372
	$default_text .= '<p>' . __( 'All contributions will be gratefully acknowledged and are tax deductible.', 'give' ) . '</p>';
373
374
	return apply_filters( 'give_default_offline_donation_content', $default_text );
375
376
}
377
378
/**
379
 * Offline Donation Email Content
380
 *
381
 * Gets the default offline donation email content
382
 *
383
 * @return string
384
 */
385
function give_get_default_offline_donation_email_content() {
386
	$default_text = '<p>' . __( 'Dear {name},', 'give' ) . '</p>';
387
	$default_text .= '<p>' . __( 'Thank you for your offline donation request! Your generosity is greatly appreciated. In order to make an offline donation we ask that you please follow these instructions:', 'give' ) . '</p>';
388
	$default_text .= '<ol>';
389
	$default_text .= '<li>';
390
	$default_text .= sprintf(
391
	/* translators: %s: site name */
0 ignored issues
show
This line of the multi-line function call does not seem to be indented correctly. Expected 8 spaces, but found 4.
Loading history...
392
		__( 'Make a check payable to "{sitename}"', 'give' )
393
	);
394
	$default_text .= '</li>';
395
	$default_text .= '<li>';
396
	$default_text .= sprintf(
397
		__( 'On the memo line of the check, please indicate that the donation is for "{sitename}"', 'give' )
398
	);
399
	$default_text .= '</li>';
400
	$default_text .= '<li>' . __( 'Please mail your check to:', 'give' ) . '</li>';
401
	$default_text .= '</ol>';
402
	$default_text .= '{offline_mailing_address}<br>';
403
	$default_text .= '<p>' . __( 'Once your donation has been received we will mark it as complete and you will receive an email receipt for your records. Please contact us with any questions you may have!', 'give' ) . '</p>';
404
	$default_text .= '<p>' . __( 'Sincerely,', 'give' ) . '</p>';
405
	$default_text .= '<p>{sitename}</p>';
406
407
	return apply_filters( 'give_default_offline_donation_content', $default_text );
408
409
}
410
411
/**
412
 * Get offline payment instructions.
413
 *
414
 * @since 1.7
415
 *
416
 * @param int  $form_id
417
 * @param bool $wpautop
418
 *
419
 * @return string
420
 */
421
function give_get_offline_payment_instruction( $form_id, $wpautop = false ) {
422
	// Bailout.
423
	if ( ! $form_id ) {
424
		return '';
425
	}
426
427
	$post_offline_customization_option = give_get_meta( $form_id, '_give_customize_offline_donations', true );
428
	$post_offline_instructions         = give_get_meta( $form_id, '_give_offline_checkout_notes', true );
429
	$global_offline_instruction        = give_get_option( 'global_offline_donation_content' );
430
	$offline_instructions              = $global_offline_instruction;
431
432
	if ( give_is_setting_enabled( $post_offline_customization_option ) ) {
433
		$offline_instructions = $post_offline_instructions;
434
	}
435
436
	$settings_url = admin_url( 'post.php?post=' . $form_id . '&action=edit&message=1' );
437
438
	/* translators: %s: form settings url */
439
	$offline_instructions = ! empty( $offline_instructions )
440
		? $offline_instructions
441
		: sprintf(
442
			__( 'Please enter offline donation instructions in <a href="%s">this form\'s settings</a>.', 'give' ),
443
			$settings_url
444
		);
445
446
	$offline_instructions = give_do_email_tags( $offline_instructions, null );
447
448
	$formmated_offline_instructions = $wpautop
449
		? wpautop( do_shortcode( $offline_instructions ) )
450
		: $offline_instructions;
451
452
	/**
453
	 * Filter the offline instruction content
454
	 *
455
	 * @since 2.2.0
456
	 *
457
	 */
458
	$formmated_offline_instructions = apply_filters(
459
		'give_the_offline_instructions_content',
460
		$formmated_offline_instructions,
461
		$offline_instructions,
462
		$form_id,
463
		$wpautop
464
	);
465
466
	return $formmated_offline_instructions;
467
}
468
469
470
/**
471
 * Remove offline gateway from gateway list of offline disable for form.
472
 *
473
 * @since  1.8
474
 *
475
 * @param  array $gateway_list
476
 * @param        $form_id
477
 *
478
 * @return array
479
 */
480
function give_filter_offline_gateway( $gateway_list, $form_id ) {
481 View Code Duplication
	if (
0 ignored issues
show
This code seems to be duplicated across 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...
482
		// Show offline payment gateway if enable for new donation form.
483
		( false === strpos( $_SERVER['REQUEST_URI'], '/wp-admin/post-new.php?post_type=give_forms' ) )
0 ignored issues
show
Detected usage of a non-validated input variable: $_SERVER
Loading history...
Detected usage of a non-sanitized input variable: $_SERVER
Loading history...
484
		&& $form_id
485
		&& ! give_is_setting_enabled( give_get_meta( $form_id, '_give_customize_offline_donations', true ), array( 'enabled', 'global' ) )
0 ignored issues
show
array('enabled', 'global') is of type array<integer,string,{"0":"string","1":"string"}>, but the function expects a string|null.

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...
486
	) {
487
		unset( $gateway_list['offline'] );
488
	}
489
490
	// Output.
491
	return $gateway_list;
492
}
493
494
add_filter( 'give_enabled_payment_gateways', 'give_filter_offline_gateway', 10, 2 );
495
496
/**
497
 * Set default gateway to global default payment gateway
498
 * if current default gateways selected offline and offline payment gateway is disabled.
499
 *
500
 * @since 1.8
501
 *
502
 * @param  string $meta_key   Meta key.
503
 * @param  string $meta_value Meta value.
504
 * @param  int    $postid     Form ID.
505
 *
506
 * @return void
507
 */
508
function _give_customize_offline_donations_on_save_callback( $meta_key, $meta_value, $postid ) {
0 ignored issues
show
The parameter $meta_key is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
509 View Code Duplication
	if (
0 ignored issues
show
This code seems to be duplicated across 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...
510
		! give_is_setting_enabled( $meta_value, array( 'global', 'enabled' ) )
0 ignored issues
show
array('global', 'enabled') is of type array<integer,string,{"0":"string","1":"string"}>, but the function expects a string|null.

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...
511
		&& ( 'offline' === give_get_meta( $postid, '_give_default_gateway', true ) )
512
	) {
513
		give_update_meta( $postid, '_give_default_gateway', 'global' );
514
	}
515
}
516
517
add_filter( 'give_save__give_customize_offline_donations', '_give_customize_offline_donations_on_save_callback', 10, 3 );
518