<?php
// Run once after uploading this version to fix old channel order posts/buttons.
// URL: repair_channel_order_buttons.php?run=1
// Then delete this file from host.
declare(strict_types=1);
header('Content-Type: text/plain; charset=utf-8');
if(($_GET['run'] ?? '') !== '1'){
    echo "برای اجرا آدرس را با ?run=1 باز کن. بعد از اجرا این فایل را حذف کن.\n";
    exit;
}
$root = __DIR__;
chdir($root);
if(!is_file($root.'/config.php')){
    echo "خطا: config.php پیدا نشد. اول نصب را کامل کن.\n";
    exit;
}
include_once $root.'/config.php';
if(is_file($root.'/config_db.php')) include_once $root.'/config_db.php';
if(is_file($root.'/lib/db_storage.php')) include_once $root.'/lib/db_storage.php';
foreach([
    '/app/Bootstrap.php',
    '/lib/button_defaults.php',
    '/app/Support/TextFormatting.php',
    '/app/Services/TextSettingsService.php',
    '/app/Services/JsonCacheService.php',
    '/lib/class.php',
    '/app/Legacy/CoreApi.php',
    '/app/Legacy/MenuShopOrderHelpers.php',
] as $file){
    $path = $root.$file;
    if(is_file($path)) include_once $path;
}
if(!function_exists('bot') || !function_exists('bot_member_order_post_keyboard')){
    echo "خطا: فایل‌های اصلی ربات کامل لود نشدند.\n";
    exit;
}
if(function_exists('bot_seed_button_defaults')) bot_seed_button_defaults(true);
// Force clean visible labels for future posts too.
if(function_exists('bot_data_put_text')){
    bot_data_put_text('lib/Button/dokc2.txt', '💎 دریافت الماس 💎');
    bot_data_put_text('lib/Button/dokday.txt', '💎 الماس روزانه');
}else{
    @file_put_contents($root.'/lib/Button/dokc2.txt', '💎 دریافت الماس 💎', LOCK_EX);
    @file_put_contents($root.'/lib/Button/dokday.txt', '💎 الماس روزانه', LOCK_EX);
}
$files = function_exists('bot_data_scandir') ? bot_data_scandir('ads') : (is_dir($root.'/ads') ? scandir($root.'/ads') : []);
$checked = $fixed = $failed = $skipped = 0;
foreach((array)$files as $file){
    if(!preg_match('/^([A-Za-z0-9_\-]+)\.json$/', (string)$file, $m)) continue;
    $orderId = $m[1];
    $order = function_exists('bot_data_get_json') ? bot_data_get_json('ads/'.$file) : json_decode((string)@file_get_contents($root.'/ads/'.$file), true);
    if(!is_array($order) || empty($order)) { $skipped++; continue; }
    $status = (string)($order['stats'] ?? '');
    if(mb_strpos($status, 'تکمیل', 0, 'UTF-8') !== false || mb_strpos($status, 'لغو', 0, 'UTF-8') !== false || mb_strpos($status, 'حذف', 0, 'UTF-8') !== false){
        $skipped++;
        continue;
    }
    $messageId = (int)($order['postid'] ?? ($order['post_message_id'] ?? 0));
    if($messageId <= 0){ $skipped++; continue; }
    $memberCount = (int)($order['member'] ?? 0);
    if($memberCount <= 0) $memberCount = 0;
    $channel = trim((string)($order['channel'] ?? ''));
    $channel = trim($channel, "@ \t\n\r\0\x0B");
    $GLOBALS['__pending_order_channel_url'] = $channel !== '' ? 'https://t.me/'.$channel : 'https://t.me/';
    $markup = bot_member_order_post_keyboard($orderId, $memberCount);
    unset($GLOBALS['__pending_order_channel_url']);
    $chatId = (string)($order['post_chat_id'] ?? '');
    if($chatId === ''){
        $ch = trim((string)($GLOBALS['chads'] ?? ''));
        $chatId = $ch !== '' ? '@'.trim($ch, '@ ') : '';
    }
    if($chatId === ''){ $skipped++; continue; }
    $checked++;
    $res = bot('editMessageReplyMarkup', ['chat_id'=>$chatId, 'message_id'=>$messageId, 'reply_markup'=>$markup]);
    if(isset($res->ok) && $res->ok){
        $fixed++;
    }else{
        $failed++;
    }
}
foreach(glob($root.'/cache/*button*') ?: [] as $f){ if(is_file($f)) @unlink($f); }
foreach(glob($root.'/cache/*keyboard*') ?: [] as $f){ if(is_file($f)) @unlink($f); }
echo "OK\n";
echo "دکمه دریافت در سفارش‌های جدید از این به بعد: 💎 دریافت الماس 💎\n";
echo "پست‌های فعال بررسی‌شده: {$checked}\n";
echo "پست‌های اصلاح‌شده: {$fixed}\n";
echo "ناموفق: {$failed}\n";
echo "رد شده/غیرفعال/بدون پیام: {$skipped}\n";
echo "حالا این فایل را از هاست حذف کن.\n";
