Completed
Push — es6/issue-1475 ( 93c1ad )
by Ravinder
1139:39 queued 1133:44
created

admin-pages.php ➔ give_is_admin_page()   D

Complexity

Conditions 47
Paths 52

Size

Total Lines 97

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 47
nc 52
nop 2
dl 0
loc 97
rs 4.1666
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
 * 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_donors_page
28
 *
29
 * @return void
30
 */
31
function give_add_options_links() {
32
	global $give_settings_page, $give_payments_page, $give_reports_page, $give_add_ons_page, $give_donors_page, $give_tools_page;
33
34
	//Payments
35
	$give_payment       = get_post_type_object( 'give_payment' );
36
	$give_payments_page = add_submenu_page(
37
		'edit.php?post_type=give_forms',
38
		$give_payment->labels->name,
39
		$give_payment->labels->menu_name,
40
		'edit_give_payments',
41
		'give-payment-history',
42
		'give_payment_history_page'
43
	);
44
45
	//Donors
46
	$give_donors_page = add_submenu_page(
47
		'edit.php?post_type=give_forms',
48
		esc_html__( 'Donors', 'give' ),
49
		esc_html__( 'Donors', 'give' ),
50
		'view_give_reports',
51
		'give-donors',
52
		'give_donors_page'
53
	);
54
55
	//Reports`
56
	$give_reports_page = add_submenu_page(
57
		'edit.php?post_type=give_forms',
58
		esc_html__( 'Donation Reports', 'give' ),
59
		esc_html__( 'Reports', 'give' ),
60
		'view_give_reports',
61
		'give-reports',
62
		array(
63
			Give()->give_settings,
64
			'output',
65
		)
66
	);
67
68
	//Settings
69
	$give_settings_page = add_submenu_page(
70
		'edit.php?post_type=give_forms',
71
		esc_html__( 'Give Settings', 'give' ),
72
		esc_html__( 'Settings', 'give' ),
73
		'manage_give_settings',
74
		'give-settings',
75
		array(
76
			Give()->give_settings,
77
			'output',
78
		)
79
	);
80
81
	//Tools.
82
	$give_tools_page = add_submenu_page(
83
		'edit.php?post_type=give_forms',
84
		esc_html__( 'Give Tools', 'give' ),
85
		esc_html__( 'Tools', 'give' ),
86
		'manage_give_settings',
87
		'give-tools',
88
		array(
89
			Give()->give_settings,
90
			'output',
91
		)
92
	);
93
94
	//Add-ons
95
	$give_add_ons_page = add_submenu_page(
96
		'edit.php?post_type=give_forms',
97
		esc_html__( 'Give Add-ons', 'give' ),
98
		esc_html__( 'Add-ons', 'give' ),
99
		'install_plugins',
100
		'give-addons',
101
		'give_add_ons_page'
102
	);
103
}
104
105
add_action( 'admin_menu', 'give_add_options_links', 10 );
106
107
/**
108
 *  Determines whether the current admin page is a Give admin page.
109
 *
110
 *  Only works after the `wp_loaded` hook, & most effective
111
 *  starting on `admin_menu` hook.
112
 *
113
 * @since 1.0
114
 * @since 2.1 Simplified function.
115
 *
116
 * @param string $passed_page Optional. Main page's slug
117
 * @param string $passed_view Optional. Page view ( ex: `edit` or `delete` )
118
 *
119
 * @return bool True if Give admin page.
120
 */
121
function give_is_admin_page( $passed_page = '', $passed_view = '' ) {
122
	global $pagenow, $typenow;
123
124
	$found          = true;
125
	$get_query_args = isset( $_GET ) ? array_map( 'strtolower', $_GET ) : array();
0 ignored issues
show
introduced by
Detected access of super global var $_GET, probably need manual inspection.
Loading history...
126
127
	// Set default argument, if not passed.
128
	$query_args = wp_parse_args( $get_query_args, array_fill_keys( array( 'post_type', 'action', 'taxonomy', 'page', 'view', 'tab' ), false ) );
129
130
	switch ( $passed_page ) {
131
		case 'categories':
132
		case 'tags':
133
			$has_view = in_array( $passed_view, array( 'list-table', 'edit', 'new' ), true );
134
135
			if ( ! in_array( $query_args['taxonomy'], array( 'give_forms_category', 'give_forms_tag' ), true ) && 'edit-tags.php' !== $pagenow
136
			     && ( $has_view ||
137
			          (
138
				          ( in_array( $passed_view, array( 'list-table', 'new' ), true ) && 'edit' === $query_args['action'] ) ||
139
				          ( 'edit' !== $passed_view && 'edit' !== $query_args['action'] )
140
				          && ! $has_view
141
			          )
142
			     )
143
			) {
144
				$found = false;
145
			}
146
			break;
147
		// Give Donation form page.
148
		case 'give_forms':
149
			$has_view = in_array( $passed_view, array( 'new', 'list-table', 'edit' ), true );
150
151
			if ( 'give_forms' !== $typenow
152
			     && ( ( 'list-table' !== $passed_view && 'edit.php' !== $pagenow  ) &&
153
			          ( 'edit' !== $passed_view && 'post.php' !== $pagenow ) &&
154
			          ( 'new' !== $passed_view && 'post-new.php' !== $pagenow ) )
155
			     || ( ! $has_view && ( 'post-new.php' !== $pagenow && 'give_forms' !== $query_args['post_type'] ) )
156
			) {
157
				$found = false;
158
			}
159
			break;
160
		// Give Donors page.
161
		case 'donors':
162
			$has_view = array_intersect( array( $passed_view, $query_args['view'] ), array( 'list-table', 'overview', 'notes' ) );
163
164
			if (
165
				( 'give-donors' !== $query_args['page'] || 'edit.php' !== $pagenow )
166
			     && ( ( $passed_view !== $query_args['view'] || ! empty( $has_view ) ) ||
167
			          ( false !== $query_args['view'] && 'list-table' !== $passed_view )
168
			     )
169
			) {
170
				$found = false;
171
			}
172
			break;
173
		// Give Donations page.
174
		case 'payments' :
175
			if ( ( 'give-payment-history' !== $query_args['page'] || 'edit.php' !== $pagenow )
176
			     && ( ! in_array( $passed_view, array( 'list-table', 'edit' ), true ) ||
177
			          (
178
				          ( 'list-table' !== $passed_view && false !== $query_args['view'] ) ||
179
				          ( 'edit' !== $passed_view && 'view-payment-details' !== $query_args['view'] )
180
			          )
181
			     )
182
			) {
183
				$found = false;
184
			}
185
			break;
186
		case 'reports':
187
		case 'settings':
188
		case 'addons':
189
			// Get current tab.
190
			$current_tab       = empty( $passed_view ) ? $query_args['tab'] : $passed_view;
191
			$give_setting_page = in_array( $query_args['page'], array( 'give-reports', 'give-settings', 'give-addons' ), true );
192
193
			// Check if it's Give Setting page or not.
194
			if ( ( 'edit.php' !== $pagenow || ! $give_setting_page )
195
			     && ! Give_Admin_Settings::is_setting_page( $current_tab )
196
			) {
197
				$found = false;
198
			}
199
			break;
200
		default:
201
			global $give_payments_page, $give_settings_page, $give_reports_page, $give_system_info_page, $give_add_ons_page, $give_settings_export, $give_donors_page, $give_tools_page;
202
			$admin_pages = apply_filters( 'give_admin_pages', array(
203
				$give_payments_page,
204
				$give_settings_page,
205
				$give_reports_page,
206
				$give_system_info_page,
207
				$give_add_ons_page,
208
				$give_settings_export,
209
				$give_donors_page,
210
				$give_tools_page,
211
				'widgets.php',
212
			) );
213
214
			$found = ( 'give_forms' === $typenow || in_array( $pagenow, array_merge( $admin_pages, array( 'index.php', 'post-new.php', 'post.php' ) ), true ) ) ? true : false;
215
	}
216
	return (bool) apply_filters( 'give_is_admin_page', $found, $query_args['page'], $query_args['view'], $passed_page, $passed_view );
217
}
218
219
/**
220
 * Add setting tab to give-settings page
221
 *
222
 * @since  1.8
223
 * @param  array $settings
224
 * @return array
225
 */
226
function give_settings_page_pages( $settings ) {
227
	include( 'abstract-admin-settings-page.php' );
228
	include( 'settings/class-settings-cmb2-backward-compatibility.php' );
229
230
	$settings = array(
231
		// General settings.
232
		include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-general.php' ),
233
234
		// Payment Gateways Settings.
235
		include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-gateways.php' ),
236
237
		// Display settings.
238
		include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-display.php' ),
239
240
		// Emails settings.
241
		include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-email.php' ),
242
243
		// Addons settings.
244
		include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-addon.php' ),
245
246
		// License settings.
247
		include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-license.php' ),
248
249
		// Advanced settings.
250
		include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-advanced.php' )
251
	);
252
253
	// Output.
254
	return $settings;
255
}
256
add_filter( 'give-settings_get_settings_pages', 'give_settings_page_pages', 0, 1 );
257
258
259
/**
260
 * Add setting tab to give-settings page
261
 *
262
 * @since  1.8
263
 * @param  array $settings
264
 * @return array
265
 */
266
function give_reports_page_pages( $settings ) {
267
	include( 'abstract-admin-settings-page.php' );
268
269
	$settings = array(
270
		// Earnings.
271
		include( 'reports/class-earnings-report.php' ),
272
273
		// Forms.
274
		include( 'reports/class-forms-report.php' ),
275
276
		// Gateways.
277
		include( 'reports/class-gateways-report.php' ),
278
279
	);
280
281
	// Output.
282
	return $settings;
283
}
284
add_filter( 'give-reports_get_settings_pages', 'give_reports_page_pages', 0, 1 );
285
286
/**
287
 * Add setting tab to give-settings page
288
 *
289
 * @since  1.8
290
 * @param  array $settings
291
 * @return array
292
 */
293
function give_tools_page_pages( $settings ) {
294
	include( 'abstract-admin-settings-page.php' );
295
296
	$settings = array(
297
		// System Info.
298
		include( GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-system-info.php' ),
299
300
		// Logs.
301
		include( GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-logs.php' ),
302
303
		// API.
304
		include( GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-api.php' ),
305
306
		// Data.
307
		include( GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-data.php' ),
308
309
		// Export.
310
		include( GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-export.php' ),
311
312
		// Import
313
		include_once( GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-import.php' ),
314
	);
315
316
	// Output.
317
	return $settings;
318
}
319
add_filter( 'give-tools_get_settings_pages', 'give_tools_page_pages', 0, 1 );
320
321
/**
322
 * Set default tools page tab.
323
 *
324
 * @since  1.8
325
 * @param  string $default_tab Default tab name.
326
 * @return string
327
 */
328
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...
329
	return 'system-info';
330
}
331
add_filter( 'give_default_setting_tab_give-tools', 'give_set_default_tab_form_tools_page', 10, 1 );
332
333
334
/**
335
 * Set default reports page tab.
336
 *
337
 * @since  1.8
338
 * @param  string $default_tab Default tab name.
339
 * @return string
340
 */
341
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...
342
	return 'earnings';
343
}
344
add_filter( 'give_default_setting_tab_give-reports', 'give_set_default_tab_form_reports_page', 10, 1 );
345
346
347
/**
348
 * Add a page display state for special Give pages in the page list table.
349
 *
350
 * @since 1.8.18
351
 *
352
 * @param array $post_states An array of post display states.
353
 * @param WP_Post $post The current post object.
354
 *
355
 * @return array
356
 */
357
function give_add_display_page_states( $post_states, $post ) {
358
359
	switch( $post->ID ) {
0 ignored issues
show
introduced by
Space after opening control structure is required
Loading history...
introduced by
No space before opening parenthesis is prohibited
Loading history...
360
		case give_get_option( 'success_page' ):
361
			$post_states['give_successfully_page'] = __( 'Donation Success Page', 'give' );
362
			break;
363
364
		case give_get_option( 'failure_page' ):
365
			$post_states['give_failure_page'] = __( 'Donation Failed Page', 'give' );
366
			break;
367
368
		case give_get_option( 'history_page' ):
369
			$post_states['give_history_page'] = __( 'Donation History Page', 'give' );
370
			break;
371
	}
372
373
	return $post_states;
374
}
375
376
// Add a post display state for special Give pages.
377
add_filter( 'display_post_states', 'give_add_display_page_states', 10, 2 );