| @@ -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’ 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 | } |