* Code for project admin.

This commit is contained in:
孙广明
2022-06-22 23:07:27 +08:00
parent a58607bbaa
commit a67ba3e0aa
6 changed files with 217 additions and 96 deletions
+4 -1
View File
@@ -2402,7 +2402,10 @@ EOD;
if($app->config->vision != 'lite')
{
$inProject = isset($lang->navGroup->$module) && $lang->navGroup->$module == 'project';
if($inProject && $app->session->project && strpos(",{$app->user->rights['projects']},", ",{$app->session->project},") !== false) return true;
if($inProject && $app->session->project && (strpos(",{$app->user->rights['projects']},", ",{$app->session->project},") !== false or strpos(",{$app->user->rights['projects']},", ',all,') !== false)) return true;
$inProduct = isset($lang->navGroup->$module) && $lang->navGroup->$module == 'product';
if($inProduct && $app->session->product && (strpos(",{$app->user->rights['products']},", ",{$app->session->product},") !== false or strpos(",{$app->user->rights['products']},", ',all,') !== false)) return true;
}
/* If not super admin, check the rights. */
+12 -16
View File
@@ -294,29 +294,25 @@ class group extends control
$this->group->updateProjectAdmin($groupID);
return print(js::locate(inlink('manageProjectAdmin', "group=$groupID"), 'parent'));
}
$group = $this->group->getById($groupID);
$groupUsers = $this->group->getUserPairs($groupID);
$userPrograms = $this->group->getUserPrograms($groupID);
$allUsers = array('' => '') + $groupUsers + $this->loadModel('dept')->getDeptUserPairs($deptID);
list($programs, $projects, $products, $executions) = $this->group->getObject4AdminGroup();
$group = $this->group->getById($groupID);
$title = $this->lang->company->common . $this->lang->colon . $group->name . $this->lang->colon . $this->lang->group->manageMember;
$position[] = $group->name;
$position[] = $this->lang->group->manageMember;
$this->view->title = $title;
$this->view->position = $position;
$this->view->allUsers = $allUsers;
$this->view->group = $group;
$this->view->deptID = $deptID;
$this->view->programs = $programs;
$this->view->projects = $projects;
$this->view->products = $products;
$this->view->executions = $executions;
$this->view->deptTree = $this->loadModel('dept')->getTreeMenu($rooteDeptID = 0, array('deptModel', 'createManageProjectAdminLink'), $groupID);
$this->view->groupUsers = $groupUsers;
$this->view->userPrograms = $userPrograms;
$this->view->title = $title;
$this->view->position = $position;
$this->view->allUsers = array('' => '') + $this->loadModel('dept')->getDeptUserPairs($deptID);
$this->view->deptID = $deptID;
$this->view->programs = $programs;
$this->view->projects = $projects;
$this->view->products = $products;
$this->view->executions = $executions;
$this->view->deptTree = $this->loadModel('dept')->getTreeMenu($rooteDeptID = 0, array('deptModel', 'createManageProjectAdminLink'), $groupID);
$this->view->projectAdmins = $this->group->getProjectAdmins();
$this->display();
}
+16
View File
@@ -58,3 +58,19 @@ function resetProgramName(obj)
var newName = 'program[' + $(obj).val() + '][]';
programSelect.attr('name', newName);
}
function toggleDisabled(obj)
{
var checked = $(obj).is(':checked');
if(checked)
{
$(obj).closest('tr').find('.input-group select').addClass('disabled');
$(obj).closest('tr').find('.input-group select').picker({chosenMode: false});
}
else
{
$(obj).closest('tr').find('.input-group select').removeClass('disabled');
$(obj).closest('tr').find('.input-group select').picker({chosenMode: true});
}
}
+52 -18
View File
@@ -291,21 +291,49 @@ class groupModel extends model
}
/**
* Get user programs of a group.
* Get project admins for manage project admin.
*
* @param int $groupID
* @access public
* @return array
*/
public function getUserPrograms($groupID)
public function getProjectAdmins()
{
return $this->dao->select('t1.account, t1.project')
->from(TABLE_USERGROUP)->alias('t1')
->leftJoin(TABLE_USER)->alias('t2')->on('t1.account = t2.account')
->where('`group`')->eq((int)$groupID)
->andWhere('t2.deleted')->eq(0)
->orderBy('account')
->fetchPairs();
$admins = $this->dao->select('*')->from(TABLE_PROJECTADMIN)->fetchGroup('group', 'account');
$projectAdmins = array();
foreach($admins as $groupID => $adminGroup)
{
if(!empty($adminGroup))
{
$accounts = implode(',', array_keys($adminGroup));
$projectAdmins[$accounts] = current($adminGroup);
}
}
return $projectAdmins;
}
/**
* Get admins by object id list.
*
* @param int $idList
* @param string $field
* @access public
* @return void
*/
public function getAdmins($idList, $field = 'programs')
{
$objects = array();
foreach($idList as $id)
{
$objects[$id] = $this->dao->select('DISTINCT account')->from(TABLE_PROJECTADMIN)
->where("CONCAT(',', $field, ',')")->like("%$id%")
->orWhere($field)->eq('all')
->fetchPairs();
}
return $objects;
}
/**
@@ -535,6 +563,8 @@ class groupModel extends model
public function updateProjectAdmin($groupID)
{
$this->loadModel('user');
$allUsers = $this->dao->select('account')->from(TABLE_PROJECTADMIN)->fetchPairs();
$this->dao->delete()->from(TABLE_PROJECTADMIN)->exec();
$members = $this->post->members ? $this->post->members : array();
@@ -542,10 +572,11 @@ class groupModel extends model
$projects = $this->post->project ? $this->post->project : array();
$products = $this->post->product ? $this->post->product : array();
$executions = $this->post->execution ? $this->post->execution : array();
$programAll = $this->post->programAll ? $this->post->programAll : array();
$projectAll = $this->post->projectAll ? $this->post->projectAll : array();
$productAll = $this->post->productAll ? $this->post->productAll : array();
$executionAll = $this->post->executionAll ? $this->post->executionAll : array();
$programAll = $this->post->programAll ? $this->post->programAll : '';
$projectAll = $this->post->projectAll ? $this->post->projectAll : '';
$productAll = $this->post->productAll ? $this->post->productAll : '';
$executionAll = $this->post->executionAll ? $this->post->executionAll : '';
foreach($members as $lineID => $accounts)
{
if(empty($accounts)) continue;
@@ -565,12 +596,15 @@ class groupModel extends model
$data->executions = $execution;
$this->dao->replace(TABLE_PROJECTADMIN)->data($data)->exec();
$allUsers[$account] = $account;
}
//foreach($programs[$account] as $programID)
//{
// if(!$programID) continue;
// $this->user->updateUserView($programID, 'program');
//}
}
foreach($allUsers as $account)
{
if(!$account) continue;
$this->user->computeUserView($account, true);
}
if(!dao::isError()) return true;
+50 -22
View File
@@ -30,35 +30,63 @@
<th class='w-100px'><?php echo $lang->group->allCheck;?></th>
<th class='w-100px'></th>
</tr>
<?php if(false):?>
<?php foreach($userPrograms as $account => $project):?>
<tr>
<td id='group'>
<div class='group-item'><?php echo html::select('members[]', $allUsers, $account, "class='form-control picker-select' multiple onchange=resetProgramName(this)");?></div>
<?php if($projectAdmins):?>
<?php foreach($projectAdmins as $account => $group):?>
<tr class="line<?php echo $group->group;?>">
<td rowspan='4'>
<div class='group-item'><?php echo html::select("members[$group->group][]", $allUsers, $account, "class='form-control picker-select' multiple");?></div>
</td>
<td>
<div class='input-group'>
<?php $disabled = $group->programs == 'all' ? "disabled='disabled'" : '';?>
<span class='input-group-addon'> <?php echo $lang->group->manageProgram;?></span>
<?php echo html::select("program[$account][]", $programs, '', "class='form-control picker-select' multiple");?>
</div>
<div class='input-group'>
<span class='input-group-addon'> <?php echo $lang->group->manageProject;?></span>
<?php echo html::select("project[$account][]", $projects, $project, "class='form-control picker-select' multiple");?>
</div>
<div class='input-group'>
<span class='input-group-addon'> <?php echo $lang->group->manageProduct;?></span>
<?php echo html::select("product[$account][]", $products, '', "class='form-control picker-select' multiple");?>
</div>
<div class='input-group'>
<span class='input-group-addon'> <?php echo $lang->group->manageExecution;?></span>
<?php echo html::select("execution[$account][]", $executions, '', "class='form-control picker-select' multiple");?>
<?php echo html::select("program[$group->group][]", $programs, $group->programs == 'all' ? '' : $group->programs, "class='form-control picker-select' multiple $disabled");?>
</div>
</td>
<td>
<?php echo html::checkbox("programAll[$group->group]", array(1 => ''), $group->programs == 'all' ? 1 : '', "onchange=toggleDisabled(this);");?>
</td>
<td rowspan='4'>
<button type="button" class="btn btn-link btn-icon btn-add" onclick="addItem(this)"><i class="icon icon-plus"></i></button>
<button type="button" class="btn btn-link btn-icon btn-delete" onclick="deleteItem(this)"><i class="icon icon-close"></i></button>
</td>
</tr>
<tr class="line<?php echo $group->group;?>">
<td>
<div class='input-group'>
<?php $disabled = $group->projects == 'all' ? "disabled='disabled'" : '';?>
<span class='input-group-addon addon-align'> <?php echo $lang->group->manageProject;?></span>
<?php echo html::select("project[$group->group][]", $projects, $group->projects == 'all' ? '' : $group->projects, "class='form-control picker-select' multiple $disabled");?>
</div>
</td>
<td>
<?php echo html::checkbox("projectAll[$group->group]", array(1 => ''), $group->projects == 'all' ? 1 : '', "onchange=toggleDisabled(this);");?>
</td>
</tr>
<tr class="line<?php echo $group->group;?>">
<td>
<div class='input-group'>
<?php $disabled = $group->products == 'all' ? "disabled='disabled'" : '';?>
<span class='input-group-addon addon-align'> <?php echo $lang->group->manageProduct;?></span>
<?php echo html::select("product[$group->group][]", $products, $group->products == 'all' ? '' : $group->products, "class='form-control picker-select' multiple $disabled");?>
</div>
</td>
<td>
<?php echo html::checkbox("productAll[$group->group]", array(1 => ''), $group->products == 'all' ? 1 : '', "onchange=toggleDisabled(this);");?>
</td>
</tr>
<tr class="line<?php echo $group->group;?>">
<td>
<div class='input-group'>
<?php $disabled = $group->executions == 'all' ? "disabled='disabled'" : '';?>
<span class='input-group-addon addon-align'> <?php echo $lang->group->manageExecution;?></span>
<?php echo html::select("execution[$group->group][]", $executions, $group->executions == 'all' ? '' : $group->executions, "class='form-control picker-select' multiple $disabled");?>
</div>
</td>
<td>
<?php echo html::checkbox("executionAll[$group->group]", array(1 => ''), $group->executions == 'all' ? 1 : '', "onchange=toggleDisabled(this);");?>
</td>
</tr>
<?php endforeach;?>
<?php else:?>
<tr class='line1'>
@@ -72,7 +100,7 @@
</div>
</td>
<td>
<?php echo html::checkbox('programAll[1]', array(1 => ''));?>
<?php echo html::checkbox('programAll[1]', array(1 => ''), '', "onchange=toggleDisabled(this);");?>
</td>
<td rowspan='4'>
<button type="button" class="btn btn-link btn-icon btn-add" onclick="addItem(this)"><i class="icon icon-plus"></i></button>
@@ -87,7 +115,7 @@
</div>
</td>
<td>
<?php echo html::checkbox('projectAll[1]', array(1 => ''));?>
<?php echo html::checkbox('projectAll[1]', array(1 => ''), '', "onchange=toggleDisabled(this);");?>
</td>
</tr>
<tr class='line1'>
@@ -98,7 +126,7 @@
</div>
</td>
<td>
<?php echo html::checkbox('productAll[1]', array(1 => ''));?>
<?php echo html::checkbox('productAll[1]', array(1 => ''), '', "onchange=toggleDisabled(this);");?>
</td>
</tr>
<tr class='line1'>
@@ -109,7 +137,7 @@
</div>
</td>
<td>
<?php echo html::checkbox('executionAll[1]', array(1 => ''));?>
<?php echo html::checkbox('executionAll[1]', array(1 => ''), '', "onchange=toggleDisabled(this);");?>
</td>
</tr>
<?php endif;?>
+83 -39
View File
@@ -1072,11 +1072,20 @@ class userModel extends model
}
/* Get can manage projects by user. */
$canManageProjects = array();
$canManageProjects = '';
$canManagePrograms = '';
$canManageProducts = '';
$canManageExecutions = '';
if(!defined('IN_UPGRADE'))
{
$projectAdminGroupID = $this->dao->select('id')->from(TABLE_GROUP)->where('role')->eq('projectAdmin')->fetch('id');
$canManageProjects = $this->dao->select('project')->from(TABLE_USERGROUP)->where('`group`')->eq($projectAdminGroupID)->andWhere('account')->eq($account)->fetch('project');
$canManageObjects = $this->dao->select('programs,projects,products,executions')->from(TABLE_PROJECTADMIN)->where('account')->eq($account)->fetchAll();
foreach($canManageObjects as $object)
{
$canManageProjects .= $object->projects . ',';
$canManageProducts .= $object->products . ',';
$canManagePrograms .= $object->programs . ',';
$canManageExecutions .= $object->executions . ',';
}
}
/* Set basic priv when no any priv. */
@@ -1085,7 +1094,7 @@ class userModel extends model
$rights['index']['index'] = 1;
$rights['my']['index'] = 1;
}
return array('rights' => $rights, 'acls' => $acls, 'projects' => $canManageProjects);
return array('rights' => $rights, 'acls' => $acls, 'projects' => $canManageProjects, 'programs' => $canManagePrograms, 'products' => $canManageProducts, 'executions' => $canManageExecutions);
}
/**
@@ -1741,15 +1750,15 @@ class userModel extends model
{
foreach($projectAdmin as $key => $value)
{
$manageObjects['list'][$key] = isset($manageObjects['list'][$key]) ? $manageObjects['list'][$key] : '';
$manageObjects[$key]['list'] = isset($manageObjects[$key]['list']) ? $manageObjects[$key]['list'] : '';
if($value == 'all')
{
$manageObjects['isAdmin'][$key] = 1;
$manageObjects[$key]['isAdmin'] = 1;
}
else
{
$manageObjects['list'][$key] .= $value . ',';
$manageObjects[$key]['list'] .= $value . ',';
}
}
}
@@ -1812,14 +1821,14 @@ class userModel extends model
else
{
/* Process program userview. */
if(!empty($manageObjects['isAdmin']['programs']))
if(!empty($manageObjects['programs']['isAdmin']))
{
$userView->programs = join(',', array_keys($allPrograms));
}
else
{
$programs = array();
$managePrograms = isset($manageObjects['list']['programs']) ? $manageObjects['list']['programs'] : '';
$managePrograms = isset($manageObjects['programs']['list']) ? $manageObjects['programs']['list'] : '';
foreach($allPrograms as $id => $program)
{
$programStakeholders = zget($stakeholders, $id, array());
@@ -1831,14 +1840,14 @@ class userModel extends model
}
/* Process product userview. */
if(!empty($manageObjects['isAdmin']['products']))
if(!empty($manageObjects['products']['isAdmin']))
{
$userView->products = join(',', array_keys($allProducts));
}
else
{
$products = array();
$manageProducts = isset($manageObjects['list']['products']) ? $manageObjects['list']['products'] : '';
$manageProducts = isset($manageObjects['products']['list']) ? $manageObjects['products']['list'] : '';
foreach($allProducts as $id => $product)
{
if($this->checkProductPriv($product, $account, $groups, zget($productTeams, $product->id, array()), zget($productStakeholders, $product->id, array()), zget($productWhiteList, $product->id, array()))) $products[$id] = $id;
@@ -1848,14 +1857,14 @@ class userModel extends model
}
/* Process project userview. */
if(!empty($manageObjects['isAdmin']['projects']))
if(!empty($manageObjects['projects']['isAdmin']))
{
$userView->projects = join(',', array_keys($allProjects));
}
else
{
$projects = array();
$manageProjects = isset($manageObjects['list']['projects']) ? $manageObjects['list']['projects'] : '';
$manageProjects = isset($manageObjects['projects']['list']) ? $manageObjects['projects']['list'] : '';
foreach($allProjects as $id => $project)
{
$projectTeams = zget($teams, $id, array());
@@ -1868,14 +1877,14 @@ class userModel extends model
}
/* Process sprint userview. */
if(!empty($manageObjects['isAdmin']['executions']))
if(!empty($manageObjects['executions']['isAdmin']))
{
$userView->sprints = join(',', array_keys($allSprints));
}
else
{
$sprints = array();
$manageExecutions = isset($manageObjects['list']['executions']) ? $manageObjects['list']['executions'] : '';
$manageExecutions = isset($manageObjects['executions']['list']) ? $manageObjects['executions']['list'] : '';
foreach($allSprints as $id => $sprint)
{
$sprintTeams = zget($teams, $id, array());
@@ -2104,6 +2113,9 @@ class userModel extends model
/* Get all parent program and subprogram relation. */
$parentPMGroup = $this->loadModel('program')->getParentPM($programIdList);
/* Get programs's admins. */
$programAdmins = $this->loadModel('group')->getAdmins($programIdList, 'programs');
$whiteListGroup = array();
$stmt = $this->dao->select('objectID,account')->from(TABLE_ACL)
->where('objectType')->eq('program')
@@ -2121,6 +2133,7 @@ class userModel extends model
{
$stakeholders = zget($stakeholderGroup, $program->id, array());
$whiteList = zget($whiteListGroup, $program->id, array());
$admins = zget($programAdmins, $program->id, array());
if($program->acl == 'program')
{
$parentIds = explode(',', $program->path);
@@ -2130,7 +2143,7 @@ class userModel extends model
$stakeholders += zget($parentPMGroup, $parentId, array());
}
}
$authedUsers += $this->getProgramAuthedUsers($program, $stakeholders, $whiteList);
$authedUsers += $this->getProgramAuthedUsers($program, $stakeholders, $whiteList, $admins);
}
}
@@ -2149,13 +2162,14 @@ class userModel extends model
{
$stakeholders = zget($stakeholderGroup, $program->id, array());
$whiteList = zget($whiteListGroup, $program->id, array());
$admins = zget($programAdmins, $program->id, array());
if($program->acl == 'program')
{
$stakeholders += zget($parentStakeholderGroup, $program->id, array());
$stakeholders += zget($parentPMGroup, $program->id, array());
}
$hasPriv = $this->checkProgramPriv($program, $account, $stakeholders, $whiteList);
$hasPriv = $this->checkProgramPriv($program, $account, $stakeholders, $whiteList, $admins);
if($hasPriv and strpos(",{$view},", ",{$programID},") === false) $view .= ",{$programID}";
if(!$hasPriv and strpos(",{$view},", ",{$programID},") !== false) $view = trim(str_replace(",{$programID},", ',', ",{$view},"), ',');
}
@@ -2201,6 +2215,9 @@ class userModel extends model
/* Get self stakeholders. */
$stakeholderGroup = $this->loadModel('stakeholder')->getStakeholderGroup($projectIdList);
/* Get projects's admins. */
$projectAdmins = $this->loadModel('group')->getAdmins($projectIdList, 'projects');
/* Get all parent program and subprogram relation. */
$parentStakeholderGroup = $this->stakeholder->getParentStakeholderGroup($projectIdList);
@@ -2214,9 +2231,10 @@ class userModel extends model
$stakeholders = zget($stakeholderGroup, $project->id, array());
$teams = zget($teamGroups, $project->id, array());
$whiteList = zget($whiteListGroup, $project->id, array());
$admins = zget($projectAdmins, $project->id, array());
if($project->acl == 'program') $stakeholders += zget($parentStakeholderGroup, $project->id, array());
$authedUsers += $this->getProjectAuthedUsers($project, $stakeholders, $teams, $whiteList);
$authedUsers += $this->getProjectAuthedUsers($project, $stakeholders, $teams, $whiteList, $admins);
}
}
@@ -2236,9 +2254,10 @@ class userModel extends model
$stakeholders = zget($stakeholderGroup, $project->id, array());
$teams = zget($teamGroups, $project->id, array());
$whiteList = zget($whiteListGroup, $project->id, array());
$admins = zget($projectAdmins, $project->id, array());
if($project->acl == 'program') $stakeholders += zget($parentStakeholderGroup, $project->id, array());
$hasPriv = $this->checkProjectPriv($project, $account, $stakeholders, $teams, $whiteList);
$hasPriv = $this->checkProjectPriv($project, $account, $stakeholders, $teams, $whiteList, $admins);
if($hasPriv and strpos(",{$view},", ",{$projectID},") === false) $view .= ",{$projectID}";
if(!$hasPriv and strpos(",{$view},", ",{$projectID},") !== false) $view = trim(str_replace(",{$projectID},", ',', ",{$view},"), ',');
}
@@ -2279,6 +2298,9 @@ class userModel extends model
while($whiteList = $stmt->fetch()) $whiteListGroup[$whiteList->objectID][$whiteList->account] = $whiteList->account;
/* Get products' admins. */
$productAdmins = $this->loadModel('group')->getAdmins($productIdList, 'products');
/* Get product view list. */
$viewList = array();
if(empty($users))
@@ -2288,7 +2310,8 @@ class userModel extends model
$teams = zget($productTeams, $productID, array());
$stakeholders = zget($productStakeholders, $productID, array());
$whiteList = zget($whiteListGroup, $productID, array());
$viewList += $this->getProductViewListUsers($product, $teams, $stakeholders, $whiteList);
$admins = zget($productAdmins, $productID, array());
$viewList += $this->getProductViewListUsers($product, $teams, $stakeholders, $whiteList, $admins);
}
$users = $viewList;
@@ -2306,8 +2329,9 @@ class userModel extends model
$members = zget($productTeams, $productID, array());
$stakeholders = zget($productStakeholders, $productID, array());
$whiteList = zget($whiteListGroup, $productID, array());
$admins = zget($productAdmins, $productID, array());
$hasPriv = $this->checkProductPriv($product, $account, zget($userGroups, $account, ''), $members, $stakeholders, $whiteList);
$hasPriv = $this->checkProductPriv($product, $account, zget($userGroups, $account, ''), $members, $stakeholders, $whiteList, $admins);
if($hasPriv and strpos(",{$view},", ",{$productID},") === false) $view .= ",{$productID}";
if(!$hasPriv and strpos(",{$view},", ",{$productID},") !== false) $view = trim(str_replace(",{$productID},", ',', ",{$view},"), ',');
}
@@ -2359,6 +2383,9 @@ class userModel extends model
/* Get parent project stakeholders. */
$stakeholderGroup = $this->loadModel('stakeholder')->getStakeholderGroup($projectIdList);
/* Get executions' admins. */
$executionAdmins = $this->loadModel('group')->getAdmins($sprintIdList, 'executions');
/* Get auth users. */
$authedUsers = array();
if(!empty($users)) $authedUsers = $users;
@@ -2370,8 +2397,9 @@ class userModel extends model
$teams = zget($teamGroups, $sprint->id, array());
$parentTeams = zget($teamGroups, $sprint->project, array());
$whiteList = zget($whiteListGroup, $sprint->project, array());
$admins = zget($executionAdmins, $sprint->id, array());
$authedUsers += $this->getSprintAuthedUsers($sprint, $stakeholders, array_merge($teams, $parentTeams), $whiteList);
$authedUsers += $this->getSprintAuthedUsers($sprint, $stakeholders, array_merge($teams, $parentTeams), $whiteList, $admins);
/* If you have parent stage view permissions, you have child stage permissions. */
if($sprint->type == 'stage' && $sprint->grade == 2)
@@ -2398,8 +2426,9 @@ class userModel extends model
$stakeholders = zget($stakeholderGroup, $sprint->project, array());
$teams = zget($teamGroups, $sprint->id, array());
$whiteList = zget($whiteListGroup, $sprint->id, array());
$admins = zget($executionAdmins, $sprint->id, array());
$hasPriv = $this->checkSprintPriv($sprint, $account, $stakeholders, $teams, $whiteList);
$hasPriv = $this->checkSprintPriv($sprint, $account, $stakeholders, $teams, $whiteList, $admins);
if($hasPriv and strpos(",{$view},", ",{$sprintID},") === false) $view .= ",{$sprintID}";
if(!$hasPriv and strpos(",{$view},", ",{$sprintID},") !== false) $view = trim(str_replace(",{$sprintID},", ',', ",{$view},"), ',');
}
@@ -2414,10 +2443,11 @@ class userModel extends model
* @param string $account
* @param array $stakeholders
* @param array $whiteList
* @param array $admins
* @access public
* @return bool
*/
public function checkProgramPriv($program, $account, $stakeholders, $whiteList)
public function checkProgramPriv($program, $account, $stakeholders, $whiteList, $admins)
{
if(strpos($this->app->company->admins, ',' . $account . ',') !== false) return true;
@@ -2434,7 +2464,8 @@ class userModel extends model
if($program->acl == 'open') return true;
if(isset($stakeholders[$account])) return true;
if(isset($whiteList[$account])) return true;
if(isset($whiteList[$account])) return true;
if(isset($admins[$account])) return true;
return false;
}
@@ -2447,17 +2478,20 @@ class userModel extends model
* @param string $groups
* @param array $teams
* @param array $whiteList
* @param array $admins
* @access public
* @return bool
*/
public function checkProjectPriv($project, $account, $stakeholders, $teams, $whiteList)
public function checkProjectPriv($project, $account, $stakeholders, $teams, $whiteList, $admins)
{
if(strpos($this->app->company->admins, ',' . $account . ',') !== false) return true;
if($project->PO == $account OR $project->QD == $account OR $project->RD == $account OR $project->PM == $account) return true;
if($project->acl == 'open') return true;
if(isset($teams[$account])) return true;
if($project->acl == 'open') return true;
if(isset($teams[$account])) return true;
if(isset($stakeholders[$account])) return true;
if(isset($whiteList[$account])) return true;
if(isset($whiteList[$account])) return true;
if(isset($admins[$account])) return true;
/* Parent program managers. */
if($project->type == 'project' && $project->parent != 0 && $project->acl == 'program')
@@ -2486,12 +2520,13 @@ class userModel extends model
* @param string $groups
* @param array $teams
* @param array $whiteList
* @param array $admins
* @access public
* @return bool
*/
public function checkSprintPriv($sprint, $account, $stakeholders, $teams, $whiteList)
public function checkSprintPriv($sprint, $account, $stakeholders, $teams, $whiteList, $admins)
{
return $this->checkProjectPriv($sprint, $account, $stakeholders, $teams, $whiteList);
return $this->checkProjectPriv($sprint, $account, $stakeholders, $teams, $whiteList, $admins);
}
/**
@@ -2503,18 +2538,20 @@ class userModel extends model
* @param array $linkedProjects
* @param array $teams
* @param array $whiteList
* @param array $admins
* @access public
* @return bool
*/
public function checkProductPriv($product, $account, $groups, $teams, $stakeholders, $whiteList)
public function checkProductPriv($product, $account, $groups, $teams, $stakeholders, $whiteList, $admins)
{
if(strpos($this->app->company->admins, ',' . $account . ',') !== false) return true;
if($product->PO == $account OR $product->QD == $account OR $product->RD == $account OR $product->createdBy == $account OR (isset($product->feedback) && $product->feedback == $account)) return true;
if($product->acl == 'open') return true;
if(isset($teams[$account])) return true;
if(isset($teams[$account])) return true;
if(isset($stakeholders[$account])) return true;
if(isset($whiteList[$account])) return true;
if(isset($whiteList[$account])) return true;
if(isset($admins[$account])) return true;
return false;
}
@@ -2526,10 +2563,11 @@ class userModel extends model
* @param array $stakeholders
* @param array $teams
* @param array $whiteList
* @param array $admins
* @access public
* @return array
*/
public function getProjectAuthedUsers($project, $stakeholders, $teams, $whiteList)
public function getProjectAuthedUsers($project, $stakeholders, $teams, $whiteList, $admins = array())
{
$users = array();
@@ -2544,6 +2582,7 @@ class userModel extends model
$users += $stakeholders ? $stakeholders : array();
$users += $teams ? $teams : array();
$users += $whiteList ? $whiteList : array();
$users += $admins ? $admins : array();
/* Parent program managers. */
if($project->type == 'project' && $project->parent != 0 && $project->acl == 'program')
@@ -2574,10 +2613,11 @@ class userModel extends model
* @param object $program
* @param array $stakeholders
* @param array $whiteList
* @param array $admins
* @access public
* @return array
*/
public function getProgramAuthedUsers($program, $stakeholders, $whiteList)
public function getProgramAuthedUsers($program, $stakeholders, $whiteList, $admins)
{
$users = array();
@@ -2588,6 +2628,7 @@ class userModel extends model
$users += $stakeholders ? $stakeholders : array();
$users += $whiteList ? $whiteList : array();
$users += $admins ? $admins : array();
return $users;
}
@@ -2599,12 +2640,13 @@ class userModel extends model
* @param array $stakeholders
* @param array $teams
* @param array $whiteList
* @param array $admins
* @access public
* @return array
*/
public function getSprintAuthedUsers($sprint, $stakeholders, $teams, $whiteList)
public function getSprintAuthedUsers($sprint, $stakeholders, $teams, $whiteList, $admins)
{
return $this->getProjectAuthedUsers($sprint, $stakeholders, $teams, $whiteList);
return $this->getProjectAuthedUsers($sprint, $stakeholders, $teams, $whiteList, $admins);
}
/**
@@ -2614,10 +2656,11 @@ class userModel extends model
* @param array $linkedProjects
* @param array $teams
* @param array $whiteList
* @param array $admins
* @access public
* @return array
*/
public function getProductViewListUsers($product, $teams, $stakeholders, $whiteList)
public function getProductViewListUsers($product, $teams, $stakeholders, $whiteList, $admins)
{
$users = array();
@@ -2647,6 +2690,7 @@ class userModel extends model
$users += $teams ? $teams : array();
$users += $stakeholders ? $stakeholders : array();
$users += $whiteList ? $whiteList : array();
$users += $admins ? $admins : array();
return $users;
}