]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/noticelist.php
Fix display of group admin avatars
[quix0rs-gnu-social.git] / lib / noticelist.php
index dbe2a0996f94b565aa7d1df7f8b4d89e3f0462cd..91acbb8d580b6c8bb72b4de58c1f9b9d9a50fe6e 100644 (file)
@@ -53,7 +53,6 @@ require_once INSTALLDIR.'/lib/attachmentlist.php';
  * @see      NoticeListItem
  * @see      ProfileNoticeList
  */
-
 class NoticeList extends Widget
 {
     /** the current stream of notices being displayed. */
@@ -65,7 +64,6 @@ class NoticeList extends Widget
      *
      * @param Notice $notice stream of notices from DB_DataObject
      */
-
     function __construct($notice, $out=null)
     {
         parent::__construct($out);
@@ -80,24 +78,21 @@ class NoticeList extends Widget
      *
      * @return int count of notices listed.
      */
-
     function show()
     {
         $this->out->elementStart('div', array('id' =>'notices_primary'));
-        $this->out->element('h2', null, _('Notices'));
         $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
@@ -109,7 +104,7 @@ class NoticeList extends Widget
         $this->out->elementEnd('ol');
         $this->out->elementEnd('div');
 
-        return $cnt;
+        return $total;
     }
 
     /**
@@ -122,10 +117,36 @@ class NoticeList extends Widget
      *
      * @return NoticeListItem a list item for displaying the notice
      */
-
     function newListItem($notice)
     {
         return new NoticeListItem($notice, $this->out);
     }
+    
+    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)) {
+
+            $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));
+       }
+    }
 }
-