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('div', array('id' =>'notices_primary'));
$this->out->elementStart('ol', array('class' => 'notices xoxo')); $this->out->elementStart('ol', array('class' => 'notices xoxo'));
$cnt = 0; $notices = $this->notice->fetchAll();
while ($this->notice->fetch() && $cnt <= NOTICES_PER_PAGE) { $notices = array_slice($notices, 0, NOTICES_PER_PAGE);
$cnt++;
$this->prefill($notices);
if ($cnt > NOTICES_PER_PAGE) {
break; foreach ($notices as $notice) {
}
try { try {
$item = $this->newListItem($this->notice); $item = $this->newListItem($notice);
$item->show(); $item->show();
} catch (Exception $e) { } catch (Exception $e) {
// we log exceptions and continue // we log exceptions and continue
@ -105,7 +104,7 @@ class NoticeList extends Widget
$this->out->elementEnd('ol'); $this->out->elementEnd('ol');
$this->out->elementEnd('div'); $this->out->elementEnd('div');
return $cnt; return count($notices);
} }
/** /**
@ -122,4 +121,10 @@ class NoticeList extends Widget
{ {
return new NoticeListItem($notice, $this->out); 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) static function getStreamByIds($ids)
{ {
$notices = Notice::multiGet('id', $ids); return Notice::multiGet('id', $ids);
// Prefill the profiles
Notice::fillProfiles($notices->fetchAll());
return $notices;
} }
} }

View File

@ -76,17 +76,18 @@ class ThreadedNoticeList extends NoticeList
$this->out->element('h2', null, _m('HEADER','Notices')); $this->out->element('h2', null, _m('HEADER','Notices'));
$this->out->elementStart('ol', array('class' => 'notices threaded-notices xoxo')); $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; $cnt = 0;
$conversations = array(); $conversations = array();
while ($this->notice->fetch() && $cnt <= NOTICES_PER_PAGE) {
$cnt++; foreach ($notices as $notice) {
if ($cnt > NOTICES_PER_PAGE) {
break;
}
// Collapse repeats into their originals... // Collapse repeats into their originals...
$notice = $this->notice;
if ($notice->repeat_of) { if ($notice->repeat_of) {
$orig = Notice::staticGet('id', $notice->repeat_of); $orig = Notice::staticGet('id', $notice->repeat_of);
if ($orig) { if ($orig) {
@ -223,6 +224,8 @@ class ThreadedNoticeListItem extends NoticeListItem
$item = new ThreadedNoticeListMoreItem($moreCutoff, $this->out, count($notices)); $item = new ThreadedNoticeListMoreItem($moreCutoff, $this->out, count($notices));
$item->show(); $item->show();
} }
// XXX: replicating NoticeList::prefill(), annoyingly
$this->prefill($notices);
foreach (array_reverse($notices) as $notice) { foreach (array_reverse($notices) as $notice) {
if (Event::handle('StartShowThreadedNoticeSub', array($this, $this->notice, $notice))) { if (Event::handle('StartShowThreadedNoticeSub', array($this, $this->notice, $notice))) {
$item = new ThreadedNoticeListSubItem($notice, $this->notice, $this->out); $item = new ThreadedNoticeListSubItem($notice, $this->notice, $this->out);
@ -247,6 +250,12 @@ class ThreadedNoticeListItem extends NoticeListItem
parent::showEnd(); parent::showEnd();
} }
function prefill(&$notices)
{
// Prefill the profiles
Notice::fillProfiles($notices);
}
} }
// @todo FIXME: needs documentation. // @todo FIXME: needs documentation.