766 lines
23 KiB
PHP
Executable File
766 lines
23 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Booster for WooCommerce - Functions - General
|
|
*
|
|
* @version 3.7.0
|
|
* @author Algoritmika Ltd.
|
|
* @todo add `wcj_add_actions()` and `wcj_add_filters()`
|
|
*/
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) exit;
|
|
|
|
if ( ! function_exists( 'wcj_get_wpml_default_language' ) ) {
|
|
/**
|
|
* wcj_get_wpml_default_language.
|
|
*
|
|
* @version 3.7.0
|
|
* @since 3.7.0
|
|
*/
|
|
function wcj_get_wpml_default_language() {
|
|
global $sitepress;
|
|
if ( $sitepress ) {
|
|
return $sitepress->get_default_language();
|
|
} elseif ( function_exists( 'icl_get_setting' ) ) {
|
|
return icl_get_setting( 'default_language' );
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_get_array' ) ) {
|
|
/**
|
|
* wcj_get_array.
|
|
*
|
|
* @version 3.6.0
|
|
* @since 3.6.0
|
|
*/
|
|
function wcj_get_array( $value ) {
|
|
return ( ! is_array( $value ) ? array( $value ) : $value );
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_is_product_in_cart' ) ) {
|
|
/**
|
|
* wcj_is_product_in_cart.
|
|
*
|
|
* @version 3.6.0
|
|
* @since 2.9.1
|
|
*/
|
|
function wcj_is_product_in_cart( $product_id ) {
|
|
if ( 0 != $product_id ) {
|
|
if ( isset( WC()->cart->cart_contents ) && is_array( WC()->cart->cart_contents ) ) {
|
|
foreach ( WC()->cart->cart_contents as $cart_item_key => $cart_item_data ) {
|
|
if (
|
|
( isset( $cart_item_data['product_id'] ) && $product_id == $cart_item_data['product_id'] ) ||
|
|
( isset( $cart_item_data['variation_id'] ) && $product_id == $cart_item_data['variation_id'] )
|
|
) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_send_file' ) ) {
|
|
/**
|
|
* wcj_send_file.
|
|
*
|
|
* @version 3.5.0
|
|
* @since 3.5.0
|
|
* @todo use where needed
|
|
* @todo add more cases for `$file_type`
|
|
*/
|
|
function wcj_send_file( $file_name, $file_path, $file_type, $do_clean_up = true ) {
|
|
switch ( $file_type ) {
|
|
default: // 'zip'
|
|
header( "Content-Type: application/octet-stream" );
|
|
header( "Content-Disposition: attachment; filename=" . urlencode( $file_name ) );
|
|
header( "Content-Type: application/octet-stream" );
|
|
header( "Content-Type: application/download" );
|
|
header( "Content-Description: File Transfer" );
|
|
header( "Content-Length: " . filesize( $file_path ) );
|
|
break;
|
|
}
|
|
flush(); // this doesn't really matter.
|
|
if ( false !== ( $fp = fopen( $file_path, "r" ) ) ) {
|
|
while ( ! feof( $fp ) ) {
|
|
echo fread( $fp, 65536 );
|
|
flush(); // this is essential for large downloads
|
|
}
|
|
fclose( $fp );
|
|
if ( $do_clean_up ) {
|
|
@unlink( $file_path );
|
|
}
|
|
exit();
|
|
} else {
|
|
die( __( 'Unexpected error', 'woocommerce-jetpack' ) );
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_parse_number' ) ) {
|
|
/**
|
|
* wcj_parse_number.
|
|
*
|
|
* @version 3.5.0
|
|
* @since 3.5.0
|
|
* @todo maybe there is a better way (e.g. `numfmt_parse()`)
|
|
*/
|
|
function wcj_parse_number( $number_string ) {
|
|
if ( false !== strpos( $number_string, '.' ) ) {
|
|
return str_replace( ',', '', $number_string );
|
|
} else {
|
|
return str_replace( ',', '.', $number_string );
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_handle_replacements' ) ) {
|
|
/**
|
|
* wcj_handle_replacements.
|
|
*
|
|
* @version 3.4.0
|
|
* @since 3.4.0
|
|
*/
|
|
function wcj_handle_replacements( $replacements, $template ) {
|
|
return str_replace( array_keys( $replacements ), $replacements, $template );
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_get_js_confirmation' ) ) {
|
|
/**
|
|
* wcj_get_js_confirmation.
|
|
*
|
|
* @version 3.4.0
|
|
* @since 3.3.0
|
|
* @todo use where needed
|
|
*/
|
|
function wcj_get_js_confirmation( $confirmation_message = '' ) {
|
|
if ( '' === $confirmation_message ) {
|
|
$confirmation_message = __( 'Are you sure?', 'woocommerce-jetpack' );
|
|
}
|
|
return ' onclick="return confirm(\'' . $confirmation_message . '\')"';
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_tcpdf_method' ) ) {
|
|
/**
|
|
* wcj_tcpdf_method.
|
|
*
|
|
* @version 3.6.0
|
|
* @since 3.4.0
|
|
*/
|
|
function wcj_tcpdf_method( $method, $params ) {
|
|
return '<tcpdf method="' . $method . '" wcj_tcpdf_method_params_start' . serialize( $params ) . 'wcj_tcpdf_method_params_end />';
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_tcpdf_barcode' ) ) {
|
|
/**
|
|
* wcj_tcpdf_barcode.
|
|
*
|
|
* @version 3.4.0
|
|
* @since 3.3.0
|
|
* @todo `color`
|
|
* @todo `align` (try 'T')
|
|
*/
|
|
function wcj_tcpdf_barcode( $atts ) {
|
|
if ( '' === $atts['code'] ) {
|
|
return '';
|
|
}
|
|
if ( '' === $atts['type'] ) {
|
|
$atts['type'] = ( '1D' === $atts['dimension'] ? 'C39' : 'PDF417' );
|
|
}
|
|
if ( 0 === $atts['width'] ) {
|
|
$atts['width'] = ( '1D' === $atts['dimension'] ? 80 : 80 );
|
|
}
|
|
if ( 0 === $atts['height'] ) {
|
|
$atts['height'] = ( '1D' === $atts['dimension'] ? 30 : 80 );
|
|
}
|
|
if ( '1D' === $atts['dimension'] ) {
|
|
$params = array(
|
|
$atts['code'],
|
|
$atts['type'],
|
|
'', // x
|
|
'', // y
|
|
$atts['width'],
|
|
$atts['height'],
|
|
0.4, // xres
|
|
array( // style
|
|
'position' => 'S',
|
|
'border' => false,
|
|
'padding' => 4,
|
|
'fgcolor' => array( 0, 0, 0 ),
|
|
'bgcolor' => array( 255, 255, 255 ),
|
|
'text' => false,
|
|
),
|
|
'N', // align
|
|
);
|
|
} else {
|
|
$params = array(
|
|
$atts['code'],
|
|
$atts['type'],
|
|
'', // x
|
|
'', // y
|
|
$atts['width'],
|
|
$atts['height'],
|
|
array( // style
|
|
'border' => false,
|
|
'vpadding' => 'auto',
|
|
'hpadding' => 'auto',
|
|
'fgcolor' => array( 0, 0, 0 ),
|
|
'bgcolor' => array( 255, 255, 255 ),
|
|
'module_width' => 1, // width of a single module in points
|
|
'module_height' => 1, // height of a single module in points
|
|
),
|
|
'N', // align
|
|
false, // distort
|
|
);
|
|
}
|
|
return wcj_tcpdf_method( ( '1D' === $atts['dimension'] ? 'write1DBarcode' : 'write2DBarcode' ), $params );
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_barcode' ) ) {
|
|
/**
|
|
* wcj_barcode.
|
|
*
|
|
* @version 3.4.0
|
|
* @since 3.3.0
|
|
* @todo (maybe) "Barcodes" module
|
|
* @todo (maybe) `getBarcodePNG()`
|
|
*/
|
|
function wcj_barcode( $atts ) {
|
|
if ( '' === $atts['code'] ) {
|
|
return '';
|
|
}
|
|
if ( '' === $atts['type'] ) {
|
|
$atts['type'] = ( '1D' === $atts['dimension'] ? 'C39' : 'PDF417' );
|
|
}
|
|
if ( 0 === $atts['width'] ) {
|
|
$atts['width'] = ( '1D' === $atts['dimension'] ? 2 : 10 );
|
|
}
|
|
if ( 0 === $atts['height'] ) {
|
|
$atts['height'] = ( '1D' === $atts['dimension'] ? 30 : 10 );
|
|
}
|
|
if ( '1D' === $atts['dimension'] ) {
|
|
require_once( WCJ_PLUGIN_PATH . '/includes/lib/tcpdf/tcpdf_barcodes_1d.php' );
|
|
$barcode = new TCPDFBarcode( $atts['code'], $atts['type'] );
|
|
} else {
|
|
require_once( WCJ_PLUGIN_PATH . '/includes/lib/tcpdf/tcpdf_barcodes_2d.php' );
|
|
$barcode = new TCPDF2DBarcode( $atts['code'], $atts['type'] );
|
|
}
|
|
$barcode_array = $barcode->getBarcodeArray();
|
|
return ( ! empty( $barcode_array ) && is_array( $barcode_array ) ? $barcode->getBarcodeHTML( $atts['width'], $atts['height'], $atts['color'] ) : '' );
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_session_maybe_start' ) ) {
|
|
/**
|
|
* wcj_session_maybe_start.
|
|
*
|
|
* @version 3.4.0
|
|
* @since 3.1.0
|
|
*/
|
|
function wcj_session_maybe_start() {
|
|
switch ( WCJ_SESSION_TYPE ) {
|
|
case 'wc':
|
|
if ( function_exists( 'WC' ) && WC()->session && ! WC()->session->has_session() ) {
|
|
WC()->session->set_customer_session_cookie( true );
|
|
}
|
|
break;
|
|
default: // 'standard'
|
|
if ( ! session_id() ) {
|
|
session_start();
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_session_set' ) ) {
|
|
/**
|
|
* wcj_session_set.
|
|
*
|
|
* @version 3.4.0
|
|
* @since 3.1.0
|
|
*/
|
|
function wcj_session_set( $key, $value ) {
|
|
switch ( WCJ_SESSION_TYPE ) {
|
|
case 'wc':
|
|
if ( function_exists( 'WC' ) && WC()->session ) {
|
|
WC()->session->set( $key, $value );
|
|
}
|
|
break;
|
|
default: // 'standard'
|
|
$_SESSION[ $key ] = $value;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_session_get' ) ) {
|
|
/**
|
|
* wcj_session_get.
|
|
*
|
|
* @version 3.4.0
|
|
* @since 3.1.0
|
|
*/
|
|
function wcj_session_get( $key, $default = null ) {
|
|
switch ( WCJ_SESSION_TYPE ) {
|
|
case 'wc':
|
|
return ( function_exists( 'WC' ) && WC()->session ? WC()->session->get( $key, $default ) : $default );
|
|
default: // 'standard'
|
|
return ( isset( $_SESSION[ $key ] ) ? $_SESSION[ $key ] : $default );
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_wrap_in_wc_email_template' ) ) {
|
|
/**
|
|
* wcj_wrap_in_wc_email_template.
|
|
*
|
|
* @version 3.1.0
|
|
* @since 3.1.0
|
|
*/
|
|
function wcj_wrap_in_wc_email_template( $content, $email_heading = '' ) {
|
|
return wcj_get_wc_email_part( 'header', $email_heading ) . $content . wcj_get_wc_email_part( 'footer' );
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_get_wc_email_part' ) ) {
|
|
/**
|
|
* wcj_get_wc_email_part.
|
|
*
|
|
* @version 3.1.0
|
|
* @since 3.1.0
|
|
*/
|
|
function wcj_get_wc_email_part( $part, $email_heading = '' ) {
|
|
ob_start();
|
|
switch ( $part ) {
|
|
case 'header':
|
|
wc_get_template( 'emails/email-header.php', array( 'email_heading' => $email_heading ) );
|
|
break;
|
|
case 'footer':
|
|
wc_get_template( 'emails/email-footer.php' );
|
|
break;
|
|
}
|
|
return ob_get_clean();
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_maybe_add_date_query' ) ) {
|
|
/**
|
|
* wcj_maybe_add_date_query.
|
|
*
|
|
* @version 3.0.0
|
|
* @since 3.0.0
|
|
*/
|
|
function wcj_maybe_add_date_query( $args ) {
|
|
if ( ( isset( $_GET['start_date'] ) && '' != $_GET['start_date'] ) || ( isset( $_GET['end_date'] ) && '' != $_GET['end_date'] ) ) {
|
|
$date_query = array();
|
|
$date_query['inclusive'] = true;
|
|
if ( isset( $_GET['start_date'] ) && '' != $_GET['start_date'] ) {
|
|
$date_query['after'] = $_GET['start_date'];
|
|
}
|
|
if ( isset( $_GET['end_date'] ) && '' != $_GET['end_date'] ) {
|
|
$date_query['before'] = $_GET['end_date'];
|
|
}
|
|
$args['date_query'] = array( $date_query );
|
|
}
|
|
return $args;
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_is_module_deprecated' ) ) {
|
|
/**
|
|
* wcj_is_module_deprecated.
|
|
*
|
|
* @version 2.9.0
|
|
* @since 2.9.0
|
|
* @return array|false
|
|
*/
|
|
function wcj_is_module_deprecated( $module_id, $by_module_option = false, $check_for_disabled = false ) {
|
|
if ( $check_for_disabled ) {
|
|
$module_option = ( $by_module_option ? $module_id : 'wcj_' . $module_id . '_enabled' );
|
|
if ( 'yes' === get_option( $module_option, 'no' ) ) {
|
|
return false;
|
|
}
|
|
}
|
|
if ( $by_module_option ) {
|
|
$module_id = str_replace( array( 'wcj_', '_enabled' ), '', $module_id );
|
|
}
|
|
$deprecated_and_replacement_modules = array(
|
|
'product_info' => array(
|
|
'cat' => 'products',
|
|
'module' => 'product_custom_info',
|
|
'title' => __( 'Product Info', 'woocommerce-jetpack' ),
|
|
),
|
|
);
|
|
if ( ! array_key_exists( $module_id, $deprecated_and_replacement_modules ) ) {
|
|
return false;
|
|
} else {
|
|
return ( isset( $deprecated_and_replacement_modules[ $module_id ] ) ? $deprecated_and_replacement_modules[ $module_id ] : array() );
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_customer_get_country' ) ) {
|
|
/**
|
|
* wcj_customer_get_country.
|
|
*
|
|
* @version 2.8.0
|
|
* @since 2.8.0
|
|
* @todo (maybe) move to `wcj-functions-users.php`
|
|
*/
|
|
function wcj_customer_get_country() {
|
|
return ( WCJ_IS_WC_VERSION_BELOW_3 ? WC()->customer->get_country() : WC()->customer->get_billing_country() );
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_customer_get_country_state' ) ) {
|
|
/**
|
|
* wcj_customer_get_country_state.
|
|
*
|
|
* @version 3.5.0
|
|
* @since 3.5.0
|
|
* @todo (maybe) move to `wcj-functions-users.php`
|
|
*/
|
|
function wcj_customer_get_country_state() {
|
|
return ( WCJ_IS_WC_VERSION_BELOW_3 ? WC()->customer->get_state() : WC()->customer->get_billing_state() );
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_is_bot' ) ) {
|
|
/**
|
|
* wcj_is_bot.
|
|
*
|
|
* @version 2.5.7
|
|
* @since 2.5.6
|
|
*/
|
|
function wcj_is_bot() {
|
|
return ( isset( $_SERVER['HTTP_USER_AGENT'] ) && preg_match( '/Google-Structured-Data-Testing-Tool|bot|crawl|slurp|spider/i', $_SERVER['HTTP_USER_AGENT'] ) ) ? true : false;
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_add_files_upload_form_to_checkout_frontend' ) ) {
|
|
/**
|
|
* wcj_add_files_upload_form_to_checkout_frontend.
|
|
*
|
|
* @version 2.5.2
|
|
* @since 2.5.2
|
|
*/
|
|
function wcj_add_files_upload_form_to_checkout_frontend() {
|
|
WCJ()->modules['checkout_files_upload']->add_files_upload_form_to_checkout_frontend_all( true );
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_replace_values_in_template' ) ) {
|
|
/**
|
|
* wcj_replace_values_in_template.
|
|
*
|
|
* @version 3.1.0
|
|
* @since 3.1.0
|
|
*/
|
|
function wcj_replace_values_in_template( $values_to_replace, $template ) {
|
|
return str_replace( array_keys( $values_to_replace ), array_values( $values_to_replace ), $template );
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_variation_radio_button' ) ) {
|
|
/**
|
|
* wcj_variation_radio_button.
|
|
*
|
|
* @version 3.1.0
|
|
* @since 2.4.8
|
|
* @todo (maybe) check - maybe we can use `$variation['variation_description']` instead of `get_post_meta( $variation_id, '_variation_description', true )`
|
|
*/
|
|
function wcj_variation_radio_button( $_product, $variation ) {
|
|
$attributes_html = '';
|
|
$variation_attributes_display_values = array();
|
|
$is_checked = true;
|
|
foreach ( $variation['attributes'] as $attribute_full_name => $attribute_value ) {
|
|
$attributes_html .= ' ' . $attribute_full_name . '="' . $attribute_value . '"';
|
|
// Attribute name
|
|
$attribute_name = $attribute_full_name;
|
|
$prefix = 'attribute_';
|
|
if ( substr( $attribute_full_name, 0, strlen( $prefix ) ) === $prefix ) {
|
|
$attribute_name = substr( $attribute_full_name, strlen( $prefix ) );
|
|
}
|
|
// Checked
|
|
$checked = isset( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) ?
|
|
wc_clean( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) : $_product->get_variation_default_attribute( $attribute_name );
|
|
if ( $checked != $attribute_value ) {
|
|
$is_checked = false;
|
|
}
|
|
// Attribute value
|
|
$terms = get_terms( $attribute_name );
|
|
foreach ( $terms as $term ) {
|
|
if ( is_object( $term ) && isset( $term->slug ) && $term->slug === $attribute_value && isset( $term->name ) ) {
|
|
$attribute_value = $term->name;
|
|
}
|
|
}
|
|
// Display values
|
|
$variation_attributes_display_values[] = $attribute_value;
|
|
}
|
|
// Variation label
|
|
$variation_label = wcj_replace_values_in_template( array(
|
|
'%variation_title%' => implode( ', ', $variation_attributes_display_values ),
|
|
'%variation_price%' => wc_price( $variation['display_price'] ),
|
|
), get_option( 'wcj_add_to_cart_variable_as_radio_variation_label_template', '%variation_title% (%variation_price%)' ) );
|
|
// Variation ID and "is checked"
|
|
$variation_id = $variation['variation_id'];
|
|
$is_checked = checked( $is_checked, true, false );
|
|
// Final HTML
|
|
$html = '';
|
|
$html .= '<td class="wcj_variable_as_radio_input_td" style="' . get_option( 'wcj_add_to_cart_variable_as_radio_input_td_style', 'width:10%;' ) . '">';
|
|
$html .= '<input id="wcj_variation_' . $variation_id . '" name="wcj_variations" type="radio"' . $attributes_html . ' variation_id="' .
|
|
$variation_id . '"' . $is_checked . '>';
|
|
$html .= '</td>';
|
|
$html .= '<td class="wcj_variable_as_radio_label_td">';
|
|
$html .= '<label for="wcj_variation_' . $variation_id . '">';
|
|
$html .= $variation_label;
|
|
if ( '' != ( $variation_description = get_post_meta( $variation_id, '_variation_description', true ) ) ) {
|
|
$html .= wcj_replace_values_in_template( array(
|
|
'%variation_description%' => $variation_description,
|
|
), get_option( 'wcj_add_to_cart_variable_as_radio_variation_desc_template', '<br><small>%variation_description%</small>' ) );
|
|
}
|
|
$html .= '</label>';
|
|
$html .= '</td>';
|
|
echo $html;
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_current_filter_priority' ) ) {
|
|
/*
|
|
* wcj_current_filter_priority.
|
|
*
|
|
* @version 2.5.8
|
|
* @since 2.4.6
|
|
*/
|
|
function wcj_current_filter_priority() {
|
|
global $wp_filter;
|
|
$current_filter_data = $wp_filter[ current_filter() ];
|
|
if ( class_exists( 'WP_Hook' ) && is_a( $current_filter_data, 'WP_Hook' ) ) {
|
|
// since WordPress v4.7
|
|
return $current_filter_data->current_priority();
|
|
} else {
|
|
// before WordPress v4.7
|
|
return key( $current_filter_data );
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_maybe_implode' ) ) {
|
|
/*
|
|
* wcj_maybe_implode.
|
|
*
|
|
* @version 3.2.1
|
|
* @since 3.2.1
|
|
* @return string
|
|
*/
|
|
function wcj_maybe_implode( $value, $glue = ' ' ) {
|
|
if ( is_array( $value ) ) {
|
|
$value = implode( $glue, $value );
|
|
}
|
|
return $value;
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_maybe_unserialize_and_implode' ) ) {
|
|
/*
|
|
* wcj_maybe_unserialize_and_implode.
|
|
*
|
|
* @version 2.8.0
|
|
* @since 2.8.0
|
|
* @return string
|
|
* @todo `if ( ! is_array() )`
|
|
*/
|
|
function wcj_maybe_unserialize_and_implode( $value, $glue = ' ' ) {
|
|
if ( is_serialized( $value ) ) {
|
|
$value = unserialize( $value );
|
|
if ( is_array( $value ) ) {
|
|
$value = implode( $glue, $value );
|
|
}
|
|
}
|
|
return $value;
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_get_cart_filters' ) ) {
|
|
/*
|
|
* wcj_get_cart_filters()
|
|
*
|
|
* @version 2.4.4
|
|
* @since 2.4.4
|
|
* @return array
|
|
*/
|
|
function wcj_get_cart_filters() {
|
|
return array(
|
|
'woocommerce_before_cart' => __( 'Before cart', 'woocommerce-jetpack' ),
|
|
'woocommerce_before_cart_table' => __( 'Before cart table', 'woocommerce-jetpack' ),
|
|
'woocommerce_before_cart_contents' => __( 'Before cart contents', 'woocommerce-jetpack' ),
|
|
'woocommerce_cart_contents' => __( 'Cart contents', 'woocommerce-jetpack' ),
|
|
'woocommerce_cart_coupon' => __( 'Cart coupon', 'woocommerce-jetpack' ),
|
|
'woocommerce_cart_actions' => __( 'Cart actions', 'woocommerce-jetpack' ),
|
|
'woocommerce_after_cart_contents' => __( 'After cart contents', 'woocommerce-jetpack' ),
|
|
'woocommerce_after_cart_table' => __( 'After cart table', 'woocommerce-jetpack' ),
|
|
'woocommerce_cart_collaterals' => __( 'Cart collaterals', 'woocommerce-jetpack' ),
|
|
'woocommerce_after_cart' => __( 'After cart', 'woocommerce-jetpack' ),
|
|
|
|
'woocommerce_before_cart_totals' => __( 'Before cart totals', 'woocommerce-jetpack' ),
|
|
'woocommerce_cart_totals_before_shipping' => __( 'Cart totals: Before shipping', 'woocommerce-jetpack' ),
|
|
'woocommerce_cart_totals_after_shipping' => __( 'Cart totals: After shipping', 'woocommerce-jetpack' ),
|
|
'woocommerce_cart_totals_before_order_total' => __( 'Cart totals: Before order total', 'woocommerce-jetpack' ),
|
|
'woocommerce_cart_totals_after_order_total' => __( 'Cart totals: After order total', 'woocommerce-jetpack' ),
|
|
'woocommerce_proceed_to_checkout' => __( 'Proceed to checkout', 'woocommerce-jetpack' ),
|
|
'woocommerce_after_cart_totals' => __( 'After cart totals', 'woocommerce-jetpack' ),
|
|
|
|
'woocommerce_before_shipping_calculator' => __( 'Before shipping calculator', 'woocommerce-jetpack' ),
|
|
'woocommerce_after_shipping_calculator' => __( 'After shipping calculator', 'woocommerce-jetpack' ),
|
|
|
|
'woocommerce_cart_is_empty' => __( 'If cart is empty', 'woocommerce-jetpack' ),
|
|
);
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_get_rates_for_tax_class' ) ) {
|
|
/* Used by admin settings page.
|
|
*
|
|
* @param string $tax_class
|
|
*
|
|
* @return array|null|object
|
|
*
|
|
* @version 2.3.10
|
|
* @since 2.3.10
|
|
*/
|
|
function wcj_get_rates_for_tax_class( $tax_class ) {
|
|
global $wpdb;
|
|
|
|
// Get all the rates and locations. Snagging all at once should significantly cut down on the number of queries.
|
|
$rates = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM `{$wpdb->prefix}woocommerce_tax_rates` WHERE `tax_rate_class` = %s ORDER BY `tax_rate_order`;", sanitize_title( $tax_class ) ) );
|
|
$locations = $wpdb->get_results( "SELECT * FROM `{$wpdb->prefix}woocommerce_tax_rate_locations`" );
|
|
|
|
// Set the rates keys equal to their ids.
|
|
$rates = array_combine( wp_list_pluck( $rates, 'tax_rate_id' ), $rates );
|
|
|
|
// Drop the locations into the rates array.
|
|
foreach ( $locations as $location ) {
|
|
// Don't set them for unexistent rates.
|
|
if ( ! isset( $rates[ $location->tax_rate_id ] ) ) {
|
|
continue;
|
|
}
|
|
// If the rate exists, initialize the array before appending to it.
|
|
if ( ! isset( $rates[ $location->tax_rate_id ]->{$location->location_type} ) ) {
|
|
$rates[ $location->tax_rate_id ]->{$location->location_type} = array();
|
|
}
|
|
$rates[ $location->tax_rate_id ]->{$location->location_type}[] = $location->location_code;
|
|
}
|
|
|
|
return $rates;
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_get_select_options' ) ) {
|
|
/*
|
|
* wcj_get_select_options()
|
|
*
|
|
* @version 3.6.0
|
|
* @since 2.3.0
|
|
* @return array
|
|
*/
|
|
function wcj_get_select_options( $select_options_raw, $do_sanitize = true ) {
|
|
if ( '' === $select_options_raw ) {
|
|
return array();
|
|
}
|
|
$select_options_raw = array_map( 'trim', explode( PHP_EOL, $select_options_raw ) );
|
|
$select_options = array();
|
|
foreach ( $select_options_raw as $select_options_title ) {
|
|
$select_options_key = ( $do_sanitize ) ? sanitize_title( $select_options_title ) : $select_options_title;
|
|
$select_options[ $select_options_key ] = $select_options_title;
|
|
}
|
|
return $select_options;
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_is_frontend' ) ) {
|
|
/*
|
|
* is_frontend()
|
|
*
|
|
* @since 2.2.6
|
|
* @return boolean
|
|
*/
|
|
function wcj_is_frontend() {
|
|
return ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) );
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_get_wcj_uploads_dir' ) ) {
|
|
/**
|
|
* wcj_get_wcj_uploads_dir.
|
|
*
|
|
* @version 2.9.0
|
|
* @todo no need to `mkdir` after `wcj_get_wcj_uploads_dir`
|
|
*/
|
|
function wcj_get_wcj_uploads_dir( $subdir = '' ) {
|
|
$upload_dir = wp_upload_dir();
|
|
$upload_dir = $upload_dir['basedir'];
|
|
$upload_dir = $upload_dir . '/woocommerce_uploads';
|
|
if ( ! file_exists( $upload_dir ) ) {
|
|
mkdir( $upload_dir, 0755, true );
|
|
}
|
|
$upload_dir = $upload_dir . '/wcj_uploads';
|
|
if ( ! file_exists( $upload_dir ) ) {
|
|
mkdir( $upload_dir, 0755, true );
|
|
}
|
|
if ( '' != $subdir ) {
|
|
$upload_dir = $upload_dir . '/' . $subdir;
|
|
if ( ! file_exists( $upload_dir ) ) {
|
|
mkdir( $upload_dir, 0755, true );
|
|
}
|
|
}
|
|
return $upload_dir;
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_hex2rgb' ) ) {
|
|
/**
|
|
* wcj_hex2rgb.
|
|
*/
|
|
function wcj_hex2rgb( $hex ) {
|
|
return sscanf( $hex, "#%2x%2x%2x" );
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_get_the_ip' ) ) {
|
|
/**
|
|
* wcj_get_the_ip.
|
|
*
|
|
* @see http://stackoverflow.com/questions/3003145/how-to-get-the-client-ip-address-in-php
|
|
*/
|
|
function wcj_get_the_ip( ) {
|
|
$ip = null;
|
|
if ( ! empty( $_SERVER['HTTP_CLIENT_IP'] ) ) {
|
|
$ip = $_SERVER['HTTP_CLIENT_IP'];
|
|
} elseif ( ! empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
|
|
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
|
} else {
|
|
$ip = $_SERVER['REMOTE_ADDR'];
|
|
}
|
|
return $ip;
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'wcj_get_shortcodes_list' ) ) {
|
|
/**
|
|
* wcj_get_shortcodes_list.
|
|
*/
|
|
function wcj_get_shortcodes_list() {
|
|
$the_array = apply_filters( 'wcj_shortcodes_list', array() );
|
|
return implode( ', ', $the_array )/* . ' (' . count( $the_array ) . ')' */;
|
|
}
|
|
}
|