From 0286dbe5cd9c7d4e867119c3db7910ad428a455a Mon Sep 17 00:00:00 2001 From: hufangzhou Date: Thu, 1 Jun 2023 13:24:28 +0800 Subject: [PATCH] * Fix bug #35695. --- module/program/model.php | 9 +++++--- module/project/model.php | 26 +++++++++++++++++++++++ module/project/view/browsebycard.html.php | 2 +- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/module/program/model.php b/module/program/model.php index 5f4f41fd37..8c159de6c7 100644 --- a/module/program/model.php +++ b/module/program/model.php @@ -1456,6 +1456,8 @@ class programModel extends model $projects = $this->getProjectList($programID, $browseType, $queryID, $orderBy, $pager, $programTitle, $involved, $queryAll); if(empty($projects)) return array(); + $leftTasks = ($this->cookie->projectType and $this->cookie->projectType == 'bycard') ? $this->loadModel('project')->getProjectLeftTasks(array_keys($projects)) : array(); + /* Get the members of project teams. */ $teamMembers = $this->dao->select('t1.root,t1.account')->from(TABLE_TEAM)->alias('t1') ->leftJoin(TABLE_USER)->alias('t2')->on('t1.account=t2.account') @@ -1465,7 +1467,7 @@ class programModel extends model ->fetchGroup('root', 'account'); /* Process projects. */ - foreach($projects as $key => $project) + foreach($projects as $projectID => $project) { if($project->end == '0000-00-00') $project->end = ''; @@ -1476,12 +1478,13 @@ class programModel extends model if($delay > 0) $project->delay = $delay; } - $project->teamMembers = isset($teamMembers[$project->id]) ? array_keys($teamMembers[$project->id]) : array(); + $project->teamMembers = isset($teamMembers[$projectID]) ? array_keys($teamMembers[$projectID]) : array(); + $project->leftTasks = isset($leftTasks[$projectID]) ? $leftTasks[$projectID]->tasks : '—'; /* Convert predefined HTML entities to characters. */ $project->name = htmlspecialchars_decode($project->name, ENT_QUOTES); - $stats[$key] = $project; + $stats[$projectID] = $project; } return $stats; diff --git a/module/project/model.php b/module/project/model.php index 94fed917ba..80f265241c 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -3178,4 +3178,30 @@ class projectModel extends model return $repoPairs; } + + + /** + * Get project left tasks for project browseByCard view. + * + * @param array $projectIdList + * @access public + * @return array + */ + public function getProjectLeftTasks($projectIdList) + { + $executionIdList = $this->dao->select('id')->from(TABLE_EXECUTION) + ->where('deleted')->eq(0) + ->andWhere('project')->in($projectIdList) + ->andWhere('type')->in('sprint,stage,kanban') + ->fetchPairs('id'); + + $leftTasks = $this->dao->select('t2.parent as project, count(*) as tasks')->from(TABLE_TASK)->alias('t1') + ->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.execution = t2.id') + ->where('t1.execution')->in($executionIdList) + ->andWhere('t1.status')->notIn('cancel,closed') + ->groupBy('t2.parent') + ->fetchAll('project'); + + return $leftTasks; + } } diff --git a/module/project/view/browsebycard.html.php b/module/project/view/browsebycard.html.php index e9800019c2..a8dffe8851 100644 --- a/module/project/view/browsebycard.html.php +++ b/module/project/view/browsebycard.html.php @@ -134,7 +134,7 @@
project->progress;?>
- hours->progress); ?> + progress); ?>
project->leftTasks;?>