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 +1630 -752 1.31.11.9 View file →
@@ -1,957 +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.3
10 -Last Update: 01.08.2008 08:35:48
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' );
52 + $plugin_data = get_plugin_data( __FILE__ );
28 53
54 + return $plugin_data[ $value ];
55 +}
29 56
57 +/**
58 + * Load language files.
59 + */
30 60 function _mw_adminimize_textdomain() {
31 61
32 - if (function_exists('load_plugin_textdomain')) {
33 - if ( !defined('WP_PLUGIN_DIR') ) {
34 - load_plugin_textdomain('adminimize', str_replace( ABSPATH, '', dirname(__FILE__) ) . '/languages');
35 - } else {
36 - load_plugin_textdomain('adminimize', false, dirname(plugin_basename(__FILE__)) . '/languages');
37 - }
38 - }
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 + );
39 67 }
40 68
41 -
42 69 /**
43 - * some basic security with nonce
44 - * @var $_mw_adminimize_nonce
70 + * Exclude the Super Admin of Multisite.
71 + *
72 + * @return bool
45 73 */
46 -if ( !function_exists('wp_nonce_field') ) {
47 - function _mw_adminimize_nonce_field($action = -1) {
48 - return;
74 +function _mw_adminimize_exclude_super_admin() {
75 +
76 + if ( ! function_exists( 'is_super_admin' ) ) {
77 + return FALSE;
49 78 }
50 - $_mw_adminimize_nonce = -1;
51 -} else {
52 - function _mw_adminimize_nonce_field($action = -1) {
53 - return wp_nonce_field($action);
79 +
80 + if ( ! is_super_admin() ) {
81 + return FALSE;
54 82 }
55 - $_mw_adminimize_nonce = '_mw_adminimize_update_key';
83 +
84 + if ( 1 === (int) _mw_adminimize_get_option_value( '_mw_adminimize_exclude_super_admin' ) ) {
85 + return TRUE;
86 + }
87 +
88 + return FALSE;
56 89 }
57 90
58 -
59 91 /**
60 - * some basics for message
61 - * @var $_mw_adminimize_nonce
92 + * Get the status, if is on the settings page.
93 + *
94 + * @return bool
62 95 */
63 -class _mw_adminimize_message_class {
64 - function _mw_adminimize_message_class() {
65 - $this->localizionName = 'adminimize';
66 - $this->errors = new WP_Error();
67 - $this->initialize_errors();
96 +function _mw_adminimize_exclude_settings_page() {
97 +
98 + if ( ! is_admin() ) {
99 + return false;
68 100 }
69 -
70 - /**
71 - get_error - Returns an error message based on the passed code
72 - Parameters - $code (the error code as a string)
73 - Returns an error message
74 - */
75 - function get_error($code = '') {
76 - $errorMessage = $this->errors->get_error_message($code);
77 - if ($errorMessage == null) {
78 - return __("Unbekannter Fehler.", $this->localizionName);
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;
79 116 }
80 - return $errorMessage;
81 117 }
82 -
83 - // Initializes all the error messages
84 - function initialize_errors() {
85 - $this->errors->add('_mw_adminimize_update', __('Die Einstellungen wurden gespeichert.', 'adminimize'));
86 - $this->errors->add('_mw_adminimize_access_denied', __('Du hast nicht ausreichend Rechte um diese Aktion durchzuf&uuml;hren!', 'adminimize'));
87 - $this->errors->add('_mw_adminimize_deinstall', __('Die Einstellungen wurde gel&ouml;scht!', 'adminimize'));
88 - $this->errors->add('_mw_adminimize_deinstall_yes', __('Checkbox setzen, wenn wirklich deinstalliert werden soll!', 'adminimize'));
89 - $this->errors->add('_mw_adminimize_get_option', __('Menu und Submenu k&ouml;nnen nicht geladen werden!', 'adminimize'));
90 - $this->errors->add('_mw_adminimize_set_theme', __('Backend-Theme wurde zugewiesen!', 'adminimize'));
91 - }
118 +
119 + // Don't filter on settings page
120 + return FALSE !== strpos( $page, 'adminimize' );
92 121 }
93 122
94 -
95 123 /**
96 - * check user-option and add new style
97 - * @uses $pagenow
124 + * Get status, if the plugin active network wide.
125 + *
126 + * @return bool
98 127 */
99 -function _mw_adminimize_init() {
100 - global $pagenow, $menu, $submenu;
128 +function _mw_adminimize_is_active_on_multisite() {
101 129
102 - $disabled_metaboxes_post = get_option('mw_adminimize_disabled_metaboxes_post');
103 - $disabled_metaboxes_page = get_option('mw_adminimize_disabled_metaboxes_page');
104 - $disabled_metaboxes_post_adm = get_option('mw_adminimize_disabled_metaboxes_post_adm');
105 - $disabled_metaboxes_page_adm = get_option('mw_adminimize_disabled_metaboxes_page_adm');
130 + if ( ! function_exists( 'is_plugin_active_for_network' ) ) {
131 + require_once ABSPATH . '/wp-admin/includes/plugin.php';
132 + }
106 133
107 - $_mw_admin_color = get_user_option('admin_color');
134 + /**
135 + * Allow different adminimize options per site on multisite.
136 + *
137 + * @since 1.11.6
138 + *
139 + * @param bool
140 + */
141 + $force_single_site_usage = apply_filters( 'adminimize_mu_force_options_per_site', false );
108 142
109 - if ( ($_mw_admin_color == 'mw_fresh') ||
110 - ($_mw_admin_color == 'mw_classic') ||
111 - ($_mw_admin_color == 'mw_colorblind') ||
112 - ($_mw_admin_color == 'mw_grey') ||
113 - ($_mw_admin_color == 'mw_fresh_ozh_am') ||
114 - ($_mw_admin_color == 'mw_classic_ozh_am') ||
115 - ($_mw_admin_color == 'mw_fresh_lm') ||
116 - ($_mw_admin_color == 'mw_classic_lm') ||
117 - ($_mw_admin_color == 'mw_wp23')
118 - ) {
119 - if ( ($_mw_admin_color == 'mw_fresh') ||
120 - ($_mw_admin_color == 'mw_classic') ||
121 - ($_mw_admin_color == 'mw_colorblind') ||
122 - ($_mw_admin_color == 'mw_grey') ||
123 - ($_mw_admin_color == 'mw_wp23')
124 - ) {
125 - add_action('admin_head', '_mw_adminimize_adminmenu', 1);
126 - }
143 + if ( is_multisite()
144 + && is_plugin_active_for_network( FB_ADMINIMIZE_BASENAME )
145 + && ! $force_single_site_usage ) {
146 + return TRUE;
147 + }
127 148
128 - if ( ('post-new.php' == $pagenow) || ('post.php' == $pagenow) ) {
129 - add_action('admin_head', '_mw_adminimize_remove_box', 99);
130 - add_action('admin_head', '_mw_adminimize_remove_tb_window');
131 -
132 - //add_filter('image_downsize', '_mw_adminimize_image_downsize', 1, 3);
133 -
134 - if ( !in_array('#categorydivsb', $disabled_metaboxes_post) || !in_array('#categorydivsb', $disabled_metaboxes_post_adm) )
135 - add_action('submitpost_box', '_mw_adminimize_sidecat_list_category_box');
136 - if ( !in_array('#tagsdivsb', $disabled_metaboxes_post) || !in_array('#tagsdivsb', $disabled_metaboxes_post_adm) )
137 - add_action('submitpost_box', '_mw_adminimize_sidecat_list_tag_box');
138 - if ( in_array('media_buttons', $disabled_metaboxes_post) || in_array('media_buttons', $disabled_metaboxes_post_adm) )
139 - remove_action('media_buttons', 'media_buttons');
140 - }
149 + return FALSE;
150 +}
141 151
142 - if ( ('page-new.php' == $pagenow) || ('page.php' == $pagenow) ) {
143 - add_action('admin_head', '_mw_adminimize_remove_tb_window');
144 -
145 - //add_filter('image_downsize', '_mw_adminimize_image_downsize', 1, 3);
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() {
146 160
147 - if ( in_array('media_buttons', $disabled_metaboxes_page) || in_array('media_buttons', $disabled_metaboxes_page_adm) )
148 - remove_action('media_buttons', 'media_buttons');
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.
149 170 }
171 + }
150 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 + );
151 179 }
152 180
153 - if ( ('post-new.php' == $pagenow) || ('page-new.php' == $pagenow) || ('page.php' == $pagenow) || ('post.php' == $pagenow) ) {
154 -
155 - $_mw_adminimize_writescroll = get_option('_mw_adminimize_writescroll');
156 - switch ($_mw_adminimize_writescroll) {
157 - case 1:
158 - add_action('admin_head', '_mw_adminimize_writescroll');
159 - break;
160 - }
161 - $_mw_adminimize_tb_window = get_option('_mw_adminimize_tb_window');
162 - switch ($_mw_adminimize_tb_window) {
163 - case 1:
164 - add_action('admin_head', '_mw_adminimize_tb_window');
165 - break;
166 - }
167 - // set user option in edit-area
168 - add_action('admin_head', '_mw_adminimize_set_user_option_edit');
169 - }
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 );
189 +}
170 190
171 - // set menu option
172 - add_action('admin_head', '_mw_adminimize_set_menu_option', 1);
191 +/**
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
197 + */
198 +function _mw_adminimize_get_all_user_roles_names() {
173 199
174 - // set metabox option
175 - add_action('admin_head', '_mw_adminimize_set_metabox_option', 1);
200 + /** @var $wp_roles WP_Roles */
201 + global $wp_roles;
202 + $user_roles_names = array();
176 203
177 - add_action('in_admin_footer', '_mw_adminimize_admin_footer');
178 -
179 - update_option('mw_adminimize_default_menu', $menu);
180 - update_option('mw_adminimize_default_submenu', $submenu);
181 -}
204 + foreach ( $wp_roles->role_names as $role_name => $data ) {
182 205
183 -add_action('init', '_mw_adminimize_textdomain');
184 -add_action('admin_menu', '_mw_adminimize_add_settings_page');
185 -add_action('admin_menu', '_mw_adminimize_remove_dashboard');
186 -add_action('admin_init', '_mw_adminimize_init', 1);
187 -add_action('admin_init', '_mw_adminimize_admin_styles', 1);
206 + $data = translate_user_role( $data );
207 + $user_roles_names[] = $data;
208 + }
188 209
189 -register_activation_hook(__FILE__, '_mw_adminimize_install');
190 -//register_deactivation_hook(__FILE__, '_mw_adminimize_deinstall');
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 + );
222 + }
191 223
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 +}
192 233
193 234 /**
194 - * remove tb_window of media-uplader
195 - * @echo script
235 + * Get post type.
236 + *
237 + * @return null|string String of the post type.
196 238 */
197 -function _mw_adminimize_remove_tb_window() {
198 -
199 - $_mw_adminimize_remove_tb_window = "\n";
200 - $_mw_adminimize_remove_tb_window .= '<script type="text/javascript">' . "\n";
201 - $_mw_adminimize_remove_tb_window .= "\t" . 'jQuery(document).ready(function() { jQuery(\'#TB_window\').remove(); });' . "\n";
202 - $_mw_adminimize_remove_tb_window .= '</script>' . "\n";
203 -
204 - print($_mw_adminimize_remove_tb_window);
239 +function _mw_adminimize_get_current_post_type() {
240 +
241 + global $post, $typenow, $current_screen;
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;
246 + }
247 +
248 + // Check the global $typenow - set in admin.php
249 + if ( $typenow ) {
250 + return $typenow;
251 + }
252 +
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 + }
257 +
258 + // lastly check the post_type querystring
259 + if ( isset( $_REQUEST['post_type'] ) ) {
260 + return sanitize_key( $_REQUEST[ 'post_type' ] );
261 + }
262 +
263 + // we do not know the post type!
264 + return NULL;
205 265 }
206 266
207 -
208 267 /**
209 - * new tb_window of media-uplader
268 + * Check user-option and add new style.
210 269 */
211 -function _mw_adminimize_tb_window() {
212 -
213 - ?>
214 - <script type="text/javascript">
215 - // thickbox settings
216 - jQuery(function($) {
217 - tb_position = function() {
218 - var tbWindow = $('#TB_window');
219 - var width = $(window).width();
220 - var H = $(window).height();
221 - var W = ( 1720 < width ) ? 1720 : width;
222 -
223 - if ( tbWindow.size() ) {
224 - tbWindow.width( W - 50 ).height( H - 45 );
225 - $('#TB_iframeContent').width( W - 50 ).height( H - 75 );
226 - tbWindow.css({'margin-left': '-' + parseInt((( W - 50 ) / 2),10) + 'px'});
227 - if ( ! ( $.browser.msie && $.browser.version.substr(0,1) < 7 ) )
228 - tbWindow.css({'top':'20px','margin-top':'0'});
229 - $('#TB_title').css({'background-color':'#222','color':'#cfcfcf'});
230 - };
231 -
232 - return $('a.thickbox').each( function() {
233 - var href = $(this).attr('href');
234 - if ( ! href ) return;
235 - href = href.replace(/&width=[0-9]+/g, '');
236 - href = href.replace(/&height=[0-9]+/g, '');
237 - $(this).attr( 'href', href + '&width=' + ( W - 80 ) + '&height=' + ( H - 85 ) );
238 - });
239 - };
240 -
241 - $(window).resize( function() { tb_position() } );
242 - });
243 - </script>
244 - <?php
245 -}
270 +function _mw_adminimize_admin_init() {
246 271
272 + global $pagenow, $post_type, $menu, $submenu;
247 273
248 -/**
249 - * Uses WordPress filter for image_downsize, kill wp-image-dimension
250 - * code by Andrew Rickmann
251 - * http://www.wp-fun.co.uk/
252 - * @param $value, $id, $size
253 - */
254 -function _mw_adminimize_image_downsize($value = false,$id = 0, $size = "medium") {
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 + }
255 280
256 - if ( !wp_attachment_is_image($id) )
257 - return false;
258 -
259 - $img_url = wp_get_attachment_url($id);
260 - // Mimic functionality in image_downsize function in wp-includes/media.php
261 - if ( $intermediate = image_get_intermediate_size($id, $size) ) {
262 - $img_url = str_replace(basename($img_url), $intermediate['file'], $img_url);
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 );
263 284 }
264 - elseif ( $size == 'thumbnail' ) {
265 - // fall back to the old thumbnail
266 - if ( $thumb_file = wp_get_attachment_thumb_file() && $info = getimagesize($thumb_file) ) {
267 - $img_url = str_replace(basename($img_url), basename($thumb_file), $img_url);
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 + }
291 +
292 + // Debug helper
293 + if ( class_exists( 'DebugListener' ) ) {
294 + $listener = new DebugListener();
295 + add_action( 'adminimize.log', [$listener, 'listen'], 10, 2 );
296 + add_action( 'wp_footer', array( $listener, 'dump' ), PHP_INT_MAX );
297 + }
298 +
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 + );
268 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 ];
269 353 }
270 - if ( $img_url)
271 - return array($img_url, 0, 0);
272 - return false;
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 + );
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 + }
434 + }
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 + }
273 462 }
274 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 );
275 467
276 -/**
277 - * Automatically scroll Write pages to a good position
278 - * code by Dougal Campbell
279 - * http://dougal.gunters.org/blog/2008/06/03/writescroll
280 - */
281 -function _mw_adminimize_writescroll() {
282 -
283 - ?>
284 - <script type="text/javascript">
285 - jQuery(document).ready(function() {
286 - // element to scroll
287 - var h = jQuery('html');
288 - // position to scroll to
289 - var wraptop = jQuery('div#poststuff').offset().top;
290 - var speed = 250; // ms
291 - h.animate({scrollTop: wraptop}, speed);
292 - });
293 - </script>
294 - <?php
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' );
295 475 }
296 476
477 +register_activation_hook( __FILE__, '_mw_adminimize_install' );
478 +register_uninstall_hook( __FILE__, '_mw_adminimize_uninstall' );
297 479
298 480 /**
299 - * list category-box in sidebar
300 - * @uses $post_ID
481 + * Remove the dashboard
301 482 */
302 -function _mw_adminimize_sidecat_list_category_box() {
303 - global $post_ID;
304 - ?>
483 +function _mw_adminimize_remove_dashboard() {
305 484
306 - <div class="inside" id="categorydivsb">
307 - <p><strong><?php _e("Categories"); ?></strong></p>
308 - <ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
309 - <?php wp_category_checklist($post_ID); ?>
310 - </ul>
311 - <?php if ( !defined('WP_PLUGIN_DIR') ) { // for wp <2.6 ?>
312 - <div id="category-adder" class="wp-hidden-children">
313 - <h4><a id="category-add-toggle" href="#category-add" class="hide-if-no-js" tabindex="3"><?php _e( '+ Add New Category' ); ?></a></h4>
314 - <p id="category-add" class="wp-hidden-child">
315 - <input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php _e( 'New category name' ); ?>" tabindex="3" />
316 - <?php wp_dropdown_categories( array( 'hide_empty' => 0, 'name' => 'newcat_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => __('Parent category'), 'tab_index' => 3 ) ); ?>
317 - <input type="button" id="category-add-sumbit" class="add:categorychecklist:category-add button" value="<?php _e( 'Add' ); ?>" tabindex="3" />
318 - <?php wp_nonce_field( 'add-category', '_ajax_nonce', false ); ?>
319 - <span id="category-ajax-response"></span>
320 - </p>
321 - </div>
322 - <?php } else { ?>
323 - <div id="category-adder" class="wp-hidden-children">
324 - <h4><a id="category-add-toggle" href="#category-add" class="hide-if-no-js" tabindex="3"><?php _e( '+ Add New Category' ); ?></a></h4>
325 - <p id="category-add" class="wp-hidden-child">
326 - <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"/>
327 - <br />
328 - <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 ) ); ?>
329 - <input type="button" id="category-add-sumbit" class="add:categorychecklist:category-add button" value="<?php _e( 'Add' ); ?>" tabindex="3" />
330 - <?php wp_nonce_field( 'add-category', '_ajax_nonce', false ); ?>
331 - <span id="category-ajax-response"></span>
332 - </p>
333 - </div>
334 - <?php } ?>
335 - </div>
336 -<?php
337 -}
485 + // exclude super admin
486 + if ( _mw_adminimize_exclude_super_admin() ) {
487 + return;
488 + }
338 489
490 + // Leave the settings screen from Adminimize to see all areas on settings.
491 + if ( _mw_adminimize_exclude_settings_page() ) {
492 + return;
493 + }
339 494
340 -/**
341 - * list tag-box in sidebar
342 - * @uses $post_ID
343 - */
344 -function _mw_adminimize_sidecat_list_tag_box() {
345 - global $post_ID;
495 + global $menu, $user_ID;
346 496
347 - if ( !class_exists('SimpleTagsAdmin') ) {
348 - ?>
349 - <div class="inside" id="tagsdivsb">
350 - <p><strong><?php _e('Tags'); ?></strong></p>
351 - <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>
352 - <div id="tagchecklist"></div>
353 - </div>
354 - <?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 + );
355 508 }
356 -}
357 509
510 + $disabled_menu_all = array();
511 + $disabled_submenu_all = array();
358 512
359 -/**
360 - * remove default categorydiv
361 - * @echo script
362 - */
363 -function _mw_adminimize_remove_box() {
364 -
365 - if ( function_exists('remove_meta_box') ) {
366 - if ( !class_exists('SimpleTagsAdmin') )
367 - remove_meta_box('tagsdiv', 'post', 'normal');
368 - remove_meta_box('categorydiv', 'post', 'normal');
369 - } else {
370 - $_mw_adminimize_sidecat_admin_head = "\n" . '<script type="text/javascript">' . "\n";
371 - $_mw_adminimize_sidecat_admin_head .= "\t" . 'jQuery(document).ready(function() { jQuery(\'#categorydiv\').remove(); });' . "\n";
372 - $_mw_adminimize_sidecat_admin_head .= "\t" . 'jQuery(document).ready(function() { jQuery(\'#tagsdiv\').remove(); });' . "\n";
373 - $_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 + }
374 517
375 - 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 + }
376 588 }
377 589 }
378 590
379 -
380 591 /**
381 - * reorder admin-menu
382 - * @uses $menu
383 - * @param $file
592 + * Set menu for settings
384 593 */
385 -function _mw_adminimize_adminmenu($file) {
386 - global $menu;
387 -
388 - $menu[7] = $menu[5];
389 - $menu[5] = $menu[0];
390 - $menu[32] = $menu[40];
391 - $menu[40] = $menu[35];
392 - $menu[35] = $menu[30];
393 - $menu[30] = $menu[15];
394 - unset($menu[0]);
395 - unset($menu[15]);
396 -}
594 +function _mw_adminimize_set_menu_option() {
397 595
596 + // exclude super admin
597 + if ( _mw_adminimize_exclude_super_admin() ) {
598 + return;
599 + }
398 600
399 -/**
400 - * add new adminstyle to usersettings
401 - * @param $file
402 - */
403 -function _mw_adminimize_admin_styles($file) {
404 -
405 - $_mw_adminimize_path = WP_CONTENT_URL . '/plugins/' . 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 + }
406 605
407 - // MW Adminimize Classic
408 - $styleName = 'MW Adminimize:' . ' ' . __('Classic');
409 - wp_admin_css_color (
410 - 'mw_classic', $styleName, $_mw_adminimize_path . 'mw_classic.css',
411 - array('#07273E', '#14568A', '#D54E21', '#2683AE')
412 - );
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' );
413 609
414 - // MW Adminimize Fresh
415 - $styleName = 'MW Adminimize:' . ' ' . __('Fresh');
416 - wp_admin_css_color (
417 - 'mw_fresh', $styleName, $_mw_adminimize_path . 'mw_fresh.css',
418 - array('#464646', '#CEE1EF', '#D54E21', '#2683AE')
419 - );
610 + // Object to array
611 + if ( is_object( $wp_submenu ) ) {
612 + $wp_submenu = get_object_vars( $wp_submenu );
613 + }
420 614
421 - // MW Adminimize WordPress 2.3
422 - $styleName = 'MW Adminimize:' . ' ' . __('WordPress 2.3');
423 - wp_admin_css_color (
424 - 'mw_wp23', $styleName, $_mw_adminimize_path . 'mw_wp23.css',
425 - array('#000000', '#14568A', '#448ABD', '#83B4D8')
426 - );
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 + }
427 624
428 - // MW Adminimize Colorblind
429 - $styleName = 'MW Adminimize:' . ' ' . __('Maybe i\'m colorblind');
430 - wp_admin_css_color (
431 - 'mw_colorblind', $styleName, $_mw_adminimize_path . 'mw_colorblind.css',
432 - array('#FF9419', '#F0720C', '#710001', '#550007', '#CF4529')
433 - );
625 + _mw_adminimize_debug( $wp_menu, 'Adminimize, WordPress Menu:' );
626 + _mw_adminimize_debug( $wp_submenu, 'Adminimize, WordPress Sub-Menu:' );
434 627
435 - // MW Adminimize Grey
436 - $styleName = 'MW Adminimize:' . ' ' . __('Grey');
437 - wp_admin_css_color (
438 - 'mw_grey', $styleName, $_mw_adminimize_path . 'mw_grey.css',
439 - array('#000000', '#787878', '#F0F0F0', '#D8D8D8', '#909090')
440 - );
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:' );
441 633
442 - /**
443 - * style and changes for plugin Admin Drop Down Menu
444 - * by Ozh
445 - * http://planetozh.com/blog/my-projects/wordpress-admin-menu-drop-down-css/
446 - */
447 - if ( function_exists('wp_ozh_adminmenu') ) {
448 -
449 - // MW Adminimize Classic include ozh adminmenu
450 - $styleName = 'MW Adminimize inc. Admin Drop Down Menu' . ' ' . __('Classic');
451 - wp_admin_css_color (
452 - 'mw_classic_ozh_am', $styleName, $_mw_adminimize_path . 'mw_classic_ozh_am.css',
453 - 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'
454 637 );
455 -
456 - // MW Adminimize Fresh include ozh adminmenu
457 - $styleName = 'MW Adminimize inc. Admin Drop Down Menu' . ' ' . __('Fresh');
458 - wp_admin_css_color (
459 - 'mw_fresh_ozh_am', $styleName, $_mw_adminimize_path . 'mw_fresh_ozh_am.css',
460 - array('#464646', '#CEE1EF', '#D54E21', '#2683AE')
638 + $disabled_submenu_[ $role ] = (array) _mw_adminimize_get_option_value(
639 + 'mw_adminimize_disabled_submenu_' . $role . '_items'
461 640 );
462 -
463 641 }
464 -
465 - /**
466 - * style and changes for plugin Lighter Menus
467 - * by corpodibacco
468 - * http://www.italyisfalling.com/lighter-menus
469 - */
470 - if ( function_exists('lm_build') ) {
471 -
472 - // MW Adminimize Classic include Lighter Menus
473 - $styleName = 'MW Adminimize inc. Lighter Menus' . ' ' . __('Classic');
474 - wp_admin_css_color (
475 - 'mw_classic_lm', $styleName, $_mw_adminimize_path . 'mw_classic_lm.css',
476 - array('#07273E', '#14568A', '#D54E21', '#2683AE')
477 - );
478 -
479 - // MW Adminimize Fresh include Lighter Menus
480 - $styleName = 'MW Adminimize inc. Lighter Menus' . ' ' . __('Fresh');
481 - wp_admin_css_color (
482 - 'mw_fresh_lm', $styleName, $_mw_adminimize_path . 'mw_fresh_lm.css',
483 - array('#464646', '#CEE1EF', '#D54E21', '#2683AE')
484 - );
485 -
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 + }
486 659 }
487 -}
488 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.' );
489 673
490 -/**
491 - * remove the dashbord
492 - * @author of basic Austin Matzko
493 - * http://www.ilfilosofo.com/blog/2006/05/24/plugin-remove-the-wordpress-dashboard/
494 - */
495 -function _mw_adminimize_remove_dashboard() {
496 - global $menu, $submenu, $user_ID;
674 + foreach ( $wp_menu as $key => $item ) {
497 675
498 - $disabled_menu = get_option('mw_adminimize_disabled_menu');
499 - $disabled_submenu = get_option('mw_adminimize_disabled_submenu');
500 - $disabled_menu_adm = get_option('mw_adminimize_disabled_menu_adm');
501 - $disabled_submenu_adm = get_option('mw_adminimize_disabled_submenu_adm');
676 + _mw_adminimize_debug( $item, 'Adminimize, Each Menu Item Array to check for hiding.' );
502 677
503 - // remove dashboard
504 - if ($disabled_menu != '') {
505 - if ( ( in_array('index.php', $disabled_menu) && !current_user_can('level_10') ) ||
506 - ( in_array('index.php', $disabled_submenu) && !current_user_can('level_10') ) ||
507 - ( in_array('index.php', $disabled_menu_adm) && current_user_can('level_10') ) ||
508 - ( in_array('index.php', $disabled_submenu_adm) && current_user_can('level_10') )
509 - ) {
510 -
511 - $_mw_adminimize_db_redirect = get_option('_mw_adminimize_db_redirect');
512 - switch ($_mw_adminimize_db_redirect) {
513 - case 0:
514 - $_mw_adminimize_db_redirect = 'profile.php';
515 - break;
516 - case 1:
517 - $_mw_adminimize_db_redirect = 'edit.php';
518 - break;
519 - case 2:
520 - $_mw_adminimize_db_redirect = 'edit-pages.php';
521 - break;
522 - case 3:
523 - $_mw_adminimize_db_redirect = 'post-new.php';
524 - break;
525 - case 4:
526 - $_mw_adminimize_db_redirect = 'page-new.php';
527 - break;
528 - case 5:
529 - $_mw_adminimize_db_redirect = 'edit-comments.php';
530 - 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 );
531 687 }
532 688
533 - $the_user = new WP_User($user_ID);
534 - reset($menu); $page = key($menu);
535 -
536 - while ( (__('Dashboard') != $menu[$page][0]) && next($menu) || (__('Dashboard') != $menu[$page][1]) && next($menu) )
537 - $page = key($menu);
538 -
539 - if (__('Dashboard') == $menu[$page][0] || __('Dashboard') == $menu[$page][1])
540 - unset($menu[$page]);
541 - reset($menu); $page = key($menu);
542 -
543 - while ( !$the_user->has_cap($menu[$page][1]) && next($menu) )
544 - $page = key($menu);
545 -
546 - if ( preg_match('#wp-admin/?(index.php)?$#', $_SERVER['REQUEST_URI'])) {
547 - if (function_exists('admin_url')) {
548 - wp_redirect( admin_url($_mw_adminimize_db_redirect) );
549 - } else {
550 - 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 + }
551 710 }
552 711 }
553 712 }
554 713 }
714 +
555 715 }
556 716
717 +/**
718 + * Set global options in backend in all areas.
719 + */
720 +function _mw_adminimize_set_global_option() {
557 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 +
558 777 /**
559 - * remove the flash_uploader
778 + * Set metabox options from database an area post.
560 779 */
561 -function _mw_adminimize_disable_flash_uploader() {
562 - 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 + }
563 840 }
564 841
842 +/**
843 + * Set metabox options from database an area page.
844 + */
845 +function _mw_adminimize_set_metabox_page_option() {
565 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 +
566 891 /**
567 - * set user options from database in edit-area
892 + * Set metabox options from database an area post.
568 893 */
569 -function _mw_adminimize_set_user_option_edit() {
570 -
571 - $_mw_adminimize_path = WP_CONTENT_URL . '/plugins/' . plugin_basename( dirname(__FILE__) ) . '/css/';
572 -
573 - $_mw_adminimize_sidecat_admin_head = '';
574 - $_mw_adminimize_sidebar_wight = get_option('_mw_adminimize_sidebar_wight');
575 - switch ($_mw_adminimize_sidebar_wight) {
576 - case 300:
577 - $_mw_adminimize_sidecat_admin_head .= '<link rel="stylesheet" href="' . "\n";
578 - $_mw_adminimize_sidecat_admin_head .= $_mw_adminimize_path . 'mw_300_sidebar.css';
579 - $_mw_adminimize_sidecat_admin_head .= '" type="text/css" media="all" />' . "\n";
580 - break;
581 - case 400:
582 - $_mw_adminimize_sidecat_admin_head .= '<link rel="stylesheet" href="' . "\n";
583 - $_mw_adminimize_sidecat_admin_head .= $_mw_adminimize_path . 'mw_400_sidebar.css';
584 - $_mw_adminimize_sidecat_admin_head .= '" type="text/css" media="all" />' . "\n";
585 - break;
586 - case 20:
587 - $_mw_adminimize_sidecat_admin_head .= '<link rel="stylesheet" href="' . "\n";
588 - $_mw_adminimize_sidecat_admin_head .= $_mw_adminimize_path . 'mw_20p_sidebar.css';
589 - $_mw_adminimize_sidecat_admin_head .= '" type="text/css" media="all" />' . "\n";
590 - break;
591 - case 30:
592 - $_mw_adminimize_sidecat_admin_head .= '<link rel="stylesheet" href="' . "\n";
593 - $_mw_adminimize_sidecat_admin_head .= $_mw_adminimize_path . 'mw_30p_sidebar.css';
594 - $_mw_adminimize_sidecat_admin_head .= '" type="text/css" media="all" />' . "\n";
595 - break;
894 +function _mw_adminimize_set_metabox_cp_option() {
895 +
896 + // exclude super admin
897 + if ( _mw_adminimize_exclude_super_admin() ) {
898 + return NULL;
596 899 }
597 900
598 - 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 + }
599 960 }
600 961
601 -
602 962 /**
603 - * set menu options from database
963 + * Set link options in area links of back end.
604 964 */
605 -function _mw_adminimize_set_menu_option() {
606 - global $pagenow, $menu, $submenu;
607 -
608 - $disabled_menu = get_option('mw_adminimize_disabled_menu');
609 - $disabled_submenu = get_option('mw_adminimize_disabled_submenu');
610 - $disabled_menu_adm = get_option('mw_adminimize_disabled_menu_adm');
611 - $disabled_submenu_adm = get_option('mw_adminimize_disabled_submenu_adm');
965 +function _mw_adminimize_set_link_option() {
612 966
613 - $_mw_adminimize_admin_head = "\n";
614 - $_mw_adminimize_user_info = get_option('_mw_adminimize_user_info');
615 - $_mw_adminimize_ui_redirect = get_option('_mw_adminimize_ui_redirect');
616 - switch ($_mw_adminimize_user_info) {
617 - case 1:
618 - $_mw_adminimize_admin_head .= '<script type="text/javascript">' . "\n";
619 - $_mw_adminimize_admin_head .= "\t" . 'jQuery(document).ready(function() { jQuery(\'#user_info\').remove(); });' . "\n";
620 - $_mw_adminimize_admin_head .= '</script>' . "\n";
621 - break;
622 - case 2:
623 - $_mw_adminimize_admin_head .= '<link rel="stylesheet" href="' . get_option( 'siteurl' ) . '/' . PLUGINDIR . '/' . plugin_basename( dirname(__FILE__) ) . '/css/mw_small_user_info.css" type="text/css" />' . "\n";
624 - $_mw_adminimize_admin_head .= '<script type="text/javascript">' . "\n";
625 - $_mw_adminimize_admin_head .= "\t" . 'jQuery(document).ready(function() { jQuery(\'#user_info\').remove();';
626 - if ($_mw_adminimize_ui_redirect == '1') {
627 - $_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";
628 - } else {
629 - $_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";
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' ] = '';
630 989 }
631 - $_mw_adminimize_admin_head .= '</script>' . "\n";
632 - break;
633 990 }
634 991
635 - $_mw_adminimize_footer = get_option('_mw_adminimize_footer');
636 - switch ($_mw_adminimize_footer) {
637 - case 1:
638 - $_mw_adminimize_admin_head .= '<script type="text/javascript">' . "\n";
639 - $_mw_adminimize_admin_head .= "\t" . 'jQuery(document).ready(function() { jQuery(\'#footer\').remove(); });' . "\n";
640 - $_mw_adminimize_admin_head .= '</script>' . "\n";
641 - break;
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 + }
1002 + }
642 1003 }
643 1004
644 - // timestamp open
645 - $_mw_adminimize_timestamp = get_option('_mw_adminimize_timestamp');
646 - switch ($_mw_adminimize_timestamp) {
647 - case 1:
648 - $_mw_adminimize_admin_head .= '<script type="text/javascript">' . "\n";
649 - $_mw_adminimize_admin_head .= "\t" . 'addLoadEvent(function(){jQuery(\'.edit-timestamp\').click();});' . "\n";
650 - $_mw_adminimize_admin_head .= '</script>' . "\n";
651 - 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;
652 1011 }
1012 +}
653 1013
654 - $_mw_adminimize_admin_head .= '<script type="text/javascript">
655 - /* <![CDATA[ */
656 - adminimizeL10n = {
657 - all: "' . __('Alle', 'adminimize') . '", none: "' . __('Keine', 'adminimize') . '"
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;
658 1022 }
659 - /* ]]> */
660 - </script>';
661 - $_mw_adminimize_admin_head .= '<script type="text/javascript" src="' . WP_CONTENT_URL . '/plugins/' . plugin_basename( dirname(__FILE__) ) . '/js/adminimize.js"></script>';
662 1023
663 - // set menu
664 - if ($disabled_menu != '') {
665 -
666 - // set user-menu
667 - if ( !current_user_can('level_10') ) {
668 - foreach ($menu as $index => $item) {
669 - if ($item == 'index.php')
670 - continue;
671 -
672 - if (in_array($item[2], $disabled_menu))
673 - unset($menu[$index]);
674 -
675 - if ( !empty($submenu[$item[2]]) ) {
676 - foreach ($submenu[$item[2]] as $subindex => $subitem) {
677 - if (in_array($subitem[2], $disabled_submenu))
678 - unset($submenu[$item[2]][$subindex]);
679 - }
680 - }
681 - }
1024 + // Leave the settings screen from Adminimize to see all areas on settings.
1025 + if ( _mw_adminimize_exclude_settings_page() ) {
1026 + return;
1027 + }
1028 +
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' ] = '';
682 1041 }
683 -
684 - // set admin-menu
685 - if ( current_user_can('level_10') ) {
686 - foreach ($menu as $index => $item) {
687 - if ($item == 'index.php')
688 - continue;
689 -
690 - if (in_array($item[2], $disabled_menu_adm))
691 - unset($menu[$index]);
692 -
693 - if ( !empty($submenu[$item[2]]) ) {
694 - foreach ($submenu[$item[2]] as $subindex => $subitem) {
695 - if (in_array($subitem[2], $disabled_submenu_adm))
696 - unset($submenu[$item[2]][$subindex]);
697 - }
698 - }
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 ] );
699 1053 }
700 1054 }
701 -
702 1055 }
703 -
704 - 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 + }
705 1064 }
706 1065
707 -
708 1066 /**
709 - * set metabox options from database
1067 + * Remove areas in Widget Settings
710 1068 */
711 -function _mw_adminimize_set_metabox_option() {
712 - global $pagenow;
713 -
714 - $_mw_adminimize_admin_head = "\n";
715 -
716 - // post
717 - if ( ('post-new.php' == $pagenow) || ('post.php' == $pagenow) ) {
718 - remove_action('admin_head', 'index_js');
1069 +function _mw_adminimize_set_widget_option() {
719 1070
720 - $disabled_metaboxes_post = get_option('mw_adminimize_disabled_metaboxes_post');
721 - $disabled_metaboxes_post_adm = get_option('mw_adminimize_disabled_metaboxes_post_adm');
722 -
723 - if ( current_user_can('level_10') ) {
724 - $metaboxes = implode(',', $disabled_metaboxes_post_adm); // for admins
725 - } else {
726 - $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' ] = '';
727 1093 }
728 -
729 - $_mw_adminimize_admin_head .= '<style type="text/css">' . $metaboxes . ' {display: none !important}</style>' . "\n";
730 1094 }
731 -
732 - // page
733 - if ( ('page-new.php' == $pagenow) || ('page.php' == $pagenow) ) {
734 - remove_action('admin_head', 'index_js');
735 -
736 - $disabled_metaboxes_page = get_option('mw_adminimize_disabled_metaboxes_page');
737 - $disabled_metaboxes_page_adm = get_option('mw_adminimize_disabled_metaboxes_page_adm');
738 -
739 - if ( current_user_can('level_10') ) {
740 - $metaboxes = implode(',', $disabled_metaboxes_page_adm);
741 - } else {
742 - $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 + }
743 1106 }
744 -
745 - $_mw_adminimize_admin_head .= '<style type="text/css">' . $metaboxes . ' {display: none !important}</style>' . "\n";
746 1107 }
747 -
748 - 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 + }
749 1116 }
750 1117
751 -
752 1118 /**
753 - * small user-info
754 - * @uses $post_ID
1119 + * Print small user-info.
755 1120 */
756 1121 function _mw_adminimize_small_user_info() {
757 -?>
1122 +
1123 + ?>
758 1124 <div id="small_user_info">
759 - <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>
760 1132 </div>
761 -<?php
1133 + <?php
762 1134 }
763 1135
1136 +// include helping functions
1137 +require_once 'inc-setup/DebugListener.php';
1138 +require_once 'inc-setup/helping_hands.php';
764 1139
1140 +// Include message class.
1141 +require_once 'inc-setup/messages.php';
1142 +
1143 +// inc. settings page
1144 +require_once 'adminimize_page.php';
1145 +
1146 +// dashboard options
1147 +require_once 'inc-setup/dashboard.php';
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';
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 +
765 1172 /**
766 - * include options-page in wp-admin
1173 + * Add action link(s) to plugins page
1174 + *
1175 + * @param array $links
1176 + * @param string $file
1177 + *
1178 + * @return array $links
767 1179 */
768 -require_once('adminimize_page.php');
1180 +function _mw_adminimize_filter_plugin_meta( $links, $file ) {
769 1181
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 + }
770 1192
1193 + return $links;
1194 +}
1195 +
771 1196 /**
772 - * credit in wp-footer
1197 + * Add settings in plugin-admin-page.
773 1198 */
774 -function _mw_adminimize_admin_footer() {
775 - $plugin_data = get_plugin_data( __FILE__ );
776 - $plugin_data['Title'] = $plugin_data['Name'];
777 - if ( !empty($plugin_data['PluginURI']) && !empty($plugin_data['Name']) )
778 - $plugin_data['Title'] = '<a href="' . $plugin_data['PluginURI'] . '" title="'.__( 'Visit plugin homepage' ).'">' . $plugin_data['Name'] . '</a>';
779 -
780 - if ( basename($_SERVER['REQUEST_URI']) == 'adminimize.php') {
781 - printf('%1$s ' . __('plugin') . ' | ' . __('Version') . ' <a href="http://bueltge.de/wordpress-admin-theme-adminimize/674/#historie" title="' . __('Historie', 'adminimize') . '">%2$s</a> | ' . __('Author') . ' %3$s<br />', $plugin_data['Title'], $plugin_data['Version'], $plugin_data['Author']);
1199 +function _mw_adminimize_add_settings_page() {
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 );
782 1211 }
783 - if ( get_option('_mw_adminimize_advice') == 1 && basename($_SERVER['REQUEST_URI']) != 'adminimize.php' ) {
784 - printf('%1$s ' . __('plugin aktiv', 'adminimize') . ' | ' . stripslashes( get_option('_mw_adminimize_advice_txt') ) . '<br />', $plugin_data['Title']);
785 - }
1212 + add_action( 'load-' . $pagehook, '_mw_adminimize_on_load_page' );
786 1213 }
787 1214
788 -
789 1215 /**
790 - * Add action link(s) to plugins page
791 - * Thanks Dion Hulse -- http://dd32.id.au/wordpress-plugins/?configure-link
1216 + * Enqueue script and styles for the settings page.
792 1217 */
793 -function _mw_adminimize_filter_plugin_actions($links, $file){
794 - static $this_plugin;
1218 +function _mw_adminimize_on_load_page() {
795 1219
796 - if( !$this_plugin ) $this_plugin = plugin_basename(__FILE__);
1220 + // Load translation files on options page.
1221 + _mw_adminimize_textdomain();
797 1222
798 - if( $file == $this_plugin ){
799 - $settings_link = '<a href="options-general.php?page=adminimize/adminimize.php">' . __('Settings') . '</a>';
800 - $links = array_merge( array($settings_link), $links); // before other links
801 -// $links[] = $settings_link; // ... or after other links
802 - }
803 - return $links;
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' );
804 1238 }
805 1239
806 -
807 1240 /**
808 - * settings in plugin-admin-page
1241 + * Get setting value for each options key.
1242 + *
1243 + * @param string|bool $key
1244 + *
1245 + * @return string
809 1246 */
810 -function _mw_adminimize_add_settings_page() {
811 - if( current_user_can('switch_themes') ) {
812 - add_submenu_page('options-general.php', __('Adminimize Einstellungen', 'adminimize'), __('Adminimize', 'adminimize'), 8, __FILE__, '_mw_adminimize_options');
813 - add_filter('plugin_action_links', '_mw_adminimize_filter_plugin_actions', 10, 2);
1247 +function _mw_adminimize_get_option_value( $key = false ) {
1248 +
1249 + $adminimizeoptions = false;
1250 + if ( ! _mw_adminimize_exclude_settings_page() ) {
1251 + $adminimizeoptions = wp_cache_get( 'mw_adminimize' );
814 1252 }
1253 +
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 + }
1263 +
1264 + if ( ! $key ) {
1265 + return $adminimizeoptions;
1266 + }
1267 +
1268 + return array_key_exists( $key, $adminimizeoptions ) ? $adminimizeoptions[ $key ] : null;
815 1269 }
816 1270
817 -
818 1271 /**
819 - * Set theme for users y user_level 10
1272 + * Update options.
1273 + *
1274 + * @param array $options
1275 + *
1276 + * @return bool
820 1277 */
821 -function _mw_adminimize_set_theme() {
1278 +function _mw_adminimize_update_option( $options ) {
822 1279
823 - if ( !current_user_can('edit_users') )
824 - wp_die(__('Cheatin&#8217; uh?'));
1280 + if ( ! current_user_can( 'manage_options' ) ) {
1281 + return FALSE;
1282 + }
825 1283
826 - $user_ids = $_POST[mw_adminimize_theme_items];
827 - $admin_color = htmlspecialchars( stripslashes( $_POST[_mw_adminimize_set_theme] ) );
1284 + if ( _mw_adminimize_is_roles_options_import( $options ) ){
1285 + $options = _mw_adminimize_roles_complete_options( $options );
1286 + }
828 1287
829 - if ( !$user_ids )
830 - return false;
1288 + // Remove slashes always.
1289 + foreach ( $options as $key => $value ) {
1290 + $options[ $key ] = stripslashes_deep( $value );
1291 + }
831 1292
832 - foreach( $user_ids as $user_id) {
833 - $user_id = (int) $user_id;
834 - update_usermeta($user_id, 'admin_color', $admin_color);
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 );
835 1299 }
1300 + wp_cache_add( 'mw_adminimize', $options );
1301 +
1302 + return TRUE;
836 1303 }
837 1304
838 -
839 1305 /**
840 1306 * Update options in database
841 1307 */
842 1308 function _mw_adminimize_update() {
843 - global $menu, $submenu;
844 -
845 - // for a smaller database
846 - function _mw_adminimize_get_update($option) {
847 - if ( ($_POST[$option] == '0') || $_POST[$option] == '') {
848 - delete_option($option);
1309 +
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' ];
849 1323 } else {
850 - update_option($option , $_POST[$option]);
1324 + $adminimizeoptions[ 'mw_adminimize_disabled_admin_bar_' . $role . '_items' ] = array();
851 1325 }
852 1326 }
853 -
854 - _mw_adminimize_get_update('_mw_adminimize_sidebar_wight');
855 - _mw_adminimize_get_update('_mw_adminimize_user_info');
856 - _mw_adminimize_get_update('_mw_adminimize_footer');
857 - _mw_adminimize_get_update('_mw_adminimize_writescroll');
858 - _mw_adminimize_get_update('_mw_adminimize_tb_window');
859 - _mw_adminimize_get_update('_mw_adminimize_db_redirect');
860 - _mw_adminimize_get_update('_mw_adminimize_ui_redirect');
861 - _mw_adminimize_get_update('_mw_adminimize_advice');
862 - _mw_adminimize_get_update('_mw_adminimize_advice_txt');
863 - _mw_adminimize_get_update('_mw_adminimize_timestamp');
864 -
865 - // wp menu, submenu
866 - update_option('mw_adminimize_default_menu', $menu);
867 - update_option('mw_adminimize_default_submenu', $submenu);
868 -
869 - // disabled wp menu, submenu
870 - update_option('mw_adminimize_disabled_menu',
871 - isset($_POST['mw_adminimize_disabled_menu_items']) ? $_POST['mw_adminimize_disabled_menu_items'] : array()
1327 +
1328 + // Plugin Self Settings.
1329 + if ( isset( $_POST[ 'mw_adminimize_debug' ] ) ) {
1330 + $adminimizeoptions[ 'mw_adminimize_debug' ] = (int) $_POST[ 'mw_adminimize_debug' ];
1331 + } else {
1332 + $adminimizeoptions[ 'mw_adminimize_debug' ] = 0;
1333 + }
1334 +
1335 + if ( isset( $_POST[ 'mw_adminimize_multiple_roles' ] ) ) {
1336 + $adminimizeoptions[ 'mw_adminimize_multiple_roles' ] = (int) $_POST[ 'mw_adminimize_multiple_roles' ];
1337 + } else {
1338 + $adminimizeoptions[ 'mw_adminimize_multiple_roles' ] = 0;
1339 + }
1340 +
1341 + if ( isset( $_POST[ 'mw_adminimize_support_bbpress' ] ) ) {
1342 + $adminimizeoptions[ 'mw_adminimize_support_bbpress' ] = (int) $_POST[ 'mw_adminimize_support_bbpress' ];
1343 + } else {
1344 + $adminimizeoptions[ 'mw_adminimize_support_bbpress' ] = 0;
1345 + }
1346 +
1347 + if ( isset( $_POST[ 'mw_adminimize_prevent_page_access' ] ) ) {
1348 + $adminimizeoptions[ 'mw_adminimize_prevent_page_access' ] = (int) $_POST[ 'mw_adminimize_prevent_page_access' ];
1349 + } else {
1350 + $adminimizeoptions[ 'mw_adminimize_prevent_page_access' ] = 0;
1351 + }
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'
872 1356 );
873 - update_option('mw_adminimize_disabled_submenu',
874 - isset($_POST['mw_adminimize_disabled_submenu_items']) ? $_POST['mw_adminimize_disabled_submenu_items'] : array()
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' ];
1369 + } else {
1370 + $adminimizeoptions[ '_mw_adminimize_user_info' ] = 0;
1371 + }
1372 +
1373 + if ( isset( $_POST[ '_mw_adminimize_footer' ] ) ) {
1374 + $adminimizeoptions[ '_mw_adminimize_footer' ] = (int) $_POST[ '_mw_adminimize_footer' ];
1375 + } else {
1376 + $adminimizeoptions[ '_mw_adminimize_footer' ] = 0;
1377 + }
1378 +
1379 + if ( isset( $_POST[ '_mw_adminimize_header' ] ) ) {
1380 + $adminimizeoptions[ '_mw_adminimize_header' ] = (int) $_POST[ '_mw_adminimize_header' ];
1381 + } else {
1382 + $adminimizeoptions[ '_mw_adminimize_header' ] = 0;
1383 + }
1384 +
1385 + if ( isset( $_POST[ '_mw_adminimize_exclude_super_admin' ] ) ) {
1386 + $adminimizeoptions[ '_mw_adminimize_exclude_super_admin' ] = (int) $_POST[ '_mw_adminimize_exclude_super_admin' ];
1387 + } else {
1388 + $adminimizeoptions[ '_mw_adminimize_exclude_super_admin' ] = 0;
1389 + }
1390 +
1391 + if ( isset( $_POST[ '_mw_adminimize_tb_window' ] ) ) {
1392 + $adminimizeoptions[ '_mw_adminimize_tb_window' ] = (int) $_POST[ '_mw_adminimize_tb_window' ];
1393 + } else {
1394 + $adminimizeoptions[ '_mw_adminimize_tb_window' ] = 0;
1395 + }
1396 +
1397 + if ( isset( $_POST[ '_mw_adminimize_cat_full' ] ) ) {
1398 + $adminimizeoptions[ '_mw_adminimize_cat_full' ] = (int) $_POST[ '_mw_adminimize_cat_full' ];
1399 + } else {
1400 + $adminimizeoptions[ '_mw_adminimize_cat_full' ] = 0;
1401 + }
1402 +
1403 + if ( isset( $_POST[ '_mw_adminimize_db_redirect' ] ) ) {
1404 + $adminimizeoptions[ '_mw_adminimize_db_redirect' ] = (int) $_POST[ '_mw_adminimize_db_redirect' ];
1405 + } else {
1406 + $adminimizeoptions[ '_mw_adminimize_db_redirect' ] = 0;
1407 + }
1408 +
1409 + if ( isset( $_POST[ '_mw_adminimize_ui_redirect' ] ) ) {
1410 + $adminimizeoptions[ '_mw_adminimize_ui_redirect' ] = (int) $_POST[ '_mw_adminimize_ui_redirect' ];
1411 + } else {
1412 + $adminimizeoptions[ '_mw_adminimize_ui_redirect' ] = 0;
1413 + }
1414 +
1415 + if ( isset( $_POST[ '_mw_adminimize_advice' ] ) ) {
1416 + $adminimizeoptions[ '_mw_adminimize_advice' ] = (int) $_POST[ '_mw_adminimize_advice' ];
1417 + } else {
1418 + $adminimizeoptions[ '_mw_adminimize_advice' ] = 0;
1419 + }
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 + );
1434 + } else {
1435 + $adminimizeoptions[ '_mw_adminimize_advice_txt' ] = '';
1436 + }
1437 +
1438 + if ( isset( $_POST[ '_mw_adminimize_timestamp' ] ) ) {
1439 + $adminimizeoptions[ '_mw_adminimize_timestamp' ] = (int) $_POST[ '_mw_adminimize_timestamp' ];
1440 + } else {
1441 + $adminimizeoptions[ '_mw_adminimize_timestamp' ] = 0;
1442 + }
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' ] );
1446 + } else {
1447 + $adminimizeoptions[ '_mw_adminimize_db_redirect_txt' ] = '';
1448 + }
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 + );
1474 + } else {
1475 + $adminimizeoptions[ '_mw_adminimize_own_menu_slug' ] = '';
1476 + }
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 + );
1482 + } else {
1483 + $adminimizeoptions[ '_mw_adminimize_own_menu_custom_slug' ] = '';
1484 + }
1485 +
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'
875 1692 );
876 - update_option('mw_adminimize_disabled_menu_adm',
877 - isset($_POST['mw_adminimize_disabled_menu_adm_items']) ? $_POST['mw_adminimize_disabled_menu_adm_items'] : array()
878 - );
879 - update_option('mw_adminimize_disabled_submenu_adm',
880 - isset($_POST['mw_adminimize_disabled_submenu_adm_items']) ? $_POST['mw_adminimize_disabled_submenu_adm_items'] : array()
881 - );
882 -
883 - // disabled meta boxes post
884 - update_option('mw_adminimize_disabled_metaboxes_post',
885 - isset($_POST['mw_adminimize_disabled_metaboxes_post_items']) ? $_POST['mw_adminimize_disabled_metaboxes_post_items'] : array()
886 - );
887 - // disabled meta boxes page
888 - update_option('mw_adminimize_disabled_metaboxes_page',
889 - isset($_POST['mw_adminimize_disabled_metaboxes_page_items']) ? $_POST['mw_adminimize_disabled_metaboxes_page_items'] : array()
890 - );
891 - // disabled meta boxes post Admin
892 - update_option('mw_adminimize_disabled_metaboxes_post_adm',
893 - isset($_POST['mw_adminimize_disabled_metaboxes_post_adm_items']) ? $_POST['mw_adminimize_disabled_metaboxes_post_adm_items'] : array()
894 - );
895 - // disabled meta boxes page Admin
896 - update_option('mw_adminimize_disabled_metaboxes_page_adm',
897 - isset($_POST['mw_adminimize_disabled_metaboxes_page_adm_items']) ? $_POST['mw_adminimize_disabled_metaboxes_page_adm_items'] : array()
898 - );
899 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 +
900 1717 $myErrors = new _mw_adminimize_message_class();
901 - $myErrors = '<div id="message" class="updated fade"><p>' . $myErrors->get_error('_mw_adminimize_update') . '</p></div>';
902 - 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;
903 1730 }
904 1731
905 -
906 1732 /**
907 1733 * Delete options in database
908 1734 */
909 -function _mw_adminimize_deinstall() {
910 -
911 - delete_option('_mw_adminimize_sidebar_wight');
912 - delete_option('_mw_adminimize_user_info');
913 - delete_option('_mw_adminimize_footer');
914 - delete_option('_mw_adminimize_writescroll');
915 - delete_option('_mw_adminimize_tb_window');
916 - delete_option('_mw_adminimize_db_redirect');
917 - delete_option('_mw_adminimize_ui_redirect');
918 - delete_option('_mw_adminimize_advice');
919 - delete_option('_mw_adminimize_advice_txt');
920 - delete_option('_mw_adminimize_timestamp');
921 -
922 - delete_option('mw_adminimize_default_menu');
923 - delete_option('mw_adminimize_default_submenu');
924 - delete_option('mw_adminimize_disabled_menu');
925 - delete_option('mw_adminimize_disabled_submenu');
926 - delete_option('mw_adminimize_disabled_menu_adm');
927 - delete_option('mw_adminimize_disabled_submenu_adm');
928 -
929 - delete_option('mw_adminimize_default_metaboxes_post');
930 - delete_option('mw_adminimize_disabled_metaboxes_page-adm');
931 - delete_option('mw_adminimize_disabled_metaboxes_post');
932 - delete_option('mw_adminimize_disabled_metaboxes_page');
933 - delete_option('mw_adminimize_disabled_metaboxes_post_adm');
934 - delete_option('mw_adminimize_disabled_metaboxes_page_adm');
1735 +function _mw_adminimize_uninstall() {
935 1736
936 - delete_option('_mw_adminimize_update_key');
1737 + wp_cache_delete( 'mw_adminimize' );
1738 + delete_site_option( 'mw_adminimize' );
1739 + delete_option( 'mw_adminimize' );
937 1740 }
938 1741
939 -
940 1742 /**
941 1743 * Install options in database
942 1744 */
943 1745 function _mw_adminimize_install() {
944 1746
945 - add_option('mw_adminimize_default_menu', '', '');
946 - add_option('mw_adminimize_default_submenu', '', '');
947 - add_option('mw_adminimize_disabled_menu', array(), '');
948 - add_option('mw_adminimize_disabled_submenu', array(), '');
949 - add_option('mw_adminimize_disabled_menu_adm', array(), '');
950 - add_option('mw_adminimize_disabled_submenu_adm', array(), '');
1747 + if ( ! is_admin() ) {
1748 + return;
1749 + }
951 1750
952 - add_option('mw_adminimize_disabled_metaboxes_post', array(),'');
953 - add_option('mw_adminimize_disabled_metaboxes_page', array(),'');
954 - add_option('mw_adminimize_disabled_metaboxes_post_adm', array(),'');
955 - add_option('mw_adminimize_disabled_metaboxes_page_adm', array(),'');
1751 + // If is AJAX Call.
1752 + if ( defined('DOING_AJAX') && DOING_AJAX ) {
1753 + return;
1754 + }
1755 +
1756 + global $menu, $submenu;
1757 +
1758 + $user_roles = _mw_adminimize_get_all_user_roles();
1759 + $adminimizeoptions = array();
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 );
956 1786 }
957 -?>
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 +}