function drop_instructor_capabilities($user_id) { if (user_can($user_id, 'manage_options')) { return; } $role = new Instructor($user_id); $global_option = !is_multisite(); delete_user_option($user_id, 'role_ins', $global_option); // Legacy delete_user_meta($user_id, 'role_ins', 'instructor'); $role->remove_cap('can_edit_posts'); $role->remove_cap('read'); $role->remove_cap('upload_files'); $capabilities = array_keys(CoursePress_Capabilities::$capabilities['instructor']); foreach ($capabilities as $cap) { $role->remove_cap($cap); } CoursePress_Capabilities::grant_private_caps($user_id); }
<?php global $wp_roles; if (isset($_POST['submit']) && current_user_can('manage_options') && isset($_POST['instructor_capability'])) { /* Set capabilities for each instructor user */ $wp_user_search = new Instructor_Search(); // $wp_user_search = new Instructor_Search( $usersearch, $page_num ); foreach ($wp_user_search->get_results() as $user) { CoursePress_Capabilities::grant_private_caps($user->ID); // Don't remove capabilities from administrators /* if( user_can( $user->ID, 'manage_options' ) ){ continue; } */ $role = new WP_User($user->ID); $user_capabilities = $role->wp_capabilities; // More than the hidden field needs to be present to add roles. if (isset($_POST['instructor_capability']) && 1 < count($_POST['instructor_capability'])) { foreach ($user_capabilities as $key => $old_cap) { // Make sure to only remove CoursePress instructor capabilities if (!in_array($key, $_POST['instructor_capability']) && in_array($key, array_keys(CoursePress_Capabilities::$capabilities['instructor']))) { //making the operation less expensive if (!user_can($user->ID, 'manage_options')) { $role->remove_cap($key); } } } foreach ($_POST['instructor_capability'] as $new_cap) { $role->add_cap($new_cap); } } else { //all unchecked, remove all instructor capabilities