diff --git a/module/product/model.php b/module/product/model.php index 2206bcbb79..a5aadeb506 100644 --- a/module/product/model.php +++ b/module/product/model.php @@ -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); } } diff --git a/module/project/model.php b/module/project/model.php index 204b68160d..5274449d5a 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -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); } } diff --git a/module/user/model.php b/module/user/model.php index d4a34da62c..2b4e4ea7b6 100644 --- a/module/user/model.php +++ b/module/user/model.php @@ -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(); + } } /**