Completed
Push — master ( 772c40...0a710d )
by Jamie
04:09
created
classes/models/FrmDb.php 1 patch
Spacing   +50 added lines, -50 removed lines patch added patch discarded remove patch
@@ -7,8 +7,8 @@  discard block
 block discarded – undo
7 7
     var $entry_metas;
8 8
 
9 9
     public function __construct() {
10
-        if ( ! defined('ABSPATH') ) {
11
-            die('You are not allowed to call this page directly.');
10
+        if ( ! defined( 'ABSPATH' ) ) {
11
+            die( 'You are not allowed to call this page directly.' );
12 12
         }
13 13
 
14 14
         global $wpdb;
@@ -24,7 +24,7 @@  discard block
 block discarded – undo
24 24
         $frm_db_version = FrmAppHelper::$db_version;
25 25
         $old_db_version = (float) $old_db_version;
26 26
         if ( ! $old_db_version ) {
27
-            $old_db_version = get_option('frm_db_version');
27
+            $old_db_version = get_option( 'frm_db_version' );
28 28
         }
29 29
 
30 30
         if ( $frm_db_version != $old_db_version ) {
@@ -34,16 +34,16 @@  discard block
 block discarded – undo
34 34
 			require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
35 35
 
36 36
             $this->create_tables();
37
-            $this->migrate_data($frm_db_version, $old_db_version);
37
+            $this->migrate_data( $frm_db_version, $old_db_version );
38 38
 
39 39
             /***** SAVE DB VERSION *****/
40
-            update_option('frm_db_version', $frm_db_version);
40
+            update_option( 'frm_db_version', $frm_db_version );
41 41
 
42 42
             /**** ADD/UPDATE DEFAULT TEMPLATES ****/
43 43
             FrmXMLController::add_default_templates();
44 44
         }
45 45
 
46
-        do_action('frm_after_install');
46
+        do_action( 'frm_after_install' );
47 47
 
48 48
         /**** update the styling settings ****/
49 49
 		if ( is_admin() && function_exists( 'get_filesystem_method' ) ) {
@@ -153,7 +153,7 @@  discard block
 block discarded – undo
153 153
 				global $wpdb;
154 154
 				$wpdb->query( $q . $charset_collate );
155 155
 			}
156
-            unset($q);
156
+            unset( $q );
157 157
         }
158 158
     }
159 159
 
@@ -174,7 +174,7 @@  discard block
 block discarded – undo
174 174
      * Change array into format $wpdb->prepare can use
175 175
      */
176 176
     public static function get_where_clause_and_values( &$args, $starts_with = ' WHERE ' ) {
177
-        if ( empty($args) ) {
177
+        if ( empty( $args ) ) {
178 178
 			// add an arg to prevent prepare from failing
179 179
 			$args = array( 'where' => $starts_with . '1=%d', 'values' => array( 1 ) );
180 180
 			return;
@@ -230,8 +230,8 @@  discard block
 block discarded – undo
230 230
     private static function interpret_array_to_sql( $key, $value, &$where, &$values ) {
231 231
 		$key = trim( $key );
232 232
 
233
-        if ( strpos( $key, 'created_at' ) !== false || strpos( $key, 'updated_at' ) !== false  ) {
234
-            $k = explode(' ', $key);
233
+        if ( strpos( $key, 'created_at' ) !== false || strpos( $key, 'updated_at' ) !== false ) {
234
+            $k = explode( ' ', $key );
235 235
             $where .= ' DATE_FORMAT(' . reset( $k ) . ', %s) ' . str_replace( reset( $k ), '', $key );
236 236
             $values[] = '%Y-%m-%d %H:%i:%s';
237 237
         } else {
@@ -244,7 +244,7 @@  discard block
 block discarded – undo
244 244
         if ( is_array( $value ) ) {
245 245
             // translate array of values to "in"
246 246
 			if ( strpos( $lowercase_key, 'like' ) !== false ) {
247
-				$where = preg_replace('/' . $key . '$/', '', $where);
247
+				$where = preg_replace( '/' . $key . '$/', '', $where );
248 248
 				$where .= '(';
249 249
 				$start = true;
250 250
 				foreach ( $value as $v ) {
@@ -370,7 +370,7 @@  discard block
 block discarded – undo
370 370
 
371 371
     public static function get_records( $table, $args = array(), $order_by = '', $limit = '', $fields = '*' ) {
372 372
         _deprecated_function( __FUNCTION__, '2.0', 'FrmDb::get_results' );
373
-        return self::get_results( $table, $args, $fields, compact('order_by', 'limit') );
373
+        return self::get_results( $table, $args, $fields, compact( 'order_by', 'limit' ) );
374 374
     }
375 375
 
376 376
     /**
@@ -403,8 +403,8 @@  discard block
 block discarded – undo
403 403
 		);
404 404
 
405 405
 		$where_is = strtolower( $where_is );
406
-		if ( isset( $switch_to[ $where_is ] ) ) {
407
-			return ' ' . $switch_to[ $where_is ];
406
+		if ( isset( $switch_to[$where_is] ) ) {
407
+			return ' ' . $switch_to[$where_is];
408 408
 		}
409 409
 
410 410
 		// > and < need a little more work since we don't want them switched to >= and <=
@@ -426,8 +426,8 @@  discard block
 block discarded – undo
426 426
     private static function get_group_and_table_name( &$table, &$group ) {
427 427
 		global $wpdb, $wpmuBaseTablePrefix;
428 428
 
429
-        $table_parts = explode(' ', $table);
430
-        $group = reset($table_parts);
429
+        $table_parts = explode( ' ', $table );
430
+        $group = reset( $table_parts );
431 431
         $group = str_replace( $wpdb->prefix, '', $group );
432 432
 
433 433
 		$prefix = $wpmuBaseTablePrefix ? $wpmuBaseTablePrefix : $wpdb->base_prefix;
@@ -442,7 +442,7 @@  discard block
 block discarded – undo
442 442
     }
443 443
 
444 444
     private static function convert_options_to_array( &$args, $order_by = '', $limit = '' ) {
445
-        if ( ! is_array($args) ) {
445
+        if ( ! is_array( $args ) ) {
446 446
 			$args = array( 'order_by' => $args );
447 447
         }
448 448
 
@@ -457,16 +457,16 @@  discard block
 block discarded – undo
457 457
         $temp_args = $args;
458 458
         foreach ( $temp_args as $k => $v ) {
459 459
             if ( $v == '' ) {
460
-				unset( $args[ $k ] );
460
+				unset( $args[$k] );
461 461
                 continue;
462 462
             }
463 463
 
464 464
             if ( $k == 'limit' ) {
465
-				$args[ $k ] = FrmAppHelper::esc_limit( $v );
465
+				$args[$k] = FrmAppHelper::esc_limit( $v );
466 466
             }
467 467
             $db_name = strtoupper( str_replace( '_', ' ', $k ) );
468 468
             if ( strpos( $v, $db_name ) === false ) {
469
-				$args[ $k ] = $db_name . ' ' . $v;
469
+				$args[$k] = $db_name . ' ' . $v;
470 470
             }
471 471
         }
472 472
 
@@ -498,7 +498,7 @@  discard block
 block discarded – undo
498 498
 			$query = $wpdb->prepare( $query . $where['where'], $where['values'] );
499 499
 		}
500 500
 
501
-		$cache_key = str_replace( array( ' ', ',' ), '_', trim( implode( '_', FrmAppHelper::array_flatten( $where ) ) . $columns . '_results_ARRAY_A' , ' WHERE' ) );
501
+		$cache_key = str_replace( array( ' ', ',' ), '_', trim( implode( '_', FrmAppHelper::array_flatten( $where ) ) . $columns . '_results_ARRAY_A', ' WHERE' ) );
502 502
 		$results = FrmAppHelper::check_cache( $cache_key, $group, $query, 'get_associative_results' );
503 503
 
504 504
 		return $results;
@@ -507,7 +507,7 @@  discard block
 block discarded – undo
507 507
     public function uninstall() {
508 508
 		if ( ! current_user_can( 'administrator' ) ) {
509 509
             $frm_settings = FrmAppHelper::get_settings();
510
-            wp_die($frm_settings->admin_permission);
510
+            wp_die( $frm_settings->admin_permission );
511 511
         }
512 512
 
513 513
         global $wpdb, $wp_roles;
@@ -517,8 +517,8 @@  discard block
 block discarded – undo
517 517
 		$wpdb->query( 'DROP TABLE IF EXISTS ' . $this->entries );
518 518
 		$wpdb->query( 'DROP TABLE IF EXISTS ' . $this->entry_metas );
519 519
 
520
-        delete_option('frm_options');
521
-        delete_option('frm_db_version');
520
+        delete_option( 'frm_options' );
521
+        delete_option( 'frm_db_version' );
522 522
 
523 523
         //delete roles
524 524
         $frm_roles = FrmAppHelper::frm_capabilities();
@@ -526,11 +526,11 @@  discard block
 block discarded – undo
526 526
         foreach ( $frm_roles as $frm_role => $frm_role_description ) {
527 527
             foreach ( $roles as $role => $details ) {
528 528
                 $wp_roles->remove_cap( $role, $frm_role );
529
-                unset($role, $details);
529
+                unset( $role, $details );
530 530
     		}
531
-    		unset($frm_role, $frm_role_description);
531
+    		unset( $frm_role, $frm_role_description );
532 532
 		}
533
-		unset($roles, $frm_roles);
533
+		unset( $roles, $frm_roles );
534 534
 
535 535
 		// delete actions, views, and styles
536 536
 
@@ -552,7 +552,7 @@  discard block
 block discarded – undo
552 552
 
553 553
 		$wpdb->query( $wpdb->prepare( 'DELETE FROM ' . $wpdb->options . ' WHERE option_name LIKE %s OR option_name LIKE %s', '_transient_timeout_frm_form_fields_%', '_transient_frm_form_fields_%' ) );
554 554
 
555
-        do_action('frm_after_uninstall');
555
+        do_action( 'frm_after_uninstall' );
556 556
         return true;
557 557
     }
558 558
 
@@ -609,8 +609,8 @@  discard block
 block discarded – undo
609 609
 
610 610
         $updated = 0;
611 611
         foreach ( $fields as $f ) {
612
-            $f->field_options = maybe_unserialize($f->field_options);
613
-            if ( empty($f->field_options['size']) || ! is_numeric($f->field_options['size']) ) {
612
+            $f->field_options = maybe_unserialize( $f->field_options );
613
+            if ( empty( $f->field_options['size'] ) || ! is_numeric( $f->field_options['size'] ) ) {
614 614
                 continue;
615 615
             }
616 616
 
@@ -618,27 +618,27 @@  discard block
 block discarded – undo
618 618
             $f->field_options['size'] .= 'px';
619 619
             $u = FrmField::update( $f->id, array( 'field_options' => $f->field_options ) );
620 620
             if ( $u ) {
621
-                $updated++;
621
+                $updated ++;
622 622
             }
623
-            unset($f);
623
+            unset( $f );
624 624
         }
625 625
 
626 626
         // Change the characters in widgets to pixels
627
-        $widgets = get_option('widget_frm_show_form');
628
-        if ( empty($widgets) ) {
627
+        $widgets = get_option( 'widget_frm_show_form' );
628
+        if ( empty( $widgets ) ) {
629 629
             return;
630 630
         }
631 631
 
632
-        $widgets = maybe_unserialize($widgets);
632
+        $widgets = maybe_unserialize( $widgets );
633 633
         foreach ( $widgets as $k => $widget ) {
634
-            if ( ! is_array($widget) || ! isset($widget['size']) ) {
634
+            if ( ! is_array( $widget ) || ! isset( $widget['size'] ) ) {
635 635
                 continue;
636 636
             }
637 637
 			$size = round( $pixel_conversion * (int) $widget['size'] );
638 638
             $size .= 'px';
639
-			$widgets[ $k ]['size'] = $size;
639
+			$widgets[$k]['size'] = $size;
640 640
         }
641
-        update_option('widget_frm_show_form', $widgets);
641
+        update_option( 'widget_frm_show_form', $widgets );
642 642
     }
643 643
 
644 644
     /**
@@ -687,7 +687,7 @@  discard block
 block discarded – undo
687 687
 			}
688 688
 
689 689
             // Format form options
690
-            $form_options = maybe_unserialize($form->options);
690
+            $form_options = maybe_unserialize( $form->options );
691 691
 
692 692
             // Migrate settings to actions
693 693
             FrmXMLHelper::migrate_form_settings_to_actions( $form_options, $form->id );
@@ -697,7 +697,7 @@  discard block
 block discarded – undo
697 697
     private function migrate_to_11() {
698 698
         global $wpdb;
699 699
 
700
-        $forms = FrmDb::get_results( $this->forms, array(), 'id, options');
700
+        $forms = FrmDb::get_results( $this->forms, array(), 'id, options' );
701 701
 
702 702
         $sending = __( 'Sending', 'formidable' );
703 703
 		$img = FrmAppHelper::plugin_url() . '/images/ajax_loader.gif';
@@ -708,13 +708,13 @@  discard block
 block discarded – undo
708 708
 <img class="frm_ajax_loading" src="$img" alt="$sending" style="visibility:hidden;" />
709 709
 </div>
710 710
 DEFAULT_HTML;
711
-        unset($sending, $img);
711
+        unset( $sending, $img );
712 712
 
713
-        $new_default_html = FrmFormsHelper::get_default_html('submit');
713
+        $new_default_html = FrmFormsHelper::get_default_html( 'submit' );
714 714
         $draft_link = FrmFormsHelper::get_draft_link();
715 715
 		foreach ( $forms as $form ) {
716
-            $form->options = maybe_unserialize($form->options);
717
-            if ( ! isset($form->options['submit_html']) || empty($form->options['submit_html']) ) {
716
+            $form->options = maybe_unserialize( $form->options );
717
+            if ( ! isset( $form->options['submit_html'] ) || empty( $form->options['submit_html'] ) ) {
718 718
                 continue;
719 719
             }
720 720
 
@@ -725,9 +725,9 @@  discard block
 block discarded – undo
725 725
 				$form->options['submit_html'] = preg_replace( '~\<\/div\>(?!.*\<\/div\>)~', $draft_link . "\r\n</div>", $form->options['submit_html'] );
726 726
 				$wpdb->update( $this->forms, array( 'options' => serialize( $form->options ) ), array( 'id' => $form->id ) );
727 727
             }
728
-            unset($form);
728
+            unset( $form );
729 729
         }
730
-        unset($forms);
730
+        unset( $forms );
731 731
     }
732 732
 
733 733
     private function migrate_to_6() {
@@ -756,16 +756,16 @@  discard block
 block discarded – undo
756 756
 </div>
757 757
 DEFAULT_HTML;
758 758
 
759
-        $new_default_html = FrmFieldsHelper::get_default_html('text');
759
+        $new_default_html = FrmFieldsHelper::get_default_html( 'text' );
760 760
         foreach ( $fields as $field ) {
761
-            $field->field_options = maybe_unserialize($field->field_options);
761
+            $field->field_options = maybe_unserialize( $field->field_options );
762 762
 			if ( ! FrmField::is_option_empty( $field, 'custom_html' ) || $field->field_options['custom_html'] == $default_html || $field->field_options['custom_html'] == $old_default_html ) {
763 763
                 $field->field_options['custom_html'] = $new_default_html;
764 764
 				$wpdb->update( $this->fields, array( 'field_options' => maybe_serialize( $field->field_options ) ), array( 'id' => $field->id ) );
765 765
             }
766
-            unset($field);
766
+            unset( $field );
767 767
         }
768
-        unset($default_html, $old_default_html, $fields);
768
+        unset( $default_html, $old_default_html, $fields );
769 769
     }
770 770
 
771 771
     private function migrate_to_4() {
Please login to merge, or discard this patch.
classes/helpers/FrmAppHelper.php 1 patch
Indentation   +1040 added lines, -1040 removed lines patch added patch discarded remove patch
@@ -12,50 +12,50 @@  discard block
 block discarded – undo
12 12
 	 */
13 13
 	public static $plug_version = '2.02.04';
14 14
 
15
-    /**
16
-     * @since 1.07.02
17
-     *
18
-     * @param none
19
-     * @return string The version of this plugin
20
-     */
21
-    public static function plugin_version() {
22
-        return self::$plug_version;
23
-    }
24
-
25
-    public static function plugin_folder() {
26
-        return basename(self::plugin_path());
27
-    }
28
-
29
-    public static function plugin_path() {
30
-        return dirname(dirname(dirname(__FILE__)));
31
-    }
32
-
33
-    public static function plugin_url() {
34
-        //prevously FRM_URL constant
15
+	/**
16
+	 * @since 1.07.02
17
+	 *
18
+	 * @param none
19
+	 * @return string The version of this plugin
20
+	 */
21
+	public static function plugin_version() {
22
+		return self::$plug_version;
23
+	}
24
+
25
+	public static function plugin_folder() {
26
+		return basename(self::plugin_path());
27
+	}
28
+
29
+	public static function plugin_path() {
30
+		return dirname(dirname(dirname(__FILE__)));
31
+	}
32
+
33
+	public static function plugin_url() {
34
+		//prevously FRM_URL constant
35 35
 		return plugins_url( '', self::plugin_path() . '/formidable.php' );
36
-    }
36
+	}
37 37
 
38 38
 	public static function relative_plugin_url() {
39 39
 		return str_replace( array( 'https:', 'http:' ), '', self::plugin_url() );
40 40
 	}
41 41
 
42
-    /**
43
-     * @return string Site URL
44
-     */
45
-    public static function site_url() {
46
-        return site_url();
47
-    }
48
-
49
-    /**
50
-     * Get the name of this site
51
-     * Used for [sitename] shortcode
52
-     *
53
-     * @since 2.0
54
-     * @return string
55
-     */
56
-    public static function site_name() {
57
-        return get_option('blogname');
58
-    }
42
+	/**
43
+	 * @return string Site URL
44
+	 */
45
+	public static function site_url() {
46
+		return site_url();
47
+	}
48
+
49
+	/**
50
+	 * Get the name of this site
51
+	 * Used for [sitename] shortcode
52
+	 *
53
+	 * @since 2.0
54
+	 * @return string
55
+	 */
56
+	public static function site_name() {
57
+		return get_option('blogname');
58
+	}
59 59
 
60 60
 	public static function make_affiliate_url( $url ) {
61 61
 		$affiliate_id = self::get_affiliate();
@@ -75,83 +75,83 @@  discard block
 block discarded – undo
75 75
 		return $affiliate_id;
76 76
 	}
77 77
 
78
-    /**
79
-     * Get the Formidable settings
80
-     *
81
-     * @since 2.0
82
-     *
83
-     * @param None
84
-     * @return FrmSettings $frm_setings
85
-     */
86
-    public static function get_settings() {
87
-        global $frm_settings;
88
-        if ( empty($frm_settings) ) {
89
-            $frm_settings = new FrmSettings();
90
-        }
91
-        return $frm_settings;
92
-    }
78
+	/**
79
+	 * Get the Formidable settings
80
+	 *
81
+	 * @since 2.0
82
+	 *
83
+	 * @param None
84
+	 * @return FrmSettings $frm_setings
85
+	 */
86
+	public static function get_settings() {
87
+		global $frm_settings;
88
+		if ( empty($frm_settings) ) {
89
+			$frm_settings = new FrmSettings();
90
+		}
91
+		return $frm_settings;
92
+	}
93 93
 
94 94
 	public static function get_menu_name() {
95 95
 		$frm_settings = FrmAppHelper::get_settings();
96 96
 		return $frm_settings->menu;
97 97
 	}
98 98
 
99
-    /**
100
-     * Show a message in place of pro features
101
-     *
102
-     * @since 2.0
103
-     */
99
+	/**
100
+	 * Show a message in place of pro features
101
+	 *
102
+	 * @since 2.0
103
+	 */
104 104
 	public static function update_message() {
105 105
 		_deprecated_function( __FUNCTION__, '2.0.19' );
106
-    }
107
-
108
-    public static function pro_is_installed() {
109
-        return apply_filters('frm_pro_installed', false);
110
-    }
111
-
112
-    /**
113
-     * Check for certain page in Formidable settings
114
-     *
115
-     * @since 2.0
116
-     *
117
-     * @param string $page The name of the page to check
118
-     * @return boolean
119
-     */
106
+	}
107
+
108
+	public static function pro_is_installed() {
109
+		return apply_filters('frm_pro_installed', false);
110
+	}
111
+
112
+	/**
113
+	 * Check for certain page in Formidable settings
114
+	 *
115
+	 * @since 2.0
116
+	 *
117
+	 * @param string $page The name of the page to check
118
+	 * @return boolean
119
+	 */
120 120
 	public static function is_admin_page( $page = 'formidable' ) {
121
-        global $pagenow;
121
+		global $pagenow;
122 122
 		$get_page = self::simple_get( 'page', 'sanitize_title' );
123
-        if ( $pagenow ) {
123
+		if ( $pagenow ) {
124 124
 			return $pagenow == 'admin.php' && $get_page == $page;
125
-        }
125
+		}
126 126
 
127 127
 		return is_admin() && $get_page == $page;
128
-    }
129
-
130
-    /**
131
-     * Check for the form preview page
132
-     *
133
-     * @since 2.0
134
-     *
135
-     * @param None
136
-     * @return boolean
137
-     */
138
-    public static function is_preview_page() {
139
-        global $pagenow;
128
+	}
129
+
130
+	/**
131
+	 * Check for the form preview page
132
+	 *
133
+	 * @since 2.0
134
+	 *
135
+	 * @param None
136
+	 * @return boolean
137
+	 */
138
+	public static function is_preview_page() {
139
+		global $pagenow;
140 140
 		$action = FrmAppHelper::simple_get( 'action', 'sanitize_title' );
141 141
 		return $pagenow && $pagenow == 'admin-ajax.php' && $action == 'frm_forms_preview';
142
-    }
142
+	}
143 143
 
144
-    /**
145
-     * Check for ajax except the form preview page
146
-     *
147
-     * @since 2.0
148
-     *
149
-     * @param None
150
-     * @return boolean
151
-     */
152
-    public static function doing_ajax() {
153
-        return defined('DOING_AJAX') && DOING_AJAX && ! self::is_preview_page();
154
-    }
144
+	/**
145
+	 * Check for ajax except the form preview page
146
+	 *
147
+	 * @since 2.0
148
+	 *
149
+	 * @param None
150
+	 * @return boolean
151
+	 */
152
+	public static function doing_ajax() {
153
+		return defined('DOING_AJAX') && DOING_AJAX && ! self::is_preview_page();
154
+	}
155 155
 
156 156
 	/**
157 157
 	 * @since 2.0.8
@@ -161,101 +161,101 @@  discard block
 block discarded – undo
161 161
 		return isset( $frm_vars['prevent_caching'] ) && $frm_vars['prevent_caching'];
162 162
 	}
163 163
 
164
-    /**
165
-     * Check if on an admin page
166
-     *
167
-     * @since 2.0
168
-     *
169
-     * @param None
170
-     * @return boolean
171
-     */
172
-    public static function is_admin() {
173
-        return is_admin() && ( ! defined('DOING_AJAX') || ! DOING_AJAX );
174
-    }
175
-
176
-    /**
177
-     * Check if value contains blank value or empty array
178
-     *
179
-     * @since 2.0
180
-     * @param $value - value to check
181
-     * @return boolean
182
-     */
183
-    public static function is_empty_value( $value, $empty = '' ) {
184
-        return ( is_array( $value ) && empty( $value ) ) || $value == $empty;
185
-    }
186
-
187
-    public static function is_not_empty_value( $value, $empty = '' ) {
188
-        return ! self::is_empty_value( $value, $empty );
189
-    }
190
-
191
-    /**
192
-     * Get any value from the $_SERVER
193
-     *
194
-     * @since 2.0
195
-     * @param string $value
196
-     * @return string
197
-     */
164
+	/**
165
+	 * Check if on an admin page
166
+	 *
167
+	 * @since 2.0
168
+	 *
169
+	 * @param None
170
+	 * @return boolean
171
+	 */
172
+	public static function is_admin() {
173
+		return is_admin() && ( ! defined('DOING_AJAX') || ! DOING_AJAX );
174
+	}
175
+
176
+	/**
177
+	 * Check if value contains blank value or empty array
178
+	 *
179
+	 * @since 2.0
180
+	 * @param $value - value to check
181
+	 * @return boolean
182
+	 */
183
+	public static function is_empty_value( $value, $empty = '' ) {
184
+		return ( is_array( $value ) && empty( $value ) ) || $value == $empty;
185
+	}
186
+
187
+	public static function is_not_empty_value( $value, $empty = '' ) {
188
+		return ! self::is_empty_value( $value, $empty );
189
+	}
190
+
191
+	/**
192
+	 * Get any value from the $_SERVER
193
+	 *
194
+	 * @since 2.0
195
+	 * @param string $value
196
+	 * @return string
197
+	 */
198 198
 	public static function get_server_value( $value ) {
199
-        return isset( $_SERVER[ $value ] ) ? wp_strip_all_tags( $_SERVER[ $value ] ) : '';
200
-    }
201
-
202
-    /**
203
-     * Check for the IP address in several places
204
-     * Used by [ip] shortcode
205
-     *
206
-     * @return string The IP address of the current user
207
-     */
208
-    public static function get_ip_address() {
199
+		return isset( $_SERVER[ $value ] ) ? wp_strip_all_tags( $_SERVER[ $value ] ) : '';
200
+	}
201
+
202
+	/**
203
+	 * Check for the IP address in several places
204
+	 * Used by [ip] shortcode
205
+	 *
206
+	 * @return string The IP address of the current user
207
+	 */
208
+	public static function get_ip_address() {
209 209
 		$ip = '';
210
-        foreach ( array(
211
-            'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP',
212
-            'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR',
213
-        ) as $key ) {
214
-            if ( ! isset( $_SERVER[ $key ] ) ) {
215
-                continue;
216
-            }
217
-
218
-            foreach ( explode( ',', $_SERVER[ $key ] ) as $ip ) {
219
-                $ip = trim($ip); // just to be safe
220
-
221
-                if ( filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false ) {
222
-                    return $ip;
223
-                }
224
-            }
225
-        }
210
+		foreach ( array(
211
+			'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP',
212
+			'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR',
213
+		) as $key ) {
214
+			if ( ! isset( $_SERVER[ $key ] ) ) {
215
+				continue;
216
+			}
217
+
218
+			foreach ( explode( ',', $_SERVER[ $key ] ) as $ip ) {
219
+				$ip = trim($ip); // just to be safe
220
+
221
+				if ( filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false ) {
222
+					return $ip;
223
+				}
224
+			}
225
+		}
226 226
 
227 227
 		return sanitize_text_field( $ip );
228
-    }
228
+	}
229 229
 
230
-    public static function get_param( $param, $default = '', $src = 'get', $sanitize = '' ) {
231
-        if ( strpos($param, '[') ) {
232
-            $params = explode('[', $param);
233
-            $param = $params[0];
234
-        }
230
+	public static function get_param( $param, $default = '', $src = 'get', $sanitize = '' ) {
231
+		if ( strpos($param, '[') ) {
232
+			$params = explode('[', $param);
233
+			$param = $params[0];
234
+		}
235 235
 
236 236
 		if ( $src == 'get' ) {
237
-            $value = isset( $_POST[ $param ] ) ? stripslashes_deep( $_POST[ $param ] ) : ( isset( $_GET[ $param ] ) ? stripslashes_deep( $_GET[ $param ] ) : $default );
238
-            if ( ! isset( $_POST[ $param ] ) && isset( $_GET[ $param ] ) && ! is_array( $value ) ) {
239
-                $value = stripslashes_deep( htmlspecialchars_decode( urldecode( $_GET[ $param ] ) ) );
240
-            }
237
+			$value = isset( $_POST[ $param ] ) ? stripslashes_deep( $_POST[ $param ] ) : ( isset( $_GET[ $param ] ) ? stripslashes_deep( $_GET[ $param ] ) : $default );
238
+			if ( ! isset( $_POST[ $param ] ) && isset( $_GET[ $param ] ) && ! is_array( $value ) ) {
239
+				$value = stripslashes_deep( htmlspecialchars_decode( urldecode( $_GET[ $param ] ) ) );
240
+			}
241 241
 			self::sanitize_value( $sanitize, $value );
242 242
 		} else {
243
-            $value = self::get_simple_request( array( 'type' => $src, 'param' => $param, 'default' => $default, 'sanitize' => $sanitize ) );
244
-        }
243
+			$value = self::get_simple_request( array( 'type' => $src, 'param' => $param, 'default' => $default, 'sanitize' => $sanitize ) );
244
+		}
245 245
 
246 246
 		if ( isset( $params ) && is_array( $value ) && ! empty( $value ) ) {
247
-            foreach ( $params as $k => $p ) {
248
-                if ( ! $k || ! is_array($value) ) {
249
-                    continue;
250
-                }
247
+			foreach ( $params as $k => $p ) {
248
+				if ( ! $k || ! is_array($value) ) {
249
+					continue;
250
+				}
251 251
 
252
-                $p = trim($p, ']');
253
-                $value = isset( $value[ $p ] ) ? $value[ $p ] : $default;
254
-            }
255
-        }
252
+				$p = trim($p, ']');
253
+				$value = isset( $value[ $p ] ) ? $value[ $p ] : $default;
254
+			}
255
+		}
256 256
 
257
-        return $value;
258
-    }
257
+		return $value;
258
+	}
259 259
 
260 260
 	/**
261 261
 	 *
@@ -276,7 +276,7 @@  discard block
 block discarded – undo
276 276
 	 */
277 277
 	public static function simple_get( $param, $sanitize = 'sanitize_text_field', $default = '' ) {
278 278
 		return self::get_simple_request( array( 'type' => 'get', 'param' => $param, 'default' => $default, 'sanitize' => $sanitize ) );
279
-    }
279
+	}
280 280
 
281 281
 	/**
282 282
 	 * Get a GET/POST/REQUEST value and sanitize it
@@ -310,12 +310,12 @@  discard block
 block discarded – undo
310 310
 	}
311 311
 
312 312
 	/**
313
-	* Preserve backslashes in a value, but make sure value doesn't get compounding slashes
314
-	*
315
-	* @since 2.0.8
316
-	* @param string $value
317
-	* @return string $value
318
-	*/
313
+	 * Preserve backslashes in a value, but make sure value doesn't get compounding slashes
314
+	 *
315
+	 * @since 2.0.8
316
+	 * @param string $value
317
+	 * @return string $value
318
+	 */
319 319
 	public static function preserve_backslashes( $value ) {
320 320
 		// If backslashes have already been added, don't add them again
321 321
 		if ( strpos( $value, '\\\\' ) === false ) {
@@ -337,14 +337,14 @@  discard block
 block discarded – undo
337 337
 		}
338 338
 	}
339 339
 
340
-    public static function sanitize_request( $sanitize_method, &$values ) {
341
-        $temp_values = $values;
342
-        foreach ( $temp_values as $k => $val ) {
343
-            if ( isset( $sanitize_method[ $k ] ) ) {
340
+	public static function sanitize_request( $sanitize_method, &$values ) {
341
+		$temp_values = $values;
342
+		foreach ( $temp_values as $k => $val ) {
343
+			if ( isset( $sanitize_method[ $k ] ) ) {
344 344
 				$values[ $k ] = call_user_func( $sanitize_method[ $k ], $val );
345
-            }
346
-        }
347
-    }
345
+			}
346
+		}
347
+	}
348 348
 
349 349
 	public static function sanitize_array( &$values ) {
350 350
 		$temp_values = $values;
@@ -359,12 +359,12 @@  discard block
 block discarded – undo
359 359
 	 */
360 360
 	public static function kses( $value, $allowed = array() ) {
361 361
 		$html = array(
362
-		    'a' => array(
362
+			'a' => array(
363 363
 				'href'  => array(),
364 364
 				'title' => array(),
365 365
 				'id'    => array(),
366 366
 				'class' => array(),
367
-		    ),
367
+			),
368 368
 		);
369 369
 
370 370
 		$allowed_html = array();
@@ -375,126 +375,126 @@  discard block
 block discarded – undo
375 375
 		return wp_kses( $value, $allowed_html );
376 376
 	}
377 377
 
378
-    /**
379
-     * Used when switching the action for a bulk action
380
-     * @since 2.0
381
-     */
382
-    public static function remove_get_action() {
383
-        if ( ! isset($_GET) ) {
384
-            return;
385
-        }
378
+	/**
379
+	 * Used when switching the action for a bulk action
380
+	 * @since 2.0
381
+	 */
382
+	public static function remove_get_action() {
383
+		if ( ! isset($_GET) ) {
384
+			return;
385
+		}
386 386
 
387
-        $new_action = isset( $_GET['action'] ) ? sanitize_text_field( $_GET['action'] ) : ( isset( $_GET['action2'] ) ? sanitize_text_field( $_GET['action2'] ) : '' );
388
-        if ( ! empty( $new_action ) ) {
387
+		$new_action = isset( $_GET['action'] ) ? sanitize_text_field( $_GET['action'] ) : ( isset( $_GET['action2'] ) ? sanitize_text_field( $_GET['action2'] ) : '' );
388
+		if ( ! empty( $new_action ) ) {
389 389
 			$_SERVER['REQUEST_URI'] = str_replace( '&action=' . $new_action, '', FrmAppHelper::get_server_value( 'REQUEST_URI' ) );
390
-        }
391
-    }
392
-
393
-    /**
394
-     * Check the WP query for a parameter
395
-     *
396
-     * @since 2.0
397
-     * @return string|array
398
-     */
399
-    public static function get_query_var( $value, $param ) {
400
-        if ( $value != '' ) {
401
-            return $value;
402
-        }
403
-
404
-        global $wp_query;
405
-        if ( isset( $wp_query->query_vars[ $param ] ) ) {
406
-            $value = $wp_query->query_vars[ $param ];
407
-        }
408
-
409
-        return $value;
410
-    }
411
-
412
-    /**
413
-     * @param string $type
414
-     */
415
-    public static function trigger_hook_load( $type, $object = null ) {
416
-        // only load the form hooks once
390
+		}
391
+	}
392
+
393
+	/**
394
+	 * Check the WP query for a parameter
395
+	 *
396
+	 * @since 2.0
397
+	 * @return string|array
398
+	 */
399
+	public static function get_query_var( $value, $param ) {
400
+		if ( $value != '' ) {
401
+			return $value;
402
+		}
403
+
404
+		global $wp_query;
405
+		if ( isset( $wp_query->query_vars[ $param ] ) ) {
406
+			$value = $wp_query->query_vars[ $param ];
407
+		}
408
+
409
+		return $value;
410
+	}
411
+
412
+	/**
413
+	 * @param string $type
414
+	 */
415
+	public static function trigger_hook_load( $type, $object = null ) {
416
+		// only load the form hooks once
417 417
 		$hooks_loaded = apply_filters( 'frm_' . $type . '_hooks_loaded', false, $object );
418
-        if ( ! $hooks_loaded ) {
418
+		if ( ! $hooks_loaded ) {
419 419
 			do_action( 'frm_load_' . $type . '_hooks' );
420
-        }
421
-    }
422
-
423
-    /**
424
-     * Check cache before fetching values and saving to cache
425
-     *
426
-     * @since 2.0
427
-     *
428
-     * @param string $cache_key The unique name for this cache
429
-     * @param string $group The name of the cache group
430
-     * @param string $query If blank, don't run a db call
431
-     * @param string $type The wpdb function to use with this query
432
-     * @return mixed $results The cache or query results
433
-     */
434
-    public static function check_cache( $cache_key, $group = '', $query = '', $type = 'get_var', $time = 300 ) {
435
-        $results = wp_cache_get($cache_key, $group);
436
-        if ( ! self::is_empty_value( $results, false ) || empty($query) ) {
437
-            return $results;
438
-        }
439
-
440
-        if ( 'get_posts' == $type ) {
441
-            $results = get_posts($query);
420
+		}
421
+	}
422
+
423
+	/**
424
+	 * Check cache before fetching values and saving to cache
425
+	 *
426
+	 * @since 2.0
427
+	 *
428
+	 * @param string $cache_key The unique name for this cache
429
+	 * @param string $group The name of the cache group
430
+	 * @param string $query If blank, don't run a db call
431
+	 * @param string $type The wpdb function to use with this query
432
+	 * @return mixed $results The cache or query results
433
+	 */
434
+	public static function check_cache( $cache_key, $group = '', $query = '', $type = 'get_var', $time = 300 ) {
435
+		$results = wp_cache_get($cache_key, $group);
436
+		if ( ! self::is_empty_value( $results, false ) || empty($query) ) {
437
+			return $results;
438
+		}
439
+
440
+		if ( 'get_posts' == $type ) {
441
+			$results = get_posts($query);
442 442
 		} else if ( 'get_associative_results' == $type ) {
443 443
 			global $wpdb;
444 444
 			$results = $wpdb->get_results( $query, OBJECT_K );
445
-        } else {
446
-            global $wpdb;
447
-            $results = $wpdb->{$type}($query);
448
-        }
445
+		} else {
446
+			global $wpdb;
447
+			$results = $wpdb->{$type}($query);
448
+		}
449 449
 
450 450
 		if ( ! self::prevent_caching() ) {
451 451
 			wp_cache_set( $cache_key, $results, $group, $time );
452 452
 		}
453 453
 
454
-        return $results;
455
-    }
454
+		return $results;
455
+	}
456 456
 
457
-    /**
458
-     * Data that should be stored for a long time can be stored in a transient.
459
-     * First check the cache, then check the transient
460
-     * @since 2.0
461
-     * @return mixed The cached value or false
462
-     */
457
+	/**
458
+	 * Data that should be stored for a long time can be stored in a transient.
459
+	 * First check the cache, then check the transient
460
+	 * @since 2.0
461
+	 * @return mixed The cached value or false
462
+	 */
463 463
 	public static function check_cache_and_transient( $cache_key ) {
464
-        // check caching layer first
465
-        $results = self::check_cache( $cache_key );
466
-        if ( $results ) {
467
-            return $results;
468
-        }
469
-
470
-        // then check the transient
471
-        $results = get_transient($cache_key);
472
-        if ( $results ) {
473
-            wp_cache_set($cache_key, $results);
474
-        }
475
-
476
-        return $results;
477
-    }
478
-
479
-    /**
480
-     * @since 2.0
481
-     * @param string $cache_key
482
-     */
464
+		// check caching layer first
465
+		$results = self::check_cache( $cache_key );
466
+		if ( $results ) {
467
+			return $results;
468
+		}
469
+
470
+		// then check the transient
471
+		$results = get_transient($cache_key);
472
+		if ( $results ) {
473
+			wp_cache_set($cache_key, $results);
474
+		}
475
+
476
+		return $results;
477
+	}
478
+
479
+	/**
480
+	 * @since 2.0
481
+	 * @param string $cache_key
482
+	 */
483 483
 	public static function delete_cache_and_transient( $cache_key, $group = 'default' ) {
484 484
 		delete_transient($cache_key);
485 485
 		wp_cache_delete( $cache_key, $group );
486 486
 	}
487 487
 
488
-    /**
489
-     * Delete all caching in a single group
490
-     *
491
-     * @since 2.0
492
-     *
493
-     * @param string $group The name of the cache group
494
-     * @return boolean True or False
495
-     */
488
+	/**
489
+	 * Delete all caching in a single group
490
+	 *
491
+	 * @since 2.0
492
+	 *
493
+	 * @param string $group The name of the cache group
494
+	 * @return boolean True or False
495
+	 */
496 496
 	public static function cache_delete_group( $group ) {
497
-    	global $wp_object_cache;
497
+		global $wp_object_cache;
498 498
 
499 499
 		if ( is_callable( array( $wp_object_cache, '__get' ) ) ) {
500 500
 			$group_cache = $wp_object_cache->__get('cache');
@@ -514,37 +514,37 @@  discard block
 block discarded – undo
514 514
 			return true;
515 515
 		}
516 516
 
517
-    	return false;
518
-    }
517
+		return false;
518
+	}
519 519
 
520
-    /**
521
-     * Check a value from a shortcode to see if true or false.
522
-     * True when value is 1, true, 'true', 'yes'
523
-     *
524
-     * @since 1.07.10
525
-     *
526
-     * @param string $value The value to compare
527
-     * @return boolean True or False
528
-     */
520
+	/**
521
+	 * Check a value from a shortcode to see if true or false.
522
+	 * True when value is 1, true, 'true', 'yes'
523
+	 *
524
+	 * @since 1.07.10
525
+	 *
526
+	 * @param string $value The value to compare
527
+	 * @return boolean True or False
528
+	 */
529 529
 	public static function is_true( $value ) {
530
-        return ( true === $value || 1 == $value || 'true' == $value || 'yes' == $value );
531
-    }
530
+		return ( true === $value || 1 == $value || 'true' == $value || 'yes' == $value );
531
+	}
532 532
 
533
-    /**
534
-     * Used to filter shortcode in text widgets
535
-     */
536
-    public static function widget_text_filter_callback( $matches ) {
537
-        return do_shortcode( $matches[0] );
538
-    }
533
+	/**
534
+	 * Used to filter shortcode in text widgets
535
+	 */
536
+	public static function widget_text_filter_callback( $matches ) {
537
+		return do_shortcode( $matches[0] );
538
+	}
539 539
 
540
-    public static function get_pages() {
540
+	public static function get_pages() {
541 541
 		return get_posts( array( 'post_type' => 'page', 'post_status' => array( 'publish', 'private' ), 'numberposts' => -1, 'orderby' => 'title', 'order' => 'ASC' ) );
542
-    }
542
+	}
543 543
 
544
-    public static function wp_pages_dropdown( $field_name, $page_id, $truncate = false ) {
545
-        $pages = self::get_pages();
544
+	public static function wp_pages_dropdown( $field_name, $page_id, $truncate = false ) {
545
+		$pages = self::get_pages();
546 546
 		$selected = self::get_post_param( $field_name, $page_id, 'absint' );
547
-    ?>
547
+	?>
548 548
         <select name="<?php echo esc_attr($field_name); ?>" id="<?php echo esc_attr($field_name); ?>" class="frm-pages-dropdown">
549 549
             <option value=""> </option>
550 550
             <?php foreach ( $pages as $page ) { ?>
@@ -554,108 +554,108 @@  discard block
 block discarded – undo
554 554
             <?php } ?>
555 555
         </select>
556 556
     <?php
557
-    }
557
+	}
558 558
 
559 559
 	public static function post_edit_link( $post_id ) {
560
-        $post = get_post($post_id);
561
-        if ( $post ) {
560
+		$post = get_post($post_id);
561
+		if ( $post ) {
562 562
 			$post_url = admin_url( 'post.php?post=' . $post_id . '&action=edit' );
563 563
 			return '<a href="' . esc_url( $post_url ) . '">' . self::truncate( $post->post_title, 50 ) . '</a>';
564
-        }
565
-        return '';
566
-    }
564
+		}
565
+		return '';
566
+	}
567 567
 
568 568
 	public static function wp_roles_dropdown( $field_name, $capability, $multiple = 'single' ) {
569
-    ?>
569
+	?>
570 570
         <select name="<?php echo esc_attr($field_name); ?>" id="<?php echo esc_attr($field_name); ?>" <?php
571
-            echo ( 'multiple' == $multiple ) ? 'multiple="multiple"' : '';
572
-            ?> class="frm_multiselect">
571
+			echo ( 'multiple' == $multiple ) ? 'multiple="multiple"' : '';
572
+			?> class="frm_multiselect">
573 573
             <?php self::roles_options($capability); ?>
574 574
         </select>
575 575
     <?php
576
-    }
576
+	}
577 577
 
578 578
 	public static function roles_options( $capability ) {
579
-        global $frm_vars;
580
-        if ( isset($frm_vars['editable_roles']) ) {
581
-            $editable_roles = $frm_vars['editable_roles'];
582
-        } else {
583
-            $editable_roles = get_editable_roles();
584
-            $frm_vars['editable_roles'] = $editable_roles;
585
-        }
586
-
587
-        foreach ( $editable_roles as $role => $details ) {
588
-            $name = translate_user_role($details['name'] ); ?>
579
+		global $frm_vars;
580
+		if ( isset($frm_vars['editable_roles']) ) {
581
+			$editable_roles = $frm_vars['editable_roles'];
582
+		} else {
583
+			$editable_roles = get_editable_roles();
584
+			$frm_vars['editable_roles'] = $editable_roles;
585
+		}
586
+
587
+		foreach ( $editable_roles as $role => $details ) {
588
+			$name = translate_user_role($details['name'] ); ?>
589 589
         <option value="<?php echo esc_attr($role) ?>" <?php echo in_array($role, (array) $capability) ? ' selected="selected"' : ''; ?>><?php echo esc_attr($name) ?> </option>
590 590
 <?php
591
-            unset($role, $details);
592
-        }
593
-    }
591
+			unset($role, $details);
592
+		}
593
+	}
594 594
 
595 595
 	public static function frm_capabilities( $type = 'auto' ) {
596
-        $cap = array(
597
-            'frm_view_forms'        => __( 'View Forms and Templates', 'formidable' ),
598
-            'frm_edit_forms'        => __( 'Add/Edit Forms and Templates', 'formidable' ),
599
-            'frm_delete_forms'      => __( 'Delete Forms and Templates', 'formidable' ),
600
-            'frm_change_settings'   => __( 'Access this Settings Page', 'formidable' ),
601
-            'frm_view_entries'      => __( 'View Entries from Admin Area', 'formidable' ),
602
-            'frm_delete_entries'    => __( 'Delete Entries from Admin Area', 'formidable' ),
603
-        );
596
+		$cap = array(
597
+			'frm_view_forms'        => __( 'View Forms and Templates', 'formidable' ),
598
+			'frm_edit_forms'        => __( 'Add/Edit Forms and Templates', 'formidable' ),
599
+			'frm_delete_forms'      => __( 'Delete Forms and Templates', 'formidable' ),
600
+			'frm_change_settings'   => __( 'Access this Settings Page', 'formidable' ),
601
+			'frm_view_entries'      => __( 'View Entries from Admin Area', 'formidable' ),
602
+			'frm_delete_entries'    => __( 'Delete Entries from Admin Area', 'formidable' ),
603
+		);
604 604
 
605 605
 		if ( ! self::pro_is_installed() && 'pro' != $type ) {
606
-            return $cap;
607
-        }
606
+			return $cap;
607
+		}
608 608
 
609
-        $cap['frm_create_entries'] = __( 'Add Entries from Admin Area', 'formidable' );
610
-        $cap['frm_edit_entries'] = __( 'Edit Entries from Admin Area', 'formidable' );
611
-        $cap['frm_view_reports'] = __( 'View Reports', 'formidable' );
612
-        $cap['frm_edit_displays'] = __( 'Add/Edit Views', 'formidable' );
609
+		$cap['frm_create_entries'] = __( 'Add Entries from Admin Area', 'formidable' );
610
+		$cap['frm_edit_entries'] = __( 'Edit Entries from Admin Area', 'formidable' );
611
+		$cap['frm_view_reports'] = __( 'View Reports', 'formidable' );
612
+		$cap['frm_edit_displays'] = __( 'Add/Edit Views', 'formidable' );
613 613
 
614
-        return $cap;
615
-    }
614
+		return $cap;
615
+	}
616 616
 
617 617
 	public static function user_has_permission( $needed_role ) {
618
-        if ( $needed_role == '-1' ) {
619
-            return false;
618
+		if ( $needed_role == '-1' ) {
619
+			return false;
620 620
 		}
621 621
 
622
-        // $needed_role will be equal to blank if "Logged-in users" is selected
623
-        if ( ( $needed_role == '' && is_user_logged_in() ) || current_user_can( $needed_role ) ) {
624
-            return true;
625
-        }
622
+		// $needed_role will be equal to blank if "Logged-in users" is selected
623
+		if ( ( $needed_role == '' && is_user_logged_in() ) || current_user_can( $needed_role ) ) {
624
+			return true;
625
+		}
626 626
 
627
-        $roles = array( 'administrator', 'editor', 'author', 'contributor', 'subscriber' );
628
-        foreach ( $roles as $role ) {
627
+		$roles = array( 'administrator', 'editor', 'author', 'contributor', 'subscriber' );
628
+		foreach ( $roles as $role ) {
629 629
 			if ( current_user_can( $role ) ) {
630
-        		return true;
630
+				return true;
631 631
 			}
632
-        	if ( $role == $needed_role ) {
633
-        		break;
632
+			if ( $role == $needed_role ) {
633
+				break;
634 634
 			}
635
-        }
636
-        return false;
637
-    }
638
-
639
-    /**
640
-     * Make sure administrators can see Formidable menu
641
-     *
642
-     * @since 2.0
643
-     */
644
-    public static function maybe_add_permissions() {
635
+		}
636
+		return false;
637
+	}
638
+
639
+	/**
640
+	 * Make sure administrators can see Formidable menu
641
+	 *
642
+	 * @since 2.0
643
+	 */
644
+	public static function maybe_add_permissions() {
645 645
 		self::force_capability( 'frm_view_entries' );
646 646
 
647
-        if ( ! current_user_can('administrator') || current_user_can('frm_view_forms') ) {
648
-            return;
649
-        }
647
+		if ( ! current_user_can('administrator') || current_user_can('frm_view_forms') ) {
648
+			return;
649
+		}
650 650
 
651 651
 		$user_id = get_current_user_id();
652 652
 		$user = new WP_User( $user_id );
653
-        $frm_roles = self::frm_capabilities();
654
-        foreach ( $frm_roles as $frm_role => $frm_role_description ) {
653
+		$frm_roles = self::frm_capabilities();
654
+		foreach ( $frm_roles as $frm_role => $frm_role_description ) {
655 655
 			$user->add_cap( $frm_role );
656
-            unset($frm_role, $frm_role_description);
657
-        }
658
-    }
656
+			unset($frm_role, $frm_role_description);
657
+		}
658
+	}
659 659
 
660 660
 	/**
661 661
 	 * Make sure admins have permission to see the menu items
@@ -671,28 +671,28 @@  discard block
 block discarded – undo
671 671
 		}
672 672
 	}
673 673
 
674
-    /**
675
-     * Check if the user has permision for action.
676
-     * Return permission message and stop the action if no permission
677
-     * @since 2.0
678
-     * @param string $permission
679
-     */
674
+	/**
675
+	 * Check if the user has permision for action.
676
+	 * Return permission message and stop the action if no permission
677
+	 * @since 2.0
678
+	 * @param string $permission
679
+	 */
680 680
 	public static function permission_check( $permission, $show_message = 'show' ) {
681
-        $permission_error = self::permission_nonce_error($permission);
682
-        if ( $permission_error !== false ) {
683
-            if ( 'hide' == $show_message ) {
684
-                $permission_error = '';
685
-            }
686
-            wp_die($permission_error);
687
-        }
688
-    }
689
-
690
-    /**
691
-     * Check user permission and nonce
692
-     * @since 2.0
693
-     * @param string $permission
694
-     * @return false|string The permission message or false if allowed
695
-     */
681
+		$permission_error = self::permission_nonce_error($permission);
682
+		if ( $permission_error !== false ) {
683
+			if ( 'hide' == $show_message ) {
684
+				$permission_error = '';
685
+			}
686
+			wp_die($permission_error);
687
+		}
688
+	}
689
+
690
+	/**
691
+	 * Check user permission and nonce
692
+	 * @since 2.0
693
+	 * @param string $permission
694
+	 * @return false|string The permission message or false if allowed
695
+	 */
696 696
 	public static function permission_nonce_error( $permission, $nonce_name = '', $nonce = '' ) {
697 697
 		if ( ! empty( $permission ) && ! current_user_can( $permission ) && ! current_user_can( 'administrator' ) ) {
698 698
 			$frm_settings = self::get_settings();
@@ -700,23 +700,23 @@  discard block
 block discarded – undo
700 700
 		}
701 701
 
702 702
 		$error = false;
703
-        if ( empty($nonce_name) ) {
704
-            return $error;
705
-        }
703
+		if ( empty($nonce_name) ) {
704
+			return $error;
705
+		}
706 706
 
707
-        if ( $_REQUEST && ( ! isset( $_REQUEST[ $nonce_name ] ) || ! wp_verify_nonce( $_REQUEST[ $nonce_name ], $nonce ) ) ) {
708
-            $frm_settings = self::get_settings();
709
-            $error = $frm_settings->admin_permission;
710
-        }
707
+		if ( $_REQUEST && ( ! isset( $_REQUEST[ $nonce_name ] ) || ! wp_verify_nonce( $_REQUEST[ $nonce_name ], $nonce ) ) ) {
708
+			$frm_settings = self::get_settings();
709
+			$error = $frm_settings->admin_permission;
710
+		}
711 711
 
712
-        return $error;
713
-    }
712
+		return $error;
713
+	}
714 714
 
715
-    public static function checked( $values, $current ) {
715
+	public static function checked( $values, $current ) {
716 716
 		if ( self::check_selected( $values, $current ) ) {
717
-            echo ' checked="checked"';
717
+			echo ' checked="checked"';
718 718
 		}
719
-    }
719
+	}
720 720
 
721 721
 	public static function check_selected( $values, $current ) {
722 722
 		$values = self::recursive_function_map( $values, 'trim' );
@@ -726,50 +726,50 @@  discard block
 block discarded – undo
726 726
 		return ( is_array( $values ) && in_array( $current, $values ) ) || ( ! is_array( $values ) && $values == $current );
727 727
 	}
728 728
 
729
-    /**
730
-    * Check if current field option is an "other" option
731
-    *
732
-    * @since 2.0
733
-    *
734
-    * @param string $opt_key
735
-    * @return boolean Returns true if current field option is an "Other" option
736
-    */
737
-    public static function is_other_opt( $opt_key ) {
738
-        _deprecated_function( __FUNCTION__, '2.0.6', 'FrmFieldsHelper::is_other_opt' );
739
-        return FrmFieldsHelper::is_other_opt( $opt_key );
740
-    }
741
-
742
-    /**
743
-    * Get value that belongs in "Other" text box
744
-    *
745
-    * @since 2.0
746
-    *
747
-    * @param string $opt_key
748
-    * @param array $field
749
-    * @return string $other_val
750
-    */
751
-    public static function get_other_val( $opt_key, $field, $parent = false, $pointer = false ) {
729
+	/**
730
+	 * Check if current field option is an "other" option
731
+	 *
732
+	 * @since 2.0
733
+	 *
734
+	 * @param string $opt_key
735
+	 * @return boolean Returns true if current field option is an "Other" option
736
+	 */
737
+	public static function is_other_opt( $opt_key ) {
738
+		_deprecated_function( __FUNCTION__, '2.0.6', 'FrmFieldsHelper::is_other_opt' );
739
+		return FrmFieldsHelper::is_other_opt( $opt_key );
740
+	}
741
+
742
+	/**
743
+	 * Get value that belongs in "Other" text box
744
+	 *
745
+	 * @since 2.0
746
+	 *
747
+	 * @param string $opt_key
748
+	 * @param array $field
749
+	 * @return string $other_val
750
+	 */
751
+	public static function get_other_val( $opt_key, $field, $parent = false, $pointer = false ) {
752 752
 		_deprecated_function( __FUNCTION__, '2.0.6', 'FrmFieldsHelper::get_other_val' );
753 753
 		return FrmFieldsHelper::get_other_val( compact( 'opt_key', 'field', 'parent', 'pointer' ) );
754
-    }
755
-
756
-    /**
757
-    * Check if there is a saved value for the "Other" text field. If so, set it as the $other_val.
758
-    * Intended for front-end use
759
-    *
760
-    * @since 2.0
761
-    *
762
-    * @param array $field
763
-    * @param boolean $other_opt
764
-    * @param string $checked
765
-    * @param array $args should include opt_key and field name
766
-    * @return string $other_val
767
-    */
768
-    public static function prepare_other_input( $field, &$other_opt, &$checked, $args = array() ) {
754
+	}
755
+
756
+	/**
757
+	 * Check if there is a saved value for the "Other" text field. If so, set it as the $other_val.
758
+	 * Intended for front-end use
759
+	 *
760
+	 * @since 2.0
761
+	 *
762
+	 * @param array $field
763
+	 * @param boolean $other_opt
764
+	 * @param string $checked
765
+	 * @param array $args should include opt_key and field name
766
+	 * @return string $other_val
767
+	 */
768
+	public static function prepare_other_input( $field, &$other_opt, &$checked, $args = array() ) {
769 769
 		_deprecated_function( __FUNCTION__, '2.0.6', 'FrmFieldsHelper::prepare_other_input' );
770 770
 		$args['field'] = $field;
771 771
 		return FrmFieldsHelper::prepare_other_input( $args, $other_opt, $checked );
772
-    }
772
+	}
773 773
 
774 774
 	public static function recursive_function_map( $value, $function ) {
775 775
 		if ( is_array( $value ) ) {
@@ -799,24 +799,24 @@  discard block
 block discarded – undo
799 799
 		return (bool) count( array_filter( array_keys( $array ), 'is_string' ) );
800 800
 	}
801 801
 
802
-    /**
803
-     * Flatten a multi-dimensional array
804
-     */
802
+	/**
803
+	 * Flatten a multi-dimensional array
804
+	 */
805 805
 	public static function array_flatten( $array, $keys = 'keep' ) {
806
-        $return = array();
807
-        foreach ( $array as $key => $value ) {
808
-            if ( is_array($value) ) {
806
+		$return = array();
807
+		foreach ( $array as $key => $value ) {
808
+			if ( is_array($value) ) {
809 809
 				$return = array_merge( $return, self::array_flatten( $value, $keys ) );
810
-            } else {
810
+			} else {
811 811
 				if ( $keys == 'keep' ) {
812 812
 					$return[ $key ] = $value;
813 813
 				} else {
814 814
 					$return[] = $value;
815 815
 				}
816
-            }
817
-        }
818
-        return $return;
819
-    }
816
+			}
817
+		}
818
+		return $return;
819
+	}
820 820
 
821 821
 	public static function esc_textarea( $text, $is_rich_text = false ) {
822 822
 		$safe_text = str_replace( '&quot;', '"', $text );
@@ -827,308 +827,308 @@  discard block
 block discarded – undo
827 827
 		return apply_filters( 'esc_textarea', $safe_text, $text );
828 828
 	}
829 829
 
830
-    /**
831
-     * Add auto paragraphs to text areas
832
-     * @since 2.0
833
-     */
830
+	/**
831
+	 * Add auto paragraphs to text areas
832
+	 * @since 2.0
833
+	 */
834 834
 	public static function use_wpautop( $content ) {
835
-        if ( apply_filters('frm_use_wpautop', true) ) {
836
-            $content = wpautop(str_replace( '<br>', '<br />', $content));
837
-        }
838
-        return $content;
839
-    }
835
+		if ( apply_filters('frm_use_wpautop', true) ) {
836
+			$content = wpautop(str_replace( '<br>', '<br />', $content));
837
+		}
838
+		return $content;
839
+	}
840 840
 
841 841
 	public static function replace_quotes( $val ) {
842
-        //Replace double quotes
842
+		//Replace double quotes
843 843
 		$val = str_replace( array( '&#8220;', '&#8221;', '&#8243;' ), '"', $val );
844
-        //Replace single quotes
845
-        $val = str_replace( array( '&#8216;', '&#8217;', '&#8242;', '&prime;', '&rsquo;', '&lsquo;' ), "'", $val );
846
-        return $val;
847
-    }
848
-
849
-    /**
850
-     * @since 2.0
851
-     * @return string The base Google APIS url for the current version of jQuery UI
852
-     */
853
-    public static function jquery_ui_base_url() {
844
+		//Replace single quotes
845
+		$val = str_replace( array( '&#8216;', '&#8217;', '&#8242;', '&prime;', '&rsquo;', '&lsquo;' ), "'", $val );
846
+		return $val;
847
+	}
848
+
849
+	/**
850
+	 * @since 2.0
851
+	 * @return string The base Google APIS url for the current version of jQuery UI
852
+	 */
853
+	public static function jquery_ui_base_url() {
854 854
 		$url = 'http' . ( is_ssl() ? 's' : '' ) . '://ajax.googleapis.com/ajax/libs/jqueryui/' . self::script_version('jquery-ui-core');
855
-        $url = apply_filters('frm_jquery_ui_base_url', $url);
856
-        return $url;
857
-    }
855
+		$url = apply_filters('frm_jquery_ui_base_url', $url);
856
+		return $url;
857
+	}
858 858
 
859
-    /**
860
-     * @param string $handle
861
-     */
859
+	/**
860
+	 * @param string $handle
861
+	 */
862 862
 	public static function script_version( $handle ) {
863
-        global $wp_scripts;
864
-    	if ( ! $wp_scripts ) {
865
-    	    return false;
866
-    	}
863
+		global $wp_scripts;
864
+		if ( ! $wp_scripts ) {
865
+			return false;
866
+		}
867 867
 
868
-        $ver = 0;
868
+		$ver = 0;
869 869
 
870
-        if ( ! isset( $wp_scripts->registered[ $handle ] ) ) {
871
-            return $ver;
872
-        }
870
+		if ( ! isset( $wp_scripts->registered[ $handle ] ) ) {
871
+			return $ver;
872
+		}
873 873
 
874
-        $query = $wp_scripts->registered[ $handle ];
875
-    	if ( is_object( $query ) ) {
876
-    	    $ver = $query->ver;
877
-    	}
874
+		$query = $wp_scripts->registered[ $handle ];
875
+		if ( is_object( $query ) ) {
876
+			$ver = $query->ver;
877
+		}
878 878
 
879
-    	return $ver;
880
-    }
879
+		return $ver;
880
+	}
881 881
 
882 882
 	public static function js_redirect( $url ) {
883 883
 		return '<script type="text/javascript">window.location="' . esc_url_raw( $url ) . '"</script>';
884
-    }
884
+	}
885 885
 
886 886
 	public static function get_user_id_param( $user_id ) {
887
-        if ( ! $user_id || empty($user_id) || is_numeric($user_id) ) {
888
-            return $user_id;
889
-        }
887
+		if ( ! $user_id || empty($user_id) || is_numeric($user_id) ) {
888
+			return $user_id;
889
+		}
890 890
 
891 891
 		if ( $user_id == 'current' ) {
892 892
 			$user_id = get_current_user_id();
893 893
 		} else {
894
-            if ( is_email($user_id) ) {
895
-                $user = get_user_by('email', $user_id);
896
-            } else {
897
-                $user = get_user_by('login', $user_id);
898
-            }
894
+			if ( is_email($user_id) ) {
895
+				$user = get_user_by('email', $user_id);
896
+			} else {
897
+				$user = get_user_by('login', $user_id);
898
+			}
899 899
 
900
-            if ( $user ) {
901
-                $user_id = $user->ID;
902
-            }
903
-            unset($user);
904
-        }
900
+			if ( $user ) {
901
+				$user_id = $user->ID;
902
+			}
903
+			unset($user);
904
+		}
905 905
 
906
-        return $user_id;
907
-    }
906
+		return $user_id;
907
+	}
908 908
 
909 909
 	public static function get_file_contents( $filename, $atts = array() ) {
910
-        if ( ! is_file($filename) ) {
911
-            return false;
912
-        }
913
-
914
-        extract($atts);
915
-        ob_start();
916
-        include($filename);
917
-        $contents = ob_get_contents();
918
-        ob_end_clean();
919
-        return $contents;
920
-    }
921
-
922
-    /**
923
-     * @param string $table_name
924
-     * @param string $column
910
+		if ( ! is_file($filename) ) {
911
+			return false;
912
+		}
913
+
914
+		extract($atts);
915
+		ob_start();
916
+		include($filename);
917
+		$contents = ob_get_contents();
918
+		ob_end_clean();
919
+		return $contents;
920
+	}
921
+
922
+	/**
923
+	 * @param string $table_name
924
+	 * @param string $column
925 925
 	 * @param int $id
926 926
 	 * @param int $num_chars
927
-     */
928
-    public static function get_unique_key( $name = '', $table_name, $column, $id = 0, $num_chars = 5 ) {
929
-        $key = '';
927
+	 */
928
+	public static function get_unique_key( $name = '', $table_name, $column, $id = 0, $num_chars = 5 ) {
929
+		$key = '';
930 930
 
931
-        if ( ! empty( $name ) ) {
932
-            $key = sanitize_key($name);
933
-        }
931
+		if ( ! empty( $name ) ) {
932
+			$key = sanitize_key($name);
933
+		}
934 934
 
935 935
 		if ( empty( $key ) ) {
936
-            $max_slug_value = pow(36, $num_chars);
937
-            $min_slug_value = 37; // we want to have at least 2 characters in the slug
938
-            $key = base_convert( rand($min_slug_value, $max_slug_value), 10, 36 );
939
-        }
936
+			$max_slug_value = pow(36, $num_chars);
937
+			$min_slug_value = 37; // we want to have at least 2 characters in the slug
938
+			$key = base_convert( rand($min_slug_value, $max_slug_value), 10, 36 );
939
+		}
940 940
 
941 941
 		if ( is_numeric($key) || in_array( $key, array( 'id', 'key', 'created-at', 'detaillink', 'editlink', 'siteurl', 'evenodd' ) ) ) {
942 942
 			$key = $key . 'a';
943
-        }
943
+		}
944 944
 
945 945
 		$key_check = FrmDb::get_var( $table_name, array( $column => $key, 'ID !' => $id ), $column );
946 946
 
947
-        if ( $key_check || is_numeric($key_check) ) {
948
-            $suffix = 2;
947
+		if ( $key_check || is_numeric($key_check) ) {
948
+			$suffix = 2;
949 949
 			do {
950 950
 				$alt_post_name = substr( $key, 0, 200 - ( strlen( $suffix ) + 1 ) ) . $suffix;
951 951
 				$key_check = FrmDb::get_var( $table_name, array( $column => $alt_post_name, 'ID !' => $id ), $column );
952 952
 				$suffix++;
953 953
 			} while ($key_check || is_numeric($key_check));
954 954
 			$key = $alt_post_name;
955
-        }
956
-        return $key;
957
-    }
958
-
959
-    /**
960
-     * Editing a Form or Entry
961
-     * @param string $table
962
-     * @return bool|array
963
-     */
964
-    public static function setup_edit_vars( $record, $table, $fields = '', $default = false, $post_values = array(), $args = array() ) {
965
-        if ( ! $record ) {
966
-            return false;
967
-        }
968
-
969
-        if ( empty($post_values) ) {
970
-            $post_values = stripslashes_deep($_POST);
971
-        }
955
+		}
956
+		return $key;
957
+	}
958
+
959
+	/**
960
+	 * Editing a Form or Entry
961
+	 * @param string $table
962
+	 * @return bool|array
963
+	 */
964
+	public static function setup_edit_vars( $record, $table, $fields = '', $default = false, $post_values = array(), $args = array() ) {
965
+		if ( ! $record ) {
966
+			return false;
967
+		}
968
+
969
+		if ( empty($post_values) ) {
970
+			$post_values = stripslashes_deep($_POST);
971
+		}
972 972
 
973 973
 		$values = array( 'id' => $record->id, 'fields' => array() );
974 974
 
975 975
 		foreach ( array( 'name', 'description' ) as $var ) {
976
-            $default_val = isset($record->{$var}) ? $record->{$var} : '';
976
+			$default_val = isset($record->{$var}) ? $record->{$var} : '';
977 977
 			$values[ $var ] = self::get_param( $var, $default_val, 'get', 'wp_kses_post' );
978
-            unset($var, $default_val);
979
-        }
980
-
981
-        $values['description'] = self::use_wpautop($values['description']);
982
-        $frm_settings = self::get_settings();
983
-        $is_form_builder = self::is_admin_page('formidable' );
984
-
985
-        foreach ( (array) $fields as $field ) {
986
-            // Make sure to filter default values (for placeholder text), but not on the form builder page
987
-            if ( ! $is_form_builder ) {
988
-                $field->default_value = apply_filters('frm_get_default_value', $field->default_value, $field, true );
989
-            }
978
+			unset($var, $default_val);
979
+		}
980
+
981
+		$values['description'] = self::use_wpautop($values['description']);
982
+		$frm_settings = self::get_settings();
983
+		$is_form_builder = self::is_admin_page('formidable' );
984
+
985
+		foreach ( (array) $fields as $field ) {
986
+			// Make sure to filter default values (for placeholder text), but not on the form builder page
987
+			if ( ! $is_form_builder ) {
988
+				$field->default_value = apply_filters('frm_get_default_value', $field->default_value, $field, true );
989
+			}
990 990
 			$parent_form_id = isset( $args['parent_form_id'] ) ? $args['parent_form_id'] : $field->form_id;
991 991
 			self::fill_field_defaults($field, $record, $values, compact('default', 'post_values', 'frm_settings', 'parent_form_id' ) );
992
-        }
992
+		}
993 993
 
994
-        self::fill_form_opts($record, $table, $post_values, $values);
994
+		self::fill_form_opts($record, $table, $post_values, $values);
995 995
 
996
-        if ( $table == 'entries' ) {
997
-            $values = FrmEntriesHelper::setup_edit_vars( $values, $record );
998
-        } else if ( $table == 'forms' ) {
999
-            $values = FrmFormsHelper::setup_edit_vars( $values, $record, $post_values );
1000
-        }
996
+		if ( $table == 'entries' ) {
997
+			$values = FrmEntriesHelper::setup_edit_vars( $values, $record );
998
+		} else if ( $table == 'forms' ) {
999
+			$values = FrmFormsHelper::setup_edit_vars( $values, $record, $post_values );
1000
+		}
1001 1001
 
1002
-        return $values;
1003
-    }
1002
+		return $values;
1003
+	}
1004 1004
 
1005 1005
 	private static function fill_field_defaults( $field, $record, array &$values, $args ) {
1006
-        $post_values = $args['post_values'];
1007
-
1008
-        if ( $args['default'] ) {
1009
-            $meta_value = $field->default_value;
1010
-        } else {
1011
-            if ( $record->post_id && self::pro_is_installed() && isset($field->field_options['post_field']) && $field->field_options['post_field'] ) {
1012
-                if ( ! isset($field->field_options['custom_field']) ) {
1013
-                    $field->field_options['custom_field'] = '';
1014
-                }
1006
+		$post_values = $args['post_values'];
1007
+
1008
+		if ( $args['default'] ) {
1009
+			$meta_value = $field->default_value;
1010
+		} else {
1011
+			if ( $record->post_id && self::pro_is_installed() && isset($field->field_options['post_field']) && $field->field_options['post_field'] ) {
1012
+				if ( ! isset($field->field_options['custom_field']) ) {
1013
+					$field->field_options['custom_field'] = '';
1014
+				}
1015 1015
 				$meta_value = FrmProEntryMetaHelper::get_post_value( $record->post_id, $field->field_options['post_field'], $field->field_options['custom_field'], array( 'truncate' => false, 'type' => $field->type, 'form_id' => $field->form_id, 'field' => $field ) );
1016
-            } else {
1016
+			} else {
1017 1017
 				$meta_value = FrmEntryMeta::get_meta_value( $record, $field->id );
1018
-            }
1019
-        }
1018
+			}
1019
+		}
1020 1020
 
1021 1021
 		$field_type = isset( $post_values['field_options'][ 'type_' . $field->id ] ) ? $post_values['field_options'][ 'type_' . $field->id ] : $field->type;
1022
-        $new_value = isset( $post_values['item_meta'][ $field->id ] ) ? maybe_unserialize( $post_values['item_meta'][ $field->id ] ) : $meta_value;
1023
-
1024
-        $field_array = array(
1025
-            'id'            => $field->id,
1026
-            'value'         => $new_value,
1027
-            'default_value' => $field->default_value,
1028
-            'name'          => $field->name,
1029
-            'description'   => $field->description,
1030
-            'type'          => apply_filters('frm_field_type', $field_type, $field, $new_value),
1031
-            'options'       => $field->options,
1032
-            'required'      => $field->required,
1033
-            'field_key'     => $field->field_key,
1034
-            'field_order'   => $field->field_order,
1035
-            'form_id'       => $field->form_id,
1022
+		$new_value = isset( $post_values['item_meta'][ $field->id ] ) ? maybe_unserialize( $post_values['item_meta'][ $field->id ] ) : $meta_value;
1023
+
1024
+		$field_array = array(
1025
+			'id'            => $field->id,
1026
+			'value'         => $new_value,
1027
+			'default_value' => $field->default_value,
1028
+			'name'          => $field->name,
1029
+			'description'   => $field->description,
1030
+			'type'          => apply_filters('frm_field_type', $field_type, $field, $new_value),
1031
+			'options'       => $field->options,
1032
+			'required'      => $field->required,
1033
+			'field_key'     => $field->field_key,
1034
+			'field_order'   => $field->field_order,
1035
+			'form_id'       => $field->form_id,
1036 1036
 			'parent_form_id' => $args['parent_form_id'],
1037
-        );
1037
+		);
1038 1038
 
1039
-        $args['field_type'] = $field_type;
1040
-        self::fill_field_opts($field, $field_array, $args);
1039
+		$args['field_type'] = $field_type;
1040
+		self::fill_field_opts($field, $field_array, $args);
1041 1041
 		// Track the original field's type
1042 1042
 		$field_array['original_type'] = isset( $field->field_options['original_type'] ) ? $field->field_options['original_type'] : $field->type;
1043 1043
 
1044
-        $field_array = apply_filters( 'frm_setup_edit_fields_vars', $field_array, $field, $values['id'], array() );
1044
+		$field_array = apply_filters( 'frm_setup_edit_fields_vars', $field_array, $field, $values['id'], array() );
1045 1045
 
1046
-        if ( ! isset($field_array['unique']) || ! $field_array['unique'] ) {
1047
-            $field_array['unique_msg'] = '';
1048
-        }
1046
+		if ( ! isset($field_array['unique']) || ! $field_array['unique'] ) {
1047
+			$field_array['unique_msg'] = '';
1048
+		}
1049 1049
 
1050
-        $field_array = array_merge( $field->field_options, $field_array );
1050
+		$field_array = array_merge( $field->field_options, $field_array );
1051 1051
 
1052
-        $values['fields'][ $field->id ] = $field_array;
1053
-    }
1052
+		$values['fields'][ $field->id ] = $field_array;
1053
+	}
1054 1054
 
1055 1055
 	private static function fill_field_opts( $field, array &$field_array, $args ) {
1056
-        $post_values = $args['post_values'];
1057
-        $opt_defaults = FrmFieldsHelper::get_default_field_opts($field_array['type'], $field, true);
1056
+		$post_values = $args['post_values'];
1057
+		$opt_defaults = FrmFieldsHelper::get_default_field_opts($field_array['type'], $field, true);
1058 1058
 
1059
-        foreach ( $opt_defaults as $opt => $default_opt ) {
1059
+		foreach ( $opt_defaults as $opt => $default_opt ) {
1060 1060
 			$field_array[ $opt ] = ( $post_values && isset( $post_values['field_options'][ $opt . '_' . $field->id ] ) ) ? maybe_unserialize( $post_values['field_options'][ $opt . '_' . $field->id ] ) : ( isset( $field->field_options[ $opt ] ) ? $field->field_options[ $opt ] : $default_opt );
1061
-            if ( $opt == 'blank' && $field_array[ $opt ] == '' ) {
1062
-                $field_array[ $opt ] = $args['frm_settings']->blank_msg;
1063
-            } else if ( $opt == 'invalid' && $field_array[ $opt ] == '' ) {
1064
-                if ( $args['field_type'] == 'captcha' ) {
1065
-                    $field_array[ $opt ] = $args['frm_settings']->re_msg;
1066
-                } else {
1067
-                    $field_array[ $opt ] = sprintf( __( '%s is invalid', 'formidable' ), $field_array['name'] );
1068
-                }
1069
-            }
1070
-        }
1071
-
1072
-        if ( $field_array['custom_html'] == '' ) {
1073
-            $field_array['custom_html'] = FrmFieldsHelper::get_default_html($args['field_type']);
1074
-        }
1075
-    }
1076
-
1077
-    /**
1078
-     * @param string $table
1079
-     */
1061
+			if ( $opt == 'blank' && $field_array[ $opt ] == '' ) {
1062
+				$field_array[ $opt ] = $args['frm_settings']->blank_msg;
1063
+			} else if ( $opt == 'invalid' && $field_array[ $opt ] == '' ) {
1064
+				if ( $args['field_type'] == 'captcha' ) {
1065
+					$field_array[ $opt ] = $args['frm_settings']->re_msg;
1066
+				} else {
1067
+					$field_array[ $opt ] = sprintf( __( '%s is invalid', 'formidable' ), $field_array['name'] );
1068
+				}
1069
+			}
1070
+		}
1071
+
1072
+		if ( $field_array['custom_html'] == '' ) {
1073
+			$field_array['custom_html'] = FrmFieldsHelper::get_default_html($args['field_type']);
1074
+		}
1075
+	}
1076
+
1077
+	/**
1078
+	 * @param string $table
1079
+	 */
1080 1080
 	private static function fill_form_opts( $record, $table, $post_values, array &$values ) {
1081
-        if ( $table == 'entries' ) {
1082
-            $form = $record->form_id;
1081
+		if ( $table == 'entries' ) {
1082
+			$form = $record->form_id;
1083 1083
 			FrmForm::maybe_get_form( $form );
1084
-        } else {
1085
-            $form = $record;
1086
-        }
1084
+		} else {
1085
+			$form = $record;
1086
+		}
1087 1087
 
1088
-        if ( ! $form ) {
1089
-            return;
1090
-        }
1088
+		if ( ! $form ) {
1089
+			return;
1090
+		}
1091 1091
 
1092
-        $values['form_name'] = isset($record->form_id) ? $form->name : '';
1092
+		$values['form_name'] = isset($record->form_id) ? $form->name : '';
1093 1093
 		$values['parent_form_id'] = isset( $record->form_id ) ? $form->parent_form_id : 0;
1094 1094
 
1095
-        if ( ! is_array($form->options) ) {
1096
-            return;
1097
-        }
1095
+		if ( ! is_array($form->options) ) {
1096
+			return;
1097
+		}
1098 1098
 
1099
-        foreach ( $form->options as $opt => $value ) {
1100
-            $values[ $opt ] = isset( $post_values[ $opt ] ) ? maybe_unserialize( $post_values[ $opt ] ) : $value;
1101
-        }
1099
+		foreach ( $form->options as $opt => $value ) {
1100
+			$values[ $opt ] = isset( $post_values[ $opt ] ) ? maybe_unserialize( $post_values[ $opt ] ) : $value;
1101
+		}
1102 1102
 
1103
-        self::fill_form_defaults($post_values, $values);
1104
-    }
1103
+		self::fill_form_defaults($post_values, $values);
1104
+	}
1105 1105
 
1106
-    /**
1107
-     * Set to POST value or default
1108
-     */
1106
+	/**
1107
+	 * Set to POST value or default
1108
+	 */
1109 1109
 	private static function fill_form_defaults( $post_values, array &$values ) {
1110
-        $form_defaults = FrmFormsHelper::get_default_opts();
1110
+		$form_defaults = FrmFormsHelper::get_default_opts();
1111 1111
 
1112
-        foreach ( $form_defaults as $opt => $default ) {
1113
-            if ( ! isset( $values[ $opt ] ) || $values[ $opt ] == '' ) {
1112
+		foreach ( $form_defaults as $opt => $default ) {
1113
+			if ( ! isset( $values[ $opt ] ) || $values[ $opt ] == '' ) {
1114 1114
 				$values[ $opt ] = ( $post_values && isset( $post_values['options'][ $opt ] ) ) ? $post_values['options'][ $opt ] : $default;
1115
-            }
1115
+			}
1116 1116
 
1117
-            unset($opt, $defaut);
1118
-        }
1117
+			unset($opt, $defaut);
1118
+		}
1119 1119
 
1120
-        if ( ! isset($values['custom_style']) ) {
1121
-            $frm_settings = self::get_settings();
1120
+		if ( ! isset($values['custom_style']) ) {
1121
+			$frm_settings = self::get_settings();
1122 1122
 			$values['custom_style'] = ( $post_values && isset( $post_values['options']['custom_style'] ) ) ? absint( $_POST['options']['custom_style'] ) : ( $frm_settings->load_style != 'none' );
1123
-        }
1123
+		}
1124 1124
 
1125 1125
 		foreach ( array( 'before', 'after', 'submit' ) as $h ) {
1126 1126
 			if ( ! isset( $values[ $h . '_html' ] ) ) {
1127 1127
 				$values[ $h . '_html' ] = ( isset( $post_values['options'][ $h . '_html' ] ) ? $post_values['options'][ $h . '_html' ] : FrmFormsHelper::get_default_html( $h ) );
1128
-            }
1129
-            unset($h);
1130
-        }
1131
-    }
1128
+			}
1129
+			unset($h);
1130
+		}
1131
+	}
1132 1132
 
1133 1133
 	public static function get_meta_value( $field_id, $entry ) {
1134 1134
 		_deprecated_function( __FUNCTION__, '2.0.9', 'FrmEntryMeta::get_meta_value' );
@@ -1136,59 +1136,59 @@  discard block
 block discarded – undo
1136 1136
 	}
1137 1137
 
1138 1138
 	public static function insert_opt_html( $args ) {
1139
-        $class = '';
1140
-        if ( in_array( $args['type'], array( 'email', 'user_id', 'hidden', 'select', 'radio', 'checkbox', 'phone', 'text' ) ) ) {
1141
-            $class .= 'show_frm_not_email_to';
1142
-        }
1143
-    ?>
1139
+		$class = '';
1140
+		if ( in_array( $args['type'], array( 'email', 'user_id', 'hidden', 'select', 'radio', 'checkbox', 'phone', 'text' ) ) ) {
1141
+			$class .= 'show_frm_not_email_to';
1142
+		}
1143
+	?>
1144 1144
 <li>
1145 1145
     <a href="javascript:void(0)" class="frmids frm_insert_code alignright <?php echo esc_attr($class) ?>" data-code="<?php echo esc_attr($args['id']) ?>" >[<?php echo esc_attr( $args['id'] ) ?>]</a>
1146 1146
     <a href="javascript:void(0)" class="frmkeys frm_insert_code alignright <?php echo esc_attr($class) ?>" data-code="<?php echo esc_attr($args['key']) ?>" >[<?php echo esc_attr( self::truncate($args['key'], 10) ) ?>]</a>
1147 1147
     <a href="javascript:void(0)" class="frm_insert_code <?php echo esc_attr( $class ) ?>" data-code="<?php echo esc_attr($args['id']) ?>" ><?php echo esc_attr( self::truncate($args['name'], 60) ) ?></a>
1148 1148
 </li>
1149 1149
     <?php
1150
-    }
1150
+	}
1151 1151
 
1152 1152
 	public static function truncate( $str, $length, $minword = 3, $continue = '...' ) {
1153
-        if ( is_array( $str ) ) {
1154
-            return '';
1153
+		if ( is_array( $str ) ) {
1154
+			return '';
1155 1155
 		}
1156 1156
 
1157
-        $length = (int) $length;
1157
+		$length = (int) $length;
1158 1158
 		$str = wp_strip_all_tags( $str );
1159 1159
 		$original_len = self::mb_function( array( 'mb_strlen', 'strlen' ), array( $str ) );
1160 1160
 
1161 1161
 		if ( $length == 0 ) {
1162
-            return '';
1163
-        } else if ( $length <= 10 ) {
1162
+			return '';
1163
+		} else if ( $length <= 10 ) {
1164 1164
 			$sub = self::mb_function( array( 'mb_substr', 'substr' ), array( $str, 0, $length ) );
1165
-            return $sub . (($length < $original_len) ? $continue : '');
1166
-        }
1165
+			return $sub . (($length < $original_len) ? $continue : '');
1166
+		}
1167 1167
 
1168
-        $sub = '';
1169
-        $len = 0;
1168
+		$sub = '';
1169
+		$len = 0;
1170 1170
 
1171 1171
 		$words = self::mb_function( array( 'mb_split', 'explode' ), array( ' ', $str ) );
1172 1172
 
1173 1173
 		foreach ( $words as $word ) {
1174
-            $part = (($sub != '') ? ' ' : '') . $word;
1174
+			$part = (($sub != '') ? ' ' : '') . $word;
1175 1175
 			$total_len = self::mb_function( array( 'mb_strlen', 'strlen' ), array( $sub . $part ) );
1176
-            if ( $total_len > $length && str_word_count($sub) ) {
1177
-                break;
1178
-            }
1176
+			if ( $total_len > $length && str_word_count($sub) ) {
1177
+				break;
1178
+			}
1179 1179
 
1180
-            $sub .= $part;
1180
+			$sub .= $part;
1181 1181
 			$len += self::mb_function( array( 'mb_strlen', 'strlen' ), array( $part ) );
1182 1182
 
1183
-            if ( str_word_count($sub) > $minword && $total_len >= $length ) {
1184
-                break;
1185
-            }
1183
+			if ( str_word_count($sub) > $minword && $total_len >= $length ) {
1184
+				break;
1185
+			}
1186 1186
 
1187
-            unset($total_len, $word);
1188
-        }
1187
+			unset($total_len, $word);
1188
+		}
1189 1189
 
1190
-        return $sub . (($len < $original_len) ? $continue : '');
1191
-    }
1190
+		return $sub . (($len < $original_len) ? $continue : '');
1191
+	}
1192 1192
 
1193 1193
 	public static function mb_function( $function_names, $args ) {
1194 1194
 		$mb_function_name = $function_names[0];
@@ -1200,18 +1200,18 @@  discard block
 block discarded – undo
1200 1200
 	}
1201 1201
 
1202 1202
 	public static function get_formatted_time( $date, $date_format = '', $time_format = '' ) {
1203
-        if ( empty($date) ) {
1204
-            return $date;
1205
-        }
1203
+		if ( empty($date) ) {
1204
+			return $date;
1205
+		}
1206 1206
 
1207
-        if ( empty($date_format) ) {
1208
-            $date_format = get_option('date_format');
1209
-        }
1207
+		if ( empty($date_format) ) {
1208
+			$date_format = get_option('date_format');
1209
+		}
1210 1210
 
1211
-        if ( preg_match('/^\d{1-2}\/\d{1-2}\/\d{4}$/', $date) && self::pro_is_installed() ) {
1212
-            $frmpro_settings = new FrmProSettings();
1213
-            $date = FrmProAppHelper::convert_date($date, $frmpro_settings->date_format, 'Y-m-d');
1214
-        }
1211
+		if ( preg_match('/^\d{1-2}\/\d{1-2}\/\d{4}$/', $date) && self::pro_is_installed() ) {
1212
+			$frmpro_settings = new FrmProSettings();
1213
+			$date = FrmProAppHelper::convert_date($date, $frmpro_settings->date_format, 'Y-m-d');
1214
+		}
1215 1215
 
1216 1216
 		$formatted = self::get_localized_date( $date_format, $date );
1217 1217
 
@@ -1220,8 +1220,8 @@  discard block
 block discarded – undo
1220 1220
 			$formatted .= self::add_time_to_date( $time_format, $date );
1221 1221
 		}
1222 1222
 
1223
-        return $formatted;
1224
-    }
1223
+		return $formatted;
1224
+	}
1225 1225
 
1226 1226
 	private static function add_time_to_date( $time_format, $date ) {
1227 1227
 		if ( empty( $time_format ) ) {
@@ -1302,61 +1302,61 @@  discard block
 block discarded – undo
1302 1302
 		);
1303 1303
 	}
1304 1304
 
1305
-    /**
1306
-     * Added for < WP 4.0 compatability
1307
-     *
1308
-     * @since 1.07.10
1309
-     *
1310
-     * @param string $term The value to escape
1311
-     * @return string The escaped value
1312
-     */
1305
+	/**
1306
+	 * Added for < WP 4.0 compatability
1307
+	 *
1308
+	 * @since 1.07.10
1309
+	 *
1310
+	 * @param string $term The value to escape
1311
+	 * @return string The escaped value
1312
+	 */
1313 1313
 	public static function esc_like( $term ) {
1314
-        global $wpdb;
1315
-        if ( method_exists($wpdb, 'esc_like') ) {
1314
+		global $wpdb;
1315
+		if ( method_exists($wpdb, 'esc_like') ) {
1316 1316
 			// WP 4.0
1317
-            $term = $wpdb->esc_like( $term );
1318
-        } else {
1319
-            $term = like_escape( $term );
1320
-        }
1317
+			$term = $wpdb->esc_like( $term );
1318
+		} else {
1319
+			$term = like_escape( $term );
1320
+		}
1321 1321
 
1322
-        return $term;
1323
-    }
1322
+		return $term;
1323
+	}
1324 1324
 
1325
-    /**
1326
-     * @param string $order_query
1327
-     */
1325
+	/**
1326
+	 * @param string $order_query
1327
+	 */
1328 1328
 	public static function esc_order( $order_query ) {
1329
-        if ( empty($order_query) ) {
1330
-            return '';
1331
-        }
1332
-
1333
-        // remove ORDER BY before santizing
1334
-        $order_query = strtolower($order_query);
1335
-        if ( strpos($order_query, 'order by') !== false ) {
1336
-            $order_query = str_replace('order by', '', $order_query);
1337
-        }
1338
-
1339
-        $order_query = explode(' ', trim($order_query));
1340
-
1341
-        $order_fields = array(
1342
-            'id', 'form_key', 'name', 'description',
1343
-            'parent_form_id', 'logged_in', 'is_template',
1344
-            'default_template', 'status', 'created_at',
1345
-        );
1346
-
1347
-        $order = trim(trim(reset($order_query), ','));
1348
-        if ( ! in_array($order, $order_fields) ) {
1349
-            return '';
1350
-        }
1351
-
1352
-        $order_by = '';
1353
-        if ( count($order_query) > 1 ) {
1329
+		if ( empty($order_query) ) {
1330
+			return '';
1331
+		}
1332
+
1333
+		// remove ORDER BY before santizing
1334
+		$order_query = strtolower($order_query);
1335
+		if ( strpos($order_query, 'order by') !== false ) {
1336
+			$order_query = str_replace('order by', '', $order_query);
1337
+		}
1338
+
1339
+		$order_query = explode(' ', trim($order_query));
1340
+
1341
+		$order_fields = array(
1342
+			'id', 'form_key', 'name', 'description',
1343
+			'parent_form_id', 'logged_in', 'is_template',
1344
+			'default_template', 'status', 'created_at',
1345
+		);
1346
+
1347
+		$order = trim(trim(reset($order_query), ','));
1348
+		if ( ! in_array($order, $order_fields) ) {
1349
+			return '';
1350
+		}
1351
+
1352
+		$order_by = '';
1353
+		if ( count($order_query) > 1 ) {
1354 1354
 			$order_by = end( $order_query );
1355 1355
 			self::esc_order_by( $order_by );
1356
-        }
1356
+		}
1357 1357
 
1358 1358
 		return ' ORDER BY ' . $order . ' ' . $order_by;
1359
-    }
1359
+	}
1360 1360
 
1361 1361
 	/**
1362 1362
 	 * Make sure this is ordering by either ASC or DESC
@@ -1368,169 +1368,169 @@  discard block
 block discarded – undo
1368 1368
 		}
1369 1369
 	}
1370 1370
 
1371
-    /**
1372
-     * @param string $limit
1373
-     */
1371
+	/**
1372
+	 * @param string $limit
1373
+	 */
1374 1374
 	public static function esc_limit( $limit ) {
1375
-        if ( empty($limit) ) {
1376
-            return '';
1377
-        }
1375
+		if ( empty($limit) ) {
1376
+			return '';
1377
+		}
1378 1378
 
1379
-        $limit = trim(str_replace(' limit', '', strtolower($limit)));
1380
-        if ( is_numeric($limit) ) {
1379
+		$limit = trim(str_replace(' limit', '', strtolower($limit)));
1380
+		if ( is_numeric($limit) ) {
1381 1381
 			return ' LIMIT ' . $limit;
1382
-        }
1382
+		}
1383 1383
 
1384
-        $limit = explode(',', trim($limit));
1385
-        foreach ( $limit as $k => $l ) {
1386
-            if ( is_numeric( $l ) ) {
1387
-                $limit[ $k ] = $l;
1388
-            }
1389
-        }
1384
+		$limit = explode(',', trim($limit));
1385
+		foreach ( $limit as $k => $l ) {
1386
+			if ( is_numeric( $l ) ) {
1387
+				$limit[ $k ] = $l;
1388
+			}
1389
+		}
1390 1390
 
1391
-        $limit = implode(',', $limit);
1391
+		$limit = implode(',', $limit);
1392 1392
 		return ' LIMIT ' . $limit;
1393
-    }
1394
-
1395
-    /**
1396
-     * Get an array of values ready to go through $wpdb->prepare
1397
-     * @since 2.0
1398
-     */
1399
-    public static function prepare_array_values( $array, $type = '%s' ) {
1400
-        $placeholders = array_fill(0, count($array), $type);
1401
-        return implode(', ', $placeholders);
1402
-    }
1403
-
1404
-    public static function prepend_and_or_where( $starts_with = ' WHERE ', $where = '' ) {
1405
-        if ( empty($where) ) {
1406
-            return '';
1407
-        }
1393
+	}
1394
+
1395
+	/**
1396
+	 * Get an array of values ready to go through $wpdb->prepare
1397
+	 * @since 2.0
1398
+	 */
1399
+	public static function prepare_array_values( $array, $type = '%s' ) {
1400
+		$placeholders = array_fill(0, count($array), $type);
1401
+		return implode(', ', $placeholders);
1402
+	}
1403
+
1404
+	public static function prepend_and_or_where( $starts_with = ' WHERE ', $where = '' ) {
1405
+		if ( empty($where) ) {
1406
+			return '';
1407
+		}
1408 1408
 
1409 1409
 		if ( is_array( $where ) ) {
1410
-            global $wpdb;
1411
-            FrmDb::get_where_clause_and_values( $where, $starts_with );
1410
+			global $wpdb;
1411
+			FrmDb::get_where_clause_and_values( $where, $starts_with );
1412 1412
 			$where = $wpdb->prepare( $where['where'], $where['values'] );
1413 1413
 		} else {
1414
-            $where = $starts_with . $where;
1415
-        }
1414
+			$where = $starts_with . $where;
1415
+		}
1416 1416
 
1417
-        return $where;
1418
-    }
1417
+		return $where;
1418
+	}
1419 1419
 
1420
-    // Pagination Methods
1420
+	// Pagination Methods
1421 1421
 
1422
-    /**
1423
-     * @param integer $current_p
1424
-     */
1422
+	/**
1423
+	 * @param integer $current_p
1424
+	 */
1425 1425
 	public static function get_last_record_num( $r_count, $current_p, $p_size ) {
1426 1426
 		return ( ( $r_count < ( $current_p * $p_size ) ) ? $r_count : ( $current_p * $p_size ) );
1427 1427
 	}
1428 1428
 
1429
-    /**
1430
-     * @param integer $current_p
1431
-     */
1432
-    public static function get_first_record_num( $r_count, $current_p, $p_size ) {
1433
-        if ( $current_p == 1 ) {
1434
-            return 1;
1435
-        } else {
1436
-            return ( self::get_last_record_num( $r_count, ( $current_p - 1 ), $p_size ) + 1 );
1437
-        }
1438
-    }
1429
+	/**
1430
+	 * @param integer $current_p
1431
+	 */
1432
+	public static function get_first_record_num( $r_count, $current_p, $p_size ) {
1433
+		if ( $current_p == 1 ) {
1434
+			return 1;
1435
+		} else {
1436
+			return ( self::get_last_record_num( $r_count, ( $current_p - 1 ), $p_size ) + 1 );
1437
+		}
1438
+	}
1439 1439
 
1440 1440
 	/**
1441 1441
 	 * @return array
1442 1442
 	 */
1443 1443
 	public static function json_to_array( $json_vars ) {
1444
-        $vars = array();
1445
-        foreach ( $json_vars as $jv ) {
1446
-            $jv_name = explode('[', $jv['name']);
1447
-            $last = count($jv_name) - 1;
1448
-            foreach ( $jv_name as $p => $n ) {
1449
-                $name = trim($n, ']');
1450
-                if ( ! isset($l1) ) {
1451
-                    $l1 = $name;
1452
-                }
1453
-
1454
-                if ( ! isset($l2) ) {
1455
-                    $l2 = $name;
1456
-                }
1457
-
1458
-                if ( ! isset($l3) ) {
1459
-                    $l3 = $name;
1460
-                }
1461
-
1462
-                $this_val = ( $p == $last ) ? $jv['value'] : array();
1463
-
1464
-                switch ( $p ) {
1465
-                    case 0:
1466
-                        $l1 = $name;
1467
-                        self::add_value_to_array( $name, $l1, $this_val, $vars );
1468
-                    break;
1469
-
1470
-                    case 1:
1471
-                        $l2 = $name;
1472
-                        self::add_value_to_array( $name, $l2, $this_val, $vars[ $l1 ] );
1473
-                    break;
1474
-
1475
-                    case 2:
1476
-                        $l3 = $name;
1477
-                        self::add_value_to_array( $name, $l3, $this_val, $vars[ $l1 ][ $l2 ] );
1478
-                    break;
1479
-
1480
-                    case 3:
1481
-                        $l4 = $name;
1482
-                        self::add_value_to_array( $name, $l4, $this_val, $vars[ $l1 ][ $l2 ][ $l3 ] );
1483
-                    break;
1484
-                }
1485
-
1486
-                unset($this_val, $n);
1487
-            }
1488
-
1489
-            unset($last, $jv);
1490
-        }
1491
-
1492
-        return $vars;
1493
-    }
1494
-
1495
-    /**
1496
-     * @param string $name
1497
-     * @param string $l1
1498
-     */
1499
-    public static function add_value_to_array( $name, $l1, $val, &$vars ) {
1500
-        if ( $name == '' ) {
1501
-            $vars[] = $val;
1502
-        } else if ( ! isset( $vars[ $l1 ] ) ) {
1503
-            $vars[ $l1 ] = $val;
1504
-        }
1505
-    }
1444
+		$vars = array();
1445
+		foreach ( $json_vars as $jv ) {
1446
+			$jv_name = explode('[', $jv['name']);
1447
+			$last = count($jv_name) - 1;
1448
+			foreach ( $jv_name as $p => $n ) {
1449
+				$name = trim($n, ']');
1450
+				if ( ! isset($l1) ) {
1451
+					$l1 = $name;
1452
+				}
1453
+
1454
+				if ( ! isset($l2) ) {
1455
+					$l2 = $name;
1456
+				}
1457
+
1458
+				if ( ! isset($l3) ) {
1459
+					$l3 = $name;
1460
+				}
1461
+
1462
+				$this_val = ( $p == $last ) ? $jv['value'] : array();
1463
+
1464
+				switch ( $p ) {
1465
+					case 0:
1466
+						$l1 = $name;
1467
+						self::add_value_to_array( $name, $l1, $this_val, $vars );
1468
+					break;
1469
+
1470
+					case 1:
1471
+						$l2 = $name;
1472
+						self::add_value_to_array( $name, $l2, $this_val, $vars[ $l1 ] );
1473
+					break;
1474
+
1475
+					case 2:
1476
+						$l3 = $name;
1477
+						self::add_value_to_array( $name, $l3, $this_val, $vars[ $l1 ][ $l2 ] );
1478
+					break;
1479
+
1480
+					case 3:
1481
+						$l4 = $name;
1482
+						self::add_value_to_array( $name, $l4, $this_val, $vars[ $l1 ][ $l2 ][ $l3 ] );
1483
+					break;
1484
+				}
1485
+
1486
+				unset($this_val, $n);
1487
+			}
1488
+
1489
+			unset($last, $jv);
1490
+		}
1491
+
1492
+		return $vars;
1493
+	}
1494
+
1495
+	/**
1496
+	 * @param string $name
1497
+	 * @param string $l1
1498
+	 */
1499
+	public static function add_value_to_array( $name, $l1, $val, &$vars ) {
1500
+		if ( $name == '' ) {
1501
+			$vars[] = $val;
1502
+		} else if ( ! isset( $vars[ $l1 ] ) ) {
1503
+			$vars[ $l1 ] = $val;
1504
+		}
1505
+	}
1506 1506
 
1507 1507
 	public static function maybe_add_tooltip( $name, $class = 'closed', $form_name = '' ) {
1508
-        $tooltips = array(
1509
-            'action_title'  => __( 'Give this action a label for easy reference.', 'formidable' ),
1510
-            'email_to'      => __( 'Add one or more recipient addresses separated by a ",".  FORMAT: Name <[email protected]> or [email protected].  [admin_email] is the address set in WP General Settings.', 'formidable' ),
1511
-            'cc'            => __( 'Add CC addresses separated by a ",".  FORMAT: Name <[email protected]> or [email protected].', 'formidable' ),
1512
-            'bcc'           => __( 'Add BCC addresses separated by a ",".  FORMAT: Name <[email protected]> or [email protected].', 'formidable' ),
1513
-            'reply_to'      => __( 'If you would like a different reply to address than the "from" address, add a single address here.  FORMAT: Name <[email protected]> or [email protected].', 'formidable' ),
1514
-            'from'          => __( 'Enter the name and/or email address of the sender. FORMAT: John Bates <[email protected]> or [email protected].', 'formidable' ),
1515
-            'email_subject' => esc_attr( sprintf( __( 'If you leave the subject blank, the default will be used: %1$s Form submitted on %2$s', 'formidable' ), $form_name, self::site_name() ) ),
1516
-        );
1517
-
1518
-        if ( ! isset( $tooltips[ $name ] ) ) {
1519
-            return;
1520
-        }
1521
-
1522
-        if ( 'open' == $class ) {
1523
-            echo ' frm_help"';
1524
-        } else {
1525
-            echo ' class="frm_help"';
1526
-        }
1508
+		$tooltips = array(
1509
+			'action_title'  => __( 'Give this action a label for easy reference.', 'formidable' ),
1510
+			'email_to'      => __( 'Add one or more recipient addresses separated by a ",".  FORMAT: Name <[email protected]> or [email protected].  [admin_email] is the address set in WP General Settings.', 'formidable' ),
1511
+			'cc'            => __( 'Add CC addresses separated by a ",".  FORMAT: Name <[email protected]> or [email protected].', 'formidable' ),
1512
+			'bcc'           => __( 'Add BCC addresses separated by a ",".  FORMAT: Name <[email protected]> or [email protected].', 'formidable' ),
1513
+			'reply_to'      => __( 'If you would like a different reply to address than the "from" address, add a single address here.  FORMAT: Name <[email protected]> or [email protected].', 'formidable' ),
1514
+			'from'          => __( 'Enter the name and/or email address of the sender. FORMAT: John Bates <[email protected]> or [email protected].', 'formidable' ),
1515
+			'email_subject' => esc_attr( sprintf( __( 'If you leave the subject blank, the default will be used: %1$s Form submitted on %2$s', 'formidable' ), $form_name, self::site_name() ) ),
1516
+		);
1517
+
1518
+		if ( ! isset( $tooltips[ $name ] ) ) {
1519
+			return;
1520
+		}
1521
+
1522
+		if ( 'open' == $class ) {
1523
+			echo ' frm_help"';
1524
+		} else {
1525
+			echo ' class="frm_help"';
1526
+		}
1527 1527
 
1528 1528
 		echo ' title="' . esc_attr( $tooltips[ $name ] );
1529 1529
 
1530
-        if ( 'open' != $class ) {
1531
-            echo '"';
1532
-        }
1533
-    }
1530
+		if ( 'open' != $class ) {
1531
+			echo '"';
1532
+		}
1533
+	}
1534 1534
 
1535 1535
 	/**
1536 1536
 	 * Add the current_page class to that page in the form nav
@@ -1546,35 +1546,35 @@  discard block
 block discarded – undo
1546 1546
 		}
1547 1547
 	}
1548 1548
 
1549
-    /**
1550
-     * Prepare and json_encode post content
1551
-     *
1552
-     * @since 2.0
1553
-     *
1554
-     * @param array $post_content
1555
-     * @return string $post_content ( json encoded array )
1556
-     */
1557
-    public static function prepare_and_encode( $post_content ) {
1558
-        //Loop through array to strip slashes and add only the needed ones
1549
+	/**
1550
+	 * Prepare and json_encode post content
1551
+	 *
1552
+	 * @since 2.0
1553
+	 *
1554
+	 * @param array $post_content
1555
+	 * @return string $post_content ( json encoded array )
1556
+	 */
1557
+	public static function prepare_and_encode( $post_content ) {
1558
+		//Loop through array to strip slashes and add only the needed ones
1559 1559
 		foreach ( $post_content as $key => $val ) {
1560 1560
 			// Replace problematic characters (like &quot;)
1561 1561
 			$val = str_replace( '&quot;', '"', $val );
1562 1562
 
1563 1563
 			self::prepare_action_slashes( $val, $key, $post_content );
1564
-            unset( $key, $val );
1565
-        }
1564
+			unset( $key, $val );
1565
+		}
1566 1566
 
1567
-        // json_encode the array
1568
-        $post_content = json_encode( $post_content );
1567
+		// json_encode the array
1568
+		$post_content = json_encode( $post_content );
1569 1569
 
1570
-	    // add extra slashes for \r\n since WP strips them
1570
+		// add extra slashes for \r\n since WP strips them
1571 1571
 		$post_content = str_replace( array( '\\r', '\\n', '\\u', '\\t' ), array( '\\\\r', '\\\\n', '\\\\u', '\\\\t' ), $post_content );
1572 1572
 
1573
-        // allow for &quot
1574
-	    $post_content = str_replace( '&quot;', '\\"', $post_content );
1573
+		// allow for &quot
1574
+		$post_content = str_replace( '&quot;', '\\"', $post_content );
1575 1575
 
1576
-        return $post_content;
1577
-    }
1576
+		return $post_content;
1577
+	}
1578 1578
 
1579 1579
 	private static function prepare_action_slashes( $val, $key, &$post_content ) {
1580 1580
 		if ( ! isset( $post_content[ $key ] ) ) {
@@ -1642,64 +1642,64 @@  discard block
 block discarded – undo
1642 1642
 	}
1643 1643
 
1644 1644
 	public static function maybe_json_decode( $string ) {
1645
-        if ( is_array($string) ) {
1646
-            return $string;
1647
-        }
1645
+		if ( is_array($string) ) {
1646
+			return $string;
1647
+		}
1648 1648
 
1649
-        $new_string = json_decode($string, true);
1650
-        if ( function_exists('json_last_error') ) {
1649
+		$new_string = json_decode($string, true);
1650
+		if ( function_exists('json_last_error') ) {
1651 1651
 			// php 5.3+
1652
-            if ( json_last_error() == JSON_ERROR_NONE ) {
1653
-                $string = $new_string;
1654
-            }
1655
-        } else if ( isset($new_string) ) {
1652
+			if ( json_last_error() == JSON_ERROR_NONE ) {
1653
+				$string = $new_string;
1654
+			}
1655
+		} else if ( isset($new_string) ) {
1656 1656
 			// php < 5.3 fallback
1657
-            $string = $new_string;
1658
-        }
1659
-        return $string;
1660
-    }
1661
-
1662
-    /**
1663
-     * @since 1.07.10
1664
-     *
1665
-     * @param string $post_type The name of the post type that may need to be highlighted
1666
-     * echo The javascript to open and highlight the Formidable menu
1667
-     */
1657
+			$string = $new_string;
1658
+		}
1659
+		return $string;
1660
+	}
1661
+
1662
+	/**
1663
+	 * @since 1.07.10
1664
+	 *
1665
+	 * @param string $post_type The name of the post type that may need to be highlighted
1666
+	 * echo The javascript to open and highlight the Formidable menu
1667
+	 */
1668 1668
 	public static function maybe_highlight_menu( $post_type ) {
1669
-        global $post;
1669
+		global $post;
1670 1670
 
1671
-        if ( isset($_REQUEST['post_type']) && $_REQUEST['post_type'] != $post_type ) {
1672
-            return;
1673
-        }
1671
+		if ( isset($_REQUEST['post_type']) && $_REQUEST['post_type'] != $post_type ) {
1672
+			return;
1673
+		}
1674 1674
 
1675
-        if ( is_object($post) && $post->post_type != $post_type ) {
1676
-            return;
1677
-        }
1675
+		if ( is_object($post) && $post->post_type != $post_type ) {
1676
+			return;
1677
+		}
1678 1678
 
1679
-        self::load_admin_wide_js();
1680
-        echo '<script type="text/javascript">jQuery(document).ready(function(){frmSelectSubnav();});</script>';
1681
-    }
1679
+		self::load_admin_wide_js();
1680
+		echo '<script type="text/javascript">jQuery(document).ready(function(){frmSelectSubnav();});</script>';
1681
+	}
1682 1682
 
1683
-    /**
1684
-     * Load the JS file on non-Formidable pages in the admin area
1685
-     * @since 2.0
1686
-     */
1683
+	/**
1684
+	 * Load the JS file on non-Formidable pages in the admin area
1685
+	 * @since 2.0
1686
+	 */
1687 1687
 	public static function load_admin_wide_js( $load = true ) {
1688
-        $version = FrmAppHelper::plugin_version();
1688
+		$version = FrmAppHelper::plugin_version();
1689 1689
 		wp_register_script( 'formidable_admin_global', FrmAppHelper::plugin_url() . '/js/formidable_admin_global.js', array( 'jquery' ), $version );
1690 1690
 
1691
-        wp_localize_script( 'formidable_admin_global', 'frmGlobal', array(
1691
+		wp_localize_script( 'formidable_admin_global', 'frmGlobal', array(
1692 1692
 			'updating_msg' => __( 'Please wait while your site updates.', 'formidable' ),
1693
-            'deauthorize'  => __( 'Are you sure you want to deauthorize Formidable Forms on this site?', 'formidable' ),
1693
+			'deauthorize'  => __( 'Are you sure you want to deauthorize Formidable Forms on this site?', 'formidable' ),
1694 1694
 			'url'          => FrmAppHelper::plugin_url(),
1695 1695
 			'loading'      => __( 'Loading&hellip;' ),
1696 1696
 			'nonce'        => wp_create_nonce( 'frm_ajax' ),
1697
-        ) );
1697
+		) );
1698 1698
 
1699 1699
 		if ( $load ) {
1700 1700
 			wp_enqueue_script( 'formidable_admin_global' );
1701 1701
 		}
1702
-    }
1702
+	}
1703 1703
 
1704 1704
 	/**
1705 1705
 	 * @since 2.0.9
@@ -1708,9 +1708,9 @@  discard block
 block discarded – undo
1708 1708
 		wp_enqueue_style( 'frm_fonts', self::plugin_url() . '/css/frm_fonts.css', array(), self::plugin_version() );
1709 1709
 	}
1710 1710
 
1711
-    /**
1712
-     * @param string $location
1713
-     */
1711
+	/**
1712
+	 * @param string $location
1713
+	 */
1714 1714
 	public static function localize_script( $location ) {
1715 1715
 		$ajax_url = admin_url( 'admin-ajax.php', is_ssl() ? 'admin' : 'http' );
1716 1716
 		$ajax_url = apply_filters( 'frm_ajax_url', $ajax_url );
@@ -1761,81 +1761,81 @@  discard block
 block discarded – undo
1761 1761
 		}
1762 1762
 	}
1763 1763
 
1764
-    /**
1764
+	/**
1765 1765
 	 * echo the message on the plugins listing page
1766
-     * @since 1.07.10
1767
-     *
1768
-     * @param float $min_version The version the add-on requires
1769
-     */
1766
+	 * @since 1.07.10
1767
+	 *
1768
+	 * @param float $min_version The version the add-on requires
1769
+	 */
1770 1770
 	public static function min_version_notice( $min_version ) {
1771
-        $frm_version = self::plugin_version();
1771
+		$frm_version = self::plugin_version();
1772 1772
 
1773
-        // check if Formidable meets minimum requirements
1774
-        if ( version_compare($frm_version, $min_version, '>=') ) {
1775
-            return;
1776
-        }
1773
+		// check if Formidable meets minimum requirements
1774
+		if ( version_compare($frm_version, $min_version, '>=') ) {
1775
+			return;
1776
+		}
1777 1777
 
1778
-        $wp_list_table = _get_list_table('WP_Plugins_List_Table');
1778
+		$wp_list_table = _get_list_table('WP_Plugins_List_Table');
1779 1779
 		echo '<tr class="plugin-update-tr active"><th colspan="' . absint( $wp_list_table->get_column_count() ) . '" class="check-column plugin-update colspanchange"><div class="update-message">' .
1780
-        __( 'You are running an outdated version of Formidable. This plugin may not work correctly if you do not update Formidable.', 'formidable' ) .
1781
-        '</div></td></tr>';
1782
-    }
1783
-
1784
-    public static function locales( $type = 'date' ) {
1785
-        $locales = array(
1786
-            'en' => __( 'English', 'formidable' ),    '' => __( 'English/Western', 'formidable' ),
1787
-            'af' => __( 'Afrikaans', 'formidable' ),  'sq' => __( 'Albanian', 'formidable' ),
1788
-            'ar' => __( 'Arabic', 'formidable' ),     'hy' => __( 'Armenian', 'formidable' ),
1789
-            'az' => __( 'Azerbaijani', 'formidable' ), 'eu' => __( 'Basque', 'formidable' ),
1790
-            'bs' => __( 'Bosnian', 'formidable' ),    'bg' => __( 'Bulgarian', 'formidable' ),
1791
-            'ca' => __( 'Catalan', 'formidable' ),    'zh-HK' => __( 'Chinese Hong Kong', 'formidable' ),
1792
-            'zh-CN' => __( 'Chinese Simplified', 'formidable' ), 'zh-TW' => __( 'Chinese Traditional', 'formidable' ),
1793
-            'hr' => __( 'Croatian', 'formidable' ),   'cs' => __( 'Czech', 'formidable' ),
1794
-            'da' => __( 'Danish', 'formidable' ),     'nl' => __( 'Dutch', 'formidable' ),
1795
-            'en-GB' => __( 'English/UK', 'formidable' ), 'eo' => __( 'Esperanto', 'formidable' ),
1796
-            'et' => __( 'Estonian', 'formidable' ),   'fo' => __( 'Faroese', 'formidable' ),
1797
-            'fa' => __( 'Farsi/Persian', 'formidable' ), 'fil' => __( 'Filipino', 'formidable' ),
1798
-            'fi' => __( 'Finnish', 'formidable' ),    'fr' => __( 'French', 'formidable' ),
1799
-            'fr-CA' => __( 'French/Canadian', 'formidable' ), 'fr-CH' => __( 'French/Swiss', 'formidable' ),
1800
-            'de' => __( 'German', 'formidable' ),     'de-AT' => __( 'German/Austria', 'formidable' ),
1801
-            'de-CH' => __( 'German/Switzerland', 'formidable' ), 'el' => __( 'Greek', 'formidable' ),
1802
-            'he' => __( 'Hebrew', 'formidable' ),     'iw' => __( 'Hebrew', 'formidable' ),
1803
-            'hi' => __( 'Hindi', 'formidable' ),      'hu' => __( 'Hungarian', 'formidable' ),
1804
-            'is' => __( 'Icelandic', 'formidable' ),  'id' => __( 'Indonesian', 'formidable' ),
1805
-            'it' => __( 'Italian', 'formidable' ),    'ja' => __( 'Japanese', 'formidable' ),
1806
-            'ko' => __( 'Korean', 'formidable' ),     'lv' => __( 'Latvian', 'formidable' ),
1807
-            'lt' => __( 'Lithuanian', 'formidable' ), 'ms' => __( 'Malaysian', 'formidable' ),
1808
-            'no' => __( 'Norwegian', 'formidable' ),  'pl' => __( 'Polish', 'formidable' ),
1809
-            'pt' => __( 'Portuguese', 'formidable' ), 'pt-BR' => __( 'Portuguese/Brazilian', 'formidable' ),
1810
-            'pt-PT' => __( 'Portuguese/Portugal', 'formidable' ), 'ro' => __( 'Romanian', 'formidable' ),
1811
-            'ru' => __( 'Russian', 'formidable' ),    'sr' => __( 'Serbian', 'formidable' ),
1812
-            'sr-SR' => __( 'Serbian', 'formidable' ), 'sk' => __( 'Slovak', 'formidable' ),
1813
-            'sl' => __( 'Slovenian', 'formidable' ),  'es' => __( 'Spanish', 'formidable' ),
1814
-            'es-419' => __( 'Spanish/Latin America', 'formidable' ), 'sv' => __( 'Swedish', 'formidable' ),
1815
-            'ta' => __( 'Tamil', 'formidable' ),      'th' => __( 'Thai', 'formidable' ),
1816
-            'tu' => __( 'Turkish', 'formidable' ),    'tr' => __( 'Turkish', 'formidable' ),
1817
-            'uk' => __( 'Ukranian', 'formidable' ),   'vi' => __( 'Vietnamese', 'formidable' ),
1818
-        );
1819
-
1820
-        if ( $type == 'captcha' ) {
1821
-            // remove the languages unavailable for the captcha
1822
-            $unset = array(
1823
-                '', 'af', 'sq', 'hy', 'az', 'eu', 'bs',
1824
-                'zh-HK', 'eo', 'et', 'fo', 'fr-CH',
1825
-                'he', 'is', 'ms', 'sr-SR', 'ta', 'tu',
1826
-            );
1827
-        } else {
1828
-            // remove the languages unavailable for the datepicker
1829
-            $unset = array(
1830
-                'en', 'fil', 'fr-CA', 'de-AT', 'de-AT',
1831
-                'de-CH', 'iw', 'hi', 'pt', 'pt-PT',
1832
-                'es-419', 'tr',
1833
-            );
1834
-        }
1835
-
1836
-        $locales = array_diff_key($locales, array_flip($unset));
1837
-        $locales = apply_filters('frm_locales', $locales);
1838
-
1839
-        return $locales;
1840
-    }
1780
+		__( 'You are running an outdated version of Formidable. This plugin may not work correctly if you do not update Formidable.', 'formidable' ) .
1781
+		'</div></td></tr>';
1782
+	}
1783
+
1784
+	public static function locales( $type = 'date' ) {
1785
+		$locales = array(
1786
+			'en' => __( 'English', 'formidable' ),    '' => __( 'English/Western', 'formidable' ),
1787
+			'af' => __( 'Afrikaans', 'formidable' ),  'sq' => __( 'Albanian', 'formidable' ),
1788
+			'ar' => __( 'Arabic', 'formidable' ),     'hy' => __( 'Armenian', 'formidable' ),
1789
+			'az' => __( 'Azerbaijani', 'formidable' ), 'eu' => __( 'Basque', 'formidable' ),
1790
+			'bs' => __( 'Bosnian', 'formidable' ),    'bg' => __( 'Bulgarian', 'formidable' ),
1791
+			'ca' => __( 'Catalan', 'formidable' ),    'zh-HK' => __( 'Chinese Hong Kong', 'formidable' ),
1792
+			'zh-CN' => __( 'Chinese Simplified', 'formidable' ), 'zh-TW' => __( 'Chinese Traditional', 'formidable' ),
1793
+			'hr' => __( 'Croatian', 'formidable' ),   'cs' => __( 'Czech', 'formidable' ),
1794
+			'da' => __( 'Danish', 'formidable' ),     'nl' => __( 'Dutch', 'formidable' ),
1795
+			'en-GB' => __( 'English/UK', 'formidable' ), 'eo' => __( 'Esperanto', 'formidable' ),
1796
+			'et' => __( 'Estonian', 'formidable' ),   'fo' => __( 'Faroese', 'formidable' ),
1797
+			'fa' => __( 'Farsi/Persian', 'formidable' ), 'fil' => __( 'Filipino', 'formidable' ),
1798
+			'fi' => __( 'Finnish', 'formidable' ),    'fr' => __( 'French', 'formidable' ),
1799
+			'fr-CA' => __( 'French/Canadian', 'formidable' ), 'fr-CH' => __( 'French/Swiss', 'formidable' ),
1800
+			'de' => __( 'German', 'formidable' ),     'de-AT' => __( 'German/Austria', 'formidable' ),
1801
+			'de-CH' => __( 'German/Switzerland', 'formidable' ), 'el' => __( 'Greek', 'formidable' ),
1802
+			'he' => __( 'Hebrew', 'formidable' ),     'iw' => __( 'Hebrew', 'formidable' ),
1803
+			'hi' => __( 'Hindi', 'formidable' ),      'hu' => __( 'Hungarian', 'formidable' ),
1804
+			'is' => __( 'Icelandic', 'formidable' ),  'id' => __( 'Indonesian', 'formidable' ),
1805
+			'it' => __( 'Italian', 'formidable' ),    'ja' => __( 'Japanese', 'formidable' ),
1806
+			'ko' => __( 'Korean', 'formidable' ),     'lv' => __( 'Latvian', 'formidable' ),
1807
+			'lt' => __( 'Lithuanian', 'formidable' ), 'ms' => __( 'Malaysian', 'formidable' ),
1808
+			'no' => __( 'Norwegian', 'formidable' ),  'pl' => __( 'Polish', 'formidable' ),
1809
+			'pt' => __( 'Portuguese', 'formidable' ), 'pt-BR' => __( 'Portuguese/Brazilian', 'formidable' ),
1810
+			'pt-PT' => __( 'Portuguese/Portugal', 'formidable' ), 'ro' => __( 'Romanian', 'formidable' ),
1811
+			'ru' => __( 'Russian', 'formidable' ),    'sr' => __( 'Serbian', 'formidable' ),
1812
+			'sr-SR' => __( 'Serbian', 'formidable' ), 'sk' => __( 'Slovak', 'formidable' ),
1813
+			'sl' => __( 'Slovenian', 'formidable' ),  'es' => __( 'Spanish', 'formidable' ),
1814
+			'es-419' => __( 'Spanish/Latin America', 'formidable' ), 'sv' => __( 'Swedish', 'formidable' ),
1815
+			'ta' => __( 'Tamil', 'formidable' ),      'th' => __( 'Thai', 'formidable' ),
1816
+			'tu' => __( 'Turkish', 'formidable' ),    'tr' => __( 'Turkish', 'formidable' ),
1817
+			'uk' => __( 'Ukranian', 'formidable' ),   'vi' => __( 'Vietnamese', 'formidable' ),
1818
+		);
1819
+
1820
+		if ( $type == 'captcha' ) {
1821
+			// remove the languages unavailable for the captcha
1822
+			$unset = array(
1823
+				'', 'af', 'sq', 'hy', 'az', 'eu', 'bs',
1824
+				'zh-HK', 'eo', 'et', 'fo', 'fr-CH',
1825
+				'he', 'is', 'ms', 'sr-SR', 'ta', 'tu',
1826
+			);
1827
+		} else {
1828
+			// remove the languages unavailable for the datepicker
1829
+			$unset = array(
1830
+				'en', 'fil', 'fr-CA', 'de-AT', 'de-AT',
1831
+				'de-CH', 'iw', 'hi', 'pt', 'pt-PT',
1832
+				'es-419', 'tr',
1833
+			);
1834
+		}
1835
+
1836
+		$locales = array_diff_key($locales, array_flip($unset));
1837
+		$locales = apply_filters('frm_locales', $locales);
1838
+
1839
+		return $locales;
1840
+	}
1841 1841
 }
Please login to merge, or discard this patch.