[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/search/controller/ -> PhabricatorSearchEditController.php (source)

   1  <?php
   2  
   3  final class PhabricatorSearchEditController
   4    extends PhabricatorSearchBaseController {
   5  
   6    private $queryKey;
   7  
   8    public function willProcessRequest(array $data) {
   9      $this->queryKey = idx($data, 'queryKey');
  10    }
  11  
  12    public function processRequest() {
  13      $request = $this->getRequest();
  14      $user = $request->getUser();
  15  
  16      $saved_query = id(new PhabricatorSavedQueryQuery())
  17        ->setViewer($user)
  18        ->withQueryKeys(array($this->queryKey))
  19        ->executeOne();
  20  
  21      if (!$saved_query) {
  22        return new Aphront404Response();
  23      }
  24  
  25      $engine = $saved_query->newEngine()->setViewer($user);
  26  
  27      $complete_uri = $engine->getQueryManagementURI();
  28      $cancel_uri = $complete_uri;
  29  
  30      $named_query = id(new PhabricatorNamedQueryQuery())
  31        ->setViewer($user)
  32        ->withQueryKeys(array($saved_query->getQueryKey()))
  33        ->withUserPHIDs(array($user->getPHID()))
  34        ->executeOne();
  35      if (!$named_query) {
  36        $named_query = id(new PhabricatorNamedQuery())
  37          ->setUserPHID($user->getPHID())
  38          ->setQueryKey($saved_query->getQueryKey())
  39          ->setEngineClassName($saved_query->getEngineClassName());
  40  
  41        // If we haven't saved the query yet, this is a "Save..." operation, so
  42        // take the user back to the query if they cancel instead of back to the
  43        // management interface.
  44        $cancel_uri = $engine->getQueryResultsPageURI(
  45          $saved_query->getQueryKey());
  46      }
  47  
  48      $e_name = true;
  49      $errors = array();
  50  
  51      if ($request->isFormPost()) {
  52        $named_query->setQueryName($request->getStr('name'));
  53        if (!strlen($named_query->getQueryName())) {
  54          $e_name = pht('Required');
  55          $errors[] = pht('You must name the query.');
  56        } else {
  57          $e_name = null;
  58        }
  59  
  60        if (!$errors) {
  61          $named_query->save();
  62          return id(new AphrontRedirectResponse())->setURI($complete_uri);
  63        }
  64      }
  65  
  66      $form = id(new AphrontFormView())
  67        ->setUser($user);
  68  
  69      $form->appendChild(
  70        id(new AphrontFormTextControl())
  71          ->setName('name')
  72          ->setLabel(pht('Query Name'))
  73          ->setValue($named_query->getQueryName())
  74          ->setError($e_name));
  75  
  76      $form->appendChild(
  77        id(new AphrontFormSubmitControl())
  78          ->setValue(pht('Save Query'))
  79          ->addCancelButton($cancel_uri));
  80  
  81      if ($named_query->getID()) {
  82        $title = pht('Edit Saved Query');
  83      } else {
  84        $title = pht('Save Query');
  85      }
  86  
  87      $form_box = id(new PHUIObjectBoxView())
  88        ->setHeaderText($title)
  89        ->setFormErrors($errors)
  90        ->setForm($form);
  91  
  92      $crumbs = $this->buildApplicationCrumbs();
  93      $crumbs->addTextCrumb($title);
  94  
  95      return $this->buildApplicationPage(
  96        array(
  97          $crumbs,
  98          $form_box,
  99        ),
 100        array(
 101          'title' => $title,
 102        ));
 103    }
 104  
 105  }


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