ocommerce_load_cart_from_session' ) && function_exists( 'wc_load_cart' ) ) { WC()->call_function( 'wc_load_cart' ); } } /** * Check if WooCommerce session is available. * * @return bool True if session is available. */ private function is_session_available(): bool { $this->ensure_cart_loaded(); return WC()->session instanceof \WC_Session; } /** * Get a unique identifier for the current session. * * @return string Session identifier. */ public function get_session_id(): string { if ( ! $this->is_session_available() ) { return 'no-session'; } // Use or generate a stable session ID for tracking consistency. $fraud_customer_session_id = WC()->session->get( '_fraud_protection_customer_session_id' ); if ( ! $fraud_customer_session_id ) { $fraud_customer_session_id = WC()->call_function( 'wc_rand_hash', 'customer_', 30 ); WC()->session->set( '_fraud_protection_customer_session_id', $fraud_customer_session_id ); } return $fraud_customer_session_id; } /** * Empty the cart. * * @return void */ private function empty_cart(): void { if ( function_exists( 'WC' ) && WC()->cart ) { WC()->cart->empty_cart(); } } /** * Log a session update event using FraudProtectionController's logging helper. * * @param string $action The action taken (allowed, challenged, or blocked). * @return void */ private function log_session_update_event( string $action ): void { $session_id = $this->get_session_id(); $user_id = get_current_user_id(); $user_info = $user_id ? "User: {$user_id}" : 'User: guest'; $timestamp = current_time( 'mysql' ); $message = sprintf( 'Session updated: %s | %s | Action: %s | Timestamp: %s', $session_id, $user_info, $action, $timestamp ); FraudProtectionController::log( 'info', $message ); } }
Fatal error: Uncaught Automattic\WooCommerce\Internal\DependencyManagement\ContainerException: Attempt to get an instance of class 'Automattic\WooCommerce\Internal\FraudProtection\SessionClearanceManager', which doesn't exist. in /htdocs/wp-content/plugins/woocommerce/src/Internal/DependencyManagement/RuntimeContainer.php:105 Stack trace: #0 /htdocs/wp-content/plugins/woocommerce/src/Internal/DependencyManagement/RuntimeContainer.php(185): Automattic\WooCommerce\Internal\DependencyManagement\RuntimeContainer->get_core('Automattic\\WooC...', Array) #1 [internal function]: Automattic\WooCommerce\Internal\DependencyManagement\RuntimeContainer->Automattic\WooCommerce\Internal\DependencyManagement\{closure}(Object(ReflectionParameter)) #2 /htdocs/wp-content/plugins/woocommerce/src/Internal/DependencyManagement/RuntimeContainer.php(173): array_map(Object(Closure), Array) #3 /htdocs/wp-content/plugins/woocommerce/src/Internal/DependencyManagement/RuntimeContainer.php(119): Automattic\WooCommerce\Internal\DependencyManagement\RuntimeContainer->instantiate_class_using_reflection('Automattic\\WooC...', Array) #4 /htdocs/wp-content/plugins/woocommerce/src/Internal/DependencyManagement/RuntimeContainer.php(185): Automattic\WooCommerce\Internal\DependencyManagement\RuntimeContainer->get_core('Automattic\\WooC...', Array) #5 [internal function]: Automattic\WooCommerce\Internal\DependencyManagement\RuntimeContainer->Automattic\WooCommerce\Internal\DependencyManagement\{closure}(Object(ReflectionParameter)) #6 /htdocs/wp-content/plugins/woocommerce/src/Internal/DependencyManagement/RuntimeContainer.php(173): array_map(Object(Closure), Array) #7 /htdocs/wp-content/plugins/woocommerce/src/Internal/DependencyManagement/RuntimeContainer.php(119): Automattic\WooCommerce\Internal\DependencyManagement\RuntimeContainer->instantiate_class_using_reflection('Automattic\\WooC...', Array) #8 /htdocs/wp-content/plugins/woocommerce/src/Internal/DependencyManagement/RuntimeContainer.php(78): Automattic\WooCommerce\Internal\DependencyManagement\RuntimeContainer->get_core('Automattic\\WooC...', Array) #9 /htdocs/wp-content/plugins/woocommerce/src/Container.php(68): Automattic\WooCommerce\Internal\DependencyManagement\RuntimeContainer->get('Automattic\\WooC...') #10 /htdocs/wp-content/plugins/woocommerce/includes/class-woocommerce.php(377): Automattic\WooCommerce\Container->get('Automattic\\WooC...') #11 /htdocs/wp-content/plugins/woocommerce/includes/class-woocommerce.php(256): WooCommerce->init_hooks() #12 /htdocs/wp-content/plugins/woocommerce/includes/class-woocommerce.php(163): WooCommerce->__construct() #13 /htdocs/wp-content/plugins/woocommerce/woocommerce.php(47): WooCommerce::instance() #14 /htdocs/wp-content/plugins/woocommerce/woocommerce.php(62): WC() #15 /htdocs/wp-settings.php(545): include_once('/htdocs/wp-cont...') #16 /htdocs/wp-config.php(98): require_once('/htdocs/wp-sett...') #17 /htdocs/wp-load.php(50): require_once('/htdocs/wp-conf...') #18 /htdocs/wp-blog-header.php(13): require_once('/htdocs/wp-load...') #19 /htdocs/index.php(17): require('/htdocs/wp-blog...') #20 {main} thrown in /htdocs/wp-content/plugins/woocommerce/src/Internal/DependencyManagement/RuntimeContainer.php on line 105