diff --git a/application/controllers/Logbookadvanced.php b/application/controllers/Logbookadvanced.php index 124e0e91d..d8698b3ed 100644 --- a/application/controllers/Logbookadvanced.php +++ b/application/controllers/Logbookadvanced.php @@ -53,6 +53,7 @@ class Logbookadvanced extends CI_Controller { $pageData['dxccarray'] = $this->logbook_model->fetchDxcc(); $pageData['iotaarray'] = $this->logbook_model->fetchIota(); $pageData['sats'] = $this->bands->get_worked_sats(); + $pageData['orbits'] = $this->bands->get_worked_orbits(); $pageData['station_profile'] = $this->stations->all_of_user(); $pageData['active_station_info'] = $station_profile->row(); $pageData['homegrid'] = explode(',', $this->stations->find_gridsquare()); @@ -124,6 +125,7 @@ class Logbookadvanced extends CI_Controller { 'cqzone' => xss_clean($this->input->post('cqzone')), 'qsoresults' => xss_clean($this->input->post('qsoresults')), 'sats' => xss_clean($this->input->post('sats')), + 'orbits' => xss_clean($this->input->post('orbits')), 'lotwSent' => xss_clean($this->input->post('lotwSent')), 'lotwReceived' => xss_clean($this->input->post('lotwReceived')), 'eqslSent' => xss_clean($this->input->post('eqslSent')), @@ -288,6 +290,7 @@ class Logbookadvanced extends CI_Controller { 'cqzone' => '', 'qsoresults' => count($this->input->post('ids')), 'sats' => '', + 'orbits' => '', 'lotwSent' => '', 'lotwReceived' => '', 'eqslSent' => '', @@ -328,6 +331,7 @@ class Logbookadvanced extends CI_Controller { 'cqzone' => xss_clean($this->input->post('cqzone')), 'qsoresults' => xss_clean($this->input->post('qsoresults')), 'sats' => xss_clean($this->input->post('sats')), + 'orbits' => xss_clean($this->input->post('orbits')), 'lotwSent' => xss_clean($this->input->post('lotwSent')), 'lotwReceived' => xss_clean($this->input->post('lotwReceived')), 'eqslSent' => xss_clean($this->input->post('eqslSent')), @@ -414,6 +418,7 @@ class Logbookadvanced extends CI_Controller { $data['mycallsign'] = $qso['station_callsign']; $data['datetime'] = date($custom_date_format, strtotime($qso['COL_TIME_ON'])). date(' H:i',strtotime($qso['COL_TIME_ON'])); $data['satname'] = $qso['COL_SAT_NAME']; + $data['orbit'] = $qso['orbit']; $data['confirmed'] = ($this->logbook_model->qso_is_confirmed($qso)==true) ? true : false; return $data; @@ -440,6 +445,7 @@ class Logbookadvanced extends CI_Controller { $data['mycallsign'] = $qso['station_callsign']; $data['datetime'] = date($custom_date_format, strtotime($qso['COL_TIME_ON'])). date(' H:i',strtotime($qso['COL_TIME_ON'])); $data['satname'] = $qso['COL_SAT_NAME']; + $data['orbit'] = $qso['orbit']; $data['confirmed'] = ($this->logbook_model->qso_is_confirmed($qso)==true) ? true : false; return $data; diff --git a/application/language/english/general_words_lang.php b/application/language/english/general_words_lang.php index 8b011f3ab..0e035dd3c 100644 --- a/application/language/english/general_words_lang.php +++ b/application/language/english/general_words_lang.php @@ -45,6 +45,7 @@ $lang['general_word_location'] = 'Location'; $lang['general_word_comment'] = 'Comment'; $lang['general_word_general'] = 'General'; $lang['general_word_satellite'] = 'Satellite'; +$lang['general_word_orbit'] = 'Orbit'; $lang['general_word_satellite_short'] = 'Sat'; $lang['general_word_notes'] = 'Notes'; $lang['general_word_country'] = 'Country'; diff --git a/application/models/Logbookadvanced_model.php b/application/models/Logbookadvanced_model.php index e9538a2bf..77efc7729 100644 --- a/application/models/Logbookadvanced_model.php +++ b/application/models/Logbookadvanced_model.php @@ -59,6 +59,10 @@ class Logbookadvanced_model extends CI_Model { } } } + if ($searchCriteria['orbits'] !== 'All' && $searchCriteria['orbits'] !== '') { + $conditions[] = "orbit = ?"; + $binding[] = $searchCriteria['orbits']; + } if ($searchCriteria['qslSent'] !== '') { $condition = "COL_QSL_SENT = ?"; if ($searchCriteria['qslSent'] == 'N') { @@ -216,6 +220,7 @@ class Logbookadvanced_model extends CI_Model { SELECT * FROM " . $this->config->item('table_name') . " qsos INNER JOIN station_profile ON qsos.station_id=station_profile.station_id + LEFT OUTER JOIN satellite ON qsos.COL_SAT_NAME = satellite.name LEFT OUTER JOIN dxcc_entities ON qsos.col_dxcc=dxcc_entities.adif LEFT OUTER JOIN lotw_users ON qsos.col_call=lotw_users.callsign LEFT OUTER JOIN ( diff --git a/application/views/logbookadvanced/index.php b/application/views/logbookadvanced/index.php index 11eed4c3d..d5e06060d 100644 --- a/application/views/logbookadvanced/index.php +++ b/application/views/logbookadvanced/index.php @@ -166,6 +166,15 @@ $options = json_decode($options); } ?> +
diff --git a/assets/js/sections/logbookadvanced.js b/assets/js/sections/logbookadvanced.js index 71c35841b..ca2250b26 100644 --- a/assets/js/sections/logbookadvanced.js +++ b/assets/js/sections/logbookadvanced.js @@ -6,8 +6,10 @@ $('#band').change(function () { var band = $("#band option:selected").text(); if (band != "SAT") { $(".sats_dropdown").attr("hidden", true); + $(".orbits_dropdown").attr("hidden", true); } else { $(".sats_dropdown").removeAttr("hidden"); + $(".orbits_dropdown").removeAttr("hidden"); } }); @@ -15,8 +17,10 @@ $('#selectPropagation').change(function () { var prop_mode = $("#selectPropagation option:selected").text(); if (prop_mode != "Satellite") { $(".sats_dropdown").attr("hidden", true); + $(".orbits_dropdown").attr("hidden", true); } else { $(".sats_dropdown").removeAttr("hidden"); + $(".orbits_dropdown").removeAttr("hidden"); } }); @@ -289,6 +293,7 @@ $(document).ready(function () { state: this.state.value, qsoresults: this.qsoResults.value, sats: this.sats.value, + orbits: this.orbits.value, cqzone: this.cqzone.value, lotwSent: this.lotwSent.value, lotwReceived: this.lotwReceived.value, diff --git a/assets/js/sections/logbookadvanced_map.js b/assets/js/sections/logbookadvanced_map.js index a89df02f6..c06696cde 100644 --- a/assets/js/sections/logbookadvanced_map.js +++ b/assets/js/sections/logbookadvanced_map.js @@ -461,7 +461,11 @@ function loadMap(data, iconsList) { ''; if (qso.satname != "") { table += 'Band' + - 'SAT ' + qso.satname + '' + + 'SAT ' + qso.satname + if (qso.orbit != "") { + table += ' (' + qso.orbit + ') ' + } + table += '' + '' + ''; } else { @@ -567,6 +571,7 @@ function loadMap(data, iconsList) { state: form.state.value, qsoresults: form.qsoResults.value, sats: form.sats.value, + orbits: form.orbits.value, cqzone: form.cqzone.value, lotwSent: form.lotwSent.value, lotwReceived: form.lotwReceived.value, @@ -653,6 +658,7 @@ function loadMap(data, iconsList) { state: form.state.value, qsoresults: form.qsoResults.value, sats: form.sats.value, + orbits: form.orbits.value, cqzone: form.cqzone.value, lotwSent: form.lotwSent.value, lotwReceived: form.lotwReceived.value, diff --git a/src/QSLManager/QSO.php b/src/QSLManager/QSO.php index 328ce10ba..bab580447 100644 --- a/src/QSLManager/QSO.php +++ b/src/QSLManager/QSO.php @@ -68,6 +68,8 @@ class QSO private string $lotw_hint; private string $operator; private string $comment; + /** Orbit type **/ + private string $orbit; /** * @param array $data Does no validation, it's assumed to be a row from the database in array format @@ -154,7 +156,7 @@ class QSO $this->rstS = $data['COL_RST_SENT']; $this->propagationMode = $data['COL_PROP_MODE'] ?? ''; $this->satelliteMode = $data['COL_SAT_MODE'] != '' ? (strlen($data['COL_SAT_MODE']) == 2 ? (strtoupper($data['COL_SAT_MODE'][0]).'/'.strtoupper($data['COL_SAT_MODE'][1])) : strtoupper($data['COL_SAT_MODE'])) : ''; - $this->satelliteName = $data['COL_SAT_NAME'] ?? ''; + $this->satelliteName = $data['COL_SAT_NAME'] != '' ? ($data['orbit'] != '' ? $data['COL_SAT_NAME']." (".$data['orbit'].") " : $data['COL_SAT_NAME']) : ''; $this->name = $data['COL_NAME'] ?? ''; $this->email = $data['COL_EMAIL'] ?? ''; @@ -211,6 +213,8 @@ class QSO $this->operator = ($data['COL_OPERATOR'] === null) ? '' :$data['COL_OPERATOR']; $this->comment = $data['COL_COMMENT'] ?? ''; + + $this->orbit = $data['orbit'] ?? ''; } /** @@ -826,7 +830,8 @@ class QSO 'callsign' => $this->callsign, 'lastupload' => $this->lastupload, 'lotw_hint' => $this->lotw_hint, - 'comment' => $this->comment + 'comment' => $this->comment, + 'orbit' => $this->orbit ]; }