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

244 lines 7.0 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 * @since 6.18 The `$field_atts` might contain `skipped_fields`. By default, the submit field is skipped.
162 *
163 * @param array $form_atts
164 * @param array $field_atts
165 * @return void
166 */
167 public function show_fields_dropdown( $form_atts, $field_atts ) {
168 if ( ! isset( $field_atts['allowed_fields'] ) ) {
169 $field_atts['allowed_fields'] = array();
170 }
171
172 if ( ! isset( $field_atts['skipped_fields'] ) ) {
173 $field_atts['skipped_fields'] = array( FrmSubmitHelper::FIELD_TYPE );
174 }
175
176 $has_field = false;
177 ?>
178 <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'] ) ); ?>">
179 <option value=""><?php esc_html_e( '&mdash; Select &mdash;' ); ?></option>
180 <?php
181 foreach ( $form_atts['form_fields'] as $field ) {
182 if ( $field_atts['skipped_fields'] && in_array( $field->type, (array) $field_atts['skipped_fields'], true ) ) {
183 continue;
184 }
185
186 $type_is_allowed = empty( $field_atts['allowed_fields'] ) || in_array( $field->type, (array) $field_atts['allowed_fields'], true );
187
188 if ( ! $type_is_allowed ) {
189 continue;
190 }
191
192 $has_field = true;
193 $key_exists = array_key_exists( $field_atts['name'], $form_atts['form_action']->post_content );
194 ?>
195 <option value="<?php echo esc_attr( $field->id ); ?>" <?php selected( $key_exists ? $form_atts['form_action']->post_content[ $field_atts['name'] ] : 0, $field->id ); ?>>
196 <?php
197 echo esc_attr( FrmAppHelper::truncate( $field->name, 50, 1 ) );
198
199 if ( 'name' === $field->type && isset( $field_atts['name'] ) ) {
200 switch ( $field_atts['name'] ) {
201 case 'billing_first_name':
202 echo ' (';
203 esc_html_e( 'First', 'formidable' );
204 echo ')';
205 break;
206
207 case 'billing_last_name':
208 echo ' (';
209 esc_html_e( 'Last', 'formidable' );
210 echo ')';
211 break;
212 }
213 }
214 ?>
215 </option>
216 <?php
217 unset( $field );
218 }//end foreach
219
220 if ( ! $has_field && ! empty( $field_atts['allowed_fields'] ) ) {
221 $readable_fields = str_replace( '_', ' ', implode( ', ', (array) $field_atts['allowed_fields'] ) );
222 ?>
223 <option value="">
224 <?php
225 // translators: %s: The comma separated field types expected in the form.
226 echo esc_html( sprintf( __( 'Oops! You need a %s field in your form.', 'formidable' ), $readable_fields ) );
227 ?>
228 </option>
229 <?php
230 }
231 ?>
232 </select>
233 <?php
234 }
235
236 public static function get_single_action_type( $action_id, $type = '' ) {
237 /**
238 * @var FrmFormAction
239 */
240 $action_control = FrmFormActionsController::get_form_actions( 'payment' );
241 return $action_control->get_single_action( $action_id );
242 }
243 }
244