PluginProbe
Adminimize / 1.9.2
Adminimize v1.9.2
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
adminimize / adminimize.php

adminimize.php in Adminimize 1.9.2, at adminimize.php

1,778 lines 54.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Plugin Name: Adminimize
4 * Plugin URI: https://wordpress.org/plugins/adminimize/
5 * Text Domain: adminimize
6 * Domain Path: /languages
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.9.2
11 * License: GPLv2+
12 *
13 * @package WordPress
14 * @author Frank Bültge <[email protected]>
15 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
16 * @version 2016-01-30
17 */
18
19 /**
20 * The stylesheet and the initial idea is from Eric A. Meyer http://meyerweb.com/
21 * I have written a plugin with many options on the basis idea
22 * of differently user-right and a user-friendly range in admin-area via reduce areas.
23 * :( grmpf i have so much wishes and hints form users, there use the plugin and
24 * it is not easy to development this on my free time.
25 */
26
27 if ( ! function_exists( 'add_action' ) ) {
28 echo "Hi there! I'm just a part of plugin, not much I can do when called directly.";
29 exit;
30 }
31
32 // plugin definitions
33 define( 'FB_ADMINIMIZE_BASENAME', plugin_basename( __FILE__ ) );
34 define( 'FB_ADMINIMIZE_BASEFOLDER', plugin_basename( dirname( __FILE__ ) ) );
35
36 function _mw_adminimize_get_plugin_data( $value = 'Version' ) {
37
38 if ( ! function_exists( 'get_plugin_data' ) ) {
39 require_once ABSPATH . '/wp-admin/includes/plugin.php';
40 }
41
42 $plugin_data = get_plugin_data( __FILE__ );
43 return $plugin_data[ $value ];
44 }
45
46 /**
47 * Load language files.
48 */
49 function _mw_adminimize_textdomain() {
50
51 load_plugin_textdomain(
52 _mw_adminimize_get_plugin_data( 'TextDomain' ),
53 FALSE,
54 dirname( FB_ADMINIMIZE_BASENAME ) . _mw_adminimize_get_plugin_data( 'DomainPath' )
55 );
56 }
57
58 /**
59 * Exclude the Super Admin of Multisite.
60 *
61 * @return bool
62 */
63 function _mw_adminimize_exclude_super_admin() {
64
65 if ( ! function_exists( 'is_super_admin' ) ) {
66 return FALSE;
67 }
68
69 if ( ! is_super_admin() ) {
70 return FALSE;
71 }
72
73 if ( 1 === (int) _mw_adminimize_get_option_value( '_mw_adminimize_exclude_super_admin' ) ) {
74 return TRUE;
75 }
76
77 return FALSE;
78 }
79
80 /**
81 * Get the status, if is on the settings page.
82 *
83 * @return bool
84 */
85 function _mw_adminimize_exclude_settings_page() {
86
87 if ( ! function_exists( 'get_current_screen' ) ) {
88 return TRUE;
89 }
90
91 // Get admin page
92 $screen = get_current_screen();
93
94 // Don't filter on settings page
95 if ( isset( $screen->id ) && FALSE !== strpos( $screen->id, 'adminimize' ) ) {
96 return TRUE;
97 }
98
99 return FALSE;
100 }
101
102 /**
103 * Get status, if the plugin active network wide.
104 *
105 * @return bool
106 */
107 function _mw_adminimize_is_active_on_multisite() {
108
109 if ( ! function_exists( 'is_plugin_active_for_network' ) ) {
110 require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
111 }
112
113 if ( is_multisite() && is_plugin_active_for_network( MW_ADMIN_FILE ) ) {
114 return TRUE;
115 }
116
117 return FALSE;
118 }
119
120 /**
121 * Returns an array with all user roles(names) in it.
122 * Inclusive self defined roles (for example with the 'Role Manager' plugin).
123 *
124 * @uses $wp_roles
125 * @return array $user_roles
126 */
127 function _mw_adminimize_get_all_user_roles() {
128
129 global $wp_roles;
130
131 $user_roles = array();
132
133 if ( NULL !== $wp_roles->roles && is_array( $wp_roles->roles ) ) {
134 /** @var array $wp_roles */
135 foreach ( $wp_roles->roles as $role => $data ) {
136 $user_roles[] = $role;
137 //$data contains caps, maybe for later use..
138 }
139 }
140
141 // Exclude the new bbPress roles.
142 $user_roles = array_diff(
143 $user_roles,
144 array( 'bbp_keymaster', 'bbp_moderator', 'bbp_participant', 'bbp_spectator', 'bbp_blocked' )
145 );
146
147 return $user_roles;
148 }
149
150 /**
151 * _mw_adminimize_get_all_user_roles_names() - Returns an array with all user roles_names in it.
152 * Inclusive self defined roles (for example with the 'Role Manager' plugin).
153 *
154 * @uses $wp_roles
155 * @return array $user_roles_names
156 */
157 function _mw_adminimize_get_all_user_roles_names() {
158
159 global $wp_roles;
160 $user_roles_names = $wp_roles->role_names;
161
162 // Remove Custom Format
163 // @since 2016-01-30
164 // ToDo Remove old Code.
165 //$user_roles_names = array();
166 //
167 ///** @var array $wp_roles */
168 //foreach ( $wp_roles->role_names as $role_name => $data ) {
169 //
170 // $data = translate_user_role( $data );
171 // $user_roles_names[] = $data;
172 //}
173
174 // exclude the new bbPress roles
175 $user_roles_names = array_diff(
176 $user_roles_names,
177 array(
178 esc_attr__( 'Keymaster', 'bbpress' ),
179 esc_attr__( 'Moderator', 'bbpress' ),
180 esc_attr__( 'Participant', 'bbpress' ),
181 esc_attr__( 'Spectator', 'bbpress' ),
182 esc_attr__( 'Blocked', 'bbpress' ),
183 )
184 );
185
186 return $user_roles_names;
187 }
188
189 /**
190 * return post type
191 */
192 function _mw_get_current_post_type() {
193
194 global $post, $typenow, $current_screen;
195
196 //we have a post so we can just get the post type from that
197 if ( $post && $post->post_type ) {
198 return $post->post_type;
199 } //check the global $typenow - set in admin.php
200 else if ( $typenow ) {
201 return $typenow;
202 } // check the global $current_screen object - set in sceen.php
203 else if ( $current_screen && $current_screen->post_type ) {
204 return $current_screen->post_type;
205 } // lastly check the post_type querystring
206 else if ( isset( $_REQUEST[ 'post_type' ] ) ) {
207 return sanitize_key( $_REQUEST[ 'post_type' ] );
208 }
209
210 // we do not know the post type!
211 return NULL;
212 }
213
214 /**
215 * Check user-option and add new style.
216 */
217 function _mw_adminimize_admin_init() {
218
219 global $pagenow, $post_type, $menu, $submenu;
220
221 if ( isset( $_GET[ 'post' ] ) && ! is_array( $_GET[ 'post' ] ) ) {
222 $post_id = (int) esc_attr( $_GET[ 'post' ] );
223 } elseif ( isset( $_POST[ 'post_ID' ] ) ) {
224 $post_id = (int) esc_attr( $_POST[ 'post_ID' ] );
225 } else {
226 $post_id = 0;
227 }
228
229 $current_post_type = $post_type;
230 if ( ! isset( $current_post_type ) || empty( $current_post_type ) ) {
231 $current_post_type = get_post_type( $post_id );
232 }
233 if ( ! isset( $current_post_type ) || empty( $current_post_type ) ) {
234 $current_post_type = _mw_get_current_post_type();
235 }
236 if ( ! $current_post_type ) // set hard to post
237 {
238 $current_post_type = 'post';
239 }
240
241 // Get all user rolles.
242 $user_roles = _mw_adminimize_get_all_user_roles();
243
244 // Get settings.
245 $adminimizeoptions = _mw_adminimize_get_option_value();
246
247 // pages for post type Post
248 $def_post_pages = array( 'edit.php', 'post.php', 'post-new.php' );
249 $def_post_types = array( 'post' );
250 $disabled_metaboxes_post_all = array();
251 // pages for post type Page
252 $def_page_pages = array_merge( $def_post_pages, array( 'page-new.php', 'page.php' ) );
253 $def_page_types = array( 'page' );
254 $disabled_metaboxes_page_all = array();
255 // pages for custom post types
256 $def_custom_pages = $def_post_pages;
257 $args = array( 'public' => TRUE, '_builtin' => FALSE );
258 $def_custom_types = get_post_types( $args );
259 // pages for link pages
260 $link_pages = array( 'link.php', 'link-manager.php', 'link-add.php', 'edit-link-categories.php' );
261 // pages for nav menu
262 $nav_menu_pages = array( 'nav-menus.php' );
263 // widget pages
264 $widget_pages = array( 'widgets.php' );
265
266 foreach ( $user_roles as $role ) {
267 $disabled_global_option_[ $role ] = _mw_adminimize_get_option_value(
268 'mw_adminimize_disabled_admin_bar_' . $role . '_items'
269 );
270 $disabled_global_option_[ $role ] = _mw_adminimize_get_option_value(
271 'mw_adminimize_disabled_global_option_' . $role . '_items'
272 );
273 $disabled_metaboxes_post_[ $role ] = _mw_adminimize_get_option_value(
274 'mw_adminimize_disabled_metaboxes_post_' . $role . '_items'
275 );
276 $disabled_metaboxes_page_[ $role ] = _mw_adminimize_get_option_value(
277 'mw_adminimize_disabled_metaboxes_page_' . $role . '_items'
278 );
279 foreach ( $def_custom_types as $post_type ) {
280 $disabled_metaboxes_[ $post_type . '_' . $role ] = _mw_adminimize_get_option_value(
281 'mw_adminimize_disabled_metaboxes_' . $post_type . '_' . $role . '_items'
282 );
283 }
284 $disabled_link_option_[ $role ] = _mw_adminimize_get_option_value(
285 'mw_adminimize_disabled_link_option_' . $role . '_items'
286 );
287 $disabled_nav_menu_option_[ $role ] = _mw_adminimize_get_option_value(
288 'mw_adminimize_disabled_nav_menu_option_' . $role . '_items'
289 );
290 $disabled_widget_option_[ $role ] = _mw_adminimize_get_option_value(
291 'mw_adminimize_disabled_widget_option_' . $role . '_items'
292 );
293 $disabled_metaboxes_post_all[] = $disabled_metaboxes_post_[ $role ];
294 $disabled_metaboxes_page_all[] = $disabled_metaboxes_page_[ $role ];
295 }
296
297 $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
298
299 // global options
300 // exclude super admin
301 if ( ! _mw_adminimize_exclude_super_admin() ) {
302 $_mw_adminimize_footer = (int) _mw_adminimize_get_option_value( '_mw_adminimize_footer' );
303 switch ( $_mw_adminimize_footer ) {
304 case 1:
305 wp_enqueue_script(
306 '_mw_adminimize_remove_footer',
307 WP_PLUGIN_URL . '/' . FB_ADMINIMIZE_BASEFOLDER . '/js/remove_footer' . $suffix . '.js',
308 array( 'jquery' )
309 );
310 break;
311 }
312
313 $_mw_adminimize_header = (int) _mw_adminimize_get_option_value( '_mw_adminimize_header' );
314 switch ( $_mw_adminimize_header ) {
315 case 1:
316 wp_enqueue_script(
317 '_mw_adminimize_remove_header',
318 WP_PLUGIN_URL . '/' . FB_ADMINIMIZE_BASEFOLDER . '/js/remove_header' . $suffix . '.js',
319 array( 'jquery' )
320 );
321 break;
322 }
323
324 //post-page options
325 if ( in_array( $pagenow, $def_post_pages, FALSE ) ) {
326
327 $_mw_adminimize_tb_window = (int) _mw_adminimize_get_option_value( '_mw_adminimize_tb_window' );
328 switch ( $_mw_adminimize_tb_window ) {
329 case 1:
330 wp_deregister_script( 'media-upload' );
331 wp_enqueue_script(
332 'media-upload',
333 WP_PLUGIN_URL . '/' . FB_ADMINIMIZE_BASEFOLDER . '/js/tb_window' . $suffix . '.js',
334 array( 'thickbox' )
335 );
336 break;
337 }
338 $_mw_adminimize_timestamp = (int) _mw_adminimize_get_option_value( '_mw_adminimize_timestamp' );
339 switch ( $_mw_adminimize_timestamp ) {
340 case 1:
341 wp_enqueue_script(
342 '_mw_adminimize_timestamp',
343 WP_PLUGIN_URL . '/' . FB_ADMINIMIZE_BASEFOLDER . '/js/timestamp' . $suffix . '.js',
344 array( 'jquery' )
345 );
346 break;
347 }
348
349 //category options
350 $_mw_adminimize_cat_full = (int) _mw_adminimize_get_option_value( '_mw_adminimize_cat_full' );
351 switch ( $_mw_adminimize_cat_full ) {
352 case 1:
353 wp_enqueue_style(
354 'adminimize-full-category',
355 WP_PLUGIN_URL . '/' . FB_ADMINIMIZE_BASEFOLDER . '/css/mw_cat_full' . $suffix . '.css'
356 );
357 break;
358 }
359
360 // set default editor tinymce
361 if ( _mw_adminimize_recursive_in_array(
362 '#editor-toolbar #edButtonHTML, #quicktags, #content-html',
363 $disabled_metaboxes_page_all
364 )
365 || _mw_adminimize_recursive_in_array(
366 '#editor-toolbar #edButtonHTML, #quicktags, #content-html',
367 $disabled_metaboxes_post_all
368 )
369 ) {
370 add_filter( 'wp_default_editor', create_function( '', 'return "tinymce";' ) );
371 }
372
373 // remove media bottons
374 if ( _mw_adminimize_recursive_in_array( 'media_buttons', $disabled_metaboxes_page_all )
375 || _mw_adminimize_recursive_in_array( 'media_buttons', $disabled_metaboxes_post_all )
376 ) {
377 remove_action( 'media_buttons', 'media_buttons' );
378 }
379 }
380
381 }
382
383 // set menu option
384 add_action( 'admin_head', '_mw_adminimize_set_menu_option', 1 );
385 // global_options
386 add_action( 'admin_head', '_mw_adminimize_set_global_option', 1 );
387
388 // set metabox post option
389 if ( in_array( $pagenow, $def_post_pages, FALSE ) && in_array( $current_post_type, $def_post_types, FALSE ) ) {
390 add_action( 'admin_head', '_mw_adminimize_set_metabox_post_option', 1 );
391 }
392 // set metabox page option
393 if ( in_array( $pagenow, $def_page_pages, FALSE ) && in_array( $current_post_type, $def_page_types, FALSE ) ) {
394 add_action( 'admin_head', '_mw_adminimize_set_metabox_page_option', 1 );
395 }
396 // set custom post type options
397 if ( function_exists( 'get_post_types' ) && in_array( $pagenow, $def_custom_pages, FALSE )
398 && in_array(
399 $current_post_type, $def_custom_types, FALSE
400 )
401 ) {
402 add_action( 'admin_head', '_mw_adminimize_set_metabox_cp_option', 1 );
403 }
404 // set link option
405 if ( in_array( $pagenow, $link_pages, FALSE ) ) {
406 add_action( 'admin_head', '_mw_adminimize_set_link_option', 1 );
407 }
408 // set wp nav menu options
409 if ( in_array( $pagenow, $nav_menu_pages, FALSE ) ) {
410 add_action( 'admin_head', '_mw_adminimize_set_nav_menu_option', 1 );
411 }
412 // set widget options
413 if ( in_array( $pagenow, $widget_pages, FALSE ) ) {
414 add_action( 'admin_head', '_mw_adminimize_set_widget_option', 1 );
415 }
416
417 $adminimizeoptions[ 'mw_adminimize_default_menu' ] = $menu;
418 $adminimizeoptions[ 'mw_adminimize_default_submenu' ] = $submenu;
419 }
420
421 /**
422 * Init always with WP
423 */
424 function _mw_adminimize_init() {
425
426 // change Admin Bar and user Info
427 if ( version_compare( $GLOBALS[ 'wp_version' ], '3.3alpha', '>=' ) ) {
428 _mw_adminimize_set_menu_option_33();
429 } else {
430 add_action( 'admin_head', '_mw_adminimize_set_user_info' );
431 add_action( 'wp_head', '_mw_adminimize_set_user_info' );
432 }
433
434 }
435
436 // on admin init
437 define( 'MW_ADMIN_FILE', plugin_basename( __FILE__ ) );
438 if ( is_admin() ) {
439 add_action( 'admin_init', '_mw_adminimize_textdomain' );
440 add_action( 'admin_init', '_mw_adminimize_admin_init', 2 );
441 add_action( 'admin_menu', '_mw_adminimize_add_settings_page' );
442 add_action( 'admin_menu', '_mw_adminimize_remove_dashboard' );
443 }
444 add_action( 'init', '_mw_adminimize_init', 2 );
445
446 register_activation_hook( __FILE__, '_mw_adminimize_install' );
447 register_uninstall_hook( __FILE__, '_mw_adminimize_deinstall' );
448 //register_deactivation_hook(__FILE__, '_mw_adminimize_deinstall' );
449
450 /**
451 * Remove the dashboard
452 */
453 function _mw_adminimize_remove_dashboard() {
454
455 // exclude super admin
456 if ( _mw_adminimize_exclude_super_admin() ) {
457 return;
458 }
459
460 // Leave the settings screen from Adminimize to see all areas on settings.
461 if ( _mw_adminimize_exclude_settings_page() ) {
462 return;
463 }
464
465 global $menu, $user_ID;
466
467 $disabled_menu_ = '';
468 $disabled_submenu_ = '';
469 $user_roles = _mw_adminimize_get_all_user_roles();
470
471 foreach ( $user_roles as $role ) {
472 $disabled_menu_[ $role ] = _mw_adminimize_get_option_value(
473 'mw_adminimize_disabled_menu_' . $role . '_items'
474 );
475 $disabled_submenu_[ $role ] = _mw_adminimize_get_option_value(
476 'mw_adminimize_disabled_submenu_' . $role . '_items'
477 );
478 }
479
480 $disabled_menu_all = array();
481 $disabled_submenu_all = array();
482
483 foreach ( $user_roles as $role ) {
484 $disabled_menu_all[] = $disabled_menu_[ $role ];
485 $disabled_submenu_all[] = $disabled_submenu_[ $role ];
486 }
487
488 // remove dashboard
489 if ( $disabled_menu_all !== '' || $disabled_submenu_all !== '' ) {
490
491 $redirect = FALSE;
492 foreach ( $user_roles as $role ) {
493 if ( _mw_adminimize_current_user_has_role( $role ) ) {
494 if ( _mw_adminimize_recursive_in_array( 'index.php', $disabled_menu_[ $role ] )
495 || _mw_adminimize_recursive_in_array( 'index.php', $disabled_submenu_[ $role ] )
496 ) {
497 $redirect = TRUE;
498 }
499 }
500 }
501
502 // redirect option, if Dashboard is inactive
503 if ( $redirect ) {
504 $_mw_adminimize_db_redirect = (int) _mw_adminimize_get_option_value(
505 '_mw_adminimize_db_redirect'
506 );
507 $_mw_adminimize_db_redirect_admin_url = get_option( 'siteurl' ) . '/wp-admin/';
508 switch ( $_mw_adminimize_db_redirect ) {
509 case 0:
510 $_mw_adminimize_db_redirect = $_mw_adminimize_db_redirect_admin_url . 'profile.php';
511 break;
512 case 1:
513 $_mw_adminimize_db_redirect = $_mw_adminimize_db_redirect_admin_url . 'edit.php';
514 break;
515 case 2:
516 $_mw_adminimize_db_redirect = $_mw_adminimize_db_redirect_admin_url . 'edit.php?post_type=page';
517 break;
518 case 3:
519 $_mw_adminimize_db_redirect = $_mw_adminimize_db_redirect_admin_url . 'post-new.php';
520 break;
521 case 4:
522 $_mw_adminimize_db_redirect = $_mw_adminimize_db_redirect_admin_url . 'page-new.php';
523 break;
524 case 5:
525 $_mw_adminimize_db_redirect = $_mw_adminimize_db_redirect_admin_url . 'edit-comments.php';
526 break;
527 case 6:
528 $_mw_adminimize_db_redirect = _mw_adminimize_get_option_value( '_mw_adminimize_db_redirect_txt' );
529 break;
530 }
531
532 $the_user = new WP_User( $user_ID );
533 reset( $menu );
534 $page = key( $menu );
535
536 $dashboard_core_string = esc_attr__( 'Dashboard' );
537 $dashboard = array( $menu[ $page ][ 0 ], $menu[ $page ][ 1 ] );
538 while (
539 ! in_array( $dashboard_core_string, $dashboard, FALSE ) && next( $menu )
540 ) {
541 $page = key( $menu );
542 }
543
544 if ( in_array( $dashboard_core_string, $dashboard, FALSE ) ) {
545 unset( $menu[ $page ] );
546 }
547 reset( $menu );
548 $page = key( $menu );
549
550 while ( ! $the_user->has_cap( $menu[ $page ][ 1 ] ) && next( $menu ) ) {
551 $page = key( $menu );
552 }
553
554 if ( preg_match( '#wp-admin/?(index.php)?$#', $_SERVER[ 'REQUEST_URI' ] ) ) {
555 wp_redirect( $_mw_adminimize_db_redirect );
556 }
557 }
558
559 }
560 }
561
562 /**
563 * Set menu options from database.
564 */
565 function _mw_adminimize_set_user_info() {
566
567 if ( _mw_adminimize_exclude_settings_page() ) {
568 return;
569 }
570
571 // exclude super admin
572 if ( _mw_adminimize_exclude_super_admin() ) {
573 return;
574 }
575
576 global $user_identity;
577
578 $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
579 $user_roles = _mw_adminimize_get_all_user_roles();
580
581 foreach ( $user_roles as $role ) {
582 $disabled_menu_[ $role ] = _mw_adminimize_get_option_value(
583 'mw_adminimize_disabled_menu_' . $role . '_items'
584 );
585 $disabled_submenu_[ $role ] = _mw_adminimize_get_option_value(
586 'mw_adminimize_disabled_submenu_' . $role . '_items'
587 );
588 }
589
590 $_mw_adminimize_admin_head = "\n";
591 $_mw_adminimize_user_info = (int) _mw_adminimize_get_option_value( '_mw_adminimize_user_info' );
592 $_mw_adminimize_ui_redirect = (int) _mw_adminimize_get_option_value( '_mw_adminimize_ui_redirect' );
593
594 // change user-info
595 switch ( $_mw_adminimize_user_info ) {
596 case 1:
597 $_mw_adminimize_admin_head .= '<script type="text/javascript">' . "\n";
598 $_mw_adminimize_admin_head .= "\t" . 'jQuery(document).ready(function() { jQuery(\'#user_info\' ).remove(); });' . "\n";
599 $_mw_adminimize_admin_head .= '</script>' . "\n";
600 break;
601 case 2:
602 $_mw_adminimize_admin_head .= '<link rel="stylesheet" href="' . WP_PLUGIN_URL . '/' . plugin_basename(
603 dirname( __FILE__ )
604 ) . '/css/mw_small_user_info' . $suffix . '.css" type="text/css" />' . "\n";
605
606 $_mw_adminimize_admin_head .= '<script type="text/javascript">' . "\n";
607 $_mw_adminimize_admin_head .= "\t" . 'jQuery(document).ready(function() { jQuery(\'#user_info\' ).remove();';
608 if ( 1 === (int) $_mw_adminimize_ui_redirect ) {
609 $_mw_adminimize_admin_head .= 'jQuery(\'div#wpcontent\' ).after(\'<div id="small_user_info"><p><a href="' . get_option(
610 'siteurl'
611 ) . wp_nonce_url(
612 ( '/wp-login.php?action=logout&amp;redirect_to=' ) . get_option( 'siteurl' ), 'log-out'
613 ) . '" title="' . esc_attr__( 'Log Out' ) . '">' . esc_attr__(
614 'Log Out'
615 ) . '</a></p></div>\' ) });' . "\n";
616 } else {
617 $_mw_adminimize_admin_head .= 'jQuery(\'div#wpcontent\' ).after(\'<div id="small_user_info"><p><a href="' . get_option(
618 'siteurl'
619 ) . wp_nonce_url( ( '/wp-login.php?action=logout' ), 'log-out' ) . '" title="' . esc_attr__(
620 'Log Out'
621 ) . '">' . esc_attr__( 'Log Out' ) . '</a></p></div>\' ) });' . "\n";
622 }
623 $_mw_adminimize_admin_head .= '</script>' . "\n";
624 break;
625 case 3:
626 $_mw_adminimize_admin_head .= '<link rel="stylesheet" href="' . WP_PLUGIN_URL . '/' . plugin_basename(
627 dirname( __FILE__ )
628 ) . '/css/mw_small_user_info' . $suffix . '.css" type="text/css" />' . "\n";
629
630 $_mw_adminimize_admin_head .= '<script type="text/javascript">' . "\n";
631 $_mw_adminimize_admin_head .= "\t" . 'jQuery(document).ready(function() { jQuery(\'#user_info\' ).remove();';
632 if ( 1 === (int) $_mw_adminimize_ui_redirect ) {
633 $_mw_adminimize_admin_head .= 'jQuery( \'div#wpcontent\' ).after( \'<div id="small_user_info"><p><a href="' . get_option(
634 'siteurl'
635 ) . ( '/wp-admin/profile.php' ) . '">' . $user_identity . '</a> | <a href="' . get_option(
636 'siteurl'
637 ) . wp_nonce_url(
638 ( '/wp-login.php?action=logout&amp;redirect_to=' ) . get_option( 'siteurl' ), 'log-out'
639 ) . '" title="' . esc_attr__( 'Log Out' ) . '">' . esc_attr__(
640 'Log Out'
641 ) . '</a></p></div>\' ) });' . "\n";
642 } else {
643 $_mw_adminimize_admin_head .= 'jQuery(\'div#wpcontent\' ).after(\'<div id="small_user_info"><p><a href="' . get_option(
644 'siteurl'
645 ) . ( '/wp-admin/profile.php' ) . '">' . $user_identity . '</a> | <a href="' . get_option(
646 'siteurl'
647 ) . wp_nonce_url( ( '/wp-login.php?action=logout' ), 'log-out' ) . '" title="' . esc_attr__(
648 'Log Out'
649 ) . '">' . esc_attr__( 'Log Out' ) . '</a></p></div>\' ) });' . "\n";
650 }
651 $_mw_adminimize_admin_head .= '</script>' . "\n";
652 break;
653 }
654
655 echo $_mw_adminimize_admin_head;
656 }
657
658 /**
659 * Set menu for settings
660 */
661 function _mw_adminimize_set_menu_option() {
662
663 // exclude super admin
664 if ( _mw_adminimize_exclude_super_admin() ) {
665 return NULL;
666 }
667
668 // Leave the settings screen from Adminimize to see all areas on settings.
669 if ( _mw_adminimize_exclude_settings_page() ) {
670 return;
671 }
672
673 global $menu, $submenu;
674
675 if ( ! isset( $menu ) || empty( $menu ) ) {
676 return;
677 }
678
679 $user_roles = _mw_adminimize_get_all_user_roles();
680 $disabled_menu_ = '';
681 $disabled_submenu_ = '';
682
683 foreach ( $user_roles as $role ) {
684 $disabled_menu_[ $role ] = _mw_adminimize_get_option_value(
685 'mw_adminimize_disabled_menu_' . $role . '_items'
686 );
687 $disabled_submenu_[ $role ] = _mw_adminimize_get_option_value(
688 'mw_adminimize_disabled_submenu_' . $role . '_items'
689 );
690 }
691
692 $mw_adminimize_menu = array();
693 $mw_adminimize_submenu = array();
694
695 // Set admin-menu.
696 foreach ( $user_roles as $role ) {
697
698 $user = wp_get_current_user();
699
700 _mw_adminimize_debug( 'Adminimize Menu Current User', $user );
701
702 if ( is_array( $user->roles )
703 && in_array( $role, $user->roles, FALSE )
704 && _mw_adminimize_current_user_has_role( $role )
705 ) {
706 $mw_adminimize_menu = $disabled_menu_[ $role ];
707 $mw_adminimize_submenu = $disabled_submenu_[ $role ];
708 }
709 }
710
711 // Fallback on users.php on all user roles smaller admin.
712 if ( is_array( $mw_adminimize_menu ) && in_array( 'users.php', $mw_adminimize_menu, FALSE ) ) {
713 $mw_adminimize_menu[] = 'profile.php';
714 }
715 _mw_adminimize_debug( 'Adminimize Disabled Menu Items', $mw_adminimize_menu );
716 _mw_adminimize_debug( 'Adminimize Disabled Sub Menu Items', $mw_adminimize_submenu );
717
718 foreach ( $menu as $key => $item ) {
719
720 _mw_adminimize_debug( 'Adminimize Menu Item Key', $key );
721 _mw_adminimize_debug( 'Adminimize Menu Item', $item );
722
723 if ( 'index.php' === $item ) {
724 continue;
725 }
726
727 // Menu
728 if ( isset( $item[ 2 ] ) ) {
729 // Check, if the Menu item in the current user role settings?
730 if ( isset( $mw_adminimize_menu ) && is_array( $mw_adminimize_menu )
731 && _mw_adminimize_in_arrays( array( $key, $item[ 2 ] ), $mw_adminimize_menu )
732 ) {
733 unset( $menu[ $key ] );
734 }
735
736 // Sub Menu Settings.
737 if ( isset( $submenu ) && ! empty( $submenu[ $item[ 2 ] ] ) ) {
738 foreach ( $submenu[ $item[ 2 ] ] as $subindex => $subitem ) {
739 // Check, if is Sub Menu item in the user role settings?
740 if (
741 isset( $mw_adminimize_submenu )
742 && _mw_adminimize_in_arrays(
743 array( $subitem[ 2 ], $item[ 2 ] . '__' . $subindex ),
744 $mw_adminimize_submenu
745 )
746 ) {
747 unset( $submenu[ $item[ 2 ] ][ $subindex ] );
748 }
749 }
750 }
751 }
752 }
753
754 }
755
756 /**
757 * set global options in backend in all areas
758 */
759 function _mw_adminimize_set_global_option() {
760
761 global $_wp_admin_css_colors;
762
763 // exclude super admin
764 if ( _mw_adminimize_exclude_super_admin() ) {
765 return NULL;
766 }
767
768 // Leave the settings screen from Adminimize to see all areas on settings.
769 if ( _mw_adminimize_exclude_settings_page() ) {
770 return;
771 }
772
773 $user_roles = _mw_adminimize_get_all_user_roles();
774 $_mw_adminimize_admin_head = '';
775
776 foreach ( $user_roles as $role ) {
777 $disabled_global_option_[ $role ] = _mw_adminimize_get_option_value(
778 'mw_adminimize_disabled_global_option_' . $role . '_items'
779 );
780 }
781
782 foreach ( $user_roles as $role ) {
783 if ( ! isset( $disabled_global_option_[ $role ][ '0' ] ) ) {
784 $disabled_global_option_[ $role ][ '0' ] = '';
785 }
786 }
787
788 $global_options = '';
789 // new 1.7.8
790 foreach ( $user_roles as $role ) {
791 $user = wp_get_current_user();
792 if ( is_array( $user->roles ) && in_array( $role, $user->roles, FALSE ) ) {
793 if ( _mw_adminimize_current_user_has_role( $role )
794 && isset( $disabled_global_option_[ $role ] )
795 && is_array( $disabled_global_option_[ $role ] )
796 ) {
797 $global_options = implode( ', ', $disabled_global_option_[ $role ] );
798 }
799 }
800 }
801 if ( isset( $global_options ) && 0 != strpos( $global_options, '#your-profile .form-table fieldset' ) ) {
802 $_wp_admin_css_colors = 0;
803 }
804 $_mw_adminimize_admin_head .= '<!-- Set Adminimize global options -->' . "\n";
805 $_mw_adminimize_admin_head .= '<style type="text/css">' . $global_options . ' {display:none !important;}</style>' . "\n";
806
807 if ( ! empty( $global_options ) ) {
808 echo $_mw_adminimize_admin_head;
809 }
810 }
811
812 /**
813 * set metabox options from database an area post
814 */
815 function _mw_adminimize_set_metabox_post_option() {
816
817 // exclude super admin
818 if ( _mw_adminimize_exclude_super_admin() ) {
819 return NULL;
820 }
821
822 // Leave the settings screen from Adminimize to see all areas on settings.
823 if ( _mw_adminimize_exclude_settings_page() ) {
824 return;
825 }
826
827 $user_roles = _mw_adminimize_get_all_user_roles();
828 $_mw_adminimize_admin_head = '';
829 $metaboxes = '';
830
831 foreach ( $user_roles as $role ) {
832 $disabled_metaboxes_post_[ $role ] = _mw_adminimize_get_option_value(
833 'mw_adminimize_disabled_metaboxes_post_' . $role . '_items'
834 );
835
836 if ( ! isset( $disabled_metaboxes_post_[ $role ][ '0' ] ) ) {
837 $disabled_metaboxes_post_[ $role ][ '0' ] = '';
838 }
839
840 // new 1.7.8
841 $user = wp_get_current_user();
842 if ( is_array( $user->roles ) && in_array( $role, $user->roles, FALSE ) ) {
843 if ( _mw_adminimize_current_user_has_role( $role ) && isset( $disabled_metaboxes_post_[ $role ] )
844 && is_array(
845 $disabled_metaboxes_post_[ $role ]
846 )
847 ) {
848 $metaboxes = implode( ',', $disabled_metaboxes_post_[ $role ] );
849 }
850 }
851 }
852
853 $_mw_adminimize_admin_head .= '<!-- Set Adminimize metabox post options -->' . "\n";
854 $_mw_adminimize_admin_head .= '<style type="text/css">' .
855 $metaboxes . ' {display:none !important;}</style>' . "\n";
856
857 if ( ! empty( $metaboxes ) ) {
858 echo $_mw_adminimize_admin_head;
859 }
860 }
861
862 /**
863 * set metabox options from database an area page
864 */
865 function _mw_adminimize_set_metabox_page_option() {
866
867 // exclude super admin
868 if ( _mw_adminimize_exclude_super_admin() ) {
869 return NULL;
870 }
871
872 // Leave the settings screen from Adminimize to see all areas on settings.
873 if ( _mw_adminimize_exclude_settings_page() ) {
874 return;
875 }
876
877 $user_roles = _mw_adminimize_get_all_user_roles();
878 $_mw_adminimize_admin_head = '';
879 $metaboxes = '';
880
881 foreach ( $user_roles as $role ) {
882 $disabled_metaboxes_page_[ $role ] = _mw_adminimize_get_option_value(
883 'mw_adminimize_disabled_metaboxes_page_' . $role . '_items'
884 );
885
886 if ( ! isset( $disabled_metaboxes_page_[ $role ][ '0' ] ) ) {
887 $disabled_metaboxes_page_[ $role ][ '0' ] = '';
888 }
889
890 // new 1.7.8
891 $user = wp_get_current_user();
892 if ( is_array( $user->roles ) && in_array( $role, $user->roles, FALSE ) ) {
893 if ( _mw_adminimize_current_user_has_role( $role )
894 && isset( $disabled_metaboxes_page_[ $role ] )
895 && is_array( $disabled_metaboxes_page_[ $role ] )
896 ) {
897 $metaboxes = implode( ',', $disabled_metaboxes_page_[ $role ] );
898 }
899 }
900 }
901
902 $_mw_adminimize_admin_head .= '<!-- Set Adminimize metabox page options -->' . "\n";
903 $_mw_adminimize_admin_head .= '<style type="text/css">' .
904 $metaboxes . ' {display:none !important;}</style>' . "\n";
905
906 if ( ! empty( $metaboxes ) ) {
907 echo $_mw_adminimize_admin_head;
908 }
909 }
910
911 /**
912 * set metabox options from database an area post
913 */
914 function _mw_adminimize_set_metabox_cp_option() {
915
916 // exclude super admin
917 if ( _mw_adminimize_exclude_super_admin() ) {
918 return NULL;
919 }
920
921 // Leave the settings screen from Adminimize to see all areas on settings.
922 if ( _mw_adminimize_exclude_settings_page() ) {
923 return;
924 }
925
926 if ( isset( $_GET[ 'post' ] ) ) {
927 $post_id = (int) $_GET[ 'post' ];
928 } elseif ( isset( $_POST[ 'post_ID' ] ) ) {
929 $post_id = (int) $_POST[ 'post_ID' ];
930 } else {
931 $post_id = 0;
932 }
933
934 $current_post_type = $GLOBALS[ 'post_type' ];
935 if ( ! isset( $current_post_type ) ) {
936 $current_post_type = get_post_type( $post_id );
937 }
938
939 if ( ! isset( $current_post_type ) || ! $current_post_type ) {
940 $current_post_type = str_replace( 'post_type=', '', esc_attr( $_SERVER[ 'QUERY_STRING' ] ) );
941 }
942
943 // set hard to post
944 if ( ! $current_post_type ) {
945 $current_post_type = 'post';
946 }
947
948 $user_roles = _mw_adminimize_get_all_user_roles();
949 $_mw_adminimize_admin_head = '';
950 $metaboxes = '';
951
952 foreach ( $user_roles as $role ) {
953 $disabled_metaboxes_[ $current_post_type . '_' . $role ] = _mw_adminimize_get_option_value(
954 'mw_adminimize_disabled_metaboxes_' . $current_post_type . '_' . $role . '_items'
955 );
956
957 if ( ! isset( $disabled_metaboxes_[ $current_post_type . '_' . $role ][ '0' ] ) ) {
958 $disabled_metaboxes_[ $current_post_type . '_' . $role ][ '0' ] = '';
959 }
960
961 $user = wp_get_current_user();
962 if ( is_array( $user->roles ) && in_array( $role, $user->roles, FALSE ) ) {
963 if ( _mw_adminimize_current_user_has_role( $role )
964 && isset( $disabled_metaboxes_[ $current_post_type . '_' . $role ] )
965 && is_array( $disabled_metaboxes_[ $current_post_type . '_' . $role ] )
966 ) {
967 $metaboxes = implode( ',', $disabled_metaboxes_[ $current_post_type . '_' . $role ] );
968 }
969 }
970 }
971
972 $_mw_adminimize_admin_head .= '<!-- Set Adminimize post options -->' . "\n";
973 $_mw_adminimize_admin_head .= '<style type="text/css">' .
974 $metaboxes . ' {display:none !important;}</style>' . "\n";
975
976 if ( ! empty( $metaboxes ) ) {
977 echo $_mw_adminimize_admin_head;
978 }
979 }
980
981 /**
982 * set link options in area Links of Backend
983 */
984 function _mw_adminimize_set_link_option() {
985
986 // exclude super admin
987 if ( _mw_adminimize_exclude_super_admin() ) {
988 return NULL;
989 }
990
991 // Leave the settings screen from Adminimize to see all areas on settings.
992 if ( _mw_adminimize_exclude_settings_page() ) {
993 return;
994 }
995
996 $user_roles = _mw_adminimize_get_all_user_roles();
997 $_mw_adminimize_admin_head = '';
998
999 foreach ( $user_roles as $role ) {
1000 $disabled_link_option_[ $role ] = _mw_adminimize_get_option_value(
1001 'mw_adminimize_disabled_link_option_' . $role . '_items'
1002 );
1003 }
1004
1005 foreach ( $user_roles as $role ) {
1006 if ( ! isset( $disabled_link_option_[ $role ][ '0' ] ) ) {
1007 $disabled_link_option_[ $role ][ '0' ] = '';
1008 }
1009 }
1010
1011 $link_options = '';
1012 // new 1.7.8
1013 foreach ( $user_roles as $role ) {
1014 $user = wp_get_current_user();
1015 if ( is_array( $user->roles ) && in_array( $role, $user->roles, FALSE ) ) {
1016 if ( _mw_adminimize_current_user_has_role( $role )
1017 && isset( $disabled_link_option_[ $role ] )
1018 && is_array( $disabled_link_option_[ $role ] )
1019 ) {
1020 $link_options = implode( ',', $disabled_link_option_[ $role ] );
1021 }
1022 }
1023 }
1024
1025 $_mw_adminimize_admin_head .= '<!-- Set Adminimize links options -->' . "\n";
1026 $_mw_adminimize_admin_head .= '<style type="text/css">' .
1027 $link_options . ' {display:none !important;}</style>' . "\n";
1028
1029 if ( ! empty( $link_options ) ) {
1030 echo $_mw_adminimize_admin_head;
1031 }
1032 }
1033
1034 /**
1035 * remove objects on wp nav menu
1036 */
1037 function _mw_adminimize_set_nav_menu_option() {
1038
1039 // exclude super admin
1040 if ( _mw_adminimize_exclude_super_admin() ) {
1041 return NULL;
1042 }
1043
1044 // Leave the settings screen from Adminimize to see all areas on settings.
1045 if ( _mw_adminimize_exclude_settings_page() ) {
1046 return;
1047 }
1048
1049 $user_roles = _mw_adminimize_get_all_user_roles();
1050 $_mw_adminimize_admin_head = '';
1051
1052 foreach ( $user_roles as $role ) {
1053 $disabled_nav_menu_option_[ $role ] = _mw_adminimize_get_option_value(
1054 'mw_adminimize_disabled_nav_menu_option_' . $role . '_items'
1055 );
1056 }
1057
1058 foreach ( $user_roles as $role ) {
1059 if ( ! isset( $disabled_nav_menu_option_[ $role ][ '0' ] ) ) {
1060 $disabled_nav_menu_option_[ $role ][ '0' ] = '';
1061 }
1062 }
1063
1064 $nav_menu_options = '';
1065 // new 1.7.8
1066 foreach ( $user_roles as $role ) {
1067 $user = wp_get_current_user();
1068 if ( is_array( $user->roles ) && in_array( $role, $user->roles, FALSE ) ) {
1069 if ( _mw_adminimize_current_user_has_role( $role )
1070 && isset( $disabled_nav_menu_option_[ $role ] )
1071 && is_array( $disabled_nav_menu_option_[ $role ] )
1072 ) {
1073 $nav_menu_options = implode( ',', $disabled_nav_menu_option_[ $role ] );
1074 }
1075 }
1076 }
1077 //remove_meta_box( $id, 'nav-menus', 'side' );
1078
1079 $_mw_adminimize_admin_head .= '<!-- Set Adminimize WP Nav Menu options -->' . "\n";
1080 $_mw_adminimize_admin_head .= '<style type="text/css">' .
1081 $nav_menu_options . ' {display: none !important;}</style>' . "\n";
1082
1083 if ( $nav_menu_options ) {
1084 echo $_mw_adminimize_admin_head;
1085 }
1086 }
1087
1088 /**
1089 * Remove areas in Widget Settings
1090 */
1091 function _mw_adminimize_set_widget_option() {
1092
1093 // exclude super admin
1094 if ( _mw_adminimize_exclude_super_admin() ) {
1095 return NULL;
1096 }
1097
1098 // Leave the settings screen from Adminimize to see all areas on settings.
1099 if ( _mw_adminimize_exclude_settings_page() ) {
1100 return;
1101 }
1102
1103 $user_roles = _mw_adminimize_get_all_user_roles();
1104 $_mw_adminimize_admin_head = '';
1105
1106 foreach ( $user_roles as $role ) {
1107 $disabled_widget_option_[ $role ] = _mw_adminimize_get_option_value(
1108 'mw_adminimize_disabled_widget_option_' . $role . '_items'
1109 );
1110 }
1111
1112 foreach ( $user_roles as $role ) {
1113 if ( ! isset( $disabled_widget_option_[ $role ][ '0' ] ) ) {
1114 $disabled_widget_option_[ $role ][ '0' ] = '';
1115 }
1116 }
1117
1118 $widget_options = '';
1119 // new 1.7.8
1120 foreach ( $user_roles as $role ) {
1121 $user = wp_get_current_user();
1122 if ( is_array( $user->roles ) && in_array( $role, $user->roles, FALSE ) ) {
1123 if ( _mw_adminimize_current_user_has_role( $role )
1124 && isset( $disabled_widget_option_[ $role ] )
1125 && is_array( $disabled_widget_option_[ $role ] )
1126 ) {
1127 $widget_options = implode( ',', $disabled_widget_option_[ $role ] );
1128 }
1129 }
1130 }
1131 //remove_meta_box( $id, 'nav-menus', 'side' );
1132
1133 $_mw_adminimize_admin_head .= '<!-- Set Adminimize Widget options -->' . "\n";
1134 $_mw_adminimize_admin_head .= '<style type="text/css">' .
1135 $widget_options . ' {display: none !important;}</style>' . "\n";
1136
1137 if ( $widget_options ) {
1138 echo $_mw_adminimize_admin_head;
1139 }
1140 }
1141
1142 /**
1143 * small user-info
1144 */
1145 function _mw_adminimize_small_user_info() {
1146
1147 ?>
1148 <div id="small_user_info">
1149 <p>
1150 <a href="<?php echo wp_nonce_url(
1151 site_url( 'wp-login.php?action=logout' ),
1152 'log-out'
1153 ) ?>"
1154 title="<?php esc_attr_e( 'Log Out' ) ?>"><?php esc_attr_e( 'Log Out' ); ?></a>
1155 </p>
1156 </div>
1157 <?php
1158 }
1159
1160 // Include message class.
1161 require_once 'inc-setup/messages.php';
1162 // include helping functions
1163 require_once 'inc-setup/helping_hands.php';
1164
1165 // inc. settings page
1166 require_once 'adminimize_page.php';
1167
1168 // dashboard options
1169 require_once 'inc-setup/dashboard.php';
1170
1171 // widget options
1172 require_once 'inc-setup/widget.php';
1173 require_once 'inc-setup/admin-footer.php';
1174
1175 // global settings
1176 // @TODO Testing, not ready for productive
1177 //require_once( 'inc-options/settings_notice.php' );
1178
1179 // remove admin bar
1180 require_once 'inc-setup/remove-admin-bar.php';
1181
1182 // admin bar helper, setup
1183 // work always in frontend
1184 require_once 'inc-setup/admin-bar-items.php';
1185
1186 // meta boxes helper, setup
1187 // @TODO Meta Boxes: not ready for productive systems.
1188 //require_once( 'inc-setup/meta-boxes.php' );
1189
1190 // Remove Admin Notices.
1191 require_once 'inc-setup/remove-admin-notices.php';
1192
1193 /**
1194 * Add action link(s) to plugins page
1195 *
1196 * @param $links , $file
1197 * @param $file
1198 *
1199 * @return $links
1200 */
1201 function _mw_adminimize_filter_plugin_meta( $links, $file ) {
1202
1203 /* create link */
1204 if ( FB_ADMINIMIZE_BASENAME === $file ) {
1205 array_unshift(
1206 $links,
1207 sprintf( '<a href="options-general.php?page=%s">%s</a>', FB_ADMINIMIZE_BASENAME, esc_attr__( 'Settings' ) )
1208 );
1209 }
1210
1211 return $links;
1212 }
1213
1214 /**
1215 * settings in plugin-admin-page
1216 */
1217 function _mw_adminimize_add_settings_page() {
1218
1219 $pagehook = add_options_page(
1220 esc_attr__( 'Adminimize Options', 'adminimize' ),
1221 esc_attr__( 'Adminimize', 'adminimize' ),
1222 'manage_options',
1223 __FILE__,
1224 '_mw_adminimize_options'
1225 );
1226 if ( ! is_network_admin() ) {
1227 add_filter( 'plugin_action_links', '_mw_adminimize_filter_plugin_meta', 10, 2 );
1228 }
1229 add_action( 'load-' . $pagehook, '_mw_adminimize_on_load_page' );
1230 }
1231
1232 function _mw_adminimize_on_load_page() {
1233
1234 $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
1235
1236 wp_register_style( 'adminimize-style', plugins_url( 'css/style' . $suffix . '.css', __FILE__ ) );
1237 wp_enqueue_style( 'adminimize-style' );
1238
1239 wp_register_script(
1240 'adminimize-settings-script',
1241 plugins_url( 'js/adminimize' . $suffix . '.js', __FILE__ ),
1242 array( 'jquery' ),
1243 '',
1244 TRUE
1245 );
1246 wp_enqueue_script( 'adminimize-settings-script' );
1247 }
1248
1249 /**
1250 * Set theme for users
1251 * Kill with version 1.7.18
1252 */
1253 function _mw_adminimize_set_theme() {
1254
1255 if ( ! current_user_can( 'edit_users' ) ) {
1256 wp_die( esc_attr__( 'Cheatin&#8217; uh?' ) );
1257 }
1258
1259 $user_ids = $_POST[ 'mw_adminimize_theme_items' ];
1260 $admin_color = htmlspecialchars( stripslashes( $_POST[ '_mw_adminimize_set_theme' ] ) );
1261
1262 if ( ! $user_ids ) {
1263 return FALSE;
1264 }
1265
1266 foreach ( $user_ids as $user_id ) {
1267 update_user_meta( $user_id, 'admin_color', $admin_color );
1268 }
1269
1270 return TRUE;
1271 }
1272
1273 /**
1274 * Get setting value for each options key.
1275 *
1276 * @param string|bool $key
1277 *
1278 * @return array
1279 */
1280 function _mw_adminimize_get_option_value( $key = FALSE ) {
1281
1282 // check for use on multisite
1283 if ( _mw_adminimize_is_active_on_multisite() ) {
1284 $adminimizeoptions = get_site_option( 'mw_adminimize', array() );
1285 } else {
1286 $adminimizeoptions = get_option( 'mw_adminimize', array() );
1287 }
1288
1289 if ( ! $key ) {
1290 return $adminimizeoptions;
1291 }
1292
1293 /** @var array $adminimizeoptions */
1294 return array_key_exists( $key, $adminimizeoptions ) ? $adminimizeoptions[ $key ] : NULL;
1295 }
1296
1297 /**
1298 * Update options.
1299 *
1300 * @param array $options
1301 */
1302 function _mw_adminimize_update_option( $options ) {
1303
1304 if ( ! current_user_can( 'manage_options' ) ) {
1305 return;
1306 }
1307
1308 if ( _mw_adminimize_is_active_on_multisite() ) {
1309 update_site_option( 'mw_adminimize', $options );
1310 } else {
1311 update_option( 'mw_adminimize', $options );
1312 }
1313 }
1314
1315 /**
1316 * Update options in database
1317 */
1318 function _mw_adminimize_update() {
1319
1320 $user_roles = _mw_adminimize_get_all_user_roles();
1321 $args = array( 'public' => TRUE, '_builtin' => FALSE );
1322 $post_types = get_post_types( $args );
1323
1324 // Admin Bar Back end settings
1325 $adminimizeoptions[ 'mw_adminimize_admin_bar_nodes' ] = _mw_adminimize_get_option_value(
1326 'mw_adminimize_admin_bar_nodes'
1327 );
1328 // admin bar back end options
1329 foreach ( $user_roles as $role ) {
1330 // admin bar back end options
1331 if ( isset( $_POST[ 'mw_adminimize_disabled_admin_bar_' . $role . '_items' ] ) ) {
1332 $adminimizeoptions[ 'mw_adminimize_disabled_admin_bar_' . $role . '_items' ] = $_POST[ 'mw_adminimize_disabled_admin_bar_' . $role . '_items' ];
1333 } else {
1334 $adminimizeoptions[ 'mw_adminimize_disabled_admin_bar_' . $role . '_items' ] = array();
1335 }
1336 }
1337
1338 // Admin Bar Front end settings
1339 $adminimizeoptions[ 'mw_adminimize_admin_bar_frontend_nodes' ] = _mw_adminimize_get_option_value(
1340 'mw_adminimize_admin_bar_frontend_nodes'
1341 );
1342 // admin bar front end options
1343 foreach ( $user_roles as $role ) {
1344 // admin bar fron tend options
1345 if ( isset( $_POST[ 'mw_adminimize_disabled_admin_bar_frontend_' . $role . '_items' ] ) ) {
1346 $adminimizeoptions[ 'mw_adminimize_disabled_admin_bar_frontend_' . $role . '_items' ] = $_POST[ 'mw_adminimize_disabled_admin_bar_frontend_' . $role . '_items' ];
1347 } else {
1348 $adminimizeoptions[ 'mw_adminimize_disabled_admin_bar_frontend_' . $role . '_items' ] = array();
1349 }
1350 }
1351
1352 if ( isset( $_POST[ '_mw_adminimize_user_info' ] ) ) {
1353 $adminimizeoptions[ '_mw_adminimize_user_info' ] = (int) $_POST[ '_mw_adminimize_user_info' ];
1354 } else {
1355 $adminimizeoptions[ '_mw_adminimize_user_info' ] = 0;
1356 }
1357
1358 if ( isset( $_POST[ '_mw_adminimize_footer' ] ) ) {
1359 $adminimizeoptions[ '_mw_adminimize_footer' ] = (int) $_POST[ '_mw_adminimize_footer' ];
1360 } else {
1361 $adminimizeoptions[ '_mw_adminimize_footer' ] = 0;
1362 }
1363
1364 if ( isset( $_POST[ '_mw_adminimize_header' ] ) ) {
1365 $adminimizeoptions[ '_mw_adminimize_header' ] = (int) $_POST[ '_mw_adminimize_header' ];
1366 } else {
1367 $adminimizeoptions[ '_mw_adminimize_header' ] = 0;
1368 }
1369
1370 if ( isset( $_POST[ '_mw_adminimize_exclude_super_admin' ] ) ) {
1371 $adminimizeoptions[ '_mw_adminimize_exclude_super_admin' ] = (int) $_POST[ '_mw_adminimize_exclude_super_admin' ];
1372 } else {
1373 $adminimizeoptions[ '_mw_adminimize_exclude_super_admin' ] = 0;
1374 }
1375
1376 if ( isset( $_POST[ '_mw_adminimize_tb_window' ] ) ) {
1377 $adminimizeoptions[ '_mw_adminimize_tb_window' ] = (int) $_POST[ '_mw_adminimize_tb_window' ];
1378 } else {
1379 $adminimizeoptions[ '_mw_adminimize_tb_window' ] = 0;
1380 }
1381
1382 if ( isset( $_POST[ '_mw_adminimize_cat_full' ] ) ) {
1383 $adminimizeoptions[ '_mw_adminimize_cat_full' ] = (int) $_POST[ '_mw_adminimize_cat_full' ];
1384 } else {
1385 $adminimizeoptions[ '_mw_adminimize_cat_full' ] = 0;
1386 }
1387
1388 if ( isset( $_POST[ '_mw_adminimize_db_redirect' ] ) ) {
1389 $adminimizeoptions[ '_mw_adminimize_db_redirect' ] = (int) $_POST[ '_mw_adminimize_db_redirect' ];
1390 } else {
1391 $adminimizeoptions[ '_mw_adminimize_db_redirect' ] = 0;
1392 }
1393
1394 if ( isset( $_POST[ '_mw_adminimize_ui_redirect' ] ) ) {
1395 $adminimizeoptions[ '_mw_adminimize_ui_redirect' ] = (int) $_POST[ '_mw_adminimize_ui_redirect' ];
1396 } else {
1397 $adminimizeoptions[ '_mw_adminimize_ui_redirect' ] = 0;
1398 }
1399
1400 if ( isset( $_POST[ '_mw_adminimize_advice' ] ) ) {
1401 $adminimizeoptions[ '_mw_adminimize_advice' ] = (int) $_POST[ '_mw_adminimize_advice' ];
1402 } else {
1403 $adminimizeoptions[ '_mw_adminimize_advice' ] = 0;
1404 }
1405
1406 if ( isset( $_POST[ '_mw_adminimize_advice_txt' ] ) ) {
1407 $adminimizeoptions[ '_mw_adminimize_advice_txt' ] = htmlspecialchars(
1408 stripslashes( $_POST[ '_mw_adminimize_advice_txt' ] )
1409 );
1410 } else {
1411 $adminimizeoptions[ '_mw_adminimize_advice_txt' ] = '';
1412 }
1413
1414 if ( isset( $_POST[ '_mw_adminimize_timestamp' ] ) ) {
1415 $adminimizeoptions[ '_mw_adminimize_timestamp' ] = (int) $_POST[ '_mw_adminimize_timestamp' ];
1416 } else {
1417 $adminimizeoptions[ '_mw_adminimize_timestamp' ] = 0;
1418 }
1419
1420 if ( isset( $_POST[ '_mw_adminimize_db_redirect_txt' ] ) ) {
1421 $adminimizeoptions[ '_mw_adminimize_db_redirect_txt' ] = esc_url( $_POST[ '_mw_adminimize_db_redirect_txt' ] );
1422 } else {
1423 $adminimizeoptions[ '_mw_adminimize_db_redirect_txt' ] = '';
1424 }
1425
1426 // menu update
1427 foreach ( $user_roles as $role ) {
1428 if ( isset( $_POST[ 'mw_adminimize_disabled_menu_' . $role . '_items' ] ) ) {
1429 $adminimizeoptions[ 'mw_adminimize_disabled_menu_' . $role . '_items' ] =
1430 $_POST[ 'mw_adminimize_disabled_menu_' . $role . '_items' ];
1431 } else {
1432 $adminimizeoptions[ 'mw_adminimize_disabled_menu_' . $role . '_items' ] = array();
1433 }
1434
1435 if ( isset( $_POST[ 'mw_adminimize_disabled_submenu_' . $role . '_items' ] ) ) {
1436 $adminimizeoptions[ 'mw_adminimize_disabled_submenu_' . $role . '_items' ] =
1437 $_POST[ 'mw_adminimize_disabled_submenu_' . $role . '_items' ];
1438 } else {
1439 $adminimizeoptions[ 'mw_adminimize_disabled_submenu_' . $role . '_items' ] = array();
1440 }
1441 }
1442
1443 // global_options, metaboxes update
1444 foreach ( $user_roles as $role ) {
1445
1446 // global options
1447 if ( isset( $_POST[ 'mw_adminimize_disabled_global_option_' . $role . '_items' ] ) ) {
1448 $adminimizeoptions[ 'mw_adminimize_disabled_global_option_' . $role . '_items' ] =
1449 $_POST[ 'mw_adminimize_disabled_global_option_' . $role . '_items' ];
1450 } else {
1451 $adminimizeoptions[ 'mw_adminimize_disabled_global_option_' . $role . '_items' ] = array();
1452 }
1453
1454 if ( isset( $_POST[ 'mw_adminimize_disabled_metaboxes_post_' . $role . '_items' ] ) ) {
1455 $adminimizeoptions[ 'mw_adminimize_disabled_metaboxes_post_' . $role . '_items' ] =
1456 $_POST[ 'mw_adminimize_disabled_metaboxes_post_' . $role . '_items' ];
1457 } else {
1458 $adminimizeoptions[ 'mw_adminimize_disabled_metaboxes_post_' . $role . '_items' ] = array();
1459 }
1460
1461 if ( isset( $_POST[ 'mw_adminimize_disabled_metaboxes_page_' . $role . '_items' ] ) ) {
1462 $adminimizeoptions[ 'mw_adminimize_disabled_metaboxes_page_' . $role . '_items' ] =
1463 $_POST[ 'mw_adminimize_disabled_metaboxes_page_' . $role . '_items' ];
1464 } else {
1465 $adminimizeoptions[ 'mw_adminimize_disabled_metaboxes_page_' . $role . '_items' ] = array();
1466 }
1467
1468 foreach ( $post_types as $post_type ) {
1469 if ( isset( $_POST[ 'mw_adminimize_disabled_metaboxes_' . $post_type . '_' . $role . '_items' ] ) ) {
1470 $adminimizeoptions[ 'mw_adminimize_disabled_metaboxes_' . $post_type . '_' . $role . '_items' ] =
1471 $_POST[ 'mw_adminimize_disabled_metaboxes_' . $post_type . '_' . $role . '_items' ];
1472 } else {
1473 $adminimizeoptions[ 'mw_adminimize_disabled_metaboxes_' . $post_type . '_' . $role . '_items' ] = array();
1474 }
1475 }
1476
1477 if ( isset( $_POST[ 'mw_adminimize_disabled_link_option_' . $role . '_items' ] ) ) {
1478 $adminimizeoptions[ 'mw_adminimize_disabled_link_option_' . $role . '_items' ] =
1479 $_POST[ 'mw_adminimize_disabled_link_option_' . $role . '_items' ];
1480 } else {
1481 $adminimizeoptions[ 'mw_adminimize_disabled_link_option_' . $role . '_items' ] = array();
1482 }
1483
1484 // wp nav menu options
1485 if ( isset( $_POST[ 'mw_adminimize_disabled_nav_menu_option_' . $role . '_items' ] ) ) {
1486 $adminimizeoptions[ 'mw_adminimize_disabled_nav_menu_option_' . $role . '_items' ] =
1487 $_POST[ 'mw_adminimize_disabled_nav_menu_option_' . $role . '_items' ];
1488 } else {
1489 $adminimizeoptions[ 'mw_adminimize_disabled_nav_menu_option_' . $role . '_items' ] = array();
1490 }
1491
1492 // widget options
1493 if ( isset( $_POST[ 'mw_adminimize_disabled_widget_option_' . $role . '_items' ] ) ) {
1494 $adminimizeoptions[ 'mw_adminimize_disabled_widget_option_' . $role . '_items' ] =
1495 $_POST[ 'mw_adminimize_disabled_widget_option_' . $role . '_items' ];
1496 } else {
1497 $adminimizeoptions[ 'mw_adminimize_disabled_widget_option_' . $role . '_items' ] = array();
1498 }
1499
1500 // wp dashboard option
1501 if ( isset( $_POST[ 'mw_adminimize_disabled_dashboard_option_' . $role . '_items' ] ) ) {
1502 $adminimizeoptions[ 'mw_adminimize_disabled_dashboard_option_' . $role . '_items' ] =
1503 $_POST[ 'mw_adminimize_disabled_dashboard_option_' . $role . '_items' ];
1504 } else {
1505 $adminimizeoptions[ 'mw_adminimize_disabled_dashboard_option_' . $role . '_items' ] = array();
1506 }
1507 }
1508
1509 // own options
1510 if ( isset( $_POST[ '_mw_adminimize_own_values' ] ) ) {
1511 $adminimizeoptions[ '_mw_adminimize_own_values' ] = stripslashes( $_POST[ '_mw_adminimize_own_values' ] );
1512 } else {
1513 $adminimizeoptions[ '_mw_adminimize_own_values' ] = '';
1514 }
1515
1516 if ( isset( $_POST[ '_mw_adminimize_own_options' ] ) ) {
1517 $adminimizeoptions[ '_mw_adminimize_own_options' ] = stripslashes( $_POST[ '_mw_adminimize_own_options' ] );
1518 } else {
1519 $adminimizeoptions[ '_mw_adminimize_own_options' ] = '';
1520 }
1521
1522 // own post options
1523 if ( isset( $_POST[ '_mw_adminimize_own_post_values' ] ) ) {
1524 $adminimizeoptions[ '_mw_adminimize_own_post_values' ] = stripslashes(
1525 $_POST[ '_mw_adminimize_own_post_values' ]
1526 );
1527 } else {
1528 $adminimizeoptions[ '_mw_adminimize_own_post_values' ] = '';
1529 }
1530
1531 if ( isset( $_POST[ '_mw_adminimize_own_post_options' ] ) ) {
1532 $adminimizeoptions[ '_mw_adminimize_own_post_options' ] = stripslashes(
1533 $_POST[ '_mw_adminimize_own_post_options' ]
1534 );
1535 } else {
1536 $adminimizeoptions[ '_mw_adminimize_own_post_options' ] = '';
1537 }
1538
1539 // own page options
1540 if ( isset( $_POST[ '_mw_adminimize_own_page_values' ] ) ) {
1541 $adminimizeoptions[ '_mw_adminimize_own_page_values' ] = stripslashes(
1542 $_POST[ '_mw_adminimize_own_page_values' ]
1543 );
1544 } else {
1545 $adminimizeoptions[ '_mw_adminimize_own_page_values' ] = '';
1546 }
1547
1548 if ( isset( $_POST[ '_mw_adminimize_own_page_options' ] ) ) {
1549 $adminimizeoptions[ '_mw_adminimize_own_page_options' ] = stripslashes(
1550 $_POST[ '_mw_adminimize_own_page_options' ]
1551 );
1552 } else {
1553 $adminimizeoptions[ '_mw_adminimize_own_page_options' ] = '';
1554 }
1555
1556 // own custom post options
1557 foreach ( $post_types as $post_type ) {
1558 if ( isset( $_POST[ '_mw_adminimize_own_values_' . $post_type ] ) ) {
1559 $adminimizeoptions[ '_mw_adminimize_own_values_' . $post_type ] = stripslashes(
1560 $_POST[ '_mw_adminimize_own_values_' . $post_type ]
1561 );
1562 } else {
1563 $adminimizeoptions[ '_mw_adminimize_own_values_' . $post_type ] = '';
1564 }
1565
1566 if ( isset( $_POST[ '_mw_adminimize_own_options_' . $post_type ] ) ) {
1567 $adminimizeoptions[ '_mw_adminimize_own_options_' . $post_type ] = stripslashes(
1568 $_POST[ '_mw_adminimize_own_options_' . $post_type ]
1569 );
1570 } else {
1571 $adminimizeoptions[ '_mw_adminimize_own_options_' . $post_type ] = '';
1572 }
1573 }
1574
1575 // own link options
1576 if ( isset( $_POST[ '_mw_adminimize_own_link_values' ] ) ) {
1577 $adminimizeoptions[ '_mw_adminimize_own_link_values' ] = stripslashes(
1578 $_POST[ '_mw_adminimize_own_link_values' ]
1579 );
1580 } else {
1581 $adminimizeoptions[ '_mw_adminimize_own_link_values' ] = '';
1582 }
1583
1584 if ( isset( $_POST[ '_mw_adminimize_own_link_options' ] ) ) {
1585 $adminimizeoptions[ '_mw_adminimize_own_link_options' ] = stripslashes(
1586 $_POST[ '_mw_adminimize_own_link_options' ]
1587 );
1588 } else {
1589 $adminimizeoptions[ '_mw_adminimize_own_link_options' ] = '';
1590 }
1591
1592 // wp nav menu options
1593 if ( isset( $_POST[ '_mw_adminimize_own_nav_menu_values' ] ) ) {
1594 $adminimizeoptions[ '_mw_adminimize_own_nav_menu_values' ] = stripslashes(
1595 $_POST[ '_mw_adminimize_own_nav_menu_values' ]
1596 );
1597 } else {
1598 $adminimizeoptions[ '_mw_adminimize_own_nav_menu_values' ] = '';
1599 }
1600
1601 if ( isset( $_POST[ '_mw_adminimize_own_nav_menu_options' ] ) ) {
1602 $adminimizeoptions[ '_mw_adminimize_own_nav_menu_options' ] = stripslashes(
1603 $_POST[ '_mw_adminimize_own_nav_menu_options' ]
1604 );
1605 } else {
1606 $adminimizeoptions[ '_mw_adminimize_own_nav_menu_options' ] = '';
1607 }
1608
1609 // widget options
1610 if ( isset( $_POST[ '_mw_adminimize_own_widget_values' ] ) ) {
1611 $adminimizeoptions[ '_mw_adminimize_own_widget_values' ] = stripslashes(
1612 $_POST[ '_mw_adminimize_own_widget_values' ]
1613 );
1614 } else {
1615 $adminimizeoptions[ '_mw_adminimize_own_widget_values' ] = '';
1616 }
1617
1618 if ( isset( $_POST[ '_mw_adminimize_own_widget_options' ] ) ) {
1619 $adminimizeoptions[ '_mw_adminimize_own_widget_options' ] = stripslashes(
1620 $_POST[ '_mw_adminimize_own_widget_options' ]
1621 );
1622 } else {
1623 $adminimizeoptions[ '_mw_adminimize_own_widget_options' ] = '';
1624 }
1625
1626 // own dashboard options
1627 if ( isset( $_POST[ '_mw_adminimize_own_dashboard_values' ] ) ) {
1628 $adminimizeoptions[ '_mw_adminimize_own_dashboard_values' ] = stripslashes(
1629 $_POST[ '_mw_adminimize_own_dashboard_values' ]
1630 );
1631 } else {
1632 $adminimizeoptions[ '_mw_adminimize_own_dashboard_values' ] = '';
1633 }
1634
1635 if ( isset( $_POST[ '_mw_adminimize_own_dashboard_options' ] ) ) {
1636 $adminimizeoptions[ '_mw_adminimize_own_dashboard_options' ] = stripslashes(
1637 $_POST[ '_mw_adminimize_own_dashboard_options' ]
1638 );
1639 } else {
1640 $adminimizeoptions[ '_mw_adminimize_own_dashboard_options' ] = '';
1641 }
1642
1643 $adminimizeoptions[ 'mw_adminimize_dashboard_widgets' ] = _mw_adminimize_get_option_value(
1644 'mw_adminimize_dashboard_widgets'
1645 );
1646
1647 if ( isset( $GLOBALS[ 'menu' ] ) ) {
1648 $adminimizeoptions[ 'mw_adminimize_default_menu' ] = $GLOBALS[ 'menu' ];
1649 }
1650 if ( isset( $GLOBALS[ 'submenu' ] ) ) {
1651 $adminimizeoptions[ 'mw_adminimize_default_submenu' ] = $GLOBALS[ 'submenu' ];
1652 }
1653
1654 // update
1655 _mw_adminimize_update_option( $adminimizeoptions );
1656
1657 $myErrors = new _mw_adminimize_message_class();
1658 $myErrors = '<div id="message" class="updated fade"><p>' . $myErrors->get_error(
1659 '_mw_adminimize_update'
1660 ) . '</p></div>';
1661 echo $myErrors;
1662 }
1663
1664 /**
1665 * Delete options in database
1666 */
1667 function _mw_adminimize_deinstall() {
1668
1669 delete_site_option( 'mw_adminimize' );
1670 delete_option( 'mw_adminimize' );
1671 }
1672
1673 /**
1674 * Install options in database
1675 */
1676 function _mw_adminimize_install() {
1677
1678 if ( ! is_admin() ) {
1679 return NULL;
1680 }
1681
1682 global $menu, $submenu;
1683
1684 $user_roles = _mw_adminimize_get_all_user_roles();
1685 $adminimizeoptions = array();
1686
1687 foreach ( $user_roles as $role ) {
1688 $adminimizeoptions[ 'mw_adminimize_disabled_menu_' . $role . '_items' ] = array();
1689 $adminimizeoptions[ 'mw_adminimize_disabled_submenu_' . $role . '_items' ] = array();
1690 $adminimizeoptions[ 'mw_adminimize_disabled_admin_bar_' . $role . '_items' ] = array();
1691 $adminimizeoptions[ 'mw_adminimize_disabled_global_option_' . $role . '_items' ] = array();
1692 $adminimizeoptions[ 'mw_adminimize_disabled_metaboxes_post_' . $role . '_items' ] = array();
1693 $adminimizeoptions[ 'mw_adminimize_disabled_metaboxes_page_' . $role . '_items' ] = array();
1694 $args = array(
1695 'public' => TRUE,
1696 '_builtin' => FALSE,
1697 );
1698 foreach ( get_post_types( $args ) as $post_type ) {
1699 $adminimizeoptions[ 'mw_adminimize_disabled_metaboxes_' . $post_type . '_' . $role . '_items' ] = array();
1700 }
1701 }
1702
1703 $adminimizeoptions[ 'mw_adminimize_default_menu' ] = $menu;
1704 $adminimizeoptions[ 'mw_adminimize_default_submenu' ] = $submenu;
1705
1706 if ( _mw_adminimize_is_active_on_multisite() ) {
1707 add_site_option( 'mw_adminimize', $adminimizeoptions );
1708 } else {
1709 add_option( 'mw_adminimize', $adminimizeoptions );
1710 }
1711 }
1712
1713 /**
1714 * Process a settings export that generates a .json file of the shop settings
1715 */
1716 function _mw_adminimize_export_json() {
1717
1718 if ( empty( $_GET[ '_mw_adminimize_export' ] ) || 'true' !== $_GET[ '_mw_adminimize_export' ] ) {
1719 return;
1720 }
1721
1722 require_once ABSPATH . 'wp-includes/pluggable.php';
1723 if ( ! wp_verify_nonce( $_GET[ 'mw_adminimize_export_nonce' ], 'mw_adminimize_export_nonce' ) ) {
1724 return;
1725 }
1726
1727 if ( ! current_user_can( 'manage_options' ) ) {
1728 return;
1729 }
1730
1731 $settings = _mw_adminimize_get_option_value();
1732
1733 ignore_user_abort( TRUE );
1734
1735 nocache_headers();
1736 header( 'Content-Type: application/json; charset=utf-8' );
1737 header( 'Content-Disposition: attachment; filename=mw_adminimize-settings-export-' . date( 'm-d-Y' ) . '.json' );
1738 header( 'Expires: 0' );
1739
1740 echo json_encode( $settings );
1741 exit();
1742 }
1743
1744 /**
1745 * Process a settings import from a json file
1746 */
1747 function _mw_adminimize_import_json() {
1748
1749 if ( empty( $_POST[ '_mw_adminimize_action' ] ) || '_mw_adminimize_import' !== $_POST[ '_mw_adminimize_action' ] ) {
1750 return;
1751 }
1752
1753 if ( ! wp_verify_nonce( $_POST[ 'mw_adminimize_import_nonce' ], 'mw_adminimize_import_nonce' ) ) {
1754 return;
1755 }
1756
1757 if ( ! current_user_can( 'manage_options' ) ) {
1758 return;
1759 }
1760
1761 $extension = pathinfo( $_FILES[ 'import_file' ][ 'name' ], PATHINFO_EXTENSION );
1762 if ( $extension !== 'json' ) {
1763 wp_die( esc_attr__( 'Please upload a valid .json file' ) );
1764 }
1765
1766 $import_file = $_FILES[ 'import_file' ][ 'tmp_name' ];
1767
1768 if ( empty( $import_file ) ) {
1769 wp_die( esc_attr__( 'Please upload a file to import' ) );
1770 }
1771
1772 // Retrieve the settings from the file and convert the json object to an array.
1773 $settings = (array) json_decode( file_get_contents( $import_file ) );
1774 unlink( $import_file );
1775
1776 _mw_adminimize_update_option( $settings );
1777 }
1778