PluginProbe
Welcart e-Commerce / 1.4.11
Welcart e-Commerce v1.4.11
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 / item_post.php

item_post.php in Welcart e-Commerce 1.4.11, at functions/item_post.php

2,233 lines 78.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 function usces_get_post_meta_by_metaid( $meta_id ) {
3 global $wpdb;
4 $res = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->postmeta WHERE meta_id = %d", $meta_id), ARRAY_A);
5 return $res;
6 }
7 function usces_get_post_meta( $post_id, $key ) {
8 global $wpdb;
9 $res = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s", $post_id, $key), ARRAY_A);
10 return $res;
11 }
12 function usces_sort_post_meta( $post_id, $metastr ) {
13 global $wpdb;
14 $meta_ids = explode(',', $metastr);
15 if( !empty($meta_ids) ){
16 $i = 0;
17 foreach( $meta_ids as $meta_id ){
18
19 $rows = usces_get_post_meta_by_metaid( $meta_id );
20 $values = unserialize($rows['meta_value']);
21 $values['sort'] = $i;
22 $serialized_values = serialize($values);
23 $wpdb->query( $wpdb->prepare("UPDATE $wpdb->postmeta SET meta_value = %s WHERE meta_id = %d", $serialized_values, $rows['meta_id']) );
24 $i++;
25 }
26 }
27 return;
28 }
29
30 /**
31 * item option
32 */
33 //function has_item_option_meta( $postid ) {
34 function usces_get_opts( $post_id, $keyflag = 'sort' ) {
35 $opts = array();
36 $metas = usces_get_post_meta($post_id, '_iopt_');
37
38 if( empty($metas) ) return $opts;
39
40 foreach( $metas as $rows ){
41 $values = unserialize($rows['meta_value']);
42 $key = isset($values[$keyflag]) ? $values[$keyflag] : $values['sort'];
43 $opts[$key] = array(
44 'meta_id' => $rows['meta_id'],
45 'name' => $values['name'],
46 'means' => $values['means'],
47 'essential' => $values['essential'],
48 'value' => $values['value'],
49 'sort' => $values['sort']
50 );
51 }
52 ksort($opts);
53
54 return $opts;
55 }
56 function usces_add_opt( $post_id, $newvalue, $check = true ) {
57 global $wpdb, $usces;
58 if( $check ){
59 $metas = usces_get_post_meta($post_id, '_iopt_');
60 if( !empty($metas) ){
61 $meta_num = count($metas);
62 $unique = true;
63 $sortnull = true;
64 foreach( $metas as $meta ){
65 $values = unserialize($meta['meta_value']);
66 if( $values['name'] == $newvalue['name'] )
67 $unique = false;
68 if( !isset($values['sort']) )
69 $sortnull = false;
70 $sort[] = $values['sort'];
71 }
72 if( !$unique )
73 return -1;
74
75 rsort($sort);
76 $next_number = reset($sort) + 1;
77 $unique_sort = array_unique($sort);
78 if( $meta_num !== count($unique_sort) || $meta_num !== $next_number || !$sortnull){
79 //To repair the sort data
80 $i = 0;
81 foreach( $metas as $rows ){
82 $values = unserialize($rows['meta_value']);
83 $values['sort'] = $i;
84 $serialized_values = serialize($values);
85 $wpdb->query( $wpdb->prepare("UPDATE $wpdb->postmeta SET meta_value = %s WHERE meta_id = %d", $serialized_values, $rows['meta_id']) );
86 $i++;
87 }
88 }
89 }
90 $newvalue['sort'] = !empty($meta_num) ? $meta_num : 0;
91 }
92 $serialized_newvalue = serialize($newvalue);
93 $wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value ) VALUES (%d, '_iopt_', %s)", $post_id, $serialized_newvalue) );
94 $id = $wpdb->insert_id;
95 return $id;
96 }
97
98 /**
99 * item sku
100 */
101 function usces_add_sku( $post_id, $newvalue, $check = true ) {
102 global $wpdb, $usces;
103 if( $check ){
104 $metas = usces_get_post_meta($post_id, '_isku_');
105 if( !empty($metas) ){
106 $meta_num = count($metas);
107 $unique = true;
108 $sortnull = true;
109 foreach( $metas as $rows ){
110 $values = unserialize($rows['meta_value']);
111 if( $values['code'] == $newvalue['code'] )
112 $unique = false;
113 if( !isset($values['sort']) )
114 $sortnull = false;
115 $sort[] = $values['sort'];
116 }
117 if( !$unique )
118 return -1;
119
120 rsort($sort);
121 $next_number = $sort[0] + 1;
122 $unique_sort = array_unique($sort);
123 if( $meta_num != count($unique_sort) || $meta_num != $next_number || !$sortnull){
124 //To repair the sort data
125 $i = 0;
126 foreach( $metas as $rows ){
127 $values = unserialize($rows['meta_value']);
128 $values['sort'] = $i;
129 $serialized_values = serialize($values);
130 $wpdb->query( $wpdb->prepare("UPDATE $wpdb->postmeta SET meta_value = %s WHERE meta_id = %d", $serialized_values, $rows['meta_id']) );
131 $i++;
132 }
133 }
134 }
135 $newvalue['sort'] = !empty($meta_num) ? $meta_num : 0;
136 }
137 $newvalue = $usces->stripslashes_deep_post($newvalue);
138 $serialized_newvalue = serialize($newvalue);
139 $wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value ) VALUES (%d, '_isku_', %s)", $post_id, $serialized_newvalue) );
140 $id = $wpdb->insert_id;
141 return $id;
142 }
143
144
145 /**
146 * list_item_option
147 */
148 function list_item_option_meta( $opts ) {
149 // Exit if no meta
150 if ( ! $opts ) {
151 ?>
152 <table id="optlist-table" class="list" style="display: none;">
153 <thead>
154 <tr>
155 <th class="hanldh"> </th>
156 <th class="item-opt-key"><?php _e('option name','usces') ?></th>
157 <th class="item-opt-value"><?php _e('selected amount','usces') ?></th>
158 </tr>
159 </thead>
160 <tbody id="item-opt-list">
161 <tr><td></td></tr>
162 </tbody>
163 </table>
164 <?php
165 }else{
166 ?>
167 <table id="optlist-table" class="list">
168 <thead>
169 <tr>
170 <th class="hanldh"> </th>
171 <th class="item-opt-key"><?php _e('option name','usces') ?></th>
172 <th class="item-opt-value"><?php _e('selected amount','usces') ?></th>
173 </tr>
174 </thead>
175 <tbody id="item-opt-list">
176 <?php
177 foreach ( $opts as $opt )
178 echo _list_item_option_meta_row( $opt );
179 ?>
180 </tbody>
181 </table>
182 <?php
183 }
184 }
185
186 /**
187 * list_item_sku
188 */
189 function list_item_sku_meta( $skus ) {
190 // Exit if no meta
191 if ( empty( $skus ) ) {
192 ?>
193 <table id="skulist-table" class="list" style="display: none;">
194 <thead>
195 <tr>
196 <th class="hanldh" rowspan="2"> </th>
197 <th><?php _e('SKU code','usces'); ?></th>
198 <th><?php echo apply_filters('usces_filter_listprice_label', __('normal price','usces'), NULL, NULL); ?>(<?php usces_crcode(); ?>)</th>
199 <th><?php echo apply_filters('usces_filter_sellingprice_label', __('Sale price','usces'), NULL, NULL); ?>(<?php usces_crcode(); ?>)</th>
200 <th><?php _e('stock','usces'); ?></th>
201 <th><?php _e('stock status', 'usces'); ?></th>
202 </tr>
203 </thead>
204 <tbody id="item-sku-list">
205 <tr><td></td><td></td><td></td><td></td><td></td></tr>
206 </tbody>
207 </table>
208 <?php
209 }else{
210 ?>
211 <table id="skulist-table" class="list">
212 <thead>
213 <tr>
214 <th class="hanldh" rowspan="2"> </th>
215 <th class="item-sku-key"><?php _e('SKU code','usces'); ?></th>
216 <th class="item-sku-cprice"><?php echo apply_filters('usces_filter_listprice_label', __('normal price','usces'), NULL, NULL); ?>(<?php usces_crcode(); ?>)</th>
217 <th class="item-sku-price"><?php echo apply_filters('usces_filter_sellingprice_label', __('Sale price','usces'), NULL, NULL); ?>(<?php usces_crcode(); ?>)</th>
218 <th class="item-sku-zaikonum"><?php _e('stock','usces'); ?></th>
219 <th class="item-sku-zaiko"><?php _e('stock status','usces'); ?></th>
220 </tr>
221 <tr>
222 <th><?php _e('SKU display name ','usces'); ?></th>
223 <th><?php _e('unit','usces'); ?></th>
224 <?php
225 $advance_title = '<th colspan="2">&nbsp;</th>';
226 echo apply_filters('usces_filter_sku_meta_form_advance_title', $advance_title);
227 ?>
228 <th><?php _e('Apply business package','usces'); ?></th>
229 </tr>
230 </thead>
231 <tbody id="item-sku-list">
232 <?php
233 foreach ( $skus as $sku )
234 echo _list_item_sku_meta_row( $sku );
235 ?>
236 </tbody>
237 </table>
238 <?php
239 }
240 }
241
242
243
244 /**
245 * option meta row
246 */
247 function _list_item_option_meta_row( $opt ) {
248 $r = '';
249 $style = '';
250 $means = get_option('usces_item_option_select');
251
252 // $opt['meta_value'] = unserialize( $opt['meta_value'] );
253
254 $name = esc_attr($opt['name']);
255 $meansoption = '';
256 foreach($means as $meankey => $meanvalue){
257 if($meankey == $opt['means']) {
258 $selected = ' selected="selected"';
259 }else{
260 $selected = '';
261 }
262 $meansoption .= '<option value="' . esc_attr($meankey) . '"' . $selected . '>' . esc_html($meanvalue) . "</option>\n";
263 }
264 $essential = $opt['essential'] == 1 ? " checked='checked'" : "";
265 $value = '';
266 if(is_array($opt['value'])){
267 foreach($opt['value'] as $k => $v){
268 $value .= $v . "\n";
269 }
270 }else{
271 //$value = esc_attr(trim($opt['value']));
272 $value = $opt['value'];
273 }
274 $value = trim($value);
275 $id = (int) $opt['meta_id'];
276 $sort = (int) $opt['sort'];
277
278 ob_start();
279 ?>
280 <tr class="metastuffrow"><td colspan="3">
281 <table id="itemopt-<?php echo $id; ?>" class="metastufftable">
282 <tr>
283 <th class='handlb' rowspan='2'> </th>
284 <td class='item-opt-key'>
285 <div><input name='itemopt[<?php echo $id; ?>][name]' id='itemopt[<?php echo $id; ?>][name]' class='metaboxfield' type='text' size='20' value='<?php echo $name; ?>' /></div>
286 <div class='optcheck'>
287 <select name='itemopt[<?php echo $id; ?>][means]' id='itemopt[<?php echo $id; ?>][means]'><?php echo $meansoption; ?></select>
288 <label for='itemopt[<?php echo $id; ?>][essential]'><input name='itemopt[<?php echo $id; ?>][essential]' id='itemopt[<?php echo $id; ?>][essential]' type='checkbox' value='1'<?php echo $essential; ?> class='metaboxcheckfield' /><?php _e('Required','usces'); ?></label>
289 </div>
290 </td>
291 <td class='item-opt-value'>
292 <textarea name='itemopt[<?php echo $id; ?>][value]' id='itemopt[<?php echo $id; ?>][value]' class='metaboxfield'><?php echo esc_html($value); ?></textarea>
293 </td>
294 </tr>
295 <tr>
296 <td colspan='2' class='submittd'>
297 <div id='itemoptsubmit-<?php echo $id; ?>' class='submit'>
298 <input name='deleteitemopt[<?php echo $id; ?>]' id='deleteitemopt[<?php echo $id; ?>]' type='button' value='<?php esc_attr_e(__( 'Delete' )); ?>' onclick="if( jQuery('#post_ID').val() < 0 ) return; itemOpt.post('deleteitemopt', <?php echo $id; ?>);" />
299 <input name='updateitemopt[<?php echo $id; ?>]' id='updateitemopt[<?php echo $id; ?>]' type='button' value='<?php esc_attr_e(__( 'Update' )); ?>' onclick="if( jQuery('#post_ID').val() < 0 ) return; itemOpt.post('updateitemopt', <?php echo $id; ?>);" />
300 <input name='itemopt[<?php echo $id; ?>][sort]' id='itemopt[<?php echo $id; ?>][sort]' type='hidden' value='<?php echo $sort; ?>' />
301 </div>
302 <div id='itemopt_loading-<?php echo $id; ?>' class='meta_submit_loading'></div>
303 </td>
304 </tr>
305 </table>
306 </td></tr>
307 <?php
308 $r = ob_get_contents();
309 ob_end_clean();
310 return $r;
311 }
312
313 /**
314 * sku meta row
315 */
316 function _list_item_sku_meta_row( $sku ) {
317 $r = '';
318 $style = '';
319
320 $key = esc_attr($sku['code']);
321 $cprice = $sku['cprice'];
322 $price = $sku['price'];
323 $zaikonum = $sku['stocknum'];
324 $zaiko = $sku['stock'];
325 $skudisp = esc_attr($sku['name']);
326 $skuunit = esc_attr($sku['unit']);
327 $skugptekiyo = $sku['gp'];
328 //$charging_type = $sku['meta_value']['charging_type'];
329 $id = (int)$sku['meta_id'];
330 $zaikoselectarray = get_option('usces_zaiko_status');
331 $sort = (int) $sku['sort'];
332
333 ob_start();
334 ?>
335 <tr class='metastuffrow'><td colspan='6'>
336 <table id='itemsku-<?php echo $id; ?>' class='metastufftable'>
337 <tr>
338 <th class='handlb' rowspan='<?php echo apply_filters( 'usces_filter_sku_meta_rowspan', '3' ); ?>'> </th>
339 <td class='item-sku-key'><input name='itemsku[<?php echo $id; ?>][key]' id='itemsku[<?php echo $id; ?>][key]' class='skuname metaboxfield' type='text' value='<?php echo $key; ?>' /></td>
340 <td class='item-sku-cprice'><input name='itemsku[<?php echo $id; ?>][cprice]' id='itemsku[<?php echo $id; ?>][cprice]' class='skuprice metaboxfield' type='text' value='<?php echo $cprice; ?>' /></td>
341 <td class='item-sku-price'><input name='itemsku[<?php echo $id; ?>][price]' id='itemsku[<?php echo $id; ?>][price]' class='skuprice metaboxfield' type='text' value='<?php echo $price; ?>' /></td>
342 <td class='item-sku-zaikonum'><input name='itemsku[<?php echo $id; ?>][zaikonum]' id='itemsku[<?php echo $id; ?>][zaikonum]' class='skuzaikonum metaboxfield' type='text' value='<?php echo $zaikonum; ?>' /></td>
343 <td class='item-sku-zaiko'>
344 <select id='itemsku[<?php echo $id; ?>][zaiko]' name='itemsku[<?php echo $id; ?>][zaiko]' class='skuzaiko metaboxfield'>
345 <?php
346 for ( $i=0; $i<count($zaikoselectarray); $i++ ) {
347 $selected = ( $i == $zaiko ) ? " selected='selected'" : '';
348 ?>
349 <option value='<?php echo $i; ?>'<?php echo $selected; ?>><?php echo $zaikoselectarray[$i]; ?></option>
350 <?php
351 }
352 ?>
353 </select>
354 </td>
355 </tr>
356 <tr>
357 <td class='item-sku-key'><input name='itemsku[<?php echo $id; ?>][skudisp]' id='itemsku[<?php echo $id; ?>][skudisp]' class='skudisp metaboxfield' type='text' value='<?php echo $skudisp; ?>' />
358 </td>
359 <td class='item-sku-cprice'><input name='itemsku[<?php echo $id; ?>][skuunit]' id='itemsku[<?php echo $id; ?>][skuunit]' class='skuunit metaboxfield' type='text' value='<?php echo $skuunit; ?>' /></td>
360 <?php
361 $default_field = "\n\t\t<td colspan='2'>&nbsp;</td>";
362 echo apply_filters('usces_filter_sku_meta_row_advance', $default_field, $sku);
363 ?>
364 <td class='item-sku-zaiko'>
365 <select id='itemsku[<?php echo $id; ?>][skugptekiyo]' name='itemsku[<?php echo $id; ?>][skugptekiyo]' class='skugptekiyo metaboxfield'>
366 <option value='0' <?php echo ($skugptekiyo == 0 ? " selected='selected'" : ""); ?>><?php _e('Not apply','usces'); ?></option>
367 <option value='1' <?php echo ($skugptekiyo == 1 ? " selected='selected'" : ""); ?>><?php _e('Apply','usces'); ?></option>
368 </select>
369 </td>
370 </tr>
371 <?php echo apply_filters( 'usces_filter_sku_meta_row', '', $sku ); ?>
372 <tr>
373 <td colspan='5' class='submittd'>
374 <div id='skusubmit-<?php echo $id; ?>' class='submit'>
375 <input name='deleteitemsku[<?php echo $id; ?>]' id='deleteitemsku[<?php echo $id; ?>]' type='button' value='<?php esc_attr_e(__( 'Delete' )) ?>' onclick="if( jQuery('#post_ID').val() < 0 ) return; itemSku.post('deleteitemsku', <?php echo $id; ?>);" />
376 <input name='updateitemsku[<?php echo $id; ?>]' id='updateitemsku[<?php echo $style; ?>]' type='button' value='<?php esc_attr_e(__( 'Update' )); ?>' onclick="if( jQuery('#post_ID').val() < 0 ) return; itemSku.post('updateitemsku', <?php echo $id; ?>);" />
377 <input name='itemsku[<?php echo $id; ?>][sort]' id='itemsku[<?php echo $id; ?>][sort]' type='hidden' value='<?php echo $sort; ?>' />
378 </div>
379 <div id='itemsku_loading-<?php echo $id; ?>' class='meta_submit_loading'></div>
380 </td>
381 </tr>
382 </table>
383 </td></tr>
384 <?php
385 $r = ob_get_contents();
386 ob_end_clean();
387 return $r;
388 }
389
390
391 /**
392 * common_option_meta_form
393 */
394 function common_option_meta_form() {
395 $means = get_option('usces_item_option_select');
396 $meansoption = '';
397 foreach($means as $meankey => $meanvalue){
398 $meansoption .= '<option value="' . esc_attr($meankey) . '">' . esc_html($meanvalue) . "</option>\n";
399 }
400 ?>
401 <div id="itemopt_ajax-response"></div>
402 <p><strong><?php _e('Add a new option','usces') ?> : </strong></p>
403 <table id="newmeta2">
404 <thead>
405 <tr>
406 <th class="left"><label for="metakeyselect"><?php _e('option name','usces') ?></label></th>
407 <th><label for="metavalue"><?php _e('selected amount','usces') ?></label></th>
408 </tr>
409 </thead>
410
411 <tbody>
412 <tr>
413 <td class='item-opt-key'>
414 <input type="text" id="newoptname" name="newoptname" class="metaboxfield" tabindex="7" value="" />
415 <div class="optcheck">
416 <select name='newoptmeans' id='newoptmeans' class="metaboxfield long"><?php echo $meansoption; ?></select>
417 <label for='newoptessential'><input name="newoptessential" type="checkbox" id="newoptessential" class="metaboxcheckfield" /><?php _e('Required','usces') ?></label>
418 </div>
419 </td>
420 <td class='item-opt-value'><textarea id="newoptvalue" name="newoptvalue" class='metaboxfield'></textarea></td>
421 </tr>
422
423 <tr>
424 <td colspan="2" class="submittd">
425 <div id='newcomoptsubmit' class='submit'>
426 <input name="add_comopt" type="button" id="add_comopt" tabindex="9" value="<?php _e('Add common options','usces') ?>" onclick="itemOpt.post('addcommonopt', 0);" />
427 </div>
428 <div id="newcomopt_loading" class="meta_submit_loading"></div>
429 </td>
430 </tr>
431 </tbody>
432 </table>
433 <?php
434 }
435
436 /**
437 * item_option_meta_form
438 */
439 function item_option_meta_form() {
440 global $wpdb;
441 $usces_options = get_option('usces');
442 $limit = (int) apply_filters( 'postmeta_form_limit', 30 );
443 $cart_number = (int)get_option('usces_cart_number');
444 $opts = usces_get_opts($cart_number);
445 $means = get_option('usces_item_option_select');
446 $meansoption = '';
447 foreach($means as $meankey => $meanvalue){
448 $meansoption .= '<option value="' . esc_attr($meankey) . '">' . esc_html($meanvalue) . "</option>\n";
449 }
450 ?>
451 <div id="itemopt_ajax-response"></div>
452 <p><strong><?php _e('Applicable product options','usces') ?> : </strong></p>
453 <table id="newmeta2">
454 <thead>
455 <tr>
456 <th class="item-opt-key"><label for="metakeyselect"><?php _e('option name','usces') ?></label></th>
457 <th class="item-opt-value"><label for="metavalue"><?php _e('selected amount','usces') ?></label></th>
458 </tr>
459 </thead>
460
461 <tbody>
462 <tr>
463 <td class='item-opt-key'>
464 <?php if ( !empty($opts) ) { ?>
465 <select id="optkeyselect" name="optkeyselect" class="optkeyselect metaboxfield" tabindex="7" onchange="if( jQuery('#post_ID').val() < 0 ) return; itemOpt.post('keyselect', this.value);">
466 <option value="#NONE#"><?php _e( '-- Select --','usces' ); ?></option>
467 <?php foreach ( $opts as $opt ){ ?>
468 <option value='<?php echo $opt['meta_id']; ?>'><?php esc_attr_e($opt['name']); ?></option>
469 <?php } ?>
470 </select>
471 <input type="hidden" id="newoptname" name="newoptname" class="metaboxfield" />
472 <div class="optcheck">
473 <select name='newoptmeans' id='newoptmeans'><?php echo $meansoption; ?></select>
474 <label for='newoptessential'><input name="newoptessential" type="checkbox" id="newoptessential" class="metaboxcheckfield" /><?php _e('Required','usces') ?></label>
475 </div>
476 <?php } else { ?>
477 <p><?php _e('Please create a common option.','usces') ?></p>
478 <?php } ?>
479 </td>
480 <td class='item-opt-value'><textarea id="newoptvalue" name="newoptvalue" class='metaboxfield'></textarea></td>
481 </tr>
482
483 <tr>
484 <td colspan="2" class="submittd">
485 <?php if( is_array($opts) ) { ?>
486 <div id='newitemoptsubmit' class='submit'>
487 <input name="add_itemopt" type="button" id="add_itemopt" tabindex="9" value="<?php _e('Apply an option','usces') ?>" onclick="if( jQuery('#post_ID').val() < 0 ) return; itemOpt.post('additemopt', 0);" />
488 </div>
489 <div id="newitemopt_loading" class="meta_submit_loading"></div>
490 <?php } ?>
491 </td>
492 </tr>
493 </tbody>
494 </table>
495 <?php
496 }
497
498 /**
499 * item_sku_meta_form
500 */
501 function item_sku_meta_form() {
502 ?>
503 <div id="sku_ajax-response"></div>
504 <p><strong><?php _e('Add new SKU','usces') ?> : </strong></p>
505 <table id="newsku">
506 <thead>
507 <tr>
508 <th class="left"><?php _e('SKU code','usces') ?></th>
509 <th><?php echo apply_filters('usces_filter_listprice_label', __('normal price','usces'), NULL, NULL); ?>(<?php usces_crcode(); ?>)</th>
510 <th><?php echo apply_filters('usces_filter_sellingprice_label', __('Sale price','usces'), NULL, NULL); ?>(<?php usces_crcode(); ?>)</th>
511 <th><?php _e('stock','usces') ?></th>
512 <th><?php _e('stock status','usces') ?></th>
513 </tr>
514 <tr>
515 <th><?php _e('SKU display name ','usces') ?></th>
516 <th><?php _e('unit','usces') ?></th>
517 <?php
518 $advance_title = '<th colspan="2">&nbsp;</th>';
519 echo apply_filters('usces_filter_sku_meta_form_advance_title', $advance_title);
520 ?>
521 <th><?php _e('Apply business package','usces') ?></th>
522 </tr>
523 </thead>
524
525 <tbody>
526 <tr>
527 <td id="newskuleft" class='item-sku-key'><input type="text" id="newskuname" name="newskuname" class="newskuname metaboxfield"value="" /></td>
528 <td class='item-sku-cprice'><input type="text" id="newskucprice" name="newskucprice" class='newskuprice metaboxfield' /></td>
529 <td class='item-sku-price'><input type="text" id="newskuprice" name="newskuprice" class='newskuprice metaboxfield' /></td>
530 <td class='item-sku-zaikonum'><input type="text" id="newskuzaikonum" name="newskuzaikonum" class='newskuzaikonum metaboxfield' /></td>
531 <td class='item-sku-zaiko'>
532 <select id="newskuzaikoselect" name="newskuzaikoselect" class="newskuzaikoselect metaboxfield">
533 <?php
534 $zaikoselectarray = get_option('usces_zaiko_status');
535 foreach ( $zaikoselectarray as $v => $l ) {
536 echo "\n<option value='" . esc_attr($v) . "'>" . esc_html($l) . "</option>";
537 }
538 ?>
539 </select>
540 </td>
541 </tr>
542 <tr>
543 <td class='item-sku-key'><input type="text" id="newskudisp" name="newskudisp" class="newskudisp metaboxfield" /></td>
544 <td class='item-sku-cprice'><input type="text" id="newskuunit" name="newskuunit" class='newskuunit metaboxfield' /></td>
545 <?php
546 $advance_field = '<td class="item-sku-price">&nbsp;</td><td class="item-sku-zaikonum">&nbsp;</td>';
547 echo apply_filters('usces_filter_sku_meta_form_advance_field', $advance_field );
548 ?>
549 <td class='item-sku-zaiko'>
550 <select id="newskugptekiyo" name="newskugptekiyo" class="newskugptekiyo metaboxfield">
551 <option value="0"><?php _e('Not apply','usces') ?></option>
552 <option value="1"><?php _e('Apply','usces') ?></option>
553 </select>
554 </td>
555 </tr>
556 <?php echo apply_filters( 'usces_filter_newsku_meta_row', '' ); ?>
557 <tr>
558 <td colspan="5" class="submittd">
559 <div id='newskusubmit' class='submit'><input name="add_itemsku" type="button" id="add_itemsku" tabindex="9" value="<?php _e('Add SKU','usces') ?>" onclick="if( jQuery('#post_ID').val() < 0 ) return; itemSku.post('additemsku', 0);" /></div>
560 <div id="newitemsku_loading" class="meta_submit_loading"></div>
561 </td>
562 </tr>
563 </tbody>
564 </table>
565 <?php
566 }
567
568
569 //
570 // Post Meta
571 //
572
573 /**
574 * add_item_option_meta
575 */
576 function add_item_option_meta( $post_ID ) {
577 global $usces;
578
579 $post_ID = (int) $post_ID;
580 $value = array();
581 $opts = array();
582 $protected = array( '#NONE#', '_wp_attached_file', '_wp_attachment_metadata', '_wp_old_slug', '_wp_page_template' );
583
584 $newoptname = isset($_POST['newoptname']) ? trim( $_POST['newoptname'] ) : '';
585 $newoptmeans = isset($_POST['newoptmeans']) ? (int)$_POST['newoptmeans']: 0;
586 $newoptessential = isset($_POST['newoptessential']) ? $_POST['newoptessential']: 0;
587 $newoptvalue = isset($_POST['newoptvalue']) ? trim($_POST['newoptvalue']) : '';
588
589 if ( ($newoptmeans >= 2 || WCUtils::is_zero($newoptvalue) || !empty ( $newoptvalue )) && !empty ( $newoptname) ) {
590
591 if ( $newoptname )
592 $metakey = $newoptname; // default
593
594 if ( in_array($metakey, $protected) )
595 return false;
596
597 wp_cache_delete($post_ID, 'post_meta');
598
599 $value['name'] = str_replace("\\",'',$newoptname);
600 $value['means'] = $newoptmeans;
601 $value['essential'] = $newoptessential;
602 $value['value'] = str_replace("\\",'',$newoptvalue);
603 $value = $usces->stripslashes_deep_post($value);
604
605 $id = usces_add_opt($post_ID, $value);
606
607 return $id;
608 }
609 return false;
610 } // add_meta
611
612 /**
613 * add_item_sku_meta
614 */
615 function add_item_sku_meta( $post_ID ) {
616 global $usces;
617
618 $post_ID = (int) $post_ID;
619 $value = array();
620 $skus = array();
621 $protected = array( '_wp_attached_file', '_wp_attachment_metadata', '_wp_old_slug', '_wp_page_template' );
622
623 $newskuname = isset($_POST['newskuname']) ? trim( $_POST['newskuname'] ) : '';
624 $newskucprice = isset($_POST['newskucprice']) ? $_POST['newskucprice']: '';
625 $newskuprice = isset($_POST['newskuprice']) ? $_POST['newskuprice']: '';
626 $newskuzaikonum = isset($_POST['newskuzaikonum']) ? $_POST['newskuzaikonum']: '';
627 $newskuzaikoselect = isset($_POST['newskuzaikoselect']) ? $_POST['newskuzaikoselect'] : '';
628 $newskudisp = isset($_POST['newskudisp']) ? trim( $_POST['newskudisp'] ) : '';
629 $newskuunit = isset($_POST['newskuunit']) ? trim( $_POST['newskuunit'] ) : '';
630 $newskugptekiyo = isset($_POST['newskugptekiyo']) ? $_POST['newskugptekiyo'] : '';
631
632 if ( !WCUtils::is_blank($newskuname) && !WCUtils::is_blank($newskuprice) && !WCUtils::is_blank($newskuzaikoselect) ) {
633
634 if ( in_array($newskuname, $protected) )
635 return false;
636
637 wp_cache_delete($post_ID, 'post_meta');
638
639 $value['code'] = $newskuname;
640 $value['name'] = $newskudisp;
641 $value['cprice'] = $newskucprice;
642 $value['price'] = $newskuprice;
643 $value['unit'] = $newskuunit;
644 $value['stocknum'] = $newskuzaikonum;
645 $value['stock'] = $newskuzaikoselect;
646 $value['gp'] = $newskugptekiyo;
647 $value = apply_filters('usces_filter_add_item_sku_meta_value', $value);
648
649 $id = usces_add_sku($post_ID, $value);
650 return $id;
651 }
652 return false;
653 } // add_meta
654
655
656
657 /**
658 * up_item_option_meta
659 */
660 function up_item_option_meta( $post_ID ) {
661 global $wpdb, $usces;
662
663 $post_ID = (int) $post_ID;
664 $value = array();
665
666 $optmetaid = isset($_POST['optmetaid']) ? (int)$_POST['optmetaid'] : '';
667 $optname = isset($_POST['optname']) ? $_POST['optname'] : '';
668 $optmeans = isset($_POST['optmeans']) ? (int)$_POST['optmeans']: 0;
669 $optessential = isset($_POST['optessential']) ? $_POST['optessential']: 0;
670 $optsort = isset($_POST['sort']) ? $_POST['sort']: 0;
671 $optvalue = isset($_POST['optvalue']) ? trim($_POST['optvalue']) : '';
672
673 $metakey = '_iopt_';
674 $value['name'] = str_replace("\\",'',$optname);
675 $value['means'] = $optmeans;
676 $value['essential'] = $optessential;
677 $value['value'] = str_replace("\\",'',$optvalue);
678 $value['sort'] = $optsort;
679 $value = $usces->stripslashes_deep_post($value);
680 $valueserialized = serialize($value);
681
682 wp_cache_delete($post_ID, 'post_meta');
683
684 $res = $wpdb->query( $wpdb->prepare("UPDATE $wpdb->postmeta SET meta_value = %s WHERE meta_id = %d", $valueserialized, $optmetaid) );
685 return $res;
686 } // update_meta
687
688 /**
689 * up_item_sku_meta
690 */
691 function up_item_sku_meta( $post_ID ) {
692 global $wpdb, $usces;
693
694 $post_ID = (int) $post_ID;
695 $value = array();
696
697 $skuname = isset($_POST['skuname']) ? trim( $_POST['skuname'] ) : '';
698 $skumetaid = isset($_POST['skumetaid']) ? (int)$_POST['skumetaid'] : '';
699 $skucprice = isset($_POST['skucprice']) ? trim( $_POST['skucprice'] ): 0;
700 $skuprice = isset($_POST['skuprice']) ? trim( $_POST['skuprice'] ): 0;
701 $skuzaikonum = isset($_POST['skuzaikonum']) ? trim( $_POST['skuzaikonum'] ): 0;
702 $skuzaiko = isset($_POST['skuzaiko']) ? (int)$_POST['skuzaiko'] : '';
703 $skudisp = isset($_POST['skudisp']) ? trim( $_POST['skudisp'] ): '';
704 $skuunit = isset($_POST['skuunit']) ? trim( $_POST['skuunit'] ): '';
705 $skugptekiyo = isset($_POST['skugptekiyo']) ? (int)$_POST['skugptekiyo'] : 0;
706 $skusort = isset($_POST['sort']) ? $_POST['sort']: 0;
707
708 $value['code'] = $skuname;
709 $value['name'] = $skudisp;
710 $value['cprice'] = $skucprice;
711 $value['price'] = $skuprice;
712 $value['unit'] = $skuunit;
713 $value['stocknum'] = $skuzaikonum;
714 $value['stock'] = $skuzaiko;
715 $value['gp'] = $skugptekiyo;
716 $value['sort'] = $skusort;
717 $value = $usces->stripslashes_deep_post($value);
718
719 $skus = $usces->get_skus($post_ID);
720 foreach( $skus as $sku ){
721 if( $sku['code'] == $skuname && $sku['meta_id'] != $skumetaid){
722 return -1;
723 break;
724 }
725 }
726
727 $value = apply_filters('usces_filter_up_item_sku_meta_value', $value);
728
729 $valueserialized = serialize($value);
730
731 if ( !WCUtils::is_blank($skumetaid) && !WCUtils::is_blank($skuname) && !WCUtils::is_blank($skuprice) ) {
732
733 wp_cache_delete($post_ID, 'post_meta');
734
735 $res = $wpdb->query( $wpdb->prepare("UPDATE $wpdb->postmeta SET meta_value = %s WHERE meta_id = %d", $valueserialized, $skumetaid) );
736 return $res;
737 }
738 return false;
739 } // update_meta
740
741
742
743 /**
744 * del_item_option_meta
745 */
746 function del_item_option_meta( $post_ID ) {
747 global $wpdb;
748
749 $post_ID = (int) $post_ID;
750 $optmetaid = isset($_POST['optmetaid']) ? (int)$_POST['optmetaid'] : '';
751
752 wp_cache_delete($post_ID, 'post_meta');
753
754 $res = $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->postmeta WHERE meta_id = %d", $optmetaid) );
755
756 $opts = usces_get_opts($post_ID);
757 if( !empty($opts) ){
758 $i = 0;
759 foreach( $opts as $opt ){
760 $opt['sort'] = $i;
761 $meta_id = $opt['meta_id'];
762 unset($opt['meta_id']);
763 $serialized_values = serialize($opt);
764 $wpdb->query( $wpdb->prepare("UPDATE $wpdb->postmeta SET meta_value = %s WHERE meta_id = %d", $serialized_values, $meta_id) );
765 $i++;
766 }
767 }
768 return ;
769 } // delete_meta
770
771 /**
772 * del_item_sku_meta
773 */
774 function del_item_sku_meta( $post_ID ) {
775 global $wpdb, $usces;
776
777 $post_ID = (int) $post_ID;
778 $skumetaid = isset($_POST['skumetaid']) ? (int)$_POST['skumetaid'] : '';
779
780 wp_cache_delete($post_ID, 'post_meta');
781
782 $res = $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->postmeta WHERE meta_id = %d", $skumetaid) );
783
784 $skus = $usces->get_skus($post_ID);
785 if( !empty($skus) ){
786 $i = 0;
787 foreach( $skus as $sku ){
788 $sku['sort'] = $i;
789 $meta_id = $sku['meta_id'];
790 unset($sku['meta_id']);
791 $serialized_values = serialize($sku);
792 $wpdb->query( $wpdb->prepare("UPDATE $wpdb->postmeta SET meta_value = %s WHERE meta_id = %d", $serialized_values, $meta_id) );
793 $i++;
794 }
795 }
796 return ;
797 } // delete_meta
798
799
800
801 function select_common_option( $post_ID ) {
802 global $wpdb;
803
804 $meta_id = isset($_POST['meta_id']) ? $_POST['meta_id'] : '';
805 if(!$meta_id) return ;
806
807 $meta_value = $wpdb->get_var( $wpdb->prepare("SELECT meta_value FROM $wpdb->postmeta WHERE meta_id = %d ", $meta_id) );
808 $array_val = unserialize( $meta_value );
809
810 $means = $array_val['means'];
811 $essential = $array_val['essential'];
812 $value = $array_val['value'];
813 $res = $means . '#usces#' . $essential . '#usces#' . $value;
814 return $res;
815 } // select_common_option
816
817
818
819
820 function order_item2cart_ajax(){
821 global $usces;
822
823 if( $_POST['action'] != 'order_item2cart_ajax' ) die(0);
824
825 $_POST = $usces->stripslashes_deep_post($_POST);
826 $order_id = usces_add_ordercartdata();
827 if( !$order_id )
828 die( 0 );
829
830 $cart = usces_get_ordercartdata( $order_id );
831 $return = usces_get_ordercart_row( $order_id, $cart );
832 /*
833 REGEX BUG: but it'll return info
834 Compose JavaScript for return
835 */
836 die( $return );
837 }
838
839 function order_item_ajax(){
840 global $usces;
841
842 if( $_POST['action'] != 'order_item_ajax' ) die(0);
843
844 $res = false;
845 $_POST = $usces->stripslashes_deep_post($_POST);
846
847 switch ( $_POST['mode'] ) {
848 case 'completionMail':
849 case 'orderConfirmMail':
850 case 'changeConfirmMail':
851 case 'receiptConfirmMail':
852 case 'mitumoriConfirmMail':
853 case 'cancelConfirmMail':
854 case 'otherConfirmMail':
855 $res = usces_order_confirm_message( $_POST['order_id'] );
856 break;
857 case 'sendmail':
858 $res = usces_ajax_send_mail();
859 break;
860 case 'get_order_item':
861 $res = get_order_item( $_POST['itemcode'] );
862 break;
863 case 'get_item_select_option':
864 $res = usces_get_item_select_option( $_POST['cat_id'] );
865 break;
866 case 'ordercheckpost':
867 $res = usces_update_ordercheck();
868 break;
869 case 'getmember':
870 $res = usces_get_member_neworder();
871 break;
872 case 'recalculation':
873 $res = usces_order_recalculation( $_POST['order_id'], $_POST['mem_id'], $_POST['post_ids'], $_POST['skus'], $_POST['prices'], $_POST['quants'], $_POST['upoint'], $_POST['shipping_charge'], $_POST['cod_fee'] );
874 break;
875 }
876
877 $res = apply_filters( 'usces_filter_order_item_ajax', $res );
878
879 if( $res === false ) die(0);
880
881 //REGEX BUG: but it'll return info
882 // Compose JavaScript for return
883 die( $res );
884 }
885
886 function usces_get_item_select_option( $cat_id ){
887 global $usces;
888 $number = apply_filters( 'usces_filter_item_select_numberposts', 50, $cat_id );
889 $args = array( 'category' => $cat_id, 'numberposts' => $number );
890 $items = get_posts( $args );
891 $option = '<option value="-1">商品を選択して下さい</option>' . "\n";
892 foreach( $items as $item ){
893 $ItemName = get_post_meta($item->ID, '_itemName', true);
894 $ItemCode = get_post_meta($item->ID, '_itemCode', true);
895 $option .= '<option value="' . urlencode($ItemCode) . '">' . $ItemName . '(' . $ItemCode . ')' . '</option>' . "\n";
896 }
897 return $option;
898 }
899
900 /**
901 * order Item html
902 */
903 function usces_get_member_neworder() {
904 global $wpdb;
905 $wpdb->show_errors();
906 $res = '';
907 $member_table = $wpdb->prefix . "usces_member";
908 $query = $wpdb->prepare("SELECT * FROM $member_table WHERE mem_email = %s", trim($_POST['email']));
909 $value = $wpdb->get_row( $query, ARRAY_A );
910 if( !$value ){
911 die( 'none#usces#1' );
912 }else{
913 $res .= 'ok#usces#member_id=' . $value['ID'];
914 $res .= '#usces#customer[name1]=' . $value['mem_name1'];
915 $res .= '#usces#customer[name2]=' . $value['mem_name2'];
916 $res .= '#usces#customer[name3]=' . $value['mem_name3'];
917 $res .= '#usces#customer[name4]=' . $value['mem_name4'];
918 $res .= '#usces#customer[zipcode]=' . $value['mem_zip'];
919 $res .= '#usces#customer[pref]=' . $value['mem_pref'];
920 $res .= '#usces#customer[address1]=' . $value['mem_address1'];
921 $res .= '#usces#customer[address2]=' . $value['mem_address2'];
922 $res .= '#usces#customer[address3]=' . $value['mem_address3'];
923 $res .= '#usces#customer[tel]=' . $value['mem_tel'];
924 $res .= '#usces#customer[fax]=' . $value['mem_fax'];
925 $res .= '#usces#delivery[name1]=' . $value['mem_name1'];
926 $res .= '#usces#delivery[name2]=' . $value['mem_name2'];
927 $res .= '#usces#delivery[name3]=' . $value['mem_name3'];
928 $res .= '#usces#delivery[name4]=' . $value['mem_name4'];
929 $res .= '#usces#delivery[zipcode]=' . $value['mem_zip'];
930 $res .= '#usces#delivery[pref]=' . $value['mem_pref'];
931 $res .= '#usces#delivery[address1]=' . $value['mem_address1'];
932 $res .= '#usces#delivery[address2]=' . $value['mem_address2'];
933 $res .= '#usces#delivery[address3]=' . $value['mem_address3'];
934 $res .= '#usces#delivery[tel]=' . $value['mem_tel'];
935 $res .= '#usces#delivery[fax]=' . $value['mem_fax'];
936
937 $member_metetable = $wpdb->prefix . "usces_member_meta";
938 $query = $wpdb->prepare("SELECT * FROM $member_metetable WHERE meta_key LIKE %s AND member_id = %d", 'csmb_%', $value['ID']);
939 $customs = $wpdb->get_results( $query, ARRAY_A );
940 if( !empty($customs) ){
941 foreach( $customs as $cusv ){
942 $res .= '#usces#custom_customer[' . substr($cusv['meta_key'], 5) . ']=' . $cusv['meta_value'];
943 $res .= '#usces#custom_delivery[' . substr($cusv['meta_key'], 5) . ']=' . $cusv['meta_value'];
944 }
945 }
946 //die( urlencode($res) );
947 }
948
949 die( $res );
950 }
951
952 //function order_item2cart() {
953 // global $usces;
954 //
955 // if( $_POST['action'] != 'order_item2cart_ajax' ) die(0);
956 //
957 // usces_add_ordercartdata();
958 // //$res = usces_update_ordercart();
959 ////20120613ysk start 0000500
960 // //if( $res === false ) die(0);
961 // //if( $res === 0 ) die('nodata');
962 //
963 // //die( $res );
964 // return $res;
965 ////20120613ysk end
966 //}
967
968 function usces_add_ordercartdata(){
969 global $usces, $wpdb;
970 $res = 0;
971
972 $order_id = (int)$_POST['order_id'];
973 if( !$order_id )
974 return $res;
975
976 $post_id = (int)$_POST['post_id'];
977 $sku_code = urldecode($_POST['sku']);
978 $quantity = 1;
979
980 $current_cart = usces_get_ordercartdata( $order_id );
981 $temp_arr = array();
982 foreach( $current_cart as $cv ){
983 $temp_arr[] = $cv['row_index'];
984 }
985 $row_index = ( 0 < count($temp_arr) ) ? max($temp_arr) + 1 : 0;
986
987 $cart_table = $wpdb->prefix . "usces_ordercart";
988 $cart_meta_table = $wpdb->prefix . "usces_ordercart_meta";
989
990 $item_code = get_post_meta( $post_id, '_itemCode', true);
991 $item_name = get_post_meta( $post_id, '_itemName', true);
992 $skus = $usces->get_skus($post_id, 'code');
993 $sku = $skus[$sku_code];
994 if( empty($usces->option['tax_rate']) ){
995 $tax = 0;
996
997 }else{
998 $tax = ($sku['price'] * $quantity) * $usces->options['tax_rate'] / 100;
999 $cr = $usces->options['system']['currency'];
1000 $decimal = $usces_settings['currency'][$cr][1];
1001 $decipad = (int)str_pad( '1', $decimal+1, '0', STR_PAD_RIGHT );
1002 switch( $usces->options['tax_method'] ){
1003 case 'cutting':
1004 $tax = floor($tax*$decipad)/$decipad;
1005 break;
1006 case 'bring':
1007 $tax = ceil($tax*$decipad)/$decipad;
1008 break;
1009 case 'rounding':
1010 if( 0 < $decimal ){
1011 $tax = round($tax, (int)$decimal);
1012 }else{
1013 $tax = round($tax);
1014 }
1015 break;
1016 }
1017 }
1018 $query = $wpdb->prepare("INSERT INTO $cart_table
1019 (
1020 order_id, row_index, post_id, item_code, item_name,
1021 sku_code, sku_name, cprice, price, quantity,
1022 unit, tax, destination_id, cart_serial
1023 ) VALUES (
1024 %d, %d, %d, %s, %s,
1025 %s, %s, %f, %f, %d,
1026 %s, %d, %d, %s
1027 )",
1028 $order_id, $row_index, $post_id, $item_code, $item_name,
1029 $sku_code, $sku['name'], $sku['cprice'], $sku['price'], $quantity,
1030 $sku['unit'], $tax, NULL, NULL
1031 );
1032 $res = $wpdb->query($query);
1033 $cart_id = NULL;
1034 if( false !== $res ){
1035 $cart_id = $wpdb->insert_id ;
1036
1037 $item_opts = usces_get_opts( $post_id, 'name' );
1038 foreach( $item_opts as $key => $iopts ){
1039 if( 3 == $iopts['means'] || 4 == $iopts['means'] ){
1040 //POSTが無ければNULLで追加
1041 if( !isset($_POST['itemOption'][$key]) ){
1042 $query = $wpdb->prepare(
1043 "INSERT INTO $cart_meta_table
1044 ( cart_id, meta_type, meta_key, meta_value ) VALUES ( %d, %s, %s, %s )",
1045 $cart_id, 'option', $iopts['name'], NULL );
1046 $wpdb->query( $query );
1047 }
1048 }
1049 }
1050
1051 if( isset($_POST['itemOption']) ){
1052 foreach((array)$_POST['itemOption'] as $okey => $ovalue){
1053 //$okey = urldecode($okey);
1054 $means = $item_opts[$okey]['means'];
1055
1056 if(is_array($ovalue)) {
1057 $temp = array();
1058 if( 4 == $means ){
1059 foreach( $ovalue as $k => $v ){
1060 //$temp[] = urldecode($v);
1061 $temp[] = $v;
1062 }
1063 }else{
1064 foreach( $ovalue as $k => $v ){
1065 //$temp[urlencode($k)] = $v;
1066 $temp[urlencode($k)] = $v;
1067 }
1068 }
1069 $ovalue = serialize($temp);
1070 } else {
1071 //$ovalue = urldecode($ovalue);
1072 $ovalue = $ovalue;
1073 }
1074 $aquery = $wpdb->prepare(
1075 "INSERT INTO $cart_meta_table
1076 ( cart_id, meta_type, meta_key, meta_value ) VALUES (%d, %s, %s, %s)",
1077 $cart_id, 'option', $okey, $ovalue );
1078 $wpdb->query($aquery);
1079 }
1080 }
1081 }
1082
1083 $res = apply_filters( 'usces_filter_add_ordercart', $res, $order_id, $cart_id );
1084
1085 if( $res )
1086 return $order_id;
1087 else
1088 return $res;
1089 }
1090
1091 function get_order_item( $item_code ) {
1092 global $usces, $post;
1093
1094 $post_id = $usces->get_postIDbyCode( $item_code );
1095 if( $post_id == NULL ) return false;
1096 $post = get_post($post_id);
1097
1098 $pict_id = $usces->get_mainpictid( $item_code );
1099 $pict_link = wp_get_attachment_image($pict_id, array(150, 150), true);
1100 preg_match("/^\<a .+\>(\<img .+\/\>)\<\/a\>$/", $pict_link, $match);
1101 $pict = isset($match[1]) ? $match[1] : '';
1102 $skus = $usces->get_skus( $post_id );
1103 $optkeys = $usces->get_itemOptionKey( $post_id );
1104 $itemName = esc_html($usces->getItemName($post_id));
1105
1106 $r = '';
1107 $r .= $pict_link . "\n";
1108 $r .= "<h3>" . $itemName . "</h3>\n";
1109 $r .= "<div class='skuform'>\n";
1110
1111 $r .= "<table class='skumulti'>\n";
1112 $r .= "<thead>\n";
1113 $r .= "<tr>\n";
1114 $r .= "<th>" . __('SKU code','usces') . "</th>\n";
1115 $r .= "<th>" . __('SKU display name ','usces') . "</th>\n";
1116 $usces_listprice = __('List price', 'usces') . usces_guid_tax('return');
1117 $r .= "<th>" . apply_filters('usces_filter_listprice_label', $usces_listprice, __('List price', 'usces'), usces_guid_tax('return')) . "</th>\n";
1118 $usces_sellingprice = __('Sale price','usces') . usces_guid_tax('return');
1119 $r .= "<th>" . apply_filters('usces_filter_sellingprice_label', $usces_sellingprice, __('Sale price', 'usces'), usces_guid_tax('return')) . "</th>\n";
1120 $r .= "<th>" . __('stock status','usces') . "</th>\n";
1121 $r .= "<th>" . __('stock','usces') . "</th>\n";
1122 $r .= "<th>" . __('unit','usces') . "</th>\n";
1123 $r .= "<th>&nbsp;</th>\n";
1124 $r .= "</tr>\n";
1125 $r .= "</thead>\n";
1126 $r .= "<tbody>\n";
1127 //for ($i=0; $i<count($skus['code']); $i++) :
1128 // $sku = esc_attr($skus['code'][$i]);
1129 // $cprice = esc_attr($skus['cprice'][$i]);
1130 // $price = esc_attr($skus['price'][$i]);
1131 // $zaiko = esc_attr($usces->zaiko_status[$skus['stock'][$i]]);
1132 // $zaikonum = esc_attr($skus['stocknum'][$i]);
1133 // $disp = esc_attr($skus['name'][$i]);
1134 // $unit = esc_attr($skus['unit'][$i]);
1135 // $gptekiyo = $skus['gp'][$i];
1136 foreach($skus as $sku) :
1137 $key = urlencode($sku['code']);
1138 $cprice = esc_attr($sku['cprice']);
1139 $price = esc_attr($sku['price']);
1140 $zaiko = esc_attr($usces->zaiko_status[$sku['stock']]);
1141 $zaikonum = esc_attr($sku['stocknum']);
1142 $disp = esc_attr($sku['name']);
1143 $unit = esc_attr($sku['unit']);
1144 $gptekiyo = $sku['gp'];
1145 $sort = (int)$sku['sort'];
1146 $r .= "<tr>\n";
1147 $r .= "<td rowspan='2'>" . esc_js($sku['code']) . "</td>\n";
1148 $r .= "<td>" . $disp . "</td>\n";
1149 $r .= "<td><span class='cprice'>" . ( ( !empty($cprice) ) ? usces_crform( $cprice, true, false, 'return' ) : '' ) . "</span></td>\n";
1150 $r .= "<td><span class='price'>" . usces_crform( $price, true, false, 'return' ) . "</span></td>\n";
1151 $r .= "<td>" . $zaiko . "</td>\n";
1152 $r .= "<td>" . $zaikonum . "</td>\n";
1153 // $r .= "<td>" . usces_the_itemQuant() . "</td>\n";
1154 $r .= "<td>" . $unit . "</td>\n";
1155 $r .= "<td>\n";
1156 $r .= "<input name=\"itemNEWName[{$post_id}][{$key}]\" type=\"hidden\" id=\"itemNEWName[{$post_id}][{$key}]\" value=\"{$itemName}\" />\n";
1157 $r .= "<input name=\"itemNEWCode[{$post_id}][{$key}]\" type=\"hidden\" id=\"itemNEWCode[{$post_id}][{$key}]\" value=\"{$item_code}\" />\n";
1158 $r .= "<input name=\"skuNEWName[{$post_id}][{$key}]\" type=\"hidden\" id=\"skuNEWName[{$post_id}][{$key}]\" value=\"{$key}\" />\n";
1159 $r .= "<input name=\"skuNEWCprice[{$post_id}][{$key}]\" type=\"hidden\" id=\"skuNEWCprice[{$post_id}][{$key}]\" value=\"{$cprice}\" />\n";
1160 $r .= "<input name=\"skuNEWDisp[{$post_id}][{$key}]\" type=\"hidden\" id=\"skuNEWDisp[{$post_id}][{$key}]\" value=\"{$disp}\" />\n";
1161 $r .= "<input name=\"zaikoNEWnum[{$post_id}][{$key}]\" type=\"hidden\" id=\"zaikoNEWnum[{$post_id}][{$key}]\" value=\"{$zaikonum}\" />\n";
1162 $r .= "<input name=\"zaiNEWko[{$post_id}][{$key}]\" type=\"hidden\" id=\"zaiNEWko[{$post_id}][{$key}]\" value=\"{$zaiko}\" />\n";
1163 $r .= "<input name=\"uniNEWt[{$post_id}][{$key}]\" type=\"hidden\" id=\"uniNEWt[{$post_id}][{$key}]\" value=\"{$unit}\" />\n";
1164 $r .= "<input name=\"gpNEWtekiyo[{$post_id}][{$key}]\" type=\"hidden\" id=\"gpNEWtekiyo[{$post_id}][{$key}]\" value=\"{$gptekiyo}\" />\n";
1165 $r .= "<input name=\"skuNEWPrice[{$post_id}][{$key}]\" type=\"hidden\" id=\"skuNEWPrice[{$post_id}][{$key}]\" value=\"{$price}\" />\n";
1166 $r .= "<input name=\"inNEWCart[{$post_id}][{$key}]\" type=\"button\" id=\"inNEWCart[{$post_id}][{$key}]\" class=\"skubutton\" value=\"" . __('Add to Whish List','usces') . "\" onclick=\"orderItem.add2cart('{$post_id}', '{$key}');\" />";
1167 $r .= "</td>\n";
1168 $r .= "</tr>\n";
1169 $r .= "<tr>\n";
1170 if($optkeys) :
1171 $r .= "<td colspan='7'>\n";
1172 foreach($optkeys as $optkey => $optvalue) :
1173 $r .= "<div>\n";
1174 $name = esc_attr($optvalue);
1175 $optcode = urlencode($name);
1176 $opts = usces_get_opts($post_id, 'name');
1177 $opt = $opts[$optvalue];
1178 //20110715ysk start 0000202
1179 $means = (int)$opt['means'];
1180 $essential = (int)$opt['essential'];
1181 $r .= "\n<label for='itemNEWOption[{$post_id}][{$key}][{$optcode}]' class='iopt_label'>{$name}</label>\n";
1182 switch($means) {
1183 case 0://Single-select
1184 case 1://Multi-select
1185 $selects = explode("\n", $opt['value']);
1186 $multiple = ($means === 0) ? '' : ' multiple';
1187 $multiple_array = ($means === 0) ? '' : '_multiple';
1188
1189 $r .= "\n<select name='itemNEWOption[{$post_id}][{$key}][{$optcode}]' id='itemNEWOption[{$post_id}][{$key}][{$optcode}]' class='iopt_select{$multiple_array}'{$multiple}>\n";
1190 if($essential == 1)
1191 $r .= "\t<option value='#NONE#' selected='selected'>" . __('Choose','usces') . "</option>\n";
1192 $s=0;
1193 foreach($selects as $v) {
1194 $v = trim($v);
1195 //$optvalue = urlencode($v);
1196 if($s == 0 && $essential == 0)
1197 $selected = ' selected="selected"';
1198 else
1199 $selected = '';
1200 $r .= "\t<option value='{$v}'{$selected}>{$v}</option>\n";
1201 $s++;
1202 }
1203 $r .= "</select>\n";
1204 break;
1205 case 2://Text
1206 $r .= "\n<input name='itemNEWOption[{$post_id}][{$key}][{$optcode}]' type='text' id='itemNEWOption[{$post_id}][{$key}][{$optcode}]' class='iopt_text' onKeyDown=\"if (event.keyCode == 13) {return false;}\" value=\"\" />\n";
1207 break;
1208 case 3://Radio-button
1209 $selects = explode("\n", $opt['value']);
1210
1211 $i=0;
1212 foreach($selects as $v) {
1213 $r .= '<label for="itemNEWOption[' . $post_id . '][' . $key . '][' . $optcode . ']' . $i . '" class="iopt_radio_label"><input name="itemNEWOption[' . $post_id . '][' . $key . '][' . $optcode . ']" type="radio" id="itemNEWOption[' . $post_id . '][' . $key . '][' . $optcode . ']' . $i . '" class="iopt_radio" value="' . urlencode($v) . '">' . esc_html($v) . "</label>\n";
1214 $i++;
1215 }
1216 break;
1217 case 4://Check-box
1218 $selects = explode("\n", $opt['value']);
1219
1220 $i=0;
1221 foreach($selects as $v) {
1222 $r .= '<label for="itemNEWOption[' . $post_id . '][' . $key . '][' . $optcode . ']' . $i . '" class="iopt_checkbox_label"><input name="itemNEWOption[' . $post_id . '][' . $key . '][' . $optcode . ']" type="checkbox" id="itemNEWOption[' . $post_id . '][' . $key . '][' . $optcode . ']' . $i . '" class="iopt_checkbox" value="' . urlencode($v) . '">' . esc_html($v) . "</label>\n";
1223 $i++;
1224 }
1225 break;
1226 case 5://Text-area
1227 $r .= "\n<textarea name='itemNEWOption[{$post_id}][{$key}][{$optcode}]' id='itemNEWOption[{$post_id}][{$key}][{$optcode}]' class='iopt_textarea'></textarea>\n";
1228 break;
1229 }
1230 //20110715ysk end
1231 $r .= "<input name=\"optNEWCode[{$post_id}][{$key}][{$optcode}]\" type=\"hidden\" id=\"optNEWCode[{$post_id}][{$key}][{$optcode}]\" value=\"{$optcode}\" />\n";
1232 $r .= "<input name=\"optNEWEssential[{$post_id}][{$key}][{$optcode}]\" type=\"hidden\" id=\"optNEWEssential[{$post_id}][{$key}][{$optcode}]\" value=\"{$essential}\" />\n";
1233 $r .= "</div>\n";
1234 endforeach;
1235 $r .= "</td>\n";
1236 endif;
1237 $r .= "</tr>\n";
1238 //endfor;
1239 endforeach;
1240 $r .= "</tbody>\n";
1241 $r .= "</table>\n";
1242
1243
1244 $r .= "</div>\n";
1245
1246 return $r;
1247 }
1248
1249 function item_option_ajax()
1250 {
1251
1252 if( $_POST['action'] != 'item_option_ajax' ) die(0);
1253
1254 if(isset($_POST['update'])){
1255 $id = up_item_option_meta( $_POST['ID'] );
1256
1257 }else if(isset($_POST['delete'])){
1258 $id = del_item_option_meta( $_POST['ID'] );
1259
1260 }else if(isset($_POST['select'])){
1261 $res = select_common_option( $_POST['ID'] );
1262 die( $res );
1263
1264 }else if(isset($_POST['sort'])){
1265 $id = usces_sort_post_meta( $_POST['ID'], $_POST['meta'] );
1266 //die( $res );
1267
1268 }else{
1269 $id = add_item_option_meta( $_POST['ID'] );
1270
1271 }
1272
1273 $opts = usces_get_opts( $_POST['ID'] );
1274
1275 $r = '';
1276 foreach ( $opts as $opt )
1277 $r .= _list_item_option_meta_row( $opt );
1278
1279 $res = $r . '#usces#' . $id;
1280 //REGEX BUG: but it'll return info
1281 // Compose JavaScript for return
1282 die( $res );
1283 }
1284
1285 function item_sku_ajax(){
1286 global $usces;
1287
1288 $id = '';
1289 if( $_POST['action'] != 'item_sku_ajax' ) die(0);
1290
1291 if(isset($_POST['update'])){
1292 $id = up_item_sku_meta( $_POST['ID'] );
1293
1294 }else if(isset($_POST['delete'])){
1295 $id = del_item_sku_meta( $_POST['ID'] );
1296
1297 }else if(isset($_POST['select'])){
1298 $res = select_item_sku( $_POST['ID'] );
1299 die( $res );
1300
1301 }else if(isset($_POST['sort'])){
1302 $id = usces_sort_post_meta( $_POST['ID'], $_POST['meta'] );
1303 //die( $res );
1304
1305 }else{
1306 $id = add_item_sku_meta( $_POST['ID'] );
1307
1308 }
1309
1310 $skus = $usces->get_skus( $_POST['ID'] );
1311
1312 $r = '';
1313
1314 foreach ( (array)$skus as $sku )
1315 $r .= _list_item_sku_meta_row( $sku );
1316
1317 //$list = has_item_sku_list();
1318
1319 $res = $r . '#usces#' . $id;
1320
1321 die( $res );
1322 }
1323
1324 function item_save_metadata( $post_id, $post ) {
1325 global $usces, $wpdb;
1326
1327 $message = '';
1328
1329 // usces_log('item_save_metadata : '.print_r($post_id,true), 'acting_transaction.log');
1330 // usces_log('item_save_metadata : '.print_r($_POST['post_ID'],true), 'acting_transaction.log');
1331 // パーミッションチェック
1332 if ( isset($_POST['page']) && 'usces_itemedit' == $_POST['page']) {
1333 if ( !current_user_can( 'edit_post', $post_id ) ){
1334 $usces->set_action_status('error', 'ERROR : '.__('Sorry, you do not have the right to edit this post.'));
1335 return $post_id;
1336 }
1337 } else {
1338 return $post_id;
1339 }
1340
1341 if ( !wp_verify_nonce( $_POST['usces_nonce'], 'usc-e-shop' )) {
1342 return $post_id;
1343 }
1344
1345 // $post_id = $_POST['post_ID'];
1346 // if( $post_id < 0 ){
1347 // return $post_id;
1348 // }
1349
1350
1351
1352 // 自動保存ルーチンかどうかチェック。そうだった場合はフォームを送信しない(何もしない)
1353 if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
1354 return $post_id;
1355
1356 $usces->set_item_mime($post_id, 'item');
1357
1358 $itemCode = trim($_POST['itemCode' ]);
1359 if( preg_match('/[^0-9a-zA-Z\-_]/', $itemCode) ){
1360 // $itemCode = '';
1361 // $usces->action_message = '商品コードは半角英数(-_を含む)で�
1362 �力して下さい。' . "<br />";
1363 }
1364 if( empty($itemCode) ){
1365 $itemCode = '';
1366 $message .= __('Product code has not been entered.', 'usces') . "<br />";
1367 }elseif( $res = usces_is_same_itemcode($post->ID, $itemCode)) {
1368 $message .= 'post_ID ';
1369 foreach( $res as $postid )
1370 $message .= $postid . ', ';
1371 $message .= 'Same product code is registered here.' . "<br />";
1372 $usces->set_action_status('error', 'ERROR : '.$message);
1373 }
1374 update_post_meta($post_id, '_itemCode', $itemCode);
1375
1376
1377 if(isset($_POST['itemName'])){
1378 $itemName = trim($_POST['itemName']);
1379 update_post_meta($post_id, '_itemName', $itemName);
1380 }
1381 // if(isset($_POST['itemCode'])){
1382 // $itemCode = trim($_POST['itemCode']);
1383 // update_post_meta($post_id, '_itemCode', $itemCode);
1384 // }
1385 if(isset($_POST['itemRestriction'])){
1386 $itemRestriction = trim($_POST['itemRestriction']);
1387 update_post_meta($post_id, '_itemRestriction', $itemRestriction);
1388 }
1389 if(isset($_POST['itemPointrate'])){
1390 $itemPointrate = (int)$_POST['itemPointrate'];
1391 update_post_meta($post_id, '_itemPointrate', $itemPointrate);
1392 }
1393 if(isset($_POST['itemGpNum1'])){
1394 $itemGpNum1 = (int)$_POST['itemGpNum1'];
1395 update_post_meta($post_id, '_itemGpNum1', $itemGpNum1);
1396 }
1397 if(isset($_POST['itemGpNum2'])){
1398 $itemGpNum2 = (int)$_POST['itemGpNum2'];
1399 update_post_meta($post_id, '_itemGpNum2', $itemGpNum2);
1400 }
1401 if(isset($_POST['itemGpNum3'])){
1402 $itemGpNum3 = (int)$_POST['itemGpNum3'];
1403 update_post_meta($post_id, '_itemGpNum3', $itemGpNum3);
1404 }
1405 if(isset($_POST['itemGpDis1'])){
1406 $itemGpDis1 = (int)$_POST['itemGpDis1'];
1407 update_post_meta($post_id, '_itemGpDis1', $itemGpDis1);
1408 }
1409 if(isset($_POST['itemGpDis2'])){
1410 $itemGpDis2 = (int)$_POST['itemGpDis2'];
1411 update_post_meta($post_id, '_itemGpDis2', $itemGpDis2);
1412 }
1413 if(isset($_POST['itemGpDis3'])){
1414 $itemGpDis3 = (int)$_POST['itemGpDis3'];
1415 update_post_meta($post_id, '_itemGpDis3', $itemGpDis3);
1416 }
1417
1418 if(isset($_POST['itemShipping'])){
1419 $itemShipping = (int)$_POST['itemShipping'];
1420 update_post_meta($post_id, '_itemShipping', $itemShipping);
1421 }
1422 if(isset($_POST['itemDeliveryMethod'])){
1423 $itemDeliveryMethod = array();
1424 foreach( (array)$_POST["itemDeliveryMethod"] as $dmid){
1425 $itemDeliveryMethod[] = $dmid;
1426 }
1427 update_post_meta($post_id, '_itemDeliveryMethod', $itemDeliveryMethod);
1428 }
1429 if(isset($_POST['itemShippingCharge'])){
1430 $itemShippingCharge = (int)$_POST['itemShippingCharge'];
1431 update_post_meta($post_id, '_itemShippingCharge', $itemShippingCharge);
1432 }
1433 $itemIndividualSCharge = isset($_POST['itemIndividualSCharge']) ? 1 : 0;
1434 update_post_meta($post_id, '_itemIndividualSCharge', $itemIndividualSCharge);
1435
1436 if(isset($_POST['wcexp'])){
1437 $wcexp = serialize($_POST['wcexp']);
1438 update_post_meta($post_id, '_wcexp', $wcexp);
1439 }
1440
1441 //SKU
1442 if( isset($_POST['itemsku']) ){
1443 $meta_ids = array();
1444 $codes = array();
1445 $uniq_code = false;
1446 $irreg_code = false;
1447 $irreg_price = false;
1448
1449 foreach($_POST['itemsku'] as $mid => $temp){
1450 $meta_ids[] = $mid;
1451 }
1452 $meta_ids = array_unique($meta_ids);
1453 foreach( $meta_ids as $meta_id ){
1454
1455 $skucode = isset($_POST['itemsku'][$meta_id]['key']) ? trim( $_POST['itemsku'][$meta_id]['key'] ) : '';
1456 $skucprice = isset($_POST['itemsku'][$meta_id]['cprice']) ? trim( $_POST['itemsku'][$meta_id]['cprice'] ): 0;
1457 $skuprice = isset($_POST['itemsku'][$meta_id]['price']) ? trim( $_POST['itemsku'][$meta_id]['price'] ): 0;
1458 $skustocknum = isset($_POST['itemsku'][$meta_id]['zaikonum']) ? trim( $_POST['itemsku'][$meta_id]['zaikonum'] ): 0;
1459 $skustock = isset($_POST['itemsku'][$meta_id]['zaiko']) ? (int)$_POST['itemsku'][$meta_id]['zaiko'] : '';
1460 $skuname = isset($_POST['itemsku'][$meta_id]['skudisp']) ? trim( $_POST['itemsku'][$meta_id]['skudisp'] ): '';
1461 $skuunit = isset($_POST['itemsku'][$meta_id]['skuunit']) ? trim( $_POST['itemsku'][$meta_id]['skuunit'] ): '';
1462 $skugp = isset($_POST['itemsku'][$meta_id]['skugptekiyo']) ? (int)$_POST['itemsku'][$meta_id]['skugptekiyo'] : 0;
1463 $skusort = isset($_POST['itemsku'][$meta_id]['sort']) ? $_POST['itemsku'][$meta_id]['sort']: 0;
1464
1465 $skus['code'] = $skucode;
1466 $skus['name'] = $skuname;
1467 $skus['cprice'] = $skucprice;
1468 $skus['price'] = $skuprice;
1469 $skus['unit'] = $skuunit;
1470 $skus['stocknum'] = $skustocknum;
1471 $skus['stock'] = $skustock;
1472 $skus['gp'] = $skugp;
1473 $skus['sort'] = $skusort;
1474 $skus = $usces->stripslashes_deep_post($skus);
1475 $skus = apply_filters( 'usces_filter_item_save_sku_metadata', $skus, $meta_id );
1476
1477 $valueserialized = serialize($skus);
1478 $res = $wpdb->query( $wpdb->prepare("UPDATE $wpdb->postmeta SET meta_value = %s WHERE meta_id = %d", $valueserialized, $meta_id) );
1479
1480 if( in_array( $skucode, $codes ) )
1481 $uniq_code = true;
1482
1483 if( WCUtils::is_blank($skucode) )
1484 $irreg_code = true;
1485
1486 if( WCUtils::is_blank($skuprice) || preg_match('/[^0-9.]/', $skuprice) || 1 < substr_count($skuprice, '.' ) )
1487 $irreg_price = true;
1488
1489 $codes[] = $skucode;
1490 }
1491
1492 if( $uniq_code ){
1493 $message .= __('SKU code is duplicated.','usces') . "<br />";
1494 }
1495 if( $irreg_code ){
1496 $message .= __('SKU code is invalid.','usces') . "<br />";
1497 }
1498 if( $irreg_price ){
1499 $message .= __('SKU of invalid selling price exists.','usces') . "<br />";
1500 }
1501 }
1502 //OPT
1503 if( isset($_POST['itemopt']) ){
1504 $meta_ids = array();
1505 $names = array();
1506 $uniq_name = false;
1507 $irreg_name = false;
1508 $irreg_value = false;
1509
1510 foreach($_POST['itemopt'] as $mid => $temp){
1511 $meta_ids[] = $mid;
1512 }
1513 $meta_ids = array_unique($meta_ids);
1514 foreach( $meta_ids as $meta_id ){
1515
1516 $optname = isset($_POST['itemopt'][$meta_id]['name']) ? $_POST['itemopt'][$meta_id]['name'] : '';
1517 $optmeans = isset($_POST['itemopt'][$meta_id]['means']) ? (int)$_POST['itemopt'][$meta_id]['means']: 0;
1518 $optessential = isset($_POST['itemopt'][$meta_id]['essential']) ? $_POST['itemopt'][$meta_id]['essential']: 0;
1519 $optsort = isset($_POST['itemopt'][$meta_id]['sort']) ? $_POST['itemopt'][$meta_id]['sort']: 0;
1520 $optvalue = isset($_POST['itemopt'][$meta_id]['value']) ? trim($_POST['itemopt'][$meta_id]['value']) : '';
1521
1522 $opts['name'] = str_replace("\\",'',$optname);
1523 $opts['value'] = str_replace("\\",'',$optvalue);
1524 $opts['means'] = $optmeans;
1525 $opts['essential'] = $optessential;
1526 $opts['sort'] = $optsort;
1527 $opts = $usces->stripslashes_deep_post($opts);
1528
1529 $valueserialized = serialize($opts);
1530 $res = $wpdb->query( $wpdb->prepare("UPDATE $wpdb->postmeta SET meta_value = %s WHERE meta_id = %d", $valueserialized, $meta_id) );
1531
1532 if( in_array( $optname, $names ) )
1533 $uniq_name = true;
1534
1535 if( WCUtils::is_blank($optname) )
1536 $irreg_name = true;
1537
1538 if( WCUtils::is_blank($optvalue) && 1 >= $optmeans )
1539 $irreg_value = true;
1540
1541 $names[] = $optname;
1542 }
1543
1544
1545 if( $uniq_name ){
1546 $message .= __("Commodity option option name duplicates exist.", "usces") . "<br />";
1547 }
1548 if( $irreg_name ){
1549 $message .= __("Commodity option not entered there is the option name.", "usces") . "<br />";
1550 }
1551 if( $irreg_value ){
1552 $message .= __("If you select 'single select' and 'multi-select' the trade option, please enter the select value.", "usces") . "<br />";
1553 }
1554 }
1555
1556 do_action('usces_action_save_product', $post_id, $post);
1557 $message = apply_filters( 'usces_filter_save_product_message', $message, $post_id );
1558
1559 // $usces->action_status = 'none';
1560 // $usces->action_message = '';
1561 if( $message ){
1562 $usces->set_action_status('error', 'ERROR : '.$message);
1563 }else{
1564 $usces->set_action_status('success', __('Registration of the product is complete.','usces'));
1565 }
1566
1567 wp_cache_delete($post_id, 'post_meta');
1568 }
1569
1570 function usces_link_replace($para) {
1571 //$str = 'admin.php?page=' . USCES_PLUGIN_BASENAME . '&';
1572 $str = 'admin.php?page=usces_itemedit&';
1573 $url = preg_replace('|post\.php\?|i', $str, $para);
1574 return $url;
1575
1576 }
1577
1578 function usces_count_posts( $type = 'post', $perm = '' ) {
1579 global $wpdb;
1580
1581 $user = wp_get_current_user();
1582
1583 $cache_key = $type;
1584
1585 $query = "SELECT post_status, COUNT( * ) AS num_posts FROM {$wpdb->posts} WHERE post_type = %s AND post_mime_type = 'item'";
1586 //$query = "SELECT post_status, COUNT( * ) AS num_posts FROM {$wpdb->posts} WHERE post_type = %s";
1587 if ( 'readable' == $perm && is_user_logged_in() ) {
1588 if ( !current_user_can("read_private_{$type}s") ) {
1589 $cache_key .= '_' . $perm . '_' . $user->ID;
1590 $query .= " AND (post_status != 'private' OR ( post_author = '$user->ID' AND post_status = 'private' ))";
1591 }
1592 }
1593 $query .= ' GROUP BY post_status';
1594
1595 $count = wp_cache_get($cache_key, 'counts');
1596 if ( false !== $count )
1597 // return $count;
1598
1599 $count = $wpdb->get_results( $wpdb->prepare( $query, $type ), ARRAY_A );
1600
1601 $stats = array( );
1602 foreach( (array) $count as $row_num => $row ) {
1603 $stats[$row['post_status']] = $row['num_posts'];
1604 }
1605
1606 $stats = (object) $stats;
1607 wp_cache_set($cache_key, $stats, 'counts');
1608
1609 return $stats;
1610 }
1611
1612 //20100809ysk start
1613 /**
1614 * custom order meta row
1615 */
1616 function _list_custom_order_meta_row($key, $entry) {
1617 $r = '';
1618 $style = '';
1619 $key = esc_attr($key);
1620
1621 $name = esc_attr($entry['name']);
1622 $means = get_option('usces_custom_order_select');
1623 $meansoption = '';
1624 foreach($means as $meankey => $meanvalue) {
1625 if($meankey == $entry['means']) {
1626 $selected = ' selected="selected"';
1627 } else {
1628 $selected = '';
1629 }
1630 $meansoption .= '<option value="'.esc_attr($meankey).'"'.$selected.'>'.esc_html($meanvalue)."</option>\n";
1631 }
1632 $essential = $entry['essential'] == 1 ? " checked='checked'" : "";
1633 $value = '';
1634 if(is_array($entry['value'])) {
1635 foreach($entry['value'] as $k => $v) {
1636 $value .= $v."\n";
1637 }
1638 }
1639 $value = esc_attr(trim($value));
1640
1641 $r .= "\n\t<tr id='csod-{$key}' class='{$style}'>";
1642 $r .= "\n\t\t<td class='left'><div><input type='text' name='csod[{$key}][key]' id='csod[{$key}][key]' class='optname' size='20' value='{$key}' readonly /></div>";
1643 $r .= "\n\t\t<div><input type='text' name='csod[{$key}][name]' id='csod[{$key}][name]' class='optname' size='20' value='{$name}' /></div>";
1644 $r .= "\n\t\t<div class='optcheck'><select name='csod[{$key}][means]' id='csod[{$key}][means]'>".$meansoption."</select>\n";
1645 $r .= "<input type='checkbox' name='csod[{$key}][essential]' id='csod[{$key}][essential]' value='1'{$essential} /><label for='csod[{$key}][essential]'>".__('Required','usces')."</label></div>";
1646 //20100818ysk start
1647 //$r .= "\n\t\t<div class='submit'><input type='button' name='deletecsod[{$key}]' id='deletecsod[{$key}]' value='".esc_attr(__( 'Delete' ))."' onclick='customOrder.del(\"{$key}\");' />";
1648 //$r .= "\n\t\t<input type='button' name='updatecsod' id='updatecsod[{$key}]' value='".esc_attr(__( 'Update' ))."' onclick='customOrder.upd(\"{$key}\");' /></div>";
1649 $r .= "\n\t\t<div class='submit'><input type='button' name='del_csod[{$key}]' id='del_csod[{$key}]' value='".esc_attr(__( 'Delete' ))."' onclick='customField.delOrder(\"{$key}\");' />";
1650 $r .= "\n\t\t<input type='button' name='upd_csod[{$key}]' id='upd_csod[{$key}]' value='".esc_attr(__( 'Update' ))."' onclick='customField.updOrder(\"{$key}\");' /></div>";
1651 //20100818ysk end
1652 $r .= "\n\t\t<div id='csod_loading-{$key}' class='meta_submit_loading'></div>";
1653 $r .= "</td>";
1654 $r .= "\n\t\t<td class='item-opt-value'><textarea name='csod[{$key}][value]' id='csod[{$key}][value]' class='optvalue'>{$value}</textarea></td>\n\t</tr>";
1655 return $r;
1656 }
1657 //20100809ysk end
1658
1659 //20100818ysk start
1660 /**
1661 * has custom field meta
1662 */
1663 function usces_has_custom_field_meta($fieldname) {
1664 switch($fieldname) {
1665 case 'order':
1666 $field = 'usces_custom_order_field';
1667 break;
1668 case 'customer':
1669 $field = 'usces_custom_customer_field';
1670 break;
1671 case 'delivery':
1672 $field = 'usces_custom_delivery_field';
1673 break;
1674 case 'member':
1675 $field = 'usces_custom_member_field';
1676 break;
1677 default:
1678 return array();
1679 }
1680 $fields = get_option($field);
1681 if( empty($fields) ){
1682 $meta = array();
1683 }elseif( is_array($fields) ){
1684 $meta = $fields;
1685 }else{
1686 $meta = unserialize($fields);
1687 }
1688 return $meta;
1689 }
1690
1691 function usces_getinfo_ajax(){
1692 global $wp_version;
1693 $wcex_str = '';
1694 $res = '';
1695 $wcex = usces_get_wcex();
1696 foreach ( (array)$wcex as $key => $values ) {
1697 $wcex_str .= $key . "-" . $values['version'] . ",";
1698 }
1699 $wcex_str = rtrim($wcex_str, ',');
1700 if ( version_compare($wp_version, '3.4', '>=') ){
1701 $theme_ob = wp_get_theme();
1702 $themedata['Name'] = $theme_ob->get('Name');
1703 $themedata['Version'] = $theme_ob->get('Version');
1704 }else{
1705 $themedata = get_theme_data( get_stylesheet_directory().'/style.css' );
1706 }
1707
1708
1709 $v = urlencode(USCES_VERSION);
1710 $wcid = urlencode(get_option('usces_wcid'));
1711 $locale = urlencode(get_locale());
1712 $theme = urlencode($themedata['Name'] . '-' . $themedata['Version']);
1713 $wcex = urlencode($wcex_str);
1714 $interface_url = 'http://www.welcart.com/util/welcart_information2.php';
1715 $wcurl = urlencode(get_home_url());
1716 $interface = parse_url($interface_url);
1717
1718 $vars ="v=$v&wcid=$wcid&locale=$locale&theme=$theme&wcex=$wcex&wcurl=$wcurl";
1719 $header = "POST " . $interface_url . " HTTP/1.1\r\n";
1720 $header .= "Host: " . $_SERVER['HTTP_HOST'] . "\r\n";
1721 $header .= "User-Agent: " . $_SERVER['HTTP_USER_AGENT'] . "\r\n";
1722 $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
1723 $header .= "Content-Length: " . strlen($vars) . "\r\n";
1724 $header .= "Connection: close\r\n\r\n";
1725 $header .= $vars;
1726 $fp = fsockopen($interface['host'],80,$errno,$errstr,30);
1727 if( $fp ){
1728 fwrite($fp, $header);
1729 $i=0;
1730 while ( !feof($fp) ) {
1731 $scr = fgets($fp, 10240);
1732 preg_match("/<(title|data)>(.*)<(\/title|\/data)>$/", $scr, $match);
1733
1734 if(!empty($match[2])){
1735 switch( $match[1] ){
1736 case'title':
1737 $res .= '<div style="text-align: center;border-bottom: 1px dotted #CCCCCC;width: 80%;margin-bottom: 10px;padding-bottom: 3px; margin-right: auto; margin-left: auto;"><stlong>' . $match[2] . '</strong></div><ul>';
1738 break;
1739 case 'data':
1740 $res .= '<li>' . $match[2] . '</li>';
1741 break;
1742 }
1743 }
1744 $i++;
1745 if($i>50) {
1746 $res = 'ERROR';
1747 break;
1748 }
1749 }
1750
1751 $res .= '</ul>';
1752 fclose($fp);
1753
1754 }else{
1755 $res = 'ERROR';
1756 }
1757 die($res);
1758 }
1759
1760 /**
1761 * custom field ajax
1762 */
1763 function custom_field_ajax() {
1764 global $usces;
1765
1766 check_admin_referer( 'custom_field_ajax', 'wc_nonce' );
1767 $_POST = $usces->stripslashes_deep_post($_POST);
1768
1769 if($_POST['action'] != 'custom_field_ajax') die(0);
1770 switch($_POST['field']) {
1771 case 'order':
1772 $field = 'usces_custom_order_field';
1773 break;
1774 case 'customer':
1775 $field = 'usces_custom_customer_field';
1776 break;
1777 case 'delivery':
1778 $field = 'usces_custom_delivery_field';
1779 break;
1780 case 'member':
1781 $field = 'usces_custom_member_field';
1782 break;
1783 default:
1784 die(0);
1785 }
1786
1787 $meta = usces_has_custom_field_meta($_POST['field']);
1788 $dupkey = 0;
1789
1790 if(isset($_POST['add'])) {
1791 $newkey = isset($_POST['newkey']) ? trim($_POST['newkey']) : '';
1792 $newname = isset($_POST['newname']) ? trim($_POST['newname']) : '';
1793 $newmeans = isset($_POST['newmeans']) ? $_POST['newmeans'] : 0;
1794 $newessential = isset($_POST['newessential']) ? $_POST['newessential'] : 0;
1795 $newposition = isset($_POST['newposition']) ? trim($_POST['newposition']) : '';
1796
1797 if($newmeans == 2) {//Text
1798 $newvalue = '';
1799 $nv = $newvalue;
1800 $required_entry = ( !empty( $newkey ) && !empty( $newname ) ) ? true : false;
1801 } else {
1802 $newvalue = isset($_POST['newvalue']) ? explode('\n', trim($_POST['newvalue'])) : '';
1803 foreach((array)$newvalue as $v) {
1804 if( !WCUtils::is_blank($v) )
1805 $nv[] = trim($v);
1806 }
1807 $required_entry = ( ( !empty( $newvalue ) ) && !empty( $newkey ) && !empty( $newname ) ) ? true : false;
1808 }
1809
1810
1811 if(!array_key_exists($newkey, $meta)) {
1812 if( $required_entry ) {
1813 $meta[$newkey]['name'] = $newname;
1814 $meta[$newkey]['means'] = $newmeans;
1815 $meta[$newkey]['essential'] = $newessential;
1816 $meta[$newkey]['value'] = $nv;
1817 if( !WCUtils::is_blank($newposition) ) $meta[$newkey]['position'] = $newposition;
1818 update_option($field, $meta);
1819 }
1820 } else {
1821 $dupkey = 1;
1822 }
1823
1824 } elseif(isset($_POST['update'])) {
1825 $key = isset($_POST['key']) ? trim($_POST['key']) : '';
1826 $name = isset($_POST['name']) ? trim($_POST['name']) : '';
1827 $means = isset($_POST['means']) ? $_POST['means'] : 0;
1828 $essential = isset($_POST['essential']) ? $_POST['essential'] : 0;
1829 $position = isset($_POST['position']) ? trim($_POST['position']) : '';
1830
1831 if($means == 2) {//Text
1832 $value = '';
1833 $nv = $value;
1834 $required_entry = ( !empty( $key ) && !empty( $name ) ) ? true : false;
1835
1836 } else {
1837 $value = isset($_POST['value']) ? explode('\n', trim($_POST['value'])) : '';
1838 foreach((array)$value as $v) {
1839 if( !WCUtils::is_blank($v) )
1840 $nv[] = trim($v);
1841 }
1842 $required_entry = ( ( !empty( $value ) ) && !empty( $key ) && !empty( $name ) ) ? true : false;
1843 }
1844
1845 if( $required_entry ) {
1846 $meta[$key]['name'] = $name;
1847 $meta[$key]['means'] = $means;
1848 $meta[$key]['essential'] = $essential;
1849 $meta[$key]['value'] = $nv;
1850 if( !WCUtils::is_blank($position) ) $meta[$key]['position'] = $position;
1851 update_option($field, $meta);
1852 }
1853
1854 } elseif(isset($_POST['delete'])) {
1855 $key = isset($_POST['key']) ? trim($_POST['key']) : '';
1856 unset($meta[$key]);
1857 update_option($field, $meta);
1858 }
1859
1860 $r = '';
1861 switch($_POST['field']) {
1862 case 'order':
1863 foreach($meta as $key => $entry)
1864 $r .= _list_custom_order_meta_row($key, $entry);
1865 break;
1866 case 'customer':
1867 foreach($meta as $key => $entry)
1868 $r .= _list_custom_customer_meta_row($key, $entry);
1869 break;
1870 case 'delivery':
1871 foreach($meta as $key => $entry)
1872 $r .= _list_custom_delivery_meta_row($key, $entry);
1873 break;
1874 case 'member':
1875 foreach($meta as $key => $entry)
1876 $r .= _list_custom_member_meta_row($key, $entry);
1877 break;
1878 }
1879
1880 $res = $r . '#usces#' . $dupkey;
1881 //REGEX BUG: but it'll return info
1882 // Compose JavaScript for return
1883 die($res);
1884 }
1885
1886 /**
1887 * list custom customer meta row
1888 */
1889 function _list_custom_customer_meta_row($key, $entry) {
1890 $r = '';
1891 $style = '';
1892 $key = esc_attr($key);
1893
1894 $name = esc_attr($entry['name']);
1895 $means = get_option('usces_custom_customer_select');
1896 $meansoption = '';
1897 foreach($means as $meankey => $meanvalue) {
1898 $selected = ($meankey == $entry['means']) ? " selected='selected'" : "";
1899 $meansoption .= "<option value='".esc_attr($meankey)."'".$selected.">".esc_html($meanvalue)."</option>\n";
1900 }
1901 $essential = $entry['essential'] == 1 ? " checked='checked'" : "";
1902 $value = '';
1903 if(is_array($entry['value'])) {
1904 foreach($entry['value'] as $k => $v) {
1905 $value .= $v."\n";
1906 }
1907 }
1908 $value = esc_attr(trim($value));
1909 $positions = get_option('usces_custom_field_position_select');
1910 $positionsoption = '';
1911 foreach($positions as $poskey => $posvalue) {
1912 $selected = ($poskey == $entry['position']) ? " selected='selected'" : "";
1913 $positionsoption .= "<option value='".esc_attr($poskey)."'".$selected.">".esc_html($posvalue)."</option>\n";
1914 }
1915
1916 $r .= "\n\t<tr id='cscs-{$key}' class='{$style}'>";
1917 $r .= "\n\t\t<td class='left'><div><input type='text' name='cscs[{$key}][key]' id='cscs[{$key}][key]' class='optname' size='20' value='{$key}' readonly /></div>";
1918 $r .= "\n\t\t<div><input type='text' name='cscs[{$key}][name]' id='cscs[{$key}][name]' class='optname' size='20' value='{$name}' /></div>";
1919 $r .= "\n\t\t<div class='optcheck'><select name='cscs[{$key}][means]' id='cscs[{$key}][means]'>".$meansoption."</select>\n";
1920 $r .= "<input type='checkbox' name='cscs[{$key}][essential]' id='cscs[{$key}][essential]' value='1'{$essential} /><label for='cscs[{$key}][essential]'>".__('Required','usces')."</label>\n";
1921 $r .= "<select name='cscs[{$key}][position]' id='cscs[{$key}][position]'>".$positionsoption."</select></div>";
1922 $r .= "\n\t\t<div class='submit'><input type='button' name='del_cscs[{$key}]' id='del_cscs[{$key}]' value='".esc_attr(__( 'Delete' ))."' onclick='customField.delCustomer(\"{$key}\");' />";
1923 $r .= "\n\t\t<input type='button' name='upd_cscs[{$key}]' id='upd_cscs[{$key}]' value='".esc_attr(__( 'Update' ))."' onclick='customField.updCustomer(\"{$key}\");' /></div>";
1924 $r .= "\n\t\t<div id='cscs_loading-{$key}' class='meta_submit_loading'></div>";
1925 $r .= "</td>";
1926 $r .= "\n\t\t<td class='item-opt-value'><textarea name='cscs[{$key}][value]' id='cscs[{$key}][value]' class='optvalue'>{$value}</textarea></td>\n\t</tr>";
1927 return $r;
1928 }
1929
1930 /**
1931 * list custom delivery meta row
1932 */
1933 function _list_custom_delivery_meta_row($key, $entry) {
1934 $r = '';
1935 $style = '';
1936 $key = esc_attr($key);
1937
1938 $name = esc_attr($entry['name']);
1939 $means = get_option('usces_custom_delivery_select');
1940 $meansoption = '';
1941 foreach($means as $meankey => $meanvalue) {
1942 $selected = ($meankey == $entry['means']) ? " selected='selected'" : "";
1943 $meansoption .= "<option value='".esc_attr($meankey)."'".$selected.">".esc_html($meanvalue)."</option>\n";
1944 }
1945 $essential = $entry['essential'] == 1 ? " checked='checked'" : "";
1946 $value = '';
1947 if(is_array($entry['value'])) {
1948 foreach($entry['value'] as $k => $v) {
1949 $value .= $v."\n";
1950 }
1951 }
1952 $value = esc_attr(trim($value));
1953 $positions = get_option('usces_custom_field_position_select');
1954 $positionsoption = '';
1955 foreach($positions as $poskey => $posvalue) {
1956 $selected = ($poskey == $entry['position']) ? " selected='selected'" : "";
1957 $positionsoption .= "<option value='".esc_attr($poskey)."'".$selected.">".esc_html($posvalue)."</option>\n";
1958 }
1959
1960 $r .= "\n\t<tr id='csde-{$key}' class='{$style}'>";
1961 $r .= "\n\t\t<td class='left'><div><input type='text' name='csde[{$key}][key]' id='csde[{$key}][key]' class='optname' size='20' value='{$key}' readonly /></div>";
1962 $r .= "\n\t\t<div><input type='text' name='csde[{$key}][name]' id='csde[{$key}][name]' class='optname' size='20' value='{$name}' /></div>";
1963 $r .= "\n\t\t<div class='optcheck'><select name='csde[{$key}][means]' id='csde[{$key}][means]'>".$meansoption."</select>\n";
1964 $r .= "<input type='checkbox' name='csde[{$key}][essential]' id='csde[{$key}][essential]' value='1'{$essential} /><label for='csde[{$key}][essential]'>".__('Required','usces')."</label>\n";
1965 $r .= "<select name='csde[{$key}][position]' id='csde[{$key}][position]'>".$positionsoption."</select></div>";
1966 $r .= "\n\t\t<div class='submit'><input type='button' name='del_csde[{$key}]' id='del_csde[{$key}]' value='".esc_attr(__( 'Delete' ))."' onclick='customField.delDelivery(\"{$key}\");' />";
1967 $r .= "\n\t\t<input type='button' name='upd_csde[{$key}]' id='upd_csde[{$key}]' value='".esc_attr(__( 'Update' ))."' onclick='customField.updDelivery(\"{$key}\");' /></div>";
1968 $r .= "\n\t\t<div id='csde_loading-{$key}' class='meta_submit_loading'></div>";
1969 $r .= "</td>";
1970 $r .= "\n\t\t<td class='item-opt-value'><textarea name='csde[{$key}][value]' id='csde[{$key}][value]' class='optvalue'>{$value}</textarea></td>\n\t</tr>";
1971 return $r;
1972 }
1973
1974 /**
1975 * list custom member meta row
1976 */
1977 function _list_custom_member_meta_row($key, $entry) {
1978 $r = '';
1979 $style = '';
1980 $key = esc_attr($key);
1981
1982 $name = esc_attr($entry['name']);
1983 $means = get_option('usces_custom_member_select');
1984 $meansoption = '';
1985 foreach($means as $meankey => $meanvalue) {
1986 $selected = ($meankey == $entry['means']) ? " selected='selected'" : "";
1987 $meansoption .= "<option value='".esc_attr($meankey)."'".$selected.">".esc_html($meanvalue)."</option>\n";
1988 }
1989 $essential = $entry['essential'] == 1 ? " checked='checked'" : "";
1990 $value = '';
1991 if(is_array($entry['value'])) {
1992 foreach($entry['value'] as $k => $v) {
1993 $value .= $v."\n";
1994 }
1995 }
1996 $value = esc_attr(trim($value));
1997 $positions = get_option('usces_custom_field_position_select');
1998 $positionsoption = '';
1999 foreach($positions as $poskey => $posvalue) {
2000 $selected = ($poskey == $entry['position']) ? " selected='selected'" : "";
2001 $positionsoption .= "<option value='".esc_attr($poskey)."'".$selected.">".esc_attr($posvalue)."</option>\n";
2002 }
2003 $r .= "\n\t<tr id='csmb-{$key}' class='{$style}'>";
2004 $r .= "\n\t\t<td class='left'><div><input type='text' name='csmb[{$key}][key]' id='csmb[{$key}][key]' class='optname' size='20' value='{$key}' readonly /></div>";
2005 $r .= "\n\t\t<div><input type='text' name='csmb[{$key}][name]' id='csmb[{$key}][name]' class='optname' size='20' value='{$name}' /></div>";
2006 $r .= "\n\t\t<div class='optcheck'><select name='csmb[{$key}][means]' id='csmb[{$key}][means]'>".$meansoption."</select>\n";
2007 $r .= "<input type='checkbox' name='csmb[{$key}][essential]' id='csmb[{$key}][essential]' value='1'{$essential} /><label for='csmb[{$key}][essential]'>".__('Required','usces')."</label>\n";
2008 $r .= "<select name='csmb[{$key}][position]' id='csmb[{$key}][position]'>".$positionsoption."</select></div>";
2009 $r .= "\n\t\t<div class='submit'><input type='button' name='del_csmb[{$key}]' id='del_csmb[{$key}]' value='".esc_attr(__( 'Delete' ))."' onclick='customField.delMember(\"{$key}\");' />";
2010 $r .= "\n\t\t<input type='button' name='upd_csmb[{$key}]' id='upd_csmb[{$key}]' value='".esc_attr(__( 'Update' ))."' onclick='customField.updMember(\"{$key}\");' /></div>";
2011 $r .= "\n\t\t<div id='csmb_loading-{$key}' class='meta_submit_loading'></div>";
2012 $r .= "</td>";
2013 $r .= "\n\t\t<td class='item-opt-value'><textarea name='csmb[{$key}][value]' id='csmb[{$key}][value]' class='optvalue'>{$value}</textarea></td>\n\t</tr>";
2014 return $r;
2015 }
2016 //20100818ysk end
2017
2018 function change_states_ajax(){
2019 global $usces, $usces_states;
2020 $_POST = $usces->stripslashes_deep_post($_POST);
2021
2022 $c = $_POST['country'];
2023 $res = '';
2024 //20110331ysk start
2025 /* if( !isset($usces_states[$c]) || empty($usces_states[$c]) )
2026 die('error');
2027
2028 foreach( (array)$usces_states[$c] as $state ){
2029 $res .= '<option value="' . $state . '">' . $state . '</option>';
2030 }*/
2031 $prefs = get_usces_states($c);
2032 if(is_array($prefs) and 0 < count($prefs)) {
2033 foreach((array)$prefs as $state) {
2034 $res .= '<option value="' . $state . '">' . $state . '</option>';
2035 }
2036 } else {
2037 die('error');
2038 }
2039 //20110331ysk end
2040 die($res);
2041 }
2042
2043 //20110331ysk start
2044 function get_usces_states($country) {
2045 global $usces, $usces_states;
2046
2047 $states = array();
2048 $prefs = maybe_unserialize($usces->options['province']);
2049 if( !isset($prefs[$country]) || empty($prefs[$country]) ) {
2050 if($country == $usces->options['system']['base_country']) {
2051 foreach((array)$prefs as $state) {
2052 if(!is_array($state))
2053 array_push($states, $state);
2054 }
2055 if(count($states) == 0) {
2056 if( !empty($usces_states[$country]) ) {
2057 $prefs = $usces_states[$country];
2058 if(is_array($prefs)) {
2059 $states = $prefs;
2060 }
2061 }
2062 }
2063 } else {
2064 if( !empty($usces_states[$country]) ) {
2065 $prefs = $usces_states[$country];
2066 if(is_array($prefs)) {
2067 $states = $prefs;
2068 }
2069 }
2070 }
2071 } else {
2072 $states = $prefs[$country];
2073 }
2074 return $states;
2075 }
2076
2077 function target_market_ajax() {
2078 global $usces;
2079
2080 $_POST = $usces->stripslashes_deep_post($_POST);
2081 $res = "";
2082 $target = explode(",", $_POST['target']);
2083 foreach((array)$target as $country) {
2084 $prefs = get_usces_states($country);
2085 if(is_array($prefs) and 0 < count($prefs)) {
2086 $pos = strpos($prefs[0], '--');
2087 if($pos !== false) array_shift($prefs);
2088 $res .= $country.",";
2089 foreach((array)$prefs as $state) {
2090 $res .= $state."\n";
2091 }
2092 $res = rtrim($res, "\n")."#usces#";
2093 //20110430ysk start
2094 } else {
2095 $res .= $country.",#usces#";
2096 //20110430ysk end
2097 }
2098 }
2099 $res = rtrim($res, "#usces#");
2100 die($res);
2101 }
2102 //20110331ysk end
2103 //20120309ysk start 0000430
2104 function usces_admin_ajax() {
2105 switch($_POST['mode']) {
2106 case 'options_backup':
2107 check_admin_referer( 'options_backup', 'wc_nonce' );
2108 $options = get_option('usces');
2109 $res = true;
2110 if( is_array($options) ) {
2111 $usces_backup_date = current_time('mysql');
2112 update_option('usces_backup', $options);
2113 update_option('usces_backup_date', $usces_backup_date);
2114 $res = $usces_backup_date;
2115 } else {
2116 $res = false;
2117 }
2118 die($res);
2119 break;
2120 case 'options_restore':
2121 check_admin_referer( 'options_restore', 'wc_nonce' );
2122 $options = get_option('usces_backup');
2123 $res = true;
2124 if( is_array($options) ) {
2125 update_option('usces', $options);
2126 } else {
2127 $res = false;
2128 }
2129 die($res);
2130 break;
2131 }
2132 do_action('usces_action_admin_ajax');
2133 }
2134 //20120309ysk end
2135 function usces_order_recalculation( $order_id, $mem_id, $post_ids, $skus, $prices, $quants, $use_point, $shipping_charge, $cod_fee ) {
2136 global $usces;
2137
2138 $res = 'ok';
2139 if( !empty($order_id) ) {
2140 $data = $usces->get_order_data( $order_id, 'direct' );
2141 $condition = unserialize( $data['order_condition'] );
2142 } else {
2143 $condition = $usces->get_condition();
2144 }
2145 //usces_log('condition : '.print_r($condition,true), 'acting_transaction.log');
2146
2147 $post_id = explode("#usces#", $post_ids);
2148 //$sku = explode("#usces#", $skus);
2149 $price = explode("#usces#", $prices);
2150 $quant = explode("#usces#", $quants);
2151 $cart = array();
2152 for( $i = 0; $i < count($post_id); $i++ ) {
2153 if( $post_id[$i] )
2154 //$cart[] = array( "post_id"=>$post_id[$i], "sku"=>$sku[$i], "price"=>$price[$i], "quantity"=>$quant[$i] );
2155 $cart[] = array( "post_id"=>$post_id[$i], "price"=>$price[$i], "quantity"=>$quant[$i] );
2156 }
2157
2158 $total_items_price = 0;
2159 foreach( $cart as $cart_row ) {
2160 $total_items_price += $cart_row['price'] * $cart_row['quantity'];
2161 }
2162 $meminfo = $usces->get_member_info( $mem_id );
2163
2164 $discount = 0;
2165 if( $condition['display_mode'] == 'Promotionsale' ) {
2166 if( $condition['campaign_privilege'] == 'discount' ) {
2167 if ( 0 === (int)$condition['campaign_category'] ) {
2168 $discount = $total_items_price * $condition['privilege_discount'] / 100;
2169 } else {
2170 foreach( $cart as $cart_row ) {
2171 if( in_category( (int)$condition['campaign_category'], $cart_row['post_id']) ) {
2172 $discount += $cart_row['price'] * $cart_row['quantity'] * $condition['privilege_discount'] / 100;
2173 }
2174 }
2175 }
2176 }
2177 }
2178 if( 0 < $discount ) $discount = ceil($discount * -1);
2179
2180 $point = 0;
2181 if( 'activate' == $usces->options['membersystem_state'] && 'activate' == $usces->options['membersystem_point'] && !empty($meminfo['ID']) ) {
2182 if( $condition['display_mode'] == 'Promotionsale' ) {
2183 if( $condition['campaign_privilege'] == 'discount' ) {
2184 foreach( $cart as $cart_row ) {
2185 $cats = $usces->get_post_term_ids( $cart_row['post_id'], 'category' );
2186 if( !in_array( $condition['campaign_category'], $cats ) ) {
2187 $rate = get_post_meta( $cart_row['post_id'], '_itemPointrate', true );
2188 $price = $cart_row['price'] * $cart_row['quantity'];
2189 $point += $price * $rate / 100;
2190 }
2191 }
2192 } elseif( $condition['campaign_privilege'] == 'point' ) {
2193 foreach( $cart as $cart_row ) {
2194 $rate = get_post_meta( $cart_row['post_id'], '_itemPointrate', true );
2195 $price = $cart_row['price'] * $cart_row['quantity'];
2196 $cats = $usces->get_post_term_ids( $cart_row['post_id'], 'category' );
2197 if( in_array( $condition['campaign_category'], $cats ) ) {
2198 $point += $price * $rate / 100 * $condition['privilege_point'];
2199 } else {
2200 $point += $price * $rate / 100;
2201 }
2202 }
2203 }
2204 } else {
2205 foreach( $cart as $cart_row ) {
2206 $rate = get_post_meta( $cart_row['post_id'], '_itemPointrate', true );
2207 $price = $cart_row['price'] * $cart_row['quantity'];
2208 $point += $price * $rate / 100;
2209 }
2210 }
2211 }
2212
2213 if( 0 < $point ) $point = ceil($point);
2214 //20130425ysk start 0000699
2215 if( 0 < $use_point ) {
2216 $point = ceil( $point - ( $point * $use_point / $total_items_price ) );
2217 if( 0 > $point )
2218 $point = 0;
2219 }
2220 //20130425ysk end
2221 $discount = apply_filters('usces_filter_order_discount_recalculation', $discount, $cart);
2222 $point = apply_filters( 'usces_filter_set_point_recalculation', $point, $condition, $cart, $meminfo, $use_point );
2223 $total_price = $total_items_price - $use_point + $discount + $shipping_charge + $cod_fee;
2224 $total_price = apply_filters('usces_filter_set_cart_fees_total_price', $total_price, $total_items_price, $use_point, $discount, $shipping_charge, $cod_fee);
2225 $materials = compact( 'total_items_price', 'shipping_charge', 'discount', 'cod_fee', 'use_point', 'discount' );
2226 $tax = $usces->getTax( $total_price, $materials );
2227 $total_full_price = $total_price + $tax;
2228 $total_full_price = apply_filters('usces_filter_set_cart_fees_total_full_price', $total_full_price, $total_items_price, $use_point, $discount, $shipping_charge, $cod_fee);
2229
2230 return $res."#usces#".$discount."#usces#".usces_crform( $tax, false, false, 'return', false )."#usces#".$point."#usces#".usces_crform( $total_full_price, false, false, 'return', false );
2231 }
2232 ?>
2233