PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 6.8
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v6.8
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
← All changes | classes/controllers/FrmSettingsController.php +78 -196 6.286.8 View file →
@@ -4,25 +4,13 @@
4 4 }
5 5
6 6 class FrmSettingsController {
7 7
8 - /**
9 - * Payments sections are removed from the top level and added to a payments section.
10 - *
11 - * @since 6.22.1
12 - *
13 - * @var array
14 - */
15 - private static $removed_payments_sections = array();
16 -
17 - /**
18 - * @return void
19 - */
20 8 public static function menu() {
21 9 // Make sure admins can see the menu items
22 10 FrmAppHelper::force_capability( 'frm_change_settings' );
23 11
24 - add_submenu_page( 'formidable', 'Formidable | ' . __( 'Global Settings', 'formidable' ), __( 'Global Settings', 'formidable' ), 'frm_change_settings', 'formidable-settings', 'FrmSettingsController::route' ); // phpcs:ignore SlevomatCodingStandard.Files.LineLength.LineTooLong
12 + add_submenu_page( 'formidable', 'Formidable | ' . __( 'Global Settings', 'formidable' ), __( 'Global Settings', 'formidable' ), 'frm_change_settings', 'formidable-settings', 'FrmSettingsController::route' );
25 13 }
26 14
27 15 /**
28 16 * Include license box template on demand.
@@ -32,31 +20,23 @@
32 20 public static function license_box() {
33 21 if ( ! current_user_can( 'activate_plugins' ) ) {
34 22 return;
35 23 }
36 - include FrmAppHelper::plugin_path() . '/classes/views/frm-settings/license_box.php';
24 + include( FrmAppHelper::plugin_path() . '/classes/views/frm-settings/license_box.php' );
37 25 }
38 26
39 - /**
40 - * @param array $errors
41 - * @param string $message
42 - *
43 - * @return void
44 - */
45 27 public static function display_form( $errors = array(), $message = '' ) {
46 28 global $frm_vars;
47 29
48 30 $frm_settings = FrmAppHelper::get_settings();
49 - $uploads = wp_upload_dir();
50 - $target_path = $uploads['basedir'] . '/formidable/css';
51 - $sections = self::get_settings_tabs();
52 - $current = FrmAppHelper::simple_get( 't', 'sanitize_title', 'general_settings' );
53 31
54 - if ( in_array( $current, array( 'stripe_settings', 'square_settings', 'authorize_net_settings', 'paypal_settings' ), true ) ) {
55 - $current = 'payments_settings';
56 - }
32 + $uploads = wp_upload_dir();
33 + $target_path = $uploads['basedir'] . '/formidable/css';
57 34
58 - require FrmAppHelper::plugin_path() . '/classes/views/frm-settings/form.php';
35 + $sections = self::get_settings_tabs();
36 + $current = FrmAppHelper::simple_get( 't', 'sanitize_title', 'general_settings' );
37 +
38 + require( FrmAppHelper::plugin_path() . '/classes/views/frm-settings/form.php' );
59 39 }
60 40
61 41 /**
62 42 * Get sections to use for Global Settings.
@@ -64,76 +44,62 @@
64 44 * @return array<array>
65 45 */
66 46 private static function get_settings_tabs() {
67 47 $sections = array(
68 - 'general' => array(
69 - 'class' => self::class,
48 + 'general' => array(
49 + 'class' => __CLASS__,
70 50 'function' => 'general_settings',
71 51 'name' => __( 'General Settings', 'formidable' ),
72 - 'icon' => 'frmfont frm_settings_icon',
52 + 'icon' => 'frm_icon_font frm_settings_icon',
73 53 ),
74 - 'messages' => array(
75 - 'class' => self::class,
54 + 'messages' => array(
55 + 'class' => __CLASS__,
76 56 'function' => 'message_settings',
77 57 'name' => __( 'Message Defaults', 'formidable' ),
78 - 'icon' => 'frmfont frm_stamp_icon',
58 + 'icon' => 'frm_icon_font frm_stamp_icon',
79 59 ),
80 - 'permissions' => array(
81 - 'class' => self::class,
60 + 'permissions' => array(
61 + 'class' => __CLASS__,
82 62 'function' => 'permission_settings',
83 63 'name' => __( 'Permissions', 'formidable' ),
84 - 'icon' => 'frmfont frm_lock_icon',
64 + 'icon' => 'frm_icon_font frm_lock_icon',
85 65 ),
86 - 'payments' => array(
87 - 'name' => __( 'Payments', 'formidable' ),
88 - 'icon' => 'frmfont frm_simple_cc_icon',
89 - 'class' => self::class,
90 - 'function' => 'payments_settings',
91 - ),
92 - 'custom_css' => array(
66 + 'custom_css' => array(
93 67 'class' => 'FrmStylesController',
94 68 'function' => 'custom_css',
95 69 'name' => __( 'Custom CSS', 'formidable' ),
96 - 'icon' => 'frmfont frm_code_icon',
70 + 'icon' => 'frm_icon_font frm_code_icon',
97 71 ),
98 72 'manage_styles' => array(
99 73 'class' => 'FrmStylesController',
100 74 'function' => 'manage',
101 75 'name' => __( 'Manage Styles', 'formidable' ),
102 - 'icon' => 'frmfont frm_pallet_icon',
76 + 'icon' => 'frm_icon_font frm_pallet_icon',
103 77 ),
104 - 'captcha' => array(
105 - 'class' => self::class,
78 + 'captcha' => array(
79 + 'class' => __CLASS__,
106 80 'function' => 'captcha_settings',
107 - 'name' => __( 'Captcha/Spam', 'formidable' ),
108 - 'icon' => 'frmfont frm_shield_check_icon',
81 + 'name' => __( 'Captcha', 'formidable' ),
82 + 'icon' => 'frm_icon_font frm_shield_check_icon',
109 83 ),
110 - 'email' => array(
111 - 'class' => self::class,
112 - 'function' => 'email_settings',
113 - 'name' => __( 'Email', 'formidable' ),
114 - 'icon' => 'frmfont frm_email_icon',
115 - ),
116 - 'white_label' => array(
84 + 'white_label' => array(
117 85 'name' => __( 'White Labeling', 'formidable' ),
118 - 'icon' => 'frmfont frm_ghost_icon',
86 + 'icon' => 'frm_icon_font frm_ghost_icon',
119 87 'html_class' => 'frm_show_upgrade_tab frm_noallow',
120 88 'data' => array(
121 89 'medium' => 'white-label',
122 90 'upgrade' => __( 'White labeling options', 'formidable' ),
123 91 'screenshot' => 'white-label.png',
124 - 'learn-more' => FrmAppHelper::get_doc_url( 'features/white-label-form-builder-wordpress', 'white-labeling-global-settings', false ),
125 92 ),
126 93 ),
127 - 'inbox' => array(
94 + 'inbox' => array(
128 95 'name' => __( 'Inbox', 'formidable' ),
129 - 'icon' => 'frmfont frm_email_icon',
96 + 'icon' => 'frm_icon_font frm_email_icon',
130 97 'html_class' => 'frm_show_upgrade_tab frm_noallow',
131 98 'data' => array(
132 99 'medium' => 'inbox-settings',
133 100 'upgrade' => __( 'Inbox settings', 'formidable' ),
134 101 'screenshot' => 'inbox.png',
135 - 'learn-more' => FrmAppHelper::get_doc_url( 'global-settings-overview/#kb-inbox', 'inbox-global-settings' ),
136 102 ),
137 103 ),
138 104 );
139 105
@@ -140,11 +106,10 @@
140 106 if ( apply_filters( 'frm_include_addon_page', false ) ) {
141 107 // If no addons need a license, skip this page
142 108 $show_licenses = false;
143 109 $installed_addons = apply_filters( 'frm_installed_addons', array() );
144 -
145 110 foreach ( $installed_addons as $installed_addon ) {
146 - if ( ! $installed_addon->is_parent_licence && $installed_addon->plugin_name !== 'Formidable Pro' && $installed_addon->needs_license ) {
111 + if ( ! $installed_addon->is_parent_licence && $installed_addon->plugin_name != 'Formidable Pro' && $installed_addon->needs_license ) {
147 112 $show_licenses = true;
148 113 break;
149 114 }
150 115 }
@@ -163,14 +128,13 @@
163 128 /**
164 129 * @param array<array> $sections
165 130 */
166 131 $sections = apply_filters( 'frm_add_settings_section', $sections );
167 - self::remove_payments_sections( $sections );
168 132
169 133 $sections['misc'] = array(
170 134 'name' => __( 'Miscellaneous', 'formidable' ),
171 - 'icon' => 'frmfont frm_shuffle_icon',
172 - 'class' => self::class,
135 + 'icon' => 'frm_icon_font frm_shuffle_icon',
136 + 'class' => __CLASS__,
173 137 'function' => 'misc_settings',
174 138 );
175 139
176 140 foreach ( $sections as $key => $section ) {
@@ -177,9 +141,9 @@
177 141 $original = $section;
178 142 $defaults = array(
179 143 'html_class' => '',
180 144 'name' => ucfirst( $key ),
181 - 'icon' => 'frmfont frm_settings_icon',
145 + 'icon' => 'frm_icon_font frm_settings_icon',
182 146 'anchor' => $key . '_settings',
183 147 'data' => array(),
184 148 );
185 149
@@ -199,53 +163,8 @@
199 163
200 164 return $sections;
201 165 }
202 166
203 - /**
204 - * Remove the payments sections (PayPal, Square, Stripe, Authorize.Net)
205 - * and show them all on the payments section in separate tabs.
206 - *
207 - * @since 6.22.1
208 - *
209 - * @param array $sections
210 - *
211 - * @return void
212 - */
213 - private static function remove_payments_sections( &$sections ) {
214 - $payment_section_keys = array( 'paypal', 'square', 'stripe', 'authorize_net' );
215 -
216 - foreach ( $sections as $key => $section ) {
217 - if ( in_array( $key, $payment_section_keys, true ) ) {
218 - self::$removed_payments_sections[ $key ] = $section;
219 - unset( $sections[ $key ] );
220 - }
221 - }
222 -
223 - uksort( self::$removed_payments_sections, array( self::class, 'payment_sections_sort_callback' ) );
224 - }
225 -
226 - /**
227 - * Sort the payments sections (PayPal, Square, Stripe, Authorize.Net)
228 - *
229 - * @since 6.22.1
230 - *
231 - * @param string $a
232 - * @param string $b
233 - *
234 - * @return int
235 - */
236 - private static function payment_sections_sort_callback( $a, $b ) {
237 - $order = array( 'stripe', 'square', 'paypal', 'authorize_net' );
238 - $first_key = array_search( $a, $order, true );
239 - $second_key = array_search( $b, $order, true );
240 -
241 - if ( false === $first_key || false === $second_key ) {
242 - return 0;
243 - }
244 -
245 - return $first_key - $second_key;
246 - }
247 -
248 167 public static function load_settings_tab() {
249 168 FrmAppHelper::permission_check( 'frm_change_settings' );
250 169 check_ajax_referer( 'frm_ajax', 'nonce' );
251 170
@@ -250,9 +169,8 @@
250 169 check_ajax_referer( 'frm_ajax', 'nonce' );
251 170
252 171 $section = FrmAppHelper::get_post_param( 'tab', '', 'sanitize_text_field' );
253 172 $sections = self::get_settings_tabs();
254 -
255 173 if ( ! isset( $sections[ $section ] ) ) {
256 174 wp_die();
257 175 }
258 176
@@ -260,11 +178,10 @@
260 178
261 179 if ( isset( $section['class'] ) ) {
262 180 call_user_func( array( $section['class'], $section['function'] ) );
263 181 } else {
264 - call_user_func( $section['function'] ?? $section );
182 + call_user_func( ( isset( $section['function'] ) ? $section['function'] : $section ) );
265 183 }
266 -
267 184 wp_die();
268 185 }
269 186
270 187 /**
@@ -285,14 +202,15 @@
285 202 /**
286 203 * Render the global currency selector if Pro is up to date.
287 204 *
288 205 * @param FrmSettings $frm_settings
289 - *
206 + * @param string $more_html
290 207 * @return void
291 208 */
292 - public static function maybe_render_currency_selector( $frm_settings ) {
293 - if ( is_callable( 'FrmProSettingsController::add_currency_settings' ) ) {
294 - FrmProSettingsController::add_currency_settings();
209 + public static function maybe_render_currency_selector( $frm_settings, $more_html ) {
210 + if ( false !== strpos( $more_html, 'id="frm_currency"' ) ) {
211 + // Avoid rendering the Currency setting if it gets rendered from the frm_settings_form hook.
212 + // This is for backward compatibility. If Pro is outdated there won't be two currency dropdowns.
295 213 return;
296 214 }
297 215
298 216 $currencies = FrmCurrencyHelper::get_currencies();
@@ -300,82 +218,48 @@
300 218 }
301 219
302 220 /**
303 221 * @since 4.0
304 - *
305 - * @return void
306 222 */
307 223 public static function message_settings() {
308 224 $frm_settings = FrmAppHelper::get_settings();
309 - include FrmAppHelper::plugin_path() . '/classes/views/frm-settings/messages.php';
225 +
226 + include( FrmAppHelper::plugin_path() . '/classes/views/frm-settings/messages.php' );
310 227 }
311 228
312 229 /**
313 230 * @since 4.0
314 - *
315 - * @return void
316 231 */
317 232 public static function captcha_settings() {
318 233 $frm_settings = FrmAppHelper::get_settings();
319 234 $captcha_lang = FrmAppHelper::locales( 'captcha' );
320 235
321 - include FrmAppHelper::plugin_path() . '/classes/views/frm-settings/captcha/captcha.php';
236 + include( FrmAppHelper::plugin_path() . '/classes/views/frm-settings/captcha/captcha.php' );
322 237 }
323 238
324 239 /**
325 - * Shows email settings.
326 - *
327 - * @since 6.25
328 - *
329 - * @return void
330 - */
331 - public static function email_settings() {
332 - $frm_settings = FrmAppHelper::get_settings();
333 - include FrmAppHelper::plugin_path() . '/classes/views/frm-settings/email/email-styles.php';
334 - }
335 -
336 - /**
337 240 * @since 4.0
338 - *
339 - * @return void
340 241 */
341 242 public static function permission_settings() {
342 243 $frm_settings = FrmAppHelper::get_settings();
343 244 $frm_roles = FrmAppHelper::frm_capabilities();
344 245
345 - include FrmAppHelper::plugin_path() . '/classes/views/frm-settings/permissions.php';
246 + include( FrmAppHelper::plugin_path() . '/classes/views/frm-settings/permissions.php' );
346 247 }
347 248
348 249 /**
349 - * @return void
350 - */
351 - public static function payments_settings() {
352 - $payment_sections = self::$removed_payments_sections;
353 - $tab = FrmAppHelper::simple_get( 't', 'sanitize_title', 'general_settings' );
354 -
355 - if ( $tab && in_array( $tab, array( 'stripe_settings', 'square_settings', 'authorize_net_settings', 'paypal_settings' ), true ) ) {
356 - $tab = str_replace( '_settings', '', $tab );
357 - } else {
358 - $tab = 'stripe';
359 - }
360 -
361 - include FrmAppHelper::plugin_path() . '/classes/views/frm-settings/payments.php';
362 - }
363 -
364 - /**
365 250 * @since 4.0
366 - *
367 - * @return void
368 251 */
369 252 public static function misc_settings() {
370 253 $frm_settings = FrmAppHelper::get_settings();
371 - include FrmAppHelper::plugin_path() . '/classes/views/frm-settings/misc.php';
254 +
255 + include( FrmAppHelper::plugin_path() . '/classes/views/frm-settings/misc.php' );
372 256 }
373 257
374 258 /**
375 259 * Save form data submitted from the Global settings page.
376 260 *
377 - * @param bool|string $stop_load
261 + * @param string|bool $stop_load
378 262 *
379 263 * @return void
380 264 */
381 265 public static function process_form( $stop_load = false ) {
@@ -385,10 +269,10 @@
385 269 $process_form = FrmAppHelper::get_post_param( 'process_form', '', 'sanitize_text_field' );
386 270
387 271 if ( ! wp_verify_nonce( $process_form, 'process_form_nonce' ) ) {
388 272 $error_args = array(
389 - 'title' => __( 'Verification failed', 'formidable' ),
390 - 'body' => $frm_settings->admin_permission,
273 + 'title' => __( 'Verification failed', 'formidable' ),
274 + 'body' => $frm_settings->admin_permission,
391 275 'cancel_text' => __( 'Cancel', 'formidable' ),
392 276 );
393 277 FrmAppController::show_error_modal( $error_args );
394 278 return;
@@ -421,10 +305,8 @@
421 305 /**
422 306 * Include the Update button on the global settings page.
423 307 *
424 308 * @since 4.0.02
425 - *
426 - * @return void
427 309 */
428 310 public static function save_button() {
429 311 echo '<input class="button-primary frm-button-primary" type="submit"
430 312 value="' . esc_attr__( 'Update', 'formidable' ) . '"/>';
@@ -429,21 +311,16 @@
429 311 echo '<input class="button-primary frm-button-primary" type="submit"
430 312 value="' . esc_attr__( 'Update', 'formidable' ) . '"/>';
431 313 }
432 314
433 - /**
434 - * @param bool|string $stop_load
435 - *
436 - * @return void
437 - */
438 315 public static function route( $stop_load = false ) {
439 316 $action = isset( $_REQUEST['frm_action'] ) ? 'frm_action' : 'action';
440 317 $action = FrmAppHelper::get_param( $action, '', 'get', 'sanitize_title' );
441 318 FrmAppHelper::include_svg();
442 319
443 - if ( $action === 'process-form' ) {
320 + if ( $action == 'process-form' ) {
444 321 self::process_form( $stop_load );
445 - } elseif ( $stop_load !== 'stop_load' ) {
322 + } elseif ( $stop_load != 'stop_load' ) {
446 323 self::display_form();
447 324 }
448 325 }
449 326
@@ -450,17 +327,34 @@
450 327 /**
451 328 * Add CTA to the bottom on the plugin settings pages.
452 329 *
453 330 * @since 3.04.02
454 - *
455 - * @return void
456 331 */
457 - public static function settings_cta() {
332 + public static function settings_cta( $view ) {
333 +
458 334 if ( get_option( 'frm_lite_settings_upgrade', false ) ) {
459 335 return;
460 336 }
461 337
462 - include FrmAppHelper::plugin_path() . '/classes/views/frm-settings/settings_cta.php';
338 + $features = array(
339 + __( 'Extra form features like file uploads, pagination, etc', 'formidable' ),
340 + __( 'Repeaters & cascading fields for advanced forms', 'formidable' ),
341 + __( 'Flexibly view, search, edit, and delete entries anywhere', 'formidable' ),
342 + __( 'Display entries with virtually limitless Formidable views', 'formidable' ),
343 + __( 'Create surveys & polls', 'formidable' ),
344 + __( 'WordPress user registration and login forms', 'formidable' ),
345 + __( 'Create Stripe, PayPal or Authorize.net payment forms', 'formidable' ),
346 + __( 'Powerful conditional logic for smart forms', 'formidable' ),
347 + __( 'Integrations with 1000+ marketing & payment services', 'formidable' ),
348 + __( 'Collect digital signatures', 'formidable' ),
349 + __( 'Accept user-submitted content with Post submissions', 'formidable' ),
350 + __( 'Email routing', 'formidable' ),
351 + __( 'Create calculator forms', 'formidable' ),
352 + __( 'Save draft entries and return later', 'formidable' ),
353 + __( 'Analyze form data with graphs & stats', 'formidable' ),
354 + );
355 +
356 + include( FrmAppHelper::plugin_path() . '/classes/views/frm-settings/settings_cta.php' );
463 357 }
464 358
465 359 /**
466 360 * Dismiss upgrade notice at the bottom on the plugin settings pages.
@@ -467,12 +361,11 @@
467 361 *
468 362 * @since 3.04.02
469 363 */
470 364 public static function settings_cta_dismiss() {
471 - check_ajax_referer( 'frm_ajax', 'nonce' );
472 365 FrmAppHelper::permission_check( 'frm_change_settings' );
473 366
474 - update_option( 'frm_lite_settings_upgrade', time(), false );
367 + update_option( 'frm_lite_settings_upgrade', time(), 'no' );
475 368
476 369 wp_send_json_success();
477 370 }
478 371
@@ -486,9 +379,9 @@
486 379 check_ajax_referer( 'frm_ajax', 'nonce' );
487 380
488 381 global $wpdb;
489 382
490 - $term = FrmAppHelper::get_param( 'term', '', 'get', 'sanitize_text_field' );
383 + $term = FrmAppHelper::get_param( 'term', '', 'get', 'sanitize_text_field' );
491 384 $post_type = FrmAppHelper::get_param( 'post_type', 'page', 'get', 'sanitize_text_field' );
492 385
493 386 $where = array(
494 387 'post_status' => 'publish',
@@ -500,11 +393,11 @@
500 393 'limit' => 25,
501 394 'order_by' => 'post_title',
502 395 );
503 396
504 - $pages = FrmDb::get_results( $wpdb->posts, $where, 'ID, post_title', $atts );
397 + $pages = FrmDb::get_results( $wpdb->posts, $where, 'ID, post_title', $atts );
398 +
505 399 $results = array();
506 -
507 400 foreach ( $pages as $page ) {
508 401 $results[] = array(
509 402 'value' => $page->ID,
510 403 'label' => $page->post_title,
@@ -514,22 +407,11 @@
514 407 wp_send_json( $results );
515 408 }
516 409
517 410 /**
518 - * Shows a fake color picker.
519 - *
520 - * @since 6.25
521 - *
522 - * @param string $color Color value.
523 - *
524 - * @return void
411 + * @deprecated 6.0 use FrmSettingsController::captcha_settings().
525 412 */
526 - public static function fake_color_picker( $color ) {
527 - ?>
528 - <div class="wp-picker-container">
529 - <button type="button" class="button wp-color-result" aria-expanded="false" aria-disabled="true" tabindex="-1" style="background-color:<?php echo esc_attr( $color ); ?>;"><?php // phpcs:ignore SlevomatCodingStandard.Files.LineLength.LineTooLong ?>
530 - <span class="wp-color-result-text" style="color:#a7aaad;"><?php esc_html_e( 'Select Color', 'formidable' ); ?></span>
531 - </button>
532 - </div>
533 - <?php
413 + public static function recaptcha_settings() {
414 + _deprecated_function( __FUNCTION__, '6.0', 'FrmSettingsController::captcha_settings()' );
415 + self::captcha_settings();
534 416 }
535 417 }