From 79f3c0939b413ed73af0a80a6066e83c9d056b7d Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Fri, 8 Apr 2011 18:03:34 -0400 Subject: [PATCH] use conversationnoticestream in conversationaction --- actions/conversation.php | 196 ++++----------------------------------- 1 file changed, 20 insertions(+), 176 deletions(-) diff --git a/actions/conversation.php b/actions/conversation.php index 8d11df37bc..cfe4e47fe6 100644 --- a/actions/conversation.php +++ b/actions/conversation.php @@ -47,8 +47,11 @@ require_once INSTALLDIR.'/lib/noticelist.php'; */ class ConversationAction extends Action { - var $id = null; - var $page = null; + var $id = null; + var $page = null; + var $notices = null; + + const MAX_NOTICES = 500; /** * Initialization. @@ -69,6 +72,19 @@ class ConversationAction extends Action if (empty($this->page)) { $this->page = 1; } + + $cur = common_current_user(); + + if (empty($cur)) { + $profile = null; + } else { + $profile = $cur->getProfile(); + } + + $stream = new ConversationNoticeStream($this->id, $profile); + + $this->notices = $stream->getNotices(0, self::MAX_NOTICES, null, null); + return true; } @@ -106,11 +122,9 @@ class ConversationAction extends Action */ function showContent() { - $notices = Notice::conversationStream($this->id, null, null); + $tnl = new ThreadedNoticeList($this->notices, $this); - $ct = new ConversationTree($notices, $this); - - $cnt = $ct->show(); + $cnt = $tnl->show(); } function isReadOnly() @@ -118,173 +132,3 @@ class ConversationAction extends Action return true; } } - -/** - * Conversation tree - * - * The widget class for displaying a hierarchical list of notices. - * - * @category Widget - * @package StatusNet - * @author Evan Prodromou - * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 - * @link http://status.net/ - */ -class ConversationTree extends NoticeList -{ - var $tree = null; - var $table = null; - - /** - * Show the tree of notices - * - * @return void - */ - function show() - { - $cnt = $this->_buildTree(); - - $this->out->elementStart('div', array('id' =>'notices_primary')); - // TRANS: Header on conversation page. Hidden by default (h2). - $this->out->element('h2', null, _('Notices')); - $this->out->elementStart('ol', array('class' => 'notices xoxo')); - - if (array_key_exists('root', $this->tree)) { - $rootid = $this->tree['root'][0]; - $this->showNoticePlus($rootid); - } - - $this->out->elementEnd('ol'); - $this->out->elementEnd('div'); - - return $cnt; - } - - function _buildTree() - { - $cnt = 0; - - $this->tree = array(); - $this->table = array(); - - while ($this->notice->fetch()) { - - $cnt++; - - $id = $this->notice->id; - $notice = clone($this->notice); - - $this->table[$id] = $notice; - - if (is_null($notice->reply_to)) { - $this->tree['root'] = array($notice->id); - } else if (array_key_exists($notice->reply_to, $this->tree)) { - $this->tree[$notice->reply_to][] = $notice->id; - } else { - $this->tree[$notice->reply_to] = array($notice->id); - } - } - - return $cnt; - } - - /** - * Shows a notice plus its list of children. - * - * @param integer $id ID of the notice to show - * - * @return void - */ - function showNoticePlus($id) - { - $notice = $this->table[$id]; - - // We take responsibility for doing the li - - $this->out->elementStart('li', array('class' => 'hentry notice', - 'id' => 'notice-' . $id)); - - $item = $this->newListItem($notice); - $item->show(); - - if (array_key_exists($id, $this->tree)) { - $children = $this->tree[$id]; - - $this->out->elementStart('ol', array('class' => 'notices')); - - sort($children); - - foreach ($children as $child) { - $this->showNoticePlus($child); - } - - $this->out->elementEnd('ol'); - } - - $this->out->elementEnd('li'); - } - - /** - * Override parent class to return our preferred item. - * - * @param Notice $notice Notice to display - * - * @return NoticeListItem a list item to show - */ - function newListItem($notice) - { - return new ConversationTreeItem($notice, $this->out); - } -} - -/** - * Conversation tree list item - * - * Special class of NoticeListItem for use inside conversation trees. - * - * @category Widget - * @package StatusNet - * @author Evan Prodromou - * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 - * @link http://status.net/ - */ -class ConversationTreeItem extends NoticeListItem -{ - /** - * start a single notice. - * - * The default creates the
  • ; we skip, since the ConversationTree - * takes care of that. - * - * @return void - */ - function showStart() - { - return; - } - - /** - * finish the notice - * - * The default closes the
  • ; we skip, since the ConversationTree - * takes care of that. - * - * @return void - */ - function showEnd() - { - return; - } - - /** - * show link to notice conversation page - * - * Since we're only used on the conversation page, we skip this - * - * @return void - */ - function showContext() - { - return; - } -}