]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/noticelist.php
Merge request from chimo adding getvaliddaemons to stopdaemons.php
[quix0rs-gnu-social.git] / lib / noticelist.php
index 7ec5be1c0ff169f9e86b9d8980846bfde66f7c7c..346974f1d29b92fdf62b439b8648aabaa0d37d7e 100644 (file)
  * @link      http://status.net/
  */
 
-if (!defined('STATUSNET') && !defined('LACONICA')) {
-    exit(1);
-}
-
-require_once INSTALLDIR.'/lib/favorform.php';
-require_once INSTALLDIR.'/lib/disfavorform.php';
-require_once INSTALLDIR.'/lib/attachmentlist.php';
+if (!defined('GNUSOCIAL') && !defined('STATUSNET')) { exit(1); }
 
 /**
  * widget for displaying a list of notices
@@ -64,7 +58,7 @@ class NoticeList extends Widget
      *
      * @param Notice $notice stream of notices from DB_DataObject
      */
-    function __construct($notice, $out=null)
+    function __construct(Notice $notice, $out=null)
     {
         parent::__construct($out);
         $this->notice = $notice;
@@ -117,33 +111,30 @@ class NoticeList extends Widget
      *
      * @return NoticeListItem a list item for displaying the notice
      */
-    function newListItem($notice)
+    function newListItem(Notice $notice)
     {
         return new NoticeListItem($notice, $this->out);
     }
     
-    static function prefill(&$notices, $avatarSize=AVATAR_STREAM_SIZE)
+    static function prefill(array &$notices)
     {
-        // Prefill attachments
-        Notice::fillAttachments($notices);
-        // Prefill attachments
-        Notice::fillFaves($notices);
-       // Prefill the profiles
-       $profiles = Notice::fillProfiles($notices);
-       // Prefill the avatars
-       Profile::fillAvatars($profiles, $avatarSize);
-       
-       $p = Profile::current();
-       
-       $ids = array();
-       
-       foreach ($notices as $notice) {
-           $ids[] = $notice->id;
-       }
-       
-       if (!empty($p)) {
-               Memcached_DataObject::pivotGet('Fave', 'notice_id', $ids, array('user_id' => $p->id));
-               Memcached_DataObject::pivotGet('Notice', 'repeat_of', $ids, array('profile_id' => $p->id));
-       }
+        $scoped = Profile::current();
+        $notice_ids = Notice::_idsOf($notices);
+
+        if (Event::handle('StartNoticeListPrefill', array(&$notices, $notice_ids, $scoped))) {
+
+            // Prefill attachments
+            Notice::fillAttachments($notices);
+            // Prefill repeat data
+            Notice::fillRepeats($notices);
+            // Prefill the profiles
+            $profiles = Notice::fillProfiles($notices);
+
+            if ($scoped instanceof Profile) {
+                Notice::pivotGet('repeat_of', $notice_ids, array('profile_id' => $scoped->id));
+            }
+
+            Event::handle('EndNoticeListPrefill', array(&$notices, &$profiles, $notice_ids, $scoped));
+        }
     }
 }