Exemplo n.º 1
0
 public static function get_brick_listings($listing_params, $featured_option_id)
 {
     // Try to set to featured listings if param is set...
     $brick_listings = $featured_option_id ? PLS_Listing_Helper::get_featured($featured_option_id) : array();
     // If featured listings param is false OR there are no featured listings, chose some randomly...
     if (empty($brick_listings['listings'])) {
         $brick_listings = PLS_Plugin_API::get_listings($listing_params);
     }
     return $brick_listings['listings'];
 }
Exemplo n.º 2
0
 public static function get_listings()
 {
     $response = array();
     //exact addresses should be shown.
     $_POST['address_mode'] = 'exact';
     // Sorting
     $columns = array('location.address');
     $_POST['sort_by'] = $columns[$_POST['iSortCol_0']];
     $_POST['sort_type'] = $_POST['sSortDir_0'];
     if (isset($_POST['agency_only']) && $_POST['agency_only'] == 'on') {
         $_POST['agency_only'] = 1;
     }
     if (isset($_POST['non_import']) && $_POST['non_import'] == 'on') {
         $_POST['non_import'] = 1;
     }
     // text searching on address
     // $_POST['location']['address'] = @$_POST['sSearch'];
     $_POST['location']['address_match'] = 'like';
     // Pagination
     $_POST['limit'] = $_POST['iDisplayLength'];
     $_POST['offset'] = $_POST['iDisplayStart'];
     // Get listings from model
     $api_response = PLS_Plugin_API::get_listings($_POST, false);
     // build response for datatables.js
     $listings = array();
     foreach ($api_response['listings'] as $key => $listing) {
         $listings[$key][] = $listing['location']['address'] . ', ' . $listing['location']['locality'] . ' ' . $listing['location']['region'];
         $listings[$key][] = !empty($listing['images']) ? '<a id="listing_image" href="' . $listing['images'][0]['url'] . '"  style="display: inline-block" onclick=\'return false;\'>Preview</a>' : 'No Image';
         $listings[$key][] = '<a id="pls_add_option_listing" href="#" ref="' . $listing['id'] . '">Make Featured</a>';
     }
     // Required for datatables.js to function properly.
     $response['sEcho'] = $_POST['sEcho'];
     $response['aaData'] = $listings;
     $response['iTotalRecords'] = $api_response['total'];
     $response['iTotalDisplayRecords'] = $api_response['total'];
     echo json_encode($response);
     //wordpress echos out a 0 randomly. die prevents it.
     die;
 }
Exemplo n.º 3
0
 public static function get_search_count()
 {
     $response = PLS_Plugin_API::get_listings($_POST);
     echo json_encode(array('count' => $response['total']));
     die;
 }
Exemplo n.º 4
0
 public static function make_markers($listings, $marker_args, $map_args)
 {
     self::$markers = array();
     if (isset($listings[0])) {
         foreach ($listings as $listing) {
             self::make_marker($listing, $marker_args);
         }
     } elseif (!empty($listings)) {
         self::make_marker($listings, $marker_args);
     } elseif ($map_args['featured_id']) {
         $api_response = PLS_Listing_Helper::get_featured($featured_option_id);
         foreach ($api_response['listings'] as $listing) {
             self::make_marker($listing, $marker_args);
         }
     } elseif ($map_args['auto_load_listings']) {
         $api_response = PLS_Plugin_API::get_listings($map_args['request_params']);
         foreach ($api_response['listings'] as $listing) {
             self::make_marker($listing, $marker_args);
         }
     }
 }
Exemplo n.º 5
0
 public static function get($args = array())
 {
     $cache = new PLS_Cache('nbh');
     if ($result = $cache->get($args)) {
         return $result;
     }
     extract(self::process_args($args), EXTR_SKIP);
     $subject = array();
     if ($street) {
         $subject += array('taxonomy' => 'street', 'term' => $street, 'api_field' => 'address');
     } elseif ($neighborhood) {
         $subject += array('taxonomy' => 'neighborhood', 'term' => $neighborhood, 'api_field' => 'neighborhood');
     } elseif ($zip) {
         $subject += array('taxonomy' => 'zip', 'term' => $zip, 'api_field' => 'postal');
     } elseif ($city) {
         $subject += array('taxonomy' => 'city', 'term' => $city, 'api_field' => 'locality');
     } elseif ($state) {
         $subject += array('taxonomy' => 'state', 'term' => $state, 'api_field' => 'region');
     }
     $term = get_term_by('slug', $subject['term'], $subject['taxonomy'], ARRAY_A);
     $custom_data = array();
     foreach (self::$custom_meta as $meta) {
         $custom_data[$meta['id']] = get_tax_meta($term['term_id'], $meta['id']);
     }
     $term = wp_parse_args($term, $custom_data);
     $term['api_field'] = $subject['api_field'];
     //if there's a polygon, use that to get listings. Otherwise, use the name of the neighborhood
     $polygon = PLS_Plugin_API::get_taxonomies_by_slug($subject['term']);
     if (is_array($polygon) && !empty($polygon[0])) {
         $polygon[0]['neighborhood_polygons'] = $polygon[0]['name'];
         $listings_raw = PLS_Plugin_API::get_polygon_listings($polygon[0]);
         $term['listings'] = PLS_Partials::get_listings("limit=5&context=home&neighborhood_polygons=" . $polygon[0]['name']);
     } else {
         $listings_raw = PLS_Plugin_API::get_listings("location[" . $term['api_field'] . "]=" . $term['name']);
         $term['listings'] = PLS_Partials::get_listings("limit=5&context=home&request_params=location[" . $term['api_field'] . "]=" . $term['name']);
     }
     $term['areas'] = array('locality' => array(), 'postal' => array(), 'neighborhood' => array(), 'address' => array());
     $locality_tree = array('city' => array('postal', 'neighborhood', 'address'), 'zip' => array('neighborhood', 'address'), 'neighborhood' => array('address'), 'street' => array());
     $term['listings_raw'] = $listings_raw['listings'];
     //assemble all the photos
     $api_translations = array('locality' => 'city', 'neighborhood' => 'neighborhood', 'postal' => 'zip', 'address' => 'street');
     $term['listing_photos'] = array();
     $count = 0;
     if (isset($listings_raw['listings'])) {
         foreach ($listings_raw['listings'] as $key => $listing) {
             if (!empty($listing['images'])) {
                 foreach ($listing['images'] as $image) {
                     if ($count > $image_limit) {
                         break;
                     }
                     $term['listing_photos'][] = array('full_address' => $listing['location']['full_address'], 'image_url' => $image['url'], 'listing_url' => $listing['cur_data']['url']);
                     $count++;
                 }
             }
             if (isset($locality_tree[$subject['taxonomy']])) {
                 foreach ($locality_tree[$subject['taxonomy']] as $locality) {
                     $link = array('name' => $listing['location'][$locality], 'permalink' => get_term_link($listing['location'][$locality], $api_translations[$locality]));
                     if (is_string($link['permalink'])) {
                         $term['areas'][$locality][] = $link;
                     }
                 }
             }
         }
     }
     $term['polygon'] = PLS_Plugin_API::get_polygon_detail(array('tax' => $term['api_field'], 'slug' => $subject['term']));
     $cache->save($term);
     return $term;
 }
Exemplo n.º 6
0
    /**
     * 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;
    }
Exemplo n.º 7
0
    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;
    }
Exemplo n.º 8
0
 private static function empty_slides_and_add_random_listings()
 {
     $slides = array();
     $api_response = PLS_Plugin_API::get_listings(array('limit' => 6, 'offset' => 10));
     foreach ($api_response['listings'] as $listing) {
         $slides[] = array('type' => 'listing', $listing['id'] => $listing['location']['address']);
     }
     return $slides;
 }