X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fnoticelist.php;h=91acbb8d580b6c8bb72b4de58c1f9b9d9a50fe6e;hb=ba4bda9beb8b51eb53c47ac32e435179cb9eecde;hp=dbe2a0996f94b565aa7d1df7f8b4d89e3f0462cd;hpb=b8b1fbb6b5cb3a044acab3487e0a041220bf263d;p=quix0rs-gnu-social.git diff --git a/lib/noticelist.php b/lib/noticelist.php index dbe2a0996f..91acbb8d58 100644 --- a/lib/noticelist.php +++ b/lib/noticelist.php @@ -53,7 +53,6 @@ require_once INSTALLDIR.'/lib/attachmentlist.php'; * @see NoticeListItem * @see ProfileNoticeList */ - class NoticeList extends Widget { /** the current stream of notices being displayed. */ @@ -65,7 +64,6 @@ class NoticeList extends Widget * * @param Notice $notice stream of notices from DB_DataObject */ - function __construct($notice, $out=null) { parent::__construct($out); @@ -80,24 +78,21 @@ class NoticeList extends Widget * * @return int count of notices listed. */ - function show() { $this->out->elementStart('div', array('id' =>'notices_primary')); - $this->out->element('h2', null, _('Notices')); $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(); + $total = count($notices); + $notices = array_slice($notices, 0, NOTICES_PER_PAGE); + + self::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 @@ -109,7 +104,7 @@ class NoticeList extends Widget $this->out->elementEnd('ol'); $this->out->elementEnd('div'); - return $cnt; + return $total; } /** @@ -122,10 +117,36 @@ class NoticeList extends Widget * * @return NoticeListItem a list item for displaying the notice */ - function newListItem($notice) { return new NoticeListItem($notice, $this->out); } + + static function prefill(&$notices, $avatarSize=AVATAR_STREAM_SIZE) + { + // Prefill attachments + Notice::fillAttachments($notices); + // Prefill attachments + Notice::fillFaves($notices); + // Prefill repeat data + Notice::fillRepeats($notices); + // Prefill the profiles + $profiles = Notice::fillProfiles($notices); + // Prefill the avatars + Profile::fillAvatars($profiles, $avatarSize); + + $p = Profile::current(); + + if (!empty($p)) { + + $ids = array(); + + foreach ($notices as $notice) { + $ids[] = $notice->id; + } + + Memcached_DataObject::pivotGet('Fave', 'notice_id', $ids, array('user_id' => $p->id)); + Memcached_DataObject::pivotGet('Notice', 'repeat_of', $ids, array('profile_id' => $p->id)); + } + } } -