/**
  * Render the  widget
  *
  * @since 0.0.1
  *
  * @param array $args
  * @param Lsx_Properties_Widget $instance
  */
 function widget($args, $instance)
 {
     extract($args, EXTR_SKIP);
     $out[] = $before_widget;
     $title = empty($instance['title']) ? ' ' : apply_filters('widget_title', $instance['title']);
     if (!empty($title)) {
         $out[] = $before_title . $title . $after_title;
     }
     $args = array();
     if (!empty($instance['limit'])) {
         $args['limit'] = $instance['limit'];
     }
     if (!empty($instance['order'])) {
         $args['order'] = $instance['order'];
     }
     if (!empty($instance['featured'])) {
         $args['featured'] = true;
     }
     $happybeds_properties = Lsx_Properties::get_instance();
     $content = $happybeds_properties->render_property($args, null, null);
     if (empty($content)) {
         return;
     }
     $out[] = $content;
     $out[] = $after_widget;
     echo implode('', $out);
 }
/**
 * Suggested Property
 *
 * @package 	happybeds-property
 * @subpackage	template-tags
 * @category	related
 *
 * @param		$before			html
 * @param		$after			html
 */
function happybeds_related_property()
{
    if (false == get_theme_mod('happybeds_property_single_display_related_property', true)) {
        return;
    }
    $filters = array('post_type' => 'property');
    //Get the settings from the customizer options
    $limit = get_theme_mod('happybeds_property_single_related_property_amount', '3');
    $filters['posts_per_page'] = $limit;
    //Exclude the current post
    $filters['post__not_in'] = array(get_the_ID());
    //if its set to related then we need to check by the type.
    $type = get_theme_mod('happybeds_property_single_related_property_type', 'random');
    if ('property-type' == $type) {
        $term = get_theme_mod('happybeds_property_single_related_property_type_term', false);
        $filters['orderby'] = 'rand';
        $current_post = get_queried_object_id();
        if (false != $current_post) {
            $terms = wp_get_object_terms($current_post, 'property-type');
            //only allow relation by 1 property type term
            if (is_array($terms) != $term) {
                foreach ($terms as $term) {
                    $filters[$type] = $term->slug;
                }
            }
        }
    } elseif ('featured' == $type) {
        $filters['meta_value'] = 1;
        $filters['meta_key'] = '_is_featured';
        $filters['orderby'] = 'rand';
    } else {
        $filters['orderby'] = $type;
    }
    $property_query = new WP_Query($filters);
    if ($property_query->have_posts()) {
        ?>
	<div id="related-properties" class="col-md-12">
		<h3>Related Campsites</h3>

		<div class="lsx-property-wrapper filter-items-wrapper">
			<div id="property-infinite-scroll-wrapper" class="filter-items-container lsx-property masonry">
	<?php 
        Lsx_Properties::remove_jetpack_sharing();
        while ($property_query->have_posts()) {
            $property_query->the_post();
            if (function_exists('caldera_metaplate_from_file') && file_exists(LSX_PROPERTIES_PATH . 'templates/metaplate-related-property.html')) {
                echo caldera_metaplate_from_file(LSX_PROPERTIES_PATH . 'templates/metaplate-related-property.html', get_the_id());
            }
        }
        echo '</div>';
        echo '</div>';
        echo '</div>';
        wp_reset_postdata();
    }
}
function hbprop_rewrite_flush()
{
    Lsx_Properties::get_instance();
    flush_rewrite_rules();
}
 /**
  * Return an instance of this class.
  *
  * @since 0.0.1
  *
  * @return    object|Lsx_Properties    A single instance of this class.
  */
 public static function get_instance()
 {
     // If the single instance hasn't been set, set it now.
     if (null == self::$instance) {
         self::$instance = new self();
     }
     return self::$instance;
 }