: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
if ( '.' !== $symbols_pattern || '*' !== $length_pattern ) {
esc_attr( $symbols_pattern ),
esc_attr( $length_pattern )
$conditional_logic_attr = '';
if ( 'on' === $conditional_logic && ! empty( $conditional_logic_rules ) ) {
$option_search = array( '[', ']' );
$option_replace = array( '[', ']' );
$conditional_logic_rules = str_replace( $option_search, $option_replace, $conditional_logic_rules );
$condition_rows = json_decode( $conditional_logic_rules );
foreach ( $condition_rows as $condition_row ) {
$condition_value = isset( $condition_row->value ) ? $condition_row->value : '';
$condition_value = trim( $condition_value );
$condition_row->condition,
if ( ! empty( $ruleset ) ) {
$json = json_encode( $ruleset );
$relation = $conditional_logic_relation === 'off' ? 'any' : 'all';
$conditional_logic_attr = sprintf(
' data-conditional-logic="%1$s" data-conditional-relation="%2$s"',
'<textarea name="et_pb_contact_%3$s_%2$s" id="et_pb_contact_%3$s_%2$s" class="et_pb_contact_message input" data-required_mark="%6$s" data-field_type="%4$s" data-original_id="%3$s" placeholder="%5$s"%7$s>%1$s</textarea>',
( isset( $_POST['et_pb_contact_' . $field_id . '_' . $current_module_num] ) ? esc_html( sanitize_text_field( $_POST['et_pb_contact_' . $field_id . '_' . $current_module_num] ) ) : '' ),
esc_attr( $current_module_num ),
esc_attr( $field_title ),
'off' === $required_mark ? 'not_required' : 'required',
$multi_view->render_attrs( array(
'placeholder' => '{{field_title}}',
if ( 'email' === $field_type ) {
'<input type="text" id="et_pb_contact_%3$s_%2$s" class="input" value="%1$s" name="et_pb_contact_%3$s_%2$s" data-required_mark="%6$s" data-field_type="%4$s" data-original_id="%3$s" placeholder="%5$s"%7$s%8$s%9$s%10$s>',
( isset( $_POST['et_pb_contact_' . $field_id . '_' . $current_module_num] ) ? esc_attr( sanitize_text_field( $_POST['et_pb_contact_' . $field_id . '_' . $current_module_num] ) ) : '' ),
esc_attr( $current_module_num ),
esc_attr( $field_title ),
'off' === $required_mark ? 'not_required' : 'required',
$multi_view->render_attrs( array(
'placeholder' => '{{field_title}}',
if ( ! $checkbox_options ) {
$is_checked = ! empty( $checkbox_checked ) && 'on' === $checkbox_checked;
$checkbox_options = sprintf(
'[{"value":"%1$s","checked":%2$s}]',
esc_attr( $field_title ),
$option_search = array( '[', ']' );
$option_replace = array( '[', ']' );
$checkbox_options = str_replace( $option_search, $option_replace, $checkbox_options );
$checkbox_options = json_decode( $checkbox_options );
foreach ( $checkbox_options as $index => $option ) {
$is_checked = 1 === $option->checked ? true : false;
$option_value = wp_strip_all_tags( $option->value );
$drag_id = isset( $option->dragID ) ? $option->dragID : '';
$option_id = isset( $option->id ) ? $option->id : $drag_id;
$option_id = sprintf( ' data-id="%1$s"', esc_attr( $option_id ) );
$option_label = wp_strip_all_tags( $option->value );
if ( ! empty( $option->link_url ) ) {
$link_text = isset( $option->link_text ) ? $option->link_text : '';
$option_link = sprintf( ' <a href="%1$s" target="_blank">%2$s</a>', esc_url( $option->link_url ), esc_html( $link_text ) );
// The required field needs a value, use link information if the option value is empty
if ( 'off' !== $required_mark && empty( $option_value ) && ! empty( $option_link ) ){
$option_value = isset( $option->link_text ) && ! empty( $option->link_text ) ? esc_html( $option->link_text ) : esc_url( $option->link_url );
'<span class="et_pb_contact_field_checkbox">
<input type="checkbox" id="et_pb_contact_%1$s_%5$s_%3$s" class="input" value="%2$s"%4$s%6$s>
<label for="et_pb_contact_%1$s_%5$s_%3$s"><i></i>%7$s%8$s</label>
esc_attr( $option_value ),
$is_checked ? ' checked="checked"' : '',
esc_attr( $render_count ), // #5
'<input class="et_pb_checkbox_handle" type="hidden" name="et_pb_contact_%1$s_%4$s" data-required_mark="%3$s" data-field_type="%2$s" data-original_id="%1$s">
<span class="et_pb_contact_field_options_wrapper">
<span class="et_pb_contact_field_options_title"%7$s>%5$s</span>
<span class="et_pb_contact_field_options_list">%6$s</span>
'off' === $required_mark ? 'not_required' : 'required',
esc_attr( $current_module_num ),
esc_html( $field_title ),
$multi_view->render_attrs( array(
'content' => '{{field_title}}',
$option_search = array( '[', ']' );
$option_replace = array( '[', ']' );
$radio_options = str_replace( $option_search, $option_replace, $radio_options );
$radio_options = json_decode( $radio_options );
foreach ( $radio_options as $index => $option ) {
$is_checked = ( isset( $option->checked ) && 1 === $option->checked ) ? true : false;
$drag_id = isset( $option->dragID ) ? $option->dragID : '';
$option_id = isset( $option->id ) ? $option->id : $drag_id;
$option_id = sprintf( ' data-id="%1$s"', esc_attr( $option_id ) );
if ( ! empty( $option->link_url ) ) {
$link_text = isset( $option->link_text ) ? $option->link_text : '';
$option_link = sprintf( ' <a href="%1$s" target="_blank">%2$s</a>', esc_url( $option->link_url ), esc_html( $link_text ) );
'<span class="et_pb_contact_field_radio">
<input type="radio" id="et_pb_contact_%3$s_%2$s_%10$s_%7$s" class="input" value="%8$s" name="et_pb_contact_%3$s_%2$s" data-required_mark="%6$s" data-field_type="%4$s" data-original_id="%3$s" %9$s%11$s>
<label for="et_pb_contact_%3$s_%2$s_%10$s_%7$s"><i></i>%8$s%12$s</label>
( isset( $_POST['et_pb_contact_' . $field_id . '_' . $current_module_num] ) ? esc_attr( sanitize_text_field( $_POST['et_pb_contact_' . $field_id . '_' . $current_module_num] ) ) : '' ),
esc_attr( $current_module_num ),
esc_attr( $field_title ), // #5
'off' === $required_mark ? 'not_required' : 'required',
esc_attr( wp_strip_all_tags( isset( $option->value ) ? $option->value : '' ) ),
checked( $is_checked, true, false ),
esc_attr( $render_count ), // #10
$input_field .= esc_html__( 'No options added.', 'et_builder' );
'<span class="et_pb_contact_field_options_wrapper">
<span class="et_pb_contact_field_options_title"%3$s>%1$s</span>
<span class="et_pb_contact_field_options_list">%2$s</span>
esc_html( $field_title ),
$multi_view->render_attrs( array(
'content' => '{{field_title}}',
'<option value=""%2$s>%1$s</option>',
esc_html( $field_title ),
$multi_view->render_attrs( array(
'content' => '{{field_title}}',
$option_search = array( '[', ']' );
$option_replace = array( '[', ']' );
$select_options = str_replace( $option_search, $option_replace, $select_options );
$select_options = json_decode( $select_options );
foreach ( $select_options as $option ) {
$option_id = isset( $option->id ) ? sprintf( ' data-id="%1$s"', esc_attr( $option->id ) ) : '';
'<option value="%1$s"%3$s>%2$s</option>',
esc_attr( wp_strip_all_tags( $option->value ) ),
wp_strip_all_tags( $option->value ),
'<select id="et_pb_contact_%3$s_%2$s" class="et_pb_contact_select input" name="et_pb_contact_%3$s_%2$s" data-required_mark="%6$s" data-field_type="%4$s" data-original_id="%3$s">
( isset( $_POST['et_pb_contact_' . $field_id . '_' . $current_module_num] ) ? esc_attr( sanitize_text_field( $_POST['et_pb_contact_' . $field_id . '_' . $current_module_num] ) ) : '' ),
esc_attr( $current_module_num ),
esc_attr( $field_title ),
'off' === $required_mark ? 'not_required' : 'required',
$this->add_classname( array(
$this->get_text_orientation_classname(),
if ( 'off' === $fullwidth_field ) {
$this->add_classname( 'et_pb_contact_field_half' );
if ( 0 === $et_pb_half_width_counter % 2 ) {
$this->add_classname( 'et_pb_contact_field_last' );
if ( 'on' === self::$_->array_get( $this->props, 'hidden' ) ) {
$this->add_classname( 'et_pb_contact_field--hidden' );
// Remove automatically added classname
$this->remove_classname( 'et_pb_module' );
'<p class="%5$s"%6$s data-id="%3$s" data-type="%7$s">
<label for="et_pb_contact_%3$s_%2$s" class="et_pb_contact_form_label"%10$s>%1$s</label>
esc_html( $field_title ),
esc_attr( $current_module_num ),
$this->module_classname( $render_slug ),
$parallax_image_background,
$multi_view->render_attrs( array(
'content' => '{{field_title}}',
new ET_Builder_Module_Contact_Form_Item;