From 04830daabfc610113c69640b6640dc9a3fa701a0 Mon Sep 17 00:00:00 2001 From: caoyanyi Date: Tue, 25 Mar 2025 16:48:20 +0800 Subject: [PATCH] * [bug#60843] adjust mr link task data filter. --- module/execution/model.php | 2 +- module/mr/control.php | 19 ++++++++++++++----- module/task/model.php | 1 + 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/module/execution/model.php b/module/execution/model.php index 588e34853f..f46e67587e 100755 --- a/module/execution/model.php +++ b/module/execution/model.php @@ -1915,7 +1915,7 @@ class executionModel extends model $taskQuery = $this->session->taskQuery; /* Limit current execution when no execution. */ - if(strpos($taskQuery, "`execution` =") === false && strpos($taskQuery, "`project` =") === false) $taskQuery .= " AND `execution` = $executionID"; + if(strpos($taskQuery, "`execution` =") === false && strpos($taskQuery, "`project` =") === false && $executionID) $taskQuery .= " AND `execution` = $executionID"; if(strpos($taskQuery, "`execution` = 'all'") !== false) { $executions = $this->getPairs(0, 'all', "nocode,noprefix,multiple"); diff --git a/module/mr/control.php b/module/mr/control.php index fd71a148cf..181ca8688a 100644 --- a/module/mr/control.php +++ b/module/mr/control.php @@ -719,9 +719,8 @@ class mr extends control foreach($productIdList as $productID) { if(empty($productID)) continue; - $executions = array_merge($executions, $this->product->getExecutionPairsByProduct((int)$productID)); + $executions = $executions + $this->product->getExecutionPairsByProduct((int)$productID); } - $productExecutionIDs = array_filter(array_keys($executions)); $this->loadModel('execution'); $this->mrZen->buildLinkTaskSearchForm($MRID, $repoID, $orderBy, $queryID, $executions); @@ -730,10 +729,20 @@ class mr extends control /* Get tasks by executions. */ $allTasks = array(); - foreach($productExecutionIDs as $productExecutionID) + if($browseType == 'bysearch') { - $tasks = $this->execution->getTasks(0, $productExecutionID, array(), $browseType, $queryID, 0, $orderBy, null); - $allTasks += array_merge($tasks, $allTasks); + $allTasks = $this->execution->getTasks(0, 0, $executions, $browseType, $queryID, 0, $orderBy, null); + } + else + { + $this->loadModel('task'); + $queryStatus = $this->lang->task->statusList; + unset($queryStatus['closed']); + + $condition = new stdclass(); + $condition->statusList = array_keys($queryStatus); + $condition->executionList = array_keys($executions); + $allTasks = $this->loadModel('task')->getListByCondition($condition); } /* Filter linked tasks. */ diff --git a/module/task/model.php b/module/task/model.php index 309346a610..e745badb1b 100755 --- a/module/task/model.php +++ b/module/task/model.php @@ -1867,6 +1867,7 @@ class taskModel extends model ->beginIF(!empty($condition->statusList))->andWhere('status')->in($condition->statusList)->fi() ->beginIF(!empty($condition->idList))->andWhere('id')->in($condition->idList)->fi() ->beginIF(!empty($condition->taskName))->andWhere('name')->like("%{$condition->taskName}%")->fi() + ->beginIF(!empty($condition->executionList))->andWhere('execution')->in($condition->executionList)->fi() ->beginIF(!$this->app->user->admin)->andWhere('execution')->in($this->app->user->view->sprints)->fi() ->orderBy($orderBy) ->page($pager)