PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.14.6
GiveWP – Donation Plugin and Fundraising Platform v4.14.6
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 4 years ago donors 7 months ago emails 5 months ago forms 1 year ago payments 1 year ago reports 1 year ago settings 5 months ago shortcodes 1 year ago tools 4 months ago upgrades 5 months ago views 1 year ago abstract-admin-settings-page.php 2 years ago admin-actions.php 5 months ago admin-filters.php 9 months ago admin-footer.php 2 years ago admin-pages.php 5 months ago class-addon-activation-banner.php 9 months ago class-admin-settings.php 1 year ago class-api-keys-table.php 4 years ago class-blank-slate.php 1 year ago class-give-admin.php 5 years ago class-give-html-elements.php 1 year ago class-i18n-module.php 4 years ago dashboard-widgets.php 3 years ago give-metabox-functions.php 3 years ago import-functions.php 11 months ago misc-functions.php 2 years ago plugins.php 9 months ago setting-page-functions.php 6 years ago
admin-pages.php
411 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 use Give\Campaigns\ValueObjects\CampaignPageMetaKeys;
14 use Give\Framework\Permissions\Facades\UserPermissions;
15
16 if ( ! defined( 'ABSPATH' ) ) {
17 exit;
18 }
19
20 /**
21 * Creates the admin submenu pages under the Give menu and assigns their
22 * links to global variables
23 *
24 * @since 4.14.0 update permission capability to use facade
25 * @since 1.0
26 *
27 * @global $give_settings_page
28 * @global $give_payments_page
29 * @global $give_reports_page
30 * @global $give_donors_page
31 *
32 * @return void
33 */
34 function give_add_donations_subpage() {
35 global $give_payments_page;
36
37 // Payments
38 /* @var WP_Post_Type $give_payment */
39 $give_payment = get_post_type_object('give_payment');
40 $give_payments_page = add_submenu_page(
41 'edit.php?post_type=give_forms',
42 $give_payment->labels->name,
43 $give_payment->labels->menu_name,
44 UserPermissions::donations()->viewCap(),
45 'give-payment-history',
46 'give_payment_history_page'
47 );
48 }
49
50 add_action( 'admin_menu', 'give_add_donations_subpage', 20 );
51
52 function give_add_donors_subpage() {
53 global $give_donors_page;
54
55 $give_donors_page = add_submenu_page(
56 'edit.php?post_type=give_forms',
57 esc_html__('Donors', 'give'),
58 esc_html__('Donors', 'give'),
59 UserPermissions::donors()->viewCap(),
60 'give-donors',
61 'give_donors_page'
62 );
63 }
64
65 add_action('admin_menu', 'give_add_donors_subpage', 30);
66
67
68 function give_add_settings_subpage()
69 {
70 global $give_settings_page;
71
72 $give_settings_page = add_submenu_page(
73 'edit.php?post_type=give_forms',
74 esc_html__('GiveWP Settings', 'give'),
75 apply_filters('givewp_settings_menu_title_give-settings',esc_html__('Settings', 'give')),
76 UserPermissions::settings()->manageCap(),
77 'give-settings',
78 [
79 Give()->give_settings,
80 'output',
81 ]
82 );
83 }
84
85 add_action('admin_menu', 'give_add_settings_subpage', 50);
86
87 function give_add_tools_subpage()
88 {
89 global $give_tools_page;
90
91 $give_tools_page = add_submenu_page(
92 'edit.php?post_type=give_forms',
93 esc_html__('GiveWP Tools', 'give'),
94 esc_html__('Tools', 'give'),
95 UserPermissions::settings()->manageCap(),
96 'give-tools',
97 [
98 Give()->give_settings,
99 'output',
100 ]
101 );
102 }
103
104 add_action('admin_menu', 'give_add_tools_subpage', 60);
105
106 /**
107 * Determines whether the current admin page is a Give admin page.
108 *
109 * Only works after the `wp_loaded` hook, & most effective
110 * starting on `admin_menu` hook.
111 *
112 * @since 1.0
113 * @since 2.1 Simplified function.
114 * @since 2.15.0 Use anonymous function in array_map to convert only strings to lowercase.
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 = ! empty( $_GET ) ?
126 array_map( function ( $data ) {
127 return is_string( $data ) ? strtolower( $data ) : $data;
128 }, $_GET ) :
129 [];
130
131 // Set default argument, if not passed.
132 $query_args = wp_parse_args( $get_query_args, array_fill_keys( [
133 'post_type',
134 'action',
135 'taxonomy',
136 'page',
137 'view',
138 'tab'
139 ], false ) );
140
141 switch ( $passed_page ) {
142 case 'categories':
143 case 'tags':
144 $has_view = in_array( $passed_view, [ 'list-table', 'edit', 'new' ], true );
145
146 if (
147 ! in_array( $query_args['taxonomy'], [ 'give_forms_category', 'give_forms_tag' ], true ) &&
148 'edit-tags.php' !== $pagenow &&
149 (
150 $has_view ||
151 (
152 ( in_array( $passed_view, [ 'list-table', 'new' ], true ) && 'edit' === $query_args['action'] ) ||
153 ( 'edit' !== $passed_view && 'edit' !== $query_args['action'] ) &&
154 ! $has_view
155 )
156 )
157 ) {
158 $found = false;
159 }
160 break;
161 // Give Donation form page.
162 case 'give_forms':
163 $has_view = in_array( $passed_view, [ 'new', 'list-table', 'edit' ], true );
164
165 if (
166 'give_forms' !== $typenow &&
167 (
168 ( 'list-table' !== $passed_view && 'edit.php' !== $pagenow ) &&
169 ( 'edit' !== $passed_view && 'post.php' !== $pagenow ) &&
170 ( 'new' !== $passed_view && 'post-new.php' !== $pagenow )
171 ) ||
172 (
173 ! $has_view &&
174 ( 'post-new.php' !== $pagenow && 'give_forms' !== $query_args['post_type'] )
175 )
176 ) {
177 $found = false;
178 }
179 break;
180 // Give Donors page.
181 case 'donors':
182 $has_view = array_intersect( [ $passed_view, $query_args['view'] ], [ 'list-table', 'overview', 'notes' ] );
183
184 if (
185 ( 'give-donors' !== $query_args['page'] || 'edit.php' !== $pagenow ) &&
186 (
187 ( $passed_view !== $query_args['view'] || ! empty( $has_view ) ) ||
188 ( false !== $query_args['view'] && 'list-table' !== $passed_view )
189 )
190 ) {
191 $found = false;
192 }
193 break;
194 // Give Donations page.
195 case 'payments':
196 if (
197 ( 'give-payment-history' !== $query_args['page'] || 'edit.php' !== $pagenow ) &&
198 (
199 ! in_array( $passed_view, [ 'list-table', 'edit' ], true ) ||
200 (
201 ( 'list-table' !== $passed_view && false !== $query_args['view'] ) ||
202 ( 'edit' !== $passed_view && 'view-payment-details' !== $query_args['view'] )
203 )
204 )
205 ) {
206 $found = false;
207 }
208 break;
209 case 'reports':
210 case 'settings':
211 case 'addons':
212 // Get current tab.
213 $current_tab = empty( $passed_view ) ? $query_args['tab'] : $passed_view;
214 $give_setting_page = in_array( $query_args['page'], [ 'give-reports', 'give-settings', 'give-addons' ], true );
215
216 // Check if it's Give Setting page or not.
217 if (
218 ( 'edit.php' !== $pagenow || ! $give_setting_page ) &&
219 ! Give_Admin_Settings::is_setting_page( $current_tab )
220 ) {
221 $found = false;
222 }
223 break;
224 default:
225 global $give_payments_page, $give_settings_page, $give_reports_page, $give_system_info_page, $give_settings_export, $give_donors_page, $give_tools_page;
226 $admin_pages = apply_filters(
227 'give_admin_pages',
228 [
229 //$give_payments_page,
230 $give_settings_page,
231 $give_reports_page,
232 $give_system_info_page,
233 $give_settings_export,
234 $give_donors_page,
235 $give_tools_page,
236 ]
237 );
238
239 $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;
240 }
241 return (bool) apply_filters( 'give_is_admin_page', $found, $query_args['page'], $query_args['view'], $passed_page, $passed_view );
242 }
243
244 /**
245 * Add setting tab to give-settings page
246 *
247 * @since 1.8
248 * @param array $settings
249 * @return array
250 */
251 function give_settings_page_pages( $settings ) {
252 include 'abstract-admin-settings-page.php';
253
254 $settings = [
255 // General settings.
256 include GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-general.php',
257
258 // Payment Gateways Settings.
259 include GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-gateways.php',
260
261 // Display settings.
262 include GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-display.php',
263
264 // Emails settings.
265 include GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-email.php',
266
267 // Addons settings.
268 include GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-addon.php',
269
270 // License settings.
271 include GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-license.php',
272
273 // Advanced settings.
274 include GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-advanced.php',
275 ];
276
277 // Recurring Donations settings.
278 if ( !defined('GIVE_RECURRING_VERSION') ) {
279 $settings[] = include GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-recurring.php';
280 }
281
282 // Output.
283 return $settings;
284 }
285 add_filter( 'give-settings_get_settings_pages', 'give_settings_page_pages', 0, 1 );
286
287
288 /**
289 * Add setting tab to give-settings page
290 *
291 * @since 1.8
292 * @param array $settings
293 * @return array
294 */
295 function give_reports_page_pages( $settings ) {
296 include 'abstract-admin-settings-page.php';
297
298 $settings = [
299 // Earnings.
300 include 'reports/class-earnings-report.php',
301
302 // Forms.
303 include 'reports/class-forms-report.php',
304
305 // Gateways.
306 include 'reports/class-gateways-report.php',
307
308 ];
309
310 // Output.
311 return $settings;
312 }
313 add_filter( 'give-reports_get_settings_pages', 'give_reports_page_pages', 0, 1 );
314
315 /**
316 * Add setting tab to give-settings page
317 *
318 * @since 1.8
319 * @param array $settings
320 * @return array
321 */
322 function give_tools_page_pages( $settings ) {
323 include 'abstract-admin-settings-page.php';
324
325 $settings = [
326
327 // Export.
328 include GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-export.php',
329
330 // Import
331 include_once GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-import.php',
332
333 // Logs.
334 include GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-logs.php',
335
336 // API.
337 include GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-api.php',
338
339 // Data.
340 include GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-data.php',
341
342 // System Info.
343 include GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-system-info.php',
344 ];
345
346 // Output.
347 return $settings;
348 }
349 add_filter( 'give-tools_get_settings_pages', 'give_tools_page_pages', 0, 1 );
350
351 /**
352 * Set default tools page tab.
353 *
354 * @since 1.8
355 * @param string $default_tab Default tab name.
356 * @return string
357 */
358 function give_set_default_tab_form_tools_page( $default_tab ) {
359 return 'export';
360 }
361 add_filter( 'give_default_setting_tab_give-tools', 'give_set_default_tab_form_tools_page', 10, 1 );
362
363
364 /**
365 * Set default reports page tab.
366 *
367 * @since 1.8
368 * @param string $default_tab Default tab name.
369 * @return string
370 */
371 function give_set_default_tab_form_reports_page( $default_tab ) {
372 return 'earnings';
373 }
374 add_filter( 'give_default_setting_tab_give-reports', 'give_set_default_tab_form_reports_page', 10, 1 );
375
376
377 /**
378 * Add a page display state for special Give pages in the page list table.
379 *
380 * @since 1.8.18
381 *
382 * @param array $post_states An array of post display states.
383 * @param WP_Post $post The current post object.
384 *
385 * @return array
386 */
387 function give_add_display_page_states( $post_states, $post ) {
388
389 switch ( $post->ID ) {
390 case give_get_option( 'success_page' ):
391 $post_states['give_successfully_page'] = __( 'Donation Success Page', 'give' );
392 break;
393
394 case give_get_option( 'failure_page' ):
395 $post_states['give_failure_page'] = __( 'Donation Failed Page', 'give' );
396 break;
397
398 case give_get_option( 'history_page' ):
399 $post_states['give_history_page'] = __( 'Donation History Page', 'give' );
400 break;
401 case (bool)get_post_meta( $post->ID, CampaignPageMetaKeys::CAMPAIGN_ID, true ):
402 $post_states['give_campaign_page'] = __( 'GiveWP Campaign Page', 'give' );
403 break;
404 }
405
406 return $post_states;
407 }
408
409 // Add a post display state for special Give pages.
410 add_filter( 'display_post_states', 'give_add_display_page_states', 10, 2 );
411