protected function loadPage() { $table = new PhabricatorRepositoryPushEvent(); $conn_r = $table->establishConnection('r'); $data = queryfx_all($conn_r, 'SELECT * FROM %T %Q %Q %Q', $table->getTableName(), $this->buildWhereClause($conn_r), $this->buildOrderClause($conn_r), $this->buildLimitClause($conn_r)); return $table->loadAllFromArray($data); }
private function renderCommitsTable(PhabricatorRepositoryPushEvent $event, array $commits) { $viewer = $this->getRequest()->getUser(); $repository = $event->getRepository(); $rows = array(); foreach ($commits as $identifier => $commit) { if ($commit) { $partial_import = PhabricatorRepositoryCommit::IMPORTED_MESSAGE | PhabricatorRepositoryCommit::IMPORTED_CHANGE; if ($commit->isPartiallyImported($partial_import)) { $summary = AphrontTableView::renderSingleDisplayLine($commit->getSummary()); } else { $summary = phutil_tag('em', array(), pht('Importing...')); } } else { $summary = phutil_tag('em', array(), pht('Discovering...')); } $commit_name = $repository->formatCommitName($identifier); if ($commit) { $commit_name = phutil_tag('a', array('href' => '/' . $commit_name), $commit_name); } $rows[] = array($commit_name, $summary); } $table = id(new AphrontTableView($rows))->setNoDataString(pht("This push didn't push any new commits."))->setHeaders(array(pht('Commit'), pht('Summary')))->setColumnClasses(array('n', 'wide')); return $table; }
private function sendMail(PhabricatorMailTarget $target, PhabricatorRepository $repository, PhabricatorRepositoryPushEvent $event) { $task_data = $this->getTaskData(); $viewer = $target->getViewer(); $locale = PhabricatorEnv::beginScopedLocale($viewer->getTranslation()); $logs = $event->getLogs(); list($ref_lines, $ref_list) = $this->renderRefs($logs); list($commit_lines, $subject_line) = $this->renderCommits($repository, $logs, idx($task_data, 'info', array())); $ref_count = count($ref_lines); $commit_count = count($commit_lines); $handles = id(new PhabricatorHandleQuery())->setViewer($viewer)->withPHIDs(array($event->getPusherPHID()))->execute(); $pusher_name = $handles[$event->getPusherPHID()]->getName(); $repo_name = $repository->getMonogram(); if ($commit_count) { $overview = pht('%s pushed %d commit(s) to %s.', $pusher_name, $commit_count, $repo_name); } else { $overview = pht('%s pushed to %s.', $pusher_name, $repo_name); } $details_uri = PhabricatorEnv::getProductionURI('/diffusion/pushlog/view/' . $event->getID() . '/'); $body = new PhabricatorMetaMTAMailBody(); $body->addRawSection($overview); $body->addLinkSection(pht('DETAILS'), $details_uri); if ($commit_lines) { $body->addTextSection(pht('COMMITS'), implode("\n", $commit_lines)); } if ($ref_lines) { $body->addTextSection(pht('REFERENCES'), implode("\n", $ref_lines)); } $prefix = PhabricatorEnv::getEnvConfig('metamta.diffusion.subject-prefix'); $parts = array(); if ($commit_count) { $parts[] = pht('%s commit(s)', $commit_count); } if ($ref_count) { $parts[] = implode(', ', $ref_list); } $parts = implode(', ', $parts); if ($subject_line) { $subject = pht('(%s) %s', $parts, $subject_line); } else { $subject = pht('(%s)', $parts); } $mail = id(new PhabricatorMetaMTAMail())->setRelatedPHID($event->getPHID())->setSubjectPrefix($prefix)->setVarySubjectPrefix(pht('[Push]'))->setSubject($subject)->setFrom($event->getPusherPHID())->setBody($body->render())->setThreadID($event->getPHID(), $is_new = true)->addHeader('Thread-Topic', $subject)->setIsBulk(true); $target->sendMail($mail); }
private function newPushEvent() { $viewer = $this->getViewer(); return PhabricatorRepositoryPushEvent::initializeNewEvent($viewer)->setRepositoryPHID($this->getRepository()->getPHID())->setRemoteAddress($this->getRemoteAddress())->setRemoteProtocol($this->getRemoteProtocol())->setEpoch(time()); }