]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Work in progress: faves in the threaded reply area
authorBrion Vibber <brion@pobox.com>
Thu, 17 Mar 2011 20:07:17 +0000 (13:07 -0700)
committerBrion Vibber <brion@pobox.com>
Thu, 17 Mar 2011 20:07:17 +0000 (13:07 -0700)
lib/threadednoticelist.php

index 919c9128311ed6be4df361132944c101d2e4826b..1328ff74dc70c0dc8cab82a8f01c503db7dd2a9d 100644 (file)
@@ -183,6 +183,8 @@ class ThreadedNoticeListItem extends NoticeListItem
 
             if ($notices) {
                 $this->out->elementStart('ul', 'notices threaded-replies xoxo');
+                $item = new ThreadedNoticeListFavesItem($notice, $this->out);
+                $hasFaves = $item->show();
                 if ($moreCutoff) {
                     $item = new ThreadedNoticeListMoreItem($moreCutoff, $this->out);
                     $item->show();
@@ -316,4 +318,63 @@ class ThreadedNoticeListReplyItem extends NoticeListItem
         $this->out->element('input', array('class' => 'placeholder',
                                            'value' => _('Write a reply...')));
     }
-}
\ No newline at end of file
+}
+
+/**
+ * Placeholder for showing faves...
+ */
+class ThreadedNoticeListFavesItem extends NoticeListItem
+{
+    function show()
+    {
+        return $this->showFaves();
+    }
+
+    function showFaves()
+    {
+        $this->out->text('(QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ)');
+        return 0;
+        // @fixme caching & scalability!
+        $fave = new Fave();
+        $fave->notice_id = $this->notice->id;
+        $fave->find();
+
+        $cur = common_current_user();
+        $profiles = array();
+        $you = false;
+        while ($fave->fetch()) {
+            if ($cur && $cur->id == $fave->user_id) {
+                $you = true;
+            } else {
+                $profiles[] = $fave->user_id;
+            }
+        }
+
+        $links = array();
+        if ($you) {
+            $links[] = _m('FAVELIST', 'You');
+        }
+        foreach ($profiles as $id) {
+            $profile = Profile::staticGet('id', $id);
+            if ($profile) {
+                $links[] = sprintf('<a href="%s" title="%s">%s</a>',
+                                   htmlspecialchars($profile->profileurl),
+                                   htmlspecialchars($profile->getBestName()),
+                                   htmlspecialchars($profile->nickname));
+            }
+        }
+
+        if ($links) {
+            $count = count($links);
+            $msg = _m('%1$s has favored this notice', '%1$s have favored this notice', $count);
+            $out = sprintf($msg, implode(', ', $links));
+
+            $this->out->elementStart('li', array('class' => 'notice-faves'));
+            $this->out->raw($out);
+            $this->out->elementEnd('li');
+            return $count;
+        } else {
+            return 0;
+        }
+    }
+}