<?php /** * Search field templates. * * @package opalestate * @author Opal Team <info@wpopal.com > */ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } /** * Render field template. * * @param string $field Field. * @param string $label Label. * @param string $type Type. */ function opalestate_property_render_field_template( $field, $label, $type = 'select' ) { $qvalue = isset( $_GET['info'][ $field ] ) ? sanitize_text_field( $_GET['info'][ $field ] ) : ''; $template = apply_filters( 'opalestate_property_render_search_field_template', $field, $label ); $template = apply_filters( 'opalestate_property_' . $field . '_field_template', $template ); if ( $template == $field ) { $template = ''; } if ( empty( $template ) ) { switch ( $type ) { case 'input': ?> <label class="opalestate-label opalestate-label--<?php echo sanitize_html_class( $field ); ?>"><?php echo esc_html( $label ); ?></label> <div class="input-group-number"> <i class="<?php echo opalestate_get_property_meta_icon( $field ); ?>"></i> <input class="form-control" value="1" type="text" name="info[<?php echo $field; ?>]" placeholder="<?php echo esc_attr( $label ); ?>"/> <div class="btn-actions"> <span class="btn-minus"><i class="fa fa-minus"></i></span> <span class="btn-plus"><i class="fa fa-plus"></i></span> </div> </div> <?php break; default: $setting_search_type = 'opalestate_ppt_' . $field . '_search_type'; $setting_search_type_options = 'opalestate_ppt_' . $field . '_options_value'; $setting_search_min_range = 'opalestate_ppt_' . $field . '_min_range'; $setting_search_max_range = 'opalestate_ppt_' . $field . '_max_range'; $setting_search_unit_thousand = 'opalestate_ppt_' . $field . '_unit_thousand'; $setting_search_default_text = 'opalestate_ppt_' . $field . '_default_text'; $display_type_search = opalestate_options( $setting_search_type, 'select' ); if ( $display_type_search == 'select' ) { $option_values = (array) explode( ',', opalestate_options( $setting_search_type_options, '1,2,3,4,5,6,7,8,9,10' ) ); $template = '<label class="opalestate-label opalestate-label--' . sanitize_html_class( $label ) . '">' . esc_html( $label ) . '</label>'; $template .= '<select class="form-control" name="info[%s]"><option value="">%s</option>'; foreach ( $option_values as $value ) { $selected = $value == $qvalue ? 'selected="selected"' : ''; $template .= '<option ' . $selected . ' value="' . $value . '">' . $value . '</option>'; } $template .= '</select>'; $template = sprintf( $template, $field, $label ); } elseif ( $display_type_search == 'text' ) { $option_values = opalestate_options( $setting_search_default_text, '' ); $qvalue = $qvalue ? $qvalue : $option_values; $template = '<label class="opalestate-label opalestate-label--' . sanitize_html_class( $label ) . '">' . esc_html( $label ) . '</label>'; $template .= '<input class="form-control" type="text" name="info[%s]" value="%s"/>'; $template = sprintf( $template, $field, $qvalue ); } elseif ( $display_type_search == 'range' ) { $min_name = 'min_' . $field; $max_name = 'max_' . $field; $search_min = (int) isset( $_GET[ $min_name ] ) ? $_GET[ $min_name ] : opalestate_options( $setting_search_min_range, 0 ); $search_max = (int) isset( $_GET[ $max_name ] ) ? $_GET[ $max_name ] : opalestate_options( $setting_search_max_range, 1000 ); $data = [ 'id' => $field, 'unit' => '', 'ranger_min' => opalestate_options( $setting_search_min_range, 0 ), 'ranger_max' => opalestate_options( $setting_search_max_range, 1000 ), 'input_min' => $search_min, 'input_max' => $search_max, 'unit_thousand' => apply_filters( 'opalestate_search_range_unit_thousand', opalestate_options( $setting_search_unit_thousand ), $field ), ]; ob_start(); opalesate_property_slide_ranger_template( __( $label . ": ", 'opalestate-pro' ), $data ); $template = ob_get_contents(); ob_end_clean(); } else { $template = '<label class="opalestate-label opalestate-label--' . sanitize_html_class( $label ) . '">' . esc_html( $label ) . '</label>'; $template .= '<select class="form-control" name="info[%s]"><option value="">%s</option>'; for ( $i = 1; $i <= 10; $i++ ) { $selected = $i == $qvalue ? 'selected="selected"' : ''; $template .= '<option ' . $selected . ' value="' . $i . '">' . $i . '</option>'; } $template .= '</select>'; $template = sprintf( $template, $field, $label ); } break; } } echo $template; // WPCS: XSS OK. } /** * Render area size field. */ function opalestate_property_areasize_field_template( $template = '' ) { $search_min = isset( $_GET['min_area'] ) ? sanitize_text_field( $_GET['min_area'] ) : opalestate_options( 'search_min_area', 0 ); $search_max = isset( $_GET['max_area'] ) ? sanitize_text_field( $_GET['max_area'] ) : opalestate_options( 'search_max_area', 1000 ); $measurement_units = opalestate_get_measurement_units(); $unit = opalestate_options( 'measurement_unit', 'sqft' ); if ( isset( $measurement_units[ $unit ] ) ) { $unit = $measurement_units[ $unit ]; } $data = [ 'id' => 'area', 'unit' => $unit . ' ', 'ranger_min' => opalestate_options( 'search_min_area', 0 ), 'ranger_max' => opalestate_options( 'search_max_area', 1000 ), 'input_min' => $search_min, 'input_max' => $search_max, 'unit_thousand' => apply_filters( 'opalestate_areasize_unit_thousand', ',' ), ]; opalesate_property_slide_ranger_template( esc_html__( 'Area', 'opalestate-pro' ), $data ); return; } add_filter( 'opalestate_property_areasize_field_template', 'opalestate_property_areasize_field_template' ); /** * Render slider ranger template. * * @param $label * @param $data */ function opalesate_property_slide_ranger_template( $label, $data ) { $default = [ 'id' => 'price', 'unit' => '', 'decimals' => 0, 'ranger_min' => 0, 'ranger_max' => 1000, 'input_min' => 0, 'input_max' => 1000, 'unit_position' => 'postfix', 'unit_thousand' => ',', 'mode' => 2, 'start' => '', ]; $data = array_merge( $default, $data ); extract( $data ); ?> <label class="opalestate-label opalestate-label--<?php echo sanitize_title( $label ); ?>"><?php echo esc_html( $label ); ?></label> <div class="opal-slide-ranger" data-unit="<?php echo $unit; ?>" data-unitpos="<?php echo $unit_position ?>" data-decimals="<?php echo $decimals; ?>" data-thousand="<?php echo esc_attr( $unit_thousand ); ?>"> <label class="slide-ranger-label"> <span class="slide-ranger-min-label"></span> <?php echo ( $mode == 2 ) ? '<i>-</i>' : ''; ?> <span class="slide-ranger-max-label"></span> </label> <div class="slide-ranger-bar" data-min="<?php echo $ranger_min; ?>" data-max="<?php echo $ranger_max; ?>" data-mode="<?php echo $mode; ?>" data-start="<?php echo $start; ?>"></div> <?php if ( $mode == 1 ) : ?> <input type="hidden" class="slide-ranger-min-input ranger-<?php echo $id; ?>" name="<?php echo $id; ?>" autocomplete="off" value="<?php echo (int) $input_min; ?>"/> <?php else : ?> <input type="hidden" class="slide-ranger-min-input ranger-<?php echo $id; ?>" name="min_<?php echo $id; ?>" autocomplete="off" value="<?php echo (int) $input_min; ?>"/> <input type="hidden" class="slide-ranger-max-input ranger-<?php echo $id; ?>" name="max_<?php echo $id; ?>" autocomplete="off" value="<?php echo (int) $input_max; ?>"/> <?php endif; ?> </div> <?php }