Path: blob/master/src/applications/drydock/controller/DrydockResourceReleaseController.php
12262 views
<?php12final class DrydockResourceReleaseController extends DrydockResourceController {34public function handleRequest(AphrontRequest $request) {5$viewer = $request->getViewer();6$id = $request->getURIData('id');78$resource = id(new DrydockResourceQuery())9->setViewer($viewer)10->withIDs(array($id))11->requireCapabilities(12array(13PhabricatorPolicyCapability::CAN_VIEW,14PhabricatorPolicyCapability::CAN_EDIT,15))16->executeOne();17if (!$resource) {18return new Aphront404Response();19}2021$resource_uri = '/resource/'.$resource->getID().'/';22$resource_uri = $this->getApplicationURI($resource_uri);2324if (!$resource->canRelease()) {25return $this->newDialog()26->setTitle(pht('Resource Not Releasable'))27->appendParagraph(28pht(29'Resources can not be released after they are destroyed.'))30->addCancelButton($resource_uri);31}3233if ($request->isFormPost()) {34$command = DrydockCommand::initializeNewCommand($viewer)35->setTargetPHID($resource->getPHID())36->setCommand(DrydockCommand::COMMAND_RELEASE)37->save();3839$resource->scheduleUpdate();4041return id(new AphrontRedirectResponse())->setURI($resource_uri);42}434445return $this->newDialog()46->setTitle(pht('Really release resource?'))47->appendChild(48pht(49'Releasing a resource releases all leases and destroys the '.50'resource. It can not be undone.'))51->addSubmitButton(pht('Release Resource'))52->addCancelButton($resource_uri);53}5455}565758