Differential D20269 Diff 48404 src/applications/project/controller/PhabricatorProjectMoveController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/project/controller/PhabricatorProjectMoveController.php
<?php | <?php | ||||
final class PhabricatorProjectMoveController | final class PhabricatorProjectMoveController | ||||
extends PhabricatorProjectController { | extends PhabricatorProjectController { | ||||
public function handleRequest(AphrontRequest $request) { | public function handleRequest(AphrontRequest $request) { | ||||
$viewer = $request->getViewer(); | $viewer = $request->getViewer(); | ||||
$id = $request->getURIData('id'); | $id = $request->getURIData('id'); | ||||
$request->validateCSRF(); | $request->validateCSRF(); | ||||
$column_phid = $request->getStr('columnPHID'); | $column_phid = $request->getStr('columnPHID'); | ||||
$object_phid = $request->getStr('objectPHID'); | $object_phid = $request->getStr('objectPHID'); | ||||
$after_phid = $request->getStr('afterPHID'); | $after_phid = $request->getStr('afterPHID'); | ||||
$before_phid = $request->getStr('beforePHID'); | $before_phid = $request->getStr('beforePHID'); | ||||
$order = $request->getStr('order', PhabricatorProjectColumn::DEFAULT_ORDER); | |||||
$order = $request->getStr('order'); | |||||
if (!strlen($order)) { | |||||
$order = PhabricatorProjectColumnNaturalOrder::ORDERKEY; | |||||
} | |||||
$ordering = PhabricatorProjectColumnOrder::getOrderByKey($order); | |||||
$ordering = id(clone $ordering) | |||||
->setViewer($viewer); | |||||
$edit_header = null; | $edit_header = null; | ||||
$raw_header = $request->getStr('header'); | $raw_header = $request->getStr('header'); | ||||
if (strlen($raw_header)) { | if (strlen($raw_header)) { | ||||
$edit_header = phutil_json_decode($raw_header); | $edit_header = phutil_json_decode($raw_header); | ||||
} else { | } else { | ||||
$edit_header = array(); | $edit_header = array(); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 58 Lines • ▼ Show 20 Lines | $xactions[] = id(new ManiphestTransaction()) | ||||
->setTransactionType(PhabricatorTransactions::TYPE_COLUMNS) | ->setTransactionType(PhabricatorTransactions::TYPE_COLUMNS) | ||||
->setNewValue( | ->setNewValue( | ||||
array( | array( | ||||
array( | array( | ||||
'columnPHID' => $column->getPHID(), | 'columnPHID' => $column->getPHID(), | ||||
) + $order_params, | ) + $order_params, | ||||
)); | )); | ||||
$header_xactions = $this->newHeaderTransactions( | $header_xactions = $ordering->getColumnTransactions( | ||||
$object, | $object, | ||||
$order, | |||||
$edit_header); | $edit_header); | ||||
foreach ($header_xactions as $header_xaction) { | foreach ($header_xactions as $header_xaction) { | ||||
$xactions[] = $header_xaction; | $xactions[] = $header_xaction; | ||||
} | } | ||||
$editor = id(new ManiphestTransactionEditor()) | $editor = id(new ManiphestTransactionEditor()) | ||||
->setActor($viewer) | ->setActor($viewer) | ||||
->setContinueOnMissingFields(true) | ->setContinueOnMissingFields(true) | ||||
->setContinueOnNoEffect(true) | ->setContinueOnNoEffect(true) | ||||
->setContentSourceFromRequest($request); | ->setContentSourceFromRequest($request); | ||||
$editor->applyTransactions($object, $xactions); | $editor->applyTransactions($object, $xactions); | ||||
return $this->newCardResponse($board_phid, $object_phid); | return $this->newCardResponse($board_phid, $object_phid, $ordering); | ||||
} | |||||
private function newHeaderTransactions( | |||||
ManiphestTask $task, | |||||
$order, | |||||
array $header) { | |||||
$xactions = array(); | |||||
switch ($order) { | |||||
case PhabricatorProjectColumn::ORDER_PRIORITY: | |||||
$new_priority = idx($header, $order); | |||||
if ($task->getPriority() !== $new_priority) { | |||||
$keyword_map = ManiphestTaskPriority::getTaskPriorityKeywordsMap(); | |||||
$keyword = head(idx($keyword_map, $new_priority)); | |||||
$xactions[] = id(new ManiphestTransaction()) | |||||
->setTransactionType( | |||||
ManiphestTaskPriorityTransaction::TRANSACTIONTYPE) | |||||
->setNewValue($keyword); | |||||
} | |||||
break; | |||||
} | |||||
return $xactions; | |||||
} | } | ||||
} | } |