Differential D11259 Diff 27047 src/applications/maniphest/controller/ManiphestTaskEditController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/maniphest/controller/ManiphestTaskEditController.php
Show First 20 Lines • Show All 377 Lines • ▼ Show 20 Lines | if ($request->isFormPost()) { | ||||
$column = id(new PhabricatorProjectColumnQuery()) | $column = id(new PhabricatorProjectColumnQuery()) | ||||
->setViewer($user) | ->setViewer($user) | ||||
->withPHIDs(array($request->getStr('columnPHID'))) | ->withPHIDs(array($request->getStr('columnPHID'))) | ||||
->executeOne(); | ->executeOne(); | ||||
if (!$column) { | if (!$column) { | ||||
return new Aphront404Response(); | return new Aphront404Response(); | ||||
} | } | ||||
// re-load projects for accuracy as they are not re-loaded via | |||||
// the editor | |||||
$project_phids = PhabricatorEdgeQuery::loadDestinationPHIDs( | |||||
$task->getPHID(), | |||||
PhabricatorProjectObjectHasProjectEdgeType::EDGECONST); | |||||
$task->attachProjectPHIDs($project_phids); | |||||
$remove_from_board = false; | |||||
if (!in_array($column->getProjectPHID(), $project_phids)) { | |||||
$remove_from_board = true; | |||||
} | |||||
$positions = id(new PhabricatorProjectColumnPositionQuery()) | $positions = id(new PhabricatorProjectColumnPositionQuery()) | ||||
->setViewer($user) | ->setViewer($user) | ||||
->withColumns(array($column)) | ->withColumns(array($column)) | ||||
->execute(); | ->execute(); | ||||
$task_phids = mpull($positions, 'getObjectPHID'); | $task_phids = mpull($positions, 'getObjectPHID'); | ||||
$column_tasks = id(new ManiphestTaskQuery()) | $column_tasks = id(new ManiphestTaskQuery()) | ||||
->setViewer($user) | ->setViewer($user) | ||||
->withPHIDs($task_phids) | ->withPHIDs($task_phids) | ||||
->execute(); | ->execute(); | ||||
if ($order == PhabricatorProjectColumn::ORDER_NATURAL) { | if ($order == PhabricatorProjectColumn::ORDER_NATURAL) { | ||||
// TODO: This is a little bit awkward, because PHP and JS use | // TODO: This is a little bit awkward, because PHP and JS use | ||||
// slightly different sort order parameters to achieve the same | // slightly different sort order parameters to achieve the same | ||||
// effect. It would be unify this a bit at some point. | // effect. It would be good to unify this a bit at some point. | ||||
$sort_map = array(); | $sort_map = array(); | ||||
foreach ($positions as $position) { | foreach ($positions as $position) { | ||||
$sort_map[$position->getObjectPHID()] = array( | $sort_map[$position->getObjectPHID()] = array( | ||||
-$position->getSequence(), | -$position->getSequence(), | ||||
$position->getID(), | $position->getID(), | ||||
); | ); | ||||
} | } | ||||
} else { | } else { | ||||
$sort_map = mpull( | $sort_map = mpull( | ||||
$column_tasks, | $column_tasks, | ||||
'getPrioritySortVector', | 'getPrioritySortVector', | ||||
'getPHID'); | 'getPHID'); | ||||
} | } | ||||
$data = array( | $data = array( | ||||
'sortMap' => $sort_map, | 'sortMap' => $sort_map, | ||||
'removeFromBoard' => $remove_from_board, | |||||
); | ); | ||||
break; | break; | ||||
case 'task': | case 'task': | ||||
default: | default: | ||||
$tasks = $this->renderSingleTask($task); | $tasks = $this->renderSingleTask($task); | ||||
$data = array(); | $data = array(); | ||||
break; | break; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 338 Lines • Show Last 20 Lines |