Support data export on push logs
Summary: Depends on D18967. Ref T13049. Nothing too fancy going on here. Test Plan: Exported push logs, looked at the export, seemed sensible. Reviewers: amckinley Reviewed By: amckinley Maniphest Tasks: T13049 Differential Revision: https://secure.phabricator.com/D18968
This commit is contained in:
@@ -82,4 +82,146 @@ final class PhabricatorRepositoryPushLogSearchEngine
|
||||
->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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user