$this->out->elementStart('div', array('id' =>'notices_primary'));
$this->out->elementStart('ol', array('class' => 'notices xoxo'));
- $cnt = 0;
-
- while ($this->notice->fetch() && $cnt <= NOTICES_PER_PAGE) {
- $cnt++;
-
- if ($cnt > NOTICES_PER_PAGE) {
- break;
- }
+ $notices = $this->notice->fetchAll();
+
+ $notices = array_slice($notices, 0, NOTICES_PER_PAGE);
+
+ $this->prefill($notices);
+
+ foreach ($notices as $notice) {
try {
- $item = $this->newListItem($this->notice);
+ $item = $this->newListItem($notice);
$item->show();
} catch (Exception $e) {
// we log exceptions and continue
$this->out->elementEnd('ol');
$this->out->elementEnd('div');
- return $cnt;
+ return count($notices);
}
/**
{
return new NoticeListItem($notice, $this->out);
}
+
+ function prefill(&$notices)
+ {
+ // Prefill the profiles
+ Notice::fillProfiles($notices);
+ }
}
static function getStreamByIds($ids)
{
- $notices = Notice::multiGet('id', $ids);
- // Prefill the profiles
- Notice::fillProfiles($notices->fetchAll());
- return $notices;
+ return Notice::multiGet('id', $ids);
}
}
$this->out->element('h2', null, _m('HEADER','Notices'));
$this->out->elementStart('ol', array('class' => 'notices threaded-notices xoxo'));
+ $notices = $this->notice->fetchAll();
+ $notices = array_slice($notices, 0, NOTICES_PER_PAGE);
+
+ $this->prefill($notices);
+
$cnt = 0;
$conversations = array();
- while ($this->notice->fetch() && $cnt <= NOTICES_PER_PAGE) {
- $cnt++;
-
- if ($cnt > NOTICES_PER_PAGE) {
- break;
- }
+
+ foreach ($notices as $notice) {
// Collapse repeats into their originals...
- $notice = $this->notice;
+
if ($notice->repeat_of) {
$orig = Notice::staticGet('id', $notice->repeat_of);
if ($orig) {
$item = new ThreadedNoticeListMoreItem($moreCutoff, $this->out, count($notices));
$item->show();
}
+ // XXX: replicating NoticeList::prefill(), annoyingly
+ $this->prefill($notices);
foreach (array_reverse($notices) as $notice) {
if (Event::handle('StartShowThreadedNoticeSub', array($this, $this->notice, $notice))) {
$item = new ThreadedNoticeListSubItem($notice, $this->notice, $this->out);
parent::showEnd();
}
+
+ function prefill(&$notices)
+ {
+ // Prefill the profiles
+ Notice::fillProfiles($notices);
+ }
}
// @todo FIXME: needs documentation.