<?php
/*
dev: https://factweb.ir
channel telegram : @factwebir
*/
error_reporting(0);
include "config.php";
define('API_KEY', $API_KC);
//-----------------------------------------------------------------------------------------------

// بررسی اتصال به دیتابیس
if ($connect->connect_error) {
    die("<b>خطا در اتصال به دیتابیس:</b> " . $connect->connect_error);
}

// بررسی وجود جدول user
$tableCheckResult = $connect->query("SHOW TABLES LIKE 'user'");
if ($tableCheckResult->num_rows == 0) {
    die("<b>خطا:</b> جدول user وجود ندارد!");
}

// تهیه پشتیبان از جدول فعلی
$currentDate = date("Ymd_His");
$backupTableName = "user_backup_" . $currentDate;
$connect->query("CREATE TABLE IF NOT EXISTS $backupTableName LIKE user");
$connect->query("INSERT INTO $backupTableName SELECT * FROM user");
echo "<b>پشتیبان گیری انجام شد:</b> $backupTableName<br><br>";

// شمارش تعداد کاربران قبل از به‌روزرسانی
$userCountBefore = $connect->query("SELECT COUNT(*) as total FROM user")->fetch_assoc()['total'];
echo "<b>تعداد کاربران قبل از به‌روزرسانی:</b> $userCountBefore<br><br>";

// لیست فیلدهای مجاز
$allowedColumns = ['id', 'step', 'step2', 'step3', 'spam', 'name', 'chat_history', 'balance', 'request', 'members', 'invited'];

// بررسی فیلدهای موجود در جدول
$columnsResult = $connect->query("SHOW COLUMNS FROM user");
$existingColumns = [];
while ($column = $columnsResult->fetch_assoc()) {
    $existingColumns[] = $column['Field'];
}

// حذف فیلدهای اضافی
echo "<b>حذف فیلدهای اضافی:</b><br>";
$columnsToRemove = array_diff($existingColumns, $allowedColumns);
if (count($columnsToRemove) > 0) {
    foreach ($columnsToRemove as $column) {
        $connect->query("ALTER TABLE user DROP COLUMN `$column`");
        echo "- ستون <b>$column</b> حذف شد<br>";
    }
} else {
    echo "- هیچ ستون اضافی برای حذف وجود ندارد<br>";
}

// اضافه کردن فیلدهای مورد نیاز اگر وجود نداشته باشند
echo "<br><b>اضافه کردن فیلدهای مورد نیاز:</b><br>";
$columnsToAdd = array_diff($allowedColumns, $existingColumns);
foreach ($columnsToAdd as $column) {
    switch ($column) {
        case 'id':
            $connect->query("ALTER TABLE user ADD COLUMN `id` bigint(64) NOT NULL");
            echo "- ستون <b>id</b> اضافه شد<br>";
            break;
        case 'step':
            $connect->query("ALTER TABLE user ADD COLUMN `step` text NOT NULL");
            echo "- ستون <b>step</b> اضافه شد<br>";
            break;
        case 'step2':
            $connect->query("ALTER TABLE user ADD COLUMN `step2` text NOT NULL");
            echo "- ستون <b>step2</b> اضافه شد<br>";
            break;
        case 'step3':
            $connect->query("ALTER TABLE user ADD COLUMN `step3` text NOT NULL");
            echo "- ستون <b>step3</b> اضافه شد<br>";
            break;
        case 'spam':
            $connect->query("ALTER TABLE user ADD COLUMN `spam` varchar(20) NOT NULL");
            echo "- ستون <b>spam</b> اضافه شد<br>";
            break;
        case 'name':
            $connect->query("ALTER TABLE user ADD COLUMN `name` varchar(150) DEFAULT NULL");
            echo "- ستون <b>name</b> اضافه شد<br>";
            break;
        case 'chat_history':
            $connect->query("ALTER TABLE user ADD COLUMN `chat_history` text DEFAULT NULL");
            echo "- ستون <b>chat_history</b> اضافه شد<br>";
            break;
        case 'balance':
            $connect->query("ALTER TABLE user ADD COLUMN `balance` int(20) DEFAULT NULL");
            echo "- ستون <b>balance</b> اضافه شد<br>";
            break;
        case 'request':
            $connect->query("ALTER TABLE user ADD COLUMN `request` int(20) DEFAULT NULL");
            echo "- ستون <b>request</b> اضافه شد<br>";
            break;
        case 'members':
            $connect->query("ALTER TABLE user ADD COLUMN `members` int(20) DEFAULT NULL");
            echo "- ستون <b>members</b> اضافه شد<br>";
            break;
        case 'invited':
            $connect->query("ALTER TABLE user ADD COLUMN `invited` tinyint(4) DEFAULT 0");
            echo "- ستون <b>invited</b> اضافه شد<br>";
            break;
    }
}

// به‌روزرسانی مقادیر پیش‌فرض
echo "<br><b>به‌روزرسانی اطلاعات کاربران:</b><br>";

// تنظیم balance همه کاربران به 500
$connect->query("UPDATE user SET balance = 500");
echo "- مقدار <b>balance</b> برای همه کاربران به 500 تنظیم شد<br>";
// تنظیم balance همه کاربران به 500
$connect->query("UPDATE user SET request = 0");

// انتقال مقدار requests به request اگر وجود داشته باشد
if (in_array('requests', $existingColumns)) {
    $connect->query("UPDATE user SET request = requests WHERE requests IS NOT NULL");
    echo "- مقادیر <b>requests</b> به <b>request</b> منتقل شد<br>";
}

// تنظیم step3 به 'none'
$connect->query("UPDATE user SET step3 = 'none'");
echo "- مقدار <b>step3</b> برای همه کاربران به 'none' تنظیم شد<br>";

// تنظیم chat_history به '[]'
$connect->query("UPDATE user SET chat_history = '[]'");
echo "- مقدار <b>chat_history</b> برای همه کاربران به '[]' تنظیم شد<br>";

// تنظیم مقادیر پیش‌فرض برای فیلدهای احتمالی دیگر
$connect->query("UPDATE user SET spam = '' WHERE spam = ''");
echo "- مقدار <b>spam</b> برای کاربران خالی به مقدار خالی تنظیم شد<br>";

// آپدیت ساختار جدول با ساختار جدید
$connect->query("ALTER TABLE user MODIFY COLUMN `id` bigint(64) NOT NULL, 
                ADD PRIMARY KEY (`id`) ON DUPLICATE KEY UPDATE `id` = `id`");
echo "- ساختار جدول با اضافه کردن کلید اصلی <b>id</b> به‌روزرسانی شد<br>";

// شمارش تعداد رکوردهای به‌روزرسانی شده
$updatedRows = $connect->affected_rows;
echo "<br><b>تعداد رکوردهای به‌روزرسانی شده:</b> $updatedRows<br>";

// نمایش چند نمونه از رکوردهای به‌روزرسانی شده
$sampleUsers = $connect->query("SELECT id, step, step2, step3, spam, name, chat_history, balance, request, members, invited FROM user LIMIT 5");
if ($sampleUsers->num_rows > 0) {
    echo "<br><b>نمونه‌هایی از رکوردهای به‌روزرسانی شده:</b><br>";
    echo "<pre>+------------+---------+---------+------+---------------+<br>";
    echo "| id         | balance | request | step3| chat_history  |<br>";
    echo "+------------+---------+---------+------+---------------+<br>";
    while ($user = $sampleUsers->fetch_assoc()) {
        printf("| %-10s | %-7s | %-7s | %-4s | %-13s |<br>", 
            $user['id'], 
            $user['balance'], 
            $user['request'] ?: '0', 
            $user['step3'], 
            $user['chat_history']
        );
    }
    echo "+------------+---------+---------+------+---------------+</pre>";
}

echo "<br><b>به‌روزرسانی داده‌های جدول user با موفقیت انجام شد.</b><br>";