[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/phragment/controller/ -> PhragmentHistoryController.php (source)

   1  <?php
   2  
   3  final class PhragmentHistoryController extends PhragmentController {
   4  
   5    private $dblob;
   6  
   7    public function shouldAllowPublic() {
   8      return true;
   9    }
  10  
  11    public function willProcessRequest(array $data) {
  12      $this->dblob = idx($data, 'dblob', '');
  13    }
  14  
  15    public function processRequest() {
  16      $request = $this->getRequest();
  17      $viewer = $request->getUser();
  18  
  19      $parents = $this->loadParentFragments($this->dblob);
  20      if ($parents === null) {
  21        return new Aphront404Response();
  22      }
  23      $current = idx($parents, count($parents) - 1, null);
  24  
  25      $path = $current->getPath();
  26  
  27      $crumbs = $this->buildApplicationCrumbsWithPath($parents);
  28      if ($this->hasApplicationCapability(
  29        PhragmentCanCreateCapability::CAPABILITY)) {
  30        $crumbs->addAction(
  31          id(new PHUIListItemView())
  32            ->setName(pht('Create Fragment'))
  33            ->setHref($this->getApplicationURI('/create/'.$path))
  34            ->setIcon('fa-plus-square'));
  35      }
  36  
  37      $current_box = $this->createCurrentFragmentView($current, true);
  38  
  39      $versions = id(new PhragmentFragmentVersionQuery())
  40        ->setViewer($viewer)
  41        ->withFragmentPHIDs(array($current->getPHID()))
  42        ->execute();
  43  
  44      $list = id(new PHUIObjectItemListView())
  45        ->setUser($viewer);
  46  
  47      $file_phids = mpull($versions, 'getFilePHID');
  48      $files = id(new PhabricatorFileQuery())
  49        ->setViewer($viewer)
  50        ->withPHIDs($file_phids)
  51        ->execute();
  52      $files = mpull($files, null, 'getPHID');
  53  
  54      $can_edit = PhabricatorPolicyFilter::hasCapability(
  55        $viewer,
  56        $current,
  57        PhabricatorPolicyCapability::CAN_EDIT);
  58  
  59      $first = true;
  60      foreach ($versions as $version) {
  61        $item = id(new PHUIObjectItemView());
  62        $item->setHeader('Version '.$version->getSequence());
  63        $item->setHref($version->getURI());
  64        $item->addAttribute(phabricator_datetime(
  65          $version->getDateCreated(),
  66          $viewer));
  67  
  68        if ($version->getFilePHID() === null) {
  69          $item->setDisabled(true);
  70          $item->addAttribute('Deletion');
  71        }
  72  
  73        if (!$first && $can_edit) {
  74          $item->addAction(id(new PHUIListItemView())
  75            ->setIcon('fa-refresh')
  76            ->setRenderNameAsTooltip(true)
  77            ->setWorkflow(true)
  78            ->setName(pht('Revert to Here'))
  79            ->setHref($this->getApplicationURI(
  80              'revert/'.$version->getID().'/'.$current->getPath())));
  81        }
  82  
  83        $disabled = !isset($files[$version->getFilePHID()]);
  84        $action = id(new PHUIListItemView())
  85          ->setIcon('fa-download')
  86          ->setDisabled($disabled || !$this->isCorrectlyConfigured())
  87          ->setRenderNameAsTooltip(true)
  88          ->setName(pht('Download'));
  89        if (!$disabled && $this->isCorrectlyConfigured()) {
  90          $action->setHref($files[$version->getFilePHID()]
  91            ->getDownloadURI($version->getURI()));
  92        }
  93        $item->addAction($action);
  94  
  95        $list->addItem($item);
  96  
  97        $first = false;
  98      }
  99  
 100      return $this->buildApplicationPage(
 101        array(
 102          $crumbs,
 103          $this->renderConfigurationWarningIfRequired(),
 104          $current_box,
 105          $list,
 106        ),
 107        array(
 108          'title' => pht('Fragment History'),
 109        ));
 110    }
 111  
 112  }


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