From: <tr...@us...> - 2013-01-03 20:52:34
|
Revision: 10647 http://sourceforge.net/p/xoops/svn/10647 Author: trabis Date: 2013-01-03 20:52:31 +0000 (Thu, 03 Jan 2013) Log Message: ----------- Improving memory usage. Fixing bug: all categories/items are shown in index page when user does not have any category access Modified Paths: -------------- XoopsModules/publisher/trunk/publisher/category.php XoopsModules/publisher/trunk/publisher/class/category.php XoopsModules/publisher/trunk/publisher/class/item.php XoopsModules/publisher/trunk/publisher/index.php Modified: XoopsModules/publisher/trunk/publisher/category.php =================================================================== --- XoopsModules/publisher/trunk/publisher/category.php 2013-01-03 19:49:51 UTC (rev 10646) +++ XoopsModules/publisher/trunk/publisher/category.php 2013-01-03 20:52:31 UTC (rev 10647) @@ -102,7 +102,7 @@ if ($publisher->getConfig('idxcat_display_last_item') == 1) { // Get the last smartitem - $last_itemObj = $publisher->getHandler('item')->getLastPublishedByCat(); + $last_itemObj = $publisher->getHandler('item')->getLastPublishedByCat(array($categoryObj)); } $lastitemsize = intval($publisher->getConfig('idxcat_last_item_size')); Modified: XoopsModules/publisher/trunk/publisher/class/category.php =================================================================== --- XoopsModules/publisher/trunk/publisher/class/category.php 2013-01-03 19:49:51 UTC (rev 10646) +++ XoopsModules/publisher/trunk/publisher/class/category.php 2013-01-03 20:52:31 UTC (rev 10647) @@ -467,6 +467,8 @@ $categoriesGranted =& $this->publisher->getHandler('permission')->getGrantedItems('category_read'); if (count($categoriesGranted) > 0) { $criteria->add(new Criteria('categoryid', '(' . implode(',', $categoriesGranted) . ')', 'IN')); + } else { + return array(); } if (is_object($xoopsUser)) { $criteria->add(new Criteria('moderator', $xoopsUser->getVar('uid')), 'OR'); @@ -505,6 +507,8 @@ $categoriesGranted =& $this->publisher->getHandler('permission')->getGrantedItems('item_submit'); if (count($categoriesGranted) > 0) { $criteria->add(new Criteria('categoryid', '(' . implode(',', $categoriesGranted) . ')', 'IN')); + } else { + return $ret; } if (is_object($xoopsUser)) { $criteria->add(new Criteria('moderator', $xoopsUser->getVar('uid')), 'OR'); @@ -544,6 +548,8 @@ $categoriesGranted =& $this->publisher->getHandler('permission')->getGrantedItems('category_read'); if (count($categoriesGranted) > 0) { $criteria->add(new Criteria('categoryid', '(' . implode(',', $categoriesGranted) . ')', 'IN')); + } else { + return $ret; } if (is_object($xoopsUser)) { $criteria->add(new Criteria('moderator', $xoopsUser->getVar('uid')), 'OR'); @@ -587,6 +593,8 @@ $categoriesGranted =& $this->publisher->getHandler('permission')->getGrantedItems('category_read'); if (count($categoriesGranted) > 0) { $criteria->add(new Criteria('categoryid', '(' . implode(',', $categoriesGranted) . ')', 'IN')); + } else { + return 0; } if (is_object($xoopsUser)) { $criteria->add(new Criteria('moderator', $xoopsUser->getVar('uid')), 'OR'); @@ -612,7 +620,10 @@ $categoriesGranted =& $this->publisher->getHandler('permission')->getGrantedItems('category_read'); if (count($categoriesGranted) > 0) { $criteria->add(new Criteria('categoryid', '(' . implode(',', $categoriesGranted) . ')', 'IN')); + } else { + return $ret; } + if (is_object($xoopsUser)) { $criteria->add(new Criteria('moderator', $xoopsUser->getVar('uid')), 'OR'); } Modified: XoopsModules/publisher/trunk/publisher/class/item.php =================================================================== --- XoopsModules/publisher/trunk/publisher/class/item.php 2013-01-03 19:49:51 UTC (rev 10646) +++ XoopsModules/publisher/trunk/publisher/class/item.php 2013-01-03 20:52:31 UTC (rev 10647) @@ -18,9 +18,7 @@ * @version $Id$ */ defined("XOOPS_ROOT_PATH") or die("XOOPS root path not defined"); - include_once dirname(dirname(__FILE__)) . '/include/common.php'; - class PublisherItem extends XoopsObject { /** @@ -1222,8 +1220,12 @@ $criteriaPermissions = new CriteriaCompo(); // Categories for which user has access $categoriesGranted =& $this->publisher->getHandler('permission')->getGrantedItems('category_read'); - $grantedCategories = new Criteria('categoryid', "(" . implode(',', $categoriesGranted) . ")", 'IN'); - $criteriaPermissions->add($grantedCategories, 'AND'); + if (!empty($categoriesGranted)) { + $grantedCategories = new Criteria('categoryid', "(" . implode(',', $categoriesGranted) . ")", 'IN'); + $criteriaPermissions->add($grantedCategories, 'AND'); + } else { + return 0; + } } if (isset($categoryid) && $categoryid != -1) { $criteriaCategory = new criteria('categoryid', $categoryid); @@ -1374,8 +1376,12 @@ $criteriaPermissions = new CriteriaCompo(); // Categories for which user has access $categoriesGranted =& $this->publisher->getHandler('permission')->getGrantedItems('category_read'); - $grantedCategories = new Criteria('categoryid', "(" . implode(',', $categoriesGranted) . ")", 'IN'); - $criteriaPermissions->add($grantedCategories, 'AND'); + if (!empty($grantedCategories)) { + $grantedCategories = new Criteria('categoryid', "(" . implode(',', $categoriesGranted) . ")", 'IN'); + $criteriaPermissions->add($grantedCategories, 'AND'); + } else { + return array(); + } } if (isset($categoryid) && ($categoryid != -1)) { $criteriaCategory = new criteria('categoryid', $categoryid); @@ -1592,13 +1598,21 @@ } /** - * @param array $status + * @param array $categoriesObj + * @param array $status * * @return array */ - public function getLastPublishedByCat($status = array(_PUBLISHER_STATUS_PUBLISHED)) + public function getLastPublishedByCat($categoriesObj, $status = array(_PUBLISHER_STATUS_PUBLISHED)) { $ret = array(); + $catIds = array(); + foreach ($categoriesObj as $category) { + $catIds[] = $category->getVar('categoryid'); + } + if (empty($catIds)) { + return $ret; + } /*$cat = array(); $sql = "SELECT categoryid, MAX(datesub) as date FROM " . $this->db->prefix('publisher_items') . " WHERE status IN (" . implode(',', $status) . ") GROUP BY categoryid"; @@ -1627,6 +1641,7 @@ $sql = "SELECT mi.categoryid, mi.itemid, mi.title, mi.short_url, mi.uid, mi.datesub"; $sql .= " FROM (SELECT categoryid, MAX(datesub) AS date FROM " . $this->db->prefix('publisher_items'); $sql .= " WHERE status IN (" . implode(',', $status) . ")"; + $sql .= " AND categoryid IN (" . implode(',', $catIds) . ")"; $sql .= " GROUP BY categoryid)mo"; $sql .= " JOIN " . $this->db->prefix('publisher_items') . " mi ON mi.datesub = mo.date"; $result = $this->db->query($sql); Modified: XoopsModules/publisher/trunk/publisher/index.php =================================================================== --- XoopsModules/publisher/trunk/publisher/index.php 2013-01-03 19:49:51 UTC (rev 10646) +++ XoopsModules/publisher/trunk/publisher/index.php 2013-01-03 20:52:31 UTC (rev 10647) @@ -65,7 +65,7 @@ if ($publisher->getConfig('idxcat_display_last_item') == 1) { // Get the last item in each category - $last_itemObj = $publisher->getHandler('item')->getLastPublishedByCat(); + $last_itemObj = $publisher->getHandler('item')->getLastPublishedByCat(array_merge($categoriesObj, $subcats)); } // Max size of the title in the last item column |