[Logbook Advanced] Fixed mode listing and search

这个提交包含在:
Andreas 2022-12-27 18:56:04 +01:00
父节点 e16e7ed18a
当前提交 3ab8204009
共有 3 个文件被更改,包括 33 次插入68 次删除

查看文件

@ -35,21 +35,6 @@ class Logbookadvanced extends CI_Controller {
} }
ksort($deOptions); ksort($deOptions);
$deOptions = array_keys($deOptions); $deOptions = array_keys($deOptions);
$modes = [];
if ($stationIds !== []) {
foreach ($this->logbookadvanced_model->get_worked_modes($stationIds) as $mode) {
$key = $mode['mode'];
if ($mode['submode'] != null) {
$key .= "|" . $mode['submode'];
}
if ($mode['submode'] == null) {
$modes[$key] = $mode['mode'];
} else {
$modes[$key] = $mode['mode'] . " | ".$mode['submode'];
}
}
}
$data = []; $data = [];
$data['page_title'] = "Advanced logbook"; $data['page_title'] = "Advanced logbook";
@ -58,7 +43,7 @@ class Logbookadvanced extends CI_Controller {
$pageData = []; $pageData = [];
$pageData['datePlaceholder'] = 'DD/MM/YYYY'; $pageData['datePlaceholder'] = 'DD/MM/YYYY';
$pageData['deOptions'] = $deOptions; $pageData['deOptions'] = $deOptions;
$pageData['modes'] = $modes; $pageData['modes'] = $this->logbookadvanced_model->get_modes();
$pageData['dxccarray'] = $this->logbook_model->fetchDxcc(); $pageData['dxccarray'] = $this->logbook_model->fetchDxcc();
$pageData['iotaarray'] = $this->logbook_model->fetchIota(); $pageData['iotaarray'] = $this->logbook_model->fetchIota();

查看文件

@ -2,48 +2,6 @@
use Cloudlog\QSLManager\QSO; use Cloudlog\QSLManager\QSO;
class Logbookadvanced_model extends CI_Model { class Logbookadvanced_model extends CI_Model {
/**
* Returns worked modes in the supplied stations as a simple array
* @param array $stationIds
* @return array
*/
function get_worked_modes(array $stationIds): array {
$CI =& get_instance();
$CI->load->model('logbooks_model');
$ids = "'".implode("','",$stationIds)."'";
$sql = "
SELECT distinct COL_MODE, COL_SUBMODE
FROM `" . $this->config->item('table_name') . "` qsos
WHERE qsos.station_id IN (".$ids.")
ORDER BY COL_MODE, COL_SUBMODE";
$data = $this->db->query($sql);
$results = [];
foreach ($data->result() as $row) {
if(!empty($row->COL_SUBMODE)) {
$results[] = [
'mode' => $row->COL_MODE,
'submode' => $row->COL_SUBMODE
];
} else {
// if mode is not already in the results array
if (!in_array($row->COL_MODE, array_column($results, 'mode'))) {
$results[] = [
'mode' => $row->COL_MODE,
'submode' => null
];
}
}
}
return $results;
}
/* /*
* @param array $searchCriteria * @param array $searchCriteria
* @return array * @return array
@ -73,15 +31,9 @@ class Logbookadvanced_model extends CI_Model {
$binding[] = '%' . trim($searchCriteria['dx']) . '%'; $binding[] = '%' . trim($searchCriteria['dx']) . '%';
} }
if ($searchCriteria['mode'] !== '') { if ($searchCriteria['mode'] !== '') {
list ($mode, $subMode) = explode("|", trim($searchCriteria['mode'])); $conditions[] = "(COL_MODE = ? or COL_SUBMODE = ?)";
$mode = trim($mode); $binding[] = $searchCriteria['mode'];
$subMode = trim($subMode); $binding[] = $searchCriteria['mode'];
$conditions[] = "COL_MODE = ?";
$binding[] = $mode;
if ($subMode !== '') {
$conditions[] = "COL_SUBMODE = ?";
$binding[] = $subMode;
}
} }
if ($searchCriteria['band'] !== '') { if ($searchCriteria['band'] !== '') {
if($searchCriteria['band'] != "SAT") { if($searchCriteria['band'] != "SAT") {
@ -237,4 +189,32 @@ class Logbookadvanced_model extends CI_Model {
return false; return false;
} }
function get_modes() {
$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;
}
$modes = array();
$this->db->select('distinct col_mode, coalesce(col_submode, "") col_submode', FALSE);
$this->db->where_in('station_id', $logbooks_locations_array);
$this->db->order_by('col_mode, col_submode', 'ASC');
$query = $this->db->get($this->config->item('table_name'));
foreach($query->result() as $mode){
if ($mode->col_submode == null || $mode->col_submode == "") {
array_push($modes, $mode->col_mode);
} else {
array_push($modes, $mode->col_submode);
}
}
return $modes;
}
} }

查看文件

@ -84,7 +84,7 @@
<option value="">All</option> <option value="">All</option>
<?php <?php
foreach($modes as $modeId => $mode){ foreach($modes as $modeId => $mode){
?><option value="<?php echo htmlentities($modeId);?>"><?php echo htmlspecialchars($mode);?></option><?php ?><option value="<?php echo htmlspecialchars($mode);?>"><?php echo htmlspecialchars($mode);?></option><?php
} }
?> ?>
</select> </select>