
<?php
session_start();
require __DIR__ . '/includes/admin_lib.php';
$file = __DIR__ . '/../data/comments.txt';
$bannedFile = __DIR__ . '/../data/banned_ips.txt';
$settingsFile = __DIR__ . '/../data/settings.json';
$settings = smurf_load_settings($settingsFile);
$repliesFile = __DIR__ . '/../data/comment_replies.json';
$replies = smurf_read_json($repliesFile, []);
$action = $_GET['action'] ?? '';
$idx = isset($_GET['i']) ? (int)$_GET['i'] : -1;
function thunder_parse_comments(string $file): array {
  if (!file_exists($file) || filesize($file) === 0) return [];
  $raw = trim((string)file_get_contents($file));
  if ($raw === '') return [];
  if (strpos($raw, '---') !== false && preg_match('/(^|
)\w+\s*:/', $raw)) {
    return smurf_parse_blocks($file);
  }
  $lines = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) ?: [];
  $out = [];
  foreach (array_reverse($lines) as $line) {
    $p = explode('|', trim($line));
    if (count($p) >= 6) {
      [$id,$name,$message,$ip,$timestamp,$approved] = array_pad($p, 6, '');
      $rawBlock = "ID: $id
Name: $name
Message: $message
IP: $ip
Timestamp: $timestamp
Approved: ".(($approved==='yes'||$approved==='1')?'1':'0');
      $out[] = ['ID'=>$id,'Name'=>$name,'Message'=>$message,'IP'=>$ip,'Timestamp'=>$timestamp,'Approved'=>($approved==='yes'||$approved==='1')?'1':'0','_raw'=>$rawBlock,'_legacy_line'=>$line];
    }
  }
  return $out;
}
function thunder_write_comments(string $file, array $items): void {
  $legacy = true;
  foreach ($items as $it) { if (!isset($it['_legacy_line'])) { $legacy = false; break; } }
  if ($legacy) {
    $lines = [];
    foreach (array_reverse($items) as $it) {
      $id = $it['ID'] ?? ''; $name = str_replace(["
","
","|"],' ',(string)($it['Name'] ?? ''));
      $msg = str_replace(["
","
","|"],' ',(string)($it['Message'] ?? '')); $ip = str_replace('|',' ',(string)($it['IP'] ?? ''));
      $ts = str_replace('|',' ',(string)($it['Timestamp'] ?? '')); $ap = (($it['Approved'] ?? '0')==='1') ? 'yes' : 'no';
      $lines[] = "$id|$name|$msg|$ip|$ts|$ap";
    }
    file_put_contents($file, implode("
", $lines) . (count($lines)?"
":""));
    return;
  }
  $blocks=[]; foreach (array_reverse($items) as $it) { $blocks[] = trim((string)($it['_raw'] ?? '')); }
  file_put_contents($file, implode("
---
", array_filter($blocks)) . (count($blocks)?"
---
":""));
}
function thunder_comment_key(array $item): string { return md5((string)($item['_raw'] ?? json_encode($item))); }
function thunder_comment_approved(array $item): bool { $v = $item['Approved'] ?? $item['approved'] ?? ''; return (string)$v === '1' || strtolower((string)$v) === 'yes' || strtolower((string)$v) === 'true'; }
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['toggle_comments'])) {
  if (!$CAN_EDIT) die('<h1>Access Denied</h1>');
  $settings['comments_enabled'] = isset($_POST['comments_enabled']) ? true : false;
  smurf_save_settings($settingsFile, $settings);
  smurf_redirect_self(['saved'=>1], ['action','i']);
}
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['reply_key'])) {
  if (!$CAN_EDIT) die('<h1>Access Denied</h1>');
  $key = preg_replace('/[^a-f0-9]/', '', (string)($_POST['reply_key'] ?? ''));
  $reply = trim((string)($_POST['reply_text'] ?? ''));
  if ($key !== '') {
    if ($reply === '') unset($replies[$key]); else $replies[$key] = ['text'=>$reply,'by'=>$_SESSION['user'] ?? 'admin','ts'=>time()];
    smurf_write_json($repliesFile, $replies);
  }
  smurf_redirect_self(['saved'=>1], ['action','i']);
}
$items = thunder_parse_comments($file);
if ($action === 'clear' && $CAN_EDIT) { thunder_write_comments($file, []); smurf_redirect_self([], ['action','i']); }
if ($action === 'delete' && $idx >= 0 && isset($items[$idx]) && $CAN_EDIT) { array_splice($items, $idx, 1); thunder_write_comments($file, $items); smurf_redirect_self([], ['action','i']); }
if (($action === 'approve' || $action === 'unapprove') && $idx >= 0 && isset($items[$idx]) && $CAN_EDIT) { $items[$idx]['Approved'] = ($action === 'approve') ? '1' : '0'; thunder_write_comments($file, $items); smurf_redirect_self(['saved'=>1], ['action','i']); }
if ($action === 'ban' && $idx >= 0 && isset($items[$idx]) && $CAN_EDIT) { $ip = trim((string)($items[$idx]['IP'] ?? '')); if ($ip !== '') file_put_contents($bannedFile, $ip."
", FILE_APPEND); smurf_redirect_self(['saved'=>1], ['action','i']); }
$items = thunder_parse_comments($file);
include __DIR__ . '/includes/admin_header.php';
?>
<section class="content-card">
  <div style="display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;">
    <h1 class="admin-title" style="margin:0;">💬 Comments</h1>
    <div style="display:flex;gap:10px;flex-wrap:wrap;"><a class="admin-btn" href="/admin/index.php">Back</a><?php if ($CAN_EDIT): ?><a class="admin-btn danger" href="/admin/comments.php?action=clear" onclick="return confirm('Clear ALL entries?');">Clear All</a><?php endif; ?></div>
  </div>
  <?php if (!empty($_GET['saved'])): ?><div class="msg success" style="margin-top:10px;">Saved.</div><?php endif; ?>
  <div class="content-card" style="text-align:left;margin-top:12px;">
    <h3 style="margin-top:0;">Settings</h3>
    <form method="post" style="display:flex;gap:12px;align-items:center;flex-wrap:wrap;">
      <input type="hidden" name="toggle_comments" value="1">
      <label style="display:flex;gap:8px;align-items:center;"><input type="checkbox" name="comments_enabled" value="1" <?= !empty($settings['comments_enabled']) ? 'checked' : '' ?>><span>Allow new comments on the homepage</span></label>
      <?php if ($CAN_EDIT): ?><button class="admin-btn" type="submit">Save</button><?php endif; ?>
    </form>
  </div>
  <?php if (empty($items)): ?><p>No entries yet.</p><?php else: foreach ($items as $i => $item): $approved = thunder_comment_approved($item); $key = thunder_comment_key($item); $reply = $replies[$key]['text'] ?? ''; ?>
    <div class="content-card" style="text-align:left;">
      <div style="display:flex;justify-content:space-between;gap:10px;align-items:center;flex-wrap:wrap;">
        <strong><?= smurf_h($item['Name'] ?? ('#'.$i)) ?></strong>
        <div style="display:flex;gap:8px;align-items:center;flex-wrap:wrap;">
          <span style="font-weight:700;<?= $approved ? 'color:#7CFFB5' : 'color:#ffd27a' ?>;"><?= $approved ? 'Approved' : 'Pending' ?></span>
          <?php if ($CAN_EDIT): ?><?php if (!$approved): ?><a class="admin-btn" href="/admin/comments.php?action=approve&i=<?= $i ?>">Approve</a><?php else: ?><a class="admin-btn" href="/admin/comments.php?action=unapprove&i=<?= $i ?>">Unapprove</a><?php endif; ?><a class="admin-btn" href="/admin/comments.php?action=delete&i=<?= $i ?>" onclick="return confirm('Delete this entry?');">Delete</a><?php if (!empty($item['IP'])): ?><a class="admin-btn danger" href="/admin/comments.php?action=ban&i=<?= $i ?>" onclick="return confirm('Ban this IP?');">Ban IP</a><?php endif; ?><?php endif; ?>
        </div>
      </div>
      <pre style="white-space:pre-wrap;margin:10px 0 0;opacity:.95;"><?= smurf_h($item['_raw'] ?? '') ?></pre>
      <div style="margin-top:12px;"><h4 style="margin:0 0 6px;">Admin Reply</h4><?php if (!empty($reply)): ?><div class="content-card" style="margin:8px 0 10px;border-style:dashed;"><?= nl2br(smurf_h($reply)) ?></div><?php endif; ?><?php if ($CAN_EDIT): ?><form method="post"><input type="hidden" name="reply_key" value="<?= smurf_h($key) ?>"><textarea name="reply_text" rows="3" style="width:100%;max-width:100%;"><?= smurf_h($reply) ?></textarea><div style="display:flex;gap:10px;justify-content:flex-end;margin-top:8px;flex-wrap:wrap;"><button class="admin-btn" type="submit">Save Reply</button><span style="opacity:.75;">(leave blank and save to remove)</span></div></form><?php endif; ?></div>
    </div>
  <?php endforeach; endif; ?>
</section>
<?php include __DIR__ . '/includes/admin_footer.php'; ?>
