Files
krolewskie-miody.pl/wp-content/plugins/ekomi/ekomi-prc-widget.php
2026-04-28 15:13:50 +02:00

128 lines
3.1 KiB
PHP

<?php
/**
* Ekomi Integration Smart PRC Widget.
*
* @category Ekomi
* @package Ekomi
* @author eKomi <info@ekomi-services.com>
* @copyright Copyright (c) 2018 Ekomi ltd (http://www.ekomi.de)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* @link http://www.ekomi.de
*/
/**
* Returns the smart prc widget.
*
* @param string $product_id The product id.
*
* @return string
*/
function ekomi_prc_widget_link_shortcode( $product_id ) {
$lang_code = EKOMI_INTEGRATION\ei_get_default_lang_code();
if ( isset( $_GET['lang'] ) ) {
$lang_code = sanitize_key( $_GET['lang'] );
} else {
$lang_code = ei_get_lang_code_from_url( $lang_code );
}
$lang_code = explode( '_', $lang_code )[0];
if ( get_option( $lang_code . '_ee_active', '0' ) &&
get_option( $lang_code . '_ee_show_prc_widget', '0' ) &&
get_option( $lang_code . '_ee_prc_widget_token', '' )
) {
ob_start();
$product_identifier = ei_get_product_identfier( $product_id, $lang_code );
$customer_id = get_option( $lang_code . '_ee_shop_id', '' );
$widget_token = get_option( $lang_code . '_ee_prc_widget_token', '' );
include 'templates/prc-widget.php';
$widget = ob_get_contents();
ob_end_clean();
return $widget;
} else {
return '';
}
}
/**
* Gets lang code from url.
*
* @param string $lang_code The Language iso code.
*
* @return mixed
*/
function ei_get_lang_code_from_url( $lang_code ) {
$url = '';
if ( isset( $_SERVER['HTTP_HOST'] ) && isset( $_SERVER['REQUEST_URI'] ) ) {
$url = sanitize_key( $_SERVER['HTTP_HOST'] ) . sanitize_key( $_SERVER['REQUEST_URI'] );
}
foreach ( EKOMI_INTEGRATION\ei_prepare_lang_array( $lang_code ) as $code ) {
if ( strpos( $url, $code . '.' ) !== false || strpos( $url, "/{$code}/" ) !== false ) {
return $code;
}
}
return $lang_code;
}
/**
* Checks if product identifier is sku.
*
* @param mixed $product_id The product identifier.
* @param string $lang_code The language code.
*
* @return mixed
*/
function ei_get_product_identfier( $product_id, $lang_code ) {
if ( isset( $product_id['product_id'] ) ) {
$product_id = $product_id['product_id'];
}
$product_identifier_option = get_option( $lang_code . '_ee_product_identifier', EKOMI_INTEGRATION\PRODUCT_IDENTIFIER_ID );
if ( ei_is_product_identfier_sku( $product_identifier_option ) ) {
$product_id = ei_get_product_sku( $product_id );
}
return $product_id;
}
/**
* Checks the product identifier either Id or Sku.
*
* @param array $product_identifier_option Plugin configurations.
*
* @return boolean
*/
function ei_is_product_identfier_sku( $product_identifier_option ) {
if ( EKOMI_INTEGRATION\PRODUCT_IDENTIFIER_SKU === $product_identifier_option ) {
return true;
}
return false;
}
/**
* Gets product sku.
*
* @param mixed $product_id The product identifier.
*
* @return mixed
*/
function ei_get_product_sku( $product_id ) {
$_pf = new WC_Product_Factory();
$product = $_pf->get_product( $product_id );
return $product->get_sku();
}
/**
* Register short codes.
*/
add_shortcode( 'ekomi_prc_widget', __NAMESPACE__ . '\\ekomi_prc_widget_link_shortcode' );