mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-16 11:52:40 +01:00
83db5965ab
Summary: Ref T5245. This is some of the associated cleanup there. Test Plan: foreach ManiphestTaskQuery site, I made the change (or not) and tested as follows: === Call sites where added needProjectPHIDs === - PhabricatorHomeMainController - loaded the home page - ManiphestBatchEditController - batch edited some tasks (added a project) - ManiphestConduitAPIMethod - tested implicitly when tested ManiphestUpdateConduitAPIMethod - ManiphestInfoConduitAPIMethod - used the method via conduit console with input id : 1 - ManiphestQueryConduitAPIMethod - used the method via conduit console with input ids : [1, 2] - ManiphestUpdateConduitAPIMethod - used the method via conduit with input id : 1 and comment : “asdasds" - ManiphestReportController - viewed “By User” and “By Project” - ManiphestSubpriorityController - changed the priority of a task via a drag on manphest home - ManiphestTaskMailReceiver - updated Task 1 via bin/mail receive-test with a comment that is the README - ManiphestTaskSearchEngine - loaded Manifest home page - ManiphestTaskEditController - edited a task - ManiphestTransactionEditor - closed a blocking task - ManiphestTransactionSaveController - commented on a task - PhabricatorProjectProfileController - viewed project with id of 1 that has a few tasks in it - PhabricatorSearchAttachController - merged tasks together - DifferentialTransactionEditor - submit a diff that references a task; commit the diff (thus closing the diff) and the task gets updated - PhabricatorRepositoryCommitMessageParserWorker - submit a diff that references a task; commit the diff (thus closing the diff) and the task gets updated === Calls sites where *did not* add needProjectPHIDs (they do not appear in this revision) === - PhabricatorManiphestApplication - loaded the home page - ManiphestGetTaskTransactionsConduitAPIMethod - used the method via conduit console with input ids : [1, 2] ManiphestTaskDetailController - viewed a task with and without associated projects; finished workflow creating a task with a parent - ManiphestTransactionPreviewController - verified transaction preview showed up properly - PhabricatorProjectBoardViewController - viewed a board - PhabricatorProjectMoveController - moved a task around - ManiphestRemarkupRule - made a task reference like {T123} - ManiphestTaskQuery - executed a custom query for all tasks with page size of 2 and paginated through some tasks - ManiphestTaskPHIDType - nothing random seems broken? =D === Call sites where had to do something funky === - ManiphestHovercardEventListener - loaded hover cards from task mentions Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin, epriestley Maniphest Tasks: T5245 Differential Revision: https://secure.phabricator.com/D11004
65 lines
1.6 KiB
PHP
65 lines
1.6 KiB
PHP
<?php
|
|
|
|
final class ManiphestUpdateConduitAPIMethod extends ManiphestConduitAPIMethod {
|
|
|
|
public function getAPIMethodName() {
|
|
return 'maniphest.update';
|
|
}
|
|
|
|
public function getMethodDescription() {
|
|
return 'Update an existing Maniphest task.';
|
|
}
|
|
|
|
public function defineErrorTypes() {
|
|
return array(
|
|
'ERR-BAD-TASK' => 'No such maniphest task exists.',
|
|
'ERR-INVALID-PARAMETER' => 'Missing or malformed parameter.',
|
|
'ERR-NO-EFFECT' => 'Update has no effect.',
|
|
);
|
|
}
|
|
|
|
public function defineParamTypes() {
|
|
return $this->getTaskFields($is_new = false);
|
|
}
|
|
|
|
public function defineReturnType() {
|
|
return 'nonempty dict';
|
|
}
|
|
|
|
protected function execute(ConduitAPIRequest $request) {
|
|
$id = $request->getValue('id');
|
|
$phid = $request->getValue('phid');
|
|
|
|
if (($id && $phid) || (!$id && !$phid)) {
|
|
throw new Exception("Specify exactly one of 'id' and 'phid'.");
|
|
}
|
|
|
|
$query = id (new ManiphestTaskQuery())
|
|
->setViewer($request->getUser())
|
|
->needSubscriberPHIDs(true)
|
|
->needProjectPHIDs(true);
|
|
if ($id) {
|
|
$query->withIDs(array($id));
|
|
} else {
|
|
$query->withPHIDs(array($phid));
|
|
}
|
|
$task = $query->executeOne();
|
|
|
|
$params = $request->getAllParameters();
|
|
unset($params['id']);
|
|
unset($params['phid']);
|
|
|
|
if (call_user_func_array('coalesce', $params) === null) {
|
|
throw new ConduitException('ERR-NO-EFFECT');
|
|
}
|
|
|
|
if (!$task) {
|
|
throw new ConduitException('ERR-BAD-TASK');
|
|
}
|
|
|
|
$task = $this->applyRequest($task, $request, $is_new = false);
|
|
|
|
return $this->buildTaskInfoDictionary($task);
|
|
}
|
|
|
|
}
|