Commit 880661de authored by Brion Vibber's avatar Brion Vibber

Paging fix for public timeline: drop replies from the stuff we pull in for the threaded web view.

parent 18a994d1
......@@ -85,8 +85,11 @@ class PublicAction extends Action
common_set_returnto($this->selfUrl());
$this->notice = Notice::publicStream(($this->page-1)*NOTICES_PER_PAGE,
NOTICES_PER_PAGE + 1);
$stream = new PublicNoticeStream(PublicNoticeStream::THREADED);
$this->notice = $stream->getNotices(($this->page-1)*NOTICES_PER_PAGE,
NOTICES_PER_PAGE + 1,
0,
0);
if (!$this->notice) {
// TRANS: Server error displayed when a public timeline cannot be retrieved.
......
......@@ -47,10 +47,16 @@ if (!defined('STATUSNET')) {
class PublicNoticeStream extends ScopingNoticeStream
{
function __construct()
const THREADED=true;
/**
*
* @param boolean $threaded set to true to exclude replies, for later fetching
*/
function __construct($threaded=false)
{
parent::__construct(new CachingNoticeStream(new RawPublicNoticeStream(),
'public'));
parent::__construct(new CachingNoticeStream(new RawPublicNoticeStream($threaded),
$threaded ? 'public:threaded' : 'public'));
}
}
......@@ -67,6 +73,13 @@ class PublicNoticeStream extends ScopingNoticeStream
class RawPublicNoticeStream extends NoticeStream
{
var $threaded;
function __construct($threaded=false)
{
$this->threaded = $threaded;
}
function getNoticeIds($offset, $limit, $since_id, $max_id)
{
$notice = new Notice();
......@@ -87,6 +100,9 @@ class RawPublicNoticeStream extends NoticeStream
$notice->whereAdd('is_local !='. Notice::LOCAL_NONPUBLIC);
$notice->whereAdd('is_local !='. Notice::GATEWAY);
}
if ($this->threaded) {
$notice->whereAdd('reply_to IS NULL');
}
Notice::addWhereSinceId($notice, $since_id);
Notice::addWhereMaxId($notice, $max_id);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment