$cnt = 0;
$moreCutoff = null;
while ($notice->fetch()) {
- if ($notice->id == $this->notice->id) {
- // Skip!
- continue;
- }
- $cnt++;
- if ($cnt > $max) {
- // boo-yah
- $moreCutoff = clone($notice);
- break;
+ 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));
}
- $notices[] = clone($notice); // *grumble* inefficient as hell
}
if (Event::handle('StartShowThreadedNoticeTail', array($this, $this->notice, &$notices))) {
$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) {
*/
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.
*
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)));
- }
}
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);
- }
}