private function buildQueryFromRequest()
 {
     $request = $this->getRequest();
     $user = $request->getUser();
     $status = $this->getStatusValueFromRequest();
     $group = $this->getGroupValueFromRequest();
     $order = $this->getOrderValueFromRequest();
     $user_phids = $request->getStrList('users', array($user->getPHID()));
     if ($this->view == 'projecttriage' || $this->view == 'projectall') {
         $project_query = new PhabricatorProjectQuery();
         $project_query->setViewer($user);
         $project_query->withMemberPHIDs($user_phids);
         $projects = $project_query->execute();
         $project_phids = mpull($projects, 'getPHID');
     } else {
         $project_phids = $request->getStrList('projects');
     }
     $exclude_project_phids = $request->getStrList('xprojects');
     $task_ids = $request->getStrList('tasks');
     if ($task_ids) {
         // We only need the integer portion of each task ID, so get rid of any
         // non-numeric elements
         $numeric_task_ids = array();
         foreach ($task_ids as $task_id) {
             $task_id = preg_replace('/[a-zA-Z]+/', '', $task_id);
             if (!empty($task_id)) {
                 $numeric_task_ids[] = $task_id;
             }
         }
         if (empty($numeric_task_ids)) {
             $numeric_task_ids = array(null);
         }
         $task_ids = $numeric_task_ids;
     }
     $owner_phids = $request->getStrList('owners');
     $author_phids = $request->getStrList('authors');
     $search_string = $request->getStr('search');
     $low_priority = $request->getInt('lpriority');
     $high_priority = $request->getInt('hpriority');
     $page = $request->getInt('offset');
     $page_size = self::DEFAULT_PAGE_SIZE;
     $query = new PhabricatorSearchQuery();
     $query->setQuery('<<maniphest>>');
     $query->setParameters(array('fullTextSearch' => $search_string, 'view' => $this->view, 'userPHIDs' => $user_phids, 'projectPHIDs' => $project_phids, 'excludeProjectPHIDs' => $exclude_project_phids, 'ownerPHIDs' => $owner_phids, 'authorPHIDs' => $author_phids, 'taskIDs' => $task_ids, 'lowPriority' => $low_priority, 'highPriority' => $high_priority, 'group' => $group, 'order' => $order, 'offset' => $page, 'limit' => $page_size, 'status' => $status));
     $unguarded = AphrontWriteGuard::beginScopedUnguardedWrites();
     $query->save();
     unset($unguarded);
     return $query;
 }
 private function buildQueryFromRequest()
 {
     $request = $this->getRequest();
     $user = $request->getUser();
     $status = $this->getStatusValueFromRequest();
     $group = $this->getGroupValueFromRequest();
     $order = $this->getOrderValueFromRequest();
     $user_phids = $request->getStrList('users', array($user->getPHID()));
     if ($this->view == 'projecttriage' || $this->view == 'projectall') {
         $project_query = new PhabricatorProjectQuery();
         $project_query->setMembers($user_phids);
         $projects = $project_query->execute();
         $project_phids = mpull($projects, 'getPHID');
     } else {
         $project_phids = $request->getStrList('projects');
     }
     $exclude_project_phids = $request->getStrList('xprojects');
     $task_ids = $request->getStrList('tasks');
     $owner_phids = $request->getStrList('owners');
     $author_phids = $request->getStrList('authors');
     $page = $request->getInt('offset');
     $page_size = self::DEFAULT_PAGE_SIZE;
     $query = new PhabricatorSearchQuery();
     $query->setQuery('<<maniphest>>');
     $query->setParameters(array('view' => $this->view, 'userPHIDs' => $user_phids, 'projectPHIDs' => $project_phids, 'excludeProjectPHIDs' => $exclude_project_phids, 'ownerPHIDs' => $owner_phids, 'authorPHIDs' => $author_phids, 'taskIDs' => $task_ids, 'group' => $group, 'order' => $order, 'offset' => $page, 'limit' => $page_size, 'status' => $status));
     $unguarded = AphrontWriteGuard::beginScopedUnguardedWrites();
     $query->save();
     unset($unguarded);
     return $query;
 }