mirror of
https://github.com/magicbug/Cloudlog
synced 2026-08-13 17:49:35 -04:00
Enhanced the WWFF awards page with band, mode, and QSL type filters, quick preset buttons, and a summary section showing worked/confirmed parks and milestone progress. Updated the controller to handle filter input and summary data, and extended the model with methods for filtered queries and statistics.
166 lines
5.3 KiB
PHP
166 lines
5.3 KiB
PHP
<?php
|
|
|
|
class Wwff extends CI_Model {
|
|
|
|
function get_all() {
|
|
$CI =& get_instance();
|
|
$CI->load->model('logbooks_model');
|
|
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
|
|
|
|
if (!$logbooks_locations_array) {
|
|
return null;
|
|
}
|
|
|
|
$this->load->model('bands');
|
|
|
|
$bandslots = $this->bands->get_worked_bands('wwff');
|
|
|
|
if(!$bandslots) return null;
|
|
|
|
$this->db->where_in("station_id", $logbooks_locations_array);
|
|
$this->db->where_in("col_band", $bandslots);
|
|
$this->db->order_by("COL_WWFF_REF", "ASC");
|
|
$this->db->where('COL_WWFF_REF !=', '');
|
|
|
|
return $this->db->get($this->config->item('table_name'));
|
|
}
|
|
|
|
function get_all_filtered($postdata = array()) {
|
|
$CI =& get_instance();
|
|
$CI->load->model('logbooks_model');
|
|
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
|
|
|
|
if (!$logbooks_locations_array) {
|
|
return null;
|
|
}
|
|
|
|
$this->load->model('bands');
|
|
$bandslots = $this->bands->get_worked_bands('wwff');
|
|
|
|
if(!$bandslots) return null;
|
|
|
|
$this->db->where_in("station_id", $logbooks_locations_array);
|
|
$this->db->where('COL_WWFF_REF !=', '');
|
|
|
|
// Apply band filter
|
|
if (isset($postdata['band']) && $postdata['band'] != 'All') {
|
|
if ($postdata['band'] == 'SAT') {
|
|
$this->db->where('col_prop_mode', 'SAT');
|
|
} else {
|
|
$this->db->where('col_band', $postdata['band']);
|
|
$this->db->where('col_prop_mode !=', 'SAT');
|
|
}
|
|
} else {
|
|
$this->db->where_in("col_band", $bandslots);
|
|
}
|
|
|
|
// Apply mode filter
|
|
if (isset($postdata['mode']) && $postdata['mode'] != 'All') {
|
|
$this->db->where("(col_mode = '" . $this->db->escape_str($postdata['mode']) . "' or col_submode = '" . $this->db->escape_str($postdata['mode']) . "')", NULL, FALSE);
|
|
}
|
|
|
|
// Apply QSL filter
|
|
if (isset($postdata['qsl']) || isset($postdata['lotw']) || isset($postdata['eqsl'])) {
|
|
$qsl_conditions = array();
|
|
if (isset($postdata['qsl']) && $postdata['qsl']) {
|
|
$qsl_conditions[] = "col_qsl_rcvd = 'Y'";
|
|
}
|
|
if (isset($postdata['lotw']) && $postdata['lotw']) {
|
|
$qsl_conditions[] = "col_lotw_qsl_rcvd = 'Y'";
|
|
}
|
|
if (isset($postdata['eqsl']) && $postdata['eqsl']) {
|
|
$qsl_conditions[] = "col_eqsl_qsl_rcvd = 'Y'";
|
|
}
|
|
if (!empty($qsl_conditions)) {
|
|
$this->db->where("(" . implode(" or ", $qsl_conditions) . ")", NULL, FALSE);
|
|
}
|
|
}
|
|
|
|
$this->db->order_by("COL_WWFF_REF", "ASC");
|
|
$this->db->order_by("COL_TIME_ON", "DESC");
|
|
|
|
return $this->db->get($this->config->item('table_name'));
|
|
}
|
|
|
|
function get_wwff_summary($postdata = array()) {
|
|
$CI =& get_instance();
|
|
$CI->load->model('logbooks_model');
|
|
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
|
|
|
|
if (!$logbooks_locations_array) {
|
|
return null;
|
|
}
|
|
|
|
$this->load->model('bands');
|
|
$bandslots = $this->bands->get_worked_bands('wwff');
|
|
|
|
if(!$bandslots) return null;
|
|
|
|
// Count unique parks worked
|
|
$this->db->select('count(distinct COL_WWFF_REF) as count');
|
|
$this->db->where_in("station_id", $logbooks_locations_array);
|
|
$this->db->where('COL_WWFF_REF !=', '');
|
|
|
|
if (isset($postdata['band']) && $postdata['band'] != 'All') {
|
|
if ($postdata['band'] == 'SAT') {
|
|
$this->db->where('col_prop_mode', 'SAT');
|
|
} else {
|
|
$this->db->where('col_band', $postdata['band']);
|
|
$this->db->where('col_prop_mode !=', 'SAT');
|
|
}
|
|
} else {
|
|
$this->db->where_in("col_band", $bandslots);
|
|
}
|
|
|
|
if (isset($postdata['mode']) && $postdata['mode'] != 'All') {
|
|
$this->db->where("(col_mode = '" . $this->db->escape_str($postdata['mode']) . "' or col_submode = '" . $this->db->escape_str($postdata['mode']) . "')", NULL, FALSE);
|
|
}
|
|
|
|
$result = $this->db->get($this->config->item('table_name'));
|
|
$total_parks = ($result->num_rows() > 0) ? $result->row()->count : 0;
|
|
|
|
// Count confirmed parks (with QSL)
|
|
$this->db->select('count(distinct COL_WWFF_REF) as count');
|
|
$this->db->where_in("station_id", $logbooks_locations_array);
|
|
$this->db->where('COL_WWFF_REF !=', '');
|
|
|
|
if (isset($postdata['band']) && $postdata['band'] != 'All') {
|
|
if ($postdata['band'] == 'SAT') {
|
|
$this->db->where('col_prop_mode', 'SAT');
|
|
} else {
|
|
$this->db->where('col_band', $postdata['band']);
|
|
$this->db->where('col_prop_mode !=', 'SAT');
|
|
}
|
|
} else {
|
|
$this->db->where_in("col_band", $bandslots);
|
|
}
|
|
|
|
if (isset($postdata['mode']) && $postdata['mode'] != 'All') {
|
|
$this->db->where("(col_mode = '" . $this->db->escape_str($postdata['mode']) . "' or col_submode = '" . $this->db->escape_str($postdata['mode']) . "')", NULL, FALSE);
|
|
}
|
|
|
|
$qsl_conditions = array();
|
|
if (isset($postdata['qsl']) && $postdata['qsl']) {
|
|
$qsl_conditions[] = "col_qsl_rcvd = 'Y'";
|
|
}
|
|
if (isset($postdata['lotw']) && $postdata['lotw']) {
|
|
$qsl_conditions[] = "col_lotw_qsl_rcvd = 'Y'";
|
|
}
|
|
if (isset($postdata['eqsl']) && $postdata['eqsl']) {
|
|
$qsl_conditions[] = "col_eqsl_qsl_rcvd = 'Y'";
|
|
}
|
|
if (!empty($qsl_conditions)) {
|
|
$this->db->where("(" . implode(" or ", $qsl_conditions) . ")", NULL, FALSE);
|
|
}
|
|
|
|
$result = $this->db->get($this->config->item('table_name'));
|
|
$confirmed_parks = ($result->num_rows() > 0) ? $result->row()->count : 0;
|
|
|
|
return array(
|
|
'total_parks' => $total_parks,
|
|
'confirmed_parks' => $confirmed_parks
|
|
);
|
|
}
|
|
}
|
|
|
|
?>
|