@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 PhortunePaymentMethodEditController
4 extends PhortuneController {
5
6 public function handleRequest(AphrontRequest $request) {
7 $viewer = $request->getViewer();
8 $method_id = $request->getURIData('id');
9
10 $method = id(new PhortunePaymentMethodQuery())
11 ->setViewer($viewer)
12 ->withIDs(array($method_id))
13 ->requireCapabilities(
14 array(
15 PhabricatorPolicyCapability::CAN_VIEW,
16 PhabricatorPolicyCapability::CAN_EDIT,
17 ))
18 ->executeOne();
19 if (!$method) {
20 return new Aphront404Response();
21 }
22
23 $next_uri = $method->getURI();
24
25 $account = $method->getAccount();
26 $v_name = $method->getName();
27
28 if ($request->isFormPost()) {
29 $v_name = $request->getStr('name');
30
31 $xactions = array();
32
33 $xactions[] = $method->getApplicationTransactionTemplate()
34 ->setTransactionType(
35 PhortunePaymentMethodNameTransaction::TRANSACTIONTYPE)
36 ->setNewValue($v_name);
37
38 $editor = id(new PhortunePaymentMethodEditor())
39 ->setActor($viewer)
40 ->setContentSourceFromRequest($request)
41 ->setContinueOnNoEffect(true)
42 ->setContinueOnMissingFields(true);
43
44 $editor->applyTransactions($method, $xactions);
45
46 return id(new AphrontRedirectResponse())->setURI($next_uri);
47 }
48
49 $provider = $method->buildPaymentProvider();
50
51 $form = id(new AphrontFormView())
52 ->setViewer($viewer)
53 ->appendChild(
54 id(new AphrontFormTextControl())
55 ->setLabel(pht('Name'))
56 ->setName('name')
57 ->setValue($method->getName()))
58 ->appendChild(
59 id(new AphrontFormStaticControl())
60 ->setLabel(pht('Details'))
61 ->setValue($method->getSummary()))
62 ->appendChild(
63 id(new AphrontFormStaticControl())
64 ->setLabel(pht('Expires'))
65 ->setValue($method->getDisplayExpires()))
66 ->appendChild(
67 id(new AphrontFormSubmitControl())
68 ->addCancelButton($next_uri)
69 ->setValue(pht('Save Changes')));
70
71 $box = id(new PHUIObjectBoxView())
72 ->setHeaderText(pht('Payment Method'))
73 ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
74 ->setForm($form);
75
76 $crumbs = $this->buildApplicationCrumbs()
77 ->addTextCrumb($account->getName(), $account->getURI())
78 ->addTextCrumb(pht('Payment Methods'), $account->getPaymentMethodsURI())
79 ->addTextCrumb($method->getObjectName(), $method->getURI())
80 ->addTextCrumb(pht('Edit'))
81 ->setBorder(true);
82
83 $header = id(new PHUIHeaderView())
84 ->setHeader(pht('Edit Payment Method'))
85 ->setHeaderIcon('fa-pencil');
86
87 $view = id(new PHUITwoColumnView())
88 ->setHeader($header)
89 ->setFooter(
90 array(
91 $box,
92 ));
93
94 return $this->newPage()
95 ->setTitle(pht('Edit Payment Method'))
96 ->setCrumbs($crumbs)
97 ->appendChild($view);
98 }
99
100}