/** * finish the notice * * Close the last elements in the notice list item * * @return void */ function showEnd() { $max = $this->initialItems(); if (!$this->repeat instanceof Notice) { $stream = new ConversationNoticeStream($this->notice->conversation, $this->userProfile); $notice = $stream->getNotices(0, $max + 2); $notices = array(); $cnt = 0; $moreCutoff = null; while ($notice->fetch()) { if (Event::handle('StartAddNoticeReply', array($this, $this->notice, $notice))) { // Don't list repeats as separate notices in a conversation if (!empty($notice->repeat_of)) { continue; } if ($notice->id == $this->notice->id) { // Skip! continue; } $cnt++; if ($cnt > $max) { // boo-yah $moreCutoff = clone $notice; break; } $notices[] = clone $notice; // *grumble* inefficient as hell Event::handle('EndAddNoticeReply', array($this, $this->notice, $notice)); } } if (Event::handle('StartShowThreadedNoticeTail', array($this, $this->notice, &$notices))) { $threadActive = count($notices) > 0; // has this thread had any activity? $this->out->elementStart('ul', 'notices threaded-replies xoxo'); if (Event::handle('StartShowThreadedNoticeTailItems', array($this, $this->notice, &$threadActive))) { // Repeats and Faves/Likes are handled in plugins. Event::handle('EndShowThreadedNoticeTailItems', array($this, $this->notice, &$threadActive)); } if (count($notices) > 0) { if ($moreCutoff) { $item = new ThreadedNoticeListMoreItem($moreCutoff, $this->out, count($notices)); $item->show(); } foreach (array_reverse($notices) as $notice) { if (Event::handle('StartShowThreadedNoticeSub', array($this, $this->notice, $notice))) { $item = new ThreadedNoticeListSubItem($notice, $this->notice, $this->out); $item->show(); Event::handle('EndShowThreadedNoticeSub', array($this, $this->notice, $notice)); } } } Event::handle('EndShowThreadedNoticeTail', array($this, $this->notice, $notices)); $this->out->elementEnd('ul'); } } parent::showEnd(); }
/** * finish the notice * * Close the last elements in the notice list item * * @return void */ function showEnd() { $max = $this->initialItems(); if (!$this->repeat) { $stream = new ConversationNoticeStream($this->notice->conversation, $this->userProfile); $notice = $stream->getNotices(0, $max + 2); $notices = array(); $cnt = 0; $moreCutoff = null; while ($notice->fetch()) { if (Event::handle('StartAddNoticeReply', array($this, $this->notice, $notice))) { if ($notice->id == $this->notice->id) { // Skip! continue; } $cnt++; if ($cnt > $max) { // boo-yah $moreCutoff = clone $notice; break; } $notices[] = clone $notice; // *grumble* inefficient as hell Event::handle('EndAddNoticeReply', array($this, $this->notice, $notice)); } } if (Event::handle('StartShowThreadedNoticeTail', array($this, $this->notice, &$notices))) { $this->out->elementStart('ul', 'notices threaded-replies xoxo'); $item = new ThreadedNoticeListFavesItem($this->notice, $this->out); $hasFaves = $item->show(); $item = new ThreadedNoticeListRepeatsItem($this->notice, $this->out); $hasRepeats = $item->show(); if ($notices) { if ($moreCutoff) { $item = new ThreadedNoticeListMoreItem($moreCutoff, $this->out, count($notices)); $item->show(); } foreach (array_reverse($notices) as $notice) { if (Event::handle('StartShowThreadedNoticeSub', array($this, $this->notice, $notice))) { $item = new ThreadedNoticeListSubItem($notice, $this->notice, $this->out); $item->show(); Event::handle('StartShowThreadedNoticeSub', array($this, $this->notice, $notice)); } } } if ($notices || $hasFaves || $hasRepeats) { // @fixme do a proper can-post check that's consistent // with the JS side if (common_current_user()) { $item = new ThreadedNoticeListReplyItem($this->notice, $this->out); $item->show(); } } $this->out->elementEnd('ul'); Event::handle('EndShowThreadedNoticeTail', array($this, $this->notice, $notices)); } } parent::showEnd(); }