Completed
Push — issues/611 ( 661115...758b1c )
by Ravinder
21:11
created

includes/admin/admin-pages.php (1 issue)

Severity

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
 * Admin Pages
4
 *
5
 * @package     Give
6
 * @subpackage  Admin/Pages
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
 * Creates the admin submenu pages under the Give menu and assigns their
19
 * links to global variables
20
 *
21
 * @since 1.0
22
 *
23
 * @global $give_settings_page
24
 * @global $give_payments_page
25
 * @global $give_reports_page
26
 * @global $give_add_ons_page
27
 * @global $give_upgrades_screen
28
 * @global $give_donors_page
29
 *
30
 * @return void
31
 */
32
function give_add_options_links() {
33
	global $give_settings_page, $give_payments_page, $give_reports_page, $give_add_ons_page, $give_upgrades_screen, $give_donors_page, $give_tools_page;
34
35
	//Payments
36
	$give_payment       = get_post_type_object( 'give_payment' );
37
	$give_payments_page = add_submenu_page( 'edit.php?post_type=give_forms', $give_payment->labels->name, $give_payment->labels->menu_name, 'edit_give_payments', 'give-payment-history', 'give_payment_history_page' );
38
39
	//Donors
40
	$give_donors_page = add_submenu_page( 'edit.php?post_type=give_forms', esc_html__( 'Donors', 'give' ), esc_html__( 'Donors', 'give' ), 'view_give_reports', 'give-donors', 'give_customers_page' );
41
42
	//Reports`
43
	$give_reports_page = add_submenu_page(
44
		'edit.php?post_type=give_forms',
45
		esc_html__( 'Donation Reports', 'give' ),
46
		esc_html__( 'Reports', 'give' ),
47
		'view_give_reports',
48
		'give-reports',
49
		array(
50
			Give()->give_settings,
51
			'output',
52
		)
53
	);
54
55
	//Settings
56
	$give_settings_page = add_submenu_page(
57
		'edit.php?post_type=give_forms',
58
		esc_html__( 'Give Settings', 'give' ),
59
		esc_html__( 'Settings', 'give' ),
60
		'manage_give_settings',
61
		'give-settings',
62
		array(
63
			Give()->give_settings,
64
			'output',
65
		)
66
	);
67
68
	//Tools.
69
	$give_tools_page = add_submenu_page( 'edit.php?post_type=give_forms', esc_html__( 'Give Tools', 'give' ), esc_html__( 'Tools', 'give' ), 'manage_give_settings', 'give-tools', array(
70
		Give()->give_settings,
71
		'output'
72
	) );
73
74
	//Add-ons
75
	$give_add_ons_page = add_submenu_page( 'edit.php?post_type=give_forms', esc_html__( 'Give Add-ons', 'give' ), esc_html__( 'Add-ons', 'give' ), 'install_plugins', 'give-addons', 'give_add_ons_page' );
76
77
	//Upgrades
78
	$give_upgrades_screen = add_submenu_page( null, esc_html__( 'Give Upgrades', 'give' ), esc_html__( 'Give Upgrades', 'give' ), 'manage_give_settings', 'give-upgrades', 'give_upgrades_screen' );
79
80
81
}
82
83
add_action( 'admin_menu', 'give_add_options_links', 10 );
84
85
/**
86
 *  Determines whether the current admin page is a Give admin page.
87
 *
88
 *  Only works after the `wp_loaded` hook, & most effective
89
 *  starting on `admin_menu` hook.
90
 *
91
 * @since 1.0
92
 *
93
 * @param string $passed_page Optional. Main page's slug
94
 * @param string $passed_view Optional. Page view ( ex: `edit` or `delete` )
95
 *
96
 * @return bool True if Give admin page.
97
 */
98
function give_is_admin_page( $passed_page = '', $passed_view = '' ) {
99
100
	global $pagenow, $typenow;
101
102
	$found     = false;
103
	$post_type = isset( $_GET['post_type'] ) ? strtolower( $_GET['post_type'] ) : false;
104
	$action    = isset( $_GET['action'] ) ? strtolower( $_GET['action'] ) : false;
105
	$taxonomy  = isset( $_GET['taxonomy'] ) ? strtolower( $_GET['taxonomy'] ) : false;
106
	$page      = isset( $_GET['page'] ) ? strtolower( $_GET['page'] ) : false;
107
	$view      = isset( $_GET['view'] ) ? strtolower( $_GET['view'] ) : false;
108
	$tab       = isset( $_GET['tab'] ) ? strtolower( $_GET['tab'] ) : false;
109
110
	switch ( $passed_page ) {
111
		case 'give_forms':
112
			switch ( $passed_view ) {
113
				case 'list-table':
114
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' ) {
115
						$found = true;
116
					}
117
					break;
118
				case 'edit':
119
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'post.php' ) {
120
						$found = true;
121
					}
122
					break;
123
				case 'new':
124
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'post-new.php' ) {
125
						$found = true;
126
					}
127
					break;
128
				default:
129
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) || 'give_forms' === $post_type || ( 'post-new.php' == $pagenow && 'give_forms' === $post_type ) ) {
130
						$found = true;
131
					}
132
					break;
133
			}
134
			break;
135
		case 'categories':
136
			switch ( $passed_view ) {
137
				case 'list-table':
138
				case 'new':
139
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit-tags.php' && 'edit' !== $action && 'give_forms_category' === $taxonomy ) {
140
						$found = true;
141
					}
142
					break;
143
				case 'edit':
144
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit-tags.php' && 'edit' === $action && 'give_forms_category' === $taxonomy ) {
145
						$found = true;
146
					}
147
					break;
148
				default:
149
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit-tags.php' && 'give_forms_category' === $taxonomy ) {
150
						$found = true;
151
					}
152
					break;
153
			}
154
			break;
155
		case 'tags':
156
			switch ( $passed_view ) {
157
				case 'list-table':
158
				case 'new':
159
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit-tags.php' && 'edit' !== $action && 'give_forms_tag' === $taxonomy ) {
160
						$found = true;
161
					}
162
					break;
163
				case 'edit':
164
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit-tags.php' && 'edit' === $action && 'give_forms_tag' === $taxonomy ) {
165
						$found = true;
166
					}
167
					break;
168
				default:
169
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit-tags.php' && 'give_forms_tag' === $taxonomy ) {
170
						$found = true;
171
					}
172
					break;
173
			}
174
			break;
175
		case 'payments':
176
			switch ( $passed_view ) {
177
				case 'list-table':
178
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-payment-history' === $page && false === $view ) {
179
						$found = true;
180
					}
181
					break;
182
				case 'edit':
183
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-payment-history' === $page && 'view-order-details' === $view ) {
184
						$found = true;
185
					}
186
					break;
187
				default:
188
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-payment-history' === $page ) {
189
						$found = true;
190
					}
191
					break;
192
			}
193
			break;
194
		case 'reports':
195
			switch ( $passed_view ) {
196
				// If you want to do something like enqueue a script on a particular report's duration, look at $_GET[ 'range' ]
197
				case 'earnings':
198
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-reports' === $page && ( 'earnings' === $view || '-1' === $view || false === $view ) ) {
199
						$found = true;
200
					}
201
					break;
202
				case 'donors':
203
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-reports' === $page && 'customers' === $view ) {
204
						$found = true;
205
					}
206
					break;
207
				case 'gateways':
208
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-reports' === $page && 'gateways' === $view ) {
209
						$found = true;
210
					}
211
					break;
212
				case 'export':
213
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-reports' === $page && 'export' === $view ) {
214
						$found = true;
215
					}
216
					break;
217
				case 'logs':
218
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-reports' === $page && 'logs' === $view ) {
219
						$found = true;
220
					}
221
					break;
222
				default:
223
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-reports' === $page ) {
224
						$found = true;
225
					}
226
					break;
227
			}
228
			break;
229
		case 'settings':
230
			switch ( $passed_view ) {
231
				case 'general':
232
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-settings' === $page && ( 'general' === $tab || false === $tab ) ) {
233
						$found = true;
234
					}
235
					break;
236
				case 'gateways':
237
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-settings' === $page && 'gateways' === $tab ) {
238
						$found = true;
239
					}
240
					break;
241
				case 'emails':
242
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-settings' === $page && 'emails' === $tab ) {
243
						$found = true;
244
					}
245
					break;
246
				case 'display':
247
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-settings' === $page && 'display' === $tab ) {
248
						$found = true;
249
					}
250
					break;
251
				case 'licenses':
252
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-settings' === $page && 'licenses' === $tab ) {
253
						$found = true;
254
					}
255
					break;
256
				case 'api':
257
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-settings' === $page && 'api' === $tab ) {
258
						$found = true;
259
					}
260
					break;
261
				case 'advanced':
262
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-settings' === $page && 'advanced' === $tab ) {
263
						$found = true;
264
					}
265
					break;
266
				case 'system_info':
267
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-settings' === $page && 'system_info' === $tab ) {
268
						$found = true;
269
					}
270
					break;
271
				default:
272
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-settings' === $page ) {
273
						$found = true;
274
					}
275
					break;
276
			}
277
			break;
278
		case 'addons':
279
			if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-addons' === $page ) {
280
				$found = true;
281
			}
282
			break;
283
		case 'donors':
284
			switch ( $passed_view ) {
285
				case 'list-table':
286
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-donors' === $page && false === $view ) {
287
						$found = true;
288
					}
289
					break;
290
				case 'overview':
291
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-donors' === $page && 'overview' === $view ) {
292
						$found = true;
293
					}
294
					break;
295
				case 'notes':
296
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-donors' === $page && 'notes' === $view ) {
297
						$found = true;
298
					}
299
					break;
300
				default:
301
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-donors' === $page ) {
302
						$found = true;
303
					}
304
					break;
305
			}
306
			break;
307
		case 'reports':
308
			if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-reports' === $page ) {
309
				$found = true;
310
			}
311
			break;
312
		default:
313
			global $give_payments_page, $give_settings_page, $give_reports_page, $give_system_info_page, $give_add_ons_page, $give_settings_export, $give_upgrades_screen, $give_customers_page, $give_tools_page;
314
315
			$admin_pages = apply_filters( 'give_admin_pages', array(
316
				$give_payments_page,
317
				$give_settings_page,
318
				$give_reports_page,
319
				$give_system_info_page,
320
				$give_add_ons_page,
321
				$give_upgrades_screen,
322
				$give_settings_export,
323
				$give_customers_page,
324
				$give_tools_page,
325
				'widgets.php'
326
		) );
327
			if ( 'give_forms' == $typenow || 'index.php' == $pagenow || 'post-new.php' == $pagenow || 'post.php' == $pagenow ) {
328
				$found = true;
329
				if ( 'give-upgrades' === $page ) {
330
					$found = false;
331
				}
332
			} elseif ( in_array( $pagenow, $admin_pages ) ) {
333
				$found = true;
334
			}
335
			break;
336
	}
337
338
	return (bool) apply_filters( 'give_is_admin_page', $found, $page, $view, $passed_page, $passed_view );
339
340
}
341
342
343
/**
344
 * Add setting tab to give-settings page
345
 *
346
 * @since  1.8
347
 * @param  array $settings
348
 * @return array
349
 */
350
function give_settings_page_pages( $settings ) {
351
	include( 'abstract-admin-settings-page.php' );
352
	include( 'settings/class-settings-cmb2-backward-compatibility.php' );
353
354
	$settings = array(
355
		// General settings.
356
		include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-general.php' ),
357
358
		// Payment Gateways Settings.
359
		include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-gateways.php' ),
360
361
		// Display settings.
362
		include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-display.php' ),
363
364
		// Emails settings.
365
		include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-email.php' ),
366
367
		// Addons settings.
368
		include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-addon.php' ),
369
370
		// License settings.
371
		include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-license.php' ),
372
373
		// Advanced settings.
374
		include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-advanced.php' )
375
	);
376
377
	// Output.
378
	return $settings;
379
}
380
add_filter( 'give-settings_get_settings_pages', 'give_settings_page_pages', 0, 1 );
381
382
383
/**
384
 * Add setting tab to give-settings page
385
 *
386
 * @since  1.8
387
 * @param  array $settings
388
 * @return array
389
 */
390
function give_reports_page_pages( $settings ) {
391
	include( 'abstract-admin-settings-page.php' );
392
393
	$settings = array(
394
		// Earnings.
395
		include( 'reporting/class-settings-earnings.php' ),
396
397
		// Forms.
398
		include( 'reporting/class-settings-forms.php' ),
399
400
		// Donors.
401
		include( 'reporting/class-settings-donors.php' ),
402
403
		// Gateways.
404
		include( 'reporting/class-settings-gateways.php' ),
405
406
		// Export.
407
		include( 'reporting/class-settings-export.php' ),
408
	);
409
410
	// Output.
411
	return $settings;
412
}
413
add_filter( 'give-reports_get_settings_pages', 'give_reports_page_pages', 0, 1 );
414
415
/**
416
 * Add setting tab to give-settings page
417
 *
418
 * @since  1.8
419
 * @param  array $settings
420
 * @return array
421
 */
422
function give_tools_page_pages( $settings ) {
423
	include( 'abstract-admin-settings-page.php' );
424
425
	$settings = array(
426
		// System Info.
427
		include( GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-system-info.php' ),
428
429
		// Logs.
430
		include( GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-logs.php' ),
431
432
		// API.
433
		include( GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-api.php' ),
434
435
		// Data.
436
		include( GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-data.php' ),
437
	);
438
439
	// Output.
440
	return $settings;
441
}
442
add_filter( 'give-tools_get_settings_pages', 'give_tools_page_pages', 0, 1 );
443
444
/**
445
 * Set default tools page tab.
446
 *
447
 * @since  1.8
448
 * @param  string $default_tab Default tab name.
449
 * @return string
450
 */
451
function give_set_default_tab_form_tools_page( $default_tab ) {
452
	return 'system-info';
453
}
454
add_filter( 'give_default_setting_tab_give-tools', 'give_set_default_tab_form_tools_page', 10, 1 );
455
456
457
/**
458
 * Set default reports page tab.
459
 *
460
 * @since  1.8
461
 * @param  string $default_tab Default tab name.
462
 * @return string
463
 */
464
function give_set_default_tab_form_reports_page( $default_tab ) {
0 ignored issues
show
The parameter $default_tab 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...
465
	return 'earnings';
466
}
467
add_filter( 'give_default_setting_tab_give-reports', 'give_set_default_tab_form_reports_page', 10, 1 );