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

$channelButtonMap = function_exists('bot_channel_button_map') ? bot_channel_button_map() : [
    'DOKC0' => ['title'=>'دکمه عنوان سفارش / تعداد ممبر', 'path'=>'lib/Button/dokc0.txt', 'default'=>'👤 سفارش /ozv/ ممبر 👤'],
    'DOKC1' => ['title'=>'دکمه عضویت در کانال', 'path'=>'lib/Button/dokc1.txt', 'default'=>'👥عضویت👥'],
    'DOKC2' => ['title'=>'دکمه جمع‌آوری / دریافت الماس', 'path'=>'lib/Button/dokc2.txt', 'default'=>'💎 دریافت الماس 💎'],
    'DOKC3' => ['title'=>'دکمه گزارش تخلف', 'path'=>'lib/Button/dokc3.txt', 'default'=>'تخلف🚫'],
    'DOKC4' => ['title'=>'دکمه ورود به ربات', 'path'=>'lib/Button/dokc4.txt', 'default'=>'🔙 ربات'],
];

function web_channel_buttons_label($token, $map){
    $token = strtoupper(trim((string)$token));
    if(function_exists('bot_channel_button_label')) return bot_channel_button_label($token);
    if(!isset($map[$token])) return $token;
    $path = $map[$token]['path'];
    $default = $map[$token]['default'] ?? $map[$token]['title'];
    return trim((string)web_setting_get($path, $default));
}

function web_channel_buttons_preview_label($token, $label){
    $token = strtoupper(trim((string)$token));
    $label = trim((string)$label);
    if($label === '') $label = $token;
    $style = function_exists('bot_channel_button_style') ? bot_channel_button_style($token) : '';
    if(function_exists('bot_channel_button_style_marker')){
        $marker = bot_channel_button_style_marker($style);
        if($marker !== '') return $marker . ' ' . preg_replace('/^(🔵|🟢|🔴)\s*/u', '', $label);
    }
    return $label;
}

function web_channel_buttons_current_layout_positions($tokens){
    $rows = function_exists('bot_channel_button_layout') ? bot_channel_button_layout(2) : [['DOKC0'],['DOKC1'],['DOKC2','DOKC3'],['DOKC4']];
    $out = [];
    foreach($rows as $rIndex=>$row){
        foreach((array)$row as $pIndex=>$token){
            $token = strtoupper(trim((string)$token));
            $out[$token] = ['row'=>$rIndex+1, 'pos'=>$pIndex+1];
        }
    }
    foreach((array)$tokens as $token){
        $token = strtoupper(trim((string)$token));
        if(!isset($out[$token])) $out[$token] = ['row'=>9, 'pos'=>9];
    }
    return $out;
}

if($_SERVER['REQUEST_METHOD'] === 'POST'){
    $action = (string)($_POST['action'] ?? '');
    if($action === 'save_channel_buttons'){
        $savedLabels = [];
        foreach($channelButtonMap as $token=>$meta){
            $val = trim((string)($_POST['channel_label'][$token] ?? ''));
            if($val === '') $val = (string)($meta['default'] ?? $meta['title']);
            $val = mb_substr($val, 0, 64, 'UTF-8');
            if(function_exists('bot_channel_button_save_label')) bot_channel_button_save_label($token, $val);
            else web_setting_put($meta['path'], $val);
            $savedLabels[$token] = $val;
        }

        $styles = [];
        foreach($channelButtonMap as $token=>$meta){
            $style = (string)($_POST['channel_style'][$token] ?? '');
            if(function_exists('bot_channel_button_normalize_style')) $style = bot_channel_button_normalize_style($style);
            else $style = in_array($style, ['primary','success','danger'], true) ? $style : '';
            $styles[$token] = $style;
        }
        if(function_exists('bot_channel_button_save_styles')) bot_channel_button_save_styles($styles);
        else web_setting_put('lib/keyboard/channel/styles.json', json_encode(array_filter($styles), JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT));

        $layoutItems = [];
        $seq = 0;
        foreach($channelButtonMap as $token=>$meta){
            $row = max(1, min(5, (int)($_POST['channel_layout_row'][$token] ?? 1)));
            $pos = max(1, min(5, (int)($_POST['channel_layout_pos'][$token] ?? 1)));
            $layoutItems[] = ['token'=>$token, 'row'=>$row, 'pos'=>$pos, 'seq'=>$seq++];
        }
        usort($layoutItems, function($a,$b){
            if($a['row'] !== $b['row']) return $a['row'] <=> $b['row'];
            if($a['pos'] !== $b['pos']) return $a['pos'] <=> $b['pos'];
            return $a['seq'] <=> $b['seq'];
        });
        $layoutRows = [];
        foreach($layoutItems as $item){ $layoutRows[$item['row']][] = $item['token']; }
        ksort($layoutRows, SORT_NUMERIC);
        $rows = array_values($layoutRows);
        if(function_exists('bot_channel_button_save_layout')) bot_channel_button_save_layout($rows);
        else web_setting_put('lib/keyboard/channel/layout.json', json_encode(['rows'=>$rows,'updated_at'=>time()], JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT));

        web_admin_log('web_channel_buttons_save','keyboard','channel_buttons','تغییر متن، رنگ و چینش دکمه‌های داخل پست کانال از پنل وب', ['labels'=>$savedLabels,'styles'=>$styles,'layout'=>$rows]);
        web_flash('success','متن، رنگ و چینش دکمه‌های داخل پست کانال ذخیره شد. تغییرات روی پست‌های جدید اعمال می‌شود.');
        web_redirect('channel-buttons.php');
    } elseif($action === 'reset_channel_buttons'){
        foreach($channelButtonMap as $token=>$meta){
            $default = (string)($meta['default'] ?? $meta['title']);
            if(function_exists('bot_channel_button_save_label')) bot_channel_button_save_label($token, $default);
            else web_setting_put($meta['path'], $default);
        }
        if(function_exists('bot_channel_button_save_styles')) bot_channel_button_save_styles([]);
        else web_setting_put('lib/keyboard/channel/styles.json', '{}');
        if(function_exists('bot_channel_button_save_layout')) bot_channel_button_save_layout(bot_channel_button_default_rows(2));
        else web_setting_put('lib/keyboard/channel/layout.json', json_encode(['rows'=>[['DOKC0'],['DOKC1'],['DOKC2','DOKC3'],['DOKC4']],'updated_at'=>time()], JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT));
        web_admin_log('web_channel_buttons_reset','keyboard','channel_buttons','ریست متن، رنگ و چینش دکمه‌های داخل پست کانال از پنل وب');
        web_flash('success','دکمه‌های کانال به حالت پیش‌فرض برگشتند.');
        web_redirect('channel-buttons.php');
    }
}

web_header('دکمه‌های داخل پست کانال');
$styleOptions = function_exists('bot_channel_button_style_options') ? bot_channel_button_style_options() : [''=>'پیش‌فرض','primary'=>'آبی / Primary','success'=>'سبز / Success','danger'=>'قرمز / Danger'];
$layoutPositions = web_channel_buttons_current_layout_positions(array_keys($channelButtonMap));
?>
<div class="panel">
  <h3>تغییر متن، رنگ و چینش دکمه‌های داخل چنل</h3>
  <p class="muted">این دکمه‌ها زیر پست‌های سفارش/تبلیغات داخل کانال نمایش داده می‌شوند؛ مثل عضویت، جمع‌آوری الماس، گزارش تخلف و ورود به ربات. تغییرات روی پست‌های جدید اعمال می‌شود و پست‌های قبلی خودکار ویرایش نمی‌شوند.</p>
  <form method="post" class="grid"><?php web_csrf_input(); ?><input type="hidden" name="action" value="save_channel_buttons">
    <?php foreach($channelButtonMap as $token=>$meta): $label = web_channel_buttons_label($token, $channelButtonMap); $curStyle = function_exists('bot_channel_button_style') ? bot_channel_button_style($token) : ''; ?>
      <div class="field">
        <label><?=web_h($meta['title'])?> <span class="muted">/ <?=web_h($token)?></span></label>
        <input name="channel_label[<?=web_h($token)?>]" maxlength="64" value="<?=web_h($label)?>" placeholder="<?=web_h($meta['default'] ?? '')?>">
        <select name="channel_style[<?=web_h($token)?>]" style="margin-top:8px">
          <?php foreach($styleOptions as $styleKey=>$styleTitle): ?>
            <option value="<?=web_h($styleKey)?>" <?=$curStyle===$styleKey?'selected':''?>><?=web_h($styleTitle)?></option>
          <?php endforeach; ?>
        </select>
        <div style="display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px">
          <label class="muted" style="font-size:12px">ردیف
            <select name="channel_layout_row[<?=web_h($token)?>]">
              <?php for($r=1;$r<=5;$r++): ?>
                <option value="<?=$r?>" <?=((int)($layoutPositions[$token]['row'] ?? 1)===$r)?'selected':''?>>ردیف <?=$r?></option>
              <?php endfor; ?>
            </select>
          </label>
          <label class="muted" style="font-size:12px">ترتیب در ردیف
            <select name="channel_layout_pos[<?=web_h($token)?>]">
              <?php for($pp=1;$pp<=5;$pp++): ?>
                <option value="<?=$pp?>" <?=((int)($layoutPositions[$token]['pos'] ?? 1)===$pp)?'selected':''?>>جایگاه <?=$pp?></option>
              <?php endfor; ?>
            </select>
          </label>
        </div>
        <small class="muted">پیش‌نمایش: <?=web_h(web_channel_buttons_preview_label($token, $label))?></small>
      </div>
    <?php endforeach; ?>
    <div><button>ذخیره متن، رنگ و چینش دکمه‌های کانال</button></div>
  </form>
</div>
<div class="panel">
  <h3>راهنمای سریع</h3>
  <ul class="muted">
    <li>برای دکمه «جمع‌آوری الماس» مقدار دکمه <b>DOKC2</b> را تغییر بده.</li>
    <li>برای دکمه «عضویت در کانال» مقدار <b>DOKC1</b> را تغییر بده.</li>
    <li>رنگ‌های قابل انتخاب: پیش‌فرض، آبی/primary، سبز/success، قرمز/danger.</li>
    <li>برای چینش، ردیف و جایگاه هر دکمه را مشخص کن. دکمه‌هایی که ردیف یکسان دارند کنار هم قرار می‌گیرند.</li>
    <li>برای دیده‌شدن رنگ روی همه کلاینت‌ها، کنار متن دکمه‌های جدید نشانگر 🔵 🟢 🔴 هم اضافه می‌شود.</li>
  </ul>
</div>
<div class="panel">
  <h3>ریست دکمه‌های کانال</h3>
  <form method="post" onsubmit="return confirm('متن و رنگ دکمه‌های کانال به حالت پیش‌فرض برگردد؟')"><?php web_csrf_input(); ?><input type="hidden" name="action" value="reset_channel_buttons"><button class="danger">ریست دکمه‌های کانال</button></form>
</div>
<?php web_footer();
