]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/threadednoticelist.php
use intval() instead of floor() for int return type
[quix0rs-gnu-social.git] / lib / threadednoticelist.php
index cf3c0b8943ab74ec523ed55512694bdd54be2d5c..6d8570fbee6a5c422eeb186fae31e5ed755cec17 100644 (file)
@@ -27,9 +27,7 @@
  * @link      http://status.net/
  */
 
-if (!defined('STATUSNET') && !defined('LACONICA')) {
-    exit(1);
-}
+if (!defined('GNUSOCIAL') && !defined('STATUSNET')) { exit(1); }
 
 /**
  * widget for displaying a list of notices
@@ -80,7 +78,8 @@ class ThreadedNoticeList extends NoticeList
                $total = count($notices);
                $notices = array_slice($notices, 0, NOTICES_PER_PAGE);
                
-       self::prefill($notices);
+        $allnotices = self::_allNotices($notices);
+       self::prefill($allnotices);
        
         $conversations = array();
         
@@ -89,7 +88,7 @@ class ThreadedNoticeList extends NoticeList
             // Collapse repeats into their originals...
             
             if ($notice->repeat_of) {
-                $orig = Notice::staticGet('id', $notice->repeat_of);
+                $orig = Notice::getKV('id', $notice->repeat_of);
                 if ($orig) {
                     $notice = $orig;
                 }
@@ -123,6 +122,21 @@ class ThreadedNoticeList extends NoticeList
         return $total;
     }
 
+    function _allNotices($notices)
+    {
+        $convId = array();
+        foreach ($notices as $notice) {
+            $convId[] = $notice->conversation;
+        }
+        $convId = array_unique($convId);
+        $allMap = Notice::listGet('conversation', $convId);
+        $allArray = array();
+        foreach ($allMap as $convId => $convNotices) {
+            $allArray = array_merge($allArray, $convNotices);
+        }
+        return $allArray;
+    }
+
     /**
      * returns a new list item for the current notice
      *
@@ -224,7 +238,6 @@ class ThreadedNoticeListItem extends NoticeListItem
                         $item = new ThreadedNoticeListMoreItem($moreCutoff, $this->out, count($notices));
                         $item->show();
                     }
-                    NoticeList::prefill($notices, AVATAR_MINI_SIZE);
                     foreach (array_reverse($notices) as $notice) {
                         if (Event::handle('StartShowThreadedNoticeSub', array($this, $this->notice, $notice))) {
                             $item = new ThreadedNoticeListSubItem($notice, $this->notice, $this->out);
@@ -422,7 +435,7 @@ abstract class NoticeListActorsItem extends NoticeListItem
                 // TRANS: Reference to the logged in user in favourite list.
                 array_unshift($links, _m('FAVELIST', 'You'));
             } else {
-                $profile = Profile::staticGet('id', $id);
+                $profile = Profile::getKV('id', $id);
                 if ($profile) {
                     $links[] = sprintf('<a href="%s">%s</a>',
                                        htmlspecialchars($profile->profileurl),
@@ -544,26 +557,46 @@ class ThreadedNoticeListRepeatsItem extends NoticeListActorsItem
 {
     function getProfiles()
     {
-        $rep = $this->notice->repeatStream();
+        $repeats = $this->notice->getRepeats();
 
         $profiles = array();
-        while ($rep->fetch()) {
+
+        foreach ($repeats as $rep) {
             $profiles[] = $rep->profile_id;
         }
+
         return $profiles;
     }
 
+    function magicList($items)
+    {
+        if (count($items) > 4) {
+            return parent::magicList(array_slice($items, 0, 3));
+        } else {
+            return parent::magicList($items);
+        }
+    }
+
     function getListMessage($count, $you)
     {
         if ($count == 1 && $you) {
             // darn first person being different from third person!
             // TRANS: List message for notice repeated by logged in user.
-            return _m('REPEATLIST', 'You have repeated this notice.');
+            return _m('REPEATLIST', 'You repeated this.');
+        } else if ($count > 4) {
+            // TRANS: List message for when more than 4 people repeat something.
+            // TRANS: %%s is a list of users liking a notice, %d is the number over 4 that like the notice.
+            // TRANS: Plural is decided on the total number of users liking the notice (count of %%s + %d).
+            return sprintf(_m('%%s and %d other repeated this.',
+                              '%%s and %d others repeated this.',
+                              $count - 3),
+                           $count - 3);
         } else {
-            // TRANS: List message for repeated notices.
-            // TRANS: %d is the number of users that have repeated a notice.
-            return sprintf(_m('One person has repeated this notice.',
-                              '%d people have repeated this notice.',
+            // TRANS: List message for favoured notices.
+            // TRANS: %%s is a list of users liking a notice.
+            // TRANS: Plural is based on the number of of users that have favoured a notice.
+            return sprintf(_m('%%s repeated this.',
+                              '%%s repeated this.',
                               $count),
                            $count);
         }