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

252 lines 7.4 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 frmfont',
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 $form_id = absint( $form_id );
117 $form_ids = $form_id;
118
119 /**
120 * Allows updating form ids used to query fields for displaying options with in the Payment action.
121 *
122 * @since 6.8
123 *
124 * @param int|int[] $form_ids
125 * @param int $form_id
126 */
127 $form_ids = apply_filters( 'frm_trans_action_get_field_options_form_id', $form_ids, $form_id );
128
129 return FrmField::getAll(
130 array(
131 'fi.form_id' => $form_ids,
132 'fi.type not' => array( 'divider', 'end_divider', 'html', 'break', 'captcha', 'rte', 'form' ),
133 ),
134 'field_order'
135 );
136 }
137
138 /**
139 * Get the ID of the credit card field.
140 * We assume there is only a single credit card field in Stripe Lite.
141 * This is saved as part of the Stripe payment action.
142 *
143 * @param array $form_atts
144 *
145 * @return int
146 */
147 public function get_credit_card_field_id( $form_atts ) {
148 $field_id = 0;
149
150 foreach ( $form_atts['form_fields'] as $field ) {
151 if ( 'credit_card' === $field->type ) {
152 $field_id = (int) $field->id;
153 break;
154 }
155 }
156
157 return $field_id;
158 }
159
160 /**
161 * Show the dropdown fields for custom form fields.
162 * This is used for first and last name fields.
163 *
164 * @since 6.18 The `$field_atts` might contain `skipped_fields`. By default, the submit field is skipped.
165 *
166 * @param array $form_atts
167 * @param array $field_atts
168 *
169 * @return void
170 */
171 public function show_fields_dropdown( $form_atts, $field_atts ) {
172 if ( ! isset( $field_atts['allowed_fields'] ) ) {
173 $field_atts['allowed_fields'] = array();
174 }
175
176 if ( ! isset( $field_atts['skipped_fields'] ) ) {
177 $field_atts['skipped_fields'] = array( FrmSubmitHelper::FIELD_TYPE );
178 }
179
180 $has_field = false;
181 // phpcs:disable Generic.WhiteSpace.ScopeIndent
182 ?>
183 <?php // phpcs:ignore SlevomatCodingStandard.Files.LineLength.LineTooLong ?>
184 <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'] ) ); ?>">
185 <option value=""><?php esc_html_e( '&mdash; Select &mdash;' ); ?></option>
186 <?php
187 foreach ( $form_atts['form_fields'] as $field ) {
188 if ( $field_atts['skipped_fields'] && in_array( $field->type, (array) $field_atts['skipped_fields'], true ) ) {
189 continue;
190 }
191
192 $type_is_allowed = empty( $field_atts['allowed_fields'] ) || in_array( $field->type, (array) $field_atts['allowed_fields'], true );
193
194 if ( ! $type_is_allowed ) {
195 continue;
196 }
197
198 $has_field = true;
199 $key_exists = array_key_exists( $field_atts['name'], $form_atts['form_action']->post_content );
200 ?>
201 <?php // phpcs:ignore SlevomatCodingStandard.Files.LineLength.LineTooLong ?>
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 // phpcs:enable Generic.WhiteSpace.ScopeIndent
242 }
243
244 public static function get_single_action_type( $action_id, $type = '' ) {
245 /**
246 * @var FrmFormAction
247 */
248 $action_control = FrmFormActionsController::get_form_actions( 'payment' );
249 return $action_control->get_single_action( $action_id );
250 }
251 }
252