Completed
Push — master ( 1e23f1...3c8881 )
by Stephanie
03:12
created

FrmFieldsController::add_validation_messages()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 11
Code Lines 7

Duplication

Lines 8
Ratio 72.73 %

Importance

Changes 0
Metric Value
cc 3
eloc 7
nc 4
nop 2
dl 8
loc 11
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
class FrmFieldsController {
4
5
    public static function load_field() {
6
		FrmAppHelper::permission_check('frm_edit_forms');
7
        check_ajax_referer( 'frm_ajax', 'nonce' );
8
9
        $fields = $_POST['field'];
10
        if ( empty( $fields ) ) {
11
            wp_die();
12
        }
13
14
        $_GET['page'] = 'formidable';
15
        $fields = stripslashes_deep( $fields );
16
17
        $ajax = true;
18
		$values = array( 'id' => FrmAppHelper::get_post_param( 'form_id', '', 'absint' ) );
19
        $path = FrmAppHelper::plugin_path();
20
        $field_html = array();
21
22
        foreach ( $fields as $field ) {
23
            $field = htmlspecialchars_decode( nl2br( $field ) );
24
            $field = json_decode( $field, true );
25
            if ( ! isset( $field['id'] ) ) {
26
                // this field may have already been loaded
27
                continue;
28
            }
29
30
            $field_id = absint( $field['id'] );
31
32
            if ( ! isset( $field['value'] ) ) {
33
                $field['value'] = '';
34
            }
35
36
			$field_name = 'item_meta[' . $field_id . ']';
37
            $html_id = FrmFieldsHelper::get_html_id($field);
38
39
            ob_start();
40
			include( $path . '/classes/views/frm-forms/add_field.php' );
41
            $field_html[ $field_id ] = ob_get_contents();
42
            ob_end_clean();
43
        }
44
45
        unset($path);
46
47
        echo json_encode($field_html);
48
49
        wp_die();
50
    }
51
52
	/**
53
	 * Create a new field with ajax
54
	 */
55
    public static function create() {
56
		FrmAppHelper::permission_check('frm_edit_forms');
57
        check_ajax_referer( 'frm_ajax', 'nonce' );
58
59
		$field_type = FrmAppHelper::get_post_param( 'field_type', '', 'sanitize_text_field' );
60
		$form_id = FrmAppHelper::get_post_param( 'form_id', 0, 'absint' );
61
62
		$field = self::include_new_field( $field_type, $form_id );
0 ignored issues
show
Bug introduced by
It seems like $field_type defined by \FrmAppHelper::get_post_... 'sanitize_text_field') on line 59 can also be of type array; however, FrmFieldsController::include_new_field() does only seem to accept string, maybe add an additional type check?

If a method or function can return multiple different values and unless you are sure that you only can receive a single value in this context, we recommend to add an additional type check:

/**
 * @return array|string
 */
function returnsDifferentValues($x) {
    if ($x) {
        return 'foo';
    }

    return array();
}

$x = returnsDifferentValues($y);
if (is_array($x)) {
    // $x is an array.
}

If this a common case that PHP Analyzer should handle natively, please let us know by opening an issue.

Loading history...
63
64
        // this hook will allow for multiple fields to be added at once
65
        do_action('frm_after_field_created', $field, $form_id);
66
67
        wp_die();
68
    }
69
70
    /**
71
     * Set up and create a new field
72
     *
73
     * @param string $field_type
74
     * @param integer $form_id
75
     * @return array|bool
76
     */
77
	public static function include_new_field( $field_type, $form_id ) {
78
        $values = array();
79
        if ( FrmAppHelper::pro_is_installed() ) {
80
            $values['post_type'] = FrmProFormsHelper::post_type($form_id);
81
        }
82
83
		$field_values = FrmFieldsHelper::setup_new_vars( $field_type, $form_id );
84
        $field_values = apply_filters( 'frm_before_field_created', $field_values );
85
86
        $field_id = FrmField::create( $field_values );
87
88
        if ( ! $field_id ) {
89
            return false;
90
        }
91
92
        $field = self::include_single_field($field_id, $values, $form_id);
93
94
        return $field;
95
    }
96
97
	public static function edit_name( $field = 'name', $id = '' ) {
98
		FrmAppHelper::permission_check('frm_edit_forms');
99
        check_ajax_referer( 'frm_ajax', 'nonce' );
100
101
        if ( empty($field) ) {
102
            $field = 'name';
103
        }
104
105
        if ( empty($id) ) {
106
			$id = FrmAppHelper::get_post_param( 'element_id', '', 'sanitize_title' );
107
			$id = str_replace( 'field_label_', '', $id );
108
        }
109
110
		$value = FrmAppHelper::get_post_param( 'update_value', '', 'wp_kses_post' );
111
		$value = trim( $value );
112
        if ( trim(strip_tags($value)) == '' ) {
113
            // set blank value if there is no content
114
            $value = '';
115
        }
116
117
		FrmField::update( $id, array( $field => $value ) );
118
119
		do_action( 'frm_after_update_field_' . $field, compact( 'id', 'value' ) );
120
121
		echo stripslashes( wp_kses_post( $value ) );
122
        wp_die();
123
    }
124
125
    public static function update_ajax_option() {
126
		FrmAppHelper::permission_check('frm_edit_forms');
127
        check_ajax_referer( 'frm_ajax', 'nonce' );
128
129
		$field_id = FrmAppHelper::get_post_param( 'field', 0, 'absint' );
130
		if ( ! $field_id ) {
131
			wp_die();
132
		}
133
134
		$field = FrmField::getOne( $field_id );
135
136
		if ( isset( $_POST['separate_value'] ) ) {
137
			$new_val = FrmField::is_option_true( $field, 'separate_value' ) ? 0 : 1;
138
			$field->field_options['separate_value'] = $new_val;
139
			unset($new_val);
140
		}
141
142
        FrmField::update( $field_id, array(
143
            'field_options' => $field->field_options,
144
			'form_id'		=> $field->form_id,
145
        ) );
146
        wp_die();
147
    }
148
149
    public static function duplicate() {
150
		FrmAppHelper::permission_check('frm_edit_forms');
151
        check_ajax_referer( 'frm_ajax', 'nonce' );
152
153
        global $wpdb;
154
155
		$field_id = FrmAppHelper::get_post_param( 'field_id', 0, 'absint' );
156
		$form_id = FrmAppHelper::get_post_param( 'form_id', 0, 'absint' );
157
158
		$copy_field = FrmField::getOne( $field_id );
159
        if ( ! $copy_field ) {
160
            wp_die();
161
        }
162
163
		do_action( 'frm_duplicate_field', $copy_field, $form_id );
164
		do_action( 'frm_duplicate_field_' . $copy_field->type, $copy_field, $form_id );
165
166
		$values = array();
167
		FrmFieldsHelper::fill_field( $values, $copy_field, $form_id );
168
		$values = apply_filters( 'frm_prepare_single_field_for_duplication', $values );
169
170
		$field_id = FrmField::create( $values );
171
		if ( ! $field_id ) {
172
			wp_die();
173
		}
174
175
        self::include_single_field($field_id, $values);
176
177
        wp_die();
178
    }
179
180
    /**
181
     * Load a single field in the form builder along with all needed variables
182
     */
183
    public static function include_single_field( $field_id, $values, $form_id = 0 ) {
184
        $field = FrmFieldsHelper::setup_edit_vars(FrmField::getOne($field_id));
185
		$field_name = 'item_meta[' . $field_id . ']';
186
        $html_id = FrmFieldsHelper::get_html_id($field);
187
        $id = $form_id ? $form_id : $field['form_id'];
188
        if ( $field['type'] == 'html' ) {
189
            $field['stop_filter'] = true;
190
        }
191
192
		require( FrmAppHelper::plugin_path() . '/classes/views/frm-forms/add_field.php' );
193
194
        return $field;
195
    }
196
197
    public static function destroy() {
198
		FrmAppHelper::permission_check('frm_edit_forms');
199
        check_ajax_referer( 'frm_ajax', 'nonce' );
200
201
		$field_id = FrmAppHelper::get_post_param( 'field_id', 0, 'absint' );
202
		FrmField::destroy( $field_id );
203
        wp_die();
204
    }
205
206
    /* Field Options */
207
208
    //Add Single Option or Other Option
209
    public static function add_option() {
210
		FrmAppHelper::permission_check('frm_edit_forms');
211
        check_ajax_referer( 'frm_ajax', 'nonce' );
212
213
		$id = FrmAppHelper::get_post_param( 'field_id', 0, 'absint' );
214
		$opt_type = FrmAppHelper::get_post_param( 'opt_type', '', 'sanitize_text_field' );
215
		$opt_key = FrmAppHelper::get_post_param( 'opt_key', 0, 'absint' );
216
217
        $field = FrmField::getOne($id);
218
219
        if ( 'other' == $opt_type ) {
220
			$opt = __( 'Other', 'formidable' );
221
            $other_val = '';
222
            $opt_key = 'other_' . $opt_key;
223
        } else {
224
			$opt = __( 'New Option', 'formidable' );
225
        }
226
        $field_val = $opt;
227
228
        $field_data = $field;
229
		$field = (array) $field;
230
		$field['separate_value'] = isset( $field_data->field_options['separate_value'] ) ? $field_data->field_options['separate_value'] : 0;
231
		unset( $field_data );
232
233
		$field_name = 'item_meta[' . $id . ']';
234
		$html_id = FrmFieldsHelper::get_html_id( $field );
235
        $checked = '';
236
237
        if ( 'other' == $opt_type ) {
238
			include( FrmAppHelper::plugin_path() . '/pro/classes/views/frmpro-fields/other-option.php' );
239
        } else {
240
			require( FrmAppHelper::plugin_path() . '/classes/views/frm-fields/single-option.php' );
241
        }
242
        wp_die();
243
    }
244
245
    public static function edit_option() {
246
		_deprecated_function( __FUNCTION__, '2.3' );
247
    }
248
249
    public static function delete_option() {
250
		_deprecated_function( __FUNCTION__, '2.3' );
251
    }
252
253
    public static function import_choices() {
254
        FrmAppHelper::permission_check( 'frm_edit_forms', 'hide' );
255
256
		$field_id = absint( $_REQUEST['field_id'] );
257
258
        global $current_screen, $hook_suffix;
259
260
        // Catch plugins that include admin-header.php before admin.php completes.
261
        if ( empty( $current_screen ) && function_exists( 'set_current_screen' ) ) {
262
            $hook_suffix = '';
0 ignored issues
show
introduced by
Overridding WordPress globals is prohibited
Loading history...
263
        	set_current_screen();
264
        }
265
266
        if ( function_exists( 'register_admin_color_schemes' ) ) {
267
            register_admin_color_schemes();
268
        }
269
270
		$hook_suffix = '';
0 ignored issues
show
introduced by
Overridding WordPress globals is prohibited
Loading history...
271
		$admin_body_class = '';
272
273
        if ( get_user_setting( 'mfold' ) == 'f' ) {
274
        	$admin_body_class .= ' folded';
275
        }
276
277
        if ( function_exists( 'is_admin_bar_showing' ) && is_admin_bar_showing() ) {
278
        	$admin_body_class .= ' admin-bar';
279
        }
280
281
        if ( is_rtl() ) {
282
        	$admin_body_class .= ' rtl';
283
        }
284
285
        $admin_body_class .= ' admin-color-' . sanitize_html_class( get_user_option( 'admin_color' ), 'fresh' );
286
        $prepop = array();
287
        FrmFieldsHelper::get_bulk_prefilled_opts($prepop);
288
289
        $field = FrmField::getOne($field_id);
290
291
        wp_enqueue_script( 'utils' );
292
		wp_enqueue_style( 'formidable-admin', FrmAppHelper::plugin_url() . '/css/frm_admin.css' );
293
        FrmAppHelper::load_admin_wide_js();
294
295
		include( FrmAppHelper::plugin_path() . '/classes/views/frm-fields/import_choices.php' );
296
        wp_die();
297
    }
298
299
    public static function import_options() {
300
		FrmAppHelper::permission_check('frm_edit_forms');
301
        check_ajax_referer( 'frm_ajax', 'nonce' );
302
303
        if ( ! is_admin() || ! current_user_can('frm_edit_forms') ) {
304
            return;
305
        }
306
307
		$field_id = absint( $_POST['field_id'] );
308
        $field = FrmField::getOne($field_id);
309
310
		if ( ! in_array( $field->type, array( 'radio', 'checkbox', 'select' ) ) ) {
311
            return;
312
        }
313
314
        $field = FrmFieldsHelper::setup_edit_vars($field);
315
		$opts = FrmAppHelper::get_param( 'opts', '', 'post', 'wp_kses_post' );
316
		$opts = explode( "\n", rtrim( $opts, "\n" ) );
317
		$opts = array_map( 'trim', $opts );
318
319
        if ( $field['separate_value'] ) {
320
            foreach ( $opts as $opt_key => $opt ) {
321
                if ( strpos($opt, '|') !== false ) {
322
                    $vals = explode('|', $opt);
323
                    if ( $vals[0] != $vals[1] ) {
324
                        $opts[ $opt_key ] = array( 'label' => trim( $vals[0] ), 'value' => trim( $vals[1] ) );
325
                    }
326
                    unset($vals);
327
                }
328
                unset($opt_key, $opt);
329
            }
330
        }
331
332
        //Keep other options after bulk update
333
        if ( isset( $field['field_options']['other'] ) && $field['field_options']['other'] == true ) {
334
            $other_array = array();
335
            foreach ( $field['options'] as $opt_key => $opt ) {
336
				if ( FrmFieldsHelper::is_other_opt( $opt_key ) ) {
337
					$other_array[ $opt_key ] = $opt;
338
				}
339
                unset($opt_key, $opt);
340
            }
341
            if ( ! empty($other_array) ) {
342
                $opts = array_merge( $opts, $other_array);
343
            }
344
        }
345
346
        $field['options'] = $opts;
347
348
        if ( $field['type'] == 'radio' || $field['type'] == 'checkbox' ) {
349
			$field_name = 'item_meta[' . $field['id'] . ']';
350
351
			// Get html_id which will be used in single-option.php
352
			$html_id = FrmFieldsHelper::get_html_id( $field );
353
354
			require( FrmAppHelper::plugin_path() . '/classes/views/frm-fields/radio.php' );
355
        } else {
356
            FrmFieldsHelper::show_single_option($field);
357
        }
358
359
        wp_die();
360
    }
361
362
    public static function update_order() {
363
		FrmAppHelper::permission_check('frm_edit_forms');
364
        check_ajax_referer( 'frm_ajax', 'nonce' );
365
366
		$fields = FrmAppHelper::get_post_param( 'frm_field_id' );
367
		foreach ( (array) $fields as $position => $item ) {
368
			FrmField::update( absint( $item ), array( 'field_order' => absint( $position ) ) );
369
		}
370
        wp_die();
371
    }
372
373
	public static function change_type( $type ) {
374
        $type_switch = array(
375
            'scale'     => 'radio',
376
            '10radio'   => 'radio',
377
            'rte'       => 'textarea',
378
            'website'   => 'url',
379
        );
380
        if ( isset( $type_switch[ $type ] ) ) {
381
            $type = $type_switch[ $type ];
382
        }
383
384
		$pro_fields = FrmField::pro_field_selection();
385
		$types = array_keys( $pro_fields );
386
		if ( in_array( $type, $types ) ) {
387
			$type = 'text';
388
		}
389
390
        return $type;
391
    }
392
393
	public static function display_field_options( $display ) {
394
		switch ( $display['type'] ) {
395
            case 'captcha':
396
                $display['required'] = false;
397
                $display['invalid'] = true;
398
                $display['default_blank'] = false;
399
				$display['captcha_size'] = true;
400
            break;
401
            case 'radio':
402
                $display['default_blank'] = false;
403
            break;
404
            case 'text':
405
            case 'textarea':
406
                $display['size'] = true;
407
                $display['clear_on_focus'] = true;
408
            break;
409
            case 'select':
410
                $display['size'] = true;
411
            break;
412
            case 'url':
413
            case 'website':
414
            case 'email':
415
                $display['size'] = true;
416
                $display['clear_on_focus'] = true;
417
                $display['invalid'] = true;
418
        }
419
420
        return $display;
421
    }
422
423
    public static function input_html( $field, $echo = true ) {
424
        $class = array(); //$field['type'];
425
        self::add_input_classes($field, $class);
426
427
        $add_html = array();
428
        self::add_html_size($field, $add_html);
429
        self::add_html_length($field, $add_html);
430
        self::add_html_placeholder($field, $add_html, $class);
431
		self::add_validation_messages( $field, $add_html );
432
433
        $class = apply_filters('frm_field_classes', implode(' ', $class), $field);
434
435
		FrmFormsHelper::add_html_attr( $class, 'class', $add_html );
436
437
        self::add_shortcodes_to_html($field, $add_html);
438
439
		$add_html = apply_filters( 'frm_field_extra_html', $add_html, $field );
440
		$add_html = ' ' . implode( ' ', $add_html ) . '  ';
441
442
        if ( $echo ) {
443
            echo $add_html;
0 ignored issues
show
introduced by
Expected next thing to be a escaping function, not '$add_html'
Loading history...
444
        }
445
446
        return $add_html;
447
    }
448
449
	private static function add_input_classes( $field, array &$class ) {
450
        if ( isset($field['input_class']) && ! empty($field['input_class']) ) {
451
            $class[] = $field['input_class'];
452
        }
453
454
        if ( $field['type'] == 'hidden' || $field['type'] == 'user_id' ) {
455
            return;
456
        }
457
458
        if ( isset($field['size']) && $field['size'] > 0 ) {
459
            $class[] = 'auto_width';
460
        }
461
    }
462
463
	private static function add_html_size( $field, array &$add_html ) {
464
		if ( ! isset( $field['size'] ) || $field['size'] <= 0 || in_array( $field['type'], array( 'select', 'data', 'time', 'hidden', 'file', 'lookup' ) ) ) {
465
            return;
466
        }
467
468
        if ( FrmAppHelper::is_admin_page('formidable' ) ) {
469
            return;
470
        }
471
472
        if ( is_numeric($field['size']) ) {
473
            $field['size'] .= 'px';
474
        }
475
476
        $important = apply_filters('frm_use_important_width', 1, $field);
477
        // Note: This inline styling must stay since we cannot realistically set a class for every possible field size
478
		$add_html['style'] = 'style="width:' . esc_attr( $field['size'] ) . ( $important ? ' !important' : '' ) . '"';
479
480
        self::add_html_cols($field, $add_html);
481
    }
482
483
	private static function add_html_cols( $field, array &$add_html ) {
484
		if ( ! in_array( $field['type'], array( 'textarea', 'rte' ) ) ) {
485
            return;
486
        }
487
488
        // convert to cols for textareas
489
        $calc = array(
490
            ''      => 9,
491
            'px'    => 9,
492
            'rem'   => 0.444,
493
            'em'    => 0.544,
494
        );
495
496
        // include "col" for valid html
497
        $unit = trim(preg_replace('/[0-9]+/', '', $field['size']));
498
499
        if ( ! isset( $calc[ $unit ] ) ) {
500
            return;
501
        }
502
503
        $size = (float) str_replace( $unit, '', $field['size'] ) / $calc[ $unit ];
504
505
		$add_html['cols'] = 'cols="' . absint( $size ) . '"';
506
    }
507
508
	private static function add_html_length( $field, array &$add_html ) {
509
        // check for max setting and if this field accepts maxlength
510
		if ( FrmField::is_option_empty( $field, 'max' ) || in_array( $field['type'], array( 'textarea', 'rte', 'hidden', 'file' ) ) ) {
511
            return;
512
        }
513
514
        if ( FrmAppHelper::is_admin_page('formidable' ) ) {
515
            // don't load on form builder page
516
            return;
517
        }
518
519
		$add_html['maxlength'] = 'maxlength="' . esc_attr( $field['max'] ) . '"';
520
    }
521
522
	private static function add_html_placeholder( $field, array &$add_html, array &$class ) {
523
		if ( FrmAppHelper::is_admin_page( 'formidable' ) ) {
524
			return;
525
		}
526
527
		if ( $field['default_value'] != '' && ! FrmField::is_option_true( $field, 'clear_on_focus' ) ) {
528
			if ( is_array( $field['default_value'] ) ) {
529
				$field['default_value'] = json_encode( $field['default_value'] );
530
				$add_html['data-frmval'] = 'data-frmval="' . esc_attr( $field['default_value'] ) . '"';
531
			} else {
532
				self::add_frmval_to_input( $field, $add_html );
533
			}
534
			$field['default_value'] = '';
535
		}
536
537
		$field['default_value'] = self::prepare_default_value( $field );
538
		if ( $field['default_value'] == '' || is_array( $field['default_value'] ) ) {
539
			// don't include a json placeholder
540
			return;
541
		}
542
543
		$frm_settings = FrmAppHelper::get_settings();
544
545
		if ( $frm_settings->use_html ) {
546
			self::add_placeholder_to_input( $field, $add_html );
547
		} else {
548
			self::add_frmval_to_input( $field, $add_html );
549
550
			$class[] = 'frm_toggle_default';
551
552
			if ( $field['value'] == $field['default_value'] ) {
553
				$class[] = 'frm_default';
554
			}
555
		}
556
	}
557
558
	private static function prepare_default_value( $field ) {
559
		$is_placeholder_field = FrmFieldsHelper::is_placeholder_field_type( $field['type'] );
560
		$is_combo_field = in_array( $field['type'], array( 'address', 'credit_card' ) );
561
562
		$default_value = $field['default_value'];
563
		if ( empty( $default_value ) ) {
564
			if ( $is_placeholder_field && ! $is_combo_field ) {
565
				$default_value = self::get_default_value_from_name( $field );
566
			}
567
		}
568
569
		return $default_value;
570
	}
571
572
	/**
573
	 * If the label position is "inside",
574
	 * get the label to use as the placeholder
575
	 *
576
	 * @since 2.04.02
577
	 */
578
	public static function get_default_value_from_name( $field ) {
579
		$position = FrmStylesController::get_style_val( 'position', $field['form_id'] );
580
		if ( $position == 'inside' ) {
581
			$default_value = $field['name'];
582
		} else {
583
			$default_value = '';
584
		}
585
		return $default_value;
586
	}
587
588
	/**
589
	 * use HMTL5 placeholder with js fallback
590
	 */
591
	private static function add_placeholder_to_input( $field, &$add_html ) {
592
		if ( FrmFieldsHelper::is_placeholder_field_type( $field['type'] ) ) {
593
			$add_html['placeholder'] = 'placeholder="' . esc_attr( $field['default_value'] ) . '"';
594
			wp_enqueue_script('jquery-placeholder');
595
		}
596
	}
597
598
	private static function add_frmval_to_input( $field, &$add_html ) {
599
		$val = str_replace( array( "\r\n", "\n" ), '\r', addslashes( str_replace( '&#039;', "'", esc_attr( $field['default_value'] ) ) ) );
600
		if ( $val != '' ) {
601
			$add_html['data-frmval'] = 'data-frmval="' . esc_attr( $val ) . '"';
602
		}
603
	}
604
605
	private static function add_validation_messages( $field, array &$add_html ) {
606 View Code Duplication
		if ( FrmField::is_required( $field ) ) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
607
			$required_message = FrmFieldsHelper::get_error_msg( $field, 'blank' );
608
			$add_html['data-reqmsg'] = 'data-reqmsg="' . esc_attr( $required_message ) . '"';
609
		}
610
611 View Code Duplication
		if ( ! FrmField::is_option_empty( $field, 'invalid' ) ) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
612
			$invalid_message = FrmFieldsHelper::get_error_msg( $field, 'invalid' );
613
			$add_html['data-invmsg'] = 'data-invmsg="' . esc_attr( $invalid_message ) . '"';
614
		}
615
	}
616
617
    private static function add_shortcodes_to_html( $field, array &$add_html ) {
618
        if ( FrmField::is_option_empty( $field, 'shortcodes' ) ) {
619
            return;
620
        }
621
622
        foreach ( $field['shortcodes'] as $k => $v ) {
623
            if ( 'opt' === $k ) {
624
                continue;
625
            }
626
627
            if ( is_numeric($k) && strpos($v, '=') ) {
628
                $add_html[] = $v;
629
            } else if ( ! empty( $k ) && isset( $add_html[ $k ] ) ) {
630
				$add_html[ $k ] = str_replace( $k . '="', $k . '="' . $v, $add_html[ $k ] );
631
            } else {
632
				$add_html[ $k ] = $k . '="' . esc_attr( $v ) . '"';
633
            }
634
635
            unset($k, $v);
636
        }
637
    }
638
639
    public static function check_value( $opt, $opt_key, $field ) {
640
        if ( is_array( $opt ) ) {
641
            if ( FrmField::is_option_true( $field, 'separate_value' ) ) {
642
                $opt = isset( $opt['value'] ) ? $opt['value'] : ( isset( $opt['label'] ) ? $opt['label'] : reset( $opt ) );
643
            } else {
644
                $opt = isset( $opt['label'] ) ? $opt['label'] : reset( $opt );
645
            }
646
        }
647
        return $opt;
648
    }
649
650
	public static function check_label( $opt ) {
651 View Code Duplication
        if ( is_array($opt) ) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
652
            $opt = (isset($opt['label']) ? $opt['label'] : reset($opt));
653
        }
654
655
        return $opt;
656
    }
657
}
658