|
From: <tr...@us...> - 2013-01-03 19:31:26
|
Revision: 10645
http://sourceforge.net/p/xoops/svn/10645
Author: trabis
Date: 2013-01-03 19:31:21 +0000 (Thu, 03 Jan 2013)
Log Message:
-----------
Fixing permissions error in categories.
Passing permissions by reference to save memory.
Modified Paths:
--------------
XoopsModules/publisher/trunk/publisher/archive.php
XoopsModules/publisher/trunk/publisher/class/category.php
XoopsModules/publisher/trunk/publisher/class/form/item.php
XoopsModules/publisher/trunk/publisher/class/item.php
XoopsModules/publisher/trunk/publisher/class/permission.php
XoopsModules/publisher/trunk/publisher/include/functions.php
Modified: XoopsModules/publisher/trunk/publisher/archive.php
===================================================================
--- XoopsModules/publisher/trunk/publisher/archive.php 2013-01-03 16:09:42 UTC (rev 10644)
+++ XoopsModules/publisher/trunk/publisher/archive.php 2013-01-03 19:31:21 UTC (rev 10645)
@@ -134,7 +134,7 @@
$itemhandler->field_link = 'categoryid';
$itemhandler->field_object = 'categoryid';
// Categories for which user has access
- $categoriesGranted = $publisher->getHandler('permission')->getGrantedItems('category_read');
+ $categoriesGranted =& $publisher->getHandler('permission')->getGrantedItems('category_read');
$grantedCategories = new Criteria('l.categoryid', "(" . implode(',', $categoriesGranted) . ")", 'IN');
$criteria = new CriteriaCompo();
$criteria->add($grantedCategories, 'AND');
Modified: XoopsModules/publisher/trunk/publisher/class/category.php
===================================================================
--- XoopsModules/publisher/trunk/publisher/class/category.php 2013-01-03 16:09:42 UTC (rev 10644)
+++ XoopsModules/publisher/trunk/publisher/class/category.php 2013-01-03 19:31:21 UTC (rev 10645)
@@ -94,7 +94,7 @@
if (is_object($xoopsUser) && $xoopsUser->getVar('uid') == $this->moderator()) {
return true;
}
- $categoriesGranted = $this->publisher->getHandler('permission')->isGranted('category_read');
+ $categoriesGranted =& $this->publisher->getHandler('permission')->getGrantedItems('category_read');
if (in_array($this->categoryid(), $categoriesGranted)) {
$ret = true;
}
@@ -464,7 +464,7 @@
$criteria->add(new Criteria('parentid', $parentid));
}
if (!$publisher_isAdmin) {
- $categoriesGranted = $this->publisher->getHandler('permission')->getGrantedItems('category_read');
+ $categoriesGranted =& $this->publisher->getHandler('permission')->getGrantedItems('category_read');
if (count($categoriesGranted) > 0) {
$criteria->add(new Criteria('categoryid', '(' . implode(',', $categoriesGranted) . ')', 'IN'));
}
@@ -502,7 +502,7 @@
$criteria->setSort('name');
$criteria->setOrder('ASC');
if (!$publisher_isAdmin) {
- $categoriesGranted = $this->publisher->getHandler('permission')->getGrantedItems('item_submit');
+ $categoriesGranted =& $this->publisher->getHandler('permission')->getGrantedItems('item_submit');
if (count($categoriesGranted) > 0) {
$criteria->add(new Criteria('categoryid', '(' . implode(',', $categoriesGranted) . ')', 'IN'));
}
@@ -541,7 +541,7 @@
$criteria->setSort('name');
$criteria->setOrder('ASC');
if (!$publisher_isAdmin) {
- $categoriesGranted = $this->publisher->getHandler('permission')->getGrantedItems('category_read');
+ $categoriesGranted =& $this->publisher->getHandler('permission')->getGrantedItems('category_read');
if (count($categoriesGranted) > 0) {
$criteria->add(new Criteria('categoryid', '(' . implode(',', $categoriesGranted) . ')', 'IN'));
}
@@ -584,7 +584,7 @@
if (isset($parentid) && ($parentid != -1)) {
$criteria->add(new criteria('parentid', $parentid));
if (!$publisher_isAdmin) {
- $categoriesGranted = $this->publisher->getHandler('permission')->getGrantedItems('category_read');
+ $categoriesGranted =& $this->publisher->getHandler('permission')->getGrantedItems('category_read');
if (count($categoriesGranted) > 0) {
$criteria->add(new Criteria('categoryid', '(' . implode(',', $categoriesGranted) . ')', 'IN'));
}
@@ -609,7 +609,7 @@
$criteria = new CriteriaCompo(new Criteria('parentid', "(" . implode(',', array_keys($categories)) . ")", 'IN'));
$ret = array();
if (!$publisher_isAdmin) {
- $categoriesGranted = $this->publisher->getHandler('permission')->getGrantedItems('category_read');
+ $categoriesGranted =& $this->publisher->getHandler('permission')->getGrantedItems('category_read');
if (count($categoriesGranted) > 0) {
$criteria->add(new Criteria('categoryid', '(' . implode(',', $categoriesGranted) . ')', 'IN'));
}
Modified: XoopsModules/publisher/trunk/publisher/class/form/item.php
===================================================================
--- XoopsModules/publisher/trunk/publisher/class/form/item.php 2013-01-03 16:09:42 UTC (rev 10644)
+++ XoopsModules/publisher/trunk/publisher/class/form/item.php 2013-01-03 19:31:21 UTC (rev 10645)
@@ -113,10 +113,8 @@
global $xoopsConfig, $xoopsUser;
$publisher = PublisherPublisher::getInstance();
- $checkperm = $this->checkperm;
$allowed_editors = publisher_getEditors($publisher->getHandler('permission')->getGrantedItems('editors'));
- $form_view = $publisher->getHandler('permission')->getGrantedItems('form_view');
if (!is_object($xoopsUser)) {
$group = array(XOOPS_GROUP_ANONYMOUS);
Modified: XoopsModules/publisher/trunk/publisher/class/item.php
===================================================================
--- XoopsModules/publisher/trunk/publisher/class/item.php 2013-01-03 16:09:42 UTC (rev 10644)
+++ XoopsModules/publisher/trunk/publisher/class/item.php 2013-01-03 19:31:21 UTC (rev 10645)
@@ -1221,7 +1221,7 @@
if (!$publisher_isAdmin) {
$criteriaPermissions = new CriteriaCompo();
// Categories for which user has access
- $categoriesGranted = $this->publisher->getHandler('permission')->getGrantedItems('category_read');
+ $categoriesGranted =& $this->publisher->getHandler('permission')->getGrantedItems('category_read');
$grantedCategories = new Criteria('categoryid', "(" . implode(',', $categoriesGranted) . ")", 'IN');
$criteriaPermissions->add($grantedCategories, 'AND');
}
@@ -1373,7 +1373,7 @@
if (!$publisher_isAdmin) {
$criteriaPermissions = new CriteriaCompo();
// Categories for which user has access
- $categoriesGranted = $this->publisher->getHandler('permission')->getGrantedItems('category_read');
+ $categoriesGranted =& $this->publisher->getHandler('permission')->getGrantedItems('category_read');
$grantedCategories = new Criteria('categoryid', "(" . implode(',', $categoriesGranted) . ")", 'IN');
$criteriaPermissions->add($grantedCategories, 'AND');
}
Modified: XoopsModules/publisher/trunk/publisher/class/permission.php
===================================================================
--- XoopsModules/publisher/trunk/publisher/class/permission.php 2013-01-03 16:09:42 UTC (rev 10644)
+++ XoopsModules/publisher/trunk/publisher/class/permission.php 2013-01-03 19:31:21 UTC (rev 10645)
@@ -72,60 +72,24 @@
}
/**
- * @param string $gperm_name
- *
- * @return array
- */
- public function getGrantedGroups($gperm_name)
- {
- static $items;
- if (isset($items[$gperm_name])) {
- return $items[$gperm_name];
- }
- $groups = array();
- $criteria = new CriteriaCompo();
- $criteria->add(new Criteria('gperm_modid', $this->publisher->getModule()->getVar('mid')));
- $criteria->add(new Criteria('gperm_name', $gperm_name));
- //Instead of calling groupperm handler and get objects, we will save some memory and do it our way
- $db = XoopsDatabaseFactory::getDatabaseConnection();
- $limit = $start = 0;
- $sql = 'SELECT gperm_groupid FROM ' . $db->prefix('group_permission');
- if (isset($criteria) && is_subclass_of($criteria, 'criteriaelement')) {
- $sql .= ' ' . $criteria->renderWhere();
- $limit = $criteria->getLimit();
- $start = $criteria->getStart();
- }
- $result = $db->query($sql, $limit, $start);
- while ($myrow = $db->fetchArray($result)) {
- $groups[$myrow['gperm_groupid']] = $myrow['gperm_groupid'];
- }
- $items[$gperm_name] = $groups;
- //Return the permission array
- return $groups;
- }
-
- /**
* Returns permissions for a certain type
*
* @param string $gperm_name "global", "forum" or "topic" (should perhaps have "post" as well - but I don't know)
- * @param int $id id of the item (forum, topic or possibly post) to get permissions for
*
* @return array
*/
- public function getGrantedItems($gperm_name, $id = 0)
+ public function getGrantedItems($gperm_name)
{
static $items;
- if (isset($items[$gperm_name][$id])) {
- return $items[$gperm_name][$id];
+ if (isset($items[$gperm_name])) {
+ return $items[$gperm_name];
}
global $xoopsUser;
$ret = array();
//Instead of calling groupperm handler and get objects, we will save some memory and do it our way
$criteria = new CriteriaCompo(new Criteria('gperm_name', $gperm_name));
$criteria->add(new Criteria('gperm_modid', $this->publisher->getModule()->getVar('mid')));
- if ($id != 0) {
- $criteria->add(new Criteria('gperm_itemid', $id));
- }
+
//Get user's groups
$groups = is_object($xoopsUser) ? $xoopsUser->getGroups() : array(XOOPS_GROUP_ANONYMOUS);
$criteria2 = new CriteriaCompo();
@@ -140,31 +104,26 @@
while ($myrow = $db->fetchArray($result)) {
$ret[$myrow['gperm_itemid']] = $myrow['gperm_itemid'];
}
- $items[$gperm_name][$id] = $ret;
+ $items[$gperm_name] = $ret;
return $ret;
}
/**
- * @param string $gperm_name
- * @param int|null $id
+ * @param string $gperm_name
+ * @param int $id
*
* @return bool
*/
- public function isGranted($gperm_name, $id = null)
+ public function isGranted($gperm_name, $id)
{
- $permissions = $this->getGrantedItems($gperm_name, $id);
- if ($id == null) {
- if (!empty($permissions)) {
- return true;
- } else {
- return false;
- }
+ if (!$id) {
+ return false;
+ }
+ $permissions =& $this->getGrantedItems($gperm_name);
+ if (!empty($permissions) && isset ($permissions[$id])) {
+ return true;
} else {
- if (!empty($permissions) && isset ($permissions[$id])) {
- return true;
- } else {
- return false;
- }
+ return false;
}
}
Modified: XoopsModules/publisher/trunk/publisher/include/functions.php
===================================================================
--- XoopsModules/publisher/trunk/publisher/include/functions.php 2013-01-03 16:09:42 UTC (rev 10644)
+++ XoopsModules/publisher/trunk/publisher/include/functions.php 2013-01-03 19:31:21 UTC (rev 10645)
@@ -383,7 +383,7 @@
function publisher_userIsModerator($itemObj)
{
$publisher = PublisherPublisher::getInstance();
- $categoriesGranted = $publisher->getHandler('permission')->getGrantedItems('category_moderation');
+ $categoriesGranted =& $publisher->getHandler('permission')->getGrantedItems('category_moderation');
return (is_object($itemObj) && in_array($itemObj->categoryid(), $categoriesGranted));
}
|