Move prefill call to noticelist class

This commit is contained in:
Evan Prodromou 2011-08-01 16:43:44 -04:00
parent a3ef80941e
commit b9cabd45de
3 changed files with 32 additions and 21 deletions

View File

@ -83,17 +83,16 @@ class NoticeList extends Widget
$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
@ -105,7 +104,7 @@ class NoticeList extends Widget
$this->out->elementEnd('ol');
$this->out->elementEnd('div');
return $cnt;
return count($notices);
}
/**
@ -122,4 +121,10 @@ class NoticeList extends Widget
{
return new NoticeListItem($notice, $this->out);
}
function prefill(&$notices)
{
// Prefill the profiles
Notice::fillProfiles($notices);
}
}

View File

@ -59,9 +59,6 @@ abstract class NoticeStream
static function getStreamByIds($ids)
{
$notices = Notice::multiGet('id', $ids);
// Prefill the profiles
Notice::fillProfiles($notices->fetchAll());
return $notices;
return Notice::multiGet('id', $ids);
}
}

View File

@ -76,17 +76,18 @@ class ThreadedNoticeList extends NoticeList
$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) {
@ -223,6 +224,8 @@ class ThreadedNoticeListItem extends NoticeListItem
$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);
@ -247,6 +250,12 @@ class ThreadedNoticeListItem extends NoticeListItem
parent::showEnd();
}
function prefill(&$notices)
{
// Prefill the profiles
Notice::fillProfiles($notices);
}
}
// @todo FIXME: needs documentation.