From c1fe605e1af6a0f28d32481054e29795a9c08fdf Mon Sep 17 00:00:00 2001
From: Andreas Kristiansen <6977712+AndreasK79@users.noreply.github.com>
Date: Fri, 6 Sep 2024 11:24:03 +0200
Subject: [PATCH 1/4] [Awards] Added Worked All Continents
---
application/controllers/Awards.php | 73 +++++
application/models/Logbook_model.php | 3 +
application/models/Wac.php | 253 ++++++++++++++++++
application/views/awards/wac/index.php | 204 ++++++++++++++
application/views/interface_assets/footer.php | 26 ++
application/views/interface_assets/header.php | 2 +
6 files changed, 561 insertions(+)
create mode 100644 application/models/Wac.php
create mode 100644 application/views/awards/wac/index.php
diff --git a/application/controllers/Awards.php b/application/controllers/Awards.php
index 675ff5990..e9bc2085a 100644
--- a/application/controllers/Awards.php
+++ b/application/controllers/Awards.php
@@ -1838,4 +1838,77 @@ class Awards extends CI_Controller {
echo json_encode($zones);
}
+ public function wac() {
+ $this->load->model('logbooks_model');
+ $logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+
+ $this->load->model('wac');
+ $this->load->model('modes');
+ $this->load->model('bands');
+
+ $data['worked_bands'] = $this->bands->get_worked_bands();
+ $data['modes'] = $this->modes->active(); // Used in the view for mode select
+
+ $data['orbits'] = $this->bands->get_worked_orbits();
+ $data['sats_available'] = $this->bands->get_worked_sats();
+ $data['user_default_band'] = $this->session->userdata('user_default_band');
+
+ if ($this->input->post('band') != NULL) { // Band is not set when page first loads.
+ if ($this->input->post('band') == 'All') { // Did the user specify a band? If not, use all bands
+ $bands = $data['worked_bands'];
+ }
+ else {
+ $bands[] = $this->input->post('band');
+ }
+ }
+ else {
+ $bands = $data['worked_bands'];
+ }
+
+ $data['bands'] = $bands; // Used for displaying selected band(s) in the table in the view
+
+ if($this->input->method() === 'post') {
+ $postdata['qsl'] = $this->security->xss_clean($this->input->post('qsl'));
+ $postdata['lotw'] = $this->security->xss_clean($this->input->post('lotw'));
+ $postdata['eqsl'] = $this->security->xss_clean($this->input->post('eqsl'));
+ $postdata['qrz'] = $this->security->xss_clean($this->input->post('qrz'));
+ $postdata['worked'] = $this->security->xss_clean($this->input->post('worked'));
+ $postdata['confirmed'] = $this->security->xss_clean($this->input->post('confirmed'));
+ $postdata['notworked'] = $this->security->xss_clean($this->input->post('notworked'));
+ $postdata['band'] = $this->security->xss_clean($this->input->post('band'));
+ $postdata['mode'] = $this->security->xss_clean($this->input->post('mode'));
+ $postdata['sat'] = $this->security->xss_clean($this->input->post('sats'));
+ $postdata['orbit'] = $this->security->xss_clean($this->input->post('orbits'));
+ }
+ else { // Setting default values at first load of page
+ $postdata['qsl'] = 1;
+ $postdata['lotw'] = 1;
+ $postdata['eqsl'] = 0;
+ $postdata['qrz'] = 0;
+ $postdata['worked'] = 1;
+ $postdata['confirmed'] = 1;
+ $postdata['notworked'] = 1;
+ $postdata['band'] = 'All';
+ $postdata['mode'] = 'All';
+ $postdata['sat'] = 'All';
+ $postdata['orbit'] = 'All';
+ }
+
+ if ($logbooks_locations_array) {
+ $location_list = "'".implode("','",$logbooks_locations_array)."'";
+ $data['wac_array'] = $this->wac->get_wac_array($bands, $postdata, $location_list);
+ $data['wac_summary'] = $this->wac->get_wac_summary($bands, $postdata, $location_list);
+ } else {
+ $location_list = null;
+ $data['wac_array'] = null;
+ $data['wac_summary'] = null;
+ }
+
+ // Render page
+ $data['page_title'] = sprintf(__("Awards - %s"), __("Worked All Continents (WAC)"));
+ $this->load->view('interface_assets/header', $data);
+ $this->load->view('awards/wac/index');
+ $this->load->view('interface_assets/footer');
+ }
+
}
diff --git a/application/models/Logbook_model.php b/application/models/Logbook_model.php
index 12ccab09b..a62c2689b 100644
--- a/application/models/Logbook_model.php
+++ b/application/models/Logbook_model.php
@@ -548,6 +548,9 @@ class Logbook_model extends CI_Model {
$this->db->where('COL_SIG', 'WAB');
$this->db->where('COL_SIG_INFO', $searchphrase);
break;
+ case 'WAC':
+ $this->db->where('COL_CONT', $searchphrase);
+ break;
case 'WAJA':
$state = str_pad($searchphrase, 2, '0', STR_PAD_LEFT);
$this->db->where('COL_STATE', $state);
diff --git a/application/models/Wac.php b/application/models/Wac.php
new file mode 100644
index 000000000..ce3bbe5be
--- /dev/null
+++ b/application/models/Wac.php
@@ -0,0 +1,253 @@
+load->library('Genfunctions');
+ }
+
+ function get_wac_array($bands, $postdata, $location_list) {
+ $wac = array();
+
+ foreach ($this->validContinents as $cont) {
+ $wac[$cont]['count'] = 0; // Inits each wac's count
+ }
+
+ $qsl = $this->genfunctions->gen_qsl_from_postdata($postdata);
+
+ foreach ($bands as $band) {
+ foreach ($this->validContinents as $cont) {
+ $bandWac[$cont][$band] = '-'; // Sets all to dash to indicate no result
+ }
+
+ if ($postdata['worked'] != NULL) {
+ $wacBand = $this->getWACWorked($location_list, $band, $postdata);
+ foreach ($wacBand as $line) {
+ $bandWac[$line->col_cont][$band] = '
';
+ $wac[$line->col_cont]['count']++;
+ }
+ }
+ if ($postdata['confirmed'] != NULL) {
+ $wacBand = $this->getWACConfirmed($location_list, $band, $postdata);
+ foreach ($wacBand as $line) {
+ $bandWac[$line->col_cont][$band] = '';
+ $wac[$line->col_cont]['count']++;
+ }
+ }
+ }
+
+ // We want to remove the worked continents in the list, since we do not want to display them
+ if ($postdata['worked'] == NULL) {
+ $wacBand = $this->getWACWorked($location_list, $postdata['band'], $postdata);
+ foreach ($wacBand as $line) {
+ unset($bandWac[$line->col_cont]);
+ }
+ }
+
+ // We want to remove the confirmed continents in the list, since we do not want to display them
+ if ($postdata['confirmed'] == NULL) {
+ $wacBand = $this->getWACConfirmed($location_list, $postdata['band'], $postdata);
+ foreach ($wacBand as $line) {
+ unset($bandWac[$line->col_cont]);
+ }
+ }
+
+ if ($postdata['notworked'] == NULL) {
+ foreach ($this->validContinents as $cont) {
+ if ($wac[$cont]['count'] == 0) {
+ unset($bandWac[$cont]);
+ };
+ }
+ }
+
+ if (isset($bandWac)) {
+ return $bandWac;
+ } else {
+ return 0;
+ }
+ }
+
+ /*
+ * Function returns all worked, but not confirmed continents
+ * $postdata contains data from the form, in this case Lotw or QSL are used
+ */
+ function getWACWorked($location_list, $band, $postdata) {
+ $sql = "SELECT distinct col_cont FROM " . $this->config->item('table_name') . " thcv
+ LEFT JOIN satellite on thcv.COL_SAT_NAME = satellite.name
+ where station_id in (" . $location_list . ") and col_cont in ('AF', 'EU', 'AS', 'SA', 'NA', 'OC', 'AN')";
+
+ if ($postdata['mode'] != 'All') {
+ $sql .= " and (col_mode = '" . $postdata['mode'] . "' or col_submode = '" . $postdata['mode'] . "')";
+ }
+
+ $sql .= $this->genfunctions->addBandToQuery($band);
+ if ($band == 'SAT') {
+ if ($postdata['sat'] != 'All') {
+ $sql .= " and col_sat_name ='" . $postdata['sat'] . "'";
+ }
+ }
+ $sql .= $this->addOrbitToQuery($postdata);
+
+ $sql .= " and not exists (select 1 from " . $this->config->item('table_name') . " thcv2
+ LEFT JOIN satellite on thcv2.COL_SAT_NAME = satellite.name
+ where station_id in (" . $location_list .
+ ") and col_cont = thcv.col_cont and col_cont <> '' ";
+
+ $sql .= $this->genfunctions->addBandToQuery($band);
+ if ($band == 'SAT') {
+ if ($postdata['sat'] != 'All') {
+ $sql .= " and col_sat_name ='" . $postdata['sat'] . "'";
+ }
+ }
+
+ if ($postdata['mode'] != 'All') {
+ $sql .= " and (col_mode = '" . $postdata['mode'] . "' or col_submode = '" . $postdata['mode'] . "')";
+ }
+
+ $sql .= $this->addOrbitToQuery($postdata);
+
+ $sql .= $this->genfunctions->addQslToQuery($postdata);
+
+ $sql .= ")";
+
+ $query = $this->db->query($sql);
+
+ return $query->result();
+ }
+
+ /*
+ * Function returns all confirmed continents on given band and on LoTW or QSL
+ * $postdata contains data from the form, in this case Lotw or QSL are used
+ */
+ function getWACConfirmed($location_list, $band, $postdata) {
+ $sql = "SELECT distinct col_cont FROM " . $this->config->item('table_name') . " thcv
+ LEFT JOIN satellite on thcv.COL_SAT_NAME = satellite.name
+ where station_id in (" . $location_list . ") and col_cont in ('AF', 'EU', 'AS', 'SA', 'NA', 'OC', 'AN')";
+
+ if ($postdata['mode'] != 'All') {
+ $sql .= " and (col_mode = '" . $postdata['mode'] . "' or col_submode = '" . $postdata['mode'] . "')";
+ }
+
+ $sql .= $this->genfunctions->addBandToQuery($band);
+ if ($band == 'SAT') {
+ if ($postdata['sat'] != 'All') {
+ $sql .= " and col_sat_name ='" . $postdata['sat'] . "'";
+ }
+ }
+
+ $sql .= $this->genfunctions->addQslToQuery($postdata);
+
+ $sql .= $this->addOrbitToQuery($postdata);
+
+ $query = $this->db->query($sql);
+
+ return $query->result();
+ }
+
+
+ /*
+ * Function gets worked and confirmed summary on each band on the active stationprofile
+ */
+ function get_wac_summary($bands, $postdata, $location_list) {
+ foreach ($bands as $band) {
+ $worked = $this->getSummaryByBand($band, $postdata, $location_list);
+ $confirmed = $this->getSummaryByBandConfirmed($band, $postdata, $location_list);
+ $wacSummary['worked'][$band] = $worked[0]->count;
+ $wacSummary['confirmed'][$band] = $confirmed[0]->count;
+ }
+
+ $workedTotal = $this->getSummaryByBand($postdata['band'], $postdata, $location_list);
+ $confirmedTotal = $this->getSummaryByBandConfirmed($postdata['band'], $postdata, $location_list);
+
+ $wacSummary['worked']['Total'] = $workedTotal[0]->count;
+ $wacSummary['confirmed']['Total'] = $confirmedTotal[0]->count;
+
+ return $wacSummary;
+ }
+
+ function getSummaryByBand($band, $postdata, $location_list) {
+ $sql = "SELECT count(distinct thcv.col_cont) as count FROM " . $this->config->item('table_name') . " thcv";
+ $sql .= " LEFT JOIN satellite on thcv.COL_SAT_NAME = satellite.name";
+
+ $sql .= " where station_id in (" . $location_list . ") and col_cont in ('AF', 'EU', 'AS', 'SA', 'NA', 'OC', 'AN')";
+
+ if ($band == 'SAT') {
+ $sql .= " and thcv.col_prop_mode ='" . $band . "'";
+ if ($band != 'All' && $postdata['sat'] != 'All') {
+ $sql .= " and col_sat_name ='" . $postdata['sat'] . "'";
+ }
+ } else if ($band == 'All') {
+ $this->load->model('bands');
+
+ $bandslots = $this->bands->get_worked_bands();
+
+ $bandslots_list = "'".implode("','",$bandslots)."'";
+
+ $sql .= " and thcv.col_band in (" . $bandslots_list . ")" .
+ " and thcv.col_prop_mode !='SAT'";
+ } else {
+ $sql .= " and thcv.col_prop_mode !='SAT'";
+ $sql .= " and thcv.col_band ='" . $band . "'";
+ }
+
+ if ($postdata['mode'] != 'All') {
+ $sql .= " and (col_mode = '" . $postdata['mode'] . "' or col_submode = '" . $postdata['mode'] . "')";
+ }
+
+ $sql .= $this->addOrbitToQuery($postdata);
+
+ $query = $this->db->query($sql);
+
+ return $query->result();
+ }
+
+ function getSummaryByBandConfirmed($band, $postdata, $location_list){
+ $sql = "SELECT count(distinct thcv.col_cont) as count FROM " . $this->config->item('table_name') . " thcv";
+ $sql .= " LEFT JOIN satellite on thcv.COL_SAT_NAME = satellite.name";
+
+ $sql .= " where station_id in (" . $location_list . ") and col_cont in ('AF', 'EU', 'AS', 'SA', 'NA', 'OC', 'AN')";
+
+ if ($band == 'SAT') {
+ $sql .= " and thcv.col_prop_mode ='" . $band . "'";
+ if ($postdata['sat'] != 'All') {
+ $sql .= " and col_sat_name ='" . $postdata['sat'] . "'";
+ }
+ } else if ($band == 'All') {
+ $this->load->model('bands');
+
+ $bandslots = $this->bands->get_worked_bands();
+
+ $bandslots_list = "'".implode("','",$bandslots)."'";
+
+ $sql .= " and thcv.col_band in (" . $bandslots_list . ")" .
+ " and thcv.col_prop_mode !='SAT'";
+ } else {
+ $sql .= " and thcv.col_prop_mode !='SAT'";
+ $sql .= " and thcv.col_band ='" . $band . "'";
+ }
+
+ if ($postdata['mode'] != 'All') {
+ $sql .= " and (col_mode = '" . $postdata['mode'] . "' or col_submode = '" . $postdata['mode'] . "')";
+ }
+
+ $sql .= $this->genfunctions->addQslToQuery($postdata);
+ $sql .= $this->addOrbitToQuery($postdata);
+
+ $query = $this->db->query($sql);
+
+ return $query->result();
+ }
+
+ // Adds orbit type to query
+ function addOrbitToQuery($postdata) {
+ $sql = '';
+ if ($postdata['orbit'] != 'All') {
+ $sql .= ' AND satellite.orbit = \''.$postdata['orbit'].'\'';
+ }
+
+ return $sql;
+ }
+
+}
diff --git a/application/views/awards/wac/index.php b/application/views/awards/wac/index.php
new file mode 100644
index 000000000..b244dbe26
--- /dev/null
+++ b/application/views/awards/wac/index.php
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+
= __("Awards - Worked All Continents (WAC)"); ?>
+
+
+
+
+
+
+
+
+
+
+ | # |
+ " . __("Continent") . " | ";
+ foreach($bands as $band) {
+ echo '' . $band . ' | ';
+ }
+ echo '
+
+
';
+ foreach ($wac_array as $wac => $value) { // Fills the table with the data
+ echo '
+ | ' . $i++ . ' |
+ '. $wac.' | ';
+ foreach ($value as $key) {
+ echo '' . $key . ' | ';
+ }
+ echo '
';
+ }
+ echo "
+ " . __("Summary") . "
+
+
+
+ | ";
+
+ foreach($bands as $band) {
+ echo '' . $band . ' | ';
+ }
+ echo "" . __("Total") . " |
+
+
+
+ | " . __("Total worked") . " | ";
+
+ foreach ($wac_summary['worked'] as $wac) { // Fills the table with the data
+ echo '' . $wac . ' | ';
+ }
+
+ echo "
+ | " . __("Total confirmed") . " | ";
+ foreach ($wac_summary['confirmed'] as $wac) { // Fills the table with the data
+ echo '' . $wac . ' | ';
+ }
+
+ echo '
+
+ ';
+
+ }
+ else {
+ echo '' . __("Nothing found!") . '
';
+ }
+ ?>
+
+
+
diff --git a/application/views/interface_assets/footer.php b/application/views/interface_assets/footer.php
index d967908c4..a13de10c7 100644
--- a/application/views/interface_assets/footer.php
+++ b/application/views/interface_assets/footer.php
@@ -2757,6 +2757,32 @@ function viewEqsl(picture, callsign) {
$('[class*="buttons"]').css("color", "white");
}
+ uri->segment(2) == "wac") { ?>
+
diff --git a/application/views/interface_assets/header.php b/application/views/interface_assets/header.php
index 9c0d977bd..a5eb84316 100644
--- a/application/views/interface_assets/header.php
+++ b/application/views/interface_assets/header.php
@@ -171,6 +171,8 @@
= __("VUCC"); ?>
+ = __("Worked All Continents (WAC)"); ?>
+
= __("WWFF"); ?>
From c12d3c8bc6b70d6e7995002ebb7ae598b42f87b2 Mon Sep 17 00:00:00 2001
From: int2001
Date: Fri, 6 Sep 2024 10:03:34 +0000
Subject: [PATCH 2/4] Add Binding to WaC
---
application/models/Wac.php | 415 +++++++++++++++++++------------------
1 file changed, 218 insertions(+), 197 deletions(-)
diff --git a/application/models/Wac.php b/application/models/Wac.php
index ce3bbe5be..ce1f90508 100644
--- a/application/models/Wac.php
+++ b/application/models/Wac.php
@@ -8,245 +8,266 @@ class Wac extends CI_Model{
$this->load->library('Genfunctions');
}
- function get_wac_array($bands, $postdata, $location_list) {
- $wac = array();
+ function get_wac_array($bands, $postdata, $location_list) {
+ $wac = array();
- foreach ($this->validContinents as $cont) {
- $wac[$cont]['count'] = 0; // Inits each wac's count
- }
+ foreach ($this->validContinents as $cont) {
+ $wac[$cont]['count'] = 0; // Inits each wac's count
+ }
- $qsl = $this->genfunctions->gen_qsl_from_postdata($postdata);
+ $qsl = $this->genfunctions->gen_qsl_from_postdata($postdata);
- foreach ($bands as $band) {
- foreach ($this->validContinents as $cont) {
- $bandWac[$cont][$band] = '-'; // Sets all to dash to indicate no result
- }
+ foreach ($bands as $band) {
+ foreach ($this->validContinents as $cont) {
+ $bandWac[$cont][$band] = '-'; // Sets all to dash to indicate no result
+ }
- if ($postdata['worked'] != NULL) {
- $wacBand = $this->getWACWorked($location_list, $band, $postdata);
- foreach ($wacBand as $line) {
- $bandWac[$line->col_cont][$band] = '';
- $wac[$line->col_cont]['count']++;
- }
- }
- if ($postdata['confirmed'] != NULL) {
- $wacBand = $this->getWACConfirmed($location_list, $band, $postdata);
- foreach ($wacBand as $line) {
- $bandWac[$line->col_cont][$band] = '';
- $wac[$line->col_cont]['count']++;
- }
- }
- }
+ if ($postdata['worked'] != NULL) {
+ $wacBand = $this->getWACWorked($location_list, $band, $postdata);
+ foreach ($wacBand as $line) {
+ $bandWac[$line->col_cont][$band] = '';
+ $wac[$line->col_cont]['count']++;
+ }
+ }
+ if ($postdata['confirmed'] != NULL) {
+ $wacBand = $this->getWACConfirmed($location_list, $band, $postdata);
+ foreach ($wacBand as $line) {
+ $bandWac[$line->col_cont][$band] = '';
+ $wac[$line->col_cont]['count']++;
+ }
+ }
+ }
- // We want to remove the worked continents in the list, since we do not want to display them
- if ($postdata['worked'] == NULL) {
- $wacBand = $this->getWACWorked($location_list, $postdata['band'], $postdata);
- foreach ($wacBand as $line) {
- unset($bandWac[$line->col_cont]);
- }
- }
+ // We want to remove the worked continents in the list, since we do not want to display them
+ if ($postdata['worked'] == NULL) {
+ $wacBand = $this->getWACWorked($location_list, $postdata['band'], $postdata);
+ foreach ($wacBand as $line) {
+ unset($bandWac[$line->col_cont]);
+ }
+ }
- // We want to remove the confirmed continents in the list, since we do not want to display them
- if ($postdata['confirmed'] == NULL) {
- $wacBand = $this->getWACConfirmed($location_list, $postdata['band'], $postdata);
- foreach ($wacBand as $line) {
- unset($bandWac[$line->col_cont]);
- }
- }
+ // We want to remove the confirmed continents in the list, since we do not want to display them
+ if ($postdata['confirmed'] == NULL) {
+ $wacBand = $this->getWACConfirmed($location_list, $postdata['band'], $postdata);
+ foreach ($wacBand as $line) {
+ unset($bandWac[$line->col_cont]);
+ }
+ }
- if ($postdata['notworked'] == NULL) {
+ if ($postdata['notworked'] == NULL) {
foreach ($this->validContinents as $cont) {
if ($wac[$cont]['count'] == 0) {
- unset($bandWac[$cont]);
- };
- }
- }
-
- if (isset($bandWac)) {
- return $bandWac;
- } else {
- return 0;
- }
- }
-
- /*
- * Function returns all worked, but not confirmed continents
- * $postdata contains data from the form, in this case Lotw or QSL are used
- */
- function getWACWorked($location_list, $band, $postdata) {
- $sql = "SELECT distinct col_cont FROM " . $this->config->item('table_name') . " thcv
- LEFT JOIN satellite on thcv.COL_SAT_NAME = satellite.name
- where station_id in (" . $location_list . ") and col_cont in ('AF', 'EU', 'AS', 'SA', 'NA', 'OC', 'AN')";
-
- if ($postdata['mode'] != 'All') {
- $sql .= " and (col_mode = '" . $postdata['mode'] . "' or col_submode = '" . $postdata['mode'] . "')";
- }
-
- $sql .= $this->genfunctions->addBandToQuery($band);
- if ($band == 'SAT') {
- if ($postdata['sat'] != 'All') {
- $sql .= " and col_sat_name ='" . $postdata['sat'] . "'";
- }
- }
- $sql .= $this->addOrbitToQuery($postdata);
-
- $sql .= " and not exists (select 1 from " . $this->config->item('table_name') . " thcv2
- LEFT JOIN satellite on thcv2.COL_SAT_NAME = satellite.name
- where station_id in (" . $location_list .
- ") and col_cont = thcv.col_cont and col_cont <> '' ";
-
- $sql .= $this->genfunctions->addBandToQuery($band);
- if ($band == 'SAT') {
- if ($postdata['sat'] != 'All') {
- $sql .= " and col_sat_name ='" . $postdata['sat'] . "'";
+ unset($bandWac[$cont]);
+ };
}
}
- if ($postdata['mode'] != 'All') {
- $sql .= " and (col_mode = '" . $postdata['mode'] . "' or col_submode = '" . $postdata['mode'] . "')";
+ if (isset($bandWac)) {
+ return $bandWac;
+ } else {
+ return 0;
}
+ }
- $sql .= $this->addOrbitToQuery($postdata);
-
- $sql .= $this->genfunctions->addQslToQuery($postdata);
-
- $sql .= ")";
-
- $query = $this->db->query($sql);
-
- return $query->result();
- }
-
- /*
- * Function returns all confirmed continents on given band and on LoTW or QSL
- * $postdata contains data from the form, in this case Lotw or QSL are used
- */
- function getWACConfirmed($location_list, $band, $postdata) {
- $sql = "SELECT distinct col_cont FROM " . $this->config->item('table_name') . " thcv
+ /*
+ * Function returns all worked, but not confirmed continents
+ * $postdata contains data from the form, in this case Lotw or QSL are used
+ */
+ function getWACWorked($location_list, $band, $postdata) {
+ $bindings=[];
+ $sql = "SELECT distinct col_cont FROM " . $this->config->item('table_name') . " thcv
LEFT JOIN satellite on thcv.COL_SAT_NAME = satellite.name
- where station_id in (" . $location_list . ") and col_cont in ('AF', 'EU', 'AS', 'SA', 'NA', 'OC', 'AN')";
+ where station_id in (" . $location_list . ") and col_cont in ('AF', 'EU', 'AS', 'SA', 'NA', 'OC', 'AN')";
if ($postdata['mode'] != 'All') {
- $sql .= " and (col_mode = '" . $postdata['mode'] . "' or col_submode = '" . $postdata['mode'] . "')";
+ $sql .= " and (col_mode = ? or col_submode = ?)";
+ $bindings[]=$postdata['mode'];
+ $bindings[]=$postdata['mode'];
}
- $sql .= $this->genfunctions->addBandToQuery($band);
+ $sql .= $this->genfunctions->addBandToQuery($band);
if ($band == 'SAT') {
if ($postdata['sat'] != 'All') {
- $sql .= " and col_sat_name ='" . $postdata['sat'] . "'";
+ $sql .= " and col_sat_name = ?";
+ $bindings[]=$postdata['sat'];
}
}
+ $sql .= $this->addOrbitToQuery($postdata,$bindings);
- $sql .= $this->genfunctions->addQslToQuery($postdata);
+ $sql .= " and not exists (select 1 from " . $this->config->item('table_name') . " thcv2
+ LEFT JOIN satellite on thcv2.COL_SAT_NAME = satellite.name
+ where station_id in (" . $location_list .
+ ") and col_cont = thcv.col_cont and col_cont <> '' ";
- $sql .= $this->addOrbitToQuery($postdata);
-
- $query = $this->db->query($sql);
-
- return $query->result();
- }
-
-
- /*
- * Function gets worked and confirmed summary on each band on the active stationprofile
- */
- function get_wac_summary($bands, $postdata, $location_list) {
- foreach ($bands as $band) {
- $worked = $this->getSummaryByBand($band, $postdata, $location_list);
- $confirmed = $this->getSummaryByBandConfirmed($band, $postdata, $location_list);
- $wacSummary['worked'][$band] = $worked[0]->count;
- $wacSummary['confirmed'][$band] = $confirmed[0]->count;
- }
-
- $workedTotal = $this->getSummaryByBand($postdata['band'], $postdata, $location_list);
- $confirmedTotal = $this->getSummaryByBandConfirmed($postdata['band'], $postdata, $location_list);
-
- $wacSummary['worked']['Total'] = $workedTotal[0]->count;
- $wacSummary['confirmed']['Total'] = $confirmedTotal[0]->count;
-
- return $wacSummary;
- }
-
- function getSummaryByBand($band, $postdata, $location_list) {
- $sql = "SELECT count(distinct thcv.col_cont) as count FROM " . $this->config->item('table_name') . " thcv";
- $sql .= " LEFT JOIN satellite on thcv.COL_SAT_NAME = satellite.name";
-
- $sql .= " where station_id in (" . $location_list . ") and col_cont in ('AF', 'EU', 'AS', 'SA', 'NA', 'OC', 'AN')";
-
- if ($band == 'SAT') {
- $sql .= " and thcv.col_prop_mode ='" . $band . "'";
- if ($band != 'All' && $postdata['sat'] != 'All') {
- $sql .= " and col_sat_name ='" . $postdata['sat'] . "'";
- }
- } else if ($band == 'All') {
- $this->load->model('bands');
-
- $bandslots = $this->bands->get_worked_bands();
-
- $bandslots_list = "'".implode("','",$bandslots)."'";
-
- $sql .= " and thcv.col_band in (" . $bandslots_list . ")" .
- " and thcv.col_prop_mode !='SAT'";
- } else {
- $sql .= " and thcv.col_prop_mode !='SAT'";
- $sql .= " and thcv.col_band ='" . $band . "'";
- }
-
- if ($postdata['mode'] != 'All') {
- $sql .= " and (col_mode = '" . $postdata['mode'] . "' or col_submode = '" . $postdata['mode'] . "')";
- }
-
- $sql .= $this->addOrbitToQuery($postdata);
-
- $query = $this->db->query($sql);
-
- return $query->result();
- }
-
- function getSummaryByBandConfirmed($band, $postdata, $location_list){
- $sql = "SELECT count(distinct thcv.col_cont) as count FROM " . $this->config->item('table_name') . " thcv";
- $sql .= " LEFT JOIN satellite on thcv.COL_SAT_NAME = satellite.name";
-
- $sql .= " where station_id in (" . $location_list . ") and col_cont in ('AF', 'EU', 'AS', 'SA', 'NA', 'OC', 'AN')";
-
- if ($band == 'SAT') {
- $sql .= " and thcv.col_prop_mode ='" . $band . "'";
+ $sql .= $this->genfunctions->addBandToQuery($band,$bindings);
+ if ($band == 'SAT') {
if ($postdata['sat'] != 'All') {
- $sql .= " and col_sat_name ='" . $postdata['sat'] . "'";
+ $sql .= " and col_sat_name = ?";
+ $bindings[]=$postdata['sat'];
}
- } else if ($band == 'All') {
- $this->load->model('bands');
+ }
+
+ if ($postdata['mode'] != 'All') {
+ $sql .= " and (col_mode = ? or col_submode = ?')";
+ $bindings[]=$postdata['mode'];
+ $bindings[]=$postdata['mode'];
+ }
+
+ $sql .= $this->addOrbitToQuery($postdata,$bindings);
+
+ $sql .= $this->genfunctions->addQslToQuery($postdata);
+
+ $sql .= ")";
+
+ $query = $this->db->query($sql,$bindings);
+
+ return $query->result();
+ }
+
+ /*
+ * Function returns all confirmed continents on given band and on LoTW or QSL
+ * $postdata contains data from the form, in this case Lotw or QSL are used
+ */
+ function getWACConfirmed($location_list, $band, $postdata) {
+ $bindings=[];
+ $sql = "SELECT distinct col_cont FROM " . $this->config->item('table_name') . " thcv
+ LEFT JOIN satellite on thcv.COL_SAT_NAME = satellite.name
+ where station_id in (" . $location_list . ") and col_cont in ('AF', 'EU', 'AS', 'SA', 'NA', 'OC', 'AN')";
+
+ if ($postdata['mode'] != 'All') {
+ $sql .= " and (col_mode = ? or col_submode = ?)";
+ $bindings[]=$postdata['mode'];
+ $bindings[]=$postdata['mode'];
+ }
+
+ $sql .= $this->genfunctions->addBandToQuery($band);
+ if ($band == 'SAT') {
+ if ($postdata['sat'] != 'All') {
+ $sql .= " and col_sat_name = ?";
+ $bindings[]=$postdata['sat'];
+ }
+ }
+
+ $sql .= $this->genfunctions->addQslToQuery($postdata);
+
+ $sql .= $this->addOrbitToQuery($postdata,$bindings);
+
+ $query = $this->db->query($sql,$bindings);
+
+ return $query->result();
+ }
+
+
+ /*
+ * Function gets worked and confirmed summary on each band on the active stationprofile
+ */
+ function get_wac_summary($bands, $postdata, $location_list) {
+ foreach ($bands as $band) {
+ $worked = $this->getSummaryByBand($band, $postdata, $location_list);
+ $confirmed = $this->getSummaryByBandConfirmed($band, $postdata, $location_list);
+ $wacSummary['worked'][$band] = $worked[0]->count;
+ $wacSummary['confirmed'][$band] = $confirmed[0]->count;
+ }
+
+ $workedTotal = $this->getSummaryByBand($postdata['band'], $postdata, $location_list);
+ $confirmedTotal = $this->getSummaryByBandConfirmed($postdata['band'], $postdata, $location_list);
+
+ $wacSummary['worked']['Total'] = $workedTotal[0]->count;
+ $wacSummary['confirmed']['Total'] = $confirmedTotal[0]->count;
+
+ return $wacSummary;
+ }
+
+ function getSummaryByBand($band, $postdata, $location_list) {
+ $bindings=[];
+ $sql = "SELECT count(distinct thcv.col_cont) as count FROM " . $this->config->item('table_name') . " thcv";
+ $sql .= " LEFT JOIN satellite on thcv.COL_SAT_NAME = satellite.name";
+
+ $sql .= " where station_id in (" . $location_list . ") and col_cont in ('AF', 'EU', 'AS', 'SA', 'NA', 'OC', 'AN')";
+
+ if ($band == 'SAT') {
+ $sql .= " and thcv.col_prop_mode = ?";
+ $bindings[]=$band;
+ if ($band != 'All' && $postdata['sat'] != 'All') {
+ $sql .= " and col_sat_name = ?";
+ $bindings[]=$postdata['sat'];
+ }
+ } else if ($band == 'All') {
+ $this->load->model('bands');
$bandslots = $this->bands->get_worked_bands();
$bandslots_list = "'".implode("','",$bandslots)."'";
$sql .= " and thcv.col_band in (" . $bandslots_list . ")" .
- " and thcv.col_prop_mode !='SAT'";
- } else {
- $sql .= " and thcv.col_prop_mode !='SAT'";
- $sql .= " and thcv.col_band ='" . $band . "'";
- }
-
- if ($postdata['mode'] != 'All') {
- $sql .= " and (col_mode = '" . $postdata['mode'] . "' or col_submode = '" . $postdata['mode'] . "')";
+ " and thcv.col_prop_mode !='SAT'";
+ } else {
+ $sql .= " and thcv.col_prop_mode !='SAT'";
+ $sql .= " and thcv.col_band = ?";
+ $bindings[]=$band;
}
- $sql .= $this->genfunctions->addQslToQuery($postdata);
- $sql .= $this->addOrbitToQuery($postdata);
+ if ($postdata['mode'] != 'All') {
+ $sql .= " and (col_mode = ? or col_submode = ?)";
+ $bindings[]=$postdata['mode'];
+ $bindings[]=$postdata['mode'];
+ }
- $query = $this->db->query($sql);
+ $sql .= $this->addOrbitToQuery($postdata,$bindings);
- return $query->result();
- }
+ $query = $this->db->query($sql,$bindings);
+ return $query->result();
+ }
+
+ function getSummaryByBandConfirmed($band, $postdata, $location_list){
+ $bindings=[];
+ $sql = "SELECT count(distinct thcv.col_cont) as count FROM " . $this->config->item('table_name') . " thcv";
+ $sql .= " LEFT JOIN satellite on thcv.COL_SAT_NAME = satellite.name";
+
+ $sql .= " where station_id in (" . $location_list . ") and col_cont in ('AF', 'EU', 'AS', 'SA', 'NA', 'OC', 'AN')";
+
+ if ($band == 'SAT') {
+ $sql .= " and thcv.col_prop_mode ='" . $band . "'";
+ if ($postdata['sat'] != 'All') {
+ $sql .= " and col_sat_name = ?";
+ $bindings[]=$postdata['sat'];
+ }
+ } else if ($band == 'All') {
+ $this->load->model('bands');
+
+ $bandslots = $this->bands->get_worked_bands();
+
+ $bandslots_list = "'".implode("','",$bandslots)."'";
+
+ $sql .= " and thcv.col_band in (" . $bandslots_list . ")" .
+ " and thcv.col_prop_mode !='SAT'";
+ } else {
+ $sql .= " and thcv.col_prop_mode !='SAT'";
+ $sql .= " and thcv.col_band = ?";
+ $bindings[]=$band;
+ }
+
+ if ($postdata['mode'] != 'All') {
+ $sql .= " and (col_mode = ? or col_submode = ?)";
+ $bindings[]=$postdata['mode'];
+ $bindings[]=$postdata['mode'];
+ }
+
+ $sql .= $this->genfunctions->addQslToQuery($postdata);
+ $sql .= $this->addOrbitToQuery($postdata,$bindings);
+
+ $query = $this->db->query($sql,$bindings);
+
+ return $query->result();
+ }
// Adds orbit type to query
- function addOrbitToQuery($postdata) {
+ function addOrbitToQuery($postdata,&$binding) {
$sql = '';
if ($postdata['orbit'] != 'All') {
- $sql .= ' AND satellite.orbit = \''.$postdata['orbit'].'\'';
+ $sql .= ' AND satellite.orbit = ?';
+ $binding[]=$postdata['orbit'];
}
-
return $sql;
}
From 6f48bd0b16bf4569cd41f1ca94d6a0636cfe5fbe Mon Sep 17 00:00:00 2001
From: int2001
Date: Fri, 6 Sep 2024 10:06:09 +0000
Subject: [PATCH 3/4] Typo
---
application/models/Wac.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/application/models/Wac.php b/application/models/Wac.php
index ce1f90508..e766e96f7 100644
--- a/application/models/Wac.php
+++ b/application/models/Wac.php
@@ -99,7 +99,7 @@ class Wac extends CI_Model{
where station_id in (" . $location_list .
") and col_cont = thcv.col_cont and col_cont <> '' ";
- $sql .= $this->genfunctions->addBandToQuery($band,$bindings);
+ $sql .= $this->genfunctions->addBandToQuery($band);
if ($band == 'SAT') {
if ($postdata['sat'] != 'All') {
$sql .= " and col_sat_name = ?";
From 66741b10e45797b163370ec984634e87f11c97d3 Mon Sep 17 00:00:00 2001
From: phl0
Date: Fri, 6 Sep 2024 13:00:13 +0200
Subject: [PATCH 4/4] Fix syntax error
---
application/models/Wac.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/application/models/Wac.php b/application/models/Wac.php
index e766e96f7..a9c9f241c 100644
--- a/application/models/Wac.php
+++ b/application/models/Wac.php
@@ -108,7 +108,7 @@ class Wac extends CI_Model{
}
if ($postdata['mode'] != 'All') {
- $sql .= " and (col_mode = ? or col_submode = ?')";
+ $sql .= " and (col_mode = ? or col_submode = ?)";
$bindings[]=$postdata['mode'];
$bindings[]=$postdata['mode'];
}