Viewing File: /home/rtsgrob/ww6/wp-content/themes/synergia/framework/modules/search/functions.php

<?php

if ( ! function_exists( 'synergia_select_include_search_types_before_load' ) ) {
    /**
     * Load's all header types before load files by going through all folders that are placed directly in header types folder.
     * Functions from this files before-load are used to set all hooks and variables before global options map are init
     */
    function synergia_select_include_search_types_before_load() {
        foreach ( glob( SELECT_FRAMEWORK_SEARCH_ROOT_DIR . '/types/*/before-load.php' ) as $module_load ) {
            include_once $module_load;
        }
    }

    add_action( 'synergia_select_options_map', 'synergia_select_include_search_types_before_load', 1 ); // 1 is set to just be before header option map init
}

if ( ! function_exists( 'synergia_select_load_search' ) ) {
	function synergia_select_load_search() {
		$search_type_meta = synergia_select_options()->getOptionValue( 'search_type' );
		$search_type      = ! empty( $search_type_meta ) ? $search_type_meta : 'fullscreen';
		
		if ( synergia_select_active_widget( false, false, 'qodef_search_opener' ) ) {
			include_once SELECT_FRAMEWORK_MODULES_ROOT_DIR . '/search/types/' . $search_type . '/' . $search_type . '.php';
		}
	}
	
	add_action( 'init', 'synergia_select_load_search' );
}

if ( ! function_exists( 'synergia_select_get_holder_params_search' ) ) {
	/**
	 * Function which return holder class and holder inner class for blog pages
	 */
	function synergia_select_get_holder_params_search() {
		$params_list = array();
		
		$layout = synergia_select_options()->getOptionValue( 'search_page_layout' );
		if ( $layout == 'in-grid' ) {
			$params_list['holder'] = 'qodef-container';
			$params_list['inner']  = 'qodef-container-inner clearfix';
		} else {
			$params_list['holder'] = 'qodef-full-width';
			$params_list['inner']  = 'qodef-full-width-inner';
		}
		
		/**
		 * Available parameters for holder params
		 * -holder
		 * -inner
		 */
		return apply_filters( 'synergia_select_search_holder_params', $params_list );
	}
}

if ( ! function_exists( 'synergia_select_get_search_page' ) ) {
	function synergia_select_get_search_page() {
		$sidebar_layout = synergia_select_sidebar_layout();
		
		$params = array(
			'sidebar_layout' => $sidebar_layout
		);
		
		synergia_select_get_module_template_part( 'templates/holder', 'search', '', $params );
	}
}

if ( ! function_exists( 'synergia_select_get_search_page_layout' ) ) {
	/**
	 * Function which create query for blog lists
	 */
	function synergia_select_get_search_page_layout() {
		global $wp_query;
		$path   = apply_filters( 'synergia_select_search_page_path', 'templates/page' );
		$type   = apply_filters( 'synergia_select_search_page_layout', 'default' );
		$module = apply_filters( 'synergia_select_search_page_module', 'search' );
		$plugin = apply_filters( 'synergia_select_search_page_plugin_override', false );
		
		if ( get_query_var( 'paged' ) ) {
			$paged = get_query_var( 'paged' );
		} elseif ( get_query_var( 'page' ) ) {
			$paged = get_query_var( 'page' );
		} else {
			$paged = 1;
		}
		
		$params = array(
			'type'          => $type,
			'query'         => $wp_query,
			'paged'         => $paged,
			'max_num_pages' => synergia_select_get_max_number_of_pages(),
		);
		
		$params = apply_filters( 'synergia_select_search_page_params', $params );
		
		synergia_select_get_module_template_part( $path . '/' . $type, $module, '', $params, $plugin );
	}
}

if ( ! function_exists( 'synergia_select_override_search_block_templates' ) ) {
	/**
	 * Function that override `core/search` block template
	 *
	 * @see register_block_core_search()
	 */
	function synergia_select_override_search_block_templates( $atts ) {
		if ( ! empty( $atts ) && isset( $atts['render_callback'] ) && 'render_block_core_search' === $atts['render_callback'] && function_exists( 'styles_for_block_core_search' ) ) {
			$atts['render_callback'] = 'synergia_select_render_block_core_search';
		}
		
		return $atts;
	}
	
	add_filter( 'block_type_metadata_settings', 'synergia_select_override_search_block_templates' );
}

if ( ! function_exists( 'synergia_select_render_block_core_search' ) ) {
	/**
	 * Function that dynamically renders the `core/search` block
	 *
	 * @param array $attributes - the block attributes
	 *
	 * @return string - the search block markup
	 *
	 * @see render_block_core_search()
	 */
	function synergia_select_render_block_core_search( $attributes ) {
		static $instance_id = 0;
		
		$attributes = wp_parse_args(
			$attributes,
			array(
				'label'      => esc_html__( 'Search', 'synergia' ),
				'buttonText' => esc_html__( 'Search', 'synergia' ),
			)
		);
		
		$search_post_type = ! empty( $attributes['query']['post_type'] ) ? $attributes['query']['post_type'] : 'post';
		$input_id        = 'qodef-search-form-' . ++ $instance_id;
		$classnames      = classnames_for_block_core_search( $attributes );
		$show_label      = ! empty( $attributes['showLabel'] );
		$use_icon_button = ! empty( $attributes['buttonUseIcon'] );
		$show_input      = ! ( ( ! empty( $attributes['buttonPosition'] ) && 'button-only' === $attributes['buttonPosition'] ) );
		$show_button     = ! ( ( ! empty( $attributes['buttonPosition'] ) && 'no-button' === $attributes['buttonPosition'] ) );
		$hidden_input_markup = '';
		$input_markup    = '';
		$button_markup   = '';
		$inline_styles   = styles_for_block_core_search( $attributes );
		// function get_color_classes_for_block_core_search doesn't exist in wp 5.8 and below
		$color_classes    = function_exists( 'get_color_classes_for_block_core_search' ) ? get_color_classes_for_block_core_search( $attributes ) : '';
		$is_button_inside = ! empty( $attributes['buttonPosition'] ) && 'button-inside' === $attributes['buttonPosition'];
		// border color classes need to be applied to the elements that have a border color
		// function get_border_color_classes_for_block_core_search doesn't exist in wp 5.8 and below
		$border_color_classes = function_exists( 'get_border_color_classes_for_block_core_search' ) ? get_border_color_classes_for_block_core_search( $attributes ) : '';
		
		$label_markup = sprintf(
			'<label for="%1$s" class="qodef-search-form-label screen-reader-text">%2$s</label>',
			$input_id,
			empty( $attributes['label'] ) ? esc_html__( 'Search', 'synergia' ) : esc_html( $attributes['label'] )
		);
		if ( $show_label && ! empty( $attributes['label'] ) ) {
			$label_markup = sprintf(
				'<label for="%1$s" class="qodef-search-form-label screen-reader-text">%2$s</label>',
				$input_id,
				esc_html( $attributes['label'] )
			);
		}
		
		if( ! empty( $attributes['query'] ) && ! empty( $attributes['query']['post_type'] ) ) {
			$hidden_input_markup = '<input type="hidden" name="post_type" value="' . $attributes['query']['post_type'] . '">';
		}
		
		if ( $show_input ) {
			$input_classes = ! $is_button_inside ? $border_color_classes : '';
			$input_markup  = sprintf(
				'<input type="search" id="%s" class="qodef-search-form-field search-field %s" name="s" value="%s" placeholder="%s" %s required />',
				$input_id,
				esc_attr( $input_classes ),
				esc_attr( get_search_query() ),
				esc_attr( $attributes['placeholder'] ),
				// key input doesn't exist in wp 5.8 and below
				array_key_exists( 'input', $inline_styles ) ? $inline_styles['input'] : ''
			);
		}
		
		if ( $show_button ) {
			$button_internal_markup = '';
			$button_classes         = $color_classes;
			$button_classes        .= ! empty( $attributes['buttonPosition'] ) ? ' qodef--' . $attributes['buttonPosition'] : '';
			
			$button_internal_markup = '<i class="qodef-icon-font-awesome fa fa-search"></i>';
			
			$button_markup = sprintf(
				'<button type="submit" class="qodef-search-submit %s" %s>%s</button>',
				esc_attr( $button_classes ),
				// key button doesn't exist in wp 5.8 and below
				array_key_exists( 'button', $inline_styles ) ? $inline_styles['button'] : '',
				$button_internal_markup
			);
		}
		
		$field_markup_classes = $is_button_inside ? $border_color_classes : '';
		$field_markup         = sprintf(
			'<div class="input-holder %s"%s>%s</div>',
			$field_markup_classes,
			$inline_styles['wrapper'],
			$hidden_input_markup . $input_markup . $button_markup
		);
		$classnames          .= ' qodef-searchform qodef-searchform-block qodef-searchform-' . $search_post_type;
		$wrapper_attributes   = get_block_wrapper_attributes( array( 'class' => $classnames ) );
		
		return sprintf(
			'<form role="search" method="get" %s action="%s">%s</form>',
			$wrapper_attributes,
			esc_url( home_url( '/' ) ),
			$label_markup . $field_markup
		);
	}
}
Back to Directory File Manager