From bdeb83477b6b737cf38e52317583ac5bbb157714 Mon Sep 17 00:00:00 2001 From: zhouxin Date: Thu, 8 Dec 2022 06:00:06 +0000 Subject: [PATCH] * Resolve feedback #1646. --- module/common/model.php | 32 ++++++++++++++++++++++++++++++++ module/transfer/config.php | 4 ++-- module/transfer/model.php | 28 +++++++++++++++++++++++++--- 3 files changed, 59 insertions(+), 5 deletions(-) diff --git a/module/common/model.php b/module/common/model.php index 0174708a20..0b16444953 100644 --- a/module/common/model.php +++ b/module/common/model.php @@ -939,6 +939,38 @@ class commonModel extends model echo "
" . $html . '
'; } + /** + * Format the date to YYYY-mm-dd, format the datetime to YYYY-mm-dd HH:ii:ss. + * + * @param int $date + * @param string $type date|datetime|'' + * @access public + * @return string + */ + public function formatDate($date, $type = '') + { + $datePattern = '\w{4}(\/|-)\w{1,2}(\/|-)\w{1,2}'; + $datetimePattern = $datePattern . ' \w{1,2}\:\w{1,2}\:\w{1,2}'; + + if(empty($type)) + { + if(!preg_match("/$datePattern/", $date) and !preg_match("/$datetimePattern/", $date)) return $date; + if(preg_match("/$datePattern/", $date) === 1) $type = 'date'; + if(preg_match("/$datetimePattern/", $date) === 1) $type = 'datetime'; + } + + if(helper::isZeroDate($date)) + { + if($type == 'date') return '0000-00-00'; + if($type == 'datetime') return '0000-00-00 00:00:00'; + } + + if($type == 'date') $format = 'Y-m-d'; + if($type == 'datetime') $format = 'Y-m-d H:i:s'; + + return date($format, strtotime($date)); + } + /** * Get main nav items list * diff --git a/module/transfer/config.php b/module/transfer/config.php index c53f3b1d84..a97d8f24f9 100644 --- a/module/transfer/config.php +++ b/module/transfer/config.php @@ -12,8 +12,8 @@ $config->transfer->fieldList['sort'] = ''; $config->transfer->fieldList['dataSource'] = array('module' => '', 'method' => '', 'params' => '', 'pairs' => '', 'lang' => ''); $config->transfer->initFunction = 'title,control,required,'; -$config->transfer->dateFeilds = 'estStarted,realStarted,deadline,openedDate,assignedDate,finishedDate,canceledDate,closedDate,lastEditedDate,'; -$config->transfer->datetimeFeilds = ''; +$config->transfer->dateFields = 'estStarted,realStarted,deadline,openedDate,assignedDate,finishedDate,canceledDate,closedDate,lastEditedDate,'; +$config->transfer->datetimeFields = ''; $config->transfer->listFields = ''; $config->transfer->sysLangFields = ',pri,status,type,mode,severity,os,browser,resolution,confirmed,source,reviewResult,stage,change,category'; $config->transfer->sysDataFields = 'execution,product,user'; diff --git a/module/transfer/model.php b/module/transfer/model.php index 0721b4d5af..82cf31e94d 100644 --- a/module/transfer/model.php +++ b/module/transfer/model.php @@ -506,10 +506,32 @@ class transferModel extends model { $modelData = $this->getDatasByFile($tmpFile); } + + $modelData = $this->processDate($modelData); if(isset($fields['id'])) unset($fields['id']); return $modelData; } + /** + * Process datas, convert date to YYYY-mm-dd, convert datetime to YYYY-mm-dd HH:ii:ss. + * + * @param array $datas + * @access public + * @return array + */ + public function processDate($datas) + { + foreach($datas as $index => $data) + { + foreach($data as $field => $value) + { + if(strpos($this->modelConfig->dateFields, $field) !== false or strpos($this->modelConfig->datetimeFields, $field) !== false) $data->$field = $this->loadModel('common')->formatDate($value); + } + $datas[$index] = $data; + } + return $datas; + } + /** * Get rows from excel. * @@ -940,7 +962,7 @@ class transferModel extends model foreach($data as $field => $cellValue) { if(empty($cellValue)) continue; - if(strpos($this->transferConfig->dateFeilds, $field) !== false and helper::isZeroDate($cellValue)) $datas[$key]->$field = ''; + if(strpos($this->transferConfig->dateFields, $field) !== false and helper::isZeroDate($cellValue)) $datas[$key]->$field = ''; if(is_array($cellValue)) continue; if(!empty($fieldList[$field]['from']) and in_array($fieldList[$field]['control'], array('select', 'multiple'))) @@ -1325,8 +1347,8 @@ class transferModel extends model if(!isset($modelConfig->export)) $modelConfig->export = new stdClass(); if(!isset($modelConfig->import)) $modelConfig->export = new stdClass(); - $modelConfig->dateFeilds = isset($modelConfig->dateFeilds) ? $modelConfig->dateFeilds : $transferConfig->dateFeilds; - $modelConfig->datetimeFeilds = isset($modelConfig->datetimeFeilds) ? $modelConfig->datetimeFeilds : $transferConfig->datetimeFeilds; + $modelConfig->dateFields = isset($modelConfig->dateFields) ? $modelConfig->dateFields : $transferConfig->dateFields; + $modelConfig->datetimeFields = isset($modelConfig->datetimeFields) ? $modelConfig->datetimeFields : $transferConfig->datetimeFields; $modelConfig->sysLangFields = isset($modelConfig->sysLangFields) ? $modelConfig->sysLangFields : $transferConfig->sysLangFields; $modelConfig->sysDataFields = isset($modelConfig->sysDataFields) ? $modelConfig->sysDataFields : $transferConfig->sysDataFields; $modelConfig->listFields = isset($modelConfig->listFields) ? $modelConfig->listFields : $transferConfig->listFields;