From e7fb57df98d0a2fc263ca29ad99d02bdce1817fb Mon Sep 17 00:00:00 2001 From: chaideqing Date: Tue, 9 May 2023 20:04:52 +0800 Subject: [PATCH] * Refactor project model function changeExecutionStatus. --- module/project/model.php | 22 +++------------- module/project/tao.php | 20 +++++++++++++++ .../test/tao/changeexecutionstatus.php | 25 +++++++++++++++++++ .../yaml/changeexecutionstatus/execution.yaml | 14 +++++++++++ 4 files changed, 62 insertions(+), 19 deletions(-) create mode 100755 module/project/test/tao/changeexecutionstatus.php create mode 100644 module/project/test/tao/yaml/changeexecutionstatus/execution.yaml diff --git a/module/project/model.php b/module/project/model.php index a5b72016e8..38ce1d8564 100755 --- a/module/project/model.php +++ b/module/project/model.php @@ -1608,7 +1608,7 @@ class projectModel extends model return false; } - if(!$oldProject->multiple) $this->changeExecutionStatus($projectID, 'start'); + if(!$oldProject->multiple) $this->projectTao->changeExecutionStatus($projectID, 'start'); return common::createChanges($oldProject, $project); } @@ -1633,7 +1633,7 @@ class projectModel extends model $this->projectTao->doSuspend($projectID, $project); - if(!$oldProject->multiple) $this->changeExecutionStatus($projectID, 'suspend'); + if(!$oldProject->multiple) $this->projectTao->changeExecutionStatus($projectID, 'suspend'); return common::createChanges($oldProject, $project); } @@ -1696,7 +1696,7 @@ class projectModel extends model if(count(dao::$errors['realEnd']) > 1) dao::$errors['realEnd'] = dao::$errors['realEnd'][0]; return false; } - if(!$oldProject->multiple) $this->changeExecutionStatus($projectID, 'close'); + if(!$oldProject->multiple) $this->projectTao->changeExecutionStatus($projectID, 'close'); /* Close the shadow product of the project. */ if(!$oldProject->hasProduct) @@ -1709,22 +1709,6 @@ class projectModel extends model return common::createChanges($oldProject, $project); } - /** - * Modify the execution status when changing the status of no execution project. - * - * @param int $projectID - * @param string $status - * @access public - * @return array - */ - public function changeExecutionStatus($projectID, $status) - { - if(!in_array($status, array('start', 'suspend', 'activate', 'close'))) return false; - $executionID = $this->dao->select('id')->from(TABLE_EXECUTION)->where('project')->eq($projectID)->andWhere('multiple')->eq('0')->fetch('id'); - if(!$executionID) return false; - return $this->loadModel('execution')->$status($executionID); - } - /** * 如果是无产品项目,更新影子产品信息。 * Update shadow product. diff --git a/module/project/tao.php b/module/project/tao.php index 243dc545b7..dc4f41c424 100755 --- a/module/project/tao.php +++ b/module/project/tao.php @@ -804,6 +804,26 @@ class projectTao extends projectModel return js::alert($this->lang->project->accessDenied) . js::locate(helper::createLink('project', 'index')); } + /** + * 修改无迭代项目下执行的状态。 + * Modify the execution status when changing the status of no execution project. + * + * @param int $projectID + * @param string $status + * + * @access public + * @return array|false + */ + protected function changeExecutionStatus(int $projectID, string $status): array|false + { + if(!in_array($status, array('start', 'suspend', 'activate', 'close'))) return false; + + $executionID = $this->dao->select('id')->from(TABLE_EXECUTION)->where('project')->eq($projectID)->andWhere('multiple')->eq('0')->fetch('id'); + if(!$executionID) return false; + + return $this->loadModel('execution')->$status($executionID); + } + /** * 通过项目ID获取Bug数量统计。 * Get the number of bugs associated with the project. diff --git a/module/project/test/tao/changeexecutionstatus.php b/module/project/test/tao/changeexecutionstatus.php new file mode 100755 index 0000000000..4c6f5786d9 --- /dev/null +++ b/module/project/test/tao/changeexecutionstatus.php @@ -0,0 +1,25 @@ +#!/usr/bin/env php +config('execution')->gen(2); + +/** + +title=测试 projectTao::changeExecutionStatus(); +timeout=0 +cid=1 + +*/ + +global $tester; + +$statusList = array('suspend', 'start', 'activate', 'close'); +foreach($statusList as $status) +{ + $tester->loadModel('project')->changeExecutionStatus(1, $status); + $$status = $tester->project->getByID(2); + r($$status) && p('status') && e("$status"); +} diff --git a/module/project/test/tao/yaml/changeexecutionstatus/execution.yaml b/module/project/test/tao/yaml/changeexecutionstatus/execution.yaml new file mode 100644 index 0000000000..40381a76d0 --- /dev/null +++ b/module/project/test/tao/yaml/changeexecutionstatus/execution.yaml @@ -0,0 +1,14 @@ +# ZenData yaml语法:https://www.zendata.cn/book/zendata/zendata-syntax-glance-72.html +title: changeexecutionstatus-execution +author: chaideqing +fields: + - field: id + range: '1-2' + - field: type + range: 'project, sprint' + - field: project + range: '0-1' + - field: multiple + range: '1,0' + - field: status + range: 'active'