From 8ef9d75bbc9fd1fd322872a95882fca2c792279c Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Thu, 17 Mar 2011 13:07:17 -0700 Subject: [PATCH] Work in progress: faves in the threaded reply area --- lib/threadednoticelist.php | 63 +++++++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/lib/threadednoticelist.php b/lib/threadednoticelist.php index 919c912831..1328ff74dc 100644 --- a/lib/threadednoticelist.php +++ b/lib/threadednoticelist.php @@ -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('%s', + 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; + } + } +}