@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
at recaptime-dev/main 82 lines 2.4 kB view raw
1<?php 2 3final class DiffusionRepositoryURIDisableController 4 extends DiffusionController { 5 6 public function handleRequest(AphrontRequest $request) { 7 $response = $this->loadDiffusionContextForEdit(); 8 if ($response) { 9 return $response; 10 } 11 12 $viewer = $this->getViewer(); 13 $drequest = $this->getDiffusionRequest(); 14 $repository = $drequest->getRepository(); 15 16 $id = $request->getURIData('id'); 17 $uri = id(new PhabricatorRepositoryURIQuery()) 18 ->setViewer($viewer) 19 ->withIDs(array($id)) 20 ->withRepositories(array($repository)) 21 ->requireCapabilities( 22 array( 23 PhabricatorPolicyCapability::CAN_VIEW, 24 PhabricatorPolicyCapability::CAN_EDIT, 25 )) 26 ->executeOne(); 27 if (!$uri) { 28 return new Aphront404Response(); 29 } 30 31 $is_disabled = $uri->getIsDisabled(); 32 $view_uri = $uri->getViewURI(); 33 34 if ($uri->isBuiltin()) { 35 return $this->newDialog() 36 ->setTitle(pht('Builtin URI')) 37 ->appendParagraph( 38 pht( 39 'You can not manually disable builtin URIs. To hide a builtin '. 40 'URI, configure its "Display" behavior instead.')) 41 ->addCancelButton($view_uri); 42 } 43 44 if ($request->isFormPost()) { 45 $xactions = array(); 46 47 $xactions[] = id(new PhabricatorRepositoryURITransaction()) 48 ->setTransactionType(PhabricatorRepositoryURITransaction::TYPE_DISABLE) 49 ->setNewValue(!$is_disabled); 50 51 $editor = id(new DiffusionURIEditor()) 52 ->setActor($viewer) 53 ->setContinueOnNoEffect(true) 54 ->setContinueOnMissingFields(true) 55 ->setContentSourceFromRequest($request) 56 ->applyTransactions($uri, $xactions); 57 58 return id(new AphrontRedirectResponse())->setURI($view_uri); 59 } 60 61 if ($is_disabled) { 62 $title = pht('Enable URI'); 63 $body = pht( 64 'Enable this URI? Any configured behaviors will begin working '. 65 'again.'); 66 $button = pht('Enable URI'); 67 } else { 68 $title = pht('Disable URI'); 69 $body = pht( 70 'Disable this URI? It will no longer be observed, fetched, mirrored, '. 71 'served or shown to users.'); 72 $button = pht('Disable URI'); 73 } 74 75 return $this->newDialog() 76 ->setTitle($title) 77 ->appendParagraph($body) 78 ->addCancelButton($view_uri) 79 ->addSubmitButton($button); 80 } 81 82}