Changeset View
Changeset View
Standalone View
Standalone View
src/applications/diffusion/view/DiffusionPullLogListView.php
| Show All 16 Lines | public function render() { | ||||
| $handle_phids = array(); | $handle_phids = array(); | ||||
| foreach ($events as $event) { | foreach ($events as $event) { | ||||
| if ($event->getPullerPHID()) { | if ($event->getPullerPHID()) { | ||||
| $handle_phids[] = $event->getPullerPHID(); | $handle_phids[] = $event->getPullerPHID(); | ||||
| } | } | ||||
| } | } | ||||
| $handles = $viewer->loadHandles($handle_phids); | $handles = $viewer->loadHandles($handle_phids); | ||||
| // Figure out which repositories are editable. We only let you see remote | // Only administrators can view remote addresses. | ||||
| // IPs if you have edit capability on a repository. | $remotes_visible = $viewer->getIsAdmin(); | ||||
| $editable_repos = array(); | |||||
| if ($events) { | |||||
| $editable_repos = id(new PhabricatorRepositoryQuery()) | |||||
| ->setViewer($viewer) | |||||
| ->requireCapabilities( | |||||
| array( | |||||
| PhabricatorPolicyCapability::CAN_VIEW, | |||||
| PhabricatorPolicyCapability::CAN_EDIT, | |||||
| )) | |||||
| ->withPHIDs(mpull($events, 'getRepositoryPHID')) | |||||
| ->execute(); | |||||
| $editable_repos = mpull($editable_repos, null, 'getPHID'); | |||||
| } | |||||
| $rows = array(); | $rows = array(); | ||||
| $any_host = false; | |||||
| foreach ($events as $event) { | foreach ($events as $event) { | ||||
| if ($event->getRepositoryPHID()) { | if ($event->getRepositoryPHID()) { | ||||
| $repository = $event->getRepository(); | $repository = $event->getRepository(); | ||||
| } else { | } else { | ||||
| $repository = null; | $repository = null; | ||||
| } | } | ||||
| // Reveal this if it's valid and the user can edit the repository. For | if ($remotes_visible) { | ||||
| // invalid requests you currently have to go fishing in the database. | |||||
| $remote_address = '-'; | |||||
| if ($repository) { | |||||
| if (isset($editable_repos[$event->getRepositoryPHID()])) { | |||||
| $remote_address = $event->getRemoteAddress(); | $remote_address = $event->getRemoteAddress(); | ||||
| } | } else { | ||||
| $remote_address = null; | |||||
| } | } | ||||
| $event_id = $event->getID(); | $event_id = $event->getID(); | ||||
| $repository_link = null; | $repository_link = null; | ||||
| if ($repository) { | if ($repository) { | ||||
| $repository_link = phutil_tag( | $repository_link = phutil_tag( | ||||
| 'a', | 'a', | ||||
| Show All 37 Lines | $table = id(new AphrontTableView($rows)) | ||||
| 'n', | 'n', | ||||
| '', | '', | ||||
| '', | '', | ||||
| 'n', | 'n', | ||||
| 'wide', | 'wide', | ||||
| '', | '', | ||||
| 'n', | 'n', | ||||
| 'right', | 'right', | ||||
| )) | |||||
| ->setColumnVisibility( | |||||
| array( | |||||
| true, | |||||
| true, | |||||
| true, | |||||
| $remotes_visible, | |||||
| )); | )); | ||||
| return $table; | return $table; | ||||
| } | } | ||||
| } | } | ||||