<?php
/**
 * 插件公共访问网关
 * 用于处理不需要登录的公共请求（支付页面、异步回调等）
 * URL格式: /plugin-public.php?p={插件slug}&a={动作}
 */

// DEBUG: 记录每次请求以定位404
error_log('[PluginPublic] HIT: ' . $_SERVER['REQUEST_URI'] . ' | GET=' . json_encode($_GET));

require __DIR__ . '/app/bootstrap.php';
require __DIR__ . '/app/database.php';

$pluginSlug = isset($_GET['p']) ? trim((string)$_GET['p']) : '';
$action = isset($_GET['a']) ? trim((string)$_GET['a']) : 'index';

error_log('[PluginPublic] slug=' . $pluginSlug . ' action=' . $action);

// 安全校验
if ($pluginSlug === '' || !preg_match('/^[a-zA-Z0-9_-]+$/', $pluginSlug)) {
    error_log('[PluginPublic] FAIL: invalid slug');
    http_response_code(400);
    exit('Invalid plugin');
}
if (!preg_match('/^[a-zA-Z0-9_-]+$/', $action)) {
    error_log('[PluginPublic] FAIL: invalid action');
    http_response_code(400);
    exit('Invalid action');
}

// 检查插件是否已启用
if (!plugin_is_enabled($pluginSlug)) {
    error_log('[PluginPublic] FAIL: plugin not enabled. Enabled list=' . json_encode(plugin_enabled_list()));
    http_response_code(404);
    exit('Plugin not available');
}

// 加载公共页面
$publicFile = PLUGINS_PATH . '/' . $pluginSlug . '/public/' . $action . '.php';
if (!is_file($publicFile)) {
    error_log('[PluginPublic] FAIL: file not found: ' . $publicFile);
    http_response_code(404);
    exit('Page not found');
}

error_log('[PluginPublic] OK: loading ' . $publicFile);

$pluginPath = PLUGINS_PATH . '/' . $pluginSlug;
$pluginConfig = plugin_get_config($pluginSlug);

// 确保插件入口已加载（函数可用）
$entryFile = PLUGINS_PATH . '/' . $pluginSlug . '/plugin.php';
if (is_file($entryFile)) {
    require_once $entryFile;
}

require $publicFile;
