a little better notice hiding

This commit is contained in:
Evan Prodromou 2011-04-21 13:37:05 -04:00
parent 10cffa8afa
commit 36d56232c6
3 changed files with 31 additions and 27 deletions

View File

@ -192,6 +192,7 @@ class ThreadedNoticeListItem extends NoticeListItem
$cnt = 0;
$moreCutoff = null;
while ($notice->fetch()) {
if (Event::handle('StartAddNoticeReply', array($this, $this->notice, $notice))) {
if ($notice->id == $this->notice->id) {
// Skip!
continue;
@ -203,6 +204,8 @@ class ThreadedNoticeListItem extends NoticeListItem
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))) {
@ -215,8 +218,9 @@ class ThreadedNoticeListItem extends NoticeListItem
$hasRepeats = $item->show();
if ($notices) {
if ($moreCutoff) {
$item = new ThreadedNoticeListMoreItem($moreCutoff, $this->out);
$item = new ThreadedNoticeListMoreItem($moreCutoff, $this->out, count($notices));
$item->show();
}
foreach (array_reverse($notices) as $notice) {
@ -306,6 +310,14 @@ class ThreadedNoticeListSubItem extends NoticeListItem
*/
class ThreadedNoticeListMoreItem extends NoticeListItem
{
protected $cnt;
function __construct($notice, $out, $cnt)
{
parent::__construct($notice, $out);
$this->cnt = $cnt;
}
/**
* recipe function for displaying a single notice.
*

View File

@ -348,17 +348,13 @@ class EventPlugin extends MicroappPlugin
return true;
}
function onStartShowThreadedNoticeTail($nli, $notice, &$children)
function onStartAddNoticeReply($nli, $parent, $child)
{
// Filter out any poll responses
if ($notice->object_type == Happening::OBJECT_TYPE) {
$children = array_filter($children, array($this, 'isNotRSVP'));
if (($parent->object_type == Happening::OBJECT_TYPE) &&
in_array($child->object_type, array(RSVP::POSITIVE, RSVP::NEGATIVE, RSVP::POSSIBLE))) {
return false;
}
return true;
}
function isNotRSVP($notice)
{
return (!in_array($notice->object_type, array(RSVP::POSITIVE, RSVP::NEGATIVE, RSVP::POSSIBLE)));
}
}

View File

@ -481,17 +481,13 @@ class PollPlugin extends MicroAppPlugin
return _m('APPTITLE','Poll');
}
function onStartShowThreadedNoticeTail($nli, $notice, &$children)
function onStartAddNoticeReply($nli, $parent, $child)
{
// Filter out any poll responses
if ($notice->object_type == self::POLL_OBJECT) {
$children = array_filter($children, array($this, 'isNotPollResponse'));
if ($parent->object_type == self::POLL_OBJECT &&
$child->object_type == self::POLL_RESPONSE_OBJECT) {
return false;
}
return true;
}
function isNotPollResponse($notice)
{
return ($notice->object_type != self::POLL_RESPONSE_OBJECT);
}
}