Server IP : 66.29.132.124 / Your IP : 18.223.159.143 Web Server : LiteSpeed System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : wavevlvu ( 1524) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/wavevlvu/diixadigital.com/wp-content/plugins/tiktok-for-business/ |
Upload File : |
<?php if ( ! defined( 'ABSPATH' ) ) { die; } require_once __DIR__ . '/mapi/Tt4b_Mapi_Class.php'; require_once __DIR__ . '/logging/Logger.php'; require_once __DIR__ . '/catalog/Tt4b_Catalog_Class.php'; require_once __DIR__ . '/pixel/Tt4b_Pixel_Class.php'; require_once __DIR__ . '/admin/tts/common.php'; require_once __DIR__ . '/utils/TBPApi.php'; use Automattic\WooCommerce\Admin\Features\OnboardingTasks\TaskLists; /** * The plugin loader class */ class Tiktokforbusiness { /** * The version of TikTok for WooCommerce * * @var string[] */ private static $current_tiktok_for_woocommerce_version = '1.3.0'; /** * Whether WooCommerce has been loaded. * * @var bool */ private static $woocommerce_loaded = false; /** * The TT4B instance. */ private static $instance = null; /** * The constructor. */ private function __construct() { $this->initialize_hooks(); } /** * Initializes hooks. * * This should be hooked to the 'woocommerce_loaded' action. * * @return void */ public function initialize_hooks() { include_once __DIR__ . '/admin/tts/order_list.php'; include_once __DIR__ . '/admin/tts/order_detail.php'; include_once __DIR__ . '/admin/tt4b_menu.php'; include_once __DIR__ . '/pixel/tt4b_pixel.php'; $this->init(); } /** * Teardown all action scheduler tasks * * @return void */ private static function unschedule_scheduled_actions() { as_unschedule_all_actions( 'tt4b_catalog_sync' ); as_unschedule_all_actions( 'tt4b_catalog_sync_helper' ); as_unschedule_all_actions( 'tt4b_delete_products_helper' ); as_unschedule_all_actions( 'tt4b_variation_sync' ); as_unschedule_all_actions( 'tt4b_variation_sync_helper' ); as_unschedule_all_actions( 'tt4b_trust_signal_collection' ); as_unschedule_all_actions( 'tt4b_trust_signal_collection' ); } /** * Initialize most of the plugin logic. * * @return void */ private function init() { if ( get_option( 'tt4b_version' ) !== self::$current_tiktok_for_woocommerce_version ) { update_option( 'tt4b_version', self::$current_tiktok_for_woocommerce_version ); update_option( 'tt4b_last_product_sync_time', 1 ); } $logger = new Logger(); $mapi = new Tt4b_Mapi_Class( $logger ); $catalog = new Tt4b_Catalog_Class( $mapi, $logger ); $mapi->init(); $catalog->init(); // Hook the onboarding task. The hook admin_init is not triggered when the WC fetches the tasks using the endpoint: wp-json/wc-admin/onboarding/tasks and hence hooking into init. if ( did_action( 'woocommerce_loaded' ) > 0 ) { add_action( 'init', array( $this, 'add_onboarding_task' ), 20 ); self::$woocommerce_loaded = true; } add_filter( 'plugin_action_links_' . plugin_basename( $this->get_plugin_file() ), array( $this, 'plugin_action_links' ) ); } /** * Get the plugin file name. */ public function get_plugin_file() { $slug = dirname( plugin_basename( __FILE__ ) ); return trailingslashit( $slug ) . $slug . '.php'; } /** * Adds plugin action links. */ public function plugin_action_links( $actions ) { $custom_actions = array(); // settings url(s). $custom_actions['configure'] = $this->get_settings_link(); // add the links to the front of the actions list. return array_merge( $custom_actions, $actions ); } /** * Gets the configuration link to direct to the plugin set-up. */ public function get_settings_link() { $settings_url = get_admin_url() . 'admin.php?page=tiktok'; if ( $settings_url ) { return sprintf( '<a href="%s">%s</a>', $settings_url, esc_html__( 'Configure', 'tiktok-for-woocommerce' ) ); } // no settings. return ''; } /** * Adds the onboarding task to the Tasklists. * * @since x.x.x */ public function add_onboarding_task() { include_once __DIR__ . '/admin/Tasks/Onboarding.php'; if ( ! class_exists( TaskLists::class ) ) { // WC 5.9 backward compatibility. return; } TaskLists::add_task( 'extended', new Onboarding( TaskLists::get_list( 'extended' ) ) ); } /** * Deactivates plugin. * * @return void */ public static function tt_plugin_deactivate() { $external_business_id = get_option( 'tt4b_external_business_id' ); // delete scheduled TikTok-WooCommerce related actions if ( self::$woocommerce_loaded or did_action( 'woocommerce_loaded' ) > 0 ) { self::unschedule_scheduled_actions(); } $logger = new Logger(); $mapi = new Tt4b_Mapi_Class( $logger ); $external_data = get_option( 'tt4b_external_data' ); $params = array( 'business_platform' => 'WOO_COMMERCE', 'external_business_id' => $external_business_id, ); // call disconnect API $mapi->tbp_post( $external_data, 'business_profile/disconnect', 'v2.0', $params, TBPApi::TBP ); // delete tiktok credentials delete_option( 'tt4b_app_id' ); delete_option( 'tt4b_secret' ); delete_option( 'tt4b_access_token' ); delete_option( 'tt4b_external_data_key' ); delete_option( 'tt4b_user_country' ); // call tts disconnect $mapi->tts_shop_disconnect( $external_data ); delete_option( 'tt4b_external_data' ); delete_option( 'tt4b_eligibility_page_total' ); delete_option( 'tt4b_version' ); delete_option( 'tt4b_mapi_total_gmv' ); delete_option( 'tt4b_mapi_total_orders' ); delete_option( 'tt4b_mapi_tenure' ); delete_option( 'tt4b_should_send_s2s_events' ); delete_option( 'tt4b_product_delete_queue' ); delete_option( 'tt4b_product_restore_queue' ); delete_option( 'tt4b_last_product_sync_time' ); delete_option( 'tt4b_full_catalog_sync' ); delete_option( 'tt4b_last_full_sync_time' ); } /** * Generates app credentials. * * @return void */ public static function tt_plugin_activate() { $logger = new Logger(); $mapi = new Tt4b_Mapi_Class( $logger ); $external_business_id = get_option( 'tt4b_external_business_id' ); if ( false === $external_business_id ) { $external_business_id = uniqid( 'tt4b_woocommerce_' ); update_option( 'tt4b_external_business_id', $external_business_id ); } add_option( 'tt4b_eligibility_page_total', 0 ); add_option( 'tt4b_version', self::$current_tiktok_for_woocommerce_version ); add_option( 'tt4b_mapi_total_gmv', 0 ); add_option( 'tt4b_mapi_total_orders', 0 ); add_option( 'tt4b_mapi_tenure', 0 ); add_option( 'tt4b_product_delete_queue', array() ); add_option( 'tt4b_product_restore_queue', array() ); add_option( 'tt4b_last_product_sync_time', 1 ); $cleaned_redirect = preg_replace( '/[^A-Za-z0-9\-]/', '', admin_url() ); $smb_id = $external_business_id . $cleaned_redirect; $app_rsp = $mapi->create_open_source_app( $smb_id, 'PROD', admin_url() ); if ( false !== $app_rsp ) { $open_source_app_rsp = json_decode( $app_rsp, true ); $secret = $open_source_app_rsp['data']['app_secret']; $app_id = $open_source_app_rsp['data']['app_id']; $external_data_key = $open_source_app_rsp['data']['external_data_key']; update_option( 'tt4b_app_id', $app_id ); update_option( 'tt4b_secret', $secret ); update_option( 'tt4b_external_data_key', $external_data_key ); } } /** * Get the instance of the Tiktokforbusiness class. * * @return Tiktokforbusiness */ public static function tiktok_for_business_get_instance() { static $instance = null; if ( null === $instance ) { $instance = new Tiktokforbusiness(); } return $instance; } }