admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('aipa_cart_nonce'), 'analyzing_text' => __('Analyzing...', 'ai-product-assistant'), 'analysis_placeholder' => $cart_analysis_placeholder, 'analysis_button' => $cart_analysis_button_text, 'cart_analysis_title' => $cart_analysis_title, 'cart_analysis_description' => $cart_analysis_description, 'error_message' => __('Something went wrong. Please try again.', 'ai-product-assistant'), 'empty_query_message' => __('Please enter an analysis question.', 'ai-product-assistant'), 'empty_cart_message' => __('Your cart is empty. Add some products first.', 'ai-product-assistant'), 'aipa_service_error_message' => __('Sorry, AI feature is temporarily unavailable. Please try again later.', 'ai-product-assistant'), 'login_url' => function_exists('wc_get_page_permalink') ? wc_get_page_permalink('myaccount') : wp_login_url(get_permalink()), 'login_text' => __('Log in here', 'ai-product-assistant'), )); // Add custom CSS for cart analysis if set $cart_analysis_css = isset($options['cart_analysis_css']) ? $options['cart_analysis_css'] : ''; if (!empty($cart_analysis_css)) { wp_add_inline_style('aipa-cart-css', '.aipa-cart-analysis, .aipa-shortcode-cart-analysis {' . esc_html($cart_analysis_css) . '}'); } } } /** * Add cart analysis form to WooCommerce cart page */ public function add_cart_analysis_form() { // Only show if cart is not empty if (WC()->cart->is_empty()) { return; } // Get options for customization $options = get_option('aipa_settings'); // Default text values $cart_analysis_title = isset($options['cart_analysis_title']) ? $options['cart_analysis_title'] : __('AI Cart Analysis', 'ai-product-assistant'); $cart_analysis_description = isset($options['cart_analysis_description']) ? $options['cart_analysis_description'] : __('Ask AI if your cart items will work for your specific needs.', 'ai-product-assistant'); $cart_analysis_placeholder = isset($options['cart_analysis_placeholder']) ? $options['cart_analysis_placeholder'] : __('e.g., Can I make a basic home theater with these items?', 'ai-product-assistant'); $cart_analysis_button_text = isset($options['cart_analysis_button_text']) ? $options['cart_analysis_button_text'] : __('Analyze with AI', 'ai-product-assistant'); ?>

__('Please log in to use AI cart analysis feature.', 'ai-product-assistant'), 'code' => 'auth_required' )); } $query = isset($_POST['query']) ? sanitize_text_field(wp_unslash($_POST['query'])) : ''; AIPA_Debug::log(AIPA_Debug::LEVEL_INFO, 'Cart_Analysis', 'AJAX cart analysis request received', array('query_length' => strlen($query))); if (empty($query)) { AIPA_Debug::log(AIPA_Debug::LEVEL_WARNING, 'Cart_Analysis', 'Empty query provided'); wp_send_json_error(array( 'message' => __('Please enter an analysis question.', 'ai-product-assistant') )); } if (!function_exists('WC') || !isset(WC()->cart) || WC()->cart->is_empty()) { AIPA_Debug::log(AIPA_Debug::LEVEL_WARNING, 'Cart_Analysis', 'Cart is empty or WooCommerce not available'); wp_send_json_error(array( 'message' => __('Your cart is empty. Add some products first.', 'ai-product-assistant') )); } // Make an internal request to the REST API $request = new WP_REST_Request('POST', '/aipa/v1/cart-analysis'); $request->set_param('query', $query); $response = rest_do_request($request); if (is_wp_error($response)) { wp_send_json_error(array( 'message' => $response->get_error_message(), 'code' => $response->get_error_code() )); } $data = $response->get_data(); // Check if the response contains error information (from wp_send_json_error) if (isset($data['code']) && isset($data['message'])) { wp_send_json_error(array( 'message' => $data['message'], 'code' => $data['code'] )); return; } if (empty($data) || !isset($data['analysis'])) { wp_send_json_error(array( 'message' => __('Unable to analyze your cart. Please try again.', 'ai-product-assistant') )); } // Generate the HTML for the analysis results $html = $this->get_analysis_html($data); wp_send_json_success(array( 'html' => $html )); } /** * Generate HTML for analysis results */ private function get_analysis_html($data) { $output = ''; if (empty($data)) { return $output; } // Main analysis $output .= '
'; $output .= '

' . __('Analysis Result', 'ai-product-assistant') . '

'; $output .= '

' . esc_html($data['analysis']) . '

'; $output .= '
'; // Result summary $output .= '
'; // Compatibility status $is_complete = isset($data['is_complete']) ? $data['is_complete'] : false; $status_class = $is_complete ? 'complete' : 'incomplete'; $output .= '
'; $output .= '' . ($is_complete ? '✅' : '⚠️') . ''; $output .= ''; $output .= $is_complete ? __('Your cart contains everything needed!', 'ai-product-assistant') : __('Your cart needs some adjustments.', 'ai-product-assistant'); $output .= ''; $output .= '
'; // Missing items if (!$is_complete && isset($data['missing_items']) && !empty($data['missing_items'])) { $output .= '
'; $output .= '
' . __('Missing Items', 'ai-product-assistant') . '
'; $output .= ''; $output .= '
'; } // Compatibility issues if (isset($data['compatibility_issues']) && !empty($data['compatibility_issues'])) { $output .= '
'; $output .= '
' . __('Compatibility Issues', 'ai-product-assistant') . '
'; $output .= ''; $output .= '
'; } // Recommendations if (isset($data['recommendations']) && !empty($data['recommendations'])) { $output .= '
'; $output .= '
' . __('Recommendations', 'ai-product-assistant') . '
'; $output .= ''; $output .= '
'; } $output .= '
'; // End analysis summary return $output; } }