X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fnoticelist.php;h=df6e8d98c205522b731c00c7d0677cbcc59b1bfa;hb=33e2f5b449d477e55bda7029f9e826d889e41eb5;hp=f18b2d66841ffa7a2998123c0f30a2fa8cad9157;hpb=87d46e1ae5e5effcc985021ff5af3f10815f3d3c;p=quix0rs-gnu-social.git diff --git a/lib/noticelist.php b/lib/noticelist.php index f18b2d6684..df6e8d98c2 100644 --- a/lib/noticelist.php +++ b/lib/noticelist.php @@ -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(); + $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 @@ -105,7 +104,7 @@ class NoticeList extends Widget $this->out->elementEnd('ol'); $this->out->elementEnd('div'); - return $cnt; + return $total; } /** @@ -122,4 +121,35 @@ class NoticeList extends Widget { return new NoticeListItem($notice, $this->out); } + + static function prefill(&$notices, $avatarSize=AVATAR_STREAM_SIZE) + { + if (Event::handle('StartNoticeListPrefill', array(&$notices, $avatarSize))) { + + // Prefill attachments + Notice::fillAttachments($notices); + // Prefill attachments + Notice::fillFaves($notices); + // Prefill repeat data + Notice::fillRepeats($notices); + // Prefill the profiles + $profiles = Notice::fillProfiles($notices); + + $p = Profile::current(); + + if (!empty($p)) { + + $ids = array(); + + foreach ($notices as $notice) { + $ids[] = $notice->id; + } + + Fave::pivotGet('notice_id', $ids, array('user_id' => $p->id)); + Notice::pivotGet('repeat_of', $ids, array('profile_id' => $p->id)); + } + + Event::handle('EndNoticeListPrefill', array(&$notices, &$profiles, $avatarSize)); + } + } }