@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
1<?php
2
3final class PhabricatorCalendarImportReloadController
4 extends PhabricatorCalendarController {
5
6 public function handleRequest(AphrontRequest $request) {
7 $viewer = $request->getViewer();
8
9 $import = id(new PhabricatorCalendarImportQuery())
10 ->setViewer($viewer)
11 ->withIDs(array($request->getURIData('id')))
12 ->requireCapabilities(
13 array(
14 PhabricatorPolicyCapability::CAN_VIEW,
15 PhabricatorPolicyCapability::CAN_EDIT,
16 ))
17 ->executeOne();
18 if (!$import) {
19 return new Aphront404Response();
20 }
21
22 $import_uri = $import->getURI();
23
24 if ($request->isFormPost()) {
25 $xactions = array();
26 $xactions[] = id(new PhabricatorCalendarImportTransaction())
27 ->setTransactionType(
28 PhabricatorCalendarImportReloadTransaction::TRANSACTIONTYPE)
29 ->setNewValue(true);
30
31 $editor = id(new PhabricatorCalendarImportEditor())
32 ->setActor($viewer)
33 ->setContinueOnNoEffect(true)
34 ->setContinueOnMissingFields(true)
35 ->setContentSourceFromRequest($request);
36
37 $editor->applyTransactions($import, $xactions);
38
39 return id(new AphrontRedirectResponse())->setURI($import_uri);
40 }
41
42 return $this->newDialog()
43 ->setTitle(pht('Reload Events'))
44 ->appendParagraph(
45 pht(
46 'Reload this source? Events imported from this source will '.
47 'be updated.'))
48 ->addCancelButton($import_uri)
49 ->addSubmitButton(pht('Reload Events'));
50 }
51
52}