1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
function epl_contact_capture_form( $atts ) {
$defaults = epl_contact_capture_get_widget_defaults();
$attributes = shortcode_atts( $defaults, $atts );
$fields = epl_contact_capture_get_widget_fields( $attributes );
if ( isset( $attributes['submit'] ) && ! empty( $attributes['submit'] ) ) {
foreach ( $fields as &$field ) {
if ( 'epl_contact_submit' === $field['name'] ) {
$field['value'] = $attributes['submit'];
}
}
}
ob_start();
$contact_form = new EPL_FORM_BUILDER( array( 'callback_action' => 'contact_capture_form' ) );
$fields = array(
array(
'label' => '',
'class' => 'col-1 epl-inner-div',
'id' => '',
'help' => '',
'fields' => $fields,
),
);
$contact_form->add_sections( $fields );
$contact_form->add_fields();
$contact_form->add_nonce( 'epl_contact_widget' );
echo '<div class="epl-contact-capture-form">';?>
<div class="epl-contact-capture-form-desc">
<?php
echo isset( $atts['description'] ) ? esc_html( $atts['description'] ) : '';
?>
</div>
<?php
$contact_form->render_form();
echo '</div>';
return ob_get_clean();
}
add_shortcode( 'epl_contact_form', 'epl_contact_capture_form' );
add_shortcode( 'listing_contact', 'epl_contact_capture_form' );
function epl_contact_capture_form_callback( $form_data, $request ) {
if ( isset( $request['epl_contact_anti_spam'] ) && ! empty( $attributes['submit'] ) ) {
return;
}
$contact = new EPL_contact( $request['epl_contact_email'] );
$fname = isset( $request['epl_contact_first_name'] ) ? sanitize_text_field( $request['epl_contact_first_name'] ) : '';
$lname = isset( $request['epl_contact_last_name'] ) ? sanitize_text_field( $request['epl_contact_last_name'] ) : '';
$phone = isset( $request['epl_contact_phone'] ) ? sanitize_text_field( $request['epl_contact_phone'] ) : '';
$title = isset( $request['epl_contact_title'] ) ? sanitize_text_field( $request['epl_contact_title'] ) : '';
if ( empty( $contact->ID ) ) {
$contact_data = array(
'name' => $title,
'email' => sanitize_email( $request['epl_contact_email'] ),
);
if ( $contact->create( $contact_data ) ) {
$contact->update_meta( 'contact_first_name', $fname );
$contact->update_meta( 'contact_last_name', $lname );
$contact->update_meta( 'contact_phones', array( 'phone' => $phone ) );
$contact->update_meta( 'contact_category', 'widget' );
$contact->attach_listing( $request['epl_contact_listing_id'] );
$contact->add_note( $request['epl_contact_note'], 'note', $request['epl_contact_listing_id'] );
}
} else {
if ( $contact->update( array( 'name' => $title ) ) ) {
$contact->add_note( $request['epl_contact_note'], 'note', $request['epl_contact_listing_id'] );
$contact->attach_listing( $request['epl_contact_listing_id'] );
}
}
}
add_action( 'epl_form_builder_contact_capture_form', 'epl_contact_capture_form_callback', 10, 2 );