This commit is contained in:
guanxiying
2019-11-19 15:13:18 +08:00
parent a9a6068ec7
commit 39be2ba90e
3 changed files with 28 additions and 7 deletions
+3 -2
View File
@@ -351,6 +351,7 @@ class productModel extends model
->stripTags($this->config->product->editor->create['id'], $this->config->allowedTags)
->remove('uid')
->get();
$product = $this->loadModel('file')->processImgURL($product, $this->config->product->editor->create['id'], $this->post->uid);
$this->dao->insert(TABLE_PRODUCT)->data($product)->autoCheck()
->batchCheck($this->config->product->create->requiredFields, 'notempty')
@@ -372,7 +373,7 @@ class productModel extends model
$lib->main = '1';
$lib->acl = 'default';
$this->dao->insert(TABLE_DOCLIB)->data($lib)->exec();
$this->loadModel('user')->updateUserView($productID, 'product');
if($product->acl != 'open') $this->loadModel('user')->updateUserView($productID, 'product');
return $productID;
}
@@ -405,7 +406,7 @@ class productModel extends model
if(!dao::isError())
{
$this->file->updateObjectID($this->post->uid, $productID, 'product');
if($product->acl != 'open' or $product->acl != $oldProduct->acl or $product->whitelist != $oldProduct->whitelist) $this->loadModel('user')->updateUserView($productID, 'product');
if($product->acl != 'open' and ($product->acl != $oldProduct->acl or $product->whitelist != $oldProduct->whitelist)) $this->loadModel('user')->updateUserView($productID, 'product');
return common::createChanges($oldProduct, $product);
}
}
+2 -2
View File
@@ -342,7 +342,7 @@ class projectModel extends model
$lib->acl = 'default';
$this->dao->insert(TABLE_DOCLIB)->data($lib)->exec();
$this->loadModel('user')->updateUserView($projectID, 'project');
if($project->acl != 'open') $this->loadModel('user')->updateUserView($projectID, 'project');
if(isset($_POST['products']))
{
foreach($this->post->products as $productID)
@@ -413,7 +413,7 @@ class projectModel extends model
if(!dao::isError())
{
$this->file->updateObjectID($this->post->uid, $projectID, 'project');
if($project->acl != 'open' or $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, 'project');
return common::createChanges($oldProject, $project);
}
}
+23 -3
View File
@@ -1313,6 +1313,7 @@ class userModel extends model
}
$this->dao->replace(TABLE_USERVIEW)->data($userView)->exec();
}
return $userView;
}
@@ -1355,6 +1356,16 @@ class userModel extends model
$userView->products = trim($userView->products, ',');
$userView->projects = trim($userView->projects, ',');
$openedProducts = $this->dao->select('id')->from(TABLE_PRODUCT)->where('acl')->eq('open')->fetchAll('id');
$openedProjects = $this->dao->select('id')->from(TABLE_PROJECT)->where('acl')->eq('open')->fetchAll('id');
$openedProducts = join(',', array_keys($openedProducts));
$openedProjects = join(',', array_keys($openedProjects));
$userView->projects = rtrim($userView->projects, ',') . ',' . $openedProjects;
$userView->products = rtrim($userView->products, ',') . ',' . $openedProducts;
return $userView;
}
@@ -1374,7 +1385,9 @@ class userModel extends model
if($objectType == 'project') $table = TABLE_PROJECT;
if(empty($table)) return false;
$object = $this->dao->select('*')->from($table)->where('id')->eq($objectID)->fetch();
$object = $this->dao->select('*')->from($table)->where('id')->eq($objectID)->fetch();
if($object->acl == 'open') return true;
$allGroups = $this->dao->select('account,`group`')->from(TABLE_USERGROUP)->fetchAll();
$userGroups = array();
foreach($allGroups as $group)
@@ -1401,6 +1414,8 @@ class userModel extends model
$stmt = $this->dao->select("account,{$field}")->from(TABLE_USERVIEW)
->beginIF($users)->where('account')->in($users)->fi()
->query();
$userObjects = array();
while($userView = $stmt->fetch())
{
$account = $userView->account;
@@ -1409,16 +1424,21 @@ class userModel extends model
$hasPriv = $this->checkProductPriv($object, $account, zget($userGroups, $account, ''), $linkedProjects, $teams);
if($hasPriv and strpos(",{$userView->products},", ",{$objectID},") === false) $userView->products .= ",{$objectID}";
if(!$hasPriv and strpos(",{$userView->products},", ",{$objectID},") !== false) $userView->products = trim(str_replace(",{$objectID},", ',', ",{$userView->products},"), ',');
$this->dao->update(TABLE_USERVIEW)->set('products')->eq($userView->products)->where('account')->eq($account)->exec();
$userObjects[$account]['products'] = $userView->products;
}
elseif($objectType == 'project')
{
$hasPriv = $this->checkProjectPriv($object, $account, zget($userGroups, $account, ''), zget($teams, $objectID));
if($hasPriv and strpos(",{$userView->projects},", ",{$objectID},") === false) $userView->projects .= ",{$objectID}";
if(!$hasPriv and strpos(",{$userView->projects},", ",{$objectID},") !== false) $userView->projects = trim(str_replace(",{$objectID},", ',', ",{$userView->projects},"), ',');
$this->dao->update(TABLE_USERVIEW)->set('projects')->eq($userView->projects)->where('account')->eq($account)->exec();
$userObjects[$account]['projects'] = $userView->projects;
}
}
foreach($userObjects as $account => $data)
{
$this->dao->update(TABLE_USERVIEW)->data($data)->where('account')->eq($account)->exec();
}
}
/**