From 7d7305bab8f45d660d3f4514765c29ed3c58e34a Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Thu, 15 Oct 2020 09:07:04 +0800 Subject: [PATCH] * Code for #8119. --- module/product/lang/zh-cn.php | 4 +-- module/program/lang/zh-cn.php | 2 +- module/program/model.php | 2 +- module/user/model.php | 48 +++++++++++++++++++++++++++++++++-- 4 files changed, 50 insertions(+), 6 deletions(-) diff --git a/module/product/lang/zh-cn.php b/module/product/lang/zh-cn.php index f14db9d432..144b73f5d1 100644 --- a/module/product/lang/zh-cn.php +++ b/module/product/lang/zh-cn.php @@ -130,8 +130,8 @@ $lang->product->statusList[''] = ''; $lang->product->statusList['normal'] = '正常'; $lang->product->statusList['closed'] = '结束'; -$lang->product->aclList['open'] = "默认设置(有{$lang->productCommon}视图权限,即可访问)"; -$lang->product->aclList['private'] = "私有{$lang->productCommon}(只有{$lang->productCommon}相关负责人和{$lang->projectCommon}团队成员才能访问)"; +$lang->product->aclList['open'] = "公开(有{$lang->productCommon}视图权限,即可访问)"; +$lang->product->aclList['private'] = "私有({$lang->productCommon}相关负责人、所属项目集的干系人、相关联项目的团队成员和干系人可访问)"; $lang->product->aclList['custom'] = '自定义白名单(团队成员和白名单的成员可以访问)'; $lang->product->storySummary = "本页共 %s 个%s,预计 %s 个{$lang->hourCommon},用例覆盖率 %s。"; diff --git a/module/program/lang/zh-cn.php b/module/program/lang/zh-cn.php index b6a24c8387..a50ab852bf 100644 --- a/module/program/lang/zh-cn.php +++ b/module/program/lang/zh-cn.php @@ -183,7 +183,7 @@ $lang->program->PGMExport = '导出'; $lang->program->PGMManageGroupMember = '维护分组用户'; $lang->program->PGMStakeholder = '干系人列表'; $lang->program->createStakeholder = '添加干系人'; -$lang->program->importStakeholder = '从父项目导入'; +$lang->program->importStakeholder = '从父项目集导入'; /* Fields. */ $lang->program->PGMName = '项目集名称'; diff --git a/module/program/model.php b/module/program/model.php index 8ba10d8c99..13208dadf3 100644 --- a/module/program/model.php +++ b/module/program/model.php @@ -283,7 +283,7 @@ class programModel extends model { $programID = $this->dao->lastInsertId(); $today = helper::today(); - //if($project->acl != 'open') $this->loadModel('user')->updateUserView($programID, 'program'); + if($program->acl != 'open') $this->loadModel('user')->updateUserView($programID, 'program'); $this->dao->update(TABLE_PROGRAM)->set('`order`')->eq($programID * 5)->where('id')->eq($programID)->exec(); // Save order. $this->file->updateObjectID($this->post->uid, $programID, 'project'); diff --git a/module/user/model.php b/module/user/model.php index 661b9859ec..56b4943965 100644 --- a/module/user/model.php +++ b/module/user/model.php @@ -1533,7 +1533,7 @@ class userModel extends model if(is_numeric($objectIdList)) $objectIdList = array($objectIdList); if(!is_array($objectIdList)) return false; - $allGroups = $this->dao->select('account,`group`')->from(TABLE_USERGROUP)->fetchAll(); + $allGroups = $this->dao->select('account, `group`')->from(TABLE_USERGROUP)->fetchAll(); $managePrograms = $this->dao->select('account, PRJ')->from(TABLE_USERGROUP)->where('PRJ')->ne('')->fetchPairs(); $userGroups = array(); $groupUsers = array(); @@ -1590,7 +1590,6 @@ class userModel extends model if(strpos(",{$userView->programs},", ",{$program},") === false) $userView->programs .= ",{$program}"; } } - $userObjects[$account]['programs'] = $userView->programs; } } @@ -1678,6 +1677,26 @@ class userModel extends model } } + /* Get linked projects stakeholders.*/ + $projectStakeholders = $this->dao->select('user')->from(TABLE_STAKEHOLDER) + ->where('objectType')->eq('project') + ->andWhere('objectID')->in($linkedProjects) + ->fetchPairs(); + + if(isset($projectStakeholders[$account])) return true; + + /* Get linked program stakeholders.*/ + if($product->program) + { + $program = $this->loadModel('program')->getPGMByID($product->program); + $programStakeholders = $this->dao->select('user')->from(TABLE_STAKEHOLDER) + ->where('objectType')->eq('program') + ->andWhere('objectID')->eq($program->id) + ->fetchPairs(); + + if(isset($programStakeholders[$account])) return true; + } + return false; } @@ -1717,6 +1736,31 @@ class userModel extends model foreach($linkedProjects as $projectID) $users += zget($teams, $projectID, array()); } + /* Get linked projects stakeholders.*/ + $projectStakeholders = $this->dao->select('objectID,user')->from(TABLE_STAKEHOLDER) + ->where('objectType')->eq('project') + ->andWhere('objectID')->in($linkedProjects) + ->fetchPairs(); + if(!empty($projectStakeholders)) + { + foreach($projectStakeholders as $account) $users[$account] = $account; + } + + /* Get linked program stakeholders.*/ + if($product->program) + { + $program = $this->loadModel('program')->getPGMByID($product->program); + $programStakeholders = $this->dao->select('objectID,user')->from(TABLE_STAKEHOLDER) + ->where('objectType')->eq('program') + ->andWhere('objectID')->eq($program->id) + ->fetchPairs(); + + if(!empty($programStakeholders)) + { + foreach($programStakeholders as $account) $users[$account] = $account; + } + } + return $users; }