[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/diffusion/view/ -> DiffusionPushLogListView.php (source)

   1  <?php
   2  
   3  final class DiffusionPushLogListView extends AphrontView {
   4  
   5    private $logs;
   6    private $handles;
   7  
   8    public function setLogs(array $logs) {
   9      assert_instances_of($logs, 'PhabricatorRepositoryPushLog');
  10      $this->logs = $logs;
  11      return $this;
  12    }
  13  
  14    public function setHandles(array $handles) {
  15      $this->handles = $handles;
  16      return $this;
  17    }
  18  
  19    public function render() {
  20      $logs = $this->logs;
  21      $viewer = $this->getUser();
  22      $handles = $this->handles;
  23  
  24      // Figure out which repositories are editable. We only let you see remote
  25      // IPs if you have edit capability on a repository.
  26      $editable_repos = array();
  27      if ($logs) {
  28        $editable_repos = id(new PhabricatorRepositoryQuery())
  29          ->setViewer($viewer)
  30          ->requireCapabilities(
  31            array(
  32              PhabricatorPolicyCapability::CAN_VIEW,
  33              PhabricatorPolicyCapability::CAN_EDIT,
  34            ))
  35          ->withPHIDs(mpull($logs, 'getRepositoryPHID'))
  36          ->execute();
  37        $editable_repos = mpull($editable_repos, null, 'getPHID');
  38      }
  39  
  40      $rows = array();
  41      foreach ($logs as $log) {
  42  
  43        // Reveal this if it's valid and the user can edit the repository.
  44        $remote_addr = '-';
  45        if (isset($editable_repos[$log->getRepositoryPHID()])) {
  46          $remote_long = $log->getPushEvent()->getRemoteAddress();
  47          if ($remote_long) {
  48            $remote_addr = long2ip($remote_long);
  49          }
  50        }
  51  
  52        $event_id = $log->getPushEvent()->getID();
  53  
  54        $callsign = $log->getRepository()->getCallsign();
  55        $rows[] = array(
  56          phutil_tag(
  57            'a',
  58            array(
  59              'href' => '/diffusion/pushlog/view/'.$event_id.'/',
  60            ),
  61            $event_id),
  62          phutil_tag(
  63            'a',
  64            array(
  65              'href' => '/diffusion/'.$callsign.'/',
  66            ),
  67            $callsign),
  68          $handles[$log->getPusherPHID()]->renderLink(),
  69          $remote_addr,
  70          $log->getPushEvent()->getRemoteProtocol(),
  71          $log->getRefType(),
  72          $log->getRefName(),
  73          phutil_tag(
  74            'a',
  75            array(
  76              'href' => '/r'.$callsign.$log->getRefOld(),
  77            ),
  78            $log->getRefOldShort()),
  79          phutil_tag(
  80            'a',
  81            array(
  82              'href' => '/r'.$callsign.$log->getRefNew(),
  83            ),
  84            $log->getRefNewShort()),
  85  
  86          // TODO: Make these human-readable.
  87          $log->getChangeFlags(),
  88          $log->getPushEvent()->getRejectCode(),
  89          phabricator_datetime($log->getEpoch(), $viewer),
  90        );
  91      }
  92  
  93      $table = id(new AphrontTableView($rows))
  94        ->setHeaders(
  95          array(
  96            pht('Push'),
  97            pht('Repository'),
  98            pht('Pusher'),
  99            pht('From'),
 100            pht('Via'),
 101            pht('Type'),
 102            pht('Name'),
 103            pht('Old'),
 104            pht('New'),
 105            pht('Flags'),
 106            pht('Code'),
 107            pht('Date'),
 108          ))
 109        ->setColumnClasses(
 110          array(
 111            '',
 112            '',
 113            '',
 114            '',
 115            '',
 116            '',
 117            'wide',
 118            'n',
 119            'n',
 120            'date',
 121          ));
 122  
 123      return $table;
 124    }
 125  
 126  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1