[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/project/controller/ -> PhabricatorProjectBoardImportController.php (source)

   1  <?php
   2  
   3  final class PhabricatorProjectBoardImportController
   4    extends PhabricatorProjectBoardController {
   5  
   6    private $projectID;
   7  
   8    public function willProcessRequest(array $data) {
   9      $this->projectID = $data['projectID'];
  10    }
  11  
  12    public function processRequest() {
  13      $request = $this->getRequest();
  14      $viewer = $request->getUser();
  15  
  16      $project = id(new PhabricatorProjectQuery())
  17        ->setViewer($viewer)
  18        ->requireCapabilities(
  19          array(
  20            PhabricatorPolicyCapability::CAN_VIEW,
  21            PhabricatorPolicyCapability::CAN_EDIT,
  22          ))
  23        ->withIDs(array($this->projectID))
  24        ->executeOne();
  25      if (!$project) {
  26        return new Aphront404Response();
  27      }
  28      $this->setProject($project);
  29  
  30      $columns = id(new PhabricatorProjectColumnQuery())
  31        ->setViewer($viewer)
  32        ->withProjectPHIDs(array($project->getPHID()))
  33        ->execute();
  34      if ($columns) {
  35        return new Aphront400Response();
  36      }
  37  
  38      $project_id = $project->getID();
  39      $board_uri = $this->getApplicationURI("board/{$project_id}/");
  40  
  41      if ($request->isFormPost()) {
  42        $import_phid = $request->getArr('importProjectPHID');
  43        $import_phid = reset($import_phid);
  44  
  45        $import_columns = id(new PhabricatorProjectColumnQuery())
  46          ->setViewer($viewer)
  47          ->withProjectPHIDs(array($import_phid))
  48          ->execute();
  49        if (!$import_columns) {
  50          return new Aphront400Response();
  51        }
  52  
  53        $table = id(new PhabricatorProjectColumn())
  54          ->openTransaction();
  55        foreach ($import_columns as $import_column) {
  56          if ($import_column->isHidden()) {
  57            continue;
  58          }
  59          $new_column = PhabricatorProjectColumn::initializeNewColumn($viewer)
  60            ->setSequence($import_column->getSequence())
  61            ->setProjectPHID($project->getPHID())
  62            ->setName($import_column->getName())
  63            ->setProperties($import_column->getProperties())
  64            ->save();
  65        }
  66        $table->saveTransaction();
  67  
  68        return id(new AphrontRedirectResponse())->setURI($board_uri);
  69      }
  70  
  71      $proj_selector = id(new AphrontFormTokenizerControl())
  72        ->setName('importProjectPHID')
  73        ->setUser($viewer)
  74        ->setDatasource(id(new PhabricatorProjectDatasource())
  75          ->setParameters(array('mustHaveColumns' => true))
  76        ->setLimit(1));
  77      return $this->newDialog()
  78        ->setTitle(pht('Import Columns'))
  79        ->setWidth(AphrontDialogView::WIDTH_FORM)
  80        ->appendParagraph(pht('Choose a project to import columns from:'))
  81        ->appendChild($proj_selector)
  82        ->addCancelButton($board_uri)
  83        ->addSubmitButton(pht('Import'));
  84    }
  85  
  86  }


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