$b; }; $events = $events->order_by($sort); $eventCount = count($events); $events = new IteratorIterator($events->getIterator()); $events->rewind(); $event = $events->current(); $htmlId = $options['html-id'] ?: ('thread-'.$this->getId()); $thread_attachments = array(); foreach (Attachment::objects()->filter(array( 'thread_entry__thread__id' => $this->getId(), ))->select_related('thread_entry', 'file') as $att) { $thread_attachments[$att->object_id][] = $att; } $tid = $this->getObJectId(); if ($this->getObjectType() == 'T') $ticket = Ticket::lookup($tid); ?>
exists(true)) { $buckets = ThreadEntry::sortEntries($entries, $ticket); // TODO: Consider adding a date boundary to indicate significant // changes in dates between thread items. foreach ($buckets as $entry) { $entry = ThreadEntry::lookup($entry->id); $extra = $entry->getMergeData(); if ($entry->hasFlag(ThreadEntry::FLAG_CHILD) && $extra) { if (!is_array($extra)) $extra = json_decode($extra, true); if (!$thread = Thread::objects()->filter(array('id'=>$extra['thread']))->values_flat('extra')) continue; foreach ($thread as $t) $threadExtra = $t[0]; $threadExtra = json_decode($threadExtra, true); $number = $threadExtra['number']; } else $number = null; // Emit all events prior to this entry while ($event && $cmp($event->timestamp, $entry->created)) { $event->render(ThreadEvent::MODE_STAFF); $events->next(); $event = $events->current(); } ?>
render(ThreadEvent::MODE_STAFF); $events->next(); $event = $events->current(); } // This should never happen if (count($entries) + $eventCount == 0) { echo '

'.__('No entries have been posted to this thread.').'

'; } ?>