PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.15.0
GiveWP – Donation Plugin and Fundraising Platform v2.15.0
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / includes / admin / admin-pages.php
give / includes / admin Last commit date
add-ons 5 years ago donors 5 years ago emails 4 years ago forms 4 years ago payments 4 years ago reports 5 years ago settings 4 years ago shortcodes 5 years ago tools 4 years ago upgrades 5 years ago views 6 years ago abstract-admin-settings-page.php 6 years ago admin-actions.php 4 years ago admin-filters.php 6 years ago admin-footer.php 5 years ago admin-pages.php 4 years ago class-addon-activation-banner.php 6 years ago class-admin-settings.php 4 years ago class-api-keys-table.php 6 years ago class-blank-slate.php 6 years ago class-give-admin.php 5 years ago class-give-html-elements.php 6 years ago class-i18n-module.php 6 years ago dashboard-widgets.php 6 years ago give-metabox-functions.php 5 years ago import-functions.php 5 years ago misc-functions.php 5 years ago plugins.php 5 years ago setting-page-functions.php 6 years ago
admin-pages.php
415 lines
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 // Settings
56 $give_settings_page = add_submenu_page(
57 'edit.php?post_type=give_forms',
58 esc_html__( 'GiveWP Settings', 'give' ),
59 esc_html__( 'Settings', 'give' ),
60 'manage_give_settings',
61 'give-settings',
62 [
63 Give()->give_settings,
64 'output',
65 ]
66 );
67
68 // Tools.
69 $give_tools_page = add_submenu_page(
70 'edit.php?post_type=give_forms',
71 esc_html__( 'GiveWP Tools', 'give' ),
72 esc_html__( 'Tools', 'give' ),
73 'manage_give_settings',
74 'give-tools',
75 [
76 Give()->give_settings,
77 'output',
78 ]
79 );
80 }
81
82 add_action( 'admin_menu', 'give_add_options_links', 10 );
83
84
85
86 /**
87 * Creates the admin add-ons submenu page under the Give menu and assigns their
88 * link to global variable
89 *
90 * @since 2.5.0
91 *
92 * @return void
93 */
94 function give_add_add_ons_option_link() {
95 global $submenu;
96
97 // Show menu only if user has permission.
98 if ( ! current_user_can( 'edit_give_payments' ) ) {
99 return;
100 }
101
102 // Add-ons
103 $submenu['edit.php?post_type=give_forms'][] = [
104 esc_html__( 'Add-ons', 'give' ),
105 'install_plugins',
106
107 /**
108 * Filter the add-on page url.
109 *
110 * @since 2.6.0
111 */
112 apply_filters( 'give_addon_menu_item_url', esc_url( 'http://docs.givewp.com/addons-menu-link' ) ),
113 ];
114
115 }
116 add_action( 'admin_menu', 'give_add_add_ons_option_link', 999999 );
117
118 /**
119 * Determines whether the current admin page is a Give admin page.
120 *
121 * Only works after the `wp_loaded` hook, & most effective
122 * starting on `admin_menu` hook.
123 *
124 * @since 1.0
125 * @since 2.1 Simplified function.
126 * @since 2.15.0 Use anonymous function in array_map to convert only strings to lowercase.
127 *
128 * @param string $passed_page Optional. Main page's slug
129 * @param string $passed_view Optional. Page view ( ex: `edit` or `delete` )
130 *
131 * @return bool True if Give admin page.
132 */
133 function give_is_admin_page( $passed_page = '', $passed_view = '' ) {
134 global $pagenow, $typenow;
135
136 $found = true;
137 $get_query_args = ! empty( $_GET ) ?
138 array_map( function ( $data ) {
139 return is_string( $data ) ? strtolower( $data ) : $data;
140 }, $_GET ) :
141 [];
142
143 // Set default argument, if not passed.
144 $query_args = wp_parse_args( $get_query_args, array_fill_keys( [
145 'post_type',
146 'action',
147 'taxonomy',
148 'page',
149 'view',
150 'tab'
151 ], false ) );
152
153 switch ( $passed_page ) {
154 case 'categories':
155 case 'tags':
156 $has_view = in_array( $passed_view, [ 'list-table', 'edit', 'new' ], true );
157
158 if (
159 ! in_array( $query_args['taxonomy'], [ 'give_forms_category', 'give_forms_tag' ], true ) &&
160 'edit-tags.php' !== $pagenow &&
161 (
162 $has_view ||
163 (
164 ( in_array( $passed_view, [ 'list-table', 'new' ], true ) && 'edit' === $query_args['action'] ) ||
165 ( 'edit' !== $passed_view && 'edit' !== $query_args['action'] ) &&
166 ! $has_view
167 )
168 )
169 ) {
170 $found = false;
171 }
172 break;
173 // Give Donation form page.
174 case 'give_forms':
175 $has_view = in_array( $passed_view, [ 'new', 'list-table', 'edit' ], true );
176
177 if (
178 'give_forms' !== $typenow &&
179 (
180 ( 'list-table' !== $passed_view && 'edit.php' !== $pagenow ) &&
181 ( 'edit' !== $passed_view && 'post.php' !== $pagenow ) &&
182 ( 'new' !== $passed_view && 'post-new.php' !== $pagenow )
183 ) ||
184 (
185 ! $has_view &&
186 ( 'post-new.php' !== $pagenow && 'give_forms' !== $query_args['post_type'] )
187 )
188 ) {
189 $found = false;
190 }
191 break;
192 // Give Donors page.
193 case 'donors':
194 $has_view = array_intersect( [ $passed_view, $query_args['view'] ], [ 'list-table', 'overview', 'notes' ] );
195
196 if (
197 ( 'give-donors' !== $query_args['page'] || 'edit.php' !== $pagenow ) &&
198 (
199 ( $passed_view !== $query_args['view'] || ! empty( $has_view ) ) ||
200 ( false !== $query_args['view'] && 'list-table' !== $passed_view )
201 )
202 ) {
203 $found = false;
204 }
205 break;
206 // Give Donations page.
207 case 'payments':
208 if (
209 ( 'give-payment-history' !== $query_args['page'] || 'edit.php' !== $pagenow ) &&
210 (
211 ! in_array( $passed_view, [ 'list-table', 'edit' ], true ) ||
212 (
213 ( 'list-table' !== $passed_view && false !== $query_args['view'] ) ||
214 ( 'edit' !== $passed_view && 'view-payment-details' !== $query_args['view'] )
215 )
216 )
217 ) {
218 $found = false;
219 }
220 break;
221 case 'reports':
222 case 'settings':
223 case 'addons':
224 // Get current tab.
225 $current_tab = empty( $passed_view ) ? $query_args['tab'] : $passed_view;
226 $give_setting_page = in_array( $query_args['page'], [ 'give-reports', 'give-settings', 'give-addons' ], true );
227
228 // Check if it's Give Setting page or not.
229 if (
230 ( 'edit.php' !== $pagenow || ! $give_setting_page ) &&
231 ! Give_Admin_Settings::is_setting_page( $current_tab )
232 ) {
233 $found = false;
234 }
235 break;
236 default:
237 global $give_payments_page, $give_settings_page, $give_reports_page, $give_system_info_page, $give_settings_export, $give_donors_page, $give_tools_page;
238 $admin_pages = apply_filters(
239 'give_admin_pages',
240 [
241 $give_payments_page,
242 $give_settings_page,
243 $give_reports_page,
244 $give_system_info_page,
245 $give_settings_export,
246 $give_donors_page,
247 $give_tools_page,
248 ]
249 );
250
251 $found = ( 'give_forms' === $typenow || in_array( $pagenow, array_merge( $admin_pages, [ 'index.php', 'post-new.php', 'post.php', 'widgets.php', 'customize.php' ] ), true ) ) ? true : false;
252 }
253 return (bool) apply_filters( 'give_is_admin_page', $found, $query_args['page'], $query_args['view'], $passed_page, $passed_view );
254 }
255
256 /**
257 * Add setting tab to give-settings page
258 *
259 * @since 1.8
260 * @param array $settings
261 * @return array
262 */
263 function give_settings_page_pages( $settings ) {
264 include 'abstract-admin-settings-page.php';
265
266 $settings = [
267 // General settings.
268 include GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-general.php',
269
270 // Payment Gateways Settings.
271 include GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-gateways.php',
272
273 // Display settings.
274 include GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-display.php',
275
276 // Emails settings.
277 include GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-email.php',
278
279 // Addons settings.
280 include GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-addon.php',
281
282 // License settings.
283 include GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-license.php',
284
285 // Advanced settings.
286 include GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-advanced.php',
287 ];
288
289 // Output.
290 return $settings;
291 }
292 add_filter( 'give-settings_get_settings_pages', 'give_settings_page_pages', 0, 1 );
293
294
295 /**
296 * Add setting tab to give-settings page
297 *
298 * @since 1.8
299 * @param array $settings
300 * @return array
301 */
302 function give_reports_page_pages( $settings ) {
303 include 'abstract-admin-settings-page.php';
304
305 $settings = [
306 // Earnings.
307 include 'reports/class-earnings-report.php',
308
309 // Forms.
310 include 'reports/class-forms-report.php',
311
312 // Gateways.
313 include 'reports/class-gateways-report.php',
314
315 ];
316
317 // Output.
318 return $settings;
319 }
320 add_filter( 'give-reports_get_settings_pages', 'give_reports_page_pages', 0, 1 );
321
322 /**
323 * Add setting tab to give-settings page
324 *
325 * @since 1.8
326 * @param array $settings
327 * @return array
328 */
329 function give_tools_page_pages( $settings ) {
330 include 'abstract-admin-settings-page.php';
331
332 $settings = [
333
334 // Export.
335 include GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-export.php',
336
337 // Import
338 include_once GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-import.php',
339
340 // Logs.
341 include GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-logs.php',
342
343 // API.
344 include GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-api.php',
345
346 // Data.
347 include GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-data.php',
348
349 // System Info.
350 include GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-system-info.php',
351 ];
352
353 // Output.
354 return $settings;
355 }
356 add_filter( 'give-tools_get_settings_pages', 'give_tools_page_pages', 0, 1 );
357
358 /**
359 * Set default tools page tab.
360 *
361 * @since 1.8
362 * @param string $default_tab Default tab name.
363 * @return string
364 */
365 function give_set_default_tab_form_tools_page( $default_tab ) {
366 return 'export';
367 }
368 add_filter( 'give_default_setting_tab_give-tools', 'give_set_default_tab_form_tools_page', 10, 1 );
369
370
371 /**
372 * Set default reports page tab.
373 *
374 * @since 1.8
375 * @param string $default_tab Default tab name.
376 * @return string
377 */
378 function give_set_default_tab_form_reports_page( $default_tab ) {
379 return 'earnings';
380 }
381 add_filter( 'give_default_setting_tab_give-reports', 'give_set_default_tab_form_reports_page', 10, 1 );
382
383
384 /**
385 * Add a page display state for special Give pages in the page list table.
386 *
387 * @since 1.8.18
388 *
389 * @param array $post_states An array of post display states.
390 * @param WP_Post $post The current post object.
391 *
392 * @return array
393 */
394 function give_add_display_page_states( $post_states, $post ) {
395
396 switch ( $post->ID ) {
397 case give_get_option( 'success_page' ):
398 $post_states['give_successfully_page'] = __( 'Donation Success Page', 'give' );
399 break;
400
401 case give_get_option( 'failure_page' ):
402 $post_states['give_failure_page'] = __( 'Donation Failed Page', 'give' );
403 break;
404
405 case give_get_option( 'history_page' ):
406 $post_states['give_history_page'] = __( 'Donation History Page', 'give' );
407 break;
408 }
409
410 return $post_states;
411 }
412
413 // Add a post display state for special Give pages.
414 add_filter( 'display_post_states', 'give_add_display_page_states', 10, 2 );
415