New events for pre-filling a NoticeList

The NoticeList has some code to pre-fill some auxiliary data for
notices. These new events let plugins hook that event and do their own
pre-filling.
This commit is contained in:
Evan Prodromou 2012-03-21 09:26:35 -04:00
parent e7a38f799b
commit 4c4cd9ec77
2 changed files with 34 additions and 21 deletions

View File

@ -1441,4 +1441,12 @@ EndNoticeInScope: After checking if a notice should be visible to a user
- $profile: The profile to check for scope
- &$bResult: The boolean result; overwrite this if you so desire
StartNoticeListPrefill: Before pre-filling a list of notices with extra data
- &$notices: Notices to be pre-filled
- $avatarSize: The avatar size for the list
EndNoticeListPrefill: After pre-filling a list of notices with extra data
- &$notices: Notices that were pre-filled
- &$profiles: Profiles that were pre-filled
- $avatarSize: The avatar size for the list

View File

@ -124,29 +124,34 @@ class NoticeList extends Widget
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)) {
if (Event::handle('StartNoticeListPrefill', array(&$notices, $avatarSize))) {
$ids = array();
// 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);
foreach ($notices as $notice) {
$ids[] = $notice->id;
$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));
}
Memcached_DataObject::pivotGet('Fave', 'notice_id', $ids, array('user_id' => $p->id));
Memcached_DataObject::pivotGet('Notice', 'repeat_of', $ids, array('profile_id' => $p->id));
}
Event::handle('EndNoticeListPrefill', array(&$notices, &$profiles, $avatarSize));
}
}
}