This commit is contained in:
Guan Xiying
2021-06-29 15:32:32 +08:00
7 changed files with 59 additions and 29 deletions
+35 -21
View File
@@ -478,6 +478,16 @@ class gitlabModel extends model
->fetchGroup('AID');
}
public function getProjectsByProduct($productID)
{
return $this->dao->select('AID, BID as gitlabProject')->from(TABLE_RELATION)
->where('relation')->eq('interrated')
->andWhere('AType')->eq('gitlab')
->andWhere('BType')->eq('gitlabProject')
->andWhere('product')->eq($productID)
->fetchGroup('AID');
}
/**
* Get gitlabID and projectID.
*
@@ -570,12 +580,11 @@ class gitlabModel extends model
}
$syncedIssue = $this->getSyncedIssue($objectType = 'task', $objectID = $taskID, $gitlab);
$issue = $this->taskToIssue($gitlab, $gitlabProject, $task);
if($syncedIssue)
{
$issue = $this->apiUpdateIssue($gitlab, $gitlabProject, $syncedIssue, $issue);
$this->apiUpdateIssue($gitlab, $gitlabProject, $syncedIssue->BID, $issue);
}
else
{
@@ -612,7 +621,7 @@ class gitlabModel extends model
if($syncedIssue)
{
$this->apiUpdateIssue($gitlabID, $projectID, $syncedIssue->AID, $issue);
$this->apiUpdateIssue($gitlabID, $projectID, $syncedIssue->BID, $issue);
}
else
{
@@ -627,12 +636,12 @@ class gitlabModel extends model
* Push bug to gitlab issue.
*
* @param int $bugID
* @param int $gitlab
* @param int $gitlabProject
* @param int $gitlabID
* @param int $projectID
* @access public
* @return void
*/
public function pushBug($bugID, $gitlab, $gitlabProject)
public function pushBug($bugID, $gitlabID, $projectID)
{
$bug = $this->loadModel('bug')->getByID($bugID);
@@ -643,19 +652,19 @@ class gitlabModel extends model
$projectID = $result->projectID;
}
$syncedIssue = $this->getSyncedIssue($objectType = 'bug', $objectID = $bugID, $gitlab);
$issue = $this->bugToIssue($gitlab, $gitlabProject, $bug);
$syncedIssue = $this->getSyncedIssue($objectType = 'bug', $objectID = $bugID, $gitlabID);
$issue = $this->bugToIssue($gitlabID, $projectID, $bug);
if($syncedIssue)
{
$issue = $this->apiUpdateIssue($gitlab, $gitlabProject, $syncedIssue, $issue);
$this->apiUpdateIssue($gitlabID, $projectID, $syncedIssue->BID, $issue);
}
else
{
$this->createZentaoObjectLabel($gitlab, $gitlabProject, 'bug', $bugID);
$this->createZentaoObjectLabel($gitlabID, $projectID, 'bug', $bugID);
$issue->labels = sprintf($this->config->gitlab->zentaoObjectLabel->name, 'bug', $bugID);
$issue = $this->apiCreateIssue($gitlab, $gitlabProject, $issue);
if($issue) $this->saveSyncedIssue('bug', $bug, $gitlab, $issue);
$issue = $this->apiCreateIssue($gitlabID, $projectID, $issue);
if($issue) $this->saveSyncedIssue('bug', $bug, $gitlabID, $issue);
}
}
@@ -664,7 +673,7 @@ class gitlabModel extends model
*
* @param string $objectType
* @param int $objectID
* @param int $gitlab
* @param int $gitlabID
* @param int $projectID
* @access public
* @return void
@@ -683,10 +692,9 @@ class gitlabModel extends model
if($objectType == 'story') $issue = $this->storyToIssue($gitlabID, $projectID, $object);
if($objectType == 'task') $issue = $this->taskToIssue($gitlabID, $projectID, $object);
if($objectType == 'bug') $issue = $this->bugToIssue($gitlabID, $projectID, $object);
if($syncedIssue)
{
$this->apiUpdateIssue($gitlabID, $projectID, $syncedIssue, $issue);
$this->apiUpdateIssue($gitlabID, $projectID, $syncedIssue->BID, $issue);
}
else
{
@@ -698,20 +706,22 @@ class gitlabModel extends model
}
/**
* Delete ans issue.
* Delete an issue.
*
* @param int $gitlabID
* @param int $projectID
* @param string $objectType
* @param int $objectID
* @param int $issueID
* @access public
* @return void
*/
public function deleteIssue($gitlabID, $projectID, $objectType, $objectID)
public function deleteIssue($gitlabID, $projectID, $objectType, $objectID, $issueID)
{
$object = $this->loadModel($objectType)->getByID($objectID);
$relationID = $this->getRelationID($objectType, $objectID);
if(!empty($relationID)) $this->dao->delete(TABLE_RELATION, $relationID);
if(!empty($relationID)) $this->dao->delete()->from(TABLE_RELATION)->where('id')->eq($relationID)->exec();
$this->apiDeleteIssue($gitlabID, $projectID, $issueID);
}
/**
@@ -845,12 +855,12 @@ class gitlabModel extends model
* Parse bug to issue.
*
* @param int $gitlabID
* @param int $gitlabProjectID
* @param int $projectID
* @param object $story
* @access public
* @return object
*/
public function bugToIssue($gitlabID, $gitlabProjectID, $bug)
public function bugToIssue($gitlabID, $projectID, $bug)
{
$map = $this->config->gitlab->maps->bug;
$issue = new stdclass;
@@ -874,6 +884,10 @@ class gitlabModel extends model
if($value) $issue->$field = $value;
}
/* issue->state is null when creating it, we should put status_event when updating it. */
if(isset($issue->state) and $issue->state == 'closed') $issue->state_event='close';
if(isset($issue->state) and $issue->state == 'opened') $issue->state_event='reopen';
return $issue;
}