rs. $result['total_users'] -= count($superUsers); //For each hidden user, subtract one from each of the roles that the user has. foreach ($superUsers as $user) { if ( !empty($user->roles) && is_array($user->roles) ) { foreach ($user->roles as $roleId) { if ( isset($result['avail_roles'][$roleId]) ) { $result['avail_roles'][$roleId]--; if ( $result['avail_roles'][$roleId] <= 0 ) { unset($result['avail_roles'][$roleId]); } } } } else if ( isset($result['avail_roles']['none']) ) { $result['avail_roles']['none']--; } } $this->isInsideCountFilter = false; return $result; } /** * @return int[] */ private function getSuperUserIDs() { $result = $this->menuEditor->get_plugin_option('super_users'); if ( $result === null ) { return array(); } return $result; } /** * @param int|null $siteId * @return WP_User[] */ private function getSuperUsers($siteId = null) { $ids = $this->getSuperUserIDs(); if ( empty($ids) ) { return array(); } if ( !is_numeric($siteId) ) { $siteId = get_current_blog_id(); } //Caution: If you pass an empty array as "include", get_users() will return *all* users from the current site. return get_users( array( 'include' => $ids, 'blog_id' => $siteId, ) ); } /** * Is the current user one of the superusers? * * @return bool */ private function isCurrentUserSuper() { $user = wp_get_current_user(); return $user && $this->isSuperUser($user->ID); } private function isSuperUser($userId) { return in_array($userId, $this->getSuperUserIDs()); } public function enqueueTabScripts() { parent::enqueueTabScripts(); wp_enqueue_auto_versioned_script( 'ame-super-users', plugins_url('super-users.js', __FILE__), array('ame-knockout', 'jquery', 'ame-visible-users', 'ame-actor-manager', 'ame-jquery-cookie') ); //Pass users to JS. $users = array(); foreach($this->getSuperUsers() as $user) { $properties = $this->menuEditor->user_to_property_map($user); $properties['avatar_html'] = get_avatar($user->ID, 32); $users[$user->user_login] = $properties; } $currentUser = wp_get_current_user(); wp_localize_script( 'ame-super-users', 'wsAmeSuperUserSettings', array( 'superUsers' => $users, 'userEditUrl' => admin_url('user-edit.php'), 'currentUserLogin' => $currentUser->get('user_login'), ) ); } public function enqueueTabStyles() { parent::enqueueTabStyles(); wp_enqueue_auto_versioned_style( 'ame-super-users-css', plugins_url('super-users.css', __FILE__) ); } public function handleFormSubmission($action, $post = array()) { //Note: We don't need to check user permissions here because plugin core already did. if ( $action === 'ame_save_super_users' ) { check_admin_referer($action); $userIDs = array_map('intval', explode(',', $post['settings'], 100)); $userIDs = array_unique(array_filter($userIDs)); //Save settings. $this->menuEditor->set_plugin_option('super_users', $userIDs); wp_redirect($this->getTabUrl(array('message' => 1))); exit; } } }