diff --git a/module/gitlab/config.php b/module/gitlab/config.php index 4f3117f015..4fcfd175f5 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['status'] = 'state|configItems|bugStateMap'; $config->gitlab->maps->bug['pri'] = 'weight|configItems|bugWeightMap'; diff --git a/module/gitlab/model.php b/module/gitlab/model.php index 020009290a..f12dd1ab3f 100644 --- a/module/gitlab/model.php +++ b/module/gitlab/model.php @@ -1074,39 +1074,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; } /** @@ -1130,9 +1115,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', 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;