File: /home/icsla/public_html/wp-content/plugins/ajax-search-pro/includes/classes/Utils/Search.php
<?php
namespace WPDRMS\ASP\Utils;
use WPDRMS\ASP\Utils\Polylang\StringTranslations as PolylangStringTranslations;
defined('ABSPATH') or die("You can't access this file directly.");
class Search {
/** @noinspection PhpIncludeInspection */
public static function generateHTMLResults($results, $s_options, $id, $phrase = '', $subdir = '') {
$html = "";
if ( $s_options === false ) {
$search = wd_asp()->instances->get($id);
$s_options = $search['data'];
}
$theme = $s_options['resultstype'];
$subdir = !empty($subdir) ? $subdir . '/' : '';
$theme_path = get_stylesheet_directory() . "/asp/" . $subdir;
$phrase = strip_tags( Str::escape( Str::clear($phrase) ) );
$comp_settings = wd_asp()->o['asp_compatibility'];
$load_lazy = w_isset_def($comp_settings['load_lazy_js'], 0);
PolylangStringTranslations::init();
if (empty($results) || !empty($results['nores'])) {
if (!empty($results['keywords'])) {
$s_keywords = $results['keywords'];
// Get the keyword suggestions template
ob_start();
if ( file_exists( $theme_path . "keyword-suggestions.php" ) )
include( $theme_path . "keyword-suggestions.php" );
else
include( ASP_INCLUDES_PATH . "views/results/".$subdir."keyword-suggestions.php" );
} else {
// No results at all.
ob_start();
if ( file_exists( $theme_path . "no-results.php" ) )
include( $theme_path . "no-results.php" );
else
include( ASP_INCLUDES_PATH . "views/results/".$subdir."no-results.php" );
}
$html .= ob_get_clean();
if ( isset($results['suggested']) ) {
$results = $results['suggested'];
}
}
if ( !empty($results) && !isset($results['nores']) ) {
if (isset($results['grouped'])) {
foreach($results['groups'] as $k=>$g) {
$group_name = esc_html($g['title']);
$group_class = "asp_results_group_" . esc_attr($k);
// Get the group headers
ob_start();
if ( file_exists( $theme_path . "group-header.php" ) )
include( $theme_path . "group-header.php" );
else
include(ASP_INCLUDES_PATH . "views/results/group-header.php");
$html .= ob_get_clean();
// Get the item HTML
foreach($g['items'] as $kk=>$r) {
switch ($r->content_type) {
case 'term':
$show_description = $s_options['tax_res_showdescription'];
break;
case 'user':
$show_description = $s_options['user_res_showdescription'];
break;
default:
$show_description = $s_options['showdescription'];
}
$asp_res_css_class = ' asp_r_' . $r->content_type . ' asp_r_' . $r->content_type . '_' .$r->id;
if ( isset($r->post_type) ) {
$asp_res_css_class .= ' asp_r_' . $r->post_type;
} else if ( isset($r->taxonomy) ) {
$asp_res_css_class .= ' asp_r_' . $r->taxonomy;
}
ob_start();
if ( file_exists( $theme_path . $theme . ".php" ) )
include( $theme_path . $theme . ".php" );
else
include( ASP_INCLUDES_PATH . "views/results/" . $theme . ".php" );
$html .= ob_get_clean();
}
// Display no results in group where no items are present
if ( empty($g['items']) ) {
ob_start();
if ( file_exists( $theme_path . "no-results.php" ) )
include( $theme_path . "no-results.php" );
else
include( ASP_INCLUDES_PATH . "views/results/no-results.php" );
$html .= ob_get_clean();
}
// Get the group footers
ob_start();
if ( file_exists( $theme_path . "group-footer.php" ) )
include( $theme_path . "group-footer.php" );
else
include( ASP_INCLUDES_PATH . "views/results/group-footer.php" );
$html .= ob_get_clean();
}
} else {
// Get the item HTML
foreach($results as $k=>$r) {
switch ($r->content_type) {
case 'term':
$show_description = $s_options['tax_res_showdescription'];
break;
case 'user':
$show_description = $s_options['user_res_showdescription'];
break;
default:
$show_description = $s_options['showdescription'];
}
$asp_res_css_class = ' asp_r_' . $r->content_type . ' asp_r_' . $r->content_type . '_' .$r->id;
if ( isset($r->post_type) ) {
$asp_res_css_class .= ' asp_r_' . $r->post_type;
} else if ( isset($r->taxonomy) ) {
$asp_res_css_class .= ' asp_r_' . $r->taxonomy;
}
ob_start();
if ( file_exists( $theme_path . $theme . ".php" ) )
include( $theme_path . $theme . ".php" );
else
include(ASP_INCLUDES_PATH . "views/results/" . $theme . ".php");
$html .= ob_get_clean();
}
}
}
PolylangStringTranslations::save();
return preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $html);
}
/**
* Returns the search options after redirection to the results page
*
* @return array|false
*/
public static function getOptions() {
$options = false;
// If the get method is used, then the cookies are not present or not used
if ( isset($_GET['p_asp_data']) ) {
if ( $_GET['p_asp_data'] == 1 ) {
$options = $_GET;
} else {
// Legacy support
parse_str(base64_decode($_GET['p_asp_data']), $options);
}
} else if (
isset($_GET['s'], $_COOKIE['asp_data'], $_COOKIE['asp_phrase']) &&
$_COOKIE['asp_phrase'] == $_GET['s']
) {
parse_str($_COOKIE['asp_data'], $options);
}
return $options;
}
}