| program->PGMParent;?> | -parent, "class='form-control chosen'");?> | +parent, "class='form-control chosen' onchange=setAclList(this.value)");?> | ||||
|---|---|---|---|---|---|---|
| project->acl;?> | -program->PGMAclList, $program->acl, "onclick='setWhite(this.value);'", 'block'));?> | -|||||
| project->whitelist;?> | -whitelist, '', '', 'inline');?> | +acl, "onclick='setWhite(this.value);'", 'block'));?> | ||||
|
@@ -86,4 +83,10 @@
+
+ program->PGMAclList, $program->acl, '', 'block'));?>
+
+
+ program->subPGMAclList, $program->acl, '', 'block'));?>
+
diff --git a/module/program/view/prjedit.html.php b/module/program/view/prjedit.html.php
index a0370c2d2a..5b64673916 100644
--- a/module/program/view/prjedit.html.php
+++ b/module/program/view/prjedit.html.php
@@ -14,6 +14,7 @@
project->weekend);?>
+parent ? $lang->program->PGMPRJAclList : $lang->program->PRJAclList;?>
@@ -28,7 +29,7 @@
| ||||||
| program->PGMParent;?> | -parent, "class='form-control chosen'");?> | + | parent, "class='form-control chosen' onchange='setAclList(this.value)");?> | |||
| program->PRJName;?> | @@ -115,11 +116,7 @@||||||
| project->acl;?> | -program->PRJAclList, $project->acl, "onclick='setWhite(this.value);'", 'block'));?> | -|||||
| project->whitelist;?> | -whitelist, '', '', 'inline');?> | +acl, "onclick='setWhite(this.value);'", 'block'));?> | ||||
|
@@ -134,4 +131,10 @@
+
+ program->PRJAclList, $project->acl, '', 'block'));?>
+
+
+ program->PGMPRJAclList, $project->acl, '', 'block'));?>
+
diff --git a/module/programplan/model.php b/module/programplan/model.php
index d68f999e98..ba4cb7a573 100644
--- a/module/programplan/model.php
+++ b/module/programplan/model.php
@@ -74,6 +74,7 @@ class programplanModel extends model
->beginIF($browseType == 'all')->andWhere('project')->eq($programID)->fi()
->beginIF($browseType == 'parent')->andWhere('parent')->eq($programID)->fi()
->beginIF($browseType == 'children')->andWhere('parent')->eq($planID)->fi()
+ ->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->stages)->fi()
->beginIF($productID)->andWhere('id')->in($projects)->fi()
->andWhere('deleted')->eq(0)
->orderBy($orderBy)
diff --git a/module/project/model.php b/module/project/model.php
index 44d8e17515..45fbebb6ba 100644
--- a/module/project/model.php
+++ b/module/project/model.php
@@ -29,7 +29,7 @@ class projectModel extends model
/* If is admin, return true. */
if($this->app->user->admin) return true;
- return (strpos(",{$this->app->user->view->projects},", ",{$projectID},") !== false);
+ return (strpos(",{$this->app->user->view->sprints},", ",{$projectID},") !== false);
}
/**
@@ -291,7 +291,7 @@ class projectModel extends model
if(!isset($projects[$this->session->project]))
{
$this->session->set('project', key($projects));
- if($projectID && strpos(",{$this->app->user->view->projects},", ",{$this->session->project},") === false) $this->accessDenied();
+ if($projectID && strpos(",{$this->app->user->view->sprints},", ",{$this->session->project},") === false) $this->accessDenied();
}
return $this->session->project;
}
@@ -464,7 +464,7 @@ class projectModel extends model
if(!dao::isError())
{
$this->file->updateObjectID($this->post->uid, $projectID, 'project');
- if($project->acl != 'open' and ($project->acl != $oldProject->acl or $project->whitelist != $oldProject->whitelist)) $this->loadModel('user')->updateUserView($projectID, 'project');
+ if($project->acl != 'open' and ($project->acl != $oldProject->acl or $project->whitelist != $oldProject->whitelist)) $this->loadModel('user')->updateUserView($projectID, 'sprint');
return common::createChanges($oldProject, $project);
}
}
@@ -730,7 +730,7 @@ class projectModel extends model
->where('deleted')->eq(0)
->beginIF($programID)->andWhere('parent')->eq($programID)->fi()
->beginIF(strpos($mode, 'withdelete') === false)->andWhere('deleted')->eq(0)->fi()
- ->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->projects)->fi()
+ ->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->sprints)->fi()
->orderBy($orderBy)
->fetchAll();
$pairs = array();
@@ -788,7 +788,7 @@ class projectModel extends model
->beginIF($status == 'undone')->andWhere('t2.status')->notIN('done,closed')->fi()
->beginIF($branch)->andWhere('t1.branch')->eq($branch)->fi()
->beginIF($status != 'all' and $status != 'undone')->andWhere('status')->in($status)->fi()
- ->beginIF(!$this->app->user->admin)->andWhere('t2.id')->in($this->app->user->view->projects)->fi()
+ ->beginIF(!$this->app->user->admin)->andWhere('t2.id')->in($this->app->user->view->sprints)->fi()
->orderBy('order_desc')
->beginIF($limit)->limit($limit)->fi()
->fetchAll('id');
@@ -800,7 +800,7 @@ class projectModel extends model
->andWhere('type')->in('sprint,stage')
->beginIF($status == 'undone')->andWhere('status')->notIN('done,closed')->fi()
->beginIF($status != 'all' and $status != 'undone')->andWhere('status')->in($status)->fi()
- ->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->projects)->fi()
+ ->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->sprints)->fi()
->beginIF($programID)->andWhere('parent')->eq($programID)->fi()
->orderBy('order_desc')
->beginIF($limit)->limit($limit)->fi()
@@ -828,7 +828,7 @@ class projectModel extends model
->where('t1.product')->eq($productID)
->andWhere('t2.deleted')->eq(0)
->beginIF($branch)->andWhere('t1.branch')->eq($branch)->fi()
- ->beginIF(!$this->app->user->admin)->andWhere('t2.id')->in($this->app->user->view->projects)->fi()
+ ->beginIF(!$this->app->user->admin)->andWhere('t2.id')->in($this->app->user->view->sprints)->fi()
->andWhere('t2.openedBy', true)->eq($this->app->user->account)
->orWhere('t3.account')->eq($this->app->user->account)
->markRight(1)
@@ -842,7 +842,7 @@ class projectModel extends model
return $this->dao->select('t1.*, IF(INSTR(" done,closed", t1.status) < 2, 0, 1) AS isDone')->from(TABLE_PROJECT)->alias('t1')
->leftJoin(TABLE_TEAM)->alias('t2')->on('t2.root=t1.id')
->where('t1.deleted')->eq(0)
- ->beginIF(!$this->app->user->admin)->andWhere('t1.id')->in($this->app->user->view->projects)->fi()
+ ->beginIF(!$this->app->user->admin)->andWhere('t1.id')->in($this->app->user->view->sprints)->fi()
->andWhere('t1.openedBy', true)->eq($this->app->user->account)
->orWhere('t2.account')->eq($this->app->user->account)
->markRight(1)
@@ -897,7 +897,7 @@ class projectModel extends model
$list = $this->dao->select('t1.id, t1.name,t1.status, t2.product')->from(TABLE_PROJECT)->alias('t1')
->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.id = t2.project')
->where('t1.deleted')->eq(0)
- ->beginIF(!$this->app->user->admin)->andWhere('t1.id')->in($this->app->user->view->projects)->fi()
+ ->beginIF(!$this->app->user->admin)->andWhere('t1.id')->in($this->app->user->view->sprints)->fi()
->fetchGroup('product');
$noProducts = array();
@@ -1318,7 +1318,7 @@ class projectModel extends model
{
$projects = $this->dao->select('*')->from(TABLE_PROJECT)
->where('id')->in($projectIds)
- ->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->projects)->fi()
+ ->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->sprints)->fi()
->andWhere('deleted')->eq(0)
->orderBy('id desc')
->fetchAll('id');
diff --git a/module/stakeholder/model.php b/module/stakeholder/model.php
index 3dcb4a7857..4497a1f034 100644
--- a/module/stakeholder/model.php
+++ b/module/stakeholder/model.php
@@ -261,7 +261,7 @@ class stakeholderModel extends model
{
$objects = $this->dao->select('id, path, parent')->from(TABLE_PROJECT)->where('id')->in($objectIdList)->andWhere('acl')->ne('open')->fetchAll('id');
- $parents = '';
+ $parents = array();
foreach($objects as $object)
{
if($object->parent == 0) continue;
@@ -279,7 +279,7 @@ class stakeholderModel extends model
$parentStakeholderGroup = array();
foreach($parentStakeholders as $parentStakeholder)
{
- $subPrograms = zget($parentPrograms, $parentStakeholder->objectID, array());
+ $subPrograms = zget($parents, $parentStakeholder->objectID, array());
foreach($subPrograms as $subProgramID) $parentStakeholderGroup[$subProgramID][$parentStakeholder->user] = $parentStakeholder->user;
}
diff --git a/module/user/control.php b/module/user/control.php
index 2db7c7e7d0..0b56498cc2 100644
--- a/module/user/control.php
+++ b/module/user/control.php
@@ -732,7 +732,7 @@ class user extends control
/* Authorize him and save to session. */
$user->rights = $this->user->authorize($user->account);
$user->groups = $this->user->getGroups($user->account);
- $user->view = $this->user->grantUserView($user->account, $user->rights['acls'], $user->rights['programs']);
+ $user->view = $this->user->grantUserView($user->account, $user->rights['acls'], $user->rights['projects']);
$this->session->set('user', $user);
$this->app->user = $this->session->user;
$this->loadModel('action')->create('user', $user->id, 'login');
diff --git a/module/user/model.php b/module/user/model.php
index d40f805542..c671850d33 100644
--- a/module/user/model.php
+++ b/module/user/model.php
@@ -1384,11 +1384,11 @@ class userModel extends model
/* Get stakeholders. */
if($stakeholders === null)
{
- $stmt = $this->dao->select('objectID,account')->from(TABLE_STAKEHOLDER)->query();
- while($stakeholder = $stmt->fetch()) $stakeholders[$stakeholder->objectID][$stakeholder->account] = $stakeholder->account;
+ $stmt = $this->dao->select('objectID,user')->from(TABLE_STAKEHOLDER)->query();
+ while($stakeholder = $stmt->fetch()) $stakeholders[$stakeholder->objectID][$stakeholder->user] = $stakeholder->user;
}
- list($productTeams, $productStakeholders) = $this->getProductStakeholders($allProducts);
+ list($productTeams, $productStakeholders) = $this->getProductMembers($allProducts);
$userView = new stdclass();
$userView->account = $account;
@@ -1412,8 +1412,7 @@ class userModel extends model
$programs = array();
foreach($allPrograms as $id => $program)
{
- $stakeholders = isset($stakeholders[$id]) ? $stakeholders[$id] : array();
- if($this->checkProgramPriv($program, $account, $stakeholders)) $programs[$id] = $id;
+ if($this->checkProgramPriv($program, $account, zget($stakeholders, $id, array()))) $programs[$id] = $id;
}
$userView->programs = join(',', $programs);
@@ -1421,19 +1420,17 @@ class userModel extends model
$products = array();
foreach($allProducts as $id => $product)
{
- $stakeholders = isset($productStakeholders[$product->id]) ? $productStakeholders[$product->id] : array();
- $teams = isset($programTeams[$product->id]) ? $teamGroups[$product->id] : array();
- if($this->checkProductPriv($product, $account, $groups, $teams, $stakeholders)) $products[$id] = $id;
+ if($this->checkProductPriv($product, $account, $groups, zget($productTeams, $product->id, array()), zget($productStakeholders, $product->id, array()))) $products[$id] = $id;
}
- $userView->product = join(',', $products);
+ $userView->products = join(',', $products);
/* Process project userview. */
$projects = array();
foreach($allProjects as $id => $project)
{
- $projectTeams = isset($teams[$id]) ? $teams[$id] : array();
- $stakeholders = isset($stakeholders[$id]) ? $stakeholders[$id] : array();
- if($this->checkProjectPriv($project, $account, $stakeholders, $projectTeams)) $projects[$id] = $id;
+ $projectTeams = zget($teams, $id, array());
+ $projectStakeholders = zget($stakeholders, $id, array());
+ if($this->checkProjectPriv($project, $account, $projectStakeholders, $projectTeams)) $projects[$id] = $id;
}
$userView->projects = join(',', $projects);
@@ -1441,9 +1438,9 @@ class userModel extends model
$sprints = array();
foreach($allSprints as $id => $sprint)
{
- $sprintTeams = isset($teams[$id]) ? $teams[$id] : array();
- $stakeholders = isset($stakeholders[$sprint->project]) ? $stakeholders[$sprint->project] : array();
- if($this->checkSprintPriv($sprint, $account, $stakeholders, $sprintTeams)) $sprints[$id] = $id;
+ $sprintTeams = zget($teams, $id, array());
+ $sprintStakeholders = zget($stakeholders, $sprint->project, array());
+ if($this->checkSprintPriv($sprint, $account, $sprintStakeholders, $sprintTeams)) $sprints[$id] = $id;
}
$userView->projects = join(',', $projects);
@@ -1451,9 +1448,9 @@ class userModel extends model
$stages = array();
foreach($allStages as $id => $stage)
{
- $stageTeams = isset($teams[$id]) ? $teams[$id] : array();
- $stakeholders = isset($stakeholders[$sprint->project]) ? $stakeholders[$sprint->project] : array();
- if($this->checkStagePriv($project, $account, $stakeholders, $stageTeams)) $stages[$id] = $id;
+ $stageTeams = zget($teams, $id, array());
+ $stageStakeholders = zget($stakeholders, $sprint->project, array());
+ if($this->checkStagePriv($project, $account, $stageStakeholders, $stageTeams)) $stages[$id] = $id;
}
$userView->stages = join(',', $stages);
}
@@ -1464,13 +1461,13 @@ class userModel extends model
}
/**
- * Get product teams and stakeholders
+ * Get product teams and stakeholders.
*
* @param array $allProducts
* @access public
* @return array
*/
- public function getProductStakeholders($allProducts)
+ public function getProductMembers($allProducts)
{
/* Get product and project relation. */
$projectProducts = array();
@@ -1723,7 +1720,7 @@ class userModel extends model
*/
public function updateProjectView($projectIdList, $users)
{
- $projects = $this->dao->select('id, PM, PO, QD, RD, openedBy, acl, parent, path')->from(TABLE_PROJECT)->where('id')->in($projectIdList)->andWhere('acl')->ne('open')->fetchAll('id');
+ $projects = $this->dao->select('id, PM, PO, QD, RD, openedBy, acl, parent, path, type')->from(TABLE_PROJECT)->where('id')->in($projectIdList)->andWhere('acl')->ne('open')->fetchAll('id');
if(empty($projects)) return true;
$teamGroups = array();
@@ -1804,7 +1801,7 @@ class userModel extends model
$groupUsers[$group->group][$group->account] = $group->account;
}
- list($productTeams, $productStakeholders) = $this->getProductStakeholders($products);
+ list($productTeams, $productStakeholders) = $this->getProductMembers($products);
/* Get white list.*/
$whiteList = array();
@@ -1853,7 +1850,7 @@ class userModel extends model
*/
public function updateStageView($stageIdList, $users)
{
- $stages = $this->dao->select('id, PM, PO, QD, RD, openedBy, acl, parent, path, grade')->from(TABLE_PROJECT)->where('id')->in($stageIdList)->andWhere('acl')->ne('open')->fetchAll('id');
+ $stages = $this->dao->select('id, PM, PO, QD, RD, openedBy, acl, parent, path, grade, type')->from(TABLE_PROJECT)->where('id')->in($stageIdList)->andWhere('acl')->ne('open')->fetchAll('id');
if(empty($stages)) return true;
$teamGroups = array();
@@ -1924,7 +1921,7 @@ class userModel extends model
*/
public function updateSprintView($sprintIdList, $users)
{
- $sprints = $this->dao->select('id, PM, PO, QD, RD, openedBy, acl, parent, path, grade')->from(TABLE_PROJECT)->where('id')->in($sprintIdList)->andWhere('acl')->ne('open')->fetchAll('id');
+ $sprints = $this->dao->select('id, PM, PO, QD, RD, openedBy, acl, parent, path, grade, type')->from(TABLE_PROJECT)->where('id')->in($sprintIdList)->andWhere('acl')->ne('open')->fetchAll('id');
if(empty($sprints)) return true;
$teamGroups = array();
| ||||||