Completed
Pull Request — master (#1749)
by Devin
06:21
created

admin-pages.php ➔ give_tools_page_pages()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 24
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 9
nc 1
nop 1
dl 0
loc 24
ccs 0
cts 0
cp 0
crap 2
rs 8.9713
c 0
b 0
f 0
1
<?php
0 ignored issues
show
Coding Style Compatibility introduced by
For compatibility and reusability of your code, PSR1 recommends that a file should introduce either new symbols (like classes, functions, etc.) or have side-effects (like outputting something, or including other files), but not both at the same time. The first symbol is defined on line 32 and the first side effect is on line 14.

The PSR-1: Basic Coding Standard recommends that a file should either introduce new symbols, that is classes, functions, constants or similar, or have side effects. Side effects are anything that executes logic, like for example printing output, changing ini settings or writing to a file.

The idea behind this recommendation is that merely auto-loading a class should not change the state of an application. It also promotes a cleaner style of programming and makes your code less prone to errors, because the logic is not spread out all over the place.

To learn more about the PSR-1, please see the PHP-FIG site on the PSR-1.

Loading history...
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 1
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;
0 ignored issues
show
Compatibility Best Practice introduced by
Use of global functionality is not recommended; it makes your code harder to test, and less reusable.

Instead of relying on global state, we recommend one of these alternatives:

1. Pass all data via parameters

function myFunction($a, $b) {
    // Do something
}

2. Create a class that maintains your state

class MyClass {
    private $a;
    private $b;

    public function __construct($a, $b) {
        $this->a = $a;
        $this->b = $b;
    }

    public function myFunction() {
        // Do something
    }
}
Loading history...
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 1
	$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 2
74
	//Add-ons
75 2
	$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 2
77 2
	//Upgrades
78 2
	$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 2
80 2
81 2
}
82
83
add_action( 'admin_menu', 'give_add_options_links', 10 );
84 2
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;
0 ignored issues
show
Compatibility Best Practice introduced by
Use of global functionality is not recommended; it makes your code harder to test, and less reusable.

Instead of relying on global state, we recommend one of these alternatives:

1. Pass all data via parameters

function myFunction($a, $b) {
    // Do something
}

2. Create a class that maintains your state

class MyClass {
    private $a;
    private $b;

    public function __construct($a, $b) {
        $this->a = $a;
        $this->b = $b;
    }

    public function myFunction() {
        // Do something
    }
}
Loading history...
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 2
	$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 2
				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 2
				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 2
					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 2
				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 2
				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 2
				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 2
				$found = true;
281
			}
282
			break;
283
		case 'donors':
284
			switch ( $passed_view ) {
285 2
				case 'list-table':
286 2
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-donors' === $page && false === $view ) {
287
						$found = true;
288 2
					}
289 2
					break;
290 2
				case 'overview':
291 2
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-donors' === $page && 'overview' === $view ) {
292 2
						$found = true;
293 2
					}
294 2
					break;
295 2
				case 'notes':
296
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-donors' === $page && 'notes' === $view ) {
297 2
						$found = true;
298 2
					}
299
					break;
300
				default:
301
					if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-donors' === $page ) {
302
						$found = true;
303 2
					}
304 1
					break;
305 1
			}
306 2
			break;
307 2
		case 'reports':
308
			if ( ( 'give_forms' == $typenow || 'give_forms' === $post_type ) && $pagenow == 'edit.php' && 'give-reports' === $page ) {
309 2
				$found = true;
310
			}
311 1
			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;
0 ignored issues
show
Compatibility Best Practice introduced by
Use of global functionality is not recommended; it makes your code harder to test, and less reusable.

Instead of relying on global state, we recommend one of these alternatives:

1. Pass all data via parameters

function myFunction($a, $b) {
    // Do something
}

2. Create a class that maintains your state

class MyClass {
    private $a;
    private $b;

    public function __construct($a, $b) {
        $this->a = $a;
        $this->b = $b;
    }

    public function myFunction() {
        // Do something
    }
}
Loading history...
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( 'settings/class-settings-general.php' ),
357
358
		// Payment Gateways Settings.
359
		include( 'settings/class-settings-gateways.php' ),
360
361
		// Display settings.
362
		include( 'settings/class-settings-display.php' ),
363
364
		// Emails settings.
365
		include( 'settings/class-settings-email.php' ),
366
367
		// Addons settings.
368
		include( 'settings/class-settings-addon.php' ),
369
370
		// License settings.
371
		include( 'settings/class-settings-license.php' ),
372
373
		// Advanced settinns.
374
		include( '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
	);
407
408
	// Output.
409
	return $settings;
410
}
411
add_filter( 'give-reports_get_settings_pages', 'give_reports_page_pages', 0, 1 );
412
413
/**
414
 * Add setting tab to give-settings page
415
 *
416
 * @since  1.8
417
 * @param  array $settings
418
 * @return array
419
 */
420
function give_tools_page_pages( $settings ) {
421
	include( 'abstract-admin-settings-page.php' );
422
423
	$settings = array(
424
		// System Info.
425
		include( 'tools/class-settings-system-info.php' ),
426
427
		// Logs.
428
		include( 'tools/class-settings-logs.php' ),
429
430
		// API.
431
		include( 'tools/class-settings-api.php' ),
432
433
		// Data.
434
		include( 'tools/class-settings-data.php' ),
435
436
		// Export.
437
		include( 'tools/class-settings-export.php' ),
438
439
	);
440
441
	// Output.
442
	return $settings;
443
}
444
add_filter( 'give-tools_get_settings_pages', 'give_tools_page_pages', 0, 1 );
445
446
/**
447
 * Set default tools page tab.
448
 *
449
 * @since  1.8
450
 * @param  string $default_tab Default tab name.
451
 * @return string
452
 */
453
function give_set_default_tab_form_tools_page( $default_tab ) {
0 ignored issues
show
Unused Code introduced by
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...
454
	return 'system-info';
455
}
456
add_filter( 'give_default_setting_tab_give-tools', 'give_set_default_tab_form_tools_page', 10, 1 );
457
458
459
/**
460
 * Set default reports page tab.
461
 *
462
 * @since  1.8
463
 * @param  string $default_tab Default tab name.
464
 * @return string
465
 */
466
function give_set_default_tab_form_reports_page( $default_tab ) {
0 ignored issues
show
Unused Code introduced by
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...
467
	return 'earnings';
468
}
469
add_filter( 'give_default_setting_tab_give-reports', 'give_set_default_tab_form_reports_page', 10, 1 );