From 30f8f51e3b016606ee66780fcc74b0486d44c0a7 Mon Sep 17 00:00:00 2001 From: lichengjun Date: Mon, 5 Jul 2021 13:26:49 +0800 Subject: [PATCH] *Add batch update, assign, function in the story model. --- module/bug/model.php | 3 +-- module/gitlab/config.php | 4 +++- module/gitlab/model.php | 20 -------------------- module/story/model.php | 29 ++++++++++++++++++++++++++--- module/task/model.php | 6 ++---- 5 files changed, 32 insertions(+), 30 deletions(-) diff --git a/module/bug/model.php b/module/bug/model.php index 6d44b10346..2e16e2f32f 100644 --- a/module/bug/model.php +++ b/module/bug/model.php @@ -90,8 +90,7 @@ class bugModel extends model $bugID = $this->dao->lastInsertID(); $object = $this->getByID($bugID); - $issue = $this->loadModel('gitlab')->parseObjectToIssue($this->post->gitlab, $this->post->gitlabProject, 'bug', $object); - $this->loadModel('gitlab')->apiCreateIssue($this->post->gitlab, $this->post->gitlabProject, $issue, 'bug', $bugID, $object); + $this->loadModel('gitlab')->apiCreateIssue($this->post->gitlab, $this->post->gitlabProject, 'bug', $bugID, $object); $this->file->updateObjectID($this->post->uid, $bugID, 'bug'); $this->file->saveUpload('bug', $bugID); diff --git a/module/gitlab/config.php b/module/gitlab/config.php index 9cd8d1da48..f3fff35b4d 100644 --- a/module/gitlab/config.php +++ b/module/gitlab/config.php @@ -27,7 +27,9 @@ $config->gitlab->webhookURL = "%s/api.php?m=gitlab&f=webhook&product=%s&gitlab=% $config->gitlab->skippedFields = new stdclass; $config->gitlab->skippedFields->issueCreate = array(); -$config->gitlab->skippedFields->issueCreate[] = ''; +$config->gitlab->skippedFields->issueCreate['story'] = array(); +$config->gitlab->skippedFields->issueCreate['task'] = array(); +$config->gitlab->skippedFields->issueCreate['bug'] = array(); $config->gitlab->maps = new stdclass; $config->gitlab->maps->task = array(); diff --git a/module/gitlab/model.php b/module/gitlab/model.php index 63b0c424bc..b2a9d0fe64 100644 --- a/module/gitlab/model.php +++ b/module/gitlab/model.php @@ -275,25 +275,6 @@ class gitlabModel extends model return json_decode(commonModel::http($url, $data, $options)); } - /** - * Send an api post request. - * - * @param int|string $host gitlab server ID | gitlab host url. - * @param int $api - * @param int $data - * @param int $options - * @access public - * @return object - */ - public function apiGet($host, $api, $data = array(), $options = array()) - { - if(is_numeric($host)) $host = $this->getApiRoot($host); - if(strpos($host, 'http://') !== 0 and strpos($host, 'https://') !== 0) return false; - - $url = sprintf($apiRoot, $api); - return json_decode(commonModel::http($url, $data, $options)); - } - /** * Get current user. * @@ -570,7 +551,6 @@ class gitlabModel extends model $issue = $this->loadModel('gitlab')->parseObjectToIssue($gitlabID, $projectID, $objectType, $object); if(isset($label->name)) $issue->labels = $label->name; - foreach($this->config->gitlab->skippedFields->issueCreate[$objectType] as $field) { if(isset($issue->$field)) unset($issue->$field); diff --git a/module/story/model.php b/module/story/model.php index e5fcd0e657..e0595205c3 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -341,8 +341,7 @@ class storyModel extends model /* push this story to gitlab issue */ $object = $this->getByID($storyID); - $issue = $this->loadModel('gitlab')->parseObjectToIssue($this->post->gitlab, $this->post->gitlabProject, 'story', $object); - $this->loadModel('gitlab')->apiCreateIssue($this->post->gitlab, $this->post->gitlabProject, $issue, 'story', $storyID, $object); + $this->loadModel('gitlab')->apiCreateIssue($this->post->gitlab, $this->post->gitlabProject, 'story', $storyID, $object); return array('status' => 'created', 'id' => $storyID); } @@ -1168,6 +1167,18 @@ class storyModel extends model /* Update story sort of plan when story plan has changed. */ if($oldStory->plan != $story->plan) $this->updateStoryOrderOfPlan($storyID, $story->plan, $oldStory->plan); + /* update story to gitlab issue. */ + $object = $this->getByID($storyID); + + if(!empty($object)) + { + $relation = $this->loadModel('gitlab')->getRelationByObject('story', $storyID); + if($relation) + { + if(!empty($object)) $this->loadModel('gitlab')->apiUpdateIssue($relation->gitlabID, $relation->projectID, $relation->issueID, 'story', $object); + } + } + $this->executeHooks($storyID); if($story->type == 'story') $this->batchChangeStage(array($storyID), $story->stage); if($story->closedReason == 'done') $this->loadModel('score')->create('story', 'close'); @@ -1440,7 +1451,6 @@ class storyModel extends model if(!empty($relation)) { - $singleIssue = new stdclass(); $singleIssue = $this->loadModel('gitlab')->apiGetSingleIssue($relation->gitlabID, $relation->issueID); if($singleIssue->state != 'closed') @@ -1515,6 +1525,19 @@ class storyModel extends model if($oldStory->parent > 0) $this->updateParentStatus($storyID, $oldStory->parent); $this->setStage($storyID); $allChanges[$storyID] = common::createChanges($oldStory, $story); + + $object = $this->getByID($storyID); + $relation = $this->loadModel('gitlab')->getRelationByObject('story', $storyID); + + if(!empty($relation)) + { + $singleIssue = $this->loadModel('gitlab')->apiGetSingleIssue($relation->gitlabID, $relation->issueID); + + if($singleIssue->state != 'closed') + { + if(!empty($object)) $this->loadModel('gitlab')->apiUpdateIssue($relation->gitlabID, $relation->projectID, $relation->issueID, 'story', $object); + } + } } else { diff --git a/module/task/model.php b/module/task/model.php index 8d742c3780..55dd236b04 100644 --- a/module/task/model.php +++ b/module/task/model.php @@ -124,8 +124,7 @@ class taskModel extends model /* Sync this task to gitlab issue. */ $object = $this->getByID($taskID); - $issue = $this->loadModel('gitlab')->parseObjectToIssue($this->post->gitlab, $this->post->gitlabProject, 'task', $object); - $this->loadModel('gitlab')->apiCreateIssue($this->post->gitlab, $this->post->gitlabProject, $issue, 'task', $taskID, $object); + $this->loadModel('gitlab')->apiCreateIssue($this->post->gitlab, $this->post->gitlabProject, 'task', $taskID, $object); /* Mark design version.*/ if(isset($task->design) && !empty($task->design)) @@ -386,8 +385,7 @@ class taskModel extends model /* Sync this task to gitlab issue. */ $object = $this->getByID($taskID); - $issue = $this->loadModel('gitlab')->parseObjectToIssue($this->post->gitlab, $this->post->gitlabProject, 'task', $object); - $this->loadModel('gitlab')->apiCreateIssue($this->post->gitlab, $this->post->gitlabProject, $issue, 'task', $taskID, $object); + $this->loadModel('gitlab')->apiCreateIssue($this->post->gitlab, $this->post->gitlabProject,'task', $taskID, $object); $taskSpec = new stdClass(); $taskSpec->task = $taskID;