donors.php ➔ give_donor_view()   F
last analyzed

Complexity

Conditions 32
Paths > 20000

Size

Total Lines 660

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 32
nc 393216
nop 1
dl 0
loc 660
rs 0
c 0
b 0
f 0

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
/**
3
 * Donors.
4
 *
5
 * @package     Give
6
 * @subpackage  Admin/Donors
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
18
/**
19
 * Get formatted address
20
 *
21
 * @since 2.0
22
 *
23
 * @param array $address
24
 * @param array $address_args
25
 *
26
 * @return string
27
 */
28
function __give_get_format_address( $address, $address_args = array() ) {
29
	$address_html = '';
30
	$address_args = wp_parse_args(
31
		$address_args,
32
		array(
33
			'type'            => '',
34
			'id'              => null,
35
			'index'           => null,
36
			'default_address' => false,
37
		)
38
	);
39
40
	$address_id = $address_args['type'];
41
42
	// Bailout.
43
	if ( empty( $address ) || ! is_array( $address ) ) {
44
		return $address_html;
45
	}
46
47
	// Address html.
48
	$address_html = '';
49
	$address_html .= sprintf(
50
		'<span data-address-type="line1">%1$s</span>%2$s',
51
		$address['line1'],
52
		( ! empty( $address['line2'] ) ? '<br>' : '' )
53
	);
54
	$address_html .= sprintf(
55
		'<span data-address-type="line2">%1$s</span>%2$s',
56
		$address['line2'],
57
		( ! empty( $address['city'] ) ? '<br>' : '' )
58
	);
59
	$address_html .= sprintf(
60
		'<span data-address-type="city">%1$s</span><span data-address-type="state">%2$s</span><span data-address-type="zip">%3$s</span>%4$s',
61
		$address['city'],
62
		( ! empty( $address['state'] ) ? ", {$address['state']}" : '' ),
63
		( ! empty( $address['zip'] ) ? " {$address['zip']}" : '' ),
64
		( ! empty( $address['country'] ) ? '<br>' : '' )
65
	);
66
	$address_html .= sprintf(
67
		'<span data-address-type="country">%s</span><br>',
68
		$address['country']
69
	);
70
71
	// Address action.
72
	$address_html .= sprintf(
73
		'<br><a href="#" class="js-edit">%1$s</a> | <a href="#" class="js-remove">%2$s</a>',
74
		__( 'Edit', 'give' ),
75
		__( 'Remove', 'give' )
76
	);
77
78
	/**
79
	 * Filter the address label
80
	 *
81
	 * @since 2.0
82
	 */
83
	$address_label = apply_filters( "give_donor_{$address_args['type']}_address_label", ucfirst( $address_args['type'] ), $address_args );
84
85
	// Set unique id and index for multi type address.
86
	if ( isset( $address_args['index'] ) ) {
87
		$address_label = "{$address_label} #{$address_args['index']}";
88
	}
89
90
	if ( isset( $address_args['id'] ) ) {
91
		$address_id = "{$address_id}_{$address_args['id']}";
92
	}
93
94
	// Add address wrapper.
95
	$address_html = sprintf(
96
		'<div class="give-grid-col-4"><div data-address-id="%s" class="address"><span class="alignright address-number-label">%s</span>%s</div></div>',
97
		$address_id,
98
		$address_label,
99
		$address_html
100
	);
101
102
	return $address_html;
103
}
104
105
/**
106
 * Donors Page.
107
 *
108
 * Renders the donors page contents.
109
 *
110
 * @since  1.0
111
 * @return void
112
 */
113
function give_donors_page() {
114
	$default_views  = give_donor_views();
115
	$requested_view = isset( $_GET['view'] ) ? sanitize_text_field( $_GET['view'] ) : 'donors';
0 ignored issues
show
introduced by
Detected access of super global var $_GET, probably need manual inspection.
Loading history...
116
	if ( array_key_exists( $requested_view, $default_views ) && function_exists( $default_views[ $requested_view ] ) ) {
117
		give_render_donor_view( $requested_view, $default_views );
118
	} else {
119
		give_donors_list();
120
	}
121
}
122
123
/**
124
 * Register the views for donor management.
125
 *
126
 * @since  1.0
127
 * @return array Array of views and their callbacks.
128
 */
129
function give_donor_views() {
130
131
	$views = array();
132
133
	return apply_filters( 'give_donor_views', $views );
134
135
}
136
137
/**
138
 * Register the tabs for donor management.
139
 *
140
 * @since  1.0
141
 * @return array Array of tabs for the donor.
142
 */
143
function give_donor_tabs() {
144
145
	$tabs = array();
146
147
	return apply_filters( 'give_donor_tabs', $tabs );
148
149
}
150
151
/**
152
 * List table of donors.
153
 *
154
 * @since  1.0
155
 * @return void
156
 */
157
function give_donors_list() {
158
159
	include GIVE_PLUGIN_DIR . 'includes/admin/donors/class-donor-table.php';
160
161
	$donors_table = new Give_Donor_List_Table();
162
	$donors_table->prepare_items();
163
	?>
164
	<div class="wrap">
165
		<h1 class="wp-heading-inline"><?php echo get_admin_page_title(); ?></h1>
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'get_admin_page_title'
Loading history...
166
		<?php
167
		/**
168
		 * Fires in donors screen, above the table.
169
		 *
170
		 * @since 1.0
171
		 */
172
		do_action( 'give_donors_table_top' );
173
		?>
174
175
		<hr class="wp-header-end">
176
		<form id="give-donors-filter" method="get" action="<?php echo admin_url( 'edit.php?post_type=give_forms&page=give-donors' ); ?>">
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'admin_url'
Loading history...
177
			<?php
178
			$donors_table->advanced_filters();
179
			$donors_table->display();
180
			?>
181
			<input type="hidden" name="post_type" value="give_forms"/>
182
			<input type="hidden" name="page" value="give-donors"/>
183
			<input type="hidden" name="view" value="donors"/>
184
		</form>
185
		<?php
186
		/**
187
		 * Fires in donors screen, below the table.
188
		 *
189
		 * @since 1.0
190
		 */
191
		do_action( 'give_donors_table_bottom' );
192
		?>
193
	</div>
194
	<?php
195
}
196
197
/**
198
 * Renders the donor view wrapper.
199
 *
200
 * @since  1.0
201
 *
202
 * @param  string $view The View being requested.
203
 * @param  array $callbacks The Registered views and their callback functions.
204
 *
205
 * @return void
206
 */
207
function give_render_donor_view( $view, $callbacks ) {
208
209
	$render = true;
210
211
	$donor_view_role = apply_filters( 'give_view_donors_role', 'view_give_reports' );
212
213
	if ( ! current_user_can( $donor_view_role ) ) {
214
		give_set_error( 'give-no-access', __( 'You are not permitted to view this data.', 'give' ) );
215
		$render = false;
216
	}
217
218
	if ( ! isset( $_GET['id'] ) || ! is_numeric( $_GET['id'] ) ) {
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...
219
		give_set_error( 'give-invalid_donor', __( 'Invalid Donor ID.', 'give' ) );
220
		$render = false;
221
	}
222
223
	$donor_id          = (int) $_GET['id'];
0 ignored issues
show
introduced by
Detected access of super global var $_GET, probably need manual inspection.
Loading history...
224
	$reconnect_user_id = ! empty( $_GET['user_id'] ) ? (int) $_GET['user_id'] : '';
0 ignored issues
show
introduced by
Detected access of super global var $_GET, probably need manual inspection.
Loading history...
225
	$donor             = new Give_Donor( $donor_id );
226
227
	// Reconnect User with Donor profile.
228
	if ( $reconnect_user_id ) {
229
		give_connect_user_donor_profile( $donor, array( 'user_id' => $reconnect_user_id ), array() );
230
	}
231
232
	if ( empty( $donor->id ) ) {
233
		give_set_error( 'give-invalid_donor', __( 'Invalid Donor ID.', 'give' ) );
234
		$render = false;
235
	}
236
237
	$donor_tabs = give_donor_tabs();
238
	?>
239
240
	<div class='wrap'>
241
242
		<?php if ( give_get_errors() ) : ?>
243
			<div class="error settings-error">
244
				<?php Give()->notices->render_frontend_notices( 0 ); ?>
245
			</div>
246
		<?php endif; ?>
247
248
		<h1 class="wp-heading-inline">
249
			<?php
250
			printf(
251
			/* translators: %s: donor first name */
0 ignored issues
show
Coding Style introduced by
This line of the multi-line function call does not seem to be indented correctly. Expected 16 spaces, but found 12.
Loading history...
252
				__( 'Edit Donor: %s %s', 'give' ),
253
				$donor->get_first_name(),
254
				$donor->get_last_name()
255
			);
256
			?>
257
		</h1>
258
259
		<hr class="wp-header-end">
260
261
		<?php if ( $donor && $render ) : ?>
262
263
			<h2 class="nav-tab-wrapper">
264
				<?php
265
				foreach ( $donor_tabs as $key => $tab ) :
266
					$active = $key === $view ? true : false;
267
					$class  = $active ? 'nav-tab nav-tab-active' : 'nav-tab';
268
					printf(
269
						'<a href="%1$s" class="%2$s"><span class="dashicons %3$s"></span>%4$s</a>' . "\n",
270
						esc_url( admin_url( 'edit.php?post_type=give_forms&page=give-donors&view=' . $key . '&id=' . $donor->id ) ),
271
						esc_attr( $class ),
272
						sanitize_html_class( $tab['dashicon'] ),
273
						esc_html( $tab['title'] )
274
					);
275
				endforeach;
276
				?>
277
			</h2>
278
279
			<div id="give-donor-card-wrapper">
280
				<?php $callbacks[ $view ]( $donor ) ?>
281
			</div>
282
283
		<?php endif; ?>
284
285
	</div>
286
	<?php
287
288
}
289
290
291
/**
292
 * View a donor
293
 *
294
 * @since  1.0
295
 *
296
 * @param  Give_Donor $donor The Donor object being displayed.
297
 *
298
 * @return void
299
 */
300
function give_donor_view( $donor ) {
301
302
	$donor_edit_role = apply_filters( 'give_edit_donors_role', 'edit_give_payments' );
303
304
	/**
305
	 * Fires in donor profile screen, above the donor card.
306
	 *
307
	 * @since 1.0
308
	 *
309
	 * @param object $donor The donor object being displayed.
310
	 */
311
	do_action( 'give_donor_card_top', $donor );
312
313
	// Set Read only to the fields which needs to be locked.
314
	$read_only = '';
315
	if ( $donor->user_id ) {
316
		$read_only = 'readonly="readonly"';
317
	}
318
319
	// List of title prefixes.
320
	$title_prefixes = give_get_name_title_prefixes();
321
322
	// Prepend title prefix to name if it is set.
323
	$title_prefix              = Give()->donor_meta->get_meta( $donor->id, '_give_donor_title_prefix', true );
324
	$donor_name_without_prefix = $donor->name;
325
	$donor->name               = give_get_donor_name_with_title_prefixes( $title_prefix, $donor->name );
326
	?>
327
	<div id="donor-summary" class="info-wrapper donor-section postbox">
328
		<form id="edit-donor-info" method="post"
329
		      action="<?php echo esc_url( admin_url( 'edit.php?post_type=give_forms&page=give-donors&view=overview&id=' . $donor->id ) ); ?>">
330
			<div class="donor-info">
331
				<div class="donor-bio-header clearfix">
332
					<div class="avatar-wrap left" id="donor-avatar">
333
						<?php
334
335
						// Check whether a Gravatar exists for a donor or not.
336
						$validate_gravatar_image = give_validate_gravatar( $donor->email );
337
338
						// Get donor's initials for non-gravatars
339
						$donor_name_array             = explode( " ", $donor_name_without_prefix );
0 ignored issues
show
Coding Style Comprehensibility introduced by
The string literal does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
340
						$donor_name_args['firstname'] = ! empty( $donor_name_array[0] ) ? $donor_name_array[0] : '';
341
						$donor_name_args['lastname']  = ! empty( $donor_name_array[1] ) ? $donor_name_array[1] : '';
342
						$donor_name_initial           = give_get_name_initial( $donor_name_args );
343
344
						// Gravatars image for donor
345
						if ( $validate_gravatar_image ) {
346
							$donor_gravatar_image = get_avatar( $donor->email );
347
						} else {
348
							$donor_gravatar_image = '<div class="give-donor-admin-avatar">' . $donor_name_initial . '</div>';
349
						}
350
351
						echo $donor_gravatar_image;
0 ignored issues
show
introduced by
Expected next thing to be a escaping function, not '$donor_gravatar_image'
Loading history...
352
						?>
353
					</div>
354
					<div id="donor-name-wrap" class="left">
355
						<span class="donor-name info-item edit-item">
356
							<select name="donor_info[title]">
357
								<option disabled value="0"><?php esc_html_e( 'Title', 'give' ); ?></option>
358
								<?php
359
								if ( is_array( $title_prefixes ) && count( $title_prefixes ) > 0 ) {
360
									foreach ( $title_prefixes as $title ) {
361
										echo sprintf(
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'sprintf'
Loading history...
362
											'<option %1$s value="%2$s">%2$s</option>',
363
											selected( $title_prefix, $title, false ),
364
											esc_html( $title )
365
										);
366
									}
367
								}
368
								?>
369
							</select>
370
							<input <?php echo $read_only; ?> size="15" data-key="first_name"
0 ignored issues
show
introduced by
Expected next thing to be a escaping function, not '$read_only'
Loading history...
371
							                                 name="donor_info[first_name]" type="text"
372
							                                 value="<?php echo esc_html( $donor->get_first_name() ); ?>"
373
							                                 placeholder="<?php esc_html_e( 'First Name', 'give' ); ?>"/>
374
							<?php if ( $donor->user_id ) : ?>
375
								<a href="#" class="give-lock-block">
376
									<i class="give-icon give-icon-locked"></i>
377
								</a>
378
							<?php endif; ?>
379
							<input <?php echo $read_only; ?> size="15" data-key="last_name"
0 ignored issues
show
introduced by
Expected next thing to be a escaping function, not '$read_only'
Loading history...
380
							                                 name="donor_info[last_name]" type="text"
381
							                                 value="<?php echo esc_html( $donor->get_last_name() ); ?>"
382
							                                 placeholder="<?php esc_html_e( 'Last Name', 'give' ); ?>"/>
383
							<?php if ( $donor->user_id ) : ?>
384
								<a href="#" class="give-lock-block">
385
									<i class="give-icon give-icon-locked"></i>
386
								</a>
387
							<?php endif; ?>
388
						</span>
389
						<span class="donor-name info-item editable">
390
							<span data-key="name"><?php echo esc_html( $donor->name ); ?></span>
391
						</span>
392
					</div>
393
					<p class="donor-since info-item">
394
						<?php esc_html_e( 'Donor since', 'give' ); ?>
395
						<?php echo date_i18n( give_date_format(), strtotime( $donor->date_created ) ) ?>
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'date_i18n'
Loading history...
396
					</p>
397
					<?php if ( current_user_can( $donor_edit_role ) ) : ?>
398
						<a href="#" id="edit-donor" class="button info-item editable donor-edit-link">
399
							<?php esc_html_e( 'Edit Donor', 'give' ); ?>
400
						</a>
401
					<?php endif; ?>
402
				</div>
403
				<!-- /donor-bio-header -->
404
405
				<div class="donor-main-wrapper">
406
407
					<table class="widefat striped">
408
						<tbody>
409
						<tr>
410
							<th scope="col"><label for="tablecell"><?php esc_html_e( 'Donor ID:', 'give' ); ?></label>
411
							</th>
412
							<td><?php echo intval( $donor->id ); ?></td>
413
						</tr>
414
						<tr>
415
							<th scope="col"><label for="tablecell"><?php esc_html_e( 'User ID:', 'give' ); ?></label>
416
							</th>
417
							<td>
418
									<span class="donor-user-id info-item edit-item">
419
										<?php
420
421
										$user_id = $donor->user_id > 0 ? $donor->user_id : '';
422
423
										$data_atts = array(
424
											'key'         => 'user_login',
425
											'search-type' => 'user',
426
										);
427
										$user_args = array(
428
											'name'  => 'donor_info[user_id]',
429
											'class' => 'give-user-dropdown',
430
											'data'  => $data_atts,
431
										);
432
433
										if ( ! empty( $user_id ) ) {
434
											$userdata              = get_userdata( $user_id );
435
											$user_args['selected'] = $user_id;
436
										}
437
438
										echo Give()->html->ajax_user_search( $user_args );
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'Give'
Loading history...
439
										?>
440
									</span>
441
442
								<span class="donor-user-id info-item editable">
443
										<?php if ( ! empty( $userdata ) ) : ?>
444
											<span
445
												data-key="user_id">#<?php echo $donor->user_id . ' - ' . $userdata->display_name; ?></span>
0 ignored issues
show
introduced by
Expected next thing to be a escaping function, not '$donor'
Loading history...
introduced by
Expected next thing to be a escaping function, not '$userdata'
Loading history...
446
										<?php else : ?>
447
											<span
448
												data-key="user_id"><?php esc_html_e( 'Unregistered', 'give' ); ?></span>
449
										<?php endif; ?>
450
									<?php if ( current_user_can( $donor_edit_role ) && intval( $donor->user_id ) > 0 ) :
451
452
										echo sprintf(
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'sprintf'
Loading history...
453
											'- <span class="disconnect-user">
454
												<a id="disconnect-donor" href="#disconnect" aria-label="%1$s">%2$s</a>
455
											</span> | 
456
											<span class="view-user-profile">
457
												<a id="view-user-profile" href="%3$s" aria-label="%4$s">%5$s</a>
458
											</span>',
459
											esc_html__( 'Disconnects the current user ID from this donor record.', 'give' ),
460
											esc_html__( 'Disconnect User', 'give' ),
461
											esc_url( 'user-edit.php?user_id=' . $donor->user_id ),
462
											esc_html__( 'View User Profile of current user ID.', 'give' ),
463
											esc_html__( 'View User Profile', 'give' )
464
										);
465
466
									endif; ?>
467
									</span>
468
							</td>
469
						</tr>
470
471
						<?php
472
						$donor_company = $donor->get_meta( '_give_donor_company', true );
473
						?>
474
						<tr class="alternate">
475
							<th scope="col">
476
								<label for="tablecell"><?php esc_html_e( 'Company Name:', 'give' ); ?></label>
477
							</th>
478
							<td>
479
								<span class="donor-user-id info-item edit-item">
480
									<input name="give_donor_company" value="<?php echo $donor_company ?>" type="text">
0 ignored issues
show
introduced by
Expected next thing to be a escaping function, not '$donor_company'
Loading history...
481
								</span>
482
483
								<span class="donor-user-id info-item editable">
484
									<?php echo $donor_company; ?>
0 ignored issues
show
introduced by
Expected next thing to be a escaping function, not '$donor_company'
Loading history...
485
								</span>
486
							</td>
487
						</tr>
488
						</tbody>
489
					</table>
490
				</div>
491
492
			</div>
493
494
			<span id="donor-edit-actions" class="edit-item">
495
				<input type="hidden" data-key="id" name="donor_info[id]" value="<?php echo intval( $donor->id ); ?>"/>
496
				<?php wp_nonce_field( 'edit-donor', '_wpnonce', false, true ); ?>
497
				<input type="hidden" name="give_action" value="edit-donor"/>
498
				<input type="submit" id="give-edit-donor-save" class="button-secondary"
499
				       value="<?php esc_html_e( 'Update Donor', 'give' ); ?>"/>
500
				<a id="give-edit-donor-cancel" href="" class="delete"><?php esc_html_e( 'Cancel', 'give' ); ?></a>
501
			</span>
502
503
		</form>
504
505
	</div>
506
507
	<?php
508
	/**
509
	 * Fires in donor profile screen, above the stats list.
510
	 *
511
	 * @since 1.0
512
	 *
513
	 * @param Give_Donor $donor The donor object being displayed.
514
	 */
515
	do_action( 'give_donor_before_stats', $donor );
516
	?>
517
518
	<div id="donor-stats-wrapper" class="donor-section postbox clear">
519
		<ul>
520
			<li>
521
				<a href="<?php echo admin_url( 'edit.php?post_type=give_forms&page=give-payment-history&donor=' . absint( $donor->id ) ); ?>">
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'admin_url'
Loading history...
522
					<span class="dashicons dashicons-heart"></span>
523
					<?php
524
					// Completed Donations.
525
					$completed_donations_text = sprintf( _n( '%d Completed Donation', '%d Completed Donations', $donor->purchase_count, 'give' ), $donor->purchase_count );
526
					echo apply_filters( 'give_donor_completed_donations', $completed_donations_text, $donor );
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'apply_filters'
Loading history...
527
					?>
528
				</a>
529
			</li>
530
			<li>
531
				<span class="dashicons dashicons-chart-area"></span>
532
				<?php echo give_currency_filter( give_format_amount( $donor->get_total_donation_amount(), array( 'sanitize' => false ) ) ); ?> <?php _e( 'Lifetime Donations', 'give' ); ?>
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'give_currency_filter'
Loading history...
533
			</li>
534
			<?php
535
			/**
536
			 * Fires in donor profile screen, in the stats list.
537
			 *
538
			 * Allows you to add more list items to the stats list.
539
			 *
540
			 * @since 1.0
541
			 *
542
			 * @param object $donor The donor object being displayed.
543
			 */
544
			do_action( 'give_donor_stats_list', $donor );
545
			?>
546
		</ul>
547
	</div>
548
549
	<?php
550
	/**
551
	 * Fires in donor profile screen, above the address list.
552
	 *
553
	 * @since 1.8.14
554
	 *
555
	 * @param Give_Donor $donor The donor object being displayed.
556
	 */
557
	do_action( 'give_donor_before_address', $donor );
558
	?>
559
560
	<div id="donor-address-wrapper" class="donor-section clear">
561
		<h3><?php _e( 'Addresses', 'give' ); ?></h3>
562
563
		<div class="postbox">
564
			<div class="give-spinner-wrapper">
565
				<span class="give-spinner spinner aligncenter"></span>
566
			</div>
567
			<div class="inside">
568
				<div class="all-address">
569
					<div class="give-grid-row">
570
						<?php
571
						if ( ! empty( $donor->address ) ) :
572
							// Default address always will be at zero array index.
573
							$is_set_as_default = null;
0 ignored issues
show
Unused Code introduced by
$is_set_as_default 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...
574
575
							foreach ( $donor->address as $address_type => $addresses ) {
576
577
								switch ( true ) {
578
									case is_array( end( $addresses ) ):
579
										$index = 1;
580
										foreach ( $addresses as $id => $address ) {
581
											echo __give_get_format_address(
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw '__give_get_format_address'
Loading history...
582
												$address,
583
												array(
584
													'type'  => $address_type,
585
													'id'    => $id,
586
													'index' => $index,
587
												)
588
											);
589
590
											$index ++;
591
										}
592
										break;
593
594
									case is_string( end( $addresses ) ):
595
										echo __give_get_format_address(
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw '__give_get_format_address'
Loading history...
596
											$addresses,
597
											array(
598
												'type' => $address_type,
599
											)
600
										);
601
										break;
602
								}
603
							}
604
						endif;
605
						?>
606
					</div>
607
					<span class="give-no-address-message<?php if ( ! empty( $donor->address ) ) {
608
						echo ' give-hidden';
609
					} ?>">
610
						<?php _e( 'This donor does not have any addresses saved.', 'give' ); ?>
611
					</span>
612
					<button class="button add-new-address">
613
						<?php _e( 'Add Address', 'give' ); ?>
614
					</button>
615
				</div>
616
617
				<div class="address-form add-new-address-form-hidden">
618
					<form action="" method="post">
619
						<table class="widefat striped">
620
							<tbody>
621
							<tr>
622
								<th class="col">
623
									<label class="country"><?php esc_html_e( 'Country:', 'give' ); ?></label>
624
								</th>
625
								<td>
626
									<?php
627
									echo Give()->html->select( array(
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'Give'
Loading history...
628
										'options'          => give_get_country_list(),
629
										'name'             => 'country',
630
										'selected'         => give_get_option( 'base_country' ),
631
										'show_option_all'  => false,
632
										'show_option_none' => false,
633
										'chosen'           => true,
634
										'placeholder'      => esc_attr__( 'Select a country', 'give' ),
635
										'data'             => array( 'search-type' => 'no_ajax' ),
636
									) );
637
									?>
638
								</td>
639
							</tr>
640
							<tr>
641
								<th class="col">
642
									<label for="line1"><?php esc_html_e( 'Address 1:', 'give' ); ?></label>
643
								</th>
644
								<td>
645
									<input id="line1" name="line1" type="text" class="medium-text"/>
646
								</td>
647
							</tr>
648
							<tr>
649
								<th class="col">
650
									<label for="line2"><?php esc_html_e( 'Address 2:', 'give' ); ?></label>
651
								</th>
652
								<td>
653
									<input id="line2" type="text" name="line2" value="" class="medium-text"/>
654
655
								</td>
656
							</tr>
657
							<tr>
658
								<th class="col">
659
									<label for="city"><?php esc_html_e( 'City:', 'give' ); ?></label>
660
								</th>
661
								<td>
662
									<input id="city" type="text" name="city" value="" class="medium-text"/>
663
								</td>
664
							</tr>
665
							<?php
666
							$no_states_country = give_no_states_country_list();
667
							$base_country      = give_get_option( 'base_country' );
668
							if ( ! array_key_exists( $base_country, $no_states_country ) ) {
669
								?>
670
								<tr class="give-field-wrap">
671
									<th class="col">
672
										<label
673
											for="state"><?php esc_html_e( 'State / Province / County:', 'give' ); ?></label>
674
									</th>
675
									<td>
676
										<?php
677
										$states     = give_get_states( $base_country );
678
										$state_args = array(
679
											'name'  => 'state',
680
											'class' => 'regular-text',
681
										);
682
683
										if ( empty( $states ) ) {
684
685
											// Show Text field, if empty states.
686
											$state_args = wp_parse_args( $state_args, array(
687
												'value' => give_get_option( 'base_state' ),
688
											) );
689
											echo Give()->html->text( $state_args );
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'Give'
Loading history...
690
										} else {
691
692
											// Show Chosen DropDown, if states are not empty.
693
											$state_args = wp_parse_args( $state_args, array(
694
												'options'          => $states,
695
												'selected'         => give_get_option( 'base_state' ),
696
												'show_option_all'  => false,
697
												'show_option_none' => false,
698
												'chosen'           => true,
699
												'placeholder'      => __( 'Select a state', 'give' ),
700
												'data'             => array( 'search-type' => 'no_ajax' ),
701
											) );
702
											echo Give()->html->select( $state_args );
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'Give'
Loading history...
703
										}
704
										?>
705
									</td>
706
								</tr>
707
								<?php
708
							}
709
							?>
710
							<tr>
711
								<th class="col">
712
									<label for="zip"><?php esc_html_e( 'Zip / Postal Code:', 'give' ); ?></label>
713
								</th>
714
								<td>
715
									<input id="zip" type="text" name="zip" value="" class="medium-text"/>
716
								</td>
717
							</tr>
718
							<tr>
719
								<td colspan="2">
720
									<?php wp_nonce_field( 'give-manage-donor-addresses', '_wpnonce', false ); ?>
721
									<input type="hidden" name="address-action" value="add">
722
									<input type="hidden" name="address-id" value="">
723
									<input type="submit" class="button button-primary js-save"
724
									       value="<?php _e( 'Save', 'give' ); ?>">&nbsp;&nbsp;<button
725
										class="button js-cancel"><?php _e( 'Cancel', 'give' ); ?></button>
726
								</td>
727
							</tr>
728
							</tbody>
729
						</table>
730
					</form>
731
				</div>
732
			</div>
733
		</div>
734
	</div>
735
736
	<?php
737
	/**
738
	 * Fires in donor profile screen, above the tables wrapper.
739
	 *
740
	 * @since 1.0
741
	 *
742
	 * @param Give_Donor $donor The donor object being displayed.
743
	 */
744
	do_action( 'give_donor_before_tables_wrapper', $donor );
745
	?>
746
747
	<div id="donor-tables-wrapper" class="donor-section">
748
749
		<?php
750
		/**
751
		 * Fires in donor profile screen, above the tables.
752
		 *
753
		 * @since 1.0
754
		 *
755
		 * @param object $donor The donor object being displayed.
756
		 */
757
		do_action( 'give_donor_before_tables', $donor );
758
		?>
759
760
		<h3><?php _e( 'Donor Emails', 'give' ); ?></h3>
761
762
		<table class="wp-list-table widefat striped emails">
763
			<thead>
764
			<tr>
765
				<th><?php _e( 'Email', 'give' ); ?></th>
766
				<th><?php _e( 'Actions', 'give' ); ?></th>
767
			</tr>
768
			</thead>
769
770
			<tbody>
771
			<?php if ( ! empty( $donor->emails ) ) { ?>
772
773
				<?php foreach ( $donor->emails as $key => $email ) : ?>
774
					<tr data-key="<?php echo $key; ?>">
0 ignored issues
show
introduced by
Expected next thing to be a escaping function, not '$key'
Loading history...
775
						<td>
776
							<?php echo $email; ?>
0 ignored issues
show
introduced by
Expected next thing to be a escaping function, not '$email'
Loading history...
777
							<?php if ( 'primary' === $key ) : ?>
778
								<span class="dashicons dashicons-star-filled primary-email-icon"></span>
779
							<?php endif; ?>
780
						</td>
781
						<td>
782
							<?php if ( 'primary' !== $key ) : ?>
783
								<?php
784
								$base_url    = admin_url( 'edit.php?post_type=give_forms&page=give-donors&view=overview&id=' . $donor->id );
785
								$promote_url = wp_nonce_url( add_query_arg( array(
786
									'email'       => rawurlencode( $email ),
787
									'give_action' => 'set_donor_primary_email',
788
								), $base_url ), 'give-set-donor-primary-email' );
789
								$remove_url  = wp_nonce_url( add_query_arg( array(
790
									'email'       => rawurlencode( $email ),
791
									'give_action' => 'remove_donor_email',
792
								), $base_url ), 'give-remove-donor-email' );
793
								?>
794
								<a href="<?php echo $promote_url; ?>"><?php _e( 'Make Primary', 'give' ); ?></a>
0 ignored issues
show
introduced by
Expected next thing to be a escaping function, not '$promote_url'
Loading history...
795
								&nbsp;|&nbsp;
796
								<a href="<?php echo $remove_url; ?>" class="delete"><?php _e( 'Remove', 'give' ); ?></a>
0 ignored issues
show
introduced by
Expected next thing to be a escaping function, not '$remove_url'
Loading history...
797
							<?php endif; ?>
798
						</td>
799
					</tr>
800
				<?php endforeach; ?>
801
802
				<tr class="add-donor-email-row">
803
					<td colspan="2" class="add-donor-email-td">
804
						<div class="add-donor-email-wrapper">
805
							<input type="hidden" name="donor-id" value="<?php echo $donor->id; ?>"/>
0 ignored issues
show
introduced by
Expected next thing to be a escaping function, not '$donor'
Loading history...
806
							<?php wp_nonce_field( 'give_add_donor_email', 'add_email_nonce', false, true ); ?>
807
							<input type="email" name="additional-email" value=""
808
							       placeholder="<?php _e( 'Email Address', 'give' ); ?>"/>&nbsp;
809
							<input type="checkbox" name="make-additional-primary" value="1"
810
							       id="make-additional-primary"/>&nbsp;<label
811
								for="make-additional-primary"><?php _e( 'Make Primary', 'give' ); ?></label>
812
							<button class="button-secondary give-add-donor-email"
813
							        id="add-donor-email"><?php _e( 'Add Email', 'give' ); ?></button>
814
							<span class="spinner"></span>
815
						</div>
816
						<div class="notice-wrap"></div>
817
					</td>
818
				</tr>
819
			<?php } else { ?>
820
				<tr>
821
					<td colspan="2"><?php _e( 'No Emails Found', 'give' ); ?></td>
822
				</tr>
823
			<?php }// End if().
824
			?>
825
			</tbody>
826
		</table>
827
828
		<h3><?php _e( 'Recent Donations', 'give' ); ?></h3>
829
		<?php
830
		$payment_ids = explode( ',', $donor->payment_ids );
831
		$payments    = give_get_payments( array(
832
			'post__in' => $payment_ids,
833
		) );
834
		$payments    = array_slice( $payments, 0, 10 );
835
		?>
836
		<table class="wp-list-table widefat striped payments">
837
			<thead>
838
			<tr>
839
				<th scope="col"><?php _e( 'ID', 'give' ); ?></th>
840
				<th scope="col"><?php _e( 'Amount', 'give' ); ?></th>
841
				<th scope="col"><?php _e( 'Date', 'give' ); ?></th>
842
				<th scope="col"><?php _e( 'Status', 'give' ); ?></th>
843
				<th scope="col"><?php _e( 'Actions', 'give' ); ?></th>
844
			</tr>
845
			</thead>
846
			<tbody>
847
			<?php if ( ! empty( $payments ) ) { ?>
848
				<?php foreach ( $payments as $payment ) : ?>
849
					<tr>
850
						<td><?php echo Give()->seq_donation_number->get_serial_code( $payment->ID ); ?></td>
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'Give'
Loading history...
851
						<td><?php echo give_donation_amount( $payment->ID, array(
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'give_donation_amount'
Loading history...
852
								'currency' => true,
853
								'amount'   => true,
854
								'type'     => 'donor'
855
							) ); ?></td>
0 ignored issues
show
Coding Style introduced by
This line of the multi-line function call does not seem to be indented correctly. Expected 24 spaces, but found 28.
Loading history...
856
						<td><?php echo date_i18n( give_date_format(), strtotime( $payment->post_date ) ); ?></td>
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'date_i18n'
Loading history...
857
						<td><?php echo give_get_payment_status( $payment, true ); ?></td>
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'give_get_payment_status'
Loading history...
858
						<td>
859
							<?php
860
							printf(
861
								'<a href="%1$s" aria-label="%2$s">%3$s</a>',
862
								admin_url( 'edit.php?post_type=give_forms&page=give-payment-history&view=view-payment-details&id=' . $payment->ID ),
863
								sprintf(
864
								/* translators: %s: Donation ID */
0 ignored issues
show
Coding Style introduced by
This line of the multi-line function call does not seem to be indented correctly. Expected 36 spaces, but found 32.
Loading history...
865
									esc_attr__( 'View Donation %s.', 'give' ),
866
									$payment->ID
867
								),
868
								__( 'View Donation', 'give' )
869
							);
870
							?>
871
872
							<?php
873
							/**
874
							 * Fires in donor profile screen, in the recent donations tables action links.
875
							 *
876
							 * Allows you to add more action links for each donation, after the 'View Donation' action link.
877
							 *
878
							 * @since 1.0
879
							 *
880
							 * @param object $donor The donor object being displayed.
881
							 * @param object $payment The payment object being displayed.
882
							 */
883
							do_action( 'give_donor_recent_purchases_actions', $donor, $payment );
884
							?>
885
						</td>
886
					</tr>
887
				<?php endforeach; ?>
888
			<?php } else { ?>
889
				<tr>
890
					<td colspan="5"><?php _e( 'No donations found.', 'give' ); ?></td>
891
				</tr>
892
			<?php }// End if().
893
			?>
894
			</tbody>
895
		</table>
896
897
		<h3><?php _e( 'Completed Forms', 'give' ); ?></h3>
898
		<?php
899
		$donations = give_get_users_completed_donations( $donor->email );
900
		?>
901
		<table class="wp-list-table widefat striped donations">
902
			<thead>
903
			<tr>
904
				<th scope="col"><?php _e( 'Form', 'give' ); ?></th>
905
				<th scope="col" width="120px"><?php _e( 'Actions', 'give' ); ?></th>
906
			</tr>
907
			</thead>
908
			<tbody>
909
			<?php if ( ! empty( $donations ) ) { ?>
910
				<?php foreach ( $donations as $donation ) : ?>
0 ignored issues
show
Bug introduced by
The expression $donations of type boolean|object is not guaranteed to be traversable. How about adding an additional type check?

There are different options of fixing this problem.

  1. If you want to be on the safe side, you can add an additional type-check:

    $collection = json_decode($data, true);
    if ( ! is_array($collection)) {
        throw new \RuntimeException('$collection must be an array.');
    }
    
    foreach ($collection as $item) { /** ... */ }
    
  2. If you are sure that the expression is traversable, you might want to add a doc comment cast to improve IDE auto-completion and static analysis:

    /** @var array $collection */
    $collection = json_decode($data, true);
    
    foreach ($collection as $item) { /** .. */ }
    
  3. Mark the issue as a false-positive: Just hover the remove button, in the top-right corner of this issue for more options.

Loading history...
911
					<tr>
912
						<td><?php echo $donation->post_title; ?></td>
0 ignored issues
show
introduced by
Expected next thing to be a escaping function, not '$donation'
Loading history...
913
						<td>
914
							<?php
915
							printf(
916
								'<a href="%1$s" aria-label="%2$s">%3$s</a>',
917
								esc_url( admin_url( 'post.php?action=edit&post=' . $donation->ID ) ),
918
								sprintf(
919
								/* translators: %s: form name */
0 ignored issues
show
Coding Style introduced by
This line of the multi-line function call does not seem to be indented correctly. Expected 36 spaces, but found 32.
Loading history...
920
									esc_attr__( 'View Form %s.', 'give' ),
921
									$donation->post_title
922
								),
923
								__( 'View Form', 'give' )
924
							);
925
							?>
926
						</td>
927
					</tr>
928
				<?php endforeach; ?>
929
			<?php } else { ?>
930
				<tr>
931
					<td colspan="2"><?php _e( 'No completed donations found.', 'give' ); ?></td>
932
				</tr>
933
			<?php } ?>
934
			</tbody>
935
		</table>
936
		<?php
937
		/**
938
		 * Fires in donor profile screen, below the tables.
939
		 *
940
		 * @since 1.0
941
		 *
942
		 * @param object $donor The donor object being displayed.
943
		 */
944
		do_action( 'give_donor_after_tables', $donor );
945
		?>
946
947
	</div>
948
949
	<?php
950
	/**
951
	 * Fires in donor profile screen, below the donor card.
952
	 *
953
	 * @since 1.0
954
	 *
955
	 * @param object $donor The donor object being displayed.
956
	 */
957
	do_action( 'give_donor_card_bottom', $donor );
958
959
}
960
961
/**
962
 * View the notes of a donor.
963
 *
964
 * @since  1.0
965
 *
966
 * @param  Give_Donor $donor The donor object being displayed.
967
 *
968
 * @return void
969
 */
970
function give_donor_notes_view( $donor ) {
971
972
	$paged       = isset( $_GET['paged'] ) && is_numeric( $_GET['paged'] ) ? $_GET['paged'] : 1;
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...
973
	$paged       = absint( $paged );
974
	$note_count  = $donor->get_notes_count();
975
	$per_page    = apply_filters( 'give_donor_notes_per_page', 20 );
976
	$total_pages = ceil( $note_count / $per_page );
977
	$donor_notes = $donor->get_notes( $per_page, $paged );
978
	?>
979
980
	<div id="donor-notes-wrapper">
981
		<div class="donor-notes-header">
982
			<?php echo get_avatar( $donor->email, 30 ); ?> <span><?php echo $donor->name; ?></span>
0 ignored issues
show
introduced by
Expected next thing to be a escaping function, not '$donor'
Loading history...
983
		</div>
984
		<h3><?php _e( 'Notes', 'give' ); ?></h3>
985
986
		<?php if ( 1 == $paged ) : ?>
987
			<div style="display: block; margin-bottom: 55px;">
988
				<form id="give-add-donor-note" method="post"
989
				      action="<?php echo admin_url( 'edit.php?post_type=give_forms&page=give-donors&view=notes&id=' . $donor->id ); ?>">
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'admin_url'
Loading history...
990
					<textarea id="donor-note" name="donor_note" class="donor-note-input" rows="10"></textarea>
991
					<br/>
992
					<input type="hidden" id="donor-id" name="customer_id" value="<?php echo $donor->id; ?>"/>
0 ignored issues
show
introduced by
Expected next thing to be a escaping function, not '$donor'
Loading history...
993
					<input type="hidden" name="give_action" value="add-donor-note"/>
994
					<?php wp_nonce_field( 'add-donor-note', 'add_donor_note_nonce', true, true ); ?>
995
					<input id="add-donor-note" class="right button-primary" type="submit" value="Add Note"/>
996
				</form>
997
			</div>
998
		<?php endif; ?>
999
1000
		<?php
1001
		$pagination_args = array(
1002
			'base'     => '%_%',
1003
			'format'   => '?paged=%#%',
1004
			'total'    => $total_pages,
1005
			'current'  => $paged,
1006
			'show_all' => true,
1007
		);
1008
1009
		echo paginate_links( $pagination_args );
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'paginate_links'
Loading history...
1010
		?>
1011
1012
		<div id="give-donor-notes" class="postbox">
1013
			<?php if ( count( $donor_notes ) > 0 ) { ?>
1014
				<?php foreach ( $donor_notes as $key => $note ) : ?>
1015
					<div class="donor-note-wrapper dashboard-comment-wrap comment-item">
1016
					<span class="note-content-wrap">
1017
						<?php echo stripslashes( $note ); ?>
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'stripslashes'
Loading history...
1018
					</span>
1019
					</div>
1020
				<?php endforeach; ?>
1021
			<?php } else { ?>
1022
				<div class="give-no-donor-notes">
1023
					<?php _e( 'No donor notes found.', 'give' ); ?>
1024
				</div>
1025
			<?php } ?>
1026
		</div>
1027
1028
		<?php echo paginate_links( $pagination_args ); ?>
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'paginate_links'
Loading history...
1029
1030
	</div>
1031
1032
	<?php
1033
}
1034
1035
/**
1036
 * Thw donor delete view.
1037
 *
1038
 * @since  1.0
1039
 *
1040
 * @param  object $donor The donor object being displayed.
1041
 *
1042
 * @return void
1043
 */
1044
function give_donor_delete_view( $donor ) {
1045
1046
	$donor_edit_role = apply_filters( 'give_edit_donors_role', 'edit_give_payments' );
0 ignored issues
show
Unused Code introduced by
$donor_edit_role 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...
1047
1048
	/**
1049
	 * Fires in donor delete screen, above the content.
1050
	 *
1051
	 * @since 1.0
1052
	 *
1053
	 * @param object $donor The donor object being displayed.
1054
	 */
1055
	do_action( 'give_donor_delete_top', $donor );
1056
	?>
1057
1058
	<div class="info-wrapper donor-section">
1059
1060
		<form id="delete-donor" method="post"
1061
		      action="<?php echo admin_url( 'edit.php?post_type=give_forms&page=give-donors&view=delete&id=' . $donor->id ); ?>">
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'admin_url'
Loading history...
1062
1063
			<div class="donor-notes-header">
1064
				<?php echo get_avatar( $donor->email, 30 ); ?> <span><?php echo $donor->name; ?></span>
0 ignored issues
show
introduced by
Expected next thing to be a escaping function, not '$donor'
Loading history...
1065
			</div>
1066
1067
1068
			<div class="donor-info delete-donor">
1069
1070
				<span class="delete-donor-options">
1071
					<p>
1072
						<?php echo Give()->html->checkbox( array(
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'Give'
Loading history...
1073
							'name' => 'give-donor-delete-confirm',
1074
						) ); ?>
1075
						<label
1076
							for="give-donor-delete-confirm"><?php _e( 'Are you sure you want to delete this donor?', 'give' ); ?></label>
1077
					</p>
1078
1079
					<p>
1080
						<?php echo Give()->html->checkbox( array(
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'Give'
Loading history...
1081
							'name'    => 'give-donor-delete-records',
1082
							'options' => array(
1083
								'disabled' => true,
1084
							),
1085
						) ); ?>
1086
						<label
1087
							for="give-donor-delete-records"><?php _e( 'Delete all associated donations and records?', 'give' ); ?></label>
1088
					</p>
1089
1090
					<?php
1091
					/**
1092
					 * Fires in donor delete screen, bellow the delete inputs.
1093
					 *
1094
					 * Allows you to add custom delete inputs.
1095
					 *
1096
					 * @since 1.0
1097
					 *
1098
					 * @param object $donor The donor object being displayed.
1099
					 */
1100
					do_action( 'give_donor_delete_inputs', $donor );
1101
					?>
1102
				</span>
1103
1104
				<span id="donor-edit-actions">
1105
					<input type="hidden" name="donor_id" value="<?php echo $donor->id; ?>"/>
0 ignored issues
show
introduced by
Expected next thing to be a escaping function, not '$donor'
Loading history...
1106
					<?php wp_nonce_field( 'give-delete-donor', '_wpnonce', false, true ); ?>
1107
					<input type="hidden" name="give_action" value="delete_donor"/>
1108
					<input type="submit" disabled="disabled" id="give-delete-donor" class="button-primary"
1109
					       value="<?php _e( 'Delete Donor', 'give' ); ?>"/>
1110
					<a id="give-delete-donor-cancel"
1111
					   href="<?php echo admin_url( 'edit.php?post_type=give_forms&page=give-donors&view=overview&id=' . $donor->id ); ?>"
0 ignored issues
show
introduced by
Expected a sanitizing function (see Codex for 'Data Validation'), but instead saw 'admin_url'
Loading history...
1112
					   class="delete"><?php _e( 'Cancel', 'give' ); ?></a>
1113
				</span>
1114
1115
			</div>
1116
1117
		</form>
1118
	</div>
1119
1120
	<?php
1121
	/**
1122
	 * Fires in donor delete screen, bellow the content.
1123
	 *
1124
	 * @since 1.0
1125
	 *
1126
	 * @param object $donor The donor object being displayed.
1127
	 */
1128
	do_action( 'give_donor_delete_bottom', $donor );
1129
}
1130