PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 6.13
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v6.13
6.35 6.34 6.33.1 6.33 6.32.1 6.32 6.31 6.25 6.25.1 6.26 6.26.1 6.27 6.28 6.29 6.3 6.3.1 6.3.2 6.30 6.4 6.4.1 6.4.2 6.5 6.5.1 6.5.2 6.5.3 All 141 releases
formidable / stripe / models / FrmTransLiteAction.php

FrmTransLiteAction.php in Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More 6.13, at stripe/models/FrmTransLiteAction.php

212 lines 6.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( ! defined( 'ABSPATH' ) ) {
3 die( 'You are not allowed to call this page directly.' );
4 }
5
6 class FrmTransLiteAction extends FrmFormAction {
7
8 public function __construct() {
9 $action_ops = array(
10 'classes' => 'frm_stripe_icon frm_credit_card_alt_icon frm_icon_font',
11 // This is 99 in the Payments submodule but Stripe Lite only supports a single action.
12 'limit' => 1,
13 'active' => true,
14 // After user registration.
15 'priority' => 45,
16 'event' => array( 'create' ),
17 'color' => 'var(--green)',
18 );
19
20 $this->FrmFormAction( 'payment', __( 'Collect a Payment', 'formidable' ), $action_ops );
21 }
22
23 /**
24 * @param WP_Post $instance
25 * @param array $args
26 */
27 public function form( $instance, $args = array() ) {
28 $form_action = $instance;
29
30 global $wpdb;
31
32 $list_fields = self::get_defaults();
33 $action_control = $this;
34 $options = $form_action->post_content;
35 $form_fields = $this->get_field_options( $args['form']->id );
36 $field_dropdown_atts = compact( 'form_fields', 'form_action' );
37 $currencies = FrmCurrencyHelper::get_currencies();
38 $repeat_times = FrmTransLiteAppHelper::get_repeat_times();
39
40 if ( ! isset( $form_action->post_content['payment_limit'] ) ) {
41 $form_action->post_content['payment_limit'] = '';
42 }
43
44 include FrmTransLiteAppHelper::plugin_path() . '/views/action-settings/payments-options.php';
45 }
46
47 /**
48 * Capturing a payment later is only available in the Stripe add on.
49 * This echos the HTML for a faded out capture payment dropdown.
50 * When it is clicked, it should prompt to install Stripe.
51 *
52 * @since 6.5
53 *
54 * @return void
55 */
56 public function echo_capture_payment_upsell() {
57 // Add an upsell placeholder for the capture payment setting.
58 $upgrading = FrmAddonsController::install_link( 'stripe' );
59 $upgrade_params = array();
60 if ( isset( $upgrading['url'] ) ) {
61 $upgrade_params['data-oneclick'] = json_encode( $upgrading );
62 } else {
63 $upgrade_params['data-requires'] = FrmAddonsController::get_addon_required_plan( 28136428 );
64 }
65 unset( $upgrading );
66 include FrmTransLiteAppHelper::plugin_path() . '/views/action-settings/capture-payments-upsell.php';
67 }
68
69 /**
70 * @return array
71 */
72 public function get_defaults() {
73 $defaults = array(
74 'description' => '',
75 'email' => '',
76 'amount' => '',
77 'type' => '',
78 'interval_count' => 1,
79 'interval' => 'month',
80 'payment_count' => 9999,
81 'trial_interval_count' => 0,
82 'currency' => $this->default_currency(),
83 'gateway' => array(),
84 'credit_card' => '',
85 'billing_first_name' => '',
86 'billing_last_name' => '',
87 );
88 return (array) apply_filters( 'frm_pay_action_defaults', $defaults );
89 }
90
91 /**
92 * @since 6.5, introduced in v2.01 of the Payments submodule.
93 *
94 * @return string
95 */
96 private function default_currency() {
97 $frm_settings = FrmAppHelper::get_settings();
98 $currency = trim( $frm_settings->currency );
99 if ( ! $currency ) {
100 $currency = 'USD';
101 }
102
103 return strtolower( $currency );
104 }
105
106 /**
107 * @param mixed $form_id
108 * @return array
109 */
110 public function get_field_options( $form_id ) {
111
112 $form_id = absint( $form_id );
113 $form_ids = $form_id;
114
115 /**
116 * Allows updating form ids used to query fields for displaying options with in the Payment action.
117 *
118 * @since 6.8
119 *
120 * @param int|int[] $form_ids
121 * @param int $form_id
122 */
123 $form_ids = apply_filters( 'frm_trans_action_get_field_options_form_id', $form_ids, $form_id );
124
125 $form_fields = FrmField::getAll(
126 array(
127 'fi.form_id' => $form_ids,
128 'fi.type not' => array( 'divider', 'end_divider', 'html', 'break', 'captcha', 'rte', 'form' ),
129 ),
130 'field_order'
131 );
132
133 return $form_fields;
134 }
135
136 /**
137 * Get the ID of the credit card field.
138 * We assume there is only a single credit card field in Stripe Lite.
139 * This is saved as part of the Stripe payment action.
140 *
141 * @param array $form_atts
142 * @return int
143 */
144 public function get_credit_card_field_id( $form_atts ) {
145 $field_id = 0;
146
147 foreach ( $form_atts['form_fields'] as $field ) {
148 if ( 'credit_card' === $field->type ) {
149 $field_id = (int) $field->id;
150 break;
151 }
152 }
153
154 return $field_id;
155 }
156
157 /**
158 * Show the dropdown fields for custom form fields.
159 * This is used for first and last name fields.
160 *
161 * @param array $form_atts
162 * @param array $field_atts
163 * @return void
164 */
165 public function show_fields_dropdown( $form_atts, $field_atts ) {
166 if ( ! isset( $field_atts['allowed_fields'] ) ) {
167 $field_atts['allowed_fields'] = array();
168 }
169 $has_field = false;
170 ?>
171 <select class="frm_with_left_label" name="<?php echo esc_attr( $this->get_field_name( $field_atts['name'] ) ); ?>" id="<?php echo esc_attr( $this->get_field_id( $field_atts['name'] ) ); ?>">
172 <option value=""><?php esc_html_e( '&mdash; Select &mdash;', 'formidable' ); ?></option>
173 <?php
174 foreach ( $form_atts['form_fields'] as $field ) {
175 $type_is_allowed = empty( $field_atts['allowed_fields'] ) || in_array( $field->type, (array) $field_atts['allowed_fields'], true );
176
177 if ( ! $type_is_allowed ) {
178 continue;
179 }
180
181 $has_field = true;
182 $key_exists = array_key_exists( $field_atts['name'], $form_atts['form_action']->post_content );
183 ?>
184 <option value="<?php echo esc_attr( $field->id ); ?>" <?php selected( $key_exists ? $form_atts['form_action']->post_content[ $field_atts['name'] ] : 0, $field->id ); ?>>
185 <?php echo esc_attr( FrmAppHelper::truncate( $field->name, 50, 1 ) ); ?>
186 </option>
187 <?php
188 unset( $field );
189 }
190
191 if ( ! $has_field && ! empty( $field_atts['allowed_fields'] ) ) {
192 $readable_fields = str_replace( '_', ' ', implode( ', ', (array) $field_atts['allowed_fields'] ) );
193 ?>
194 <option value="">
195 <?php
196 // translators: %s: The comma separated field types expected in the form.
197 echo esc_html( sprintf( __( 'Oops! You need a %s field in your form.', 'formidable' ), $readable_fields ) );
198 ?>
199 </option>
200 <?php
201 }
202 ?>
203 </select>
204 <?php
205 }
206
207 public static function get_single_action_type( $action_id, $type = '' ) {
208 $action_control = FrmFormActionsController::get_form_actions( 'payment' );
209 return $action_control->get_single_action( $action_id );
210 }
211 }
212