From 2db9579a8618d8b8a5bd03ba02cced28312fe074 Mon Sep 17 00:00:00 2001 From: dingguodong Date: Mon, 18 Sep 2023 14:59:33 +0800 Subject: [PATCH] * Refactor the code for activating the story. --- module/story/config/form.php | 17 +++++++++++++++++ module/story/control.php | 7 +++++-- module/story/model.php | 26 +++++--------------------- module/story/zen.php | 12 ++++++++++++ 4 files changed, 39 insertions(+), 23 deletions(-) diff --git a/module/story/config/form.php b/module/story/config/form.php index 5be24939e4..7175c941cf 100644 --- a/module/story/config/form.php +++ b/module/story/config/form.php @@ -1,4 +1,7 @@ story->form = new stdclass(); $config->story->form->create = array(); @@ -99,3 +102,17 @@ $config->story->form->review['estimate'] = array('type' => 'float', 'con $config->story->form->review['duplicateStory'] = array('type' => 'string', 'control' => 'text', 'required' => false, 'default' => ''); $config->story->form->review['childStories'] = array('type' => 'string', 'control' => 'text', 'required' => false, 'default' => ''); $config->story->form->review['status'] = array('type' => 'string', 'control' => 'hidden', 'required' => false, 'default' => ''); + +$config->story->form->activate = array(); +$config->story->form->activate['assignedTo'] = array('type' => 'string', 'required' => false, 'default' => ''); +$config->story->form->activate['activatedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now); +$config->story->form->activate['lastEditedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now); +$config->story->form->activate['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account); +$config->story->form->activate['closedBy'] = array('type' => 'string', 'required' => false, 'default' => ''); +$config->story->form->activate['closedReason'] = array('type' => 'string', 'required' => false, 'default' => ''); +$config->story->form->activate['closedDate'] = array('type' => 'datetime', 'required' => false, 'default' => null); +$config->story->form->activate['reviewedBy'] = array('type' => 'string', 'required' => false, 'default' => ''); +$config->story->form->activate['reviewedDate'] = array('type' => 'datetime', 'required' => false, 'default' => null); +$config->story->form->activate['assignedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now); +$config->story->form->activate['duplicateStory'] = array('type' => 'int', 'required' => false, 'default' => 0); +$config->story->form->activate['childStories'] = array('type' => 'string', 'required' => false, 'default' => ''); diff --git a/module/story/control.php b/module/story/control.php index b63684bf08..f5a8f067ef 100755 --- a/module/story/control.php +++ b/module/story/control.php @@ -626,6 +626,7 @@ class story extends control } /** + * 激活需求。 * Activate a story. * * @param int $storyID @@ -633,11 +634,13 @@ class story extends control * @access public * @return void */ - public function activate($storyID, $storyType = 'story') + public function activate(int $storyID, string $storyType = 'story') { if(!empty($_POST)) { - $changes = $this->story->activate($storyID); + $postData = $this->storyZen->buildStoryForActivate(); + $changes = $this->story->activate($storyID, $postData); + if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); if($changes) diff --git a/module/story/model.php b/module/story/model.php index 47086d5e64..ba2dac2338 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -2260,38 +2260,22 @@ class storyModel extends model } /** + * 激活需求。 * Activate a story. * * @param int $storyID * @access public - * @return bool + * @return array|false */ - public function activate($storyID) + public function activate(int $storyID, object $postData): array|false { $oldStory = $this->dao->findById($storyID)->from(TABLE_STORY)->fetch(); - $now = helper::now(); - $story = fixer::input('post') - ->add('id', $storyID) - ->add('closedBy', '') - ->add('closedReason', '') - ->add('closedDate', null) - ->add('reviewedBy', '') - ->add('reviewedDate', null) - ->add('duplicateStory', 0) - ->add('childStories', '') - ->setDefault('lastEditedBy', $this->app->user->account) - ->setDefault('lastEditedDate', $now) - ->setDefault('assignedDate', $now) - ->setDefault('activatedDate', $now) - ->stripTags($this->config->story->editor->activate['id'], $this->config->allowedTags) - ->remove('comment') - ->get(); /* Get status after activation. */ + $story = $postData; $story->status = $this->getActivateStatus($storyID); - $story = $this->loadModel('file')->processImgURL($story, $this->config->story->editor->activate['id'], $this->post->uid); - $this->dao->update(TABLE_STORY)->data($story)->autoCheck()->checkFlow()->where('id')->eq($storyID)->exec(); + $this->dao->update(TABLE_STORY)->data($story, 'comment')->autoCheck()->checkFlow()->where('id')->eq($storyID)->exec(); if($story->status == 'active') { diff --git a/module/story/zen.php b/module/story/zen.php index e1b03e24f6..e185a97838 100644 --- a/module/story/zen.php +++ b/module/story/zen.php @@ -1256,4 +1256,16 @@ class storyZen extends story return $showFields; } + + /** + * Build story post data for activating the story. + * + * @return object + */ + protected function buildStoryForActivate(): object + { + $postData = form::data($this->config->story->form->activate)->get(); + $story = $this->loadModel('file')->processImgURL($postData, $this->config->story->editor->activate['id'], $this->post->uid); + return $story; + } }