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

This commit is contained in:
Brion Vibber 2011-03-29 15:40:07 -07:00
parent 18a994d105
commit 880661de4e
2 changed files with 24 additions and 5 deletions

View File

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

View File

@ -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);