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

2,057 lines 72.7 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 $res = order_item2cart();
827
828 //if( $res === false ) die(0);//20120613ysk 0000500
829
830 //REGEX BUG: but it'll return info
831 // Compose JavaScript for return
832 die( $res );
833 }
834
835 function order_item_ajax(){
836 global $usces;
837
838 if( $_POST['action'] != 'order_item_ajax' ) die(0);
839
840 $res = false;
841 $_POST = $usces->stripslashes_deep_post($_POST);
842
843 switch ( $_POST['mode'] ) {
844 case 'completionMail':
845 case 'orderConfirmMail':
846 case 'changeConfirmMail':
847 case 'receiptConfirmMail':
848 case 'mitumoriConfirmMail':
849 case 'cancelConfirmMail':
850 case 'otherConfirmMail':
851 $res = usces_order_confirm_message( $_POST['order_id'] );
852 break;
853 case 'sendmail':
854 $res = usces_ajax_send_mail();
855 break;
856 case 'get_order_item':
857 $res = get_order_item( $_POST['itemcode'] );
858 break;
859 case 'ordercheckpost':
860 $res = usces_update_ordercheck();
861 break;
862 case 'getmember':
863 $res = usces_get_member_neworder();
864 break;
865 case 'recalculation':
866 $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'] );
867 break;
868 }
869
870 $res = apply_filters( 'usces_filter_order_item_ajax', $res );
871
872 if( $res === false ) die(0);
873
874 //REGEX BUG: but it'll return info
875 // Compose JavaScript for return
876 die( $res );
877 }
878
879 /**
880 * order Item html
881 */
882 function usces_get_member_neworder() {
883 global $wpdb;
884 $wpdb->show_errors();
885 $res = '';
886 $member_table = $wpdb->prefix . "usces_member";
887 $query = $wpdb->prepare("SELECT * FROM $member_table WHERE mem_email = %s", trim($_POST['email']));
888 $value = $wpdb->get_row( $query, ARRAY_A );
889 if( !$value ){
890 die( 'none#usces#1' );
891 }else{
892 $res .= 'ok#usces#member_id=' . $value['ID'];
893 $res .= '#usces#customer[name1]=' . $value['mem_name1'];
894 $res .= '#usces#customer[name2]=' . $value['mem_name2'];
895 $res .= '#usces#customer[name3]=' . $value['mem_name3'];
896 $res .= '#usces#customer[name4]=' . $value['mem_name4'];
897 $res .= '#usces#customer[zipcode]=' . $value['mem_zip'];
898 $res .= '#usces#customer[pref]=' . $value['mem_pref'];
899 $res .= '#usces#customer[address1]=' . $value['mem_address1'];
900 $res .= '#usces#customer[address2]=' . $value['mem_address2'];
901 $res .= '#usces#customer[address3]=' . $value['mem_address3'];
902 $res .= '#usces#customer[tel]=' . $value['mem_tel'];
903 $res .= '#usces#customer[fax]=' . $value['mem_fax'];
904 $res .= '#usces#delivery[name1]=' . $value['mem_name1'];
905 $res .= '#usces#delivery[name2]=' . $value['mem_name2'];
906 $res .= '#usces#delivery[name3]=' . $value['mem_name3'];
907 $res .= '#usces#delivery[name4]=' . $value['mem_name4'];
908 $res .= '#usces#delivery[zipcode]=' . $value['mem_zip'];
909 $res .= '#usces#delivery[pref]=' . $value['mem_pref'];
910 $res .= '#usces#delivery[address1]=' . $value['mem_address1'];
911 $res .= '#usces#delivery[address2]=' . $value['mem_address2'];
912 $res .= '#usces#delivery[address3]=' . $value['mem_address3'];
913 $res .= '#usces#delivery[tel]=' . $value['mem_tel'];
914 $res .= '#usces#delivery[fax]=' . $value['mem_fax'];
915
916 $member_metetable = $wpdb->prefix . "usces_member_meta";
917 $query = $wpdb->prepare("SELECT * FROM $member_metetable WHERE meta_key LIKE %s AND member_id = %d", 'csmb_%', $value['ID']);
918 $customs = $wpdb->get_results( $query, ARRAY_A );
919 if( !empty($customs) ){
920 foreach( $customs as $cusv ){
921 $res .= '#usces#custom_customer[' . substr($cusv['meta_key'], 5) . ']=' . $cusv['meta_value'];
922 $res .= '#usces#custom_delivery[' . substr($cusv['meta_key'], 5) . ']=' . $cusv['meta_value'];
923 }
924 }
925 //die( urlencode($res) );
926 }
927
928 die( $res );
929 }
930
931 function order_item2cart() {
932 global $usces;
933
934 if( $_POST['action'] != 'order_item2cart_ajax' ) die(0);
935
936 $res = usces_update_ordercart();
937
938 //20120613ysk start 0000500
939 //if( $res === false ) die(0);
940 //if( $res === 0 ) die('nodata');
941
942 //die( $res );
943 return $res;
944 //20120613ysk end
945 }
946
947 function get_order_item( $item_code ) {
948 global $usces, $post;
949
950 $post_id = $usces->get_postIDbyCode( $item_code );
951 if( $post_id == NULL ) return false;
952 $post = get_post($post_id);
953
954 $pict_id = $usces->get_mainpictid( $item_code );
955 $pict_link = wp_get_attachment_image($pict_id, array(150, 150), true);
956 preg_match("/^\<a .+\>(\<img .+\/\>)\<\/a\>$/", $pict_link, $match);
957 $pict = isset($match[1]) ? $match[1] : '';
958 $skus = $usces->get_skus( $post_id );
959 $optkeys = $usces->get_itemOptionKey( $post_id );
960 $itemName = esc_html($usces->getItemName($post_id));
961
962 $r = '';
963 $r .= $pict_link . "\n";
964 $r .= "<h3>" . $itemName . "</h3>\n";
965 $r .= "<div class='skuform'>\n";
966
967 $r .= "<table class='skumulti'>\n";
968 $r .= "<thead>\n";
969 $r .= "<tr>\n";
970 $r .= "<th>" . __('SKU code','usces') . "</th>\n";
971 $r .= "<th>" . __('SKU display name ','usces') . "</th>\n";
972 $usces_listprice = __('List price', 'usces') . usces_guid_tax('return');
973 $r .= "<th>" . apply_filters('usces_filter_listprice_label', $usces_listprice, __('List price', 'usces'), usces_guid_tax('return')) . "</th>\n";
974 $usces_sellingprice = __('Sale price','usces') . usces_guid_tax('return');
975 $r .= "<th>" . apply_filters('usces_filter_sellingprice_label', $usces_sellingprice, __('Sale price', 'usces'), usces_guid_tax('return')) . "</th>\n";
976 $r .= "<th>" . __('stock','usces') . "</th>\n";
977 $r .= "<th>" . __('stock','usces') . "</th>\n";
978 $r .= "<th>" . __('unit','usces') . "</th>\n";
979 $r .= "<th>&nbsp;</th>\n";
980 $r .= "</tr>\n";
981 $r .= "</thead>\n";
982 $r .= "<tbody>\n";
983 //for ($i=0; $i<count($skus['code']); $i++) :
984 // $sku = esc_attr($skus['code'][$i]);
985 // $cprice = esc_attr($skus['cprice'][$i]);
986 // $price = esc_attr($skus['price'][$i]);
987 // $zaiko = esc_attr($usces->zaiko_status[$skus['stock'][$i]]);
988 // $zaikonum = esc_attr($skus['stocknum'][$i]);
989 // $disp = esc_attr($skus['name'][$i]);
990 // $unit = esc_attr($skus['unit'][$i]);
991 // $gptekiyo = $skus['gp'][$i];
992 foreach($skus as $sku) :
993 $key = esc_attr($sku['code']);
994 $cprice = esc_attr($sku['cprice']);
995 $price = esc_attr($sku['price']);
996 $zaiko = esc_attr($usces->zaiko_status[$sku['stock']]);
997 $zaikonum = esc_attr($sku['stocknum']);
998 $disp = esc_attr($sku['name']);
999 $unit = esc_attr($sku['unit']);
1000 $gptekiyo = $sku['gp'];
1001 $sort = (int)$sku['sort'];
1002 $r .= "<tr>\n";
1003 $r .= "<td rowspan='2'>" . $key . "</td>\n";
1004 $r .= "<td>" . $disp . "</td>\n";
1005 $r .= "<td><span class='cprice'>" . ( ( !empty($cprice) ) ? usces_crform( $cprice, true, false, 'return' ) : '' ) . "</span></td>\n";
1006 $r .= "<td><span class='price'>" . usces_crform( $price, true, false, 'return' ) . "</span></td>\n";
1007 $r .= "<td>" . $zaiko . "</td>\n";
1008 $r .= "<td>" . $zaikonum . "</td>\n";
1009 // $r .= "<td>" . usces_the_itemQuant() . "</td>\n";
1010 $r .= "<td>" . $unit . "</td>\n";
1011 $r .= "<td>\n";
1012 $r .= "<input name=\"itemNEWName[{$post_id}][{$key}]\" type=\"hidden\" id=\"itemNEWName[{$post_id}][{$key}]\" value=\"{$itemName}\" />\n";
1013 $r .= "<input name=\"itemNEWCode[{$post_id}][{$key}]\" type=\"hidden\" id=\"itemNEWCode[{$post_id}][{$key}]\" value=\"{$item_code}\" />\n";
1014 $r .= "<input name=\"skuNEWName[{$post_id}][{$key}]\" type=\"hidden\" id=\"skuNEWName[{$post_id}][{$key}]\" value=\"{$key}\" />\n";
1015 $r .= "<input name=\"skuNEWCprice[{$post_id}][{$key}]\" type=\"hidden\" id=\"skuNEWCprice[{$post_id}][{$key}]\" value=\"{$cprice}\" />\n";
1016 $r .= "<input name=\"skuNEWDisp[{$post_id}][{$key}]\" type=\"hidden\" id=\"skuNEWDisp[{$post_id}][{$key}]\" value=\"{$disp}\" />\n";
1017 $r .= "<input name=\"zaikoNEWnum[{$post_id}][{$key}]\" type=\"hidden\" id=\"zaikoNEWnum[{$post_id}][{$key}]\" value=\"{$zaikonum}\" />\n";
1018 $r .= "<input name=\"zaiNEWko[{$post_id}][{$key}]\" type=\"hidden\" id=\"zaiNEWko[{$post_id}][{$key}]\" value=\"{$zaiko}\" />\n";
1019 $r .= "<input name=\"uniNEWt[{$post_id}][{$key}]\" type=\"hidden\" id=\"uniNEWt[{$post_id}][{$key}]\" value=\"{$unit}\" />\n";
1020 $r .= "<input name=\"gpNEWtekiyo[{$post_id}][{$key}]\" type=\"hidden\" id=\"gpNEWtekiyo[{$post_id}][{$key}]\" value=\"{$gptekiyo}\" />\n";
1021 $r .= "<input name=\"skuNEWPrice[{$post_id}][{$key}]\" type=\"hidden\" id=\"skuNEWPrice[{$post_id}][{$key}]\" value=\"{$price}\" />\n";
1022 $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}');\" />";
1023 $r .= "</td>\n";
1024 $r .= "</tr>\n";
1025 $r .= "<tr>\n";
1026 if($optkeys) :
1027 $r .= "<td colspan='7'>\n";
1028 foreach($optkeys as $optkey => $optvalue) :
1029 $r .= "<div>\n";
1030 $name = esc_attr($optvalue);
1031 $optcode = esc_attr(urlencode($name));
1032 $opts = usces_get_opts($post_id, 'name');
1033 $opt = $opts[$optvalue];
1034 //20110715ysk start 0000202
1035 $means = (int)$opt['means'];
1036 $essential = (int)$opt['essential'];
1037 $r .= "\n<label for='itemNEWOption[{$post_id}][{$key}][{$optcode}]' class='iopt_label'>{$name}</label>\n";
1038 switch($means) {
1039 case 0://Single-select
1040 case 1://Multi-select
1041 $selects = explode("\n", $opt['value']);
1042 $multiple = ($means === 0) ? '' : ' multiple';
1043 $multiple_array = ($means === 0) ? '' : '_multiple';
1044
1045 $r .= "\n<select name='itemNEWOption[{$post_id}][{$key}][{$optcode}]' id='itemNEWOption[{$post_id}][{$key}][{$optcode}]' class='iopt_select{$multiple_array}'{$multiple}>\n";
1046 if($essential == 1)
1047 $r .= "\t<option value='#NONE#' selected='selected'>" . __('Choose','usces') . "</option>\n";
1048 $s=0;
1049 foreach($selects as $v) {
1050 if($s == 0 && $essential == 0)
1051 $selected = ' selected="selected"';
1052 else
1053 $selected = '';
1054 $r .= "\t<option value='{$v}'{$selected}>{$v}</option>\n";
1055 $s++;
1056 }
1057 $r .= "</select>\n";
1058 break;
1059 case 2://Text
1060 $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";
1061 break;
1062 case 5://Text-area
1063 $r .= "\n<textarea name='itemNEWOption[{$post_id}][{$key}][{$optcode}]' id='itemNEWOption[{$post_id}][{$key}][{$optcode}]' class='iopt_textarea'></textarea>\n";
1064 break;
1065 }
1066 //20110715ysk end
1067 $r .= "<input name=\"optNEWCode[{$post_id}][{$key}][{$optcode}]\" type=\"hidden\" id=\"optNEWCode[{$post_id}][{$key}][{$optcode}]\" value=\"{$optcode}\" />\n";
1068 $r .= "<input name=\"optNEWEssential[{$post_id}][{$key}][{$optcode}]\" type=\"hidden\" id=\"optNEWEssential[{$post_id}][{$key}][{$optcode}]\" value=\"{$essential}\" />\n";
1069 $r .= "</div>\n";
1070 endforeach;
1071 $r .= "</td>\n";
1072 endif;
1073 $r .= "</tr>\n";
1074 //endfor;
1075 endforeach;
1076 $r .= "</tbody>\n";
1077 $r .= "</table>\n";
1078
1079
1080 $r .= "</div>\n";
1081
1082 return $r;
1083 }
1084
1085 function item_option_ajax()
1086 {
1087
1088 if( $_POST['action'] != 'item_option_ajax' ) die(0);
1089
1090 if(isset($_POST['update'])){
1091 $id = up_item_option_meta( $_POST['ID'] );
1092
1093 }else if(isset($_POST['delete'])){
1094 $id = del_item_option_meta( $_POST['ID'] );
1095
1096 }else if(isset($_POST['select'])){
1097 $res = select_common_option( $_POST['ID'] );
1098 die( $res );
1099
1100 }else if(isset($_POST['sort'])){
1101 $id = usces_sort_post_meta( $_POST['ID'], $_POST['meta'] );
1102 //die( $res );
1103
1104 }else{
1105 $id = add_item_option_meta( $_POST['ID'] );
1106
1107 }
1108
1109 $opts = usces_get_opts( $_POST['ID'] );
1110
1111 $r = '';
1112 foreach ( $opts as $opt )
1113 $r .= _list_item_option_meta_row( $opt );
1114
1115 $res = $r . '#usces#' . $id;
1116 //REGEX BUG: but it'll return info
1117 // Compose JavaScript for return
1118 die( $res );
1119 }
1120
1121 function item_sku_ajax(){
1122 global $usces;
1123
1124 $id = '';
1125 if( $_POST['action'] != 'item_sku_ajax' ) die(0);
1126
1127 if(isset($_POST['update'])){
1128 $id = up_item_sku_meta( $_POST['ID'] );
1129
1130 }else if(isset($_POST['delete'])){
1131 $id = del_item_sku_meta( $_POST['ID'] );
1132
1133 }else if(isset($_POST['select'])){
1134 $res = select_item_sku( $_POST['ID'] );
1135 die( $res );
1136
1137 }else if(isset($_POST['sort'])){
1138 $id = usces_sort_post_meta( $_POST['ID'], $_POST['meta'] );
1139 //die( $res );
1140
1141 }else{
1142 $id = add_item_sku_meta( $_POST['ID'] );
1143
1144 }
1145
1146 $skus = $usces->get_skus( $_POST['ID'] );
1147
1148 $r = '';
1149
1150 foreach ( (array)$skus as $sku )
1151 $r .= _list_item_sku_meta_row( $sku );
1152
1153 //$list = has_item_sku_list();
1154
1155 $res = $r . '#usces#' . $id;
1156
1157 die( $res );
1158 }
1159
1160 function item_save_metadata( $post_id, $post ) {
1161 global $usces, $wpdb;
1162
1163 $message = '';
1164
1165 // usces_log('item_save_metadata : '.print_r($post_id,true), 'acting_transaction.log');
1166 // usces_log('item_save_metadata : '.print_r($_POST['post_ID'],true), 'acting_transaction.log');
1167 // パーミッションチェック
1168 if ( isset($_POST['page']) && 'usces_itemedit' == $_POST['page']) {
1169 if ( !current_user_can( 'edit_post', $post_id ) ){
1170 $usces->set_action_status('error', 'ERROR : '.__('Sorry, you do not have the right to edit this post.'));
1171 return $post_id;
1172 }
1173 } else {
1174 return $post_id;
1175 }
1176
1177 if ( !wp_verify_nonce( $_POST['usces_nonce'], 'usc-e-shop' )) {
1178 return $post_id;
1179 }
1180
1181 // $post_id = $_POST['post_ID'];
1182 // if( $post_id < 0 ){
1183 // return $post_id;
1184 // }
1185
1186
1187
1188 // 自動保存ルーチンかどうかチェック。そうだった場合はフォームを送信しない(何もしない)
1189 if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
1190 return $post_id;
1191
1192 $usces->set_item_mime($post_id, 'item');
1193
1194 $itemCode = trim($_POST['itemCode' ]);
1195 if( preg_match('/[^0-9a-zA-Z\-_]/', $itemCode) ){
1196 // $itemCode = '';
1197 // $usces->action_message = '商品コードは半角英数(-_を含む)で�
1198 �力して下さい。' . "<br />";
1199 }
1200 if( empty($itemCode) ){
1201 $itemCode = '';
1202 $message .= __('Product code has not been entered.', 'usces') . "<br />";
1203 }elseif( $res = usces_is_same_itemcode($post->ID, $itemCode)) {
1204 $message .= 'post_ID ';
1205 foreach( $res as $postid )
1206 $message .= $postid . ', ';
1207 $message .= 'Same product code is registered here.' . "<br />";
1208 $usces->set_action_status('error', 'ERROR : '.$message);
1209 }
1210 update_post_meta($post_id, '_itemCode', $itemCode);
1211
1212
1213 if(isset($_POST['itemName'])){
1214 $itemName = trim($_POST['itemName']);
1215 update_post_meta($post_id, '_itemName', $itemName);
1216 }
1217 // if(isset($_POST['itemCode'])){
1218 // $itemCode = trim($_POST['itemCode']);
1219 // update_post_meta($post_id, '_itemCode', $itemCode);
1220 // }
1221 if(isset($_POST['itemRestriction'])){
1222 $itemRestriction = trim($_POST['itemRestriction']);
1223 update_post_meta($post_id, '_itemRestriction', $itemRestriction);
1224 }
1225 if(isset($_POST['itemPointrate'])){
1226 $itemPointrate = (int)$_POST['itemPointrate'];
1227 update_post_meta($post_id, '_itemPointrate', $itemPointrate);
1228 }
1229 if(isset($_POST['itemGpNum1'])){
1230 $itemGpNum1 = (int)$_POST['itemGpNum1'];
1231 update_post_meta($post_id, '_itemGpNum1', $itemGpNum1);
1232 }
1233 if(isset($_POST['itemGpNum2'])){
1234 $itemGpNum2 = (int)$_POST['itemGpNum2'];
1235 update_post_meta($post_id, '_itemGpNum2', $itemGpNum2);
1236 }
1237 if(isset($_POST['itemGpNum3'])){
1238 $itemGpNum3 = (int)$_POST['itemGpNum3'];
1239 update_post_meta($post_id, '_itemGpNum3', $itemGpNum3);
1240 }
1241 if(isset($_POST['itemGpDis1'])){
1242 $itemGpDis1 = (int)$_POST['itemGpDis1'];
1243 update_post_meta($post_id, '_itemGpDis1', $itemGpDis1);
1244 }
1245 if(isset($_POST['itemGpDis2'])){
1246 $itemGpDis2 = (int)$_POST['itemGpDis2'];
1247 update_post_meta($post_id, '_itemGpDis2', $itemGpDis2);
1248 }
1249 if(isset($_POST['itemGpDis3'])){
1250 $itemGpDis3 = (int)$_POST['itemGpDis3'];
1251 update_post_meta($post_id, '_itemGpDis3', $itemGpDis3);
1252 }
1253
1254 if(isset($_POST['itemShipping'])){
1255 $itemShipping = (int)$_POST['itemShipping'];
1256 update_post_meta($post_id, '_itemShipping', $itemShipping);
1257 }
1258 if(isset($_POST['itemDeliveryMethod'])){
1259 $itemDeliveryMethod = array();
1260 foreach( (array)$_POST["itemDeliveryMethod"] as $dmid){
1261 $itemDeliveryMethod[] = $dmid;
1262 }
1263 update_post_meta($post_id, '_itemDeliveryMethod', $itemDeliveryMethod);
1264 }
1265 if(isset($_POST['itemShippingCharge'])){
1266 $itemShippingCharge = (int)$_POST['itemShippingCharge'];
1267 update_post_meta($post_id, '_itemShippingCharge', $itemShippingCharge);
1268 }
1269 $itemIndividualSCharge = isset($_POST['itemIndividualSCharge']) ? 1 : 0;
1270 update_post_meta($post_id, '_itemIndividualSCharge', $itemIndividualSCharge);
1271
1272 if(isset($_POST['wcexp'])){
1273 $wcexp = serialize($_POST['wcexp']);
1274 update_post_meta($post_id, '_wcexp', $wcexp);
1275 }
1276
1277 //SKU
1278 if( isset($_POST['itemsku']) ){
1279 $meta_ids = array();
1280 $codes = array();
1281 $uniq_code = false;
1282 $irreg_code = false;
1283 $irreg_price = false;
1284
1285 foreach($_POST['itemsku'] as $mid => $temp){
1286 $meta_ids[] = $mid;
1287 }
1288 $meta_ids = array_unique($meta_ids);
1289 foreach( $meta_ids as $meta_id ){
1290
1291 $skucode = isset($_POST['itemsku'][$meta_id]['key']) ? trim( $_POST['itemsku'][$meta_id]['key'] ) : '';
1292 $skucprice = isset($_POST['itemsku'][$meta_id]['cprice']) ? trim( $_POST['itemsku'][$meta_id]['cprice'] ): 0;
1293 $skuprice = isset($_POST['itemsku'][$meta_id]['price']) ? trim( $_POST['itemsku'][$meta_id]['price'] ): 0;
1294 $skustocknum = isset($_POST['itemsku'][$meta_id]['zaikonum']) ? trim( $_POST['itemsku'][$meta_id]['zaikonum'] ): 0;
1295 $skustock = isset($_POST['itemsku'][$meta_id]['zaiko']) ? (int)$_POST['itemsku'][$meta_id]['zaiko'] : '';
1296 $skuname = isset($_POST['itemsku'][$meta_id]['skudisp']) ? trim( $_POST['itemsku'][$meta_id]['skudisp'] ): '';
1297 $skuunit = isset($_POST['itemsku'][$meta_id]['skuunit']) ? trim( $_POST['itemsku'][$meta_id]['skuunit'] ): '';
1298 $skugp = isset($_POST['itemsku'][$meta_id]['skugptekiyo']) ? (int)$_POST['itemsku'][$meta_id]['skugptekiyo'] : 0;
1299 $skusort = isset($_POST['itemsku'][$meta_id]['sort']) ? $_POST['itemsku'][$meta_id]['sort']: 0;
1300
1301 $skus['code'] = $skucode;
1302 $skus['name'] = $skuname;
1303 $skus['cprice'] = $skucprice;
1304 $skus['price'] = $skuprice;
1305 $skus['unit'] = $skuunit;
1306 $skus['stocknum'] = $skustocknum;
1307 $skus['stock'] = $skustock;
1308 $skus['gp'] = $skugp;
1309 $skus['sort'] = $skusort;
1310 $skus = $usces->stripslashes_deep_post($skus);
1311 $skus = apply_filters( 'usces_filter_item_save_sku_metadata', $skus, $meta_id );
1312
1313 $valueserialized = serialize($skus);
1314 $res = $wpdb->query( $wpdb->prepare("UPDATE $wpdb->postmeta SET meta_value = %s WHERE meta_id = %d", $valueserialized, $meta_id) );
1315
1316 if( in_array( $skucode, $codes ) )
1317 $uniq_code = true;
1318
1319 if( WCUtils::is_blank($skucode) )
1320 $irreg_code = true;
1321
1322 if( WCUtils::is_blank($skuprice) || preg_match('/[^0-9.]/', $skuprice) || 1 < substr_count($skuprice, '.' ) )
1323 $irreg_price = true;
1324
1325 $codes[] = $skucode;
1326 }
1327
1328 if( $uniq_code ){
1329 $message .= __('SKU code is duplicated.','usces') . "<br />";
1330 }
1331 if( $irreg_code ){
1332 $message .= __('SKU code is invalid.','usces') . "<br />";
1333 }
1334 if( $irreg_price ){
1335 $message .= __('SKU of invalid selling price exists.','usces') . "<br />";
1336 }
1337 }
1338 //OPT
1339 if( isset($_POST['itemopt']) ){
1340 $meta_ids = array();
1341 $names = array();
1342 $uniq_name = false;
1343 $irreg_name = false;
1344 $irreg_value = false;
1345
1346 foreach($_POST['itemopt'] as $mid => $temp){
1347 $meta_ids[] = $mid;
1348 }
1349 $meta_ids = array_unique($meta_ids);
1350 foreach( $meta_ids as $meta_id ){
1351
1352 $optname = isset($_POST['itemopt'][$meta_id]['name']) ? $_POST['itemopt'][$meta_id]['name'] : '';
1353 $optmeans = isset($_POST['itemopt'][$meta_id]['means']) ? (int)$_POST['itemopt'][$meta_id]['means']: 0;
1354 $optessential = isset($_POST['itemopt'][$meta_id]['essential']) ? $_POST['itemopt'][$meta_id]['essential']: 0;
1355 $optsort = isset($_POST['itemopt'][$meta_id]['sort']) ? $_POST['itemopt'][$meta_id]['sort']: 0;
1356 $optvalue = isset($_POST['itemopt'][$meta_id]['value']) ? trim($_POST['itemopt'][$meta_id]['value']) : '';
1357
1358 $opts['name'] = str_replace("\\",'',$optname);
1359 $opts['value'] = str_replace("\\",'',$optvalue);
1360 $opts['means'] = $optmeans;
1361 $opts['essential'] = $optessential;
1362 $opts['sort'] = $optsort;
1363 $opts = $usces->stripslashes_deep_post($opts);
1364
1365 $valueserialized = serialize($opts);
1366 $res = $wpdb->query( $wpdb->prepare("UPDATE $wpdb->postmeta SET meta_value = %s WHERE meta_id = %d", $valueserialized, $meta_id) );
1367
1368 if( in_array( $optname, $names ) )
1369 $uniq_name = true;
1370
1371 if( WCUtils::is_blank($optname) )
1372 $irreg_name = true;
1373
1374 if( WCUtils::is_blank($optvalue) && 1 >= $optmeans )
1375 $irreg_value = true;
1376
1377 $names[] = $optname;
1378 }
1379
1380
1381 if( $uniq_name ){
1382 $message .= __("Commodity option option name duplicates exist.", "usces") . "<br />";
1383 }
1384 if( $irreg_name ){
1385 $message .= __("Commodity option not entered there is the option name.", "usces") . "<br />";
1386 }
1387 if( $irreg_value ){
1388 $message .= __("If you select 'single select' and 'multi-select' the trade option, please enter the select value.", "usces") . "<br />";
1389 }
1390 }
1391
1392 do_action('usces_action_save_product', $post_id, $post);
1393 $message = apply_filters( 'usces_filter_save_product_message', $message, $post_id );
1394
1395 // $usces->action_status = 'none';
1396 // $usces->action_message = '';
1397 if( $message ){
1398 $usces->set_action_status('error', 'ERROR : '.$message);
1399 }else{
1400 $usces->set_action_status('success', __('Registration of the product is complete.','usces'));
1401 }
1402
1403 wp_cache_delete($post_id, 'post_meta');
1404 }
1405
1406 function usces_link_replace($para) {
1407 //$str = 'admin.php?page=' . USCES_PLUGIN_BASENAME . '&';
1408 $str = 'admin.php?page=usces_itemedit&';
1409 $url = preg_replace('|post\.php\?|i', $str, $para);
1410 return $url;
1411
1412 }
1413
1414 function usces_count_posts( $type = 'post', $perm = '' ) {
1415 global $wpdb;
1416
1417 $user = wp_get_current_user();
1418
1419 $cache_key = $type;
1420
1421 $query = "SELECT post_status, COUNT( * ) AS num_posts FROM {$wpdb->posts} WHERE post_type = %s AND post_mime_type = 'item'";
1422 //$query = "SELECT post_status, COUNT( * ) AS num_posts FROM {$wpdb->posts} WHERE post_type = %s";
1423 if ( 'readable' == $perm && is_user_logged_in() ) {
1424 if ( !current_user_can("read_private_{$type}s") ) {
1425 $cache_key .= '_' . $perm . '_' . $user->ID;
1426 $query .= " AND (post_status != 'private' OR ( post_author = '$user->ID' AND post_status = 'private' ))";
1427 }
1428 }
1429 $query .= ' GROUP BY post_status';
1430
1431 $count = wp_cache_get($cache_key, 'counts');
1432 if ( false !== $count )
1433 // return $count;
1434
1435 $count = $wpdb->get_results( $wpdb->prepare( $query, $type ), ARRAY_A );
1436
1437 $stats = array( );
1438 foreach( (array) $count as $row_num => $row ) {
1439 $stats[$row['post_status']] = $row['num_posts'];
1440 }
1441
1442 $stats = (object) $stats;
1443 wp_cache_set($cache_key, $stats, 'counts');
1444
1445 return $stats;
1446 }
1447
1448 //20100809ysk start
1449 /**
1450 * custom order meta row
1451 */
1452 function _list_custom_order_meta_row($key, $entry) {
1453 $r = '';
1454 $style = '';
1455 $key = esc_attr($key);
1456
1457 $name = esc_attr($entry['name']);
1458 $means = get_option('usces_custom_order_select');
1459 $meansoption = '';
1460 foreach($means as $meankey => $meanvalue) {
1461 if($meankey == $entry['means']) {
1462 $selected = ' selected="selected"';
1463 } else {
1464 $selected = '';
1465 }
1466 $meansoption .= '<option value="'.esc_attr($meankey).'"'.$selected.'>'.esc_html($meanvalue)."</option>\n";
1467 }
1468 $essential = $entry['essential'] == 1 ? " checked='checked'" : "";
1469 $value = '';
1470 if(is_array($entry['value'])) {
1471 foreach($entry['value'] as $k => $v) {
1472 $value .= $v."\n";
1473 }
1474 }
1475 $value = esc_attr(trim($value));
1476
1477 $r .= "\n\t<tr id='csod-{$key}' class='{$style}'>";
1478 $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>";
1479 $r .= "\n\t\t<div><input type='text' name='csod[{$key}][name]' id='csod[{$key}][name]' class='optname' size='20' value='{$name}' /></div>";
1480 $r .= "\n\t\t<div class='optcheck'><select name='csod[{$key}][means]' id='csod[{$key}][means]'>".$meansoption."</select>\n";
1481 $r .= "<input type='checkbox' name='csod[{$key}][essential]' id='csod[{$key}][essential]' value='1'{$essential} /><label for='csod[{$key}][essential]'>".__('Required','usces')."</label></div>";
1482 //20100818ysk start
1483 //$r .= "\n\t\t<div class='submit'><input type='button' name='deletecsod[{$key}]' id='deletecsod[{$key}]' value='".esc_attr(__( 'Delete' ))."' onclick='customOrder.del(\"{$key}\");' />";
1484 //$r .= "\n\t\t<input type='button' name='updatecsod' id='updatecsod[{$key}]' value='".esc_attr(__( 'Update' ))."' onclick='customOrder.upd(\"{$key}\");' /></div>";
1485 $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}\");' />";
1486 $r .= "\n\t\t<input type='button' name='upd_csod[{$key}]' id='upd_csod[{$key}]' value='".esc_attr(__( 'Update' ))."' onclick='customField.updOrder(\"{$key}\");' /></div>";
1487 //20100818ysk end
1488 $r .= "\n\t\t<div id='csod_loading-{$key}' class='meta_submit_loading'></div>";
1489 $r .= "</td>";
1490 $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>";
1491 return $r;
1492 }
1493 //20100809ysk end
1494
1495 //20100818ysk start
1496 /**
1497 * has custom field meta
1498 */
1499 function usces_has_custom_field_meta($fieldname) {
1500 switch($fieldname) {
1501 case 'order':
1502 $field = 'usces_custom_order_field';
1503 break;
1504 case 'customer':
1505 $field = 'usces_custom_customer_field';
1506 break;
1507 case 'delivery':
1508 $field = 'usces_custom_delivery_field';
1509 break;
1510 case 'member':
1511 $field = 'usces_custom_member_field';
1512 break;
1513 default:
1514 return array();
1515 }
1516 $fields = get_option($field);
1517 if( empty($fields) ){
1518 $meta = array();
1519 }elseif( is_array($fields) ){
1520 $meta = $fields;
1521 }else{
1522 $meta = unserialize($fields);
1523 }
1524 return $meta;
1525 }
1526
1527 function usces_getinfo_ajax(){
1528 global $wp_version;
1529 $wcex_str = '';
1530 $res = '';
1531 $wcex = usces_get_wcex();
1532 foreach ( (array)$wcex as $key => $values ) {
1533 $wcex_str .= $key . "-" . $values['version'] . ",";
1534 }
1535 $wcex_str = rtrim($wcex_str, ',');
1536 if ( version_compare($wp_version, '3.4', '>=') ){
1537 $theme_ob = wp_get_theme();
1538 $themedata['Name'] = $theme_ob->get('Name');
1539 $themedata['Version'] = $theme_ob->get('Version');
1540 }else{
1541 $themedata = get_theme_data( get_stylesheet_directory().'/style.css' );
1542 }
1543
1544
1545 $v = urlencode(USCES_VERSION);
1546 $wcid = urlencode(get_option('usces_wcid'));
1547 $locale = urlencode(get_locale());
1548 $theme = urlencode($themedata['Name'] . '-' . $themedata['Version']);
1549 $wcex = urlencode($wcex_str);
1550 $interface_url = 'http://www.welcart.com/util/welcart_information2.php';
1551 $wcurl = urlencode(get_home_url());
1552 $interface = parse_url($interface_url);
1553
1554 $vars ="v=$v&wcid=$wcid&locale=$locale&theme=$theme&wcex=$wcex&wcurl=$wcurl";
1555 $header = "POST " . $interface_url . " HTTP/1.1\r\n";
1556 $header .= "Host: " . $_SERVER['HTTP_HOST'] . "\r\n";
1557 $header .= "User-Agent: " . $_SERVER['HTTP_USER_AGENT'] . "\r\n";
1558 $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
1559 $header .= "Content-Length: " . strlen($vars) . "\r\n";
1560 $header .= "Connection: close\r\n\r\n";
1561 $header .= $vars;
1562 $fp = fsockopen($interface['host'],80,$errno,$errstr,30);
1563 if( $fp ){
1564 fwrite($fp, $header);
1565 $i=0;
1566 while ( !feof($fp) ) {
1567 $scr = fgets($fp, 10240);
1568 preg_match("/<(title|data)>(.*)<(\/title|\/data)>$/", $scr, $match);
1569
1570 if(!empty($match[2])){
1571 switch( $match[1] ){
1572 case'title':
1573 $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>';
1574 break;
1575 case 'data':
1576 $res .= '<li>' . $match[2] . '</li>';
1577 break;
1578 }
1579 }
1580 $i++;
1581 if($i>50) {
1582 $res = 'ERROR';
1583 break;
1584 }
1585 }
1586
1587 $res .= '</ul>';
1588 fclose($fp);
1589
1590 }else{
1591 $res = 'ERROR';
1592 }
1593 die($res);
1594 }
1595
1596 /**
1597 * custom field ajax
1598 */
1599 function custom_field_ajax() {
1600 global $usces;
1601 $_POST = $usces->stripslashes_deep_post($_POST);
1602
1603 if($_POST['action'] != 'custom_field_ajax') die(0);
1604 switch($_POST['field']) {
1605 case 'order':
1606 $field = 'usces_custom_order_field';
1607 break;
1608 case 'customer':
1609 $field = 'usces_custom_customer_field';
1610 break;
1611 case 'delivery':
1612 $field = 'usces_custom_delivery_field';
1613 break;
1614 case 'member':
1615 $field = 'usces_custom_member_field';
1616 break;
1617 default:
1618 die(0);
1619 }
1620
1621 $meta = usces_has_custom_field_meta($_POST['field']);
1622 $dupkey = 0;
1623
1624 if(isset($_POST['add'])) {
1625 $newkey = isset($_POST['newkey']) ? trim($_POST['newkey']) : '';
1626 $newname = isset($_POST['newname']) ? trim($_POST['newname']) : '';
1627 $newmeans = isset($_POST['newmeans']) ? $_POST['newmeans'] : 0;
1628 $newessential = isset($_POST['newessential']) ? $_POST['newessential'] : 0;
1629 $newposition = isset($_POST['newposition']) ? trim($_POST['newposition']) : '';
1630
1631 if($newmeans == 2) {//Text
1632 $newvalue = isset($_POST['newvalue']) ? trim($_POST['newvalue']) : '';
1633 $nv = $newvalue;
1634
1635 } else {
1636 $newvalue = isset($_POST['newvalue']) ? explode('\n', trim($_POST['newvalue'])) : '';
1637 foreach((array)$newvalue as $v) {
1638 if( !WCUtils::is_blank($v) )
1639 $nv[] = trim($v);
1640 }
1641 }
1642
1643 if(!array_key_exists($newkey, $meta)) {
1644 if(($newmeans >= 2 || WCUtils::is_zero($newvalue) || !empty($newvalue)) && !empty($newkey) && !empty($newname)) {
1645 $meta[$newkey]['name'] = $newname;
1646 $meta[$newkey]['means'] = $newmeans;
1647 $meta[$newkey]['essential'] = $newessential;
1648 $meta[$newkey]['value'] = $nv;
1649 if( !WCUtils::is_blank($newposition) ) $meta[$newkey]['position'] = $newposition;
1650 update_option($field, $meta);
1651 }
1652 } else {
1653 $dupkey = 1;
1654 }
1655
1656 } elseif(isset($_POST['update'])) {
1657 $key = isset($_POST['key']) ? trim($_POST['key']) : '';
1658 $name = isset($_POST['name']) ? trim($_POST['name']) : '';
1659 $means = isset($_POST['means']) ? $_POST['means'] : 0;
1660 $essential = isset($_POST['essential']) ? $_POST['essential'] : 0;
1661 $position = isset($_POST['position']) ? trim($_POST['position']) : '';
1662
1663 if($means == 2) {//Text
1664 $value = isset($_POST['value']) ? trim($_POST['value']) : '';
1665 $nv = $value;
1666
1667 } else {
1668 $value = isset($_POST['value']) ? explode('\n', trim($_POST['value'])) : '';
1669 foreach((array)$value as $v) {
1670 if( !WCUtils::is_blank($v) )
1671 $nv[] = trim($v);
1672 }
1673 }
1674
1675 if($means >= 2 || WCUtils::is_zero($value) || !empty($value)) {
1676 $meta[$key]['name'] = $name;
1677 $meta[$key]['means'] = $means;
1678 $meta[$key]['essential'] = $essential;
1679 $meta[$key]['value'] = $nv;
1680 if( !WCUtils::is_blank($position) ) $meta[$key]['position'] = $position;
1681 update_option($field, $meta);
1682 }
1683
1684 } elseif(isset($_POST['delete'])) {
1685 $key = isset($_POST['key']) ? trim($_POST['key']) : '';
1686 unset($meta[$key]);
1687 update_option($field, $meta);
1688 }
1689
1690 $r = '';
1691 switch($_POST['field']) {
1692 case 'order':
1693 foreach($meta as $key => $entry)
1694 $r .= _list_custom_order_meta_row($key, $entry);
1695 break;
1696 case 'customer':
1697 foreach($meta as $key => $entry)
1698 $r .= _list_custom_customer_meta_row($key, $entry);
1699 break;
1700 case 'delivery':
1701 foreach($meta as $key => $entry)
1702 $r .= _list_custom_delivery_meta_row($key, $entry);
1703 break;
1704 case 'member':
1705 foreach($meta as $key => $entry)
1706 $r .= _list_custom_member_meta_row($key, $entry);
1707 break;
1708 }
1709
1710 $res = $r . '#usces#' . $dupkey;
1711 //REGEX BUG: but it'll return info
1712 // Compose JavaScript for return
1713 die($res);
1714 }
1715
1716 /**
1717 * list custom customer meta row
1718 */
1719 function _list_custom_customer_meta_row($key, $entry) {
1720 $r = '';
1721 $style = '';
1722 $key = esc_attr($key);
1723
1724 $name = esc_attr($entry['name']);
1725 $means = get_option('usces_custom_customer_select');
1726 $meansoption = '';
1727 foreach($means as $meankey => $meanvalue) {
1728 $selected = ($meankey == $entry['means']) ? " selected='selected'" : "";
1729 $meansoption .= "<option value='".esc_attr($meankey)."'".$selected.">".esc_html($meanvalue)."</option>\n";
1730 }
1731 $essential = $entry['essential'] == 1 ? " checked='checked'" : "";
1732 $value = '';
1733 if(is_array($entry['value'])) {
1734 foreach($entry['value'] as $k => $v) {
1735 $value .= $v."\n";
1736 }
1737 }
1738 $value = esc_attr(trim($value));
1739 $positions = get_option('usces_custom_field_position_select');
1740 $positionsoption = '';
1741 foreach($positions as $poskey => $posvalue) {
1742 $selected = ($poskey == $entry['position']) ? " selected='selected'" : "";
1743 $positionsoption .= "<option value='".esc_attr($poskey)."'".$selected.">".esc_html($posvalue)."</option>\n";
1744 }
1745
1746 $r .= "\n\t<tr id='cscs-{$key}' class='{$style}'>";
1747 $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>";
1748 $r .= "\n\t\t<div><input type='text' name='cscs[{$key}][name]' id='cscs[{$key}][name]' class='optname' size='20' value='{$name}' /></div>";
1749 $r .= "\n\t\t<div class='optcheck'><select name='cscs[{$key}][means]' id='cscs[{$key}][means]'>".$meansoption."</select>\n";
1750 $r .= "<input type='checkbox' name='cscs[{$key}][essential]' id='cscs[{$key}][essential]' value='1'{$essential} /><label for='cscs[{$key}][essential]'>".__('Required','usces')."</label>\n";
1751 $r .= "<select name='cscs[{$key}][position]' id='cscs[{$key}][position]'>".$positionsoption."</select></div>";
1752 $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}\");' />";
1753 $r .= "\n\t\t<input type='button' name='upd_cscs[{$key}]' id='upd_cscs[{$key}]' value='".esc_attr(__( 'Update' ))."' onclick='customField.updCustomer(\"{$key}\");' /></div>";
1754 $r .= "\n\t\t<div id='cscs_loading-{$key}' class='meta_submit_loading'></div>";
1755 $r .= "</td>";
1756 $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>";
1757 return $r;
1758 }
1759
1760 /**
1761 * list custom delivery meta row
1762 */
1763 function _list_custom_delivery_meta_row($key, $entry) {
1764 $r = '';
1765 $style = '';
1766 $key = esc_attr($key);
1767
1768 $name = esc_attr($entry['name']);
1769 $means = get_option('usces_custom_delivery_select');
1770 $meansoption = '';
1771 foreach($means as $meankey => $meanvalue) {
1772 $selected = ($meankey == $entry['means']) ? " selected='selected'" : "";
1773 $meansoption .= "<option value='".esc_attr($meankey)."'".$selected.">".esc_html($meanvalue)."</option>\n";
1774 }
1775 $essential = $entry['essential'] == 1 ? " checked='checked'" : "";
1776 $value = '';
1777 if(is_array($entry['value'])) {
1778 foreach($entry['value'] as $k => $v) {
1779 $value .= $v."\n";
1780 }
1781 }
1782 $value = esc_attr(trim($value));
1783 $positions = get_option('usces_custom_field_position_select');
1784 $positionsoption = '';
1785 foreach($positions as $poskey => $posvalue) {
1786 $selected = ($poskey == $entry['position']) ? " selected='selected'" : "";
1787 $positionsoption .= "<option value='".esc_attr($poskey)."'".$selected.">".esc_html($posvalue)."</option>\n";
1788 }
1789
1790 $r .= "\n\t<tr id='csde-{$key}' class='{$style}'>";
1791 $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>";
1792 $r .= "\n\t\t<div><input type='text' name='csde[{$key}][name]' id='csde[{$key}][name]' class='optname' size='20' value='{$name}' /></div>";
1793 $r .= "\n\t\t<div class='optcheck'><select name='csde[{$key}][means]' id='csde[{$key}][means]'>".$meansoption."</select>\n";
1794 $r .= "<input type='checkbox' name='csde[{$key}][essential]' id='csde[{$key}][essential]' value='1'{$essential} /><label for='csde[{$key}][essential]'>".__('Required','usces')."</label>\n";
1795 $r .= "<select name='csde[{$key}][position]' id='csde[{$key}][position]'>".$positionsoption."</select></div>";
1796 $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}\");' />";
1797 $r .= "\n\t\t<input type='button' name='upd_csde[{$key}]' id='upd_csde[{$key}]' value='".esc_attr(__( 'Update' ))."' onclick='customField.updDelivery(\"{$key}\");' /></div>";
1798 $r .= "\n\t\t<div id='csde_loading-{$key}' class='meta_submit_loading'></div>";
1799 $r .= "</td>";
1800 $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>";
1801 return $r;
1802 }
1803
1804 /**
1805 * list custom member meta row
1806 */
1807 function _list_custom_member_meta_row($key, $entry) {
1808 $r = '';
1809 $style = '';
1810 $key = esc_attr($key);
1811
1812 $name = esc_attr($entry['name']);
1813 $means = get_option('usces_custom_member_select');
1814 $meansoption = '';
1815 foreach($means as $meankey => $meanvalue) {
1816 $selected = ($meankey == $entry['means']) ? " selected='selected'" : "";
1817 $meansoption .= "<option value='".esc_attr($meankey)."'".$selected.">".esc_html($meanvalue)."</option>\n";
1818 }
1819 $essential = $entry['essential'] == 1 ? " checked='checked'" : "";
1820 $value = '';
1821 if(is_array($entry['value'])) {
1822 foreach($entry['value'] as $k => $v) {
1823 $value .= $v."\n";
1824 }
1825 }
1826 $value = esc_attr(trim($value));
1827 $positions = get_option('usces_custom_field_position_select');
1828 $positionsoption = '';
1829 foreach($positions as $poskey => $posvalue) {
1830 $selected = ($poskey == $entry['position']) ? " selected='selected'" : "";
1831 $positionsoption .= "<option value='".esc_attr($poskey)."'".$selected.">".esc_attr($posvalue)."</option>\n";
1832 }
1833 $r .= "\n\t<tr id='csmb-{$key}' class='{$style}'>";
1834 $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>";
1835 $r .= "\n\t\t<div><input type='text' name='csmb[{$key}][name]' id='csmb[{$key}][name]' class='optname' size='20' value='{$name}' /></div>";
1836 $r .= "\n\t\t<div class='optcheck'><select name='csmb[{$key}][means]' id='csmb[{$key}][means]'>".$meansoption."</select>\n";
1837 $r .= "<input type='checkbox' name='csmb[{$key}][essential]' id='csmb[{$key}][essential]' value='1'{$essential} /><label for='csmb[{$key}][essential]'>".__('Required','usces')."</label>\n";
1838 $r .= "<select name='csmb[{$key}][position]' id='csmb[{$key}][position]'>".$positionsoption."</select></div>";
1839 $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}\");' />";
1840 $r .= "\n\t\t<input type='button' name='upd_csmb[{$key}]' id='upd_csmb[{$key}]' value='".esc_attr(__( 'Update' ))."' onclick='customField.updMember(\"{$key}\");' /></div>";
1841 $r .= "\n\t\t<div id='csmb_loading-{$key}' class='meta_submit_loading'></div>";
1842 $r .= "</td>";
1843 $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>";
1844 return $r;
1845 }
1846 //20100818ysk end
1847
1848 function change_states_ajax(){
1849 global $usces, $usces_states;
1850 $_POST = $usces->stripslashes_deep_post($_POST);
1851
1852 $c = $_POST['country'];
1853 $res = '';
1854 //20110331ysk start
1855 /* if( !isset($usces_states[$c]) || empty($usces_states[$c]) )
1856 die('error');
1857
1858 foreach( (array)$usces_states[$c] as $state ){
1859 $res .= '<option value="' . $state . '">' . $state . '</option>';
1860 }*/
1861 $prefs = get_usces_states($c);
1862 if(is_array($prefs) and 0 < count($prefs)) {
1863 foreach((array)$prefs as $state) {
1864 $res .= '<option value="' . $state . '">' . $state . '</option>';
1865 }
1866 } else {
1867 die('error');
1868 }
1869 //20110331ysk end
1870 die($res);
1871 }
1872
1873 //20110331ysk start
1874 function get_usces_states($country) {
1875 global $usces, $usces_states;
1876
1877 $states = array();
1878 $prefs = maybe_unserialize($usces->options['province']);
1879 if( !isset($prefs[$country]) || empty($prefs[$country]) ) {
1880 if($country == $usces->options['system']['base_country']) {
1881 foreach((array)$prefs as $state) {
1882 if(!is_array($state))
1883 array_push($states, $state);
1884 }
1885 if(count($states) == 0) {
1886 if( !empty($usces_states[$country]) ) {
1887 $prefs = $usces_states[$country];
1888 if(is_array($prefs)) {
1889 $states = $prefs;
1890 }
1891 }
1892 }
1893 } else {
1894 if( !empty($usces_states[$country]) ) {
1895 $prefs = $usces_states[$country];
1896 if(is_array($prefs)) {
1897 $states = $prefs;
1898 }
1899 }
1900 }
1901 } else {
1902 $states = $prefs[$country];
1903 }
1904 return $states;
1905 }
1906
1907 function target_market_ajax() {
1908 global $usces;
1909 $_POST = $usces->stripslashes_deep_post($_POST);
1910 $res = "";
1911 $target = explode(",", $_POST['target']);
1912 foreach((array)$target as $country) {
1913 $prefs = get_usces_states($country);
1914 if(is_array($prefs) and 0 < count($prefs)) {
1915 $pos = strpos($prefs[0], '--');
1916 if($pos !== false) array_shift($prefs);
1917 $res .= $country.",";
1918 foreach((array)$prefs as $state) {
1919 $res .= $state."\n";
1920 }
1921 $res = rtrim($res, "\n")."#usces#";
1922 //20110430ysk start
1923 } else {
1924 $res .= $country.",#usces#";
1925 //20110430ysk end
1926 }
1927 }
1928 $res = rtrim($res, "#usces#");
1929 die($res);
1930 }
1931 //20110331ysk end
1932 //20120309ysk start 0000430
1933 function usces_admin_ajax() {
1934 switch($_POST['mode']) {
1935 case 'options_backup':
1936 $options = get_option('usces');
1937 $res = true;
1938 if( is_array($options) ) {
1939 $usces_backup_date = current_time('mysql');
1940 update_option('usces_backup', $options);
1941 update_option('usces_backup_date', $usces_backup_date);
1942 $res = $usces_backup_date;
1943 } else {
1944 $res = false;
1945 }
1946 die($res);
1947 break;
1948 case 'options_restore':
1949 $options = get_option('usces_backup');
1950 $res = true;
1951 if( is_array($options) ) {
1952 update_option('usces', $options);
1953 } else {
1954 $res = false;
1955 }
1956 die($res);
1957 break;
1958 }
1959 do_action('usces_action_admin_ajax');
1960 }
1961 //20120309ysk end
1962 function usces_order_recalculation( $order_id, $mem_id, $post_ids, $skus, $prices, $quants, $use_point, $shipping_charge, $cod_fee ) {
1963 global $usces;
1964
1965 $res = 'ok';
1966 if( !empty($order_id) ) {
1967 $data = $usces->get_order_data( $order_id, 'direct' );
1968 $condition = unserialize( $data['order_condition'] );
1969 } else {
1970 $condition = $usces->get_condition();
1971 }
1972 //usces_log('condition : '.print_r($condition,true), 'acting_transaction.log');
1973
1974 $post_id = explode("#usces#", $post_ids);
1975 $sku = explode("#usces#", $skus);
1976 $price = explode("#usces#", $prices);
1977 $quant = explode("#usces#", $quants);
1978 $cart = array();
1979 for( $i = 0; $i < count($post_id); $i++ ) {
1980 if( $post_id[$i] )
1981 $cart[] = array( "post_id"=>$post_id[$i], "sku"=>$sku[$i], "price"=>$price[$i], "quantity"=>$quant[$i] );
1982 }
1983
1984 $total_items_price = 0;
1985 foreach( $cart as $cart_row ) {
1986 $total_items_price += $cart_row['price'] * $cart_row['quantity'];
1987 }
1988 $meminfo = $usces->get_member_info( $mem_id );
1989
1990 $discount = 0;
1991 if( $condition['display_mode'] == 'Promotionsale' ) {
1992 if( $condition['campaign_privilege'] == 'discount' ) {
1993 if ( 0 === (int)$condition['campaign_category'] ) {
1994 $discount = $total_items_price * $condition['privilege_discount'] / 100;
1995 } else {
1996 foreach( $cart as $cart_row ) {
1997 if( in_category( (int)$condition['campaign_category'], $cart_row['post_id']) ) {
1998 $discount += $cart_row['price'] * $cart_row['quantity'] * $condition['privilege_discount'] / 100;
1999 }
2000 }
2001 }
2002 }
2003 }
2004 if( 0 < $discount ) $discount = ceil($discount * -1);
2005
2006 $point = 0;
2007 if( 'activate' == $usces->options['membersystem_state'] && 'activate' == $usces->options['membersystem_point'] && !empty($meminfo['ID']) ) {
2008 if( $condition['display_mode'] == 'Promotionsale' ) {
2009 if( $condition['campaign_privilege'] == 'discount' ) {
2010 foreach( $cart as $cart_row ) {
2011 $cats = $usces->get_post_term_ids( $cart_row['post_id'], 'category' );
2012 if( !in_array( $condition['campaign_category'], $cats ) ) {
2013 $rate = get_post_meta( $cart_row['post_id'], '_itemPointrate', true );
2014 $price = $cart_row['price'] * $cart_row['quantity'];
2015 $point += $price * $rate / 100;
2016 }
2017 }
2018 } elseif( $condition['campaign_privilege'] == 'point' ) {
2019 foreach( $cart as $cart_row ) {
2020 $rate = get_post_meta( $cart_row['post_id'], '_itemPointrate', true );
2021 $price = $cart_row['price'] * $cart_row['quantity'];
2022 $cats = $usces->get_post_term_ids( $cart_row['post_id'], 'category' );
2023 if( in_array( $condition['campaign_category'], $cats ) ) {
2024 $point += $price * $rate / 100 * $condition['privilege_point'];
2025 } else {
2026 $point += $price * $rate / 100;
2027 }
2028 }
2029 }
2030 } else {
2031 foreach( $cart as $cart_row ) {
2032 $rate = get_post_meta( $cart_row['post_id'], '_itemPointrate', true );
2033 $price = $cart_row['price'] * $cart_row['quantity'];
2034 $point += $price * $rate / 100;
2035 }
2036 }
2037 }
2038
2039 if( 0 < $point ) $point = ceil($point);
2040 //20130425ysk start 0000699
2041 if( 0 < $use_point ) {
2042 $point = ceil( $point - ( $point * $use_point / $total_items_price ) );
2043 if( 0 > $point )
2044 $point = 0;
2045 }
2046 //20130425ysk end
2047 $point = apply_filters( 'usces_filter_set_point_recalculation', $point, $condition, $cart, $meminfo, $use_point );
2048 $total_price = $total_items_price - $use_point + $discount + $shipping_charge + $cod_fee;
2049 $total_price = apply_filters('usces_filter_set_cart_fees_total_price', $total_price, $total_items_price, $use_point, $discount, $shipping_charge, $cod_fee);
2050 $tax = $usces->getTax( $total_price );
2051 $total_full_price = $total_price + $tax;
2052 $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);
2053
2054 return $res."#usces#".$discount."#usces#".usces_crform( $tax, false, false, 'return', false )."#usces#".$point."#usces#".usces_crform( $total_full_price, false, false, 'return', false );
2055 }
2056 ?>
2057