<?php
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

/**
 * Pattern生成器 - HTML转Pattern功能
 * 
 * 功能说明：
 * 1. 在Gutenberg编辑器环境中加载必要的JavaScript资源和配置数据
 * 2. 提供AJAX接口处理HTML转Pattern的请求
 * 3. 接收前端提交的Pattern标题、HTML代码和CSS代码
 * 4. 验证并原样返回数据以确认流程通畅
 */

class PufferGo_Pattern_Generator {
    
    public function __construct() {
        // 注册AJAX动作处理器（仅限登录用户）
        add_action('wp_ajax_puffergo_b2b_create_pattern', array($this, 'handle_create_pattern'));
        
        // 注意：配置数据（nonce和ajaxUrl）现在在 ai-page-builder.php 的 enqueue_scripts 方法中
        // 通过 wp_localize_script 传递到前端的 window.puffergoPatternGenerator 全局变量
    }
    
    /**
     * 处理创建Pattern的AJAX请求
     * 
     * 执行流程：
     * 1. 验证nonce确保请求安全
     * 2. 获取并清理POST数据
     * 3. 验证必填字段
     * 4. 原样返回数据以确认流程
     */
    public function handle_create_pattern() {
        // 第一步：验证nonce，防止CSRF攻击
        // 这个nonce必须与前端发送的nonce匹配
        check_ajax_referer('puffergo_pattern_generator', '_ajax_nonce');
        
        // 第二步：从POST请求中获取并立即清理数据
        // sanitize_text_field() - 清理标题中的危险字符
        $title = isset($_POST['title']) ? sanitize_text_field( wp_unslash( $_POST['title'] ) ) : '';
        // wp_kses_post() - 允许HTML代码中的安全标签，移除危险脚本
        $html_code = isset($_POST['html_code']) ? wp_kses_post( wp_unslash( $_POST['html_code'] ) ) : '';
        // sanitize_textarea_field() - 清理CSS代码，保留换行符
        $css_code = isset($_POST['css_code']) ? sanitize_textarea_field( wp_unslash( $_POST['css_code'] ) ) : '';
        
        // 第四步：验证必填字段
        if (empty($title)) {
            wp_send_json_error(array(
                'message' => __('Pattern标题不能为空', 'puffergo')
            ), 400);
            return;
        }
        
        if (empty($html_code)) {
            wp_send_json_error(array(
                'message' => __('HTML代码不能为空', 'puffergo')
            ), 400);
            return;
        }
        
        // 第五步：组装响应数据
        // 在第一阶段，我们只是将处理后的数据原样返回
        // 这样可以验证整个流程是否通畅
        $response_data = array(
            'title' => $title,
            'html_code' => $html_code,
            'css_code' => $css_code,
            'timestamp' => current_time('mysql'), // 添加时间戳用于调试
            'user_id' => get_current_user_id() // 添加用户ID用于调试
        );
        
        // 第六步：发送成功响应
        // wp_send_json_success() 会自动设置正确的Content-Type头
        // 并将数据包装成 { success: true, data: {...} } 的格式
        wp_send_json_success($response_data);
    }
}

// 实例化类，激活所有钩子
new PufferGo_Pattern_Generator();

/**
 * 重要提示：
 * 
 * 需要在主插件文件 puffergo.php 中添加以下代码来引入此文件：
 * 
 * require_once __DIR__ . '/php/pattern-generator.php';
 * 
 * 建议添加位置：在 require_once __DIR__ . '/php/ai-page-builder.php'; 之后
 * 
 * 这样可以确保：
 * 1. Pattern生成器的钩子能够被正确注册
 * 2. AJAX动作处理器能够正常工作
 * 3. 编辑器资源能够正确加载
 */

