protected function execute(ConduitAPIRequest $request) { $query = new PhabricatorChatLogQuery(); $channels = $request->getValue('channels'); if ($channels) { $query->withChannels($channels); } $limit = $request->getValue('limit'); if (!$limit) { $limit = 100; } $query->setLimit($limit); $logs = $query->execute(); $results = array(); foreach ($logs as $log) { $results[] = array('channel' => $log->getChannel(), 'epoch' => $log->getEpoch(), 'author' => $log->getAuthor(), 'type' => $log->getType(), 'message' => $log->getMessage(), 'loggedByPHID' => $log->getLoggedByPHID()); } return $results; }
public function processRequest() { $request = $this->getRequest(); $user = $request->getUser(); $offset = $request->getInt('offset', 0); $page_size = 1000; $pager = new AphrontPagerView(); $request_uri = $request->getRequestURI(); $pager->setURI($request_uri, 'offset'); $pager->setPageSize($page_size); $pager->setOffset($offset); $query = new PhabricatorChatLogQuery(); $query->withChannels(array($this->channel)); $logs = $query->executeWithPager($pager); require_celerity_resource('phabricator-chatlog-css'); $last_author = null; $last_epoch = null; $row_idx = 0; $row_colors = array('normal', 'alternate'); $out = array(); $out[] = '<table class="phabricator-chat-log">'; foreach ($logs as $log) { $this_author = $log->getAuthor(); $this_epoch = $log->getEpoch(); if ($this_author !== $last_author || $this_epoch - 60 * 5 > $last_epoch) { ++$row_idx; $out[] = '<tr class="initial ' . $row_colors[$row_idx % 2] . '">'; $out[] = '<td class="timestamp">' . phabricator_datetime($log->getEpoch(), $user) . '</td>'; $author = $log->getAuthor(); $author = phutil_utf8_shorten($author, 18); $out[] = '<td class="author">' . phutil_escape_html($author) . '</td>'; } else { $out[] = '<tr class="' . $row_colors[$row_idx % 2] . '">'; $out[] = '<td class="similar" colspan="2"></td>'; } $out[] = '<td class="message">' . phutil_escape_html($log->getMessage()) . '</td>'; $out[] = '</tr>'; $last_author = $this_author; $last_epoch = $this_epoch; } $out[] = '</table>'; return $this->buildStandardPageResponse(array(implode("\n", $out), $pager), array('title' => 'Channel Log')); }