File "EANForWooCommerce.php"

Full Path: /home/vantageo/public_html/cache/.wp-cli/wp-content/plugins/ajax-search-for-woocommerce/includes/Integrations/Plugins/EANForWooCommerce/EANForWooCommerce.php
File size: 2.39 KB
MIME-type: text/x-php
Charset: utf-8

<?php

namespace DgoraWcas\Integrations\Plugins\EANForWooCommerce;

// Exit if accessed directly
if ( !defined( 'ABSPATH' ) ) {
    exit;
}
/**
 * Integration with EAN for WooCommerce
 *
 * Plugin URL: https://wordpress.org/plugins/ean-for-woocommerce/
 * Author: WPFactory
 */
class EANForWooCommerce {
    public function init() {
        if ( !defined( 'ALG_WC_EAN_VERSION' ) ) {
            return;
        }
        if ( version_compare( ALG_WC_EAN_VERSION, '4.3' ) < 0 ) {
            return;
        }
        if ( !function_exists( 'alg_wc_ean' ) ) {
            return;
        }
        // Disable plugin hook on WP_Query.
        if ( !is_admin() ) {
            if ( isset( alg_wc_ean()->core->search ) && get_option( 'alg_wc_ean_frontend_search', 'no' ) === 'yes' ) {
                remove_action( 'pre_get_posts', array(alg_wc_ean()->core->search, 'search'), 10 );
                if ( !dgoraAsfwFs()->is_premium() ) {
                    add_filter( 'dgwt/wcas/native/search_query/join', array($this, 'searchQueryJoin') );
                    add_filter(
                        'dgwt/wcas/native/search_query/search_or',
                        array($this, 'searchQueryOr'),
                        10,
                        2
                    );
                }
            }
        }
    }

    /**
     * Prepare join for EAN lookup
     *
     * @param string $join
     *
     * @return string
     */
    public function searchQueryJoin( $join ) {
        global $wpdb;
        if ( !strpos( $join, 'dgwt_wcasmsku' ) !== false ) {
            $join .= " INNER JOIN {$wpdb->postmeta} AS dgwt_wcasmean ON ( {$wpdb->posts}.ID = dgwt_wcasmean.post_id )";
        }
        return $join;
    }

    /**
     * Inject EAN lookup into search query
     *
     * @param string $search
     * @param string $like
     *
     * @return string
     */
    public function searchQueryOr( $search, $like ) {
        global $wpdb;
        $field = alg_wc_ean()->core->ean_key ?? '';
        if ( empty( $field ) ) {
            return $search;
        }
        if ( strpos( $search, 'dgwt_wcasmsku' ) !== false ) {
            $search .= $wpdb->prepare( " OR (dgwt_wcasmsku.meta_key=%s AND dgwt_wcasmsku.meta_value LIKE %s)", $field, $like );
        } else {
            $search .= $wpdb->prepare( " OR (dgwt_wcasmean.meta_key=%s AND dgwt_wcasmean.meta_value LIKE %s)", $field, $like );
        }
        return $search;
    }

}