]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
New events for pre-filling a NoticeList
authorEvan Prodromou <evan@status.net>
Wed, 21 Mar 2012 13:26:35 +0000 (09:26 -0400)
committerEvan Prodromou <evan@status.net>
Wed, 21 Mar 2012 14:25:51 +0000 (10:25 -0400)
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.

EVENTS.txt
lib/noticelist.php

index eb3edb9b138d8587ae98c8f7be4c93fbcb5e261f..0c08a46478b26a3bd784544bd5b30cd89e98bc86 100644 (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
 
index 91acbb8d580b6c8bb72b4de58c1f9b9d9a50fe6e..7f38cf005b29469dddca30197946a0cc78da5b4d 100644 (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);
+        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);
+            // Prefill the avatars
+            Profile::fillAvatars($profiles, $avatarSize);
        
-       $p = Profile::current();
+            $p = Profile::current();
        
-       if (!empty($p)) {
+            if (!empty($p)) {
 
-            $ids = array();
+                $ids = array();
        
-            foreach ($notices as $notice) {
-                $ids[] = $notice->id;
-            }
+                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));
+        }
     }
 }