admin-pages.php ➔ give_tools_page_pages()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 27

Duplication

Lines 27
Ratio 100 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 1
dl 27
loc 27
rs 9.488
c 0
b 0
f 0
1
<?php
2
/**
3
 * Admin Pages
4
 *
5
 * @package     Give
6
 * @subpackage  Admin/Pages
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
 * 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_donors_page
27
 *
28
 * @return void
29
 */
30
function give_add_options_links() {
31
	global $give_settings_page, $give_payments_page, $give_reports_page, $give_donors_page, $give_tools_page;
32
33
	//Payments
34
	/* @var WP_Post_Type $give_payment */
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
95
add_action( 'admin_menu', 'give_add_options_links', 10 );
96
97
98
99
/**
100
 * Creates the admin add-ons submenu page under the Give menu and assigns their
101
 * link to global variable
102
 *
103
 * @since 2.5.0
104
 *
105
 * @global $give_add_ons_page
106
 *
107
 * @return void
108
 */
109
function give_add_add_ons_option_link(){
110
	global $give_add_ons_page;
111
112
	//Add-ons
113
	$give_add_ons_page = add_submenu_page(
114
		'edit.php?post_type=give_forms',
115
		esc_html__( 'Give Add-ons', 'give' ),
116
		esc_html__( 'Add-ons', 'give' ),
117
		'install_plugins',
118
		'give-addons',
119
		'give_add_ons_page'
120
	);
121
122
}
123
add_action( 'admin_menu', 'give_add_add_ons_option_link', 999999 );
124
125
/**
126
 *  Determines whether the current admin page is a Give admin page.
127
 *
128
 *  Only works after the `wp_loaded` hook, & most effective
129
 *  starting on `admin_menu` hook.
130
 *
131
 * @since 1.0
132
 * @since 2.1 Simplified function.
133
 *
134
 * @param string $passed_page Optional. Main page's slug
135
 * @param string $passed_view Optional. Page view ( ex: `edit` or `delete` )
136
 *
137
 * @return bool True if Give admin page.
138
 */
139
function give_is_admin_page( $passed_page = '', $passed_view = '' ) {
140
	global $pagenow, $typenow;
141
142
	$found          = true;
143
	$get_query_args = ! empty( $_GET ) ? @array_map( 'strtolower', $_GET ) : array();
144
145
	// Set default argument, if not passed.
146
	$query_args = wp_parse_args( $get_query_args, array_fill_keys( array( 'post_type', 'action', 'taxonomy', 'page', 'view', 'tab' ), false ) );
147
148
	switch ( $passed_page ) {
149
		case 'categories':
150
		case 'tags':
151
			$has_view = in_array( $passed_view, array( 'list-table', 'edit', 'new' ), true );
152
153
			if (
154
				! in_array( $query_args['taxonomy'], array( 'give_forms_category', 'give_forms_tag' ), true ) &&
155
				'edit-tags.php' !== $pagenow &&
156
				(
157
					$has_view ||
158
					(
159
						( in_array( $passed_view, array( 'list-table', 'new' ), true ) && 'edit' === $query_args['action'] ) ||
160
						( 'edit' !== $passed_view && 'edit' !== $query_args['action'] ) &&
161
						! $has_view
162
					)
163
				)
164
			) {
165
				$found = false;
166
			}
167
			break;
168
		// Give Donation form page.
169
		case 'give_forms':
170
			$has_view = in_array( $passed_view, array( 'new', 'list-table', 'edit' ), true );
171
172
			if (
173
				'give_forms' !== $typenow &&
174
				(
175
					( 'list-table' !== $passed_view && 'edit.php' !== $pagenow ) &&
176
					( 'edit' !== $passed_view && 'post.php' !== $pagenow ) &&
177
					( 'new' !== $passed_view && 'post-new.php' !== $pagenow )
178
				) ||
179
				(
180
					! $has_view &&
181
					( 'post-new.php' !== $pagenow && 'give_forms' !== $query_args['post_type'] )
182
				)
183
			) {
184
				$found = false;
185
			}
186
			break;
187
		// Give Donors page.
188
		case 'donors':
189
			$has_view = array_intersect( array( $passed_view, $query_args['view'] ), array( 'list-table', 'overview', 'notes' ) );
190
191
			if (
192
				( 'give-donors' !== $query_args['page'] || 'edit.php' !== $pagenow ) &&
193
				(
194
					( $passed_view !== $query_args['view'] || ! empty( $has_view ) ) ||
195
					( false !== $query_args['view'] && 'list-table' !== $passed_view )
196
				)
197
			) {
198
				$found = false;
199
			}
200
			break;
201
		// Give Donations page.
202
		case 'payments':
203
			if (
204
				( 'give-payment-history' !== $query_args['page'] || 'edit.php' !== $pagenow ) &&
205
				(
206
					! in_array( $passed_view, array( 'list-table', 'edit' ), true ) ||
207
					(
208
						( 'list-table' !== $passed_view && false !== $query_args['view'] ) ||
209
						( 'edit' !== $passed_view && 'view-payment-details' !== $query_args['view'] )
210
					)
211
				)
212
			) {
213
				$found = false;
214
			}
215
			break;
216
		case 'reports':
217
		case 'settings':
218
		case 'addons':
219
			// Get current tab.
220
			$current_tab       = empty( $passed_view ) ? $query_args['tab'] : $passed_view;
221
			$give_setting_page = in_array( $query_args['page'], array( 'give-reports', 'give-settings', 'give-addons' ), true );
222
223
			// Check if it's Give Setting page or not.
224
			if (
225
				( 'edit.php' !== $pagenow || ! $give_setting_page ) &&
226
				! Give_Admin_Settings::is_setting_page( $current_tab )
227
			) {
228
				$found = false;
229
			}
230
			break;
231
		default:
232
			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;
233
			$admin_pages = apply_filters( 'give_admin_pages', array(
234
				$give_payments_page,
235
				$give_settings_page,
236
				$give_reports_page,
237
				$give_system_info_page,
238
				$give_add_ons_page,
239
				$give_settings_export,
240
				$give_donors_page,
241
				$give_tools_page,
242
				'widgets.php',
243
			) );
244
245
			$found = ( 'give_forms' === $typenow || in_array( $pagenow, array_merge( $admin_pages, array( 'index.php', 'post-new.php', 'post.php' ) ), true ) ) ? true : false;
246
	}
247
	return (bool) apply_filters( 'give_is_admin_page', $found, $query_args['page'], $query_args['view'], $passed_page, $passed_view );
248
}
249
250
/**
251
 * Add setting tab to give-settings page
252
 *
253
 * @since  1.8
254
 * @param  array $settings
255
 * @return array
256
 */
257 View Code Duplication
function give_settings_page_pages( $settings ) {
0 ignored issues
show
Duplication introduced by
This function seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
258
	include( 'abstract-admin-settings-page.php' );
259
260
	$settings = array(
261
		// General settings.
262
		include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-general.php' ),
263
264
		// Payment Gateways Settings.
265
		include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-gateways.php' ),
266
267
		// Display settings.
268
		include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-display.php' ),
269
270
		// Emails settings.
271
		include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-email.php' ),
272
273
		// Addons settings.
274
		include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-addon.php' ),
275
276
		// License settings.
277
		include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-license.php' ),
278
279
		// Advanced settings.
280
		include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-advanced.php' ),
281
	);
282
283
	// Output.
284
	return $settings;
285
}
286
add_filter( 'give-settings_get_settings_pages', 'give_settings_page_pages', 0, 1 );
287
288
289
/**
290
 * Add setting tab to give-settings page
291
 *
292
 * @since  1.8
293
 * @param  array $settings
294
 * @return array
295
 */
296
function give_reports_page_pages( $settings ) {
297
	include( 'abstract-admin-settings-page.php' );
298
299
	$settings = array(
300
		// Earnings.
301
		include( 'reports/class-earnings-report.php' ),
302
303
		// Forms.
304
		include( 'reports/class-forms-report.php' ),
305
306
		// Gateways.
307
		include( 'reports/class-gateways-report.php' ),
308
309
	);
310
311
	// Output.
312
	return $settings;
313
}
314
add_filter( 'give-reports_get_settings_pages', 'give_reports_page_pages', 0, 1 );
315
316
/**
317
 * Add setting tab to give-settings page
318
 *
319
 * @since  1.8
320
 * @param  array $settings
321
 * @return array
322
 */
323 View Code Duplication
function give_tools_page_pages( $settings ) {
0 ignored issues
show
Duplication introduced by
This function seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
324
	include( 'abstract-admin-settings-page.php' );
325
326
	$settings = array(
327
328
		// Export.
329
		include( GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-export.php' ),
330
331
		// Import
332
		include_once( GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-import.php' ),
333
334
		// Logs.
335
		include( GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-logs.php' ),
336
337
		// API.
338
		include( GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-api.php' ),
339
340
		// Data.
341
		include( GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-data.php' ),
342
343
		// System Info.
344
		include( GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-system-info.php' ),
345
	);
346
347
	// Output.
348
	return $settings;
349
}
350
add_filter( 'give-tools_get_settings_pages', 'give_tools_page_pages', 0, 1 );
351
352
/**
353
 * Set default tools page tab.
354
 *
355
 * @since  1.8
356
 * @param  string $default_tab Default tab name.
357
 * @return string
358
 */
359
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...
360
	return 'export';
361
}
362
add_filter( 'give_default_setting_tab_give-tools', 'give_set_default_tab_form_tools_page', 10, 1 );
363
364
365
/**
366
 * Set default reports page tab.
367
 *
368
 * @since  1.8
369
 * @param  string $default_tab Default tab name.
370
 * @return string
371
 */
372
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...
373
	return 'earnings';
374
}
375
add_filter( 'give_default_setting_tab_give-reports', 'give_set_default_tab_form_reports_page', 10, 1 );
376
377
378
/**
379
 * Add a page display state for special Give pages in the page list table.
380
 *
381
 * @since 1.8.18
382
 *
383
 * @param array $post_states An array of post display states.
384
 * @param WP_Post $post The current post object.
385
 *
386
 * @return array
387
 */
388
function give_add_display_page_states( $post_states, $post ) {
389
390
	switch ( $post->ID ) {
391
		case give_get_option( 'success_page' ):
392
			$post_states['give_successfully_page'] = __( 'Donation Success Page', 'give' );
393
			break;
394
395
		case give_get_option( 'failure_page' ):
396
			$post_states['give_failure_page'] = __( 'Donation Failed Page', 'give' );
397
			break;
398
399
		case give_get_option( 'history_page' ):
400
			$post_states['give_history_page'] = __( 'Donation History Page', 'give' );
401
			break;
402
	}
403
404
	return $post_states;
405
}
406
407
// Add a post display state for special Give pages.
408
add_filter( 'display_post_states', 'give_add_display_page_states', 10, 2 );
409