Viewing File: /home/maglabs/exclusive/wp-content/plugins/g5-ere/inc/functions/template.php

<?php
// Do not allow directly accessing this file.
if ( ! defined( 'ABSPATH' ) ) {
	exit( 'Direct script access denied.' );
}
function g5ere_body_class( $classes ) {
	$classes = (array) $classes;

	if ( is_singular( 'property' ) ) {
		$single_property_layout = G5ERE()->options()->get_option( 'single_property_layout', 'layout-1' );
		$classes[]              = "g5ere__single-property-{$single_property_layout}";
	}
	if ( is_singular( 'agent' ) ) {
		$single_agent_layout = G5ERE()->options()->get_option( 'single_agent_layout', 'layout-01' );
		$classes[]           = "g5ere__single-agent-{$single_agent_layout}";
	}

	if ( g5ere_is_single_agency() ) {
		$single_agency_layout = G5ERE()->options()->get_option( 'single_agency_layout', 'layout-1' );
		$classes[]            = "g5ere__single-agency-{$single_agency_layout}";
	}


	if ( is_post_type_archive( 'property' ) || is_tax( get_object_taxonomies( 'property' ) ) ) {
		$map_position = G5ERE()->options()->get_option( 'map_position' );
		if ( $map_position !== 'none' && $map_position !== 'full-map' ) {
			$classes[] = 'g5ere__archive-halt-map';
		}
	}


	return array_unique( $classes );
}

function g5ere_template_modal_messenger() {
	$agent_info = false;
	if ( is_singular( 'agent' ) ) {
		$agent_info = g5ere_get_agent_info_by_id();
	} elseif ( is_singular( 'property' ) ) {
		$agent_info = g5ere_get_agent_info_by_property();
	} elseif ( g5ere_is_single_agency() ) {
		global $g5ere_agency;
		if ( ! g5ere_agency_visible( $g5ere_agency ) ) {
			return;
		}
		$phone      = $g5ere_agency->get_mobile();
		$email      = $g5ere_agency->get_email();
		$agent_info = array(
			'phone' => $phone,
			'email' => $email
		);
	}
	if ( $agent_info == false ) {
		return;
	}

	G5ERE()->get_template( 'global/modal-messenger.php', $agent_info );
}

function g5ere_template_single_property_bottom_bar() {
	if ( ! is_singular( 'property' ) ) {
		return;
	}
	$bottom_bar_mobile = G5ERE()->options()->get_option( 'single_property_bottom_bar_mobile', 'off' );
	if ( $bottom_bar_mobile !== 'on' ) {
		return;
	}

	$info_arr = g5ere_get_agent_info_by_property();

	if ( $info_arr == false ) {
		return;
	}

	$email      = isset( $info_arr['email'] ) ? $info_arr['email'] : '';
	$phone      = isset( $info_arr['phone'] ) ? $info_arr['phone'] : '';
	$agent_link = isset( $info_arr['agent_link'] ) ? $info_arr['agent_link'] : '';
	$agent_name = isset( $info_arr['agent_name'] ) ? $info_arr['agent_name'] : '';
	$avatar_id  = isset( $info_arr['avatar_id'] ) ? $info_arr['avatar_id'] : '';
	$position   = isset( $info_arr['position'] ) ? $info_arr['position'] : '';

	if ( empty( $email ) && empty( $phone ) ) {
		return;
	}

	G5ERE()->get_template( 'single-property/bottom-bar-mobile.php', array(
		'email'      => $email,
		'phone'      => $phone,
		'agent_link' => $agent_link,
		'agent_name' => $agent_name,
		'avatar_id'  => $avatar_id,
		'position'   => $position
	) );
}


function g5ere_template_loop_property_title( $args = array() ) {
	$args = wp_parse_args( $args, array(
		'post' => 0
	) );
	G5ERE()->get_template( 'loop/title.php', $args );
}

function g5ere_template_loop_property_address( $args = array() ) {
	$args             = wp_parse_args( $args, array(
		'property_id' => get_the_ID()
	) );
	$property_address = get_post_meta( $args['property_id'], ERE_METABOX_PREFIX . 'property_address', true );
	if ( $property_address === '' ) {
		return;
	}
	$google_map_address_url = g5ere_get_property_map_address_url( $args );
	G5ERE()->get_template( 'loop/property-address.php', array(
		'property_address'       => $property_address,
		'google_map_address_url' => $google_map_address_url
	) );
}

function g5ere_template_loop_property_excerpt() {
	G5ERE()->get_template( 'loop/property-excerpt.php' );
}

function g5ere_template_loop_property_price( $args = array() ) {
	$args             = wp_parse_args( $args, array(
		'property_id' => get_the_ID()
	) );
	$price            = get_post_meta( $args['property_id'], ERE_METABOX_PREFIX . 'property_price', true );
	$price_short      = get_post_meta( $args['property_id'], ERE_METABOX_PREFIX . 'property_price_short', true );
	$price_unit       = get_post_meta( $args['property_id'], ERE_METABOX_PREFIX . 'property_price_unit', true );
	$price_prefix     = get_post_meta( $args['property_id'], ERE_METABOX_PREFIX . 'property_price_prefix', true );
	$price_postfix    = get_post_meta( $args['property_id'], ERE_METABOX_PREFIX . 'property_price_postfix', true );
	$empty_price_text = ere_get_option( 'empty_price_text' );
	G5ERE()->get_template( 'loop/property-price.php', array(
		'price'            => $price,
		'price_short'      => $price_short,
		'price_unit'       => $price_unit,
		'price_prefix'     => $price_prefix,
		'price_postfix'    => $price_postfix,
		'empty_price_text' => $empty_price_text
	) );
}

function g5ere_template_loop_property_meta() {
	$meta = g5ere_get_loop_property_meta();
	if ( empty( $meta ) ) {
		return;
	}
	G5ERE()->get_template( 'loop/meta/meta.php', array(
		'meta'     => $meta,
		'separate' => apply_filters( 'g5ere_loop_property_meta_separate', false )
	) );
}

function g5ere_template_loop_property_size() {
	$property_size = get_post_meta( get_the_ID(), ERE_METABOX_PREFIX . 'property_size', true );
	if ( $property_size === '' ) {
		return;
	}
	$measurement_units = ere_get_measurement_units();
	G5ERE()->get_template( 'loop/property-size.php', array(
		'property_size'     => $property_size,
		'measurement_units' => $measurement_units
	) );
}

function g5ere_template_property_land_size( $args = array() ) {
	$args          = wp_parse_args( $args, array(
		'property_id' => get_the_ID(),
	) );
	$property_land = get_post_meta( $args['property_id'], ERE_METABOX_PREFIX . 'property_land', true );
	if ( $property_land === '' ) {
		return;
	}
	$measurement_units_land_area = ere_get_measurement_units_land_area();
	G5ERE()->get_template( 'single-property/data/land-size.php', array(
		'property_land'               => $property_land,
		'measurement_units_land_area' => $measurement_units_land_area
	) );
}

function g5ere_template_property_garage_size( $args = array() ) {
	$args        = wp_parse_args( $args, array(
		'property_id' => get_the_ID(),
	) );
	$garage_size = get_post_meta( $args['property_id'], ERE_METABOX_PREFIX . 'property_garage_size', true );
	if ( $garage_size === '' ) {
		return;
	}
	$measurement_units = ere_get_measurement_units();
	G5ERE()->get_template( 'single-property/data/garage-size.php', array(
		'garage_size'       => $garage_size,
		'measurement_units' => $measurement_units
	) );
}

function g5ere_template_property_rooms( $args = array() ) {
	$args = wp_parse_args( $args, array(
		'property_id' => get_the_ID(),
	) );

	$property_rooms = get_post_meta( $args['property_id'], ERE_METABOX_PREFIX . 'property_rooms', true );
	if ( $property_rooms === '' ) {
		return;
	}
	G5ERE()->get_template( 'single-property/data/rooms.php', array(
		'rooms' => $property_rooms
	) );
}

function g5ere_template_loop_property_bedrooms() {
	$property_bedrooms = get_post_meta( get_the_ID(), ERE_METABOX_PREFIX . 'property_bedrooms', true );
	if ( $property_bedrooms === '' ) {
		return;
	}
	G5ERE()->get_template( 'loop/property-bedrooms.php', array( 'property_bedrooms' => $property_bedrooms ) );
}


function g5ere_template_loop_property_bathrooms() {
	$property_bathrooms = get_post_meta( get_the_ID(), ERE_METABOX_PREFIX . 'property_bathrooms', true );
	if ( $property_bathrooms === '' ) {
		return;
	}

	G5ERE()->get_template( 'loop/property-bathrooms.php', array(
		'property_bathrooms' => $property_bathrooms
	) );
}

function g5ere_template_loop_property_garage() {
	$property_garage = get_post_meta( get_the_ID(), ERE_METABOX_PREFIX . 'property_garage', true );
	if ( $property_garage === '' ) {
		return;
	}
	G5ERE()->get_template( 'loop/property-garage.php', array( 'property_garage' => $property_garage ) );
}

function g5ere_template_loop_property_badge_featured() {
	$property_featured = g5ere_get_loop_property_featured();
	if ( empty( $property_featured ) ) {
		return;
	}
	G5ERE()->get_template( 'loop/property-badge.php', array(
		'badge' => $property_featured,
		'class' => 'g5ere__lpb-featured'
	) );
}

function g5ere_template_loop_property_featured_status() {
	$property_status = g5ere_get_loop_property_featured_status();
	if ( empty( $property_status ) ) {
		return;
	}
	G5ERE()->get_template( 'loop/property-badge.php', array(
		'badge' => $property_status,
		'class' => 'g5ere__lpb-featured-status'
	) );
}

function g5ere_template_loop_property_status() {
	$property_item_status = get_the_terms( get_the_ID(), 'property-status' );
	if ( $property_item_status === false || is_a( $property_item_status, 'WP_Error' ) ) {
		return;
	}
	G5ERE()->get_template( 'loop/property-status.php', array(
		'property_item_status' => $property_item_status
	) );
}

function g5ere_template_loop_property_primary_status() {
	$property_item_status = get_the_terms( get_the_ID(), 'property-status' );
	if ( $property_item_status === false || is_a( $property_item_status, 'WP_Error' ) ) {
		return;
	}
	$status = current( $property_item_status );
	G5ERE()->get_template( 'loop/property-primary-status.php', array(
		'status' => $status
	) );
}

function g5ere_template_loop_property_term_status() {
	$property_item_status = get_the_terms( get_the_ID(), 'property-status' );
	if ( $property_item_status === false || is_a( $property_item_status, 'WP_Error' ) ) {
		return;
	}
	G5ERE()->get_template( 'loop/property-term-status.php', array(
		'property_item_status' => $property_item_status
	) );
}

function g5ere_template_loop_property_action() {
	G5ERE()->get_template( 'loop/property-actions.php' );
}

function g5ere_template_loop_property_action_view_gallery() {
	$property_gallery_Id = get_post_meta( get_the_ID(), ERE_METABOX_PREFIX . 'property_images', true );
	if ( $property_gallery_Id === '' ) {
		return;
	}
	$property_gallery_Id = explode( '|', $property_gallery_Id );
	$property_gallery    = array();
	foreach ( $property_gallery_Id as $image_id ) {
		$image_src = wp_get_attachment_image_src( $image_id, 'full' );
		if ( is_array( $image_src ) ) {
			$property_gallery[] = $image_src[0];
		}
	}
	$property_gallery_count = count( $property_gallery );
	if ( $property_gallery_count === 0 ) {
		return;
	}
	G5ERE()->get_template( 'loop/view-gallery.php', array(
		'property_gallery_count' => $property_gallery_count,
		'property_gallery'       => $property_gallery
	) );
}

function g5ere_template_loop_property_action_favorite() {
	if ( function_exists( 'ere_template_hooks' ) ) {
		ere_template_hooks()->property_favorite();
	}
}

function g5ere_template_loop_property_action_compare() {
	if ( function_exists( 'ere_template_hooks' ) ) {
		ere_template_hooks()->property_compare();
	}
}


function g5ere_template_loop_property_featured() {
	$property_featured = get_post_meta( get_the_ID(), ERE_METABOX_PREFIX . 'property_featured', true );
	if ( $property_featured !== '1' ) {
		return;
	}
	G5ERE()->get_template( 'loop/property-featured.php' );
}

function g5ere_template_loop_property_term_label() {
	$property_term_label = get_the_terms( get_the_ID(), 'property-label' );
	if ( $property_term_label === false || is_a( $property_term_label, 'WP_Error' ) ) {
		return;
	}
	G5ERE()->get_template( 'loop/property-term-label.php', array( 'property_term_label' => $property_term_label ) );
}

function g5ere_template_loop_property_label() {
	$property_term_label = get_the_terms( get_the_ID(), 'property-label' );
	if ( $property_term_label === false || is_a( $property_term_label, 'WP_Error' ) ) {
		return;
	}
	G5ERE()->get_template( 'loop/property-label.php', array( 'property_term_label' => $property_term_label ) );
}

function g5ere_template_loop_property_badge() {
	$property_badge = g5ere_get_loop_property_badge();
	if ( empty( $property_badge ) ) {
		return;
	}
	G5ERE()->get_template( 'loop/property-badge.php', array(
		'badge' => $property_badge
	) );
}


function g5ere_template_loop_property_featured_label() {
	$property_label = g5ere_get_loop_property_featured_label();
	if ( empty( $property_label ) ) {
		return;
	}
	G5ERE()->get_template( 'loop/property-badge.php', array(
		'badge' => $property_label,
		'class' => 'g5ere__lpb-featured-label'
	) );
}

function g5ere_template_result_count() {
	$total    = G5CORE()->query()->get_query()->found_posts;
	$per_page = G5CORE()->query()->get_query()->get( 'posts_per_page' );
	$current  = max( 1, G5CORE()->query()->query_var_paged() );
	G5ERE()->get_template( 'loop/result-count.php', array(
		'total'    => $total,
		'per_page' => $per_page,
		'current'  => $current
	) );
}

function g5ere_template_save_search() {
	if ( ! is_post_type_archive( 'property' ) || ! is_search() ) {
		return;
	}
	G5ERE()->get_template( 'loop/save-search-btn.php' );
}

function g5ere_template_modal_save_search() {
	if ( ! is_post_type_archive( 'property' ) ) {
		return;
	}
	$parameters   = G5ERE()->query()->get_parameters();
	$search_query = G5ERE()->query()->get_property_query_args();

	G5ERE()->get_template( 'global/save-search-modal.php',
		array(
			'parameters'   => is_array( $parameters ) ? implode( ',', $parameters ) : $parameters,
			'search_query' => $search_query
		) );
}

function g5ere_template_ordering() {
	$property_sorting = G5ERE()->settings()->get_property_sorting();

	$default_orderby = is_search() ? 'relevance' : apply_filters( 'g5ere_default_property_orderby', G5ERE()->options()->get_option( 'property_sorting', 'menu_order' ) );

	$orderby = isset( $_GET['orderby'] ) ? wp_unslash( $_GET['orderby'] ) : $default_orderby; // WPCS: sanitization ok, input var ok, CSRF ok.

	if ( is_search() ) {
		$property_sorting = array_merge( array( 'relevance' => __( 'Relevance', 'g5-ere' ) ), $property_sorting );
	}

	if ( ! array_key_exists( $orderby, $property_sorting ) ) {
		$orderby = current( array_keys( $property_sorting ) );
	}
	G5ERE()->get_template( 'loop/orderby.php', array(
		'sorting' => $property_sorting,
		'orderby' => $orderby
	) );
}


function g5ere_template_loop_begin_property_map() {
	$map_position = G5ERE()->options()->get_option( 'map_position' );
	if ( ! in_array( $map_position, array( 'half-map-left', 'half-map-right' ) ) ) {
		return;
	}
	if ( ! is_post_type_archive( 'property' ) && ! is_tax( get_object_taxonomies( 'property' ) ) ) {
		return;
	}
	echo '<div class="g5ere__property-halt-map ' . $map_position . '">';
}

function g5ere_template_loop_end_property_map() {
	$map_position = G5ERE()->options()->get_option( 'map_position' );
	if ( ! in_array( $map_position, array( 'half-map-left', 'half-map-right' ) ) ) {
		return;
	}
	if ( ! is_post_type_archive( 'property' ) && ! is_tax( get_object_taxonomies( 'property' ) ) ) {
		return;
	}
	echo '</div>';
}


function g5ere_template_loop_property_map() {
	$map_position = G5ERE()->options()->get_option( 'map_position' );
	if ( $map_position === 'none' ) {
		return;
	}
	if ( ! is_post_type_archive( 'property' ) && ! is_tax( get_object_taxonomies( 'property' ) ) ) {
		return;
	}
	G5ERE()->get_template( 'loop/map.php' );
}

function g5ere_template_header_advanced_search() {
	$advanced_search_enable = G5CORE()->options()->header()->get_option( 'advanced_search_enable' );
	if ( $advanced_search_enable !== 'on' ) {
		return;
	}
	$advanced_search_form = G5CORE()->options()->header()->get_option( 'advanced_search_form' );
	if ( $advanced_search_form === '' ) {
		return;
	}
	$advanced_search_layout      = G5CORE()->options()->header()->get_option( 'advanced_search_layout', 'boxed' );
	$advanced_search_sticky      = G5CORE()->options()->header()->get_option( 'advanced_search_sticky' );
	$advanced_search_css_classes = G5CORE()->options()->header()->get_option( 'advanced_search_css_classes' );
	G5ERE()->get_template( "header/advanced-search.php", array(
		'advanced_search_form'   => $advanced_search_form,
		'advanced_search_layout' => $advanced_search_layout,
		'advanced_search_sticky' => $advanced_search_sticky,
		'css_classes'            => $advanced_search_css_classes
	) );


}

function g5ere_template_header_advanced_search_mobile() {
	$advanced_search_enable = G5CORE()->options()->header()->get_option( 'advanced_search_mobile_enable' );
	if ( $advanced_search_enable !== 'on' ) {
		return;
	}

	$advanced_search_form = G5CORE()->options()->header()->get_option( 'advanced_search_mobile_form' );
	if ( $advanced_search_form === '' ) {
		return;
	}


	$advanced_search_layout      = G5CORE()->options()->header()->get_option( 'advanced_search_mobile_layout', 'boxed' );
	$advanced_search_sticky      = G5CORE()->options()->header()->get_option( 'advanced_search_mobile_sticky' );
	$advanced_search_css_classes = G5CORE()->options()->header()->get_option( 'advanced_search_mobile_css_classes' );
	G5ERE()->get_template( "header/advanced-search-mobile.php", array(
		'advanced_search_form'   => $advanced_search_form,
		'advanced_search_layout' => $advanced_search_layout,
		'advanced_search_sticky' => $advanced_search_sticky,
		'css_classes'            => $advanced_search_css_classes
	) );
}

function g5ere_template_header_search_form_mobile( $id ) {
	$search_form = g5ere_get_search_form( $id );
	if ( $search_form->data === null ) {
		return;
	}
	$prefix                 = $search_form->prefix;
	$other_features         = $search_form->other_features;
	$price_range_slider     = $search_form->price_range_slider;
	$size_range_slider      = $search_form->size_range_slider;
	$land_area_range_slider = $search_form->land_area_range_slider;
	$search_fields          = $search_form->get_get_search_fields_mobile();

	G5ERE()->get_template( "search-form/mobile.php", array(
		'search_fields'          => $search_fields,
		'other_features'         => $other_features,
		'price_range_slider'     => $price_range_slider,
		'size_range_slider'      => $size_range_slider,
		'land_area_range_slider' => $land_area_range_slider,
		'data'                   => $search_form,
		'prefix'                 => $prefix
	) );
}


function g5ere_template_search_form( $id ) {
	$search_form = g5ere_get_search_form( $id );
	if ( $search_form->data === null ) {
		return;
	}
	$prefix                 = $search_form->prefix;
	$search_style           = $search_form->search_style;
	$search_tabs            = $search_form->search_tabs;
	$advanced_filters       = $search_form->advanced_filters;
	$other_features         = $search_form->other_features;
	$price_range_slider     = $search_form->price_range_slider;
	$size_range_slider      = $search_form->size_range_slider;
	$land_area_range_slider = $search_form->land_area_range_slider;
	$search_fields          = $search_form->search_fields;
	$submit_button_position = $search_form->submit_button_position;
	if ( ! is_array( $search_fields ) || ( ! isset( $search_fields['top'] ) && ! isset( $search_fields['bottom'] ) ) || ( empty( $search_fields['top'] ) && empty( $search_fields['bottom'] ) ) ) {
		return;
	}

	if ( $search_tabs === 'on' || $search_tabs === 'on-all-status' ) {
		foreach ( $search_fields as $k => $v ) {
			if ( isset( $search_fields[ $k ]['status'] ) ) {
				unset( $search_fields[ $k ]['status'] );
			}
		}
	}

	if ( ! isset( $search_fields['top'] ) || empty( $search_fields['top'] ) ) {
		$submit_button_position = 'bottom';
	}

	if ( ! isset( $search_fields['bottom'] ) || empty( $search_fields['bottom'] ) ) {
		$submit_button_position = 'top';
	}

	G5ERE()->get_template( "search-form/{$search_style}.php", array(
		'search_style'           => $search_style,
		'search_tabs'            => $search_tabs,
		'search_fields'          => $search_fields,
		'other_features'         => $other_features,
		'advanced_filters'       => $advanced_filters,
		'price_range_slider'     => $price_range_slider,
		'size_range_slider'      => $size_range_slider,
		'land_area_range_slider' => $land_area_range_slider,
		'submit_button_position' => $submit_button_position,
		'data'                   => $search_form,
		'prefix'                 => $prefix,
		'auto_complete_enable'   => true
	) );
}

function g5ere_template_archive_advanced_search( $settings ) {
	if ( ! isset( $settings['isMainQuery'] ) ) {
		return;
	}
	if ( ! isset( $settings['post_type'] ) || $settings['post_type'] !== 'property' ) {
		return;
	}
	$advanced_search = G5ERE()->options()->get_option( 'advanced_search_enable' );
	if ( $advanced_search !== 'on' ) {
		return;
	}
	$advanced_search_form = G5ERE()->options()->get_option( 'advanced_search_form' );
	if ( $advanced_search_form === '' ) {
		return;
	}
	$advanced_search_css_classes = G5ERE()->options()->get_option( 'advanced_search_css_classes' );
	G5ERE()->get_template( "loop/advanced-search.php", array(
		'advanced_search_form' => $advanced_search_form,
		'css_classes'          => $advanced_search_css_classes
	) );

}

function g5ere_template_single_property_head() {
	if ( ! is_singular( 'property' ) ) {
		return;
	}
	$single_property_layout = G5ERE()->options()->get_option( 'single_property_layout', 'layout-1' );
	if ( ! in_array( $single_property_layout, array(
		'layout-1',
		'layout-2',
		'layout-3',
		'layout-4',
		'layout-5',
		'layout-8',
		'layout-9'
	) )
	) {
		return;
	}
	G5ERE()->get_template( "single-property/head/{$single_property_layout}.php" );
}


function g5ere_template_single_property_block_gallery() {
	$single_property_layout = G5ERE()->options()->get_option( 'single_property_layout', 'layout-1' );
	if ( ! in_array( $single_property_layout, array( 'layout-7' ) ) ) {
		return;
	}
	g5ere_template_single_property_gallery();
}

function g5ere_template_single_property_gallery() {
	$property_gallery = get_post_meta( get_the_ID(), ERE_METABOX_PREFIX . 'property_images', true );
	if ( empty( $property_gallery ) ) {
		return;
	}
	$property_gallery = explode( '|', $property_gallery );
	if ( ! is_array( $property_gallery ) || ( count( $property_gallery ) === 0 ) ) {
		return;
	}
	$property_gallery_layout = G5ERE()->options()->get_option( 'single_property_gallery_layout', 'slider' );
	$image_size              = G5ERE()->options()->get_option( 'single_property_gallery_image_size', 'large' );
	$image_ratio             = '';
	$image_mode              = '';
	if ( $image_size === 'full' ) {
		$_image_ratio = G5ERE()->options()->get_option( 'single_property_gallery_image_ratio' );
		if ( is_array( $_image_ratio ) ) {
			$_image_ratio_width  = isset( $_image_ratio['width'] ) ? absint( $_image_ratio['width'] ) : 0;
			$_image_ratio_height = isset( $_image_ratio['height'] ) ? absint( $_image_ratio['height'] ) : 0;
			if ( ( $_image_ratio_width > 0 ) && ( $_image_ratio_height > 0 ) ) {
				$image_ratio = "{$_image_ratio_width}x{$_image_ratio_height}";
			}
		}
		if ( $image_ratio === '' ) {
			$image_mode = 'image';
		}
	}

	$columns_gutter = absint( G5ERE()->options()->get_option( 'single_property_gallery_columns_gutter' ) );

	$map_enable   = G5ERE()->options()->get_option( 'single_property_gallery_map_enable', 'on' );
	$custom_class = G5ERE()->options()->get_option( 'single_property_gallery_custom_class' );

	$slick_options = array();
	if ( in_array( $property_gallery_layout, array( 'slider', 'carousel', 'thumbnail' ) ) ) {
		$slider_pagination_enable = G5ERE()->options()->get_option( 'single_property_gallery_slider_pagination_enable', 'on' );
		$slider_navigation_enable = G5ERE()->options()->get_option( 'single_property_gallery_slider_navigation_enable', '' );
		$slider_autoplay_enable   = G5ERE()->options()->get_option( 'single_property_gallery_slider_autoplay_enable', '' );
		$slider_autoplay_timeout  = intval( G5ERE()->options()->get_option( 'single_property_gallery_slider_autoplay_timeout', '' ) );
		$slider_center_enable     = G5ERE()->options()->get_option( 'single_property_gallery_slider_center_enable', 'on' );
		$slider_center_padding    = G5ERE()->options()->get_option( 'single_property_gallery_slider_center_padding', 'on' );


		$slick_options = array(
			'arrows'   => $slider_navigation_enable === 'on',
			'dots'     => $slider_pagination_enable === 'on',
			'autoplay' => $slider_autoplay_enable === 'on'
		);

		if ( ( $slider_autoplay_enable === 'on' ) && ( $slider_autoplay_timeout > 0 ) ) {
			$slick_options['autoplaySpeed'] = $slider_autoplay_timeout;
		}


		if ( $property_gallery_layout === 'slider' || $property_gallery_layout === 'thumbnail' ) {
			$slick_options['slidesToScroll'] = 1;
			$slick_options['slidesToShow']   = 1;
		}


		if ( $property_gallery_layout === 'carousel' ) {
			$slick_options['centerMode'] = $slider_center_enable === 'on';
			if ( ( $slider_center_enable === 'on' ) && ( $slider_center_padding !== '' ) ) {
				$slick_options['centerPadding'] = $slider_center_padding;
			}

			if ( $slider_center_enable === 'on' ) {
				$slick_options['infinite'] = true;
			}


			$slides_to_show    = absint( G5ERE()->options()->get_option( 'single_property_gallery_slides_to_show', 3 ) );
			$slides_to_show_lg = absint( G5ERE()->options()->get_option( 'single_property_gallery_slides_to_show_lg', '' ) );
			$slides_to_show_md = absint( G5ERE()->options()->get_option( 'single_property_gallery_slides_to_show_md', '' ) );
			$slides_to_show_sm = absint( G5ERE()->options()->get_option( 'single_property_gallery_slides_to_show_sm', '' ) );
			$slides_to_show_xs = absint( G5ERE()->options()->get_option( 'single_property_gallery_slides_to_show_xs', '' ) );


			if ( $slides_to_show_lg == 0 ) {
				$slides_to_show_lg = $slides_to_show;
			}
			if ( $slides_to_show_md == 0 ) {
				$slides_to_show_md = $slides_to_show_lg;
			}
			if ( $slides_to_show_sm == 0 ) {
				$slides_to_show_sm = $slides_to_show_md;
			}
			if ( $slides_to_show_xs == 0 ) {
				$slides_to_show_xs = $slides_to_show_sm;
			}

			$slick_options['slidesToShow']   = $slides_to_show;
			$slick_options['slidesToScroll'] = $slides_to_show;
			$slick_options['responsive']     = array();

			if ( $slides_to_show_lg > 0 ) {
				$slick_options['responsive'][] = array(
					'breakpoint' => 1200,
					'settings'   => array(
						'slidesToShow'   => $slides_to_show_lg,
						'slidesToScroll' => $slides_to_show_lg,
						'centerMode'     => false,
						'centerPadding'  => '0px',
					)
				);
			}

			if ( $slides_to_show_md > 0 ) {
				$slick_options['responsive'][] = array(
					'breakpoint' => 992,
					'settings'   => array(
						'slidesToShow'   => $slides_to_show_md,
						'slidesToScroll' => $slides_to_show_md,
						'centerMode'     => false,
						'centerPadding'  => '0px',
					)
				);
			}

			if ( $slides_to_show_sm > 0 ) {
				$slick_options['responsive'][] = array(
					'breakpoint' => 768,
					'settings'   => array(
						'slidesToShow'   => $slides_to_show_sm,
						'slidesToScroll' => $slides_to_show_sm,
						'centerMode'     => false,
						'centerPadding'  => '0px',
					)
				);
			}

			if ( $slides_to_show_xs > 0 ) {
				$slick_options['responsive'][] = array(
					'breakpoint' => 576,
					'settings'   => array(
						'slidesToShow'   => $slides_to_show_xs,
						'slidesToScroll' => $slides_to_show_xs,
						'centerMode'     => false,
						'centerPadding'  => '0px',
					)
				);
			}
		}
		$slick_options = apply_filters( "g5ere_single_property_gallery_{$property_gallery_layout}_slick_options", $slick_options );
	}

	if ( in_array( $property_gallery_layout, array( 'metro-1', 'metro-2', 'metro-3', 'metro-4' ) ) ) {
		$image_size   = G5ERE()->options()->get_option( 'single_property_gallery_metro_image_size', 'large' );
		$image_ratio  = '';
		$image_mode   = '';
		$_image_ratio = G5ERE()->options()->get_option( 'single_property_gallery_metro_image_ratio' );
		if ( is_array( $_image_ratio ) ) {
			$_image_ratio_width  = isset( $_image_ratio['width'] ) ? absint( $_image_ratio['width'] ) : 0;
			$_image_ratio_height = isset( $_image_ratio['height'] ) ? absint( $_image_ratio['height'] ) : 0;
			if ( ( $_image_ratio_width > 0 ) && ( $_image_ratio_height > 0 ) ) {
				$image_ratio = "{$_image_ratio_width}x{$_image_ratio_height}";
			}
		}
		if ( $image_ratio === '' ) {
			$image_mode = '1x1';
		}
	}


	if ( $map_enable === 'on' ) {
		G5ERE()->get_template( 'single-property/gallery/gallery.php', array(
			'property_gallery_layout' => $property_gallery_layout,
			'property_gallery'        => $property_gallery,
			'image_size'              => $image_size,
			'image_ratio'             => $image_ratio,
			'image_mode'              => $image_mode,
			'columns_gutter'          => $columns_gutter,
			'custom_class'            => $custom_class,
			'slick_options'           => $slick_options
		) );
	} else {
		G5ERE()->get_template( "single-property/gallery/{$property_gallery_layout}.php", array(
			'property_gallery' => $property_gallery,
			'image_size'       => $image_size,
			'image_ratio'      => $image_ratio,
			'image_mode'       => $image_mode,
			'columns_gutter'   => $columns_gutter,
			'custom_class'     => $custom_class,
			'slick_options'    => $slick_options
		) );
	}

}

function g5ere_template_single_property_featured_image() {
	G5ERE()->get_template( 'single-property/featured-image.php' );
}

function g5ere_template_single_property_full_map() {
	if ( ! is_singular( 'property' ) ) {
		return;
	}
	$single_property_layout = G5ERE()->options()->get_option( 'single_property_layout', 'layout-1' );
	if ( ! in_array( $single_property_layout, array( 'layout-6', 'layout-7' ) ) ) {
		return;
	}
	$single_property_map_enable = G5ERE()->options()->get_option( 'single_property_map_enable' );
	if ( $single_property_map_enable !== 'on' ) {
		return;
	}
	G5ERE()->options()->set_option( 'single_property_gallery_map_enable', '' );
	g5ere_template_single_property_map();
}

function g5ere_template_single_property_map() {
	$location = g5ere_get_property_data_location_attributes();
	if ( ! $location ) {
		return;
	}

	$map_address_url = g5ere_get_property_map_address_url();
	G5ERE()->get_template( 'map/map.php', apply_filters( 'g5ere_template_single_property_map_args', array(
		'directions'          => true,
		'map_address_url'     => $map_address_url,
		'location_attributes' => $location,
		'wrap_class'          => 'g5ere__single-property-map',
		//'id'                  => 'g5ere__single_property_map',
		'el_class'            => 'g5ere__single-property-map-canvas'
	) ) );
}


function g5ere_template_breadcrumbs() {
	$single_property_layout = G5ERE()->options()->get_option( 'single_property_layout', 'layout-1' );
	if ( ! in_array( $single_property_layout, array(
		'layout-6',
		'layout-7',
	) )
	) {
		return;
	}
	g5ere_template_single_property_breadcrumbs();
}

function g5ere_template_single_property_breadcrumbs() {
	if ( ! is_singular( 'property' ) ) {
		return;
	}
	$single_property_breadcrumb_enable = G5ERE()->options()->get_option( 'single_property_breadcrumb_enable', 'on' );
	if ( $single_property_breadcrumb_enable !== 'on' ) {
		return;
	}
	g5core_template_breadcrumbs( 'g5ere__single-breadcrumbs g5ere__single-property-breadcrumbs' );
}


function g5ere_template_single_property_block_header() {
	G5ERE()->get_template( 'single-property/block/header.php' );
}

function g5ere_template_single_agency_layout_01() {
	G5ERE()->get_template( 'agency/single/layout/layout-01.php' );
}


function g5ere_template_property_meta() {
	$meta = g5ere_get_single_property_meta();
	if ( empty( $meta ) ) {
		return;
	}
	G5ERE()->get_template( 'single-property/meta/meta.php', array( 'meta' => $meta ) );
}

function g5ere_template_loop_property_date() {
	$single_property_date_enable = G5ERE()->options()->get_option( 'single_property_date_enable', 'on' );
	if ( $single_property_date_enable !== 'on' ) {
		return;
	}
	G5ERE()->get_template( 'loop/property-date.php' );
}

function g5ere_template_loop_property_view_count() {
	$single_property_view_enable = G5ERE()->options()->get_option( 'single_property_view_enable', 'on' );
	if ( $single_property_view_enable !== 'on' ) {
		return;
	}
	G5ERE()->get_template( 'loop/property-view.php' );
}

function g5ere_template_property_action() {
	$actions = g5ere_get_single_property_actions();
	if ( empty( $actions ) ) {
		return;
	}
	G5ERE()->get_template( 'single-property/actions/actions.php', array( 'actions' => $actions ) );
}

function g5ere_template_single_property_share() {
	$single_property_share_enable = G5ERE()->options()->get_option( 'single_property_share_enable', 'on' );
	if ( $single_property_share_enable !== 'on' ) {
		return;
	}
	$social_share = g5core_get_social_share();
	if ( ! $social_share ) {
		return;
	}
	G5ERE()->get_template( 'single-property/actions/share.php', array( 'social_share' => $social_share ) );
}

function g5ere_template_single_property_print() {
	$single_property_print_enable = G5ERE()->options()->get_option( 'single_property_print_enable', 'on' );
	if ( $single_property_print_enable !== 'on' ) {
		return;
	}
	G5ERE()->get_template( 'single-property/actions/print.php' );
}

function g5ere_template_property_title( $args = array() ) {
	$args = wp_parse_args( $args, array(
		'post' => 0,
	) );
	G5ERE()->get_template( 'single-property/data/title.php', $args );
}

function g5ere_template_property_title_print( $args = array() ) {
	$args = wp_parse_args( $args, array(
		'post' => 0,
	) );
	G5ERE()->get_template( 'single-property/print/title.php', $args );
}

function g5ere_template_property_title_address_open() {
	echo '<div class="g5ere__property-title-address">';
}

function g5ere_template_property_title_price_open() {
	echo '<div class="g5ere__property-title-price">';
}

function g5ere_template_property_action_meta_open() {
	echo '<div class="g5ere__property-meta-action">';
}

function g5ere_template_tag_div_close() {
	echo '</div>';
}

function g5ere_template_single_property_content_block() {
	$content_blocks = g5ere_get_single_property_content_blocks();
	if ( $content_blocks === false ) {
		return;
	}
	foreach ( $content_blocks as $key => $value ) {
		G5ERE()->get_template( "single-property/block/{$key}.php" );
	}
}

function g5ere_template_single_property_content_block_two_columns() {
	$content_blocks = g5ere_get_single_property_content_blocks();
	if ( $content_blocks === false ) {
		return;
	}
	G5ERE()->get_template( "single-property/layout/two-columns.php", array( 'content_blocks' => $content_blocks ) );
}

function g5ere_single_property_block_description() {
	$single_property_layout = G5ERE()->options()->get_option( 'single_property_layout', 'layout-1' );
	if ( in_array( $single_property_layout, array( 'layout-1', 'layout-2', 'layout-6', 'layout-7' ) ) ) {
		G5ERE()->get_template( "single-property/block/description.php" );
	}
}

function g5ere_template_property_identity( $args = array() ) {
	$args              = wp_parse_args( $args, array(
		'property_id' => get_the_ID(),
	) );
	$property_identity = get_post_meta( $args['property_id'], ERE_METABOX_PREFIX . 'property_identity', true );
	if ( empty( $property_identity ) ) {
		$property_identity = get_the_ID();
	}
	G5ERE()->get_template( 'single-property/data/identity.php', array( 'property_identity' => $property_identity ) );
}

function g5ere_template_property_type( $args = array() ) {
	$args          = wp_parse_args( $args, array(
		'property_id' => get_the_ID(),
	) );
	$property_type = get_the_term_list( $args['property_id'], 'property-type', '', ', ', '' );
	if ( $property_type === false || is_a( $property_type, 'WP_Error' ) ) {
		return;
	}
	G5ERE()->get_template( 'single-property/data/type.php', array( 'property_type' => $property_type ) );
}

function g5ere_template_property_status( $args = array() ) {
	$args            = wp_parse_args( $args, array(
		'property_id' => get_the_ID(),
	) );
	$property_status = get_the_term_list( $args['property_id'], 'property-status', '', ', ', '' );
	if ( $property_status === false || is_a( $property_status, 'WP_Error' ) ) {
		return;
	}
	G5ERE()->get_template( 'single-property/data/status.php', array( 'property_status' => $property_status ) );
}

function g5ere_template_property_label( $args = array() ) {
	$args           = wp_parse_args( $args, array(
		'property_id' => get_the_ID(),
	) );
	$property_label = get_the_term_list( $args['property_id'], 'property-label', '', ', ', '' );
	if ( $property_label === false || is_a( $property_label, 'WP_Error' ) ) {
		return;
	}
	G5ERE()->get_template( 'single-property/data/label.php', array( 'property_label' => $property_label ) );
}

function g5ere_template_property_bedrooms( $args = array() ) {
	$args              = wp_parse_args( $args, array(
		'property_id' => get_the_ID(),
	) );
	$property_bedrooms = get_post_meta( $args['property_id'], ERE_METABOX_PREFIX . 'property_bedrooms', true );
	if ( $property_bedrooms === '' ) {
		return;
	}
	G5ERE()->get_template( 'single-property/data/bedrooms.php', array( 'property_bedrooms' => $property_bedrooms ) );
}


function g5ere_template_property_bathrooms( $args = array() ) {
	$args               = wp_parse_args( $args, array(
		'property_id' => get_the_ID(),
	) );
	$property_bathrooms = get_post_meta( $args['property_id'], ERE_METABOX_PREFIX . 'property_bathrooms', true );
	if ( $property_bathrooms === '' ) {
		return;
	}
	G5ERE()->get_template( 'single-property/data/bathrooms.php', array( 'property_bathrooms' => $property_bathrooms ) );
}

function g5ere_template_property_price( $args = array() ) {
	$args             = wp_parse_args( $args, array(
		'property_id' => get_the_ID(),
	) );
	$property_id      = $args['property_id'];
	$price            = get_post_meta( $property_id, ERE_METABOX_PREFIX . 'property_price', true );
	$price_short      = get_post_meta( $property_id, ERE_METABOX_PREFIX . 'property_price_short', true );
	$price_unit       = get_post_meta( $property_id, ERE_METABOX_PREFIX . 'property_price_unit', true );
	$price_prefix     = get_post_meta( $property_id, ERE_METABOX_PREFIX . 'property_price_prefix', true );
	$price_postfix    = get_post_meta( $property_id, ERE_METABOX_PREFIX . 'property_price_postfix', true );
	$empty_price_text = ere_get_option( 'empty_price_text' );
	G5ERE()->get_template( 'single-property/data/price.php', array(
		'price'            => $price,
		'price_short'      => $price_short,
		'price_unit'       => $price_unit,
		'price_prefix'     => $price_prefix,
		'price_postfix'    => $price_postfix,
		'empty_price_text' => $empty_price_text
	) );
}

function g5ere_template_property_year( $args = array() ) {
	$args          = wp_parse_args( $args, array(
		'property_id' => get_the_ID(),
	) );
	$property_year = get_post_meta( $args['property_id'], ERE_METABOX_PREFIX . 'property_year', true );
	if ( $property_year === '' ) {
		return;
	}
	G5ERE()->get_template( 'single-property/data/year.php', array( 'property_year' => $property_year ) );
}

function g5ere_template_property_size( $args = array() ) {
	$args          = wp_parse_args( $args, array(
		'property_id' => get_the_ID(),
	) );
	$property_size = get_post_meta( $args['property_id'], ERE_METABOX_PREFIX . 'property_size', true );
	if ( $property_size === '' ) {
		return;
	}
	$measurement_units = ere_get_measurement_units();
	G5ERE()->get_template( 'single-property/data/size.php', array(
		'property_size'     => $property_size,
		'measurement_units' => $measurement_units
	) );
}

function g5ere_template_property_garage( $args = array() ) {
	$args            = wp_parse_args( $args, array(
		'property_id' => get_the_ID(),
	) );
	$property_garage = get_post_meta( $args['property_id'], ERE_METABOX_PREFIX . 'property_garage', true );
	if ( $property_garage === '' ) {
		return;
	}
	G5ERE()->get_template( 'single-property/data/garage.php', array( 'property_garage' => $property_garage ) );
}

function g5ere_template_property_address( $args = array() ) {
	$args             = wp_parse_args( $args, array(
		'property_id' => get_the_ID(),
	) );
	$property_address = get_post_meta( $args['property_id'], ERE_METABOX_PREFIX . 'property_address', true );
	if ( $property_address === '' ) {
		return;
	}
	$google_map_address_url = g5ere_get_property_map_address_url( $args );
	G5ERE()->get_template( 'single-property/data/address.php', array(
		'property_address'       => $property_address,
		'google_map_address_url' => $google_map_address_url
	) );
}

function g5ere_template_star_rating( $args = array() ) {
	$args = wp_parse_args( $args, array(
		'rating'       => 0,
		'count'        => 0,
		'show_count'   => false,
		'custom_class' => ''
	) );
	if ( 0 < $args['count'] ) {
		/* translators: 1: rating 2: rating count */
		$label = sprintf( _n( 'Rated %1$s out of 5 based on %2$s customer rating', 'Rated %1$s out of 5 based on %2$s customer ratings', absint( $args['count'] ), 'g5-ere' ), $args['rating'], $args['count'] );
	} else {
		/* translators: %s: rating */
		$label = sprintf( esc_html__( 'Rated %s out of 5', 'g5-ere' ), $args['rating'] );
	}
	$args['label'] = $label;

	G5ERE()->get_template( 'global/rating.php', $args );
}


function g5ere_template_star_rating_icon( $rating = 5 ) {
	G5ERE()->get_template( 'global/rating-icon.php', array( 'rating' => $rating ) );
}

function g5ere_template_single_property_contact_info( $agent_info ) {
	if ( ! isset( $agent_info ) ) {
		$agent_info = g5ere_get_agent_info_by_property();
	}
	if ( $agent_info === false ) {
		return;
	}
	G5ERE()->get_template( 'single-property/contact/contact-info.php', array( 'agent_info' => $agent_info ) );
}

function g5ere_template_property_agent_property( $layout ) {
	if ( is_singular( 'property' ) && $layout == 'layout-02' ) {
		$info_arr = g5ere_get_agent_info_by_property();
		extract( $info_arr );
		/**
		 * @var $agent_id
		 * @var $agent_name
		 * @var $agent_link
		 */
		$ere_property = new ERE_Property();
		$count        = $ere_property->get_total_properties_by_user( $agent_id, $agent_id );
		G5ERE()->get_template( 'widgets/contact/property.php', array(
			'count'      => $count,
			'agent_name' => $agent_name,
			'agent_link' => $agent_link
		) );
	}

}


function g5ere_review_list_comment_callback( $comment, $args, $depth ) {
	global $post;
	if ( ! is_a( $post, 'WP_Post' ) ) {
		return;
	}
	$meta_key = '';
	switch ( $post->post_type ) {
		case 'property':
			$meta_key = 'property_rating';
			break;
		case 'agent':
			$meta_key = 'agent_rating';
			break;
	}

	$rating = absint( get_comment_meta( $comment->comment_ID, $meta_key, true ) );
	G5ERE()->get_template( 'global/comment.php', array(
		'comment' => $comment,
		'args'    => $args,
		'depth'   => $depth,
		'rating'  => $rating
	) );
}

function g5ere_template_message() {
	G5ERE()->get_template( 'global/message.php' );
}

function g5ere_google_nearby_place_items_template() {
	$service     = G5ERE()->options()->get_option( 'nearby_places_service', 'google' );
	$map_service = G5ERE()->options()->get_option( 'map_service', 'google' );
	if ( ! is_singular( 'property' ) ) {
		return;
	}
	if ( $service == 'yelp' ) {
		return;
	}
	if ( $map_service != 'google' ) {
		return;
	}
	G5ERE()->get_template( 'single-property/google-nearby-place/items.php' );

}

function g5ere_mortgage_calculator_output_template() {
	if ( ! is_singular( 'property' ) ) {
		return;
	}
	G5ERE()->get_template( 'global/mc-output.php' );
}

function g5ere_template_dashboard_section_overview() {
	G5ERE()->get_template( 'dashboards/overview.php' );
}

function g5ere_template_custom_search_field( $key, $args = array() ) {
	$field = ere_get_search_additional_field( $key );
	if ( $field === false ) {
		return;
	}
	$args      = wp_parse_args( $args, array(
		'prefix'          => '',
		'css_class_field' => '',
		'field'           => $field
	) );
	$type      = isset( $field['field_type'] ) ? $field['field_type'] : 'text';
	$file_type = $type;
	if ( $type === 'textarea' ) {
		$file_type = 'text';
	}

	if ( $type === 'checkbox_list' || $type === 'radio' ) {
		$file_type = 'select';
	}
	G5ERE()->get_template( "search-fields/type/{$file_type}.php", $args );

}
Back to Directory File Manager