getSafe('space', 'sanitize_text_field'); $space = null; if ($spaceSlug) { $space = BaseSpace::where('slug', $spaceSlug)->first(); if (!$space || !Helper::isUserInSpace(get_current_user_id(), $space->id)) { return $this->sendError([ 'message' => __('Please join the space first to view the members', 'fluent-community'), ]); } } if (!$space) { $spaceId = $request->getSafe('space_id', 'intval'); if ($spaceId) { $space = BaseSpace::find($spaceId); if (!$space || !Helper::isUserInSpace(get_current_user_id(), $space->id)) { return $this->sendError([ 'message' => 'Space not found', ]); } } } $mention = $request->getSafe('mention', 'sanitize_text_field'); $members = XProfile::select(ProfileHelper::getXProfilePublicFields()) ->whereHas('user') ->searchBy($request->getSafe('search', 'sanitize_text_field')); if ($mention) { $members = $members->where('user_id', '!=', get_current_user_id()) ->mentionBy($mention); } $shortBy = $request->getSafe('sort_by', 'sanitize_text_field', 'last_activity'); if ($shortBy == 'last_activity') { $members = $members->orderBy('last_activity', 'DESC'); } else { $members = $members->orderBy($shortBy, 'ASC'); } $members = $members->orderBy('last_activity', 'DESC'); if ($space) { $members = $members->whereHas('spaces', function ($query) use ($space) { $query->where('space_id', $space->id); }); } $currentUser = $this->getUser(); if ($mention || !$currentUser || !$currentUser->isCommunityAdmin()) { $members = $members->where('status', 'active'); } else { $statuses = $request->getSafe('status', 'sanitize_text_field', 'active'); if ($statuses == 'in_active') { $statuses = ['pending', 'blocked']; } else { $statuses = ['active']; } $members = $members->whereIn('status', $statuses); } do_action_ref_array('fluent_community/members_query_ref', [&$members, $request->all()]); $members = $members->paginate(); if ($mention) { return [ 'members' => [ 'data' => $members->items() ] ]; } return [ 'members' => $members ]; } public function patchMember(Request $request, $userId) { $currentUser = $this->getUser(true); $currentUser->verifyCommunityPermission('delete_any_feed'); $newStatus = $request->getSafe('status', 'sanitize_text_field'); $wpUser = User::findOrFail($userId); if ($wpUser->isCommunityAdmin() && $newStatus != 'active') { return $this->sendError([ 'message' => 'Sorry, you can not change status of another admin. Remove the user from moderators' ]); } $xProfile = XProfile::findOrFail($userId); $newStatus = $request->getSafe('status', 'sanitize_text_field'); $validStatuses = ['active', 'pending', 'blocked']; if (in_array($newStatus, $validStatuses)) { $xProfile->status = $newStatus; $xProfile->save(); } return [ 'message' => __('Member status has been updated', 'fluent-community'), 'member' => $xProfile ]; } }