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 115 116 117 118 119 120 121 122 123 124 125 126 127 128
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
class EPL_Widget_Contact_Capture extends WP_Widget {
public function __construct() {
parent::__construct( false, $name = __( 'EPL - Contact Form', 'easy-property-listings' ), array( 'description' => __( 'Add contact form to a sidebar.', 'easy-property-listings' ) ) );
}
public function widget( $args, $instance ) {
$defaults = epl_contact_capture_get_widget_defaults();
$instance = wp_parse_args( (array) $instance, $defaults );
foreach ( $args as $arg_key => $arg_val ) {
${$arg_key} = $arg_val;
}
$title = apply_filters( 'widget_title', $instance['title'] );
echo $before_widget;
if ( $title ) {
echo $before_title . esc_html( $title ) . $after_title;
}
echo epl_contact_capture_form( $instance );
echo $after_widget;
}
public function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$all_fields = epl_contact_capture_widget_form_fields();
foreach ( $all_fields as $all_field ) {
if ( isset( $new_instance[ $all_field['key'] ] ) ) {
$instance[ $all_field['key'] ] = epl_strip_tags( $new_instance[ $all_field['key'] ], apply_filters( 'epl_contact_form_description_allowed_tags', '<br><p><strong><div><span><hr><img>' ) );
} else {
$instance[ $all_field['key'] ] = '';
}
}
return $instance;
}
public function form( $instance ) {
$defaults = epl_contact_capture_get_widget_defaults();
$instance = wp_parse_args( (array) $instance, $defaults );
$instance = array_map( 'epl_esc_attr', $instance );
foreach ( $instance as $in_key => $in_val ) {
${$in_key} = $in_val;
}
$fields = epl_contact_capture_widget_form_fields();
foreach ( $fields as $field ) {
$field_value = ${$field['key']};
epl_widget_render_backend_field( $field, $this, $field_value );
}
}
}
function epl_register_widget_contact_form() {
register_widget( 'EPL_Widget_Contact_Capture' );
}
add_action( 'widgets_init', 'epl_register_widget_contact_form' );