Something went wrong. Try again.
@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
Something went wrong. Try again.
2.2 kB · 72 lines
PHP
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273<?php
final class PhabricatorProjectColumnViewQueryController extends PhabricatorProjectBoardController {
public function handleRequest(AphrontRequest $request) { $viewer = $request->getViewer();
$response = $this->loadProject(); if ($response) { return $response; }
$project = $this->getProject(); $state = $this->getViewState(); $board_uri = $state->newWorkboardURI();
// NOTE: We're performing layout without handing the "LayoutEngine" any // object PHIDs. We only want to get access to the column object the user // is trying to query, so we do not need to actually position any cards on // the board.
$board_phid = $project->getPHID();
$layout_engine = id(new PhabricatorBoardLayoutEngine()) ->setViewer($viewer) ->setBoardPHIDs(array($board_phid)) ->setFetchAllBoards(true) ->executeLayout();
$columns = $layout_engine->getColumns($board_phid); $columns = mpull($columns, null, 'getID');
$column_id = $request->getURIData('columnID'); $column = idx($columns, $column_id); if (!$column) { return new Aphront404Response(); }
// Create a saved query to combine the active filter on the workboard // with the column filter. If the user currently has constraints on the // board, we want to add a new column or project constraint, not // completely replace the constraints. $default_query = $state->getSavedQuery(); $saved_query = $default_query->newCopy();
if ($column->getProxyPHID()) { $project_phids = $saved_query->getParameter('projectPHIDs'); if (!$project_phids) { $project_phids = array(); } $project_phids[] = $column->getProxyPHID(); $saved_query->setParameter('projectPHIDs', $project_phids); } else { $saved_query->setParameter( 'columnPHIDs', array($column->getPHID())); }
$search_engine = id(new ManiphestTaskSearchEngine()) ->setViewer($viewer);
$search_engine->saveQuery($saved_query);
$query_key = $saved_query->getQueryKey(); $query_uri = new PhutilURI("/maniphest/query/{$query_key}/#R");
return id(new AphrontRedirectResponse()) ->setURI($query_uri); }
}