<?php
/**
 * PufferGo Admin Loader - 后台模块加载器
 *
 * 统一管理所有仅后台需要的模块加载
 * 这些模块不会在前台请求时加载，以提升前台性能
 *
 * @package PufferGo_Core
 * @since 1.0.0
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

/**
 * 后台模块加载器类
 */
class PufferGo_Admin_Loader {

    /**
     * 插件目录路径
     *
     * @var string
     */
    private $plugin_dir;

    /**
     * 单例实例
     *
     * @var PufferGo_Admin_Loader|null
     */
    private static $instance = null;

    /**
     * 获取单例实例
     *
     * @param string $plugin_dir 插件目录路径
     * @return PufferGo_Admin_Loader
     */
    public static function get_instance( $plugin_dir = '' ) {
        if ( self::$instance === null ) {
            self::$instance = new self( $plugin_dir );
        }
        return self::$instance;
    }

    /**
     * 构造函数
     *
     * @param string $plugin_dir 插件目录路径
     */
    private function __construct( $plugin_dir ) {
        $this->plugin_dir = $plugin_dir;
        $this->init();
    }

    /**
     * 初始化后台模块
     */
    private function init() {

        // 加载 Dashboard 页面
        require_once $this->plugin_dir . '/php/dashboard.php';

        // 加载设置页面
        require_once $this->plugin_dir . '/php/settings.php';

        // 停用调查（插件列表页弹窗收集卸载原因）
        require_once $this->plugin_dir . '/php/class-deactivation-survey.php';

        // PufferGo 页面统一拦截第三方后台 notice
        require_once $this->plugin_dir . '/php/class-admin-notice-guard.php';
        PufferGo_Admin_Notice_Guard::init();

        // 站点信息（商业资料）页面：REST 路由已在主插件文件中注册，此处仅加载后台菜单与脚本（PufferGo_Site_Profile 已在外层实例化）
        // AI 页面构建器和 AI 整站构建器现在在主插件文件中实例化（REST API始终可用，后台资源按需加载）

        // 加载 Pattern 生成器（HTML 转 Pattern 功能）
        require_once $this->plugin_dir . '/php/pattern-generator.php';
        // Pattern 生成器会在文件内部自动实例化

        // Design Library 现在在主插件文件中加载（REST API需要前后台都可用）

        // 后台菜单集中注册（见 class-puffergo-admin-menu.php 内资源清单）
        require_once $this->plugin_dir . '/php/class-puffergo-admin-menu.php';
        add_action( 'admin_menu', array( 'PufferGo_Admin_Menu', 'register_menus' ), 9 );

        // 加载后台 Tailwind CSS
        add_action( 'admin_enqueue_scripts', array( $this, 'load_admin_tailwind' ), 9 );

    }

    /**
     * 统一在管理后台加载 Tailwind CSS
     */
    public function load_admin_tailwind() {
        $screen = get_current_screen();
        if ( ! $screen ) {
            return;
        }

        // 判断是否是插件相关的页面
        $is_plugin_page = (
            $screen->id === 'puffergo_page_puffergo-ai-site-builder' ||
            $screen->id === 'puffergo_page_puffergo-settings' ||
            $screen->id === 'puffergo_page_puffergo-site-profile' ||
            in_array( $screen->base, array( 'post', 'post-new' ), true ) ||
            strpos( $screen->id, 'puffergo' ) !== false
        );

        if ( ! $is_plugin_page ) {
            return;
        }

        $plugin_url      = plugin_dir_url( $this->plugin_dir . '/puffergo.php' );
        $tailwind_css_file = $this->plugin_dir . '/build/blocks/ai-admin-app/index.css';

        if ( file_exists( $tailwind_css_file ) ) {
            wp_enqueue_style(
                'puffergo-admin-tailwind',
                $plugin_url . 'build/blocks/ai-admin-app/index.css',
                array(),
                filemtime( $tailwind_css_file )
            );
        }
    }

}
