<?php require_once __DIR__.'/_layout.php'; web_require_perm('texts');
$defs=[];
if(function_exists('bot_text_settings_definitions')) $defs=bot_text_settings_definitions();
elseif(function_exists('bot_text_settings_defs')) $defs=bot_text_settings_defs();
if(!$defs){ $defs=[
 'starttext'=>['title'=>'متن شروع','path'=>'lib/Button/starttext.txt','default'=>'سلام NAME عزیز، خوش آمدی.','help'=>'متغیرها: NAME، ID'],
 'doktxt0'=>['title'=>'کد هدیه','path'=>'lib/Button/doktxt0.txt','default'=>'🎁 کد هدیه خود را وارد کنید.','help'=>'متن بخش کد هدیه'],
 'claim_success'=>['title'=>'دریافت الماس موفق','path'=>'lib/Button/claim_success_text.txt','default'=>'✅ AMOUNT الماس به حساب شما اضافه شد.','help'=>'متغیرها: AMOUNT، BALANCE'],
 ]; }

function web_text_allowed_vars(){
    return ['NAME','FIRST','FIRST_NAME','LAST','LAST_NAME','USERNAME','USER','ID','USER_ID','AMOUNT','BALANCE','ORDER_ID','COST','MONEY','MONY','ICMONEY','IC','CHANNEL','CHANNELS','REPORT_COUNT','THRESHOLD','DAYS','REMAINING','BOT_USERNAME','REF_LINK','REFERRAL_LINK','INVITE_LINK','LINK','CODE','GIFT_CODE','TICKET_CODE','STATUS','COUNT','LIMIT','DATE','TIME'];
}
function web_text_unknown_vars($text){
    $allowed = web_text_allowed_vars();
    preg_match_all('/\{?\b([A-Z][A-Z0-9_]{1,32})\b\}?/u', (string)$text, $m);
    $bad = [];
    foreach(($m[1] ?? []) as $v){
        if(in_array($v, ['HTTP','HTTPS','API','URL','JSON','PHP'], true)) continue;
        if(!in_array($v, $allowed, true)) $bad[] = $v;
    }
    return array_values(array_unique($bad));
}

function web_text_render_preview($raw){
    $vars = [
        'NAME'=>'کاربر تست','FIRST'=>'کاربر','FIRST_NAME'=>'کاربر','LAST'=>'تست','LAST_NAME'=>'تست','USERNAME'=>'test_user','USER'=>'test_user','ID'=>'123456789','USER_ID'=>'123456789',
        'AMOUNT'=>'10','BALANCE'=>'250','ORDER_ID'=>'1001','COST'=>'50','MONEY'=>'الماس','MONY'=>'الماس','ICMONEY'=>'💎','IC'=>'💎','CHANNEL'=>'@channel','REPORT_COUNT'=>'3','THRESHOLD'=>'10','DAYS'=>'1','REMAINING'=>'12 ساعت',
        'BOT_USERNAME'=>'mybot','REF_LINK'=>'https://t.me/mybot?start=123456789','REFERRAL_LINK'=>'https://t.me/mybot?start=123456789','INVITE_LINK'=>'https://t.me/mybot?start=123456789','LINK'=>'https://t.me/mybot?start=123456789','CHANNELS'=>'@channel'
    ];
    if(function_exists('bot_text_settings_apply_vars')) return bot_text_settings_apply_vars($raw, $vars);
    foreach($vars as $k=>$v){ $raw = str_replace([$k,'{'.$k.'}'], $v, $raw); }
    return $raw;
}
if($_SERVER['REQUEST_METHOD']==='POST'){
    $key=(string)($_POST['key'] ?? '');
    $val=(string)($_POST['value'] ?? '');
    $action=(string)($_POST['action'] ?? 'save');
    if(!isset($defs[$key])) web_flash('error','متن پیدا نشد.');
    elseif($action==='reset'){
        if(function_exists('bot_text_settings_put')) bot_text_settings_put($key, $defs[$key]['default'] ?? ''); else web_setting_put($defs[$key]['path'],$defs[$key]['default'] ?? '');
        web_admin_log('web_text_reset','text',$key,'ریست متن از پنل وب');
        web_flash('success','متن ریست شد.');
    } else {
        $unknown = web_text_unknown_vars($val);
        if(!empty($unknown)) web_flash('warning','هشدار: این متغیرها شناخته نشدند: '.implode('، ', $unknown));
        $ok = function_exists('bot_text_settings_put') ? bot_text_settings_put($key,$val) : web_setting_put($defs[$key]['path'],$val);
        if($ok){
            web_admin_log('web_text_update','text',$key,'تغییر متن از پنل وب');
            web_flash('success','متن ذخیره شد.');
            if($action==='save_test'){
                $res = web_send_message($_SESSION['web_admin_id'] ?? web_owner_admin_id(), "پیش‌نمایش متن:\n\n".web_text_render_preview($val));
                if(isset($res->ok) && $res->ok) web_flash('success','پیش‌نمایش برای خودت ارسال شد.');
                else web_flash('error','متن ذخیره شد ولی ارسال تست انجام نشد.');
            }
        } else web_flash('error','ذخیره متن انجام نشد. متن خالی نباشد و دسترسی فایل‌ها را بررسی کن.');
    }
    web_redirect('texts.php?key='.urlencode($key));
}
web_header('تنظیم متن‌ها');
$key=(string)($_GET['key'] ?? array_key_first($defs));
if(!isset($defs[$key])) $key = array_key_first($defs);
?>
<div class="panel"><form method="get"><div class="field"><label>انتخاب متن</label><select name="key" onchange="this.form.submit()" style="max-width:520px"><?php foreach($defs as $k=>$d) echo '<option value="'.web_h($k).'" '.($key===$k?'selected':'').'>'.web_h($d['title'] ?? $k).'</option>'; ?></select></div><div class="alert">متغیرهای مجاز عمومی: <?=web_h(implode('، ', web_text_allowed_vars()))?></div></form></div>
<?php if(isset($defs[$key])){ $d=$defs[$key]; $val=function_exists('bot_text_settings_get') ? bot_text_settings_get($key) : web_setting_get($d['path'],$d['default'] ?? ''); $preview=web_text_render_preview($val); ?>
<div class="panel">
  <h3><?=web_h($d['title'] ?? $key)?></h3>
  <div class="alert">راهنما: <?=web_h($d['help'] ?? 'متن را دقیقاً همان‌طور که می‌خواهی نمایش داده شود بنویس.')?></div>
  <?php $unknownNow = web_text_unknown_vars($val); if(!empty($unknownNow)): ?><div class="alert warning">متغیرهای ناشناخته در این متن: <?=web_h(implode('، ', $unknownNow))?></div><?php endif; ?><form method="post"><?php web_csrf_input(); ?><input type="hidden" name="key" value="<?=web_h($key)?>">
    <div class="field"><label>متن</label><textarea name="value" rows="10"><?=web_h($val)?></textarea></div>
    <button name="action" value="save">ذخیره متن</button>
    <button name="action" value="save_test" class="secondary">ذخیره و ارسال تست</button>
    <button name="action" value="reset" class="danger" onclick="return confirm('متن ریست شود؟')">ریست متن</button>
  </form>
  <div class="alert">متغیرهای رایج: NAME، FIRST_NAME، USERNAME، ID، AMOUNT، BALANCE، ORDER_ID، COST، MONEY، ICMONEY، CHANNEL، REF_LINK، REFERRAL_LINK</div>
  <h4>پیش‌نمایش با متغیر تست</h4>
  <div class="card"><?=nl2br(web_h($preview))?></div>
</div>
<?php } web_footer();
