PluginProbe
Welcart e-Commerce / 2.12.3
Welcart e-Commerce v2.12.3
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 1.4.13 All 291 releases
usc-e-shop / functions / admin_func.php

admin_func.php in Welcart e-Commerce 2.12.3, at functions/admin_func.php

843 lines 29.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Admin Page functions.
4 *
5 * @package Welcart
6 */
7
8 // phpcs:disable WordPress.DB.DirectDatabaseQuery, WordPress.DB.PreparedSQL
9 // phpcs:disable WordPress.PHP.DevelopmentFunctions, WordPress.PHP.NoSilencedErrors
10
11 /**
12 * Front scripts.
13 */
14 function usces_states_form_js() {
15 global $usces;
16
17 $js = '';
18 if ( $usces->use_js
19 && ( ( ( is_page( USCES_MEMBER_NUMBER ) || $usces->is_member_page( $_SERVER['REQUEST_URI'] ) ) && ( ( true === $usces->is_member_logged_in() && WCUtils::is_blank( $usces->page ) ) || 'member' === $usces->page || 'editmemberform' === $usces->page || 'newmemberform' === $usces->page ) )
20 || ( ( is_page( USCES_CART_NUMBER ) || $usces->is_cart_page( $_SERVER['REQUEST_URI'] ) ) && ( 'customer' === $usces->page || 'delivery' === $usces->page ) )
21 ) ) {
22
23 $js .= '<script type="text/javascript">
24 (function($) {
25 uscesForm = {
26 settings: {
27 url: uscesL10n.ajaxurl,
28 type: "POST",
29 cache: false
30 },
31
32 changeStates : function( country, type ) {
33
34 var s = this.settings;
35 s.url = "' . USCES_SSL_URL . '/";
36 s.data = "usces_ajax_action=change_states&country=" + country;
37 $.ajax( s ).done(function( data ){
38 if( "error" == data ){
39 alert("error");
40 }else{
41 $("select#" + type + "_pref").html( data );
42 if( customercountry == country && "customer" == type ){
43 $("#" + type + "_pref").prop({selectedIndex:customerstate});
44 }else if( deliverycountry == country && "delivery" == type ){
45 $("#" + type + "_pref").prop({selectedIndex:deliverystate});
46 }else if( customercountry == country && "member" == type ){
47 $("#" + type + "_pref").prop({selectedIndex:customerstate});
48 }
49 }
50 }).fail(function( msg ){
51 alert("error");
52 });
53 return false;
54 }
55 };';
56
57 if ( 'customer' === $usces->page ) {
58
59 $js .= 'var customerstate = $("#customer_pref").get(0).selectedIndex;
60 var customercountry = $("#customer_country").val();
61 var deliverystate = "";
62 var deliverycountry = "";
63 var memberstate = "";
64 var membercountry = "";
65 $("#customer_country").change(function () {
66 var country = $("#customer_country option:selected").val();
67 uscesForm.changeStates( country, "customer" );
68 });';
69
70 } elseif ( 'delivery' === $usces->page ) {
71
72 $js .= 'var customerstate = "";
73 var customercountry = "";
74 var deliverystate = $("#delivery_pref").get(0).selectedIndex;
75 var deliverycountry = $("#delivery_country").val();
76 var memberstate = "";
77 var membercountry = "";
78 $("#delivery_country").change(function () {
79 var country = $("#delivery_country option:selected").val();
80 uscesForm.changeStates( country, "delivery" );
81 });';
82
83 } elseif ( ( true === $usces->is_member_logged_in() && WCUtils::is_blank( $usces->page ) ) || ( true === $usces->is_member_logged_in() && 'member' === $usces->page ) || 'editmemberform' === $usces->page || 'newmemberform' === $usces->page ) {
84
85 $js .= 'var customerstate = "";
86 var customercountry = "";
87 var deliverystate = "";
88 var deliverycountry = "";
89 var memberstate = $("#member_pref").get(0).selectedIndex;
90 var membercountry = $("#member_country").val();
91 $("#member_country").change(function () {
92 var country = $("#member_country option:selected").val();
93 uscesForm.changeStates( country, "member" );
94 });';
95 }
96 $js .= '})(jQuery);
97 </script>';
98 }
99
100 echo apply_filters( 'usces_filter_states_form_js', $js );
101 }
102
103 /**
104 * Point reduction control
105 *
106 * @param string $currency Currency code.
107 */
108 function usces_get_pointreduction( $currency ) {
109 global $usces, $usces_settings;
110
111 $form = $usces_settings['currency'][ $currency ];
112 if ( 2 === (int) $form[1] ) {
113 $reduction = 0.01;
114 } else {
115 $reduction = 1;
116 }
117 $reduction = apply_filters( 'usces_filter_pointreduction', $reduction );
118 return $reduction;
119 }
120
121 /**
122 * Admin Item Page.
123 * current_screen
124 */
125 function admin_prodauct_current_screen() {
126 global $current_screen, $post, $typenow;
127
128 $wp_version = get_bloginfo( 'version' );
129 if ( version_compare( $wp_version, '3.4-beta3', '<' ) ) {
130 return;
131 }
132
133 if ( ! ( isset( $_GET['page'] ) && ( ( 'usces_itemedit' === $_GET['page'] && isset( $_GET['action'] ) ) || 'usces_itemnew' === $_GET['page'] ) ) ) {
134 return;
135 }
136
137 $typenow = 'product';
138
139 if ( isset( $_GET['post'] ) ) {
140 $post_id = $post_ID = (int) $_GET['post'];
141 } elseif ( isset( $_POST['post_ID'] ) ) {
142 $post_id = $post_ID = (int) $_POST['post_ID'];
143 } else {
144 $post_id = $post_ID = 0;
145 }
146 $post_type = 'post';
147 $post_type_object = get_post_type_object( $post_type );
148
149 if ( $post_id ) {
150 $product = wel_get_product( $post_id );
151 $post = $product['_pst'];
152 } else {
153 $post = get_default_post_to_edit( $post_type, true );
154 $post_ID = $post->ID;
155 }
156
157 require_once USCES_PLUGIN_DIR . '/includes/meta-boxes.php';
158
159 add_meta_box( 'submitdiv', __( 'Publish' ), 'usces_post_submit_meta_box', $post_type, 'side', 'core' );
160 if ( NEW_PRODUCT_IMAGE_REGISTER::$opts['switch_flag'] ) {
161 add_meta_box( 'item-main-pict', __( 'Item image', 'usces' ), 'wel_post_item_pict_box_html', $post_type, 'side', 'high' );
162 } else {
163 add_meta_box( 'item-main-pict', __( 'Item image', 'usces' ), 'post_item_pict_box', $post_type, 'side', 'high' );
164 }
165
166 /* all taxonomies */
167 foreach ( get_object_taxonomies( $post_type ) as $tax_name ) {
168 $taxonomy = get_taxonomy( $tax_name );
169 if ( ! $taxonomy->show_ui ) {
170 continue;
171 }
172 $label = $taxonomy->labels->name;
173
174 if ( ! is_taxonomy_hierarchical( $tax_name ) ) {
175 add_meta_box( 'tagsdiv-' . $tax_name, $label, 'usces_post_tags_meta_box', $post_type, 'side', 'core' );
176 } else {
177 add_meta_box( $tax_name . 'div', $label, 'usces_post_categories_meta_box', $post_type, 'side', 'core', array( 'taxonomy' => $tax_name, 'descendants_and_self' => USCES_ITEM_CAT_PARENT_ID ) );
178 }
179 }
180
181 if ( post_type_supports( $post_type, 'page-attributes' ) ) {
182 add_meta_box( 'pageparentdiv', 'page' === $post_type ? __( 'Page Attributes' ) : __( 'Attributes' ), 'usces_page_attributes_meta_box', $post_type, 'side', 'core' );
183 }
184 if ( current_theme_supports( 'post-thumbnails', $post_type ) && post_type_supports( $post_type, 'thumbnail' ) ) {
185 add_meta_box( 'postimagediv', __( 'Featured image', 'usces' ), 'usces_post_thumbnail_meta_box', $post_type, 'side', 'low' );
186 }
187 if ( post_type_supports( $post_type, 'excerpt' ) ) {
188 add_meta_box( 'postexcerpt', __( 'Excerpt' ), 'usces_post_excerpt_meta_box', $post_type, 'normal', 'core' );
189 }
190 if ( post_type_supports( $post_type, 'trackbacks' ) ) {
191 add_meta_box( 'trackbacksdiv', __( 'Send Trackbacks' ), 'usces_post_trackback_meta_box', $post_type, 'normal', 'core' );
192 }
193 if ( post_type_supports( $post_type, 'custom-fields' ) ) {
194 add_meta_box( 'postcustom', __( 'Custom Fields' ), 'usces_post_custom_meta_box', $post_type, 'normal', 'core' );
195 }
196 if ( post_type_supports( $post_type, 'comments' ) ) {
197 add_meta_box( 'commentstatusdiv', __( 'Discussion' ), 'usces_post_comment_status_meta_box', $post_type, 'normal', 'core' );
198 }
199 if ( ( isset( $post->post_status ) && ( 'publish' === $post->post_status || 'private' === $post->post_status ) ) && post_type_supports( $post_type, 'comments' ) ) {
200 add_meta_box( 'commentsdiv', __( 'Comments' ), 'usces_post_comment_meta_box', $post_type, 'normal', 'core' );
201 }
202 if ( ! ( ( isset( $post->post_status ) && 'pending' === $post->post_status ) && ! current_user_can( $post_type_object->cap->publish_posts ) ) ) {
203 add_meta_box( 'slugdiv', __( 'Slug' ), 'usces_post_slug_meta_box', $post_type, 'normal', 'core' );
204 }
205 if ( post_type_supports( $post_type, 'author' ) ) {
206 if ( is_super_admin() || current_user_can( $post_type_object->cap->edit_others_posts ) ) {
207 add_meta_box( 'authordiv', __( 'Author' ), 'usces_post_author_meta_box', $post_type, 'normal', 'core' );
208 }
209 }
210
211 if ( post_type_supports( $post_type, 'revisions' ) && 0 < $post_ID && wp_get_post_revisions( $post_ID ) ) {
212 add_meta_box( 'revisionsdiv', __( 'Revisions' ), 'usces_post_revisions_meta_box', $post_type, 'normal', 'core' );
213 }
214
215 $current_screen->base = $post_type;
216 $current_screen->id = $post_type;
217 $current_screen->post_type = $post_type;
218 }
219
220 /**
221 * Edit Item Page Header.
222 * admin_head-welcart-shop_page_usces_itemedit
223 */
224 function admin_prodauct_header() {
225
226 $wp_version = get_bloginfo( 'version' );
227 if ( version_compare( $wp_version, '3.4-beta3', '<' ) ) {
228 return;
229 }
230 if ( isset( $_REQUEST['action'] ) && 'edit' === $_REQUEST['action'] ) {
231
232 $suport_display = '<p>' . __( 'Product registration documentation', 'usces' ) . '<br /><a href="http://www.welcart.com/documents/manual-2/%E6%96%B0%E8%A6%8F%E5%95%86%E5%93%81%E8%BF%BD%E5%8A%A0" target="_new">' . __( 'Product editing screen', 'usces' ) . '</a></p>';
233
234 get_current_screen()->add_help_tab(
235 array(
236 'id' => 'suport-display',
237 'title' => 'Documents',
238 'content' => $suport_display,
239 )
240 );
241 }
242 }
243
244 /**
245 * New Item Page Header.
246 * admin_head-welcart-shop_page_usces_itemnew
247 */
248 function admin_new_prodauct_header() {
249
250 $wp_version = get_bloginfo( 'version' );
251 if ( version_compare( $wp_version, '3.4-beta3', '<' ) ) {
252 return;
253 }
254 $customize_display = '<p>' . __( 'The title field and the big Post Editing Area are fixed in place, but you can reposition all the other boxes using drag and drop, and can minimize or expand them by clicking the title bar of each box. Use the Screen Options tab to unhide more boxes (Excerpt, Send Trackbacks, Custom Fields, Discussion, Slug, Author) or to choose a 1- or 2-column layout for this screen.' ) . '</p>';
255
256 get_current_screen()->add_help_tab(
257 array(
258 'id' => 'customize-display',
259 'title' => __( 'Customizing This Display' ),
260 'content' => $customize_display,
261 )
262 );
263 }
264
265 /**
266 * Delete member payment information.
267 *
268 * @param string $id Meta key.
269 */
270 function usces_clear_quickcharge( $id ) {
271 global $wpdb;
272 $table_name = usces_get_tablename( 'usces_member_meta' );
273 $query = $wpdb->prepare( "DELETE FROM $table_name WHERE meta_key = %s", $id );
274 $res = $wpdb->query( $query );
275
276 return $res;
277 }
278
279 /**
280 * Admin notice action.
281 *
282 * @param string $status Status.
283 * @param string $message Message.
284 */
285 function usces_admin_action_status( $status = '', $message = '' ) {
286 global $usces;
287 if ( empty( $status ) ) {
288 $status = $usces->action_status;
289 $usces->action_status = 'none';
290 }
291 if ( empty( $message ) ) {
292 $message = $usces->action_message;
293 $usces->action_message = '';
294 }
295 $class = '';
296 if ( 'success' === $status ) {
297 $class = 'updated';
298 } elseif ( 'caution' === $status ) {
299 $class = 'update-nag';
300 } elseif ( 'error' === $status ) {
301 $class = 'error';
302 }
303 if ( '' !== $class ) {
304 ?>
305 <div id="usces_admin_status">
306 <div id="usces_action_status" class="<?php echo esc_attr( $class ); ?> notice is-dismissible">
307 <p><strong><?php wel_esc_script_e( $message ); ?></strong></p><button type="button" class="notice-dismiss"><span class="screen-reader-text"><?php esc_html_e( 'Dismiss this notice.', 'usces' ); ?></span></button>
308 </div>
309 </div>
310 <?php
311 } else {
312 ?>
313 <div id="usces_admin_status"></div>
314 <?php
315 }
316 }
317
318 /**
319 * Admin notice messages.
320 */
321 function usces_get_admin_script_message() {
322 $mes_str = '';
323 $message = array();
324 $message[] = __( 'Please enter the option name.', 'usces' ); /* 0 */
325 $message[] = __( 'The same option name exists.', 'usces' ); /* 1 */
326 $message[] = __( 'Please enter the select value.', 'usces' ); /* 2 */
327 $message[] = __( 'Leave the select value blank for text and textarea.', 'usces' ); /* 3 */
328 $message[] = __( 'Please enter the SKU code value.', 'usces' ); /* 4 */
329 $message[] = __( 'Please enter the sale price value.', 'usces' ); /* 5 */
330 $message[] = __( 'Enter the SKU code in single-byte alphanumeric characters (including-_).', 'usces' ); /* 6 */
331 $message[] = __( 'Enter the normal price numerically.', 'usces' ); /* 7 */
332 $message[] = __( 'Enter the sale price numerically.', 'usces' ); /* 8 */
333 $message[] = __( 'Enter the stock numerically.', 'usces' ); /* 9 */
334 $message[] = __( 'The same SKU code exists.', 'usces' ); /* 10 */
335 $message[] = __( 'Please enter the payment method name value.', 'usces' ); /* 11 */
336 $message[] = __( 'Please select the payment type.', 'usces' ); /* 12 */
337 $message[] = __( 'Please enter the value for the payment module.', 'usces' ); /* 13 */
338 $message[] = __( 'The same payment method name exists.', 'usces' ); /* 14 */
339 $message[] = __( 'Chose the %s', 'usces' ); /* 15 */
340 $message[] = __( 'Input the %s', 'usces' ); /* 16 */
341 $message[] = __( 'Please enter a numeric value.', 'usces' ); /* 17 */
342 $message[] = __( 'Delete', 'usces' ); /* 18 */
343 $message[] = __( 'Dismiss this notice.', 'usces' ); /* 19 */
344 $message[] = __( ' - ', 'usces' ); /* 20 */
345 $message[] = __( 'Enter the field key in single-byte alphanumeric characters (including-_).', 'usces' ); /* 21 */
346 $message[] = __( 'Please enter the field name.', 'usces' ); /* 22 */
347 $message[] = __( 'The same value as the field key exists.', 'usces' ); /* 23 */
348 $message[] = __( 'The same value as the field name exists.', 'usces' ); /* 24 */
349 $message[] = __( 'Delete SKU (********). Are you sure?', 'usces' ); /* 25 */
350 $message = apply_filters( 'usces_filter_admin_script_message', $message );
351 foreach ( (array) $message as $key => $mes ) {
352 $mes_str .= "'" . $mes . "',";
353 }
354 $mes_str = rtrim( $mes_str, ',' );
355 return $mes_str;
356 }
357
358 /**
359 * Force the payment ID to be displayed in the order list.
360 */
361 function usces_admin_orderlist_show_wc_trans_id() {
362
363 $list_option = get_option( 'usces_orderlist_option', array() );
364 $wc_trans_id = ( isset( $list_option['view_column']['wc_trans_id'] ) ) ? $list_option['view_column']['wc_trans_id'] : 0;
365 if ( empty( $wc_trans_id ) ) {
366 $list_option['view_column']['wc_trans_id'] = 1;
367 update_option( 'usces_orderlist_option', $list_option );
368 }
369 }
370
371 /**
372 * Optional control of mail settings page.
373 * admin_print_footer_scripts
374 */
375 function usces_admin_print_footer_scripts() {
376 global $usces;
377
378 $admin_page = ( isset( $_GET['page'] ) ) ? wp_unslash( $_GET['page'] ) : '';
379 switch ( $admin_page ) :
380 case 'usces_mail':
381 $email_attach_feature = ( isset( $usces->options['email_attach_feature'] ) ) ? $usces->options['email_attach_feature'] : '0';
382 ?>
383 <script type="text/javascript">
384 jQuery( document ).ready( function( $ ) {
385 var email_attach_feature = "<?php echo esc_js( $email_attach_feature ); ?>";
386 if ( "1" == email_attach_feature ) {
387 $( ".email_attach_feature" ).css( "display", "" );
388 } else {
389 $( ".email_attach_feature" ).css( "display", "none" );
390 }
391 $( document ).on( "change", "input[name='email_attach_feature']", function() {
392 if ( "1" == $( this ).val() ) {
393 $( ".email_attach_feature" ).css( "display", "" );
394 } else {
395 $( ".email_attach_feature" ).css( "display", "none" );
396 }
397 });
398 });
399 </script>
400 <?php
401 break;
402 endswitch;
403 }
404
405 /**
406 * Mail data.
407 *
408 * @return array
409 */
410 function usces_mail_data() {
411 global $usces;
412
413 $options = get_option( 'usces', array() );
414 $mail_data_title = $options['mail_data']['title'];
415 $mail_data_header = $options['mail_data']['header'];
416 $mail_data_footer = $options['mail_data']['footer'];
417 foreach ( $mail_data_title as $mail => $value ) {
418 if ( empty( $value ) && isset( $options['mail_default']['title'][ $mail ] ) ) {
419 $mail_data_title[ $mail ] = $options['mail_default']['title'][ $mail ];
420 }
421 }
422 foreach ( $mail_data_header as $mail => $value ) {
423 if ( empty( $value ) && isset( $options['mail_default']['header'][ $mail ] ) ) {
424 $mail_data_header[ $mail ] = $options['mail_default']['header'][ $mail ];
425 }
426 }
427 foreach ( $mail_data_footer as $mail => $value ) {
428 if ( empty( $value ) && isset( $options['mail_default']['footer'][ $mail ] ) ) {
429 $mail_data_footer[ $mail ] = $options['mail_default']['footer'][ $mail ];
430 }
431 }
432 $mail_thankyou = get_option( 'usces_mail_thankyou', array( 'title' => $mail_data_title['thankyou'], 'header' => $mail_data_header['thankyou'], 'footer' => $mail_data_footer['thankyou'] ) );
433 $mail_order = get_option( 'usces_mail_order', array( 'title' => $mail_data_title['order'], 'header' => $mail_data_header['order'], 'footer' => $mail_data_footer['order'] ) );
434 $mail_inquiry = get_option( 'usces_mail_inquiry', array( 'title' => $mail_data_title['inquiry'], 'header' => $mail_data_header['inquiry'], 'footer' => $mail_data_footer['inquiry'] ) );
435 $mail_membercomp = get_option( 'usces_mail_membercomp', array( 'title' => $mail_data_title['membercomp'], 'header' => $mail_data_header['membercomp'], 'footer' => $mail_data_footer['membercomp'] ) );
436 $mail_completionmail = get_option( 'usces_mail_completionmail', array( 'title' => $mail_data_title['completionmail'], 'header' => $mail_data_header['completionmail'], 'footer' => $mail_data_footer['completionmail'] ) );
437 $mail_ordermail = get_option( 'usces_mail_ordermail', array( 'title' => $mail_data_title['ordermail'], 'header' => $mail_data_header['ordermail'], 'footer' => $mail_data_footer['ordermail'] ) );
438 $mail_changemail = get_option( 'usces_mail_changemail', array( 'title' => $mail_data_title['changemail'], 'header' => $mail_data_header['changemail'], 'footer' => $mail_data_footer['changemail'] ) );
439 $mail_receiptmail = get_option( 'usces_mail_receiptmail', array( 'title' => $mail_data_title['receiptmail'], 'header' => $mail_data_header['receiptmail'], 'footer' => $mail_data_footer['receiptmail'] ) );
440 $mail_mitumorimail = get_option( 'usces_mail_mitumorimail', array( 'title' => $mail_data_title['mitumorimail'], 'header' => $mail_data_header['mitumorimail'], 'footer' => $mail_data_footer['mitumorimail'] ) );
441 $mail_cancelmail = get_option( 'usces_mail_cancelmail', array( 'title' => $mail_data_title['cancelmail'], 'header' => $mail_data_header['cancelmail'], 'footer' => $mail_data_footer['cancelmail'] ) );
442 $mail_othermail = get_option( 'usces_mail_othermail', array( 'title' => $mail_data_title['othermail'], 'header' => $mail_data_header['othermail'], 'footer' => $mail_data_footer['othermail'] ) );
443
444 $mail_data = array();
445 $mail_data['title'] = array(
446 'thankyou' => $mail_thankyou['title'],
447 'order' => $mail_order['title'],
448 'inquiry' => $mail_inquiry['title'],
449 'membercomp' => $mail_membercomp['title'],
450 'completionmail' => $mail_completionmail['title'],
451 'ordermail' => $mail_ordermail['title'],
452 'changemail' => $mail_changemail['title'],
453 'receiptmail' => $mail_receiptmail['title'],
454 'mitumorimail' => $mail_mitumorimail['title'],
455 'cancelmail' => $mail_cancelmail['title'],
456 'othermail' => $mail_othermail['title'],
457 );
458 $mail_data['header'] = array(
459 'thankyou' => $mail_thankyou['header'],
460 'order' => $mail_order['header'],
461 'inquiry' => $mail_inquiry['header'],
462 'membercomp' => $mail_membercomp['header'],
463 'completionmail' => $mail_completionmail['header'],
464 'ordermail' => $mail_ordermail['header'],
465 'changemail' => $mail_changemail['header'],
466 'receiptmail' => $mail_receiptmail['header'],
467 'mitumorimail' => $mail_mitumorimail['header'],
468 'cancelmail' => $mail_cancelmail['header'],
469 'othermail' => $mail_othermail['header'],
470 );
471 $mail_data['footer'] = array(
472 'thankyou' => $mail_thankyou['footer'],
473 'order' => $mail_order['footer'],
474 'inquiry' => $mail_inquiry['footer'],
475 'membercomp' => $mail_membercomp['footer'],
476 'completionmail' => $mail_completionmail['footer'],
477 'ordermail' => $mail_ordermail['footer'],
478 'changemail' => $mail_changemail['footer'],
479 'receiptmail' => $mail_receiptmail['footer'],
480 'mitumorimail' => $mail_mitumorimail['footer'],
481 'cancelmail' => $mail_cancelmail['footer'],
482 'othermail' => $mail_othermail['footer'],
483 );
484 return apply_filters( 'usces_filter_mail_data', $mail_data, $mail_data_title, $mail_data_header, $mail_data_footer );
485 }
486
487 /**
488 * Hide the none item categories in the "Item category" tab of the category post box.
489 * Implementation of the "admin_print_footer_scripts" action hook.
490 *
491 * @return void
492 */
493 function usces_hide_none_item_cat() {
494 global $wp_version;
495 $current_page = isset( $_GET['page'] ) ? wp_unslash( $_GET['page'] ) : '';
496 $is_new_or_edit_item = in_array( $current_page, array( 'usces_itemnew', 'usces_itemedit' ), true );
497 if ( $is_new_or_edit_item ) :
498 $item_cats = get_term_children( USCES_ITEM_CAT_PARENT_ID, 'category' );
499 if ( version_compare( $wp_version, '6.7', '>=' ) ) {
500 $li_category_id = '[id*="in-category-' . USCES_ITEM_CAT_PARENT_ID . '-"]';
501 $li_category_prefix = 'in-category-';
502 } else {
503 $li_category_id = '#category-' . USCES_ITEM_CAT_PARENT_ID;
504 $li_category_prefix = 'category-';
505 }
506 $item_cat_checkbox_ids = array( $li_category_id );
507 foreach ( $item_cats as $item_cat_id ) {
508 if ( version_compare( $wp_version, '6.7', '>=' ) ) {
509 $li_category_id = '[id*="in-category-' . $item_cat_id . '-"]';
510 } else {
511 $li_category_id = '#category-' . $item_cat_id;
512 }
513 $item_cat_checkbox_ids[] = $li_category_id;
514 }
515 $item_cat_checkbox_ids_str = implode( ',', $item_cat_checkbox_ids );
516 ?>
517 <script>
518 (function($) {
519 $('#category-all ul#categorychecklist li[id*="<?php echo esc_attr( $li_category_prefix ); ?>"]').not('<?php wel_esc_script_e( $item_cat_checkbox_ids_str ); ?>').hide();
520 })(jQuery);
521 </script>
522 <?php
523 endif;
524 }
525
526 /**
527 * Whether Welcart was installed for the first time.
528 *
529 * @return boolean
530 */
531 function wel_is_first_install() {
532 global $wpdb;
533
534 $target = $wpdb->get_col(
535 $wpdb->prepare(
536 "SELECT ID FROM $wpdb->posts
537 WHERE (post_status = %s OR post_status = %s OR post_status = %s OR post_status = %s OR post_status LIKE %s )
538 AND post_type = %s AND post_mime_type = %s",
539 'publish',
540 'private',
541 'future',
542 'pending',
543 '%draft%',
544 'post',
545 'item'
546 )
547 );
548
549 if ( is_array( $target ) && 0 < count( $target ) ) {
550 return false;
551 } else {
552 return true;
553 }
554 }
555
556 /**
557 * Get the circulation amount in the last month.
558 *
559 * @return int
560 */
561 function wel_get_circulating_amount() {
562 global $wpdb;
563
564 $current_time = current_time( 'timestamp' );
565 $last_month_time = strtotime( 'first day of last month 00:00:00', $current_time );
566 $last_month = wp_date( 'Y-m-d H:i:s', $last_month_time );
567 $this_month_time = strtotime( 'first day of this month 00:00:00', $current_time );
568 $this_month = wp_date( 'Y-m-d H:i:s', $this_month_time );
569 $next_month_time = strtotime( 'last day of this month 23:59:59', $this_month_time );
570 $next_month = wp_date( 'Y-m-d H:i:s', $next_month_time );
571
572 $table_name = $wpdb->prefix . 'usces_order';
573 $normal_res = $wpdb->get_row(
574 $wpdb->prepare(
575 "SELECT SUM(
576 order_item_total_price + order_shipping_charge + order_cod_fee + order_tax - order_usedpoint + order_discount
577 ) AS total_full_price, COUNT(*) AS count
578 FROM {$table_name}
579 WHERE order_status NOT LIKE %s
580 AND order_status NOT LIKE %s
581 AND order_status NOT LIKE %s
582 AND order_date >= %s
583 AND order_date < %s",
584 '%%mitumori%%',
585 '%%cancel%%',
586 '%%pending%%',
587 $last_month,
588 $this_month
589 ),
590 ARRAY_A
591 );
592
593 $normal = array(
594 'total_full_price' => isset( $normal_res['total_full_price'] ) ? (int) $normal_res['total_full_price'] : 0,
595 'count' => isset( $normal_res['count'] ) ? (int) $normal_res['count'] : 0,
596 );
597
598 $continue = array(
599 'total_con_price' => 0,
600 'count' => 0,
601 );
602 if ( defined( 'WCEX_DLSELLER' ) ) {
603 $access_table = $wpdb->prefix . 'usces_continuation';
604 if ( $access_table !== $wpdb->get_var( "SHOW TABLES LIKE '$access_table'" ) ) {
605 $conres = array(
606 'total_con_price' => 0,
607 'count' => 0,
608 );
609 } else {
610 $this_month = substr( $this_month, 0, 10 );
611 $next_month = substr( $next_month, 0, 10 );
612 $conres = $wpdb->get_row(
613 $wpdb->prepare(
614 "SELECT SUM( con_price ) AS total_con_price, COUNT(*) AS count FROM {$access_table}
615 WHERE con_status = %s
616 AND con_next_charging >= %s AND con_next_charging <= %s",
617 'continuation',
618 $this_month,
619 $next_month
620 ),
621 ARRAY_A
622 );
623 }
624
625 $continue = array(
626 'total_con_price' => isset( $conres['total_con_price'] ) ? (int) $conres['total_con_price'] : 0,
627 'count' => isset( $conres['count'] ) ? (int) $conres['count'] : 0,
628 );
629 }
630 $result = array(
631 'amount' => (int) $normal['total_full_price'] + (int) $continue['total_con_price'],
632 'count' => (int) $normal['count'] + (int) $continue['count'],
633 );
634 return $result;
635 }
636
637 /**
638 * Get item categories.
639 *
640 * @return string
641 */
642 function wel_get_categories() {
643
644 $parent_category_slug = 'itemgenre';
645 $parent_category = get_category_by_slug( $parent_category_slug );
646
647 if ( $parent_category ) {
648 $categories = get_categories(
649 array(
650 'taxonomy' => 'category',
651 'hide_empty' => 0,
652 'parent' => $parent_category->term_id,
653 )
654 );
655 }
656
657 if ( empty( $categories ) ) {
658 $fallback_category_slug = 'item';
659 $fallback_category = get_category_by_slug( $fallback_category_slug );
660
661 if ( $fallback_category ) {
662 $categories = get_categories(
663 array(
664 'taxonomy' => 'category',
665 'hide_empty' => 0,
666 'parent' => $fallback_category->term_id,
667 )
668 );
669 }
670 }
671
672 $result = '';
673 if ( ! empty( $categories ) ) {
674 foreach ( $categories as $index => $category ) {
675 if ( 10 > $index ) {
676 $result .= $category->name . ':';
677 } else {
678 break;
679 }
680 }
681 $result = trim( $result, ':' );
682 }
683
684 return $result;
685 }
686
687 /**
688 * Get total number of item categories.
689 *
690 * @return int
691 */
692 function wel_get_cat_total_num() {
693
694 $item_category = get_category_by_slug( 'item' );
695 if ( $item_category ) {
696 $args = array(
697 'child_of' => $item_category->term_id,
698 'taxonomy' => 'category',
699 'hide_empty' => false,
700 );
701
702 $subcategories = get_categories( $args );
703 $subcategory_count = count( $subcategories );
704
705 } else {
706 $subcategory_count = 0;
707 }
708
709 return (int) $subcategory_count;
710 }
711
712 /**
713 * Get total number of SKU.
714 *
715 * @return int
716 */
717 function wel_get_sku_total_num() {
718 global $wpdb;
719
720 $status = array();
721 $sku_table = $wpdb->prefix . 'usces_skus';
722
723 $data = $wpdb->get_var(
724 $wpdb->prepare(
725 "SELECT COUNT(*) AS sku_num FROM {$wpdb->posts} LEFT JOIN {$sku_table} ON ID = post_id
726 WHERE post_mime_type = %s AND post_type = %s AND post_status <> %s",
727 'item',
728 'post',
729 'trash'
730 )
731 );
732
733 if ( $data ) {
734 $res = (int) $data;
735 } else {
736 $res = 0;
737 }
738 return $res;
739 }
740
741 /**
742 * Get active theme.
743 *
744 * @return string
745 */
746 function wel_get_themes() {
747 $result = '';
748
749 $active_theme = wp_get_theme();
750 $result = $active_theme->get( 'Name' );
751
752 if ( $active_theme->parent() ) {
753 $parent_theme = $active_theme->parent();
754 $result .= ' : ' . $parent_theme->get( 'Name' );
755 }
756
757 return $result;
758 }
759
760 /**
761 * Get active plugins.
762 *
763 * @return string
764 */
765 function wel_get_plugins() {
766 $result = '';
767
768 $all_plugins = get_plugins();
769 $active_plugins = get_option( 'active_plugins', array() );
770
771 foreach ( $active_plugins as $plugin_path ) {
772 if ( strpos( $plugin_path, 'wcex' ) === 0 && isset( $all_plugins[ $plugin_path ] ) ) {
773 $plugin = $all_plugins[ $plugin_path ];
774 $result .= dirname( $plugin_path ) . '(' . $plugin['Version'] . '):';
775 }
776 }
777 $result = trim( $result, ':' );
778 return $result;
779 }
780
781 /**
782 * Get active payment methods.
783 *
784 * @return string
785 */
786 function wel_get_activ_pay_methd() {
787 global $usces;
788
789 $result = '';
790 $payment_method = get_option( 'usces_payment_method', array() );
791
792 foreach ( $payment_method as $method ) {
793 if ( empty( $method['use'] ) || 'activate' !== $method['use'] ) {
794 continue;
795 }
796 $payname = str_replace( 'acting', '', $method['settlement'] );
797 $payname = ltrim( $payname, '_' );
798 if ( empty( $payname ) ) {
799 $payname = $method['module'];
800 }
801 $result .= $payname . ':';
802 }
803 $result = trim( $result, ':' );
804 return $result;
805 }
806
807 /**
808 * Implementation of hook "init".
809 * - Activate Paidy payment.
810 *
811 * @see includes\default_filters.php
812 */
813 function usces_paidyapi() {
814 $allowed_ip = '52.68.140.181';
815 $request_ip = isset( $_SERVER['REMOTE_ADDR'] ) ? sanitize_text_field( wp_unslash( $_SERVER['REMOTE_ADDR'] ) ) : '';
816 $is_allowed_ip = $allowed_ip === $request_ip;
817 if ( $is_allowed_ip ) {
818 $method = isset( $_SERVER['REQUEST_METHOD'] ) ? sanitize_text_field( wp_unslash( $_SERVER['REQUEST_METHOD'] ) ) : 'GET';
819 $is_post_method = 'POST' === $method;
820 if ( $is_post_method ) {
821 $is_paidy_result = filter_input( INPUT_POST, 'paidy_result' );
822 if ( $is_paidy_result ) {
823 InstantPaidyDashboard::get_instance()->receive_paidy_result();
824 }
825 }
826 }
827 }
828
829 /**
830 * Prefecture name handler.
831 *
832 * This function checks user capability and returns the input as-is.
833 *
834 * @param string $pref Input string.
835 * @return string The original input string (trimmed).
836 */
837 function wel_validate_prefecture_name( $pref ) {
838 if ( ! current_user_can( 'wel_manage_setting' ) ) {
839 wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
840 }
841 return trim( $pref );
842 }
843