[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/diffusion/controller/ -> DiffusionRepositoryEditSubversionController.php (source)

   1  <?php
   2  
   3  final class DiffusionRepositoryEditSubversionController
   4    extends DiffusionRepositoryEditController {
   5  
   6    public function processRequest() {
   7      $request = $this->getRequest();
   8      $viewer = $request->getUser();
   9      $drequest = $this->diffusionRequest;
  10      $repository = $drequest->getRepository();
  11  
  12      $repository = id(new PhabricatorRepositoryQuery())
  13        ->setViewer($viewer)
  14        ->requireCapabilities(
  15          array(
  16            PhabricatorPolicyCapability::CAN_VIEW,
  17            PhabricatorPolicyCapability::CAN_EDIT,
  18          ))
  19        ->withIDs(array($repository->getID()))
  20        ->executeOne();
  21  
  22      if (!$repository) {
  23        return new Aphront404Response();
  24      }
  25  
  26      switch ($repository->getVersionControlSystem()) {
  27        case PhabricatorRepositoryType::REPOSITORY_TYPE_GIT:
  28        case PhabricatorRepositoryType::REPOSITORY_TYPE_MERCURIAL:
  29          throw new Exception(
  30            pht('Git and Mercurial do not support editing SVN properties!'));
  31        case PhabricatorRepositoryType::REPOSITORY_TYPE_SVN:
  32          break;
  33        default:
  34          throw new Exception(
  35            pht('Repository has unknown version control system!'));
  36      }
  37  
  38      $edit_uri = $this->getRepositoryControllerURI($repository, 'edit/');
  39  
  40      $v_subpath = $repository->getHumanReadableDetail('svn-subpath');
  41      $v_uuid = $repository->getUUID();
  42  
  43      if ($request->isFormPost()) {
  44        $v_subpath = $request->getStr('subpath');
  45        $v_uuid = $request->getStr('uuid');
  46  
  47        $xactions = array();
  48        $template = id(new PhabricatorRepositoryTransaction());
  49  
  50        $type_subpath = PhabricatorRepositoryTransaction::TYPE_SVN_SUBPATH;
  51        $type_uuid = PhabricatorRepositoryTransaction::TYPE_UUID;
  52  
  53        $xactions[] = id(clone $template)
  54          ->setTransactionType($type_subpath)
  55          ->setNewValue($v_subpath);
  56  
  57        $xactions[] = id(clone $template)
  58          ->setTransactionType($type_uuid)
  59          ->setNewValue($v_uuid);
  60  
  61        id(new PhabricatorRepositoryEditor())
  62          ->setContinueOnNoEffect(true)
  63          ->setContentSourceFromRequest($request)
  64          ->setActor($viewer)
  65          ->applyTransactions($repository, $xactions);
  66  
  67        return id(new AphrontRedirectResponse())->setURI($edit_uri);
  68      }
  69  
  70      $content = array();
  71  
  72      $crumbs = $this->buildApplicationCrumbs();
  73      $crumbs->addTextCrumb(pht('Edit Subversion Info'));
  74  
  75      $title = pht('Edit Subversion Info (%s)', $repository->getName());
  76  
  77      $policies = id(new PhabricatorPolicyQuery())
  78        ->setViewer($viewer)
  79        ->setObject($repository)
  80        ->execute();
  81  
  82      $form = id(new AphrontFormView())
  83        ->setUser($viewer)
  84        ->appendRemarkupInstructions(
  85          pht(
  86            "You can set the **Repository UUID**, which will help Phabriactor ".
  87            "provide better context in some cases. You can find the UUID of a ".
  88            "repository by running `svn info`.".
  89            "\n\n".
  90            "If you want to import only part of a repository, like `trunk/`, ".
  91            "you can set a path in **Import Only**. Phabricator will ignore ".
  92            "commits which do not affect this path."))
  93        ->appendChild(
  94          id(new AphrontFormTextControl())
  95            ->setName('uuid')
  96            ->setLabel(pht('Repository UUID'))
  97            ->setValue($v_uuid))
  98        ->appendChild(
  99          id(new AphrontFormTextControl())
 100            ->setName('subpath')
 101            ->setLabel(pht('Import Only'))
 102            ->setValue($v_subpath))
 103        ->appendChild(
 104          id(new AphrontFormSubmitControl())
 105            ->setValue(pht('Save Subversion Info'))
 106            ->addCancelButton($edit_uri));
 107  
 108      $form_box = id(new PHUIObjectBoxView())
 109        ->setHeaderText($title)
 110        ->setForm($form);
 111  
 112      return $this->buildApplicationPage(
 113        array(
 114          $crumbs,
 115          $form_box,
 116        ),
 117        array(
 118          'title' => $title,
 119        ));
 120    }
 121  
 122  }


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