PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 6.26
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v6.26
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.26, at stripe/models/FrmTransLiteAction.php

251 lines 7.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 $repeat_times = FrmTransLiteAppHelper::get_repeat_times();
38 $gateways = FrmTransLiteAppHelper::get_gateways();
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 * @param string $selected_gateway The selected gateway for the given payment action.
55 *
56 * @return void
57 */
58 public function echo_capture_payment_upsell( $selected_gateway = 'stripe' ) {
59 // Add an upsell placeholder for the capture payment setting.
60 $upgrading = FrmAddonsController::install_link( 'stripe' );
61 $upgrade_params = array();
62
63 if ( isset( $upgrading['url'] ) ) {
64 $upgrade_params['data-oneclick'] = json_encode( $upgrading );
65 } else {
66 $upgrade_params['data-requires'] = FrmAddonsController::get_addon_required_plan( 28136428 );
67 }
68 unset( $upgrading );
69 include FrmTransLiteAppHelper::plugin_path() . '/views/action-settings/capture-payments-upsell.php';
70 }
71
72 /**
73 * @return array
74 */
75 public function get_defaults() {
76 $defaults = array(
77 'description' => '',
78 'email' => '',
79 'amount' => '',
80 'type' => '',
81 'interval_count' => 1,
82 'interval' => 'month',
83 'payment_count' => 9999,
84 'trial_interval_count' => 0,
85 'currency' => $this->default_currency(),
86 'gateway' => array(),
87 'credit_card' => '',
88 'billing_first_name' => '',
89 'billing_last_name' => '',
90 );
91 return (array) apply_filters( 'frm_pay_action_defaults', $defaults );
92 }
93
94 /**
95 * @since 6.5, introduced in v2.01 of the Payments submodule.
96 *
97 * @return string
98 */
99 private function default_currency() {
100 $frm_settings = FrmAppHelper::get_settings();
101 $currency = trim( $frm_settings->currency );
102
103 if ( ! $currency ) {
104 $currency = 'USD';
105 }
106
107 return strtolower( $currency );
108 }
109
110 /**
111 * @param mixed $form_id
112 *
113 * @return array
114 */
115 public function get_field_options( $form_id ) {
116
117 $form_id = absint( $form_id );
118 $form_ids = $form_id;
119
120 /**
121 * Allows updating form ids used to query fields for displaying options with in the Payment action.
122 *
123 * @since 6.8
124 *
125 * @param int|int[] $form_ids
126 * @param int $form_id
127 */
128 $form_ids = apply_filters( 'frm_trans_action_get_field_options_form_id', $form_ids, $form_id );
129
130 $form_fields = FrmField::getAll(
131 array(
132 'fi.form_id' => $form_ids,
133 'fi.type not' => array( 'divider', 'end_divider', 'html', 'break', 'captcha', 'rte', 'form' ),
134 ),
135 'field_order'
136 );
137
138 return $form_fields;
139 }
140
141 /**
142 * Get the ID of the credit card field.
143 * We assume there is only a single credit card field in Stripe Lite.
144 * This is saved as part of the Stripe payment action.
145 *
146 * @param array $form_atts
147 *
148 * @return int
149 */
150 public function get_credit_card_field_id( $form_atts ) {
151 $field_id = 0;
152
153 foreach ( $form_atts['form_fields'] as $field ) {
154 if ( 'credit_card' === $field->type ) {
155 $field_id = (int) $field->id;
156 break;
157 }
158 }
159
160 return $field_id;
161 }
162
163 /**
164 * Show the dropdown fields for custom form fields.
165 * This is used for first and last name fields.
166 *
167 * @since 6.18 The `$field_atts` might contain `skipped_fields`. By default, the submit field is skipped.
168 *
169 * @param array $form_atts
170 * @param array $field_atts
171 *
172 * @return void
173 */
174 public function show_fields_dropdown( $form_atts, $field_atts ) {
175 if ( ! isset( $field_atts['allowed_fields'] ) ) {
176 $field_atts['allowed_fields'] = array();
177 }
178
179 if ( ! isset( $field_atts['skipped_fields'] ) ) {
180 $field_atts['skipped_fields'] = array( FrmSubmitHelper::FIELD_TYPE );
181 }
182
183 $has_field = false;
184 ?>
185 <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'] ) ); ?>">
186 <option value=""><?php esc_html_e( '&mdash; Select &mdash;' ); ?></option>
187 <?php
188 foreach ( $form_atts['form_fields'] as $field ) {
189 if ( $field_atts['skipped_fields'] && in_array( $field->type, (array) $field_atts['skipped_fields'], true ) ) {
190 continue;
191 }
192
193 $type_is_allowed = empty( $field_atts['allowed_fields'] ) || in_array( $field->type, (array) $field_atts['allowed_fields'], true );
194
195 if ( ! $type_is_allowed ) {
196 continue;
197 }
198
199 $has_field = true;
200 $key_exists = array_key_exists( $field_atts['name'], $form_atts['form_action']->post_content );
201 ?>
202 <option value="<?php echo esc_attr( $field->id ); ?>" <?php selected( $key_exists ? $form_atts['form_action']->post_content[ $field_atts['name'] ] : 0, $field->id ); ?>>
203 <?php
204 echo esc_attr( FrmAppHelper::truncate( $field->name, 50, 1 ) );
205
206 if ( 'name' === $field->type && isset( $field_atts['name'] ) ) {
207 switch ( $field_atts['name'] ) {
208 case 'billing_first_name':
209 echo ' (';
210 esc_html_e( 'First', 'formidable' );
211 echo ')';
212 break;
213
214 case 'billing_last_name':
215 echo ' (';
216 esc_html_e( 'Last', 'formidable' );
217 echo ')';
218 break;
219 }
220 }
221 ?>
222 </option>
223 <?php
224 unset( $field );
225 }//end foreach
226
227 if ( ! $has_field && ! empty( $field_atts['allowed_fields'] ) ) {
228 $readable_fields = str_replace( '_', ' ', implode( ', ', (array) $field_atts['allowed_fields'] ) );
229 ?>
230 <option value="">
231 <?php
232 // translators: %s: The comma separated field types expected in the form.
233 echo esc_html( sprintf( __( 'Oops! You need a %s field in your form.', 'formidable' ), $readable_fields ) );
234 ?>
235 </option>
236 <?php
237 }
238 ?>
239 </select>
240 <?php
241 }
242
243 public static function get_single_action_type( $action_id, $type = '' ) {
244 /**
245 * @var FrmFormAction
246 */
247 $action_control = FrmFormActionsController::get_form_actions( 'payment' );
248 return $action_control->get_single_action( $action_id );
249 }
250 }
251