} } $ure_rolesId = array(); foreach ($ure_roles as $key => $value) { $ure_rolesId[] = $key; } $fullCapabilities = array(); foreach ($ure_roles as $role) { foreach ($role['capabilities'] as $key => $value) { $cap = array(); $cap['inner'] = $key; $cap['human'] = __(ure_ConvertCapsToReadable($key), 'ure'); $fullCapabilities[] = $cap; } } $fullCapabilities = ure_ArrayUnique($fullCapabilities); if ($ure_caps_readable) { $column = 'human'; // sort by human readable form } else { $column = 'inner'; // sort by inner capability name } $sorter = new ure_TableSorter($column); $fullCapabilities = $sorter->sort($fullCapabilities); if ($ure_object == 'user') { if (!isset($_REQUEST['user_id'])) { $mess .= ' user_id value is missed'; return; } $user_id = $_REQUEST['user_id'];
function getCapsToRemove() { global $wp_roles, $wpdb; $fullCapsList = array(); foreach ($wp_roles->roles as $role) { foreach ($role['capabilities'] as $key => $value) { $fullCapsList[] = $key; } } $fullCapsList = ure_ArrayUnique($fullCapsList); sort($fullCapsList); $capsToExclude = getBuiltInWPCaps(); $capsToRemove = array(); foreach ($fullCapsList as $capability) { if (!isset($capsToExclude[$capability])) { // check roles $capInUse = false; foreach ($wp_roles->role_objects as $wp_role) { if ($wp_role->name != 'administrator') { if ($wp_role->has_cap($capability)) { $capInUse = true; break; } } } if (!$capInUse) { // check users $usersId = $wpdb->get_col($wpdb->prepare("SELECT {$wpdb->users}.ID FROM {$wpdb->users}")); foreach ($usersId as $user_id) { $user = get_user_to_edit($user_id); if (isset($user->roles[0]) && $user->roles[0] == 'administrator') { continue; } if ($user->has_cap($capability)) { $capInUse = true; break; } } } if (!$capInUse) { $capsToRemove[] = $capability; } } } return $capsToRemove; }