PluginProbe
Adminimize / 1.11.9
Adminimize v1.11.9
1.11.14 1.11.13 1.11.1 1.11.10 1.11.11 1.11.12 1.11.2 1.11.3 1.11.4 1.11.5 1.11.6 1.11.7 1.11.8 1.11.9 1.3 1.4.7 1.6 1.7.12 1.7.13 1.7.14 1.7.15 1.7.16 1.7.17 1.7.18 1.7.19 All 53 releases
← All changes | adminimize.php +1602 -742 1.4.71.11.9 View file →
@@ -1,975 +1,1835 @@
1 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: WP MEDIA SAS
9 + * Author URI: https://wp-media.me/
10 + * Version: 1.11.9
11 + * License: GPLv2+
12 + *
13 + * Php Version 5.6
14 + *
15 + * @package WordPress
16 + * @author Frank Bültge <frank@bueltge.de>
17 + * @license http://opensource.org/licenses/gpl-license.php GNU Public License
18 + * @version 2022-12-09
19 + */
2 20
3 -/*
4 -Plugin Name: Adminimize
5 -Plugin URI: http://bueltge.de/wordpress-admin-theme-adminimize/674/
6 -Description: Visually compresses the administratrive header so that more admin page content can be initially seen. Also moves 'Dashboard' onto the main administrative menu because having it sit in the tip-top black bar was ticking me off and many other changes in the edit-area. The plugin that lets you hide 'unnecessary' items from the WordPress administration menu, with or without admins. You can also hide post meta controls on the edit-area to simplify the interface.
7 -Author: Frank Bueltge
8 -Author URI: http://bueltge.de/
9 -Version: 1.4.7
10 -Last Update: 14.09.2008 13:14:10
11 -*/
21 +/**
22 + * The stylesheet and the initial idea is from Eric A. Meyer http://meyerweb.com/
23 + * I have written a plugin with many options on the basis idea
24 + * of differently user-right and a user-friendly range in admin-area via reduce areas.
25 + * :( grmpf i have so much wishes and hints form users, there use the plugin and
26 + * it is not easy to development this on my free time.
27 + * Also I hate the source, old and hard to maintain, no OOP.
28 + */
12 29
30 +if ( ! function_exists( 'add_action' ) ) {
31 + echo "Hi there! I'm just a part of plugin, not much I can do when called directly.";
32 + exit;
33 +}
34 +
35 +// plugin definitions
36 +define( 'FB_ADMINIMIZE_BASENAME', plugin_basename( __FILE__ ) );
37 +define( 'FB_ADMINIMIZE_BASEFOLDER', plugin_basename( __DIR__ ) );
38 +
13 39 /**
14 - * The stylesheet and the initial idea is from Eric A. Meyer, http://meyerweb.com/
15 - * and i have written a plugin with many options on the basis
16 - * of differently user-right and a user-friendly range in admin-area.
40 + * Return data from the plugin.
17 41 *
18 - * The javascript for de/activate ist by Oliver Schl�be, http://www.schloebe.de
19 - * - many thanks
42 + * @param string $value
43 + *
44 + * @return mixed
20 45 */
46 +function _mw_adminimize_get_plugin_data( $value = 'Version' ) {
21 47
48 + if ( ! function_exists( 'get_plugin_data' ) ) {
49 + require_once ABSPATH . '/wp-admin/includes/plugin.php';
50 + }
22 51
23 -// Pre-2.6 compatibility
24 -if ( !defined( 'WP_CONTENT_URL' ) )
25 - define( 'WP_CONTENT_URL', get_option( 'siteurl' ) . '/wp-content' );
26 -if ( !defined( 'WP_CONTENT_DIR' ) )
27 - define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' );
28 -if ( !defined( 'WP_PLUGIN_URL' ) )
29 - define( 'WP_PLUGIN_URL', WP_CONTENT_URL. '/plugins' );
30 -if ( !defined( 'WP_PLUGIN_DIR' ) )
31 - define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins' );
52 + $plugin_data = get_plugin_data( __FILE__ );
32 53
54 + return $plugin_data[ $value ];
55 +}
56 +
57 +/**
58 + * Load language files.
59 + */
33 60 function _mw_adminimize_textdomain() {
34 61
35 - if (function_exists('load_plugin_textdomain')) {
36 - if ( !defined('WP_PLUGIN_DIR') ) {
37 - load_plugin_textdomain('adminimize', str_replace( ABSPATH, '', dirname(__FILE__) ) . '/languages');
38 - } else {
39 - load_plugin_textdomain('adminimize', false, dirname(plugin_basename(__FILE__)) . '/languages');
62 + load_plugin_textdomain(
63 + _mw_adminimize_get_plugin_data( 'TextDomain' ),
64 + FALSE,
65 + dirname( FB_ADMINIMIZE_BASENAME ) . _mw_adminimize_get_plugin_data( 'DomainPath' )
66 + );
67 +}
68 +
69 +/**
70 + * Exclude the Super Admin of Multisite.
71 + *
72 + * @return bool
73 + */
74 +function _mw_adminimize_exclude_super_admin() {
75 +
76 + if ( ! function_exists( 'is_super_admin' ) ) {
77 + return FALSE;
78 + }
79 +
80 + if ( ! is_super_admin() ) {
81 + return FALSE;
82 + }
83 +
84 + if ( 1 === (int) _mw_adminimize_get_option_value( '_mw_adminimize_exclude_super_admin' ) ) {
85 + return TRUE;
86 + }
87 +
88 + return FALSE;
89 +}
90 +
91 +/**
92 + * Get the status, if is on the settings page.
93 + *
94 + * @return bool
95 + */
96 +function _mw_adminimize_exclude_settings_page() {
97 +
98 + if ( ! is_admin() ) {
99 + return false;
100 + }
101 +
102 + if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
103 + return false;
104 + }
105 +
106 + $page = '';
107 + if ( isset( $_GET['page'] ) ) {
108 + $page = esc_attr( $_GET['page'] );
109 + }
110 +
111 + if ( function_exists( 'get_current_screen' ) ) {
112 + $screen_tmp = get_current_screen();
113 +
114 + if ( isset( $screen_tmp->id ) && null !== $screen_tmp->id ) {
115 + $page = $screen_tmp->id;
40 116 }
41 117 }
118 +
119 + // Don't filter on settings page
120 + return FALSE !== strpos( $page, 'adminimize' );
42 121 }
43 122
44 -
45 123 /**
46 - * some basics for message
124 + * Get status, if the plugin active network wide.
125 + *
126 + * @return bool
47 127 */
48 -class _mw_adminimize_message_class {
49 - function _mw_adminimize_message_class() {
50 - $this->localizionName = 'adminimize';
51 - $this->errors = new WP_Error();
52 - $this->initialize_errors();
128 +function _mw_adminimize_is_active_on_multisite() {
129 +
130 + if ( ! function_exists( 'is_plugin_active_for_network' ) ) {
131 + require_once ABSPATH . '/wp-admin/includes/plugin.php';
53 132 }
54 -
133 +
55 134 /**
56 - get_error - Returns an error message based on the passed code
57 - Parameters - $code (the error code as a string)
58 - Returns an error message
59 - */
60 - function get_error($code = '') {
61 - $errorMessage = $this->errors->get_error_message($code);
62 - if ($errorMessage == null) {
63 - return __("Unknown error.", $this->localizionName);
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 ) {
146 + return TRUE;
147 + }
148 +
149 + return FALSE;
150 +}
151 +
152 +/**
153 + * Returns an array with all user roles(names) in it.
154 + * Inclusive self defined roles (for example with the 'Role Manager' plugin).
155 + *
156 + * @uses $wp_roles
157 + * @return array $user_roles
158 + */
159 +function _mw_adminimize_get_all_user_roles() {
160 +
161 + /** @var $wp_roles WP_Roles */
162 + global $wp_roles;
163 +
164 + $user_roles = array();
165 +
166 + if ( null !== $wp_roles->roles && is_array( $wp_roles->roles ) ) {
167 + foreach ( $wp_roles->roles as $role => $data ) {
168 + $user_roles[] = $role;
169 + // The $data var contains caps, maybe for later use.
64 170 }
65 - return $errorMessage;
66 171 }
67 -
68 - // Initializes all the error messages
69 - function initialize_errors() {
70 - $this->errors->add('_mw_adminimize_update', __('The updates was saved.', $this->localizionName));
71 - $this->errors->add('_mw_adminimize_access_denied', __('You have not enough rights for edit entries in the database.', $this->localizionName));
72 - $this->errors->add('_mw_adminimize_deinstall', __('All entries in the database was delleted.', $this->localizionName));
73 - $this->errors->add('_mw_adminimize_deinstall_yes', __('Set the checkbox on deinstall-button.', $this->localizionName));
74 - $this->errors->add('_mw_adminimize_get_option', __('Can\'t load menu and submenu.', $this->localizionName));
75 - $this->errors->add('_mw_adminimize_set_theme', __('Backend-Theme was activated!', $this->localizionName));
172 +
173 + // Exclude the new bbPress roles.
174 + if ( ! _mw_adminimize_get_option_value( 'mw_adminimize_support_bbpress' ) ) {
175 + $user_roles = array_diff(
176 + $user_roles,
177 + array( 'bbp_keymaster', 'bbp_moderator', 'bbp_participant', 'bbp_spectator', 'bbp_blocked' )
178 + );
76 179 }
180 +
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 );
77 189 }
78 190
79 -
80 191 /**
81 - * check user-option and add new style
82 - * @uses $pagenow
192 + * _mw_adminimize_get_all_user_roles_names() - Returns an array with all user roles_names in it.
193 + * Inclusive self defined roles (for example with the 'Role Manager' plugin).
194 + *
195 + * @uses $wp_roles
196 + * @return array $user_roles_names
83 197 */
84 -function _mw_adminimize_init() {
85 - global $pagenow, $menu, $submenu, $adminimizeoptions;
198 +function _mw_adminimize_get_all_user_roles_names() {
86 199
87 - $adminimizeoptions = get_option('mw_adminimize');
200 + /** @var $wp_roles WP_Roles */
201 + global $wp_roles;
202 + $user_roles_names = array();
88 203
89 - $disabled_metaboxes_post = _mw_adminimize_getOptionValue('mw_adminimize_disabled_metaboxes_post_items');
90 - $disabled_metaboxes_page = _mw_adminimize_getOptionValue('mw_adminimize_disabled_metaboxes_page_items');
91 - $disabled_metaboxes_post_adm = _mw_adminimize_getOptionValue('mw_adminimize_disabled_metaboxes_post_adm_items');
92 - $disabled_metaboxes_page_adm = _mw_adminimize_getOptionValue('mw_adminimize_disabled_metaboxes_page_adm_items');
204 + foreach ( $wp_roles->role_names as $role_name => $data ) {
93 205
94 - $_mw_admin_color = get_user_option('admin_color');
206 + $data = translate_user_role( $data );
207 + $user_roles_names[] = $data;
208 + }
95 209
96 - if ( ('post-new.php' == $pagenow) || ('post.php' == $pagenow) || ('page-new.php' == $pagenow) || ('page.php' == $pagenow) ) {
97 -
98 - $_mw_adminimize_writescroll = _mw_adminimize_getOptionValue('_mw_adminimize_writescroll');
99 - switch ($_mw_adminimize_writescroll) {
100 - case 1:
101 - wp_enqueue_script('_mw_adminimize_writescroll', WP_PLUGIN_URL . '/' . plugin_basename( dirname(__FILE__) ) . '/js/writescroll.js', array('jquery'));
102 - break;
103 - }
104 - $_mw_adminimize_tb_window = _mw_adminimize_getOptionValue('_mw_adminimize_tb_window');
105 - switch ($_mw_adminimize_tb_window) {
106 - case 1:
107 - wp_deregister_script('media-upload');
108 - wp_enqueue_script('media-upload', WP_PLUGIN_URL . '/' . plugin_basename( dirname(__FILE__) ) . '/js/tb_window.js', array('thickbox'));
109 - break;
110 - }
111 -
112 - //add_filter('image_downsize', '_mw_adminimize_image_downsize', 1, 3);
210 + // exclude the new bbPress roles
211 + if ( ! _mw_adminimize_get_option_value( 'mw_adminimize_support_bbpress' ) ) {
212 + $user_roles_names = array_diff(
213 + $user_roles_names,
214 + array(
215 + esc_attr__( 'Keymaster', 'bbpress' ),
216 + esc_attr__( 'Moderator', 'bbpress' ),
217 + esc_attr__( 'Participant', 'bbpress' ),
218 + esc_attr__( 'Spectator', 'bbpress' ),
219 + esc_attr__( 'Blocked', 'bbpress' ),
220 + )
221 + );
113 222 }
114 223
115 - if ( ($_mw_admin_color == 'mw_fresh') ||
116 - ($_mw_admin_color == 'mw_classic') ||
117 - ($_mw_admin_color == 'mw_colorblind') ||
118 - ($_mw_admin_color == 'mw_grey') ||
119 - ($_mw_admin_color == 'mw_fresh_ozh_am') ||
120 - ($_mw_admin_color == 'mw_classic_ozh_am') ||
121 - ($_mw_admin_color == 'mw_fresh_lm') ||
122 - ($_mw_admin_color == 'mw_classic_lm') ||
123 - ($_mw_admin_color == 'mw_wp23')
124 - ) {
125 - if ( ($_mw_admin_color == 'mw_fresh') ||
126 - ($_mw_admin_color == 'mw_classic') ||
127 - ($_mw_admin_color == 'mw_colorblind') ||
128 - ($_mw_admin_color == 'mw_grey') ||
129 - ($_mw_admin_color == 'mw_wp23')
130 - ) {
131 - add_action('admin_head', '_mw_adminimize_adminmenu', 1);
132 - }
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 );
232 +}
133 233
134 - if ( ('post-new.php' == $pagenow) || ('post.php' == $pagenow) ) {
135 - add_action('admin_head', '_mw_adminimize_remove_box', 99);
136 -
137 - // check for array empty
138 - if ( !isset($disabled_metaboxes_post['0']) )
139 - $disabled_metaboxes_post['0'] = '';
140 - if ( isset($disabled_metaboxes_post_adm['0']) )
141 - $disabled_metaboxes_post_adm['0'] = '';
142 - if ( !in_array('#categorydivsb', $disabled_metaboxes_post) || !in_array('#categorydivsb', $disabled_metaboxes_post_adm) )
143 - add_action('submitpost_box', '_mw_adminimize_sidecat_list_category_box');
144 - if ( !in_array('#tagsdivsb', $disabled_metaboxes_post) || !in_array('#tagsdivsb', $disabled_metaboxes_post_adm) )
145 - add_action('submitpost_box', '_mw_adminimize_sidecat_list_tag_box');
146 - if ( in_array('media_buttons', $disabled_metaboxes_post) || in_array('media_buttons', $disabled_metaboxes_post_adm) )
147 - remove_action('media_buttons', 'media_buttons');
148 - }
234 +/**
235 + * Get post type.
236 + *
237 + * @return null|string String of the post type.
238 + */
239 +function _mw_adminimize_get_current_post_type() {
149 240
150 - if ( ('page-new.php' == $pagenow) || ('page.php' == $pagenow) ) {
151 -
152 - // check for array empty
153 - if ( !isset($disabled_metaboxes_page['0']) )
154 - $disabled_metaboxes_page['0'] = '';
155 - if ( isset($disabled_metaboxes_page_adm['0']) )
156 - $disabled_metaboxes_page_adm['0'] = '';
157 - if ( in_array('media_buttons', $disabled_metaboxes_page) || in_array('media_buttons', $disabled_metaboxes_page_adm) )
158 - remove_action('media_buttons', 'media_buttons');
159 - }
241 + global $post, $typenow, $current_screen;
160 242
243 + // We have a post so we can just get the post type from that.
244 + if ( $post && $post->post_type ) {
245 + return $post->post_type;
161 246 }
162 247
163 - if ( ('post-new.php' == $pagenow) || ('page-new.php' == $pagenow) || ('page.php' == $pagenow) || ('post.php' == $pagenow) ) {
164 -
165 - // set user option in edit-area
166 - add_action('admin_head', '_mw_adminimize_set_user_option_edit');
167 - }
168 -
169 - if ( basename($_SERVER['REQUEST_URI']) == 'adminimize.php') {
170 - wp_enqueue_script('_mw_adminimize', WP_PLUGIN_URL . '/' . plugin_basename( dirname(__FILE__) ) . '/js/adminimize.js', array('jquery'));
248 + // Check the global $typenow - set in admin.php
249 + if ( $typenow ) {
250 + return $typenow;
171 251 }
172 252
173 - // set menu option
174 - add_action('admin_head', '_mw_adminimize_set_menu_option', 1);
253 + // Check the global $current_screen object - set in screen.php
254 + if ( $current_screen && $current_screen->post_type ) {
255 + return $current_screen->post_type;
256 + }
175 257
176 - // set metabox option
177 - add_action('admin_head', '_mw_adminimize_set_metabox_option', 1);
258 + // lastly check the post_type querystring
259 + if ( isset( $_REQUEST['post_type'] ) ) {
260 + return sanitize_key( $_REQUEST[ 'post_type' ] );
261 + }
178 262
179 - add_action('in_admin_footer', '_mw_adminimize_admin_footer');
180 -
181 - $adminimizeoptions['mw_adminimize_default_menu'] = $menu;
182 - $adminimizeoptions['mw_adminimize_default_submenu'] = $submenu;
263 + // we do not know the post type!
264 + return NULL;
183 265 }
184 266
185 -add_action('init', '_mw_adminimize_textdomain');
186 -if ( is_admin() ) {
187 -
188 - add_action('admin_menu', '_mw_adminimize_add_settings_page');
189 - add_action('admin_menu', '_mw_adminimize_remove_dashboard');
190 - add_action('admin_init', '_mw_adminimize_init', 1);
191 - add_action('admin_init', '_mw_adminimize_admin_styles', 1);
192 -}
267 +/**
268 + * Check user-option and add new style.
269 + */
270 +function _mw_adminimize_admin_init() {
193 271
272 + global $pagenow, $post_type, $menu, $submenu;
194 273
195 -register_activation_hook(__FILE__, '_mw_adminimize_install');
196 -//register_deactivation_hook(__FILE__, '_mw_adminimize_deinstall');
274 + $post_id = 0;
275 + if ( isset( $_GET[ 'post' ] ) && ! is_array( $_GET[ 'post' ] ) ) {
276 + $post_id = (int) esc_attr( $_GET[ 'post' ] );
277 + } elseif ( isset( $_POST[ 'post_ID' ] ) ) {
278 + $post_id = (int) esc_attr( $_POST[ 'post_ID' ] );
279 + }
197 280
281 + $current_post_type = $post_type;
282 + if ( ! isset( $current_post_type ) || empty( $current_post_type ) ) {
283 + $current_post_type = get_post_type( $post_id );
284 + }
285 + if ( ! isset( $current_post_type ) || empty( $current_post_type ) ) {
286 + $current_post_type = _mw_adminimize_get_current_post_type();
287 + }
288 + if ( ! $current_post_type ) { // set hard to post
289 + $current_post_type = 'post';
290 + }
198 291
199 -/**
200 - * Uses WordPress filter for image_downsize, kill wp-image-dimension
201 - * code by Andrew Rickmann
202 - * http://www.wp-fun.co.uk/
203 - * @param $value, $id, $size
204 - */
205 -function _mw_adminimize_image_downsize($value = false,$id = 0, $size = "medium") {
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 + }
206 298
207 - if ( !wp_attachment_is_image($id) )
208 - return false;
209 -
210 - $img_url = wp_get_attachment_url($id);
211 - // Mimic functionality in image_downsize function in wp-includes/media.php
212 - if ( $intermediate = image_get_intermediate_size($id, $size) ) {
213 - $img_url = str_replace(basename($img_url), $intermediate['file'], $img_url);
299 + // Get all user roles.
300 + $user_roles = _mw_adminimize_get_all_user_roles();
301 +
302 + // Get settings.
303 + $adminimizeoptions = _mw_adminimize_get_option_value();
304 +
305 + // pages for post type Post
306 + $def_post_pages = array( 'edit.php', 'post.php', 'post-new.php' );
307 + $def_post_types = array( 'post' );
308 + $disabled_metaboxes_post_all = array();
309 + // pages for post type Page
310 + $def_page_pages = array_merge( $def_post_pages, array( 'page-new.php', 'page.php' ) );
311 + $def_page_types = array( 'page' );
312 + $disabled_metaboxes_page_all = array();
313 + // pages for custom post types
314 + $def_custom_pages = $def_post_pages;
315 + $args = array( 'public' => TRUE, '_builtin' => FALSE );
316 + $def_custom_types = get_post_types( $args );
317 + // pages for link pages
318 + $link_pages = array( 'link.php', 'link-manager.php', 'link-add.php', 'edit-link-categories.php' );
319 + // pages for nav menu
320 + $nav_menu_pages = array( 'nav-menus.php' );
321 + // widget pages
322 + $widget_pages = array( 'widgets.php' );
323 +
324 + foreach ( $user_roles as $role ) {
325 + $disabled_admin_bar_[ $role ] = _mw_adminimize_get_option_value(
326 + 'mw_adminimize_disabled_admin_bar_' . $role . '_items'
327 + );
328 + $disabled_global_option_[ $role ] = _mw_adminimize_get_option_value(
329 + 'mw_adminimize_disabled_global_option_' . $role . '_items'
330 + );
331 + $disabled_metaboxes_post_[ $role ] = _mw_adminimize_get_option_value(
332 + 'mw_adminimize_disabled_metaboxes_post_' . $role . '_items'
333 + );
334 + $disabled_metaboxes_page_[ $role ] = _mw_adminimize_get_option_value(
335 + 'mw_adminimize_disabled_metaboxes_page_' . $role . '_items'
336 + );
337 + foreach ( $def_custom_types as $post_type ) {
338 + $disabled_metaboxes_[ $post_type . '_' . $role ] = _mw_adminimize_get_option_value(
339 + 'mw_adminimize_disabled_metaboxes_' . $post_type . '_' . $role . '_items'
340 + );
341 + }
342 + $disabled_link_option_[ $role ] = _mw_adminimize_get_option_value(
343 + 'mw_adminimize_disabled_link_option_' . $role . '_items'
344 + );
345 + $disabled_nav_menu_option_[ $role ] = _mw_adminimize_get_option_value(
346 + 'mw_adminimize_disabled_nav_menu_option_' . $role . '_items'
347 + );
348 + $disabled_widget_option_[ $role ] = _mw_adminimize_get_option_value(
349 + 'mw_adminimize_disabled_widget_option_' . $role . '_items'
350 + );
351 + $disabled_metaboxes_post_all[] = $disabled_metaboxes_post_[ $role ];
352 + $disabled_metaboxes_page_all[] = $disabled_metaboxes_page_[ $role ];
214 353 }
215 - elseif ( $size == 'thumbnail' ) {
216 - // fall back to the old thumbnail
217 - if ( $thumb_file = wp_get_attachment_thumb_file() && $info = getimagesize($thumb_file) ) {
218 - $img_url = str_replace(basename($img_url), basename($thumb_file), $img_url);
354 +
355 + $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
356 +
357 + // Backend options
358 + // exclude super admin
359 + if ( ! _mw_adminimize_exclude_super_admin() && ! _mw_adminimize_exclude_settings_page() ) {
360 + $_mw_adminimize_header = (int) _mw_adminimize_get_option_value( '_mw_adminimize_header' );
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 + );
219 367 }
368 +
369 + // Post-page options.
370 + if ( in_array( $pagenow, $def_post_pages, TRUE ) ) {
371 +
372 + $_mw_adminimize_tb_window = (int) _mw_adminimize_get_option_value( '_mw_adminimize_tb_window' );
373 + switch ( $_mw_adminimize_tb_window ) {
374 + case 1:
375 + wp_deregister_script( 'media-upload' );
376 + wp_enqueue_script(
377 + 'media-upload',
378 + WP_PLUGIN_URL . '/' . FB_ADMINIMIZE_BASEFOLDER . '/js/tb_window' . $suffix . '.js',
379 + array( 'thickbox' )
380 + );
381 + break;
382 + }
383 + $_mw_adminimize_timestamp = (int) _mw_adminimize_get_option_value( '_mw_adminimize_timestamp' );
384 + switch ( $_mw_adminimize_timestamp ) {
385 + case 1:
386 + wp_enqueue_script(
387 + '_mw_adminimize_timestamp',
388 + WP_PLUGIN_URL . '/' . FB_ADMINIMIZE_BASEFOLDER . '/js/timestamp' . $suffix . '.js',
389 + array( 'jquery' )
390 + );
391 + break;
392 + }
393 +
394 + // Category options.
395 + $_mw_adminimize_cat_full = (int) _mw_adminimize_get_option_value( '_mw_adminimize_cat_full' );
396 + switch ( $_mw_adminimize_cat_full ) {
397 + case 1:
398 + wp_enqueue_style(
399 + 'adminimize-full-category',
400 + WP_PLUGIN_URL . '/' . FB_ADMINIMIZE_BASEFOLDER . '/css/mw_cat_full' . $suffix . '.css'
401 + );
402 + break;
403 + }
404 +
405 + // Set default editor tinymce
406 + if ( _mw_adminimize_recursive_in_array(
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 + )
414 + ) {
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 + }
425 + }
426 +
427 + // Remove media buttons
428 + if ( _mw_adminimize_recursive_in_array( 'media_buttons', $disabled_metaboxes_page_all )
429 + || _mw_adminimize_recursive_in_array( 'media_buttons', $disabled_metaboxes_post_all )
430 + ) {
431 + remove_action( 'media_buttons', 'media_buttons' );
432 + }
433 + }
220 434 }
221 - if ( $img_url)
222 - return array($img_url, 0, 0);
223 - return false;
435 +
436 + // set meta-box post option
437 + if ( in_array( $pagenow, $def_post_pages, TRUE ) && in_array( $current_post_type, $def_post_types, TRUE ) ) {
438 + add_action( 'admin_head', '_mw_adminimize_set_metabox_post_option', 1 );
439 + }
440 + // set meta-box page option
441 + if ( in_array( $pagenow, $def_page_pages, TRUE ) && in_array( $current_post_type, $def_page_types, TRUE ) ) {
442 + add_action( 'admin_head', '_mw_adminimize_set_metabox_page_option', 1 );
443 + }
444 + // set custom post type options
445 + if ( function_exists( 'get_post_types' ) && in_array( $pagenow, $def_custom_pages, TRUE )
446 + && in_array( $current_post_type, $def_custom_types, TRUE )
447 + ) {
448 + add_action( 'admin_head', '_mw_adminimize_set_metabox_cp_option', 1 );
449 + }
450 + // set link option
451 + if ( in_array( $pagenow, $link_pages, TRUE ) ) {
452 + add_action( 'admin_head', '_mw_adminimize_set_link_option', 1 );
453 + }
454 + // set wp nav menu options
455 + if ( in_array( $pagenow, $nav_menu_pages, TRUE ) ) {
456 + add_action( 'admin_head', '_mw_adminimize_set_nav_menu_option', 1 );
457 + }
458 + // set widget options
459 + if ( in_array( $pagenow, $widget_pages, TRUE ) ) {
460 + add_action( 'admin_head', '_mw_adminimize_set_widget_option', 1 );
461 + }
224 462 }
225 463
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 );
226 467
468 +// global_options
469 +add_action( 'admin_head', '_mw_adminimize_set_global_option', 1 );
470 +// on admin init
471 +if ( is_admin() ) {
472 + add_action( 'admin_init', '_mw_adminimize_admin_init' );
473 + add_action( 'admin_menu', '_mw_adminimize_add_settings_page' );
474 + add_action( 'admin_menu', '_mw_adminimize_remove_dashboard' );
475 +}
476 +
477 +register_activation_hook( __FILE__, '_mw_adminimize_install' );
478 +register_uninstall_hook( __FILE__, '_mw_adminimize_uninstall' );
479 +
227 480 /**
228 - * list category-box in sidebar
229 - * @uses $post_ID
481 + * Remove the dashboard
230 482 */
231 -function _mw_adminimize_sidecat_list_category_box() {
232 - global $post_ID;
233 - ?>
483 +function _mw_adminimize_remove_dashboard() {
234 484
235 - <div class="inside" id="categorydivsb">
236 - <p><strong><?php _e("Categories"); ?></strong></p>
237 - <ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
238 - <?php wp_category_checklist($post_ID); ?>
239 - </ul>
240 - <?php if ( !defined('WP_PLUGIN_DIR') ) { // for wp <2.6 ?>
241 - <div id="category-adder" class="wp-hidden-children">
242 - <h4><a id="category-add-toggle" href="#category-add" class="hide-if-no-js" tabindex="3"><?php _e( '+ Add New Category' ); ?></a></h4>
243 - <p id="category-add" class="wp-hidden-child">
244 - <input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php _e( 'New category name' ); ?>" tabindex="3" />
245 - <?php wp_dropdown_categories( array( 'hide_empty' => 0, 'name' => 'newcat_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => __('Parent category'), 'tab_index' => 3 ) ); ?>
246 - <input type="button" id="category-add-sumbit" class="add:categorychecklist:category-add button" value="<?php _e( 'Add' ); ?>" tabindex="3" />
247 - <?php wp_nonce_field( 'add-category', '_ajax_nonce', false ); ?>
248 - <span id="category-ajax-response"></span>
249 - </p>
250 - </div>
251 - <?php } else { ?>
252 - <div id="category-adder" class="wp-hidden-children">
253 - <h4><a id="category-add-toggle" href="#category-add" class="hide-if-no-js" tabindex="3"><?php _e( '+ Add New Category' ); ?></a></h4>
254 - <p id="category-add" class="wp-hidden-child">
255 - <label class="hidden" for="newcat"><?php _e( 'Add New Category' ); ?></label><input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php _e( 'New category name' ); ?>" tabindex="3" aria-required="true"/>
256 - <br />
257 - <label class="hidden" for="newcat_parent"><?php _e('Parent category'); ?>:</label><?php wp_dropdown_categories( array( 'hide_empty' => 0, 'name' => 'newcat_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => __('Parent category'), 'tab_index' => 3 ) ); ?>
258 - <input type="button" id="category-add-sumbit" class="add:categorychecklist:category-add button" value="<?php _e( 'Add' ); ?>" tabindex="3" />
259 - <?php wp_nonce_field( 'add-category', '_ajax_nonce', false ); ?>
260 - <span id="category-ajax-response"></span>
261 - </p>
262 - </div>
263 - <?php } ?>
264 - </div>
265 -<?php
266 -}
485 + // exclude super admin
486 + if ( _mw_adminimize_exclude_super_admin() ) {
487 + return;
488 + }
267 489
490 + // Leave the settings screen from Adminimize to see all areas on settings.
491 + if ( _mw_adminimize_exclude_settings_page() ) {
492 + return;
493 + }
268 494
269 -/**
270 - * list tag-box in sidebar
271 - * @uses $post_ID
272 - */
273 -function _mw_adminimize_sidecat_list_tag_box() {
274 - global $post_ID;
495 + global $menu, $user_ID;
275 496
276 - if ( !class_exists('SimpleTagsAdmin') ) {
277 - ?>
278 - <div class="inside" id="tagsdivsb">
279 - <p><strong><?php _e('Tags'); ?></strong></p>
280 - <p id="jaxtag"><label class="hidden" for="newtag"><?php _e('Tags'); ?></label><input type="text" name="tags_input" class="tags-input" id="tags-input" size="40" tabindex="3" value="<?php echo get_tags_to_edit($post_ID); ?>" /></p>
281 - <div id="tagchecklist"></div>
282 - </div>
283 - <?php
497 + $disabled_menu_ = array();
498 + $disabled_submenu_ = array();
499 + $user_roles = _mw_adminimize_get_all_user_roles();
500 +
501 + foreach ( $user_roles as $role ) {
502 + $disabled_menu_[ $role ] = (array) _mw_adminimize_get_option_value(
503 + 'mw_adminimize_disabled_menu_' . $role . '_items'
504 + );
505 + $disabled_submenu_[ $role ] = (array) _mw_adminimize_get_option_value(
506 + 'mw_adminimize_disabled_submenu_' . $role . '_items'
507 + );
284 508 }
285 -}
286 509
510 + $disabled_menu_all = array();
511 + $disabled_submenu_all = array();
287 512
288 -/**
289 - * remove default categorydiv
290 - * @echo script
291 - */
292 -function _mw_adminimize_remove_box() {
293 -
294 - if ( function_exists('remove_meta_box') ) {
295 - if ( !class_exists('SimpleTagsAdmin') )
296 - remove_meta_box('tagsdiv', 'post', 'normal');
297 - remove_meta_box('categorydiv', 'post', 'normal');
298 - } else {
299 - $_mw_adminimize_sidecat_admin_head = "\n" . '<script type="text/javascript">' . "\n";
300 - $_mw_adminimize_sidecat_admin_head .= "\t" . 'jQuery(document).ready(function() { jQuery(\'#categorydiv\').remove(); });' . "\n";
301 - $_mw_adminimize_sidecat_admin_head .= "\t" . 'jQuery(document).ready(function() { jQuery(\'#tagsdiv\').remove(); });' . "\n";
302 - $_mw_adminimize_sidecat_admin_head .= '</script>' . "\n";
513 + foreach ( $user_roles as $role ) {
514 + $disabled_menu_all[] = $disabled_menu_[ $role ];
515 + $disabled_submenu_all[] = $disabled_submenu_[ $role ];
516 + }
303 517
304 - print($_mw_adminimize_sidecat_admin_head);
518 + // remove dashboard
519 + if ( $disabled_menu_all !== '' || $disabled_submenu_all !== '' ) {
520 +
521 + $redirect = FALSE;
522 + foreach ( $user_roles as $role ) {
523 + if ( _mw_adminimize_current_user_has_role( $role ) ) {
524 + if ( _mw_adminimize_recursive_in_array( 'index.php', $disabled_menu_[ $role ] )
525 + || _mw_adminimize_recursive_in_array( 'index.php', $disabled_submenu_[ $role ] )
526 + ) {
527 + $redirect = TRUE;
528 + }
529 + }
530 + }
531 +
532 + // Redirect option, if Dashboard is inactive
533 + if ( $redirect ) {
534 + $_mw_adminimize_db_redirect = (int) _mw_adminimize_get_option_value(
535 + '_mw_adminimize_db_redirect'
536 + );
537 + $_mw_adminimize_db_redirect_admin_url = get_option( 'siteurl' ) . '/wp-admin/';
538 + switch ( $_mw_adminimize_db_redirect ) {
539 + case 0:
540 + $_mw_adminimize_db_redirect = $_mw_adminimize_db_redirect_admin_url . 'profile.php';
541 + break;
542 + case 1:
543 + $_mw_adminimize_db_redirect = $_mw_adminimize_db_redirect_admin_url . 'edit.php';
544 + break;
545 + case 2:
546 + $_mw_adminimize_db_redirect = $_mw_adminimize_db_redirect_admin_url . 'edit.php?post_type=page';
547 + break;
548 + case 3:
549 + $_mw_adminimize_db_redirect = $_mw_adminimize_db_redirect_admin_url . 'post-new.php';
550 + break;
551 + case 4:
552 + $_mw_adminimize_db_redirect = $_mw_adminimize_db_redirect_admin_url . 'page-new.php';
553 + break;
554 + case 5:
555 + $_mw_adminimize_db_redirect = $_mw_adminimize_db_redirect_admin_url . 'edit-comments.php';
556 + break;
557 + case 6:
558 + $_mw_adminimize_db_redirect = _mw_adminimize_get_option_value( '_mw_adminimize_db_redirect_txt' );
559 + break;
560 + }
561 +
562 + $the_user = new WP_User( $user_ID );
563 + reset( $menu );
564 + $page = key( $menu );
565 +
566 + $dashboard_core_string = esc_attr__( 'Dashboard' );
567 + $dashboard = array( $menu[ $page ][ 0 ], $menu[ $page ][ 1 ] );
568 + while (
569 + ! in_array( $dashboard_core_string, $dashboard, TRUE ) && next( $menu )
570 + ) {
571 + $page = key( $menu );
572 + }
573 +
574 + if ( in_array( $dashboard_core_string, $dashboard, TRUE ) ) {
575 + unset( $menu[ $page ] );
576 + }
577 + reset( $menu );
578 + $page = key( $menu );
579 +
580 + while ( ! $the_user->has_cap( $menu[ $page ][ 1 ] ) && next( $menu ) ) {
581 + $page = key( $menu );
582 + }
583 +
584 + if ( preg_match( '#wp-admin/?(index.php)?$#', $_SERVER[ 'REQUEST_URI' ] ) ) {
585 + wp_safe_redirect( $_mw_adminimize_db_redirect );
586 + }
587 + }
305 588 }
306 589 }
307 590
308 -
309 591 /**
310 - * reorder admin-menu
311 - * @uses $menu
312 - * @param $file
592 + * Set menu for settings
313 593 */
314 -function _mw_adminimize_adminmenu($file) {
315 - global $menu;
316 -
317 - $menu[7] = $menu[5];
318 - $menu[5] = $menu[0];
319 - $menu[32] = $menu[40];
320 - $menu[40] = $menu[35];
321 - $menu[35] = $menu[30];
322 - $menu[30] = $menu[15];
323 - unset($menu[0]);
324 - unset($menu[15]);
325 -}
594 +function _mw_adminimize_set_menu_option() {
326 595
596 + // exclude super admin
597 + if ( _mw_adminimize_exclude_super_admin() ) {
598 + return;
599 + }
327 600
328 -/**
329 - * add new adminstyle to usersettings
330 - * @param $file
331 - */
332 -function _mw_adminimize_admin_styles($file) {
333 -
334 - $_mw_adminimize_path = WP_PLUGIN_URL . '/' . plugin_basename( dirname(__FILE__) ) . '/css/';
601 + // Leave the settings screen from Adminimize to see all areas on settings.
602 + if ( _mw_adminimize_exclude_settings_page() ) {
603 + return;
604 + }
335 605
336 - // MW Adminimize Classic
337 - $styleName = 'MW Adminimize:' . ' ' . __('Classic');
338 - wp_admin_css_color (
339 - 'mw_classic', $styleName, $_mw_adminimize_path . 'mw_classic.css',
340 - array('#07273E', '#14568A', '#D54E21', '#2683AE')
341 - );
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' );
342 609
343 - // MW Adminimize Fresh
344 - $styleName = 'MW Adminimize:' . ' ' . __('Fresh');
345 - wp_admin_css_color (
346 - 'mw_fresh', $styleName, $_mw_adminimize_path . 'mw_fresh.css',
347 - array('#464646', '#CEE1EF', '#D54E21', '#2683AE')
348 - );
610 + // Object to array
611 + if ( is_object( $wp_submenu ) ) {
612 + $wp_submenu = get_object_vars( $wp_submenu );
613 + }
349 614
350 - // MW Adminimize WordPress 2.3
351 - $styleName = 'MW Adminimize:' . ' ' . __('WordPress 2.3');
352 - wp_admin_css_color (
353 - 'mw_wp23', $styleName, $_mw_adminimize_path . 'mw_wp23.css',
354 - array('#000000', '#14568A', '#448ABD', '#83B4D8')
355 - );
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 + }
621 + if ( ! isset( $menu ) || empty( $menu ) ) {
622 + return;
623 + }
356 624
357 - // MW Adminimize Colorblind
358 - $styleName = 'MW Adminimize:' . ' ' . __('Maybe i\'m colorblind');
359 - wp_admin_css_color (
360 - 'mw_colorblind', $styleName, $_mw_adminimize_path . 'mw_colorblind.css',
361 - array('#FF9419', '#F0720C', '#710001', '#550007', '#CF4529')
362 - );
625 + _mw_adminimize_debug( $wp_menu, 'Adminimize, WordPress Menu:' );
626 + _mw_adminimize_debug( $wp_submenu, 'Adminimize, WordPress Sub-Menu:' );
363 627
364 - // MW Adminimize Grey
365 - $styleName = 'MW Adminimize:' . ' ' . __('Grey');
366 - wp_admin_css_color (
367 - 'mw_grey', $styleName, $_mw_adminimize_path . 'mw_grey.css',
368 - array('#000000', '#787878', '#F0F0F0', '#D8D8D8', '#909090')
369 - );
628 + $disabled_menu_ = array();
629 + $disabled_submenu_ = array();
630 + $user = wp_get_current_user();
631 + $user_roles = $user->roles;
632 + _mw_adminimize_debug( $user, 'Adminimize, Current User:' );
370 633
371 - /**
372 - * style and changes for plugin Admin Drop Down Menu
373 - * by Ozh
374 - * http://planetozh.com/blog/my-projects/wordpress-admin-menu-drop-down-css/
375 - */
376 - if ( function_exists('wp_ozh_adminmenu') ) {
377 -
378 - // MW Adminimize Classic include ozh adminmenu
379 - $styleName = 'MW Adminimize inc. Admin Drop Down Menu' . ' ' . __('Classic');
380 - wp_admin_css_color (
381 - 'mw_classic_ozh_am', $styleName, $_mw_adminimize_path . 'mw_classic_ozh_am.css',
382 - array('#07273E', '#14568A', '#D54E21', '#2683AE')
634 + foreach ( $user_roles as $role ) {
635 + $disabled_menu_[ $role ] = (array) _mw_adminimize_get_option_value(
636 + 'mw_adminimize_disabled_menu_' . $role . '_items'
383 637 );
384 -
385 - // MW Adminimize Fresh include ozh adminmenu
386 - $styleName = 'MW Adminimize inc. Admin Drop Down Menu' . ' ' . __('Fresh');
387 - wp_admin_css_color (
388 - 'mw_fresh_ozh_am', $styleName, $_mw_adminimize_path . 'mw_fresh_ozh_am.css',
389 - array('#464646', '#CEE1EF', '#D54E21', '#2683AE')
638 + $disabled_submenu_[ $role ] = (array) _mw_adminimize_get_option_value(
639 + 'mw_adminimize_disabled_submenu_' . $role . '_items'
390 640 );
391 -
392 641 }
393 -
394 - /**
395 - * style and changes for plugin Lighter Menus
396 - * by corpodibacco
397 - * http://www.italyisfalling.com/lighter-menus
398 - */
399 - if ( function_exists('lm_build') ) {
400 -
401 - // MW Adminimize Classic include Lighter Menus
402 - $styleName = 'MW Adminimize inc. Lighter Menus' . ' ' . __('Classic');
403 - wp_admin_css_color (
404 - 'mw_classic_lm', $styleName, $_mw_adminimize_path . 'mw_classic_lm.css',
405 - array('#07273E', '#14568A', '#D54E21', '#2683AE')
406 - );
407 -
408 - // MW Adminimize Fresh include Lighter Menus
409 - $styleName = 'MW Adminimize inc. Lighter Menus' . ' ' . __('Fresh');
410 - wp_admin_css_color (
411 - 'mw_fresh_lm', $styleName, $_mw_adminimize_path . 'mw_fresh_lm.css',
412 - array('#464646', '#CEE1EF', '#D54E21', '#2683AE')
413 - );
414 -
642 +
643 + $mw_adminimize_menu = array();
644 + $mw_adminimize_submenu = array();
645 +
646 + // Set admin-menu.
647 + foreach ( $user_roles as $role ) {
648 + if ( in_array( $role, $user->roles, TRUE )
649 + && _mw_adminimize_current_user_has_role( $role )
650 + ) {
651 + // Create array about all items with all affected roles.
652 + foreach ( (array) $disabled_menu_[ $role ] as $menu_item ) {
653 + $mw_adminimize_menu[] = $menu_item;
654 + }
655 + foreach ( (array) $disabled_submenu_[ $role ] as $submenu_item ) {
656 + $mw_adminimize_submenu[] = $submenu_item;
657 + }
658 + }
415 659 }
416 -}
417 660
661 + // Support Multiple Roles for users.
662 + // Leave only the items, there are active on each roles of the users.
663 + if ( _mw_adminimize_get_option_value( 'mw_adminimize_multiple_roles' ) && 1 < count( $user->roles ) ) {
664 + $mw_adminimize_menu = _mw_adminimize_get_intersection( $disabled_menu_ );
665 + $mw_adminimize_submenu = _mw_adminimize_get_intersection( $disabled_submenu_ );
666 + } else {
667 + // Alternative filter the array to remove duplicates, much faster.
668 + $mw_adminimize_menu = array_unique( $mw_adminimize_menu );
669 + $mw_adminimize_submenu = array_unique( $mw_adminimize_submenu );
670 + }
671 + _mw_adminimize_debug( $mw_adminimize_menu, 'Adminimize, Menu Slugs to hide after Filter.' );
672 + _mw_adminimize_debug( $mw_adminimize_submenu, 'Adminimize, Sub-Menu Slugs to hide after Filter.' );
418 673
419 -/**
420 - * remove the dashbord
421 - * @author of basic Austin Matzko
422 - * http://www.ilfilosofo.com/blog/2006/05/24/plugin-remove-the-wordpress-dashboard/
423 - */
424 -function _mw_adminimize_remove_dashboard() {
425 - global $menu, $submenu, $user_ID;
674 + foreach ( $wp_menu as $key => $item ) {
426 675
427 - $disabled_menu = _mw_adminimize_getOptionValue('mw_adminimize_disabled_menu_items');
428 - $disabled_submenu = _mw_adminimize_getOptionValue('mw_adminimize_disabled_submenu_items');
429 - $disabled_menu_adm = _mw_adminimize_getOptionValue('mw_adminimize_disabled_menu_adm_items');
430 - $disabled_submenu_adm = _mw_adminimize_getOptionValue('mw_adminimize_disabled_submenu_adm_items');
676 + _mw_adminimize_debug( $item, 'Adminimize, Each Menu Item Array to check for hiding.' );
431 677
432 - // remove dashboard
433 - if ($disabled_menu != '') {
434 - if ( ( in_array('index.php', $disabled_menu) && !current_user_can('level_10') ) ||
435 - ( in_array('index.php', $disabled_submenu) && !current_user_can('level_10') ) ||
436 - ( in_array('index.php', $disabled_menu_adm) && current_user_can('level_10') ) ||
437 - ( in_array('index.php', $disabled_submenu_adm) && current_user_can('level_10') )
438 - ) {
439 -
440 - $_mw_adminimize_db_redirect = _mw_adminimize_getOptionValue('_mw_adminimize_db_redirect');
441 - switch ($_mw_adminimize_db_redirect) {
442 - case 0:
443 - $_mw_adminimize_db_redirect = 'profile.php';
444 - break;
445 - case 1:
446 - $_mw_adminimize_db_redirect = 'edit.php';
447 - break;
448 - case 2:
449 - $_mw_adminimize_db_redirect = 'edit-pages.php';
450 - break;
451 - case 3:
452 - $_mw_adminimize_db_redirect = 'post-new.php';
453 - break;
454 - case 4:
455 - $_mw_adminimize_db_redirect = 'page-new.php';
456 - break;
457 - case 5:
458 - $_mw_adminimize_db_redirect = 'edit-comments.php';
459 - break;
678 + // Menu
679 + if ( isset( $item[ 2 ] ) ) {
680 + $menu_slug = $item[ 2 ];
681 + // Check, if the Menu item in the current user role settings?
682 + if ( in_array( $menu_slug, $mw_adminimize_menu, false )
683 + ) {
684 + remove_menu_page( $menu_slug );
685 + // Prevent access to the page with the slug, there was inactive.
686 + _mw_adminimize_check_page_access( $menu_slug );
460 687 }
461 688
462 - $the_user = new WP_User($user_ID);
463 - reset($menu); $page = key($menu);
464 -
465 - while ( (__('Dashboard') != $menu[$page][0]) && next($menu) || (__('Dashboard') != $menu[$page][1]) && next($menu) )
466 - $page = key($menu);
467 -
468 - if (__('Dashboard') == $menu[$page][0] || __('Dashboard') == $menu[$page][1])
469 - unset($menu[$page]);
470 - reset($menu); $page = key($menu);
471 -
472 - while ( !$the_user->has_cap($menu[$page][1]) && next($menu) )
473 - $page = key($menu);
474 -
475 - if ( preg_match('#wp-admin/?(index.php)?$#', $_SERVER['REQUEST_URI'])) {
476 - if (function_exists('admin_url')) {
477 - wp_redirect( admin_url($_mw_adminimize_db_redirect) );
478 - } else {
479 - wp_redirect( get_option('siteurl') . '/wp-admin/' . $_mw_adminimize_db_redirect );
689 + // Sub Menu Settings.
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 +
698 + // Check, if is Sub Menu item in the user role settings?
699 + if (
700 + isset( $mw_adminimize_submenu )
701 + && _mw_adminimize_in_arrays(
702 + array( $subitem[ 2 ], $menu_slug . '__' . $subindex ),
703 + $mw_adminimize_submenu
704 + )
705 + ) {
706 + remove_submenu_page( $menu_slug, $subitem[ 2 ] );
707 + // Prevent access to the page with the slug, there was inactive.
708 + _mw_adminimize_check_page_access( $subitem[ 2 ] );
709 + }
480 710 }
481 711 }
482 712 }
483 713 }
714 +
484 715 }
485 716
717 +/**
718 + * Set global options in backend in all areas.
719 + */
720 +function _mw_adminimize_set_global_option() {
486 721
722 + // exclude super admin
723 + if ( _mw_adminimize_exclude_super_admin() ) {
724 + return NULL;
725 + }
726 +
727 + // Leave the settings screen from Adminimize to see all areas on settings.
728 + if ( _mw_adminimize_exclude_settings_page() ) {
729 + return;
730 + }
731 +
732 + $user_roles = _mw_adminimize_get_all_user_roles();
733 + $_mw_adminimize_admin_head = '';
734 + $disabled_global_option = array();
735 + $disabled_global_option_ = array();
736 + $user = wp_get_current_user();
737 +
738 + // Get settings for each role.
739 + foreach ( $user_roles as $role ) {
740 + $disabled_global_option_[ $role ] = (array) _mw_adminimize_get_option_value(
741 + 'mw_adminimize_disabled_global_option_' . $role . '_items'
742 + );
743 + }
744 +
745 + // Write global options in an var.
746 + foreach ( $user_roles as $role ) {
747 + if ( in_array( $role, $user->roles, TRUE ) && _mw_adminimize_current_user_has_role( $role ) ) {
748 +
749 + // Create array about all items with all affected roles, important for multiple roles.
750 + foreach ( (array) $disabled_global_option_[ $role ] as $global_item ) {
751 + $disabled_global_option[] = $global_item;
752 + }
753 + }
754 + }
755 +
756 + // Support Multiple Roles for users.
757 + if ( _mw_adminimize_get_option_value( 'mw_adminimize_multiple_roles' ) && 1 < count( $user->roles ) ) {
758 + $disabled_global_option = _mw_adminimize_get_duplicate( $disabled_global_option );
759 + }
760 + $global_options = implode( ', ', $disabled_global_option );
761 +
762 + if ( 0 === strpos( $global_options, '#your-profile .form-table fieldset' ) ) {
763 + global $_wp_admin_css_colors;
764 + $_wp_admin_css_colors = 0;
765 + }
766 + $_mw_adminimize_admin_head .= '<!-- Set Adminimize global options -->' . "\n";
767 + $_mw_adminimize_admin_head .= '<style type="text/css">' . $global_options . ' {display:none !important;}</style>' . "\n";
768 +
769 + // List options if the debug option is active.
770 + _mw_adminimize_debug($global_options, 'Adminimize: List active global options:');
771 +
772 + if ( '' !== $global_options ) {
773 + echo $_mw_adminimize_admin_head;
774 + }
775 +}
776 +
487 777 /**
488 - * remove the flash_uploader
778 + * Set metabox options from database an area post.
489 779 */
490 -function _mw_adminimize_disable_flash_uploader() {
491 - return false;
780 +function _mw_adminimize_set_metabox_post_option() {
781 +
782 + // exclude super admin
783 + if ( _mw_adminimize_exclude_super_admin() ) {
784 + return;
785 + }
786 +
787 + // Leave the settings screen from Adminimize to see all areas on settings.
788 + if ( _mw_adminimize_exclude_settings_page() ) {
789 + return;
790 + }
791 +
792 + $user_roles = _mw_adminimize_get_all_user_roles();
793 + $_mw_adminimize_admin_head = '';
794 + // It's better to declare $metaboxes as an array for better manipulation later.
795 + $metaboxes = array();
796 +
797 + foreach ( $user_roles as $role ) {
798 + $disabled_metaboxes_post_[ $role ] = _mw_adminimize_get_option_value(
799 + 'mw_adminimize_disabled_metaboxes_post_' . $role . '_items'
800 + );
801 +
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;
809 + }
810 +
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 ) ) {
819 + if ( _mw_adminimize_current_user_has_role( $role ) && isset( $disabled_metaboxes_post_[ $role ] )
820 + && is_array(
821 + $disabled_metaboxes_post_[ $role ]
822 + )
823 + ) {
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 ] );
828 + }
829 + }
830 + }
831 +
832 + $_mw_adminimize_admin_head .= '<!-- Set Adminimize metabox post options -->' . "\n";
833 + // And below we implode $metaboxes because it's an array now.
834 + $_mw_adminimize_admin_head .= '<style type="text/css">' .
835 + implode( ',', $metaboxes ) . ' {display:none !important;}</style>' . "\n";
836 +
837 + if ( ! empty( $metaboxes ) ) {
838 + echo $_mw_adminimize_admin_head;
839 + }
492 840 }
493 841
842 +/**
843 + * Set metabox options from database an area page.
844 + */
845 +function _mw_adminimize_set_metabox_page_option() {
494 846
847 + // exclude super admin
848 + if ( _mw_adminimize_exclude_super_admin() ) {
849 + return NULL;
850 + }
851 +
852 + // Leave the settings screen from Adminimize to see all areas on settings.
853 + if ( _mw_adminimize_exclude_settings_page() ) {
854 + return;
855 + }
856 +
857 + $user_roles = _mw_adminimize_get_all_user_roles();
858 + $_mw_adminimize_admin_head = '';
859 + $metaboxes = '';
860 +
861 + foreach ( $user_roles as $role ) {
862 + $disabled_metaboxes_page_[ $role ] = _mw_adminimize_get_option_value(
863 + 'mw_adminimize_disabled_metaboxes_page_' . $role . '_items'
864 + );
865 +
866 + if ( ! isset( $disabled_metaboxes_page_[ $role ][ '0' ] ) ) {
867 + $disabled_metaboxes_page_[ $role ][ '0' ] = '';
868 + }
869 +
870 + // New since version 1.7.8.
871 + $user = wp_get_current_user();
872 + if ( is_array( $user->roles ) && in_array( $role, $user->roles, TRUE ) ) {
873 + if ( _mw_adminimize_current_user_has_role( $role )
874 + && isset( $disabled_metaboxes_page_[ $role ] )
875 + && is_array( $disabled_metaboxes_page_[ $role ] )
876 + ) {
877 + $metaboxes = implode( ',', $disabled_metaboxes_page_[ $role ] );
878 + }
879 + }
880 + }
881 +
882 + $_mw_adminimize_admin_head .= '<!-- Set Adminimize metabox page options -->' . "\n";
883 + $_mw_adminimize_admin_head .= '<style type="text/css">' .
884 + $metaboxes . ' {display:none !important;}</style>' . "\n";
885 +
886 + if ( ! empty( $metaboxes ) ) {
887 + echo $_mw_adminimize_admin_head;
888 + }
889 +}
890 +
495 891 /**
496 - * set user options from database in edit-area
892 + * Set metabox options from database an area post.
497 893 */
498 -function _mw_adminimize_set_user_option_edit() {
499 -
500 - $_mw_adminimize_path = WP_PLUGIN_URL . '/' . plugin_basename( dirname(__FILE__) ) . '/css/';
501 -
502 - $_mw_adminimize_sidecat_admin_head = '';
503 - $_mw_adminimize_sidebar_wight = _mw_adminimize_getOptionValue('_mw_adminimize_sidebar_wight');
504 - switch ($_mw_adminimize_sidebar_wight) {
505 - case 300:
506 - $_mw_adminimize_sidecat_admin_head .= '<link rel="stylesheet" href="' . "\n";
507 - $_mw_adminimize_sidecat_admin_head .= $_mw_adminimize_path . 'mw_300_sidebar.css';
508 - $_mw_adminimize_sidecat_admin_head .= '" type="text/css" media="all" />' . "\n";
509 - break;
510 - case 400:
511 - $_mw_adminimize_sidecat_admin_head .= '<link rel="stylesheet" href="' . "\n";
512 - $_mw_adminimize_sidecat_admin_head .= $_mw_adminimize_path . 'mw_400_sidebar.css';
513 - $_mw_adminimize_sidecat_admin_head .= '" type="text/css" media="all" />' . "\n";
514 - break;
515 - case 20:
516 - $_mw_adminimize_sidecat_admin_head .= '<link rel="stylesheet" href="' . "\n";
517 - $_mw_adminimize_sidecat_admin_head .= $_mw_adminimize_path . 'mw_20p_sidebar.css';
518 - $_mw_adminimize_sidecat_admin_head .= '" type="text/css" media="all" />' . "\n";
519 - break;
520 - case 30:
521 - $_mw_adminimize_sidecat_admin_head .= '<link rel="stylesheet" href="' . "\n";
522 - $_mw_adminimize_sidecat_admin_head .= $_mw_adminimize_path . 'mw_30p_sidebar.css';
523 - $_mw_adminimize_sidecat_admin_head .= '" type="text/css" media="all" />' . "\n";
524 - break;
894 +function _mw_adminimize_set_metabox_cp_option() {
895 +
896 + // exclude super admin
897 + if ( _mw_adminimize_exclude_super_admin() ) {
898 + return NULL;
525 899 }
526 900
527 - print($_mw_adminimize_sidecat_admin_head);
901 + // Leave the settings screen from Adminimize to see all areas on settings.
902 + if ( _mw_adminimize_exclude_settings_page() ) {
903 + return;
904 + }
905 +
906 + $post_id = 0;
907 + if ( isset( $_GET[ 'post' ] ) ) {
908 + $post_id = (int) $_GET[ 'post' ];
909 + } elseif ( isset( $_POST[ 'post_ID' ] ) ) {
910 + $post_id = (int) $_POST[ 'post_ID' ];
911 + }
912 +
913 + $current_post_type = $GLOBALS[ 'post_type' ];
914 + if ( ! isset( $current_post_type ) ) {
915 + $current_post_type = get_post_type( $post_id );
916 + }
917 +
918 + if ( ! isset( $current_post_type ) || ! $current_post_type ) {
919 + $current_post_type = str_replace( 'post_type=', '', esc_attr( $_SERVER[ 'QUERY_STRING' ] ) );
920 + }
921 +
922 + // set hard to post
923 + if ( ! $current_post_type ) {
924 + $current_post_type = 'post';
925 + }
926 +
927 + $user_roles = _mw_adminimize_get_all_user_roles();
928 + $_mw_adminimize_admin_head = '';
929 + $metaboxes = array();
930 +
931 + foreach ( $user_roles as $role ) {
932 + $disabled_metaboxes_[ $current_post_type . '_' . $role ] = _mw_adminimize_get_option_value(
933 + 'mw_adminimize_disabled_metaboxes_' . $current_post_type . '_' . $role . '_items'
934 + );
935 +
936 + if ( ! isset( $disabled_metaboxes_[ $current_post_type . '_' . $role ]['0'] ) ) {
937 + $disabled_metaboxes_[ $current_post_type . '_' . $role ]['0'] = '';
938 +
939 + continue;
940 + }
941 +
942 + $user = $GLOBALS['current_user'];
943 + if ( is_array( $user->roles ) && in_array( $role, $user->roles, true ) ) {
944 + if ( _mw_adminimize_current_user_has_role( $role )
945 + && isset( $disabled_metaboxes_[ $current_post_type . '_' . $role ] )
946 + && is_array( $disabled_metaboxes_[ $current_post_type . '_' . $role ] )
947 + ) {
948 + $metaboxes[] = implode( ',', $disabled_metaboxes_[ $current_post_type . '_' . $role ] );
949 + }
950 + }
951 + }
952 +
953 + $_mw_adminimize_admin_head .= '<!-- Set Adminimize post options -->' . "\n";
954 + $_mw_adminimize_admin_head .= '<style type="text/css">' .
955 + implode( ',', $metaboxes ) . ' {display:none !important;}</style>' . "\n";
956 +
957 + if ( ! empty( $metaboxes ) ) {
958 + echo $_mw_adminimize_admin_head;
959 + }
528 960 }
529 961
530 -
531 962 /**
532 - * set menu options from database
963 + * Set link options in area links of back end.
533 964 */
534 -function _mw_adminimize_set_menu_option() {
535 - global $pagenow, $menu, $submenu, $user_identity;
536 -
537 - $disabled_menu = _mw_adminimize_getOptionValue('mw_adminimize_disabled_menu_items');
538 - $disabled_submenu = _mw_adminimize_getOptionValue('mw_adminimize_disabled_submenu_items');
539 - $disabled_menu_adm = _mw_adminimize_getOptionValue('mw_adminimize_disabled_menu_adm_items');
540 - $disabled_submenu_adm = _mw_adminimize_getOptionValue('mw_adminimize_disabled_submenu_adm_items');
541 -
542 - $_mw_adminimize_admin_head = "\n";
543 - $_mw_adminimize_user_info = _mw_adminimize_getOptionValue('_mw_adminimize_user_info');
544 - $_mw_adminimize_ui_redirect = _mw_adminimize_getOptionValue('_mw_adminimize_ui_redirect');
545 - switch ($_mw_adminimize_user_info) {
546 - case 1:
547 - $_mw_adminimize_admin_head .= '<script type="text/javascript">' . "\n";
548 - $_mw_adminimize_admin_head .= "\t" . 'jQuery(document).ready(function() { jQuery(\'#user_info\').remove(); });' . "\n";
549 - $_mw_adminimize_admin_head .= '</script>' . "\n";
550 - break;
551 - case 2:
552 - $_mw_adminimize_admin_head .= '<link rel="stylesheet" href="' . WP_PLUGIN_URL . '/' . plugin_basename( dirname(__FILE__) ) . '/css/mw_small_user_info.css" type="text/css" />' . "\n";
553 - $_mw_adminimize_admin_head .= '<script type="text/javascript">' . "\n";
554 - $_mw_adminimize_admin_head .= "\t" . 'jQuery(document).ready(function() { jQuery(\'#user_info\').remove();';
555 - if ($_mw_adminimize_ui_redirect == '1') {
556 - $_mw_adminimize_admin_head .= 'jQuery(\'div#wpcontent\').after(\'<div id="small_user_info"><p><a href="' . get_option('siteurl') . ('/wp-login.php?action=logout&amp;redirect_to=') . get_option('siteurl') . '" title="' . __('Log Out') . '">' . __('Log Out') . '</a></p></div>\') });' . "\n";
557 - } else {
558 - $_mw_adminimize_admin_head .= 'jQuery(\'div#wpcontent\').after(\'<div id="small_user_info"><p><a href="' . get_option('siteurl') . ('/wp-login.php?action=logout') . '" title="' . __('Log Out') . '">' . __('Log Out') . '</a></p></div>\') });' . "\n";
965 +function _mw_adminimize_set_link_option() {
966 +
967 + // exclude super admin
968 + if ( _mw_adminimize_exclude_super_admin() ) {
969 + return NULL;
970 + }
971 +
972 + // Leave the settings screen from Adminimize to see all areas on settings.
973 + if ( _mw_adminimize_exclude_settings_page() ) {
974 + return;
975 + }
976 +
977 + $user_roles = _mw_adminimize_get_all_user_roles();
978 + $_mw_adminimize_admin_head = '';
979 +
980 + foreach ( $user_roles as $role ) {
981 + $disabled_link_option_[ $role ] = _mw_adminimize_get_option_value(
982 + 'mw_adminimize_disabled_link_option_' . $role . '_items'
983 + );
984 + }
985 +
986 + foreach ( $user_roles as $role ) {
987 + if ( ! isset( $disabled_link_option_[ $role ][ '0' ] ) ) {
988 + $disabled_link_option_[ $role ][ '0' ] = '';
559 989 }
560 - $_mw_adminimize_admin_head .= '</script>' . "\n";
561 - break;
562 - case 3:
563 - $_mw_adminimize_admin_head .= '<link rel="stylesheet" href="' . WP_PLUGIN_URL . '/' . plugin_basename( dirname(__FILE__) ) . '/css/mw_small_user_info.css" type="text/css" />' . "\n";
564 - $_mw_adminimize_admin_head .= '<script type="text/javascript">' . "\n";
565 - $_mw_adminimize_admin_head .= "\t" . 'jQuery(document).ready(function() { jQuery(\'#user_info\').remove();';
566 - if ($_mw_adminimize_ui_redirect == '1') {
567 - $_mw_adminimize_admin_head .= 'jQuery(\'div#wpcontent\').after(\'<div id="small_user_info"><p><a href="' . get_option('siteurl') . ('/wp-admin/profile.php') . '">' . $user_identity . '</a> | <a href="' . get_option('siteurl') . ('/wp-login.php?action=logout&amp;redirect_to=') . get_option('siteurl') . '" title="' . __('Log Out') . '">' . __('Log Out') . '</a></p></div>\') });' . "\n";
568 - } else {
569 - $_mw_adminimize_admin_head .= 'jQuery(\'div#wpcontent\').after(\'<div id="small_user_info"><p><a href="' . get_option('siteurl') . ('/wp-admin/profile.php') . '">' . $user_identity . '</a> | <a href="' . get_option('siteurl') . ('/wp-login.php?action=logout') . '" title="' . __('Log Out') . '">' . __('Log Out') . '</a></p></div>\') });' . "\n";
990 + }
991 +
992 + $link_options = '';
993 + foreach ( $user_roles as $role ) {
994 + $user = wp_get_current_user();
995 + if ( is_array( $user->roles ) && in_array( $role, $user->roles, TRUE ) ) {
996 + if ( _mw_adminimize_current_user_has_role( $role )
997 + && isset( $disabled_link_option_[ $role ] )
998 + && is_array( $disabled_link_option_[ $role ] )
999 + ) {
1000 + $link_options = implode( ',', $disabled_link_option_[ $role ] );
1001 + }
570 1002 }
571 - $_mw_adminimize_admin_head .= '</script>' . "\n";
572 - break;
573 1003 }
574 1004
575 - $_mw_adminimize_footer = _mw_adminimize_getOptionValue('_mw_adminimize_footer');
576 - switch ($_mw_adminimize_footer) {
577 - case 1:
578 - $_mw_adminimize_admin_head .= '<script type="text/javascript">' . "\n";
579 - $_mw_adminimize_admin_head .= "\t" . 'jQuery(document).ready(function() { jQuery(\'#footer\').remove(); });' . "\n";
580 - $_mw_adminimize_admin_head .= '</script>' . "\n";
581 - break;
1005 + $_mw_adminimize_admin_head .= '<!-- Set Adminimize links options -->' . "\n";
1006 + $_mw_adminimize_admin_head .= '<style type="text/css">' .
1007 + $link_options . ' {display:none !important;}</style>' . "\n";
1008 +
1009 + if ( ! empty( $link_options ) ) {
1010 + echo $_mw_adminimize_admin_head;
582 1011 }
1012 +}
583 1013
584 - // timestamp open
585 - $_mw_adminimize_timestamp = _mw_adminimize_getOptionValue('_mw_adminimize_timestamp');
586 - switch ($_mw_adminimize_timestamp) {
587 - case 1:
588 - $_mw_adminimize_admin_head .= '<script type="text/javascript">' . "\n";
589 - $_mw_adminimize_admin_head .= "\t" . 'addLoadEvent(function(){jQuery(\'.edit-timestamp\').click();});' . "\n";
590 - $_mw_adminimize_admin_head .= '</script>' . "\n";
591 - break;
1014 +/**
1015 + * Remove objects on wp nav menu.
1016 + */
1017 +function _mw_adminimize_set_nav_menu_option() {
1018 +
1019 + // exclude super admin
1020 + if ( _mw_adminimize_exclude_super_admin() ) {
1021 + return NULL;
592 1022 }
593 1023
594 - $_mw_adminimize_admin_head .= '<script type="text/javascript">
595 - /* <![CDATA[ */
596 - adminimizeL10n = {
597 - all: "' . __('All', 'adminimize') . '", none: "' . __('None', 'adminimize') . '"
1024 + // Leave the settings screen from Adminimize to see all areas on settings.
1025 + if ( _mw_adminimize_exclude_settings_page() ) {
1026 + return;
598 1027 }
599 - /* ]]> */
600 - </script>';
601 1028
602 - // set menu
603 - if ($disabled_menu != '') {
604 -
605 - // set user-menu
606 - if ( !current_user_can('level_10') ) {
607 - foreach ($menu as $index => $item) {
608 - if ($item == 'index.php')
609 - continue;
610 -
611 - if (in_array($item[2], $disabled_menu))
612 - unset($menu[$index]);
613 -
614 - if ( !empty($submenu[$item[2]]) ) {
615 - foreach ($submenu[$item[2]] as $subindex => $subitem) {
616 - if (in_array($subitem[2], $disabled_submenu))
617 - unset($submenu[$item[2]][$subindex]);
618 - }
619 - }
620 - }
1029 + $user_roles = _mw_adminimize_get_all_user_roles();
1030 + $_mw_adminimize_admin_head = '';
1031 +
1032 + foreach ( $user_roles as $role ) {
1033 + $disabled_nav_menu_option_[ $role ] = _mw_adminimize_get_option_value(
1034 + 'mw_adminimize_disabled_nav_menu_option_' . $role . '_items'
1035 + );
1036 + }
1037 +
1038 + foreach ( $user_roles as $role ) {
1039 + if ( ! isset( $disabled_nav_menu_option_[ $role ][ '0' ] ) ) {
1040 + $disabled_nav_menu_option_[ $role ][ '0' ] = '';
621 1041 }
622 -
623 - // set admin-menu
624 - if ( current_user_can('level_10') ) {
625 - foreach ($menu as $index => $item) {
626 - if ($item == 'index.php')
627 - continue;
628 -
629 - if (in_array($item[2], $disabled_menu_adm))
630 - unset($menu[$index]);
631 -
632 - if ( !empty($submenu[$item[2]]) ) {
633 - foreach ($submenu[$item[2]] as $subindex => $subitem) {
634 - if (in_array($subitem[2], $disabled_submenu_adm))
635 - unset($submenu[$item[2]][$subindex]);
636 - }
637 - }
1042 + }
1043 +
1044 + $nav_menu_options = '';
1045 + foreach ( $user_roles as $role ) {
1046 + $user = wp_get_current_user();
1047 + if ( is_array( $user->roles ) && in_array( $role, $user->roles, TRUE ) ) {
1048 + if ( _mw_adminimize_current_user_has_role( $role )
1049 + && isset( $disabled_nav_menu_option_[ $role ] )
1050 + && is_array( $disabled_nav_menu_option_[ $role ] )
1051 + ) {
1052 + $nav_menu_options = implode( ',', $disabled_nav_menu_option_[ $role ] );
638 1053 }
639 1054 }
640 -
641 1055 }
642 -
643 - print($_mw_adminimize_admin_head);
1056 +
1057 + $_mw_adminimize_admin_head .= '<!-- Set Adminimize WP Nav Menu options -->' . "\n";
1058 + $_mw_adminimize_admin_head .= '<style type="text/css">' .
1059 + $nav_menu_options . ' {display: none !important;}</style>' . "\n";
1060 +
1061 + if ( $nav_menu_options ) {
1062 + echo $_mw_adminimize_admin_head;
1063 + }
644 1064 }
645 1065
646 -
647 1066 /**
648 - * set metabox options from database
1067 + * Remove areas in Widget Settings
649 1068 */
650 -function _mw_adminimize_set_metabox_option() {
651 - global $pagenow;
652 -
653 - $_mw_adminimize_admin_head = "\n";
654 -
655 - // post
656 - if ( ('post-new.php' == $pagenow) || ('post.php' == $pagenow) ) {
657 - remove_action('admin_head', 'index_js');
1069 +function _mw_adminimize_set_widget_option() {
658 1070
659 - $disabled_metaboxes_post = _mw_adminimize_getOptionValue('mw_adminimize_disabled_metaboxes_post_items');
660 - $disabled_metaboxes_post_adm = _mw_adminimize_getOptionValue('mw_adminimize_disabled_metaboxes_post_adm_items');
661 -
662 - if ( !isset($disabled_metaboxes_post_adm['0']) )
663 - $disabled_metaboxes_post_adm['0'] = '';
664 - if ( !isset($disabled_metaboxes_post['0']) )
665 - $disabled_metaboxes_post['0'] = '';
666 - if ( current_user_can('level_10') ) {
667 - $metaboxes = implode(',', $disabled_metaboxes_post_adm); // for admins
668 - } else {
669 - $metaboxes = implode(',', $disabled_metaboxes_post); // < user level 10, admin
1071 + // exclude super admin
1072 + if ( _mw_adminimize_exclude_super_admin() ) {
1073 + return NULL;
1074 + }
1075 +
1076 + // Leave the settings screen from Adminimize to see all areas on settings.
1077 + if ( _mw_adminimize_exclude_settings_page() ) {
1078 + return;
1079 + }
1080 +
1081 + $user_roles = _mw_adminimize_get_all_user_roles();
1082 + $_mw_adminimize_admin_head = '';
1083 +
1084 + foreach ( $user_roles as $role ) {
1085 + $disabled_widget_option_[ $role ] = _mw_adminimize_get_option_value(
1086 + 'mw_adminimize_disabled_widget_option_' . $role . '_items'
1087 + );
1088 + }
1089 +
1090 + foreach ( $user_roles as $role ) {
1091 + if ( ! isset( $disabled_widget_option_[ $role ][ '0' ] ) ) {
1092 + $disabled_widget_option_[ $role ][ '0' ] = '';
670 1093 }
671 -
672 - $_mw_adminimize_admin_head .= '<style type="text/css">' . $metaboxes . ' {display: none !important}</style>' . "\n";
673 1094 }
674 -
675 - // page
676 - if ( ('page-new.php' == $pagenow) || ('page.php' == $pagenow) ) {
677 - remove_action('admin_head', 'index_js');
678 -
679 - $disabled_metaboxes_page = _mw_adminimize_getOptionValue('mw_adminimize_disabled_metaboxes_page_items');
680 - $disabled_metaboxes_page_adm = _mw_adminimize_getOptionValue('mw_adminimize_disabled_metaboxes_page_adm_items');
681 -
682 - if ( !isset($disabled_metaboxes_page_adm['0']) )
683 - $disabled_metaboxes_page_adm['0'] = '';
684 - if ( !isset($disabled_metaboxes_page['0']) )
685 - $disabled_metaboxes_page['0'] = '';
686 - if ( current_user_can('level_10') ) {
687 - $metaboxes = implode(',', $disabled_metaboxes_page_adm);
688 - } else {
689 - $metaboxes = implode(',', $disabled_metaboxes_page); // < user level 10, admin
1095 +
1096 + $widget_options = '';
1097 + foreach ( $user_roles as $role ) {
1098 + $user = wp_get_current_user();
1099 + if ( is_array( $user->roles ) && in_array( $role, $user->roles, TRUE ) ) {
1100 + if ( _mw_adminimize_current_user_has_role( $role )
1101 + && isset( $disabled_widget_option_[ $role ] )
1102 + && is_array( $disabled_widget_option_[ $role ] )
1103 + ) {
1104 + $widget_options = implode( ',', $disabled_widget_option_[ $role ] );
1105 + }
690 1106 }
691 -
692 - $_mw_adminimize_admin_head .= '<style type="text/css">' . $metaboxes . ' {display: none !important}</style>' . "\n";
693 1107 }
694 -
695 - print($_mw_adminimize_admin_head);
1108 +
1109 + $_mw_adminimize_admin_head .= '<!-- Set Adminimize Widget options -->' . "\n";
1110 + $_mw_adminimize_admin_head .= '<style type="text/css">' .
1111 + $widget_options . ' {display: none !important;}</style>' . "\n";
1112 +
1113 + if ( $widget_options ) {
1114 + echo $_mw_adminimize_admin_head;
1115 + }
696 1116 }
697 1117
698 -
699 1118 /**
700 - * small user-info
701 - * @uses $post_ID
1119 + * Print small user-info.
702 1120 */
703 1121 function _mw_adminimize_small_user_info() {
704 -?>
1122 +
1123 + ?>
705 1124 <div id="small_user_info">
706 - <p><a href="<?php echo site_url('wp-login.php?action=logout') ?>" title="<?php _e('Log Out') ?>"><?php _e('Log Out'); ?></a></p>
1125 + <p>
1126 + <a href="<?php echo wp_nonce_url(
1127 + site_url( 'wp-login.php?action=logout' ),
1128 + 'log-out'
1129 + ) ?>"
1130 + title="<?php esc_attr_e( 'Log Out' ) ?>"><?php esc_attr_e( 'Log Out' ); ?></a>
1131 + </p>
707 1132 </div>
708 -<?php
1133 + <?php
709 1134 }
710 1135
1136 +// include helping functions
1137 +require_once 'inc-setup/DebugListener.php';
1138 +require_once 'inc-setup/helping_hands.php';
711 1139
712 -/**
713 - * include options-page in wp-admin
714 - */
715 -require_once('adminimize_page.php');
1140 +// Include message class.
1141 +require_once 'inc-setup/messages.php';
716 1142
1143 +// inc. settings page
1144 +require_once 'adminimize_page.php';
717 1145
718 -/**
719 - * credit in wp-footer
720 - */
721 -function _mw_adminimize_admin_footer() {
722 - $plugin_data = get_plugin_data( __FILE__ );
723 - $plugin_data['Title'] = $plugin_data['Name'];
724 - if ( !empty($plugin_data['PluginURI']) && !empty($plugin_data['Name']) )
725 - $plugin_data['Title'] = '<a href="' . $plugin_data['PluginURI'] . '" title="'.__( 'Visit plugin homepage' ).'">' . $plugin_data['Name'] . '</a>';
726 -
727 - if ( basename($_SERVER['REQUEST_URI']) == 'adminimize.php') {
728 - printf('%1$s ' . __('plugin') . ' | ' . __('Version') . ' <a href="http://bueltge.de/wordpress-admin-theme-adminimize/674/#historie" title="' . __('History', 'adminimize') . '">%2$s</a> | ' . __('Author') . ' %3$s<br />', $plugin_data['Title'], $plugin_data['Version'], $plugin_data['Author']);
729 - }
730 - if ( _mw_adminimize_getOptionValue('_mw_adminimize_advice') == 1 && basename($_SERVER['REQUEST_URI']) != 'adminimize.php' ) {
731 - printf('%1$s ' . __('plugin activate', 'adminimize') . ' | ' . stripslashes( _mw_adminimize_getOptionValue('_mw_adminimize_advice_txt') ) . '<br />', $plugin_data['Title']);
732 - }
733 -}
1146 +// dashboard options
1147 +require_once 'inc-setup/dashboard.php';
734 1148
1149 +// widget options
1150 +require_once 'inc-setup/widget.php';
1151 +require_once 'inc-setup/footer.php';
1152 +require_once 'inc-setup/admin-footer.php';
735 1153
1154 +// remove admin bar
1155 +require_once 'inc-setup/remove-admin-bar.php';
1156 +
1157 +// admin bar helper, setup
1158 +// work always in frontend
1159 +require_once 'inc-setup/admin-bar-items.php';
1160 +
1161 +// meta boxes helper, setup
1162 +// @TODO Meta Boxes: not ready for productive systems.
1163 +//require_once( 'inc-setup/meta-boxes.php' );
1164 +
1165 +// Remove Admin Notices.
1166 +require_once 'inc-setup/remove-admin-notices.php';
1167 +
1168 +// Add Ex-Import functions.
1169 +require_once 'inc-setup/export.php';
1170 +require_once 'inc-setup/import.php';
1171 +
736 1172 /**
737 1173 * Add action link(s) to plugins page
738 - * Thanks Dion Hulse -- http://dd32.id.au/wordpress-plugins/?configure-link
1174 + *
1175 + * @param array $links
1176 + * @param string $file
1177 + *
1178 + * @return array $links
739 1179 */
740 -function _mw_adminimize_filter_plugin_actions($links, $file){
741 - static $this_plugin;
1180 +function _mw_adminimize_filter_plugin_meta( $links, $file ) {
742 1181
743 - if( !$this_plugin ) $this_plugin = plugin_basename(__FILE__);
1182 + /* create link */
1183 + if ( FB_ADMINIMIZE_BASENAME === $file ) {
1184 + array_unshift(
1185 + $links,
1186 + sprintf(
1187 + '<a href="options-general.php?page=adminimize-options">%s</a>',
1188 + esc_attr__( 'Settings' )
1189 + )
1190 + );
1191 + }
744 1192
745 - if( $file == $this_plugin ){
746 - $settings_link = '<a href="options-general.php?page=adminimize/adminimize.php">' . __('Settings') . '</a>';
747 - $links = array_merge( array($settings_link), $links); // before other links
748 - }
749 1193 return $links;
750 1194 }
751 1195
752 -
753 1196 /**
754 - * settings in plugin-admin-page
1197 + * Add settings in plugin-admin-page.
755 1198 */
756 1199 function _mw_adminimize_add_settings_page() {
757 - if( current_user_can('switch_themes') ) {
758 - add_submenu_page('options-general.php', __('Adminimize Options', 'adminimize'), __('Adminimize', 'adminimize'), 8, __FILE__, '_mw_adminimize_options');
759 - add_filter('plugin_action_links', '_mw_adminimize_filter_plugin_actions', 10, 2);
1200 +
1201 + $pagehook = add_options_page(
1202 + esc_attr__( 'Adminimize Options', 'adminimize' ),
1203 + esc_attr__( 'Adminimize', 'adminimize' ),
1204 + 'manage_options',
1205 + 'adminimize-options',
1206 + '_mw_adminimize_options'
1207 + );
1208 +
1209 + if ( ! is_network_admin() ) {
1210 + add_filter( 'plugin_action_links', '_mw_adminimize_filter_plugin_meta', 10, 2 );
760 1211 }
1212 + add_action( 'load-' . $pagehook, '_mw_adminimize_on_load_page' );
761 1213 }
762 1214
1215 +/**
1216 + * Enqueue script and styles for the settings page.
1217 + */
1218 +function _mw_adminimize_on_load_page() {
763 1219
1220 + // Load translation files on options page.
1221 + _mw_adminimize_textdomain();
1222 +
1223 + $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
1224 +
1225 + wp_enqueue_style( 'select2-style', plugins_url( 'css/select2' . $suffix . '.css', __FILE__ ), [], false );
1226 + wp_register_style( 'adminimize-style', plugins_url( 'css/style' . $suffix . '.css', __FILE__ ) );
1227 + wp_enqueue_style( 'adminimize-style' );
1228 +
1229 + wp_enqueue_script( 'select2-script', plugins_url( 'js/select2' . $suffix . '.js', __FILE__ ), array( 'jquery' ),'',false );
1230 + wp_register_script(
1231 + 'adminimize-settings-script',
1232 + plugins_url( 'js/adminimize' . $suffix . '.js', __FILE__ ),
1233 + array( 'jquery' ),
1234 + '',
1235 + TRUE
1236 + );
1237 + wp_enqueue_script( 'adminimize-settings-script' );
1238 +}
1239 +
764 1240 /**
765 - * Set theme for users y user_level 10
1241 + * Get setting value for each options key.
1242 + *
1243 + * @param string|bool $key
1244 + *
1245 + * @return string
766 1246 */
767 -function _mw_adminimize_set_theme() {
1247 +function _mw_adminimize_get_option_value( $key = false ) {
768 1248
769 - if ( !current_user_can('edit_users') )
770 - wp_die(__('Cheatin&#8217; uh?'));
1249 + $adminimizeoptions = false;
1250 + if ( ! _mw_adminimize_exclude_settings_page() ) {
1251 + $adminimizeoptions = wp_cache_get( 'mw_adminimize' );
1252 + }
771 1253
772 - $user_ids = $_POST[mw_adminimize_theme_items];
773 - $admin_color = htmlspecialchars( stripslashes( $_POST[_mw_adminimize_set_theme] ) );
1254 + if ( false === $adminimizeoptions ) {
1255 + // check for use on multisite.
1256 + if ( _mw_adminimize_is_active_on_multisite() ) {
1257 + $adminimizeoptions = (array) get_site_option( 'mw_adminimize', array() );
1258 + } else {
1259 + $adminimizeoptions = (array) get_option( 'mw_adminimize', array() );
1260 + }
1261 + wp_cache_set( 'mw_adminimize', $adminimizeoptions );
1262 + }
774 1263
775 - if ( !$user_ids )
776 - return false;
1264 + if ( ! $key ) {
1265 + return $adminimizeoptions;
1266 + }
777 1267
778 - foreach( $user_ids as $user_id) {
779 - $user_id = (int) $user_id;
780 - update_usermeta($user_id, 'admin_color', $admin_color);
781 - }
1268 + return array_key_exists( $key, $adminimizeoptions ) ? $adminimizeoptions[ $key ] : null;
782 1269 }
783 1270
784 -
785 1271 /**
786 - * read otpions
1272 + * Update options.
1273 + *
1274 + * @param array $options
1275 + *
1276 + * @return bool
787 1277 */
788 -function _mw_adminimize_getOptionValue($key) {
1278 +function _mw_adminimize_update_option( $options ) {
789 1279
790 - $adminimizeoptions = get_option('mw_adminimize');
791 - return ($adminimizeoptions[$key]);
1280 + if ( ! current_user_can( 'manage_options' ) ) {
1281 + return FALSE;
1282 + }
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 +
1293 + // Kill the cache for the settings page.
1294 + wp_cache_delete( 'mw_adminimize' );
1295 + if ( _mw_adminimize_is_active_on_multisite() ) {
1296 + update_site_option( 'mw_adminimize', $options );
1297 + } else {
1298 + update_option( 'mw_adminimize', $options );
1299 + }
1300 + wp_cache_add( 'mw_adminimize', $options );
1301 +
1302 + return TRUE;
792 1303 }
793 1304
794 -
795 1305 /**
796 1306 * Update options in database
797 1307 */
798 1308 function _mw_adminimize_update() {
799 - global $menu, $submenu, $adminimizeoptions;
800 1309
801 - if (isset($_POST['_mw_adminimize_user_info'])) {
802 - $adminimizeoptions['_mw_adminimize_user_info'] = strip_tags(stripslashes($_POST['_mw_adminimize_user_info']));
1310 + $user_roles = _mw_adminimize_get_all_user_roles();
1311 + $args = array( 'public' => TRUE, '_builtin' => FALSE );
1312 + $post_types = get_post_types( $args );
1313 +
1314 + // Admin Bar Back end settings
1315 + $adminimizeoptions[ 'mw_adminimize_admin_bar_nodes' ] = _mw_adminimize_get_option_value(
1316 + 'mw_adminimize_admin_bar_nodes'
1317 + );
1318 + // admin bar back end options
1319 + foreach ( $user_roles as $role ) {
1320 + // admin bar back end options
1321 + if ( isset( $_POST[ 'mw_adminimize_disabled_admin_bar_' . $role . '_items' ] ) ) {
1322 + $adminimizeoptions[ 'mw_adminimize_disabled_admin_bar_' . $role . '_items' ] = $_POST[ 'mw_adminimize_disabled_admin_bar_' . $role . '_items' ];
1323 + } else {
1324 + $adminimizeoptions[ 'mw_adminimize_disabled_admin_bar_' . $role . '_items' ] = array();
1325 + }
1326 + }
1327 +
1328 + // Plugin Self Settings.
1329 + if ( isset( $_POST[ 'mw_adminimize_debug' ] ) ) {
1330 + $adminimizeoptions[ 'mw_adminimize_debug' ] = (int) $_POST[ 'mw_adminimize_debug' ];
803 1331 } else {
804 - $adminimizeoptions['_mw_adminimize_user_info'] = 0;
1332 + $adminimizeoptions[ 'mw_adminimize_debug' ] = 0;
805 1333 }
806 1334
807 - if (isset($_POST['_mw_adminimize_sidebar_wight'])) {
808 - $adminimizeoptions['_mw_adminimize_sidebar_wight'] = strip_tags(stripslashes($_POST['_mw_adminimize_sidebar_wight']));
1335 + if ( isset( $_POST[ 'mw_adminimize_multiple_roles' ] ) ) {
1336 + $adminimizeoptions[ 'mw_adminimize_multiple_roles' ] = (int) $_POST[ 'mw_adminimize_multiple_roles' ];
809 1337 } else {
810 - $adminimizeoptions['_mw_adminimize_sidebar_wight'] = 0;
1338 + $adminimizeoptions[ 'mw_adminimize_multiple_roles' ] = 0;
811 1339 }
812 -
813 - if (isset($_POST['_mw_adminimize_footer'])) {
814 - $adminimizeoptions['_mw_adminimize_footer'] = strip_tags(stripslashes($_POST['_mw_adminimize_footer']));
1340 +
1341 + if ( isset( $_POST[ 'mw_adminimize_support_bbpress' ] ) ) {
1342 + $adminimizeoptions[ 'mw_adminimize_support_bbpress' ] = (int) $_POST[ 'mw_adminimize_support_bbpress' ];
815 1343 } else {
816 - $adminimizeoptions['_mw_adminimize_footer'] = 0;
1344 + $adminimizeoptions[ 'mw_adminimize_support_bbpress' ] = 0;
817 1345 }
818 -
819 - if (isset($_POST['_mw_adminimize_writescroll'])) {
820 - $adminimizeoptions['_mw_adminimize_writescroll'] = strip_tags(stripslashes($_POST['_mw_adminimize_writescroll']));
1346 +
1347 + if ( isset( $_POST[ 'mw_adminimize_prevent_page_access' ] ) ) {
1348 + $adminimizeoptions[ 'mw_adminimize_prevent_page_access' ] = (int) $_POST[ 'mw_adminimize_prevent_page_access' ];
821 1349 } else {
822 - $adminimizeoptions['_mw_adminimize_writescroll'] = 0;
1350 + $adminimizeoptions[ 'mw_adminimize_prevent_page_access' ] = 0;
823 1351 }
824 -
825 - if (isset($_POST['_mw_adminimize_tb_window'])) {
826 - $adminimizeoptions['_mw_adminimize_tb_window'] = strip_tags(stripslashes($_POST['_mw_adminimize_tb_window']));
1352 +
1353 + // Admin Bar Front end settings
1354 + $adminimizeoptions[ 'mw_adminimize_admin_bar_frontend_nodes' ] = _mw_adminimize_get_option_value(
1355 + 'mw_adminimize_admin_bar_frontend_nodes'
1356 + );
1357 + // admin bar front end options
1358 + foreach ( $user_roles as $role ) {
1359 + // admin bar front-end options
1360 + if ( isset( $_POST[ 'mw_adminimize_disabled_admin_bar_frontend_' . $role . '_items' ] ) ) {
1361 + $adminimizeoptions[ 'mw_adminimize_disabled_admin_bar_frontend_' . $role . '_items' ] = $_POST[ 'mw_adminimize_disabled_admin_bar_frontend_' . $role . '_items' ];
1362 + } else {
1363 + $adminimizeoptions[ 'mw_adminimize_disabled_admin_bar_frontend_' . $role . '_items' ] = array();
1364 + }
1365 + }
1366 +
1367 + if ( isset( $_POST[ '_mw_adminimize_user_info' ] ) ) {
1368 + $adminimizeoptions[ '_mw_adminimize_user_info' ] = (int) $_POST[ '_mw_adminimize_user_info' ];
827 1369 } else {
828 - $adminimizeoptions['_mw_adminimize_tb_window'] = 0;
1370 + $adminimizeoptions[ '_mw_adminimize_user_info' ] = 0;
829 1371 }
830 -
831 - if (isset($_POST['_mw_adminimize_db_redirect'])) {
832 - $adminimizeoptions['_mw_adminimize_db_redirect'] = strip_tags(stripslashes($_POST['_mw_adminimize_db_redirect']));
1372 +
1373 + if ( isset( $_POST[ '_mw_adminimize_footer' ] ) ) {
1374 + $adminimizeoptions[ '_mw_adminimize_footer' ] = (int) $_POST[ '_mw_adminimize_footer' ];
833 1375 } else {
834 - $adminimizeoptions['_mw_adminimize_db_redirect'] = 0;
1376 + $adminimizeoptions[ '_mw_adminimize_footer' ] = 0;
835 1377 }
836 -
837 - if (isset($_POST['_mw_adminimize_ui_redirect'])) {
838 - $adminimizeoptions['_mw_adminimize_ui_redirect'] = strip_tags(stripslashes($_POST['_mw_adminimize_ui_redirect']));
1378 +
1379 + if ( isset( $_POST[ '_mw_adminimize_header' ] ) ) {
1380 + $adminimizeoptions[ '_mw_adminimize_header' ] = (int) $_POST[ '_mw_adminimize_header' ];
839 1381 } else {
840 - $adminimizeoptions['_mw_adminimize_ui_redirect'] = 0;
1382 + $adminimizeoptions[ '_mw_adminimize_header' ] = 0;
841 1383 }
842 -
843 - if (isset($_POST['_mw_adminimize_advice'])) {
844 - $adminimizeoptions['_mw_adminimize_advice'] = strip_tags(stripslashes($_POST['_mw_adminimize_advice']));
1384 +
1385 + if ( isset( $_POST[ '_mw_adminimize_exclude_super_admin' ] ) ) {
1386 + $adminimizeoptions[ '_mw_adminimize_exclude_super_admin' ] = (int) $_POST[ '_mw_adminimize_exclude_super_admin' ];
845 1387 } else {
846 - $adminimizeoptions['_mw_adminimize_advice'] = 0;
1388 + $adminimizeoptions[ '_mw_adminimize_exclude_super_admin' ] = 0;
847 1389 }
848 -
849 - if (isset($_POST['_mw_adminimize_advice_txt'])) {
850 - $adminimizeoptions['_mw_adminimize_advice_txt'] = stripslashes($_POST['_mw_adminimize_advice_txt']);
1390 +
1391 + if ( isset( $_POST[ '_mw_adminimize_tb_window' ] ) ) {
1392 + $adminimizeoptions[ '_mw_adminimize_tb_window' ] = (int) $_POST[ '_mw_adminimize_tb_window' ];
851 1393 } else {
852 - $adminimizeoptions['_mw_adminimize_advice_txt'] = 0;
1394 + $adminimizeoptions[ '_mw_adminimize_tb_window' ] = 0;
853 1395 }
854 -
855 - if (isset($_POST['_mw_adminimize_timestamp'])) {
856 - $adminimizeoptions['_mw_adminimize_timestamp'] = strip_tags(stripslashes($_POST['_mw_adminimize_timestamp']));
1396 +
1397 + if ( isset( $_POST[ '_mw_adminimize_cat_full' ] ) ) {
1398 + $adminimizeoptions[ '_mw_adminimize_cat_full' ] = (int) $_POST[ '_mw_adminimize_cat_full' ];
857 1399 } else {
858 - $adminimizeoptions['_mw_adminimize_timestamp'] = 0;
1400 + $adminimizeoptions[ '_mw_adminimize_cat_full' ] = 0;
859 1401 }
860 -
861 - if (isset($_POST['mw_adminimize_disabled_menu_items'])) {
862 - $adminimizeoptions['mw_adminimize_disabled_menu_items'] = $_POST['mw_adminimize_disabled_menu_items'];
1402 +
1403 + if ( isset( $_POST[ '_mw_adminimize_db_redirect' ] ) ) {
1404 + $adminimizeoptions[ '_mw_adminimize_db_redirect' ] = (int) $_POST[ '_mw_adminimize_db_redirect' ];
863 1405 } else {
864 - $adminimizeoptions['mw_adminimize_disabled_menu_items'] = array();
1406 + $adminimizeoptions[ '_mw_adminimize_db_redirect' ] = 0;
865 1407 }
866 -
867 - if (isset($_POST['mw_adminimize_disabled_submenu_items'])) {
868 - $adminimizeoptions['mw_adminimize_disabled_submenu_items'] = $_POST['mw_adminimize_disabled_submenu_items'];
1408 +
1409 + if ( isset( $_POST[ '_mw_adminimize_ui_redirect' ] ) ) {
1410 + $adminimizeoptions[ '_mw_adminimize_ui_redirect' ] = (int) $_POST[ '_mw_adminimize_ui_redirect' ];
869 1411 } else {
870 - $adminimizeoptions['mw_adminimize_disabled_submenu_items'] = array();
1412 + $adminimizeoptions[ '_mw_adminimize_ui_redirect' ] = 0;
871 1413 }
872 1414
873 - if (isset($_POST['mw_adminimize_disabled_menu_adm_items'])) {
874 - $adminimizeoptions['mw_adminimize_disabled_menu_adm_items'] = $_POST['mw_adminimize_disabled_menu_adm_items'];
1415 + if ( isset( $_POST[ '_mw_adminimize_advice' ] ) ) {
1416 + $adminimizeoptions[ '_mw_adminimize_advice' ] = (int) $_POST[ '_mw_adminimize_advice' ];
875 1417 } else {
876 - $adminimizeoptions['mw_adminimize_disabled_menu_adm_items'] = array();
1418 + $adminimizeoptions[ '_mw_adminimize_advice' ] = 0;
877 1419 }
878 -
879 - if (isset($_POST['mw_adminimize_disabled_submenu_adm_items'])) {
880 - $adminimizeoptions['mw_adminimize_disabled_submenu_adm_items'] = $_POST['mw_adminimize_disabled_submenu_adm_items'];
1420 +
1421 + if ( isset( $_POST[ '_mw_adminimize_advice_txt' ] ) ) {
1422 + $adminimizeoptions[ '_mw_adminimize_advice_txt' ] = wp_kses(
1423 + $_POST[ '_mw_adminimize_advice_txt' ],
1424 + array(
1425 + 'a' => array(
1426 + 'href' => array(),
1427 + 'title' => array()
1428 + ),
1429 + 'br' => array(),
1430 + 'em' => array(),
1431 + 'strong' => array(),
1432 + )
1433 + );
881 1434 } else {
882 - $adminimizeoptions['mw_adminimize_disabled_submenu_adm_items'] = array();
1435 + $adminimizeoptions[ '_mw_adminimize_advice_txt' ] = '';
883 1436 }
884 -
885 - if (isset($_POST['mw_adminimize_disabled_metaboxes_post_items'])) {
886 - $adminimizeoptions['mw_adminimize_disabled_metaboxes_post_items'] = $_POST['mw_adminimize_disabled_metaboxes_post_items'];
1437 +
1438 + if ( isset( $_POST[ '_mw_adminimize_timestamp' ] ) ) {
1439 + $adminimizeoptions[ '_mw_adminimize_timestamp' ] = (int) $_POST[ '_mw_adminimize_timestamp' ];
887 1440 } else {
888 - $adminimizeoptions['mw_adminimize_disabled_metaboxes_post_items'] = array();
1441 + $adminimizeoptions[ '_mw_adminimize_timestamp' ] = 0;
889 1442 }
890 -
891 - if (isset($_POST['mw_adminimize_disabled_metaboxes_page_items'])) {
892 - $adminimizeoptions['mw_adminimize_disabled_metaboxes_page_items'] = $_POST['mw_adminimize_disabled_metaboxes_page_items'];
1443 +
1444 + if ( isset( $_POST[ '_mw_adminimize_db_redirect_txt' ] ) ) {
1445 + $adminimizeoptions[ '_mw_adminimize_db_redirect_txt' ] = esc_url( $_POST[ '_mw_adminimize_db_redirect_txt' ] );
893 1446 } else {
894 - $adminimizeoptions['mw_adminimize_disabled_metaboxes_page_items'] = array();
1447 + $adminimizeoptions[ '_mw_adminimize_db_redirect_txt' ] = '';
895 1448 }
896 -
897 - if (isset($_POST['mw_adminimize_disabled_metaboxes_post_adm_items'])) {
898 - $adminimizeoptions['mw_adminimize_disabled_metaboxes_post_adm_items'] = $_POST['mw_adminimize_disabled_metaboxes_post_adm_items'];
1449 +
1450 + // menu update
1451 + foreach ( $user_roles as $role ) {
1452 + if ( isset( $_POST[ 'mw_adminimize_disabled_menu_' . $role . '_items' ] ) ) {
1453 + $adminimizeoptions[ 'mw_adminimize_disabled_menu_' . $role . '_items' ] =
1454 + $_POST[ 'mw_adminimize_disabled_menu_' . $role . '_items' ];
1455 + } else {
1456 + $adminimizeoptions[ 'mw_adminimize_disabled_menu_' . $role . '_items' ] = array();
1457 + }
1458 +
1459 + if ( isset( $_POST[ 'mw_adminimize_disabled_submenu_' . $role . '_items' ] ) ) {
1460 + $adminimizeoptions[ 'mw_adminimize_disabled_submenu_' . $role . '_items' ] =
1461 + $_POST[ 'mw_adminimize_disabled_submenu_' . $role . '_items' ];
1462 + } else {
1463 + $adminimizeoptions[ 'mw_adminimize_disabled_submenu_' . $role . '_items' ] = array();
1464 + }
1465 + }
1466 +
1467 + // @ToDo After release of WP 4.7, switch to sanitize_textarea_field()
1468 +
1469 + // own menu slug
1470 + if ( isset( $_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' ] )
1473 + );
899 1474 } else {
900 - $adminimizeoptions['mw_adminimize_disabled_metaboxes_post_adm_items'] = array();
1475 + $adminimizeoptions[ '_mw_adminimize_own_menu_slug' ] = '';
901 1476 }
902 -
903 - if (isset($_POST['mw_adminimize_disabled_metaboxes_page_adm_items'])) {
904 - $adminimizeoptions['mw_adminimize_disabled_metaboxes_page_adm_items'] = $_POST['mw_adminimize_disabled_metaboxes_page_adm_items'];
1477 + // own custom menu slug
1478 + if ( isset( $_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' ] )
1481 + );
905 1482 } else {
906 - $adminimizeoptions['mw_adminimize_disabled_metaboxes_page_adm_items'] = array();
1483 + $adminimizeoptions[ '_mw_adminimize_own_menu_custom_slug' ] = '';
907 1484 }
908 1485
909 - update_option('mw_adminimize', $adminimizeoptions);
910 - $adminimizeoptions = get_option('mw_adminimize');
911 -
1486 + // global_options, metaboxes update
1487 + foreach ( $user_roles as $role ) {
1488 +
1489 + // global options
1490 + if ( isset( $_POST[ 'mw_adminimize_disabled_global_option_' . $role . '_items' ] ) ) {
1491 + $adminimizeoptions[ 'mw_adminimize_disabled_global_option_' . $role . '_items' ] =
1492 + $_POST[ 'mw_adminimize_disabled_global_option_' . $role . '_items' ];
1493 + } else {
1494 + $adminimizeoptions[ 'mw_adminimize_disabled_global_option_' . $role . '_items' ] = array();
1495 + }
1496 +
1497 + if ( isset( $_POST[ 'mw_adminimize_disabled_metaboxes_post_' . $role . '_items' ] ) ) {
1498 + $adminimizeoptions[ 'mw_adminimize_disabled_metaboxes_post_' . $role . '_items' ] =
1499 + $_POST[ 'mw_adminimize_disabled_metaboxes_post_' . $role . '_items' ];
1500 + } else {
1501 + $adminimizeoptions[ 'mw_adminimize_disabled_metaboxes_post_' . $role . '_items' ] = array();
1502 + }
1503 +
1504 + if ( isset( $_POST[ 'mw_adminimize_disabled_metaboxes_page_' . $role . '_items' ] ) ) {
1505 + $adminimizeoptions[ 'mw_adminimize_disabled_metaboxes_page_' . $role . '_items' ] =
1506 + $_POST[ 'mw_adminimize_disabled_metaboxes_page_' . $role . '_items' ];
1507 + } else {
1508 + $adminimizeoptions[ 'mw_adminimize_disabled_metaboxes_page_' . $role . '_items' ] = array();
1509 + }
1510 +
1511 + foreach ( $post_types as $post_type ) {
1512 + if ( isset( $_POST[ 'mw_adminimize_disabled_metaboxes_' . $post_type . '_' . $role . '_items' ] ) ) {
1513 + $adminimizeoptions[ 'mw_adminimize_disabled_metaboxes_' . $post_type . '_' . $role . '_items' ] =
1514 + $_POST[ 'mw_adminimize_disabled_metaboxes_' . $post_type . '_' . $role . '_items' ];
1515 + } else {
1516 + $adminimizeoptions[ 'mw_adminimize_disabled_metaboxes_' . $post_type . '_' . $role . '_items' ] = array();
1517 + }
1518 + }
1519 +
1520 + if ( isset( $_POST[ 'mw_adminimize_disabled_link_option_' . $role . '_items' ] ) ) {
1521 + $adminimizeoptions[ 'mw_adminimize_disabled_link_option_' . $role . '_items' ] =
1522 + $_POST[ 'mw_adminimize_disabled_link_option_' . $role . '_items' ];
1523 + } else {
1524 + $adminimizeoptions[ 'mw_adminimize_disabled_link_option_' . $role . '_items' ] = array();
1525 + }
1526 +
1527 + // wp nav menu options
1528 + if ( isset( $_POST[ 'mw_adminimize_disabled_nav_menu_option_' . $role . '_items' ] ) ) {
1529 + $adminimizeoptions[ 'mw_adminimize_disabled_nav_menu_option_' . $role . '_items' ] =
1530 + $_POST[ 'mw_adminimize_disabled_nav_menu_option_' . $role . '_items' ];
1531 + } else {
1532 + $adminimizeoptions[ 'mw_adminimize_disabled_nav_menu_option_' . $role . '_items' ] = array();
1533 + }
1534 +
1535 + // widget options
1536 + if ( isset( $_POST[ 'mw_adminimize_disabled_widget_option_' . $role . '_items' ] ) ) {
1537 + $adminimizeoptions[ 'mw_adminimize_disabled_widget_option_' . $role . '_items' ] =
1538 + $_POST[ 'mw_adminimize_disabled_widget_option_' . $role . '_items' ];
1539 + } else {
1540 + $adminimizeoptions[ 'mw_adminimize_disabled_widget_option_' . $role . '_items' ] = array();
1541 + }
1542 +
1543 + // wp dashboard option
1544 + if ( isset( $_POST[ 'mw_adminimize_disabled_dashboard_option_' . $role . '_items' ] ) ) {
1545 + $adminimizeoptions[ 'mw_adminimize_disabled_dashboard_option_' . $role . '_items' ] =
1546 + $_POST[ 'mw_adminimize_disabled_dashboard_option_' . $role . '_items' ];
1547 + } else {
1548 + $adminimizeoptions[ 'mw_adminimize_disabled_dashboard_option_' . $role . '_items' ] = array();
1549 + }
1550 + }
1551 +
1552 + // own options
1553 + if ( isset( $_POST[ '_mw_adminimize_own_values' ] ) ) {
1554 + $adminimizeoptions[ '_mw_adminimize_own_values' ] = stripslashes(
1555 + wp_strip_all_tags( $_POST[ '_mw_adminimize_own_values' ] )
1556 + );
1557 + } else {
1558 + $adminimizeoptions[ '_mw_adminimize_own_values' ] = '';
1559 + }
1560 +
1561 + if ( isset( $_POST[ '_mw_adminimize_own_options' ] ) ) {
1562 + $adminimizeoptions[ '_mw_adminimize_own_options' ] = stripslashes(
1563 + wp_strip_all_tags( $_POST[ '_mw_adminimize_own_options' ] )
1564 + );
1565 + } else {
1566 + $adminimizeoptions[ '_mw_adminimize_own_options' ] = '';
1567 + }
1568 +
1569 + // own post options
1570 + if ( isset( $_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' ] )
1573 + );
1574 + } else {
1575 + $adminimizeoptions[ '_mw_adminimize_own_post_values' ] = '';
1576 + }
1577 +
1578 + if ( isset( $_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' ] )
1581 + );
1582 + } else {
1583 + $adminimizeoptions[ '_mw_adminimize_own_post_options' ] = '';
1584 + }
1585 +
1586 + // own page options
1587 + if ( isset( $_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' ] )
1590 + );
1591 + } else {
1592 + $adminimizeoptions[ '_mw_adminimize_own_page_values' ] = '';
1593 + }
1594 +
1595 + if ( isset( $_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' ] )
1598 + );
1599 + } else {
1600 + $adminimizeoptions[ '_mw_adminimize_own_page_options' ] = '';
1601 + }
1602 +
1603 + // own custom post options
1604 + foreach ( $post_types as $post_type ) {
1605 + if ( isset( $_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 ] )
1608 + );
1609 + } else {
1610 + $adminimizeoptions[ '_mw_adminimize_own_values_' . $post_type ] = '';
1611 + }
1612 +
1613 + if ( isset( $_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 ] )
1616 + );
1617 + } else {
1618 + $adminimizeoptions[ '_mw_adminimize_own_options_' . $post_type ] = '';
1619 + }
1620 + }
1621 +
1622 + // own link options
1623 + if ( isset( $_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' ] )
1626 + );
1627 + } else {
1628 + $adminimizeoptions[ '_mw_adminimize_own_link_values' ] = '';
1629 + }
1630 +
1631 + if ( isset( $_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' ] )
1634 + );
1635 + } else {
1636 + $adminimizeoptions[ '_mw_adminimize_own_link_options' ] = '';
1637 + }
1638 +
1639 + // wp nav menu options
1640 + if ( isset( $_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' ] )
1643 + );
1644 + } else {
1645 + $adminimizeoptions[ '_mw_adminimize_own_nav_menu_values' ] = '';
1646 + }
1647 +
1648 + if ( isset( $_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' ] )
1651 + );
1652 + } else {
1653 + $adminimizeoptions[ '_mw_adminimize_own_nav_menu_options' ] = '';
1654 + }
1655 +
1656 + // widget options
1657 + if ( isset( $_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' ] )
1660 + );
1661 + } else {
1662 + $adminimizeoptions[ '_mw_adminimize_own_widget_values' ] = '';
1663 + }
1664 +
1665 + if ( isset( $_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' ] )
1668 + );
1669 + } else {
1670 + $adminimizeoptions[ '_mw_adminimize_own_widget_options' ] = '';
1671 + }
1672 +
1673 + // own dashboard options
1674 + if ( isset( $_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' ] )
1677 + );
1678 + } else {
1679 + $adminimizeoptions[ '_mw_adminimize_own_dashboard_values' ] = '';
1680 + }
1681 +
1682 + if ( isset( $_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' ] )
1685 + );
1686 + } else {
1687 + $adminimizeoptions[ '_mw_adminimize_own_dashboard_options' ] = '';
1688 + }
1689 +
1690 + $adminimizeoptions[ 'mw_adminimize_dashboard_widgets' ] = _mw_adminimize_get_option_value(
1691 + 'mw_adminimize_dashboard_widgets'
1692 + );
1693 +
1694 + if ( isset( $GLOBALS[ 'menu' ] ) ) {
1695 + $adminimizeoptions[ 'mw_adminimize_default_menu' ] = $GLOBALS[ 'menu' ];
1696 + }
1697 + if ( isset( $GLOBALS[ 'submenu' ] ) ) {
1698 + $adminimizeoptions[ 'mw_adminimize_default_submenu' ] = $GLOBALS[ 'submenu' ];
1699 + }
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 +
1714 + // update
1715 + $update_status = _mw_adminimize_update_option( $adminimizeoptions );
1716 +
912 1717 $myErrors = new _mw_adminimize_message_class();
913 - $myErrors = '<div id="message" class="updated fade"><p>' . $myErrors->get_error('_mw_adminimize_update') . '</p></div>';
914 - echo $myErrors;
1718 + if ( $update_status ) {
1719 + $message = $myErrors->get_error(
1720 + '_mw_adminimize_update'
1721 + );
1722 + } else {
1723 + $message = $myErrors->get_error(
1724 + '_mw_adminimize_access_denied'
1725 + );
1726 + }
1727 + echo '<div id="message" class="notice notice-success"><p>' . $message . '</p></div>';
1728 +
1729 + return TRUE;
915 1730 }
916 1731
917 -
918 1732 /**
919 1733 * Delete options in database
920 1734 */
921 -function _mw_adminimize_deinstall() {
1735 +function _mw_adminimize_uninstall() {
922 1736
923 - delete_option('mw_adminimize');
924 -
925 - delete_option('_mw_adminimize_sidebar_wight');
926 - delete_option('_mw_adminimize_user_info');
927 - delete_option('_mw_adminimize_footer');
928 - delete_option('_mw_adminimize_writescroll');
929 - delete_option('_mw_adminimize_tb_window');
930 - delete_option('_mw_adminimize_db_redirect');
931 - delete_option('_mw_adminimize_ui_redirect');
932 - delete_option('_mw_adminimize_advice');
933 - delete_option('_mw_adminimize_advice_txt');
934 - delete_option('_mw_adminimize_timestamp');
935 -
936 - delete_option('mw_adminimize_default_menu');
937 - delete_option('mw_adminimize_default_submenu');
938 - delete_option('mw_adminimize_disabled_menu');
939 - delete_option('mw_adminimize_disabled_submenu');
940 - delete_option('mw_adminimize_disabled_menu_adm');
941 - delete_option('mw_adminimize_disabled_submenu_adm');
942 -
943 - delete_option('mw_adminimize_default_metaboxes_post');
944 - delete_option('mw_adminimize_disabled_metaboxes_page-adm');
945 - delete_option('mw_adminimize_disabled_metaboxes_post');
946 - delete_option('mw_adminimize_disabled_metaboxes_page');
947 - delete_option('mw_adminimize_disabled_metaboxes_post_adm');
948 - delete_option('mw_adminimize_disabled_metaboxes_page_adm');
1737 + wp_cache_delete( 'mw_adminimize' );
1738 + delete_site_option( 'mw_adminimize' );
1739 + delete_option( 'mw_adminimize' );
949 1740 }
950 1741
951 -
952 1742 /**
953 1743 * Install options in database
954 1744 */
955 1745 function _mw_adminimize_install() {
1746 +
1747 + if ( ! is_admin() ) {
1748 + return;
1749 + }
1750 +
1751 + // If is AJAX Call.
1752 + if ( defined('DOING_AJAX') && DOING_AJAX ) {
1753 + return;
1754 + }
1755 +
956 1756 global $menu, $submenu;
957 1757
1758 + $user_roles = _mw_adminimize_get_all_user_roles();
958 1759 $adminimizeoptions = array();
959 -
960 - $adminimizeoptions['mw_adminimize_disabled_menu_items'] = array();
961 - $adminimizeoptions['mw_adminimize_disabled_submenu_items'] = array();
962 - $adminimizeoptions['mw_adminimize_disabled_menu_adm_items'] = array();
963 - $adminimizeoptions['mw_adminimize_disabled_submenu_adm_items'] = array();
964 -
965 - $adminimizeoptions['mw_adminimize_disabled_metaboxes_post_items'] = array();
966 - $adminimizeoptions['mw_adminimize_disabled_metaboxes_page_items'] = array();
967 - $adminimizeoptions['mw_adminimize_disabled_metaboxes_post_adm_items'] = array();
968 - $adminimizeoptions['mw_adminimize_disabled_metaboxes_page_adm_items'] = array();
969 -
970 - $adminimizeoptions['mw_adminimize_default_menu'] = $menu;
971 - $adminimizeoptions['mw_adminimize_default_submenu'] = $submenu;
972 -
973 - add_option('mw_adminimize', $adminimizeoptions);
1760 +
1761 + foreach ( $user_roles as $role ) {
1762 + $adminimizeoptions[ 'mw_adminimize_disabled_menu_' . $role . '_items' ] = array();
1763 + $adminimizeoptions[ 'mw_adminimize_disabled_submenu_' . $role . '_items' ] = array();
1764 + $adminimizeoptions[ 'mw_adminimize_disabled_admin_bar_' . $role . '_items' ] = array();
1765 + $adminimizeoptions[ 'mw_adminimize_disabled_global_option_' . $role . '_items' ] = array();
1766 + $adminimizeoptions[ 'mw_adminimize_disabled_metaboxes_post_' . $role . '_items' ] = array();
1767 + $adminimizeoptions[ 'mw_adminimize_disabled_metaboxes_page_' . $role . '_items' ] = array();
1768 + $args = array(
1769 + 'public' => TRUE,
1770 + '_builtin' => FALSE,
1771 + );
1772 + foreach ( get_post_types( $args ) as $post_type ) {
1773 + $adminimizeoptions[ 'mw_adminimize_disabled_metaboxes_' . $post_type . '_' . $role . '_items' ] = array();
1774 + }
1775 + }
1776 +
1777 + $adminimizeoptions[ 'mw_adminimize_default_menu' ] = $menu;
1778 + $adminimizeoptions[ 'mw_adminimize_default_submenu' ] = $submenu;
1779 +
1780 + if ( _mw_adminimize_is_active_on_multisite() ) {
1781 + add_site_option( 'mw_adminimize', $adminimizeoptions );
1782 + } else {
1783 + add_option( 'mw_adminimize', $adminimizeoptions );
1784 + }
1785 + wp_cache_add( 'mw_adminimize', $adminimizeoptions );
974 1786 }
975 -?>
1787 +
1788 +/**
1789 + * Make sure adminimize option is complete when a role json file is imported
1790 + *
1791 + * @param array $roles_options
1792 + *
1793 + * @return array
1794 + */
1795 +function _mw_adminimize_roles_complete_options( $roles_options ){
1796 +
1797 + $adminimizeoption = _mw_adminimize_get_option_value();
1798 +
1799 + foreach ( $roles_options as $role_option_name => $role_option_value ){
1800 + $adminimizeoption[$role_option_name] = $role_option_value;
1801 + }
1802 +
1803 + return $adminimizeoption;
1804 +}
1805 +
1806 +/**
1807 + * Check if options comes from roles adminimize settings export
1808 + *
1809 + * @param array $options
1810 + *
1811 + * @return bool
1812 + */
1813 +function _mw_adminimize_is_roles_options_import( $options ){
1814 + global $wp_roles;
1815 +
1816 + $roles_options = [];
1817 + foreach ( $wp_roles->role_names as $role_slug => $role_name ){
1818 +
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 + );
1824 +
1825 + if ( empty( $roles_options ) ){
1826 + $roles_options = $role_options;
1827 + } else {
1828 + $roles_options = array_merge( $roles_options, $role_options );
1829 + }
1830 + }
1831 +
1832 + if ( count( $options ) === count( $roles_options ) ){
1833 + return true;
1834 + }
1835 +}