|
From: <ir...@us...> - 2012-10-11 08:41:50
|
Revision: 10212
http://sourceforge.net/p/xoops/svn/10212
Author: irmtfan
Date: 2012-10-11 08:41:48 +0000 (Thu, 11 Oct 2012)
Log Message:
-----------
bug fix: viewpost.php?status=new was wrongly returned
Modified Paths:
--------------
XoopsModules/newbb/branches/irmtfan/newbb/changelog-rev10109.txt
XoopsModules/newbb/branches/irmtfan/newbb/class/post.php
XoopsModules/newbb/branches/irmtfan/newbb/viewpost.php
Modified: XoopsModules/newbb/branches/irmtfan/newbb/changelog-rev10109.txt
===================================================================
--- XoopsModules/newbb/branches/irmtfan/newbb/changelog-rev10109.txt 2012-10-10 11:01:37 UTC (rev 10211)
+++ XoopsModules/newbb/branches/irmtfan/newbb/changelog-rev10109.txt 2012-10-11 08:41:48 UTC (rev 10212)
@@ -1,3 +1,8 @@
+date 2012-10-11
+===================================
+1- bug fix: viewpost.php?status=new was wrongly return the new posts and new posts counts based on read_mode=1 (cookie) when the read_mode=2 (database) (important)
+in newbb/viewpost.php and newbb/class/post.php
+
date 2012-10-10
===================================
1- bug fix: in list.topic.php: remove empty arrays in getStatus function
Modified: XoopsModules/newbb/branches/irmtfan/newbb/class/post.php
===================================================================
--- XoopsModules/newbb/branches/irmtfan/newbb/class/post.php 2012-10-10 11:01:37 UTC (rev 10211)
+++ XoopsModules/newbb/branches/irmtfan/newbb/class/post.php 2012-10-11 08:41:48 UTC (rev 10212)
@@ -936,12 +936,31 @@
return true;
}
-
- function getPostCount($criteria = null)
+// START irmtfan enhance getPostCount when there is join (read_mode = 2)
+ function getPostCount($criteria = null, $join = null)
{
- return parent::getCount($criteria);
+ // If not join get the count from XOOPS/class/model/stats as before
+ if (empty($join))
+ return parent::getCount($criteria);
+
+ $sql = 'SELECT COUNT(*) as count'.
+ ' FROM ' . $this->db->prefix('bb_posts') . ' AS p'.
+ ' LEFT JOIN ' . $this->db->prefix('bb_posts_text') . " AS t ON t.post_id = p.post_id";
+ // LEFT JOIN
+ $sql .= $join;
+ // WHERE
+ if (isset($criteria) && is_subclass_of($criteria, "criteriaelement")) {
+ $sql .= " ".$criteria->renderWhere();
+ }
+ if (!$result = $this->db->query($sql)) {
+ //xoops_error($this->db->error().'<br />'.$sql);
+ return null;
+ }
+ $myrow = $this->db->fetchArray($result);
+ $count = $myrow['count'];
+ return $count;
}
-
+// END irmtfan enhance getPostCount when there is join (read_mode = 2)
/*
* TODO: combining viewtopic.php
*/
Modified: XoopsModules/newbb/branches/irmtfan/newbb/viewpost.php
===================================================================
--- XoopsModules/newbb/branches/irmtfan/newbb/viewpost.php 2012-10-10 11:01:37 UTC (rev 10211)
+++ XoopsModules/newbb/branches/irmtfan/newbb/viewpost.php 2012-10-11 08:41:48 UTC (rev 10212)
@@ -79,45 +79,49 @@
}
$join = null;
+// START irmtfan solve the status issues and specially status = new issue
switch($status) {
case "pending":
- $criteria_status_count = new Criteria("approved", 0);
- $criteria_status_post = new Criteria("p.approved", 0);
+ $criteria_count->add(new Criteria("approved", 0)); // irmtfan add new criteria
+ $criteria_post->add(new Criteria("p.approved", 0)); // irmtfan add new criteria
break;
case "deleted":
- $criteria_status_count = new Criteria("approved", -1);
- $criteria_status_post = new Criteria("p.approved", -1);
+ $criteria_count->add(new Criteria("approved", -1)); // irmtfan add new criteria
+ $criteria_post->add(new Criteria("p.approved", -1)); // irmtfan add new criteria
break;
case "new":
- $criteria_status_count = new CriteriaCompo(new Criteria("post_time", intval($last_visit), ">"));
- $criteria_status_post = new CriteriaCompo(new Criteria("p.post_time", intval($last_visit), ">"));
- //$criteria_status_count->add(new Criteria("approved", 1));
- //$criteria_status_post->add(new Criteria("p.approved", 1));
- // following is for "unread" -- not finished
+ //$criteria_status_count = new CriteriaCompo(new Criteria("post_time", intval($last_visit), ">"));// irmtfan commented and removed
+ //$criteria_status_post = new CriteriaCompo(new Criteria("p.post_time", intval($last_visit), ">"));// irmtfan commented and removed
+ $criteria_count->add(new Criteria("approved", 1)); // irmtfan uncomment
+ $criteria_post->add(new Criteria("p.approved", 1)); // irmtfan uncomment
+ // following is for "unread" -- not finished -- irmtfan Now it is finished!
if (empty($xoopsModuleConfig["read_mode"])) {
- $criteria_status_count->add(new Criteria("approved", 1));
- $criteria_status_post->add(new Criteria("p.approved", 1));
+ //$criteria_status_count->add(new Criteria("approved", 1));// irmtfan commented and removed
+ //$criteria_status_post->add(new Criteria("p.approved", 1));// irmtfan commented and removed
} elseif ($xoopsModuleConfig["read_mode"] ==2) {
- $join = ' LEFT JOIN ' . $xoopsDB->prefix('bb_reads_topic') . ' r ON r.read_item = p.topic_id';
- $criteria_status_post = new CriteriaCompo(new Criteria("p.post_id", "r.post_id", ">"));
- $criteria_status_post->add(new Criteria("r.read_id", NULL, "IS"), "OR");
- $criteria_status_post->add(new Criteria("p.approved", 1));
+ $join = ' LEFT JOIN ' . $xoopsDB->prefix('bb_reads_topic') . ' AS r ON r.read_item = p.topic_id'; // irmtfan corrected add AS
+ $criteria_status_post = new CriteriaCompo();// irmtfan new criteria
+ $criteria_status_post->add(new Criteria("p.post_id", "r.`post_id`", ">")); // irmtfan corrected - should use $value="r.``" to render in XOOPS/class/criteria.php
+ $criteria_status_post->add(new Criteria("r.read_id", NULL, "IS NULL"), "OR");// irmtfan corrected - should use "IS NULL" to render in XOOPS/class/criteria.php
+ //$criteria_status_post->add(new Criteria("p.approved", 1)); // irmtfan commented and removed
//$criteria_status_count =& $criteria_status_post;
+ $criteria_post->add($criteria_status_post); // irmtfan add the status criteria to post criteria
+ $criteria_count =& $criteria_post;// irmtfan criteria count is equal to criteria post
} elseif ($xoopsModuleConfig["read_mode"] == 1) {
- $criteria_status_count = new CriteriaCompo(new Criteria("post_time", intval($last_visit), ">"));
- $criteria_status_post = new CriteriaCompo(new Criteria("p.post_time", intval($last_visit), ">"));
- $criteria_status_count->add(new Criteria("approved", 1));
- $criteria_status_post->add(new Criteria("p.approved", 1));
- }
+ $criteria_count->add(new Criteria("post_time", intval($last_visit), ">")); // irmtfan add new criteria
+ $criteria_post->add(new Criteria("p.post_time", intval($last_visit), ">")); // irmtfan add new criteria
+ //$criteria_status_count->add(new Criteria("approved", 1));// irmtfan commented and removed
+ //$criteria_status_post->add(new Criteria("p.approved", 1));// irmtfan commented and removed
+ }
break;
default:
- $criteria_status_count = new Criteria("approved", 1);
- $criteria_status_post = new Criteria("p.approved", 1);
+ $criteria_count->add(new Criteria("approved", 1)); // irmtfan add new criteria
+ $criteria_post->add(new Criteria("p.approved", 1)); // irmtfan add new criteria
break;
}
-$criteria_count->add($criteria_status_count);
-$criteria_post->add($criteria_status_post);
-
+//$criteria_count->add($criteria_status_count); // irmtfan commented and removed
+//$criteria_post->add($criteria_status_post); // irmtfan commented and removed
+// END irmtfan solve the status issues and specially status = new issue
$karma_handler =& xoops_getmodulehandler('karma', 'newbb');
$user_karma = $karma_handler->getUserKarma();
@@ -135,8 +139,8 @@
);
$viewmode = in_array($viewmode, $valid_modes) ? $viewmode : $valid_modes[0];
-$postCount = $post_handler->getPostCount($criteria_count);
-$posts = $post_handler->getPostsByLimit($criteria_post, $post_perpage, $start/*, $join*/);
+$postCount = $post_handler->getPostCount($criteria_count, $join);// irmtfan add join for read_mode = 2
+$posts = $post_handler->getPostsByLimit($criteria_post, $post_perpage, $start, $join);// irmtfan add join for read_mode = 2
$poster_array = array();
if (count($posts)>0) foreach (array_keys($posts) as $id) {
|