asgarosforum = $object; // Set filter based on URL parameters. add_action('asgarosforum_prepare_members', array($this, 'load_members')); add_action('asgarosforum_breadcrumbs_members', array($this, 'add_breadcrumbs')); } public function functionality_enabled() { if (!$this->asgarosforum->options['enable_memberslist'] || ($this->asgarosforum->options['memberslist_loggedin_only'] && !is_user_logged_in())) { return false; } else { return true; } } public function add_breadcrumbs() { $element_link = $this->asgarosforum->get_link('members'); $element_title = __('Members', 'asgaros-forum'); $this->asgarosforum->breadcrumbs->add_breadcrumb($element_link, $element_title); } public function load_members() { if ($this->functionality_enabled()) { if (!empty($_GET['filter_type']) && !empty($_GET['filter_name'])) { $input_filter_type = sanitize_key($_GET['filter_type']); $input_filter_name = sanitize_key($_GET['filter_name']); if ($input_filter_type === 'role') { switch ($input_filter_name) { case 'all': case 'normal': case 'moderator': case 'administrator': case 'banned': $this->filter_type = 'role'; $this->filter_name = 'all'; // Ensure that the filter is available. if ($this->is_filter_available($input_filter_name)) { $this->filter_name = $input_filter_name; } break; } } else if ($input_filter_type === 'group') { $this->filter_type = 'group'; $this->filter_name = $input_filter_name; } } $this->memberslist = $this->get_members(); } } public function show_memberslist_link() { if ($this->functionality_enabled()) { $membersLink = $this->asgarosforum->get_link('members'); $membersLink = apply_filters('asgarosforum_filter_members_link', $membersLink); $loginStatus = $this->asgarosforum->options['memberslist_loggedin_only'] ? 1 : 0; return array( 'menu_class' => 'members-link', 'menu_link_text' => esc_html__('Members', 'asgaros-forum'), 'menu_url' => $membersLink, 'menu_login_status' => $loginStatus, 'menu_new_tab' => false ); } } public function show_filters() { // Load usergroups. $usergroups = AsgarosForumUserGroups::getUserGroups(array(), true); // Dont show filters when there are no usergroups and no active filters. if (empty($usergroups) && !$this->is_filter_available('normal') && !$this->is_filter_available('moderator') && !$this->is_filter_available('administrator') && !$this->is_filter_available('banned')) { echo '
'; return; } $filter_toggle_text = __('Show Filters', 'asgaros-forum'); $filter_toggle_icon = 'fas fa-chevron-down'; $filter_toggle_hide = 'none'; if (!empty($_GET['filter_type']) && !empty($_GET['filter_name'])) { $filter_toggle_text = __('Hide Filters', 'asgaros-forum'); $filter_toggle_icon = 'fas fa-chevron-up'; $filter_toggle_hide = 'block'; } echo '