|
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
|