1
$query = $wpdb->prepare("SELECT post_id, meta_value FROM {$wpdb->postmeta}
LEFT JOIN {$wpdb->posts} ON ID = post_id
WHERE meta_key = %s AND (post_status = 'pending' OR post_status = 'publish' OR post_status = 'draft' OR post_status = 'private' OR post_status = 'future')
GROUP BY meta_value HAVING COUNT(meta_value) > 1",
'_itemCode');
$db_check = $wpdb->get_results( $query, ARRAY_A );
if( $db_check ) {
$res['status'] = 'error';
$res['message'] .= __('The same product cord is registered.', 'usces');
foreach($db_check as $d_item){
$res['message'] .= ' , ' . $d_item['meta_value'];
}
$url = USCES_ADMIN_URL . '?page=usces_itemedit&usces_status=' . $res['status'] . '&usces_message=' . urlencode($res['message']);
wp_redirect($url);
exit;
}
$path = WP_CONTENT_DIR . '/uploads/';
/*********************************************************************/
// Upload
/**********************************************************************/
if( isset($_REQUEST['action']) && 'itemcsv' == $_REQUEST['action'] ){
$workfile = $_FILES["usces_upcsv"]["tmp_name"];
if ( !is_uploaded_file($workfile) ) {
$res['status'] = 'error';
$res['message'] = __('The file was not uploaded.', 'usces');
$url = USCES_ADMIN_URL . '?page=usces_itemedit&usces_status=' . $res['status'] . '&usces_message=' . urlencode($res['message']);
wp_redirect($url);
exit;
}
//check ext
list($fname, $fext) = explode('.', $_FILES["usces_upcsv"]["name"], 2);
if( $fext != 'csv' ) {
$res['status'] = 'error';
$res['message'] = __('The file is not supported.', 'usces').$fname.'.'.$fext;
$url = USCES_ADMIN_URL . '?page=usces_itemedit&usces_status=' . $res['status'] . '&usces_message=' . urlencode($res['message']);
wp_redirect($url);
exit;
}
$new_filename = base64_encode($fname . '_' . time() . '.' .$fext);
if ( ! move_uploaded_file($_FILES['usces_upcsv']['tmp_name'], $path.$new_filename) ) {
$res['status'] = 'error';
$res['message'] = __('The file was not stored.', 'usces').$fname.'.'.$fext;
$url = USCES_ADMIN_URL . '?page=usces_itemedit&usces_status=' . $res['status'] . '&usces_message=' . urlencode($res['message']);
wp_redirect($url);
exit;
}
return $new_filename;
}
$yn = "\r\n";
$br = "
";
/*********************************************************************/
// Register
/**********************************************************************/
if( isset($_REQUEST['regfile']) && !WCUtils::is_blank($_REQUEST['regfile']) && isset($_REQUEST['action']) && 'upload_register' == $_REQUEST['action'] ){
$file_name = $_REQUEST['regfile'];
$decode_filename = base64_decode($file_name);
if( ! file_exists($path.$file_name) ){
$res['status'] = 'error';
$res['message'] = __('CSV file does not exist.', 'usces').esc_html($decode_filename);
//echo $res['status'] . ' : ' . $res['message'];
//return;
return( $res );
}
}
/*////////////////////////////////////////*/
// ready
/*////////////////////////////////////////*/
$start = microtime(true);
//$wpdb->show_errors();
$wpdb->query( 'SET SQL_BIG_SELECTS=1' );
set_time_limit(3600);
define('USCES_COL_POST_ID', 0);
define('USCES_COL_POST_AUTHOR', 1);
define('USCES_COL_POST_CONTENT', 2);
define('USCES_COL_POST_TITLE', 3);
define('USCES_COL_POST_EXCERPT', 4);
define('USCES_COL_POST_STATUS', 5);
define('USCES_COL_POST_COMMENT_STATUS', 6);
define('USCES_COL_POST_PASSWORD', 7);
define('USCES_COL_POST_NAME', 8);
define('USCES_COL_POST_MODIFIED', 9);
define('USCES_COL_ITEM_CODE', 10);
define('USCES_COL_ITEM_NAME', 11);
define('USCES_COL_ITEM_RESTRICTION', 12);
define('USCES_COL_ITEM_POINTRATE', 13);
define('USCES_COL_ITEM_GPNUM1', 14);
define('USCES_COL_ITEM_GPDIS1', 15);
define('USCES_COL_ITEM_GPNUM2', 16);
define('USCES_COL_ITEM_GPDIS2', 17);
define('USCES_COL_ITEM_GPNUM3', 18);
define('USCES_COL_ITEM_GPDIS3', 19);
define('USCES_COL_ITEM_SHIPPING', 20);
define('USCES_COL_ITEM_DELIVERYMETHOD', 21);
define('USCES_COL_ITEM_SHIPPINGCHARGE', 22);
define('USCES_COL_ITEM_INDIVIDUALSCHARGE', 23);
define('USCES_COL_CATEGORY', 24);
define('USCES_COL_POST_TAG', 25);
define('USCES_COL_CUSTOM_FIELD', 26);
define('USCES_COL_SKU_CODE', 27);
define('USCES_COL_SKU_NAME', 28);
define('USCES_COL_SKU_CPRICE', 29);
define('USCES_COL_SKU_PRICE', 30);
define('USCES_COL_SKU_ZAIKONUM', 31);
define('USCES_COL_SKU_ZAIKO', 32);
define('USCES_COL_SKU_UNIT', 33);
define('USCES_COL_SKU_GPTEKIYO', 34);
// define('IDENTIFIER_OLE', pack("CCCCCCCC",0xd0,0xcf,0x11,0xe0,0xa1,0xb1,0x1a,0xe1));
$lines = array();
$total_num = 0;
$comp_num = 0;
$err_num = 0;
$min_field_num = 35;//29
$log = '';
$pre_code = '';
$sku_index = 0;
$res = array();
$date_pattern = "/(\d{4})-(\d{2}|\d)-(\d{2}|\d) (\d{2}):(\d{2}|\d):(\d{2}|\d)/";
$linereadytime = 0;
$checktime = 0;
$insertposttime = 0;
$metadeletetime = 0;
$addmetatime = 0;
$AddOptiontime = 0;
$AddSKUtime = 0;
$onelinetime = 0;
//log
if ( ! ($fpi = fopen (USCES_PLUGIN_DIR.'/logs/itemcsv_log.txt', "w"))) {
$res['status'] = 'error';
$res['message'] = __('The log file was not prepared for.', 'usces').esc_html($decode_filename);
echo $res['status'] . ' : ' . $res['message'];
return;
}
//read data
if ( ! ($fpo = fopen ($path.$file_name, "r"))) {
$res['status'] = 'error';
$res['message'] = __('A file does not open.', 'usces').esc_html($decode_filename);
echo $res['status'] . ' : ' . $res['message'];
return;
}
$orglines = array();
$sp = ",";
$fname_parts = explode('.', $decode_filename);
if('csv' !== end($fname_parts)) {
$res['status'] = 'error';
$res['message'] = __('This file is not in the CSV file.', 'usces').esc_html($decode_filename);
echo $res['status'] . ' : ' . $res['message'];
return;
} else {
$buf = '';
while (! feof ($fpo)) {
$temp = fgets ($fpo, 10240);
if( 0 == strlen($temp) ) continue;
$num = substr_count($temp, '"');
if( 0 == $num % 2 && '' == $buf ){
$orglines[] = $temp;
}elseif( 1 == $num % 2 && '' == $buf ){
$buf .= $temp;
}elseif( 0 == $num % 2 && '' != $buf ){
$buf .= $temp;
}elseif( 1 == $num % 2 && '' != $buf ){
$buf .= $temp;
$orglines[] = $buf;
$buf = '';
}
}
}
fclose($fpo);
echo ''.$yn;
echo '
'.$yn;
ob_flush();
flush();
foreach($orglines as $line){
$line = trim($line);
if( 0 !== strpos( $line, 'Post ID' ) && !empty($line) )
$lines[] = $line;
}
$total_num = count($lines);
$readytime = microtime(true);
//reg loop
foreach($lines as $rows_num => $line){
/*////////////////////////////////////////*/
// lineReady
/*////////////////////////////////////////*/
$linestart = microtime(true);
$datas = array();
$logtemp = '';
$mestemp = '';
$line = trim($line);
if( empty($line) ) continue;
$d = explode($sp, $line);
$buf = '';
foreach($d as $data) {
$num = substr_count($data, '"');
if( 0 == $num % 2 && '' == $buf ){
if( '"' == substr($data, 0, 1) )
$data = substr($data, 1);
if( '"' == substr($data, -1) )
$data = substr($data, 0, -1);
$data = str_replace(array('""'), '"', $data);
$datas[] = ( false !== $data ) ? $data : '';
}elseif( 1 == $num % 2 && '' == $buf ){
$buf .= $data;
}elseif( 0 == $num % 2 && '' != $buf ){
$buf .= $sp.$data;
}elseif( 1 == $num % 2 && '' != $buf ){
$buf .= $sp.$data;
if( '"' == substr($buf, 0, 1) )
$buf = substr($buf, 1);
if( '"' == substr($buf, -1) )
$buf = substr($buf, 0, -1);
$buf = str_replace(array('""'), '"', $buf);
$datas[] = ( false !== $buf ) ? $buf : '';
$buf = '';
}
}
if( 'Post ID' == $datas[USCES_COL_POST_ID] )
continue;
if( $min_field_num > count($datas) ){
$err_num++;
$mes = "No." . ($rows_num+1)." ".count($datas) . "\t".__('The number of the columns is abnormal.', 'usces');
$logtemp .= $mes.$yn;
$log .= $logtemp;
echo $mes.$br.$yn;
continue;
}
if( $pre_code == $datas[USCES_COL_ITEM_CODE] && WCUtils::is_blank($datas[USCES_COL_POST_ID]) ){
$mode = 'add';
}else{
$post_id = ( !WCUtils::is_blank($datas[USCES_COL_POST_ID]) ) ? (int)$datas[USCES_COL_POST_ID] : NULL;
if( $post_id ){
$db_res = $wpdb->get_var( $wpdb->prepare("SELECT ID FROM {$wpdb->posts} WHERE ID = %d", $post_id) );
if( !$db_res ){
$err_num++;
$mes = "No." . ($rows_num+1) . "\t".__("Post-ID {$post_id} does not exist in the database.", 'usces');
$logtemp .= $mes.$yn;
$log .= $logtemp;
echo $mes.$br.$yn;
continue;
}
}
if( $post_id ){
$mode = 'upd';
}else{
$mode = 'add';
}
}
$lineready = microtime(true);
$linereadytime += $lineready-$linestart;
/*////////////////////////////////////////*/
// dataCheck
/*////////////////////////////////////////*/
//data check loop
foreach($datas as $key => $data){
$data = trim(mb_convert_encoding($data, 'UTF-8', 'SJIS'));
switch($key){
case USCES_COL_ITEM_CODE:
if( 0 == strlen($data) ){
$mes = "No." . ($rows_num+1) . "\t".__('An item cord is non-input.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}else{
$query = $wpdb->prepare("SELECT meta_id, post_id FROM {$wpdb->postmeta}
LEFT JOIN {$wpdb->posts} ON ID = post_id
WHERE meta_key = %s AND meta_value = %s AND (post_status = 'pending' OR post_status = 'publish' OR post_status = 'draft' OR post_status = 'private' OR post_status = 'future')",
'_itemCode', $data);
$db_res1 = $wpdb->get_results( $query, ARRAY_A );
if( 'upd' == $mode ){
if( 1 < count($db_res1) ){
$mes = "No." . ($rows_num+1) . "\t".__('This Item-Code has been duplicated.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
$mes = '';
foreach($db_res1 as $res_val){
$mes .= "meta_id=" . $res_val['meta_id'] . ", post_id=" . $res_val['post_id'] . "
";
}
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
$query = $wpdb->prepare("SELECT meta_id, post_id FROM {$wpdb->postmeta}
LEFT JOIN {$wpdb->posts} ON ID = post_id
WHERE post_id <> %d AND meta_key = %s AND meta_value = %s AND (post_status = 'pending' OR post_status = 'publish' OR post_status = 'draft' OR post_status = 'private' OR post_status = 'future')",
$post_id, '_itemCode', $data);
$db_res2 = $wpdb->get_results( $query, ARRAY_A );
if( 0 < count($db_res2) ){
$mes = "No." . ($rows_num+1) . "\t".__('This Item-Code has already been used.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
$mes = '';
foreach($db_res2 as $res_val){
$mes .= "meta_id=" . $res_val['meta_id'] . ", post_id=" . $res_val['post_id'] . "
";
}
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
}else if( 'add' == $mode ){
if( $data != $pre_code ) {
if( 0 < count($db_res1) ){
$mes = "No." . ($rows_num+1) . "\t".__('This Item-Code has already been used.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
$mes = '';
foreach($db_res1 as $res_val){
$mes .= "meta_id=" . $res_val['meta_id'] . ", post_id=" . $res_val['post_id'] . "
";
}
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
}
}
}
break;
case USCES_COL_ITEM_NAME:
if( 0 == strlen($data) ){
$mes = "No." . ($rows_num+1) . "\t".__('An item name is non-input.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
break;
case USCES_COL_ITEM_RESTRICTION:
if( !preg_match("/^[0-9]+$/", $data) && 0 != strlen($data) ){
$mes = "No." . ($rows_num+1) . "\t".__('A value of the purchase limit number is abnormal.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
break;
case USCES_COL_ITEM_POINTRATE:
if( !preg_match("/^[0-9]+$/", $data) ){
$mes = "No." . ($rows_num+1) . "\t".__('A value of the point rate is abnormal.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
break;
case USCES_COL_ITEM_GPNUM1:
if( !preg_match("/^[0-9]+$/", $data) ){
$mes = "No." . ($rows_num+1) . "\t".__('Business package discount', 'usces')."1-".__('umerical value is abnormality.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
break;
case USCES_COL_ITEM_GPDIS1:
if( !preg_match("/^[0-9]+$/", $data) || ( 0 < $datas[USCES_COL_ITEM_GPNUM1] && 1 > $data ) ){
$mes = "No." . ($rows_num+1) . "\t".__('Business package discount', 'usces')."1-".__('rate is abnormal.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
break;
case USCES_COL_ITEM_GPNUM2:
if( !preg_match("/^[0-9]+$/", $data) || ($datas[USCES_COL_ITEM_GPNUM1] >= $data && 0 != $data) ){
$mes = "No." . ($rows_num+1) . "\t".__('Business package discount', 'usces')."2-".__('umerical value is abnormality.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
break;
case USCES_COL_ITEM_GPDIS2:
if( !preg_match("/^[0-9]+$/", $data) || ( 0 < $datas[USCES_COL_ITEM_GPNUM2] && 1 > $data ) ){
$mes = "No." . ($rows_num+1) . "\t".__('Business package discount', 'usces')."2-".__('rate is abnormal.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
break;
case USCES_COL_ITEM_GPNUM3:
if( !preg_match("/^[0-9]+$/", $data) || ($datas[USCES_COL_ITEM_GPNUM2] >= $data && 0 != $data) ){
$mes = "No." . ($rows_num+1) . "\t".__('Business package discount', 'usces')."3-".__('umerical value is abnormality.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
break;
case USCES_COL_ITEM_GPDIS3:
if( !preg_match("/^[0-9]+$/", $data) || ( 0 < $datas[USCES_COL_ITEM_GPNUM3] && 1 > $data ) ){
$mes = "No." . ($rows_num+1) . "\t".__('Business package discount', 'usces')."3-".__('rate is abnormal.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
break;
case USCES_COL_ITEM_SHIPPING:
if( !preg_match("/^[0-9]+$/", $data) || 9 < $data ){
$mes = "No." . ($rows_num+1) . "\t".__('A value of the shipment day is abnormal.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
break;
case USCES_COL_ITEM_DELIVERYMETHOD:
if( 0 === strlen($data) || !preg_match("/^[0-9;]+$/", $data) ){
$mes = "No." . ($rows_num+1) . "\t".__('Invalid value of Delivery method.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
break;
case USCES_COL_ITEM_SHIPPINGCHARGE:
if( 0 === strlen($data) || !preg_match("/^[0-9]+$/", $data) ){
$mes = "No." . ($rows_num+1) . "\t".__('Invalid type of shipping charge.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
break;
case USCES_COL_ITEM_INDIVIDUALSCHARGE:
if( !preg_match("/^[0-9]+$/", $data) || 1 < $data ){
$mes = "No." . ($rows_num+1) . "\t".__('A value of the postage individual charging is abnormal.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
break;
case USCES_COL_POST_ID:
if( !preg_match("/^[0-9]+$/", $data) && 0 != strlen($data) ){
$mes = "No." . ($rows_num+1) . "\t".__('A value of the Post-ID is abnormal.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
break;
case USCES_COL_POST_AUTHOR:
case USCES_COL_POST_COMMENT_STATUS:
case USCES_COL_POST_PASSWORD:
case USCES_COL_POST_NAME:
case USCES_COL_POST_TITLE:
case USCES_COL_POST_CONTENT:
case USCES_COL_POST_EXCERPT:
break;
case USCES_COL_POST_STATUS:
$array17 = array('publish', 'future', 'draft', 'pending', 'private');
if( !in_array($data, $array17) || WCUtils::is_blank($data) ){
$mes = "No." . ($rows_num+1) . "\t".__('A value of the display status is abnormal.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
break;
case USCES_COL_POST_MODIFIED:
if( 'future' == $datas[USCES_COL_POST_STATUS] && (WCUtils::is_blank($data) || '0000-00-00 00:00:00' === $data) ){
if( preg_match($date_pattern, $data, $match) ){
if( checkdate($match[2], $match[3], $match[1]) &&
(0 < $match[4] && 24 > $match[4]) &&
(0 < $match[5] && 60 > $match[5]) &&
(0 < $match[6] && 60 > $match[6]) ){
$mes = "";
}else{
$mes = "No." . ($rows_num+1) . "\t".__('A value of the schedule is abnormal.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
}else{
$mes = "No." . ($rows_num+1) . "\t".__('A value of the schedule is abnormal.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
}else if( !WCUtils::is_blank($data) && '0000-00-00 00:00:00' !== $data ){
if(preg_match("/^[0-9]+$/", substr($data,0,4))) {//先頭4桁が数値のみ
if(strtotime($data) === false){
$mes = "No." . ($rows_num+1) . "\t".__('A value of the schedule is abnormal.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
} else {
$datetime = explode(' ', $data);
$date_str = usces_dates_interconv($datetime[0]).' '.$datetime[1];
if(strtotime($date_str) === false){
$mes = "No." . ($rows_num+1) . "\t".__('A value of the schedule is abnormal.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
}
}
break;
case USCES_COL_CATEGORY:
if( 0 == strlen($data) ){
$mes = "No." . ($rows_num+1) . "\t".__('A category is non-input.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
break;
case USCES_COL_POST_TAG:
break;
case USCES_COL_CUSTOM_FIELD:
break;
case USCES_COL_SKU_CODE:
if( 0 == strlen($data) ){
$mes = "No." . ($rows_num+1) . "\t".__('A SKU cord is non-input.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
break;
case USCES_COL_SKU_NAME:
break;
case USCES_COL_SKU_CPRICE:
if( 0 < strlen($data) and !preg_match("/^\d$|^\d+\.?\d+$/", $data) ){
$mes = "No." . ($rows_num+1) . "\t".__('A value of the price is abnormal.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
break;
case USCES_COL_SKU_PRICE:
if( !preg_match("/^\d$|^\d+\.?\d+$/", $data) || 0 == strlen($data) ){
$mes = "No." . ($rows_num+1) . "\t".__('A value of the normal price is abnormal.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
break;
case USCES_COL_SKU_ZAIKONUM:
if( 0 < strlen($data) and !preg_match("/^[0-9]+$/", $data) ){
$mes = "No." . ($rows_num+1) . "\t".__('A value of the stock amount is abnormal.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
break;
case USCES_COL_SKU_ZAIKO:
if( !preg_match("/^[0-9]+$/", $data) || 4 < $data ){
$mes = "No." . ($rows_num+1) . "\t".__('A value of the stock status is abnormal.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
break;
case USCES_COL_SKU_UNIT:
break;
case USCES_COL_SKU_GPTEKIYO:
if( !preg_match("/^[0-9]+$/", $data) || 1 < $data ){
$mes = "No." . ($rows_num+1) . "\t".__('The value of the duties pack application is abnormal.', 'usces');
$logtemp .= $mes.$yn;
$mestemp .= $mes.$br.$yn;
}
break;
}
}
$opnum = ceil((count($datas) - $min_field_num) / 4);
for($i=0; $i<$opnum; $i++){
$val = array();
$oplogtemp = '';
$opmestemp = '';
for($o=1; $o<=4; $o++){
$key = ($min_field_num-1)+$o+($i*4);
if( isset($datas[$key]) ){
$value = trim($datas[$key]);
}else{
$value = NULL;
}
switch($o){
case 1:
if( empty($value) ){
$oplogtemp .= "No." . ($rows_num+1) . "\t" . __(sprintf('Option name of No.%s option is non-input.', ($i+1)), 'usces').$yn;
$opmestemp .= "No." . ($rows_num+1) . "\t" . __(sprintf('Option name of No.%s option is non-input.', ($i+1)), 'usces').$br.$yn;
}
$val['name'] = $value;
break;
case 2:
if( $value != NULL && ((0 != (int)$value) and (1 != (int)$value) and (2 != (int)$value) and (5 != (int)$value)) ){
$oplogtemp .= "No." . ($rows_num+1) . "\t" . __(sprintf('Option-entry-field of No.%s option is abnormal.', ($i+1)), 'usces').$yn;
$opmestemp .= "No." . ($rows_num+1) . "\t" . __(sprintf('Option-entry-field of No.%s option is abnormal.', ($i+1)), 'usces').$br.$yn;
}
$val['mean'] = $value;
break;
case 3:
if( $value != NULL && (!preg_match("/^[0-9]+$/", $value) || 1 < (int)$value) ){
$oplogtemp .= "No." . ($rows_num+1) . "\t" . __(sprintf('Option-required-item of No.%s option is abnormal.', ($i+1)), 'usces').$yn;
$opmestemp .= "No." . ($rows_num+1) . "\t" . __(sprintf('Option-required-item of No.%s option is abnormal.', ($i+1)), 'usces').$br.$yn;
}
$val['essential'] = $value;
break;
case 4:
if( ($value != NULL && $value == '') && (2 > $datas[($key-2)] && 0 < strlen($datas[($key-2)])) ){
$oplogtemp .= "No." . ($rows_num+1) . "\t" . __(sprintf('Option-select of No.%s option is non-input.', ($i+1)), 'usces').$yn;
$opmestemp .= "No." . ($rows_num+1) . "\t" . __(sprintf('Option-select of No.%s option is non-input.', ($i+1)), 'usces').$br.$yn;
}
$val['value'] = $value;
break;
}
}
if( !WCUtils::is_blank($val['name']) || !WCUtils::is_blank($val['mean']) || !WCUtils::is_blank($val['essential']) || !WCUtils::is_blank($val['value']) ){
$logtemp .= $oplogtemp;
$mestemp .= $opmestemp;
}
}
if( 0 < strlen($logtemp) ){
$err_num++;
$log .= $logtemp;
echo $mestemp;
continue;
}
/******************/
$checkend = microtime(true);
$checktime += $checkend-$lineready;
/*////////////////////////////////////////*/
// insPost
/*////////////////////////////////////////*/
//wp_posts data reg;
$cdatas = array();
$post_fields = array();
$sku = array();
$opt = array();
$valstr = '';
if( $pre_code != $datas[USCES_COL_ITEM_CODE] ){
$sku_index = 0;
$cdatas['ID'] = $post_id;
$data = $datas[USCES_COL_POST_MODIFIED];
if( $data == '' || $data == '0000-00-00 00:00:00' ){
$cdatas['post_date'] = current_time( 'mysql' );
$cdatas['post_date_gmt'] = current_time( 'mysql', 1 );
$cdatas['post_modified'] = current_time( 'mysql' );
$cdatas['post_modified_gmt'] = current_time( 'mysql', 1 );
}else{
if(preg_match("/^[0-9]+$/", substr($data,0,4))) {//先頭4桁が数値のみ
$time_data =strtotime($data);
} else {
$datetime = explode(' ', $data);
$date_str = usces_dates_interconv( $datetime[0] ).' '.$datetime[1];
$time_data =strtotime($date_str);
}
$cdatas['post_date'] = date('Y-m-d H:i:s', $time_data);
$cdatas['post_date_gmt'] = gmdate('Y-m-d H:i:s', $time_data);
$cdatas['post_modified'] = date('Y-m-d H:i:s', $time_data);
$cdatas['post_modified_gmt'] = gmdate('Y-m-d H:i:s', $time_data);
}
//usces_log('mysql2date : '.mysql2date('U', $cdatas['post_modified'], false) . '/' . mysql2date('U', current_time( 'mysql' ), false), 'acting_transaction.log');
if ( 'publish' == $datas[USCES_COL_POST_STATUS] ) {
$now = current_time( 'mysql' );
if ( mysql2date('U', $cdatas['post_modified'], false) > mysql2date('U', $now, false) )
$datas[USCES_COL_POST_STATUS] = 'future';
} elseif( 'future' == $datas[USCES_COL_POST_STATUS] ) {
$now = current_time( 'mysql' );
if ( mysql2date('U', $cdatas['post_modified'], false) <= mysql2date('U', $now, false) )
$datas[USCES_COL_POST_STATUS] = 'publish';
}
$cdatas['ID'] = $post_id;
$cdatas['post_author'] = ( !WCUtils::is_blank($datas[USCES_COL_POST_AUTHOR]) ) ? $datas[USCES_COL_POST_AUTHOR] : 1;
$cdatas['post_content'] = trim(mb_convert_encoding($datas[USCES_COL_POST_CONTENT], 'UTF-8', 'SJIS'));
$cdatas['post_title'] = trim(mb_convert_encoding($datas[USCES_COL_POST_TITLE], 'UTF-8', 'SJIS'));
$cdatas['post_excerpt'] = trim(mb_convert_encoding($datas[USCES_COL_POST_EXCERPT], 'UTF-8', 'SJIS'));
$cdatas['post_status'] = $datas[USCES_COL_POST_STATUS];
$cdatas['comment_status'] = ( !WCUtils::is_blank($datas[USCES_COL_POST_COMMENT_STATUS]) ) ? $datas[USCES_COL_POST_COMMENT_STATUS] : 'close';
$cdatas['ping_status'] = 'close';
$cdatas['post_password'] = ( 'private' == $cdatas['post_status'] ) ? '' : $datas[USCES_COL_POST_PASSWORD];
$cdatas['post_type'] = 'post';
$cdatas['post_parent'] = 0;
$spname = sanitize_title(trim(mb_convert_encoding($datas[USCES_COL_POST_NAME], 'UTF-8', 'SJIS')));
$cdatas['post_name'] = urlencode(wp_unique_post_slug($spname, $cdatas['ID'], $cdatas['post_status'], $cdatas['post_type'], $cdatas['post_parent']));
$cdatas['to_ping'] = '';
$cdatas['pinged'] = '';
$cdatas['menu_order'] = 0;
$cdatas['post_mime_type'] = 'item';
$cdatas['post_content_filtered'] = '';
if ( empty($cdatas['post_name']) && !in_array( $cdatas['post_status'], array( 'draft', 'pending', 'auto-draft' ) ) ) {
$cdatas['post_name'] = sanitize_title($cdatas['post_title'], $post_id);
}
if($mode == 'add') {
$cdatas['guid'] = '';
if ( false === $wpdb->insert( $wpdb->posts, $cdatas ) ) {
$err_num++;
$mes = "No." . ($rows_num+1) . "\t".__('This data was not registered in the database.', 'usces');
$log .= $mes.$yn;
echo $mes.$br.$yn;
$pre_code = $datas[USCES_COL_ITEM_CODE];
continue;
}
$post_id = $wpdb->insert_id;
$where = array( 'ID' => $post_id );
$wpdb->update( $wpdb->posts, array( 'guid' => get_permalink( $post_id ) ), $where );
/******************/
$insert_post = microtime(true);
$insertposttime += $insert_post-$checkend;
}elseif($mode == 'upd') {
$where = array( 'ID' => $post_id );
if ( false === $wpdb->update( $wpdb->posts, $cdatas, $where ) ) {
$err_num++;
$mes = "No." . ($rows_num+1) . "\t".__('The data were not registered with a database.', 'usces');
$log .= $mes.$yn;
echo $mes.$br.$yn;
$pre_code = $datas[USCES_COL_ITEM_CODE];
continue;
}
/******************/
$insert_post = microtime(true);
$insertposttime += $insert_post-$checkend;
//end of wp_insert_post
/************************************************************************************************/
/*////////////////////////////////////////*/
// delMeta
/*////////////////////////////////////////*/
//delete all metas of Item
//20130723ysk start 0000734
$meta_key_table = array( '_itemCode', '_itemName', '_itemRestriction', '_itemPointrate', '_itemGpNum1', '_itemGpDis1', '_itemGpNum2', '_itemGpDis2', '_itemGpNum3', '_itemGpDis3', '_itemShipping', '_itemDeliveryMethod', '_itemShippingCharge', '_itemIndividualSCharge', '_iopt_', '_isku_' );
$cfrows = explode( ';', trim(mb_convert_encoding($datas[USCES_COL_CUSTOM_FIELD], 'UTF-8', 'SJIS')) );
if( !(1 === count($cfrows) && '' == reset($cfrows)) ) {
foreach( $cfrows as $row ) {
list( $meta_key, $meta_value ) = explode( '=', $row, 2 );
if( !WCUtils::is_blank($meta_key) )
array_push( $meta_key_table, trim($meta_key) );
}
}
$meta_key_table = apply_filters( 'usces_filter_uploadcsv_delete_postmeta', $meta_key_table );
$query = $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE meta_key IN ( %s ) AND post_id = %d", implode( "','", $meta_key_table ), $post_id );
$query = stripslashes( $query );
//$query = $wpdb->prepare("DELETE FROM $wpdb->postmeta WHERE meta_key <> '_thumbnail_id' AND post_id = %d", $post_id);
//20130723ysk end
$dbres = $wpdb->query( $query );
if( $dbres === false ) {
$err_num++;
$mes = "No." . ($rows_num+1) . "\t".__('Error : delete postmeta', 'usces');
$log .= $mes.$yn;
echo $mes.$br.$yn;
$pre_code = $datas[USCES_COL_ITEM_CODE];
continue;
}
// delete Item revisions
$query = $wpdb->prepare("DELETE FROM $wpdb->posts WHERE post_parent = %d AND post_type = %s", $post_id, 'revision');
$dbres = $wpdb->query( $query );
if( $dbres === false ) {
$err_num++;
$mes = "No." . ($rows_num+1) . "\t".__('Error : delete revisions', 'usces');
$log .= $mes.$yn;
echo $mes.$br.$yn;
$pre_code = $datas[USCES_COL_ITEM_CODE];
continue;
}
// delete relationships of category
$query = $wpdb->prepare("DELETE FROM $wpdb->term_relationships WHERE object_id = %d", $post_id);
$dbres = $wpdb->query( $query );
if( $dbres === false ) {
$err_num++;
$mes = "No." . ($rows_num+1) . "\t".__('Error : delete term_relationships(category)', 'usces');
$log .= $mes.$yn;
echo $mes.$br.$yn;
$pre_code = $datas[USCES_COL_ITEM_CODE];
continue;
}
// delete relationships of tag
$query = "SELECT term_taxonomy_id, COUNT(*) AS ct FROM $wpdb->term_relationships GROUP BY term_taxonomy_id";
$relation_data = $wpdb->get_results( $query, ARRAY_A );
foreach((array)$relation_data as $relation_rows) {
$term_taxonomy_ids['term_taxonomy_id'] = $relation_rows['term_taxonomy_id'];
$term_taxonomy_updatas['count'] = $relation_rows['ct'];
$dbres = $wpdb->update( $wpdb->term_taxonomy, $term_taxonomy_updatas, $term_taxonomy_ids );
if( $dbres === false ) {
$err_num++;
$mes = "No." . ($rows_num+1) . "\t".__('Error : delete term_relationships(tag)', 'usces');
$log .= $mes.$yn;
echo $mes.$br.$yn;
$pre_code = $datas[USCES_COL_ITEM_CODE];
continue;
}
}
}
/******************/
$metadelete = microtime(true);
$metadeletetime += $metadelete-$insert_post;
/*////////////////////////////////////////*/
// addMeta
/*////////////////////////////////////////*/
//add postmeta
$itemDeliveryMethod = explode(';', $datas[USCES_COL_ITEM_DELIVERYMETHOD]);
$valstr .= '(' . $post_id . ", '_itemCode','" . mysql_real_escape_string(trim(mb_convert_encoding($datas[USCES_COL_ITEM_CODE], 'UTF-8', 'SJIS'))) . "'),";
$valstr .= '(' . $post_id . ", '_itemName','" . mysql_real_escape_string(trim(mb_convert_encoding($datas[USCES_COL_ITEM_NAME], 'UTF-8', 'SJIS'))) . "'),";
$valstr .= '(' . $post_id . ", '_itemRestriction','" . $datas[USCES_COL_ITEM_RESTRICTION] . "'),";
$valstr .= '(' . $post_id . ", '_itemPointrate','" . $datas[USCES_COL_ITEM_POINTRATE] . "'),";
$valstr .= '(' . $post_id . ", '_itemGpNum1','" . $datas[USCES_COL_ITEM_GPNUM1] . "'),";
$valstr .= '(' . $post_id . ", '_itemGpDis1','" . $datas[USCES_COL_ITEM_GPDIS1] . "'),";
$valstr .= '(' . $post_id . ", '_itemGpNum2','" . $datas[USCES_COL_ITEM_GPNUM2] . "'),";
$valstr .= '(' . $post_id . ", '_itemGpDis2','" . $datas[USCES_COL_ITEM_GPDIS2] . "'),";
$valstr .= '(' . $post_id . ", '_itemGpNum3','" . $datas[USCES_COL_ITEM_GPNUM3] . "'),";
$valstr .= '(' . $post_id . ", '_itemGpDis3','" . $datas[USCES_COL_ITEM_GPDIS3] . "'),";
$valstr .= '(' . $post_id . ", '_itemShipping','" . $datas[USCES_COL_ITEM_SHIPPING] . "'),";
$valstr .= '(' . $post_id . ", '_itemDeliveryMethod','" . mysql_real_escape_string(serialize($itemDeliveryMethod)) . "'),";
$valstr .= '(' . $post_id . ", '_itemShippingCharge','" . $datas[USCES_COL_ITEM_SHIPPINGCHARGE] . "'),";
$valstr .= '(' . $post_id . ", '_itemIndividualSCharge','" . $datas[USCES_COL_ITEM_INDIVIDUALSCHARGE] . "'),";
//$valstr .= '(' . $post_id . ", '".mysql_real_escape_string($meta_key)."', '" . mysql_real_escape_string(serialize($sku)) . "'),";
// print_r($valstr);
$valstr = rtrim($valstr, ',');
$dbres = $wpdb->query("INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) VALUES $valstr");
// $dbres = mysql_query($query) or die(mysql_error());
//add term_relationships, edit term_taxonomy
//category
$categories = explode(';', $datas[USCES_COL_CATEGORY]);
foreach((array)$categories as $category){
$query = $wpdb->prepare("SELECT term_taxonomy_id FROM $wpdb->term_taxonomy
WHERE term_id = %d", $category);
$term_taxonomy_id = $wpdb->get_var( $query );
if($term_taxonomy_id == NULL) continue;
$query = $wpdb->prepare("INSERT INTO $wpdb->term_relationships
(object_id, term_taxonomy_id, term_order) VALUES
(%d, %d, 0)",
$post_id, $term_taxonomy_id
);
$dbres = $wpdb->query($query);
if( !$dbres ) continue;
$query = $wpdb->prepare("SELECT COUNT(*) FROM $wpdb->term_relationships
WHERE term_taxonomy_id = %d", $term_taxonomy_id);
$tct = $wpdb->get_var( $query );
$query = $wpdb->prepare("UPDATE $wpdb->term_taxonomy SET count = %d
WHERE term_taxonomy_id = %d",
$tct, $term_taxonomy_id
);
$dbres = $wpdb->query($query);
}
//tag
$tags = explode(';', trim(mb_convert_encoding($datas[USCES_COL_POST_TAG], 'UTF-8', 'SJIS')));
// wp_set_object_terms($post_id, (array)$tags, 'post_tag');
foreach((array)$tags as $tag){
$tag = trim($tag, " \n\t\r\0\x0B,");
if( empty($tag) )
continue;
$query = $wpdb->prepare("SELECT term_id FROM $wpdb->terms WHERE name = %s", $tag);
$term_id = $wpdb->get_var( $query );
//new tag
if( empty($term_id) ){
$query = $wpdb->prepare("INSERT INTO $wpdb->terms (name, slug, term_group) VALUES
(%s, %s, 0)", $tag, urlencode($tag));
$dbres = $wpdb->query( $query );
if( !$dbres )
continue;
$term_id = $wpdb->insert_id;
}
$query = $wpdb->prepare("SELECT term_taxonomy_id FROM $wpdb->term_taxonomy
WHERE term_id = %d", $term_id);
$term_taxonomy_id = $wpdb->get_var( $query );
if( !$term_taxonomy_id ){
$query = $wpdb->prepare("INSERT INTO $wpdb->term_taxonomy
(term_id, taxonomy, description, parent, count) VALUES
(%d, %s, %s, 0, 0)", $term_id, 'post_tag', '');
$dbres = $wpdb->query( $query );
if( !$dbres )
continue;
$term_taxonomy_id = $wpdb->insert_id;
}
$query = $wpdb->prepare("INSERT INTO $wpdb->term_relationships
(object_id, term_taxonomy_id, term_order) VALUES
(%d, %d, 0)",
$post_id, $term_taxonomy_id
);
$dbres = $wpdb->query($query);
if( !$dbres ) continue;
$query = $wpdb->prepare("SELECT COUNT(*) FROM $wpdb->term_relationships
WHERE term_taxonomy_id = %d", $term_taxonomy_id);
$tct = $wpdb->get_var( $query );
$query = $wpdb->prepare("UPDATE $wpdb->term_taxonomy SET count = %d
WHERE term_taxonomy_id = %d",
$tct, $term_taxonomy_id
);
$dbres = $wpdb->query($query);
}
/*////////////////////////////////////////*/
// Add Custom Field
/*////////////////////////////////////////*/
$cfrows = explode(';', trim(mb_convert_encoding($datas[USCES_COL_CUSTOM_FIELD], 'UTF-8', 'SJIS')));
if( !(1 === count($cfrows) && '' == reset($cfrows)) ){
$valstr = '';
foreach( $cfrows as $row ){
list($meta_key, $meta_value) = explode( '=', $row, 2 );
if( !WCUtils::is_blank($meta_key) )
$valstr .= $wpdb->prepare("( %d, %s, %s),", $post_id, trim($meta_key), trim($meta_value));
}
if( !WCUtils::is_blank($valstr) ){
$valstr = rtrim($valstr, ',');
$dbres = $wpdb->query("INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) VALUES $valstr");
}
}
/******************/
$add_postmeta = microtime(true);
$addmetatime += $add_postmeta-$metadelete;
/*////////////////////////////////////////*/
// addOption
/*////////////////////////////////////////*/
// Add Item Option
for($i=0; $i<$opnum; $i++){
$opflg = true;
$optvalue = array();
for($o=1; $o<=4; $o++){
$key = ($min_field_num-1)+$o+($i*4);
// if( !isset($datas[$key]) ){
// break 2;
// }
if( $o === 1 && $datas[$key] == '' ){
$opflg = false;
break 1;
}
switch($o){
case 1:
$optvalue['name'] = trim(mb_convert_encoding($datas[$key], 'UTF-8', 'SJIS'));
break;
case 2:
$optvalue['means'] = (int)$datas[$key];
break;
case 3:
$optvalue['essential'] = (int)$datas[$key];
break;
case 4:
if( !empty($datas[$key]) ) {
$optvalue['value'] = str_replace(';', "\n", trim(mb_convert_encoding($datas[$key], 'UTF-8', 'SJIS')));
}else{
$optvalue['value'] = "";
}
break;
}
}
if( $opflg && !empty($optvalue) ){
$optvalue['sort'] = $i;
$resopt = usces_add_opt($post_id, $optvalue, false);
}
//$valstr .= '(' . $post_id . ", '".mysql_real_escape_string($ometa_key)."', '" . mysql_real_escape_string(maybe_serialize($opt)) . "'),";
}
}else{
$sku_index++;
}
/******************/
$optionmeta = microtime(true);
$AddOptiontime += $optionmeta-$add_postmeta;
/*////////////////////////////////////////*/
// addSku
/*////////////////////////////////////////*/
// Add Item SKU
$sku_code = trim(mb_convert_encoding($datas[USCES_COL_SKU_CODE], 'UTF-8', 'SJIS'));
$skuvalue['code'] = $sku_code;
$skuvalue['name'] = trim(mb_convert_encoding($datas[USCES_COL_SKU_NAME], 'UTF-8', 'SJIS'));
$skuvalue['cprice'] = $datas[USCES_COL_SKU_CPRICE];
$skuvalue['price'] = $datas[USCES_COL_SKU_PRICE];
$skuvalue['unit'] = trim(mb_convert_encoding($datas[USCES_COL_SKU_UNIT], 'UTF-8', 'SJIS'));
$skuvalue['stocknum'] = $datas[USCES_COL_SKU_ZAIKONUM];
$skuvalue['stock'] = $datas[USCES_COL_SKU_ZAIKO];
$skuvalue['gp'] = $datas[USCES_COL_SKU_GPTEKIYO];
$skuvalue['sort'] = $sku_index;
usces_add_sku( $post_id, $skuvalue, false );
// usces_log('skuvalue : '.$post_id.print_r($skuvalue,true), 'acting_transaction.log');
$comp_num++;
$pre_code = $datas[USCES_COL_ITEM_CODE];
clean_post_cache($post_id);
wp_cache_delete($post_id, 'posts');
wp_cache_delete($post_id, 'post_meta');
clean_object_term_cache($post_id, 'post');
/******************/
$addsku = microtime(true);
$AddSKUtime += $addsku-$optionmeta;
$onelinetime += $addsku-$linestart;
if( 0 === (($rows_num+1) % 10) ){
$av = $onelinetime/$rows_num;
$nt = round($av*($total_num-$rows_num));
if( 60 < $nt ){
$mtime = ceil($nt/60) . __('min', 'usces') . ($nt%60) . __('sec', 'usces') . ' ';
}else{
$mtime = $nt . __('sec', 'usces') . ' ';
}
echo ''.$yn;
echo ''.$yn;
ob_flush();
flush();
}
}
flock($fpi, LOCK_EX);
fputs($fpi, mb_convert_encoding($log, 'SJIS', 'UTF-8'));
flock($fpi, LOCK_UN);
fclose($fpi);
$res['status'] = 'success';
$res['message'] = __(sprintf('%2$s of %1$s lines registration completion, error on %3$s lines.',$total_num,$comp_num,$err_num), 'usces');
/******************/
$finish = microtime(true);
usces_log('ready : '.round($readytime-$start, 4), 'acting_transaction.log');
usces_log('lineReady : '.round($linereadytime/$total_num, 4), 'acting_transaction.log');
usces_log('dataCheck : '.round($checktime/$total_num, 4), 'acting_transaction.log');
usces_log('insPost : '.round($insertposttime/$total_num, 4), 'acting_transaction.log');
usces_log('delMeta : '.round($metadeletetime/$total_num, 4), 'acting_transaction.log');
usces_log('addMeta : '.round($addmetatime/$total_num, 4), 'acting_transaction.log');
usces_log('addOption : '.round($AddOptiontime/$total_num, 4), 'acting_transaction.log');
usces_log('addSku : '.round($AddSKUtime/$total_num, 4), 'acting_transaction.log');
usces_log('oneline : '.round($onelinetime/$total_num, 4), 'acting_transaction.log');
usces_log('finish : '.round($finish-$start, 4), 'acting_transaction.log');
usces_log('totalLines: '.$total_num, 'acting_transaction.log');
usces_log('--------------------------------------------------------------', 'acting_transaction.log');
echo ''.$yn;
if( $log ){
//echo '
' . $log . '
'.$yn;
}else{
echo __('Finished', 'usces').$yn;
}
echo '
'.$yn;
unlink($path.$file_name);
return $res;
}
endif;
// item list download
if( !function_exists('usces_download_item_list') ):
function usces_download_item_list() {
require_once( USCES_PLUGIN_DIR . "/classes/itemList.class.php" );
global $wpdb, $usces;
$ext = 'csv';
if($ext == 'csv') {//CSV
$table_h = "";
$table_f = "";
$tr_h = "";
$tr_f = "";
$th_h1 = '"';
$th_h = ',"';
$th_f = '"';
$td_h1 = '"';
$td_h = ',"';
$td_f = '"';
$sp = ";";
$eq = "=";
$lf = "\n";
} else {
exit();
}
//==========================================================================
$usces_opt_item = get_option('usces_opt_item');
if(!is_array($usces_opt_item)){
$usces_opt_item = array();
}
$usces_opt_item['chk_header'] = (isset($_REQUEST['chk_header'])) ? 1 : 0;
$usces_opt_item['ftype_item'] = $ext;
update_option('usces_opt_item', $usces_opt_item);
//==========================================================================
$tableName = $wpdb->posts;
if( USCES_MYSQL_VERSION >= 5 ) {
$arr_column = array(
__('item code', 'usces') => 'item_code',
__('item name', 'usces') => 'item_name',
__('SKU code', 'usces') => 'sku_key',
__('selling price', 'usces') => 'price',
__('stock', 'usces') => 'zaiko_num',
__('stock status', 'usces') => 'zaiko',
__('Categories', 'usces') => 'category',
__('display status', 'usces') => 'display_status');
} else {
$arr_column = array(
__('item code', 'usces') => 'item_code',
__('page title', 'usces') => 'post_title',
__('SKU code', 'usces') => 'sku_key',
__('selling price', 'usces') => 'price',
__('stock', 'usces') => 'zaiko_num',
__('stock status', 'usces') => 'zaiko',
__('Categories', 'usces') => 'category',
__('display status', 'usces') => 'display_status');
}
$_REQUEST['searchIn'] = "searchIn";
$DT = new dataList($tableName, $arr_column);
$DT->pageLimit = 'off';
$DT->exportMode = true;
$res = $DT->MakeTable();
$rows = $DT->rows;
//==========================================================================
$line = $table_h;
if($usces_opt_item['chk_header'] == 1) {
$line .= $tr_h;
$line .= $th_h1.'Post ID'.$th_f;
$line .= $th_h.__('Post Author', 'usces').$th_f;
$line .= $th_h.__('explanation', 'usces').$th_f;
$line .= $th_h.__('Title', 'usces').$th_f;
$line .= $th_h.__('excerpt', 'usces').$th_f;
$line .= $th_h.__('display status', 'usces').$th_f;
$line .= $th_h.__('Comment Status', 'usces').$th_f;
$line .= $th_h.__('Post PAssword', 'usces').$th_f;
$line .= $th_h.__('Post Name', 'usces').$th_f;
$line .= $th_h.__('Publish on:').$th_f;
$line .= $th_h.__('item code', 'usces').$th_f;
$line .= $th_h.__('item name', 'usces').$th_f;
$line .= $th_h.__('Limited amount for purchase', 'usces').$th_f;
$line .= $th_h.__('Percentage of points', 'usces').$th_f;
$line .= $th_h.__('Business package discount', 'usces').'1-'.__('num', 'usces').$th_f.$th_h.__('Business package discount', 'usces').'1-'.__('rate', 'usces').$th_f;
$line .= $th_h.__('Business package discount', 'usces').'2-'.__('num', 'usces').$th_f.$th_h.__('Business package discount', 'usces').'2-'.__('rate', 'usces').$th_f;
$line .= $th_h.__('Business package discount', 'usces').'3-'.__('num', 'usces').$th_f.$th_h.__('Business package discount', 'usces').'3-'.__('rate', 'usces').$th_f;
$line .= $th_h.__('estimated shipping date', 'usces').$th_f;
$line .= $th_h.__('shipping option', 'usces').$th_f;
$line .= $th_h.__('Shipping', 'usces').$th_f;
$line .= $th_h.__('Postage individual charging', 'usces').$th_f;
$line .= $th_h.__('Categories', 'usces').$th_f;
$line .= $th_h.__('tag', 'usces').$th_f;
$line .= $th_h.__('Custom Field', 'usces').$th_f;
$line .= $th_h.__('SKU code', 'usces').$th_f;
$line .= $th_h.__('SKU display name ', 'usces').$th_f;
$line .= $th_h.__('normal price', 'usces').$th_f;
$line .= $th_h.__('Sale price', 'usces').$th_f;
$line .= $th_h.__('stock', 'usces').$th_f;
$line .= $th_h.__('stock status', 'usces').$th_f;
$line .= $th_h.__('unit', 'usces').$th_f;
$line .= $th_h.__('Apply business package', 'usces').$th_f;
$line .= $th_h.__('option name', 'usces').$th_f.$th_h.__('Field type', 'usces').$th_f.$th_h.__('Required', 'usces').$th_f.$th_h.__('selected amount', 'usces').$th_f;
$line .= $tr_f.$lf;
}
//==========================================================================
mb_http_output('pass');
set_time_limit(3600);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=usces_item_list.".$ext);
ob_end_flush();
flush();
foreach((array)$rows as $array) {
$post_id = $array['ID'];
$post = get_post($post_id);
//Post Data
$line_item = $td_h1.$post->ID.$td_f;
$line_item .= $td_h.$post->post_author.$td_f;
$line_item .= $td_h.usces_entity_decode($post->post_content, $ext).$td_f;
$line_item .= $td_h.usces_entity_decode($post->post_title, $ext).$td_f;
$line_item .= $td_h.usces_entity_decode($post->post_excerpt, $ext).$td_f;
$line_item .= $td_h.$post->post_status.$td_f;
$line_item .= $td_h.$post->comment_status.$td_f;
$line_item .= $td_h.$post->post_password.$td_f;
$line_item .= $td_h.urldecode($post->post_name).$td_f;
$line_item .= $td_h.$post->post_date.$td_f;
//Item Meta
$line_item .= $td_h.$usces->getItemCode($post_id).$td_f;
$line_item .= $td_h.usces_entity_decode($usces->getItemName($post_id), $ext).$td_f;
$line_item .= $td_h.$usces->getItemRestriction($post_id).$td_f;
$line_item .= $td_h.$usces->getItemPointrate($post_id).$td_f;
$line_item .= $td_h.$usces->getItemGpNum1($post_id).$td_f.$td_h.$usces->getItemGpDis1($post_id).$td_f;
$line_item .= $td_h.$usces->getItemGpNum2($post_id).$td_f.$td_h.$usces->getItemGpDis2($post_id).$td_f;
$line_item .= $td_h.$usces->getItemGpNum3($post_id).$td_f.$td_h.$usces->getItemGpDis3($post_id).$td_f;
$line_item .= $td_h.$usces->getItemShipping($post_id).$td_f;
$delivery_method = '';
$itemDeliveryMethod = $usces->getItemDeliveryMethod($post_id);
foreach((array)$itemDeliveryMethod as $k => $v) {
$delivery_method .= $v.$sp;
}
$delivery_method = rtrim($delivery_method, $sp);
$line_item .= $td_h.$delivery_method.$td_f;
$line_item .= $td_h.$usces->getItemShippingCharge($post_id).$td_f;
$line_item .= $td_h.$usces->getItemIndividualSCharge($post_id).$td_f;
//Categories
$category = '';
$cat_ids = wp_get_post_categories($post_id);
if(!empty($cat_ids)) {
foreach($cat_ids as $id) {
$category .= $id.$sp;
}
$category = rtrim($category, $sp);
}
$line_item .= $td_h.$category.$td_f;
//Tags
$tag = '';
$tags_ob = wp_get_object_terms($post_id, 'post_tag');
foreach($tags_ob as $ob) {
$tag .= $ob->name.$sp;
}
$tag = rtrim($tag, $sp);
$line_item .= $td_h.$tag.$td_f;
//Custom Fields
$cfield = '';
$custom_fields = $usces->get_post_user_custom($post_id);
if( is_array($custom_fields) && 0 < count($custom_fields) ){
foreach($custom_fields as $cfkey => $cfvalues ) {
if( is_array($cfvalues) )
$cfield .= usces_entity_decode($cfkey, $ext) . $eq . usces_entity_decode($cfvalues[0], $ext) . $sp;
else
$cfield .= usces_entity_decode($cfkey, $ext) . $eq . usces_entity_decode($cfvalues, $ext) . $sp;
}
$cfield = rtrim($cfield, $sp);
}
$line_item .= $td_h.$cfield.$td_f;
//Item Options
$line_options = '';
$option_meta = usces_get_opts( $post_id, 'sort' );
foreach($option_meta as $option_value) {
$value = '';
if(is_array($option_value['value'])) {
foreach($option_value['value'] as $k => $v) {
$values = explode("\n", $v);
foreach($values as $val) {
$value .= $val.$sp;
}
}
$value = rtrim($value, $sp);
} else {
$value = trim($option_value['value']);
$value = str_replace("\n", ';', $value);
}
$line_options .= $td_h.usces_entity_decode($option_value['name'], $ext).$td_f;
$line_options .= $td_h.$option_value['means'].$td_f;
$line_options .= $td_h.$option_value['essential'].$td_f;
$line_options .= $td_h.usces_entity_decode($value, $ext).$td_f;
}
//SKUs
$sku_meta = $usces->get_skus( $post_id, 'sort' );
foreach($sku_meta as $sku_value) {
$line_sku = $td_h.$sku_value['code'].$td_f;
$line_sku .= $td_h.usces_entity_decode($sku_value['name'], $ext).$td_f;
$line_sku .= $td_h.usces_crform($sku_value['cprice'], false, false, 'return', false).$td_f;
$line_sku .= $td_h.usces_crform($sku_value['price'], false, false, 'return', false).$td_f;
$line_sku .= $td_h.$sku_value['stocknum'].$td_f;
$line_sku .= $td_h.$sku_value['stock'].$td_f;
$line_sku .= $td_h.usces_entity_decode($sku_value['unit'], $ext).$td_f;
$line_sku .= $td_h.$sku_value['gp'].$td_f;
$line .= $tr_h.$line_item.$line_sku.$line_options.$tr_f.$lf;
}
print(mb_convert_encoding($line, "SJIS-win", "UTF-8"));
if(ob_get_contents ()){
ob_flush();
flush();
}
$line = '';
wp_cache_flush();
}
$end = $table_f.$lf;
//==========================================================================
print(mb_convert_encoding($end, "SJIS-win", "UTF-8"));
unset($rows, $DT, $line, $line_item, $line_options, $line_sku);
exit();
}
endif;
}
?>