PluginProbe
Welcart e-Commerce / 1.4.0
Welcart e-Commerce v1.4.0
2.12.4 2.12.3 2.11.35 2.12.2 2.12.1 2.11.34 2.11.33 2.11.32 2.11.31 2.11.30 1.3.16 1.3.17 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.10 1.4.11 1.4.12 All 292 releases
usc-e-shop / functions / define_function.php

define_function.php in Welcart e-Commerce 1.4.0, at functions/define_function.php

1,295 lines 50.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 function usces_define_functions(){
3
4 //20101111ysk start
5 if( !function_exists('usces_item_uploadcsv') ):
6 function usces_item_uploadcsv(){
7 global $wpdb, $usces, $user_ID;
8
9 if( !current_user_can( 'import' ) ){
10 $res['status'] = 'error';
11 $res['message'] = __('You do not have permission to do that.');
12 $url = USCES_ADMIN_URL . '?page=usces_itemedit&usces_status=' . $res['status'] . '&usces_message=' . urlencode($res['message']);
13 wp_redirect($url);
14 exit;
15 }
16
17 //check data SELECT id, title FROM table GROUP BY id HAVING COUNT(id) > 1
18 $query = $wpdb->prepare("SELECT post_id, meta_value FROM {$wpdb->postmeta}
19 LEFT JOIN {$wpdb->posts} ON ID = post_id
20 WHERE meta_key = %s AND (post_status = 'pending' OR post_status = 'publish' OR post_status = 'draft' OR post_status = 'private' OR post_status = 'future')
21 GROUP BY meta_value HAVING COUNT(meta_value) > 1",
22 '_itemCode');
23 $db_check = $wpdb->get_results( $query, ARRAY_A );
24 if( $db_check ) {
25 $res['status'] = 'error';
26 $res['message'] .= __('The same product cord is registered.', 'usces');
27 foreach($db_check as $d_item){
28 $res['message'] .= ' , ' . $d_item['meta_value'];
29 }
30 $url = USCES_ADMIN_URL . '?page=usces_itemedit&usces_status=' . $res['status'] . '&usces_message=' . urlencode($res['message']);
31 wp_redirect($url);
32 exit;
33 }
34
35
36 $path = WP_CONTENT_DIR . '/uploads/';
37 /*********************************************************************/
38 // Upload
39 /**********************************************************************/
40 if( isset($_REQUEST['action']) && 'itemcsv' == $_REQUEST['action'] ){
41 $workfile = $_FILES["usces_upcsv"]["tmp_name"];
42
43 if ( !is_uploaded_file($workfile) ) {
44 $res['status'] = 'error';
45 $res['message'] = __('The file was not uploaded.', 'usces');
46 $url = USCES_ADMIN_URL . '?page=usces_itemedit&usces_status=' . $res['status'] . '&usces_message=' . urlencode($res['message']);
47 wp_redirect($url);
48 exit;
49 }
50
51 //check ext
52 list($fname, $fext) = explode('.', $_FILES["usces_upcsv"]["name"], 2);
53 if( $fext != 'csv' ) {
54 $res['status'] = 'error';
55 $res['message'] = __('The file is not supported.', 'usces').$fname.'.'.$fext;
56 $url = USCES_ADMIN_URL . '?page=usces_itemedit&usces_status=' . $res['status'] . '&usces_message=' . urlencode($res['message']);
57 wp_redirect($url);
58 exit;
59 }
60
61 $new_filename = base64_encode($fname . '_' . time() . '.' .$fext);
62 if ( ! move_uploaded_file($_FILES['usces_upcsv']['tmp_name'], $path.$new_filename) ) {
63 $res['status'] = 'error';
64 $res['message'] = __('The file was not stored.', 'usces').$fname.'.'.$fext;
65 $url = USCES_ADMIN_URL . '?page=usces_itemedit&usces_status=' . $res['status'] . '&usces_message=' . urlencode($res['message']);
66 wp_redirect($url);
67 exit;
68 }
69 return $new_filename;
70 }
71
72
73 $yn = "\r\n";
74 $br = "<br />";
75 /*********************************************************************/
76 // Register
77 /**********************************************************************/
78 if( isset($_REQUEST['regfile']) && !WCUtils::is_blank($_REQUEST['regfile']) && isset($_REQUEST['action']) && 'upload_register' == $_REQUEST['action'] ){
79 $file_name = $_REQUEST['regfile'];
80 $decode_filename = base64_decode($file_name);
81 if( ! file_exists($path.$file_name) ){
82 $res['status'] = 'error';
83 $res['message'] = __('CSV file does not exist.', 'usces').esc_html($decode_filename);
84 //echo $res['status'] . ' : ' . $res['message'];
85 //return;
86 return( $res );
87 }
88 }
89 /*////////////////////////////////////////*/
90 // ready
91 /*////////////////////////////////////////*/
92 $start = microtime(true);
93
94 //$wpdb->show_errors();
95 $wpdb->query( 'SET SQL_BIG_SELECTS=1' );
96 set_time_limit(3600);
97
98 define('USCES_COL_POST_ID', 0);
99 define('USCES_COL_POST_AUTHOR', 1);
100 define('USCES_COL_POST_CONTENT', 2);
101 define('USCES_COL_POST_TITLE', 3);
102 define('USCES_COL_POST_EXCERPT', 4);
103 define('USCES_COL_POST_STATUS', 5);
104 define('USCES_COL_POST_COMMENT_STATUS', 6);
105 define('USCES_COL_POST_PASSWORD', 7);
106 define('USCES_COL_POST_NAME', 8);
107 define('USCES_COL_POST_MODIFIED', 9);
108
109 define('USCES_COL_ITEM_CODE', 10);
110 define('USCES_COL_ITEM_NAME', 11);
111 define('USCES_COL_ITEM_RESTRICTION', 12);
112 define('USCES_COL_ITEM_POINTRATE', 13);
113 define('USCES_COL_ITEM_GPNUM1', 14);
114 define('USCES_COL_ITEM_GPDIS1', 15);
115 define('USCES_COL_ITEM_GPNUM2', 16);
116 define('USCES_COL_ITEM_GPDIS2', 17);
117 define('USCES_COL_ITEM_GPNUM3', 18);
118 define('USCES_COL_ITEM_GPDIS3', 19);
119 define('USCES_COL_ITEM_SHIPPING', 20);
120 define('USCES_COL_ITEM_DELIVERYMETHOD', 21);
121 define('USCES_COL_ITEM_SHIPPINGCHARGE', 22);
122 define('USCES_COL_ITEM_INDIVIDUALSCHARGE', 23);
123
124 define('USCES_COL_CATEGORY', 24);
125 define('USCES_COL_POST_TAG', 25);
126 define('USCES_COL_CUSTOM_FIELD', 26);
127
128 define('USCES_COL_SKU_CODE', 27);
129 define('USCES_COL_SKU_NAME', 28);
130 define('USCES_COL_SKU_CPRICE', 29);
131 define('USCES_COL_SKU_PRICE', 30);
132 define('USCES_COL_SKU_ZAIKONUM', 31);
133 define('USCES_COL_SKU_ZAIKO', 32);
134 define('USCES_COL_SKU_UNIT', 33);
135 define('USCES_COL_SKU_GPTEKIYO', 34);
136 // define('IDENTIFIER_OLE', pack("CCCCCCCC",0xd0,0xcf,0x11,0xe0,0xa1,0xb1,0x1a,0xe1));
137
138 $lines = array();
139 $total_num = 0;
140 $comp_num = 0;
141 $err_num = 0;
142 $min_field_num = apply_filters( 'usces_filter_uploadcsv_min_field_num', 35 );
143 $log = '';
144 $pre_code = '';
145 $sku_index = 0;
146 $res = array();
147 $date_pattern = "/(\d{4})-(\d{2}|\d)-(\d{2}|\d) (\d{2}):(\d{2}|\d):(\d{2}|\d)/";
148 $linereadytime = 0;
149 $checktime = 0;
150 $insertposttime = 0;
151 $metadeletetime = 0;
152 $addmetatime = 0;
153 $AddOptiontime = 0;
154 $AddSKUtime = 0;
155 $onelinetime = 0;
156
157 //log
158 if ( ! ($fpi = fopen (USCES_PLUGIN_DIR.'/logs/itemcsv_log.txt', "w"))) {
159 $res['status'] = 'error';
160 $res['message'] = __('The log file was not prepared for.', 'usces').esc_html($decode_filename);
161 echo $res['status'] . ' : ' . $res['message'];
162 return;
163 }
164 //read data
165 if ( ! ($fpo = fopen ($path.$file_name, "r"))) {
166 $res['status'] = 'error';
167 $res['message'] = __('A file does not open.', 'usces').esc_html($decode_filename);
168 echo $res['status'] . ' : ' . $res['message'];
169 return;
170 }
171
172
173 $orglines = array();
174 $sp = ",";
175 $fname_parts = explode('.', $decode_filename);
176 if('csv' !== end($fname_parts)) {
177 $res['status'] = 'error';
178 $res['message'] = __('This file is not in the CSV file.', 'usces').esc_html($decode_filename);
179 echo $res['status'] . ' : ' . $res['message'];
180 return;
181
182 } else {
183 $buf = '';
184 while (! feof ($fpo)) {
185 $temp = fgets ($fpo, 10240);
186 if( 0 == strlen($temp) ) continue;
187
188 $num = substr_count($temp, '"');
189 if( 0 == $num % 2 && '' == $buf ){
190 $orglines[] = $temp;
191 }elseif( 1 == $num % 2 && '' == $buf ){
192 $buf .= $temp;
193 }elseif( 0 == $num % 2 && '' != $buf ){
194 $buf .= $temp;
195 }elseif( 1 == $num % 2 && '' != $buf ){
196 $buf .= $temp;
197 $orglines[] = $buf;
198 $buf = '';
199 }
200 }
201 }
202 fclose($fpo);
203
204 echo '<script type="text/javascript">changeMsg("' . __('Processing...', 'usces') . '");</script>'.$yn;
205 echo '<div class="error_log">'.$yn;
206 ob_flush();
207 flush();
208
209 foreach($orglines as $line){
210 $line = trim($line);
211 if( 0 !== strpos( $line, 'Post ID' ) && !empty($line) )
212 $lines[] = $line;
213 }
214 $total_num = count($lines);
215
216 $readytime = microtime(true);
217 //reg loop
218 foreach($lines as $rows_num => $line){
219
220 /*////////////////////////////////////////*/
221 // lineReady
222 /*////////////////////////////////////////*/
223 $linestart = microtime(true);
224 $datas = array();
225
226 $logtemp = '';
227 $mestemp = '';
228 $line = trim($line);
229 if( empty($line) ) continue;
230
231 $d = explode($sp, $line);
232 $buf = '';
233 foreach($d as $data) {
234 $num = substr_count($data, '"');
235 if( 0 == $num % 2 && '' == $buf ){
236 if( '"' == substr($data, 0, 1) )
237 $data = substr($data, 1);
238 if( '"' == substr($data, -1) )
239 $data = substr($data, 0, -1);
240 $data = str_replace(array('""'), '"', $data);
241 $datas[] = ( false !== $data ) ? $data : '';
242 }elseif( 1 == $num % 2 && '' == $buf ){
243 $buf .= $data;
244 }elseif( 0 == $num % 2 && '' != $buf ){
245 $buf .= $sp.$data;
246 }elseif( 1 == $num % 2 && '' != $buf ){
247 $buf .= $sp.$data;
248 if( '"' == substr($buf, 0, 1) )
249 $buf = substr($buf, 1);
250 if( '"' == substr($buf, -1) )
251 $buf = substr($buf, 0, -1);
252 $buf = str_replace(array('""'), '"', $buf);
253 $datas[] = ( false !== $buf ) ? $buf : '';
254 $buf = '';
255 }
256 }
257
258 if( 'Post ID' == $datas[USCES_COL_POST_ID] )
259 continue;
260
261
262 if( $min_field_num > count($datas) ){
263 $err_num++;
264 $mes = "No." . ($rows_num+1)." ".count($datas) . "\t".__('The number of the columns is abnormal.', 'usces');
265 $logtemp .= $mes.$yn;
266 $log .= $logtemp;
267 echo $mes.$br.$yn;
268 continue;
269 }
270
271 if( $pre_code == $datas[USCES_COL_ITEM_CODE] && WCUtils::is_blank($datas[USCES_COL_POST_ID]) ){
272 $mode = 'add';
273
274 }else{
275 $post_id = ( !WCUtils::is_blank($datas[USCES_COL_POST_ID]) ) ? (int)$datas[USCES_COL_POST_ID] : NULL;
276 if( $post_id ){
277 $db_res = $wpdb->get_var( $wpdb->prepare("SELECT ID FROM {$wpdb->posts} WHERE ID = %d", $post_id) );
278 if( !$db_res ){
279 $err_num++;
280 $mes = "No." . ($rows_num+1) . "\t".__("Post-ID {$post_id} does not exist in the database.", 'usces');
281 $logtemp .= $mes.$yn;
282 $log .= $logtemp;
283 echo $mes.$br.$yn;
284 continue;
285 }
286 }
287 if( $post_id ){
288 $mode = 'upd';
289 }else{
290 $mode = 'add';
291 }
292 }
293
294 $lineready = microtime(true);
295 $linereadytime += $lineready-$linestart;
296 /*////////////////////////////////////////*/
297 // dataCheck
298 /*////////////////////////////////////////*/
299 //data check loop
300 foreach($datas as $key => $data){
301 $data = ( $usces->options['system']['csv_encode_type'] == 0 ) ? trim(mb_convert_encoding($data, 'UTF-8', 'SJIS')) : trim($data);
302 switch($key){
303 case USCES_COL_ITEM_CODE:
304 if( 0 == strlen($data) ){
305 $mes = "No." . ($rows_num+1) . "\t".__('An item cord is non-input.', 'usces');
306 $logtemp .= $mes.$yn;
307 $mestemp .= $mes.$br.$yn;
308 }else{
309 $query = $wpdb->prepare("SELECT meta_id, post_id FROM {$wpdb->postmeta}
310 LEFT JOIN {$wpdb->posts} ON ID = post_id
311 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')",
312 '_itemCode', $data);
313 $db_res1 = $wpdb->get_results( $query, ARRAY_A );
314 if( 'upd' == $mode ){
315 if( 1 < count($db_res1) ){
316 $mes = "No." . ($rows_num+1) . "\t".__('This Item-Code has been duplicated.', 'usces');
317 $logtemp .= $mes.$yn;
318 $mestemp .= $mes.$br.$yn;
319 $mes = '';
320 foreach($db_res1 as $res_val){
321 $mes .= "meta_id=" . $res_val['meta_id'] . ", post_id=" . $res_val['post_id'] . "<br />";
322 }
323 $logtemp .= $mes.$yn;
324 $mestemp .= $mes.$br.$yn;
325 }
326 $query = $wpdb->prepare("SELECT meta_id, post_id FROM {$wpdb->postmeta}
327 LEFT JOIN {$wpdb->posts} ON ID = post_id
328 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')",
329 $post_id, '_itemCode', $data);
330 $db_res2 = $wpdb->get_results( $query, ARRAY_A );
331 if( 0 < count($db_res2) ){
332 $mes = "No." . ($rows_num+1) . "\t".__('This Item-Code has already been used.', 'usces');
333 $logtemp .= $mes.$yn;
334 $mestemp .= $mes.$br.$yn;
335 $mes = '';
336 foreach($db_res2 as $res_val){
337 $mes .= "meta_id=" . $res_val['meta_id'] . ", post_id=" . $res_val['post_id'] . "<br />";
338 }
339 $logtemp .= $mes.$yn;
340 $mestemp .= $mes.$br.$yn;
341 }
342 }else if( 'add' == $mode ){
343 if( $data != $pre_code ) {
344 if( 0 < count($db_res1) ){
345 $mes = "No." . ($rows_num+1) . "\t".__('This Item-Code has already been used.', 'usces');
346 $logtemp .= $mes.$yn;
347 $mestemp .= $mes.$br.$yn;
348 $mes = '';
349 foreach($db_res1 as $res_val){
350 $mes .= "meta_id=" . $res_val['meta_id'] . ", post_id=" . $res_val['post_id'] . "<br />";
351 }
352 $logtemp .= $mes.$yn;
353 $mestemp .= $mes.$br.$yn;
354 }
355 }
356 }
357 }
358 break;
359 case USCES_COL_ITEM_NAME:
360 if( 0 == strlen($data) ){
361 $mes = "No." . ($rows_num+1) . "\t".__('An item name is non-input.', 'usces');
362 $logtemp .= $mes.$yn;
363 $mestemp .= $mes.$br.$yn;
364 }
365 break;
366 case USCES_COL_ITEM_RESTRICTION:
367 if( !preg_match("/^[0-9]+$/", $data) && 0 != strlen($data) ){
368 $mes = "No." . ($rows_num+1) . "\t".__('A value of the purchase limit number is abnormal.', 'usces');
369 $logtemp .= $mes.$yn;
370 $mestemp .= $mes.$br.$yn;
371 }
372 break;
373 case USCES_COL_ITEM_POINTRATE:
374 if( !preg_match("/^[0-9]+$/", $data) ){
375 $mes = "No." . ($rows_num+1) . "\t".__('A value of the point rate is abnormal.', 'usces');
376 $logtemp .= $mes.$yn;
377 $mestemp .= $mes.$br.$yn;
378 }
379 break;
380 case USCES_COL_ITEM_GPNUM1:
381 if( !preg_match("/^[0-9]+$/", $data) ){
382 $mes = "No." . ($rows_num+1) . "\t".__('Business package discount', 'usces')."1-".__('umerical value is abnormality.', 'usces');
383 $logtemp .= $mes.$yn;
384 $mestemp .= $mes.$br.$yn;
385 }
386 break;
387 case USCES_COL_ITEM_GPDIS1:
388 if( !preg_match("/^[0-9]+$/", $data) || ( 0 < $datas[USCES_COL_ITEM_GPNUM1] && 1 > $data ) ){
389 $mes = "No." . ($rows_num+1) . "\t".__('Business package discount', 'usces')."1-".__('rate is abnormal.', 'usces');
390 $logtemp .= $mes.$yn;
391 $mestemp .= $mes.$br.$yn;
392 }
393 break;
394 case USCES_COL_ITEM_GPNUM2:
395 if( !preg_match("/^[0-9]+$/", $data) || ($datas[USCES_COL_ITEM_GPNUM1] >= $data && 0 != $data) ){
396 $mes = "No." . ($rows_num+1) . "\t".__('Business package discount', 'usces')."2-".__('umerical value is abnormality.', 'usces');
397 $logtemp .= $mes.$yn;
398 $mestemp .= $mes.$br.$yn;
399 }
400 break;
401 case USCES_COL_ITEM_GPDIS2:
402 if( !preg_match("/^[0-9]+$/", $data) || ( 0 < $datas[USCES_COL_ITEM_GPNUM2] && 1 > $data ) ){
403 $mes = "No." . ($rows_num+1) . "\t".__('Business package discount', 'usces')."2-".__('rate is abnormal.', 'usces');
404 $logtemp .= $mes.$yn;
405 $mestemp .= $mes.$br.$yn;
406 }
407 break;
408 case USCES_COL_ITEM_GPNUM3:
409 if( !preg_match("/^[0-9]+$/", $data) || ($datas[USCES_COL_ITEM_GPNUM2] >= $data && 0 != $data) ){
410 $mes = "No." . ($rows_num+1) . "\t".__('Business package discount', 'usces')."3-".__('umerical value is abnormality.', 'usces');
411 $logtemp .= $mes.$yn;
412 $mestemp .= $mes.$br.$yn;
413 }
414 break;
415 case USCES_COL_ITEM_GPDIS3:
416 if( !preg_match("/^[0-9]+$/", $data) || ( 0 < $datas[USCES_COL_ITEM_GPNUM3] && 1 > $data ) ){
417 $mes = "No." . ($rows_num+1) . "\t".__('Business package discount', 'usces')."3-".__('rate is abnormal.', 'usces');
418 $logtemp .= $mes.$yn;
419 $mestemp .= $mes.$br.$yn;
420 }
421 break;
422 case USCES_COL_ITEM_SHIPPING:
423 if( !preg_match("/^[0-9]+$/", $data) || 9 < $data ){
424 $mes = "No." . ($rows_num+1) . "\t".__('A value of the shipment day is abnormal.', 'usces');
425 $logtemp .= $mes.$yn;
426 $mestemp .= $mes.$br.$yn;
427 }
428 break;
429 case USCES_COL_ITEM_DELIVERYMETHOD:
430 if( 0 === strlen($data) || !preg_match("/^[0-9;]+$/", $data) ){
431 $mes = "No." . ($rows_num+1) . "\t".__('Invalid value of Delivery method.', 'usces');
432 $logtemp .= $mes.$yn;
433 $mestemp .= $mes.$br.$yn;
434 }
435 break;
436 case USCES_COL_ITEM_SHIPPINGCHARGE:
437 if( 0 === strlen($data) || !preg_match("/^[0-9]+$/", $data) ){
438 $mes = "No." . ($rows_num+1) . "\t".__('Invalid type of shipping charge.', 'usces');
439 $logtemp .= $mes.$yn;
440 $mestemp .= $mes.$br.$yn;
441 }
442 break;
443 case USCES_COL_ITEM_INDIVIDUALSCHARGE:
444 if( !preg_match("/^[0-9]+$/", $data) || 1 < $data ){
445 $mes = "No." . ($rows_num+1) . "\t".__('A value of the postage individual charging is abnormal.', 'usces');
446 $logtemp .= $mes.$yn;
447 $mestemp .= $mes.$br.$yn;
448 }
449 break;
450 case USCES_COL_POST_ID:
451 if( !preg_match("/^[0-9]+$/", $data) && 0 != strlen($data) ){
452 $mes = "No." . ($rows_num+1) . "\t".__('A value of the Post-ID is abnormal.', 'usces');
453 $logtemp .= $mes.$yn;
454 $mestemp .= $mes.$br.$yn;
455 }
456 break;
457 case USCES_COL_POST_AUTHOR:
458 case USCES_COL_POST_COMMENT_STATUS:
459 case USCES_COL_POST_PASSWORD:
460 case USCES_COL_POST_NAME:
461 case USCES_COL_POST_TITLE:
462 case USCES_COL_POST_CONTENT:
463 case USCES_COL_POST_EXCERPT:
464 break;
465 case USCES_COL_POST_STATUS:
466 $array17 = array('publish', 'future', 'draft', 'pending', 'private');
467 if( !in_array($data, $array17) || WCUtils::is_blank($data) ){
468 $mes = "No." . ($rows_num+1) . "\t".__('A value of the display status is abnormal.', 'usces');
469 $logtemp .= $mes.$yn;
470 $mestemp .= $mes.$br.$yn;
471 }
472 break;
473 case USCES_COL_POST_MODIFIED:
474 if( 'future' == $datas[USCES_COL_POST_STATUS] && (WCUtils::is_blank($data) || '0000-00-00 00:00:00' === $data) ){
475 if( preg_match($date_pattern, $data, $match) ){
476 if( checkdate($match[2], $match[3], $match[1]) &&
477 (0 < $match[4] && 24 > $match[4]) &&
478 (0 < $match[5] && 60 > $match[5]) &&
479 (0 < $match[6] && 60 > $match[6]) ){
480 $mes = "";
481 }else{
482 $mes = "No." . ($rows_num+1) . "\t".__('A value of the schedule is abnormal.', 'usces');
483 $logtemp .= $mes.$yn;
484 $mestemp .= $mes.$br.$yn;
485 }
486
487 }else{
488 $mes = "No." . ($rows_num+1) . "\t".__('A value of the schedule is abnormal.', 'usces');
489 $logtemp .= $mes.$yn;
490 $mestemp .= $mes.$br.$yn;
491 }
492 }else if( !WCUtils::is_blank($data) && '0000-00-00 00:00:00' !== $data ){
493 if(preg_match("/^[0-9]+$/", substr($data,0,4))) {//�
494 �頭4桁が数値のみ
495 if(strtotime($data) === false){
496 $mes = "No." . ($rows_num+1) . "\t".__('A value of the schedule is abnormal.', 'usces');
497 $logtemp .= $mes.$yn;
498 $mestemp .= $mes.$br.$yn;
499 }
500 } else {
501 $datetime = explode(' ', $data);
502 $date_str = usces_dates_interconv($datetime[0]).' '.$datetime[1];
503 if(strtotime($date_str) === false){
504 $mes = "No." . ($rows_num+1) . "\t".__('A value of the schedule is abnormal.', 'usces');
505 $logtemp .= $mes.$yn;
506 $mestemp .= $mes.$br.$yn;
507 }
508 }
509 }
510 break;
511 case USCES_COL_CATEGORY:
512 if( 0 == strlen($data) ){
513 $mes = "No." . ($rows_num+1) . "\t".__('A category is non-input.', 'usces');
514 $logtemp .= $mes.$yn;
515 $mestemp .= $mes.$br.$yn;
516 }
517 break;
518 case USCES_COL_POST_TAG:
519 break;
520 case USCES_COL_CUSTOM_FIELD:
521 break;
522 case USCES_COL_SKU_CODE:
523 if( 0 == strlen($data) ){
524 $mes = "No." . ($rows_num+1) . "\t".__('A SKU cord is non-input.', 'usces');
525 $logtemp .= $mes.$yn;
526 $mestemp .= $mes.$br.$yn;
527 }
528 break;
529 case USCES_COL_SKU_NAME:
530 break;
531 case USCES_COL_SKU_CPRICE:
532 if( 0 < strlen($data) and !preg_match("/^\d$|^\d+\.?\d+$/", $data) ){
533 $mes = "No." . ($rows_num+1) . "\t".__('A value of the price is abnormal.', 'usces');
534 $logtemp .= $mes.$yn;
535 $mestemp .= $mes.$br.$yn;
536 }
537 break;
538 case USCES_COL_SKU_PRICE:
539 if( !preg_match("/^\d$|^\d+\.?\d+$/", $data) || 0 == strlen($data) ){
540 $mes = "No." . ($rows_num+1) . "\t".__('A value of the normal price is abnormal.', 'usces');
541 $logtemp .= $mes.$yn;
542 $mestemp .= $mes.$br.$yn;
543 }
544 break;
545 case USCES_COL_SKU_ZAIKONUM:
546 if( 0 < strlen($data) and !preg_match("/^[0-9]+$/", $data) ){
547 $mes = "No." . ($rows_num+1) . "\t".__('A value of the stock amount is abnormal.', 'usces');
548 $logtemp .= $mes.$yn;
549 $mestemp .= $mes.$br.$yn;
550 }
551 break;
552 case USCES_COL_SKU_ZAIKO:
553 if( !preg_match("/^[0-9]+$/", $data) || 4 < $data ){
554 $mes = "No." . ($rows_num+1) . "\t".__('A value of the stock status is abnormal.', 'usces');
555 $logtemp .= $mes.$yn;
556 $mestemp .= $mes.$br.$yn;
557 }
558 break;
559 case USCES_COL_SKU_UNIT:
560 break;
561 case USCES_COL_SKU_GPTEKIYO:
562 if( !preg_match("/^[0-9]+$/", $data) || 1 < $data ){
563 $mes = "No." . ($rows_num+1) . "\t".__('The value of the duties pack application is abnormal.', 'usces');
564 $logtemp .= $mes.$yn;
565 $mestemp .= $mes.$br.$yn;
566 }
567 break;
568 }
569 }
570 $opnum = ceil((count($datas) - $min_field_num) / 4);
571 for($i=0; $i<$opnum; $i++){
572 $val = array();
573 $oplogtemp = '';
574 $opmestemp = '';
575 for($o=1; $o<=4; $o++){
576 $key = ($min_field_num-1)+$o+($i*4);
577 if( isset($datas[$key]) ){
578 $value = trim($datas[$key]);
579 }else{
580 $value = NULL;
581 }
582 switch($o){
583 case 1:
584 if( empty($value) ){
585 $oplogtemp .= "No." . ($rows_num+1) . "\t" . __(sprintf('Option name of No.%s option is non-input.', ($i+1)), 'usces').$yn;
586 $opmestemp .= "No." . ($rows_num+1) . "\t" . __(sprintf('Option name of No.%s option is non-input.', ($i+1)), 'usces').$br.$yn;
587 }
588 $val['name'] = $value;
589 break;
590 case 2:
591 if( $value != NULL && ((0 != (int)$value) and (1 != (int)$value) and (2 != (int)$value) and (5 != (int)$value)) ){
592 $oplogtemp .= "No." . ($rows_num+1) . "\t" . __(sprintf('Option-entry-field of No.%s option is abnormal.', ($i+1)), 'usces').$yn;
593 $opmestemp .= "No." . ($rows_num+1) . "\t" . __(sprintf('Option-entry-field of No.%s option is abnormal.', ($i+1)), 'usces').$br.$yn;
594 }
595 $val['mean'] = $value;
596 break;
597 case 3:
598 if( $value != NULL && (!preg_match("/^[0-9]+$/", $value) || 1 < (int)$value) ){
599 $oplogtemp .= "No." . ($rows_num+1) . "\t" . __(sprintf('Option-required-item of No.%s option is abnormal.', ($i+1)), 'usces').$yn;
600 $opmestemp .= "No." . ($rows_num+1) . "\t" . __(sprintf('Option-required-item of No.%s option is abnormal.', ($i+1)), 'usces').$br.$yn;
601 }
602 $val['essential'] = $value;
603 break;
604 case 4:
605 if( ($value != NULL && $value == '') && (2 > $datas[($key-2)] && 0 < strlen($datas[($key-2)])) ){
606 $oplogtemp .= "No." . ($rows_num+1) . "\t" . __(sprintf('Option-select of No.%s option is non-input.', ($i+1)), 'usces').$yn;
607 $opmestemp .= "No." . ($rows_num+1) . "\t" . __(sprintf('Option-select of No.%s option is non-input.', ($i+1)), 'usces').$br.$yn;
608 }
609 $val['value'] = $value;
610 break;
611 }
612 }
613 if( !WCUtils::is_blank($val['name']) || !WCUtils::is_blank($val['mean']) || !WCUtils::is_blank($val['essential']) || !WCUtils::is_blank($val['value']) ){
614 $logtemp .= $oplogtemp;
615 $mestemp .= $opmestemp;
616 }
617 }
618 if( 0 < strlen($logtemp) ){
619 $err_num++;
620 $log .= $logtemp;
621 echo $mestemp;
622 continue;
623 }
624
625
626 /******************/
627 $checkend = microtime(true);
628 $checktime += $checkend-$lineready;
629 /*////////////////////////////////////////*/
630 // insPost
631 /*////////////////////////////////////////*/
632 //wp_posts data reg;
633 $cdatas = array();
634 $post_fields = array();
635 $sku = array();
636 $opt = array();
637 $valstr = '';
638
639 if( $pre_code != $datas[USCES_COL_ITEM_CODE] ){
640 $sku_index = 0;
641
642 $cdatas['ID'] = $post_id;
643
644 $data = $datas[USCES_COL_POST_MODIFIED];
645 if( $data == '' || $data == '0000-00-00 00:00:00' ){
646 $cdatas['post_date'] = current_time( 'mysql' );
647 $cdatas['post_date_gmt'] = current_time( 'mysql', 1 );
648 $cdatas['post_modified'] = current_time( 'mysql' );
649 $cdatas['post_modified_gmt'] = current_time( 'mysql', 1 );
650 }else{
651 if(preg_match("/^[0-9]+$/", substr($data,0,4))) {//�
652 �頭4桁が数値のみ
653 $time_data =strtotime($data);
654 } else {
655 $datetime = explode(' ', $data);
656 $date_str = usces_dates_interconv( $datetime[0] ).' '.$datetime[1];
657 $time_data =strtotime($date_str);
658 }
659 $cdatas['post_date'] = date('Y-m-d H:i:s', $time_data);
660 $cdatas['post_date_gmt'] = gmdate('Y-m-d H:i:s', $time_data);
661 $cdatas['post_modified'] = date('Y-m-d H:i:s', $time_data);
662 $cdatas['post_modified_gmt'] = gmdate('Y-m-d H:i:s', $time_data);
663 }
664 //usces_log('mysql2date : '.mysql2date('U', $cdatas['post_modified'], false) . '/' . mysql2date('U', current_time( 'mysql' ), false), 'acting_transaction.log');
665 if ( 'publish' == $datas[USCES_COL_POST_STATUS] ) {
666 $now = current_time( 'mysql' );
667 if ( mysql2date('U', $cdatas['post_modified'], false) > mysql2date('U', $now, false) )
668 $datas[USCES_COL_POST_STATUS] = 'future';
669 } elseif( 'future' == $datas[USCES_COL_POST_STATUS] ) {
670 $now = current_time( 'mysql' );
671 if ( mysql2date('U', $cdatas['post_modified'], false) <= mysql2date('U', $now, false) )
672 $datas[USCES_COL_POST_STATUS] = 'publish';
673 }
674 $cdatas['ID'] = $post_id;
675 $cdatas['post_author'] = ( !WCUtils::is_blank($datas[USCES_COL_POST_AUTHOR]) ) ? $datas[USCES_COL_POST_AUTHOR] : 1;
676 $cdatas['post_content'] = ( $usces->options['system']['csv_encode_type'] == 0 ) ? trim(mb_convert_encoding($datas[USCES_COL_POST_CONTENT], 'UTF-8', 'SJIS')) : trim($datas[USCES_COL_POST_CONTENT]);
677 $cdatas['post_title'] = ( $usces->options['system']['csv_encode_type'] == 0 ) ? trim(mb_convert_encoding($datas[USCES_COL_POST_TITLE], 'UTF-8', 'SJIS')) : trim($datas[USCES_COL_POST_TITLE]);
678 $cdatas['post_excerpt'] = ( $usces->options['system']['csv_encode_type'] == 0 ) ? trim(mb_convert_encoding($datas[USCES_COL_POST_EXCERPT], 'UTF-8', 'SJIS')) : trim($datas[USCES_COL_POST_EXCERPT]);
679 $cdatas['post_status'] = $datas[USCES_COL_POST_STATUS];
680 $cdatas['comment_status'] = ( !WCUtils::is_blank($datas[USCES_COL_POST_COMMENT_STATUS]) ) ? $datas[USCES_COL_POST_COMMENT_STATUS] : 'close';
681 $cdatas['ping_status'] = 'close';
682 $cdatas['post_password'] = ( 'private' == $cdatas['post_status'] ) ? '' : $datas[USCES_COL_POST_PASSWORD];
683 $cdatas['post_type'] = 'post';
684 $cdatas['post_parent'] = 0;
685 $spname = ( $usces->options['system']['csv_encode_type'] == 0 ) ? sanitize_title(trim(mb_convert_encoding($datas[USCES_COL_POST_NAME], 'UTF-8', 'SJIS'))) : sanitize_title( trim($datas[USCES_COL_POST_NAME]) );
686 $cdatas['post_name'] = wp_unique_post_slug($spname, $cdatas['ID'], $cdatas['post_status'], $cdatas['post_type'], $cdatas['post_parent']);
687 $cdatas['to_ping'] = '';
688 $cdatas['pinged'] = '';
689 $cdatas['menu_order'] = 0;
690 $cdatas['post_mime_type'] = 'item';
691 $cdatas['post_content_filtered'] = '';
692
693
694 if ( empty($cdatas['post_name']) && !in_array( $cdatas['post_status'], array( 'draft', 'pending', 'auto-draft' ) ) ) {
695 $cdatas['post_name'] = sanitize_title($cdatas['post_title'], $post_id);
696 }
697
698 if($mode == 'add') {
699
700 $cdatas['guid'] = '';
701 if ( false === $wpdb->insert( $wpdb->posts, $cdatas ) ) {
702 $err_num++;
703 $mes = "No." . ($rows_num+1) . "\t".__('This data was not registered in the database.', 'usces');
704 $log .= $mes.$yn;
705 echo $mes.$br.$yn;
706 $pre_code = $datas[USCES_COL_ITEM_CODE];
707 continue;
708 }
709 $post_id = $wpdb->insert_id;
710 $where = array( 'ID' => $post_id );
711 $wpdb->update( $wpdb->posts, array( 'guid' => get_permalink( $post_id ) ), $where );
712
713 /******************/
714 $insert_post = microtime(true);
715 $insertposttime += $insert_post-$checkend;
716
717 }elseif($mode == 'upd') {
718
719 $where = array( 'ID' => $post_id );
720 if ( false === $wpdb->update( $wpdb->posts, $cdatas, $where ) ) {
721 $err_num++;
722 $mes = "No." . ($rows_num+1) . "\t".__('The data were not registered with a database.', 'usces');
723 $log .= $mes.$yn;
724 echo $mes.$br.$yn;
725 $pre_code = $datas[USCES_COL_ITEM_CODE];
726 continue;
727 }
728
729 /******************/
730 $insert_post = microtime(true);
731 $insertposttime += $insert_post-$checkend;
732 //end of wp_insert_post
733 /************************************************************************************************/
734 /*////////////////////////////////////////*/
735 // delMeta
736 /*////////////////////////////////////////*/
737
738 //delete all metas of Item
739 //20130723ysk start 0000734
740 $meta_key_table = array( '_itemCode', '_itemName', '_itemRestriction', '_itemPointrate', '_itemGpNum1', '_itemGpDis1', '_itemGpNum2', '_itemGpDis2', '_itemGpNum3', '_itemGpDis3', '_itemShipping', '_itemDeliveryMethod', '_itemShippingCharge', '_itemIndividualSCharge', '_iopt_', '_isku_' );
741 $cfrows = ( $usces->options['system']['csv_encode_type'] == 0 ) ? explode( ';', trim(mb_convert_encoding($datas[USCES_COL_CUSTOM_FIELD], 'UTF-8', 'SJIS')) ) : explode(';', trim($datas[USCES_COL_CUSTOM_FIELD]));
742 if( !(1 === count($cfrows) && '' == reset($cfrows)) ) {
743 foreach( $cfrows as $row ) {
744 list( $meta_key, $meta_value ) = explode( '=', $row, 2 );
745 if( !WCUtils::is_blank($meta_key) )
746 array_push( $meta_key_table, trim($meta_key) );
747 }
748 }
749 $meta_key_table = apply_filters( 'usces_filter_uploadcsv_delete_postmeta', $meta_key_table );
750 $query = $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE meta_key IN ( %s ) AND post_id = %d", implode( "','", $meta_key_table ), $post_id );
751 $query = stripslashes( $query );
752 //$query = $wpdb->prepare("DELETE FROM $wpdb->postmeta WHERE meta_key <> '_thumbnail_id' AND post_id = %d", $post_id);
753 //20130723ysk end
754 $dbres = $wpdb->query( $query );
755 if( $dbres === false ) {
756 $err_num++;
757 $mes = "No." . ($rows_num+1) . "\t".__('Error : delete postmeta', 'usces');
758 $log .= $mes.$yn;
759 echo $mes.$br.$yn;
760 $pre_code = $datas[USCES_COL_ITEM_CODE];
761 continue;
762 }
763 // delete Item revisions
764 $query = $wpdb->prepare("DELETE FROM $wpdb->posts WHERE post_parent = %d AND post_type = %s", $post_id, 'revision');
765 $dbres = $wpdb->query( $query );
766 if( $dbres === false ) {
767 $err_num++;
768 $mes = "No." . ($rows_num+1) . "\t".__('Error : delete revisions', 'usces');
769 $log .= $mes.$yn;
770 echo $mes.$br.$yn;
771 $pre_code = $datas[USCES_COL_ITEM_CODE];
772 continue;
773 }
774 // delete relationships of category
775 $query = $wpdb->prepare("DELETE FROM $wpdb->term_relationships WHERE object_id = %d", $post_id);
776 $dbres = $wpdb->query( $query );
777 if( $dbres === false ) {
778 $err_num++;
779 $mes = "No." . ($rows_num+1) . "\t".__('Error : delete term_relationships(category)', 'usces');
780 $log .= $mes.$yn;
781 echo $mes.$br.$yn;
782 $pre_code = $datas[USCES_COL_ITEM_CODE];
783 continue;
784 }
785 // delete relationships of tag
786 $query = "SELECT term_taxonomy_id, COUNT(*) AS ct FROM $wpdb->term_relationships GROUP BY term_taxonomy_id";
787 $relation_data = $wpdb->get_results( $query, ARRAY_A );
788 foreach((array)$relation_data as $relation_rows) {
789 $term_taxonomy_ids['term_taxonomy_id'] = $relation_rows['term_taxonomy_id'];
790 $term_taxonomy_updatas['count'] = $relation_rows['ct'];
791 $dbres = $wpdb->update( $wpdb->term_taxonomy, $term_taxonomy_updatas, $term_taxonomy_ids );
792 if( $dbres === false ) {
793 $err_num++;
794 $mes = "No." . ($rows_num+1) . "\t".__('Error : delete term_relationships(tag)', 'usces');
795 $log .= $mes.$yn;
796 echo $mes.$br.$yn;
797 $pre_code = $datas[USCES_COL_ITEM_CODE];
798 continue;
799 }
800 }
801 }
802
803 /******************/
804 $metadelete = microtime(true);
805 $metadeletetime += $metadelete-$insert_post;
806 /*////////////////////////////////////////*/
807 // addMeta
808 /*////////////////////////////////////////*/
809 //add postmeta
810 $itemDeliveryMethod = explode(';', $datas[USCES_COL_ITEM_DELIVERYMETHOD]);
811 if( $usces->options['system']['csv_encode_type'] == 0 ){
812 $valstr .= '(' . $post_id . ", '_itemCode','" . esc_sql(trim(mb_convert_encoding($datas[USCES_COL_ITEM_CODE], 'UTF-8', 'SJIS'))) . "'),";
813 }else{
814 $valstr .= '(' . $post_id . ", '_itemCode','" . esc_sql(trim($datas[USCES_COL_ITEM_CODE])) . "'),";
815 }
816 if( $usces->options['system']['csv_encode_type'] == 0 ){
817 $valstr .= '(' . $post_id . ", '_itemName','" . esc_sql(trim(mb_convert_encoding($datas[USCES_COL_ITEM_NAME], 'UTF-8', 'SJIS'))) . "'),";
818 }else{
819 $valstr .= '(' . $post_id . ", '_itemName','" . esc_sql(trim($datas[USCES_COL_ITEM_NAME])) . "'),";
820 }
821 $valstr .= '(' . $post_id . ", '_itemRestriction','" . $datas[USCES_COL_ITEM_RESTRICTION] . "'),";
822 $valstr .= '(' . $post_id . ", '_itemPointrate','" . $datas[USCES_COL_ITEM_POINTRATE] . "'),";
823 $valstr .= '(' . $post_id . ", '_itemGpNum1','" . $datas[USCES_COL_ITEM_GPNUM1] . "'),";
824 $valstr .= '(' . $post_id . ", '_itemGpDis1','" . $datas[USCES_COL_ITEM_GPDIS1] . "'),";
825 $valstr .= '(' . $post_id . ", '_itemGpNum2','" . $datas[USCES_COL_ITEM_GPNUM2] . "'),";
826 $valstr .= '(' . $post_id . ", '_itemGpDis2','" . $datas[USCES_COL_ITEM_GPDIS2] . "'),";
827 $valstr .= '(' . $post_id . ", '_itemGpNum3','" . $datas[USCES_COL_ITEM_GPNUM3] . "'),";
828 $valstr .= '(' . $post_id . ", '_itemGpDis3','" . $datas[USCES_COL_ITEM_GPDIS3] . "'),";
829 $valstr .= '(' . $post_id . ", '_itemShipping','" . $datas[USCES_COL_ITEM_SHIPPING] . "'),";
830 $valstr .= '(' . $post_id . ", '_itemDeliveryMethod','" . esc_sql(serialize($itemDeliveryMethod)) . "'),";
831 $valstr .= '(' . $post_id . ", '_itemShippingCharge','" . $datas[USCES_COL_ITEM_SHIPPINGCHARGE] . "'),";
832 $valstr .= '(' . $post_id . ", '_itemIndividualSCharge','" . $datas[USCES_COL_ITEM_INDIVIDUALSCHARGE] . "'),";
833
834 //$valstr .= '(' . $post_id . ", '".esc_sql($meta_key)."', '" . esc_sql(serialize($sku)) . "'),";
835
836 // print_r($valstr);
837 $valstr = rtrim($valstr, ',');
838 $dbres = $wpdb->query("INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) VALUES $valstr");
839 // $dbres = $wpdb->query($query);
840
841 //add term_relationships, edit term_taxonomy
842 //category
843 $categories = explode(';', $datas[USCES_COL_CATEGORY]);
844 foreach((array)$categories as $category){
845 $query = $wpdb->prepare("SELECT term_taxonomy_id FROM $wpdb->term_taxonomy
846 WHERE term_id = %d", $category);
847 $term_taxonomy_id = $wpdb->get_var( $query );
848 if($term_taxonomy_id == NULL) continue;
849
850 $query = $wpdb->prepare("INSERT INTO $wpdb->term_relationships
851 (object_id, term_taxonomy_id, term_order) VALUES
852 (%d, %d, 0)",
853 $post_id, $term_taxonomy_id
854 );
855 $dbres = $wpdb->query($query);
856 if( !$dbres ) continue;
857
858 $query = $wpdb->prepare("SELECT COUNT(*) FROM $wpdb->term_relationships
859 WHERE term_taxonomy_id = %d", $term_taxonomy_id);
860 $tct = $wpdb->get_var( $query );
861
862 $query = $wpdb->prepare("UPDATE $wpdb->term_taxonomy SET count = %d
863 WHERE term_taxonomy_id = %d",
864 $tct, $term_taxonomy_id
865 );
866 $dbres = $wpdb->query($query);
867 }
868 //tag
869 $tags = ( $usces->options['system']['csv_encode_type'] == 0 ) ? explode(';', trim(mb_convert_encoding($datas[USCES_COL_POST_TAG], 'UTF-8', 'SJIS'))) : explode(';', trim($datas[USCES_COL_POST_TAG]));
870 // wp_set_object_terms($post_id, (array)$tags, 'post_tag');
871 foreach((array)$tags as $tag){
872 $tag = trim($tag, " \n\t\r\0\x0B,");
873 if( empty($tag) )
874 continue;
875 $query = $wpdb->prepare("SELECT term_id FROM $wpdb->terms WHERE name = %s", $tag);
876 $term_id = $wpdb->get_var( $query );
877 //new tag
878 if( empty($term_id) ){
879 $query = $wpdb->prepare("INSERT INTO $wpdb->terms (name, slug, term_group) VALUES
880 (%s, %s, 0)", $tag, urlencode($tag));
881 $dbres = $wpdb->query( $query );
882 if( !$dbres )
883 continue;
884 $term_id = $wpdb->insert_id;
885 }
886 $query = $wpdb->prepare("SELECT term_taxonomy_id FROM $wpdb->term_taxonomy
887 WHERE term_id = %d", $term_id);
888 $term_taxonomy_id = $wpdb->get_var( $query );
889 if( !$term_taxonomy_id ){
890 $query = $wpdb->prepare("INSERT INTO $wpdb->term_taxonomy
891 (term_id, taxonomy, description, parent, count) VALUES
892 (%d, %s, %s, 0, 0)", $term_id, 'post_tag', '');
893 $dbres = $wpdb->query( $query );
894 if( !$dbres )
895 continue;
896 $term_taxonomy_id = $wpdb->insert_id;
897 }
898 $query = $wpdb->prepare("INSERT INTO $wpdb->term_relationships
899 (object_id, term_taxonomy_id, term_order) VALUES
900 (%d, %d, 0)",
901 $post_id, $term_taxonomy_id
902 );
903 $dbres = $wpdb->query($query);
904 if( !$dbres ) continue;
905
906 $query = $wpdb->prepare("SELECT COUNT(*) FROM $wpdb->term_relationships
907 WHERE term_taxonomy_id = %d", $term_taxonomy_id);
908 $tct = $wpdb->get_var( $query );
909
910 $query = $wpdb->prepare("UPDATE $wpdb->term_taxonomy SET count = %d
911 WHERE term_taxonomy_id = %d",
912 $tct, $term_taxonomy_id
913 );
914 $dbres = $wpdb->query($query);
915 }
916
917 /*////////////////////////////////////////*/
918 // Add Custom Field
919 /*////////////////////////////////////////*/
920 $cfrows = ( $usces->options['system']['csv_encode_type'] == 0 ) ? explode(';', trim(mb_convert_encoding($datas[USCES_COL_CUSTOM_FIELD], 'UTF-8', 'SJIS'))) : explode(';', trim($datas[USCES_COL_CUSTOM_FIELD]));
921 if( !(1 === count($cfrows) && '' == reset($cfrows)) ){
922 $valstr = '';
923 foreach( $cfrows as $row ){
924 list($meta_key, $meta_value) = explode( '=', $row, 2 );
925 if( !WCUtils::is_blank($meta_key) )
926 $valstr .= $wpdb->prepare("( %d, %s, %s),", $post_id, trim($meta_key), trim($meta_value));
927 }
928 if( !WCUtils::is_blank($valstr) ){
929 $valstr = rtrim($valstr, ',');
930 $dbres = $wpdb->query("INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) VALUES $valstr");
931 }
932 }
933
934 /******************/
935 $add_postmeta = microtime(true);
936 $addmetatime += $add_postmeta-$metadelete;
937 /*////////////////////////////////////////*/
938 // addOption
939 /*////////////////////////////////////////*/
940 // Add Item Option
941 for($i=0; $i<$opnum; $i++){
942 $opflg = true;
943 $optvalue = array();
944 for($o=1; $o<=4; $o++){
945 $key = ($min_field_num-1)+$o+($i*4);
946 // if( !isset($datas[$key]) ){
947 // break 2;
948 // }
949 if( $o === 1 && $datas[$key] == '' ){
950 $opflg = false;
951 break 1;
952 }
953 switch($o){
954 case 1:
955 $optvalue['name'] = ( $usces->options['system']['csv_encode_type'] == 0 ) ? trim(mb_convert_encoding($datas[$key], 'UTF-8', 'SJIS')) : trim($datas[$key]);
956 break;
957 case 2:
958 $optvalue['means'] = (int)$datas[$key];
959 break;
960 case 3:
961 $optvalue['essential'] = (int)$datas[$key];
962 break;
963 case 4:
964 if( !empty($datas[$key]) ) {
965 $optvalue['value'] = ( $usces->options['system']['csv_encode_type'] == 0 ) ? str_replace(';', "\n", trim(mb_convert_encoding($datas[$key], 'UTF-8', 'SJIS'))) : str_replace(';', "\n", trim($datas[$key]));
966 }else{
967 $optvalue['value'] = "";
968 }
969 break;
970 }
971 }
972
973 if( $opflg && !empty($optvalue) ){
974 $optvalue['sort'] = $i;
975 $resopt = usces_add_opt($post_id, $optvalue, false);
976 }
977 //$valstr .= '(' . $post_id . ", '".esc_sql($ometa_key)."', '" . esc_sql(maybe_serialize($opt)) . "'),";
978 }
979
980 }else{
981 $sku_index++;
982 }
983
984 /******************/
985 $optionmeta = microtime(true);
986 $AddOptiontime += $optionmeta-$add_postmeta;
987 /*////////////////////////////////////////*/
988 // addSku
989 /*////////////////////////////////////////*/
990 // Add Item SKU
991 $sku_code = ( $usces->options['system']['csv_encode_type'] == 0 ) ? trim(mb_convert_encoding($datas[USCES_COL_SKU_CODE], 'UTF-8', 'SJIS')) : trim($datas[USCES_COL_SKU_CODE]);
992 $skuvalue['code'] = $sku_code;
993 $skuvalue['name'] = ( $usces->options['system']['csv_encode_type'] == 0 ) ? trim(mb_convert_encoding($datas[USCES_COL_SKU_NAME], 'UTF-8', 'SJIS')) : trim($datas[USCES_COL_SKU_NAME]);
994 $skuvalue['cprice'] = $datas[USCES_COL_SKU_CPRICE];
995 $skuvalue['price'] = $datas[USCES_COL_SKU_PRICE];
996 $skuvalue['unit'] = ( $usces->options['system']['csv_encode_type'] == 0 ) ? trim(mb_convert_encoding($datas[USCES_COL_SKU_UNIT], 'UTF-8', 'SJIS')) : trim($datas[USCES_COL_SKU_UNIT]);
997 $skuvalue['stocknum'] = $datas[USCES_COL_SKU_ZAIKONUM];
998 $skuvalue['stock'] = $datas[USCES_COL_SKU_ZAIKO];
999 $skuvalue['gp'] = $datas[USCES_COL_SKU_GPTEKIYO];
1000 $skuvalue['sort'] = $sku_index;
1001 $skuvalue = apply_filters( 'usces_filter_uploadcsv_skuvalue', $skuvalue, $datas );
1002 usces_add_sku( $post_id, $skuvalue, false );
1003
1004 // usces_log('skuvalue : '.$post_id.print_r($skuvalue,true), 'acting_transaction.log');
1005 $comp_num++;
1006 $pre_code = $datas[USCES_COL_ITEM_CODE];
1007 clean_post_cache($post_id);
1008 wp_cache_delete($post_id, 'posts');
1009 wp_cache_delete($post_id, 'post_meta');
1010 clean_object_term_cache($post_id, 'post');
1011 /******************/
1012 $addsku = microtime(true);
1013 $AddSKUtime += $addsku-$optionmeta;
1014 $onelinetime += $addsku-$linestart;
1015
1016 if( 0 === (($rows_num+1) % 10) ){
1017 $av = $onelinetime/$rows_num;
1018 $nt = round($av*($total_num-$rows_num));
1019 if( 60 < $nt ){
1020 $mtime = ceil($nt/60) . __('min', 'usces') . ($nt%60) . __('sec', 'usces') . ' ';
1021 }else{
1022 $mtime = $nt . __('sec', 'usces') . ' ';
1023 }
1024 echo '<script type="text/javascript">changeMsg("' . __('Processing...', 'usces') . __('Remaining time:', 'usces').$mtime.'");</script>'.$yn;
1025 echo '<script type="text/javascript">setProgress(', ($rows_num+1) . ',' . $total_num, ');</script>'.$yn;
1026 ob_flush();
1027 flush();
1028 }
1029 }
1030
1031 flock($fpi, LOCK_EX);
1032 fputs($fpi, mb_convert_encoding($log, 'SJIS', 'UTF-8'));
1033 flock($fpi, LOCK_UN);
1034 fclose($fpi);
1035
1036 $res['status'] = 'success';
1037 $res['message'] = __(sprintf('%2$s of %1$s lines registration completion, error on %3$s lines.',$total_num,$comp_num,$err_num), 'usces');
1038 /******************/
1039 $finish = microtime(true);
1040 usces_log('ready : '.round($readytime-$start, 4), 'acting_transaction.log');
1041 usces_log('lineReady : '.round($linereadytime/$total_num, 4), 'acting_transaction.log');
1042 usces_log('dataCheck : '.round($checktime/$total_num, 4), 'acting_transaction.log');
1043 usces_log('insPost : '.round($insertposttime/$total_num, 4), 'acting_transaction.log');
1044 usces_log('delMeta : '.round($metadeletetime/$total_num, 4), 'acting_transaction.log');
1045 usces_log('addMeta : '.round($addmetatime/$total_num, 4), 'acting_transaction.log');
1046 usces_log('addOption : '.round($AddOptiontime/$total_num, 4), 'acting_transaction.log');
1047 usces_log('addSku : '.round($AddSKUtime/$total_num, 4), 'acting_transaction.log');
1048 usces_log('oneline : '.round($onelinetime/$total_num, 4), 'acting_transaction.log');
1049 usces_log('finish : '.round($finish-$start, 4), 'acting_transaction.log');
1050 usces_log('totalLines: '.$total_num, 'acting_transaction.log');
1051 usces_log('--------------------------------------------------------------', 'acting_transaction.log');
1052
1053 echo '<script type="text/javascript">changeMsg("', __(sprintf('Successful %1$s lines, Failed %2$s lines.',$comp_num,$err_num), 'usces'), ' ");setProgress(', ($rows_num+1) . ',' . $total_num, ');</script>'.$yn;
1054 if( $log ){
1055 //echo '<div class="error_log">' . $log . '</div>'.$yn;
1056 }else{
1057 echo __('Finished', 'usces').$yn;
1058 }
1059 echo '</div>'.$yn;
1060 unlink($path.$file_name);
1061 return $res;
1062 }
1063 endif;
1064
1065 // item list download
1066 if( !function_exists('usces_download_item_list') ):
1067 function usces_download_item_list() {
1068 require_once( USCES_PLUGIN_DIR . "/classes/itemList.class.php" );
1069 global $wpdb, $usces;
1070
1071 $ext = 'csv';
1072 if($ext == 'csv') {//CSV
1073 $table_h = "";
1074 $table_f = "";
1075 $tr_h = "";
1076 $tr_f = "";
1077 $th_h1 = '"';
1078 $th_h = ',"';
1079 $th_f = '"';
1080 $td_h1 = '"';
1081 $td_h = ',"';
1082 $td_f = '"';
1083 $sp = ";";
1084 $eq = "=";
1085 $lf = "\n";
1086 } else {
1087 exit();
1088 }
1089
1090 //==========================================================================
1091 $usces_opt_item = get_option('usces_opt_item');
1092 if(!is_array($usces_opt_item)){
1093 $usces_opt_item = array();
1094 }
1095 $usces_opt_item['chk_header'] = (isset($_REQUEST['chk_header'])) ? 1 : 0;
1096 $usces_opt_item['ftype_item'] = $ext;
1097 update_option('usces_opt_item', $usces_opt_item);
1098 //==========================================================================
1099
1100 $tableName = $wpdb->posts;
1101 $arr_column = array(
1102 __('item code', 'usces') => 'item_code',
1103 __('item name', 'usces') => 'item_name',
1104 __('SKU code', 'usces') => 'sku_key',
1105 __('selling price', 'usces') => 'price',
1106 __('stock', 'usces') => 'zaiko_num',
1107 __('stock status', 'usces') => 'zaiko',
1108 __('Categories', 'usces') => 'category',
1109 __('display status', 'usces') => 'display_status');
1110
1111 $_REQUEST['searchIn'] = "searchIn";
1112 $DT = new dataList($tableName, $arr_column);
1113 $DT->pageLimit = 'off';
1114 $DT->exportMode = true;
1115 $res = $DT->MakeTable();
1116 $rows = $DT->rows;
1117 //==========================================================================
1118 $line = $table_h;
1119 if($usces_opt_item['chk_header'] == 1) {
1120 $line .= $tr_h;
1121 $line .= $th_h1.'Post ID'.$th_f;
1122 $line .= $th_h.__('Post Author', 'usces').$th_f;
1123 $line .= $th_h.__('explanation', 'usces').$th_f;
1124 $line .= $th_h.__('Title', 'usces').$th_f;
1125 $line .= $th_h.__('excerpt', 'usces').$th_f;
1126 $line .= $th_h.__('display status', 'usces').$th_f;
1127 $line .= $th_h.__('Comment Status', 'usces').$th_f;
1128 $line .= $th_h.__('Post PAssword', 'usces').$th_f;
1129 $line .= $th_h.__('Post Name', 'usces').$th_f;
1130 $line .= $th_h.__('Publish on:').$th_f;
1131
1132 $line .= $th_h.__('item code', 'usces').$th_f;
1133 $line .= $th_h.__('item name', 'usces').$th_f;
1134 $line .= $th_h.__('Limited amount for purchase', 'usces').$th_f;
1135 $line .= $th_h.__('Percentage of points', 'usces').$th_f;
1136 $line .= $th_h.__('Business package discount', 'usces').'1-'.__('num', 'usces').$th_f.$th_h.__('Business package discount', 'usces').'1-'.__('rate', 'usces').$th_f;
1137 $line .= $th_h.__('Business package discount', 'usces').'2-'.__('num', 'usces').$th_f.$th_h.__('Business package discount', 'usces').'2-'.__('rate', 'usces').$th_f;
1138 $line .= $th_h.__('Business package discount', 'usces').'3-'.__('num', 'usces').$th_f.$th_h.__('Business package discount', 'usces').'3-'.__('rate', 'usces').$th_f;
1139 $line .= $th_h.__('estimated shipping date', 'usces').$th_f;
1140 $line .= $th_h.__('shipping option', 'usces').$th_f;
1141 $line .= $th_h.__('Shipping', 'usces').$th_f;
1142 $line .= $th_h.__('Postage individual charging', 'usces').$th_f;
1143
1144 $line .= $th_h.__('Categories', 'usces').$th_f;
1145 $line .= $th_h.__('tag', 'usces').$th_f;
1146 $line .= $th_h.__('Custom Field', 'usces').$th_f;
1147
1148 $line .= $th_h.__('SKU code', 'usces').$th_f;
1149 $line .= $th_h.__('SKU display name ', 'usces').$th_f;
1150 $line .= $th_h.__('normal price', 'usces').$th_f;
1151 $line .= $th_h.__('Sale price', 'usces').$th_f;
1152 $line .= $th_h.__('stock', 'usces').$th_f;
1153 $line .= $th_h.__('stock status', 'usces').$th_f;
1154 $line .= $th_h.__('unit', 'usces').$th_f;
1155 $line .= $th_h.__('Apply business package', 'usces').$th_f;
1156 $line .= apply_filters( 'usces_filter_downloadcsv_header', '' );
1157 $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;
1158 $line .= $tr_f.$lf;
1159 }
1160 //==========================================================================
1161 mb_http_output('pass');
1162 set_time_limit(3600);
1163 header("Content-Type: application/octet-stream");
1164 header("Content-Disposition: attachment; filename=usces_item_list.".$ext);
1165 @ob_end_flush();
1166 flush();
1167
1168 foreach((array)$rows as $array) {
1169 $post_id = $array['ID'];
1170 $post = get_post($post_id);
1171
1172 //Post Data
1173 $line_item = $td_h1.$post->ID.$td_f;
1174 $line_item .= $td_h.$post->post_author.$td_f;
1175 $line_item .= $td_h.usces_entity_decode($post->post_content, $ext).$td_f;
1176 $line_item .= $td_h.usces_entity_decode($post->post_title, $ext).$td_f;
1177 $line_item .= $td_h.usces_entity_decode($post->post_excerpt, $ext).$td_f;
1178 $line_item .= $td_h.$post->post_status.$td_f;
1179 $line_item .= $td_h.$post->comment_status.$td_f;
1180 $line_item .= $td_h.$post->post_password.$td_f;
1181 $line_item .= $td_h.urldecode($post->post_name).$td_f;
1182 $line_item .= $td_h.$post->post_date.$td_f;
1183
1184 //Item Meta
1185 $line_item .= $td_h.$usces->getItemCode($post_id).$td_f;
1186 $line_item .= $td_h.usces_entity_decode($usces->getItemName($post_id), $ext).$td_f;
1187 $line_item .= $td_h.$usces->getItemRestriction($post_id).$td_f;
1188 $line_item .= $td_h.$usces->getItemPointrate($post_id).$td_f;
1189 $line_item .= $td_h.$usces->getItemGpNum1($post_id).$td_f.$td_h.$usces->getItemGpDis1($post_id).$td_f;
1190 $line_item .= $td_h.$usces->getItemGpNum2($post_id).$td_f.$td_h.$usces->getItemGpDis2($post_id).$td_f;
1191 $line_item .= $td_h.$usces->getItemGpNum3($post_id).$td_f.$td_h.$usces->getItemGpDis3($post_id).$td_f;
1192 $line_item .= $td_h.$usces->getItemShipping($post_id).$td_f;
1193 $delivery_method = '';
1194 $itemDeliveryMethod = $usces->getItemDeliveryMethod($post_id);
1195 foreach((array)$itemDeliveryMethod as $k => $v) {
1196 $delivery_method .= $v.$sp;
1197 }
1198 $delivery_method = rtrim($delivery_method, $sp);
1199 $line_item .= $td_h.$delivery_method.$td_f;
1200 $line_item .= $td_h.$usces->getItemShippingCharge($post_id).$td_f;
1201 $line_item .= $td_h.$usces->getItemIndividualSCharge($post_id).$td_f;
1202
1203 //Categories
1204 $category = '';
1205 $cat_ids = wp_get_post_categories($post_id);
1206 if(!empty($cat_ids)) {
1207 foreach($cat_ids as $id) {
1208 $category .= $id.$sp;
1209 }
1210 $category = rtrim($category, $sp);
1211 }
1212 $line_item .= $td_h.$category.$td_f;
1213
1214 //Tags
1215 $tag = '';
1216 $tags_ob = wp_get_object_terms($post_id, 'post_tag');
1217 foreach($tags_ob as $ob) {
1218 $tag .= $ob->name.$sp;
1219 }
1220 $tag = rtrim($tag, $sp);
1221 $line_item .= $td_h.$tag.$td_f;
1222
1223 //Custom Fields
1224 $cfield = '';
1225 $custom_fields = $usces->get_post_user_custom($post_id);
1226 if( is_array($custom_fields) && 0 < count($custom_fields) ){
1227 foreach($custom_fields as $cfkey => $cfvalues ) {
1228 if( is_array($cfvalues) )
1229 $cfield .= usces_entity_decode($cfkey, $ext) . $eq . usces_entity_decode($cfvalues[0], $ext) . $sp;
1230 else
1231 $cfield .= usces_entity_decode($cfkey, $ext) . $eq . usces_entity_decode($cfvalues, $ext) . $sp;
1232 }
1233 $cfield = rtrim($cfield, $sp);
1234 }
1235 $line_item .= $td_h.$cfield.$td_f;
1236
1237 //Item Options
1238 $line_options = '';
1239 $option_meta = usces_get_opts( $post_id, 'sort' );
1240 foreach($option_meta as $option_value) {
1241 $value = '';
1242 if(is_array($option_value['value'])) {
1243 foreach($option_value['value'] as $k => $v) {
1244 $values = explode("\n", $v);
1245 foreach($values as $val) {
1246 $value .= $val.$sp;
1247 }
1248 }
1249 $value = rtrim($value, $sp);
1250 } else {
1251 $value = trim($option_value['value']);
1252 $value = str_replace("\n", ';', $value);
1253 }
1254
1255 $line_options .= $td_h.usces_entity_decode($option_value['name'], $ext).$td_f;
1256 $line_options .= $td_h.$option_value['means'].$td_f;
1257 $line_options .= $td_h.$option_value['essential'].$td_f;
1258 $line_options .= $td_h.usces_entity_decode($value, $ext).$td_f;
1259
1260 }
1261
1262 //SKUs
1263 $sku_meta = $usces->get_skus( $post_id, 'sort' );
1264 foreach($sku_meta as $sku_value) {
1265
1266 $line_sku = $td_h.$sku_value['code'].$td_f;
1267 $line_sku .= $td_h.usces_entity_decode($sku_value['name'], $ext).$td_f;
1268 $line_sku .= $td_h.usces_crform($sku_value['cprice'], false, false, 'return', false).$td_f;
1269 $line_sku .= $td_h.usces_crform($sku_value['price'], false, false, 'return', false).$td_f;
1270 $line_sku .= $td_h.$sku_value['stocknum'].$td_f;
1271 $line_sku .= $td_h.$sku_value['stock'].$td_f;
1272 $line_sku .= $td_h.usces_entity_decode($sku_value['unit'], $ext).$td_f;
1273 $line_sku .= $td_h.$sku_value['gp'].$td_f;
1274 $line_sku .= apply_filters( 'usces_filter_downloadcsv_skuvalue', '', $sku_value );
1275
1276 $line .= $tr_h.$line_item.$line_sku.$line_options.$tr_f.$lf;
1277 }
1278 print(mb_convert_encoding($line, "SJIS-win", "UTF-8"));
1279 if(ob_get_contents ()){
1280 ob_flush();
1281 flush();
1282 }
1283 $line = '';
1284 wp_cache_flush();
1285 }
1286 $end = $table_f.$lf;
1287 //==========================================================================
1288 print(mb_convert_encoding($end, "SJIS-win", "UTF-8"));
1289 unset($rows, $DT, $line, $line_item, $line_options, $line_sku);
1290 exit();
1291 }
1292 endif;
1293
1294 }
1295 ?>