* Update apiSyncMR function.

This commit is contained in:
dingguodong
2021-08-24 10:19:57 +08:00
parent 2c0f36696d
commit 18569c95d2
2 changed files with 28 additions and 2 deletions
+10
View File
@@ -4,3 +4,13 @@ $config->MR->create = new stdclass();
$config->MR->create->requiredFields = 'gitlabID,sourceProject,sourceBranch,targetProject,targetBranch,title';
$config->MR->create->skippedFields = 'projectID';
$config->MR->maps = new stdclass;
$config->MR->maps->sync = array();
$config->MR->maps->sync['title'] = 'title|field|';
$config->MR->maps->sync['description'] = 'description|field|';
$config->MR->maps->sync['assignee'] = 'assignees|userPairs|id';
$config->MR->maps->sync['reviewer'] = 'reviewers|userPairs|id';
$config->MR->maps->sync['targetBranch'] = 'target_branch|field|';
$config->MR->maps->sync['status'] = 'state|field|';
$config->MR->maps->sync['mergeStatus'] = 'merge_status|field|';
+18 -2
View File
@@ -201,11 +201,27 @@ class mrModel extends model
public function apiSyncMR($MR)
{
$rawMR = $this->apiGetSingleMR($MR->gitlabID, $MR->targetProject, $MR->mriid);
if(isset($rawMR->iid))
{
$map = $this->config->MR->maps->sync;
$gitlabUsers = $this->gitlab->getUserIdAccountPairs($MR->gitlabID);
$newMR = new stdclass;
$newMR->status = $rawMR->state;
$newMR->mergeStatus = $rawMR->merge_status;
foreach($map as $syncField => $config)
{
$value = '';
list($field, $optionType, $options) = explode('|', $config);
if($optionType == 'field') $value = $rawMR->$field;
if($optionType == 'userPairs')
{
$gitlabUserID = isset($rawMR->$field->$options) ? $rawMR->$field->$options : '';
$value = zget($gitlabUsers, $gitlabUserID, '');
}
if($value) $newMR->$syncField = $value;
}
/* Update MR in Zentao database. */
$this->dao->update(TABLE_MR)->data($newMR)