This commit is contained in:
dingguodong
2021-06-29 10:03:45 +08:00
2 changed files with 53 additions and 7 deletions
+4 -3
View File
@@ -37,6 +37,7 @@ $config->gitlab->maps->task['lastEditedDate'] = 'updated_at|field|';
$config->gitlab->maps->task['deadline'] = 'due_date|field|';
$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|';
$config->gitlab->maps->story = array();
$config->gitlab->maps->story['title'] = 'title|field|';
@@ -59,11 +60,11 @@ $config->gitlab->taskWeightMap['2'] = '2';
$config->gitlab->taskWeightMap['3'] = '3';
$config->gitlab->taskStateMap = array();
$config->gitlab->taskStateMap['doing'] = 'reopen';
$config->gitlab->taskStateMap['wait'] = 'reopen';
$config->gitlab->taskStateMap['doing'] = 'opened';
$config->gitlab->taskStateMap['wait'] = 'opened';
$config->gitlab->taskStateMap['closed'] = 'close';
$config->gitlab->taskStateMap['done'] = 'close';
$config->gitlab->taskStateMap['cancel'] = 'close';
$config->gitlab->taskStateMap['closed'] = 'close';
$config->gitlab->taskTypesToSync = 'design,devel,request,discuss,ui,affair,misc';
+49 -4
View File
@@ -983,12 +983,12 @@ class gitlabModel extends model
$issue->issue->objectType = $object->type;
$issue->issue->objectID = $object->id;
/* Parse markdown description to html. */
$issue->issue->description = $this->app->loadClass('hyperdown')->makeHtml($issue->issue->description);
if(!isset($this->config->gitlab->maps->{$object->type})) return false;
$issue->object = $this->issueToZentaoObject($issue->issue, $gitlabID);
$issue->object = $this->issueToZentaoObject($issue->issue, $gitlabID, $body->changes);
return $issue;
}
@@ -1035,7 +1035,6 @@ class gitlabModel extends model
{
$tableName = zget($this->config->gitlab->objectTables, $issue->objectType, '');
if($tableName) $this->dao->update($tableName)->data($issue->object)->where('id')->eq($issue->objectID)->exec();
a($this->dao->get());exit;
return !dao::isError();
}
@@ -1063,6 +1062,51 @@ class gitlabModel extends model
return $object;
}
/**
* Process webhook issue assign option.
*
* @param int $gitlabID
* @param object $issue
* @access public
* @return void
*/
public function webhookIssueAssign($gitlabID, $issue)
{
$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);
}
}
/**
* Parse issue to zentao object.
*
@@ -1071,7 +1115,7 @@ class gitlabModel extends model
* @access public
* @return object
*/
public function issueToZentaoObject($issue, $gitlabID)
public function issueToZentaoObject($issue, $gitlabID, $changes = null)
{
if(!isset($this->config->gitlab->maps->{$issue->objectType})) return null;
@@ -1084,6 +1128,7 @@ class gitlabModel extends model
{
$value = '';
list($gitlabField, $optionType, $options) = explode('|', $config);
if(!isset($changes->gitlabField)) continue;
if($optionType == 'field') $value = $issue->$gitlabField;
if($optionType == 'field') $value = $issue->$gitlabField;
if($optionType == 'userPairs') $value = zget($gitlabUsers, $issue->$gitlabField);