PluginProbe
Welcart e-Commerce / 1.3.8
Welcart e-Commerce v1.3.8
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.3.8, at functions/item_post.php

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