]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Move prefill call to noticelist class
authorEvan Prodromou <evan@status.net>
Mon, 1 Aug 2011 20:43:44 +0000 (16:43 -0400)
committerEvan Prodromou <evan@status.net>
Mon, 1 Aug 2011 20:43:44 +0000 (16:43 -0400)
lib/noticelist.php
lib/noticestream.php
lib/threadednoticelist.php

index f18b2d66841ffa7a2998123c0f30a2fa8cad9157..c52380dfc9602e1d1e3edf345e1ac6ac25f873cd 100644 (file)
@@ -83,17 +83,16 @@ class NoticeList extends Widget
         $this->out->elementStart('div', array('id' =>'notices_primary'));
         $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();
+               
+               $notices = array_slice($notices, 0, NOTICES_PER_PAGE);
+               
+       $this->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
@@ -105,7 +104,7 @@ class NoticeList extends Widget
         $this->out->elementEnd('ol');
         $this->out->elementEnd('div');
 
-        return $cnt;
+        return count($notices);
     }
 
     /**
@@ -122,4 +121,10 @@ class NoticeList extends Widget
     {
         return new NoticeListItem($notice, $this->out);
     }
+    
+    function prefill(&$notices)
+    {
+       // Prefill the profiles
+       Notice::fillProfiles($notices);
+    }
 }
index 010bfab60e4221d4dc67d3f9c0d939a25414aeb4..e9ff47b68c154eb73641cbaf97dbb1b0126c2cae 100644 (file)
@@ -59,9 +59,6 @@ abstract class NoticeStream
 
     static function getStreamByIds($ids)
     {
-       $notices = Notice::multiGet('id', $ids);
-       // Prefill the profiles
-       Notice::fillProfiles($notices->fetchAll());
-       return $notices;
+       return Notice::multiGet('id', $ids);
     }
 }
index 43494bab1a867eb22365543770c907d8abf25cfd..45c11453a7a63699f9cfb866c39939375d08f9c2 100644 (file)
@@ -76,17 +76,18 @@ class ThreadedNoticeList extends NoticeList
         $this->out->element('h2', null, _m('HEADER','Notices'));
         $this->out->elementStart('ol', array('class' => 'notices threaded-notices xoxo'));
 
+               $notices = $this->notice->fetchAll();
+               $notices = array_slice($notices, 0, NOTICES_PER_PAGE);
+               
+       $this->prefill($notices);
+       
         $cnt = 0;
         $conversations = array();
-        while ($this->notice->fetch() && $cnt <= NOTICES_PER_PAGE) {
-            $cnt++;
-
-            if ($cnt > NOTICES_PER_PAGE) {
-                break;
-            }
+        
+        foreach ($notices as $notice) {
 
             // Collapse repeats into their originals...
-            $notice = $this->notice;
+            
             if ($notice->repeat_of) {
                 $orig = Notice::staticGet('id', $notice->repeat_of);
                 if ($orig) {
@@ -223,6 +224,8 @@ class ThreadedNoticeListItem extends NoticeListItem
                         $item = new ThreadedNoticeListMoreItem($moreCutoff, $this->out, count($notices));
                         $item->show();
                     }
+                    // XXX: replicating NoticeList::prefill(), annoyingly
+                    $this->prefill($notices);
                     foreach (array_reverse($notices) as $notice) {
                         if (Event::handle('StartShowThreadedNoticeSub', array($this, $this->notice, $notice))) {
                             $item = new ThreadedNoticeListSubItem($notice, $this->notice, $this->out);
@@ -247,6 +250,12 @@ class ThreadedNoticeListItem extends NoticeListItem
 
         parent::showEnd();
     }
+    
+    function prefill(&$notices)
+    {       
+       // Prefill the profiles
+       Notice::fillProfiles($notices);
+    }
 }
 
 // @todo FIXME: needs documentation.