<?php require_once __DIR__.'/_layout.php'; web_require_perm('channels');

$channels = [
    'orders'=>['title'=>'کانال سفارشات','path'=>'lib/kodam/channel2.txt','hint'=>'کانالی که پست سفارش‌ها داخل آن ارسال می‌شود'],
    'gift'=>['title'=>'کانال کد هدیه','path'=>'lib/kodam/giftch.txt','hint'=>'کانال ارسال کد هدیه'],
    'ads'=>['title'=>'کانال تبلیغات','path'=>'lib/kodam/cht.txt','hint'=>'کانال تبلیغات/دریافت الماس'],
];

function web_channel_normalize($v){
    $v = trim((string)$v);
    if($v === '') return '';
    if(function_exists('normalize_bale_channel_username')){
        $n = normalize_bale_channel_username($v);
        if($n === '') return '';
        return preg_match('/^-?\d+$/', $n) ? $n : '@'.$n;
    }
    if(preg_match('/^-?\d+$/',$v)) return $v;
    $v = preg_replace('~^(https?://)?(www\.)?t\.me/~i','',$v);
    $v = ltrim($v, '@');
    return '@'.$v;
}
function web_channel_ref_for_storage($v){
    $v = web_channel_normalize($v);
    if($v === '') return '';
    return preg_match('/^-?\d+$/', $v) ? $v : ltrim($v, '@');
}
function web_channel_test($chat, $text){
    $chat = web_channel_normalize($chat);
    if($chat === '') return ['ok'=>false,'msg'=>'کانال تنظیم نشده است.'];
    $res = web_send_message($chat, $text);
    if(is_object($res) && !empty($res->ok)) return ['ok'=>true,'msg'=>'پیام تست ارسال شد.'];
    $desc = is_object($res) && isset($res->description) ? (string)$res->description : 'ارسال انجام نشد. ربات باید داخل کانال ادمین باشد.';
    return ['ok'=>false,'msg'=>$desc];
}

if($_SERVER['REQUEST_METHOD']==='POST'){
    web_check_csrf();
    $action=(string)($_POST['action'] ?? '');
    $key=(string)($_POST['key'] ?? '');

    if($action === 'forced_join_add'){
        $ref = web_channel_ref_for_storage($_POST['forced_join_channel'] ?? '');
        $title = trim((string)($_POST['forced_join_title'] ?? ''));
        if($ref === '' || (function_exists('is_valid_bale_channel_username') && !is_valid_bale_channel_username($ref))){
            web_flash('error','آیدی یا لینک چنل قفل نامعتبر است.');
        } elseif(function_exists('bale_channel_is_blocked') && bale_channel_is_blocked($ref)){
            web_flash('error','این چنل داخل مسدودی است و نمی‌تواند برای قفل عضویت استفاده شود.');
        } else {
            if(function_exists('bale_forced_join_channel_add')) bale_forced_join_channel_add($ref, $title, true);
            web_admin_log('web_forced_join_add','channel',$ref,'افزودن چنل قفل عضویت از پنل وب',['title'=>$title]);
            web_flash('success','چنل به قفل عضویت اجباری اضافه شد.');
        }
        web_redirect('channels.php');
    }
    if($action === 'forced_join_remove'){
        $ref = (string)($_POST['forced_join_ref'] ?? '');
        $ok = function_exists('bale_forced_join_channel_remove') ? bale_forced_join_channel_remove($ref) : false;
        web_admin_log('web_forced_join_remove','channel',$ref,'حذف چنل قفل عضویت از پنل وب',['ok'=>$ok]);
        web_flash($ok ? 'success' : 'error', $ok ? 'چنل قفل حذف شد.' : 'چنل قفل پیدا نشد.');
        web_redirect('channels.php');
    }
    if($action === 'forced_join_toggle'){
        $ref = (string)($_POST['forced_join_ref'] ?? '');
        $active = !empty($_POST['active']);
        $ok = function_exists('bale_forced_join_channel_set_active') ? bale_forced_join_channel_set_active($ref, $active) : false;
        web_admin_log('web_forced_join_toggle','channel',$ref,'تغییر وضعیت چنل قفل عضویت از پنل وب',['active'=>$active,'ok'=>$ok]);
        web_flash($ok ? 'success' : 'error', $ok ? 'وضعیت قفل تغییر کرد.' : 'چنل قفل پیدا نشد.');
        web_redirect('channels.php');
    }
    if($action === 'forced_join_clear_all'){
        if(function_exists('bot_data_put_json')) bot_data_put_json('lib/kodam/forced_join_channels.json', ['channels'=>[], 'updated_at'=>time()]);
        web_setting_put('lib/kodam/channel.txt','');
        web_setting_put('lib/kodam/channel2.txt','');
        web_admin_log('web_forced_join_clear_all','channel','forced_join','حذف همه قفل‌های عضویت از پنل وب');
        web_flash('success','همه قفل‌های عضویت حذف شدند.');
        web_redirect('channels.php');
    }
    if($action === 'block_add'){
        $ref = web_channel_ref_for_storage($_POST['block_channel'] ?? '');
        $reason = trim((string)($_POST['block_reason'] ?? ''));
        if($ref === '' || (function_exists('is_valid_bale_channel_username') && !is_valid_bale_channel_username($ref))){
            web_flash('error','آیدی یا لینک چنل مسدودی نامعتبر است.');
        } else {
            if(function_exists('bale_channel_block_add')) bale_channel_block_add($ref, $reason, (string)($_SESSION['admin_uid'] ?? 'web'));
            web_admin_log('web_channel_block_add','channel',$ref,'مسدودسازی چنل از پنل وب',['reason'=>$reason]);
            web_flash('success','چنل مسدود شد.');
        }
        web_redirect('channels.php');
    }
    if($action === 'block_remove'){
        $ref = (string)($_POST['block_key'] ?? '');
        $ok = function_exists('bale_channel_block_remove') ? bale_channel_block_remove($ref) : false;
        web_admin_log('web_channel_block_remove','channel',$ref,'رفع مسدودی چنل از پنل وب',['ok'=>$ok]);
        web_flash($ok ? 'success' : 'error', $ok ? 'مسدودی چنل برداشته شد.' : 'چنل داخل مسدودی پیدا نشد.');
        web_redirect('channels.php');
    }
    if($action === 'start_join_ad_save'){
        $enabled = !empty($_POST['start_join_ad_enabled']) ? '✅فعال' : '❌غیر فعال';
        $text = trim((string)($_POST['start_join_ad_text'] ?? ''));
        $buttonText = trim((string)($_POST['start_join_ad_button_text'] ?? ''));
        $buttonUrl = trim((string)($_POST['start_join_ad_button_url'] ?? ''));
        if($buttonUrl !== '' && function_exists('normalize_bale_channel_username') && !preg_match('~^(https?://|t\.me/)~i', $buttonUrl)){
            $buttonUrl = normalize_bale_channel_username($buttonUrl);
        }
        if($text === ''){
            web_flash('error','متن تبلیغ نمی‌تواند خالی باشد.');
        }else{
            if(function_exists('bot_start_join_ad_save')) bot_start_join_ad_save([
                'enabled'=>$enabled,
                'text'=>$text,
                'button_text'=>$buttonText,
                'button_url'=>$buttonUrl,
            ]);
            web_admin_log('web_start_join_ad_save','setting','start_join_ad','تنظیم تبلیغ بعد از جوین از پنل وب',['enabled'=>$enabled,'button_url'=>$buttonUrl]);
            web_flash('success','تبلیغ بعد از جوین ذخیره شد.');
        }
        web_redirect('channels.php');
    }
    if($action === 'start_join_ad_clear_seen'){
        if(function_exists('bot_start_join_ad_clear_seen')) bot_start_join_ad_clear_seen();
        web_admin_log('web_start_join_ad_clear_seen','setting','start_join_ad','نمایش دوباره تبلیغ بعد از جوین برای همه از پنل وب');
        web_flash('success','لیست دیده‌شده‌ها پاک شد؛ تبلیغ برای همه کاربران دوباره قابل نمایش است.');
        web_redirect('channels.php');
    }

    if(!isset($channels[$key])){ web_flash('error','کانال نامعتبر است.'); web_redirect('channels.php'); }
    $meta=$channels[$key];
    if($action==='save'){
        $val=web_channel_ref_for_storage($_POST['value'] ?? '');
        if($val !== '' && function_exists('bale_channel_is_blocked') && bale_channel_is_blocked($val)){
            web_flash('error','این چنل مسدود است و نمی‌تواند ذخیره شود.');
        } else {
            web_setting_put($meta['path'],$val);
            web_admin_log('web_channel_save','channel',$key,'تنظیم کانال از پنل وب',['channel'=>$val]);
            web_flash('success','کانال ذخیره شد.');
        }
    } elseif($action==='clear'){
        web_setting_put($meta['path'],'');
        web_admin_log('web_channel_clear','channel',$key,'حذف کانال از پنل وب');
        web_flash('success','کانال حذف شد.');
    } elseif($action==='test'){
        $val=web_setting_get($meta['path'],'');
        $r=web_channel_test($val,"✅ پیام تست پنل وب\nبخش: ".$meta['title']."\nزمان: ".date('Y-m-d H:i:s'));
        web_flash(!empty($r['ok'])?'success':'error',$r['msg']);
        web_admin_log('web_channel_test','channel',$key,'تست کانال از پنل وب',['ok'=>!empty($r['ok']),'message'=>$r['msg']]);
    }
    web_redirect('channels.php');
}
web_header('مدیریت کانال‌ها');
$forcedRows = function_exists('bale_forced_join_channels_load') ? bale_forced_join_channels_load(true) : [];
$blockedChannels = function_exists('bale_blocked_channels_load') ? bale_blocked_channels_load() : [];
$startJoinAd = function_exists('bot_start_join_ad_load') ? bot_start_join_ad_load() : [];
$startJoinAdSeen = function_exists('bot_start_join_ad_seen_load') ? bot_start_join_ad_seen_load() : [];
?>
<div class="panel"><p class="muted">اگر تست کانال خطا داد، اول مطمئن شو ربات داخل همان کانال ادمین است و اجازه ارسال/ویرایش پیام دارد.</p></div>

<div class="panel">
  <h3>📢 تبلیغ بعد از جوین اجباری</h3>
  <p class="muted">وقتی کاربر عضو کانال‌های قفل‌شده شد و دکمه «عضو شدم / بررسی مجدد» را زد، این باکس تبلیغ برایش نمایش داده می‌شود. برای هر کاربر تا وقتی تنظیمات تبلیغ را تغییر ندهی تکراری ارسال نمی‌شود.</p>
  <form method="post"><?php web_csrf_input(); ?><input type="hidden" name="action" value="start_join_ad_save">
    <label class="switch"><input type="checkbox" name="start_join_ad_enabled" value="1" <?= (($startJoinAd['enabled'] ?? '') === '✅فعال') ? 'checked' : '' ?>> فعال باشد</label>
    <div class="field"><label>متن تبلیغ</label><textarea name="start_join_ad_text" rows="5" placeholder="متن تبلیغ بعد از جوین"><?=web_h($startJoinAd['text'] ?? '')?></textarea></div>
    <div class="grid">
      <div class="field"><label>متن دکمه زیر تبلیغ</label><input name="start_join_ad_button_text" value="<?=web_h($startJoinAd['button_text'] ?? '')?>" placeholder="📢 ورود به کانال"></div>
      <div class="field"><label>لینک یا آیدی کانال دکمه</label><input class="ltr" name="start_join_ad_button_url" value="<?=web_h($startJoinAd['button_url'] ?? '')?>" placeholder="@channel یا https://t.me/channel"></div>
    </div>
    <button>ذخیره تبلیغ</button>
  </form>
  <form method="post" style="margin-top:10px" onsubmit="return confirm('تبلیغ برای همه کاربران دوباره قابل نمایش شود؟')"><?php web_csrf_input(); ?><input type="hidden" name="action" value="start_join_ad_clear_seen"><button class="secondary">♻️ نمایش دوباره برای همه</button></form>
  <div class="card small">وضعیت فعلی: <b><?= (($startJoinAd['enabled'] ?? '') === '✅فعال') ? '✅ فعال' : '❌ غیرفعال' ?></b> — تعداد دیده‌شده‌ها: <b><?=count($startJoinAdSeen)?></b></div>
</div>

<div class="panel">
  <h3>🔐 قفل عضویت اجباری چندکاناله</h3>
  <p class="muted">هر چنلی که اینجا فعال باشد، کاربر قبل از استفاده از ربات باید عضو آن باشد. می‌توانی چند چنل اضافه کنی، فعال/غیرفعال کنی یا حذف کنی.</p>
  <form method="post" class="grid"><?php web_csrf_input(); ?><input type="hidden" name="action" value="forced_join_add">
    <div class="field"><label>آیدی، لینک یا شناسه عددی چنل</label><input class="ltr" name="forced_join_channel" placeholder="@channel یا https://t.me/channel یا -100..."></div>
    <div class="field"><label>عنوان اختیاری</label><input name="forced_join_title" placeholder="مثلاً کانال اول / اسپانسر / قوانین"></div>
    <div><button>➕ افزودن چنل قفل</button></div>
  </form>
  <?php if(empty($forcedRows)): ?>
    <div class="card small">هنوز هیچ چنلی برای قفل عضویت اجباری ثبت نشده است.</div>
  <?php else: ?>
    <table><thead><tr><th>چنل</th><th>عنوان</th><th>وضعیت</th><th>عملیات</th></tr></thead><tbody>
    <?php foreach($forcedRows as $row): $ref = $row['ref'] ?? $row['key']; $active = !empty($row['active']); ?>
      <tr>
        <td><code><?=web_h(function_exists('bale_channel_display_name') ? bale_channel_display_name($ref) : $ref)?></code></td>
        <td><?=web_h($row['title'] ?? '')?></td>
        <td><?= $active ? '✅ فعال' : '⏸ غیرفعال' ?></td>
        <td class="row">
          <form method="post" style="margin:0"><?php web_csrf_input(); ?><input type="hidden" name="action" value="forced_join_toggle"><input type="hidden" name="forced_join_ref" value="<?=web_h($ref)?>"><input type="hidden" name="active" value="<?=$active ? '0' : '1'?>"><button class="secondary"><?=$active ? 'غیرفعال کن' : 'فعال کن'?></button></form>
          <form method="post" style="margin:0" onsubmit="return confirm('این قفل حذف شود؟')"><?php web_csrf_input(); ?><input type="hidden" name="action" value="forced_join_remove"><input type="hidden" name="forced_join_ref" value="<?=web_h($ref)?>"><button class="danger">حذف</button></form>
        </td>
      </tr>
    <?php endforeach; ?>
    </tbody></table>
    <form method="post" style="margin-top:12px" onsubmit="return confirm('همه قفل‌های جوین حذف شوند؟')"><?php web_csrf_input(); ?><input type="hidden" name="action" value="forced_join_clear_all"><button class="danger">🗑 حذف همه قفل‌های جوین</button></form>
  <?php endif; ?>
</div>

<div class="panel">
  <h3>مسدودسازی چنل</h3>
  <p class="muted">هر چنلی که اینجا مسدود شود، کاربران دیگر نمی‌توانند برای آن سفارش ثبت کنند، دریافت الماس از سفارش‌های آن بسته می‌شود، و نمی‌توان آن را به‌عنوان قفل عضویت ذخیره کرد.</p>
  <form method="post" class="grid"><?php web_csrf_input(); ?><input type="hidden" name="action" value="block_add">
    <div class="field"><label>آیدی یا لینک چنل</label><input class="ltr" name="block_channel" placeholder="@channel یا https://t.me/channel یا -100..."></div>
    <div class="field"><label>دلیل اختیاری</label><input name="block_reason" placeholder="مثلاً تخلف، اسپم، کانال نامعتبر"></div>
    <div><button class="danger">مسدود کن</button></div>
  </form>
  <?php if(empty($blockedChannels)): ?>
    <div class="card small">هنوز چنلی مسدود نشده است.</div>
  <?php else: ?>
    <table><thead><tr><th>چنل</th><th>دلیل</th><th>عملیات</th></tr></thead><tbody>
    <?php foreach($blockedChannels as $b): $ref = $b['ref'] ?? $b['key']; ?>
      <tr>
        <td><code><?=web_h(function_exists('bale_channel_display_name') ? bale_channel_display_name($ref) : $ref)?></code></td>
        <td><?=web_h($b['reason'] ?? '')?></td>
        <td><form method="post" style="margin:0"><?php web_csrf_input(); ?><input type="hidden" name="action" value="block_remove"><input type="hidden" name="block_key" value="<?=web_h($ref)?>"><button class="secondary">رفع مسدودی</button></form></td>
      </tr>
    <?php endforeach; ?>
    </tbody></table>
  <?php endif; ?>
</div>

<div class="grid">
<?php foreach($channels as $key=>$meta): $val=web_setting_get($meta['path'],''); ?>
  <div class="panel">
    <h3><?=web_h($meta['title'])?></h3>
    <form method="post"><?php web_csrf_input(); ?><input type="hidden" name="action" value="save"><input type="hidden" name="key" value="<?=web_h($key)?>">
      <div class="field"><label><?=web_h($meta['hint'])?></label><input class="ltr" name="value" value="<?=web_h($val)?>" placeholder="@channel"></div>
      <button>ذخیره</button>
    </form>
    <form method="post" class="row" style="margin-top:10px"><?php web_csrf_input(); ?><input type="hidden" name="key" value="<?=web_h($key)?>"><button class="secondary" name="action" value="test">ارسال پیام تست</button><button class="danger" name="action" value="clear" onclick="return confirm('کانال حذف شود؟')">حذف کانال</button></form>
    <div class="card small">مقدار فعلی: <code><?=web_h($val ?: 'تنظیم نشده')?></code></div>
  </div>
<?php endforeach; ?>
</div>
<?php web_footer();
