Differential D20010 Diff 47809 src/applications/auth/controller/contact/PhabricatorAuthContactNumberDisableController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/auth/controller/contact/PhabricatorAuthContactNumberDisableController.php
- This file was added.
<?php | |||||
final class PhabricatorAuthContactNumberDisableController | |||||
extends PhabricatorAuthContactNumberController { | |||||
public function handleRequest(AphrontRequest $request) { | |||||
$viewer = $request->getViewer(); | |||||
$id = $request->getURIData('id'); | |||||
$number = id(new PhabricatorAuthContactNumberQuery()) | |||||
->setViewer($viewer) | |||||
->withIDs(array($id)) | |||||
->requireCapabilities( | |||||
array( | |||||
PhabricatorPolicyCapability::CAN_VIEW, | |||||
PhabricatorPolicyCapability::CAN_EDIT, | |||||
)) | |||||
->executeOne(); | |||||
if (!$number) { | |||||
return new Aphront404Response(); | |||||
} | |||||
$is_disable = ($request->getURIData('action') == 'disable'); | |||||
$id = $number->getID(); | |||||
$cancel_uri = $number->getURI(); | |||||
if ($request->isFormPost()) { | |||||
$xactions = array(); | |||||
if ($is_disable) { | |||||
$new_status = PhabricatorAuthContactNumber::STATUS_DISABLED; | |||||
} else { | |||||
$new_status = PhabricatorAuthContactNumber::STATUS_ACTIVE; | |||||
} | |||||
$xactions[] = id(new PhabricatorAuthContactNumberTransaction()) | |||||
->setTransactionType( | |||||
PhabricatorAuthContactNumberStatusTransaction::TRANSACTIONTYPE) | |||||
->setNewValue($new_status); | |||||
$editor = id(new PhabricatorAuthContactNumberEditor()) | |||||
->setActor($viewer) | |||||
->setContentSourceFromRequest($request) | |||||
->setContinueOnNoEffect(true) | |||||
->setContinueOnMissingFields(true); | |||||
try { | |||||
$editor->applyTransactions($number, $xactions); | |||||
} catch (PhabricatorApplicationTransactionValidationException $ex) { | |||||
// This happens when you enable a number which collides with another | |||||
// number. | |||||
return $this->newDialog() | |||||
->setTitle(pht('Changing Status Failed')) | |||||
->setValidationException($ex) | |||||
->addCancelButton($cancel_uri); | |||||
} | |||||
return id(new AphrontRedirectResponse())->setURI($cancel_uri); | |||||
} | |||||
$number_display = phutil_tag( | |||||
'strong', | |||||
array(), | |||||
$number->getDisplayName()); | |||||
if ($is_disable) { | |||||
$title = pht('Disable Contact Number'); | |||||
$body = pht( | |||||
'Disable the contact number %s?', | |||||
$number_display); | |||||
$button = pht('Disable Number'); | |||||
} else { | |||||
$title = pht('Enable Contact Number'); | |||||
$body = pht( | |||||
'Enable the contact number %s?', | |||||
$number_display); | |||||
$button = pht('Enable Number'); | |||||
} | |||||
return $this->newDialog() | |||||
->setTitle($title) | |||||
->appendParagraph($body) | |||||
->addSubmitButton($button) | |||||
->addCancelButton($cancel_uri); | |||||
} | |||||
} |