From 52df1b780225970a79616fda457607bb25154d4d Mon Sep 17 00:00:00 2001 From: dl6nm Date: Wed, 27 May 2020 11:27:17 +0200 Subject: [PATCH 01/40] Added .htaccess sample file --- .htaccess.sample | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .htaccess.sample diff --git a/.htaccess.sample b/.htaccess.sample new file mode 100644 index 00000000..57dfd443 --- /dev/null +++ b/.htaccess.sample @@ -0,0 +1,8 @@ +# If you want to hide 'index.php' from the URL, rename this file to '.htaccess' on your server +# Then change the following variable in /application/config/config.php +# $config['index_page'] = ''; + +RewriteEngine On +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteRule ^(.*)$ /index.php?/$1 [L] \ No newline at end of file From ece7fe534f6f58415ef3f6461208dafabeb9bc6f Mon Sep 17 00:00:00 2001 From: dl6nm Date: Thu, 28 May 2020 23:40:52 +0200 Subject: [PATCH 02/40] Keep form data in user/add view on error --- application/controllers/User.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/application/controllers/User.php b/application/controllers/User.php index 7c1db98c..0a9e37be 100644 --- a/application/controllers/User.php +++ b/application/controllers/User.php @@ -52,7 +52,7 @@ class User extends CI_Controller { $data['user_callsign'] = $this->input->post('user_callsign'); $data['user_locator'] = $this->input->post('user_locator'); $data['user_timezone'] = $this->input->post('user_timezone'); - $this->load->view('user/add'); + $this->load->view('user/add', $data); } else { $this->load->view('user/add', $data); } @@ -88,7 +88,7 @@ class User extends CI_Controller { $data['user_lastname'] = $this->input->post('user_lastname'); $data['user_callsign'] = $this->input->post('user_callsign'); $data['user_locator'] = $this->input->post('user_locator'); - $this->load->view('user/add'); + $this->load->view('user/add', $data); $this->load->view('interface_assets/footer'); } } From 4e70f77c208775eb75264c9f2072dadbe8880119 Mon Sep 17 00:00:00 2001 From: dl6nm Date: Tue, 2 Jun 2020 22:21:22 +0200 Subject: [PATCH 03/40] Also keep timezone form data on error --- application/views/user/add.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/application/views/user/add.php b/application/views/user/add.php index 0c2e19a3..d33f7184 100644 --- a/application/views/user/add.php +++ b/application/views/user/add.php @@ -76,7 +76,10 @@
- +
From b92ea294c9a63f66272af8045d277a915f9ce881 Mon Sep 17 00:00:00 2001 From: dl6nm Date: Tue, 2 Jun 2020 22:41:30 +0200 Subject: [PATCH 04/40] Added missing closing brace --- application/controllers/User_Logbooks.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/application/controllers/User_Logbooks.php b/application/controllers/User_Logbooks.php index 02e5cf20..08d5c6a8 100644 --- a/application/controllers/User_Logbooks.php +++ b/application/controllers/User_Logbooks.php @@ -16,4 +16,6 @@ class Logbooks extends CI_Controller { public function index() { echo 'Functions to come'; - } \ No newline at end of file + } + +} From 2aff5b6d967bcc8dbeeb3837ea6c067a2cacd74f Mon Sep 17 00:00:00 2001 From: Kim - DG9VH Date: Wed, 3 Jun 2020 21:49:36 +0200 Subject: [PATCH 05/40] Update Logbook_model.php --- application/models/Logbook_model.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/application/models/Logbook_model.php b/application/models/Logbook_model.php index 3e966e33..193c94e5 100755 --- a/application/models/Logbook_model.php +++ b/application/models/Logbook_model.php @@ -115,6 +115,7 @@ class Logbook_model extends CI_Model { 'COL_STATE' => trim($this->input->post('usa_state')), 'COL_SOTA_REF' => trim($this->input->post('sota_ref')), 'COL_DARC_DOK' => trim($this->input->post('darc_dok')), + 'COL_NOTES' => $this->input->post('notes'), ); $station_id = $this->input->post('station_profile'); @@ -544,6 +545,7 @@ class Logbook_model extends CI_Model { 'COL_CQZ' => $this->input->post('cqz'), 'COL_SAT_NAME' => $this->input->post('sat_name'), 'COL_SAT_MODE' => $this->input->post('sat_mode'), + 'COL_NOTES' => $this->input->post('notes'), 'COL_QSLSDATE' => date('Y-m-d'), 'COL_QSLRDATE' => date('Y-m-d'), 'COL_QSL_SENT' => $this->input->post('qsl_sent'), From 0935ab2ef6e25b7eb9818a8a12037f9b5e7d399a Mon Sep 17 00:00:00 2001 From: Kim - DG9VH Date: Wed, 3 Jun 2020 21:51:38 +0200 Subject: [PATCH 06/40] Update edit.php --- application/views/qso/edit.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/application/views/qso/edit.php b/application/views/qso/edit.php index 63606e93..90147b35 100755 --- a/application/views/qso/edit.php +++ b/application/views/qso/edit.php @@ -32,6 +32,7 @@ QSO Sats Awards + Notes QSL Station @@ -332,6 +333,14 @@ + + + + +
+
+ + +
+
+
From 13c66289b41246eb727339e782623ad9d6a110be Mon Sep 17 00:00:00 2001 From: AndreasK79 Date: Thu, 4 Jun 2020 21:56:32 +0200 Subject: [PATCH 08/40] Fixes for uploading modified QSOs to QRZ.com --- application/controllers/Qrz.php | 10 +++++++--- application/models/Logbook_model.php | 8 ++++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/application/controllers/Qrz.php b/application/controllers/Qrz.php index 52c2b9ad..dc8e2857 100644 --- a/application/controllers/Qrz.php +++ b/application/controllers/Qrz.php @@ -54,14 +54,19 @@ class Qrz extends CI_Controller { * Adif is build for each qso, and then uploaded, one at a time */ function mass_upload_qsos($station_id, $qrz_api_key) { - $i = 0; $data['qsos'] = $this->logbook_model->get_qrz_qsos($station_id); if ($data['qsos']) { foreach ($data['qsos'] as $qso) { $adif = $this->logbook_model->create_adif_from_data($qso); - $result = $this->logbook_model->push_qso_to_qrz($qrz_api_key, $adif); + + if ($qso['COL_QRZCOM_QSO_UPLOAD_STATUS'] == 'M') { + $result = $this->logbook_model->push_qso_to_qrz($qrz_api_key, $adif, true); + } else { + $result = $this->logbook_model->push_qso_to_qrz($qrz_api_key, $adif); + } + if ($result) { $this->markqso($qso['COL_PRIMARY_KEY']); $i++; @@ -112,7 +117,6 @@ class Qrz extends CI_Controller { header('Content-type: application/json'); if ($i = $this->mass_upload_qsos($postData['station_id'], $qrz_api_key)) { - $stationinfo = $this->stations->stations_with_qrz_api_key(); $info = $stationinfo->result(); diff --git a/application/models/Logbook_model.php b/application/models/Logbook_model.php index 438dffae..9071d712 100755 --- a/application/models/Logbook_model.php +++ b/application/models/Logbook_model.php @@ -360,13 +360,17 @@ class Logbook_model extends CI_Model { * Function uploads a QSO to QRZ with the API given. * $adif contains a line with the QSO in the ADIF format. QSO ends with an */ - function push_qso_to_qrz($apikey, $adif) { + function push_qso_to_qrz($apikey, $adif, $replaceoption = false) { $url = 'http://logbook.qrz.com/api'; // TODO: Move this to database $post_data['KEY'] = $apikey; $post_data['ACTION'] = 'INSERT'; $post_data['ADIF'] = $adif; + if ($replaceoption) { + $post_data['OPTION'] = 'REPLACE'; + } + $ch = curl_init( $url ); curl_setopt( $ch, CURLOPT_POST, true); curl_setopt( $ch, CURLOPT_POSTFIELDS, $post_data); @@ -376,7 +380,7 @@ class Logbook_model extends CI_Model { $content = curl_exec($ch); if ($content){ - if (stristr($content,'RESULT=OK')) { + if (stristr($content,'RESULT=OK') || stristr($content,'RESULT=REPLACE')) { return true; } else { From cac020c4ea70a6a6cff836ff2cf62e561c3bbd67 Mon Sep 17 00:00:00 2001 From: AndreasK79 Date: Thu, 4 Jun 2020 22:29:20 +0200 Subject: [PATCH 09/40] Resets date and time on post qso if the saved date and time was set for more than 24 hours ago. --- application/controllers/Qso.php | 1 + application/views/qso/index.php | 20 ++++++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/application/controllers/Qso.php b/application/controllers/Qso.php index 483f5d48..846e5741 100755 --- a/application/controllers/Qso.php +++ b/application/controllers/Qso.php @@ -57,6 +57,7 @@ class QSO extends CI_Controller { $qso_data = array( 'start_date' => $this->input->post('start_date'), 'start_time' => $this->input->post('start_time'), + 'time_stamp' => time(), 'band' => $this->input->post('band'), 'freq' => $this->input->post('freq_display'), 'freq_rx' => $this->input->post('freq_display_rx'), diff --git a/application/views/qso/index.php b/application/views/qso/index.php index 3d265717..874a532d 100755 --- a/application/views/qso/index.php +++ b/application/views/qso/index.php @@ -38,12 +38,28 @@
- > + >
- > + >
From 0e15b79f4ee4796e8fd0005d81b1058c8aa054a5 Mon Sep 17 00:00:00 2001 From: Peter Goodhall Date: Fri, 5 Jun 2020 21:50:09 +0100 Subject: [PATCH 10/40] Fixes #533 where POST date/time has spaces --- application/views/qso/index.php | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/application/views/qso/index.php b/application/views/qso/index.php index 92b1346a..55447fcb 100755 --- a/application/views/qso/index.php +++ b/application/views/qso/index.php @@ -42,28 +42,12 @@
- > + >
- > + >
From 78f012641201486bb5e1197de60fb4c155e3e30f Mon Sep 17 00:00:00 2001 From: Kim - DG9VH Date: Thu, 11 Jun 2020 08:18:19 +0200 Subject: [PATCH 11/40] Updating requested-counter to include queued QSLs also As if we extended the coloring of outgoing QSL cards to include queued cards also to get yellow and include them also to the list of "to be printed" cards, we have to count them also in the summary. --- application/models/Logbook_model.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/application/models/Logbook_model.php b/application/models/Logbook_model.php index c8b903b2..e91a7cbf 100755 --- a/application/models/Logbook_model.php +++ b/application/models/Logbook_model.php @@ -1156,14 +1156,14 @@ class Logbook_model extends CI_Model { } } - /* Return total number of QSL Cards requested */ + /* Return total number of QSL Cards requested for printing - that means "requested" or "queued" */ function total_qsl_requested() { $CI =& get_instance(); $CI->load->model('Stations'); $station_id = $CI->Stations->find_active(); - $query = $this->db->query('SELECT DISTINCT (COL_QSL_SENT) AS band, count(COL_QSL_SENT) AS count FROM '.$this->config->item('table_name').' WHERE station_id = '.$station_id.' AND COL_QSL_SENT = "R" GROUP BY band'); + $query = $this->db->query('SELECT DISTINCT (COL_QSL_SENT) AS band, count(COL_QSL_SENT) AS count FROM '.$this->config->item('table_name').' WHERE station_id = '.$station_id.' AND COL_QSL_SENT in ("Q", "R") GROUP BY band'); $row = $query->row(); From cabe79a664c29edc08be15484f1b2f7d5c0f8df1 Mon Sep 17 00:00:00 2001 From: Michael Bridak <49108421+mbridak@users.noreply.github.com> Date: Fri, 12 Jun 2020 18:11:42 -0700 Subject: [PATCH 12/40] Fix calls showing in the wrong dxcc region. Added checks to dxcc_exceptons. --- application/models/Logbook_model.php | 33 +++++++++++++++++++--------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/application/models/Logbook_model.php b/application/models/Logbook_model.php index c8b903b2..31bdb54c 100755 --- a/application/models/Logbook_model.php +++ b/application/models/Logbook_model.php @@ -1915,6 +1915,18 @@ class Logbook_model extends CI_Model { public function check_dxcc_table($call, $date){ $len = strlen($call); + $dxcc_exceptions = $this->db->select('`entity`, `adif`, `cqz`') + ->where('call', $call) + ->where('(start <= ', $date) + ->or_where('start is null)', NULL, false) + ->where('(end >= ', $date) + ->or_where('end is null)', NULL, false) + ->get('dxcc_exceptions'); + + if ($dxcc_exceptions->num_rows() > 0){ + $row = $dxcc_exceptions->row_array(); + return array($row['adif'], $row['entity'], $row['cqz']); + } // 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)); @@ -1940,18 +1952,19 @@ class Logbook_model extends CI_Model { public function dxcc_lookup($call, $date){ $len = strlen($call); - - $this->db->where('call', $call); - $this->db->where('CURDATE() between start and end'); - - $query = $this->db->get('dxcc_exceptions'); + + $dxcc_exceptions = $this->db->select('`entity`, `adif`, `cqz`') + ->where('call', $call) + ->where('(start <= CURDATE()') + ->or_where('start is null', NULL, false) + ->where('end >= CURDATE()') + ->or_where('end is null)', NULL, false) + ->get('dxcc_exceptions'); - if ($query->num_rows() > 0){ - - $row = $query->row_array(); - - return $row; + if ($dxcc_exceptions->num_rows() > 0){ + $row = $dxcc_exceptions->row_array(); + return $row; } else { // query the table, removing a character from the right until a match for ($i = $len; $i > 0; $i--){ From 8e0b6da1ebbfa90bf51fbf0f0ddd0891535a0d28 Mon Sep 17 00:00:00 2001 From: Ciemon Date: Sat, 13 Jun 2020 11:20:45 +0100 Subject: [PATCH 13/40] Added CAS-3H to satellite_data.json --- assets/json/satellite_data.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/assets/json/satellite_data.json b/assets/json/satellite_data.json index 2058360a..04e1cdc9 100644 --- a/assets/json/satellite_data.json +++ b/assets/json/satellite_data.json @@ -99,6 +99,18 @@ ] } }, + "CAS-3H":{ + "Modes":{ + "V/U":[ + { + "Uplink_Mode":"FM", + "Uplink_Freq":"144350000", + "Downlink_Mode":"FM", + "Downlink_Freq":"437200000" + } + ] + } + }, "CAS-4A":{ "Modes":{ "U/V":[ From 94bef8da3a918d62d52fcbe8359ab552120ff29b Mon Sep 17 00:00:00 2001 From: Peter Goodhall Date: Mon, 15 Jun 2020 16:59:27 +0100 Subject: [PATCH 14/40] Changed Map icon to round dot on dashboard and logbook --- application/views/interface_assets/footer.php | 4 ++++ assets/images/dot.png | Bin 0 -> 526 bytes assets/js/leaflet/leafembed.js | 7 ++++++- 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 assets/images/dot.png diff --git a/application/views/interface_assets/footer.php b/application/views/interface_assets/footer.php index 6c3e7faa..1496ecac 100644 --- a/application/views/interface_assets/footer.php +++ b/application/views/interface_assets/footer.php @@ -9,6 +9,10 @@ + + uri->segment(1) == "adif") { ?> diff --git a/assets/images/dot.png b/assets/images/dot.png new file mode 100644 index 0000000000000000000000000000000000000000..876959180dac71a57ba627919d584852eccacd6b GIT binary patch literal 526 zcmV+p0`dKcP)SuE?mh zy6{-BN}w0OT-Uw?JF=V|3%ErxS{EZ@`9N z&CTOpt^tr#D_G+qTauHsq2J5T0^m^=ez0=@o|hU?L}#-!9Aca~!NY8{d-b{p19;wj zH-l|5>kMpY!-lPq9+(4uX5FM(fhg)3*ViP6l@T~UCXm%I4ZMLhF6eBQdXM<&Bi8sn z;tD!cYiY3{r*HhvH=-vlfBZR+*#Acuu)Tc!dH`B%w1=njp_LFCVb zMH#z5{1@^DY{$R4DeCmJ1AWtYr`FP9LDB}WBBkSO#wDU==tI7Ka^7Em3&-D%^6037 QoB#j-07*qoM6N<$f{4-Tf&c&j literal 0 HcmV?d00001 diff --git a/assets/js/leaflet/leafembed.js b/assets/js/leaflet/leafembed.js index 32c77624..0541974e 100644 --- a/assets/js/leaflet/leafembed.js +++ b/assets/js/leaflet/leafembed.js @@ -5,6 +5,11 @@ var ajaxRequest; var plotlist; var plotlayers=[]; +var greenIcon = L.icon({ + iconUrl: icon_dot_url, + iconSize: [10, 10], // size of the icon +}); + function initmap(ShowGrid = 'No') { // set up AJAX request ajaxRequest=getXmlHttpObject(); @@ -61,7 +66,7 @@ function stateChanged() { removeMarkers(); for (i=0;i"+plotlist[i].label+""+plotlist[i].html); From 6d84a760b94a6c1f633b1b6ad8a1ce9734844f96 Mon Sep 17 00:00:00 2001 From: Peter Goodhall Date: Wed, 17 Jun 2020 14:37:17 +0100 Subject: [PATCH 15/40] Changed QSO View Map pin to round dot --- application/views/interface_assets/footer.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/application/views/interface_assets/footer.php b/application/views/interface_assets/footer.php index 1496ecac..e4789b89 100644 --- a/application/views/interface_assets/footer.php +++ b/application/views/interface_assets/footer.php @@ -1042,7 +1042,13 @@ $(document).on('change', 'input', function(){ id: 'mapbox.streets' }).addTo(mymap); - L.marker([lat,long]).addTo(mymap) + + var redIcon = L.icon({ + iconUrl: icon_dot_url, + iconSize: [18, 18], // size of the icon + }); + + L.marker([lat,long], {icon: redIcon}).addTo(mymap) .bindPopup(callsign); mymap.on('click', onMapClick); From 008ff154edcd3d597a5585cf5800b2a2ddb6c63d Mon Sep 17 00:00:00 2001 From: Peter Goodhall Date: Wed, 17 Jun 2020 14:49:04 +0100 Subject: [PATCH 16/40] Changed QSO window pin to red dot. --- application/views/interface_assets/footer.php | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/application/views/interface_assets/footer.php b/application/views/interface_assets/footer.php index e4789b89..e29a0bb2 100644 --- a/application/views/interface_assets/footer.php +++ b/application/views/interface_assets/footer.php @@ -531,10 +531,15 @@ $(document).on('change', 'input', function(){ // Set Map to Lat/Long it locator is not empty if($('#locator').val() == "") { + var redIcon = L.icon({ + iconUrl: icon_dot_url, + iconSize: [18, 18], // size of the icon + }); + markers.clearLayers(); - var marker = L.marker([result.dxcc.lat, result.dxcc.long]); - mymap.setZoom(8); - mymap.panTo([result.dxcc.lat, result.dxcc.long]); + var marker = L.marker([result.dxcc.lat, result.dxcc.long], {icon: redIcon}); + mymap.setZoom(8); + mymap.panTo([result.dxcc.lat, result.dxcc.long]); markers.addLayer(marker).addTo(mymap); } } @@ -726,15 +731,19 @@ $(document).on('change', 'input', function(){ $('#ituz').val(result.dxcc.ituz); + var redIcon = L.icon({ + iconUrl: icon_dot_url, + iconSize: [18, 18], // size of the icon + }); // Set Map to Lat/Long markers.clearLayers(); - mymap.setZoom(8); + mymap.setZoom(8); if (typeof result.latlng !== "undefined" && result.latlng !== false) { - var marker = L.marker([result.latlng[0], result.latlng[1]]); + var marker = L.marker([result.latlng[0], result.latlng[1]], {icon: redIcon}); mymap.panTo([result.latlng[0], result.latlng[1]]); } else { - var marker = L.marker([result.dxcc.lat, result.dxcc.long]); + var marker = L.marker([result.dxcc.lat, result.dxcc.long], {icon: redIcon}); mymap.panTo([result.dxcc.lat, result.dxcc.long]); } @@ -907,7 +916,12 @@ $(document).on('change', 'input', function(){ // Set Map to Lat/Long markers.clearLayers(); if (typeof result !== "undefined") { - var marker = L.marker([result[0], result[1]]); + var redIcon = L.icon({ + iconUrl: icon_dot_url, + iconSize: [18, 18], // size of the icon + }); + + var marker = L.marker([result[0], result[1]], {icon: redIcon}); mymap.setZoom(8); mymap.panTo([result[0], result[1]]); } From a441377f19c73d08cdc15d98e34a957caa658e13 Mon Sep 17 00:00:00 2001 From: Peter Goodhall Date: Wed, 17 Jun 2020 15:05:21 +0100 Subject: [PATCH 17/40] Cleaned up the LoTW import screen --- application/views/lotw/import.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/application/views/lotw/import.php b/application/views/lotw/import.php index 70858323..0624b9e3 100644 --- a/application/views/lotw/import.php +++ b/application/views/lotw/import.php @@ -1,7 +1,7 @@

LOTW Import

- +
Import Options
@@ -48,9 +48,7 @@

Cloudlog will use the LoTW username and password stored in your user profile to download a report from LoTW for you. The report Cloudlog downloads will have all confirmations since chosen date, or since your last LoTW confirmation (fetched from your log), up until now.

-

Important You must have QSOs in the logbook before this option works, it will not populate your log from empty based on LoTW QSOs yet.

- - +
From 5732cba6ccc3b10ba776015613fbec841a293885 Mon Sep 17 00:00:00 2001 From: Peter Goodhall Date: Wed, 17 Jun 2020 15:11:05 +0100 Subject: [PATCH 18/40] Testing new checkbox layout --- application/views/lotw/import.php | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/application/views/lotw/import.php b/application/views/lotw/import.php index 0624b9e3..d390b4b0 100644 --- a/application/views/lotw/import.php +++ b/application/views/lotw/import.php @@ -10,16 +10,20 @@ -
- - -

Upload the Exported ADIF file from LoTW from the Download Report Area, to mark QSOs as confirmed on LOTW.

-

Important Log files must have the file type .adi

-
- - -
-
+
+ + + +

Upload the Exported ADIF file from LoTW from the Download Report Area, to mark QSOs as confirmed on LOTW.

+

Important Log files must have the file type .adi

+ +
+ + +
+ +
+

From 797fd6db58a7feb25c3bc4db870f1bbc503688c3 Mon Sep 17 00:00:00 2001 From: Peter Goodhall Date: Wed, 17 Jun 2020 15:17:46 +0100 Subject: [PATCH 19/40] Cleaned up eQSL import screen --- application/views/eqsl/import.php | 36 ++++++++++++++++++------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/application/views/eqsl/import.php b/application/views/eqsl/import.php index bc0adef8..d05c62d2 100644 --- a/application/views/eqsl/import.php +++ b/application/views/eqsl/import.php @@ -15,23 +15,29 @@ load->view('layout/messages'); ?> - - - - - - - - - -
Upload a file -

Upload the Exported ADIF file from eQSL from the Download Inbox page, to mark QSOs as confirmed on eQSL.

+ +
+ + +

+

Upload the Exported ADIF file from eQSL from the Download Inbox page, to mark QSOs as confirmed on eQSL.

Important Log files must have the file type .adi

-
Pull eQSL data for me -

Cloudlog will use the eQSL username and password stored in your user profile to download confirmations from eQSL for you. We will only download confirmations received since your last eQSL confirmed QSO.

-
- +
+ +

+ +
+ + +

Cloudlog will use the eQSL username and password stored in your user profile to download confirmations from eQSL for you. We will only download confirmations received since your last eQSL confirmed QSO.

+
+ +
From 21cf9219cd5a859ab3ebe561ca72961518653707 Mon Sep 17 00:00:00 2001 From: Ciemon Date: Sat, 20 Jun 2020 16:44:05 +0100 Subject: [PATCH 20/40] Added CAS-6 Source https://amsat-uk.org/2020/06/20/cas-6-antenna-deployed/ --- assets/json/satellite_data.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/assets/json/satellite_data.json b/assets/json/satellite_data.json index 04e1cdc9..eb7380c3 100644 --- a/assets/json/satellite_data.json +++ b/assets/json/satellite_data.json @@ -135,6 +135,18 @@ ] } }, + "CAS-6":{ + "Modes":{ + "U/V":[ + { + "Uplink_Mode":"LSB", + "Uplink_Freq":"435280000", + "Downlink_Mode":"USB", + "Downlink_Freq":"145925000" + } + ] + } + }, "EO-88":{ "Modes":{ "U/V":[ From 62e961747d392d5af2feb5638cdd6d4017d4b80a Mon Sep 17 00:00:00 2001 From: AndreasK79 Date: Tue, 23 Jun 2020 09:22:37 +0200 Subject: [PATCH 21/40] Added option for adif export to only export those not flagged as exported. --- application/controllers/Adif.php | 9 ++++++++- application/models/Adif_data.php | 7 +++++-- application/views/adif/import.php | 8 ++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/application/controllers/Adif.php b/application/controllers/Adif.php index ca3b4fff..cbf2f52c 100644 --- a/application/controllers/Adif.php +++ b/application/controllers/Adif.php @@ -82,7 +82,14 @@ class adif extends CI_Controller { $this->load->model('adif_data'); - $data['qsos'] = $this->adif_data->export_custom($this->input->post('from'), $this->input->post('to')); + // Used for exporting QSOs not previously exported to LoTW + if ($this->input->post('exportLotw') == 1) { + $exportLotw = true; + } else { + $exportLotw = false; + } + + $data['qsos'] = $this->adif_data->export_custom($this->input->post('from'), $this->input->post('to'), $exportLotw); $this->load->view('adif/data/exportall', $data); diff --git a/application/models/Adif_data.php b/application/models/Adif_data.php index 008af8a0..8b15e9f2 100644 --- a/application/models/Adif_data.php +++ b/application/models/Adif_data.php @@ -67,10 +67,9 @@ class adif_data extends CI_Model { return $this->db->get(); } - function export_custom($from, $to) { + function export_custom($from, $to, $exportLotw = false) { $this->load->model('stations'); $active_station_id = $this->stations->find_active(); - $this->db->select(''.$this->config->item('table_name').'.*, station_profile.*'); $this->db->from($this->config->item('table_name')); @@ -87,6 +86,10 @@ class adif_data extends CI_Model { $to = $to->format('Y-m-d'); $this->db->where("date(".$this->config->item('table_name').".COL_TIME_ON) <= '".$to."'"); } + if ($exportLotw) { + $this->db->where($this->config->item('table_name').".COL_LOTW_QSL_SENT != 'Y'"); + } + $this->db->order_by($this->config->item('table_name').".COL_TIME_ON", "ASC"); $this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id'); diff --git a/application/views/adif/import.php b/application/views/adif/import.php index 66e0aa80..f84cd2f2 100644 --- a/application/views/adif/import.php +++ b/application/views/adif/import.php @@ -106,6 +106,14 @@
+
+
+
+ + +
+
+
From 13e6b66d546427fe6800fd56a53a73551fbc1ab2 Mon Sep 17 00:00:00 2001 From: Kim - DG9VH Date: Fri, 26 Jun 2020 13:43:44 +0200 Subject: [PATCH 22/40] Fixed confusing behavior... ... when clicking on the "Mark imported/exported QSOs as uploaded to LoTW"... orifinally clicking on the export-label sets the marker on import, which was a bug by doublicated IDs on the HTML-entities. --- application/views/adif/import.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/application/views/adif/import.php b/application/views/adif/import.php index f84cd2f2..02c42272 100644 --- a/application/views/adif/import.php +++ b/application/views/adif/import.php @@ -39,8 +39,8 @@
- - + +
@@ -101,8 +101,8 @@
- - + +
From eacabceec02d3662f56743c36eec3541f87ffbff Mon Sep 17 00:00:00 2001 From: Kim - DG9VH Date: Fri, 26 Jun 2020 14:05:42 +0200 Subject: [PATCH 23/40] Correcting QSL-count-behavior There was a bug in counting QSL-cards send, received and requested (by request or queue) for printing... Looked like a c&p-bug, now corrected. --- application/models/Logbook_model.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/application/models/Logbook_model.php b/application/models/Logbook_model.php index cf8e6f08..83b43397 100755 --- a/application/models/Logbook_model.php +++ b/application/models/Logbook_model.php @@ -1145,7 +1145,7 @@ class Logbook_model extends CI_Model { $CI->load->model('Stations'); $station_id = $CI->Stations->find_active(); - $query = $this->db->query('SELECT DISTINCT (COL_QSL_SENT) AS band, count(COL_QSL_SENT) AS count FROM '.$this->config->item('table_name').' WHERE station_id = '.$station_id.' AND COL_QSL_SENT = "Y" GROUP BY band'); + $query = $this->db->query('SELECT count(COL_QSL_SENT) AS count FROM '.$this->config->item('table_name').' WHERE station_id = '.$station_id.' AND COL_QSL_SENT = "Y"'); $row = $query->row(); @@ -1163,7 +1163,7 @@ class Logbook_model extends CI_Model { $CI->load->model('Stations'); $station_id = $CI->Stations->find_active(); - $query = $this->db->query('SELECT DISTINCT (COL_QSL_SENT) AS band, count(COL_QSL_SENT) AS count FROM '.$this->config->item('table_name').' WHERE station_id = '.$station_id.' AND COL_QSL_SENT in ("Q", "R") GROUP BY band'); + $query = $this->db->query('SELECT count(COL_QSL_SENT) AS count FROM '.$this->config->item('table_name').' WHERE station_id = '.$station_id.' AND COL_QSL_SENT in ("Q", "R")'); $row = $query->row(); @@ -1181,7 +1181,7 @@ class Logbook_model extends CI_Model { $CI->load->model('Stations'); $station_id = $CI->Stations->find_active(); - $query = $this->db->query('SELECT DISTINCT (COL_QSL_RCVD) AS band, count(COL_QSL_RCVD) AS count FROM '.$this->config->item('table_name').' WHERE station_id = '.$station_id.' AND COL_QSL_RCVD = "Y" GROUP BY band'); + $query = $this->db->query('SELECT count(COL_QSL_RCVD) AS count FROM '.$this->config->item('table_name').' WHERE station_id = '.$station_id.' AND COL_QSL_RCVD = "Y"'); $row = $query->row(); From d118f0f3d2827262ab9fda6c396edc69807e51be Mon Sep 17 00:00:00 2001 From: Joshua Rubin Date: Wed, 1 Jul 2020 00:34:51 -0600 Subject: [PATCH 24/40] don't require auth to update lotw users required for cron Signed-off-by: Joshua Rubin --- application/controllers/Lotw.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/application/controllers/Lotw.php b/application/controllers/Lotw.php index 0c4b332d..ffa721ae 100644 --- a/application/controllers/Lotw.php +++ b/application/controllers/Lotw.php @@ -7,13 +7,13 @@ class Lotw extends CI_Controller { { parent::__construct(); $this->load->helper(array('form', 'url')); - - $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'); } } private function loadFromFile($filepath) { + $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'); } + // Figure out how we should be marking QSLs confirmed via LoTW $query = $query = $this->db->query('SELECT lotw_rcvd_mark FROM config'); $q = $query->row(); @@ -107,6 +107,9 @@ class Lotw extends CI_Controller { } public function import() { + $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'); } + $data['page_title'] = "LoTW ADIF Import"; $config['upload_path'] = './uploads/'; @@ -192,6 +195,9 @@ class Lotw extends CI_Controller { } // end function public function export() { + $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'); } + $data['page_title'] = "LoTW .TQ8 Upload"; $config['upload_path'] = './uploads/'; From 0d2daee7eb72e47de166386fb9f467c40293473f Mon Sep 17 00:00:00 2001 From: es2ice Date: Thu, 16 Jul 2020 22:53:24 +0300 Subject: [PATCH 25/40] use measurement_base for distance calculation --- application/views/view_log/qso.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/views/view_log/qso.php b/application/views/view_log/qso.php index ebe03070..6add8387 100644 --- a/application/views/view_log/qso.php +++ b/application/views/view_log/qso.php @@ -75,7 +75,7 @@ $CI->load->library('qra'); // Cacluate Distance - echo $CI->qra->distance($row->station_gridsquare, $row->COL_GRIDSQUARE, 'M'); + echo $CI->qra->distance($row->station_gridsquare, $row->COL_GRIDSQUARE, $this->config->item('measurement_base')); switch ($this->config->item('measurement_base')) { case 'M': echo "mi"; From ab8876c8830f7db36ea22f919de31eda548d2cfc Mon Sep 17 00:00:00 2001 From: Kim - DG9VH Date: Fri, 24 Jul 2020 20:48:08 +0200 Subject: [PATCH 26/40] Added 6cm into band selectbox 6cm was not listed... --- application/views/qso/index.php | 1 + 1 file changed, 1 insertion(+) diff --git a/application/views/qso/index.php b/application/views/qso/index.php index 55447fcb..fe5f5e5a 100755 --- a/application/views/qso/index.php +++ b/application/views/qso/index.php @@ -109,6 +109,7 @@ + From cea2cb3ea8ff72b9bbd0ecff5470e661490f83d8 Mon Sep 17 00:00:00 2001 From: AndreasK79 Date: Sat, 8 Aug 2020 08:47:02 +0200 Subject: [PATCH 27/40] Added a bit better error handling. Writing errors to logfile now, if turned on in config. --- application/controllers/Qrz.php | 7 +++++-- application/models/Logbook_model.php | 14 ++++++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/application/controllers/Qrz.php b/application/controllers/Qrz.php index dc8e2857..50099b97 100644 --- a/application/controllers/Qrz.php +++ b/application/controllers/Qrz.php @@ -36,7 +36,7 @@ class Qrz extends CI_Controller { } } else { echo "No station_id's with a QRZ API Key found"; - log_message('info', "No station_id's with a QRZ API Key found"); + log_message('error', "No station_id's with a QRZ API Key found"); } } @@ -67,9 +67,12 @@ class Qrz extends CI_Controller { $result = $this->logbook_model->push_qso_to_qrz($qrz_api_key, $adif); } - if ($result) { + if ($result['status'] == 'OK') { $this->markqso($qso['COL_PRIMARY_KEY']); $i++; + } else { + log_message('error', 'QRZ upload failed for qso: ' .$adif); + log_message('error', 'QRZ upload failed with the following message: ' .$result['message']); } } return $i; diff --git a/application/models/Logbook_model.php b/application/models/Logbook_model.php index 83b43397..545bd7ff 100755 --- a/application/models/Logbook_model.php +++ b/application/models/Logbook_model.php @@ -328,7 +328,8 @@ class Logbook_model extends CI_Model { // Push qso to qrz if apikey is set if ($apikey = $this->exists_qrz_api_key($data['station_id'])) { $adif = $this->create_adif_from_data($data); - IF ($this->push_qso_to_qrz($apikey, $adif)) { + $result = $this->push_qso_to_qrz($apikey, $adif); + IF ($result['status'] == 'OK') { $data['COL_QRZCOM_QSO_UPLOAD_STATUS'] = 'Y'; $data['COL_QRZCOM_QSO_UPLOAD_DATE'] = date("Y-m-d H:i:s", strtotime("now")); } @@ -382,14 +383,19 @@ class Logbook_model extends CI_Model { $content = curl_exec($ch); if ($content){ if (stristr($content,'RESULT=OK') || stristr($content,'RESULT=REPLACE')) { - return true; + $result['status'] = 'OK'; + return $result; } else { - return false; + $result['status'] = 'error'; + $result['message'] = $content; + return $result; } } if(curl_errno($ch)){ - return false; + $result['status'] = 'error'; + $result['message'] = 'Curl error: '. curl_errno($ch); + return $result; } curl_close($ch); } From 0fbacec2585e6eb2713ab3c1d079bf5c385fe028 Mon Sep 17 00:00:00 2001 From: AndreasK79 Date: Sat, 8 Aug 2020 15:52:59 +0200 Subject: [PATCH 28/40] Added showing of error messages in GUI when uploading to QRZ.com --- application/controllers/Qrz.php | 21 +++++++++++++----- application/views/interface_assets/footer.php | 22 +++++++++++++++++++ 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/application/controllers/Qrz.php b/application/controllers/Qrz.php index 50099b97..d8d01d34 100644 --- a/application/controllers/Qrz.php +++ b/application/controllers/Qrz.php @@ -56,6 +56,7 @@ class Qrz extends CI_Controller { function mass_upload_qsos($station_id, $qrz_api_key) { $i = 0; $data['qsos'] = $this->logbook_model->get_qrz_qsos($station_id); + $errormessages=array(); if ($data['qsos']) { foreach ($data['qsos'] as $qso) { @@ -71,13 +72,20 @@ class Qrz extends CI_Controller { $this->markqso($qso['COL_PRIMARY_KEY']); $i++; } else { - log_message('error', 'QRZ upload failed for qso: ' .$adif); + log_message('error', 'QRZ upload failed for qso: Call: ' . $qso['COL_CALL'] . ' Band: ' . $qso['COL_BAND'] . ' Mode: ' . $qso['COL_MODE'] . ' Time: ' . $qso['COL_TIME_ON']); log_message('error', 'QRZ upload failed with the following message: ' .$result['message']); + $errormessages[] = $result['message'] . ' Call: ' . $qso['COL_CALL'] . ' Band: ' . $qso['COL_BAND'] . ' Mode: ' . $qso['COL_MODE'] . ' Time: ' . $qso['COL_TIME_ON']; } } - return $i; + $result['status'] = 'OK'; + $result['count'] = $i; + $result['errormessages'] = $errormessages; + return $result; } else { - return $i; + $result['status'] = 'Error'; + $result['count'] = $i; + $result['errormessages'] = $errormessages; + return $result; } } @@ -119,17 +127,20 @@ class Qrz extends CI_Controller { $qrz_api_key = $this->logbook_model->exists_qrz_api_key($postData['station_id']); header('Content-type: application/json'); - if ($i = $this->mass_upload_qsos($postData['station_id'], $qrz_api_key)) { + $result = $this->mass_upload_qsos($postData['station_id'], $qrz_api_key); + if ($result['status'] == 'OK') { $stationinfo = $this->stations->stations_with_qrz_api_key(); $info = $stationinfo->result(); $data['status'] = 'OK'; $data['info'] = $info; - $data['infomessage'] = $i . " QSOs are now uploaded to QRZ.com"; + $data['infomessage'] = $result['count'] . " QSOs are now uploaded to QRZ.com"; + $data['errormessages'] = $result['errormessages']; echo json_encode($data); } else { $data['status'] = 'Error'; $data['info'] = 'Error, no QSOs to upload found'; + $data['errormessages'] = $result['errormessages']; echo json_encode($data); } } diff --git a/application/views/interface_assets/footer.php b/application/views/interface_assets/footer.php index e29a0bb2..cc4097e8 100644 --- a/application/views/interface_assets/footer.php +++ b/application/views/interface_assets/footer.php @@ -1383,6 +1383,12 @@ $(document).ready(function(){ uri->segment(1) == "qrz") { ?>