/** * Widget Output * * @param $args (array) * @param $instance (array) Widget values. */ public function widget($args, $instance) { // widget output extract($args); $title = empty($instance['title']) ? ' ' : apply_filters('widget_title', $instance['title']); $number_of_posts = $instance['number_of_posts']; if (!post_type_exists('service')) { return false; } // Testimonials start $args = array('numberposts' => $number_of_posts, 'post_type' => 'service'); $services = get_posts($args); $widget_body = '<section class="featured-services-widget">'; foreach ($services as $service) { setup_postdata($service); $post_item = array('url' => $service->guid, 'content' => $service->post_content, 'title' => $service->post_title, 'image' => '', 'id' => $service->ID); if (has_post_thumbnail($service->ID)) { $post_image = wp_get_attachment_image_src(get_post_thumbnail_id($service->ID)); $post_item['image'] = '<img src="' . $post_image[0] . '" style="width:100%;" />'; } ob_start(); ?> <article class="featured-service" itemscope itemtype="http://schema.org/Offer"> <div class="service-image"> <?php echo $post_item['image']; ?> </div> <h4 itemprop="name"><?php echo $post_item['title']; ?> </h4> <p><?php echo PLS_Format::shorten_text($post_item['content'], 130); ?> </p> <p><a href="<?php echo $post_item['url']; ?> " itemprop="url">Read More</a></p> </article> <?php $single_testimonial = ob_get_clean(); /** Wrap the post in an article element and filter its contents. */ $single_testimonial = apply_filters('pls_widget_services_post_inner', $single_testimonial, $post_item, $instance, $widget_id); /** Append the filtered post to the post list. */ $widget_body .= apply_filters('pls_widget_services_post_outer', $single_testimonial, $post_item, $instance, $widget_id); } $widget_body .= '</section>'; // Display Widget echo $before_widget; if ($instance['title']) { echo $before_title . $title . $after_title; } echo $widget_body; echo $after_widget; }
function custom_listings_search_list($listing_item_html, $listing, $context_var) { // return $listing_item_html; /** Start output buffering. The buffered html will be returned to the filter. */ ob_start(); // pls_dump($listing); ?> <section class="list-item"> <section class="list-pic"> <div class="thumbs"> <?php if (is_array($listing['images'])) { ?> <?php echo PLS_Image::load($listing['images'][0]['url'], array('resize' => array('w' => 144, 'h' => 93, 'method' => 'crop'), 'fancybox' => true, 'as_html' => true)); ?> <?php } else { ?> <?php echo PLS_Image::load('', array('resize' => array('w' => 144, 'h' => 93, 'method' => 'crop'), 'fancybox' => true, 'as_html' => true)); ?> <?php } ?> </div> <?php if (isset($listing['rets']['mls_id'])) { ?> <p class="nrm-txt"><?php _e('MLS', 'manchester'); ?> #: <?php echo $listing['rets']['mls_id']; ?> </p> <?php } ?> </section> <section class="list-txt"> <section class="list-info"> <h5><a href="<?php echo $listing['cur_data']['url']; ?> "><?php echo $listing['location']['address']; ?> </a></h5> <h6><?php echo $listing['location']['locality'] . ', ' . $listing['location']['region']; ?> </h6> <p class="nrm-txt"><?php echo substr($listing['cur_data']['desc'], 0, 300); ?> </p> <p class="nrm-txt"> <b><?php echo $listing['cur_data']['beds']; ?> </b> <span class="beds-n-baths"><?php _e('Beds', 'manchester'); ?> </span> | <b><?php echo $listing['cur_data']['baths']; ?> </b> <span class="beds-n-baths"><?php _e('Baths', 'manchester'); ?> </span> <?php if ($listing['cur_data']['sqft'] != null) { ?> | <b><?php echo PLS_Format::number($listing['cur_data']['sqft'], array('abbreviate' => false, 'add_currency_sign' => false)); ?> </b><span class="beds-n-baths"> <?php _e('sqft', 'manchester'); ?> </span> <?php } ?> </p> </section> <section class="list-price"> <span class="green"><b><?php echo PLS_Format::number($listing['cur_data']['price'], array('abbreviate' => false, 'add_currency_sign' => true)); ?> </b><?php if (isset($listing['cur_data']['lse_trms'])) { echo $listing['cur_data']['lse_trms']; } ?> </span><br /> <?php if (!empty($listing['property_type'])) { ?> <span class="nrm-txt"><?php echo ucwords($listing['property_type']); ?> </span> <?php } ?> </section> <section class="list-links"> <!-- <section class="list-fav"><a href="#"><?php _e('Add to favorites', 'manchester'); ?> </a></section> --> <section class="list-req"><a href="mailto:<?php echo pls_get_option('pls-user-email'); ?> "><?php _e('Request more info', 'manchester'); ?> </a></section> <section class="list-btn1"> <div class="img_btn"><a href="<?php echo $listing['cur_data']['url']; ?> "><input type="submit" value="<?php _e('See Details', 'manchester'); ?> " class="button b-blue medium" /></a></div> </section> </section> </section> <?php PLS_Listing_Helper::get_compliance(array('context' => 'inline_search', 'agent_name' => $listing['rets']['aname'], 'office_name' => $listing['rets']['oname'], 'office_phone' => PLS_Format::phone($listing['contact']['phone']), 'agent_license' => isset($listing['rets']['alicense']) ? $listing['rets']['alicense'] : false, 'co_agent_name' => isset($listing['rets']['aconame']) ? $listing['rets']['aconame'] : false, 'co_office_name' => isset($listing['rets']['oconame']) ? $listing['rets']['oconame'] : false)); ?> <div class="separator-1-sma"></div> <?php $html = ob_get_clean(); // current js build throws a fit when newlines are present // will need to strip them. // added EMCA tag will solve in the future. $html = preg_replace('/[\\n\\r\\t]/', ' ', $html); return $html; }
function manchester_custom_slideshow_captions($data) { if (is_array($data)) { unset($data['captions']); // each full represents a listing we need to work with. // their position in the array matches the other relavent // info. if (isset($data['listing'])) { foreach ($data['listing'] as $index => $listing) { // pls_dump($listing); /** Get the listing caption. */ ob_start(); ?> <div id="caption-<?php echo $index; ?> " class="orbit-html-caption"> <a href="<?php echo $listing['cur_data']['url']; ?> "><p class="address"><?php echo $listing['location']['full_address']; ?> </p></a> <p> <span class="beds"><?php echo $listing['cur_data']['beds']; ?> <?php _e('Beds', 'manchester'); ?> </span> <span class="baths"> <?php echo $listing['cur_data']['baths']; ?> <?php _e('Baths', 'manchester'); ?> </span> <span class="price"> <?php echo PLS_Format::number($listing['cur_data']['price'], array('abbreviate' => false, 'add_currency_sign' => true)); if ($listing['cur_data']['lse_trms'] != null) { // translate lease terms to human form echo ' ' . PLS_Format::translate_lease_terms($listing); } ?> </span> </p> <a class="button b-blue large" href="<?php echo $listing['cur_data']['url']; ?> "><?php _e('See Details', 'manchester'); ?> </a> </div> <?php $data['captions'][] = trim(ob_get_clean()); } } } // error_log(var_export($data['captions'], true)); return $data; }
* * This is the template for the About Us page * */ $company_details = PLS_Plugin_API::get_company_details(); $comma_str = $company_details['location']['locality'] && $company_details['location']['region'] ? ', ' : ''; ?> <div id="main"> <div class="user-generated"> <h2><?php printf(__('About %s', 'tampa'), stripslashes($company_details['name'])); ?> </h2> <p id="company-phone"><?php echo PLS_Format::phone($company_details['phone']); ?> </p> <p id="company-address"><?php echo $company_details['location']['address'] . ' ' . $company_details['location']['unit']; ?> </p> <p id="company-city-state"> <?php printf('%s%s%s', $company_details['location']['locality'], $comma_str, $company_details['location']['region']); ?> </p> <p id="company-decription"><?php echo $company_details['description']; ?>
/** * Outputs and filters the widget. * * The widget connects to the plugin using the framework plugin api class. * If the class returns false, this means that either the plugin is * missing, either the it has no API key set. * * @since 0.0.1 */ public function widget($args, $instance) { list($args, $instance) = self::process_defaults($args, $instance); /** Extract the arguments into separate variables. */ extract($args, EXTR_SKIP); /** Get the agent information from the plugin. */ $agent = PLS_Plugin_API::get_user_details(); $agent_array = array(); // pls_dump($agent); /** If the plugin is active, and has an API key set... */ if ($agent) { /* Output the theme's $before_widget wrapper. */ echo $before_widget; /* If a title was input by the user, display it. */ $widget_title = ''; if (!empty($instance['title'])) { $widget_title = $before_title . apply_filters('widget_title', $instance['title'], $instance, $this->id_base) . $after_title; } /** This array will hold the html for the agent info sections and will be passed to the filters. */ $agent_html = $instance; unset($agent_html['title']); // Add Name if (!empty($instance['name_custom'])) { // if admin set custom name $agent_html['name'] = self::checkForCustom($instance, 'name'); $agent_array['name'] = $instance['name_custom']; } else { // otherwise use admin's name if (!empty($instance['name']) && (!empty($agent['user']['first_name']) || !empty($agent['user']['last_name']))) { $agent_html['name'] = pls_h_p(trim($agent['user']['first_name'] . ' ' . $agent['user']['last_name']), array('class' => 'fn h5', 'itemprop' => 'name')); $agent_array['name'] = $agent['user']['first_name'] . ' ' . $agent['user']['last_name']; } else { $agent_html['name'] = ''; $agent_array['name'] = ''; } } // Add Email if (!empty($instance['email_custom'])) { // if admin set custom email $agent_html['email'] = self::checkForCustom($instance, 'email'); $agent_array['email'] = $instance['email_custom']; } else { // otherwise use admin's email if (!empty($instance['email']) && !empty($agent['user']['email'])) { $agent_html['email'] = pls_h_p(pls_h_a("mailto:{$agent['user']['email']}", $agent['user']['email']), array('class' => 'email', 'itemprop' => 'email')); $agent_array['email'] = $agent['user']['email']; } else { $agent_html['email'] = ''; $agent_array['email'] = ''; } } // Add Phone if (!empty($instance['phone_custom'])) { // if admin set custom phone $agent_html['phone'] = self::checkForCustom($instance, 'phone'); $agent_array['phone'] = $instance['phone_custom']; } else { // otherwise use admin's phone if (!empty($instance['phone']) && !empty($agent['user']['phone'])) { $agent_html['phone'] = pls_h_p(PLS_Format::phone($agent['user']['phone']), array('class' => 'phone', 'itemprop' => 'phone')); $agent_array['phone'] = PLS_Format::phone($agent['user']['phone'], array('class' => 'phone', 'itemprop' => 'phone')); } else { $agent_html['phone'] = ''; $agent_array['phone'] = ''; } } // Add Description if (!empty($instance['description_custom'])) { // if admin set custom description $agent_html['description'] = self::checkForCustom($instance, 'description'); $agent_array['description'] = $instance['description_custom']; } else { // otherwise use admin's descriptions if (!empty($instance['description']) && pls_get_option('pls-user-description')) { $agent_bio = pls_get_option('pls-user-description'); $agent_html['description'] = pls_h_p($agent_bio, array('class' => 'desc p4', 'itemprop' => 'description')); $agent_array['description'] = $agent_bio; } else { $agent_html['description'] = ''; $agent_array['description'] = ''; } } // Add Photo if (!empty($instance['image_uri'])) { // if admin set custom photo self::checkForCustom($instance, 'photo'); $agent_array['photo'] = $instance['image_uri']; } else { // otherwise use admin's photo $user_image_option = pls_get_option('pls-user-image'); if (!empty($instance['photo']) && !empty($user_image_option)) { $agent_html['photo'] = pls_h_img(@pls_get_option('pls-user-image'), trim($agent['user']['first_name'] . ' ' . $agent['user']['last_name']), array('class' => 'photo', 'itemprop' => 'image') + array() + array()); $agent_array['photo'] = $user_image_option; } else { if (isset($agent['user']['headshot'])) { $agent_html['photo'] = pls_h_img($agent['user']['headshot'], trim($agent['user']['first_name'] . ' ' . $agent['user']['last_name']), array('class' => 'photo', 'itemprop' => 'image') + array() + array()); $agent_array['photo'] = $agent['user']['headshot']; } else { $agent_array['photo'] = ''; } } } // Form the HTML elements // photo $agent_html['photo'] = '<img class="pls-agent-phone" src="' . esc_url($instance['image_uri']) . '" />'; // texts $agent_info = array('name', 'email', 'phone', 'description'); foreach ($agent_info as $value) { $agent_html[$value] = pls_h_p($agent_html[$value], array('class' => 'pls-agent-' . $value)); } /** Combine the agent information. */ $widget_body = $agent_html['photo'] . $agent_html['name'] . $agent_html['email'] . $agent_html['phone'] . $agent_html['description']; /** Wrap the agent information in a section element. */ $widget_body = apply_filters('pls_widget_agent_inner', $widget_body, $agent_html, $agent_array, $instance, $agent, $widget_id); /** Apply a filter on the whole widget */ echo apply_filters('pls_widget_agent', $widget_title . $widget_body, $widget_title, $before_title, $after_title, $widget_body, $agent_html, $agent, $instance, $widget_id); /* Close the theme's widget wrapper. */ if ($args['clearfix']) { echo '<div class="clearfix"></div>'; } echo $after_widget; } elseif (current_user_can('administrator')) { /** Display an error message if the user is admin. */ // echo pls_get_no_plugin_placeholder( $widget_id ); } }
function manchester_custom_home_listing_list($listing_html, $listing_data) { // pls_dump($listing_data); ob_start(); ?> <section class="list-item"> <section class="list-pic"> <div class="thumbs"> <?php if (isset($listing_data['images']) && is_array($listing_data['images'])) { ?> <?php echo PLS_Image::load($listing_data['images'][0]['url'], array('resize' => array('w' => 144, 'h' => 93, 'method' => 'crop'), 'fancybox' => true)); ?> <?php } else { ?> <?php echo PLS_Image::load('', array('resize' => array('w' => 144, 'h' => 93, 'method' => 'crop'), 'fancybox' => true)); ?> <?php } ?> </div> <?php if (isset($listing_data['rets']['mls_id'])) { ?> <p class="nrm-txt"><?php _e('MLS', 'manchester'); ?> #: <?php echo $listing_data['rets']['mls_id']; ?> </p> <?php } ?> </section> <section class="list-txt"> <section class="list-info"> <h5><a href="<?php echo $listing_data['cur_data']['url']; ?> "><?php echo $listing_data['location']['address']; ?> </a></h5> <h6><?php echo $listing_data['location']['locality']; ?> , <?php echo $listing_data['location']['region']; ?> </h6> <?php if (isset($listing_data['cur_data']['desc'])) { echo '<p class="nrm-txt">'; if (strlen($listing_data['cur_data']['desc']) < 150) { echo $listing_data['cur_data']['desc']; } else { $position = strrpos(substr($listing_data['cur_data']['desc'], 0, 150), ' '); echo substr($listing_data['cur_data']['desc'], 0, $position) . '...'; } echo '</p>'; } ?> <p class="nrm-txt"> <b><?php echo $listing_data['cur_data']['beds']; ?> </b> <span class="beds-n-baths"><?php _e('Beds', 'manchester'); ?> </span> | <b><?php echo $listing_data['cur_data']['baths']; ?> </b> <span class="beds-n-baths"><?php _e('Baths', 'manchester'); ?> </span> <?php if (isset($listing_data['cur_data']['sqft'])) { echo '| <b>' . PLS_Format::number($listing_data['cur_data']['sqft'], array('abbreviate' => false, 'add_currency_sign' => false)) . '</b><span class="beds-n-baths"> ' . __('sqft', 'manchester') . '</span>'; } ?> </p> </section><!-- /list-info --> <section class="list-price"> <span class="green"><b><?php echo PLS_Format::number($listing_data['cur_data']['price'], array('abbreviate' => false)); ?> </b> <?php if ($listing_data['cur_data']['lse_trms'] != null) { // translate lease terms to human form echo PLS_Format::translate_lease_terms($listing_data); } ?> </span><br /> <span class="nrm-txt"> <?php if ($listing_data['property_type'] == "fam_home") { echo __("Single Family Home", 'manchester'); } else { $prop_type_frmttd = is_array($listing_data['property_type']) ? implode($listing_data['property_type']) : $listing_data['property_type']; echo ucwords($prop_type_frmttd); } ?> </span> </section><!-- /list-price --> <section class="list-links"> <!-- <section class="list-fav"><a href="#">Add to favorites</a></section> --> <?php $api_whoami = PLS_Plugin_API::get_user_details(); if (pls_get_option('pls-user-email')) { ?> <section class="list-req"> <a href="mailto:<?php echo pls_get_option('pls-user-email'); ?> " target="_blank"><?php _e('Request more info', 'manchester'); ?> </a> </section> <?php } else { ?> <section class="list-req"> <a href="mailto:<?php echo $api_whoami['user']['email']; ?> "><?php _e('Request more info', 'manchester'); ?> </a> </section> <?php } ?> <section class="list-btn1"> <div class="img_btn"> <a href="<?php echo $listing_data['cur_data']['url']; ?> "><input type="submit" Value="<?php _e('See Details', 'manchester'); ?> " class="button b-blue medium" /></a> </div> </section> </section><!-- /list-links --> </section><!-- /list-text --> <?php PLS_Listing_Helper::get_compliance(array('context' => 'inline_search', 'agent_name' => $listing_data['rets']['aname'], 'office_name' => $listing_data['rets']['oname'], 'office_phone' => PLS_Format::phone($listing_data['contact']['phone']), 'agent_license' => isset($listing_data['rets']['alicense']) ? $listing_data['rets']['alicense'] : false, 'co_agent_name' => isset($listing_data['rets']['aconame']) ? $listing_data['rets']['aconame'] : false, 'co_office_name' => isset($listing_data['rets']['oconame']) ? $listing_data['rets']['oconame'] : false)); ?> </section><!-- /list-item --> <div class="separator-1-sma"></div> <?php // END FOR EACH ?> <?php $listing_html = ob_get_clean(); return $listing_html; }
</li> <?php } ?> </div> <?php } ?> <?php if (isset($amenities['uncur'])) { ?> <div class="amenities grid_8 alpha"> <h3>Local Amenities</h3> <?php $amenities['uncur'] = PLS_Format::translate_amenities($amenities['uncur']); ?> <?php foreach ($amenities['uncur'] as $amenity => $value) { ?> <li><span><?php echo $amenity; ?> </span> <?php echo $value; ?> </li> <?php } ?> </div>
function custom_manchester_widget_html_filter($listing_html, $listing_data) { // pls_dump($listing_data); ob_start(); ?> <section class="listing-item"> <h4> <a href="<?php echo $listing_data['cur_data']['url']; ?> "><?php echo $listing_data['location']['address']; ?> </a> </h4> <section class="details"> <span class="bed"><strong><?php echo $listing_data['cur_data']['beds']; ?> </strong> <?php _e('Beds', 'manchester'); ?> </span> <span class="bath"><strong><?php echo $listing_data['cur_data']['baths']; ?> </strong> <?php _e('Baths', 'manchester'); ?> </span> <span class="area"><strong><?php echo PLS_Format::number($listing_data['cur_data']['sqft'], array('abbreviate' => false, 'add_currency_sign' => false)); ?> </strong> <?php _e('sqft', 'manchester'); ?> </span> </section> <section class="featured-image"> <?php if (isset($listing_data['images']) && is_array($listing_data['images'])) { ?> <a href="<?php echo $listing_data['cur_data']['url']; ?> "> <?php echo PLS_Image::load($listing_data['images'][0]['url'], array('resize' => array('w' => 280, 'h' => 170, 'method' => 'crop'), 'fancybox' => true)); ?> </a> <?php } ?> </section> <?php if (isset($listing_data['rets']['mls_id'])) { ?> <p class="mls"><?php _e('MLS', 'manchester'); ?> #: <?php echo $listing_data['rets']['mls_id']; ?> </p> <?php } ?> <a class="learn-more" href="<?php echo $listing_data['cur_data']['url']; ?> "><?php _e('Learn More', 'manchester'); ?> </a> <?php PLS_Listing_Helper::get_compliance(array('context' => 'listings_widget', 'agent_name' => $listing_data['rets']['aname'], 'office_name' => $listing_data['rets']['oname'], 'office_phone' => PLS_Format::phone($listing_data['contact']['phone']), 'agent_license' => isset($listing_data['rets']['alicense']) ? $listing_data['rets']['alicense'] : false, 'co_agent_name' => isset($listing_data['rets']['aconame']) ? $listing_data['rets']['aconame'] : false, 'co_office_name' => isset($listing_data['rets']['oconame']) ? $listing_data['rets']['oconame'] : false)); ?> <div class="clearfix"></div> </section> <?php $listing_html = ob_get_clean(); return $listing_html; }
/** * Returns a list of properties listed formated in a default html. * * This function takes the raw properties data returned by the plugin and * formats wrapps it in html. The returned html is filterable in multiple * ways. * * The defaults are as follows: * 'width' - Default 100. The listing image width. If set to 0, * width is not added. * 'height' - Default false. The listing image height. If set to 0, * width is not added. * 'placeholder_img' - Defaults to placeholder image. The path to the * listing image that should be use if the listing has no images. * 'context' - An execution context for the function. Used when the * filters are created. * 'context_var' - Any variable that needs to be passed to the filters * when function is executed. * 'limit' - Default is 5. Total number of listings to retrieve. Maximum * set to 50. * Defines the following filters: * pls_listings_request[_context] - Filters the request parameters. * pls_listing[_context] - Filters the individual listing html. * pls_listings[_context] - Filters the complete listings list html. * * @static * @param array|string $args Optional. Overrides defaults. * @return string The html with the list of properties. * @since 0.0.1 */ public static function init($args = '') { $cache = new PLS_Cache('list'); if ($result = $cache->get($args)) { // return $result; } /** Define the default argument array. */ $defaults = array('width' => 100, 'height' => 0, 'context' => '', 'context_var' => false, 'featured_option_id' => false, 'limit' => 5, 'sort_type' => 'asc', 'request_params' => '', 'neighborhood_polygons' => false); /** Merge the arguments with the defaults. */ $args = wp_parse_args($args, $defaults); /** Extract the arguments after they merged with the defaults. */ extract($args, EXTR_SKIP); // Sanitize the width if ($width) { $width = absint($width); } /** Sanitize the height. */ if ($height) { $height = absint($height); } $request_params = wp_parse_args($args, array('limit' => $limit, 'sort_type' => $sort_type)); // Filter the request parameters $request_params = apply_filters(pls_get_merged_strings(array('pls_listings_request', $context), '_', 'pre', false), $request_params, $context_var); // Start off with a placeholder in case the plugin is not active or there is no API key... $listings_raw = PLS_Listing_Helper::$default_listing; // If plugin is active, grab listings intelligently... if (!pls_has_plugin_error()) { $listings_raw = false; if ($featured_option_id) { $listings_raw = PLS_Listing_Helper::get_featured($featured_option_id, $args); } if ($neighborhood_polygons) { $listings_raw = PLS_Plugin_API::get_polygon_listings(array('neighborhood_polygons' => $neighborhood_polygons)); } if ($listings_raw === false || isset($listings_raw['listings']) && empty($listings_raw['listings'])) { $listings_raw = PLS_Plugin_API::get_listings($request_params); } } /** Define variable which will contain the html string with the listings. */ $return = ''; /** Set the listing image attributes. */ $listing_img_attr = array(); if ($width) { $listing_img_attr['width'] = $width; } if ($height) { $listing_img_attr['height'] = $height; } /** Collect the html for each listing. */ $listings_html = array(); // filter listings before output if (isset($featured_listing_id)) { $listings_raw = apply_filters($context . '_partial_get_listings', $listings_raw, $featured_listing_id); } // For repeated use in the loop... $listing_cache = new PLS_Cache('Listing'); // Curate the listing_data... foreach ($listings_raw['listings'] as $listing_data) { // Ignore featured listings without images if (!empty($args['featured_option_id']) && empty($listing_data['images'])) { continue; } $listing_html = ''; $cache_id = array('context' => $context, 'featured_option_id' => $featured_option_id, 'listing_id' => $listing_data['id']); if ($cached_listing_html = $listing_cache->get($cache_id)) { $listing_html = $cached_listing_html; } if (empty($listing_html)) { // Use the placeholder image if the property has no photo if (!$listing_data['images']) { $listing_data['images'][0]['url'] = ''; $listing_data['images'][0]['order'] = 0; } // Remove the ID for each image (not needed by theme developers) and add the image HTML foreach ($listing_data['images'] as $image) { unset($image['id']); $image['html'] = pls_h_img($image['url'], $listing_data['location']['address'], $listing_img_attr); } $location = $listing_data['location']; $full_address = $location['address'] . ' ' . $location['region'] . ', ' . $location['locality'] . ' ' . $location['postal']; ob_start(); ?> <div class="listing-item grid_8 alpha" itemscope itemtype="http://schema.org/Offer"> <div class="listing-thumbnail grid_3 alpha"> <a href="<?php echo @$listing_data['cur_data']['url']; ?> "> <?php $property_images = is_array($listing_data['images']) ? $listing_data['images'] : array(); usort($property_images, array(__CLASS__, 'order_listing_images')); ?> <?php echo PLS_Image::load($property_images[0]['url'], array('resize' => array('w' => 210, 'h' => 140), 'fancybox' => true, 'as_html' => true, 'html' => array('alt' => $listing_data['location']['full_address'], 'itemprop' => 'image'))); ?> </a> </div> <div class="listing-item-details grid_5 omega"> <p class="listing-item-address h4" itemprop="name"> <a href="<?php echo PLS_Plugin_API::get_property_url($listing_data['id']); ?> " rel="bookmark" title="<?php echo $listing_data['location']['address']; ?> " itemprop="url"> <?php echo $listing_data['location']['address'] . ', ' . $listing_data['location']['locality'] . ' ' . $listing_data['location']['region'] . ' ' . $listing_data['location']['postal']; ?> </a> </p> <div class="basic-details"> <ul> <?php if (!empty($listing_data['cur_data']['beds'])) { ?> <li class="basic-details-beds p1"><span>Beds:</span> <?php echo @$listing_data['cur_data']['beds']; ?> </li> <?php } ?> <?php if (!empty($listing_data['cur_data']['baths'])) { ?> <li class="basic-details-baths p1"><span>Baths:</span> <?php echo @$listing_data['cur_data']['baths']; ?> </li> <?php } ?> <?php if (!empty($listing_data['cur_data']['half_baths'])) { ?> <li class="basic-details-half-baths p1"><span>Half Baths:</span> <?php echo @$listing_data['cur_data']['half_baths']; ?> </li> <?php } ?> <?php if (!empty($listing_data['cur_data']['price'])) { ?> <li class="basic-details-price p1" itemprop="price"><span>Price:</span> <?php echo PLS_Format::number($listing_data['cur_data']['price'], array('abbreviate' => false, 'add_currency_sign' => true)); ?> </li> <?php } ?> <?php if (!empty($listing_data['cur_data']['sqft'])) { ?> <li class="basic-details-sqft p1"><span>Sqft:</span> <?php echo PLS_Format::number($listing_data['cur_data']['sqft'], array('abbreviate' => false, 'add_currency_sign' => false)); ?> </li> <?php } ?> <?php if (!empty($listing_data['rets']['mls_id'])) { ?> <li class="basic-details-mls p1"><span>MLS ID:</span> <?php echo @$listing_data['rets']['mls_id']; ?> </li> <?php } ?> </ul> </div> <p class="listing-description p4"> <?php echo substr($listing_data['cur_data']['desc'], 0, 300); ?> </p> </div> <div class="actions"> <a class="more-link" href="<?php echo PLS_Plugin_API::get_property_url($listing_data['id']); ?> " itemprop="url">View Property Details</a> <?php echo PLS_Plugin_API::placester_favorite_link_toggle(array('property_id' => $listing_data['id'])); ?> </div> <?php PLS_Listing_Helper::get_compliance(array('context' => 'inline_search', 'agent_name' => @$listing_data['rets']['aname'], 'office_name' => @$listing_data['rets']['oname'])); ?> </div> <?php // Store the output... $listing_html = ob_get_clean(); // Filter (pls_listing[_context]) the resulting HTML for a single listing $listing_html = apply_filters(pls_get_merged_strings(array('pls_listing', $context), '_', 'pre', false), $listing_html, $listing_data, $request_params, $context_var); // Cache the result... $listing_cache->save($listing_html, PLS_Cache::TTL_LOW); } // Append the HTML to an array -- this will be passed to the final filter $listings_html[] = $listing_html; // Merge all the listings HTML $return .= $listing_html; } // Wrap the listings HTML $return = pls_h('section', array('class' => "pls-listings pls-listings " . pls_get_merged_strings(array('pls-listing', $context), '-', 'pre', false)), $return); // Filter (pls_listings[_context]) the resulting HTML that contains the collection of listings $return = apply_filters(pls_get_merged_strings(array('pls_listings', $context), '_', 'pre', false), $return, $listings_raw, $listings_html, $request_params, $context_var); $cache->save($return); return $return; }
public static function determine_appropriate_tags() { // Check for memoized return value... if (!empty(self::$page_tags)) { return self::$page_tags; } global $post; $tags = array(); // get page template $page_template = self::determine_page_template(); // determine $meta_tag_designations switch ($page_template) { case 'neighborhood': // Neighborhood / City Page $term = get_term_by('slug', get_query_var('term'), get_query_var('taxonomy')); $tags['title'] = $term->name; $tags['address'] = ""; $descrip = strip_tags($term->description); $descrip_more = ''; if (strlen($descrip) > 155) { $descrip = substr($descrip, 0, 155); $descrip_more = ' ...'; } $descrip = str_replace('"', '', $descrip); $descrip = str_replace("'", '', $descrip); $descripwords = preg_split('/[\\n\\r\\t ]+/', $descrip, -1, PREG_SPLIT_NO_EMPTY); array_pop($descripwords); $tags['description'] = implode(' ', $descripwords) . $descrip_more; $image_array = get_tax_meta($term->term_id, 'image_1'); $tags['image'] = isset($image_array['src']) ? $image_array['src'] : ''; break; case 'search': $tags['itemtype'] = 'http://schema.org/LocalBusiness'; $tags['title'] = 'Search results for: ' . get_search_query(); break; case 'category': $category = get_the_category(); $tags['title'] = $category[0]->cat_name; $tags['description'] = $category[0]->description; break; case 'date': if (is_day()) { $tags['title'] = get_the_date() . ' Archives'; } elseif (is_month()) { $tags['title'] = get_the_date('F Y') . ' Archives'; } elseif (is_year()) { $tags['title'] = get_the_date('Y') . ' Archives'; } else { $tags['title'] = 'Blog Archives'; } break; case 'tag': $tag = single_tag_title('', false); $tags['title'] = $tag . ' tagged posts'; $tags['itemtype'] = 'http://schema.org/Blog'; $tags['description'] = tag_description(); break; case 'author': $tags['author'] = get_the_author(); $tags['itemtype'] = 'http://schema.org/Blog'; $tags['title'] = 'Author Archives: ' . get_the_author_meta('display_name', get_query_var('author')); // $image - should be author's face is one is set... could also check for same name in agent's list too. $tags['description'] = tag_description(); break; case 'property': $content = get_option('placester_listing_layout'); if (isset($content) && $content != '') { return $content; } $html = ''; $listing = PLS_Plugin_API::get_listing_in_loop(); if (is_null($listing)) { break; } // Single Property $tags['itemtype'] = 'http://schema.org/Offer'; if (isset($listing['location']['unit']) && $listing['location']['unit'] != null) { $tags['title'] = @$listing['location']['address'] . ', ' . $listing['location']['unit'] . ' ' . @$listing['location']['locality'] . ', ' . @$listing['location']['region']; $tags['address'] = @$listing['location']['address'] . ', ' . $listing['location']['unit'] . ' ' . @$listing['location']['locality'] . ', ' . @$listing['location']['region']; } else { $tags['title'] = @$listing['location']['address'] . ' ' . @$listing['location']['locality'] . ', ' . @$listing['location']['region']; $tags['address'] = @$listing['location']['address'] . ' ' . @$listing['location']['locality'] . ', ' . @$listing['location']['region']; } $tags['image'] = @$listing['images']['0']['url']; $tags['description'] = esc_html(strip_tags($listing['cur_data']['desc'])); break; case 'agent': $tags['itemtype'] = 'http://schema.org/RealEstateAgent'; $tags['title'] = $post->post_title; break; case 'service': $tags['itemtype'] = 'http://schema.org/ProfessionalService'; $tags['title'] = $post->post_title; break; case 'testimonial': $tags['itemtype'] = 'http://schema.org/Review'; $tags['title'] = $post->post_title; break; case 'community': $tags['title'] = $post->post_title; $tags['description'] = PLS_Format::shorten_excerpt($post, 155); break; case 'single': $tags['itemtype'] = 'http://schema.org/BlogPosting'; $tags['title'] = $post->post_title; if (has_post_thumbnail($post->ID)) { $post_image = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'thumbnail'); $tags['image'] = $post_image[0]; } $tags['description'] = PLS_Format::shorten_excerpt($post, 155); $tags['address'] = @pls_get_option('pls-company-street') . " " . @pls_get_option('pls-company-locality') . ", " . @pls_get_option('pls-company-region'); $tags['author'] = $post->post_author; break; case 'other': default: // Home and other pages $tags['itemtype'] = 'http://schema.org/LocalBusiness'; if (is_home()) { $tags['title'] = pls_get_option('pls-company-name'); } elseif (isset($post)) { $values = get_post_custom($post->ID); // give Yoast SEO a hand setting the title $tags['title'] = !empty($values['_yoast_wpseo_title'][0]) ? $values['_yoast_wpseo_title'][0] : $post->post_title; } else { $tags['title'] = ''; } break; } $meta_data = self::process_defaults($tags); // Memoize this output... self::$page_tags = $meta_data; return $meta_data; }
public static function get($args = array()) { // Store this for use in the final output/response... $sEcho = isset($_POST['sEcho']) ? $_POST['sEcho'] : 0; unset($_POST['sEcho']); $context_orig = isset($_POST['context']) ? $_POST['context'] : ''; unset($_POST['context']); // If length is not set for number of listings to return, set it to our Theme Options default $_POST['limit'] = isset($_POST['iDisplayLength']) ? $_POST['iDisplayLength'] : pls_get_option('listings_default_list_length'); unset($_POST['iDisplayLength']); $_POST['offset'] = isset($_POST['iDisplayStart']) ? $_POST['iDisplayStart'] : 0; unset($_POST['iDisplayStart']); $saved_search_lookup = isset($_POST['saved_search_lookup']) ? $_POST['saved_search_lookup'] : null; unset($_POST['saved_search_lookup']); // Remove this so it doesn't accidentally end up as a superfluous argument of an API call... unset($_POST['action']); // Handle location edge-case... if (!empty($_POST['location']) && !empty($_POST['location']['address']) && empty($_POST['location']['address_match'])) { $_POST['location']['address_match'] = 'like'; } // Handle saved search... if (!is_null($saved_search_lookup)) { // Attempt to retrieve search filters associated with the given saved search lookup ID... // NOTE: If no filters exist for the passed ID, $filters = PLS_Plugin_API::get_saved_search_filters($saved_search_lookup); if (empty($filters) || !is_array($filters)) { PLS_Plugin_API::save_search($saved_search_lookup, $_POST); } else { // For backwards compatibility, handle older fields that are no longer stored as saved search filters... $old_field_map = array('sEcho' => false, 'context' => false, 'iDisplayLength' => 'limit', 'iDisplayStart' => 'offset', 'saved_search_lookup' => false, 'action' => false); foreach ($old_field_map as $old => $new) { if (isset($filters[$old])) { if ($new !== false) { $filters[$new] = $filters[$old]; } unset($filters[$old]); } } // Swap all existing POST filters for the ones associated with the retrieved saved search... $_POST = $filters; } } // Define the default argument array $defaults = array('loading_img' => admin_url('images/wpspin_light.gif'), 'image_width' => 100, 'crop_description' => 0, 'sort_type' => pls_get_option('listings_default_sort_type'), 'listings_per_page' => pls_get_option('listings_default_list_length'), 'context' => $context_orig, 'context_var' => NULL, 'append_to_map' => true, 'search_query' => $_POST, 'property_ids' => isset($_POST['property_ids']) ? $_POST['property_ids'] : '', 'allow_id_empty' => false); // Resolve function args with default ones (which include any existing POST fields)... $merged_args = wp_parse_args($args, $defaults); $cache = new PLS_Cache('list'); if ($cached_response = $cache->get($merged_args)) { // This field must match the one passed in with this request... $cached_response['sEcho'] = $sEcho; echo json_encode($cached_response); die; } // Extract the arguments after they merged with the defaults extract($merged_args, EXTR_SKIP); // Start off with a placeholder in case the plugin is not active or there is no API key... $api_response = PLS_Listing_Helper::$default_listing; // If plugin is active, grab listings intelligently... if (!pls_has_plugin_error()) { // Get the listings list markup and JS if (!empty($property_ids) || $allow_id_empty) { // Sometimes property_ids are passed in as a flat screen from the JS post object if (is_string($property_ids)) { $property_ids = explode(',', $property_ids); } $api_response = PLS_Plugin_API::get_listing_details(array('property_ids' => $property_ids, 'limit' => $_POST['limit'], 'offset' => $_POST['offset'])); } elseif (isset($search_query['neighborhood_polygons']) && !empty($search_query['neighborhood_polygons'])) { $api_response = PLS_Plugin_API::get_polygon_listings($search_query); } else { $api_response = PLS_Plugin_API::get_listings($search_query); } } $response = array(); // Build response for datatables.js $listings = array(); $listings_cache = new PLS_Cache('Listing Thumbnail'); foreach ($api_response['listings'] as $key => $listing) { // Check for cached listing thumbnail... $cache_id = array('context' => $context, 'listing_id' => $listing['id']); if (!($item_html = $listings_cache->get($cache_id))) { // Handle case of zero listing images... if (empty($listing['images'])) { $listing['images'][0]['url'] = ''; } ob_start(); ?> <div class="listing-item grid_8 alpha" itemscope itemtype="http://schema.org/Offer" data-listing="<?php echo $listing['id']; ?> "> <div class="listing-thumbnail grid_3 alpha"> <?php $property_images = is_array($listing['images']) ? $listing['images'] : array(); usort($property_images, array(__CLASS__, 'order_images')); ?> <a href="<?php echo @$listing['cur_data']['url']; ?> " itemprop="url"> <?php echo PLS_Image::load($property_images[0]['url'], array('resize' => array('w' => 210, 'h' => 140), 'fancybox' => true, 'as_html' => true, 'html' => array('alt' => $listing['location']['full_address'], 'itemprop' => 'image', 'placeholder' => PLS_IMG_URL . "/null/listing-300x180.jpg"))); ?> </a> </div> <div class="listing-item-details grid_5 omega"> <header> <p class="listing-item-address h4" itemprop="name"> <a href="<?php echo PLS_Plugin_API::get_property_url($listing['id']); ?> " rel="bookmark" title="<?php echo $listing['location']['address']; ?> " itemprop="url"> <?php echo $listing['location']['address'] . ', ' . $listing['location']['locality'] . ' ' . $listing['location']['region'] . ' ' . $listing['location']['postal']; ?> </a> </p> </header> <div class="basic-details"> <ul> <?php if (!empty($listing['cur_data']['beds'])) { ?> <li class="basic-details-beds p1"><span>Beds:</span> <?php echo @$listing['cur_data']['beds']; ?> </li> <?php } ?> <?php if (!empty($listing['cur_data']['baths'])) { ?> <li class="basic-details-baths p1"><span>Baths:</span> <?php echo @$listing['cur_data']['baths']; ?> </li> <?php } ?> <?php if (!empty($listing['cur_data']['half_baths'])) { ?> <li class="basic-details-half-baths p1"><span>Half Baths:</span> <?php echo @$listing['cur_data']['half_baths']; ?> </li> <?php } ?> <?php if (!empty($listing['cur_data']['price'])) { ?> <li class="basic-details-price p1" itemprop="price"><span>Price:</span> <?php echo PLS_Format::number($listing['cur_data']['price'], array('abbreviate' => false, 'add_currency_sign' => true)); ?> </li> <?php } ?> <?php if (!empty($listing['cur_data']['sqft'])) { ?> <li class="basic-details-sqft p1"><span>Sqft:</span> <?php echo PLS_Format::number($listing['cur_data']['sqft'], array('abbreviate' => false, 'add_currency_sign' => false)); ?> </li> <?php } ?> <?php if (!empty($listing['rets']['mls_id'])) { ?> <li class="basic-details-mls p1"><span>MLS ID:</span> <?php echo @$listing['rets']['mls_id']; ?> </li> <?php } ?> </ul> </div> <p class="listing-description p4" itemprop="description"> <?php echo substr($listing['cur_data']['desc'], 0, 300); ?> </p> </div> <div class="actions"> <a class="more-link" href="<?php echo PLS_Plugin_API::get_property_url($listing['id']); ?> " itemprop="url">View Property Details</a> <?php echo PLS_Plugin_API::placester_favorite_link_toggle(array('property_id' => $listing['id'])); ?> </div> <?php PLS_Listing_Helper::get_compliance(array('context' => 'inline_search', 'agent_name' => @$listing['rets']['aname'], 'office_name' => @$listing['rets']['oname'])); ?> </div> <?php $item_html = ob_get_clean(); $item_html = apply_filters(pls_get_merged_strings(array("pls_listings_list_ajax_item_html", $context), '_', 'pre', false), htmlspecialchars_decode($item_html), $listing, $context_var); $listings_cache->save($item_html); } $listings[$key][] = $item_html; $listings[$key][] = $listing; } // Required for datatables.js to function properly... $response['sFirst'] = 'Previous'; $response['sPrevious'] = 'Next'; $response['sEcho'] = $sEcho; $response['aaData'] = $listings; $api_total = isset($api_response['total']) ? $api_response['total'] : 0; $response['iTotalRecords'] = $api_total; $response['iTotalDisplayRecords'] = $api_total; $cache->save($response); ob_start("ob_gzhandler"); echo json_encode($response); // Wordpress echos out a "0" randomly -- die prevents this... die; }
function tampa_custom_slideshow_captions($data) { // pls_dump($data); if (is_array($data)) { unset($data['captions']); // each full represents a listing we need to work with. // their position in the array matches the other relavent // info. if (isset($data['listing'])) { foreach ($data['listing'] as $index => $listing) { // pls_dump($listing); /** Get the listing caption. */ ob_start(); ?> <div id="caption-<?php echo $index; ?> " class="orbit-html-caption"> <a href="<?php echo $listing['cur_data']['url']; ?> "><p><?php echo $listing['location']['full_address']; ?> </p></a><br /> <p> <span class="price-ico"><?php echo PLS_Format::number($listing['cur_data']['price'], array('abbreviate' => false, 'add_currency_sign' => false)); if (isset($listing['cur_data']['lse_trms'])) { echo $listing['cur_data']['lse_trms']; } ?> </span> <span class="beds-ico"><?php echo $listing['cur_data']['beds']; ?> <?php _e('Beds', 'tampa'); ?> </span> <span class="baths-ico"><?php echo $listing['cur_data']['baths']; ?> <?php _e('Baths', 'tampa'); ?> </span> <?php if ($listing['cur_data']['sqft'] != null) { ?> <span class="area-ico"> <?php PLS_Format::number($listing['cur_data']['sqft'], array('abbreviate' => false, 'add_currency_sign' => false)); ?> <?php _e('sqft', 'tampa'); ?> </span> <?php } ?> </p> <a class="details-bt" href="<?php echo $listing['cur_data']['url']; ?> "><span><?php _e('See Details', 'tampa'); ?> </span></a> </div> <?php $data['captions'][] = trim(ob_get_clean()); } } } return $data; }
function custom_tampa_widget_html_filter($listing_html, $listing_data) { // pls_dump($listing_data); ob_start(); ?> <div class="featured-slot"> <?php if (isset($listing_data['images']) && is_array($listing_data['images'])) { ?> <?php echo PLS_Image::load($listing_data['images'][0]['url'], array('resize' => array('w' => 120, 'h' => 90, 'method' => 'crop'), 'fancybox' => true, 'as_html' => false)); ?> <?php } else { ?> <?php echo PLS_Image::load('', array('resize' => array('w' => 120, 'h' => 90, 'method' => 'crop'), 'fancybox' => false, 'as_html' => true)); ?> <?php } ?> <h4> <a href="<?php echo $listing_data['cur_data']['url']; ?> "><?php echo $listing_data['location']['full_address']; ?> </a> </h4> <p class="rent-label"> <span> <?php echo PLS_Format::number($listing_data['cur_data']['price'], array('abbreviate' => false, 'add_currency_sign' => true)); ?> <?php if ($listing_data['cur_data']['lse_trms'] != null) { echo '<em>' . $listing_data['cur_data']['lse_trms'] . '</em>'; } ?> </span> <?php echo ucwords($listing_data['purchase_types'][0]); ?> </p> <?php if (isset($listing_data['rets']['mls_id'])) { ?> <p class="mls"><?php _e('MLS #', 'tampa'); ?> : <?php echo $listing_data['rets']['mls_id']; ?> </p> <?php } ?> <?php PLS_Listing_Helper::get_compliance(array('context' => 'listings_widget', 'agent_name' => $listing_data['rets']['aname'], 'office_name' => $listing_data['rets']['oname'], 'office_phone' => PLS_Format::phone($listing_data['contact']['phone']), 'agent_license' => isset($listing_data['rets']['alicense']) ? $listing_data['rets']['alicense'] : false, 'co_agent_name' => isset($listing_data['rets']['aconame']) ? $listing_data['rets']['aconame'] : false, 'co_office_name' => isset($listing_data['rets']['oconame']) ? $listing_data['rets']['oconame'] : false)); ?> <div class="clearfix"></div> </div><!--featured-slot--> <?php $listing_html = ob_get_clean(); return $listing_html; }
/** * Returns a form that can be used to search for listings. * * The defaults are as follows: * 'ajax' - Default is false. Wether the resulting form should use ajax * or not. If ajax is set to true, then for the form to work, the * results container should be defined on the page. * {@link PLS_Partials::get_listings_list_ajax()} should be used. * 'context' - An execution context for the function. Used when the * filters are created. * 'context_var' - Any variable that needs to be passed to the filters * when function is executed. * Defines the following hooks. * pls_listings_search_form_bedrooms_array[_context] - Filters the * array with the data used to generate the select. * pls_listings_search_form_bathrooms_array[_context] * pls_listings_search_form_available_on_array[_context] * pls_listings_search_form_cities_array[_context] * pls_listings_search_form_min_price_array[_context] * pls_listings_search_form_max_price_array[_context] * * pls_listings_search_form_bedrooms_attributes[_context] - Filters * the attribute array for the select. If extra attributes need to * be added to the select element, they should be provided in * a array( $attribute_key => $attribute_value ) form. * pls_listings_search_form_bathrooms_attributes[_context] * pls_listings_search_form_available_on_attributes[_context] * pls_listings_search_form_cities_attributes[_context] * pls_listings_search_form_min_price_attributes[_context] * pls_listings_search_form_max_price_attributes[_context] * * pls_listings_search_form_bedrooms_html[_context] - Filters the html * for this option. Can be used to add extra containers. * pls_listings_search_form_bathrooms_html[_context] * pls_listings_search_form_available_on_html[_context] * pls_listings_search_form_cities_html[_context] * pls_listings_search_form_min_price_html[_context] * pls_listings_search_form_max_price_html[_context] * * pls_listings_search_form_submit[_context] - Filters the form submit * button. * * pls_listings_search_form_inner[_context] - Filters the form inner html. * pls_listings_search_form_outer[_context] - Filters the form html. * * @static * @param array $args Optional. Overrides defaults. * @return string The html for the listings search form. * @since 0.0.1 */ public static function init($args = '') { // Define the default argument array $defaults = array('ajax' => false, 'class' => 'pls_search_form_listings', 'context' => '', 'theme_option_id' => '', 'context_var' => null, 'bedrooms' => 1, 'min_beds' => 1, 'max_beds' => 1, 'bathrooms' => 1, 'min_baths' => 1, 'max_baths' => 1, 'price' => 1, 'half_baths' => 1, 'property_type' => 1, 'listing_types' => 1, 'zoning_types' => 1, 'purchase_types' => 1, 'available_on' => 1, 'cities' => 1, 'multi_cities' => 0, 'states' => 1, 'multi_states' => 0, 'zips' => 1, 'neighborhood' => 1, 'multi_neighborhoods' => 0, 'county' => 1, 'min_price' => 1, 'max_price' => 1, 'min_price_rental' => 1, 'max_price_rental' => 1, 'min_price_sales' => 1, 'max_price_sales' => 1, 'neighborhood_polygons' => 0, 'neighborhood_polygons_type' => false, 'min_sqft' => 1, 'max_sqft' => 1, 'include_submit' => true, 'pls_empty_value' => array()); $args = wp_parse_args($args, $defaults); $cache_id = $args; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $cache_id['$_POST'] = $_POST; } $cache = new PLS_Cache('Search Form'); if ($result = $cache->get($cache_id)) { return $result; } $form_options = array(); // Set Form Defaults for params onload, set in Theme Options $form_options['location']['locality'] = pls_get_option('form_default_options_locality'); $form_options['location']['region'] = pls_get_option('form_default_options_region'); $form_options['location']['postal'] = pls_get_option('form_default_options_postal'); $form_options['location']['neighborhood'] = pls_get_option('form_default_options_neighborhood'); $form_options['location']['county'] = pls_get_option('form_default_options_county'); $form_options['property_type'] = pls_get_option('form_default_options_property_type'); $_POST = wp_parse_args($_POST, $form_options); //respect user settings, unless they are all empty. $user_search_params = pls_get_option($args['theme_option_id']); if (isset($user_search_params['hide_all']) && $user_search_params['hide_all'] == 1) { return ''; } $args = wp_parse_args($args, $user_search_params); /** Extract the arguments after they merged with the defaults. */ extract(wp_parse_args($args, $defaults), EXTR_SKIP); // Set the default empty values for the all the form elements. // Dev can change defaults via a filter in process defaults. $pls_empty_value = self::process_default_value_array($pls_empty_value, $context); /** * Elements options arrays. Used to generate the HTML. */ /** Prepend the default empty valued element. */ $user_beds_start = pls_get_option('pls-option-bed-min'); $user_beds_end = pls_get_option('pls-option-bed-max'); if (is_numeric($user_beds_start) && is_numeric($user_beds_end)) { $beds_range = range($user_beds_start, $user_beds_end); $form_options['bedrooms'] = array('pls_empty_value' => $pls_empty_value['bedrooms']) + array_combine($beds_range, $beds_range); } else { $form_options['bedrooms'] = array('pls_empty_value' => $pls_empty_value['bedrooms']) + range(0, 16); } /** Prepend the default empty valued element. */ $user_baths_start = pls_get_option('pls-option-bath-min'); $user_baths_end = pls_get_option('pls-option-bath-max'); if (is_numeric($user_baths_start) && is_numeric($user_baths_end)) { $baths_range = range($user_baths_start, $user_baths_end); $form_options['bathrooms'] = array('pls_empty_value' => $pls_empty_value['bathrooms']) + array_combine($baths_range, $baths_range); } else { $form_options['bathrooms'] = array('pls_empty_value' => $pls_empty_value['bathrooms']) + range(0, 10); } /** Prepend the default empty valued element. */ $user_half_baths_start = pls_get_option('pls-option-half-bath-min'); $user_half_baths_end = pls_get_option('pls-option-half-bath-max'); if (is_numeric($user_half_baths_start) && is_numeric($user_half_baths_end)) { $half_bath_range = range($user_half_baths_start, $user_half_baths_end); $form_options['half_baths'] = array('pls_empty_value' => $pls_empty_value['half_baths']) + array_combine($half_bath_range, $half_bath_range); } else { $form_options['half_baths'] = array('pls_empty_value' => $pls_empty_value['half_baths']) + range(0, 10); } /** Generate an array with the next 12 months. */ $current_month = (int) date('m'); for ($i = $current_month; $i < $current_month + 12; $i++) { $form_options['available_on'][date('d-m-Y', mktime(0, 0, 0, $i, 1))] = date('F Y', mktime(0, 0, 0, $i, 1)); } /** Get the property type options */ $get_type_response = PLS_Plugin_API::get_type_list(); // error_log("GET_TYPE_RESPONSE\n" . serialize($get_type_response) . "\n"); if (empty($get_type_response)) { $form_options['property_type'] = array('pls_empty_value' => $pls_empty_value['property_type']); } else { // if API serves up 'false' key in the array, remove it, because we're going to add one. if (isset($get_type_response['false'])) { unset($get_type_response['false']); } $form_options['property_type'] = array_merge(array('pls_empty_value' => $pls_empty_value['property_type']), $get_type_response); } /** Get the listing type options. */ $form_options['listing_types'] = array('pls_empty_value' => $pls_empty_value['listing_types']) + PLS_Plugin_API::get_type_values('listing'); /** Get the zoning type options. */ $form_options['zoning_types'] = array('pls_empty_value' => $pls_empty_value['zoning_types']) + PLS_Plugin_API::get_type_values('zoning'); // removed "All" - it's not giving all listings. jquery needs to change to not include "[]"s // $form_options['zoning_types'] = PLS_Plugin_API::get_type_values( 'zoning' ); // for Multiple, not for single, see below /** Get the purchase type options. */ $form_options['purchase_types'] = array('pls_empty_value' => $pls_empty_value['purchase_types']) + PLS_Plugin_API::get_type_values('purchase'); // removed "All" - it's not giving all listings. jquery needs to change to not include "[]"s // $form_options['purchase_types'] = PLS_Plugin_API::get_type_values( 'purchase' ); /** Prepend the default empty valued element. */ $form_options['available_on'] = array('pls_empty_value' => $pls_empty_value['available_on']) + $form_options['available_on']; /** Prepend the default empty valued element. */ $locations = PLS_Plugin_API::get_location_list(); $neighborhood_polygons_options = PLS_Plugin_API::get_location_list_polygons($neighborhood_polygons_type); if (empty($locations['locality'])) { $form_options['cities'] = array('pls_empty_value' => $pls_empty_value['cities']); } else { unset($locations['locality']['false']); sort($locations['locality']); $form_options['cities'] = array('pls_empty_value' => $pls_empty_value['cities']) + $locations['locality']; } if (empty($locations['region'])) { $form_options['states'] = array('pls_empty_value' => $pls_empty_value['states']); } else { unset($locations['region']['false']); sort($locations['region']); $form_options['states'] = array('pls_empty_value' => $pls_empty_value['states']) + $locations['region']; } if (empty($locations['postal'])) { $form_options['zips'] = array('pls_empty_value' => $pls_empty_value['zips']); } else { unset($locations['postal']['false']); sort($locations['postal']); $form_options['zips'] = array('pls_empty_value' => $pls_empty_value['zips']) + $locations['postal']; } if (empty($locations['neighborhood'])) { $form_options['neighborhood'] = array('pls_empty_value' => $pls_empty_value['neighborhoods']); } else { unset($locations['neighborhood']['false']); sort($locations['neighborhood']); $form_options['neighborhood'] = array('pls_empty_value' => $pls_empty_value['neighborhoods']) + $locations['neighborhood']; } if (empty($locations['county'])) { $form_options['county'] = array('pls_empty_value' => $pls_empty_value['county']); } else { unset($locations['county']['false']); sort($locations['county']); $form_options['county'] = array('pls_empty_value' => $pls_empty_value['county']) + $locations['county']; } if (empty($neighborhood_polygons_options)) { $form_options['neighborhood_polygons'] = array('pls_empty_value' => $pls_empty_value['neighborhood_polygons']); } else { unset($neighborhood_polygons_options['false']); sort($neighborhood_polygons_options); $form_options['neighborhood_polygons'] = array('pls_empty_value' => $pls_empty_value['neighborhood_polygons']) + $neighborhood_polygons_options; } // Min/Max Sqft /** Define the minimum price options array. */ $form_options['min_sqft'] = array('pls_empty_value' => $pls_empty_value['min_sqft'], '200' => '200', '400' => '400', '600' => '600', '800' => '800', '1000' => '1,000', '1200' => '1,200', '1400' => '1,400', '1600' => '1,600', '1800' => '1,800', '2000' => '2,000', '2200' => '2,200', '2400' => '2,400', '2600' => '2,600', '2800' => '2,800', '3000' => '3,000', '3500' => '3,500', '4000' => '4,000', '4500' => '4,500', '5000' => '5,000', '6000' => '6,000', '7000' => '7,000', '8000' => '8,000'); $user_start_sqft = pls_get_option('pls-option-sqft-min') ? pls_get_option('pls-option-sqft-min') : 0; $user_end_sqft = pls_get_option('pls-option-sqft-max'); $user_inc_sqft = pls_get_option('pls-option-sqft-inc'); if (is_numeric($user_start_sqft) && is_numeric($user_end_sqft) && is_numeric($user_inc_sqft)) { // Handle when increment is larger than the range from start to end if ($user_inc_sqft > $user_end_sqft - $user_start_sqft) { $user_inc_sqft = $user_end_sqft - $user_start_sqft; } $range = range($user_start_sqft, $user_end_sqft, $user_inc_sqft); $form_options['min_sqft'] = array(); foreach ($range as $sqft_value) { $form_options['min_sqft'][$sqft_value] = PLS_Format::number($sqft_value, array('abbreviate' => false)); } } /** Set the maximum price options array. */ $form_options['max_sqft'] = $form_options['min_sqft']; /* max_sqft default needs to be set too */ $form_options['max_sqft']['pls_empty_value'] = __($pls_empty_value['max_sqft'], pls_get_textdomain()); // Price Ranges /** Define the minimum price options array. */ $form_options['min_price'] = array('pls_empty_value' => __($pls_empty_value['min_price'], pls_get_textdomain()), '0' => '$0', '400' => '$400', '500' => '$500', '2000' => '$2,000', '3000' => '$3,000', '4000' => '$4,000', '5000' => '$5,000', '50000' => '$50,000', '100000' => '$100,000', '200000' => '$200,000', '350000' => '$350,000', '400000' => '$400,000', '450000' => '$450,000', '500000' => '$500,000', '600000' => '$600,000', '700000' => '$700,000', '800000' => '$800,000', '900000' => '$900,000', '1000000' => '$1,000,000'); /* Set the maximum price options array + its default */ $form_options['max_price'] = $form_options['min_price']; $form_options['max_price']['pls_empty_value'] = __($pls_empty_value['max_price'], pls_get_textdomain()); $user_price_start = pls_get_option('pls-option-price-min') ? pls_get_option('pls-option-price-min') : 0; $user_price_end = pls_get_option('pls-option-price-max'); $user_price_inc = pls_get_option('pls-option-price-inc'); if (is_numeric($user_price_start) && is_numeric($user_price_end) && is_numeric($user_price_inc)) { $range = range($user_price_start, $user_price_end, $user_price_inc); // Create empty arrays $form_options['min_price'] = array(); $form_options['max_price'] = array(); // set empty values $form_options['min_price']['pls_empty_value'] = __($pls_empty_value['min_price'], pls_get_textdomain()); $form_options['max_price']['pls_empty_value'] = __($pls_empty_value['max_price'], pls_get_textdomain()); foreach ($range as $price_value) { $form_options['min_price'][$price_value] = PLS_Format::number($price_value, array('abbreviate' => false)); $form_options['max_price'][$price_value] = PLS_Format::number($price_value, array('abbreviate' => false)); } } // Price for Rentals /** Define the minimum price options array. */ $form_options['min_price_rental'] = array('pls_empty_value' => __($pls_empty_value['min_price_rental'], pls_get_textdomain()), '200' => '$200', '400' => '$400', '600' => '$600', '800' => '$800', '1000' => '$1,000', '1100' => '$1,100', '1200' => '$1,200', '1300' => '$1,300', '1400' => '$1,400', '1500' => '$1,500', '1600' => '$1,600', '1700' => '$1,700', '1800' => '$1,800', '1900' => '$1,900', '2000' => '$2,000', '2100' => '$2,100', '2200' => '$2,200', '2300' => '$2,300', '2400' => '$2,400', '2500' => '$2,500', '2600' => '$2,600', '2700' => '$2,700', '2800' => '$2,800', '2900' => '$2,900', '3000' => '$3,000', '3500' => '$3,500', '4000' => '$4,000', '4500' => '$4,500', '5000' => '$5,000', '6000' => '$6,000', '7000' => '$7,000', '8000' => '$8,000'); /* Set the maximum price rental options array + its default */ $form_options['max_price_rental'] = $form_options['min_price_rental']; $form_options['max_price_rental']['pls_empty_value'] = __($pls_empty_value['max_price_rental'], pls_get_textdomain()); $user_price_start_rental = pls_get_option('pls-option-rental-price-min') ? pls_get_option('pls-option-rental-price-min') : 0; $user_price_end_rental = pls_get_option('pls-option-rental-price-max'); $user_price_inc_rental = pls_get_option('pls-option-rental-price-inc'); if (is_numeric($user_price_start_rental) && is_numeric($user_price_end_rental) && is_numeric($user_price_inc_rental)) { // Handle when increment is larger than the range from start to end if ($user_price_inc_rental > $user_price_end_rental - $user_price_start_rental) { $user_price_inc_rental = $user_price_end_rental - $user_price_start_rental; } $range = range($user_price_start_rental, $user_price_end_rental, $user_price_inc_rental); // Create empty arrays $form_options['min_price_rental'] = array(); $form_options['max_price_rental'] = array(); // set empty values $form_options['min_price_rental']['pls_empty_value'] = __($pls_empty_value['min_price_rental'], pls_get_textdomain()); $form_options['max_price_rental']['pls_empty_value'] = __($pls_empty_value['max_price_rental'], pls_get_textdomain()); foreach ($range as $price_value) { $form_options['min_price_rental'][$price_value] = PLS_Format::number($price_value, array('abbreviate' => false)); $form_options['max_price_rental'][$price_value] = PLS_Format::number($price_value, array('abbreviate' => false)); } } // Price for Sales /** Define the minimum price options array. */ $form_options['min_price_sales'] = array('pls_empty_value' => __($pls_empty_value['min_price_sales'], pls_get_textdomain()), '20000' => '$20,000', '40000' => '$40,000', '60000' => '$60,000', '80000' => '$80,000', '100000' => '$100,000', '120000' => '$120,000', '140000' => '$140,000', '160000' => '$160,000', '180000' => '$180,000', '200000' => '$200,000', '250000' => '$250,000', '300000' => '$300,000', '350000' => '$350,000', '400000' => '$400,000', '450000' => '$450,000', '500000' => '$500,000', '550000' => '$550,000', '600000' => '$600,000', '650000' => '$650,000', '700000' => '$700,000', '750000' => '$750,000', '800000' => '$800,000', '850000' => '$850,000', '900000' => '$900,000', '950000' => '$950,000', '1000000' => '$1,000,000'); /* Set the maximum price sales options array + its default */ $form_options['max_price_sales'] = $form_options['min_price_sales']; $form_options['max_price_sales']['pls_empty_value'] = __($pls_empty_value['max_price_sales'], pls_get_textdomain()); $user_price_start_sales = pls_get_option('pls-option-sales-price-min') ? pls_get_option('pls-option-sales-price-min') : 0; $user_price_end_sales = pls_get_option('pls-option-sales-price-max'); $user_price_inc_sales = pls_get_option('pls-option-sales-price-inc'); if (is_numeric($user_price_start_sales) && is_numeric($user_price_end_sales) && is_numeric($user_price_inc_sales)) { // Handle when increment is larger than the range from start to end if ($user_price_inc_sales > $user_price_end_sales - $user_price_start_sales) { $user_price_inc_sales = $user_price_end_sales - $user_price_start_sales; } $range = range($user_price_start_sales, $user_price_end_sales, $user_price_inc_sales); // Create empty arrays $form_options['min_price_sales'] = array(); $form_options['max_price_sales'] = array(); // set empty values $form_options['min_price_sales']['pls_empty_value'] = __($pls_empty_value['min_price_sales'], pls_get_textdomain()); $form_options['max_price_sales']['pls_empty_value'] = __($pls_empty_value['max_price_sales'], pls_get_textdomain()); foreach ($range as $price_value) { $form_options['min_price_sales'][$price_value] = PLS_Format::number($price_value, array('abbreviate' => false)); $form_options['max_price_sales'][$price_value] = PLS_Format::number($price_value, array('abbreviate' => false)); } } // Set min_beds/max_beds form element $form_options['min_beds'] = array('pls_empty_value' => __($pls_empty_value['min_beds'], pls_get_textdomain()), '0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10', '11' => '11', '12' => '12', '13' => '13', '14' => '14', '15' => '15'); $user_bed_start = pls_get_option('pls-option-bed-min') ? pls_get_option('pls-option-bed-min') : 0; $user_bed_end = pls_get_option('pls-option-bed-max') ? pls_get_option('pls-option-bed-max') : 15; $user_bed_inc = pls_get_option('pls-option-bed-inc') ? pls_get_option('pls-option-bed-inc') : 1; if (is_numeric($user_bed_start) && is_numeric($user_bed_end) && is_numeric($user_bed_inc)) { $range = range($user_bed_start, $user_bed_end, $user_bed_inc); $form_options['min_beds'] = array(); foreach ($range as $bed_value) { $form_options['min_beds'][$bed_value] = $bed_value; } $form_options['min_beds'] = array('pls_empty_value' => $pls_empty_value['min_beds']) + $form_options['min_beds']; } /** Set the max beds array too. */ $form_options['max_beds'] = $form_options['min_beds']; // Set min_baths/max_baths form element $form_options['min_baths'] = array('pls_empty_value' => __($pls_empty_value['min_baths'], pls_get_textdomain()), '0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10'); $user_bath_start = pls_get_option('pls-option-bath-min') ? pls_get_option('pls-option-bath-min') : 0; $user_bath_end = pls_get_option('pls-option-bath-max') ? pls_get_option('pls-option-bath-max') : 10; $user_bath_inc = pls_get_option('pls-option-bath-inc') ? pls_get_option('pls-option-bath-inc') : 1; if (is_numeric($user_bath_start) && is_numeric($user_bath_end) && is_numeric($user_bath_inc)) { $range = range($user_bath_start, $user_bath_end, $user_bath_inc); $form_options['min_baths'] = array(); foreach ($range as $bath_value) { $form_options['min_baths'][$bath_value] = $bath_value; } $form_options['min_baths'] = array('pls_empty_value' => $pls_empty_value['min_baths']) + $form_options['min_baths']; } /** Set the max baths array too. */ $form_options['max_baths'] = $form_options['min_baths']; /** Define an array for extra attributes. */ $form_opt_attr = array(); /** Filter form fields. */ $form_option_keys = array_keys($form_options); $form_options_count = count($form_option_keys); // foreach( $form_options as $option_name => &$opt_array ) { // replace the foreach with for to provide reference update functionality in the loop for ($i = 0; $i < $form_options_count; $i++) { $option_name = $form_option_keys[$i]; $opt_array = $form_options[$option_name]; /** Filter each of the fields options arrays. */ $opt_array = apply_filters(pls_get_merged_strings(array("pls_listings_search_form_{$option_name}_array", $context), '_', 'pre', false), $opt_array, $context_var); /** Form options array. */ $form_opt_attr[$option_name] = apply_filters(pls_get_merged_strings(array("pls_listings_search_form_{$option_name}_attributes", $context), '_', 'pre', false), array(), $context_var); /** Make sure it is an array. */ if (!is_array($form_opt_attr[$option_name])) { $form_opt_attr[$option_name] = array(); } /** Append the data-placeholder attribute. */ if (isset($opt_array['pls_empty_value'])) { $form_opt_attr[$option_name] = $form_opt_attr[$option_name] + array('data-placeholder' => $opt_array['pls_empty_value']); } $form_options[$option_name] = $opt_array; } if (!isset($_POST['metadata'])) { $_POST['metadata'] = array(); } /** * Elements HTML. */ /** Add the bedrooms select element. */ if ($bedrooms == 1) { $selected_beds = isset($_POST['metadata']['beds']) ? wp_kses_post($_POST['metadata']['beds']) : false; $form_html['bedrooms'] = pls_h('select', array('name' => 'metadata[beds]') + $form_opt_attr['bedrooms'], pls_h_options($form_options['bedrooms'], $selected_beds)); } /** Add the bedrooms select element. */ if ($min_beds == 1) { $selected_min_beds = isset($_POST['metadata']['min_beds']) ? $_POST['metadata']['min_beds'] : false; $form_html['min_beds'] = pls_h('select', array('name' => 'metadata[min_beds]') + $form_opt_attr['min_beds'], pls_h_options($form_options['min_beds'], $selected_min_beds)); } /** Add the bedrooms select element. */ if ($max_beds == 1) { $selected_max_beds = isset($_POST['metadata']['max_beds']) ? $_POST['metadata']['max_beds'] : false; $form_html['max_beds'] = pls_h('select', array('name' => 'metadata[max_beds]') + $form_opt_attr['max_beds'], pls_h_options($form_options['max_beds'], $selected_max_beds)); } /** Add the bathroms select element. */ if ($bathrooms == 1) { $selected_baths = isset($_POST['metadata']['baths']) ? wp_kses_post($_POST['metadata']['baths']) : false; $form_html['bathrooms'] = pls_h('select', array('name' => 'metadata[baths]') + $form_opt_attr['bathrooms'], pls_h_options($form_options['bathrooms'], $selected_baths)); } /** Add the min baths select element. */ if ($min_baths == 1) { $selected_min_baths = isset($_POST['metadata']['min_baths']) ? $_POST['metadata']['min_baths'] : false; $form_html['min_baths'] = pls_h('select', array('name' => 'metadata[min_baths]') + $form_opt_attr['min_baths'], pls_h_options($form_options['min_baths'], $selected_min_baths)); } /** Add the max baths select element. */ if ($max_baths == 1) { $selected_max_baths = isset($_POST['metadata']['max_baths']) ? $_POST['metadata']['max_baths'] : false; $form_html['max_baths'] = pls_h('select', array('name' => 'metadata[max_baths]') + $form_opt_attr['max_baths'], pls_h_options($form_options['max_baths'], $selected_max_baths)); } /** Add the bathroms select element. */ if ($half_baths == 1) { $selected_half_baths = isset($_POST['metadata']['half_baths']) ? wp_kses_post($_POST['metadata']['half_baths']) : false; $form_html['half_baths'] = pls_h('select', array('name' => 'metadata[half_baths]') + $form_opt_attr['half_baths'], pls_h_options($form_options['half_baths'], $selected_half_baths)); } /** Add the property type select element. */ if ($property_type == 1) { $selected_property_type = isset($_POST['property_type']) ? wp_kses_post($_POST['property_type']) : false; $form_html['property_type'] = pls_h('select', array('name' => 'property_type') + $form_opt_attr['property_type'], pls_h_options($form_options['property_type'], $selected_property_type)); } /** Add the listing type select element. */ if ($listing_types == 1) { $selected_listing_types = isset($_POST['listing_types']) ? wp_kses_post($_POST['listing_types']) : false; $form_html['listing_types'] = pls_h('select', array('name' => 'listing_types') + $form_opt_attr['listing_types'], pls_h_options($form_options['listing_types'], $selected_listing_types)); } /** Add the zoning type select element. */ if ($zoning_types == 1) { $selected_zoning_types = isset($_POST['zoning_types']) ? wp_kses_post($_POST['zoning_types']) : false; $form_html['zoning_types'] = pls_h('select', array('name' => 'zoning_types[]') + $form_opt_attr['zoning_types'], pls_h_options($form_options['zoning_types'], $selected_zoning_types)); } /** Add the purchase type select element. */ if ($purchase_types == 1) { $default_purchase_types = @pls_get_option('default_form_options_purchase_types'); // Set Default if (empty($_POST['purchase_types'])) { $purchase_types_select = array($default_purchase_types); } else { $purchase_types_select = wp_kses_post($_POST['purchase_types']); } $form_html['purchase_types'] = pls_h('select', array('name' => 'purchase_types[]') + $form_opt_attr['purchase_types'], pls_h_options($form_options['purchase_types'], $purchase_types_select)); } /** Add the availability select element. */ if ($available_on == 1) { $selected_avail_on = isset($_POST['metadata']['avail_on']) ? wp_kses_post($_POST['metadata']['avail_on']) : false; $form_html['available_on'] = pls_h('select', array('name' => 'metadata[avail_on]') + $form_opt_attr['available_on'], pls_h_options($form_options['available_on'], $selected_avail_on)); } /** Add the cities select element. */ if ($multi_cities == 1) { // multi-city select option enabled $selected_locality = isset($_POST['location']['locality']) ? wp_kses_post($_POST['location']['locality']) : false; $form_html['cities'] = pls_h('select', array('name' => 'location[locality][]', 'multiple' => 'multiple') + $form_opt_attr['cities'], pls_h_options($form_options['cities'], $selected_locality, true)); } elseif ($cities == 1) { $selected_locality = isset($_POST['location']['locality']) ? wp_kses_post($_POST['location']['locality']) : false; $form_html['cities'] = pls_h('select', array('name' => 'location[locality]') + $form_opt_attr['cities'], pls_h_options($form_options['cities'], $selected_locality, true)); } /** Add the cities select element. */ if ($multi_states == 1) { // multi-state select option enabled $selected_region = isset($_POST['location']['region']) ? wp_kses_post($_POST['location']['region']) : false; $form_html['states'] = pls_h('select', array('name' => 'location[region][]', 'multiple' => 'multiple') + $form_opt_attr['states'], pls_h_options($form_options['states'], $selected_region, true)); } elseif ($states == 1) { $selected_region = isset($_POST['location']['region']) ? wp_kses_post($_POST['location']['region']) : false; $form_html['states'] = pls_h('select', array('name' => 'location[region]') + $form_opt_attr['states'], pls_h_options($form_options['states'], $selected_region, true)); } /** Add the cities select element. */ if ($zips == 1) { $selected_postal = isset($_POST['location']['postal']) ? wp_kses_post($_POST['location']['postal']) : false; $form_html['zips'] = pls_h('select', array('name' => 'location[postal]') + $form_opt_attr['zips'], pls_h_options($form_options['zips'], $selected_postal, true)); } /** Add the neighborhood select element. */ if ($multi_neighborhoods == 1) { // multi-neighborhood select option enabled $selected_neighborhood = isset($_POST['location']['neighborhood']) ? wp_kses_post($_POST['location']['neighborhood']) : false; $form_html['neighborhood'] = pls_h('select', array('name' => 'location[neighborhood][]', 'multiple' => 'multiple') + $form_opt_attr['neighborhood'], pls_h_options($form_options['neighborhood'], $selected_neighborhood, true)); } elseif ($neighborhood == 1) { $selected_neighborhood = isset($_POST['location']['neighborhood']) ? wp_kses_post($_POST['location']['neighborhood']) : false; $form_html['neighborhood'] = pls_h('select', array('name' => 'location[neighborhood]') + $form_opt_attr['neighborhood'], pls_h_options($form_options['neighborhood'], $selected_neighborhood, true)); } /** Add the county select element. */ if ($county == 1) { $selected_county = isset($_POST['location']['county']) ? wp_kses_post($_POST['location']['county']) : false; $form_html['county'] = pls_h('select', array('name' => 'location[county]') + $form_opt_attr['county'], pls_h_options($form_options['county'], $selected_county, true)); } /** Add the neighborhood / neighborhood_polygon select element. */ if ($neighborhood_polygons == 1) { if (count($form_options['neighborhood_polygons']) > 1) { $selected_polygons = isset($_POST['neighborhood_polygons']) ? wp_kses_post($_POST['neighborhood_polygons']) : false; $form_html['neighborhood_polygons'] = pls_h('select', array('name' => 'neighborhood_polygons') + $form_opt_attr['neighborhood_polygons'], pls_h_options($form_options['neighborhood_polygons'], $selected_polygons, true)); } else { // default to MLS data for neighborhoods if no polygons are set $selected_polygons = isset($_POST['location']['neighborhood']) ? wp_kses_post($_POST['location']['neighborhood']) : false; $form_html['neighborhood_polygons'] = pls_h('select', array('name' => 'location[neighborhood]') + $form_opt_attr['neighborhood'], pls_h_options($form_options['neighborhood'], $selected_neighborhood, true)); } } /** Add the minimum sqft select element. */ if ($min_sqft == 1) { $selected_min_sqft = isset($_POST['metadata']['min_sqft']) ? wp_kses_post($_POST['metadata']['min_sqft']) : false; $form_html['min_sqft'] = pls_h('select', array('name' => 'metadata[min_sqft]') + $form_opt_attr['min_sqft'], pls_h_options($form_options['min_sqft'], $selected_min_sqft)); } /** Add the minimum price select element. */ if ($max_sqft == 1) { $selected_max_sqft = isset($_POST['metadata']['max_sqft']) ? wp_kses_post($_POST['metadata']['max_sqft']) : false; $form_html['max_sqft'] = pls_h('select', array('name' => 'metadata[max_sqft]') + $form_opt_attr['max_sqft'], pls_h_options($form_options['max_sqft'], $selected_max_sqft)); } /** Add the minimum price select element. */ if ($min_price == 1) { $selected_min_price = isset($_POST['metadata']['min_price']) ? wp_kses_post($_POST['metadata']['min_price']) : false; $form_html['min_price'] = pls_h('select', array('name' => 'metadata[min_price]') + $form_opt_attr['min_price'], pls_h_options($form_options['min_price'], $selected_min_price)); } /** Add the maximum price select element. */ if ($max_price == 1) { $selected_max_price = isset($_POST['metadata']['max_price']) ? wp_kses_post($_POST['metadata']['max_price']) : false; $form_html['max_price'] = pls_h('select', array('name' => 'metadata[max_price]') + $form_opt_attr['max_price'], pls_h_options($form_options['max_price'], $selected_max_price)); } /** Add the minimum price select element. */ if ($min_price_rental == 1) { $selected_min_price = isset($_POST['metadata']['min_price']) ? wp_kses_post($_POST['metadata']['min_price']) : false; $form_html['min_price_rental'] = pls_h('select', array('name' => 'metadata[min_price]') + $form_opt_attr['min_price'], pls_h_options($form_options['min_price_rental'], $selected_min_price)); } /** Add the maximum price select element. */ if ($max_price_rental == 1) { $selected_max_price = isset($_POST['metadata']['max_price']) ? wp_kses_post($_POST['metadata']['max_price']) : false; $form_html['max_price_rental'] = pls_h('select', array('name' => 'metadata[max_price]') + $form_opt_attr['max_price'], pls_h_options($form_options['max_price_rental'], $selected_max_price)); } /** Add the minimum price select element. */ if ($min_price_sales == 1) { $selected_min_price = isset($_POST['metadata']['min_price']) ? wp_kses_post($_POST['metadata']['min_price']) : false; $form_html['min_price_sales'] = pls_h('select', array('name' => 'metadata[min_price]') + $form_opt_attr['min_price'], pls_h_options($form_options['min_price_sales'], $selected_min_price)); } /** Add the maximum price select element. */ if ($max_price_sales == 1) { $selected_max_price = isset($_POST['metadata']['max_price']) ? wp_kses_post($_POST['metadata']['max_price']) : false; $form_html['max_price_sales'] = pls_h('select', array('name' => 'metadata[max_price]') + $form_opt_attr['max_price'], pls_h_options($form_options['max_price_sales'], $selected_max_price)); } $section_title = array('bedrooms' => 'Beds', 'min_beds' => 'Min Beds', 'max_beds' => 'Max Beds', 'bathrooms' => 'Baths', 'min_baths' => 'Min Baths', 'max_baths' => 'Max Baths', 'half_baths' => 'Half Baths', 'property_type' => 'Property Type', 'zoning_types' => 'Zoning Type', 'listing_types' => 'Listing Type', 'purchase_types' => 'Purchase Type', 'available_on' => 'Available', 'cities' => 'Near', 'states' => 'State', 'zips' => 'Zip Code', 'min_price' => 'Min Price', 'max_price' => 'Max Price', 'neighborhood' => 'Neighborhood', 'county' => 'County', 'min_beds' => 'Min Beds', 'max_beds' => 'Max Beds', 'min_price_rental' => 'Min Price Rental', 'max_price_rental' => 'Max Price Rental', 'min_price_sales' => 'Min Price Sales', 'max_price_sales' => 'Max Price Sales', 'neighborhood_polygons' => 'Neighborhood Polygon', 'min_sqft' => 'Min Sqft', 'max_sqft' => 'Max Sqft'); // In case user somehow disables all filters. if (empty($form_html)) { return ''; } /** Apply filters on all the form elements html. */ $form_html_keys = array_keys($form_html); $form_html_count = count($form_html_keys); // foreach( $form_html as $option_name => &$opt_html ) { for ($i = 0; $i < $form_html_count; $i++) { $option_name = $form_html_keys[$i]; $opt_html = $form_html[$option_name]; $opt_html = apply_filters(pls_get_merged_strings(array("pls_listings_search_form_{$option_name}_html", $context), '_', 'pre', false), $opt_html, $form_options[$option_name], $section_title[$option_name], $context_var); $form_html[$option_name] = $opt_html; } /** Combine the form elements. */ $form = ''; foreach ($form_html as $label => $select) { $form .= pls_h('section', array('class' => $label . ' pls_search_form'), pls_h_label($section_title[$label], $label) . $select); } /** Add the filtered submit button. */ if ($include_submit) { $form_html['submit'] = apply_filters(pls_get_merged_strings(array("pls_listings_search_submit", $context), '_', 'pre', false), pls_h('input', array('class' => 'pls_search_button', 'type' => 'submit', 'value' => 'Search')), $context_var); /** Append the form submit. */ $form .= $form_html['submit']; } /** Wrap the combined form content in the form element and filter it. */ $form_id = pls_get_merged_strings(array('pls-listings-search-form', $context), '-', 'pre', false); $form = pls_h('form', array('action' => @$form_data->action, 'method' => 'post', 'id' => $form_id, 'class' => $class), @$form_data->hidden_field . apply_filters(pls_get_merged_strings(array("pls_listings_search_form_inner", $context), '_', 'pre', false), $form, $form_html, $form_options, $section_title, $context_var)); /** Filter the form. */ $result = apply_filters(pls_get_merged_strings(array("pls_listings_search_form_outer", $context), '_', 'pre', false), $form, $form_html, $form_options, $section_title, @$form_data, $form_id, $context_var); // Load the filters.js script... $result .= '<script type="text/javascript" src="' . trailingslashit(PLS_JS_URL) . 'scripts/filters.js"></script>'; $cache->save($result); return $result; }
function custom_property_details_page($html, $listing) { ob_start(); ?> <section id="lvl2"> <div class="wrapper"> <div id="property"> <h2><?php _e('Property Details', 'manchester'); ?> </h2> <section class="property-inf"> <div class="property-title"> <span class="blue"><b><?php echo $listing['location']['full_address']; ?> </b></span> <p><span><?php echo $listing['cur_data']['beds']; ?> <?php _e('Bedrooms', 'manchester'); ?> </span> <span><?php echo $listing['cur_data']['baths']; ?> <?php _e('Bathrooms', 'manchester'); ?> </span></p> </div> <div class="property-price"> <span class="green"><b><?php echo PLS_Format::number($listing['cur_data']['price'], array('abbreviate' => false, 'add_currency_sign' => true)); ?> </b></span> </div> </section> <section class="property-bin"> <div class="property-img"> <div class="img_box"> <?php if ($listing['images']) { ?> <?php echo PLS_Image::load($listing['images'][0]['url'], array('resize' => array('w' => 600, 'h' => 250, 'method' => 'crop'), 'fancybox' => false, 'as_html' => true, 'html' => array('img_classes' => 'main-banner'))); ?> <?php } else { ?> <?php echo PLS_Image::load(null, array('resize' => array('w' => 600, 'h' => 250, 'method' => 'crop'), 'fancybox' => false, 'as_html' => true, 'html' => array('img_classes' => 'main-banner'))); ?> <?php } ?> </div> </div> </section> <!-- sidebar container section --> <section class="property-map"> <div class="property-gmap"> <?php echo PLS_Map::dynamic($listing, array('lat' => $listing['location']['coords'][0], 'lng' => $listing['location']['coords'][1], 'zoom' => '14', 'width' => 338, 'height' => 230, 'canvas_id' => 'map_canvas', 'class' => 'custom_google_map', 'map_js_var' => 'pls_google_map', 'ajax_form_class' => false)); ?> </div> <script type="text/javascript"> jQuery(document).ready(function( $ ) { var map = new Map(); var listing = new Listings({ single_listing: <?php echo json_encode($listing); ?> , map: map }); map.init({ type: 'single_listing', listings: listing, lat : <?php echo json_encode($listing['location']['coords'][0]); ?> , lng : <?php echo json_encode($listing['location']['coords'][1]); ?> , zoom : 14 }); listing.init(); }); </script> <div class="property-lnks"> <!-- <section class="list-fav"><a href="#"><?php _e('Add to favorites', 'manchester'); ?> </a></section> --> <section class="list-req"><a href="<?php echo pls_get_option('pls-user-email'); ?> "><?php _e('Request more info', 'manchester'); ?> </a></section> </div> </section> <!-- </div> </div> end of wrapper </section> --> <section id="lvl4"> <div class="wrapper"> <section class="left-content"> <section class="list2"> <h5><?php _e('DETAILS', 'manchester'); ?> </h5> <section class="list-item"> <section class="list-details"> <section class="list-details-1-2"> <label><?php _e('Zoning Type', 'manchester'); ?> </label> <p><?php echo ucwords($listing['zoning_types'][0]); ?> </p> <?php if (isset($listing['purchase_types'][0])) { ?> <label><?php _e('Listing Type', 'manchester'); ?> </label> <p><?php echo ucwords($listing['purchase_types'][0]); ?> </p> <?php } ?> <?php if ($listing['property_type']) { ?> <label><?php _e('Property Type', 'manchester'); ?> </label> <p><?php echo PLS_Format::translate_property_type($listing); ?> </p> <?php } ?> <?php if (isset($listing['rets']['mls_id'])) { ?> <label><?php _e('MLS#', 'manchester'); ?> </label> <p><?php echo $listing['rets']['mls_id']; ?> </p> <?php } else { ?> <label><?php _e('Ref #', 'manchester'); ?> </label> <p><?php echo $listing['id']; ?> </p> <?php } ?> </section> <section class="list-details-2-2"> <label><?php _e('Bedrooms', 'manchester'); ?> </label> <p><?php echo $listing['cur_data']['beds']; ?> </p> <label><?php _e('Bathrooms', 'manchester'); ?> </label> <p><?php echo $listing['cur_data']['baths']; ?> </p> <label><?php _e('Half Baths', 'manchester'); ?> </label> <p><?php echo $listing['cur_data']['half_baths']; ?> </p> </section> </section> </section> <div class="separator-1-sma"></div> <?php if ($listing['cur_data']['desc']) { ?> <h5><?php _e('DESCRIPTION', 'manchester'); ?> </h5> <section class="list-item"> <section class="list-details"><?php echo $listing['cur_data']['desc']; ?> </section> </section> <?php } ?> <div class="separator-1-sma"></div> <?php $amenities = PLS_Format::amenities_but($listing, array('half_baths', 'beds', 'baths', 'url', 'sqft', 'avail_on', 'price', 'desc')); ?> <?php if (isset($amenities['list']) && $amenities['list'] != null) { ?> <?php $amenities['list'] = PLS_Format::translate_amenities($amenities['list']); ?> <h5><?php _e('PROPERTY AMENITIES', 'manchester'); ?> </h5> <section class="list-item"> <section class="list-amenity"> <?php foreach ($amenities['list'] as $amenity => $value) { ?> <label><span><?php echo $amenity; ?> </span> <?php echo $value; ?> </label> <?php } ?> </section> </section> <div class="separator-1-sma"></div> <?php } ?> <?php if (isset($amenities['ngb']) && $amenities['ngb'] != null) { ?> <?php $amenities['ngb'] = PLS_Format::translate_amenities($amenities['ngb']); ?> <h5><?php _e('NEIGHBORHOOD AMENITIES', 'manchester'); ?> </h5> <section class="list-item"> <section class="list-amenity"> <?php foreach ($amenities['ngb'] as $amenity => $value) { ?> <label><span><?php echo $amenity; ?> </span> <?php echo $value; ?> </label> <?php } ?> </section> </section> <div class="separator-1-sma"></div> <?php } ?> <?php if (isset($amenities['uncur']) && $amenities['uncur'] != null) { ?> <?php $amenities['uncur'] = PLS_Format::translate_amenities($amenities['uncur']); ?> <h5><?php _e('CUSTOM AMENITIES', 'manchester'); ?> </h5> <section class="list-item"> <section class="list-amenity"> <?php foreach ($amenities['uncur'] as $amenity => $value) { ?> <label><span><?php echo $amenity; ?> </span> <?php echo $value; ?> </label> <?php } ?> </section> </section> <div class="separator-1-sma"></div> <?php } ?> </section><!-- /.list2 --> </section><!-- /.left-content --> <aside class="sidebar"> <section class="side-bin2"> <?php if ($listing['images']) { ?> <h5><?php _e('PHOTO GALLERY', 'manchester'); ?> </h5> <section class="gallery"> <?php foreach ($listing['images'] as $image) { ?> <?php echo PLS_Image::load($image['url'], array('resize' => array('w' => 140, 'h' => 93, 'method' => 'crop'), 'fancybox' => true, 'as_html' => false)); ?> <?php } ?> </section> <?php } ?> </section> </aside> <div class="clr"></div> </div><!-- end of wrapper --> </section> <section id="lvl5"> <div class="wrapper"> <section class="neighborhood"> <h5><?php _e('NEIGHBORHOOD', 'manchester'); ?> </h5> <section class="neighborhood-map"> <?php echo PLS_Map::dynamic($listing, array('lat' => $listing['location']['coords'][0], 'lng' => $listing['location']['coords'][1], 'zoom' => '13', 'width' => 960, 'height' => 258, 'canvas_id' => 'map_canvas_nbr', 'class' => 'custom_google_map_nbr', 'map_js_var' => 'pls_google_map_nbr', 'ajax_form_class' => false)); ?> </section> <script type="text/javascript"> jQuery(document).ready(function( $ ) { var map_nbr = new Map(); var listing_nbr = new Listings({ single_listing: <?php echo json_encode($listing); ?> , map: map_nbr }); map_nbr.init({ type: 'single_listing', dom_id: 'map_canvas_nbr', listings: listing_nbr, lat: <?php echo json_encode($listing['location']['coords'][0]); ?> , lng: <?php echo json_encode($listing['location']['coords'][1]); ?> , zoom: 14 }); listing_nbr.init(); }); </script> </section> <?php PLS_Listing_Helper::get_compliance(array('context' => 'listings', 'agent_name' => $listing['rets']['aname'], 'office_name' => $listing['rets']['oname'], 'office_phone' => PLS_Format::phone($listing['contact']['phone']), 'agent_license' => isset($listing['rets']['alicense']) ? $listing['rets']['alicense'] : false, 'co_agent_name' => isset($listing['rets']['aconame']) ? $listing['rets']['aconame'] : false, 'co_office_name' => isset($listing['rets']['oconame']) ? $listing['rets']['oconame'] : false)); ?> </div><!-- end of wrapper --> </section> <?php return ob_get_clean(); }
function custom_listing_ajax_data_filter($listings) { foreach ($listings as $listing) { //format price $listing->price = PLS_Format::number($listing->price, array('add_currency_sign' => true, 'abbreviate' => false)); //format images if (isset($listing->images) && is_array($listing->images)) { foreach ($listing->images as $index => $image) { // pls_dump($image->url); // pls_dump(PLS_Image::load($image->url, array('resize' => array('w' => 149, 'h' => 90, 'method' => 'crop') ) )); // $listings->images[$index]->url = PLS_Image::load($image->url, array('resize' => array('w' => 149, 'h' => 90, 'method' => 'crop') ) ); } } } return $listings; }
/** * Widget Output * * @param $args (array) * @param $instance (array) Widget values. */ public function widget($args, $instance) { // widget output extract($args); $title = empty($instance['title']) ? ' ' : apply_filters('widget_title', $instance['title']); $number_of_posts = isset($instance['number_of_posts']) ? $instance['number_of_posts'] : 5; $widget_id = isset($instance['widget_id']) ? $instance['widget_id'] : 1; /** Define the default argument array. */ $defaults = array('before_widget' => '<section class="testimonials-widget widget">', 'after_widget' => '</section>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>'); /** Merge the arguments with the defaults. */ $args = wp_parse_args($args, $defaults); extract($args, EXTR_SKIP); if (!post_type_exists('testimonial')) { return false; } // Testimonials start $args = array('numberposts' => $number_of_posts, 'post_type' => 'testimonial'); $testimonials = get_posts($args); $widget_body = '<section class="featured-testimonials-widget">'; foreach ($testimonials as $testimonial) { setup_postdata($testimonial); $post_item = array('url' => $testimonial->guid, 'content' => $testimonial->post_content, 'title' => $testimonial->post_title, 'image' => '', 'id' => $testimonial->ID, 'testimonial_giver' => get_post_meta($testimonial->ID, 'testimonial_giver', true), 'testimonial_giver_from' => get_post_meta($testimonial->ID, 'testimonial_giver_from', true)); if (has_post_thumbnail($testimonial->ID)) { $post_image = wp_get_attachment_image_src(get_post_thumbnail_id($testimonial->ID)); $post_item['image'] = '<img src="' . $post_image[0] . '" style="width:100%;" />'; } ob_start(); ?> <article class="featured-testimonial" itemscope itemtype="http://schema.org/Review"> <h4 itemprop="name"><?php echo $post_item['title']; ?> </h4> <blockquote itemprop="review"> <p><?php echo PLS_Format::shorten_text($post_item['content'], 130); ?> </p> </blockquote> <?php if ($post_item['testimonial_giver']) { echo '<p><cite>' . $post_item['testimonial_giver'] . '</cite></p>'; } ?> <p><a href="<?php echo $post_item['url']; ?> " itemprop="url">Read More</a></p> </article> <?php $single_testimonial = ob_get_clean(); /** Wrap the post in an article element and filter its contents. */ $single_testimonial = apply_filters('pls_widget_testimonials_post_inner', $single_testimonial, $post_item, $instance, $widget_id); /** Append the filtered post to the post list. */ $widget_body .= apply_filters('pls_widget_testiomonials_post_outer', $single_testimonial, $post_item, $instance, $widget_id); } $widget_body .= '</section>'; // Display Widget echo $before_widget; if ($instance['title']) { echo $before_title . $title . $after_title; } echo $widget_body; echo $after_widget; }
function custom_property_details_page($html, $listing) { ob_start(); // pls_dump($listing); ?> <div id="main"> <section class="property-banner"> <?php if ($listing['images']) { ?> <?php echo PLS_Image::load($listing['images'][0]['url'], array('resize' => array('w' => 625, 'h' => 292, 'method' => 'crop'), 'fancybox' => false, 'as_html' => true, 'html' => array('img_classes' => 'main-banner'))); ?> <?php } else { ?> <?php echo PLS_Image::load(null, array('resize' => array('w' => 625, 'h' => 292, 'method' => 'crop'), 'fancybox' => false, 'as_html' => true, 'html' => array('img_classes' => 'main-banner'))); ?> <?php } ?> <p class="state"><?php echo $listing['location']['full_address']; ?> <span class="rent"><?php echo PLS_Format::number($listing['cur_data']['price'], array('abbreviate' => false, 'add-currency-sign' => true)); ?> <em></em></span><br><span class="details"><?php echo $listing['cur_data']['beds']; ?> <?php _e('Bedrooms', 'tampa'); ?> | <?php echo $listing['cur_data']['baths']; ?> <?php _e('Bathrooms', 'tampa'); ?> </span></p> </section> <section class="user-generated"> <h3><?php _e('Details', 'tampa'); ?> </h3> <ul class="list-half"> <li><?php _e('Listing Type', 'tampa'); ?> <span><?php echo ucwords($listing['purchase_types'][0]); ?> </span></li> <li><?php _e('Bedrooms', 'tampa'); ?> <span><?php echo $listing['cur_data']['beds']; ?> </span></li> <li><?php _e('Property Type', 'tampa'); ?> <span><?php echo PLS_Format::translate_property_type($listing); ?> </span> </li> <li><?php _e('Bathrooms', 'tampa'); ?> <span><?php echo $listing['cur_data']['baths']; ?> </span></li> <?php if (isset($listing['rets']['mls_id'])) { ?> <li><?php _e('MLS #', 'tampa'); ?> <span><?php echo $listing['rets']['mls_id']; ?> </span> </li> <?php } ?> <li><?php _e('Half Baths', 'tampa'); ?> <span><?php echo $listing['cur_data']['half_baths']; ?> </span></li> </ul><!--list-half--> <div class="clr"></div> </section><!--user-generated--> <?php if ($listing['cur_data']['desc']) { ?> <section class="user-generated"> <h3><?php _e('Description', 'tampa'); ?> </h3> <p><?php echo $listing['cur_data']['desc']; ?> </p> </section> <?php } ?> <?php $amenities = PLS_Format::amenities_but($listing, array('half_baths', 'beds', 'baths', 'url', 'sqft', 'avail_on', 'price', 'desc')); ?> <?php if (isset($amenities['list']) && $amenities['list'] != null) { ?> <section class="user-generated"> <h3><?php _e('Property Amenities', 'tampa'); ?> </h3> <ul class="list-third"> <?php $amenities['list'] = PLS_Format::translate_amenities($amenities['list']); ?> <?php foreach ($amenities['list'] as $amenity => $value) { ?> <li><span><?php echo $amenity; ?> </span> <?php echo $value; ?> </li> <?php } ?> </ul> <div class="clr"></div> </section> <?php } ?> <?php if (isset($amenities['ngb']) && $amenities['ngb'] != null) { ?> <section class="user-generated"> <h3><?php _e('Neighborhood Amenities', 'tampa'); ?> </h3> <ul class="list-third"> <?php $amenities['ngb'] = PLS_Format::translate_amenities($amenities['ngb']); ?> <?php foreach ($amenities['ngb'] as $amenity => $value) { ?> <li><span><?php echo $amenity; ?> </span> <?php echo $value; ?> </li> <?php } ?> </ul> <div class="clr"></div> </section> <?php } ?> <?php if (isset($amenities['uncur']) && $amenities['uncur'] != null) { ?> <section class="user-generated"> <h3><?php _e('Property Amenities', 'tampa'); ?> </h3> <ul class="list-third"> <?php $amenities['uncur'] = PLS_Format::translate_amenities($amenities['uncur']); ?> <?php foreach ($amenities['uncur'] as $amenity => $value) { ?> <li><span><?php echo $amenity; ?> </span> <?php echo $value; ?> </li> <?php } ?> </ul> <div class="clr"></div> </section> <?php } ?> </div><!--main--> <aside> <section id="single-property-mini-map"> <h3><php _e('Location', 'tampa'); ?></h3> <?php echo PLS_Map::dynamic($listing, array('lat' => $listing['location']['coords'][0], 'lng' => $listing['location']['coords'][1], 'zoom' => '14', 'width' => 288, 'height' => 217, 'canvas_id' => 'map_canvas', 'class' => 'custom_google_map', 'map_js_var' => 'pls_google_map', 'ajax_form_class' => false)); ?> <script type="text/javascript"> jQuery(document).ready(function( $ ) { var map = new Map(); var listing = new Listings({ single_listing: <?php echo json_encode($listing); ?> , map: map }); map.init({ type: 'single_listing', listings: listing, lat : <?php echo json_encode($listing['location']['coords'][0]); ?> , lng : <?php echo json_encode($listing['location']['coords'][1]); ?> , zoom : 14 }); listing.init(); }); </script> <div class="map-bar"> <!-- <a class="fav-org" href="#">Add to Favorites</a> --> <a class="info-org" href="mailto:<?php echo pls_get_option('pls-user-email'); ?> "><?php _e('Request More Info', 'tampa'); ?> </a> <div class="clr"></div> </div><!--map-bar--> </section> <?php if ($listing['images']) { ?> <section id="gallery"> <h3><?php _e('Photo Gallery', 'tampa'); ?> </h3> <?php foreach ($listing['images'] as $image) { ?> <?php echo PLS_Image::load($image['url'], array('resize' => array('w' => 120, 'h' => 95, 'method' => 'crop'), 'fancybox' => true, 'as_html' => false)); ?> <?php } ?> </section><!--gallery--> <?php } ?> </aside> <div class="clr"></div> <section id="full"> <section class="user-generated"> <h3><?php _e('Neighborhood', 'tampa'); ?> </h3> <?php echo PLS_Map::dynamic($listing, array('lat' => $listing['location']['coords'][0], 'lng' => $listing['location']['coords'][1], 'zoom' => '14', 'width' => 930, 'height' => 260, 'canvas_id' => 'map_canvas_nbr', 'class' => 'custom_google_map_nbr', 'map_js_var' => 'pls_google_map_nbr', 'ajax_form_class' => false)); ?> </section> <script type="text/javascript"> jQuery(document).ready(function( $ ) { var map_nbr = new Map(); var listing_nbr = new Listings({ single_listing: <?php echo json_encode($listing); ?> , map: map_nbr }); map_nbr.init({ type: 'single_listing', dom_id: 'map_canvas_nbr', listings: listing_nbr, lat: <?php echo json_encode($listing['location']['coords'][0]); ?> , lng: <?php echo json_encode($listing['location']['coords'][1]); ?> , zoom: 14 }); listing_nbr.init(); }); </script> <?php if (isset($listing['cur_data']['mls_number']) && isset($listing['mls_logo'])) { ?> <section class="user-generated"> <h3><?php _e('Listing Supply Source', 'tampa'); ?> </h3> <p class="p-supply"><?php _e('MLS #', 'tampa'); ?> : <?php echo $listing['cur_data']['mls_number']; ?> </p> <div class="clr"></div> </section> <?php } ?> <?php PLS_Listing_Helper::get_compliance(array('context' => 'listings', 'agent_name' => $listing['rets']['aname'], 'office_name' => $listing['rets']['oname'], 'office_phone' => PLS_Format::phone($listing['contact']['phone']), 'agent_license' => isset($listing['rets']['alicense']) ? $listing['rets']['alicense'] : false, 'co_agent_name' => isset($listing['rets']['aconame']) ? $listing['rets']['aconame'] : false, 'co_office_name' => isset($listing['rets']['oconame']) ? $listing['rets']['oconame'] : false)); ?> </section><!--full--> <?php return ob_get_clean(); }
function tampa_custom_home_listing_list($listing_html, $listing_data) { // pls_dump($listing_data); ob_start(); ?> <section class="list-unit"> <section class="lu-left"> <?php if (isset($listing_data['images']) && is_array($listing_data['images'])) { ?> <?php echo PLS_Image::load($listing_data['images'][0]['url'], array('resize' => array('w' => 144, 'h' => 93, 'method' => 'crop'), 'fancybox' => true)); ?> <?php } else { ?> <?php echo PLS_Image::load('', array('resize' => array('w' => 144, 'h' => 93, 'method' => 'crop'), 'fancybox' => true)); ?> <?php } ?> <?php if (isset($listing_data['rets']['mls_id']) && $listing_data['rets']['mls_id']) { ?> <p class="mls"><span>MLS #:</span> <?php echo $listing_data['rets']['mls_id']; ?> </p> <?php } ?> </section> <section class="lu-right"> <div class="lu-address"> <h4><a href="<?php echo $listing_data['cur_data']['url']; ?> "><?php echo $listing_data['location']['address']; ?> </a></h4> <p class="area"><?php echo $listing_data['location']['locality']; ?> , <?php echo $listing_data['location']['region']; ?> </p> </div><!--lu-address--> <div class="lu-price"> <p class="price"><strong><?php echo PLS_Format::number($listing_data['cur_data']['price'], array('abbreviate' => false, 'add_currency_sign' => true)); ?> </strong><?php if ($listing_data['cur_data']['lse_trms'] != null) { echo $listing_data['cur_data']['lse_trms']; } ?> </p> <p class="rent-label"><?php if (isset($listing_data['purchase_types'][0])) { echo ucwords($listing_data['purchase_types'][0]); } ?> </p> </div><!--lu-price--> <div class="lu-main"> <?php if (isset($listing_data['cur_data']['desc'])) { echo '<p>'; if (strlen($listing_data['cur_data']['desc']) < 200) { echo $listing_data['cur_data']['desc']; } else { $position = strrpos(substr($listing_data['cur_data']['desc'], 0, 200), ' '); echo substr($listing_data['cur_data']['desc'], 0, $position) . '...'; } echo '</p>'; } ?> <p class="info"><span><?php echo $listing_data['cur_data']['beds']; ?> </span> Bedrooms | <span><?php echo $listing_data['cur_data']['baths']; ?> </span> Bathrooms <?php if ($listing_data['cur_data']['sqft'] != null) { echo '| <span>' . PLS_Format::number($listing_data['cur_data']['sqft'], array('abbreviate' => false, 'add_currency_sign' => false)) . '</span> sqft'; } ?> </p> <!-- <a class="fav" href="#">Add to Favorites</a> --> <?php $api_whoami = PLS_Plugin_API::get_user_details(); ?> <?php if (pls_get_option('pls-user-email')) { ?> <a class="info-bt" href="mailto:<?php echo pls_get_option('pls-user-email'); ?> " target="_blank"><?php _e('Request Information', 'tampa'); ?> </a> <?php } else { ?> <a class="info-bt" href="mailto:<?php echo $api_whoami['user']['email']; ?> " target="_blank"><?php _e('Request Information', 'tampa'); ?> </a> <?php } ?> <a class="see-details-link details-bt" href="<?php echo $listing_data['cur_data']['url']; ?> "><?php _e('See Details', 'tampa'); ?> </a> </div><!--lu-main--> </section><!--lu-right--> <?php PLS_Listing_Helper::get_compliance(array('context' => 'inline_search', 'agent_name' => $listing_data['rets']['aname'], 'office_name' => $listing_data['rets']['oname'], 'office_phone' => PLS_Format::phone($listing_data['contact']['phone']), 'agent_license' => isset($listing_data['rets']['alicense']) ? $listing_data['rets']['alicense'] : false, 'co_agent_name' => isset($listing_data['rets']['aconame']) ? $listing_data['rets']['aconame'] : false, 'co_office_name' => isset($listing_data['rets']['oconame']) ? $listing_data['rets']['oconame'] : false)); ?> <div class="clr"></div> </section><!--list-unit--> <?php $listing_html = ob_get_clean(); return $listing_html; }
public static function init($content) { global $post; if ($post->post_type == 'property') { $html = ''; $listing_data = PLS_Plugin_API::get_listing_in_loop(); // re-order images by assigned order $property_images = is_array($listing_data['images']) ? $listing_data['images'] : array(); usort($property_images, array('PLS_Partials_Property_Details', 'sort_images_by_order')); // reset the images $listing_data['images'] = $property_images; // Problems with API key or inconsistent data lead to notices due to null listings if (!is_null($listing_data)) { $listing_data['location']['full_address'] = $listing_data['location']['address'] . ' ' . $listing_data['location']['locality'] . ' ' . $listing_data['location']['region']; // This has to happen here to ensure it's not filtered out by whatever might be filtering this output... echo PLS_Plugin_API::log_snippet_js('listing_view', array('prop_id' => $listing_data['id'])); ob_start(); ?> <h2 itemprop="name" itemscope itemtype="http://schema.org/PostalAddress"> <span itemprop="streetAdress"><?php echo $listing_data['location']['address']; ?> </span> <span itemprop="addressLocality"><?php echo $listing_data['location']['locality']; ?> </span>, <span itemprop="addressRegion"><?php echo $listing_data['location']['region']; ?> </span> </h2> <?php echo PLS_Plugin_API::placester_favorite_link_toggle(array('property_id' => $listing_data['id'], 'add_text' => 'Add To Favorites', 'remove_text' => 'Remove From Favorites')); ?> <p itemprop="price"><?php echo PLS_Format::number($listing_data['cur_data']['price'], array('abbreviate' => false, 'add_currency_sign' => true)); ?> <span><?php echo PLS_Format::translate_lease_terms($listing_data); ?> </span></p> <p class="listing_type"><?php if (isset($listing_data['zoning_types'][0]) && isset($listing_data['purchase_types'][0])) { echo ucwords(@$listing_data['zoning_types'][0] . ' ' . @$listing_data['purchase_types'][0]); } ?> </p> <div class="clearfix"></div> <?php if ($listing_data['images']) { ?> <div class="theme-default property-details-slideshow"> <?php echo PLS_Image::load($listing_data['images'][0]['url'], array('resize' => array('w' => 590, 'h' => 300), 'fancybox' => false, 'as_html' => true, 'html' => array('itemprop' => 'image'))); ?> <?php // echo PLS_Slideshow::slideshow( array( 'anim_speed' => 1000, 'pause_time' => 15000, 'control_nav' => true, 'width' => 620, 'height' => 300, 'context' => 'home', 'data' => PLS_Slideshow::prepare_single_listing($listing_data) ) ); ?> </div> <div class="details-wrapper grid_8 alpha"> <div id="slideshow" class="clearfix theme-default left bottomborder"> <div class="grid_8 alpha"> <ul class="property-image-gallery grid_8 alpha"> <?php foreach ($listing_data['images'] as $images) { ?> <li><?php echo PLS_Image::load($images['url'], array('resize' => array('w' => 100, 'h' => 75), 'fancybox' => true, 'as_html' => true, 'html' => array('itemprop' => 'image'))); ?> </li> <?php } ?> </ul> </div> </div> </div> <?php } ?> <div class="basic-details grid_8 alpha"> <ul> <li><span>Beds: </span><?php echo $listing_data['cur_data']['beds']; ?> </li> <li><span>Baths: </span><?php echo $listing_data['cur_data']['baths']; ?> </li> <?php if (isset($listing_data['cur_data']['half_baths']) && $listing_data['cur_data']['half_baths'] != null) { ?> <li><span>Half Baths: </span><?php echo $listing_data['cur_data']['half_baths']; ?> </li> <?php } ?> <li><span>Square Feet: </span><?php echo PLS_Format::number($listing_data['cur_data']['sqft'], array('abbreviate' => false, 'add_currency_sign' => false)); ?> </li> <?php if (isset($listing_data['cur_data']['avail_on']) && $listing_data['cur_data']['avail_on'] != null) { ?> <li itemprop="availability"><span>Available: </span><?php echo @$listing_data['cur_data']['avail_on']; ?> </li> <?php } ?> <li>Property Type: <?php echo PLS_Format::translate_property_type($listing_data); ?> </li> <?php if (isset($listing_data['rets']) && isset($listing_data['rets']['mls_id'])) { ?> <li><span>MLS #: </span><?php echo $listing_data['rets']['mls_id']; ?> </li> <?php } ?> </ul> </div> <div class="details-wrapper grid_8 alpha"> <h3>Property Description</h3> <?php if (!empty($listing_data['cur_data']['desc'])) { ?> <p itemprop="description"><?php echo $listing_data['cur_data']['desc']; ?> </p> <?php } else { ?> <p> No description available </p> <?php } ?> </div> <?php $amenities = PLS_Format::amenities_but($listing_data, array('half_baths', 'beds', 'baths', 'url', 'sqft', 'avail_on', 'price', 'desc')); ?> <?php if (!empty($amenities['list'])) { ?> <div class="amenities-section grid_8 alpha"> <h3>Listing Amenities</h3> <ul> <?php $amenities['list'] = PLS_Format::translate_amenities($amenities['list']); ?> <?php foreach ($amenities['list'] as $amenity => $value) { ?> <li><span><?php echo $amenity; ?> </span> <?php echo $value; ?> </li> <?php } ?> </ul> </div> <?php } ?> <?php if (!empty($amenities['ngb'])) { ?> <div class="amenities-section grid_8 alpha"> <h3>Local Amenities</h3> <ul> <?php $amenities['ngb'] = PLS_Format::translate_amenities($amenities['ngb']); ?> <?php foreach ($amenities['ngb'] as $amenity => $value) { ?> <li><span><?php echo $amenity; ?> </span> <?php echo $value; ?> </li> <?php } ?> </ul> </div> <?php } ?> <?php if (!empty($amenities['uncur'])) { ?> <div class="amenities-section grid_8 alpha"> <h3>Custom Amenities</h3> <ul> <?php $amenities['uncur'] = PLS_Format::translate_amenities($amenities['uncur']); ?> <?php foreach ($amenities['uncur'] as $amenity => $value) { ?> <li><span><?php echo $amenity; ?> </span> <?php echo $value; ?> </li> <?php } ?> </ul> </div> <?php } ?> <div class="map-wrapper grid_8 alpha"> <h3>Property Map</h3> <script type="text/javascript"> jQuery(document).ready(function( $ ) { var map = new Map(); var listing = new Listings({ single_listing : <?php echo json_encode($listing_data); ?> , map: map }); map.init({ type: 'single_listing', listings: listing, lat : <?php echo json_encode($listing_data['location']['coords'][0]); ?> , lng : <?php echo json_encode($listing_data['location']['coords'][1]); ?> , zoom : 14 }); listing.init(); }); </script> <div class="map"> <?php echo PLS_Map::dynamic($listing_data, array('lat' => $listing_data['location']['coords'][0], 'lng' => $listing_data['location']['coords'][1], 'height' => 250, 'zoom' => 16)); ?> </div> </div> <?php PLS_Listing_Helper::get_compliance(array('context' => 'listings', 'agent_name' => @$listing_data['rets']['aname'], 'office_name' => @$listing_data['rets']['oname'])); ?> <?php // Store output... $html = ob_get_clean(); } // Enable Lead Capture $lead_capture_enable = pls_get_option('pd-lc-enable'); if ($lead_capture_enable == 1) { ob_start(); ?> <!-- Lead Capture Shortcode --> <div style="display:none;" href="#" id="property-details-lead-capture"> <?php do_shortcode('[lead_capture_template lead_capture_cookie="true" name_required="true" question_required="false" width="440"]'); ?> </div> <?php // Store output... $lead_capture_block = ob_get_clean(); } $html = apply_filters('property_details_filter', $html, $listing_data); // Add lead capture block to HTML if (isset($lead_capture_block)) { $html = $lead_capture_block . $html; } return $html; } // Post is not of type property, so just return what was initially passed in... return $content; }