* Finish task #46526.
This commit is contained in:
+10
-1
@@ -906,7 +906,7 @@ class docModel extends model
|
||||
if(isset($object->addedBy) and $object->addedBy == $this->app->user->account) return true;
|
||||
if(isset($object->users) and strpos(",{$object->users},", $account) !== false) return true;
|
||||
|
||||
if($object->project and $object->main)
|
||||
if($object->project and $object->acl == 'private')
|
||||
{
|
||||
$project = $this->loadModel('project')->getById($object->project);
|
||||
$projectTeams = $this->loadModel('user')->getTeamMemberPairs($object->project);
|
||||
@@ -1318,6 +1318,15 @@ class docModel extends model
|
||||
/* Sort project. */
|
||||
$orderedProjects = array();
|
||||
|
||||
/* Project permissions for DocLib whitelist */
|
||||
if($this->app->tab == 'doc')
|
||||
{
|
||||
$myObjects = $this->dao->select('t2.id, t2.name')->from(TABLE_DOCLIB)->alias('t1')
|
||||
->leftjoin(TABLE_PROJECT)->alias('t2')->on('t1.project=t2.id')
|
||||
->where("CONCAT(',', t1.users, ',')")->like("%,{$this->app->user->account},%")
|
||||
->fetchPairs();
|
||||
}
|
||||
|
||||
$objects = $this->dao->select('*')->from(TABLE_PROJECT)
|
||||
->where('type')->eq('project')
|
||||
->andWhere('deleted')->eq(0)
|
||||
|
||||
@@ -874,9 +874,25 @@ class projectModel extends model
|
||||
|
||||
/* Create doc lib. */
|
||||
$this->app->loadLang('doc');
|
||||
$authorizedUsers = array();
|
||||
|
||||
$authorizedUsers = $project->whitelist . ',' . $project->PM . ',' . $project->openedBy . ',';
|
||||
$authorizedUsers = array_unique(explode(',', trim($authorizedUsers, ',')));
|
||||
if($project->parent and $project->acl == 'program')
|
||||
{
|
||||
$stakeHolders = $this->loadModel('stakeholder')->getStakeHolderPairs($project->parent);
|
||||
foreach($stakeHolders as $stakeHolder) $authorizedUsers[$stakeHolder] = $stakeHolder;
|
||||
|
||||
foreach(explode(',', $project->whitelist) as $white)
|
||||
{
|
||||
if(empty($white)) continue;
|
||||
$authorizedUsers[$white] = $white;
|
||||
}
|
||||
|
||||
$authorizedUsers[$project->PM] = $project->PM;
|
||||
$authorizedUsers[$project->openedBy] = $project->openedBy;
|
||||
$authorizedUsers[$program->PM] = $program->PM;
|
||||
$authorizedUsers[$program->openedBy] = $program->openedBy;
|
||||
|
||||
}
|
||||
|
||||
$lib = new stdclass();
|
||||
$lib->project = $projectID;
|
||||
@@ -884,7 +900,7 @@ class projectModel extends model
|
||||
$lib->type = 'project';
|
||||
$lib->main = '1';
|
||||
$lib->acl = $project->acl != 'program' ? $project->acl : 'custom';
|
||||
if($project->acl == 'private') $lib->users = ',' . implode(',', $authorizedUsers) . ',';
|
||||
$lib->users = ',' . implode(',', $authorizedUsers) . ',';
|
||||
$this->dao->insert(TABLE_DOCLIB)->data($lib)->exec();
|
||||
|
||||
$this->updateProducts($projectID);
|
||||
|
||||
Reference in New Issue
Block a user