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:
parent
e7a38f799b
commit
4c4cd9ec77
@ -1441,4 +1441,12 @@ EndNoticeInScope: After checking if a notice should be visible to a user
|
|||||||
- $profile: The profile to check for scope
|
- $profile: The profile to check for scope
|
||||||
- &$bResult: The boolean result; overwrite this if you so desire
|
- &$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
|
||||||
|
|
||||||
|
@ -124,29 +124,34 @@ class NoticeList extends Widget
|
|||||||
|
|
||||||
static function prefill(&$notices, $avatarSize=AVATAR_STREAM_SIZE)
|
static function prefill(&$notices, $avatarSize=AVATAR_STREAM_SIZE)
|
||||||
{
|
{
|
||||||
// Prefill attachments
|
if (Event::handle('StartNoticeListPrefill', array(&$notices, $avatarSize))) {
|
||||||
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();
|
// 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) {
|
$p = Profile::current();
|
||||||
$ids[] = $notice->id;
|
|
||||||
|
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));
|
Event::handle('EndNoticeListPrefill', array(&$notices, &$profiles, $avatarSize));
|
||||||
Memcached_DataObject::pivotGet('Notice', 'repeat_of', $ids, array('profile_id' => $p->id));
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user