function wpp_render_search_input($args = false) { global $wp_properties; extract($args = wp_parse_args($args, array('type' => 'input', 'input_type' => false, 'search_values' => false, 'attrib' => false, 'random_element_id' => 'wpp_search_element_' . rand(1000, 9999), 'value' => false, 'placeholder' => false))); $attribute_data = UsabilityDynamics\WPP\Attributes::get_attribute_data($args['attrib']); if (!empty($args['input_type'])) { $use_input_type = $args['input_type']; } else { $use_input_type = isset($wp_properties['searchable_attr_fields'][$attrib]) ? $wp_properties['searchable_attr_fields'][$attrib] : false; } ob_start(); if (!empty($use_input_type)) { switch ($use_input_type) { case 'input': ?> <input id="<?php echo $random_element_id; ?> " class="<?php echo $attribute_data['ui_class']; ?> " name="wpp_search[<?php echo $attrib; ?> ]" value="<?php echo $value; ?> " placeholder="<?php echo $placeholder; ?> " type="text" /> <?php break; case 'range_input': /* Determine if $value has correct format, and if not - fix it. */ $value = !is_array($value) ? array('min' => '', 'max' => '') : $value; $value['min'] = in_array('min', $value) ? $value['min'] : ''; $value['max'] = in_array('max', $value) ? $value['max'] : ''; ?> <input id="<?php echo $random_element_id; ?> " class="wpp_search_input_field wpp_search_input_field_min wpp_search_input_field_<?php echo $attrib; ?> <?php echo $attribute_data['ui_class']; ?> " type="text" name="wpp_search[<?php echo $attrib; ?> ][min]" value="<?php echo $value['min']; ?> " placeholder="<?php echo $placeholder['min']; ?> "/> <span class="wpp_dash">-</span> <input class="wpp_search_input_field wpp_search_input_field_max wpp_search_input_field_<?php echo $attrib; ?> <?php echo $attribute_data['ui_class']; ?> " type="text" name="wpp_search[<?php echo $attrib; ?> ][max]" value="<?php echo $value['max']; ?> " placeholder="<?php echo $placeholder['max']; ?> "/> <?php break; case 'range_dropdown': ?> <?php $grouped_values = group_search_values($search_values[$attrib]); ?> <select id="<?php echo $random_element_id; ?> " class="wpp_search_select_field wpp_search_select_field_<?php echo $attrib; ?> <?php echo $attribute_data['ui_class']; ?> " name="wpp_search[<?php echo $attrib; ?> ][min]"> <option value="-1"><?php _e('Any', ud_get_wp_property()->domain); ?> </option> <?php foreach ($grouped_values as $v) { ?> <option value='<?php echo (int) $v; ?> ' <?php if (isset($value['min']) && $value['min'] == $v) { echo " selected='true' "; } ?> > <?php echo apply_filters("wpp_stat_filter_{$attrib}", $v); ?> + </option> <?php } ?> </select> <?php break; case 'advanced_range_dropdown': ?> <?php $grouped_values = !empty($search_values[$attrib]) ? $search_values[$attrib] : group_search_values($search_values[$attrib]); ?> <select id="<?php echo $random_element_id; ?> " class="wpp_search_select_field wpp_search_select_field_<?php echo $attrib; ?> <?php echo $attribute_data['ui_class']; ?> " name="wpp_search[<?php echo $attrib; ?> ][min]"> <option value=""><?php _e('Min', ud_get_wp_property()->domain); ?> </option> <?php foreach ($grouped_values as $v) { ?> <option value='<?php echo (int) $v; ?> ' <?php if (isset($value['min']) && $value['min'] == (int) $v) { echo " selected='selected' "; } ?> > <?php echo apply_filters("wpp_stat_filter_{$attrib}", $v); ?> </option> <?php } ?> </select> <span class="delimiter">-</span> <select id="<?php echo $random_element_id; ?> " class="wpp_search_select_field wpp_search_select_field_<?php echo $attrib; ?> <?php echo $attribute_data['ui_class']; ?> " name="wpp_search[<?php echo $attrib; ?> ][max]"> <option value=""><?php _e('Max', ud_get_wp_property()->domain); ?> </option> <?php foreach ($grouped_values as $v) { ?> <option value='<?php echo (int) $v; ?> ' <?php if (isset($value['max']) && $value['max'] == (int) $v) { echo " selected='selected' "; } ?> > <?php echo apply_filters("wpp_stat_filter_{$attrib}", $v); ?> </option> <?php } ?> </select> <?php break; case 'dropdown': ?> <select id="<?php echo $random_element_id; ?> " class="wpp_search_select_field wpp_search_select_field_<?php echo $attrib; ?> <?php echo $attribute_data['ui_class']; ?> " name="wpp_search[<?php echo $attrib; ?> ]"> <option value="-1"><?php _e('Any', ud_get_wp_property()->domain); ?> </option> <?php foreach ($search_values[$attrib] as $v) { ?> <option value="<?php echo esc_attr($v); ?> " <?php selected($value, $v); ?> ><?php echo esc_attr(apply_filters("wpp_stat_filter_{$attrib}", $v)); ?> </option> <?php } ?> </select> <?php break; case 'multi_checkbox': ?> <ul class="wpp_multi_checkbox <?php echo $attribute_data['ui_class']; ?> "> <?php foreach ($search_values[$attrib] as $value_label) { ?> <?php $unique_id = rand(10000, 99999); ?> <li> <input name="wpp_search[<?php echo $attrib; ?> ][]" <?php echo is_array($value) && in_array($value_label, $value) ? 'checked="true"' : ''; ?> id="wpp_attribute_checkbox_<?php echo $unique_id; ?> " type="checkbox" value="<?php echo $value_label; ?> "/> <label for="wpp_attribute_checkbox_<?php echo $unique_id; ?> " class="wpp_search_label_second_level"><?php echo $value_label; ?> </label> </li> <?php } ?> </ul> <?php break; case 'checkbox': ?> <input id="<?php echo $random_element_id; ?> " type="checkbox" class="<?php echo $attribute_data['ui_class']; ?> " name="wpp_search[<?php echo $attrib; ?> ]" <?php checked($value, 'true'); ?> value="true"/> <?php break; default: echo apply_filters('wpp::render_search_input::custom', '', $args); break; } } else { ?> <?php if (empty($search_values[$attrib])) { ?> <input id="<?php echo $random_element_id; ?> " class="wpp_search_input_field wpp_search_input_field_<?php echo $attrib; ?> " name="wpp_search[<?php echo $attrib; ?> ]" value="<?php echo $value; ?> " type="text"/> <?php //* Determine if attribute is a numeric range */ ?> <?php } elseif (WPP_F::is_numeric_range($search_values[$attrib])) { ?> <input class="wpp_search_input_field wpp_search_input_field_min wpp_search_input_field_<?php echo $attrib; ?> <?php echo $attribute_data['ui_class']; ?> " type="text" name="wpp_search[<?php echo $attrib; ?> ][min]" value="<?php echo isset($value['min']) ? $value['min'] : ''; ?> "/> - <input class="wpp_search_input_field wpp_search_input_field_max wpp_search_input_field_<?php echo $attrib; ?> <?php echo $attribute_data['ui_class']; ?> " type="text" name="wpp_search[<?php echo $attrib; ?> ][max]" value="<?php echo isset($value['max']) ? $value['max'] : ''; ?> "/> <?php } else { ?> <?php /* Not a numeric range */ ?> <select id="<?php echo $random_element_id; ?> " class="wpp_search_select_field wpp_search_select_field_<?php echo $attrib; ?> <?php echo $attribute_data['ui_class']; ?> " name="wpp_search[<?php echo $attrib; ?> ]"> <option value="<?php echo $attrib == 'property_type' && is_array($search_values[$attrib]) ? implode(',', array_flip($search_values[$attrib])) : '-1'; ?> "><?php _e('Any', ud_get_wp_property()->domain); ?> </option> <?php foreach ($search_values[$attrib] as $key => $v) { ?> <option value='<?php echo $attrib == 'property_type' ? $key : $v; ?> ' <?php if ($value == ($attrib == 'property_type' ? $key : $v)) { echo " selected='true' "; } ?> > <?php echo apply_filters("wpp_stat_filter_{$attrib}", $v); ?> </option> <?php } ?> </select> <?php } ?> <?php } echo apply_filters('wpp_render_search_input', ob_get_clean(), $args); }