PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /home/trave494/tiktechtok.org/wp-content/plugins/woocommerce-store-toolkit/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : /home/trave494/tiktechtok.org/wp-content/plugins/woocommerce-store-toolkit/store-toolkit.php |
<?php /* Plugin Name: Store Toolkit for WooCommerce Plugin URI: https://wordpress.org/plugins/woocommerce-store-toolkit/ Description: Store Toolkit includes a growing set of commonly-used WooCommerce administration tools aimed at web developers and store maintainers. Version: 2.3.10 Author: Visser Labs Author URI: https://visser.com.au/ License: GPL2 Text Domain: woocommerce-store-toolkit Domain Path: /languages/ WC requires at least: 2.3 WC tested up to: 6.5.1 */ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } define( 'WOO_ST_DIRNAME', basename( __DIR__ ) ); define( 'WOO_ST_RELPATH', basename( __DIR__ ) . '/' . basename( __FILE__ ) ); define( 'WOO_ST_PATH', plugin_dir_path( __FILE__ ) ); define( 'WOO_ST_PREFIX', 'woo_st' ); require_once WOO_ST_PATH . 'common/common.php'; require_once WOO_ST_PATH . 'includes/functions.php'; require_once WOO_ST_PATH . 'includes/formatting.php'; if ( defined( 'WP_CLI' ) && WP_CLI ) { require_once WOO_ST_PATH . 'includes/wp-cli.php'; } /** * For developers: Store Toolkit debugging mode. * * Change this to true to enable the display of notices during development. */ if ( ! defined( 'WOO_ST_DEBUG' ) ) { define( 'WOO_ST_DEBUG', false ); } function woo_st_i18n() { load_plugin_textdomain( 'woocommerce-store-toolkit', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' ); } add_action( 'init', 'woo_st_i18n' ); /** * Declare compatibility with WooCommerce HPOS. * * @since 2.3.10 */ function woo_st_declare_hpos_compatibility() { if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) { \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true ); } } add_action( 'before_woocommerce_init', 'woo_st_declare_hpos_compatibility' ); if ( is_admin() ) { /* Start of: WordPress Administration */ // Register our install script for first time install include_once WOO_ST_PATH . 'includes/install.php'; register_activation_hook( __FILE__, 'woo_st_install' ); function woo_st_admin_init() { // Check the User has the manage_woocommerce capability if ( ! current_user_can( 'manage_woocommerce' ) ) { return; } $action = ( function_exists( 'woo_get_action' ) ? woo_get_action() : false ); switch ( $action ) { case 'nuke': // Make sure we play nice with other WooCommerce and WordPress nukes if ( ! isset( $_POST['woo_st_nuke'] ) ) { $url = add_query_arg( array( 'action' => null, 'message' => __( 'A required $_POST element was not detected so the requested nuke will not proceed', 'woocommerce-store-toolkit' ), ) ); wp_redirect( $url ); exit(); } // We need to verify the nonce. check_admin_referer( 'nuke', 'woo_st_nuke' ); if ( ! ini_get( 'safe_mode' ) ) { set_time_limit( 0 ); } // List of supported datasets $datasets = woo_st_get_dataset_types(); // Check if the re-commence nuke notice has been enabled $in_progress = woo_st_get_option( 'in_progress', false ); if ( isset( $_GET['dataset'] ) && ! empty( $in_progress ) ) { $dataset = strtolower( sanitize_text_field( $_GET['dataset'] ) ); if ( in_array( $dataset, $datasets ) ) { $response = woo_st_clear_dataset( $dataset ); } return; } // WooCommerce if ( isset( $_POST['woo_st_products'] ) ) { $product_status = ( isset( $_POST['woo_st_products_status'] ) ? array_map( 'sanitize_text_field', $_POST['woo_st_products_status'] ) : false ); $args = array(); if ( ! empty( $product_status ) ) { $args['product_status'] = array_values( $product_status ); } $response = woo_st_clear_dataset( 'product', $args ); } if ( isset( $_POST['woo_st_products_category'] ) ) { $categories = array_map( 'sanitize_text_field', $_POST['woo_st_products_category'] ); $response = woo_st_clear_dataset( 'product_category', $categories ); } elseif ( isset( $_POST['woo_st_product_categories'] ) ) { $response = woo_st_clear_dataset( 'product_category' ); } if ( isset( $_POST['woo_st_product_tags'] ) ) { $response = woo_st_clear_dataset( 'product_tag' ); } if ( isset( $_POST['woo_st_product_brands'] ) ) { $response = woo_st_clear_dataset( 'product_brand' ); } if ( isset( $_POST['woo_st_product_vendors'] ) ) { $response = woo_st_clear_dataset( 'product_vendor' ); } if ( isset( $_POST['woo_st_product_images'] ) ) { $response = woo_st_clear_dataset( 'product_image' ); } if ( isset( $_POST['woo_st_coupons'] ) ) { $response = woo_st_clear_dataset( 'coupon' ); } if ( isset( $_POST['woo_st_shipping_classes'] ) ) { $response = woo_st_clear_dataset( 'shipping_class' ); } if ( isset( $_POST['woo_st_woocommerce_logs'] ) ) { $response = woo_st_clear_dataset( 'woocommerce_log' ); } if ( isset( $_POST['woo_st_attributes'] ) ) { $response = woo_st_clear_dataset( 'attribute' ); } if ( isset( $_POST['woo_st_orders'] ) ) { $args = array(); if ( isset( $_POST['woo_st_orders_status'] ) ) { $args['status'] = array_map( 'absint', $_POST['woo_st_orders_status'] ); } if ( isset( $_POST['woo_st_orders_date'] ) ) { $args['date'] = sanitize_text_field( $_POST['woo_st_orders_date'] ); if ( $args['date'] == 'manual' ) { $args['date_from'] = ( isset( $_POST['woo_st_orders_date_from'] ) ? sanitize_text_field( $_POST['woo_st_orders_date_from'] ) : false ); $args['date_to'] = ( isset( $_POST['woo_st_orders_date_to'] ) ? sanitize_text_field( $_POST['woo_st_orders_date_to'] ) : false ); } } $response = woo_st_clear_dataset( 'order', $args ); } if ( isset( $_POST['woo_st_tax_rates'] ) ) { $response = woo_st_clear_dataset( 'tax_rate' ); } if ( isset( $_POST['woo_st_download_permissions'] ) ) { $response = woo_st_clear_dataset( 'download_permission' ); } // 3rd Party if ( isset( $_POST['woo_st_creditcards'] ) ) { $response = woo_st_clear_dataset( 'credit_card' ); } if ( isset( $_POST['woo_st_storeexportscsv'] ) ) { $response = woo_st_clear_dataset( 'store_export_csv' ); } if ( isset( $_POST['woo_st_storeexportstsv'] ) ) { $response = woo_st_clear_dataset( 'store_export_tsv' ); } if ( isset( $_POST['woo_st_storeexportsxls'] ) ) { $response = woo_st_clear_dataset( 'store_export_xls' ); } if ( isset( $_POST['woo_st_storeexportsxlsx'] ) ) { $response = woo_st_clear_dataset( 'store_export_xlsx' ); } if ( isset( $_POST['woo_st_storeexportsxml'] ) ) { $response = woo_st_clear_dataset( 'store_export_xml' ); } if ( isset( $_POST['woo_st_storeexportsrss'] ) ) { $response = woo_st_clear_dataset( 'store_export_rss' ); } if ( isset( $_POST['woo_st_google_product_feed'] ) ) { $response = woo_st_clear_dataset( 'google_product_feed' ); } // WordPress if ( isset( $_POST['woo_st_posts'] ) ) { $response = woo_st_clear_dataset( 'post' ); } if ( isset( $_POST['woo_st_post_categories'] ) ) { $response = woo_st_clear_dataset( 'post_category' ); } if ( isset( $_POST['woo_st_post_tags'] ) ) { $response = woo_st_clear_dataset( 'post_tag' ); } if ( isset( $_POST['woo_st_links'] ) ) { $response = woo_st_clear_dataset( 'link' ); } if ( isset( $_POST['woo_st_comments'] ) ) { $response = woo_st_clear_dataset( 'comment' ); } if ( isset( $_POST['woo_st_media_images'] ) ) { $response = woo_st_clear_dataset( 'media_image' ); } break; case 'relink-rogue-simple-type': // We need to verify the nonce. if ( ! empty( $_GET ) && check_admin_referer( 'woo_st_relink_rogue_simple_type' ) ) { woo_st_relink_rogue_simple_type(); $url = add_query_arg( array( 'action' => null, '_wpnonce' => null, ) ); wp_redirect( $url ); exit(); } break; case 'delete-corrupt-variations': // We need to verify the nonce. if ( ! empty( $_GET ) && check_admin_referer( 'woo_st_delete_corrupt_variations' ) ) { woo_st_delete_corrupt_variations(); $url = add_query_arg( array( 'action' => null, '_wpnonce' => null, ) ); wp_redirect( $url ); exit(); } break; case 'refresh-product-transients': // We need to verify the nonce. if ( ! empty( $_GET ) && check_admin_referer( 'woo_st_refresh_product_transients' ) ) { woo_st_refresh_product_transients(); $url = add_query_arg( array( 'action' => null, '_wpnonce' => null, ) ); wp_redirect( $url ); exit(); } break; case 'woo_st-generate_products': // We need to verify the nonce. if ( ! empty( $_POST ) && check_admin_referer( 'generate_products', 'woo_st-generate_products' ) ) { $args = array( 'limit' => ( isset( $_POST['limit'] ) ? sanitize_text_field( $_POST['limit'] ) : false ), 'product_name' => ( isset( $_POST['product_name'] ) ? sanitize_text_field( $_POST['product_name'] ) : false ), 'short_description' => ( isset( $_POST['short_description'] ) ? sanitize_text_field( $_POST['short_description'] ) : false ), 'description' => ( isset( $_POST['description'] ) ? sanitize_text_field( $_POST['description'] ) : false ), 'sku' => ( isset( $_POST['sku'] ) ? sanitize_text_field( $_POST['sku'] ) : false ), ); $response = woo_st_generate_sample_products( $args ); if ( $response ) { $message = __( 'Sample Products have been generated.', 'woocommerce-store-toolkit' ); woo_st_admin_notice( $message ); } } break; case 'woo_st-generate_orders': // We need to verify the nonce. if ( ! empty( $_POST ) && check_admin_referer( 'generate_orders', 'woo_st-generate_orders' ) ) { $args = array( 'limit' => ( isset( $_POST['limit'] ) ? sanitize_text_field( $_POST['limit'] ) : false ), ); $response = woo_st_generate_sample_orders( $args ); if ( $response ) { $message = __( 'Sample Orders have been generated.', 'woocommerce-store-toolkit' ); woo_st_admin_notice( $message ); } } break; case 'woo_st-tools': // We need to verify the nonce. if ( ! empty( $_POST ) && check_admin_referer( 'tools', 'woo_st-tools' ) ) { $status = ( isset( $_POST['unlock_variations'] ) ? absint( $_POST['unlock_variations'] ) : 0 ); update_option( WOO_ST_PREFIX . '_unlock_variations', $status ); $status = ( isset( $_POST['unlock_related_orders'] ) ? absint( $_POST['unlock_related_orders'] ) : 0 ); update_option( WOO_ST_PREFIX . '_unlock_related_orders', $status ); $status = ( isset( $_POST['autocomplete_order'] ) ? absint( $_POST['autocomplete_order'] ) : 0 ); update_option( WOO_ST_PREFIX . '_autocomplete_order', $status ); $message = __( 'Changes have been saved.', 'woocommerce-store-toolkit' ); woo_st_admin_notice( $message ); } break; // Save changes on Settings screen case 'save-settings': // We need to verify the nonce. if ( ! empty( $_POST ) && wp_verify_nonce( $_REQUEST['_wpnonce'], 'woo_st_save_settings' ) ) { if ( check_admin_referer( 'woo_st_save_settings' ) ) { woo_st_settings_save(); } } break; default: // Category $term_taxonomy = 'product_cat'; add_action( $term_taxonomy . '_edit_form_fields', 'woo_st_category_data_meta_box', 11 ); // Tag $term_taxonomy = 'product_tag'; add_action( $term_taxonomy . '_edit_form_fields', 'woo_st_tag_data_meta_box', 11 ); // Brand $term_taxonomy = 'product_brand'; add_action( $term_taxonomy . '_edit_form_fields', 'woo_st_brand_data_meta_box', 11 ); // Product Vendor $term_taxonomy = 'yith_shop_vendor'; add_action( $term_taxonomy . '_edit_form_fields', 'woo_st_product_vendor_data_meta_box', 11 ); // User add_action( 'show_user_profile', 'woo_st_user_orders', 9 ); add_action( 'edit_user_profile', 'woo_st_user_orders', 9 ); add_action( 'show_user_profile', 'woo_st_user_data_meta_box', 11 ); add_action( 'edit_user_profile', 'woo_st_user_data_meta_box', 11 ); if ( function_exists( 'woo_st_add_data_meta_boxes' ) ) { add_action( 'add_meta_boxes', 'woo_st_add_data_meta_boxes', 10, 2 ); } add_filter( 'manage_users_columns', 'woo_st_add_user_column', 11 ); add_filter( 'manage_users_custom_column', 'woo_st_user_column_values', 11, 3 ); add_filter( 'admin_footer_text', 'woo_st_admin_footer_text' ); // Add a User column to the Orders screen add_filter( 'manage_edit-shop_order_columns', 'woo_st_admin_order_column_headers', 20 ); add_action( 'manage_shop_order_posts_custom_column', 'woo_st_admin_order_column_content', 10, 2 ); add_filter( 'woocommerce_shop_order_list_table_columns', 'woo_st_admin_order_column_headers', 20 ); // WooCommerce orders tables. add_action( 'manage_woocommerce_page_wc-orders_custom_column', 'woo_st_admin_order_column_content', 10, 2 ); // WooCommerce orders tables. break; } } add_action( 'admin_init', 'woo_st_admin_init' ); function woo_st_default_html_page() { global $wpdb; $tab = false; if ( isset( $_GET['tab'] ) ) { $tab = sanitize_text_field( $_GET['tab'] ); } include_once WOO_ST_PATH . 'templates/admin/tabs.php'; } function woo_st_html_page() { global $wpdb; woo_st_template_header(); woo_st_support_donate(); $action = woo_get_action(); switch ( $action ) { case 'nuke': $message = __( 'The selected WooCommerce and/or WordPress details from the previous screen have been permanently erased from your store. <strong>Ta da!</strong>', 'woocommerce-store-toolkit' ); woo_st_admin_notice_html( $message ); woo_st_default_html_page(); break; default: woo_st_default_html_page(); break; } woo_st_template_footer(); } /* End of: WordPress Administration */ } else { /* Start of: Storefront */ function woo_st_init() { // Check if auto-complete Order Status is turned on $autocomplete_order = get_option( WOO_ST_PREFIX . '_autocomplete_order', 0 ); if ( $autocomplete_order == 1 ) { add_action( 'woocommerce_checkout_order_processed', 'woo_st_autocomplete_order_status', 10, 2 ); } return false; } add_action( 'init', 'woo_st_init' ); function woo_st_cron() { $action = ( function_exists( 'woo_get_action' ) ? woo_get_action() : false ); // This is where the CRON magic happens if ( $action <> 'woo_st-cron' ) { return; } // Check that Store Toolkit is installed and activated or jump out if ( ! function_exists( 'woo_st_get_option' ) ) { return; } // Return silent response and record to error log if CRON support is disabled, bad secret key provided or IP whitelist is in effect if ( woo_st_get_option( 'enable_cron', 0 ) == 0 ) { woo_st_error_log( sprintf( 'Error: %s', __( 'Failed CRON access, CRON is disabled', 'woocommerce-store-toolkit' ) ) ); return; } $key = ( isset( $_GET['key'] ) ? sanitize_text_field( $_GET['key'] ) : '' ); if ( $key <> woo_st_get_option( 'secret_key', '' ) ) { $ip_address = woo_st_get_visitor_ip_address(); woo_st_error_log( sprintf( 'Error: %s', sprintf( __( 'Failed CRON attempt from %s, incorrect secret key', 'woocommerce-store-toolkit' ), $ip_address ) ) ); return; } if ( $ip_whitelist = apply_filters( 'woo_st_cron_ip_whitelist', false ) ) { $ip_address = woo_st_get_visitor_ip_address(); if ( ! in_array( $ip_address, $ip_whitelist ) ) { woo_st_error_log( sprintf( 'Error: %s', sprintf( __( 'Failed CRON attempt from %s, did not match IP whitelist', 'woocommerce-store-toolkit' ), $ip_address ) ) ); return; } unset( $ip_whitelist ); } // Return simple binary response echo absint( woo_st_cron_nuke() ); exit(); } add_action( 'init', 'woo_st_cron' ); /* End of: Storefront */ }