Correct a parameter order swap in "diffusion.historyquery" for Mercurial
[phabricator.git] / src / applications / phortune / view / PhortuneCreditCardForm.php
blobafd64075ea270962f583049233127f4b19d995fd
1 <?php
3 final class PhortuneCreditCardForm extends Phobject {
5 private $formID;
6 private $scripts = array();
7 private $user;
8 private $errors = array();
10 private $cardNumberError;
11 private $cardCVCError;
12 private $cardExpirationError;
13 private $securityAssurance;
15 public function setSecurityAssurance($security_assurance) {
16 $this->securityAssurance = $security_assurance;
17 return $this;
20 public function getSecurityAssurance() {
21 return $this->securityAssurance;
24 public function setUser(PhabricatorUser $user) {
25 $this->user = $user;
26 return $this;
29 public function setErrors(array $errors) {
30 $this->errors = $errors;
31 return $this;
34 public function addScript($script_uri) {
35 $this->scripts[] = $script_uri;
36 return $this;
39 public function getFormID() {
40 if (!$this->formID) {
41 $this->formID = celerity_generate_unique_node_id();
43 return $this->formID;
46 public function buildForm() {
47 $form_id = $this->getFormID();
49 require_celerity_resource('phortune-credit-card-form-css');
50 require_celerity_resource('phortune-credit-card-form');
52 require_celerity_resource('aphront-tooltip-css');
53 Javelin::initBehavior('phabricator-tooltips');
55 $form = new AphrontFormView();
57 foreach ($this->scripts as $script) {
58 $form->appendChild(
59 phutil_tag(
60 'script',
61 array(
62 'type' => 'text/javascript',
63 'src' => $script,
64 )));
67 $errors = $this->errors;
68 $e_number = isset($errors[PhortuneErrCode::ERR_CC_INVALID_NUMBER])
69 ? pht('Invalid')
70 : null;
72 $e_cvc = isset($errors[PhortuneErrCode::ERR_CC_INVALID_CVC])
73 ? pht('Invalid')
74 : null;
76 $e_expiry = isset($errors[PhortuneErrCode::ERR_CC_INVALID_EXPIRY])
77 ? pht('Invalid')
78 : null;
80 $form
81 ->setID($form_id)
82 ->appendChild(
83 id(new AphrontFormTextControl())
84 ->setLabel(pht('Card Number'))
85 ->setDisableAutocomplete(true)
86 ->setSigil('number-input')
87 ->setError($e_number))
88 ->appendChild(
89 id(new AphrontFormTextControl())
90 ->setLabel(pht('CVC'))
91 ->setDisableAutocomplete(true)
92 ->addClass('aphront-form-cvc-input')
93 ->setSigil('cvc-input')
94 ->setError($e_cvc))
95 ->appendChild(
96 id(new PhortuneMonthYearExpiryControl())
97 ->setLabel(pht('Expiration'))
98 ->setUser($this->user)
99 ->setError($e_expiry));
101 $assurance = $this->getSecurityAssurance();
102 if ($assurance) {
103 $assurance = phutil_tag(
104 'div',
105 array(
106 'class' => 'phortune-security-assurance',
108 array(
109 id(new PHUIIconView())
110 ->setIcon('fa-lock grey'),
111 ' ',
112 $assurance,
115 $form->appendChild(
116 id(new AphrontFormMarkupControl())
117 ->setValue($assurance));
120 return $form;