function ure_init() { global $current_user, $wp_roles; if (!empty($current_user->ID)) { $user_id = $current_user->ID; } else { $user_id = 0; } // these filters and actions should prevent editing users with administrator role // by other users with 'edit_users' capabilities if (!ure_is_admin($user_id)) { // Exclude administrator role from edit list. add_filter('editable_roles', 'ure_excludeAdminRole'); // Enqueue jQuery add_action('admin_enqueue_scripts', 'ure_admin_jquery'); // prohibit any actions with user who has Administrator role add_filter('user_has_cap', 'ure_not_edit_admin', 10, 3); // exclude users with 'Administrator' role from users list add_action('pre_user_query', 'ure_exclude_administrators'); // do not show 'Administrator (n)' view above users list add_filter('views_users', 'exclude_admins_view'); } }
die; // Silence is golden, direct call is prohibited } // create roles backup if it's not created yet ure_makeRolesBackup(); if (!isset($ure_currentRole) || !$ure_currentRole) { if (isset($_REQUEST['user_role']) && $_REQUEST['user_role'] && isset($ure_roles[$_REQUEST['user_role']])) { $ure_currentRole = $_REQUEST['user_role']; } else { $ure_currentRole = $ure_rolesId[count($ure_rolesId) - 1]; } $ure_currentRoleName = $ure_roles[$ure_currentRole]['name']; } $youAreAdmin = defined('URE_SHOW_ADMIN_ROLE') && ure_is_admin(); $roleDefaultHTML = '<select id="default_user_role" name="default_user_role" width="200" style="width: 200px">'; $roleToCopyHTML = '<select id="user_role_copy_from" name="user_role_copy_from" width="200" style="width: 200px"> <option value="none" selected="selected">'.__('None', 'ure').'</option>'; $roleSelectHTML = '<select id="user_role" name="user_role" onchange="ure_role_change(this.value);">'; foreach ($ure_roles as $key=>$value) { $selected1 = ure_optionSelected($key, $ure_currentRole); $selected2 = ure_optionSelected($key, $defaultRole); if ($youAreAdmin || $key!='administrator') { $translated_name = __($value['name'], 'ure'); // get translation from URE language file, if exists if ($translated_name===$value['name']) { // get WordPress internal translation $translated_name = translate_user_role($translated_name); } $translated_name .= ' ('. $key .')'; $roleSelectHTML .= '<option value="'.$key.'" '.$selected1.'>'.$translated_name.'</option>';
function ure_edit_user_profile($user) { global $current_user, $wp_roles; $result = stripos($_SERVER['REQUEST_URI'], 'network/user-edit.php'); if ($result !== false) { // exit, this code just for single site user profile only, not for network admin center return; } if (!ure_is_admin($current_user->ID)) { return; } ?> <h3><?php _e('User Role Editor', 'ure'); ?> </h3> <table class="form-table"> <tr> <th scope="row"><?php _e('Other Roles', 'ure'); ?> </th> <td> <?php $roles = ure_other_user_roles($user); if (is_array($roles) && count($roles) > 0) { foreach ($roles as $role) { echo '<input type="hidden" name="ure_other_roles[]" value="' . $role . '" />'; } } $output = ure_other_user_roles_text($roles); echo $output . ' >> <a href="' . wp_nonce_url("users.php?page=user-role-editor.php&object=user&user_id={$user->ID}", "ure_user_{$user->ID}") . '">' . __('Edit', 'ure') . '</a>'; ?> </td> </tr> </table> <?php /* <script type="text/javascript"> jQuery('#role').attr('disabled', 'disabled'); </script> */ }