Current Path : /storage/v11800/abaniliving-com/public_html/wp-content/plugins/advanced-woo-search/includes/

Linux v11800 5.3.0-1023-aws #25~18.04.1-Ubuntu SMP Fri Jun 5 15:19:18 UTC 2020 aarch64

Upload File :
Current File : /storage/v11800/abaniliving-com/public_html/wp-content/plugins/advanced-woo-search/includes/class-aws-integrations.php
<?php
/**
 * AWS plugin integrations
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly.
}

if ( ! class_exists( 'AWS_Integrations' ) ) :

    /**
     * Class for main plugin functions
     */
    class AWS_Integrations {

        private $data = array();

        /**
         * @var AWS_Integrations Current theme name
         */
        private $current_theme = '';

        /**
         * @var AWS_Integrations Child theme name
         */
        private $child_theme = '';

        /**
         * @var AWS_Integrations The single instance of the class
         */
        protected static $_instance = null;

        /**
         * Main AWS_Integrations Instance
         *
         * Ensures only one instance of AWS_Integrations is loaded or can be loaded.
         *
         * @static
         * @return AWS_Integrations - Main instance
         */
        public static function instance() {
            if ( is_null( self::$_instance ) ) {
                self::$_instance = new self();
            }
            return self::$_instance;
        }

        /**
         * Constructor
         */
        public function __construct() {

            $theme = function_exists( 'wp_get_theme' ) ? wp_get_theme() : false;

            if ( $theme ) {
                $this->current_theme = $theme->get( 'Name' );
                $this->child_theme = $theme->get( 'Name' );
                if ( $theme->parent() ) {
                    $this->current_theme = $theme->parent()->get( 'Name' );
                }
            }

            $this->includes();

            //add_action('woocommerce_product_query', array( $this, 'woocommerce_product_query' ) );

            if ( class_exists( 'BM' ) ) {
                add_action( 'aws_search_start', array( $this, 'b2b_set_filter' ) );
            }

            if ( function_exists( 'dfrapi_currency_code_to_sign' ) ) {
                add_filter( 'woocommerce_currency_symbol', array( $this, 'dfrapi_set_currency_symbol_filter' ), 10, 2 );
            }

            // Maya shop theme
            if ( defined( 'YIW_THEME_PATH' ) ) {
                add_action( 'wp_head', array( $this, 'myashop_head_action' ) );
            }

            add_filter( 'aws_terms_exclude_product_cat', array( $this, 'filter_protected_cats_term_exclude' ) );
            add_filter( 'aws_exclude_products', array( $this, 'filter_products_exclude' ) );

            // Seamless integration
            if ( AWS()->get_settings( 'seamless' ) === 'true' ) {

                add_filter( 'aws_js_seamless_selectors', array( $this, 'js_seamless_selectors' ) );

                // Ocean wp theme
                if ( class_exists( 'OCEANWP_Theme_Class' ) ) {
                    add_action( 'wp_head', array( $this, 'oceanwp_head_action' ) );
                }

                // TwentyTwenty theme
                if (  function_exists( 'twentytwenty_theme_support' ) ) {
                    add_action( 'wp_head', array( $this, 'twenty_twenty_head_action' ) );
                }

                if ( 'Jupiter' === $this->current_theme ) {
                    add_action( 'wp_head', array( $this, 'jupiter_head_action' ) );
                }

                if ( 'Storefront' === $this->current_theme ) {
                    add_action( 'wp_footer', array( $this, 'storefront_footer_action' ) );
                }

                if ( 'Elessi Theme' === $this->current_theme ) {
                    add_action( 'wp_head', array( $this, 'elessi_head_action' ) );
                }

                if ( 'Walker' === $this->current_theme ) {
                    add_action( 'wp_head', array( $this, 'walker_head_action' ) );
                }

                if ( 'Porto' === $this->current_theme ) {
                    add_filter( 'porto_search_form_content', array( $this, 'porto_search_form_content_filter' ) );
                    add_action( 'wp_head', array( $this, 'porto_head_action' ) );
                }

                if ( 'BoxShop' === $this->current_theme ) {
                    add_action( 'wp_head', array( $this, 'boxshop_head_action' ) );
                }

                if ( 'Aurum' === $this->current_theme ) {
                    add_filter( 'aurum_show_search_field_on_mobile', '__return_false' );
                    add_filter( 'wp_nav_menu', array( $this, 'aurum_mobile_menu' ), 10, 2 );
                    add_filter( 'aws_js_seamless_searchbox_markup', array( $this, 'aurum_seamless_searchbox_markup' ), 1 );
                    add_action( 'wp_head',  array( $this, 'aurum_wp_head' ) );
                }

                if ( 'Basel' === $this->current_theme ) {
                    add_filter( 'aws_js_seamless_searchbox_markup', array( $this, 'basel_seamless_searchbox_markup' ), 1 );
                    add_action( 'wp_head',  array( $this, 'basel_wp_head' ) );
                }

                if ( 'Woostify' === $this->current_theme ) {
                    add_filter( 'aws_searchbox_markup', array( $this, 'woostify_aws_searchbox_markup' ), 1 );
                }

                if ( 'Fury' === $this->current_theme ) {
                    add_filter( 'aws_searchbox_markup', array( $this, 'fury_searchbox_markup' ) );
                    add_action( 'wp_head',  array( $this, 'fury_wp_head' ) );
                }

                if ( 'Bazar' === $this->current_theme ) {
                    add_action( 'yit_header-cart-search_after', array( $this, 'bazar_add_header_form' ) );
                    add_action( 'wp_head', array( $this, 'bazar_wp_head' ) );
                }

                if ( 'Claue' === $this->current_theme ) {
                    add_filter( 'jas_claue_header', array( $this, 'claue_header' ) );
                    add_action( 'wp_head', array( $this, 'claue_wp_head' ) );
                }

                if ( 'Salient' === $this->current_theme ) {
                    add_action( 'wp_head', array( $this, 'salient_wp_head' ) );
                }

                if ( 'Royal' === $this->current_theme ) {
                    add_action( 'wp_head', array( $this, 'royal_wp_head' ) );
                }

                if ( 'WR Nitro' === $this->current_theme ) {
                    add_action( 'wp_head', array( $this, 'wr_nitro_wp_head' ) );
                }

                if ( 'Botiga' === $this->current_theme ) {
                    add_filter( 'aws_searchbox_markup', array( $this, 'botiga_aws_searchbox_markup' ) );
                    add_action( 'wp_head', array( $this, 'botiga_wp_head' ) );
                }

                if ( 'Rey' === $this->current_theme ) {
                    add_action( 'reycore/search_panel/after_search_form', array( $this, 'rey_search_panel' ) );
                    add_action( 'wp_head', array( $this, 'rey_wp_head' ) );
                }

                if ( 'Orchid Store' === $this->current_theme || function_exists('orchid_store_setup')  ) {
                    add_action( 'wp_head', array( $this, 'orchid_store_wp_head' ) );
                }

                if ( 'Betheme' === $this->current_theme ) {
                    add_action( 'wp_head', array( $this, 'betheme_wp_head' ) );
                }

                if ( 'Gecko' === $this->current_theme ) {
                    add_action( 'wp_head', array( $this, 'gecko_wp_head' ) );
                    add_filter( 'aws_js_seamless_searchbox_markup', array( $this, 'gecko_seamless_searchbox_markup' ), 1 );
                }

                if ( 'Savoy' === $this->current_theme ) {
                    add_filter( 'aws_js_seamless_searchbox_markup', array( $this, 'savoy_seamless_searchbox_markup' ), 1 );
                }

                if ( 'Vandana Lite' === $this->current_theme ) {
                    add_filter( 'aws_searchbox_markup', array( $this, 'vandana_searchbox_markup' ), 1 );
                    add_action( 'wp_head', array( $this, 'vandana_wp_head' ) );
                }

                if ( 'Pustaka' === $this->current_theme ) {
                    add_action( 'wp_head', array( $this, 'pustaka_wp_head' ) );
                }

                if ( 'XStore' === $this->current_theme ) {
                    add_action( 'wp_head', array( $this, 'xstore_wp_head' ) );
                }

                if ( 'Blocksy' === $this->current_theme ) {
                    add_action( 'wp_head', array( $this, 'blocksy_wp_head' ) );
                }

                if ( 'Kapee' === $this->current_theme ) {
                    add_action( 'kapee_get_template_before', array( $this, 'kapee_get_template_before' ), 10, 3 );
                }

                if ( 'Hestia' === $this->current_theme ) {
                    add_filter( 'hestia_after_primary_navigation_addons', array( $this, 'hestia_after_primary_navigation_addons' ), 1 );
                    add_action( 'wp_enqueue_scripts', array( $this, 'hestia_wp_enqueue_scripts' ) );
                }

                if ( 'Open Shop' === $this->current_theme ) {
                    add_action( 'wp_head', array( $this, 'open_shop_wp_head' ) );
                }

                if ( 'Zephyr' === $this->current_theme ) {
                    add_action( 'wp_head', array( $this, 'zephyr_wp_head' ) );
                }

                if ( 'Shoptimizer' === $this->current_theme ) {
                    add_action( 'wp_enqueue_scripts', array( $this, 'shoptimizer_wp_enqueue_scripts' ) );
                }

                if ( 'Hitek' === $this->current_theme ) {
                    add_action( 'xts_after_search_wrapper', array( $this, 'xts_after_search_wrapper' ) );
                }

                // WP Bottom Menu
                if ( defined( 'WP_BOTTOM_MENU_VERSION' ) ) {
                    add_action( 'wp_head', array( $this, 'wp_bottom_menu_wp_head' ) );
                }

                // Advance Product Search by themehunk
                if ( class_exists( 'TH_Advance_Product_Search' ) ) {
                    add_filter( 'thaps_form_html', array( $this, 'aps_thaps_form_html' ) );
                }

            }

            add_action( 'wp_head', array( $this, 'head_js_integration' ) );

            // Search Exclude plugin
            if ( class_exists( 'SearchExclude' ) ) {
                add_filter( 'aws_index_product_ids', array( $this, 'search_exclude_filter' ) );
            }

            // WooCommerce Product Table plugin
            if ( class_exists( 'WC_Product_Table_Plugin' ) ) {
                add_filter( 'wc_product_table_data_config', array( $this, 'wc_product_table_data_config' ) );
                add_filter( 'aws_posts_per_page', array( $this, 'wc_product_table_posts_per_page' ) );
            }

            // WP all import finish
            //add_action( 'pmxi_after_xml_import', array( $this, 'pmxi_after_xml_import' ) );

            // Product Sort and Display for WooCommerce plugin
            if ( defined( 'WC_PSAD_NAME' ) ) {
                add_filter( "option_psad_shop_page_enable", array( $this, 'psad_filter' ) );
            }

            if ( 'Electro' === $this->current_theme ) {
                add_filter( 'aws_searchbox_markup', array( $this, 'electro_searchbox_markup' ), 1, 2 );
            }

            if ( 'Elessi Theme' === $this->current_theme ) {
                add_action( 'wp_enqueue_scripts', array( $this,  'elessi_wp_enqueue_scripts' ), 9999999 );
                add_action( 'aws_search_page_filters', array( $this,  'elessi_aws_search_page_filters' ), 1 );
                add_filter( 'woocommerce_get_filtered_term_product_counts_query', array( $this, 'elessi_woocommerce_get_filtered_term_product_counts_query' ), 9999999 );
            }

            // Product Visibility by User Role for WooCommerce plugin
            if ( class_exists( 'Alg_WC_PVBUR' ) ) {
                add_filter( 'aws_search_results_products', array( $this, 'pvbur_aws_search_results_products' ), 1 );
            }

            // ATUM Inventory Management for WooCommerce plugin ( Product level addon )
            if ( class_exists( 'AtumProductLevelsAddon' ) ) {
                add_filter( 'aws_indexed_data', array( $this, 'atum_index_data' ), 10, 2 );
            }

            // Popups for Divi plugin
            if ( defined( 'DIVI_POPUP_PLUGIN' ) ) {
                add_action( 'wp_enqueue_scripts', array( $this, 'divi_popups_enqueue_scripts' ), 999 );
            }

            // WooCommerce Catalog Visibility Options plugin
            if ( class_exists( 'WC_Catalog_Restrictions_Query' ) ) {
                add_filter( 'aws_exclude_products', array( $this, 'wcvo_exclude_products' ), 1 );
            }

            // Dynamic Content for Elementor plugin
            if ( function_exists( 'dce_load' ) ) {
                add_action( 'wp_footer', array( $this, 'dce_scripts' ) );
            }

            // WOOCS - WooCommerce Currency Switcher: fix ajax pricing loading
            if ( class_exists( 'WOOCS_STARTER' ) ) {
                add_filter( 'aws_search_pre_filter_products', array( $this, 'woocs_pricing_ajax_fix' ) );
            }

            //  Deals for WooCommerce
            if ( function_exists( 'DFW' ) ) {
                add_filter( 'aws_search_pre_filter_products', array( $this, 'dfm_search_pre_filter_products' ) );
            }

            // WooCommerce Product Search
            if ( defined('WOO_PS_PLUGIN_VERSION') ) {
                add_action( 'aws_search_page_filters', array( $this,  'wps_aws_search_page_filters' ), 1 );
            }

        }
        
        /**
         * Include files
         */
        public function includes() {

            // WP-CLI
            if ( defined( 'WP_CLI' ) && WP_CLI ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-wp-cli.php' );
            }

            // Getenberg block
            if ( function_exists( 'register_block_type' ) ) {
                include_once( AWS_DIR . '/includes/modules/gutenberg/class-aws-gutenberg-init.php' );
            }

            // Elementor plugin widget
            if ( defined( 'ELEMENTOR_VERSION' ) || defined( 'ELEMENTOR_PRO_VERSION' ) ) {
                include_once( AWS_DIR . '/includes/modules/elementor-widget/class-elementor-aws-init.php' );
            }

            // Divi module
            if ( defined( 'ET_BUILDER_PLUGIN_DIR' ) || function_exists( 'et_setup_theme' ) ) {
                include_once( AWS_DIR . '/includes/modules/divi/class-aws-divi.php' );
                include_once( AWS_DIR . '/includes/modules/divi/class-divi-aws-module.php' );
            }

            // Beaver builder module
            if ( class_exists( 'FLBuilder' ) ) {
                include_once( AWS_DIR . '/includes/modules/bb-aws-search/class-aws-bb-module.php' );
            }

            // WCFM - WooCommerce Multivendor Marketplace
            if ( class_exists( 'WCFMmp' ) ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-wcfm.php' );
                AWS_WCFM::instance();
            }

            // WOOF - WooCommerce Products Filter
            if ( defined( 'WOOF_PLUGIN_NAME' ) ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-woof-filter.php' );
            }

            // Ultimate Member plugin hide certain products
            if ( class_exists( 'UM_Functions' ) ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-um.php' );
            }

            // Wholesale plugin
            if ( class_exists( 'WooCommerceWholeSalePrices' ) ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-wholesale.php' );
            }

            // B2BKing plugin
            if ( class_exists( 'B2bking' ) ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-b2bking.php' );
            }

            // Advanced Woo Labels plugin
            if ( function_exists( 'AWL' ) || function_exists( 'AWL_PRO' ) ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-awl.php' );
            }

            // Products Visibility by User Roles plugin
            if ( class_exists( 'Addify_Products_Visibility' ) ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-products-visibility.php' );
            }

            // WooCommerce Products Visibility
            if ( class_exists('WooCommerce_Products_Visibility') ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-wcpv.php' );
            }

            // WPBakery plugin
            if ( defined( 'WPB_VC_VERSION' ) ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-wpbakery.php' );
            }

            // WPML plugin
            if ( defined( 'ICL_SITEPRESS_VERSION' ) ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-wpml.php' );
            }

            // WooCommerce Product Filter by WooBeWoo
            if ( defined( 'WPF_PLUG_NAME' ) ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-woobewoo-filters.php' );
            }

            // FacetWP plugin
            if ( class_exists( 'FacetWP' ) ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-facetwp.php' );
            }

            if ( class_exists( 'WC_PPC_Util' ) || class_exists( '\Barn2\Plugin\WC_Protected_Categories\Util' ) ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-barn2-protected-categories.php' );
            }

            // WC Marketplace - https://wc-marketplace.com/
            if ( defined( 'WCMp_PLUGIN_VERSION' ) || defined( 'MVX_PLUGIN_VERSION' ) ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-multivendorx.php' );
            }

            // Custom Product Tabs for WooCommerce plugin
            if ( class_exists('YIKES_Custom_Product_Tabs') || class_exists( 'YIKES_Custom_Product_Tabs_Pro' ) ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-custom-tabs.php' );
            }

            // Perfect Brands for WooCommerce
            if ( defined( 'PWB_PLUGIN_VERSION' ) ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-pwb.php' );
            }

            // Astra theme
            if ( 'Astra' === $this->current_theme ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-astra.php' );
            }

            // Bricks Builder theme
            if ( class_exists( '\Bricks\Elements' ) ) {
                add_action( 'init', function() {
                    \Bricks\Elements::register_element( AWS_DIR . '/includes/modules/class-aws-bricks-builder.php' );
                }, 11 );
            }

            // Avada theme
            if ( class_exists( 'Avada' ) || 'Avada' === $this->current_theme ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-avada.php' );
            }

            // Flatsome theme
            if ( 'Flatsome' === $this->current_theme ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-flatsome.php' );
            }

            // GeneratePress theme
            if ( 'GeneratePress' === $this->current_theme ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-generatepress.php' );
            }

            // The7 theme
            if ( 'The7' === $this->current_theme ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-the7.php' );
            }

            // Woodmart theme
            if ( 'Woodmart' === $this->current_theme ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-woodmart.php' );
            }

            // Product Filters for WooCommerce
            if ( defined( 'WC_PRODUCT_FILTER_VERSION' ) ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-pfw.php' );
            }

            // WooCommerce Product Bundles
            if ( class_exists( 'WC_Bundles' ) ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-product-bundles.php' );
            }

            // Shopengine plugin
            if ( class_exists( 'ShopEngine' ) ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-shopengine.php' );
            }

            // BeRocket WooCommerce AJAX Products Filter
            if ( defined( 'BeRocket_AJAX_filters_version' ) ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-berocket-filters.php' );
            }

            // WooCommerce Memberships
            if ( class_exists( 'WC_Memberships' ) ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-woo-memberships.php' );
            }

            // WooCommerce Show Single Variations by Iconic
            if ( class_exists('Iconic_WSSV') || class_exists('JCK_WSSV') ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-single-variations.php' );
            }

            // YITH WooCommerce Ajax Product Filter
            if ( defined( 'YITH_WCAN' ) ) {
                include_once( AWS_DIR . '/includes/modules/class-aws-yith-wcan.php' );
            }

        }

        /*
         * B2B market plugin
         */
        public function b2b_set_filter() {

            $args = array(
                'posts_per_page' => - 1,
                'post_type'      => 'customer_groups',
                'post_status'    => 'publish',
            );

            $posts           = get_posts( $args );
            $customer_groups = array();
            $user_role       = '';

            foreach ( $posts as $customer_group ) {
                $customer_groups[$customer_group->post_name] = $customer_group->ID;
            }

            if ( is_user_logged_in() ) {
                $user = wp_get_current_user();
                $role = ( array ) $user->roles;
                $user_role = $role[0];
            } else {
                $guest_slugs = array( 'Gast', 'Gäste', 'Guest', 'Guests', 'gast', 'gäste', 'guest', 'guests' );
                foreach( $customer_groups as $customer_group_key => $customer_group_id ) {
                    if ( in_array( $customer_group_key, $guest_slugs ) ) {
                        $user_role = $customer_group_key;
                    }
                }
            }

            if ( $user_role ) {

                if ( isset( $customer_groups[$user_role] ) ) {
                    $curret_customer_group_id = $customer_groups[$user_role];

                    $whitelist = get_post_meta( $curret_customer_group_id, 'bm_conditional_all_products', true );

                    if ( $whitelist && $whitelist === 'off' ) {

                        $products_to_exclude = get_post_meta( $curret_customer_group_id, 'bm_conditional_products', false );
                        $cats_to_exclude = get_post_meta( $curret_customer_group_id, 'bm_conditional_categories', false );

                        if ( $products_to_exclude && ! empty( $products_to_exclude ) ) {

                            foreach( $products_to_exclude as $product_to_exclude ) {
                                $this->data['exclude_products'][] = trim( $product_to_exclude, ',' );
                            }

                        }

                        if ( $cats_to_exclude && ! empty( $cats_to_exclude ) ) {

                            foreach( $cats_to_exclude as $cat_to_exclude ) {
                                $this->data['exclude_categories'][] = trim( $cat_to_exclude, ',' );
                            }

                        }

                    }

                }

            }

        }

        /*
         * Datafeedr WooCommerce Importer plugin
         */
        public function dfrapi_set_currency_symbol_filter( $currency_symbol, $currency ) {

            global $product;
            if ( ! is_object( $product ) || ! isset( $product ) ) {
                return $currency_symbol;
            }
            $fields = get_post_meta( $product->get_id(), '_dfrps_product', true );
            if ( empty( $fields ) ) {
                return $currency_symbol;
            }
            if ( ! isset( $fields['currency'] ) ) {
                return $currency_symbol;
            }
            $currency_symbol = dfrapi_currency_code_to_sign( $fields['currency'] );
            return $currency_symbol;

        }

        /*
         * Maya shop theme support
         */
        public function myashop_head_action() { ?>

            <style>
                #header .aws-container {
                    margin: 0;
                    position: absolute;
                    right: 0;
                    bottom: 85px;
                }

                @media only screen and (max-width: 960px) {
                    #header .aws-container {
                        bottom: 118px !important;
                        right: 10px !important;
                    }
                }

                @media only screen and (max-width: 600px) {
                    #header .aws-container {
                        position: relative !important;
                        bottom: auto !important;
                        right: auto !important;
                        display: inline-block !important;
                        margin-top: 20px !important;
                        margin-bottom: 20px !important;
                    }
                }
            </style>

        <?php }

        /*
         * Ocean wp theme
         */
        public function oceanwp_head_action() { ?>

            <style>
                .oceanwp-theme #searchform-header-replace .aws-container {
                    padding-right: 45px;
                    padding-top: 0;
                }
                .oceanwp-theme #searchform-header-replace .aws-container .aws-search-form .aws-form-btn {
                    background: transparent;
                    border: none;
                }
                .oceanwp-theme #searchform-overlay .aws-container,
                .oceanwp-theme #icon-searchform-overlay .aws-container {
                    position: absolute;
                    top: 50%;
                    left: 0;
                    margin-top: -33px;
                    width: 100%;
                    text-align: center;
                }
                .oceanwp-theme #searchform-overlay .aws-container form,
                .oceanwp-theme #icon-searchform-overlay .aws-container form {
                    position: static;
                }
                .oceanwp-theme #searchform-overlay a.search-overlay-close,
                .oceanwp-theme #icon-searchform-overlay a.search-overlay-close {
                    top: -100px;
                }
                .oceanwp-theme #searchform-overlay .aws-container .aws-search-form,
                .oceanwp-theme #icon-searchform-overlay .aws-container .aws-search-form,
                .oceanwp-theme #searchform-overlay .aws-container .aws-search-form .aws-form-btn,
                .oceanwp-theme #icon-searchform-overlay .aws-container .aws-search-form .aws-form-btn {
                    background: transparent;
                }
                .oceanwp-theme #searchform-overlay .aws-container .aws-search-form .aws-form-btn,
                .oceanwp-theme #icon-searchform-overlay .aws-container .aws-search-form .aws-form-btn {
                    border: none;
                }
                #sidr .aws-container {
                    margin: 30px 20px 0;
                }
                #medium-searchform .aws-container .aws-search-form,
                #vertical-searchform .aws-container .aws-search-form {
                    background: #f5f5f5;
                }
                #medium-searchform .aws-container .aws-search-form .aws-search-field {
                    max-width: 100%;
                }
                #medium-searchform .aws-container .aws-search-form .aws-form-btn,
                #vertical-searchform .aws-container .aws-search-form .aws-form-btn{
                    background: #f5f5f5;
                    border: none;
                }
            </style>

            <script>

                window.addEventListener('load', function() {

                    window.setTimeout(function(){
                        var formOverlay = document.querySelectorAll("#searchform-overlay form, #icon-searchform-overlay form");
                        if ( formOverlay ) {
                            for (var i = 0; i < formOverlay.length; i++) {
                                formOverlay[i].innerHTML += '<a href="#" class="search-overlay-close"><span></span></a>';
                            }
                        }
                    }, 300);

                    jQuery(document).on( 'click', 'a.search-overlay-close', function (e) {

                        jQuery( '#searchform-overlay, #icon-searchform-overlay' ).removeClass( 'active' );
                        jQuery( '#searchform-overlay, #icon-searchform-overlay' ).fadeOut( 200 );

                        setTimeout( function() {
                            jQuery( 'html' ).css( 'overflow', 'visible' );
                        }, 400);

                        jQuery( '.aws-search-result' ).hide();

                    } );

                }, false);

            </script>

        <?php }

        /*
         * Twenty Twenty theme
         */
        public function twenty_twenty_head_action() { ?>

            <style>

                .search-modal .aws-container {
                    width: 100%;
                    margin: 20px 0;
                }

            </style>

            <script>

                window.addEventListener('load', function() {

                    var awsSearch = document.querySelectorAll("#site-header .search-toggle");
                    if ( awsSearch ) {
                        for (var i = 0; i < awsSearch.length; i++) {
                            awsSearch[i].addEventListener('click', function() {
                                window.setTimeout(function(){
                                    document.querySelector(".aws-container .aws-search-field").focus();
                                    jQuery( '.aws-search-result' ).hide();
                                }, 100);
                            }, false);
                        }
                    }

                    var searchToggler = document.querySelectorAll('[data-modal-target-string=".search-modal"]');
                    if ( searchToggler ) {
                        for (var i = 0; i < searchToggler.length; i++) {
                            searchToggler[i].addEventListener('toggled', function() {
                                jQuery( '.aws-search-result' ).hide();
                            }, false);
                        }
                    }

                }, false);

            </script>

        <?php }

        /*
         * Jupiter theme
         */
        public function jupiter_head_action() { ?>

            <style>

                .mk-fullscreen-search-overlay .aws-container .aws-search-form {
                    height: 60px;
                }

                .mk-fullscreen-search-overlay .aws-container .aws-search-field {
                    width: 800px;
                    background-color: transparent;
                    box-shadow: 0 3px 0 0 rgba(255,255,255,.1);
                    border: none;
                    font-size: 35px;
                    color: #fff;
                    padding-bottom: 20px;
                    text-align: center;
                }

                .mk-fullscreen-search-overlay .aws-container .aws-search-form .aws-form-btn {
                    background-color: transparent;
                    border: none;
                    box-shadow: 0 3px 0 0 rgba(255,255,255,.1);
                }

                .mk-fullscreen-search-overlay .aws-container .aws-search-form .aws-search-btn_icon {
                    height: 30px;
                    line-height: 30px;
                }

                .mk-header .aws-container {
                    margin: 10px;
                }

                .mk-header .mk-responsive-wrap {
                    padding-bottom: 1px;
                }

            </style>

            <script>

                window.addEventListener('load', function() {

                    var iconSearch = document.querySelectorAll(".mk-fullscreen-trigger");
                    if ( iconSearch ) {
                        for (var i = 0; i < iconSearch.length; i++) {
                            iconSearch[i].addEventListener('click', function() {
                                window.setTimeout(function(){
                                    document.querySelector(".mk-fullscreen-search-overlay .aws-container .aws-search-field").focus();
                                    jQuery( '.aws-search-result' ).hide();
                                }, 100);
                            }, false);
                        }
                    }


                }, false);

            </script>

        <?php }

        /*
         * Elessi theme
         */
        public function elessi_head_action() { ?>

            <style>
                .warpper-mobile-search .aws-container .aws-search-field {
                    border-radius: 30px !important;
                    border: 1px solid #ccc !important;;
                    padding-left: 20px !important;;
                }
                .warpper-mobile-search .aws-container .aws-search-form .aws-form-btn,
                .nasa-header-search-wrap .aws-container .aws-search-form .aws-form-btn {
                    background: transparent !important;
                    border: none !important;
                }
            </style>

        <?php }

        /*
         * Walker theme
         */
        public function walker_head_action()  {  ?>
            <style>
                .edgtf-fullscreen-search-inner .aws-container {
                    position: relative;
                    width: 50%;
                    margin: auto;
                }
            </style>
            <script>
                window.addEventListener('load', function() {
                    if ( typeof jQuery !== 'undefined' ) {
                        jQuery(document).on( 'click focus', '.edgtf-fullscreen-search-inner input', function(e) {
                            e.preventDefault();
                            e.stopImmediatePropagation();
                            return false;
                        } );
                    }
                }, false);
            </script>
        <?php }

        /*
         * Storefront theme search form layout
         */
        public function storefront_footer_action() {

            $mobile_screen = AWS()->get_settings( 'mobile_overlay' );

            ?>

            <?php if ( $mobile_screen && $mobile_screen === 'true' ): ?>

                <script>
                    window.addEventListener('load', function() {
                        if ( typeof jQuery !== 'undefined' ) {
                            var search = jQuery('.storefront-handheld-footer-bar .search a');
                            search.on( 'click', function() {
                                var searchForm = jQuery('.storefront-handheld-footer-bar .aws-container');
                                searchForm.after('<div class="aws-placement-container"></div>');
                                searchForm.addClass('aws-mobile-fixed').prepend('<div class="aws-mobile-fixed-close"><svg width="17" height="17" viewBox="1.5 1.5 21 21"><path d="M22.182 3.856c.522-.554.306-1.394-.234-1.938-.54-.543-1.433-.523-1.826-.135C19.73 2.17 11.955 10 11.955 10S4.225 2.154 3.79 1.783c-.438-.371-1.277-.4-1.81.135-.533.537-.628 1.513-.25 1.938.377.424 8.166 8.218 8.166 8.218s-7.85 7.864-8.166 8.219c-.317.354-.34 1.335.25 1.805.59.47 1.24.455 1.81 0 .568-.456 8.166-7.951 8.166-7.951l8.167 7.86c.747.72 1.504.563 1.96.09.456-.471.609-1.268.1-1.804-.508-.537-8.167-8.219-8.167-8.219s7.645-7.665 8.167-8.218z"></path></svg></div>');
                                jQuery('body').addClass('aws-overlay').append('<div class="aws-overlay-mask"></div>').append( searchForm );
                                searchForm.find('.aws-search-field').focus();
                            } );
                        }
                    }, false);
                </script>

                <style>
                    .storefront-handheld-footer-bar ul li.search.active .site-search {
                        display: none !important;
                    }
                </style>

            <?php else: ?>

                <script>
                    window.addEventListener('load', function() {
                        function aws_results_layout( styles, options  ) {
                            if ( typeof jQuery !== 'undefined' ) {
                                var $storefrontHandheld = options.form.closest('.storefront-handheld-footer-bar');
                                if ( $storefrontHandheld.length ) {
                                    if ( ! $storefrontHandheld.find('.aws-search-result').length ) {
                                        $storefrontHandheld.append( options.resultsBlock );
                                    }
                                    styles.top = 'auto';
                                    styles.bottom = 130;
                                }
                            }
                            return styles;
                        }
                        if ( typeof AwsHooks === 'object' && typeof AwsHooks.add_filter === 'function' ) {
                            AwsHooks.add_filter( 'aws_results_layout', aws_results_layout );
                        }
                    }, false);
                </script>

                <style>
                    .storefront-handheld-footer-bar .aws-search-result ul li {
                        float: none !important;
                        display: block !important;
                        text-align: left !important;
                    }
                    .storefront-handheld-footer-bar .aws-search-result ul li a {
                        text-indent: 0 !important;
                        text-decoration: none;
                    }
                </style>

            <?php endif; ?>

        <?php }

        /*
         * Porto theme seamless integration
         */
        public function porto_search_form_content_filter( $markup ) {
            $pattern = '/(<form[\S\s]*?<\/form>)/i';
            if ( strpos( $markup, 'aws-container' ) === false ) {
                $markup = preg_replace( $pattern, aws_get_search_form( false ), $markup );
            }
            $markup = str_replace( 'aws-container', 'aws-container searchform', $markup );
            return $markup;
        }

        /*
         * Porto theme styles
         */
        public function porto_head_action() { ?>

            <style>
                #header .aws-container.searchform {
                    border: 0 !important;
                    border-radius: 0 !important;
                }
                #header .aws-container .aws-search-field {
                    border: 1px solid #eeeeee !important;
                    height: 100%;
                }
                #header .aws-container .aws-search-form {
                    height: 36px;
                }
                #header .aws-container .aws-search-form .aws-form-btn {
                    background: #fff;
                    border-color: #eeeeee;
                }
            </style>

        <?php }

        /*
         * BoxShop theme styles
         */
        public function boxshop_head_action() { ?>

            <style>
                .ts-header .aws-container .aws-search-form .aws-search-btn.aws-form-btn {
                    background-color: #e72304;
                }
                .ts-header .aws-container .aws-search-form .aws-search-btn.aws-form-btn:hover {
                    background-color: #000000;
                }
                .aws-container .aws-search-form .aws-search-btn_icon {
                    color: #fff;
                }
            </style>

        <?php }

        /*
         * Add search form to Aurum theme mobile menu
         */
        public function aurum_mobile_menu( $nav_menu, $args ) {
            if ( $args->theme_location === 'main-menu' && $args->menu_class && $args->menu_class === 'mobile-menu' ) {
                $form = aws_get_search_form( false );
                $nav_menu = $form . $nav_menu;
            }
            return $nav_menu;
        }

        /*
         * Aurum theme markup for seamless js integration
         */
        public function aurum_seamless_searchbox_markup( $markup ) {

            if ( function_exists( 'lab_get_svg' ) ) {
                $button = '<a href="#" class="search-btn">' . lab_get_svg( "images/search.svg" ) . '<span class="sr-only">' . __( "Search", "aurum" ) .'</span></a>';
                $markup = preg_replace( '/(<form[\S\s]*?>)/i', '${1}<div class="search-input-env">', $markup );
                $markup = str_replace( '</form>', '</div></form>', $markup );
                $markup = str_replace( '</form>', $button . '</form>', $markup );
                $markup = str_replace( 'aws-search-form', 'aws-search-form search-form', $markup );
                $markup = str_replace( 'aws-search-field', 'aws-search-field search-input', $markup );
                $markup = preg_replace( '/(<div class="aws-search-btn aws-form-btn">[\S\s]*?<\/div>)/i', '', $markup );
            }

            return $markup;

        }

        /*
         * Basel theme markup for seamless js integration
         */
        public function basel_seamless_searchbox_markup( $markup ) {
            $markup = str_replace( '</form>', '<div class="searchform basel-ajax-search" style="opacity:0;visibility:hidden;"></div></form>', $markup );
            return $markup;
        }

        /*
         * Basel theme styles
         */
        public function basel_wp_head() { ?>

            <style>
                .basel-search-full-screen .basel-search-wrapper .aws-container {
                    margin: 20px 0 0;
                }
                .basel-search-full-screen .basel-search-inner .basel-close-search {
                    height: 60px;
                    top: 90px;
                    z-index: 9999;
                }
                .secondary-header #searchform {
                    display: none;
                }
                .secondary-header .aws-container,
                .secondary-header .aws-container .aws-search-form,
                .secondary-header .aws-container {
                    background: transparent;
                }
            </style>

        <?php }

        /*
         * Woostify theme markup for seamless integration
         */
        public function woostify_aws_searchbox_markup( $markup ) {
            $markup = str_replace( 'aws-search-field', 'aws-search-field search-field', $markup );
            return $markup;
        }

        /*
         * Aurum theme scripts
         */
        public function aurum_wp_head() { ?>

            <script>
                window.addEventListener("load", function() {
                    window.setTimeout(function(){
                        var forms = document.querySelectorAll(".search-btn");
                        if ( forms ) {
                            for (var i = 0; i < forms.length; i++) {
                                forms[i].addEventListener("click", function() {
                                    var links = document.querySelectorAll(".header-links .search-form");
                                    if ( links ) {
                                        for (var i = 0; i < links.length; i++) {
                                            links[i].className += " input-visible";
                                        }
                                    }
                                }, false);
                            }
                        }
                    }, 1000);
                }, false);
            </script>

        <?php }

        /*
         * Fury theme markup change
         */
        public function fury_searchbox_markup( $markup ) {
            global $wp_current_filter;
            if ( in_array( 'wp_head', $wp_current_filter ) ) {
                $search_tools = '<div class="search-tools">
                    <button type="button" class="clear-search">' . esc_html( "Clear", "fury" ) . '</button>
                    <button type="button" class="close-search" aria-label="' . esc_attr( "Close search", "fury" ) . '"><i class="icon-cross"></i></button>
                </div>';
                $markup = str_replace( 'aws-container', 'aws-container aws-fury-navbar', $markup );
                $markup = str_replace( 'aws-search-form', 'aws-search-form site-search', $markup );
                $markup = str_replace( '<div class="aws-search-clear">', $search_tools . '<div class="aws-search-clear">', $markup );
            }
            return $markup;
        }

        /*
         * Fury theme styles and scripts
         */
        public function fury_wp_head() { ?>
            <style>
                .aws-fury-navbar.aws-container,
                .aws-fury-navbar.aws-container form {
                    height: 100%;
                    position: absolute;
                    width: 100%;
                }
                .aws-fury-navbar.aws-container .aws-search-form.aws-show-clear.aws-form-active .aws-search-clear {
                    display: none !important;
                }
            </style>
            <script>
                window.addEventListener('load', function() {
                    if ( typeof jQuery !== 'undefined' ) {

                        jQuery(document).on( 'click', '.aws-fury-navbar .clear-search', function () {
                            jQuery('.aws-fury-navbar input').val('');
                            jQuery('.aws-search-result').hide();
                            jQuery('.aws-fury-navbar .aws-search-form').removeClass('aws-form-active');
                        } );

                        jQuery(document).on( 'click', '.aws-fury-navbar .close-search', function () {
                            jQuery('.aws-fury-navbar .aws-search-form').removeClass('search-visible');
                            jQuery('.aws-fury-navbar input').val('');
                            jQuery('.aws-search-result').hide();
                            jQuery('.aws-fury-navbar .aws-search-form').removeClass('aws-form-active');
                        } );

                    }
                }, false);
            </script>
        <?php }

        /*
         * Bazar theme: add search form
         */
        public function bazar_add_header_form() {
            $output = aws_get_search_form( false );
            $output = str_replace( 'aws-container', 'aws-container widget widget_search_mini', $output );
            echo $output;
        }

        /*
         * Bazar theme: add styles
         */
        public function bazar_wp_head() { ?>
            <style>
                #header-cart-search .widget_search_mini:not(.aws-container){
                    display: none !important;
                }
                #header-cart-search .aws-container,
                #header-cart-search .aws-container .aws-search-form {
                    height: 50px;
                }
                #header-cart-search .aws-container .aws-search-field {
                    font-size: 18px;
                    font-family: 'Oswald', sans-serif;
                    color: #747373;
                    font-style: normal;
                    font-weight: 400;
                    text-transform: uppercase;
                    padding-left: 14px;
                }
            </style>
        <?php }

        /*
         * Claue theme header markup
         */
        public function claue_header( $markup ) {
            $pattern = '/(<form[\S\s]*?<\/form>)/i';
            if ( strpos( $markup, 'aws-container' ) === false ) {
                $form = '<div class="header__search w__100 dn pf">' . aws_get_search_form( false ) . '<a id="sf-close" class="pa" href="#"><i class="pe-7s-close"></i></a></div>';
                $markup = preg_replace( $pattern, $form, $markup );
            }
            return $markup;
        }

        /*
         * Claue theme styles
         */
        public function claue_wp_head() { ?>
            <style>
                #jas-header .aws-container {
                    position: absolute;
                }
                #jas-header .aws-container .aws-search-field {
                    height: 100% !important;
                    font-size: 20px;
                }
                #jas-header .aws-container .aws-search-field,
                #jas-header .aws-container .aws-search-form .aws-form-btn {
                    background: transparent;
                    border-color: rgba(255, 255, 255, .2);
                }
            </style>
        <?php }

        /*
         * Salient theme styles
         */
        public function salient_wp_head() { ?>
            <style>
                #search-outer #search #close {
                    top: -5px;
                }
                #search-box .aws-container {
                    margin-right: 70px;
                }
                #search-box .aws-container .aws-search-form .aws-search-btn_icon {
                    margin: 0 !important;
                    color: rgba(0,0,0,0.7) !important;
                }
                #search-box .aws-container .aws-search-field {
                    font-size: 26px;
                    font-weight: bold;
                    padding: 6px 15px 8px 0;
                    background: transparent;
                }
                #search-box .aws-container .aws-search-field:focus {
                    box-shadow: none;
                }
                #search-box .aws-container .aws-search-field,
                #search-box .aws-container .aws-search-form .aws-form-btn {
                    border: none;
                    border-bottom: 3px solid #3452ff !important;
                }
            </style>
        <?php }

        /*
         * Royal theme styles
         */
        public function royal_wp_head() { ?>
            <style>
                .et-search-trigger.search-dropdown .aws-container {
                    position: absolute;
                    width: 325px;
                    top: 55px;
                    z-index: 1001;
                    right: -12px;
                }
                .et-search-trigger.search-dropdown .aws-container .aws-search-form,
                .et-search-trigger.search-dropdown:hover .aws-container .aws-search-form{
                    top: 0;
                    right: 0;
                    height: auto;
                }
                #searchModal .aws-container {
                    margin: 30px 30px 20px;
                }
            </style>
        <?php }

        /*
         * WR Nitro theme styles
         */
        public function wr_nitro_wp_head() { ?>

            <style>

                .hb-search-fs .aws-container {
                    width: 500px;
                    max-width: 500px;
                    position: absolute;
                    top: 50%;
                    left: 50%;
                    -webkit-transform: translate(-50%, -50%);
                    transform: translate(-50%, -50%);
                }

                .wrls-header-outer .aws-container {
                    width: 650px!important;
                    margin: 0;
                    padding: 0 35px 0 10px;
                    height: 38px;
                }

            </style>

        <?php }

        /*
         * Botiga theme fix back to top button
         */
        public function botiga_aws_searchbox_markup( $markup ) {
            $markup = str_replace( '</form>', '<span class="search-submit"></span></form>', $markup );
            return $markup;
        }

        /*
         * Botiga theme fix back to top button
         */
        public function botiga_wp_head()  { ?>
            <style>
                .header-search-form .aws-container {
                    max-width: 720px;
                    margin-left: auto;
                    margin-right: auto;
                }
            </style>
        <?php }

        /*
         * Rey theme add search form
         */
        public function rey_search_panel() {
            $output = aws_get_search_form( false );
            echo $output;
        }

        /*
         * Rey theme search form styles
         */
        public function rey_wp_head() { ?>
            <style>
                .rey-searchPanel-inner > form,
                .rey-searchPanel-inner .rey-searchResults,
                .rey-searchPanel-inner .rey-lineLoader,
                .rey-inlineSearch-wrapper > form,
                .rey-searchPanel-inner .aws-container .aws-search-form .aws-form-btn {
                    display: none !important;
                }
                .rey-searchPanel-inner .aws-container .aws-search-field {
                    width: 100%;
                }
                .rey-searchPanel-inner .aws-container .aws-search-field:focus {
                    background: transparent;
                }
            </style>


            <script>

                window.addEventListener('load', function() {

                    function aws_results_layout( styles, options ) {
                        var form = options.form;
                        if ( options.form.closest('.rey-searchPanel-inner').length > 0 ) {
                            var containerWidth = form.find('.aws-search-form').outerWidth();
                            var offset = form.find('.aws-search-form').offset();
                            var bodyPosition = jQuery('body').css('position');
                            var bodyOffset = jQuery('body').offset();
                            if ( bodyPosition === 'relative' || bodyPosition === 'absolute' || bodyPosition === 'fixed' ) {
                                styles.left = offset.left - bodyOffset.left;
                            } else {
                                styles.left = offset.left;
                            }
                            if ( containerWidth ) {
                                styles.width = containerWidth;
                            }
                        }
                        return styles;
                    }
                    AwsHooks.add_filter( "aws_results_layout", aws_results_layout );
                }, false);

            </script>

        <?php }

         /*
          * Orchid store theme search form styles
          */
        public function orchid_store_wp_head() { ?>
            <style>
                .masterheader .aws-container .aws-search-field {
                    border: 2px solid #0286e7;
                    border-radius: 50px !important;
                }
                .masterheader .aws-container .aws-search-form {
                    height: 45px;
                }
                .masterheader .aws-container .aws-search-form .aws-form-btn {
                    background: #0286e7;
                    border-radius: 50px !important;
                    margin: 3px 0;
                }
                .masterheader .aws-container .aws-search-form .aws-main-filter .aws-main-filter__current,
                .masterheader .aws-container .aws-search-form .aws-main-filter .aws-main-filter__current:after,
                .masterheader .aws-container .aws-search-form .aws-search-btn_icon {
                    color: #fff;
                }
            </style>
        <?php }

        /*
         * Be theme search form styles
         */
        public function betheme_wp_head() { ?>
            <style>
                #Header_wrapper #searchform {
                    opacity: 0;
                }
                #Side_slide .aws-container .aws-search-field,
                #Side_slide .aws-container .aws-search-field:focus {
                    background-color: #191919 !important;
                    border-color: rgba(255,255,255,.05);
                }
            </style>
        <?php }

        /*
         * Gecko theme search form
         */
        public function gecko_wp_head() { ?>
            <style>
                #jas-wrapper .aws-container.header__search {
                    height: 100%;
                    width: 100%;
                    top: 0;
                    left: 0;
                    background: rgba(0, 0, 0, .95);
                    z-index: 9999;
                }
                #jas-wrapper .aws-container.header__search .aws-search-form {
                    max-width: 550px;
                    top: calc(50% - 125px);
                    left: 50%;
                    width: 100%;
                    -webkit-transform: translateX(-50%);
                    -moz-transform: translateX(-50%);
                    -ms-transform: translateX(-50%);
                    -o-transform: translateX(-50%);
                    transform: translateX(-50%);
                }
                #jas-wrapper .aws-container.header__search .aws-search-form .aws-search-field {
                    background: transparent;
                    border: none;
                    border-bottom: 1px solid rgba(255, 255, 255, .1);
                    text-align: center;
                    font-size: 18px;
                    color: #fff;
                }
            </style>

            <script>
                window.addEventListener('load', function() {
                    if ( typeof jQuery !== 'undefined' ) {
                        jQuery(document).on( 'click', '#jas-header .sf-open, #sf-close', function () {
                            jQuery('.aws-container').toggleClass('dn');
                            jQuery('.aws-search-result').hide();
                            jQuery('.aws-container.header__search .aws-search-field:visible').focus();
                        } );
                    }
                    function aws_results_layout( styles, options ) {
                        var form = options.form;
                        var realForm = form.closest('#jas-wrapper').find('.aws-container.header__search .aws-search-form');
                        if ( options.form.closest('#jas-wrapper').length > 0 && jQuery('.aws-container.header__search').is(':visible') ) {
                            var offset = parseInt( realForm.css('top') );
                            var offsetLeft = parseInt( realForm.css('left') );
                            var bodyOffset = jQuery('body').offset();
                            styles.top = offset + form.find('.aws-search-field').innerHeight();
                            styles.width = realForm.outerWidth();
                            styles.left = offsetLeft - realForm.outerWidth() / 2;
                        }
                        return styles;
                    }
                    AwsHooks.add_filter( "aws_results_layout", aws_results_layout );
                }, false);
            </script>

        <?php }

        /*
         * Gecko theme markup for seamless js integration
         */
        public function gecko_seamless_searchbox_markup( $markup ) {
            $markup = str_replace( 'aws-container', 'aws-container header__search w__100 dn pf', $markup );
            $markup = str_replace( '</form>', '</form><a id="sf-close" class="pa" href="#"><i class="pe-7s-close"></i></a>', $markup );
            return $markup;
        }

        /*
         * Savoy theme markup for seamless js integration
         */
        public function savoy_seamless_searchbox_markup( $markup ) {
            $markup = str_replace( 'name="s"', 'name="s" id="nm-header-search-input"', $markup );
            return $markup;
        }

        /*
         * Vandana theme markup changes
         */
        public function vandana_searchbox_markup( $markup ) {
            $markup = str_replace( 'aws-container', 'aws-container search-form', $markup );
            return $markup;
        }

        /*
         * Vandana theme custom styles
         */
        public function vandana_wp_head() { ?>
            <style>
                .header-search .header-search-wrap .aws-container .aws-show-clear .aws-search-field,
                .header-search .header-search-wrap .aws-container .aws-search-form .aws-form-btn{
                    background: transparent;
                    border: none;
                    color: #fff;
                    font-size: 2em;
                }
                .header-search .header-search-wrap .aws-container .aws-search-form .aws-search-btn_icon {
                    color: #fff;
                }
            </style>
        <?php }

        /*
         * Pustaka theme custom styles
         */
        public function pustaka_wp_head() { ?>
            <style>
                .site-header .searchform {
                    opacity: 0;
                }
                .site-header .aws-container {
                    width: 100%;
                }
                .site-header .aws-container .aws-search-form .aws-search-btn svg {
                    fill: #CD40E6;
                }
                .site-header .aws-container .aws-search-field {
                    border: none;
                    padding: 0;
                }
                .site-header .aws-container .aws-search-form .aws-form-btn {
                    border: none;
                    background: transparent;
                }
            </style>
        <?php }

        /*
         * XStore theme custom styles
         */
        public function xstore_wp_head() { ?>
            <style>
                #header form[role="search"]:not(.aws-search-form) {
                    opacity: 0;
                }
                #header .aws-container .aws-search-form .aws-form-btn {
                    background: #fff;
                }
                #header .aws-container .aws-search-form .aws-search-btn.aws-form-btn {
                    background-color: #000000;
                }
                #header .aws-container .aws-search-form .aws-main-filter .aws-main-filter__current {
                    color: #888;
                }
                #header .aws-container .aws-search-form .aws-search-btn svg {
                    fill: #fff;
                }
                #header .et-mini-content .aws-container {
                    width: 100%;
                    max-width: 750px;
                    margin-top: 50px;
                }
                #header [class*=et-content-]:not(.et-popup_toggle) .et_b_search-icon + .aws-container {
                    opacity: 0;
                    visibility: hidden;
                    top: 100%;
                    position: absolute;
                    z-index: 9999;
                    right: 0;
                    width: 100%;
                    min-width: 310px;
                }
                #header [class*=et-content-]:not(.et-popup_toggle):hover .et_b_search-icon + .aws-container {
                    opacity: 1;
                    visibility: visible;
                }
            </style>
        <?php }

        /*
         * Blocksy theme custom styles
         */
        public function blocksy_wp_head() { ?>
            <style>
                #search-modal .aws-container {
                    width: 100%;
                    margin: 0 auto;
                    max-width: 800px;
                }
                #search-modal .aws-container .aws-search-form {
                    background-color: transparent;
                    height: 60px;
                }
                #search-modal .aws-container .aws-search-form .aws-search-field {
                    border: none;
                    border-bottom: 1px solid rgba(255, 255, 255, 0.2);
                    font-size: 26px;
                    background-color: transparent;
                }
                #search-modal .aws-container .aws-search-form .aws-form-btn {
                    border: none;
                    background-color: #585a5c;
                    border-bottom: 1px solid rgba(255, 255, 255, 0.2);
                }
                #search-modal .aws-container .aws-search-form .aws-form-btn:hover {
                    background-color: #ccc;
                }
                #search-modal .aws-container .aws-search-form .aws-main-filter .aws-main-filter__current {
                    color: #000;
                }
                #search-modal .aws-container .aws-search-form .aws-search-btn svg {
                    fill: #222;
                }
            </style>
        <?php }

        /*
         * Kapee theme header search form replace
         */
        public function kapee_get_template_before( $located, $templates, $args ) {
            if ( $templates === 'template-parts/header/elements/ajax-search.php' && ! isset( $this->data['kapee_form'] ) ) {
                aws_get_search_form();
                $this->data['kapee_form'] = true;
                echo '<style>.kapee-ajax-search { display:none; } .header-main .aws-container, .header-col .aws-container { width:100%; }</style>';
            }

        }

        /*
         * Hestia them fix header search form
         */
        public function hestia_after_primary_navigation_addons( $form ) {
            $form = str_replace('class="aws-wrapper', ' style="height:35px;" class="aws-wrapper', $form );
            $output  = '';
            $output .= '<li class="hestia-search-in-menu">';
                $output .= '<div class="hestia-nav-search">';
                    $output .= $form;
                $output .= '</div>';
                $output .= '<a class="hestia-toggle-search"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="16" height="16"><path d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"></path></svg></a>';
            $output .= '</li>';
            return $output;
        }
        public function hestia_wp_enqueue_scripts() {
            if ( wp_is_mobile() ) {
                return;
            }
            $script = '
                function aws_results_layout( styles, options ) {
                    styles.width = 200;
                    styles.left = styles.left - 200;
                    styles.top = styles.top + 40;
                    return styles;
                }
                AwsHooks.add_filter( "aws_results_layout", aws_results_layout );
            ';
            wp_add_inline_script( 'aws-script', $script);
            wp_add_inline_script( 'aws-pro-script', $script);
        }

        /*
         * Open Shop theme header styles
         */
        public function open_shop_wp_head() { ?>
            <style>
                .below-header-bar .aws-container {
                    max-width: 550px;
                    margin: 0 auto;
                }
            </style>
        <?php }

        /*
         * Zephyr theme search form styles
         */
        public function zephyr_wp_head() { ?>
            <style>
                .header_hor .aws-container {
                    width: 100%;
                }
                .header_hor .aws-container .aws-search-field {
                    color: rgb(53, 65, 91);
                    font-size: 16px;
                }
                .header_hor .aws-container .aws-search-form .aws-form-btn {
                    background: transparent;
                    border: none;
                }
            </style>
        <?php }

        /*
         * Shoptimizer fix search form inside dialog window
         */
        public function shoptimizer_wp_enqueue_scripts() {

            $script = "
                function aws_results_append_to( container, options  ) {
                    if ( options.form.closest('.shoptimizer-modal').length > 0 ) {
                        return '.shoptimizer-modal .site-search';
                    }
                    return container;
                }
                function aws_results_layout( styles, options  ) {
                    if ( options.form.closest('.shoptimizer-modal').length > 0 ) {
                        var offset = options.form.offset();
                        var dialogOffset = options.form.closest('.site-search').offset();
                        styles.left = offset.left - dialogOffset.left;
                        styles.top = offset.top - dialogOffset.top + options.form.innerHeight();
                    }
                    return styles;
                }
                AwsHooks.add_filter( 'aws_results_append_to', aws_results_append_to );
                AwsHooks.add_filter( 'aws_results_layout', aws_results_layout );
            ";

            wp_add_inline_script( 'aws-script', $script);
            wp_add_inline_script( 'aws-pro-script', $script);

        }

        /*
         * Add search form inside Hitek theme header
         */
        public function xts_after_search_wrapper() {

            echo '<style>
                .xts-header form.searchform, 
                .xts-search-wrapper form.searchform {
                    display: none;
                }
                .xts-search-wrapper.xts-search-full-screen .aws-container {
                    margin: 0 35px;
                    padding-top: 30px;
                }
                .xts-search-full-screen .xts-search-close {
                    top: -110px;
                }
            </style>';

            aws_get_search_form();

        }

        /*
         * WP Bottom Menu
         */
        public function wp_bottom_menu_wp_head() { ?>

            <script>
                window.addEventListener('load', function() {
                    function wpbottom_aws_results_force_position( forcePosition, options ) {
                        if ( options.form.closest('#wp-bottom-menu-search-form-wrapper').length > 0 ) {
                            forcePosition = 'top';
                        }
                        return forcePosition;
                    }
                    AwsHooks.add_filter( "aws_results_force_position", wpbottom_aws_results_force_position );
                }, false);
            </script>

        <?php }

        /*
         * Advance Product Search by themehunk
         */
        public function aps_thaps_form_html( $html ) {
            $output = aws_get_search_form( false );
            return $output;
        }

        /*
         * Exclude product categories
         */
        public function filter_protected_cats_term_exclude( $exclude ) {
            if ( isset( $this->data['exclude_categories'] ) ) {
                foreach( $this->data['exclude_categories'] as $to_exclude ) {
                    $exclude[] = $to_exclude;
                }
            }
            return $exclude;
        }

        /*
         * Exclude products
         */
        public function filter_products_exclude( $exclude ) {
            if ( isset( $this->data['exclude_products'] ) ) {
                foreach( $this->data['exclude_products'] as $to_exclude ) {
                    $exclude[] = $to_exclude;
                }
            }
            return $exclude;
        }

        public function woocommerce_product_query( $query ) {

            $query_args = array(
                's'                => 'a',
                'post_type'        => 'product',
                'suppress_filters' => true,
                'fields'           => 'ids',
                'posts_per_page'   => 1
            );

            $query = new WP_Query( $query_args );
            $query_vars = $query->query_vars;

            $query_args_options = get_option( 'aws_search_query_args' );

            if ( ! $query_args_options ) {
                $query_args_options = array();
            }

            $user_role = 'non_login';

            if ( is_user_logged_in() ) {
                $user = wp_get_current_user();
                $role = ( array ) $user->roles;
                $user_role = $role[0];
            }

            $query_args_options[$user_role] = array(
                'post__not_in' => $query_vars['post__not_in'],
                'category__not_in' => $query_vars['category__not_in'],
            );

            update_option( 'aws_search_query_args', $query_args_options );

        }

        /*
         * Selector filter of js seamless
         */
        public function js_seamless_selectors( $selectors ) {

            // shopkeeper theme
            if ( function_exists( 'shopkeeper_theme_setup' ) ) {
                $selectors[] = '.site-search .woocommerce-product-search';
            }

            // ocean wp theme
            if ( class_exists( 'OCEANWP_Theme_Class' ) ) {
                $selectors[] = '#searchform-header-replace form';
                $selectors[] = '#searchform-overlay form';
                $selectors[] = '#sidr .sidr-class-mobile-searchform';
                $selectors[] = '#mobile-menu-search form';
                $selectors[] = '#site-header form';
            }

            if ( 'Jupiter' === $this->current_theme ) {
                $selectors[] = '#mk-fullscreen-searchform';
                $selectors[] = '.responsive-searchform';
            }

            if ( 'Venedor' === $this->current_theme ) {
                $selectors[] = '#search-form form';
            }

            if ( 'Elessi Theme' === $this->current_theme ) {
                $selectors[] = '.warpper-mobile-search form';
            }

            if ( 'Walker' === $this->current_theme ) {
                $selectors[] = '.edgtf-page-header form, .edgtf-mobile-header form, .edgtf-fullscreen-search-form';
            }

            if ( 'Martfury' === $this->current_theme ) {
                $selectors[] = '#site-header .products-search';
            }

            if ( 'BoxShop' === $this->current_theme ) {
                $selectors[] = '.ts-header .search-wrapper form';
            }

            if ( 'Fury' === $this->current_theme ) {
                $selectors[] = 'header .site-search';
            }

            if ( 'Urna' === $this->current_theme ) {
                $selectors[] = '#tbay-header .searchform';
            }

            if ( 'Salient' === $this->current_theme ) {
                $selectors[] = '#search-box form';
            }

            if ( 'Aurum' === $this->current_theme ) {
                $selectors[] = '.header-links .search-form';
            }

            if ( 'Royal' === $this->current_theme ) {
                $selectors[] = '.header-search form';
                $selectors[] = '#searchModal form';
            }

            if ( 'Modern Store' === $this->current_theme ) {
                $selectors[] = '#search-form-container form';
            }

            if ( 'WR Nitro' === $this->current_theme ) {
                $selectors[] = '.search-form-inner form';
            }

            if ( 'Basel' === $this->current_theme ) {
                $selectors[] = '.basel-search-wrapper #searchform, .secondary-header #searchform, .mobile-nav #searchform';
            }

            if ( 'Betheme' === $this->current_theme ) {
                $selectors[] = '#Header_wrapper #searchform, #side-form';
            }

            if ( 'Gecko' === $this->current_theme ) {
                $selectors[] = '#jas-wrapper .header__search';
            }

            if ( 'Savoy' === $this->current_theme ) {
                $selectors[] = '#nm-header-search-form';
            }

            if ( 'Pustaka' === $this->current_theme ) {
                $selectors[] = '.site-header .searchform';
            }

            if ( 'XStore' === $this->current_theme ) {
                $selectors[] = "#header form[role='search']";
            }

            if ( 'Kapee' === $this->current_theme ) {
                $selectors[] = ".kapee-ajax-search";
            }

            if ( 'Sinatra' === $this->current_theme ) {
                $selectors[] = '.si-header-widgets .si-search-form';
            }

            // WCFM - WooCommerce Multivendor Marketplace
            if ( class_exists( 'WCFMmp' ) ) {
                $selectors[] = '#wcfmmp-store .woocommerce-product-search';
            }

            // WP Bottom Menu
            if ( defined( 'WP_BOTTOM_MENU_VERSION' ) ) {
                $selectors[] = '#wp-bottom-menu-search-form-wrapper form';
            }

            return $selectors;

        }

        /*
         * Js seamless integration method
         */
        public function head_js_integration() {

            /**
             * Filter seamless integrations js selectors for forms
             * @since 1.85
             * @param array $forms Array of css selectors
             */
            $forms = apply_filters( 'aws_js_seamless_selectors', array() );

            if ( ! is_array( $forms ) || empty( $forms ) ) {
                return;
            }

            $forms_selector = implode( ',', $forms );

            $form_html = str_replace( 'aws-container', 'aws-container aws-js-seamless', aws_get_search_form( false ) );

            /**
             * Filter seamless integrations default form markup
             * @since 2.25
             * @param string $form_html Form html output
             * @param array $forms Array of css selectors
             */
            $form_html = apply_filters( 'aws_js_seamless_searchbox_markup', $form_html, $forms );

            ?>

            <script>

                window.addEventListener('load', function() {
                    var forms = document.querySelectorAll("<?php echo $forms_selector; ?>");

                    var awsFormHtml = <?php echo json_encode( $form_html ); ?>;

                    if ( forms ) {

                        for ( var i = 0; i < forms.length; i++ ) {
                            if ( forms[i].parentNode.outerHTML.indexOf('aws-container') === -1 ) {
                                forms[i].outerHTML = awsFormHtml;
                            }
                        }

                        window.setTimeout(function(){
                            jQuery('.aws-js-seamless').each( function() {
                                try {
                                    jQuery(this).aws_search();
                                } catch (error) {
                                    window.setTimeout(function(){
                                        try {
                                            jQuery(this).aws_search();
                                        } catch (error) {}
                                    }, 2000);
                                }
                            });
                        }, 1000);

                    }
                }, false);
            </script>

        <?php }

        /*
         * Remove products that was excluded with Search Exclude plugin ( https://wordpress.org/plugins/search-exclude/ )
         */
        public function search_exclude_filter( $products ) {

            $excluded = get_option('sep_exclude');

            if ( $excluded && is_array( $excluded ) && ! empty( $excluded ) && $products && is_array( $products ) ) {
                foreach( $products as $key => $product_id ) {
                    if ( false !== array_search( $product_id, $excluded ) ) {
                        unset( $products[$key] );
                    }
                }
            }

            return $products;

        }

        /*
         * Fix WooCommerce Product Table for search page
         */
        public function wc_product_table_data_config( $config ) {
            if ( isset( $_GET['type_aws'] ) && isset( $config['search'] ) ) {
                $config['search']['search'] = '';
            }
            return $config;
        }

        /*
         * WooCommerce Product Table plugin change number of products on page
         */
        public function wc_product_table_posts_per_page( $num ) {
            return 9999;
        }

        /*
         * WP all import cron job
         */
        public function pmxi_after_xml_import() {
            $sunc = AWS()->get_settings( 'autoupdates' );
            if ( $sunc === 'true' ) {
                wp_schedule_single_event( time() + 1, 'aws_reindex_table' );
            }
        }


        /*
         * Product Sort and Display for WooCommerce plugin disable on search page
         */
        function psad_filter( $value ) {
            if ( isset( $_GET['type_aws'] ) ) {
                return 'no';
            }
            return $value;
        }

        /*
         * Electro them update search form markup
         */
        public function electro_searchbox_markup( $markup, $params ) {
            $pattern = '/<div class="aws-search-btn aws-form-btn">[\S\s]*?<\/div>/i';
            $markup = preg_replace( $pattern, '', $markup );
            return $markup;
        }

        /*
         * Elessi Theme fix for shop filters
         */
        public function elessi_wp_enqueue_scripts() {
            $script = "
               jQuery('body').on( 'nasa_store_filter_ajax', function(e) { 
                    window.setTimeout(function(){
                        jQuery('.aws-container').aws_search();     
                    }, 3000);          
               });
            ";
            wp_add_inline_script( 'aws-script', $script);
        }

        /*
         * Elessi Theme fix for shop filters
         */
        public function elessi_aws_search_page_filters( $filters ) {

            if ( isset( $_GET['on-sale'] ) && $_GET['on-sale'] === '1' ) {
                $filters['on_sale'] = true;
            }

            if ( isset( $_GET['in-stock'] ) && $_GET['in-stock'] === '1' ) {
                $filters['in_status'] = true;
            }

            if ( isset( $_GET['min_price'] ) ) {
                $filters['price_min'] = intval( $_GET['min_price'] );
            }

            if ( isset( $_GET['max_price'] ) ) {
                $filters['price_max'] = intval( $_GET['max_price'] );
            }

            return $filters;

        }

        /*
         * Elessi Theme fix for shop filters products count
         */
        public function elessi_woocommerce_get_filtered_term_product_counts_query( $query ) {
            if ( isset ($_GET['s'] ) && $_GET['s'] && isset( $_GET['type_aws'] ) ) {
                global $wpdb;
                $regex = "/AND \({$wpdb->posts}\.post_title.*?\)/i";
                $query['where'] = preg_replace( $regex, '', $query['where'] );
            }
            return $query;
        }

        /*
         * Product Visibility by User Role for WooCommerce plugin hide products for certain users
         */
        public function pvbur_aws_search_results_products( $products ) {

            $user_role = 'guest';
            if ( is_user_logged_in() ) {
                $user = wp_get_current_user();
                $roles = ( array ) $user->roles;
                $user_role = $roles[0];
            }

            $remove_products = array();

            foreach( $products as $key => $product ) {

                $visible_roles = get_post_meta( $product['parent_id'], '_alg_wc_pvbur_visible', true );
                $invisible_roles = get_post_meta( $product['parent_id'], '_alg_wc_pvbur_invisible', true );

                if ( is_array( $invisible_roles ) && ! empty( $invisible_roles ) ) {
                    foreach( $invisible_roles as $invisible_role ) {
                        if ( $user_role == $invisible_role ) {
                            $remove_products[] = $key;
                            continue 2;
                        }
                    }
                }

                if ( is_array( $visible_roles ) && ! empty( $visible_roles ) ) {
                    $show = false;
                    foreach( $visible_roles as $visible_role ) {
                        if ( $user_role == $visible_role ) {
                            $show = true;
                            break;
                        }
                    }
                    if ( ! $show ) {
                        $remove_products[] = $key;
                        continue;
                    }
                }

            }

            if ( ! empty( $remove_products ) ) {
                $new_products = array();
                foreach( $products as $key => $product ) {
                    if ( array_search( $key, $remove_products ) === false ) {
                        $new_products[] = $product;
                    }
                }
                $products = $new_products;
            }

            return $products;

        }

        /*
         * ATUM Inventory Management for WooCommerce plugin ( Product level addon )
         */
        public function atum_index_data( $data, $id ) {
            $is_purchasable = AtumLevels\Inc\Helpers::is_purchase_allowed( $id );
            if ( ! $is_purchasable ) {
                $data = array();
            }
            return $data;
        }

        /*
         * Popups for Divi plugin fix scrolling for search results
         */
        function divi_popups_enqueue_scripts() {

            $script = "
                if ( typeof DiviArea === 'object' ) {
                    DiviArea.addAction('disabled_scrolling', function() {
                        var aws_form = jQuery('[data-da-area] .aws-search-form');
                        if ( aws_form.length > 0 ) {
                            DiviArea.Core.enableBodyScroll();
                            jQuery('body').addClass('da-overlay-visible');
                        }
                    });      
                    DiviArea.addAction('close_area', function() {
                        var aws_form = jQuery('[data-da-area] .aws-search-form');
                        if ( aws_form.length > 0 ) {
                            jQuery('body').removeClass('da-overlay-visible');
                            jQuery('.aws-search-result').hide();
                        }
                    });
                }
            ";

            wp_add_inline_script( 'aws-script', $script );

        }

        /*
         * WooCommerce Catalog Visibility Options plugin: exclude restricted products
         */
        public function wcvo_exclude_products( $exclude_products ) {
            $catalog_query = WC_Catalog_Restrictions_Query::instance();
            if ( is_object( $catalog_query ) && method_exists( $catalog_query, 'get_disallowed_products' ) ) {
                $disallowed_products = $catalog_query->get_disallowed_products();
                if ( is_array( $disallowed_products ) && ! empty( $disallowed_products ) ) {
                    foreach( $disallowed_products as $disallowed_product ) {
                        $exclude_products[] = $disallowed_product;
                    }
                }
            }
            return $exclude_products;
        }

        /*
         * Load  Dynamic Content for Elementor plugin scripts for search page
         */
        public function dce_scripts() {

            if ( ! isset( $_GET['s'] ) || ! isset( $_GET['post_type'] ) || $_GET['post_type'] !== 'product' || ! isset( $_GET['type_aws'] ) ) {
                return;
            }

            ?>

            <script>
                window.addEventListener('load', function() {
                    if ( typeof jQuery !== 'undefined' ) {
                        var $navItems = jQuery('.dce-page-numbers a.page-numbers');
                        if ( $navItems.length > 0 ) {
                            $navItems.each(function(){
                                var s = encodeURIComponent( '<?php echo esc_attr( $_GET['s'] ); ?>' );
                                var href = jQuery(this).attr( 'href' ) + '&post_type=product&type_aws=true&s=' + s;
                                jQuery(this).attr( 'href', href );
                            });
                        }
                    }
                }, false);
            </script>

        <?php }

        /*
         * WOOCS - WooCommerce Currency Switcher: fix ajax pricing loading
         */
        public function woocs_pricing_ajax_fix( $products_array ) {
            if ( $products_array ) {
                foreach ( $products_array as $key => $product ) {
                    if ( $product['price'] && strpos( $product['price'], 'woocs_preloader_ajax' ) !== false ) {
                        $products_array[$key]['price'] = str_replace( 'woocs_preloader_ajax', '', $product['price'] );
                    }
                }
            }
            return $products_array;
        }

        /*
         * Deals for WooCommerce: Add deals prices
         */
        public function dfm_search_pre_filter_products( $products_array ) {

            foreach( $products_array as $key => $pr_arr ) {

                if ( isset( $pr_arr['price'] ) && $pr_arr['price'] && function_exists( 'dfw_get_deal_ids' ) ) {

                    $product = wc_get_product( $pr_arr['id'] );
                    $deal_html = '';

                    if ( is_a( $product, 'WC_Product' ) && $product->get_type() == 'simple' ) {
                        $args = array(
                            'meta_key' => 'dfw_deal_type_id',
                            'meta_value' => $product->get_id(),
                        );

                        $deal_ids = dfw_get_deal_ids($args);

                        if ( function_exists( 'dfw_check_is_array' ) && dfw_check_is_array( $deal_ids ) ) {

                            $deal_id = reset($deal_ids);
                            $deal = function_exists('dfw_get_deal') ? dfw_get_deal($deal_id) : false;

                            if ( is_object( $deal ) ) {

                                if ( 'product' == $deal->get_type() ) {
                                    $product_id = $deal->get_deal_type_id() ;

                                    if ( 'yes' == get_post_meta( $product_id , 'dfw_enable_deal' , true ) && class_exists('DFW_Product_Handler') ) {
                                        $matched_data = DFW_Product_Handler::get_matched_rules( $product , $product_id , $deal_id , $deal->get_type() ) ;

                                        if ( function_exists('dfw_check_is_array') && dfw_check_is_array( $matched_data ) ) {
                                            if ( isset( $matched_data[ 'price' ] ) && isset( $matched_data[ 'rule_id' ] ) ) {

                                                ob_start();
                                                dfw_get_template( 'product-deals/deal-price.php' , array( 'product' => $product , 'deal_price' => $matched_data[ 'price' ] , 'class_name' => '' ) ) ;
                                                $deal_html = ob_get_contents();
                                                ob_end_clean();

                                                $deal_html = str_replace('class="price "', 'class=""', $deal_html );
                                                $deal_html = str_replace('<p ', '<span ', $deal_html );
                                                $deal_html = str_replace('</p>', '</span>', $deal_html );

                                            }
                                        }
                                    }
                                }

                            }

                        }

                    }

                    if ( $deal_html ) {
                        $products_array[$key]['price'] .= $deal_html;
                    }

                }

            }

            return $products_array;

        }

        /*
         * WooCommerce Product Search plugin - fix filters for s page
         */
        public function wps_aws_search_page_filters( $filters ) {

            if ( isset( $_GET['ixwpst'] ) && $_GET['ixwpst'] && is_array( $_GET['ixwpst'] ) ) {
                foreach( $_GET['ixwpst'] as $tax => $terms ) {
                    $filters['tax'][$tax] = array(
                        'terms' => $terms,
                        'operator' => 'AND',
                        'include_parent' => true,
                    );
                }
            }

            return $filters;

        }

    }

endif;

ESTRELLA Pharma – Affy Pharma Pvt Ltd

TREPODOX

POWDER FOR ORAL SUSPENSION
30ML (HDPE BOTTLE)

Composition

Cefpodoxime 50mg/5ml

Indications & Uses

UTIs, LRTs

TREPODOX – CV

POWDER FOR ORAL SUSPENSION
30ML (GLASS BOTTLE)

Composition

Cefpodoxime 50mg + Potassium Clavulanate 31.25mg/ 5ml

Indications & Uses

Upper & lower respiratory infections, Uncomplicated skin infections, Urinary Tract Infections

ESTY CLAV

POWDER FOR ORAL SUSPENSION
30ML (GLASS +HDPE BOTTLE)

Composition

Amoxycillin 200mg + Potassium clavulanate 28.50 mg/ 5ml

Indications & Uses

Community Acquired Pneumonia, Acute Exacerbations of Chronic Bronchitis, Upper Respiratory Tract Infections, Urinary Tract Infections

ESTRIXIME – CV

POWDER FOR ORAL SUSPENSION
30ML (GLASS BOTTLE)

Composition

Cefixime 50mg + Potassium clavulanate 31.25mg/5ml

Indications & Uses

Urinary Tract Inefctions, AECB, Otitis Media, Typhoid/p>

ESTRIXIME

POWDER FOR ORAL SUSPENSION
30ML (HDPE BOTTLE)

Composition

Cefixime 50mg/5ml

Indications & Uses

Urinary Tract Inefctions, Gastroenteritis

REOMELL

ORAL SUSPENSION
15 ml

Composition

Azithromycin 200mg/5ml

Indications & Uses

Community Acquired Pneumonia, Acute Exacerbations of Chronic Bronchitis,

TAMEST – DS

ORAL SUSPENSION
60 ml

Composition

Paracetamol 250mg/5ml

Indications & Uses

Fever, Pain

STREFEN

ORAL SUSPENSION
60 ml

Composition

Paracetamol 125mg + Mefenamic Acid 50mg/5ml

Indications & Uses

Pain, Fever

STREFOX

ORAL SUSPENSION
30 ml

Composition

Ofloxacin 50mg/5ml

Indications & Uses

Acute exacerbations of chronic Bronchitis, Diarrhoea

TAMACET-P

SYRUP
60 ml

Composition

Paracetamol 125mg + PPH 5mg + Cetirizine HCI 2mg/5ml

Indications & Uses

Fever, common cold & Flu

HEPTRELL

ORAL SUSPENSION
200ml

Composition

Cyproheptadine HCI 2mg + Tricholine citrate 0.275mg/5ml

Indications & Uses

Stimulate Apetite, Induces Weight Gain, Cure Allergies

TREP-DSR

CAPSULES ( HARD GELATIN)
10X10 (Alu-Alu)

Composition

Pantoprazole 40mg (EC) + Domperidone 30mg (SR)

Indications & Uses

GERD, Dyspepsia, Acid Peptic Disorders, Gastritis

RALE-DSR

CAPSULES ( HARD GELATIN)
11X10 (Alu-Alu)

Composition

Rabeprazole 20mg (EC) + Domperidone SR

Indications & Uses

GERD, Dyspepsia, Acid Peptic Disorders, Gastritis

STRETOP-40

INJECTION
40ml

Composition

Pantoprazole Sodium 40mg + NaCL

Indications & Uses

Acid-peptic disorders in hospitalized patients, Zollinger – Ellison Syndrome, Treatment of GERD Associated with Erasive Esophagitis, GL Bleed

DIMACID

SUSPENSION
170ml

Composition

Activated Dimethicone 25mg + Magnesium Hydroxide 200mg+ Aluminium Hydroxide Gel 200mg/10ml

Indications & Uses

Heartburn, Acid Indigestion

ELLAZYME

SYRUP
200ml

Composition

Alpha Amylase (1:2000) 50mg, Pepsin(1:3000) 10mg/5ml

Indications & Uses

Dyspepsia, Flatulence, Anorexia, Pancreatic Insufficiency

ARBOLL-Z

CAPSULES (HARD GELATIN)
10X3X10

Composition

Vitamin C 75mg + Vitamin B12 5mcg + Carbonyl Iron 100mg + Folic Acid 1.5mg + Zinc Sulphate 61.8mg

Indications & Uses

Hyphocromic Anemia in Pregnancy, Chronic and / or Acute Blood Loss, Post-gynaesurgery, Iron Deficiency Anemia

EST-D3 60K

CAPSULES (SOFT GELATIN)
10X1X4

Composition

Cholecalciferol 60000 UI

Indications & Uses

Osteoporosis, Osteoarthritis, Musculoskeletal Pain, Type- 2 Diabetes, Menstrual Irregularities, Pre-eclampsia, IUGR

STREBONA

ORAL SUSPENSION
200ml

Composition

Calcium Carbonate 625mg, Vitamin D3 125 IU/5ml

Indications & Uses

Osteomalacia, Osteoporosis, Fractures, Premenstrual Syndrome

STREFE-III

SYRUP (IRON TONIC)
300 ml

Composition

Iron (III) Hydroxide Polymaltose 50mg, Folic Acid 0.5mg/15ml

Indications & Uses

Pregnancy and lactation, Iron Deficiency Anaemia, Anaemia due to Excessive Haemorrhage, Anaemia Associated with Infections and Malignant Disease

STRECIUM

CAPSULES (SOFT GELATIN)
5X2X15

Composition

Calcitriol 0.25mcg + Calcium Carbonate 500mg + Zinc Sulphate 7.5mg

Indications & Uses

Osteoporosis, Hypoparathyroidism, Pregnancy & Lactation, Premenstrual Syndrome

ESTRE-SPAS

TABLETS
20X10

Composition

Mefenamic Acid 250mg + Dicyclomine HCI 10mg

Indications & Uses

Dysmenorrhea, Irritable Bowel Syndrome, Colic and Bladder Spasm, Abdominal Pain

TAMEST-A

TABLETS (BLISTERS)
20X10

Composition

Nimeulide 100mg + Paracetamo; 325mg

Indications & Uses

Arthritis Pain, Soft Tissue Trauma Including Sprains, Musculoskeletal Pain, Pain Following Dental Extraction

PARTRA FORTE

TABLETS

20X10

Composition

Tramadol 37.5mg + Paracetamol 325mg

Indications & Uses

Chronic Back Pain, Osteoarthritis, Postoperative Pain

UMRELY GEL

GEL
30g

Composition

Diclofenac Diethylamine 1.16% w/w + Oleum Linseed Oil 3 % w/w + Menthol 5% w/w +Methyl Salicylate 10% w/w

Indications & Uses

Sprains & Strains, Lower Back Pain, Joint Pain, Knee Pain

MOISTACT

CREAM
20g

Composition

Urea 10% +Lactic Acid 10% + Propylene Glycol 10% + Liquid Paraffin 10%

Indications & Uses

Foot Cracks, Keratolytic

BELODIP

OINTMENT
15g

Composition

Clotrimazole 1% w/w + Beclomethasone Dipropionate 0.025% w/w + Neomycin 0.5% w/w

Indications & Uses

Eczema, Psoriasis, Corticosteroid Responsive Dermatoses

MIN-DAND

LOTION
100 ml

Composition

Ketoconazole 2% w/v

Indications & Uses

Pityriasis, Dandruff

MIN-DAND-Z

LOTION
100 ml

Composition

Ketoconazole Shampoo 2% w/v + ZPTO 1% w/v

Indications & Uses

Pityriasis, Dandruff

MIN-DAND

SOAP
75g

Composition

Ketoconazole 1% w/w

Indications & Uses

Tinea Versicolor, Prophylaxis of Pityriasis Versicolor

FLUTRELLA

TABLETS
20X1X1

Composition

Fluconazole 200mg

Indications & Uses

Vaginal Candidiasis, Brochopulmonary Infections, Candiduria, Tinea Pedis, Corposis, Cruris, Versicolor

ESTRAVIT

SYRUP
200ml

Composition

L-Iysine HCI 25mg + Vitamin B1 2.5mg + Vitamin B2 2.5mg + Vitamin B6 0.75mg + D-panthenol 3mg +Niacinamide 25mg + Mecobalamin 2mcg/10ml

Indications & Uses

Sub-optimal Growth, Poor Weight Gain, Malnutrition, Prolonged Illness

LYCOSTER PLUS

SYRUP
225ml

Composition

Each 10ml Contains: Lycopene 6% 1000mcg + Vitamin A Palmitate 2500 IU + Vitamin E 10 IU + Ascorbic Acid 50mg + Selenium (as Sodium Selenate) 35mcg + Zinc (As Zinc Gluconate) 3mg + Manganese (as Manganese Gluconate) 2mg + Iodine ( As Potassium Iodine) 100mcg + Copper (As Copper Sulphate0 500mcg + Thiamine HCI 2mg + Riboflavine 3mg + Pyridoxine HCI 1.5mg

Indications & Uses

Tiredness, Stress, Feeling of Weakness, Vitality Deficiency

OSERON

CAPSULES (SOFT GELATIN)
10X1X10

Composition

Antioxidant, Multivitamin & Multiminerals

Indications & Uses

Tiredness, Stress, Feeling of Weakness, Vitality Deficiency

GERMELLA

CAPSULES (SOFT GELATIN)
10X1X10

Composition

Vitamin E (Natural) 400 IU + Wheat Germ Oil 100mg + Omega 3 Fatty Acids 30mg

Indications & Uses

Ulcerative colitis, Metabolic Syndrome, Rheumatoid Arthritis, Type-2 Diabetes, Cardiovascular Diseases

LYCOSTER GOLD

CAPSULES (SOFT GELATIN)
10X1X10

Composition

Each SG Contains Lycopene 6% 2000 IU + Vitamin A 2500 IU + Vitamin E Acetate 10 IU + Vitamin C 50 mg + Zinc sulphate Monohydrate 27.45mg + Selenium Dioxide 70mcg

Indications & Uses

Idiopathic Male Infertility, Pre-eclampsia, Prostate Cancer, Cardiovascular Diseases, Diabetes Mellitus

OSERON -G

CAPSULES (SOFT GELATIN)
10X1X11

Composition

Ginseng + Multivitamin + Multimineral

Indications & Uses

Tiredness, Stress, Feeling of Weakness, Vitality Deficiency

OSERON -G

CAPSULES (SOFT GELATIN)
10X1X11

Composition

Ginseng + Multivitamin + Multimineral

Indications & Uses

Tiredness, Stress, Feeling of Weakness, Vitality Deficiency

ESTRIXIME-200 LB

TABLETS (Alu-Alu)
20X10

Composition

Cefixime 200mg + Lactic Acid Bacilus 2.5 billion spores

Indications & Uses

Otitis Media, Pharyngitis & Tonsillitis, Uncomplicated Urinary Tract Infections, Acute Exacerbations of Chronic Bronchitis, Enteric Fever

ESTRIXIME-CV-325

TABLETS (Alu-Alu)
10X1X6

Composition

Cefixime 200mg + Potassium Clavulanate 125mg

Indications & Uses

Respiratory Tract Infections, Urinary Tract Infections, Skin & Skin Structure Infections

ESTY CLAV-625 LB

TABLETS (Alu-Alu)
10X1X6

Composition

Amoxycillin 500mg + Potassium Clavulanate 125mg

Indications & Uses

Respiratory Tract Infections, Community Acquired Pneumonia, Gynaecological Infections, Acute Exacerbations of Chronic Bronchitis, Skin and Soft Tissue Infections

FLOXEST

TABLETS (Blister)
20X10

Composition

Ofloxacin 200mg + Ornidazole 500mg

Indications & Uses

Surgical ions, Diarrheas of Mixed Etiology, Gynaecological Infections, Orofacial and Dental Infections

VOFLOX-500

TABLETS
10X10

Composition

Levofloxacin 500mg

Indications & Uses

Acute Bacterial Sinusitis, Acute Bacterial Exacerbations of Chronic Bronchitis, Skin & Skin Structure Infections, Chronic Bacterial Prostatitis, Urinary Tract Infections

FLOXEST – O

TABLETS (Alu-Alu)
20X10

Composition

Cefixime 200mg + Ofloxacin 200mg

Indications & Uses

Community Acquired Pneumonia, Multiple Drug Resistant-TB, Typhoid

FLOXEST

TABLETS (Alu-Alu)
20X10

Composition

Ofloxacin 200mg

Indications & Uses

Community Acquired Pneumonia, Multiple Drug Resistant-TB, Typhoid

ESTY CLAV- 1.2

INJECTIONS
1.2g

Composition

Amoxycillin 1000mg + Potassium Clavulanate 200mg + WFI

Indications & Uses

Community Acquired Pneumonia, Gynaecological Infections, Upper Respiratory Tract Infections, Skin and Soft Tissue Infections, Urinary Tract Infections, Acute Exacerbations of Chronic Bronchitis

TRELLON-SB 1.5

INJECTIONS
1.5g

Composition

Ceftriaxone 1000mg + Sulbactam 500mg + WFI

Indications & Uses

Gynaecological Infections, Lower Respiratory Tract Infections, Intra-abdominal Infections with Aerobic Organisms, Surgical Prophylaxis

TRELLON-TZ 1.125

INJECTIONS
1.125gm

Composition

Ceftriaxone 1000mg + Tazobactam 500 mg + WFI

Indications & Uses

Bone & Joint Infections, Intra-abdominal Infections, Bacterial Meningitis, Pre-operative Surgical Prophylaxis

RELLAM

INJECTIONS
1gm

Composition

Meropenem 1gm + WFI

Indications & Uses

Complicated Intra-abdominal Infection (cIAI), Complicated Skin & Skin Structure Infections (cSSSI), Bacterial Meningitis, Noscocomial Pneumonia

TRELIN-Z 4.5

INJECTIONS
4.5gm

Composition

Piperacillin 4000mg + Tazobactam 500mg + WFI

Indications & Uses

Intra-abdominal Infections, Complicated Urinary Tract Infections, Febrile Neutropenia, Lower Respiratory Tract Infections

TRELIN-Z 4.5

INJECTIONS
4.5gm

Composition

Piperacillin 4000mg + Tazobactam 500mg + WFI

Indications & Uses

Intra-abdominal Infections, Complicated Urinary Tract Infections, Febrile Neutropenia, Lower Respiratory Tract Infections

BUTRELLA

SYRUP

100ml

Composition

Ambroxol HCI 15mg + Guaiphensin 50mg + Terbutaline Sulphate 1.5mg + Mentholated Base/5ml

Indications & Uses

Bronchitis, Productive Cough, Emphysema, Bronchial Asthma

BUTRELLA-BR

SYRUP

100ml

Composition

Terbutaline Sulphate 1.25mg + Bromhexine HCI 4mg + Guaiphenesin 50mg + Methalated Base/5ml

Indications & Uses

Acute Cough, Abnormal Mucus Secretion, Productive Cough

DEXTRIN

SYRUP
100ml

Composition

Dextromethorphan Hydrobromide 10mg + Phenylpherine 5 mg + Cetrizine 5mg + Mentholated Base/5ml

Indications & Uses

Commom Cold and Flu, Nasal Congestion, Sore Throat

VOTRELL-M

TABLETS (Alu-Alu)
20X10

Composition

Levocetirizine 5mg + Montelukast 10mg

Indications & Uses

Allergic Rhinitis, Nasal Congestion, Asthma

VOTRELL

TABLETS (Alu-Alu)
20X11

Composition

Levocetirizine 5mg

Indications & Uses

Chronic Idiopathic Urticaria (CIU), Seasonal Allergic Rhinitis (SAR), Perennial Allergic Rhinitis (PAR)

Arrange A Callback
[]
1 Step 1
Full Name
Telephone
Departmentyour full name
Postal Address
Message
0 /
Previous
Next
Shopping Basket