Fix QSO form date format and backend date parsing to respect user preferences
这个提交包含在:
当前提交
f502de6338
共有 3 个文件被更改,包括 53 次插入 和 9 次删除
|
|
@ -40,6 +40,13 @@ class QSO extends CI_Controller {
|
|||
$data['bands'] = $this->bands->get_user_bands_for_qso_entry();
|
||||
$data['user_default_band'] = $this->session->userdata('user_default_band');
|
||||
$data['sat_active'] = array_search("SAT", $this->bands->get_user_bands(), true);
|
||||
|
||||
// Set user's preferred date format
|
||||
if($this->session->userdata('user_date_format')) {
|
||||
$data['user_date_format'] = $this->session->userdata('user_date_format');
|
||||
} else {
|
||||
$data['user_date_format'] = $this->config->item('qso_date_format');
|
||||
}
|
||||
|
||||
$this->load->library('form_validation');
|
||||
|
||||
|
|
|
|||
|
|
@ -8,10 +8,11 @@ class Logbook_model extends CI_Model
|
|||
{
|
||||
|
||||
$callsign = str_replace('Ø', '0', $this->input->post('callsign'));
|
||||
// Join date+time
|
||||
$datetime = date("Y-m-d", strtotime($this->input->post('start_date'))) . " " . $this->input->post('start_time');
|
||||
// Join date+time - Parse date according to user's format preference
|
||||
$parsed_date = $this->parse_user_date($this->input->post('start_date'));
|
||||
$datetime = $parsed_date . " " . $this->input->post('start_time');
|
||||
if ($this->input->post('end_time') != null) {
|
||||
$datetime_off = date("Y-m-d", strtotime($this->input->post('start_date'))) . " " . $this->input->post('end_time');
|
||||
$datetime_off = $parsed_date . " " . $this->input->post('end_time');
|
||||
// if time off < time on, and time off is on 00:xx >> add 1 day (concidering start and end are between 23:00 and 00:59) //
|
||||
$_tmp_datetime_off = strtotime($datetime_off);
|
||||
if (($_tmp_datetime_off < strtotime($datetime)) && (substr($this->input->post('end_time'), 0, 2) == "00")) {
|
||||
|
|
@ -4942,6 +4943,42 @@ class Logbook_model extends CI_Model
|
|||
// Step 6: Return Table HTML
|
||||
return $table;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse date from user input according to user's preferred date format
|
||||
* @param string $date_input The date string from user input
|
||||
* @param string $user_format The user's preferred date format (e.g., 'd/m/Y', 'Y-m-d')
|
||||
* @return string Returns date in Y-m-d format for database storage, or original input if parsing fails
|
||||
*/
|
||||
private function parse_user_date($date_input, $user_format = null) {
|
||||
if (empty($date_input)) {
|
||||
return $date_input;
|
||||
}
|
||||
|
||||
// If no user format provided, try to get it from session or config
|
||||
if ($user_format === null) {
|
||||
if ($this->session->userdata('user_date_format')) {
|
||||
$user_format = $this->session->userdata('user_date_format');
|
||||
} else {
|
||||
$user_format = $this->config->item('qso_date_format');
|
||||
}
|
||||
}
|
||||
|
||||
// Try to parse with the user's format first
|
||||
$date = DateTime::createFromFormat($user_format, $date_input);
|
||||
if ($date !== false) {
|
||||
return $date->format('Y-m-d');
|
||||
}
|
||||
|
||||
// Fallback to strtotime for formats it can handle (mostly Y-m-d, m/d/Y, etc.)
|
||||
$timestamp = strtotime($date_input);
|
||||
if ($timestamp !== false) {
|
||||
return date('Y-m-d', $timestamp);
|
||||
}
|
||||
|
||||
// If all parsing fails, return the original input and let the database handle it
|
||||
return $date_input;
|
||||
}
|
||||
}
|
||||
|
||||
// Function to validate ADIF date format
|
||||
|
|
|
|||
|
|
@ -69,8 +69,8 @@
|
|||
<input type="text" class="form-control form-control-sm input_date" name="start_date" id="start_date" value="<?php if (($this->session->userdata('start_date') != NULL && ((time() - $this->session->userdata('time_stamp')) < 24 * 60 * 60))) {
|
||||
echo $this->session->userdata('start_date');
|
||||
} else {
|
||||
echo date('d-m-Y');
|
||||
} ?>" <?php echo ($_GET['manual'] == 0 ? "disabled" : ""); ?> required pattern="[0-3][0-9]-[0-1][0-9]-[0-9]{4}">
|
||||
echo date($user_date_format);
|
||||
} ?>" <?php echo ($_GET['manual'] == 0 ? "disabled" : ""); ?> required>
|
||||
</div>
|
||||
|
||||
<div class="mb-3 col-md-3">
|
||||
|
|
@ -102,7 +102,7 @@
|
|||
<?php if ($_GET['manual'] == 0) { ?>
|
||||
<input class="input_start_time" type="hidden" id="start_time" name="start_time" value="<?php echo date('H:i:s'); ?>" />
|
||||
<input class="input_end_time" type="hidden" id="end_time" name="end_time" value="<?php echo date('H:i:s'); ?>" />
|
||||
<input class="input_date" type="hidden" id="start_date" name="start_date" value="<?php echo date('d-m-Y'); ?>" />
|
||||
<input class="input_date" type="hidden" id="start_date" name="start_date" value="<?php echo date($user_date_format); ?>" />
|
||||
<?php } ?>
|
||||
</div>
|
||||
|
||||
|
|
@ -113,8 +113,8 @@
|
|||
<input type="text" class="form-control form-control-sm input_date" name="start_date" id="start_date" value="<?php if (($this->session->userdata('start_date') != NULL && ((time() - $this->session->userdata('time_stamp')) < 24 * 60 * 60))) {
|
||||
echo $this->session->userdata('start_date');
|
||||
} else {
|
||||
echo date('d-m-Y');
|
||||
} ?>" <?php echo ($_GET['manual'] == 0 ? "disabled" : ""); ?> required pattern="[0-3][0-9]-[0-1][0-9]-[0-9]{4}">
|
||||
echo date($user_date_format);
|
||||
} ?>" <?php echo ($_GET['manual'] == 0 ? "disabled" : ""); ?> required>
|
||||
</div>
|
||||
|
||||
<div class="mb-3 col-md-6">
|
||||
|
|
@ -131,7 +131,7 @@
|
|||
|
||||
<?php if ($_GET['manual'] == 0) { ?>
|
||||
<input class="input_start_time" type="hidden" id="start_time" name="start_time" value="<?php echo date('H:i:s'); ?>" />
|
||||
<input class="input_date" type="hidden" id="start_date" name="start_date" value="<?php echo date('d-m-Y'); ?>" />
|
||||
<input class="input_date" type="hidden" id="start_date" name="start_date" value="<?php echo date($user_date_format); ?>" />
|
||||
<?php } ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
|
|
|||
正在加载…
在新工单中引用