<?php
/**
 * ACL Profile Migration — ایجاد جدول acl_user_menu_access
 * آدرس: http://localhost/acc-engine/run-acl-migrate.php
 * پس از اجرای موفق حذف کنید.
 */
declare(strict_types=1);

require_once __DIR__ . '/standalone/config.php';

try {
    $pdo = new PDO(ACC_DB_DSN, ACC_DB_USER, ACC_DB_PASS, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    ]);
    $pdo->exec("SET NAMES utf8mb4");
} catch (Throwable $e) {
    die('❌ DB: ' . $e->getMessage());
}

$prefix  = ACC_DB_PREFIX;
$charset = 'ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci';
$table   = $prefix . 'acl_user_menu_access';
$results = [];

$exists = $pdo->query("SHOW TABLES LIKE '{$table}'")->fetch();
if ($exists) {
    $results[] = ['skip', 'جدول acl_user_menu_access از قبل وجود دارد'];
} else {
    try {
        $pdo->exec("CREATE TABLE `{$table}` (
            user_id    BIGINT UNSIGNED NOT NULL,
            menu_key   VARCHAR(100)    NOT NULL,
            granted_at DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP,
            PRIMARY KEY (user_id, menu_key),
            KEY idx_menu (menu_key)
        ) {$charset}");
        $results[] = ['ok', 'جدول acl_user_menu_access ایجاد شد'];
    } catch (Throwable $e) {
        $results[] = ['err', $e->getMessage()];
    }
}

// bump version
try {
    $opt = $prefix . 'options';
    $pdo->exec("INSERT INTO `{$opt}` (option_name, option_value, autoload)
        VALUES ('acc_engine_db_version', '16.1', 'yes')
        ON DUPLICATE KEY UPDATE option_value = '16.1'");
    $results[] = ['ok', 'نسخه DB به 16.1 به‌روز شد'];
} catch (Throwable $e) {
    $results[] = ['warn', 'نسخه DB: ' . $e->getMessage()];
}

?><!DOCTYPE html>
<html dir="rtl" lang="fa"><head><meta charset="utf-8"><title>ACL Migration</title>
<style>body{font-family:Tahoma;padding:24px;direction:rtl;background:#f8fafc;}
li{padding:8px 12px;margin:4px 0;border-radius:6px;list-style:none;font-size:14px;}
.ok{background:#dcfce7;color:#166534}.err{background:#fee2e2;color:#991b1b}
.skip{background:#e0f2fe;color:#075985}.warn{background:#fef9c3;color:#854d0e}</style></head>
<body><h2>Migration پروفایل دسترسی</h2><ul>
<?php foreach ($results as [$t,$m]): ?>
<li class="<?= htmlspecialchars($t) ?>"><?= $t==='ok'?'✅':($t==='skip'?'⏭️':($t==='warn'?'⚠️':'❌')) ?> <?= htmlspecialchars($m) ?></li>
<?php endforeach; ?>
</ul><p>✅ اکنون تب «پروفایل کاربر» در مدیریت دسترسی‌ها فعال است.</p></body></html>
