kopia lustrzana https://github.com/magicbug/Cloudlog
Add latitude and longitude to DXCC lookup results
Enhanced the DXCC lookup in Logbook_model to include latitude and longitude in the returned array. Updated API controller to utilize these new fields when returning recent QSOs and callsign lookups, providing more detailed location data in API responses.pull/3339/head
rodzic
b7c065dbdd
commit
952007467d
|
@ -1,6 +1,7 @@
|
|||
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class API extends CI_Controller {
|
||||
class API extends CI_Controller
|
||||
{
|
||||
|
||||
// Do absolutely nothing
|
||||
function index()
|
||||
|
@ -31,7 +32,8 @@ class API extends CI_Controller {
|
|||
}
|
||||
|
||||
|
||||
function edit($key) {
|
||||
function edit($key)
|
||||
{
|
||||
$this->load->model('user_model');
|
||||
|
||||
// Check if users logged in
|
||||
|
@ -52,16 +54,13 @@ class API extends CI_Controller {
|
|||
|
||||
$data['api_info'] = $this->api_model->key_description($key);
|
||||
|
||||
if ($this->form_validation->run() == FALSE)
|
||||
{
|
||||
if ($this->form_validation->run() == FALSE) {
|
||||
$data['page_title'] = "Edit API Description";
|
||||
|
||||
$this->load->view('interface_assets/header', $data);
|
||||
$this->load->view('api/description');
|
||||
$this->load->view('interface_assets/footer');
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
// Success!
|
||||
|
||||
$this->api_model->update_key_description($this->input->post('api_key'), $this->input->post('api_desc'));
|
||||
|
@ -70,10 +69,10 @@ class API extends CI_Controller {
|
|||
|
||||
redirect('api/help');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function generate($rights) {
|
||||
function generate($rights)
|
||||
{
|
||||
$this->load->model('user_model');
|
||||
|
||||
// Check if users logged in
|
||||
|
@ -91,7 +90,8 @@ class API extends CI_Controller {
|
|||
redirect('api/help');
|
||||
}
|
||||
|
||||
function delete($key) {
|
||||
function delete($key)
|
||||
{
|
||||
$this->load->model('user_model');
|
||||
|
||||
// Check if users logged in
|
||||
|
@ -112,7 +112,8 @@ class API extends CI_Controller {
|
|||
}
|
||||
|
||||
// Example of authing
|
||||
function auth($key) {
|
||||
function auth($key)
|
||||
{
|
||||
$this->load->model('api_model');
|
||||
header("Content-type: text/xml");
|
||||
if ($this->api_model->access($key) == "No Key Found" || $this->api_model->access($key) == "Key Disabled") {
|
||||
|
@ -127,7 +128,8 @@ class API extends CI_Controller {
|
|||
}
|
||||
}
|
||||
|
||||
function check_auth($key) {
|
||||
function check_auth($key)
|
||||
{
|
||||
$this->load->model('api_model');
|
||||
header("Content-type: text/xml");
|
||||
if ($this->api_model->access($key) == "No Key Found" || $this->api_model->access($key) == "Key Disabled") {
|
||||
|
@ -150,7 +152,8 @@ class API extends CI_Controller {
|
|||
}
|
||||
}
|
||||
|
||||
function station_info($key) {
|
||||
function station_info($key)
|
||||
{
|
||||
$this->load->model('api_model');
|
||||
$this->load->model('stations');
|
||||
header("Content-type: application/json");
|
||||
|
@ -180,7 +183,8 @@ class API extends CI_Controller {
|
|||
* Function: QSO
|
||||
* Task: allows passing of ADIF data to Cloudlog
|
||||
*/
|
||||
function qso() {
|
||||
function qso()
|
||||
{
|
||||
header('Content-type: application/json');
|
||||
|
||||
$this->load->model('api_model');
|
||||
|
@ -227,10 +231,8 @@ class API extends CI_Controller {
|
|||
$this->adif_parser->feed($obj['string']);
|
||||
|
||||
// Create QSO Record
|
||||
while($record = $this->adif_parser->get_record())
|
||||
{
|
||||
if(count($record) == 0)
|
||||
{
|
||||
while ($record = $this->adif_parser->get_record()) {
|
||||
if (count($record) == 0) {
|
||||
break;
|
||||
};
|
||||
|
||||
|
@ -258,17 +260,15 @@ class API extends CI_Controller {
|
|||
$return_msg[] = $msg;
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
http_response_code(201);
|
||||
echo json_encode(['status' => 'created', 'type' => $obj['type'], 'string' => $obj['string'], 'imported_count' => $return_count, 'messages' => $return_msg]);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// API function to check if a callsign is in the logbook already
|
||||
function logbook_check_callsign() {
|
||||
function logbook_check_callsign()
|
||||
{
|
||||
header('Content-type: application/json');
|
||||
|
||||
$this->load->model('api_model');
|
||||
|
@ -308,8 +308,7 @@ class API extends CI_Controller {
|
|||
|
||||
if ($this->logbooks_model->public_slug_exists($logbook_slug)) {
|
||||
$logbook_id = $this->logbooks_model->public_slug_exists_logbook_id($logbook_slug);
|
||||
if($logbook_id != false)
|
||||
{
|
||||
if ($logbook_id != false) {
|
||||
// Get associated station locations for mysql queries
|
||||
$logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($logbook_id);
|
||||
|
||||
|
@ -331,8 +330,7 @@ class API extends CI_Controller {
|
|||
$result = $this->logbook_model->check_if_callsign_worked_in_logbook($callsign, $logbooks_locations_array, $band);
|
||||
|
||||
http_response_code(201);
|
||||
if($result > 0)
|
||||
{
|
||||
if ($result > 0) {
|
||||
echo json_encode(['callsign' => $callsign, 'result' => 'Found']);
|
||||
} else {
|
||||
echo json_encode(['callsign' => $callsign, 'result' => 'Not Found']);
|
||||
|
@ -343,13 +341,12 @@ class API extends CI_Controller {
|
|||
echo json_encode(['status' => 'failed', 'reason' => "logbook not found"]);
|
||||
die();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// API function to check if a grid is in the logbook already
|
||||
function logbook_check_grid() {
|
||||
function logbook_check_grid()
|
||||
{
|
||||
header('Content-type: application/json');
|
||||
|
||||
$this->load->model('api_model');
|
||||
|
@ -387,8 +384,7 @@ class API extends CI_Controller {
|
|||
|
||||
if ($this->logbooks_model->public_slug_exists($logbook_slug)) {
|
||||
$logbook_id = $this->logbooks_model->public_slug_exists_logbook_id($logbook_slug);
|
||||
if($logbook_id != false)
|
||||
{
|
||||
if ($logbook_id != false) {
|
||||
// Get associated station locations for mysql queries
|
||||
$logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($logbook_id);
|
||||
|
||||
|
@ -410,8 +406,7 @@ class API extends CI_Controller {
|
|||
$result = $this->logbook_model->check_if_grid_worked_in_logbook($grid, $logbooks_locations_array, $band);
|
||||
|
||||
http_response_code(201);
|
||||
if($result > 0)
|
||||
{
|
||||
if ($result > 0) {
|
||||
echo json_encode(['gridsquare' => strtoupper($grid), 'result' => 'Found']);
|
||||
} else {
|
||||
echo json_encode(['gridsquare' => strtoupper($grid), 'result' => 'Not Found']);
|
||||
|
@ -422,9 +417,7 @@ class API extends CI_Controller {
|
|||
echo json_encode(['status' => 'failed', 'reason' => "logbook not found"]);
|
||||
die();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -525,8 +518,7 @@ class API extends CI_Controller {
|
|||
|
||||
if ($this->logbooks_model->public_slug_exists($logbook_slug)) {
|
||||
$logbook_id = $this->logbooks_model->public_slug_exists_logbook_id($logbook_slug);
|
||||
if($logbook_id != false)
|
||||
{
|
||||
if ($logbook_id != false) {
|
||||
// Get associated station locations for mysql queries
|
||||
$logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($logbook_id);
|
||||
|
||||
|
@ -604,7 +596,8 @@ class API extends CI_Controller {
|
|||
|
||||
/* ENDPOINT for Rig Control */
|
||||
|
||||
function radio() {
|
||||
function radio()
|
||||
{
|
||||
header('Content-type: application/json');
|
||||
|
||||
$this->load->model('api_model');
|
||||
|
@ -636,7 +629,6 @@ class API extends CI_Controller {
|
|||
$arr = array('status' => 'success');
|
||||
|
||||
echo json_encode($arr);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -645,7 +637,8 @@ class API extends CI_Controller {
|
|||
*
|
||||
*/
|
||||
|
||||
function statistics($key = null) {
|
||||
function statistics($key = null)
|
||||
{
|
||||
header('Content-type: application/json');
|
||||
$this->load->model('logbook_model');
|
||||
|
||||
|
@ -656,10 +649,10 @@ class API extends CI_Controller {
|
|||
|
||||
http_response_code(201);
|
||||
echo json_encode(['Today' => $data['todays_qsos'], 'total_qsos' => $data['total_qsos'], 'month_qsos' => $data['month_qsos'], 'year_qsos' => $data['year_qsos']]);
|
||||
|
||||
}
|
||||
|
||||
function lookup() {
|
||||
function lookup()
|
||||
{
|
||||
// start benchmarking
|
||||
$this->output->enable_profiler(TRUE);
|
||||
/*
|
||||
|
@ -679,7 +672,9 @@ class API extends CI_Controller {
|
|||
|
||||
// Make sure users logged in
|
||||
$this->load->model('user_model');
|
||||
if(!$this->user_model->authorize($this->config->item('auth_mode'))) { return; }
|
||||
if (!$this->user_model->authorize($this->config->item('auth_mode'))) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
$this->load->model("logbook_model");
|
||||
|
@ -773,8 +768,7 @@ class API extends CI_Controller {
|
|||
*/
|
||||
$call_lookup_results = $this->logbook_model->call_lookup_result($lookup_callsign);
|
||||
|
||||
if($call_lookup_results != null)
|
||||
{
|
||||
if ($call_lookup_results != null) {
|
||||
$return['name'] = $call_lookup_results->COL_NAME;
|
||||
$return['gridsquare'] = $call_lookup_results->COL_GRIDSQUARE;
|
||||
$return['location'] = $call_lookup_results->COL_QTH;
|
||||
|
@ -786,7 +780,6 @@ class API extends CI_Controller {
|
|||
if ($return['gridsquare'] != "") {
|
||||
$return['latlng'] = $this->qralatlng($return['gridsquare']);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -809,7 +802,8 @@ class API extends CI_Controller {
|
|||
$this->output->enable_profiler(FALSE);
|
||||
}
|
||||
|
||||
function qralatlng($qra) {
|
||||
function qralatlng($qra)
|
||||
{
|
||||
$this->load->library('Qra');
|
||||
$latlng = $this->qra->qra2latlong($qra);
|
||||
return $latlng;
|
||||
|
@ -848,7 +842,8 @@ class API extends CI_Controller {
|
|||
* "logbook_slug": "my-public-logbook"
|
||||
* }
|
||||
*/
|
||||
function recent_qsos($public_slug = null, $limit = 10) {
|
||||
function recent_qsos($public_slug = null, $limit = 10)
|
||||
{
|
||||
header('Content-type: application/json');
|
||||
|
||||
// Validate and sanitize $limit
|
||||
|
@ -923,6 +918,15 @@ class API extends CI_Controller {
|
|||
$qso['name'] = $row->COL_NAME;
|
||||
}
|
||||
|
||||
$dxcc = $this->logbook_model->check_dxcc_table(strtoupper(trim(strtoupper($row->COL_CALL))), $row->COL_TIME_ON);
|
||||
if (empty($dxcc[0])) {
|
||||
$dxcc_id = null;
|
||||
} else {
|
||||
$qso['country'] = $dxcc[1];
|
||||
$qso['lat'] = $dxcc[4];
|
||||
$qso['long'] = $dxcc[5];
|
||||
}
|
||||
|
||||
$qsos[] = $qso;
|
||||
}
|
||||
|
||||
|
@ -932,7 +936,6 @@ class API extends CI_Controller {
|
|||
'count' => count($qsos),
|
||||
'logbook_slug' => $public_slug
|
||||
], JSON_PRETTY_PRINT);
|
||||
|
||||
} else {
|
||||
http_response_code(404);
|
||||
echo json_encode(['status' => 'failed', 'reason' => $public_slug . ' has no associated station locations']);
|
||||
|
|
|
@ -4093,7 +4093,7 @@ class Logbook_model extends CI_Model
|
|||
|
||||
$csadditions = '/^P$|^R$|^A$|^M$/';
|
||||
|
||||
$dxcc_exceptions = $this->db->select('`entity`, `adif`, `cqz`, `cont`')
|
||||
$dxcc_exceptions = $this->db->select('`entity`, `adif`, `cqz`, `cont`,`lat`,`long`')
|
||||
->where('call', $call)
|
||||
->where('(start <= ', $date)
|
||||
->or_where('start is null)', NULL, false)
|
||||
|
@ -4103,7 +4103,7 @@ class Logbook_model extends CI_Model
|
|||
|
||||
if ($dxcc_exceptions->num_rows() > 0) {
|
||||
$row = $dxcc_exceptions->row_array();
|
||||
return array($row['adif'], $row['entity'], $row['cqz'], $row['cont']);
|
||||
return array($row['adif'], $row['entity'], $row['cqz'], $row['cont'], $row['lat'], $row['long']);
|
||||
}
|
||||
if (preg_match('/(^KG4)[A-Z09]{3}/', $call)) { // KG4/ and KG4 5 char calls are Guantanamo Bay. If 4 or 6 char, it is USA
|
||||
$call = "K";
|
||||
|
@ -4158,7 +4158,7 @@ class Logbook_model extends CI_Model
|
|||
// query the table, removing a character from the right until a match
|
||||
for ($i = $len; $i > 0; $i--) {
|
||||
//printf("searching for %s\n", substr($call, 0, $i));
|
||||
$dxcc_result = $this->db->select('`call`, `entity`, `adif`, `cqz`, `cont`')
|
||||
$dxcc_result = $this->db->select('`call`, `entity`, `adif`, `cqz`, `cont`,`lat`,`long`')
|
||||
->where('call', substr($call, 0, $i))
|
||||
->where('(start <= ', $date)
|
||||
->or_where("start is null)", NULL, false)
|
||||
|
@ -4171,7 +4171,7 @@ class Logbook_model extends CI_Model
|
|||
|
||||
if ($dxcc_result->num_rows() > 0) {
|
||||
$row = $dxcc_result->row_array();
|
||||
return array($row['adif'], $row['entity'], $row['cqz'], $row['cont']);
|
||||
return array($row['adif'], $row['entity'], $row['cqz'], $row['cont'], $row['lat'], $row['long']);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue