public static function LoadScripts() { dsidxpress_autocomplete::AddScripts(true); }
static function ApiAction($action, $get, $idx_page_id = null) { global $wp_query; $options = get_option(DSIDXPRESS_OPTION_NAME); $post_id = !$idx_page_id ? time() : $idx_page_id; wp_enqueue_script("jquery-ui-dialog", false, array(), false, true); add_action("wp_head", array("dsSearchAgent_Client", "Header")); // allow wordpress to consume the page template option the user choose in the dsIDXpress settings if ($action == "results" && !empty($options["ResultsTemplate"])) { wp_cache_set($post_id, array("_wp_page_template" => array($options["ResultsTemplate"])), "post_meta"); } else { if ($action == "details" && !empty($options["DetailsTemplate"])) { wp_cache_set($post_id, array("_wp_page_template" => array($options["DetailsTemplate"])), "post_meta"); } } $apiParams = self::GetApiParams($get); // pull account options $apiHttpResponse = dsSearchAgent_ApiRequest::FetchData("AccountOptions"); if (!empty($apiHttpResponse["errors"]) || $apiHttpResponse["response"]["code"] != "200") { switch ($apiHttpResponse["response"]["code"]) { case 403: wp_die("We're sorry, but there’s nothing to display here; MLS data service is not activated for this account."); break; default: wp_die("We're sorry, but we ran into a temporary problem while trying to load the account data. Please check back soon.", "Account data load error"); } } else { $account_options = json_decode($apiHttpResponse["body"]); } if ($action == "results" || $action == "search") { dsidxpress_autocomplete::AddScripts(false); } if ($action == "results") { // save search if (!empty($get["idx-save"]) && $get["idx-save"] == "true") { $apiParams["name"] = $get["idx-save-name"]; $apiParams["updates"] = $get["idx-save-updates"] == "on" ? "true" : "false"; $apiHttpResponse = dsSearchAgent_ApiRequest::FetchData("SaveSearch", $apiParams, false, 0); $response = json_decode($apiHttpResponse["body"]); header('Content-Type: application/json'); echo $apiHttpResponse["body"]; die; } // check allowed searched before registration $allow_results_view = 1; if (!empty($account_options->AllowedSearchesBeforeRegistration) && isset($_COOKIE['dsidx-visitor-results-views'])) { if ((int) $account_options->AllowedSearchesBeforeRegistration <= (int) $_COOKIE['dsidx-visitor-results-views']) { $allow_results_view = 0; } } $apiParams["requester.AllowVisitorResultsView"] = $allow_results_view; if (isset($apiParams["query.LinkID"])) { $apiParams["query.ForceUsePropertySearchConstraints"] = "true"; } if (isset($apiParams["query.PropertySearchID"])) { $apiParams["query.ForceUsePropertySearchConstraints"] = "true"; } $apiParams["directive.ResultsPerPage"] = 25; if (isset($apiParams["directive.ResultPage"])) { $apiParams["directive.ResultPage"] = $apiParams["directive.ResultPage"] - 1; } $apiParams["responseDirective.IncludeMetadata"] = "true"; $apiParams["responseDirective.IncludeLinkMetadata"] = "true"; } else { if ($action == "details") { // check allowed searched before registration $allow_details_view = 1; if (!empty($account_options->AllowedDetailViewsBeforeRegistration) && isset($_COOKIE['dsidx-visitor-details-views'])) { if ((int) $account_options->AllowedDetailViewsBeforeRegistration <= (int) $_COOKIE['dsidx-visitor-details-views']) { $allow_details_view = 0; } } $useJuiceBox = 'true'; if (isset($options['ImageDisplay'])) { $useJuiceBox = $options['ImageDisplay'] == "slideshow" ? 'true' : 'false'; } // echo $useJuiceBox; $apiParams["requester.AllowVisitorDetailView"] = $allow_details_view; $apiParams["responseDirective.UseJuiceBoxSlideShow"] = $useJuiceBox; // if we have an auth cookie then record a property visit if (@$_COOKIE['dsidx-visitor-auth']) { $visitParams = array("mlsNumber" => $apiParams["query.MlsNumber"]); $apiVisitResponse = dsSearchAgent_ApiRequest::FetchData("RecordVisit", $visitParams, false, 0); } $screen_name = get_option('zillow_screen_name'); if (!empty($screen_name)) { $apiParams["responseDirective.ZillowScreenName"] = $screen_name; } } } $apiParams["responseDirective.IncludeDisclaimer"] = "true"; $apiParams["responseDirective.IncludeDsDisclaimer"] = defined('ZPRESS_API') && ZPRESS_API != '' ? "false" : "true"; $apiParams["responseDirective.RemoveDsDisclaimerLinks"] = isset($options['RemoveDsDisclaimerLinks']) && $options['RemoveDsDisclaimerLinks'] == 'Y' ? "true" : "false"; $apiHttpResponse = dsSearchAgent_ApiRequest::FetchData($wp_query->query["idx-action"], $apiParams, false); if (!isset($apiHttpResponse["body"]) || !isset($apiHttpResponse["response"])) { wp_die("We're sorry, but we ran into a temporary problem while trying to load the real estate data. Please check back soon.", "Real estate data load error"); } $apiData = $apiHttpResponse["body"]; $apiData = str_replace('{$contentDomId}', $post_id, $apiData); if ($action == 'details' && defined('ZPRESS_API') && ZPRESS_API != '') { if (!isset($personal_info)) { $personal_info = stripslashes_deep(get_option('personal_info')); } if (!empty($personal_info['google_authorship']) && !empty($personal_info['googleplus'])) { $apiData .= '<p>By <a href="' . esc_url($personal_info['googleplus']) . '?rel=author" target="_blank">' . $personal_info['first_name'] . ' ' . $personal_info['last_name'] . '</a></p>'; } } if (in_array($_SERVER["REMOTE_ADDR"], self::$DebugAllowedFrom)) { if (isset($get["debug-api-response"])) { print_r($apiHttpResponse); exit; } } if ($apiHttpResponse["response"]["code"] == "404") { $error_template = isset($options["404Template"]) ? $options["404Template"] : ''; if ($error_template == '') { } elseif (strpos($error_template, '.php')) { $error_404 = locate_template('404.php'); if (!empty($error_404)) { wp_cache_set($post_id, array("_wp_page_template" => array($error_template)), "post_meta"); } } elseif (is_numeric($error_template)) { $post_id = $error_template; } $wp_query->set('is_404', true); add_action('get_header', array("dsSearchAgent_Client", "Return404")); } else { if ($apiHttpResponse["response"]["code"] == "302") { $redirect = dsSearchAgent_Client::GetBasePath() . self::ExtractValueFromApiData($apiData, "redirect"); header("Location: {$redirect}", true, 302); exit; } else { if (empty($apiHttpResponse["body"]) || !empty($apiHttpResponse["errors"]) || substr($apiHttpResponse["response"]["code"], 0, 1) == "5") { wp_die("We're sorry, but we ran into a temporary problem while trying to load the real estate data. Please check back soon.", "Real estate data load error"); } } } /*if ($options['ResultsTitle'] != '') $title = $options['ResultsTitle']; else */ $seo_title = self::ExtractValueFromApiData($apiData, "seo_title"); $seo_description = self::ExtractValueFromApiData($apiData, "seo_description"); $seo_keywords = self::ExtractValueFromApiData($apiData, "seo_keywords"); $title = self::ExtractValueFromApiData($apiData, "title"); $dateaddedgmt = self::ExtractValueFromApiData($apiData, "dateaddedgmt"); $description = self::ExtractValueFromApiData($apiData, "description"); $firstimage = self::ExtractValueFromApiData($apiData, "firstimage"); self::$meta_tag_data = array('firstimage' => $firstimage, 'title' => $title, 'description' => $description); self::$CanonicalUri = self::ExtractValueFromApiData($apiData, "canonical"); self::$TriggeredAlternateUrlStructure = self::ExtractValueFromApiData($apiData, "alternate-urls"); if (!isset($wp_query->query['ds-idx-listings-page'])) { if ($apiHttpResponse["response"]["code"] != "404") { self::EnsureBaseUri(); } } set_query_var("name", "dsidxpress-{$action}"); // at least a few themes require _something_ to be set here to display a good <title> tag set_query_var("pagename", "dsidxpress-{$action}"); // setting pagename in case someone wants to do a custom theme file for this "page" if (isset($options["404Template"]) && !empty($options["404Template"]) && $post_id == $options["404Template"]) { $post_id = $options["404Template"]; $post = get_post($post_id); } else { $post = (object) array("ID" => $post_id, "comment_count" => 0, "comment_status" => "closed", "ping_status" => "closed", "post_author" => 1, "post_content" => $apiData, "post_date" => $dateaddedgmt ? $dateaddedgmt : date("c"), "post_date_gmt" => $dateaddedgmt ? $dateaddedgmt : gmdate("c"), "post_excerpt" => $description, "post_name" => "dsidxpress-data", "post_parent" => 0, "post_status" => "publish", "post_title" => $title, "post_type" => "page"); } if (!$idx_page_id) { wp_cache_set($post_id, $post, 'posts'); } $posts = array($post); // track the detail & result views, do this at the end in case something errors or w/e $views = intval(@$_COOKIE["dsidx-visitor-{$action}-views"]); setcookie("dsidx-visitor-{$action}-views", $views + 1, time() + 60 * 60 * 24 * 30, '/'); $dsidxpress_seo = new dsidxpress_seo($seo_title, $seo_description, $seo_keywords); if (!$idx_page_id && isset($seo_title)) { add_filter('wp_title', array($dsidxpress_seo, 'dsidxpress_title_filter')); } if (isset($seo_keywords) || isset($seo_description)) { add_action('wp_head', array($dsidxpress_seo, 'dsidxpress_head_action')); } add_action('wp_head', array("dsSearchAgent_Client", 'SocialMetaTags')); if ($action == "search") { dsidx_footer::ensure_disclaimer_exists("search"); } return $posts; }