]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Repeats shown in threaded noticelist now handled by plugin
authorMikael Nordfeldth <mmn@hethane.se>
Thu, 12 Mar 2015 18:49:20 +0000 (19:49 +0100)
committerMikael Nordfeldth <mmn@hethane.se>
Thu, 12 Mar 2015 18:49:20 +0000 (19:49 +0100)
classes/Notice.php
lib/noticelist.php
lib/threadednoticelist.php
plugins/Favorite/FavoritePlugin.php
plugins/Share/SharePlugin.php
plugins/Share/lib/threadednoticelistinlinerepeatsitem.php [new file with mode: 0644]
plugins/Share/lib/threadednoticelistrepeatsitem.php [new file with mode: 0644]

index 8162dddc85baa049966918797577f41ffc414195..24a4c88d903d632d43139b34bdbe2987afecb9f7 100644 (file)
@@ -2901,31 +2901,4 @@ class Notice extends Managed_DataObject
             $notice->_setReplies($ids);
         }
     }
-
-    protected $_repeats = array();
-
-    function getRepeats()
-    {
-        if (isset($this->_repeats[$this->id])) {
-            return $this->_repeats[$this->id];
-        }
-        $repeatMap = Notice::listGet('repeat_of', array($this->id));
-        $this->_repeats[$this->id] = $repeatMap[$this->id];
-        return $this->_repeats[$this->id];
-    }
-
-    function _setRepeats($repeats)
-    {
-        $this->_repeats[$this->id] = $repeats;
-    }
-
-    static function fillRepeats(&$notices)
-    {
-        $ids = self::_idsOf($notices);
-        $repeatMap = Notice::listGet('repeat_of', $ids);
-        foreach ($notices as $notice) {
-               $repeats = $repeatMap[$notice->id];
-            $notice->_setRepeats($repeats);
-        }
-    }
 }
index c9d43c097a20437de1aa5e4dfeedc5fc6aef51bc..727be89bc6d0da56effbe0c05bd9e176d323639d 100644 (file)
@@ -155,15 +155,9 @@ class NoticeList extends Widget
 
             // 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));
         }
     }
index 9eaf6493c67631a52d125f778db0a70119614971..acb9efb972efd702b9ba5a3c3a82b3809cd39ec3 100644 (file)
@@ -27,7 +27,7 @@
  * @link      http://status.net/
  */
 
-if (!defined('GNUSOCIAL') && !defined('STATUSNET')) { exit(1); }
+if (!defined('GNUSOCIAL')) { exit(1); }
 
 /**
  * widget for displaying a list of notices
@@ -229,13 +229,7 @@ class ThreadedNoticeListItem extends NoticeListItem
                 $this->out->elementStart('ul', 'notices threaded-replies xoxo');
 
                 if (Event::handle('StartShowThreadedNoticeTailItems', array($this, $this->notice, &$threadActive))) {
-
-                    // Show the repeats-button for this notice. If there are repeats,
-                    // the show() function will return true, definitely setting our
-                    // $threadActive flag, which will be used later to show a reply box.
-                    $item = new ThreadedNoticeListRepeatsItem($this->notice, $this->out);
-                    $threadActive = $item->show() || $threadActive;
-
+                    // Repeats and Faves/Likes are handled in plugins.
                     Event::handle('EndShowThreadedNoticeTailItems', array($this, $this->notice, &$threadActive));
                 }
 
@@ -309,8 +303,7 @@ class ThreadedNoticeListSubItem extends NoticeListItem
     {
         $threadActive = null;   // unused here for now, but maybe in the future?
         if (Event::handle('StartShowThreadedNoticeTailItems', array($this, $this->notice, &$threadActive))) {
-            $item = new ThreadedNoticeListInlineRepeatsItem($this->notice, $this->out);
-            $hasRepeats = $item->show();
+            // Repeats and Faves/Likes are handled in plugins.
             Event::handle('EndShowThreadedNoticeTailItems', array($this, $this->notice, &$threadActive));
         }
         parent::showEnd();
@@ -374,80 +367,3 @@ class ThreadedNoticeListMoreItem extends NoticeListItem
         $this->out->element('a', array('href' => $url), $msg);
     }
 }
-
-/**
- * Placeholder for showing repeats...
- */
-class ThreadedNoticeListRepeatsItem extends NoticeListActorsItem
-{
-    function getProfiles()
-    {
-        $repeats = $this->notice->getRepeats();
-
-        $profiles = array();
-
-        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 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: %%s is a list of users who have repeated a notice.
-            // TRANS: Plural is based on the number of of users that have repeated a notice.
-            return sprintf(_m('%%s repeated this.',
-                              '%%s repeated this.',
-                              $count),
-                           $count);
-        }
-    }
-
-    function showStart()
-    {
-        $this->out->elementStart('li', array('class' => 'notice-data notice-repeats'));
-    }
-
-    function showEnd()
-    {
-        $this->out->elementEnd('li');
-    }
-}
-
-// @todo FIXME: needs documentation.
-class ThreadedNoticeListInlineRepeatsItem extends ThreadedNoticeListRepeatsItem
-{
-    function showStart()
-    {
-        $this->out->elementStart('div', array('class' => 'notice-repeats'));
-    }
-
-    function showEnd()
-    {
-        $this->out->elementEnd('div');
-    }
-}
index f298fc3e928b8fca1a20c642569f4f863bac550f..55716016bd6448824061ed52fa3f9203c5f6182b 100644 (file)
@@ -361,7 +361,7 @@ class FavoritePlugin extends ActivityVerbHandlerPlugin
         return true;
     }
 
-    public function onStartShowThreadedNoticeTailItems(NoticeListItem $nli, Notice $notice, &$threadActive)
+    public function onEndShowThreadedNoticeTailItems(NoticeListItem $nli, Notice $notice, &$threadActive)
     {
         if ($nli instanceof ThreadedNoticeListSubItem) {
             // The sub-items are replies to a conversation, thus we use different HTML elements etc.
index ec15f3ebdbce1d33326e795eb25658e734e7a79f..582f7d3e2e0de4e2a4b1d893230e59ba97052a97 100644 (file)
@@ -174,7 +174,19 @@ class SharePlugin extends ActivityVerbHandlerPlugin
         return true;
     }
 
-    // API stuff
+    // Layout stuff
+
+    public function onEndShowThreadedNoticeTailItems(NoticeListItem $nli, Notice $notice, &$threadActive)
+    {
+        if ($nli instanceof ThreadedNoticeListSubItem) {
+            // The sub-items are replies to a conversation, thus we use different HTML elements etc.
+            $item = new ThreadedNoticeListInlineRepeatsItem($notice, $nli->out);
+        } else {
+            $item = new ThreadedNoticeListRepeatsItem($notice, $nli->out);
+        }
+        $threadActive = $item->show() || $threadActive;
+        return true;
+    }
 
     /**
      * show the "repeat" form in the notice options element
diff --git a/plugins/Share/lib/threadednoticelistinlinerepeatsitem.php b/plugins/Share/lib/threadednoticelistinlinerepeatsitem.php
new file mode 100644 (file)
index 0000000..a4bcc66
--- /dev/null
@@ -0,0 +1,16 @@
+<?php
+
+if (!defined('GNUSOCIAL')) { exit(1); }
+
+class ThreadedNoticeListInlineRepeatsItem extends ThreadedNoticeListRepeatsItem
+{
+    function showStart()
+    {
+        $this->out->elementStart('div', array('class' => 'notice-repeats'));
+    }
+
+    function showEnd()
+    {
+        $this->out->elementEnd('div');
+    }
+}
diff --git a/plugins/Share/lib/threadednoticelistrepeatsitem.php b/plugins/Share/lib/threadednoticelistrepeatsitem.php
new file mode 100644 (file)
index 0000000..9117a7a
--- /dev/null
@@ -0,0 +1,65 @@
+<?php
+
+if (!defined('GNUSOCIAL')) { exit(1); }
+
+/**
+ * Placeholder for showing repeats...
+ */
+class ThreadedNoticeListRepeatsItem extends NoticeListActorsItem
+{
+    function getProfiles()
+    {
+        $repeats = Notice::listGet('repeat_of', array($this->notice->getID()));
+
+        $profiles = array();
+        foreach ($repeats[$this->notice->getID()] 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 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: %%s is a list of users who have repeated a notice.
+            // TRANS: Plural is based on the number of of users that have repeated a notice.
+            return sprintf(_m('%%s repeated this.',
+                              '%%s repeated this.',
+                              $count),
+                           $count);
+        }
+    }
+
+    function showStart()
+    {
+        $this->out->elementStart('li', array('class' => 'notice-data notice-repeats'));
+    }
+
+    function showEnd()
+    {
+        $this->out->elementEnd('li');
+    }
+}