Merge branch 'dxcc_json' into bandmap

pull/2317/head
int2001 2023-07-21 08:37:18 +00:00
commit 5f5c104535
3 zmienionych plików z 128 dodań i 2 usunięć

Wyświetl plik

@ -0,0 +1,46 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Dxcluster extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->model('user_model');
if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
$this->load->model('logbook_model');
}
function spots($band,$age = 60) {
$calls_found=$this->logbook_model->dxc_spotlist($band, $age);
header('Content-Type: application/json');
if ($calls_found) {
echo json_encode($calls_found, JSON_PRETTY_PRINT);
} else {
echo '{ "error": "not found" }';
}
}
function qrg_lookup($qrg) {
$call_found=$this->logbook_model->dxc_qrg_lookup($this->security->xss_clean($qrg));
header('Content-Type: application/json');
if ($call_found) {
echo json_encode($call_found, JSON_PRETTY_PRINT);
} else {
echo '{ "error": "not found" }';
}
}
function call($call) {
$date = date('Ymd', time());
$dxcc = $this->logbook_model->dxcc_lookup($call, $date);
if ($dxcc) {
header('Content-Type: application/json');
echo json_encode($dxcc, JSON_PRETTY_PRINT);
} else {
echo '{ "error": "not found" }';
}
}
}

Wyświetl plik

@ -3993,6 +3993,86 @@ class Logbook_model extends CI_Model {
return false;
}
public function dxc_spotlist($band = '20m',$maxage = 60) {
$CI =& get_instance();
if ( ($this->optionslib->get_option('dxcache_url') != '') ) {
$dxcache_url = $this->optionslib->get_option('dxcache_url').'/spots/';
// CURL Functions
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $dxcache_url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Cloudlog DXLookup');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$jsonraw = curl_exec($ch);
curl_close($ch);
$json = json_decode($jsonraw);
// Create JSON object
if (strlen($jsonraw)>20) {
$spotsout=[];
foreach($json as $singlespot){
$spotband = $CI->frequency->GetBand($singlespot->frequency*1000);
$singlespot->band=$spotband;
if ($band != $spotband) { continue; }
$datetimecurrent = new DateTime("now", new DateTimeZone('UTC')); // Today's Date/Time
$datetimespot = new DateTime($singlespot->when, new DateTimeZone('UTC'));
$spotage = $datetimecurrent->diff($datetimespot);
$minutes = $spotage->days * 24 * 60;
$minutes += $spotage->h * 60;
$minutes += $spotage->i;
$singlespot->age=$minutes;
if ($minutes<=$maxage) {
$dxcc=$this->dxcc_lookup($singlespot->spotter,date('Ymd', time()));
$singlespot->dxcc_spotter=$dxcc;
array_push($spotsout,$singlespot);
}
}
return ($spotsout);
} else {
return '';
}
} else {
return '';
}
}
public function dxc_qrg_lookup($qrg, $maxage = 120) {
if ( ($this->optionslib->get_option('dxcache_url') != '') && (is_numeric($qrg)) ) {
$dxcache_url = $this->optionslib->get_option('dxcache_url').'/spot/'.$qrg;
// CURL Functions
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $dxcache_url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Cloudlog DXLookup');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$jsonraw = curl_exec($ch);
curl_close($ch);
$json = json_decode($jsonraw);
// Create JSON object
if (strlen($jsonraw)>20) {
$datetimecurrent = new DateTime("now", new DateTimeZone('UTC')); // Today's Date/Time
$datetimespot = new DateTime($json->when, new DateTimeZone('UTC'));
$spotage = $datetimecurrent->diff($datetimespot);
$minutes = $spotage->days * 24 * 60;
$minutes += $spotage->h * 60;
$minutes += $spotage->i;
$json->age=$minutes;
if ($minutes<=$maxage) {
$dxcc=$this->dxcc_lookup($json->spotter,date('Ymd', time()));
$json->dxcc_spotter=$dxcc;
return ($json);
} else {
return '';
}
} else {
return '';
}
}
}
}
function validateADIFDate($date, $format = 'Ymd')

Wyświetl plik

@ -937,10 +937,10 @@ $(document).on('keypress',function(e) {
if ($this->optionslib->get_option('dxcache_url') != ''){ ?>
<script type="text/javascript">
var dxcluster_provider =' <?php echo $this->optionslib->get_option('dxcache_url'); ?>';
var dxcluster_provider ='/index.php/dxcluster';
$(document).ready(function() {
$("#check_cluster").on("click", function() {
$.ajax({ url: dxcluster_provider+"/spot/"+$("#frequency").val()/1000, cache: false, dataType: "json" }).done(
$.ajax({ url: dxcluster_provider+"/qrg_lookup/"+$("#frequency").val()/1000, cache: false, dataType: "json" }).done(
function(dxspot) {
$("#callsign").val(dxspot.spotted);
$("#callsign").trigger("blur");