<?php
// SQL 自动导入脚本
// 访问: http://domain.com/import-sql.php?key=import2024

if (!isset($_GET['key']) || $_GET['key'] !== 'import2024') {
    die('Access denied');
}

// 检测域名
$domain = $_SERVER['HTTP_HOST'];
$domain = str_replace('www.', '', $domain);

// 配置
$config = [
    'alonzopichardo.com' => [
        'db_host' => 'localhost',
        'db_user' => 'kimiclaw_alonzo',
        'db_pass' => 'AlonzoWP2024',
        'db_name' => 'kimiclaw_alonzo',
        'sql_file' => 'insert_articles_alonzopichardo_com.sql'
    ],
    'blueup.shop' => [
        'db_host' => 'localhost',
        'db_user' => 'kimiclaw_blueup',
        'db_pass' => 'BlueupWP2024',
        'db_name' => 'kimiclaw_blueup',
        'sql_file' => 'insert_articles_blueup_shop.sql'
    ],
    'dgbgtee.shop' => [
        'db_host' => 'localhost',
        'db_user' => 'kimiclaw_dgbgtee',
        'db_pass' => 'DgbgteeWP2024',
        'db_name' => 'kimiclaw_dgbgtee',
        'sql_file' => 'insert_articles_dgbgtee_shop.sql'
    ]
];

// 确定当前网站
$site_config = null;
foreach ($config as $d => $cfg) {
    if (strpos($domain, $d) !== false) {
        $site_config = $cfg;
        $site_config['domain'] = $d;
        break;
    }
}

if (!$site_config) {
    die("Error: Unknown domain ($domain)");
}

echo "<h1>SQL Import</h1>";
echo "<h2>Site: {$site_config['domain']}</h2>";
echo "<hr>";

// 连接数据库
$conn = new mysqli(
    $site_config['db_host'],
    $site_config['db_user'],
    $site_config['db_pass'],
    $site_config['db_name']
);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$conn->set_charset('utf8mb4');

// 读取 SQL 文件
$sql_file = dirname(__FILE__) . '/' . $site_config['sql_file'];

if (!file_exists($sql_file)) {
    die("Error: SQL file not found: $sql_file");
}

echo "<p>Reading SQL file: {$site_config['sql_file']}</p>";
$sql_content = file_get_contents($sql_file);

// 分割 SQL 语句
$statements = array_filter(
    array_map('trim', explode(';', $sql_content)),
    function($s) { return !empty($s); }
);

echo "<p>Found " . count($statements) . " SQL statements</p>";
echo "<hr>";

$success = 0;
$failed = 0;

foreach ($statements as $i => $sql) {
    if (empty($sql)) continue;
    
    if ($conn->query($sql)) {
        $success++;
        if ($success % 10 == 0) {
            echo "✅ Executed $success statements...<br>";
            flush();
        }
    } else {
        $failed++;
        if ($failed <= 5) {
            echo "❌ Error in statement " . ($i+1) . ": " . $conn->error . "<br>";
        }
    }
}

$conn->close();

echo "<hr>";
echo "<h2>✅ Import Complete!</h2>";
echo "<p>Success: <strong>$success</strong> statements</p>";
echo "<p>Failed: <strong>$failed</strong> statements</p>";
echo "<p><a href='/'>View Site</a> | <a href='/wp-admin/'>Admin</a></p>";
echo "<p style='color:#666;font-size:12px;'>You can now delete: import-sql.php and {$site_config['sql_file']}</p>";
?>
