prepare( "SELECT meta_value FROM {$wpdb->postmeta} WHERE post_id = %d AND meta_key = %s", $object_id, $meta_key );
$metas = $wpdb->get_col( $query );
if ( ! empty( $metas ) ) {
return array_map( 'maybe_unserialize', $metas );
}
if ( $single ) {
return '';
} else {
return array();
}
}
/**
* Save decorated order id.
* usces_action_reg_orderdata
*
* @param array $args {
* The array of order-related data.
* @type array $cart Cart data.
* @type array $entry Entry data.
* @type int $order_id Order ID.
* @type int $member_id Member ID.
* @type array $payments Payment Method.
* @type array $charging_type Charge type.
* @type array $results Settlement result data.
* }
*/
function usces_action_reg_orderdata( $args ) {
global $usces;
extract( $args );
$options = get_option( 'usces', array() );
$prefix = $options['system']['dec_orderID_prefix'] ?? '';
$prefix = apply_filters( 'usces_filter_dec_order_id_prefix', $prefix, $args );
$dec_order_id = usces_make_deco_order_id( $order_id );
$dec_order_id = apply_filters( 'usces_filter_dec_order_id', $dec_order_id, $args );
$dec_order_id = $prefix . $dec_order_id;
$usces->set_order_meta_value( 'dec_order_id', $dec_order_id, $order_id );
}
/**
* Inventory (stock) adjustment.
* usces_action_reg_orderdata
*
* @param array $args {
* The array of order-related data.
* @type array $cart Cart data.
* @type array $entry Entry data.
* @type int $order_id Order ID.
* @type int $member_id Member ID.
* @type array $payments Payment Method.
* @type array $charging_type Charge type.
* @type array $results Settlement result data.
* }
*/
function usces_action_reg_orderdata_stocks( $args ) {
global $usces;
extract( $args );
foreach ( $cart as $cartrow ) {
$item_order_acceptable = (int) $usces->getItemOrderAcceptable( $cartrow['post_id'], false );
$sku = urldecode( $cartrow['sku'] );
$zaikonum = $usces->getItemZaikoNum( $cartrow['post_id'], $sku, false );
if ( WCUtils::is_blank( $zaikonum ) ) {
continue;
}
$zaikonum = (int) $zaikonum - (int) $cartrow['quantity'];
if ( 1 !== $item_order_acceptable ) {
if ( $zaikonum < 0 ) {
$zaikonum = 0;
}
}
$usces->updateItemZaikoNum( $cartrow['post_id'], $sku, $zaikonum );
if ( 1 !== $item_order_acceptable ) {
if ( $zaikonum <= 0 ) {
$default_empty_status = apply_filters( 'usces_filter_default_empty_status', 2 );
$usces->updateItemZaiko( $cartrow['post_id'], $sku, $default_empty_status );
do_action( 'usces_action_outofstock', $cartrow['post_id'], $sku, $cartrow, $args );
}
}
}
}
/**
* Add security headers (member, cart).
* send_headers
*
* @return void
*/
function usces_add_security_headers() {
global $usces;
if ( is_customize_preview() ) {
return;
}
$request_uri = esc_url_raw( wp_unslash( $_SERVER['REQUEST_URI'] ?? '' ) );
if ( $usces->is_member_page( $request_uri ) || $usces->is_cart_page( $request_uri ) ) {
header( 'X-Frame-Options: DENY' );
header( "Content-Security-Policy: frame-ancestors 'none'" );
}
}
/**
* OGP meta.
* wp_head
*/
function usces_action_ogp_meta() {
global $usces, $post;
if ( empty( $post ) || ! $usces->is_item( $post ) || ! is_single() ) {
return;
}
$item = wel_get_product( $post->ID );
$pictid = $usces->get_mainpictid( $item['itemCode'] );
$image_info = wp_get_attachment_image_src( $pictid, 'thumbnail' );
$ogs['title'] = $item['itemName'];
$ogs['type'] = 'product';
$ogs['description'] = strip_tags( get_the_title( $post->ID ) );
$ogs['url'] = get_permalink( $post->ID );
$ogs['image'] = ( isset( $image_info[0] ) ) ? $image_info[0] : '';
$ogs['site_name'] = get_option( 'blogname' );
$ogs = apply_filters( 'usces_filter_ogp_meta', $ogs, $post->ID );
foreach ( $ogs as $key => $value ) {
echo "\n" . '';
}
}
/**
* 構造化データのJSON出力.
* wp_head
*/
function usces_action_structured_data_json() {
global $post, $usces;
if ( 0 === USCES_STRUCTURED_DATA_PRODUCT::$opts['status'] || empty( $post ) ) {
return;
}
global $post, $usces;
if ( empty( $post ) || ! $usces->is_item( $post ) ) {
return;
}
$product = wel_get_product( $post->ID );
if ( is_admin() || ! is_single() || ! $product['itemCode'] ) {
return;
}
$itemname = $product['itemName'];
$skus = $product['_sku'];
$target_sku = null;
$structuredDataSkuCode = $product['structuredDataSku'];
$patch_skus = array();
foreach ( $skus as $sku ) {
// 廃盤は削除.
if ( 4 === (int) $usces->getItemZaikoStatusId( $post->ID, $sku['code'] ) ) {
continue;
}
// 特定のSKUがあればそれを対象とする.
if ( $structuredDataSkuCode === $sku['code'] ) {
$target_sku = $sku;
}
$patch_skus[] = $sku;
}
if ( null === $target_sku ) {
foreach ( $patch_skus as $sku ) {
// 1番目のSKU.
if ( 'first' === USCES_STRUCTURED_DATA_PRODUCT::$opts['default_price'] ) {
$target_sku = $sku;
break;
}
// 1番安価のSKU.
if ( 'minimum' === USCES_STRUCTURED_DATA_PRODUCT::$opts['default_price'] ) {
if ( $target_sku && (int) $target_sku['price'] <= (int) $sku['price'] ) {
continue;
}
$target_sku = $sku;
} else {
if ( $target_sku && (int) $target_sku['price'] >= (int) $sku['price'] ) { // 1番高価のSKU.
continue;
}
$target_sku = $sku;
}
}
}
if ( empty( $target_sku ) ) {
return;
}
$target_sku['availability'] = $usces->is_item_zaiko( $post->ID, $sku['code'] ) ? 'https://schema.org/InStock' : 'https://schema.org/SoldOut';
$url = get_the_permalink();
$image = usces_the_itemImageURL( 0, 'return' );
$description = function_exists( 'get_field' ) ? get_field( 'field_rich_result_product_description' ) : '';
$stock = usces_have_zaiko_anyone( $post->ID ) ? 'https://schema.org/InStock' : 'https://schema.org/SoldOut';
$cr = $usces->options['system']['currency'];
if ( isset( $usces_settings['currency'][ $cr ] ) ) {
list( $code, $decimal, $point, $seperator, $symbol ) = $usces_settings['currency'][ $cr ];
} else {
$code = 'JPY';
}
$data = array(
'@context' => 'https://schema.org/',
'@type' => 'Product',
'name' => $itemname,
'image' => $image,
'description' => $description,
'productID' => $product['itemCode'],
'offers' => [
'@type' => 'Offer',
'sku' => $product['itemCode'] . '-' . $target_sku['code'],
'priceCurrency' => $code,
'price' => $target_sku['price'],
'availability' => $target_sku['availability'],
],
);
$script = json_encode( apply_filters( 'usces_filter_structured_data', $data, $post ) );
echo "\n" . '';
}
/**
* 特定のSKUデータを構造化データのに利用するためのフォーム.
* usces_item_master_first_section
*
* @param string $html First section area.
* @param int $post_ID Post Id.
*/
function usces_item_master_structured_data( $html, $post_ID ) {
if ( 1 === USCES_STRUCTURED_DATA_PRODUCT::$opts['status'] ) {
$product = wel_get_product( $post_ID );
$structuredDataSku = ( isset( $product['structuredDataSku'] ) ) ? $product['structuredDataSku'] : '';
?>
|
|
options['logs_path'] ) && false !== strpos( $_SERVER['SERVER_SOFTWARE'], 'Apache' ) ) {
$welcart_file_dir = $usces->options['logs_path'] . '/welcart';
$logs_dir = $welcart_file_dir . '/logs';
if ( ! file_exists( $welcart_file_dir ) ) {
$res = @mkdir( $welcart_file_dir, 0700 );
if ( ! $res ) {
$msg = '下記のディレクトリーを、所有者:' . get_current_user() . '、パーミッション:700 で作成してください。
' . $welcart_file_dir . '
';
add_action(
'admin_notices',
function() {
echo addcslashes( $msg, '"' );
}
);
}
}
$stat = stat( $welcart_file_dir );
print_r( $stat );
}
}
/**
* Save the oreder cart data.
* usces_action_reg_orderdata
*
* @param array $args {
* The array of order-related data.
* @type array $cart Cart data.
* @type array $entry Entry data.
* @type int $order_id Order ID.
* @type int $member_id Member ID.
* @type array $payments Payment Method.
* @type array $charging_type Charge type.
* @type array $results Settlement result data.
* }
*/
function usces_reg_ordercartdata( $args ) {
global $usces, $wpdb, $usces_settings;
extract( $args );
if ( ! $order_id ) {
return;
}
$cart_table = $wpdb->prefix . 'usces_ordercart';
$cart_meta_table = $wpdb->prefix . 'usces_ordercart_meta';
foreach ( $cart as $row_index => $value ) {
$post_id = (int) $value['post_id'];
$product = wel_get_product( $post_id, false );
$item_code = $product['itemCode'];
$item_name = $product['itemName'];
$skus = $usces->get_skus( $value['post_id'], 'code', false );
$sku_encoded = $value['sku'];
$skucode = urldecode( $value['sku'] );
$sku = $skus[ $skucode ];
$tax = 0;
$wpdb->query(
$wpdb->prepare(
"INSERT INTO {$cart_table}
(order_id, row_index, post_id, item_code, item_name, sku_code, sku_name, cprice, price, quantity,
unit, tax, destination_id, cart_serial )
VALUES (%d, %d, %d, %s, %s, %s, %s, %f, %f, %f, %s, %d, %d, %s)",
$order_id,
$row_index,
$post_id,
$item_code,
$item_name,
$skucode,
$sku['name'],
$sku['cprice'],
$value['price'],
$value['quantity'],
$sku['unit'],
$tax,
null,
$value['serial']
)
);
$cart_id = $wpdb->insert_id;
$opt_fields = wel_get_opts( $post_id, 'sort', false );
if ( $value['options'] ) {
foreach ( (array) $opt_fields as $okey => $val ) {
$enc_key = urlencode( $val['name'] );
$means = $opt_fields[ $okey ]['means'];
if ( 3 === (int) $means ) {
if ( '' == $value['options'][ $enc_key ] ) {
$ovalue = $value['options'][ $enc_key ];
} else {
$ovalue = urldecode( $value['options'][ $enc_key ] );
}
} elseif ( 4 === (int) $means ) {
if ( is_array( $value['options'][ $enc_key ] ) ) {
$temp = array();
foreach ( $value['options'][ $enc_key ] as $v ) {
$temp[] = urldecode( $v );
}
$ovalue = serialize( $temp );
} elseif ( '' == $value['options'][ $enc_key ] ) {
$ovalue = $value['options'][ $enc_key ];
} else {
$ovalue = urldecode( $value['options'][ $enc_key ] );
}
} else {
if ( is_array( $value['options'][ $enc_key ] ) ) {
$temp = array();
foreach ( $value['options'][ $enc_key ] as $k => $v ) {
$temp[ $k ] = urldecode( $v );
}
$ovalue = serialize( $temp );
} else {
$ovalue = urldecode( $value['options'][ $enc_key ] );
}
}
$ovalue = wel_safe_text_serialize( $ovalue );
$wpdb->query(
$wpdb->prepare(
"INSERT INTO {$cart_meta_table}
( cart_id, meta_type, meta_key, meta_value ) VALUES (%d, %s, %s, %s)",
$cart_id,
'option',
$val['name'],
$ovalue
)
);
}
}
if ( $value['advance'] ) {
foreach ( (array) $value['advance'] as $akey => $avalue ) {
$advance = $usces->cart->wc_unserialize( $avalue );
if ( is_array( $advance ) ) {
if ( isset( $advance[ $post_id ][ $sku_encoded ] ) && is_array( $advance[ $post_id ][ $sku_encoded ] ) ) {
$akeys = array_keys( $advance[ $post_id ][ $sku_encoded ] );
foreach ( (array) $akeys as $akey ) {
if ( is_array( $advance[ $post_id ][ $sku_encoded ][ $akey ] ) ) {
$avalue = serialize( $advance[ $post_id ][ $sku_encoded ][ $akey ] );
} else {
$avalue = $advance[ $post_id ][ $sku_encoded ][ $akey ];
}
$wpdb->query(
$wpdb->prepare(
"INSERT INTO {$cart_meta_table}
( cart_id, meta_type, meta_key, meta_value ) VALUES ( %d, 'advance', %s, %s )",
$cart_id,
$akey,
$avalue
)
);
}
} else {
$akeys = array_keys( $advance );
$akey = empty( $akeys[0] ) ? 'advance' : $akeys[0];
$avalue = serialize( $advance );
$wpdb->query(
$wpdb->prepare(
"INSERT INTO {$cart_meta_table}
( cart_id, meta_type, meta_key, meta_value ) VALUES ( %d, 'advance', %s, %s )",
$cart_id,
$akey,
$avalue
)
);
}
} else {
$avalue = urldecode( $avalue );
$wpdb->query(
$wpdb->prepare(
"INSERT INTO {$cart_meta_table}
( cart_id, meta_type, meta_key, meta_value ) VALUES ( %d, 'advance', %s, %s )",
$cart_id,
$akey,
$avalue
)
);
}
}
}
if ( $usces->is_reduced_taxrate() ) {
if ( isset( $sku['taxrate'] ) && 'reduced' == $sku['taxrate'] ) {
$tkey = 'reduced';
$tvalue = $usces->options['tax_rate_reduced'];
} else {
$tkey = 'standard';
$tvalue = $usces->options['tax_rate'];
}
$wpdb->query(
$wpdb->prepare(
"INSERT INTO {$cart_meta_table}
( cart_id, meta_type, meta_key, meta_value ) VALUES ( %d, 'taxrate', %s, %s )",
$cart_id,
$tkey,
$tvalue
)
);
}
do_action( 'usces_action_reg_ordercart_row', $cart_id, $row_index, $value, $args );
}
}
/**
* Document title.
* pre_get_document_title
* wp_title
* alias fiter_mainTitle()
*
* @param string $title Document title.
* @param string $sep Separator.
* @return string
*/
function filter_mainTitle( $title, $sep = '' ) {
return fiter_mainTitle( $title, $sep );
}
/**
* Document title.
*
* @param string $title Document title.
* @param string $sep Separator.
* @return string
*/
function fiter_mainTitle( $title, $sep = '' ) {
global $usces;
if ( empty( $sep ) ) {
$sep = apply_filters( 'document_title_separator', '|' );
}
switch ( $usces->page ) {
case 'cart':
$newtitle = apply_filters( 'usces_filter_title_cart', __( 'In the cart', 'usces' ) ) . ' ' . $sep . ' ' . get_bloginfo( 'name' );
break;
case 'customer':
$newtitle = apply_filters( 'usces_filter_title_customer', __( 'Customer Information', 'usces' ) ) . ' ' . $sep . ' ' . get_bloginfo( 'name' );
break;
case 'delivery':
$newtitle = apply_filters( 'usces_filter_title_delivery', __( 'Shipping / Payment options', 'usces' ) ) . ' ' . $sep . ' ' . get_bloginfo( 'name' );
break;
case 'confirm':
$newtitle = apply_filters( 'usces_filter_title_confirm', __( 'Confirmation', 'usces' ) ) . ' ' . $sep . ' ' . get_bloginfo( 'name' );
break;
case 'ordercompletion':
$newtitle = apply_filters( 'usces_filter_title_ordercompletion', __( 'Order Complete', 'usces' ) ) . ' ' . $sep . ' ' . get_bloginfo( 'name' );
break;
case 'error':
$newtitle = apply_filters( 'usces_filter_title_error', __( 'Error', 'usces' ) ) . ' ' . $sep . ' ' . get_bloginfo( 'name' ); // new fitler name.
break;
case 'search_item':
$newtitle = apply_filters( 'usces_filter_title_search_item', __( "'AND' search by categories", 'usces' ) ) . ' ' . $sep . ' ' . get_bloginfo( 'name' );
break;
case 'maintenance':
$newtitle = apply_filters( 'usces_filter_title_maintenance', __( 'Under Maintenance', 'usces' ) ) . ' ' . $sep . ' ' . get_bloginfo( 'name' );
break;
case 'login':
$newtitle = apply_filters( 'usces_filter_title_login', __( 'Log-in for members', 'usces' ) ) . ' ' . $sep . ' ' . get_bloginfo( 'name' );
break;
case 'member':
$newtitle = apply_filters( 'usces_filter_title_member', __( 'Membership information', 'usces' ) ) . ' ' . $sep . ' ' . get_bloginfo( 'name' );
break;
case 'newmemberform':
$newtitle = apply_filters( 'usces_filter_title_newmemberform', __( 'New enrollment form', 'usces' ) ) . ' ' . $sep . ' ' . get_bloginfo( 'name' );
break;
case 'newcompletion':
$newtitle = apply_filters( 'usces_filter_title_newcompletion', __( 'New enrollment complete', 'usces' ) ) . ' ' . $sep . ' ' . get_bloginfo( 'name' ); // new fitler name.
break;
case 'editmemberform':
$newtitle = apply_filters( 'usces_filter_title_editmemberform', __( 'Member information editing', 'usces' ) ) . ' ' . $sep . ' ' . get_bloginfo( 'name' ); // new fitler name.
break;
case 'editcompletion':
$newtitle = apply_filters( 'usces_filter_title_editcompletion', __( 'Membership information change is completed', 'usces' ) ) . ' ' . $sep . ' ' . get_bloginfo( 'name' ); // new fitler name.
break;
case 'lostmemberpassword':
$newtitle = apply_filters( 'usces_filter_title_lostmemberpassword', __( 'The new password acquisition', 'usces' ) ) . ' ' . $sep . ' ' . get_bloginfo( 'name' );
break;
case 'lostcompletion':
$newtitle = apply_filters( 'usces_filter_title_lostcompletion', __( 'New password procedures for obtaining complete', 'usces' ) ) . ' ' . $sep . ' ' . get_bloginfo( 'name' ); // new fitler name.
break;
case 'changepassword':
$newtitle = apply_filters( 'usces_filter_title_changepassword', __( 'Change password', 'usces' ) ) . ' ' . $sep . ' ' . get_bloginfo( 'name' );
break;
case 'changepasscompletion':
$newtitle = apply_filters( 'usces_filter_title_changepasscompletion', __( 'Password change is completed', 'usces' ) ) . ' ' . $sep . ' ' . get_bloginfo( 'name' );
break;
default:
$newtitle = $title;
}
return $newtitle;
}
/**
* Separator
* document_title_separator
*
* @param string $sep Separator.
* @return string
*/
function usces_document_title_separator( $sep ) {
$sep = '|';
return $sep;
}
/**
* Univarsal Analytics( Dashboard )
*
* @return array
*/
function usces_Universal_trackPageview() {
global $usces;
$push = array();
switch ( $usces->page ) {
case 'cart':
$push[] = "'page' : '/wc_cart'";
break;
case 'customer':
$push[] = "'page' : '/wc_customer'";
break;
case 'delivery':
$push[] = "'page' : '/wc_delivery'";
break;
case 'confirm':
$push[] = "'page' : '/wc_confirm'";
break;
case 'ordercompletion':
$push[] = "'page' : '/wc_ordercompletion'";
$sesdata = $usces->cart->get_entry();
if ( isset( $sesdata['order']['ID'] ) && ! empty( $sesdata['order']['ID'] ) ) {
$order_id = $sesdata['order']['ID'];
$data = $usces->get_order_data( $order_id, 'direct' );
$cart = unserialize( $data['order_cart'] );
$total_price = $usces->get_total_price( $cart ) + $data['order_discount'] - $data['order_usedpoint'];
if ( $total_price < 0 ) {
$total_price = 0;
}
$push[] = "'require', 'ecommerce', 'ecommerce.js'";
$push[] = "'ecommerce:addTransaction', {
id: '" . $order_id . "',
affiliation: '" . esc_js( get_option( 'blogname' ) ) . "',
revenue: '" . $total_price . "',
shipping: '" . $data['order_shipping_charge'] . "',
tax: '" . $data['order_tax'] . "' }";
$cart_count = ( $cart && is_array( $cart ) ) ? count( $cart ) : 0;
for ( $i = 0; $i < $cart_count; $i++ ) {
$cart_row = $cart[ $i ];
$post_id = $cart_row['post_id'];
$sku = urldecode( $cart_row['sku'] );
$quantity = $cart_row['quantity'];
$itemname = $usces->getItemName( $post_id );
$skuprice = $cart_row['price'];
$cats = $usces->get_item_cat_genre_ids( $post_id );
if ( is_array( $cats ) ) {
sort( $cats );
}
$category = ( isset( $cats[0] ) ) ? get_cat_name( $cats[0] ) : '';
$push[] = "'ecommerce:addItem', {
id: '" . $order_id . "',
sku: '" . esc_js( $sku ) . "',
name: '" . esc_js( $itemname ) . "',
category: '" . esc_js( $category ) . "',
price: '" . $skuprice . "',
quantity: '" . $quantity . "' }";
}
$push[] = "'ecommerce:send'";
}
break;
case 'error':
$push[] = "'page' : '/wc_error'";
break;
case 'search_item':
$push[] = "'page' : '/wc_search_item'";
break;
case 'maintenance':
$push[] = "'page' : '/wc_maintenance'";
break;
case 'login':
$push[] = "'page' : '/wc_login'";
break;
case 'member':
$push[] = "'page' : '/wc_member'";
break;
case 'newmemberform':
$push[] = "'page' : '/wc_newmemberform'";
break;
case 'newcompletion':
$push[] = "'page' : '/wc_newcompletion'";
break;
case 'editmemberform':
$push[] = "'page' : '/wc_editmemberform'";
break;
case 'editcompletion':
$push[] = "'page' : '/wc_editcompletion'";
break;
case 'lostmemberpassword':
$push[] = "'page' : '/wc_lostmemberpassword'";
break;
case 'lostcompletion':
$push[] = "'page' : '/wc_lostcompletion'";
break;
case 'changepassword':
$push[] = "'page' : '/wc_changepassword'";
break;
case 'changepasscompletion':
$push[] = "'page' : '/wc_changepasscompletion'";
break;
default:
break;
}
return $push;
}
/**
* Classic Analytics ( Dashboard )
*
* @return array
*/
function usces_Classic_trackPageview() {
global $usces;
$push = array();
switch ( $usces->page ) {
case 'cart':
$push = usces_trackPageview_cart( $push );
break;
case 'customer':
$push = usces_trackPageview_customer( $push );
break;
case 'delivery':
$push = usces_trackPageview_delivery( $push );
break;
case 'confirm':
$push = usces_trackPageview_confirm( $push );
break;
case 'ordercompletion':
$push = usces_trackPageview_ordercompletion( $push );
break;
case 'error':
$push = usces_trackPageview_error( $push );
break;
case 'login':
$push = usces_trackPageview_login( $push );
break;
case 'member':
$push = usces_trackPageview_member( $push );
break;
case 'newmemberform':
$push = usces_trackPageview_newmemberform( $push );
break;
case 'newcompletion':
$push = usces_trackPageview_newcompletion( $push );
break;
case 'editmemberform':
$push = usces_trackPageview_editmemberform( $push );
break;
case 'search_item':
$push = usces_trackPageview_search_item( $push );
break;
case 'maintenance':
case 'editcompletion':
case 'lostmemberpassword':
case 'lostcompletion':
case 'changepassword':
case 'changepasscompletion':
default:
break;
}
return $push;
}
/**
* Univarsal Analytics( Yoast )
* monsterinsights_frontend_tracking_options_analytics_end
* yoast-ga-push-array-universal
*
* @param array $push Push array.
* @return array
*/
function usces_Universal_trackPageview_by_Yoast( $push ) {
global $usces;
foreach ( $push as $p_key => $p_val ) {
$pos1 = strpos( (string) $p_val, "'send'" );
$pos2 = strpos( (string) $p_val, "'pageview'" );
if ( false !== $pos1 && false !== $pos2 ) {
unset( $push[ $p_key ] );
}
}
switch ( $usces->page ) {
case 'cart':
$push[] = "'send', 'pageview', {'page' : '/wc_cart'}";
break;
case 'customer':
$push[] = "'send', 'pageview', {'page' : '/wc_customer'}";
break;
case 'delivery':
$push[] = "'send', 'pageview', {'page' : '/wc_delivery'}";
break;
case 'confirm':
$push[] = "'send', 'pageview', {'page' : '/wc_confirm'}";
break;
case 'ordercompletion':
$push[] = "'send', 'pageview', {'page' : '/wc_ordercompletion'}";
$sesdata = $usces->cart->get_entry();
if ( isset( $sesdata['order']['ID'] ) && ! empty( $sesdata['order']['ID'] ) ) {
$order_id = $sesdata['order']['ID'];
$data = $usces->get_order_data( $order_id, 'direct' );
$cart = unserialize( $data['order_cart'] );
$total_price = $usces->get_total_price( $cart ) + $data['order_discount'] - $data['order_usedpoint'];
if ( $total_price < 0 ) {
$total_price = 0;
}
$push[] = "'require', 'ecommerce', 'ecommerce.js'";
$push[] = "'ecommerce:addTransaction', {
id: '" . $order_id . "',
affiliation: '" . esc_js( get_option( 'blogname' ) ) . "',
revenue: '" . $total_price . "',
shipping: '" . $data['order_shipping_charge'] . "',
tax: '" . $data['order_tax'] . "'
}";
$cart_count = ( $cart && is_array( $cart ) ) ? count( $cart ) : 0;
for ( $i = 0; $i < $cart_count; $i++ ) {
$cart_row = $cart[ $i ];
$post_id = $cart_row['post_id'];
$sku = urldecode( $cart_row['sku'] );
$quantity = $cart_row['quantity'];
$itemname = $usces->getItemName( $post_id );
$skuprice = $cart_row['price'];
$cats = $usces->get_item_cat_genre_ids( $post_id );
if ( is_array( $cats ) ) {
sort( $cats );
}
$category = ( isset( $cats[0] ) ) ? get_cat_name( $cats[0] ) : '';
$push[] = "'ecommerce:addItem', {
id: '" . $order_id . "',
sku: '" . esc_js( $sku ) . "',
name: '" . esc_js( $itemname ) . "',
category: '" . esc_js( $category ) . "',
price: '" . $skuprice . "',
quantity: '" . $quantity . "'
}";
}
$push[] = "'ecommerce:send'";
}
break;
case 'error':
$push[] = "'send', 'pageview', {'page' : '/wc_error'}";
break;
case 'search_item':
$push[] = "'send', 'pageview', {'page' : '/wc_search_item'}";
break;
case 'maintenance':
$push[] = "'send', 'pageview', {'page' : '/wc_maintenance'}";
break;
case 'login':
$push[] = "'send', 'pageview', {'page' : '/wc_login'}";
break;
case 'member':
$push[] = "'send', 'pageview', {'page' : '/wc_member'}";
break;
case 'newmemberform':
$push[] = "'send', 'pageview', {'page' : '/wc_newmemberform'}";
break;
case 'newcompletion':
$push[] = "'send', 'pageview', {'page' : '/wc_newcompletion'}";
break;
case 'editmemberform':
$push[] = "'send', 'pageview', {'page' : '/wc_editmemberform'}";
break;
case 'editcompletion':
$push[] = "'send', 'pageview', {'page' : '/wc_editcompletion'}";
break;
case 'lostmemberpassword':
$push[] = "'send', 'pageview', {'page' : '/wc_lostmemberpassword'}";
break;
case 'lostcompletion':
$push[] = "'send', 'pageview', {'page' : '/wc_lostcompletion'}";
break;
case 'changepassword':
$push[] = "'send', 'pageview', {'page' : '/wc_changepassword'}";
break;
case 'changepasscompletion':
$push[] = "'send', 'pageview', {'page' : '/wc_changepasscompletion'}";
break;
default:
$push[] = "'send', 'pageview'";
break;
}
return $push;
}
/**
* Order completion tracking.
* wp_enqueue_scripts
* monsterinsights_frontend_tracking_gtag_after_pageview
*/
function usces_ecommerce_reporting() {
global $usces;
if ( 'ordercompletion' !== $usces->page ) {
return;
}
$sesdata = $usces->cart->get_entry();
if ( isset( $sesdata['order']['ID'] ) && ! empty( $sesdata['order']['ID'] ) ) {
$order_id = $sesdata['order']['ID'];
$data = $usces->get_order_data( $order_id, 'direct' );
$cart = unserialize( $data['order_cart'] );
$total_price = $usces->get_total_price( $cart ) + $data['order_discount'] - $data['order_usedpoint'];
if ( $total_price < 0 ) {
$total_price = 0;
}
$ecommerce_reporting = "__gtagTracker('event', 'purchase', {
transaction_id: '" . $order_id . "',
affiliation: '" . esc_js( get_option( 'blogname' ) ) . "',
value: '" . $total_price . "',
currency: '" . $usces->get_currency_code() . "',
tax: '" . $data['order_tax'] . "',
shipping: '" . $data['order_shipping_charge'] . "',
items: [";
$cart_count = ( $cart && is_array( $cart ) ) ? count( $cart ) : 0;
for ( $i = 0; $i < $cart_count; $i++ ) {
$cart_row = $cart[ $i ];
$post_id = $cart_row['post_id'];
$sku = urldecode( $cart_row['sku'] );
$quantity = $cart_row['quantity'];
$itemname = $usces->getItemName( $post_id );
$skuprice = $cart_row['price'];
$cats = $usces->get_item_cat_genre_ids( $post_id );
if ( is_array( $cats ) ) {
sort( $cats );
}
$category = ( isset( $cats[0] ) ) ? get_cat_name( $cats[0] ) : '';
$ecommerce_reporting .= "{
id: '" . $post_id . "',
sku: '" . esc_js( $sku ) . "',
name: '" . esc_js( $itemname ) . "',
category: '" . esc_js( $category ) . "',
price: '" . $skuprice . "',
quantity: '" . $quantity . "'
},";
}
$ecommerce_reporting .= "]});";
$monsterinsights_current_version = usces_MonsterInsights_get_version();
if ( version_compare( $monsterinsights_current_version, '8.0.0', '>=' ) ) {
wp_register_script( 'after-monsterinsights-frontend-script', '', array( 'monsterinsights-frontend-script' ) );
wp_enqueue_script( 'after-monsterinsights-frontend-script' );
wp_add_inline_script( 'after-monsterinsights-frontend-script', $ecommerce_reporting );
} else {
wel_esc_script_e( $ecommerce_reporting );
}
}
}
/**
* Universal trackPageview by monsterInsight.
* monsterinsights_frontend_tracking_options_gtag_end
*
* @param array $push Push array.
* @return array
*/
function usces_Universal_trackPageview_by_monsterInsight( $push ) {
global $usces;
$monsterinsights_current_version = usces_MonsterInsights_get_version();
if ( version_compare( $monsterinsights_current_version, '8.0.0', '>=' ) ) {
switch ( $usces->page ) {
case 'cart':
$push['page_path'] = 'wc_cart';
break;
case 'customer':
$push['page_path'] = 'wc_customer';
break;
case 'delivery':
$push['page_path'] = 'wc_delivery';
break;
case 'confirm':
$push['page_path'] = 'wc_confirm';
break;
case 'ordercompletion':
$push['page_path'] = 'wc_ordercompletion';
break;
case 'error':
$push['page_path'] = 'wc_error';
break;
case 'search_item':
$push['page_path'] = 'wc_search_item';
break;
case 'maintenance':
$push['page_path'] = 'wc_maintenance';
break;
case 'login':
$push['page_path'] = 'wc_login';
break;
case 'member':
$push['page_path'] = 'wc_member';
break;
case 'newmemberform':
$push['page_path'] = 'wc_newmemberform';
break;
case 'newcompletion':
$push['page_path'] = 'wc_newcompletion';
break;
case 'editmemberform':
$push['page_path'] = 'wc_editmemberform';
break;
case 'editcompletion':
$push['page_path'] = 'wc_editcompletion';
break;
case 'lostmemberpassword':
$push['page_path'] = 'wc_lostmemberpassword';
break;
case 'lostcompletion':
$push['page_path'] = 'wc_lostcompletion';
break;
case 'changepassword':
$push['page_path'] = 'wc_changepassword';
break;
case 'changepasscompletion':
$push['page_path'] = 'wc_changepasscompletion';
break;
default: // keep origin page path.
break;
}
} else {
switch ( $usces->page ) {
case 'cart':
$push['page_path'] = "'/wc_cart'";
break;
case 'customer':
$push['page_path'] = "'/wc_customer'";
break;
case 'delivery':
$push['page_path'] = "'/wc_delivery'";
break;
case 'confirm':
$push['page_path'] = "'/wc_confirm'";
break;
case 'ordercompletion':
$push['page_path'] = "'/wc_ordercompletion'";
break;
case 'error':
$push['page_path'] = "'/wc_error'";
break;
case 'search_item':
$push['page_path'] = "'/wc_search_item'";
break;
case 'maintenance':
$push['page_path'] = "'/wc_maintenance'";
break;
case 'login':
$push['page_path'] = "'/wc_login'";
break;
case 'member':
$push['page_path'] = "'/wc_member'";
break;
case 'newmemberform':
$push['page_path'] = "'/wc_newmemberform'";
break;
case 'newcompletion':
$push['page_path'] = "'/wc_newcompletion'";
break;
case 'editmemberform':
$push['page_path'] = "'/wc_editmemberform'";
break;
case 'editcompletion':
$push['page_path'] = "'/wc_editcompletion'";
break;
case 'lostmemberpassword':
$push['page_path'] = "'/wc_lostmemberpassword'";
break;
case 'lostcompletion':
$push['page_path'] = "'/wc_lostcompletion'";
break;
case 'changepassword':
$push['page_path'] = "'/wc_changepassword'";
break;
case 'changepasscompletion':
$push['page_path'] = "'/wc_changepasscompletion'";
break;
default: // keep origin page path.
break;
}
}
return $push;
}
/**
* Classic Analytics ( Yoast )
* yoast-ga-push-array-ga-js
*
* @param array $push Push array.
* @return array
*/
function usces_Classic_trackPageview_by_Yoast( $push ) {
global $usces;
foreach ( $push as $p_key => $p_val ) {
$pos1 = strpos( (string) $p_val, "'_trackPageview" );
if ( false !== $pos1 ) {
unset( $push[ $p_key ] );
}
}
switch ( $usces->page ) {
case 'cart':
$push[] = "'_trackPageview', '/wc_cart'";
break;
case 'customer':
$push[] = "'_trackPageview', '/wc_customer'";
break;
case 'delivery':
$push[] = "'_trackPageview', '/wc_delivery'";
break;
case 'confirm':
$push[] = "'_trackPageview', '/wc_confirm'";
break;
case 'ordercompletion':
global $usces;
$push[] = "'_trackPageview','/wc_ordercompletion'";
$sesdata = $usces->cart->get_entry();
if ( isset( $sesdata['order']['ID'] ) && ! empty( $sesdata['order']['ID'] ) ) {
$order_id = $sesdata['order']['ID'];
$data = $usces->get_order_data( $order_id, 'direct' );
$cart = unserialize( $data['order_cart'] );
$total_price = $usces->get_total_price( $cart ) + $data['order_discount'] - $data['order_usedpoint'];
if ( $total_price < 0 ) {
$total_price = 0;
}
$push[] = "'_addTrans', '" . $order_id . "', '" . esc_js( get_option( 'blogname' ) ) . "', '" . $total_price . "', '" . $data['order_tax'] . "', '" . $data['order_shipping_charge'] . "', '" . esc_js( $data['order_address1'] . $data['order_address2'] ) . "', '" . esc_js( $data['order_pref'] ) . "', '" . get_locale() . "'";
$cart_count = ( $cart && is_array( $cart ) ) ? count( $cart ) : 0;
for ( $i = 0; $i < $cart_count; $i++ ) {
$cart_row = $cart[ $i ];
$post_id = $cart_row['post_id'];
$sku = urldecode( $cart_row['sku'] );
$quantity = $cart_row['quantity'];
$itemname = $usces->getItemName( $post_id );
$skuprice = $cart_row['price'];
$cats = $usces->get_item_cat_genre_ids( $post_id );
if ( is_array( $cats ) ) {
sort( $cats );
}
$category = ( isset( $cats[0] ) ) ? get_cat_name( $cats[0] ) : '';
$push[] = "'_addItem', '" . $order_id . "', '" . esc_js( $sku ) . "', '" . esc_js( $itemname ) . "', '" . esc_js( $category ) . "', '" . $skuprice . "', '" . $quantity . "'";
}
$push[] = "'_trackTrans'";
}
break;
case 'error':
$push[] = "'_trackPageview', '/wc_error'";
break;
case 'login':
$push[] = "'_trackPageview', '/wc_login'";
break;
case 'member':
$push[] = "'_trackPageview', '/wc_member'";
break;
case 'newmemberform':
$push[] = "'_trackPageview', '/wc_newmemberform'";
break;
case 'newcompletion':
$push[] = "'_trackPageview', '/wc_newcompletion'";
break;
case 'editmemberform':
$push[] = "'_trackPageview', '/wc_editmemberform'";
break;
case 'search_item':
$push[] = "'_trackPageview', '/wc_search_item'";
break;
case 'maintenance':
$push[] = "'_trackPageview', '/wc_maintenance'";
break;
case 'editcompletion':
$push[] = "'_trackPageview', '/wc_editcompletion'";
break;
case 'lostmemberpassword':
$push[] = "'_trackPageview', '/wc_lostmemberpassword'";
break;
case 'lostcompletion':
$push[] = "'_trackPageview', '/wc_lostcompletion'";
break;
case 'changepassword':
$push[] = "'_trackPageview', '/wc_changepassword'";
break;
case 'changepasscompletion':
$push[] = "'_trackPageview', '/wc_changepasscompletion'";
break;
default:
$push[] = "'_trackPageview'";
break;
}
return $push;
}
/**
* Using MonsterInsights.
* plugins_loaded
*/
function usces_monsterinsights() {
$monsterinsights_current_version = usces_MonsterInsights_get_version();
if ( null !== $monsterinsights_current_version && version_compare( $monsterinsights_current_version, '6.0.11', '>' ) ) {
add_filter( 'monsterinsights_frontend_tracking_options_analytics_end', 'usces_Universal_trackPageview_by_Yoast' );
add_filter( 'monsterinsights_frontend_tracking_options_gtag_end', 'usces_Universal_trackPageview_by_monsterInsight' );
if ( version_compare( $monsterinsights_current_version, '8.0.0', '>=' ) ) {
add_action( 'wp_enqueue_scripts', 'usces_ecommerce_reporting', 10 );
} else {
add_action( 'monsterinsights_frontend_tracking_gtag_after_pageview', 'usces_ecommerce_reporting' );
}
} else {
add_filter( 'yoast-ga-push-array-universal', 'usces_Universal_trackPageview_by_Yoast' );
add_filter( 'yoast-ga-push-array-ga-js', 'usces_Classic_trackPageview_by_Yoast' );
}
}
/**
* Get version of MonsterInsights.
*
* @return string
*/
function usces_monsterinsights_get_version() {
if ( ! function_exists( 'MonsterInsights_Pro' ) && ! function_exists( 'MonsterInsights_Lite' ) ) {
return;
}
$instance = class_exists( 'MonsterInsights' ) ? MonsterInsights_Pro() : MonsterInsights_Lite();
return $instance->version;
}
/**
* Order memo area.
* usces_action_order_edit_form_detail_top
*
* @param array $data Order data.
* @param array $csod_meta Custom order data.
*/
function usces_order_memo_form_detail_top( $data, $csod_meta ) {
global $usces;
$order_memo = '';
if ( ! empty( $data['ID'] ) ) {
$order_memo = $usces->get_order_meta_value( 'order_memo', $data['ID'] );
}
$res = '
| ' . __( 'Administrator Note', 'usces' ) . ' |
|
';
wel_esc_script_e( $res );
}
/**
* Update order memo.
* usces_action_update_orderdata
*
* @param object $new_orderdata New order data.
*/
function usces_update_order_memo( $new_orderdata ) {
global $usces;
if ( isset( $_POST['order_memo'] ) ) {
$usces->set_order_meta_value( 'order_memo', $_POST['order_memo'], $new_orderdata->ID );
}
}
/**
* Save order memo.
* usces_action_reg_orderdata
*
* @param array $args {
* The array of order-related data.
* @type array $cart Cart data.
* @type array $entry Entry data.
* @type int $order_id Order ID.
* @type int $member_id Member ID.
* @type array $payments Payment Method.
* @type array $charging_type Charge type.
* @type array $results Settlement result data.
* }
*/
function usces_register_order_memo( $args ) {
global $usces;
extract( $args );
if ( isset( $_POST['order_memo'] ) && $order_id ) {
$usces->set_order_meta_value( 'order_memo', $_POST['order_memo'], $order_id );
}
}
/**
* Tracking number field area.
* usces_action_order_edit_form_delivery_block
*
* @param array $data Order data.
* @param array $cscs_meta Custom customer data.
* @param array $action_args Order action.
* @return void
*/
function usces_add_tracking_number_field( $data, $cscs_meta, $action_args ) {
global $usces;
$locale = get_locale();
$deli_comps = array( 'クロネコヤマト', 'ヤマト運輸', '佐川急便', '日本通運', 'ゆうパック', '日本郵便', '郵便書留', '西濃運輸', '福山通運', '名鉄運輸', '新潟運輸', 'トナミ運輸', '第一貨物', '飛騨倉庫運輸', '西武運輸', 'クリックポスト', 'トールエクスプレス', 'セイノーエクスプレス', '信州名鉄運輸', '大川配送サービス', 'その他' );
$deli_comps = apply_filters( 'usces_filter_deli_comps', $deli_comps, $data );
$tracking_number = '';
if ( ! empty( $data['ID'] ) ) {
$tracking_number = $usces->get_order_meta_value( apply_filters( 'usces_filter_tracking_meta_key', 'tracking_number' ), $data['ID'] );
$delivery_company = $usces->get_order_meta_value( 'delivery_company', $data['ID'] );
} else {
$tracking_number = '';
$delivery_company = '';
}
$res = '';
$res .= '
| ' . __( 'Delivery company', 'usces' ) . ' |
';
if ( 'ja' === $locale ) {
$res .= ' ' . "\n";
} else {
$res .= ' ';
}
$res .= ' |
';
$res .= '
| ' . __( 'Tracking number', 'usces' ) . ' |
|
' . "\n";
wel_esc_script_e( $res );
}
/**
* Update tracking number.
* usces_action_update_orderdata
*
* @param object $new_orderdata New order data.
*/
function usces_update_tracking_number( $new_orderdata ) {
global $usces;
if ( isset( $_POST['tracking_number'] ) ) {
$usces->set_order_meta_value( apply_filters( 'usces_filter_tracking_meta_key', 'tracking_number' ), wp_unslash( $_POST['tracking_number'] ), $new_orderdata->ID );
}
if ( isset( $_POST['delivery_company'] ) ) {
$usces->set_order_meta_value( 'delivery_company', wp_unslash( $_POST['delivery_company'] ), $new_orderdata->ID );
}
}
/**
* Admin scripts.
* admin_enqueue_scripts
*
* @param string $hook_suffix The current admin page.
*/
function usces_admin_enqueue_scripts( $hook_suffix ) {
global $wp_scripts;
if ( false !== strpos( $hook_suffix, 'usc-e-shop' )
|| false !== strpos( $hook_suffix, 'welcart' )
|| false !== strpos( $hook_suffix, 'usces' )
) {
$ui = $wp_scripts->query( 'jquery-ui-core' );
$ui_themes = apply_filters( 'usces_filter_jquery_ui_themes_welcart', 'smoothness' );
wp_enqueue_style( 'jquery-ui-welcart', "//code.jquery.com/ui/{$ui->ver}/themes/{$ui_themes}/jquery-ui.css" );
}
if ( 'welcart-management_page_usces_memberlist' == $hook_suffix
|| 'toplevel_page_usces_orderlist' == $hook_suffix
) {
$path = USCES_FRONT_PLUGIN_URL . '/js/jquery/jquery-cookie.js';
wp_enqueue_script( 'usces_member_cookie', $path, array( 'jquery' ), USCES_VERSION, true );
}
}
/**
* Cron schedules.
* cron_schedules
*
* @param array $schedules An array of non-default cron schedule arrays.
* @return array
*/
function usces_schedules_intervals( $schedules ) {
$schedules['weekly'] = array(
'interval' => 604800,
'display' => 'Weekly',
);
return $schedules;
}
/**
* Welcart activate.
* plugins_loaded
*/
function usces_responce_wcsite() {
$my_wcid = get_option( 'usces_wcid' );
if ( isset( $_POST['sname'] ) && isset( $_POST['wcid'] ) && '54.64.221.23' == $_SERVER['REMOTE_ADDR'] ) {
$data['usces'] = get_option( 'usces', array() );
$data['usces_settlement_selected'] = get_option( 'usces_settlement_selected', array() );
$res = json_encode( $data );
header( 'Content-Type: application/json' );
wel_esc_script_e( $res );
exit;
}
}
/**
* Welcart activate.
*/
function usces_wcsite_activate() {
$usces = get_option( 'usces', array() );
$circulating = wel_get_circulating_amount();
$sku_num = wel_get_sku_total_num();
$cat_num = wel_get_cat_total_num();
$metas['usces_company_name'] = $usces['company_name'];
$metas['usces_company_tel'] = $usces['tel_number'];
$metas['usces_company_number'] = $usces['business_registration_number'];
$metas['usces_company_zip'] = $usces['zip_code'];
$metas['usces_company_location'] = $usces['address1'] . ' ' . $usces['address2'];
$metas['usces_inquiry_mail'] = $usces['inquiry_mail'];
$metas['usces_base_country'] = $usces['system']['base_country'];
$metas['usces_circulating_amount'] = $circulating['amount'];
$metas['usces_circulating_count'] = $circulating['count'];
$metas['usces_categories'] = wel_get_categories();
$metas['usces_cat_num'] = $cat_num;
$metas['usces_sku_num'] = $sku_num;
$metas['usces_themes'] = wel_get_themes();
$metas['usces_plugins'] = wel_get_plugins();
$metas['usces_used_sett'] = wel_get_activ_pay_methd();
$base_metas = array(
'wcid' => get_option( 'usces_wcid' ),
'wchost' => $_SERVER['SERVER_NAME'],
'refer' => get_option( 'home' ),
'act' => 1,
);
$params = array_merge( $base_metas, $metas );
usces_wcsite_connection( $params );
}
/**
* Welcart deactivate.
*/
function usces_wcsite_deactivate() {
$params = array(
'wcid' => get_option( 'usces_wcid' ),
'wchost' => $_SERVER['SERVER_NAME'],
'refer' => get_option( 'home' ),
'act' => 0,
);
usces_wcsite_connection( $params );
}
/**
* Session cache limiter.
* usces_action_session_start
*/
function usces_session_cache_limiter() {
global $usces;
if ( $usces->is_cart_page( $_SERVER['REQUEST_URI'] ) && isset( $_REQUEST['usces_page'] ) && 'search_item' == $_REQUEST['usces_page'] ) {
session_cache_limiter( 'private_no_expire' );
}
}
/**
* Disused function
* usces_action_login_page_footer
*/
function usces_action_login_page_liwpp() {
}
/**
* Disused function
* usces_filter_login_page_footer
*
* @param string $html Template form.
* @return string
*/
function usces_filter_login_page_liwpp( $html ) {
return $html;
}
/**
* Disused function
* usces_action_customer_page_member_inform
*/
function usces_action_customer_page_liwpp() {
}
/**
* Disused function
* usces_filter_customer_page_member_inform
*
* @param string $html Template form.
* @return string
*/
function usces_filter_customer_page_liwpp( $html ) {
return $html;
}
/**
* Disused function
* usces_filter_login_widget
*
* @param string $html Template form.
* @return string
*/
function usces_filter_login_widget_liwpp( $html ) {
return $html;
}
/**
* Disused function
* wp
*/
function usces_login_width_paypal() {
}
/**
* Atobarai each availability area.
*
* @param string $second_section Second section area.
* @param int $post_id Post ID.
* @return string
*/
function usces_atobarai_each_availability( $second_section, $post_id ) {
$product = wel_get_product( $post_id );
$deferred_payment_propriety = (int) $product['atobarai_propriety'];
$second_section .= '
| ' . __( 'Atobarai Propriety', 'usces' ) . ' |
|
';
return $second_section;
}
/**
* Disused function
*
* @param int $post_id Post ID.
* @param object $post Post data.
*/
function usces_atobarai_update_each_availability( $post_id, $post ) {
// This process has moved to item_post.php 1568.
}
/**
* Setup of settlement.
* plugins_loaded
*/
function usces_instance_settlement() {
global $usces;
$usces->settlement->setup();
}
/**
* Setup of extensions.
* plugins_loaded
*/
function usces_instance_extentions() {
global $ganbare_tencho, $order_stock_linkage, $data_list_upgrade, $verify_members_email, $data_google_recaptcha, $brute_force;
require_once USCES_EXTENSIONS_DIR . '/GanbareTencho/GanbareTencho.class.php';
$ganbare_tencho = new USCES_GANBARE_TENCHO();
require_once USCES_EXTENSIONS_DIR . '/OrderStockLinkage/order_stock_linkage.php';
$order_stock_linkage = new USCES_STOCK_LINKAGE();
require_once USCES_EXTENSIONS_DIR . '/DataListUpgrade/data_list_upgrade.php';
$data_list_upgrade = new USCES_DATALIST_UPGRADE();
require_once USCES_EXTENSIONS_DIR . '/VerifyMembersEmail/verify_members_email.php';
$verify_members_email = new USCES_VERIFY_MEMBERS_EMAIL();
require_once USCES_EXTENSIONS_DIR . '/GoogleRecaptcha/google_recaptcha.php';
$data_google_recaptcha = new USCES_GOOGLE_RECAPTCHA();
require_once USCES_EXTENSIONS_DIR . '/BruteForceCountermeasures/brute_force_countermeasures.php';
$brute_force = new USCES_BRUTE_FORCE_COUNTER_MEASURES();
require_once USCES_EXTENSIONS_DIR . '/StructuredDataProduct/structured_data_product.php';
$structured_data_product = new USCES_STRUCTURED_DATA_PRODUCT();
require_once USCES_EXTENSIONS_DIR . '/NewProductImageRegister/class-new-product-image-register.php';
$new_product_image_register = new NEW_PRODUCT_IMAGE_REGISTER();
require_once USCES_EXTENSIONS_DIR . '/OperationLog/class-operation-log.php';
$operation_log = new OPERATION_LOG();
require_once USCES_EXTENSIONS_DIR . '/CreditCardSecurity/class-creditcard-security.php';
$card_security = new USCES_CREDITCARD_SECURITY();
}
/**
* Get list of attachment image attributes.
* wp_get_attachment_image_attributes
*
* @param array $attr Array of attribute values for the image markup, keyed by attribute name.
* @param WP_Post $attachment Image attachment post.
* @param string|int $size Requested image size.
* @return array
*/
function usces_get_attachment_image_attributes( $attr, $attachment, $size ) {
global $usces;
if ( $usces->is_cart_or_member_page( $_SERVER['REQUEST_URI'] ) || $usces->is_inquiry_page( $_SERVER['REQUEST_URI'] ) ) {
if ( $usces->use_ssl && isset( $attr['srcset'] ) ) {
$srcset = $attr['srcset'];
$attr['srcset'] = str_replace( get_option( 'siteurl' ), USCES_SSL_URL_ADMIN, $srcset );
}
}
return $attr;
}
/**
* SSL charm
* init
*
* @return void
*/
function usces_ssl_charm() {
global $usces;
if ( $usces->use_ssl && ( $usces->is_cart_or_member_page( $_SERVER['REQUEST_URI'] ) || $usces->is_inquiry_page( $_SERVER['REQUEST_URI'] ) ) ) {
if ( function_exists( 'usces_ob_callback' ) ) {
ob_start( 'usces_ob_callback' );
} else {
ob_start( 'usces_ob_rewrite' );
}
}
}
/**
* Output buffer rewrite
*
* @param array $buffer Rewrite buffer.
* @return array
*/
function usces_ob_rewrite( $buffer ) {
$pattern = array(
'|(<[^<]*)href=\"' . get_option( 'siteurl' ) . '([^>]*)\.css([^>]*>)|',
'|(<[^<]*)src=\"' . get_option( 'siteurl' ) . '([^>]*>)|',
);
$replacement = array(
'${1}href="' . USCES_SSL_URL_ADMIN . '${2}.css${3}',
'${1}src="' . USCES_SSL_URL_ADMIN . '${2}',
);
$buffer = preg_replace( $pattern, $replacement, $buffer );
return $buffer;
}
/**
* Enqueue scripts.
* wp_enqueue_scripts
*/
function usces_wp_enqueue_scripts() {
global $usces;
$no_cart_css = isset( $usces->options['system']['no_cart_css'] ) ? $usces->options['system']['no_cart_css'] : 0;
wp_enqueue_style( 'usces_default_css', USCES_FRONT_PLUGIN_URL . '/css/usces_default.css', array(), USCES_VERSION );
wp_enqueue_style( 'dashicons' );
if ( ! $no_cart_css ) {
wp_enqueue_style( 'usces_cart_css', USCES_FRONT_PLUGIN_URL . '/css/usces_cart.css', array( 'usces_default_css' ), USCES_VERSION );
}
$theme_version = defined( 'USCES_THEME_VERSION' ) ? USCES_THEME_VERSION : USCES_VERSION;
if ( file_exists( get_stylesheet_directory() . '/usces_cart.css' ) ) {
wp_enqueue_style( 'theme_cart_css', get_stylesheet_directory_uri() . '/usces_cart.css', array( 'usces_default_css' ), $theme_version );
}
if ( $usces->is_cart_or_member_page( $_SERVER['REQUEST_URI'] ) ) {
if ( isset( $usces->options['address_search'] ) && 'activate' == $usces->options['address_search'] ) {
wp_enqueue_script( 'usces_ajaxzip3', 'https://ajaxzip3.github.io/ajaxzip3.js', array(), current_time( 'timestamp' ), false );
}
if ( isset( $usces->page ) && 'confirm' === $usces->page ) {
$cart_comfirm = USCES_FRONT_PLUGIN_URL . '/js/cart_confirm.js';
wp_enqueue_script( 'usces_cart_comfirm', $cart_comfirm, array( 'jquery' ), current_time( 'timestamp' ), false );
}
if ( $usces->is_member_page( $_SERVER['REQUEST_URI'] ) ) {
$member_common_js = USCES_FRONT_PLUGIN_URL . '/js/member_common.js';
wp_enqueue_script( 'usces_member_page_js', $member_common_js, array( 'jquery' ), current_time( 'timestamp' ), true );
}
}
}
/**
* Check confirm.
* wp_ajax_welcart_confirm_check
*/
function welcart_confirm_check_ajax() {
global $usces;
$nonce = filter_input( INPUT_POST, 'wc_nonce', FILTER_SANITIZE_SPECIAL_CHARS );
$ajax = filter_input( INPUT_POST, 'action', FILTER_SANITIZE_SPECIAL_CHARS );
$condition = filter_input( INPUT_POST, 'wc_condition' );
if ( 'welcart_confirm_check' !== $ajax ) {
$res = 'not permitted1';
wp_send_json_error( $res );
}
if ( ! wp_verify_nonce( $nonce, 'wc_confirm' ) ) {
$res = 'not permitted2';
wp_send_json_error( $res );
}
// Session fixation remediation (Layer 3 / uscesid removal, A2): reopen the shopper's shop
// session via its own same-origin session cookie instead of decoding a crafted `uscesid`
// through uscesdc()/session_id(). This AJAX runs under admin-ajax.php, where
// usces_close_session() (admin_init) has closed the bootstrap session, so session_status()
// is PHP_SESSION_NONE here and we (re)attach to the frontend shop session identified by its
// cookie. Verified on trunk: the confirm-page uscesid decodes to exactly this cookie's
// session id, so reading the cookie reaches the same cart (result unchanged).
// See .docs/welcart2.x/security-remediation_uscesid-session-fixation.md 4.3.A A2.
if ( PHP_SESSION_NONE === session_status() ) {
$usces_options = get_option( 'usces' );
$sess_name = defined( 'USCES_KEY' ) ? USCES_KEY : ( isset( $usces_options['usces_key'] ) ? $usces_options['usces_key'] : '' );
if ( '' !== $sess_name && ! empty( $_COOKIE[ $sess_name ] ) ) {
$sess_id = preg_replace( '/[^A-Za-z0-9,\-]/', '', wp_unslash( $_COOKIE[ $sess_name ] ) );
session_id( $sess_id );
@session_start(); // phpcs:ignore
}
}
$current['entry'] = $usces->cart->get_entry();
$current['cart'] = $usces->cart->get_cart();
session_write_close();
$condition = json_decode( urldecode( $condition ), true );
if ( $condition == $current ) { // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
$res = 'same';
} elseif ( empty( $current['cart'] ) ) {
$res = 'timeover';
} elseif ( $current['cart'] == $condition['cart'] && $current['entry'] != $condition['entry'] ) { // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
$res = 'entrydiff';
} else {
$res = 'different';
}
wp_send_json_success( $res );
}
/**
* Parameter uscesL10n
* usces_filter_uscesL10n
*
* @param string $nouse Unused.
* @param int $post_id Post ID.
* @return string
*/
function usces_confirm_uscesL10n( $nouse, $post_id ) {
global $usces;
if ( 'confirm' === $usces->page ) {
$condition['entry'] = $usces->cart->get_entry();
$condition['cart'] = $usces->cart->get_cart();
$js = '';
$js .= "'condition': '" . urlencode( wp_json_encode( $condition ) ) . "',\n";
$js .= "'cart_url': '" . USCES_CART_URL . "',\n";
$js .= "'check_mes': '" . __( 'Purchase information has been updated. Please repeat the procedure.\n\nPlease do not open and work more than one tab (window).\n', 'usces' ) . "',\n";
return $js;
}
}
/**
* Search zipcode
* usces_filter_states_form_js
*
* @param string $js Script.
* @return string
*/
function usces_search_zipcode_check( $js ) {
global $usces;
$option = get_option( 'usces', array() );
if ( ! isset( $option['address_search'] ) || 'activate' != $option['address_search'] ) {
return $js;
}
if ( ( ( $usces->use_js && ( is_page( USCES_MEMBER_NUMBER ) || $usces->is_member_page( $_SERVER['REQUEST_URI'] ) ) )
&& ( ( true === $usces->is_member_logged_in() && WCUtils::is_blank( $usces->page ) ) || 'member' == $usces->page || 'editmemberform' == $usces->page || 'newmemberform' == $usces->page ) )
||
( ( $usces->use_js && ( is_page( USCES_CART_NUMBER ) || $usces->is_cart_page( $_SERVER['REQUEST_URI'] ) ) )
&& ( 'customer' == $usces->page || 'delivery' == $usces->page ) ) ) {
$zip_id = ( isset( $_REQUEST['usces_page'] ) && 'msa_setting' == $_REQUEST['usces_page'] ) ? 'msa_zip' : 'zipcode';
$js .= '
';
}
return $js;
}
/**
* Admin member list page.
* load-welcart-management_page_usces_memberlist
*/
function usces_admin_member_list_hook() {
if ( ! isset( $_POST['member_list_options_apply'] ) ) {
return;
}
$list_option = get_option( 'usces_memberlist_option', array() );
foreach ( (array) $list_option['view_column'] as $key => $value ) {
if ( isset( $_POST['hide'][ $key ] ) ) {
$list_option['view_column'][ $key ] = 1;
} else {
$list_option['view_column'][ $key ] = 0;
}
}
$list_option['max_row'] = (int) $_POST['member_list_per_page'];
update_option( 'usces_memberlist_option', $list_option );
}
/**
* Admin order list page.
* load-toplevel_page_usces_orderlist
*
* @param string $hook The current admin page.
* @return void
*/
function usces_admin_order_list_hook( $hook ) {
if ( ! isset( $_POST['order_list_options_apply'] ) ) {
return;
}
$list_option = get_option( 'usces_orderlist_option', array() );
foreach ( (array) $list_option['view_column'] as $key => $value ) {
if ( isset( $_POST['hide'][ $key ] ) ) {
$list_option['view_column'][ $key ] = 1;
} else {
$list_option['view_column'][ $key ] = 0;
}
}
$list_option['max_row'] = (int) $_POST['order_list_per_page'];
update_option( 'usces_orderlist_option', $list_option );
}
/**
* Admin member list screen settings
* screen_settings
*
* @param string $screen_settings Screen settings.
* @param object $screen WP_Screen object.
* @return string
*/
function usces_memberlist_screen_settings( $screen_settings, $screen ) {
if ( 'welcart-management_page_usces_memberlist' != $screen->id
|| ( isset( $_REQUEST['member_action'] ) && 'edit' == $_REQUEST['member_action'] ) ) {
return $screen_settings;
}
require_once USCES_PLUGIN_DIR . '/classes/memberList.class.php';
$memberlist = new WlcMemberList();
$arr_column = $memberlist->get_column();
$list_option = get_option( 'usces_memberlist_option', array() );
$init_view = array( 'ID', 'name1', 'name2', 'pref', 'address1', 'tel', 'email', 'entrydate', 'rank', 'point' );
$screen_settings = '
';
if ( ! isset( $list_option['max_row'] ) ) {
$list_option['max_row'] = 50;
}
$screen_settings .= '
';
update_option( 'usces_memberlist_option', $list_option );
return $screen_settings;
}
/**
* Admin order list screen settings
* screen_settings
*
* @param string $screen_settings Screen settings.
* @param object $screen WP_Screen object.
* @return string
*/
function usces_orderlist_screen_settings( $screen_settings, $screen ) {
if ( 'toplevel_page_usces_orderlist' != $screen->id
|| ( isset( $_REQUEST['order_action'] ) && 'edit' == $_REQUEST['order_action'] ) ) {
return $screen_settings;
}
require_once USCES_PLUGIN_DIR . '/classes/orderList2.class.php';
$orderlist = new WlcOrderList();
$arr_column = $orderlist->get_all_column();
$list_option = get_option( 'usces_orderlist_option', array() );
$init_view = array( 'deco_id', 'order_date', 'process_status', 'payment_name', 'receipt_status', 'total_price', 'deli_method', 'mem_id', 'name1', 'name2', 'pref' );
if ( defined( 'WCEX_AUTO_DELIVERY' ) && version_compare( WCEX_AUTO_DELIVERY_VERSION, '1.4.0', '>=' ) ) {
$init_view[] = 'reg_id';
}
$init_view = apply_filters( 'usces_filter_orderlist_column_init_view', $init_view );
$screen_settings = '
';
if ( ! isset( $list_option['max_row'] ) ) {
$list_option['max_row'] = 50;
}
$screen_settings .= '
';
update_option( 'usces_orderlist_option', $list_option );
return $screen_settings;
}
/**
* New member registration anti-spam.
* usces_filter_member_check
*
* @param string $mes Message.
* @return string
*/
function usces_memberreg_spamcheck( $mes ) {
if ( ! WCUtils::is_blank( $_POST['member']['name1'] ) && trim( $_POST['member']['name1'] ) == trim( $_POST['member']['name2'] ) ) {
$mes .= __( 'Name is not correct', 'usces' ) . '
';
}
if ( ! WCUtils::is_blank( $_POST['member']['address1'] ) && trim( $_POST['member']['address1'] ) == trim( $_POST['member']['address2'] ) ) {
$mes .= __( 'Address is not correct', 'usces' ) . '
';
}
if ( $mes ) {
usces_log( 'memberreg_spamcheck : ' . $mes, 'acting_transaction.log' );
}
return $mes;
}
/**
* New member registration anti-spam.
* usces_filter_member_check_fromcart
*
* @param string $mes Message.
* @return string
*/
function usces_fromcart_memberreg_spamcheck( $mes ) {
if ( ! WCUtils::is_blank( $_POST['customer']['name1'] ) && trim( $_POST['customer']['name1'] ) == trim( $_POST['customer']['name2'] ) ) {
$mes .= __( 'Name is not correct', 'usces' ) . '
';
}
if ( ! WCUtils::is_blank( $_POST['customer']['address1'] ) && trim( $_POST['customer']['address1'] ) == trim( $_POST['customer']['address2'] ) ) {
$mes .= __( 'Address is not correct', 'usces' ) . '
';
}
if ( $mes ) {
usces_log( 'fromcart_memberreg_spamcheck : ' . $mes, 'acting_transaction.log' );
}
return $mes;
}
/**
* Welcart priority
* pre_update_option_active_plugins
*
* @param mixed $active_plugins The new, unserialized option value.
* @param mixed $old_value The old option value.
* @return array
*/
function usces_priority_active_plugins( $active_plugins, $old_value ) {
foreach ( $active_plugins as $no => $path ) {
if ( USCES_PLUGIN_BASENAME == $path ) {
unset( $active_plugins[ $no ] );
array_unshift( $active_plugins, USCES_PLUGIN_BASENAME );
break;
}
}
return $active_plugins;
}
/**
* Password change e-mail.
* usces_action_changepass_page_inform
*/
function usces_action_lostmail_inform() {
$mem_mail = wp_unslash( $_REQUEST['mem'] );
$lostkey = wp_unslash( $_REQUEST['key'] );
$html = '
' . "\n";
wel_esc_script_e( $html );
}
/**
* Password change e-mail.
* usces_filter_changepassword_inform
*
* @param string $html Form.
* @return string
*/
function usces_filter_lostmail_inform( $html ) {
$mem_mail = wp_unslash( $_REQUEST['mem'] );
$lostkey = wp_unslash( $_REQUEST['key'] );
$html .= '
' . "\n";
return $html;
}
/**
* Purchase template form.
* usces_filter_confirm_inform
*
* @param string $html Purchase template form.
* @param array $payments Payment data.
* @param string $acting_flag Payment method.
* @param string $rand Settlement link key.
* @param string $purchase_disabled Disabled tag.
* @return string
*/
function wc_purchase_nonce( $html, $payments, $acting_flag, $rand, $purchase_disabled ) {
global $usces;
$nonacting_settlements = apply_filters( 'usces_filter_nonacting_settlements', $usces->nonacting_settlements );
if ( strpos( $html, '_purchase_nonce' ) || in_array( $payments['settlement'], $nonacting_settlements ) ) {
return $html;
}
$noncekey = $usces->member_nonce_key( 'wc_purchase_nonce' );
$html .= wp_nonce_field( $noncekey, '_purchase_nonce', false, false ) . "\n";
return $html;
}
/**
* Purchase check
* usces_purchase_check
*/
function wc_purchase_nonce_check() {
global $usces;
$entry = $usces->cart->get_entry();
if ( ! isset( $entry['order']['payment_name'] ) || empty( $entry['order']['payment_name'] ) ) {
wp_redirect( home_url() );
exit;
}
$nonacting_settlements = apply_filters( 'usces_filter_nonacting_settlements', $usces->nonacting_settlements );
$payments = usces_get_payments_by_name( $entry['order']['payment_name'] );
if ( in_array( $payments['settlement'], $nonacting_settlements ) ) {
return true;
}
$nonce = isset( $_REQUEST['_purchase_nonce'] ) ? $_REQUEST['_purchase_nonce'] : '';
if ( empty( $nonce ) || $usces->verify_member_nonce( $nonce, 'wc_purchase_nonce' ) ) {
return true;
}
wp_redirect( home_url() );
exit;
}
/**
* Checking in $usces->use_point()
* usces_action_confirm_page_point_inform
*/
function usces_use_point_nonce() {
global $usces;
$noncekey = $usces->member_nonce_key( 'use_point' );
wp_nonce_field( $noncekey, 'wc_nonce' );
}
/**
* Check post member page
* usces_action_newmember_page_inform
* usces_action_memberinfo_page_inform
* usces_action_newpass_page_inform
* usces_action_changepass_page_inform
* usces_action_customer_page_inform
*/
function usces_post_member_nonce() {
global $usces;
$noncekey = $usces->member_nonce_key( 'post_member' );
wp_nonce_field( $noncekey, 'wc_nonce' );
}
/**
* Check post member login page
* usces_action_login_page_inform
* usces_action_customer_page_member_inform
*/
function usces_member_login_nonce() {
global $usces;
$noncekey = $usces->member_nonce_key( 'post_member' );
wp_nonce_field( $noncekey, 'wel_nonce' );
}
/**
* Order edit form additional information
* usces_action_order_edit_form_detail_bottom
*
* @param array $data Order data.
* @param array $cscs_meta Custom customer data.
* @param array $action_args Order action.
* @return void
*/
function wel_order_edit_customer_additional_information( $data, $cscs_meta, $action_args ) {
global $usces;
$order_id = isset( $data['ID'] ) ? (int) $data['ID'] : 0;
if ( ! $order_id ) {
return;
}
$value = $usces->get_order_meta_value( 'extra_info', $order_id );
if ( ! $value ) {
return;
}
$infos = unserialize( $value );
$html = '
| ' . __( 'Others', 'usces' ) . ' |
' . "\n";
$html .= '' . "\n";
$html .= ' |
' . "\n";
wel_esc_script_e( $html );
}
/**
* Save additional information.
* usces_post_reg_orderdata
*
* @param int $order_id Order ID.
* @param array $results Settlement result data.
* @return void
*/
function wel_save_extra_info_to_ordermeta( $order_id, $results ) {
global $usces;
if ( ! $order_id ) {
return;
}
$info = array(
'IP' => ( isset( $_SERVER['REMOTE_ADDR'] ) ) ? $_SERVER['REMOTE_ADDR'] : '',
'USER_AGENT' => ( isset( $_SERVER['HTTP_USER_AGENT'] ) ) ? $_SERVER['HTTP_USER_AGENT'] : '',
);
$usces->set_order_meta_value( 'extra_info', serialize( $info ), $order_id );
}
/**
* Navigation menu arguments.
* wp_nav_menu_args
*
* @param array $args An array containing wp_nav_menu() arguments.
* @return array
*/
function usces_wp_nav_menu_args( $args ) {
usces_remove_filter();
return $args;
}
/**
* Navigation menu.
* wp_nav_menu
*
* @param string $nav_menu The HTML content for the navigation menu.
* @param stdClass $args An object containing wp_nav_menu() arguments.
* @return string
*/
function usces_wp_nav_menu( $nav_menu, $args ) {
usces_reset_filter();
return $nav_menu;
}
/**
* Session write close.
* admin_init
*/
function usces_close_session() {
if ( session_status() == PHP_SESSION_ACTIVE ) {
session_write_close();
}
}
/**
* Regenerate the session ID on member login (session fixation countermeasure).
* usces_action_after_login
*
* Fires on every successful member login path (member_login() / member_just_login()
* and extension logins that trigger usces_action_after_login). The uscesid mechanism
* itself has been removed (A1/C) and set_cookie() now regenerates unconditionally,
* but not every login path calls set_cookie() (member_just_login() does not), so this
* hook is what guarantees regeneration on all of them.
*/
function usces_regenerate_session_on_login() {
if ( session_status() == PHP_SESSION_ACTIVE && ! headers_sent() ) {
session_regenerate_id( true );
}
}
/**
* Handles OPTIONS requests for the server.
*
* This is handled outside of the server code, as it doesn't obey normal route
* mapping.
*
* @since 4.4.0
*
* @param mixed $response Current reponse, either response or `null` to indicate pass-through.
* @param WP_REST_Server $handler ResponseHandler instance (usually WP_REST_Server).
* @param WP_REST_Request $request The request that was used to make current response.
* @return WP_REST_Response Modified response, either response or `null` to indicate pass-through.
*/
function usces_close_session_loopback( $response, $handler, $request ) {
$router = $request->get_route();
if ( ! empty( $router ) && '/wp-site-health/v1/tests/loopback-requests' == $router ) {
usces_close_session();
}
return $response;
}
/**
* Google recaptcha script.
* wp_print_footer_scripts
*/
function usces_add_google_recaptcha_v3_script() {
global $usces, $usces_entries, $usces_carts;
if ( $usces->is_member_page( $_SERVER['REQUEST_URI'] ) && 'newmemberform' === $usces->page ) {
print_google_recaptcha_response( 'create_new_member', 'memberpages' );
}
if ( ( $usces->is_cart_page( $_SERVER['REQUEST_URI'] ) && 'customer' === $usces->page ) ) {
print_google_recaptcha_response( 'customer_order_page', 'customer-info', 'customer_form' );
}
if ( ( $usces->is_cart_page( $_SERVER['REQUEST_URI'] ) && 'delivery' === $usces->page ) ) {
print_google_recaptcha_response( 'delivery_order_page', 'delivery-info', '' );
}
}
/**
* Google recaptcha badge display.
*
* @param string $action Page action.
* @param string $parent_element_id Parent page.
* @param string $form_name Page name.
* @return void
*/
function print_google_recaptcha_response( $action, $parent_element_id, $form_name = '' ) {
$option = get_option( 'usces_ex', array() );
if ( isset( $option['system']['google_recaptcha']['status'] ) && $option['system']['google_recaptcha']['status'] && ! ( empty( $option['system']['google_recaptcha']['site_key'] ) ) && ! ( empty( $option['system']['google_recaptcha']['secret_key'] ) ) ) {
$site_key = isset( $option['system']['google_recaptcha']['site_key'] ) ? $option['system']['google_recaptcha']['site_key'] : '';
echo '';
echo '';
// run time reload google captcha token v3 key after 1 minutes.
echo '';
}
}
/**
* Upload CSV.
* wp_ajax_wel_item_upload_ajax
*
* @return void
*/
function wel_item_upload_ajax() {
check_ajax_referer();
$_REQUEST['action'] = 'upload_register';
usces_item_uploadcsv();
}
/**
* Check progress.
* wp_ajax_wel_item_progress_check_ajax
*
* @since 2.7.7
* @return void
*/
function wel_item_progress_check_ajax() {
require_once USCES_PLUGIN_DIR . '/functions/progress-check.php';
usces_item_progress_check();
}
/**
* Completed.
* wp_ajax_wel_item_progress_completed_ajax
*
* @since 2.8.5
* @return void
*/
function wel_item_progress_completed_ajax() {
check_ajax_referer( 'wel_progress_check_ajax', 'nonce' );
if ( 4 > usces_get_admin_user_level() ) {
die( 'user_level' );
}
$logfile = wp_unslash( filter_input( INPUT_POST, 'logfile', FILTER_DEFAULT ) );
$logfile = WP_CONTENT_DIR . USCES_UPLOAD_TEMP . DIRECTORY_SEPARATOR . $logfile;
// Make sure the file is exist.
if ( usces_is_reserved_file( $logfile ) ) {
// Get the content and echo it.
$text = file_get_contents( $logfile );
echo( $text );
}
exit;
}
/**
* Implementation of hook usces_filter_admin_custom_field_input_value()
* Append new options from the instance of the order custom field.
*
* @since 2.5.3
* @see usces_admin_custom_field_input()
* @param string $value List of options.
* @param string $key The custom field key.
* @param string $entry The instance of the custom field.
* @param string $custom_field The type of the custom field. Ex: order, delivery, customer, member...
* @return string $value List of options appended new options from the instance.
*/
function usces_filter_admin_custom_field_input_value( $value, $key, $entry, $custom_field ) {
if ( 'order' === $custom_field ) {
$means = $entry['means'];
$is_choice_field_type = '0' === $means || '3' === $means || '4' === $means;
if ( $is_choice_field_type ) {
$options = explode( "\n", $value );
if ( is_array( $entry['data'] ) ) {
$data = $entry['data'];
} else {
$data = ( ! empty( $entry['data'] ) && '#NONE#' !== $entry['data'] ) ? array( $entry['data'] ) : array();
}
$diff_values = array_diff( $data, $options );
if ( ! empty( $diff_values ) ) {
$options = array_merge( $options, $diff_values );
$value = implode( "\n", $options );
}
}
}
return $value;
}
/**
* Create Post type for Welcart product.
* init
*
* @since 2.5.5
*/
function usces_create_product_type() {
register_post_type(
'product',
array(
'labels' => array(
'name' => __( 'Items', 'usces' ),
'singular_name' => 'product',
),
'public' => false,
'has_archive' => false,
'menu_position' => 3,
'show_in_rest' => false,
)
);
}
/**
* Executement release card update lock.
* usces_action_member_list_page
*
* @since 2.5.8
* @param string $member_action Action.
*/
function wel_execute_release_card_update_lock( $member_action ) {
if ( 'editpost' === $member_action ) {
$flag = filter_input( INPUT_POST, 'release_card_update_lock', FILTER_DEFAULT );
$member_id = filter_input( INPUT_POST, 'member_id', FILTER_VALIDATE_INT );
if ( 'release' === $flag && ! empty( $member_id ) ) {
wel_release_card_update_lock( $member_id );
}
}
}
/**
* Welcart auto update control.
* auto_update_plugin
*
* @since 2.8
* @param bool|null $update Whether to update.
* @param object $item The update offer.
* @return boolean $update
*/
function usces_auto_update_welcart( $update, $item ) {
$targets = array( 'usc-e-shop' );
if ( in_array( $item->slug ?? '', $targets ) ) {
$available_updates = get_site_transient( 'update_plugins' );
if ( ! isset( $available_updates->response['usc-e-shop/usc-e-shop.php'] ) ) {
return true;
}
$plugin_info = $available_updates->response['usc-e-shop/usc-e-shop.php'];
$current_arr = explode( '.', USCES_VERSION, 3 );
$current_major = (string) $current_arr[0] . '.' . (string) $current_arr[1];
$new_arr = explode( '.', $plugin_info->new_version, 3 );
$new_major = (string) $new_arr[0] . '.' . (string) $new_arr[1];
if ( $current_major === $new_major ) {
return true;
} else {
return false;
}
} else {
return $update;
}
}
/**
* Check if the same item code does not exist.
* wp_ajax_wel_item_code_exists_ajax
*
* @since 2.8
* @param string $item_code Item code.
* @return boolean $res true if present, false otherwise.
*/
function wel_item_code_exists_ajax() {
$wc_nonce = filter_input( INPUT_POST, 'wc_nonce' );
$item_code = filter_input( INPUT_POST, 'item_code' );
$res = array(
'result' => null,
'item_code' => $item_code,
'message' => '',
);
if ( ! wp_verify_nonce( $wc_nonce, 'check_item_code' ) ) {
wp_send_json( $res );
}
$post_id = wel_get_id_by_item_code( $item_code, false );
$res['result'] = $post_id;
$res['message'] = esc_js( sprintf( __( 'Product code %s has already been registered.', 'usces' ), $item_code ) );
wp_send_json( $res );
}
/**
* All credit security unlocked.
* wp_ajax_credit_security_unlock
*/
function wel_credit_security_unlock() {
$wc_nonce = filter_input( INPUT_POST, 'wc_nonce' );
$res = array();
if ( ! wp_verify_nonce( $wc_nonce, 'credit_security_unlock' ) ) {
wp_send_json( $res );
}
wel_all_unlock();
wp_send_json( $res );
}
/**
* Log member data delete.
*
* @param array $res Result.
* @param int $mem_id Member ID.
* @return void
*/
function wel_member_data_delete_log( $res, $mem_id ) {
usces_log( 'Res: ' . print_r( $res, true ) . ' $_POST: ' . print_r( $_POST, true ) . ' $_GET: ' . print_r( $_GET, true ), 'db', 'member_delete', $mem_id );
}