PluginProbe
Adminimize / 1.11.9
Adminimize v1.11.9
1.11.14 1.11.13 1.11.1 1.11.10 1.11.11 1.11.12 1.11.2 1.11.3 1.11.4 1.11.5 1.11.6 1.11.7 1.11.8 1.11.9 1.3 1.4.7 1.6 1.7.12 1.7.13 1.7.14 1.7.15 1.7.16 1.7.17 1.7.18 1.7.19 All 53 releases
← All changes | adminimize.php +340 -288 1.11.21.11.9 View file →
@@ -4,17 +4,19 @@
4 4 * Plugin URI: https://wordpress.org/plugins/adminimize/
5 5 * Text Domain: adminimize
6 6 * Domain Path: /languages
7 7 * Description: Visually compresses the administrative meta-boxes so that more admin page content can be initially seen. The plugin that lets you hide 'unnecessary' items from the WordPress administration menu, for all roles of your install. You can also hide post meta controls on the edit-area to simplify the interface. It is possible to simplify the admin in different for all roles.
8 - * Author: Frank Bültge
9 - * Author URI: http://bueltge.de/
10 - * Version: 1.11.2
11 - * License: GPLv3+
8 + * Author: WP MEDIA SAS
9 + * Author URI: https://wp-media.me/
10 + * Version: 1.11.9
11 + * License: GPLv2+
12 12 *
13 + * Php Version 5.6
14 + *
13 15 * @package WordPress
14 16 * @author Frank Bültge <frank@bueltge.de>
15 17 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
16 - * @version 2016-12-04
18 + * @version 2022-12-09
17 19 */
18 20
19 21 /**
20 22 * The stylesheet and the initial idea is from Eric A. Meyer http://meyerweb.com/
@@ -31,9 +33,9 @@
31 33 }
32 34
33 35 // plugin definitions
34 36 define( 'FB_ADMINIMIZE_BASENAME', plugin_basename( __FILE__ ) );
35 -define( 'FB_ADMINIMIZE_BASEFOLDER', plugin_basename( dirname( __FILE__ ) ) );
37 +define( 'FB_ADMINIMIZE_BASEFOLDER', plugin_basename( __DIR__ ) );
36 38
37 39 /**
38 40 * Return data from the plugin.
39 41 *
@@ -93,35 +95,30 @@
93 95 */
94 96 function _mw_adminimize_exclude_settings_page() {
95 97
96 98 if ( ! is_admin() ) {
97 - return FALSE;
99 + return false;
98 100 }
99 101
100 - if ( defined('DOING_AJAX') && DOING_AJAX ) {
101 - return FALSE;
102 + if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
103 + return false;
102 104 }
103 105
104 - if ( ! isset( $_GET[ 'page' ] ) ) {
105 - $page = '';
106 - } else {
107 - $page = esc_attr( $_GET[ 'page' ] );
106 + $page = '';
107 + if ( isset( $_GET['page'] ) ) {
108 + $page = esc_attr( $_GET['page'] );
108 109 }
109 110
110 - if ( ! function_exists( 'get_current_screen' ) ) {
111 - $screen = $page;
112 - } else {
113 - $screen = get_current_screen();
114 - }
111 + if ( function_exists( 'get_current_screen' ) ) {
112 + $screen_tmp = get_current_screen();
115 113
116 - if ( ! isset( $screen->id ) ) {
117 - $screen = $page;
118 - } else {
119 - $screen = $screen->id;
114 + if ( isset( $screen_tmp->id ) && null !== $screen_tmp->id ) {
115 + $page = $screen_tmp->id;
116 + }
120 117 }
121 118
122 119 // Don't filter on settings page
123 - return FALSE !== strpos( $screen, 'adminimize' );
120 + return FALSE !== strpos( $page, 'adminimize' );
124 121 }
125 122
126 123 /**
127 124 * Get status, if the plugin active network wide.
@@ -130,12 +127,23 @@
130 127 */
131 128 function _mw_adminimize_is_active_on_multisite() {
132 129
133 130 if ( ! function_exists( 'is_plugin_active_for_network' ) ) {
134 - require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
131 + require_once ABSPATH . '/wp-admin/includes/plugin.php';
135 132 }
136 133
137 - if ( is_multisite() && is_plugin_active_for_network( FB_ADMINIMIZE_BASENAME ) ) {
134 + /**
135 + * Allow different adminimize options per site on multisite.
136 + *
137 + * @since 1.11.6
138 + *
139 + * @param bool
140 + */
141 + $force_single_site_usage = apply_filters( 'adminimize_mu_force_options_per_site', false );
142 +
143 + if ( is_multisite()
144 + && is_plugin_active_for_network( FB_ADMINIMIZE_BASENAME )
145 + && ! $force_single_site_usage ) {
138 146 return TRUE;
139 147 }
140 148
141 149 return FALSE;
@@ -154,12 +162,12 @@
154 162 global $wp_roles;
155 163
156 164 $user_roles = array();
157 165
158 - if ( NULL !== $wp_roles->roles && is_array( $wp_roles->roles ) ) {
166 + if ( null !== $wp_roles->roles && is_array( $wp_roles->roles ) ) {
159 167 foreach ( $wp_roles->roles as $role => $data ) {
160 168 $user_roles[] = $role;
161 - //$data contains caps, maybe for later use..
169 + // The $data var contains caps, maybe for later use.
162 170 }
163 171 }
164 172
165 173 // Exclude the new bbPress roles.
@@ -169,9 +177,16 @@
169 177 array( 'bbp_keymaster', 'bbp_moderator', 'bbp_participant', 'bbp_spectator', 'bbp_blocked' )
170 178 );
171 179 }
172 180
173 - return $user_roles;
181 + /**
182 + * Use this filter to add or remove a role in Adminimize options.
183 + *
184 + * @since 1.11.6
185 + *
186 + * @param array
187 + */
188 + return apply_filters( 'adminimize_user_roles_filter', $user_roles );
174 189 }
175 190
176 191 /**
177 192 * _mw_adminimize_get_all_user_roles_names() - Returns an array with all user roles_names in it.
@@ -205,29 +220,44 @@
205 220 )
206 221 );
207 222 }
208 223
209 - return $user_roles_names;
224 + /**
225 + * Use this filter to add or remove a role-name in Adminimize options.
226 + *
227 + * @since 1.11.6
228 + *
229 + * @param array
230 + */
231 + return apply_filters( 'adminimize_user_roles_names_filter', $user_roles_names );
210 232 }
211 233
212 234 /**
213 - * return post type
235 + * Get post type.
236 + *
237 + * @return null|string String of the post type.
214 238 */
215 239 function _mw_adminimize_get_current_post_type() {
216 240
217 241 global $post, $typenow, $current_screen;
218 242
219 - //we have a post so we can just get the post type from that
243 + // We have a post so we can just get the post type from that.
220 244 if ( $post && $post->post_type ) {
221 245 return $post->post_type;
222 - } //check the global $typenow - set in admin.php
223 - else if ( $typenow ) {
246 + }
247 +
248 + // Check the global $typenow - set in admin.php
249 + if ( $typenow ) {
224 250 return $typenow;
225 - } // check the global $current_screen object - set in sceen.php
226 - else if ( $current_screen && $current_screen->post_type ) {
251 + }
252 +
253 + // Check the global $current_screen object - set in screen.php
254 + if ( $current_screen && $current_screen->post_type ) {
227 255 return $current_screen->post_type;
228 - } // lastly check the post_type querystring
229 - else if ( isset( $_REQUEST[ 'post_type' ] ) ) {
256 + }
257 +
258 + // lastly check the post_type querystring
259 + if ( isset( $_REQUEST['post_type'] ) ) {
230 260 return sanitize_key( $_REQUEST[ 'post_type' ] );
231 261 }
232 262
233 263 // we do not know the post type!
@@ -240,14 +270,13 @@
240 270 function _mw_adminimize_admin_init() {
241 271
242 272 global $pagenow, $post_type, $menu, $submenu;
243 273
274 + $post_id = 0;
244 275 if ( isset( $_GET[ 'post' ] ) && ! is_array( $_GET[ 'post' ] ) ) {
245 276 $post_id = (int) esc_attr( $_GET[ 'post' ] );
246 277 } elseif ( isset( $_POST[ 'post_ID' ] ) ) {
247 278 $post_id = (int) esc_attr( $_POST[ 'post_ID' ] );
248 - } else {
249 - $post_id = 0;
250 279 }
251 280
252 281 $current_post_type = $post_type;
253 282 if ( ! isset( $current_post_type ) || empty( $current_post_type ) ) {
@@ -255,13 +284,19 @@
255 284 }
256 285 if ( ! isset( $current_post_type ) || empty( $current_post_type ) ) {
257 286 $current_post_type = _mw_adminimize_get_current_post_type();
258 287 }
259 - if ( ! $current_post_type ) // set hard to post
260 - {
288 + if ( ! $current_post_type ) { // set hard to post
261 289 $current_post_type = 'post';
262 290 }
263 291
292 + // Debug helper
293 + if ( class_exists( 'DebugListener' ) ) {
294 + $listener = new DebugListener();
295 + add_action( 'adminimize.log', [$listener, 'listen'], 10, 2 );
296 + add_action( 'wp_footer', array( $listener, 'dump' ), PHP_INT_MAX );
297 + }
298 +
264 299 // Get all user roles.
265 300 $user_roles = _mw_adminimize_get_all_user_roles();
266 301
267 302 // Get settings.
@@ -286,9 +321,9 @@
286 321 // widget pages
287 322 $widget_pages = array( 'widgets.php' );
288 323
289 324 foreach ( $user_roles as $role ) {
290 - $disabled_global_option_[ $role ] = _mw_adminimize_get_option_value(
325 + $disabled_admin_bar_[ $role ] = _mw_adminimize_get_option_value(
291 326 'mw_adminimize_disabled_admin_bar_' . $role . '_items'
292 327 );
293 328 $disabled_global_option_[ $role ] = _mw_adminimize_get_option_value(
294 329 'mw_adminimize_disabled_global_option_' . $role . '_items'
@@ -321,32 +356,19 @@
321 356
322 357 // Backend options
323 358 // exclude super admin
324 359 if ( ! _mw_adminimize_exclude_super_admin() && ! _mw_adminimize_exclude_settings_page() ) {
325 - $_mw_adminimize_footer = (int) _mw_adminimize_get_option_value( '_mw_adminimize_footer' );
326 - switch ( $_mw_adminimize_footer ) {
327 - case 1:
328 - wp_enqueue_script(
329 - '_mw_adminimize_remove_footer',
330 - WP_PLUGIN_URL . '/' . FB_ADMINIMIZE_BASEFOLDER . '/js/remove_footer' . $suffix . '.js',
331 - array( 'jquery' )
332 - );
333 - break;
334 - }
335 -
336 360 $_mw_adminimize_header = (int) _mw_adminimize_get_option_value( '_mw_adminimize_header' );
337 - switch ( $_mw_adminimize_header ) {
338 - case 1:
339 - wp_enqueue_script(
340 - '_mw_adminimize_remove_header',
341 - WP_PLUGIN_URL . '/' . FB_ADMINIMIZE_BASEFOLDER . '/js/remove_header' . $suffix . '.js',
342 - array( 'jquery' )
343 - );
344 - break;
361 + if ( 1 === $_mw_adminimize_header ) {
362 + wp_enqueue_script(
363 + '_mw_adminimize_remove_header',
364 + WP_PLUGIN_URL . '/' . FB_ADMINIMIZE_BASEFOLDER . '/js/remove_header' . $suffix . '.js',
365 + [ 'jquery' ]
366 + );
345 367 }
346 368
347 - //post-page options
348 - if ( in_array( $pagenow, $def_post_pages, FALSE ) ) {
369 + // Post-page options.
370 + if ( in_array( $pagenow, $def_post_pages, TRUE ) ) {
349 371
350 372 $_mw_adminimize_tb_window = (int) _mw_adminimize_get_option_value( '_mw_adminimize_tb_window' );
351 373 switch ( $_mw_adminimize_tb_window ) {
352 374 case 1:
@@ -368,9 +390,9 @@
368 390 );
369 391 break;
370 392 }
371 393
372 - //category options
394 + // Category options.
373 395 $_mw_adminimize_cat_full = (int) _mw_adminimize_get_option_value( '_mw_adminimize_cat_full' );
374 396 switch ( $_mw_adminimize_cat_full ) {
375 397 case 1:
376 398 wp_enqueue_style(
@@ -379,77 +401,82 @@
379 401 );
380 402 break;
381 403 }
382 404
383 - // set default editor tinymce
405 + // Set default editor tinymce
384 406 if ( _mw_adminimize_recursive_in_array(
385 - '#editor-toolbar #edButtonHTML, #quicktags, #content-html',
386 - $disabled_metaboxes_page_all
387 - )
388 - || _mw_adminimize_recursive_in_array(
389 - '#editor-toolbar #edButtonHTML, #quicktags, #content-html',
390 - $disabled_metaboxes_post_all
391 - )
407 + '#editor-toolbar #edButtonHTML, #quicktags, #content-html',
408 + $disabled_metaboxes_page_all
409 + )
410 + || _mw_adminimize_recursive_in_array(
411 + '#editor-toolbar #edButtonHTML, #quicktags, #content-html',
412 + $disabled_metaboxes_post_all
413 + )
392 414 ) {
393 - add_filter( 'wp_default_editor', create_function( '', 'return "tinymce";' ) );
415 + add_filter( 'wp_default_editor', '_mw_admininimize_return_tinmyce' );
416 + /**
417 + * Return string tinymce.
418 + * Necessary for php 5.2 usage :(; not possible to use an anonymous function.
419 + *
420 + * @return string
421 + */
422 + function _mw_admininimize_return_tinmyce() {
423 + return 'tinymce';
424 + }
394 425 }
395 426
396 - // remove media bottons
427 + // Remove media buttons
397 428 if ( _mw_adminimize_recursive_in_array( 'media_buttons', $disabled_metaboxes_page_all )
398 - || _mw_adminimize_recursive_in_array( 'media_buttons', $disabled_metaboxes_post_all )
429 + || _mw_adminimize_recursive_in_array( 'media_buttons', $disabled_metaboxes_post_all )
399 430 ) {
400 431 remove_action( 'media_buttons', 'media_buttons' );
401 432 }
402 433 }
403 -
404 434 }
405 435
406 436 // set meta-box post option
407 - if ( in_array( $pagenow, $def_post_pages, FALSE ) && in_array( $current_post_type, $def_post_types, FALSE ) ) {
437 + if ( in_array( $pagenow, $def_post_pages, TRUE ) && in_array( $current_post_type, $def_post_types, TRUE ) ) {
408 438 add_action( 'admin_head', '_mw_adminimize_set_metabox_post_option', 1 );
409 439 }
410 440 // set meta-box page option
411 - if ( in_array( $pagenow, $def_page_pages, FALSE ) && in_array( $current_post_type, $def_page_types, FALSE ) ) {
441 + if ( in_array( $pagenow, $def_page_pages, TRUE ) && in_array( $current_post_type, $def_page_types, TRUE ) ) {
412 442 add_action( 'admin_head', '_mw_adminimize_set_metabox_page_option', 1 );
413 443 }
414 444 // set custom post type options
415 - if ( function_exists( 'get_post_types' ) && in_array( $pagenow, $def_custom_pages, FALSE )
416 - && in_array(
417 - $current_post_type, $def_custom_types, FALSE
418 - )
445 + if ( function_exists( 'get_post_types' ) && in_array( $pagenow, $def_custom_pages, TRUE )
446 + && in_array( $current_post_type, $def_custom_types, TRUE )
419 447 ) {
420 448 add_action( 'admin_head', '_mw_adminimize_set_metabox_cp_option', 1 );
421 449 }
422 450 // set link option
423 - if ( in_array( $pagenow, $link_pages, FALSE ) ) {
451 + if ( in_array( $pagenow, $link_pages, TRUE ) ) {
424 452 add_action( 'admin_head', '_mw_adminimize_set_link_option', 1 );
425 453 }
426 454 // set wp nav menu options
427 - if ( in_array( $pagenow, $nav_menu_pages, FALSE ) ) {
455 + if ( in_array( $pagenow, $nav_menu_pages, TRUE ) ) {
428 456 add_action( 'admin_head', '_mw_adminimize_set_nav_menu_option', 1 );
429 457 }
430 458 // set widget options
431 - if ( in_array( $pagenow, $widget_pages, FALSE ) ) {
459 + if ( in_array( $pagenow, $widget_pages, TRUE ) ) {
432 460 add_action( 'admin_head', '_mw_adminimize_set_widget_option', 1 );
433 461 }
434 462 }
435 463
436 -// Alternative run the hok admin_head later
437 -add_action( 'admin_menu', '_mw_adminimize_set_menu_option', 99999 );
464 +// Change menu via settings of Adminimize.
465 +//add_filter( 'custom_menu_order', '__return_true' );
466 +add_filter( 'admin_menu', '_mw_adminimize_set_menu_option', 99999 );
467 +
438 468 // global_options
439 469 add_action( 'admin_head', '_mw_adminimize_set_global_option', 1 );
440 470 // on admin init
441 471 if ( is_admin() ) {
442 - add_action( 'admin_init', '_mw_adminimize_textdomain' );
443 472 add_action( 'admin_init', '_mw_adminimize_admin_init' );
444 473 add_action( 'admin_menu', '_mw_adminimize_add_settings_page' );
445 474 add_action( 'admin_menu', '_mw_adminimize_remove_dashboard' );
446 475 }
447 -add_action( 'init', '_mw_adminimize_set_logout_menu', 2 );
448 476
449 477 register_activation_hook( __FILE__, '_mw_adminimize_install' );
450 478 register_uninstall_hook( __FILE__, '_mw_adminimize_uninstall' );
451 -//register_deactivation_hook(__FILE__, '_mw_adminimize_uninstall' );
452 479
453 480 /**
454 481 * Remove the dashboard
455 482 */
@@ -494,9 +521,9 @@
494 521 $redirect = FALSE;
495 522 foreach ( $user_roles as $role ) {
496 523 if ( _mw_adminimize_current_user_has_role( $role ) ) {
497 524 if ( _mw_adminimize_recursive_in_array( 'index.php', $disabled_menu_[ $role ] )
498 - || _mw_adminimize_recursive_in_array( 'index.php', $disabled_submenu_[ $role ] )
525 + || _mw_adminimize_recursive_in_array( 'index.php', $disabled_submenu_[ $role ] )
499 526 ) {
500 527 $redirect = TRUE;
501 528 }
502 529 }
@@ -501,9 +528,9 @@
501 528 }
502 529 }
503 530 }
504 531
505 - // redirect option, if Dashboard is inactive
532 + // Redirect option, if Dashboard is inactive
506 533 if ( $redirect ) {
507 534 $_mw_adminimize_db_redirect = (int) _mw_adminimize_get_option_value(
508 535 '_mw_adminimize_db_redirect'
509 536 );
@@ -538,14 +565,14 @@
538 565
539 566 $dashboard_core_string = esc_attr__( 'Dashboard' );
540 567 $dashboard = array( $menu[ $page ][ 0 ], $menu[ $page ][ 1 ] );
541 568 while (
542 - ! in_array( $dashboard_core_string, $dashboard, FALSE ) && next( $menu )
569 + ! in_array( $dashboard_core_string, $dashboard, TRUE ) && next( $menu )
543 570 ) {
544 571 $page = key( $menu );
545 572 }
546 573
547 - if ( in_array( $dashboard_core_string, $dashboard, FALSE ) ) {
574 + if ( in_array( $dashboard_core_string, $dashboard, TRUE ) ) {
548 575 unset( $menu[ $page ] );
549 576 }
550 577 reset( $menu );
551 578 $page = key( $menu );
@@ -554,12 +581,11 @@
554 581 $page = key( $menu );
555 582 }
556 583
557 584 if ( preg_match( '#wp-admin/?(index.php)?$#', $_SERVER[ 'REQUEST_URI' ] ) ) {
558 - wp_redirect( $_mw_adminimize_db_redirect );
585 + wp_safe_redirect( $_mw_adminimize_db_redirect );
559 586 }
560 587 }
561 -
562 588 }
563 589 }
564 590
565 591 /**
@@ -568,9 +594,9 @@
568 594 function _mw_adminimize_set_menu_option() {
569 595
570 596 // exclude super admin
571 597 if ( _mw_adminimize_exclude_super_admin() ) {
572 - return NULL;
598 + return;
573 599 }
574 600
575 601 // Leave the settings screen from Adminimize to see all areas on settings.
576 602 if ( _mw_adminimize_exclude_settings_page() ) {
@@ -577,17 +603,29 @@
577 603 return;
578 604 }
579 605
580 606 global $menu, $submenu;
607 + $wp_menu = (array) _mw_adminimize_get_option_value( 'mw_adminimize_default_menu' );
608 + $wp_submenu = (array) _mw_adminimize_get_option_value( 'mw_adminimize_default_submenu' );
581 609
610 + // Object to array
611 + if ( is_object( $wp_submenu ) ) {
612 + $wp_submenu = get_object_vars( $wp_submenu );
613 + }
614 +
615 + if ( ! isset( $wp_menu ) || empty( $wp_menu ) ) {
616 + $wp_menu = $menu;
617 + }
618 + if ( ! isset( $wp_submenu ) || empty( $wp_submenu ) ) {
619 + $wp_submenu = $submenu;
620 + }
582 621 if ( ! isset( $menu ) || empty( $menu ) ) {
583 622 return;
584 623 }
585 624
586 - _mw_adminimize_debug( $menu, 'Adminimize, WordPress Menu:' );
587 - _mw_adminimize_debug( $submenu, 'Adminimize, WordPress Sub-Menu:' );
625 + _mw_adminimize_debug( $wp_menu, 'Adminimize, WordPress Menu:' );
626 + _mw_adminimize_debug( $wp_submenu, 'Adminimize, WordPress Sub-Menu:' );
588 627
589 - //$user_roles = _mw_adminimize_get_all_user_roles();
590 628 $disabled_menu_ = array();
591 629 $disabled_submenu_ = array();
592 630 $user = wp_get_current_user();
593 631 $user_roles = $user->roles;
@@ -606,21 +644,19 @@
606 644 $mw_adminimize_submenu = array();
607 645
608 646 // Set admin-menu.
609 647 foreach ( $user_roles as $role ) {
610 -
611 - if ( in_array( $role, $user->roles, FALSE )
612 - && _mw_adminimize_current_user_has_role( $role )
648 + if ( in_array( $role, $user->roles, TRUE )
649 + && _mw_adminimize_current_user_has_role( $role )
613 650 ) {
614 651 // Create array about all items with all affected roles.
615 - foreach ( $disabled_menu_[ $role ] as $menu_item ) {
652 + foreach ( (array) $disabled_menu_[ $role ] as $menu_item ) {
616 653 $mw_adminimize_menu[] = $menu_item;
617 654 }
618 - foreach ( $disabled_submenu_[ $role ] as $submenu_item ) {
655 + foreach ( (array) $disabled_submenu_[ $role ] as $submenu_item ) {
619 656 $mw_adminimize_submenu[] = $submenu_item;
620 657 }
621 658 }
622 -
623 659 }
624 660
625 661 // Support Multiple Roles for users.
626 662 // Leave only the items, there are active on each roles of the users.
@@ -632,21 +668,19 @@
632 668 $mw_adminimize_menu = array_unique( $mw_adminimize_menu );
633 669 $mw_adminimize_submenu = array_unique( $mw_adminimize_submenu );
634 670 }
635 671 _mw_adminimize_debug( $mw_adminimize_menu, 'Adminimize, Menu Slugs to hide after Filter.' );
636 - _mw_adminimize_debug( $mw_adminimize_menu, 'Adminimize, Sub-Menu Slugs to hide after Filter.' );
672 + _mw_adminimize_debug( $mw_adminimize_submenu, 'Adminimize, Sub-Menu Slugs to hide after Filter.' );
637 673
638 - // Fallback on users.php on all user roles smaller admin.
639 - if ( in_array( 'users.php', $mw_adminimize_menu, FALSE ) ) {
640 - $mw_adminimize_menu[] = 'profile.php';
641 - }
642 - foreach ( $menu as $key => $item ) {
674 + foreach ( $wp_menu as $key => $item ) {
643 675
676 + _mw_adminimize_debug( $item, 'Adminimize, Each Menu Item Array to check for hiding.' );
677 +
644 678 // Menu
645 679 if ( isset( $item[ 2 ] ) ) {
646 680 $menu_slug = $item[ 2 ];
647 681 // Check, if the Menu item in the current user role settings?
648 - if ( in_array( $menu_slug, $mw_adminimize_menu, FALSE )
682 + if ( in_array( $menu_slug, $mw_adminimize_menu, false )
649 683 ) {
650 684 remove_menu_page( $menu_slug );
651 685 // Prevent access to the page with the slug, there was inactive.
652 686 _mw_adminimize_check_page_access( $menu_slug );
@@ -652,10 +686,16 @@
652 686 _mw_adminimize_check_page_access( $menu_slug );
653 687 }
654 688
655 689 // Sub Menu Settings.
656 - if ( isset( $submenu ) && ! empty( $submenu[ $menu_slug ] ) ) {
657 - foreach ( $submenu[ $menu_slug ] as $subindex => $subitem ) {
690 + if ( isset( $wp_submenu ) && ! empty( $wp_submenu[ $menu_slug ] ) ) {
691 + foreach ( (array) $wp_submenu[ $menu_slug ] as $subindex => $subitem ) {
692 +
693 + // @see https://github.com/bueltge/adminimize/issues/149
694 + if ( is_object( $subitem ) ) {
695 + $subitem = json_decode( json_encode( $subitem ), true );
696 + }
697 +
658 698 // Check, if is Sub Menu item in the user role settings?
659 699 if (
660 700 isset( $mw_adminimize_submenu )
661 701 && _mw_adminimize_in_arrays(
@@ -663,9 +703,8 @@
663 703 $mw_adminimize_submenu
664 704 )
665 705 ) {
666 706 remove_submenu_page( $menu_slug, $subitem[ 2 ] );
667 - //unset( $submenu[ $menu_slug ][ $subindex ] );
668 707 // Prevent access to the page with the slug, there was inactive.
669 708 _mw_adminimize_check_page_access( $subitem[ 2 ] );
670 709 }
671 710 }
@@ -704,12 +743,12 @@
704 743 }
705 744
706 745 // Write global options in an var.
707 746 foreach ( $user_roles as $role ) {
708 - if ( in_array( $role, $user->roles, FALSE ) && _mw_adminimize_current_user_has_role( $role ) ) {
747 + if ( in_array( $role, $user->roles, TRUE ) && _mw_adminimize_current_user_has_role( $role ) ) {
709 748
710 749 // Create array about all items with all affected roles, important for multiple roles.
711 - foreach ( $disabled_global_option_[ $role ] as $global_item ) {
750 + foreach ( (array) $disabled_global_option_[ $role ] as $global_item ) {
712 751 $disabled_global_option[] = $global_item;
713 752 }
714 753 }
715 754 }
@@ -726,8 +765,11 @@
726 765 }
727 766 $_mw_adminimize_admin_head .= '<!-- Set Adminimize global options -->' . "\n";
728 767 $_mw_adminimize_admin_head .= '<style type="text/css">' . $global_options . ' {display:none !important;}</style>' . "\n";
729 768
769 + // List options if the debug option is active.
770 + _mw_adminimize_debug($global_options, 'Adminimize: List active global options:');
771 +
730 772 if ( '' !== $global_options ) {
731 773 echo $_mw_adminimize_admin_head;
732 774 }
733 775 }
@@ -732,15 +774,15 @@
732 774 }
733 775 }
734 776
735 777 /**
736 - * set metabox options from database an area post
778 + * Set metabox options from database an area post.
737 779 */
738 780 function _mw_adminimize_set_metabox_post_option() {
739 781
740 782 // exclude super admin
741 783 if ( _mw_adminimize_exclude_super_admin() ) {
742 - return NULL;
784 + return;
743 785 }
744 786
745 787 // Leave the settings screen from Adminimize to see all areas on settings.
746 788 if ( _mw_adminimize_exclude_settings_page() ) {
@@ -748,9 +790,10 @@
748 790 }
749 791
750 792 $user_roles = _mw_adminimize_get_all_user_roles();
751 793 $_mw_adminimize_admin_head = '';
752 - $metaboxes = '';
794 + // It's better to declare $metaboxes as an array for better manipulation later.
795 + $metaboxes = array();
753 796
754 797 foreach ( $user_roles as $role ) {
755 798 $disabled_metaboxes_post_[ $role ] = _mw_adminimize_get_option_value(
756 799 'mw_adminimize_disabled_metaboxes_post_' . $role . '_items'
@@ -755,28 +798,42 @@
755 798 $disabled_metaboxes_post_[ $role ] = _mw_adminimize_get_option_value(
756 799 'mw_adminimize_disabled_metaboxes_post_' . $role . '_items'
757 800 );
758 801
759 - if ( ! isset( $disabled_metaboxes_post_[ $role ][ '0' ] ) ) {
760 - $disabled_metaboxes_post_[ $role ][ '0' ] = '';
802 + if ( ! isset( $disabled_metaboxes_post_[ $role ]['0'] ) ) {
803 + $disabled_metaboxes_post_[ $role ]['0'] = '';
804 +
805 + /**
806 + * @todo Think why keep going if $role does not even have boxes to hide? We may as well jump to the next $role.
807 + */
808 + continue;
761 809 }
762 810
763 - // new 1.7.8
764 - $user = wp_get_current_user();
765 - if ( is_array( $user->roles ) && in_array( $role, $user->roles, FALSE ) ) {
811 + /**
812 + * @todo Think why call a function as we can use a global variable already declared by WordPress.
813 + * @var WP_User $user Instance of WP_User.
814 + * @since 1.7.8
815 + * @version 1.11.4
816 + */
817 + $user = $GLOBALS['current_user'];
818 + if ( is_array( $user->roles ) && in_array( $role, $user->roles, true ) ) {
766 819 if ( _mw_adminimize_current_user_has_role( $role ) && isset( $disabled_metaboxes_post_[ $role ] )
767 - && is_array(
768 - $disabled_metaboxes_post_[ $role ]
769 - )
820 + && is_array(
821 + $disabled_metaboxes_post_[ $role ]
822 + )
770 823 ) {
771 - $metaboxes = implode( ',', $disabled_metaboxes_post_[ $role ] );
824 + // The previous way $metaboxes was being filled it could be at some point non empty and empty afterwards.
825 + // For instance, if a $role has items to be hidden and the user has this $role, $metaboxes will be filled.
826 + // But in next loop $metaboxes may receive '' as the next $role might not have items to hide and the user might has the next $role.
827 + $metaboxes[] = implode( ',', $disabled_metaboxes_post_[ $role ] );
772 828 }
773 829 }
774 830 }
775 831
776 832 $_mw_adminimize_admin_head .= '<!-- Set Adminimize metabox post options -->' . "\n";
833 + // And below we implode $metaboxes because it's an array now.
777 834 $_mw_adminimize_admin_head .= '<style type="text/css">' .
778 - $metaboxes . ' {display:none !important;}</style>' . "\n";
835 + implode( ',', $metaboxes ) . ' {display:none !important;}</style>' . "\n";
779 836
780 837 if ( ! empty( $metaboxes ) ) {
781 838 echo $_mw_adminimize_admin_head;
782 839 }
@@ -782,9 +839,9 @@
782 839 }
783 840 }
784 841
785 842 /**
786 - * set metabox options from database an area page
843 + * Set metabox options from database an area page.
787 844 */
788 845 function _mw_adminimize_set_metabox_page_option() {
789 846
790 847 // exclude super admin
@@ -809,14 +866,14 @@
809 866 if ( ! isset( $disabled_metaboxes_page_[ $role ][ '0' ] ) ) {
810 867 $disabled_metaboxes_page_[ $role ][ '0' ] = '';
811 868 }
812 869
813 - // new 1.7.8
870 + // New since version 1.7.8.
814 871 $user = wp_get_current_user();
815 - if ( is_array( $user->roles ) && in_array( $role, $user->roles, FALSE ) ) {
872 + if ( is_array( $user->roles ) && in_array( $role, $user->roles, TRUE ) ) {
816 873 if ( _mw_adminimize_current_user_has_role( $role )
817 - && isset( $disabled_metaboxes_page_[ $role ] )
818 - && is_array( $disabled_metaboxes_page_[ $role ] )
874 + && isset( $disabled_metaboxes_page_[ $role ] )
875 + && is_array( $disabled_metaboxes_page_[ $role ] )
819 876 ) {
820 877 $metaboxes = implode( ',', $disabled_metaboxes_page_[ $role ] );
821 878 }
822 879 }
@@ -823,9 +880,9 @@
823 880 }
824 881
825 882 $_mw_adminimize_admin_head .= '<!-- Set Adminimize metabox page options -->' . "\n";
826 883 $_mw_adminimize_admin_head .= '<style type="text/css">' .
827 - $metaboxes . ' {display:none !important;}</style>' . "\n";
884 + $metaboxes . ' {display:none !important;}</style>' . "\n";
828 885
829 886 if ( ! empty( $metaboxes ) ) {
830 887 echo $_mw_adminimize_admin_head;
831 888 }
@@ -831,9 +888,9 @@
831 888 }
832 889 }
833 890
834 891 /**
835 - * set metabox options from database an area post
892 + * Set metabox options from database an area post.
836 893 */
837 894 function _mw_adminimize_set_metabox_cp_option() {
838 895
839 896 // exclude super admin
@@ -845,14 +902,13 @@
845 902 if ( _mw_adminimize_exclude_settings_page() ) {
846 903 return;
847 904 }
848 905
906 + $post_id = 0;
849 907 if ( isset( $_GET[ 'post' ] ) ) {
850 908 $post_id = (int) $_GET[ 'post' ];
851 909 } elseif ( isset( $_POST[ 'post_ID' ] ) ) {
852 910 $post_id = (int) $_POST[ 'post_ID' ];
853 - } else {
854 - $post_id = 0;
855 911 }
856 912
857 913 $current_post_type = $GLOBALS[ 'post_type' ];
858 914 if ( ! isset( $current_post_type ) ) {
@@ -869,9 +925,9 @@
869 925 }
870 926
871 927 $user_roles = _mw_adminimize_get_all_user_roles();
872 928 $_mw_adminimize_admin_head = '';
873 - $metaboxes = '';
929 + $metaboxes = array();
874 930
875 931 foreach ( $user_roles as $role ) {
876 932 $disabled_metaboxes_[ $current_post_type . '_' . $role ] = _mw_adminimize_get_option_value(
877 933 'mw_adminimize_disabled_metaboxes_' . $current_post_type . '_' . $role . '_items'
@@ -876,19 +932,21 @@
876 932 $disabled_metaboxes_[ $current_post_type . '_' . $role ] = _mw_adminimize_get_option_value(
877 933 'mw_adminimize_disabled_metaboxes_' . $current_post_type . '_' . $role . '_items'
878 934 );
879 935
880 - if ( ! isset( $disabled_metaboxes_[ $current_post_type . '_' . $role ][ '0' ] ) ) {
881 - $disabled_metaboxes_[ $current_post_type . '_' . $role ][ '0' ] = '';
936 + if ( ! isset( $disabled_metaboxes_[ $current_post_type . '_' . $role ]['0'] ) ) {
937 + $disabled_metaboxes_[ $current_post_type . '_' . $role ]['0'] = '';
938 +
939 + continue;
882 940 }
883 941
884 - $user = wp_get_current_user();
885 - if ( is_array( $user->roles ) && in_array( $role, $user->roles, FALSE ) ) {
942 + $user = $GLOBALS['current_user'];
943 + if ( is_array( $user->roles ) && in_array( $role, $user->roles, true ) ) {
886 944 if ( _mw_adminimize_current_user_has_role( $role )
887 - && isset( $disabled_metaboxes_[ $current_post_type . '_' . $role ] )
888 - && is_array( $disabled_metaboxes_[ $current_post_type . '_' . $role ] )
945 + && isset( $disabled_metaboxes_[ $current_post_type . '_' . $role ] )
946 + && is_array( $disabled_metaboxes_[ $current_post_type . '_' . $role ] )
889 947 ) {
890 - $metaboxes = implode( ',', $disabled_metaboxes_[ $current_post_type . '_' . $role ] );
948 + $metaboxes[] = implode( ',', $disabled_metaboxes_[ $current_post_type . '_' . $role ] );
891 949 }
892 950 }
893 951 }
894 952
@@ -893,9 +951,9 @@
893 951 }
894 952
895 953 $_mw_adminimize_admin_head .= '<!-- Set Adminimize post options -->' . "\n";
896 954 $_mw_adminimize_admin_head .= '<style type="text/css">' .
897 - $metaboxes . ' {display:none !important;}</style>' . "\n";
955 + implode( ',', $metaboxes ) . ' {display:none !important;}</style>' . "\n";
898 956
899 957 if ( ! empty( $metaboxes ) ) {
900 958 echo $_mw_adminimize_admin_head;
901 959 }
@@ -901,9 +959,9 @@
901 959 }
902 960 }
903 961
904 962 /**
905 - * set link options in area Links of Backend
963 + * Set link options in area links of back end.
906 964 */
907 965 function _mw_adminimize_set_link_option() {
908 966
909 967 // exclude super admin
@@ -931,12 +989,11 @@
931 989 }
932 990 }
933 991
934 992 $link_options = '';
935 - // new 1.7.8
936 993 foreach ( $user_roles as $role ) {
937 994 $user = wp_get_current_user();
938 - if ( is_array( $user->roles ) && in_array( $role, $user->roles, FALSE ) ) {
995 + if ( is_array( $user->roles ) && in_array( $role, $user->roles, TRUE ) ) {
939 996 if ( _mw_adminimize_current_user_has_role( $role )
940 997 && isset( $disabled_link_option_[ $role ] )
941 998 && is_array( $disabled_link_option_[ $role ] )
942 999 ) {
@@ -946,9 +1003,9 @@
946 1003 }
947 1004
948 1005 $_mw_adminimize_admin_head .= '<!-- Set Adminimize links options -->' . "\n";
949 1006 $_mw_adminimize_admin_head .= '<style type="text/css">' .
950 - $link_options . ' {display:none !important;}</style>' . "\n";
1007 + $link_options . ' {display:none !important;}</style>' . "\n";
951 1008
952 1009 if ( ! empty( $link_options ) ) {
953 1010 echo $_mw_adminimize_admin_head;
954 1011 }
@@ -954,9 +1011,9 @@
954 1011 }
955 1012 }
956 1013
957 1014 /**
958 - * remove objects on wp nav menu
1015 + * Remove objects on wp nav menu.
959 1016 */
960 1017 function _mw_adminimize_set_nav_menu_option() {
961 1018
962 1019 // exclude super admin
@@ -984,12 +1041,11 @@
984 1041 }
985 1042 }
986 1043
987 1044 $nav_menu_options = '';
988 - // new 1.7.8
989 1045 foreach ( $user_roles as $role ) {
990 1046 $user = wp_get_current_user();
991 - if ( is_array( $user->roles ) && in_array( $role, $user->roles, FALSE ) ) {
1047 + if ( is_array( $user->roles ) && in_array( $role, $user->roles, TRUE ) ) {
992 1048 if ( _mw_adminimize_current_user_has_role( $role )
993 1049 && isset( $disabled_nav_menu_option_[ $role ] )
994 1050 && is_array( $disabled_nav_menu_option_[ $role ] )
995 1051 ) {
@@ -996,13 +1052,12 @@
996 1052 $nav_menu_options = implode( ',', $disabled_nav_menu_option_[ $role ] );
997 1053 }
998 1054 }
999 1055 }
1000 - //remove_meta_box( $id, 'nav-menus', 'side' );
1001 1056
1002 1057 $_mw_adminimize_admin_head .= '<!-- Set Adminimize WP Nav Menu options -->' . "\n";
1003 1058 $_mw_adminimize_admin_head .= '<style type="text/css">' .
1004 - $nav_menu_options . ' {display: none !important;}</style>' . "\n";
1059 + $nav_menu_options . ' {display: none !important;}</style>' . "\n";
1005 1060
1006 1061 if ( $nav_menu_options ) {
1007 1062 echo $_mw_adminimize_admin_head;
1008 1063 }
@@ -1038,12 +1093,11 @@
1038 1093 }
1039 1094 }
1040 1095
1041 1096 $widget_options = '';
1042 - // new 1.7.8
1043 1097 foreach ( $user_roles as $role ) {
1044 1098 $user = wp_get_current_user();
1045 - if ( is_array( $user->roles ) && in_array( $role, $user->roles, FALSE ) ) {
1099 + if ( is_array( $user->roles ) && in_array( $role, $user->roles, TRUE ) ) {
1046 1100 if ( _mw_adminimize_current_user_has_role( $role )
1047 1101 && isset( $disabled_widget_option_[ $role ] )
1048 1102 && is_array( $disabled_widget_option_[ $role ] )
1049 1103 ) {
@@ -1050,13 +1104,12 @@
1050 1104 $widget_options = implode( ',', $disabled_widget_option_[ $role ] );
1051 1105 }
1052 1106 }
1053 1107 }
1054 - //remove_meta_box( $id, 'nav-menus', 'side' );
1055 1108
1056 1109 $_mw_adminimize_admin_head .= '<!-- Set Adminimize Widget options -->' . "\n";
1057 1110 $_mw_adminimize_admin_head .= '<style type="text/css">' .
1058 - $widget_options . ' {display: none !important;}</style>' . "\n";
1111 + $widget_options . ' {display: none !important;}</style>' . "\n";
1059 1112
1060 1113 if ( $widget_options ) {
1061 1114 echo $_mw_adminimize_admin_head;
1062 1115 }
@@ -1062,9 +1115,9 @@
1062 1115 }
1063 1116 }
1064 1117
1065 1118 /**
1066 - * small user-info
1119 + * Print small user-info.
1067 1120 */
1068 1121 function _mw_adminimize_small_user_info() {
1069 1122
1070 1123 ?>
@@ -1079,14 +1132,15 @@
1079 1132 </div>
1080 1133 <?php
1081 1134 }
1082 1135
1136 +// include helping functions
1137 +require_once 'inc-setup/DebugListener.php';
1138 +require_once 'inc-setup/helping_hands.php';
1139 +
1083 1140 // Include message class.
1084 1141 require_once 'inc-setup/messages.php';
1085 1142
1086 -// include helping functions
1087 -require_once 'inc-setup/helping_hands.php';
1088 -
1089 1143 // inc. settings page
1090 1144 require_once 'adminimize_page.php';
1091 1145
1092 1146 // dashboard options
@@ -1093,14 +1147,11 @@
1093 1147 require_once 'inc-setup/dashboard.php';
1094 1148
1095 1149 // widget options
1096 1150 require_once 'inc-setup/widget.php';
1151 +require_once 'inc-setup/footer.php';
1097 1152 require_once 'inc-setup/admin-footer.php';
1098 1153
1099 -// global settings
1100 -// @TODO Testing, not ready for productive
1101 -//require_once( 'inc-options/settings_notice.php' );
1102 -
1103 1154 // remove admin bar
1104 1155 require_once 'inc-setup/remove-admin-bar.php';
1105 1156
1106 1157 // admin bar helper, setup
@@ -1113,15 +1164,19 @@
1113 1164
1114 1165 // Remove Admin Notices.
1115 1166 require_once 'inc-setup/remove-admin-notices.php';
1116 1167
1168 +// Add Ex-Import functions.
1169 +require_once 'inc-setup/export.php';
1170 +require_once 'inc-setup/import.php';
1171 +
1117 1172 /**
1118 1173 * Add action link(s) to plugins page
1119 1174 *
1120 - * @param $links , $file
1121 - * @param $file
1175 + * @param array $links
1176 + * @param string $file
1122 1177 *
1123 - * @return $links
1178 + * @return array $links
1124 1179 */
1125 1180 function _mw_adminimize_filter_plugin_meta( $links, $file ) {
1126 1181
1127 1182 /* create link */
@@ -1127,9 +1182,12 @@
1127 1182 /* create link */
1128 1183 if ( FB_ADMINIMIZE_BASENAME === $file ) {
1129 1184 array_unshift(
1130 1185 $links,
1131 - sprintf( '<a href="options-general.php?page=%s">%s</a>', FB_ADMINIMIZE_BASENAME, esc_attr__( 'Settings' ) )
1186 + sprintf(
1187 + '<a href="options-general.php?page=adminimize-options">%s</a>',
1188 + esc_attr__( 'Settings' )
1189 + )
1132 1190 );
1133 1191 }
1134 1192
1135 1193 return $links;
@@ -1135,9 +1193,9 @@
1135 1193 return $links;
1136 1194 }
1137 1195
1138 1196 /**
1139 - * settings in plugin-admin-page
1197 + * Add settings in plugin-admin-page.
1140 1198 */
1141 1199 function _mw_adminimize_add_settings_page() {
1142 1200
1143 1201 $pagehook = add_options_page(
@@ -1143,11 +1201,12 @@
1143 1201 $pagehook = add_options_page(
1144 1202 esc_attr__( 'Adminimize Options', 'adminimize' ),
1145 1203 esc_attr__( 'Adminimize', 'adminimize' ),
1146 1204 'manage_options',
1147 - __FILE__,
1205 + 'adminimize-options',
1148 1206 '_mw_adminimize_options'
1149 1207 );
1208 +
1150 1209 if ( ! is_network_admin() ) {
1151 1210 add_filter( 'plugin_action_links', '_mw_adminimize_filter_plugin_meta', 10, 2 );
1152 1211 }
1153 1212 add_action( 'load-' . $pagehook, '_mw_adminimize_on_load_page' );
@@ -1152,15 +1211,23 @@
1152 1211 }
1153 1212 add_action( 'load-' . $pagehook, '_mw_adminimize_on_load_page' );
1154 1213 }
1155 1214
1215 +/**
1216 + * Enqueue script and styles for the settings page.
1217 + */
1156 1218 function _mw_adminimize_on_load_page() {
1157 1219
1220 + // Load translation files on options page.
1221 + _mw_adminimize_textdomain();
1222 +
1158 1223 $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
1159 1224
1225 + wp_enqueue_style( 'select2-style', plugins_url( 'css/select2' . $suffix . '.css', __FILE__ ), [], false );
1160 1226 wp_register_style( 'adminimize-style', plugins_url( 'css/style' . $suffix . '.css', __FILE__ ) );
1161 1227 wp_enqueue_style( 'adminimize-style' );
1162 1228
1229 + wp_enqueue_script( 'select2-script', plugins_url( 'js/select2' . $suffix . '.js', __FILE__ ), array( 'jquery' ),'',false );
1163 1230 wp_register_script(
1164 1231 'adminimize-settings-script',
1165 1232 plugins_url( 'js/adminimize' . $suffix . '.js', __FILE__ ),
1166 1233 array( 'jquery' ),
@@ -1170,47 +1237,23 @@
1170 1237 wp_enqueue_script( 'adminimize-settings-script' );
1171 1238 }
1172 1239
1173 1240 /**
1174 - * Set theme for users
1175 - * Kill with version 1.7.18
1176 - */
1177 -function _mw_adminimize_set_theme() {
1178 -
1179 - if ( ! current_user_can( 'edit_users' ) ) {
1180 - wp_die( esc_attr__( 'Cheatin&#8217; uh?' ) );
1181 - }
1182 -
1183 - $user_ids = $_POST[ 'mw_adminimize_theme_items' ];
1184 - $admin_color = htmlspecialchars( stripslashes( $_POST[ '_mw_adminimize_set_theme' ] ) );
1185 -
1186 - if ( ! $user_ids ) {
1187 - return FALSE;
1188 - }
1189 -
1190 - foreach ( $user_ids as $user_id ) {
1191 - update_user_meta( $user_id, 'admin_color', $admin_color );
1192 - }
1193 -
1194 - return TRUE;
1195 -}
1196 -
1197 -/**
1198 1241 * Get setting value for each options key.
1199 1242 *
1200 1243 * @param string|bool $key
1201 1244 *
1202 - * @return array
1245 + * @return string
1203 1246 */
1204 -function _mw_adminimize_get_option_value( $key = FALSE ) {
1247 +function _mw_adminimize_get_option_value( $key = false ) {
1205 1248
1206 - $adminimizeoptions = FALSE;
1249 + $adminimizeoptions = false;
1207 1250 if ( ! _mw_adminimize_exclude_settings_page() ) {
1208 1251 $adminimizeoptions = wp_cache_get( 'mw_adminimize' );
1209 1252 }
1210 1253
1211 - if ( FALSE === $adminimizeoptions ) {
1212 - // check for use on multisite
1254 + if ( false === $adminimizeoptions ) {
1255 + // check for use on multisite.
1213 1256 if ( _mw_adminimize_is_active_on_multisite() ) {
1214 1257 $adminimizeoptions = (array) get_site_option( 'mw_adminimize', array() );
1215 1258 } else {
1216 1259 $adminimizeoptions = (array) get_option( 'mw_adminimize', array() );
@@ -1221,9 +1264,9 @@
1221 1264 if ( ! $key ) {
1222 1265 return $adminimizeoptions;
1223 1266 }
1224 1267
1225 - return array_key_exists( $key, $adminimizeoptions ) ? $adminimizeoptions[ $key ] : NULL;
1268 + return array_key_exists( $key, $adminimizeoptions ) ? $adminimizeoptions[ $key ] : null;
1226 1269 }
1227 1270
1228 1271 /**
1229 1272 * Update options.
@@ -1237,8 +1280,17 @@
1237 1280 if ( ! current_user_can( 'manage_options' ) ) {
1238 1281 return FALSE;
1239 1282 }
1240 1283
1284 + if ( _mw_adminimize_is_roles_options_import( $options ) ){
1285 + $options = _mw_adminimize_roles_complete_options( $options );
1286 + }
1287 +
1288 + // Remove slashes always.
1289 + foreach ( $options as $key => $value ) {
1290 + $options[ $key ] = stripslashes_deep( $value );
1291 + }
1292 +
1241 1293 // Kill the cache for the settings page.
1242 1294 wp_cache_delete( 'mw_adminimize' );
1243 1295 if ( _mw_adminimize_is_active_on_multisite() ) {
1244 1296 update_site_option( 'mw_adminimize', $options );
@@ -1415,10 +1467,10 @@
1415 1467 // @ToDo After release of WP 4.7, switch to sanitize_textarea_field()
1416 1468
1417 1469 // own menu slug
1418 1470 if ( isset( $_POST[ '_mw_adminimize_own_menu_slug' ] ) ) {
1419 - $adminimizeoptions[ '_mw_adminimize_own_menu_slug' ] = wp_strip_all_tags(
1420 - $_POST[ '_mw_adminimize_own_menu_slug' ]
1471 + $adminimizeoptions[ '_mw_adminimize_own_menu_slug' ] = stripslashes(
1472 + wp_strip_all_tags( $_POST[ '_mw_adminimize_own_menu_slug' ] )
1421 1473 );
1422 1474 } else {
1423 1475 $adminimizeoptions[ '_mw_adminimize_own_menu_slug' ] = '';
1424 1476 }
@@ -1423,10 +1475,10 @@
1423 1475 $adminimizeoptions[ '_mw_adminimize_own_menu_slug' ] = '';
1424 1476 }
1425 1477 // own custom menu slug
1426 1478 if ( isset( $_POST[ '_mw_adminimize_own_menu_custom_slug' ] ) ) {
1427 - $adminimizeoptions[ '_mw_adminimize_own_menu_custom_slug' ] = wp_strip_all_tags(
1428 - $_POST[ '_mw_adminimize_own_menu_custom_slug' ]
1479 + $adminimizeoptions[ '_mw_adminimize_own_menu_custom_slug' ] = stripslashes(
1480 + wp_strip_all_tags( $_POST[ '_mw_adminimize_own_menu_custom_slug' ] )
1429 1481 );
1430 1482 } else {
1431 1483 $adminimizeoptions[ '_mw_adminimize_own_menu_custom_slug' ] = '';
1432 1484 }
@@ -1498,15 +1550,19 @@
1498 1550 }
1499 1551
1500 1552 // own options
1501 1553 if ( isset( $_POST[ '_mw_adminimize_own_values' ] ) ) {
1502 - $adminimizeoptions[ '_mw_adminimize_own_values' ] = wp_strip_all_tags( $_POST[ '_mw_adminimize_own_values' ] );
1554 + $adminimizeoptions[ '_mw_adminimize_own_values' ] = stripslashes(
1555 + wp_strip_all_tags( $_POST[ '_mw_adminimize_own_values' ] )
1556 + );
1503 1557 } else {
1504 1558 $adminimizeoptions[ '_mw_adminimize_own_values' ] = '';
1505 1559 }
1506 1560
1507 1561 if ( isset( $_POST[ '_mw_adminimize_own_options' ] ) ) {
1508 - $adminimizeoptions[ '_mw_adminimize_own_options' ] = wp_strip_all_tags( $_POST[ '_mw_adminimize_own_options' ] );
1562 + $adminimizeoptions[ '_mw_adminimize_own_options' ] = stripslashes(
1563 + wp_strip_all_tags( $_POST[ '_mw_adminimize_own_options' ] )
1564 + );
1509 1565 } else {
1510 1566 $adminimizeoptions[ '_mw_adminimize_own_options' ] = '';
1511 1567 }
1512 1568
@@ -1511,10 +1567,10 @@
1511 1567 }
1512 1568
1513 1569 // own post options
1514 1570 if ( isset( $_POST[ '_mw_adminimize_own_post_values' ] ) ) {
1515 - $adminimizeoptions[ '_mw_adminimize_own_post_values' ] = wp_strip_all_tags(
1516 - $_POST[ '_mw_adminimize_own_post_values' ]
1571 + $adminimizeoptions[ '_mw_adminimize_own_post_values' ] = stripslashes(
1572 + wp_strip_all_tags( $_POST[ '_mw_adminimize_own_post_values' ] )
1517 1573 );
1518 1574 } else {
1519 1575 $adminimizeoptions[ '_mw_adminimize_own_post_values' ] = '';
1520 1576 }
@@ -1519,10 +1575,10 @@
1519 1575 $adminimizeoptions[ '_mw_adminimize_own_post_values' ] = '';
1520 1576 }
1521 1577
1522 1578 if ( isset( $_POST[ '_mw_adminimize_own_post_options' ] ) ) {
1523 - $adminimizeoptions[ '_mw_adminimize_own_post_options' ] = wp_strip_all_tags(
1524 - $_POST[ '_mw_adminimize_own_post_options' ]
1579 + $adminimizeoptions[ '_mw_adminimize_own_post_options' ] = stripslashes(
1580 + wp_strip_all_tags( $_POST[ '_mw_adminimize_own_post_options' ] )
1525 1581 );
1526 1582 } else {
1527 1583 $adminimizeoptions[ '_mw_adminimize_own_post_options' ] = '';
1528 1584 }
@@ -1528,10 +1584,10 @@
1528 1584 }
1529 1585
1530 1586 // own page options
1531 1587 if ( isset( $_POST[ '_mw_adminimize_own_page_values' ] ) ) {
1532 - $adminimizeoptions[ '_mw_adminimize_own_page_values' ] = wp_strip_all_tags(
1533 - $_POST[ '_mw_adminimize_own_page_values' ]
1588 + $adminimizeoptions[ '_mw_adminimize_own_page_values' ] = stripslashes(
1589 + wp_strip_all_tags( $_POST[ '_mw_adminimize_own_page_values' ] )
1534 1590 );
1535 1591 } else {
1536 1592 $adminimizeoptions[ '_mw_adminimize_own_page_values' ] = '';
1537 1593 }
@@ -1536,10 +1592,10 @@
1536 1592 $adminimizeoptions[ '_mw_adminimize_own_page_values' ] = '';
1537 1593 }
1538 1594
1539 1595 if ( isset( $_POST[ '_mw_adminimize_own_page_options' ] ) ) {
1540 - $adminimizeoptions[ '_mw_adminimize_own_page_options' ] = wp_strip_all_tags(
1541 - $_POST[ '_mw_adminimize_own_page_options' ]
1596 + $adminimizeoptions[ '_mw_adminimize_own_page_options' ] = stripslashes(
1597 + wp_strip_all_tags( $_POST[ '_mw_adminimize_own_page_options' ] )
1542 1598 );
1543 1599 } else {
1544 1600 $adminimizeoptions[ '_mw_adminimize_own_page_options' ] = '';
1545 1601 }
@@ -1546,10 +1602,10 @@
1546 1602
1547 1603 // own custom post options
1548 1604 foreach ( $post_types as $post_type ) {
1549 1605 if ( isset( $_POST[ '_mw_adminimize_own_values_' . $post_type ] ) ) {
1550 - $adminimizeoptions[ '_mw_adminimize_own_values_' . $post_type ] = wp_strip_all_tags(
1551 - $_POST[ '_mw_adminimize_own_values_' . $post_type ]
1606 + $adminimizeoptions[ '_mw_adminimize_own_values_' . $post_type ] = stripslashes(
1607 + wp_strip_all_tags( $_POST[ '_mw_adminimize_own_values_' . $post_type ] )
1552 1608 );
1553 1609 } else {
1554 1610 $adminimizeoptions[ '_mw_adminimize_own_values_' . $post_type ] = '';
1555 1611 }
@@ -1554,10 +1610,10 @@
1554 1610 $adminimizeoptions[ '_mw_adminimize_own_values_' . $post_type ] = '';
1555 1611 }
1556 1612
1557 1613 if ( isset( $_POST[ '_mw_adminimize_own_options_' . $post_type ] ) ) {
1558 - $adminimizeoptions[ '_mw_adminimize_own_options_' . $post_type ] = wp_strip_all_tags(
1559 - $_POST[ '_mw_adminimize_own_options_' . $post_type ]
1614 + $adminimizeoptions[ '_mw_adminimize_own_options_' . $post_type ] = stripslashes(
1615 + wp_strip_all_tags( $_POST[ '_mw_adminimize_own_options_' . $post_type ] )
1560 1616 );
1561 1617 } else {
1562 1618 $adminimizeoptions[ '_mw_adminimize_own_options_' . $post_type ] = '';
1563 1619 }
@@ -1564,10 +1620,10 @@
1564 1620 }
1565 1621
1566 1622 // own link options
1567 1623 if ( isset( $_POST[ '_mw_adminimize_own_link_values' ] ) ) {
1568 - $adminimizeoptions[ '_mw_adminimize_own_link_values' ] = wp_strip_all_tags(
1569 - $_POST[ '_mw_adminimize_own_link_values' ]
1624 + $adminimizeoptions[ '_mw_adminimize_own_link_values' ] = stripslashes(
1625 + wp_strip_all_tags( $_POST[ '_mw_adminimize_own_link_values' ] )
1570 1626 );
1571 1627 } else {
1572 1628 $adminimizeoptions[ '_mw_adminimize_own_link_values' ] = '';
1573 1629 }
@@ -1572,10 +1628,10 @@
1572 1628 $adminimizeoptions[ '_mw_adminimize_own_link_values' ] = '';
1573 1629 }
1574 1630
1575 1631 if ( isset( $_POST[ '_mw_adminimize_own_link_options' ] ) ) {
1576 - $adminimizeoptions[ '_mw_adminimize_own_link_options' ] = wp_strip_all_tags(
1577 - $_POST[ '_mw_adminimize_own_link_options' ]
1632 + $adminimizeoptions[ '_mw_adminimize_own_link_options' ] = stripslashes(
1633 + wp_strip_all_tags( $_POST[ '_mw_adminimize_own_link_options' ] )
1578 1634 );
1579 1635 } else {
1580 1636 $adminimizeoptions[ '_mw_adminimize_own_link_options' ] = '';
1581 1637 }
@@ -1581,10 +1637,10 @@
1581 1637 }
1582 1638
1583 1639 // wp nav menu options
1584 1640 if ( isset( $_POST[ '_mw_adminimize_own_nav_menu_values' ] ) ) {
1585 - $adminimizeoptions[ '_mw_adminimize_own_nav_menu_values' ] = wp_strip_all_tags(
1586 - $_POST[ '_mw_adminimize_own_nav_menu_values' ]
1641 + $adminimizeoptions[ '_mw_adminimize_own_nav_menu_values' ] = stripslashes(
1642 + wp_strip_all_tags( $_POST[ '_mw_adminimize_own_nav_menu_values' ] )
1587 1643 );
1588 1644 } else {
1589 1645 $adminimizeoptions[ '_mw_adminimize_own_nav_menu_values' ] = '';
1590 1646 }
@@ -1589,10 +1645,10 @@
1589 1645 $adminimizeoptions[ '_mw_adminimize_own_nav_menu_values' ] = '';
1590 1646 }
1591 1647
1592 1648 if ( isset( $_POST[ '_mw_adminimize_own_nav_menu_options' ] ) ) {
1593 - $adminimizeoptions[ '_mw_adminimize_own_nav_menu_options' ] = wp_strip_all_tags(
1594 - $_POST[ '_mw_adminimize_own_nav_menu_options' ]
1649 + $adminimizeoptions[ '_mw_adminimize_own_nav_menu_options' ] = stripslashes(
1650 + wp_strip_all_tags( $_POST[ '_mw_adminimize_own_nav_menu_options' ] )
1595 1651 );
1596 1652 } else {
1597 1653 $adminimizeoptions[ '_mw_adminimize_own_nav_menu_options' ] = '';
1598 1654 }
@@ -1598,10 +1654,10 @@
1598 1654 }
1599 1655
1600 1656 // widget options
1601 1657 if ( isset( $_POST[ '_mw_adminimize_own_widget_values' ] ) ) {
1602 - $adminimizeoptions[ '_mw_adminimize_own_widget_values' ] = wp_strip_all_tags(
1603 - $_POST[ '_mw_adminimize_own_widget_values' ]
1658 + $adminimizeoptions[ '_mw_adminimize_own_widget_values' ] = stripslashes(
1659 + wp_strip_all_tags( $_POST[ '_mw_adminimize_own_widget_values' ] )
1604 1660 );
1605 1661 } else {
1606 1662 $adminimizeoptions[ '_mw_adminimize_own_widget_values' ] = '';
1607 1663 }
@@ -1606,10 +1662,10 @@
1606 1662 $adminimizeoptions[ '_mw_adminimize_own_widget_values' ] = '';
1607 1663 }
1608 1664
1609 1665 if ( isset( $_POST[ '_mw_adminimize_own_widget_options' ] ) ) {
1610 - $adminimizeoptions[ '_mw_adminimize_own_widget_options' ] = wp_strip_all_tags(
1611 - $_POST[ '_mw_adminimize_own_widget_options' ]
1666 + $adminimizeoptions[ '_mw_adminimize_own_widget_options' ] = stripslashes(
1667 + wp_strip_all_tags( $_POST[ '_mw_adminimize_own_widget_options' ] )
1612 1668 );
1613 1669 } else {
1614 1670 $adminimizeoptions[ '_mw_adminimize_own_widget_options' ] = '';
1615 1671 }
@@ -1615,10 +1671,10 @@
1615 1671 }
1616 1672
1617 1673 // own dashboard options
1618 1674 if ( isset( $_POST[ '_mw_adminimize_own_dashboard_values' ] ) ) {
1619 - $adminimizeoptions[ '_mw_adminimize_own_dashboard_values' ] = wp_strip_all_tags(
1620 - $_POST[ '_mw_adminimize_own_dashboard_values' ]
1675 + $adminimizeoptions[ '_mw_adminimize_own_dashboard_values' ] = stripslashes(
1676 + wp_strip_all_tags( $_POST[ '_mw_adminimize_own_dashboard_values' ] )
1621 1677 );
1622 1678 } else {
1623 1679 $adminimizeoptions[ '_mw_adminimize_own_dashboard_values' ] = '';
1624 1680 }
@@ -1623,10 +1679,10 @@
1623 1679 $adminimizeoptions[ '_mw_adminimize_own_dashboard_values' ] = '';
1624 1680 }
1625 1681
1626 1682 if ( isset( $_POST[ '_mw_adminimize_own_dashboard_options' ] ) ) {
1627 - $adminimizeoptions[ '_mw_adminimize_own_dashboard_options' ] = wp_strip_all_tags(
1628 - $_POST[ '_mw_adminimize_own_dashboard_options' ]
1683 + $adminimizeoptions[ '_mw_adminimize_own_dashboard_options' ] = stripslashes(
1684 + wp_strip_all_tags( $_POST[ '_mw_adminimize_own_dashboard_options' ] )
1629 1685 );
1630 1686 } else {
1631 1687 $adminimizeoptions[ '_mw_adminimize_own_dashboard_options' ] = '';
1632 1688 }
@@ -1641,8 +1697,21 @@
1641 1697 if ( isset( $GLOBALS[ 'submenu' ] ) ) {
1642 1698 $adminimizeoptions[ 'mw_adminimize_default_submenu' ] = $GLOBALS[ 'submenu' ];
1643 1699 }
1644 1700
1701 + /**
1702 + * Filter the adminimize options.
1703 + *
1704 + * Make the options filterable, so we can modify what is saved before it's sent to the db
1705 + *
1706 + * @since 1.11.6
1707 + *
1708 + * @param array $adminimizeoptions the original options.
1709 + * @param array $user_roles Array of the user roles.
1710 + * @param array $_POST Post data.
1711 + */
1712 + $adminimizeoptions = apply_filters( 'mw_adminimize_options_before_update', $adminimizeoptions, $user_roles, $_POST );
1713 +
1645 1714 // update
1646 1715 $update_status = _mw_adminimize_update_option( $adminimizeoptions );
1647 1716
1648 1717 $myErrors = new _mw_adminimize_message_class();
@@ -1716,68 +1785,51 @@
1716 1785 wp_cache_add( 'mw_adminimize', $adminimizeoptions );
1717 1786 }
1718 1787
1719 1788 /**
1720 - * Process a settings export that generates a .json file of the shop settings
1789 + * Make sure adminimize option is complete when a role json file is imported
1790 + *
1791 + * @param array $roles_options
1792 + *
1793 + * @return array
1721 1794 */
1722 -function _mw_adminimize_export_json() {
1795 +function _mw_adminimize_roles_complete_options( $roles_options ){
1723 1796
1724 - if ( empty( $_GET[ '_mw_adminimize_export' ] ) || 'true' !== $_GET[ '_mw_adminimize_export' ] ) {
1725 - return;
1726 - }
1797 + $adminimizeoption = _mw_adminimize_get_option_value();
1727 1798
1728 - require_once ABSPATH . 'wp-includes/pluggable.php';
1729 - if ( ! wp_verify_nonce( $_GET[ 'mw_adminimize_export_nonce' ], 'mw_adminimize_export_nonce' ) ) {
1730 - return;
1799 + foreach ( $roles_options as $role_option_name => $role_option_value ){
1800 + $adminimizeoption[$role_option_name] = $role_option_value;
1731 1801 }
1732 1802
1733 - if ( ! current_user_can( 'manage_options' ) ) {
1734 - return;
1735 - }
1736 -
1737 - $settings = _mw_adminimize_get_option_value();
1738 -
1739 - ignore_user_abort( TRUE );
1740 -
1741 - nocache_headers();
1742 - header( 'Content-Type: application/json; charset=utf-8' );
1743 - header( 'Content-Disposition: attachment; filename=mw_adminimize-settings-export-' . date( 'm-d-Y' ) . '.json' );
1744 - header( 'Expires: 0' );
1745 -
1746 - echo json_encode( $settings );
1747 - exit();
1803 + return $adminimizeoption;
1748 1804 }
1749 1805
1750 1806 /**
1751 - * Process a settings import from a json file
1807 + * Check if options comes from roles adminimize settings export
1808 + *
1809 + * @param array $options
1810 + *
1811 + * @return bool
1752 1812 */
1753 -function _mw_adminimize_import_json() {
1813 +function _mw_adminimize_is_roles_options_import( $options ){
1814 + global $wp_roles;
1754 1815
1755 - if ( empty( $_POST[ '_mw_adminimize_action' ] ) || '_mw_adminimize_import' !== $_POST[ '_mw_adminimize_action' ] ) {
1756 - return;
1757 - }
1816 + $roles_options = [];
1817 + foreach ( $wp_roles->role_names as $role_slug => $role_name ){
1758 1818
1759 - if ( ! wp_verify_nonce( $_POST[ 'mw_adminimize_import_nonce' ], 'mw_adminimize_import_nonce' ) ) {
1760 - return;
1761 - }
1819 + $role_options = array_filter(
1820 + $options, function ( $option_key ) use ( $role_slug ) {
1821 + return stripos( $option_key, '_' . $role_slug ) !== false;
1822 + }, ARRAY_FILTER_USE_KEY
1823 + );
1762 1824
1763 - if ( ! current_user_can( 'manage_options' ) ) {
1764 - return;
1825 + if ( empty( $roles_options ) ){
1826 + $roles_options = $role_options;
1827 + } else {
1828 + $roles_options = array_merge( $roles_options, $role_options );
1829 + }
1765 1830 }
1766 1831
1767 - $extension = pathinfo( $_FILES[ 'import_file' ][ 'name' ], PATHINFO_EXTENSION );
1768 - if ( $extension !== 'json' ) {
1769 - wp_die( esc_attr__( 'Please upload a valid .json file' ) );
1832 + if ( count( $options ) === count( $roles_options ) ){
1833 + return true;
1770 1834 }
1771 -
1772 - $import_file = $_FILES[ 'import_file' ][ 'tmp_name' ];
1773 -
1774 - if ( empty( $import_file ) ) {
1775 - wp_die( esc_attr__( 'Please upload a file to import' ) );
1776 - }
1777 -
1778 - // Retrieve the settings from the file and convert the json object to an array.
1779 - $settings = (array) json_decode( file_get_contents( $import_file ) );
1780 - unlink( $import_file );
1781 -
1782 - _mw_adminimize_update_option( $settings );
1783 1835 }