* Fix bug #2812.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user