From 54505413910b4de7234a4b4e52926e68983e8ecb Mon Sep 17 00:00:00 2001 From: Guan Xiying Date: Tue, 29 Jun 2021 10:56:17 +0800 Subject: [PATCH 1/3] * Add datetime and date option. --- module/gitlab/config.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/module/gitlab/config.php b/module/gitlab/config.php index 5b21c8d084..987a381bd2 100644 --- a/module/gitlab/config.php +++ b/module/gitlab/config.php @@ -31,10 +31,10 @@ $config->gitlab->maps = new stdclass; $config->gitlab->maps->task = array(); $config->gitlab->maps->task['name'] = 'title|field|'; $config->gitlab->maps->task['desc'] = 'description|field|'; -$config->gitlab->maps->task['openedDate'] = 'created_at|field|'; +$config->gitlab->maps->task['openedDate'] = 'created_at|field|datetime'; $config->gitlab->maps->task['assignedTo'] = 'assignee_id|userPairs|'; -$config->gitlab->maps->task['lastEditedDate'] = 'updated_at|field|'; -$config->gitlab->maps->task['deadline'] = 'due_date|field|'; +$config->gitlab->maps->task['lastEditedDate'] = 'updated_at|field|datetime'; +$config->gitlab->maps->task['deadline'] = 'due_date|field|date'; $config->gitlab->maps->task['status'] = 'state|configItems|taskStateMap'; $config->gitlab->maps->task['pri'] = 'weight|configItems|taskWeightMap'; $config->gitlab->maps->task['lastEditedBy'] = 'updated_by_id|userPairs|'; @@ -42,15 +42,16 @@ $config->gitlab->maps->task['lastEditedBy'] = 'updated_by_id|userPairs|'; $config->gitlab->maps->story = array(); $config->gitlab->maps->story['title'] = 'title|field|'; $config->gitlab->maps->story['spec'] = 'description|fields|verify'; -$config->gitlab->maps->story['openedDate'] = 'created_at|field|'; +$config->gitlab->maps->story['openedDate'] = 'created_at|field|datetime'; $config->gitlab->maps->story['openedBy'] = 'assignee_id|userPairs|'; $config->gitlab->maps->story['assignedTo'] = 'assignee_id|userPairs|'; +$config->gitlab->maps->story['status'] = 'state|configItems|storyStateMap'; $config->gitlab->maps->story['pri'] = 'weight|configItems|storyWeightMap'; $config->gitlab->maps->bug = array(); $config->gitlab->maps->bug['title'] = 'title|field|'; $config->gitlab->maps->bug['steps'] = 'description|field|'; -$config->gitlab->maps->bug['openedDate'] = 'created_at|field|'; +$config->gitlab->maps->bug['openedDate'] = 'created_at|field|datetime'; $config->gitlab->maps->bug['assignedTo'] = 'assignee_id|userPairs|'; $config->gitlab->maps->bug['pri'] = 'weight|configItems|bugWeightMap'; From e3a5814eecdf80ce2110f1600b665a13bf62c076 Mon Sep 17 00:00:00 2001 From: Guan Xiying Date: Tue, 29 Jun 2021 10:58:17 +0800 Subject: [PATCH 2/3] * Fix date and datetime field. --- module/gitlab/model.php | 47 +++++++++++++++-------------------------- 1 file changed, 17 insertions(+), 30 deletions(-) diff --git a/module/gitlab/model.php b/module/gitlab/model.php index 9972ffe503..85b13c0739 100644 --- a/module/gitlab/model.php +++ b/module/gitlab/model.php @@ -1057,39 +1057,24 @@ class gitlabModel extends model */ public function webhookIssueAssign($gitlabID, $issue) { + $tableName = zget($this->config->gitlab->objectTables, $issue->objectType, ''); + if(!$tableName) return false; + $gitlabUsers = $this->getUserIdAccountPairs($gitlabID); - if($issue->objectType == 'task') - { - $oldTask = $this->loadModel('task')->getByID($issue->objectID); - $_POST['left'] = $oldTask->left; - $_POST['lastEditedBy'] = $issue->object->lastEditedBy; - $_POST['lastEditedDate'] = $issue->object->lastEditedDate; - $_POST['assignedDate'] = $issue->object->lastEditedDate; - $_POST['assignedBy'] = $issue->object->lastEditedBy; - $this->task->assign($issue->objectID); - } - if($issue->objectType == 'bug') - { - $oldBug = $this->loadModel('bug')->getByID($issue->objectID); - $_POST['lastEditedBy'] = $issue->object->lastEditedBy; - $_POST['lastEditedDate'] = $issue->object->lastEditedDate; - $_POST['assignedDate'] = $issue->object->lastEditedDate; - $_POST['assignedBy'] = $issue->object->lastEditedBy; - $this->bug->assign($issue->objectID); - } - - if($issue->objectType == 'story') - { - $oldBug = $this->loadModel('story')->getByID($issue->objectID); - $_POST['lastEditedBy'] = $issue->object->lastEditedBy; - $_POST['lastEditedDate'] = $issue->object->lastEditedDate; - $_POST['assignedDate'] = $issue->object->lastEditedDate; - $_POST['assignedBy'] = $issue->object->lastEditedBy; - $this->story->assign($issue->objectID); - } + $data = $issue->object; + $data->assignedDate = $issue->object->lastEditedDate; + $data->assignedBy = $issue->object->lastEditedBy; + $data->assignedTo = $issue->object->assignedTo; + $this->dao->update($tableName)->data($data)->where('id')->eq($issue->objectID)->exec(); + if(dao::isError()) return false; + $oldObject = $this->dao->findById($issue->objectID)->from($tableName)->fetch(); + $changes = common::createChanges($oldObject, $data); + $actionID = $this->action->create($issue->objectType, $issue->objectID, 'Assigned', '', $data->assignedTo); + $this->action->logHistory($actionID, $changes); + return true; } /** @@ -1113,9 +1098,11 @@ class gitlabModel extends model { $value = ''; list($gitlabField, $optionType, $options) = explode('|', $config); - if(!isset($changes->gitlabField)) continue; + if(!isset($changes->$gitlabField)) continue; if($optionType == 'field') $value = $issue->$gitlabField; if($optionType == 'field') $value = $issue->$gitlabField; + if($options == 'date') $value = date('Y-m-d', $value); + if($options == 'datetime') $value = date('Y-m-d H:i:s', $value); if($optionType == 'userPairs') $value = zget($gitlabUsers, $issue->$gitlabField); if($optionType == 'configItems' and isset($issue->$gitlabField)) $value = array_search($issue->$gitlabField, $this->config->gitlab->$options); if($value) $object->$zentaoField = $value; From af02efc949357c1ebb2247b7a0ce6299a59f6a42 Mon Sep 17 00:00:00 2001 From: Guan Xiying Date: Tue, 29 Jun 2021 10:59:42 +0800 Subject: [PATCH 3/3] * Add strtotime. --- module/gitlab/model.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/gitlab/model.php b/module/gitlab/model.php index 6316c6a63d..e709b7db79 100644 --- a/module/gitlab/model.php +++ b/module/gitlab/model.php @@ -1116,8 +1116,8 @@ class gitlabModel extends model if(!isset($changes->$gitlabField)) continue; if($optionType == 'field') $value = $issue->$gitlabField; if($optionType == 'field') $value = $issue->$gitlabField; - if($options == 'date') $value = date('Y-m-d', $value); - if($options == 'datetime') $value = date('Y-m-d H:i:s', $value); + if($options == 'date') $value = date('Y-m-d', strtotime($value)); + if($options == 'datetime') $value = date('Y-m-d H:i:s', strtotime($value)); if($optionType == 'userPairs') $value = zget($gitlabUsers, $issue->$gitlabField); if($optionType == 'configItems' and isset($issue->$gitlabField)) $value = array_search($issue->$gitlabField, $this->config->gitlab->$options); if($value) $object->$zentaoField = $value;