Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/wp-conte.../plugins/wpforms-.../includes/fields
File: class-base.php
}
[2500] Fix | Delete
[2501] Fix | Delete
$multiple = ! empty( $field['multiple'] ) ? ' multiple' : '';
[2502] Fix | Delete
$placeholder = ! empty( $field['placeholder'] ) ? $field['placeholder'] : '';
[2503] Fix | Delete
[2504] Fix | Delete
$output = sprintf(
[2505] Fix | Delete
'<select class="%s"%s readonly>',
[2506] Fix | Delete
wpforms_sanitize_classes( $list_class, true ),
[2507] Fix | Delete
$multiple
[2508] Fix | Delete
);
[2509] Fix | Delete
[2510] Fix | Delete
// Optional placeholder.
[2511] Fix | Delete
if ( ! empty( $placeholder ) ) {
[2512] Fix | Delete
$output .= sprintf(
[2513] Fix | Delete
'<option value="" class="placeholder">%s</option>',
[2514] Fix | Delete
esc_html( $placeholder )
[2515] Fix | Delete
);
[2516] Fix | Delete
}
[2517] Fix | Delete
[2518] Fix | Delete
// Build the select options.
[2519] Fix | Delete
foreach ( $values as $key => $value ) {
[2520] Fix | Delete
[2521] Fix | Delete
$default = isset( $value['default'] ) ? (bool) $value['default'] : false;
[2522] Fix | Delete
$selected = ! empty( $placeholder ) && empty( $multiple ) ? '' : selected( true, $default, false );
[2523] Fix | Delete
[2524] Fix | Delete
$label = $this->get_choices_label( $value['label'] ?? '', $key + 1, $field );
[2525] Fix | Delete
$label .= ! empty( $field['show_price_after_labels'] ) && isset( $value['value'] ) ? ' - ' . wpforms_format_amount( wpforms_sanitize_amount( $value['value'] ), true ) : '';
[2526] Fix | Delete
[2527] Fix | Delete
$output .= sprintf(
[2528] Fix | Delete
'<option value="%2$s" %1$s>%2$s</option>',
[2529] Fix | Delete
$selected,
[2530] Fix | Delete
esc_html( $label )
[2531] Fix | Delete
);
[2532] Fix | Delete
}
[2533] Fix | Delete
[2534] Fix | Delete
$output .= '</select>';
[2535] Fix | Delete
} else {
[2536] Fix | Delete
// Normal checkbox/radio-based fields.
[2537] Fix | Delete
$output = sprintf(
[2538] Fix | Delete
'<ul class="%s" style="%s">',
[2539] Fix | Delete
wpforms_sanitize_classes( $list_class, true ),
[2540] Fix | Delete
esc_attr( $inline_style )
[2541] Fix | Delete
);
[2542] Fix | Delete
[2543] Fix | Delete
foreach ( $values as $key => $value ) {
[2544] Fix | Delete
[2545] Fix | Delete
$default = isset( $value['default'] ) ? $value['default'] : '';
[2546] Fix | Delete
$selected = checked( '1', $default, false );
[2547] Fix | Delete
$input_class = [];
[2548] Fix | Delete
$item_class = [];
[2549] Fix | Delete
[2550] Fix | Delete
if ( ! empty( $value['default'] ) ) {
[2551] Fix | Delete
$item_class[] = 'wpforms-selected';
[2552] Fix | Delete
}
[2553] Fix | Delete
[2554] Fix | Delete
if ( $with_images ) {
[2555] Fix | Delete
$item_class[] = 'wpforms-image-choices-item';
[2556] Fix | Delete
}
[2557] Fix | Delete
[2558] Fix | Delete
if ( $with_icons ) {
[2559] Fix | Delete
$item_class[] = 'wpforms-icon-choices-item';
[2560] Fix | Delete
}
[2561] Fix | Delete
[2562] Fix | Delete
$output .= sprintf(
[2563] Fix | Delete
'<li class="%s">',
[2564] Fix | Delete
wpforms_sanitize_classes( $item_class, true )
[2565] Fix | Delete
);
[2566] Fix | Delete
[2567] Fix | Delete
$label = $this->get_choices_label( $value['label'] ?? '', $key + 1, $field );
[2568] Fix | Delete
$label .= ! empty( $field['show_price_after_labels'] ) && isset( $value['value'] ) ? ' - ' . wpforms_format_amount( wpforms_sanitize_amount( $value['value'] ), true ) : '';
[2569] Fix | Delete
[2570] Fix | Delete
if ( $with_images ) {
[2571] Fix | Delete
[2572] Fix | Delete
if ( in_array( $field['choices_images_style'], [ 'modern', 'classic' ], true ) ) {
[2573] Fix | Delete
$input_class[] = 'wpforms-screen-reader-element';
[2574] Fix | Delete
}
[2575] Fix | Delete
[2576] Fix | Delete
$output .= '<label>';
[2577] Fix | Delete
[2578] Fix | Delete
$output .= sprintf(
[2579] Fix | Delete
'<span class="wpforms-image-choices-image"><img src="%s" alt="%s"%s></span>',
[2580] Fix | Delete
! empty( $value['image'] ) ? esc_url( $value['image'] ) : WPFORMS_PLUGIN_URL . 'assets/images/builder/placeholder-200x125.svg',
[2581] Fix | Delete
esc_attr( $label ),
[2582] Fix | Delete
! empty( $value['label'] ) ? ' title="' . esc_attr( $value['label'] ) . '"' : ''
[2583] Fix | Delete
);
[2584] Fix | Delete
[2585] Fix | Delete
if ( $field['choices_images_style'] === 'none' ) {
[2586] Fix | Delete
$output .= '<br>';
[2587] Fix | Delete
}
[2588] Fix | Delete
[2589] Fix | Delete
$output .= sprintf(
[2590] Fix | Delete
'<input type="%s" class="%s" %s readonly>',
[2591] Fix | Delete
$type,
[2592] Fix | Delete
wpforms_sanitize_classes( $input_class, true ),
[2593] Fix | Delete
$selected
[2594] Fix | Delete
);
[2595] Fix | Delete
[2596] Fix | Delete
$output .= '<span class="wpforms-image-choices-label">' . wp_kses( $label, $allowed_tags ) . '</span>';
[2597] Fix | Delete
[2598] Fix | Delete
$output .= '</label>';
[2599] Fix | Delete
[2600] Fix | Delete
} elseif ( $with_icons ) {
[2601] Fix | Delete
[2602] Fix | Delete
$icon = isset( $value['icon'] ) && ! wpforms_is_empty_string( $value['icon'] ) ? $value['icon'] : IconChoices::DEFAULT_ICON;
[2603] Fix | Delete
$icon_style = ! empty( $value['icon_style'] ) ? $value['icon_style'] : IconChoices::DEFAULT_ICON_STYLE;
[2604] Fix | Delete
[2605] Fix | Delete
if ( in_array( $field['choices_icons_style'], [ 'default', 'modern', 'classic' ], true ) ) {
[2606] Fix | Delete
$input_class[] = 'wpforms-screen-reader-element';
[2607] Fix | Delete
}
[2608] Fix | Delete
[2609] Fix | Delete
$output .= '<label>';
[2610] Fix | Delete
[2611] Fix | Delete
$output .= sprintf(
[2612] Fix | Delete
'<span class="wpforms-icon-choices-icon">
[2613] Fix | Delete
<i class="ic-fa-%s ic-fa-%s"></i>
[2614] Fix | Delete
<span class="wpforms-icon-choices-icon-bg"></span>
[2615] Fix | Delete
</span>',
[2616] Fix | Delete
esc_attr( $icon_style ),
[2617] Fix | Delete
esc_attr( $icon )
[2618] Fix | Delete
);
[2619] Fix | Delete
[2620] Fix | Delete
$output .= sprintf(
[2621] Fix | Delete
'<input type="%1$s" class="%2$s" %3$s readonly>',
[2622] Fix | Delete
$type,
[2623] Fix | Delete
wpforms_sanitize_classes( $input_class, true ),
[2624] Fix | Delete
$selected
[2625] Fix | Delete
);
[2626] Fix | Delete
[2627] Fix | Delete
$output .= '<span class="wpforms-icon-choices-label">' . wp_kses( $label, $allowed_tags ) . '</span>';
[2628] Fix | Delete
[2629] Fix | Delete
$output .= '</label>';
[2630] Fix | Delete
[2631] Fix | Delete
} else {
[2632] Fix | Delete
$output .= sprintf(
[2633] Fix | Delete
'<input type="%s" %s readonly> %s',
[2634] Fix | Delete
$type,
[2635] Fix | Delete
$selected,
[2636] Fix | Delete
wp_kses( $label, $allowed_tags )
[2637] Fix | Delete
);
[2638] Fix | Delete
}
[2639] Fix | Delete
[2640] Fix | Delete
$output .= '</li>';
[2641] Fix | Delete
}
[2642] Fix | Delete
[2643] Fix | Delete
$output .= '</ul>';
[2644] Fix | Delete
[2645] Fix | Delete
/*
[2646] Fix | Delete
* Contains more than 20/250 items, include a note about a limited subset of results displayed.
[2647] Fix | Delete
*/
[2648] Fix | Delete
if ( $total > $slice_size ) {
[2649] Fix | Delete
$output .= '<div class="wpforms-alert-dynamic wpforms-alert wpforms-alert-warning">';
[2650] Fix | Delete
$output .= sprintf(
[2651] Fix | Delete
wp_kses( /* translators: %s - total amount of choices. */
[2652] Fix | Delete
__( 'Showing the first %1$s choices.<br> All %2$s choices will be displayed when viewing the form.', 'wpforms-lite' ),
[2653] Fix | Delete
[
[2654] Fix | Delete
'br' => [],
[2655] Fix | Delete
]
[2656] Fix | Delete
),
[2657] Fix | Delete
$slice_size,
[2658] Fix | Delete
$total
[2659] Fix | Delete
);
[2660] Fix | Delete
$output .= '</div>';
[2661] Fix | Delete
}
[2662] Fix | Delete
}
[2663] Fix | Delete
break;
[2664] Fix | Delete
[2665] Fix | Delete
case 'quantity':
[2666] Fix | Delete
$first_item = ! empty( $field['min_quantity'] ) ? $field['min_quantity'] : 0;
[2667] Fix | Delete
$class .= $this->is_payment_quantities_enabled( $field ) ? '' : ' wpforms-hidden';
[2668] Fix | Delete
[2669] Fix | Delete
$output = sprintf(
[2670] Fix | Delete
'<select class="quantity-input %1$s" readonly>',
[2671] Fix | Delete
esc_attr( $class )
[2672] Fix | Delete
);
[2673] Fix | Delete
$output .= sprintf(
[2674] Fix | Delete
'<option>%1$s</option>',
[2675] Fix | Delete
esc_html( $first_item )
[2676] Fix | Delete
);
[2677] Fix | Delete
$output .= '</select>';
[2678] Fix | Delete
break;
[2679] Fix | Delete
}
[2680] Fix | Delete
[2681] Fix | Delete
if ( ! $echo ) {
[2682] Fix | Delete
return $output;
[2683] Fix | Delete
}
[2684] Fix | Delete
[2685] Fix | Delete
echo $output; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
[2686] Fix | Delete
}
[2687] Fix | Delete
[2688] Fix | Delete
/**
[2689] Fix | Delete
* Create a new field in the admin AJAX editor.
[2690] Fix | Delete
*
[2691] Fix | Delete
* @since 1.0.0
[2692] Fix | Delete
*/
[2693] Fix | Delete
public function field_new() {
[2694] Fix | Delete
[2695] Fix | Delete
// Run a security check.
[2696] Fix | Delete
if ( ! check_ajax_referer( 'wpforms-builder', 'nonce', false ) ) {
[2697] Fix | Delete
wp_send_json_error( esc_html__( 'Your session expired. Please reload the builder.', 'wpforms-lite' ) );
[2698] Fix | Delete
}
[2699] Fix | Delete
[2700] Fix | Delete
// Check for permissions.
[2701] Fix | Delete
if ( ! wpforms_current_user_can( 'edit_forms' ) ) {
[2702] Fix | Delete
wp_send_json_error( esc_html__( 'You are not allowed to perform this action.', 'wpforms-lite' ) );
[2703] Fix | Delete
}
[2704] Fix | Delete
[2705] Fix | Delete
// Check for form ID.
[2706] Fix | Delete
if ( empty( $_POST['id'] ) ) {
[2707] Fix | Delete
wp_send_json_error( esc_html__( 'No form ID found', 'wpforms-lite' ) );
[2708] Fix | Delete
}
[2709] Fix | Delete
[2710] Fix | Delete
// Check for field type to add.
[2711] Fix | Delete
if ( empty( $_POST['type'] ) ) {
[2712] Fix | Delete
wp_send_json_error( esc_html__( 'No field type found', 'wpforms-lite' ) );
[2713] Fix | Delete
}
[2714] Fix | Delete
[2715] Fix | Delete
// Grab field data.
[2716] Fix | Delete
$field_args = ! empty( $_POST['defaults'] ) && is_array( $_POST['defaults'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['defaults'] ) ) : [];
[2717] Fix | Delete
$field_type = sanitize_key( $_POST['type'] );
[2718] Fix | Delete
$field_id = wpforms()->get( 'form' )->next_field_id( absint( $_POST['id'] ) );
[2719] Fix | Delete
$field = [
[2720] Fix | Delete
'id' => $field_id,
[2721] Fix | Delete
'type' => $field_type,
[2722] Fix | Delete
'label' => $this->name,
[2723] Fix | Delete
'description' => '',
[2724] Fix | Delete
];
[2725] Fix | Delete
$field = wp_parse_args( $field_args, $field );
[2726] Fix | Delete
$field = apply_filters( 'wpforms_field_new_default', $field );
[2727] Fix | Delete
$field_required = apply_filters( 'wpforms_field_new_required', '', $field );
[2728] Fix | Delete
$field_class = apply_filters( 'wpforms_field_new_class', '', $field );
[2729] Fix | Delete
$field_helper_hide = ! empty( $_COOKIE['wpforms_field_helper_hide'] );
[2730] Fix | Delete
[2731] Fix | Delete
// Field types that default to required.
[2732] Fix | Delete
if ( ! empty( $field_required ) ) {
[2733] Fix | Delete
$field_required = 'required';
[2734] Fix | Delete
$field['required'] = '1';
[2735] Fix | Delete
}
[2736] Fix | Delete
[2737] Fix | Delete
// Build Preview.
[2738] Fix | Delete
ob_start();
[2739] Fix | Delete
$this->field_preview( $field );
[2740] Fix | Delete
$prev = ob_get_clean();
[2741] Fix | Delete
$preview = sprintf(
[2742] Fix | Delete
'<div class="wpforms-field wpforms-field-%1$s %2$s %3$s" id="wpforms-field-%4$s" data-field-id="%4$s" data-field-type="%5$s">',
[2743] Fix | Delete
esc_attr( $field_type ),
[2744] Fix | Delete
esc_attr( $field_required ),
[2745] Fix | Delete
esc_attr( $field_class ),
[2746] Fix | Delete
wpforms_validate_field_id( $field['id'] ),
[2747] Fix | Delete
esc_attr( $field_type )
[2748] Fix | Delete
);
[2749] Fix | Delete
[2750] Fix | Delete
if ( apply_filters( 'wpforms_field_new_display_duplicate_button', true, $field ) ) {
[2751] Fix | Delete
$preview .= sprintf( '<a href="#" class="wpforms-field-duplicate" title="%s"><i class="fa fa-files-o" aria-hidden="true"></i></a>', esc_attr__( 'Duplicate Field', 'wpforms-lite' ) );
[2752] Fix | Delete
}
[2753] Fix | Delete
[2754] Fix | Delete
$preview .= sprintf( '<a href="#" class="wpforms-field-delete" title="%s"><i class="fa fa-trash-o"></i></a>', esc_attr__( 'Delete Field', 'wpforms-lite' ) );
[2755] Fix | Delete
[2756] Fix | Delete
if ( ! $field_helper_hide ) {
[2757] Fix | Delete
$preview .= sprintf(
[2758] Fix | Delete
'<div class="wpforms-field-helper">
[2759] Fix | Delete
<span class="wpforms-field-helper-edit">%s</span>
[2760] Fix | Delete
<span class="wpforms-field-helper-drag">%s</span>
[2761] Fix | Delete
<span class="wpforms-field-helper-hide" title="%s">
[2762] Fix | Delete
<i class="fa fa-times-circle" aria-hidden="true"></i>
[2763] Fix | Delete
</span>
[2764] Fix | Delete
</div>',
[2765] Fix | Delete
esc_html__( 'Click to Edit', 'wpforms-lite' ),
[2766] Fix | Delete
esc_html__( 'Drag to Reorder', 'wpforms-lite' ),
[2767] Fix | Delete
esc_html__( 'Hide Helper', 'wpforms-lite' )
[2768] Fix | Delete
);
[2769] Fix | Delete
}
[2770] Fix | Delete
[2771] Fix | Delete
$preview .= $prev;
[2772] Fix | Delete
$preview .= '</div>';
[2773] Fix | Delete
[2774] Fix | Delete
// Build Options.
[2775] Fix | Delete
$class = apply_filters( 'wpforms_builder_field_option_class', '', $field );
[2776] Fix | Delete
$options = sprintf(
[2777] Fix | Delete
'<div class="wpforms-field-option wpforms-field-option-%1$s %2$s" id="wpforms-field-option-%3$s" data-field-id="%3$s">',
[2778] Fix | Delete
sanitize_html_class( $field['type'] ),
[2779] Fix | Delete
wpforms_sanitize_classes( $class ),
[2780] Fix | Delete
wpforms_validate_field_id( $field['id'] )
[2781] Fix | Delete
);
[2782] Fix | Delete
[2783] Fix | Delete
$options .= sprintf(
[2784] Fix | Delete
'<input type="hidden" name="fields[%1$s][id]" value="%1$s" class="wpforms-field-option-hidden-id">',
[2785] Fix | Delete
wpforms_validate_field_id( $field['id'] )
[2786] Fix | Delete
);
[2787] Fix | Delete
$options .= sprintf(
[2788] Fix | Delete
'<input type="hidden" name="fields[%s][type]" value="%s" class="wpforms-field-option-hidden-type">',
[2789] Fix | Delete
wpforms_validate_field_id( $field['id'] ),
[2790] Fix | Delete
esc_attr( $field['type'] )
[2791] Fix | Delete
);
[2792] Fix | Delete
[2793] Fix | Delete
ob_start();
[2794] Fix | Delete
$this->field_options( $field );
[2795] Fix | Delete
$options .= ob_get_clean();
[2796] Fix | Delete
$options .= '</div>';
[2797] Fix | Delete
[2798] Fix | Delete
// Prepare to return compiled results.
[2799] Fix | Delete
wp_send_json_success(
[2800] Fix | Delete
[
[2801] Fix | Delete
'form_id' => absint( $_POST['id'] ),
[2802] Fix | Delete
'field' => $field,
[2803] Fix | Delete
'preview' => $preview,
[2804] Fix | Delete
'options' => $options,
[2805] Fix | Delete
]
[2806] Fix | Delete
);
[2807] Fix | Delete
}
[2808] Fix | Delete
[2809] Fix | Delete
/**
[2810] Fix | Delete
* Display the field input elements on the frontend
[2811] Fix | Delete
* according to the render engine setting.
[2812] Fix | Delete
*
[2813] Fix | Delete
* @since 1.8.1
[2814] Fix | Delete
*
[2815] Fix | Delete
* @param array $field Field data and settings.
[2816] Fix | Delete
* @param array $field_atts Field attributes (deprecated).
[2817] Fix | Delete
* @param array $form_data Form data and settings.
[2818] Fix | Delete
*
[2819] Fix | Delete
* @noinspection PhpUnusedParameterInspection
[2820] Fix | Delete
*/
[2821] Fix | Delete
public function field_display_proxy( $field, $field_atts, $form_data ) {
[2822] Fix | Delete
[2823] Fix | Delete
$render_engine = wpforms_get_render_engine();
[2824] Fix | Delete
$method = "field_display_{$render_engine}";
[2825] Fix | Delete
[2826] Fix | Delete
if ( ! method_exists( $this, $method ) ) {
[2827] Fix | Delete
[2828] Fix | Delete
// Something is wrong, this should never occur.
[2829] Fix | Delete
// Let's display classic field in this case.
[2830] Fix | Delete
$method = 'fields_display_classic';
[2831] Fix | Delete
}
[2832] Fix | Delete
[2833] Fix | Delete
$this->$method( $field, $form_data );
[2834] Fix | Delete
}
[2835] Fix | Delete
[2836] Fix | Delete
/**
[2837] Fix | Delete
* Display the field using classic rendering.
[2838] Fix | Delete
*
[2839] Fix | Delete
* @since 1.0.0
[2840] Fix | Delete
* @since 1.5.0 Converted to abstract method, as it's required for all fields.
[2841] Fix | Delete
*
[2842] Fix | Delete
* @param array $field Field data and settings.
[2843] Fix | Delete
* @param array $field_atts Field attributes (deprecated).
[2844] Fix | Delete
* @param array $form_data Form data and settings.
[2845] Fix | Delete
*/
[2846] Fix | Delete
abstract public function field_display( $field, $field_atts, $form_data );
[2847] Fix | Delete
[2848] Fix | Delete
/**
[2849] Fix | Delete
* Display the field using classic rendering.
[2850] Fix | Delete
*
[2851] Fix | Delete
* @since 1.8.1
[2852] Fix | Delete
*
[2853] Fix | Delete
* @param array $field Field data and settings.
[2854] Fix | Delete
* @param array $form_data Form data and settings.
[2855] Fix | Delete
*/
[2856] Fix | Delete
protected function field_display_classic( $field, $form_data ) {
[2857] Fix | Delete
[2858] Fix | Delete
// The classic view is the same good old `field_display`.
[2859] Fix | Delete
$this->field_display( $field, [], $form_data );
[2860] Fix | Delete
}
[2861] Fix | Delete
[2862] Fix | Delete
/**
[2863] Fix | Delete
* Display the field using modern rendering.
[2864] Fix | Delete
*
[2865] Fix | Delete
* @since 1.8.1
[2866] Fix | Delete
*
[2867] Fix | Delete
* @param array $field Field data and settings.
[2868] Fix | Delete
* @param array $form_data Form data and settings.
[2869] Fix | Delete
*/
[2870] Fix | Delete
protected function field_display_modern( $field, $form_data ) {
[2871] Fix | Delete
[2872] Fix | Delete
// Maybe call the method from the field's modern frontend class.
[2873] Fix | Delete
if ( ! empty( $this->frontend_obj ) && method_exists( $this->frontend_obj, 'field_display_modern' ) ) {
[2874] Fix | Delete
$this->frontend_obj->field_display_modern( $field, $form_data );
[2875] Fix | Delete
[2876] Fix | Delete
return;
[2877] Fix | Delete
}
[2878] Fix | Delete
[2879] Fix | Delete
// By default, the modern view is the same as the classic.
[2880] Fix | Delete
// In this way, we will implement modern only for the fields,
[2881] Fix | Delete
// where it is needed.
[2882] Fix | Delete
$this->field_display_classic( $field, $form_data );
[2883] Fix | Delete
}
[2884] Fix | Delete
[2885] Fix | Delete
[2886] Fix | Delete
/**
[2887] Fix | Delete
* Display field input errors if present.
[2888] Fix | Delete
*
[2889] Fix | Delete
* @since 1.3.7
[2890] Fix | Delete
*
[2891] Fix | Delete
* @param string $key Input key.
[2892] Fix | Delete
* @param array $field Field data and settings.
[2893] Fix | Delete
*/
[2894] Fix | Delete
public function field_display_error( $key, $field ) {
[2895] Fix | Delete
[2896] Fix | Delete
// Need an error.
[2897] Fix | Delete
if ( empty( $field['properties']['error']['value'][ $key ] ) ) {
[2898] Fix | Delete
return;
[2899] Fix | Delete
}
[2900] Fix | Delete
[2901] Fix | Delete
printf(
[2902] Fix | Delete
'<label class="wpforms-error" for="%s">%s</label>',
[2903] Fix | Delete
esc_attr( $field['properties']['inputs'][ $key ]['id'] ),
[2904] Fix | Delete
esc_html( $field['properties']['error']['value'][ $key ] )
[2905] Fix | Delete
);
[2906] Fix | Delete
}
[2907] Fix | Delete
[2908] Fix | Delete
/**
[2909] Fix | Delete
* Display field input sublabel if present.
[2910] Fix | Delete
*
[2911] Fix | Delete
* @since 1.3.7
[2912] Fix | Delete
* @since 1.8.9 Ability to skip for attribute.
[2913] Fix | Delete
*
[2914] Fix | Delete
* @param string $key Input key.
[2915] Fix | Delete
* @param string $position Sublabel position.
[2916] Fix | Delete
* @param array $field Field data and settings.
[2917] Fix | Delete
*/
[2918] Fix | Delete
public function field_display_sublabel( $key, $position, $field ) {
[2919] Fix | Delete
[2920] Fix | Delete
// Need a sublabel value.
[2921] Fix | Delete
if ( empty( $field['properties']['inputs'][ $key ]['sublabel']['value'] ) ) {
[2922] Fix | Delete
return;
[2923] Fix | Delete
}
[2924] Fix | Delete
[2925] Fix | Delete
$field_position = ! empty( $field['properties']['inputs'][ $key ]['sublabel']['position'] ) ? $field['properties']['inputs'][ $key ]['sublabel']['position'] : 'after';
[2926] Fix | Delete
[2927] Fix | Delete
// Used to prevent from displaying sublabel twice.
[2928] Fix | Delete
if ( $field_position !== $position ) {
[2929] Fix | Delete
return;
[2930] Fix | Delete
}
[2931] Fix | Delete
[2932] Fix | Delete
$classes = [
[2933] Fix | Delete
'wpforms-field-sublabel',
[2934] Fix | Delete
$field_position,
[2935] Fix | Delete
];
[2936] Fix | Delete
[2937] Fix | Delete
if ( ! empty( $field['properties']['inputs'][ $key ]['sublabel']['hidden'] ) ) {
[2938] Fix | Delete
$classes[] = 'wpforms-sublabel-hide';
[2939] Fix | Delete
}
[2940] Fix | Delete
[2941] Fix | Delete
/**
[2942] Fix | Delete
* Allow to skip the `for` attribute inside the label.
[2943] Fix | Delete
*
[2944] Fix | Delete
* @since 1.8.9
[2945] Fix | Delete
*
[2946] Fix | Delete
* @param bool $skip Whether to skip the `for` attribute.
[2947] Fix | Delete
* @param string $key Input key.
[2948] Fix | Delete
* @param array $field Field data and settings.
[2949] Fix | Delete
*/
[2950] Fix | Delete
$skip_for = (bool) apply_filters( 'wpforms_field_display_sublabel_skip_for', false, $key, $field );
[2951] Fix | Delete
[2952] Fix | Delete
/**
[2953] Fix | Delete
* Allow to set custom for attribute to the label.
[2954] Fix | Delete
*
[2955] Fix | Delete
* @since 1.8.9
[2956] Fix | Delete
*
[2957] Fix | Delete
* @param string $value Actual for attribute value.
[2958] Fix | Delete
* @param string $key Input key.
[2959] Fix | Delete
* @param array $field Field data and settings.
[2960] Fix | Delete
*/
[2961] Fix | Delete
$for = apply_filters( 'wpforms_field_display_sublabel_for', $field['properties']['inputs'][ $key ]['id'], $key, $field );
[2962] Fix | Delete
[2963] Fix | Delete
printf(
[2964] Fix | Delete
'<label %1$s class="%2$s">%3$s</label>',
[2965] Fix | Delete
! $skip_for ? sprintf( 'for="%s"', esc_attr( $for ) ) : '',
[2966] Fix | Delete
wpforms_sanitize_classes( $classes, true ),
[2967] Fix | Delete
esc_html( $field['properties']['inputs'][ $key ]['sublabel']['value'] )
[2968] Fix | Delete
);
[2969] Fix | Delete
}
[2970] Fix | Delete
[2971] Fix | Delete
/**
[2972] Fix | Delete
* Validate field on form submit.
[2973] Fix | Delete
*
[2974] Fix | Delete
* @since 1.0.0
[2975] Fix | Delete
*
[2976] Fix | Delete
* @param int $field_id Field ID.
[2977] Fix | Delete
* @param mixed $field_submit Submitted field value (raw data).
[2978] Fix | Delete
* @param array $form_data Form data and settings.
[2979] Fix | Delete
*/
[2980] Fix | Delete
public function validate( $field_id, $field_submit, $form_data ) {
[2981] Fix | Delete
[2982] Fix | Delete
// Basic required check - If field is marked as required, check for entry data.
[2983] Fix | Delete
if ( ! empty( $form_data['fields'][ $field_id ]['required'] ) && empty( $field_submit ) && '0' !== (string) $field_submit ) {
[2984] Fix | Delete
wpforms()->get( 'process' )->errors[ $form_data['id'] ][ $field_id ] = wpforms_get_required_label();
[2985] Fix | Delete
}
[2986] Fix | Delete
}
[2987] Fix | Delete
[2988] Fix | Delete
/**
[2989] Fix | Delete
* Format and sanitize field.
[2990] Fix | Delete
*
[2991] Fix | Delete
* @since 1.0.0
[2992] Fix | Delete
*
[2993] Fix | Delete
* @param int $field_id Field ID.
[2994] Fix | Delete
* @param mixed $field_submit Field value that was submitted.
[2995] Fix | Delete
* @param array $form_data Form data and settings.
[2996] Fix | Delete
*/
[2997] Fix | Delete
public function format( $field_id, $field_submit, $form_data ) {
[2998] Fix | Delete
[2999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function