Page MenuHomePhabricator

D18968.id.diff
No OneTemporary

D18968.id.diff

diff --git a/src/applications/diffusion/application/PhabricatorDiffusionApplication.php b/src/applications/diffusion/application/PhabricatorDiffusionApplication.php
--- a/src/applications/diffusion/application/PhabricatorDiffusionApplication.php
+++ b/src/applications/diffusion/application/PhabricatorDiffusionApplication.php
@@ -121,7 +121,7 @@
$this->getEditRoutePattern('edit/') =>
'DiffusionRepositoryEditController',
'pushlog/' => array(
- '(?:query/(?P<queryKey>[^/]+)/)?' => 'DiffusionPushLogListController',
+ $this->getQueryRoutePattern() => 'DiffusionPushLogListController',
'view/(?P<id>\d+)/' => 'DiffusionPushEventViewController',
),
'pulllog/' => array(
diff --git a/src/applications/repository/query/PhabricatorRepositoryPushLogQuery.php b/src/applications/repository/query/PhabricatorRepositoryPushLogQuery.php
--- a/src/applications/repository/query/PhabricatorRepositoryPushLogQuery.php
+++ b/src/applications/repository/query/PhabricatorRepositoryPushLogQuery.php
@@ -46,19 +46,12 @@
return $this;
}
+ public function newResultObject() {
+ return new PhabricatorRepositoryPushLog();
+ }
+
protected function loadPage() {
- $table = new PhabricatorRepositoryPushLog();
- $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);
+ return $this->loadStandardPage($this->newResultObject());
}
protected function willFilterPage(array $logs) {
@@ -82,61 +75,59 @@
return $logs;
}
- protected function buildWhereClause(AphrontDatabaseConnection $conn_r) {
- $where = array();
+ protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) {
+ $where = parent::buildWhereClauseParts($conn);
- if ($this->ids) {
+ if ($this->ids !== null) {
$where[] = qsprintf(
- $conn_r,
+ $conn,
'id IN (%Ld)',
$this->ids);
}
- if ($this->phids) {
+ if ($this->phids !== null) {
$where[] = qsprintf(
- $conn_r,
+ $conn,
'phid IN (%Ls)',
$this->phids);
}
- if ($this->repositoryPHIDs) {
+ if ($this->repositoryPHIDs !== null) {
$where[] = qsprintf(
- $conn_r,
+ $conn,
'repositoryPHID IN (%Ls)',
$this->repositoryPHIDs);
}
- if ($this->pusherPHIDs) {
+ if ($this->pusherPHIDs !== null) {
$where[] = qsprintf(
- $conn_r,
+ $conn,
'pusherPHID in (%Ls)',
$this->pusherPHIDs);
}
- if ($this->pushEventPHIDs) {
+ if ($this->pushEventPHIDs !== null) {
$where[] = qsprintf(
- $conn_r,
+ $conn,
'pushEventPHID in (%Ls)',
$this->pushEventPHIDs);
}
- if ($this->refTypes) {
+ if ($this->refTypes !== null) {
$where[] = qsprintf(
- $conn_r,
+ $conn,
'refType IN (%Ls)',
$this->refTypes);
}
- if ($this->newRefs) {
+ if ($this->newRefs !== null) {
$where[] = qsprintf(
- $conn_r,
+ $conn,
'refNew IN (%Ls)',
$this->newRefs);
}
- $where[] = $this->buildPagingClause($conn_r);
-
- return $this->formatWhereClause($where);
+ return $where;
}
public function getQueryApplicationClass() {
diff --git a/src/applications/repository/query/PhabricatorRepositoryPushLogSearchEngine.php b/src/applications/repository/query/PhabricatorRepositoryPushLogSearchEngine.php
--- a/src/applications/repository/query/PhabricatorRepositoryPushLogSearchEngine.php
+++ b/src/applications/repository/query/PhabricatorRepositoryPushLogSearchEngine.php
@@ -82,4 +82,146 @@
->setTable($table);
}
+ protected function newExportFields() {
+ $viewer = $this->requireViewer();
+
+ $fields = array(
+ $fields[] = id(new PhabricatorIDExportField())
+ ->setKey('pushID')
+ ->setLabel(pht('Push ID')),
+ $fields[] = id(new PhabricatorStringExportField())
+ ->setKey('protocol')
+ ->setLabel(pht('Protocol')),
+ $fields[] = id(new PhabricatorPHIDExportField())
+ ->setKey('repositoryPHID')
+ ->setLabel(pht('Repository PHID')),
+ $fields[] = id(new PhabricatorStringExportField())
+ ->setKey('repository')
+ ->setLabel(pht('Repository')),
+ $fields[] = id(new PhabricatorPHIDExportField())
+ ->setKey('pusherPHID')
+ ->setLabel(pht('Pusher PHID')),
+ $fields[] = id(new PhabricatorStringExportField())
+ ->setKey('pusher')
+ ->setLabel(pht('Pusher')),
+ $fields[] = id(new PhabricatorPHIDExportField())
+ ->setKey('devicePHID')
+ ->setLabel(pht('Device PHID')),
+ $fields[] = id(new PhabricatorStringExportField())
+ ->setKey('device')
+ ->setLabel(pht('Device')),
+ $fields[] = id(new PhabricatorStringExportField())
+ ->setKey('type')
+ ->setLabel(pht('Ref Type')),
+ $fields[] = id(new PhabricatorStringExportField())
+ ->setKey('name')
+ ->setLabel(pht('Ref Name')),
+ $fields[] = id(new PhabricatorStringExportField())
+ ->setKey('old')
+ ->setLabel(pht('Ref Old')),
+ $fields[] = id(new PhabricatorStringExportField())
+ ->setKey('new')
+ ->setLabel(pht('Ref New')),
+ $fields[] = id(new PhabricatorIntExportField())
+ ->setKey('flags')
+ ->setLabel(pht('Flags')),
+ $fields[] = id(new PhabricatorStringListExportField())
+ ->setKey('flagNames')
+ ->setLabel(pht('Flag Names')),
+ $fields[] = id(new PhabricatorIntExportField())
+ ->setKey('result')
+ ->setLabel(pht('Result')),
+ $fields[] = id(new PhabricatorStringExportField())
+ ->setKey('resultName')
+ ->setLabel(pht('Result Name')),
+ );
+
+ if ($viewer->getIsAdmin()) {
+ $fields[] = id(new PhabricatorStringExportField())
+ ->setKey('remoteAddress')
+ ->setLabel(pht('Remote Address'));
+ }
+
+ return $fields;
+ }
+
+ protected function newExportData(array $logs) {
+ $viewer = $this->requireViewer();
+
+ $phids = array();
+ foreach ($logs as $log) {
+ $phids[] = $log->getPusherPHID();
+ $phids[] = $log->getDevicePHID();
+ $phids[] = $log->getPushEvent()->getRepositoryPHID();
+ }
+ $handles = $viewer->loadHandles($phids);
+
+ $flag_map = PhabricatorRepositoryPushLog::getFlagDisplayNames();
+ $reject_map = PhabricatorRepositoryPushLog::getRejectCodeDisplayNames();
+
+ $export = array();
+ foreach ($logs as $log) {
+ $event = $log->getPushEvent();
+
+ $repository_phid = $event->getRepositoryPHID();
+ if ($repository_phid) {
+ $repository_name = $handles[$repository_phid]->getName();
+ } else {
+ $repository_name = null;
+ }
+
+ $pusher_phid = $log->getPusherPHID();
+ if ($pusher_phid) {
+ $pusher_name = $handles[$pusher_phid]->getName();
+ } else {
+ $pusher_name = null;
+ }
+
+ $device_phid = $log->getDevicePHID();
+ if ($device_phid) {
+ $device_name = $handles[$device_phid]->getName();
+ } else {
+ $device_name = null;
+ }
+
+ $flags = $log->getChangeFlags();
+ $flag_names = array();
+ foreach ($flag_map as $flag_key => $flag_name) {
+ if (($flags & $flag_key) === $flag_key) {
+ $flag_names[] = $flag_name;
+ }
+ }
+
+ $result = $event->getRejectCode();
+ $result_name = idx($reject_map, $result, pht('Unknown ("%s")', $result));
+
+ $map = array(
+ 'pushID' => $event->getID(),
+ 'protocol' => $event->getRemoteProtocol(),
+ 'repositoryPHID' => $repository_phid,
+ 'repository' => $repository_name,
+ 'pusherPHID' => $pusher_phid,
+ 'pusher' => $pusher_name,
+ 'devicePHID' => $device_phid,
+ 'device' => $device_name,
+ 'type' => $log->getRefType(),
+ 'name' => $log->getRefName(),
+ 'old' => $log->getRefOld(),
+ 'new' => $log->getRefNew(),
+ 'flags' => $flags,
+ 'flagNames' => $flag_names,
+ 'result' => $result,
+ 'resultName' => $result_name,
+ );
+
+ if ($viewer->getIsAdmin()) {
+ $map['remoteAddress'] = $event->getRemoteAddress();
+ }
+
+ $export[] = $map;
+ }
+
+ return $export;
+ }
+
}
diff --git a/src/applications/repository/storage/PhabricatorRepositoryPushLog.php b/src/applications/repository/storage/PhabricatorRepositoryPushLog.php
--- a/src/applications/repository/storage/PhabricatorRepositoryPushLog.php
+++ b/src/applications/repository/storage/PhabricatorRepositoryPushLog.php
@@ -55,6 +55,28 @@
->setPusherPHID($viewer->getPHID());
}
+ public static function getFlagDisplayNames() {
+ return array(
+ self::CHANGEFLAG_ADD => pht('Create'),
+ self::CHANGEFLAG_DELETE => pht('Delete'),
+ self::CHANGEFLAG_APPEND => pht('Append'),
+ self::CHANGEFLAG_REWRITE => pht('Rewrite'),
+ self::CHANGEFLAG_DANGEROUS => pht('Dangerous'),
+ self::CHANGEFLAG_ENORMOUS => pht('Enormous'),
+ );
+ }
+
+ public static function getRejectCodeDisplayNames() {
+ return array(
+ self::REJECT_ACCEPT => pht('Accepted'),
+ self::REJECT_DANGEROUS => pht('Rejected: Dangerous'),
+ self::REJECT_HERALD => pht('Rejected: Herald'),
+ self::REJECT_EXTERNAL => pht('Rejected: External Hook'),
+ self::REJECT_BROKEN => pht('Rejected: Broken'),
+ self::REJECT_ENORMOUS => pht('Rejected: Enormous'),
+ );
+ }
+
public static function getHeraldChangeFlagConditionOptions() {
return array(
self::CHANGEFLAG_ADD =>

File Metadata

Mime Type
text/plain
Expires
Fri, Mar 28, 11:52 PM (1 w, 3 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7385790
Default Alt Text
D18968.id.diff (9 KB)

Event Timeline