diff --git a/application/controllers/Dxcluster.php b/application/controllers/Dxcluster.php new file mode 100644 index 00000000..807e3793 --- /dev/null +++ b/application/controllers/Dxcluster.php @@ -0,0 +1,46 @@ +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" }'; + } + } +} diff --git a/application/models/Logbook_model.php b/application/models/Logbook_model.php index cec2811f..704e5bad 100755 --- a/application/models/Logbook_model.php +++ b/application/models/Logbook_model.php @@ -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') diff --git a/application/views/interface_assets/footer.php b/application/views/interface_assets/footer.php index 030f28a0..2d755e2c 100644 --- a/application/views/interface_assets/footer.php +++ b/application/views/interface_assets/footer.php @@ -937,10 +937,10 @@ $(document).on('keypress',function(e) { if ($this->optionslib->get_option('dxcache_url') != ''){ ?>