PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.16.9
GiveWP – Donation Plugin and Fundraising Platform v4.16.9
4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 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 All 255 releases
← All changes | includes/admin/admin-pages.php +136 -117 2.3.14.16.9 View file →
@@ -9,8 +9,11 @@
9 9 * @since 1.0
10 10 */
11 11
12 12 // Exit if accessed directly.
13 +use Give\Campaigns\ValueObjects\CampaignPageMetaKeys;
14 +use Give\Framework\Permissions\Facades\UserPermissions;
15 +
13 16 if ( ! defined( 'ABSPATH' ) ) {
14 17 exit;
15 18 }
16 19
@@ -17,94 +20,90 @@
17 20 /**
18 21 * Creates the admin submenu pages under the Give menu and assigns their
19 22 * links to global variables
20 23 *
24 + * @since 4.14.0 update permission capability to use facade
21 25 * @since 1.0
22 26 *
23 27 * @global $give_settings_page
24 28 * @global $give_payments_page
25 29 * @global $give_reports_page
26 - * @global $give_add_ons_page
27 30 * @global $give_donors_page
28 31 *
29 32 * @return void
30 33 */
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;
34 +function give_add_donations_subpage() {
35 + global $give_payments_page;
33 36
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 - );
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 +}
44 49
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 - );
50 +add_action( 'admin_menu', 'give_add_donations_subpage', 20 );
54 51
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 - );
52 +function give_add_donors_subpage() {
53 + global $give_donors_page;
67 54
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 - );
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 +}
80 64
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 - );
65 +add_action('admin_menu', 'give_add_donors_subpage', 30);
93 66
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 - );
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 + );
103 83 }
104 84
105 -add_action( 'admin_menu', 'give_add_options_links', 10 );
85 +add_action('admin_menu', 'give_add_settings_subpage', 50);
106 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 +
107 106 /**
108 107 * Determines whether the current admin page is a Give admin page.
109 108 *
110 109 * Only works after the `wp_loaded` hook, & most effective
@@ -111,8 +110,9 @@
111 110 * starting on `admin_menu` hook.
112 111 *
113 112 * @since 1.0
114 113 * @since 2.1 Simplified function.
114 + * @since 2.15.0 Use anonymous function in array_map to convert only strings to lowercase.
115 115 *
116 116 * @param string $passed_page Optional. Main page's slug
117 117 * @param string $passed_view Optional. Page view ( ex: `edit` or `delete` )
118 118 *
@@ -121,25 +121,36 @@
121 121 function give_is_admin_page( $passed_page = '', $passed_view = '' ) {
122 122 global $pagenow, $typenow;
123 123
124 124 $found = true;
125 - $get_query_args = ! empty( $_GET ) ? @array_map( 'strtolower', $_GET ) : array();
125 + $get_query_args = ! empty( $_GET ) ?
126 + array_map( function ( $data ) {
127 + return is_string( $data ) ? strtolower( $data ) : $data;
128 + }, $_GET ) :
129 + [];
126 130
127 131 // 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 ) );
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 ) );
129 140
130 141 switch ( $passed_page ) {
131 142 case 'categories':
132 143 case 'tags':
133 - $has_view = in_array( $passed_view, array( 'list-table', 'edit', 'new' ), true );
144 + $has_view = in_array( $passed_view, [ 'list-table', 'edit', 'new' ], true );
134 145
135 146 if (
136 - ! in_array( $query_args['taxonomy'], array( 'give_forms_category', 'give_forms_tag' ), true ) &&
147 + ! in_array( $query_args['taxonomy'], [ 'give_forms_category', 'give_forms_tag' ], true ) &&
137 148 'edit-tags.php' !== $pagenow &&
138 149 (
139 150 $has_view ||
140 151 (
141 - ( in_array( $passed_view, array( 'list-table', 'new' ), true ) && 'edit' === $query_args['action'] ) ||
152 + ( in_array( $passed_view, [ 'list-table', 'new' ], true ) && 'edit' === $query_args['action'] ) ||
142 153 ( 'edit' !== $passed_view && 'edit' !== $query_args['action'] ) &&
143 154 ! $has_view
144 155 )
145 156 )
@@ -148,9 +159,9 @@
148 159 }
149 160 break;
150 161 // Give Donation form page.
151 162 case 'give_forms':
152 - $has_view = in_array( $passed_view, array( 'new', 'list-table', 'edit' ), true );
163 + $has_view = in_array( $passed_view, [ 'new', 'list-table', 'edit' ], true );
153 164
154 165 if (
155 166 'give_forms' !== $typenow &&
156 167 (
@@ -167,9 +178,9 @@
167 178 }
168 179 break;
169 180 // Give Donors page.
170 181 case 'donors':
171 - $has_view = array_intersect( array( $passed_view, $query_args['view'] ), array( 'list-table', 'overview', 'notes' ) );
182 + $has_view = array_intersect( [ $passed_view, $query_args['view'] ], [ 'list-table', 'overview', 'notes' ] );
172 183
173 184 if (
174 185 ( 'give-donors' !== $query_args['page'] || 'edit.php' !== $pagenow ) &&
175 186 (
@@ -184,9 +195,9 @@
184 195 case 'payments':
185 196 if (
186 197 ( 'give-payment-history' !== $query_args['page'] || 'edit.php' !== $pagenow ) &&
187 198 (
188 - ! in_array( $passed_view, array( 'list-table', 'edit' ), true ) ||
199 + ! in_array( $passed_view, [ 'list-table', 'edit' ], true ) ||
189 200 (
190 201 ( 'list-table' !== $passed_view && false !== $query_args['view'] ) ||
191 202 ( 'edit' !== $passed_view && 'view-payment-details' !== $query_args['view'] )
192 203 )
@@ -199,9 +210,9 @@
199 210 case 'settings':
200 211 case 'addons':
201 212 // Get current tab.
202 213 $current_tab = empty( $passed_view ) ? $query_args['tab'] : $passed_view;
203 - $give_setting_page = in_array( $query_args['page'], array( 'give-reports', 'give-settings', 'give-addons' ), true );
214 + $give_setting_page = in_array( $query_args['page'], [ 'give-reports', 'give-settings', 'give-addons' ], true );
204 215
205 216 // Check if it's Give Setting page or not.
206 217 if (
207 218 ( 'edit.php' !== $pagenow || ! $give_setting_page ) &&
@@ -210,22 +221,23 @@
210 221 $found = false;
211 222 }
212 223 break;
213 224 default:
214 - 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;
215 - $admin_pages = apply_filters( 'give_admin_pages', array(
216 - $give_payments_page,
217 - $give_settings_page,
218 - $give_reports_page,
219 - $give_system_info_page,
220 - $give_add_ons_page,
221 - $give_settings_export,
222 - $give_donors_page,
223 - $give_tools_page,
224 - 'widgets.php',
225 - ) );
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 + );
226 238
227 - $found = ( 'give_forms' === $typenow || in_array( $pagenow, array_merge( $admin_pages, array( 'index.php', 'post-new.php', 'post.php' ) ), true ) ) ? true : false;
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;
228 240 }
229 241 return (bool) apply_filters( 'give_is_admin_page', $found, $query_args['page'], $query_args['view'], $passed_page, $passed_view );
230 242 }
231 243
@@ -236,34 +248,38 @@
236 248 * @param array $settings
237 249 * @return array
238 250 */
239 251 function give_settings_page_pages( $settings ) {
240 - include( 'abstract-admin-settings-page.php' );
241 - include( 'settings/class-settings-cmb2-backward-compatibility.php' );
252 + include 'abstract-admin-settings-page.php';
242 253
243 - $settings = array(
254 + $settings = [
244 255 // General settings.
245 - include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-general.php' ),
256 + include GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-general.php',
246 257
247 258 // Payment Gateways Settings.
248 - include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-gateways.php' ),
259 + include GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-gateways.php',
249 260
250 261 // Display settings.
251 - include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-display.php' ),
262 + include GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-display.php',
252 263
253 264 // Emails settings.
254 - include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-email.php' ),
265 + include GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-email.php',
255 266
256 267 // Addons settings.
257 - include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-addon.php' ),
268 + include GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-addon.php',
258 269
259 270 // License settings.
260 - include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-license.php' ),
271 + include GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-license.php',
261 272
262 273 // Advanced settings.
263 - include( GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-advanced.php' ),
264 - );
274 + include GIVE_PLUGIN_DIR . 'includes/admin/settings/class-settings-advanced.php',
275 + ];
265 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 +
266 282 // Output.
267 283 return $settings;
268 284 }
269 285 add_filter( 'give-settings_get_settings_pages', 'give_settings_page_pages', 0, 1 );
@@ -276,21 +292,21 @@
276 292 * @param array $settings
277 293 * @return array
278 294 */
279 295 function give_reports_page_pages( $settings ) {
280 - include( 'abstract-admin-settings-page.php' );
296 + include 'abstract-admin-settings-page.php';
281 297
282 - $settings = array(
298 + $settings = [
283 299 // Earnings.
284 - include( 'reports/class-earnings-report.php' ),
300 + include 'reports/class-earnings-report.php',
285 301
286 302 // Forms.
287 - include( 'reports/class-forms-report.php' ),
303 + include 'reports/class-forms-report.php',
288 304
289 305 // Gateways.
290 - include( 'reports/class-gateways-report.php' ),
306 + include 'reports/class-gateways-report.php',
291 307
292 - );
308 + ];
293 309
294 310 // Output.
295 311 return $settings;
296 312 }
@@ -303,30 +319,30 @@
303 319 * @param array $settings
304 320 * @return array
305 321 */
306 322 function give_tools_page_pages( $settings ) {
307 - include( 'abstract-admin-settings-page.php' );
323 + include 'abstract-admin-settings-page.php';
308 324
309 - $settings = array(
325 + $settings = [
310 326
311 327 // Export.
312 - include( GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-export.php' ),
328 + include GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-export.php',
313 329
314 330 // Import
315 - include_once( GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-import.php' ),
331 + include_once GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-import.php',
316 332
317 333 // Logs.
318 - include( GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-logs.php' ),
334 + include GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-logs.php',
319 335
320 336 // API.
321 - include( GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-api.php' ),
337 + include GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-api.php',
322 338
323 339 // Data.
324 - include( GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-data.php' ),
340 + include GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-data.php',
325 341
326 342 // System Info.
327 - include( GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-system-info.php' ),
328 - );
343 + include GIVE_PLUGIN_DIR . 'includes/admin/tools/class-settings-system-info.php',
344 + ];
329 345
330 346 // Output.
331 347 return $settings;
332 348 }
@@ -362,9 +378,9 @@
362 378 * Add a page display state for special Give pages in the page list table.
363 379 *
364 380 * @since 1.8.18
365 381 *
366 - * @param array $post_states An array of post display states.
382 + * @param array $post_states An array of post display states.
367 383 * @param WP_Post $post The current post object.
368 384 *
369 385 * @return array
370 386 */
@@ -381,8 +397,11 @@
381 397
382 398 case give_get_option( 'history_page' ):
383 399 $post_states['give_history_page'] = __( 'Donation History Page', 'give' );
384 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;
385 404 }
386 405
387 406 return $post_states;
388 407 }