1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-15 19:32:40 +01:00
phorge-phorge/src/applications/diffusion/controller/DiffusionRepositoryEditUpdateController.php
Bob Trahan a823654be0 Diffusion - return 404 errors for bad URIs
Summary: Fixes T5646. Makes diffusion a much better user experience. Users now see a 404 exception page when they have a bad URI. Previously, they saw a developer-facing raw exception.

Test Plan: played around in diffusion a bunch. most of these changes were fairly mechanical at the end of the day.

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: Korvin, epriestley

Maniphest Tasks: T5646

Differential Revision: https://secure.phabricator.com/D11299
2015-01-09 13:29:08 -08:00

74 lines
2.2 KiB
PHP

<?php
final class DiffusionRepositoryEditUpdateController
extends DiffusionRepositoryEditController {
protected function processDiffusionRequest(AphrontRequest $request) {
$viewer = $request->getUser();
$drequest = $this->diffusionRequest;
$repository = $drequest->getRepository();
$repository = id(new PhabricatorRepositoryQuery())
->setViewer($viewer)
->requireCapabilities(
array(
PhabricatorPolicyCapability::CAN_VIEW,
PhabricatorPolicyCapability::CAN_EDIT,
))
->withIDs(array($repository->getID()))
->executeOne();
if (!$repository) {
return new Aphront404Response();
}
$edit_uri = $this->getRepositoryControllerURI($repository, 'edit/');
if ($request->isFormPost()) {
$params = array(
'callsigns' => array(
$repository->getCallsign(),
),
);
id(new ConduitCall('diffusion.looksoon', $params))
->setUser($viewer)
->execute();
return id(new AphrontRedirectResponse())->setURI($edit_uri);
}
$doc_name = 'Diffusion User Guide: Repository Updates';
$doc_href = PhabricatorEnv::getDoclink($doc_name);
$doc_link = phutil_tag(
'a',
array(
'href' => $doc_href,
'target' => '_blank',
),
$doc_name);
return $this->newDialog()
->setTitle(pht('Update Repository Now'))
->appendParagraph(
pht(
'Normally, Phabricator automatically updates repositories '.
'based on how much time has elapsed since the last commit. '.
'This helps reduce load if you have a large number of mostly '.
'inactive repositories, which is common.'))
->appendParagraph(
pht(
'You can manually schedule an update for this repository. The '.
'daemons will perform the update as soon as possible. This may '.
'be helpful if you have just made a commit to a rarely used '.
'repository.'))
->appendParagraph(
pht(
'To learn more about how Phabricator updates repositories, '.
'read %s in the documentation.',
$doc_link))
->addCancelButton($edit_uri)
->addSubmitButton(pht('Schedule Update'));
}
}