* finish task #2667,2669.

This commit is contained in:
wangyidong
2016-10-13 17:35:02 +08:00
parent 4bcc1a7980
commit 8feda80cd9
21 changed files with 722 additions and 63 deletions
+42 -2
View File
@@ -268,6 +268,18 @@ class projectModel extends model
$this->dao->insert(TABLE_TEAM)->data($member)->exec();
}
/* Create doc lib. */
$lib = new stdclass();
$lib->project = $projectID;
$lib->name = $project->name;
if($project->acl == 'custom') $lib->groups = $project->whitelist;
if($project->acl == 'private')
{
$teams = $this->dao->select('account')->from(TABLE_TEAM)->where('project')->eq($projectID)->fetchPairs('account', 'account');
$lib->users = join(',', $teams);
}
$this->dao->insert(TABLE_DOCLIB)->data($lib)->exec();
return $projectID;
}
}
@@ -322,7 +334,20 @@ class projectModel extends model
}
}
}
if(!dao::isError()) return common::createChanges($oldProject, $project);
if(!dao::isError())
{
if($project->acl != $oldProject->acl)
{
if($project->acl == 'open') $this->dao->update(TABLE_DOCLIB)->set('groups')->eq('')->set('users')->eq('')->where('project')->eq($projectID)->exec();
if($project->acl == 'custom') $this->dao->update(TABLE_DOCLIB)->set('groups')->eq($project->whitelist)->where('project')->eq($projectID)->exec();
if($project->acl == 'private')
{
$teams = $this->dao->select('account')->from(TABLE_TEAM)->where('project')->eq($projectID)->fetchPairs('account', 'account');
$this->dao->update(TABLE_DOCLIB)->set('users')->eq(join(',', $teams))->set('groups')->eq('')->where('project')->eq($projectID)->exec();
}
}
return common::createChanges($oldProject, $project);
}
}
/**
@@ -1392,7 +1417,20 @@ class projectModel extends model
$member->join = helper::today();
$this->dao->insert(TABLE_TEAM)->data($member)->exec();
}
}
}
$acl = $this->dao->select('acl')->from(TABLE_PROJECT)->where('project')->eq($projectID)->fetch('acl');
if($acl == 'private')
{
$docLibs = $this->dao->select('id,users')->from(TABLE_DOCLIB)->where('project')->eq($projectID)->fetchAll('id');
foreach($docLibs as $lib)
{
if(empty($lib->users)) continue;
$docUsers = $accounts + explode(',', $lib->users);
$docUsers = array_unique($docUsers);
$this->dao->update(TABLE_DOCLIB)->set('users')->eq(join(',', $docUsers))->where('id')->eq($lib->id)->exec();
}
}
}
/**
@@ -1706,6 +1744,8 @@ class projectModel extends model
{
$link = helper::createLink($module, $method, "projectID=%s");
}
if($module == 'doc') $link = helper::createLink($module, $method, "type=project&libID=%s");
return $link;
}