From 7fe649b47bbbf4a6af318b9386c38d4863f680af Mon Sep 17 00:00:00 2001 From: kc9uhi Date: Sun, 15 Feb 2026 10:38:22 -0700 Subject: [PATCH] add list_clubmembers api endpoint --- application/controllers/Api.php | 48 +++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/application/controllers/Api.php b/application/controllers/Api.php index 2fa8af2eb..9cfe63336 100644 --- a/application/controllers/Api.php +++ b/application/controllers/Api.php @@ -1309,4 +1309,52 @@ class API extends CI_Controller { return $url; } + /* ** + * List members of a clubstation + * API key needs to be of a club officer (permission level 9) + * returns array of club member details + */ + function list_clubmembers($key = '') { + header('Content-type: application/json'); + + $this->load->model('api_model'); + if ($this->api_model->access($key) == "No Key Found" || $this->api_model->access($key) == "Key Disabled") { + http_response_code(401); + echo json_encode(['status' => 'error', 'message' => 'Auth Error, invalid key']); + return; + } + + $this->load->model('club_model'); + $userid = $this->api_model->key_userid($key); + $created_by = $this->api_model->key_created_by($key); + $club_perm = $this->club_model->get_permission_noui($userid,$created_by); + if (($userid == $created_by) || (($club_perm ?? 0) != 9)) { // not club officer + http_response_code(401); + echo json_encode(['status' => 'error', 'message' => 'Auth Error, not enough permissions for this operation']); + return; + } + + $this->load->model('club_model'); + $memberlist = $this->club_model->get_club_members($userid); + if (!empty($memberlist)) { + $members = []; + foreach($memberlist as $member) { + $members[] = [ + 'callsign' => $member->user_callsign, + 'first_name' => $member->user_firstname, + 'last_name' => $member->user_lastname, + 'user_name' => $member->user_name, + 'email' => $member->user_email, + 'p_level' => $member->p_level + ]; + } + http_response_code(200); + echo json_encode(['status' => 'successful', 'members' => $members]); + } else { + http_response_code(204); + echo json_encode(['status' => 'failed', 'reason' => "No club members found", 'members' => '']); + return; + } + } } +?> \ No newline at end of file