Differential D14895 Diff 36003 src/applications/project/controller/PhabricatorProjectLockController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/project/controller/PhabricatorProjectLockController.php
- This file was added.
| <?php | |||||
| final class PhabricatorProjectLockController | |||||
| extends PhabricatorProjectController { | |||||
| public function shouldAllowPublic() { | |||||
| return true; | |||||
| } | |||||
| public function handleRequest(AphrontRequest $request) { | |||||
| $viewer = $request->getViewer(); | |||||
| $this->requireApplicationCapability( | |||||
| ProjectCanLockProjectsCapability::CAPABILITY); | |||||
| $id = $request->getURIData('id'); | |||||
| $project = id(new PhabricatorProjectQuery()) | |||||
| ->setViewer($viewer) | |||||
| ->withIDs(array($id)) | |||||
| ->requireCapabilities( | |||||
| array( | |||||
| PhabricatorPolicyCapability::CAN_VIEW, | |||||
| PhabricatorPolicyCapability::CAN_EDIT, | |||||
| )) | |||||
| ->executeOne(); | |||||
| if (!$project) { | |||||
| return new Aphront404Response(); | |||||
| } | |||||
| $done_uri = $project->getURI(); | |||||
| $is_locked = $project->getIsMembershipLocked(); | |||||
| if ($request->isFormPost()) { | |||||
| $xactions = array(); | |||||
| if ($is_locked) { | |||||
| $new_value = 0; | |||||
| } else { | |||||
| $new_value = 1; | |||||
| } | |||||
| $xactions[] = id(new PhabricatorProjectTransaction()) | |||||
| ->setTransactionType(PhabricatorProjectTransaction::TYPE_LOCKED) | |||||
| ->setNewValue($new_value); | |||||
| $editor = id(new PhabricatorProjectTransactionEditor()) | |||||
| ->setActor($viewer) | |||||
| ->setContentSourceFromRequest($request) | |||||
| ->setContinueOnNoEffect(true) | |||||
| ->setContinueOnMissingFields(true) | |||||
| ->applyTransactions($project, $xactions); | |||||
| return id(new AphrontRedirectResponse())->setURI($done_uri); | |||||
| } | |||||
| if ($project->getIsMembershipLocked()) { | |||||
| $title = pht('Unlock Project'); | |||||
| $body = pht( | |||||
| 'If you unlock this project, members will be free to leave.'); | |||||
| $button = pht('Unlock Project'); | |||||
| } else { | |||||
| $title = pht('Lock Project'); | |||||
| $body = pht( | |||||
| 'If you lock this project, members will be prevented from '. | |||||
| 'leaving it.'); | |||||
| $button = pht('Lock Project'); | |||||
| } | |||||
| return $this->newDialog() | |||||
| ->setTitle($title) | |||||
| ->appendParagraph($body) | |||||
| ->addSubmitbutton($button) | |||||
| ->addCancelButton($done_uri); | |||||
| } | |||||
| } | |||||