From 54f244cbbabdc115efcc081dbcc1e63289bffcbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B9=BF=E6=98=8E?= Date: Mon, 9 Aug 2021 15:06:41 +0800 Subject: [PATCH] * Fix compute user view method. --- module/user/model.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/module/user/model.php b/module/user/model.php index f6197b5949..f0cbfd1807 100644 --- a/module/user/model.php +++ b/module/user/model.php @@ -1597,6 +1597,10 @@ class userModel extends model while($stakeholder = $stmt->fetch()) $stakeholders[$stakeholder->objectID][$stakeholder->user] = $stakeholder->user; } + /* Compute parent stakeholders. */ + $programStakeholderGroup = $this->loadModel('stakeholder')->getParentStakeholderGroup(array_keys($allPrograms)); + $projectStakeholderGroup = $this->loadModel('stakeholder')->getParentStakeholderGroup(array_keys($allProjects)); + list($productTeams, $productStakeholders) = $this->getProductMembers($allProducts); /* Init user view. */ @@ -1620,7 +1624,9 @@ class userModel extends model $programs = array(); foreach($allPrograms as $id => $program) { - if($this->checkProgramPriv($program, $account, zget($stakeholders, $id, array()), zget($whiteList, $id, array()))) $programs[$id] = $id; + $programStakeholders = zget($stakeholders, $id, array()); + if($program->acl == 'program') $programStakeholders += zget($programStakeholderGroup, $id, array()); + if($this->checkProgramPriv($program, $account, $programStakeholders, zget($whiteList, $id, array()))) $programs[$id] = $id; } $userView->programs = join(',', $programs); @@ -1638,6 +1644,7 @@ class userModel extends model { $projectTeams = zget($teams, $id, array()); $projectStakeholders = zget($stakeholders, $id, array()); + if($project->acl == 'program') $projectStakeholders += zget($projectStakeholderGroup, $id, array()); if($this->checkProjectPriv($project, $account, $projectStakeholders, $projectTeams, zget($whiteList, $id, array()))) $projects[$id] = $id; } $userView->projects = join(',', $projects);