]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/noticelist.php
Add urlshortenerplugin2.php to solve some @todo's and adding exceptions
[quix0rs-gnu-social.git] / lib / noticelist.php
index f18b2d66841ffa7a2998123c0f30a2fa8cad9157..df6e8d98c205522b731c00c7d0677cbcc59b1bfa 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();
+               $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
@@ -105,7 +104,7 @@ class NoticeList extends Widget
         $this->out->elementEnd('ol');
         $this->out->elementEnd('div');
 
-        return $cnt;
+        return $total;
     }
 
     /**
@@ -122,4 +121,35 @@ class NoticeList extends Widget
     {
         return new NoticeListItem($notice, $this->out);
     }
+    
+    static function prefill(&$notices, $avatarSize=AVATAR_STREAM_SIZE)
+    {
+        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);
+       
+            $p = Profile::current();
+       
+            if (!empty($p)) {
+
+                $ids = array();
+       
+                foreach ($notices as $notice) {
+                    $ids[] = $notice->id;
+                }
+       
+                Fave::pivotGet('notice_id', $ids, array('user_id' => $p->id));
+                Notice::pivotGet('repeat_of', $ids, array('profile_id' => $p->id));
+            }
+
+            Event::handle('EndNoticeListPrefill', array(&$notices, &$profiles, $avatarSize));
+        }
+    }
 }