<?php
session_start();
require __DIR__ . '/includes/admin_lib.php';
include __DIR__ . '/includes/admin_header.php';

$file = __DIR__ . '/../data/comments.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;

// Toggle comments enabled/disabled
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']);
}

// Save a reply (stored by hash of the comment block)
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['reply_key'])) {
  if (!$CAN_EDIT) die("<h1>Access Denied</h1><p>You do not have permission to reply.</p>");
  $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']);
}

if ($action === 'delete' && $idx >= 0) {
  if (!$CAN_EDIT) die("<h1>Access Denied</h1><p>You do not have permission to delete entries.</p>");
  smurf_delete_block($file, $idx);
  smurf_redirect_self([], ['action','i']);
}

if ($action === 'clear') {
  if (!$CAN_EDIT) die("<h1>Access Denied</h1><p>You do not have permission to clear entries.</p>");
  smurf_clear_file($file);
  smurf_redirect_self([], ['action','i']);
}

if (($action === 'approve' || $action === 'unapprove') && $idx >= 0) {
  if (!$CAN_EDIT) die("<h1>Access Denied</h1><p>You do not have permission.</p>");
  $itemsNewest = smurf_parse_blocks($file);
  if (isset($itemsNewest[$idx])) {
    $raw = $itemsNewest[$idx]['_raw'] ?? '';
    // remove existing Approved line
    $raw2 = preg_replace('/^Approved\s*:\s*.*$/mi', '', $raw);
    $raw2 = trim($raw2);
    $approvedVal = ($action === 'approve') ? '1' : '0';
    $raw2 .= "\nApproved: {$approvedVal}";
    smurf_update_block($file, $idx, $raw2);
  }
  smurf_redirect_self(['saved'=>1], ['action','i']);
}

$items = smurf_parse_blocks($file);

function smurf_comment_key(array $item): string {
  $raw = (string)($item['_raw'] ?? '');
  return md5($raw);
}

function smurf_is_approved(array $item): bool {
  $v = $item['Approved'] ?? $item['approved'] ?? '';
  return (string)$v === '1' || strtolower((string)$v) === 'yes' || strtolower((string)$v) === 'true';
}
?>

<section class="content-card">
  <div style="display:flex;justify-content:space-between;align-items:center;gap:10px;">
    <h1 class="admin-title" style="margin:0;">💬 Comments</h1>
    <a class="admin-btn" href="/admin/index.php">Back</a>
  </div>

  <p style="opacity:.8;">File: <code>/data/comments.txt</code></p>

  <?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; ?>
      <div style="opacity:.8;">Tip: turn this off if you get spammed.</div>
    </form>
  </div>

  <div style="margin:10px 0 18px;">
    <?php if ($CAN_EDIT): ?>
      <a class="admin-btn" href="/admin/comments.php?action=clear" onclick="return confirm('Clear ALL entries?');">Clear All</a>
    <?php endif; ?>
  </div>

  <?php if (empty($items)): ?>
    <p>No entries yet.</p>
  <?php else: ?>
    <?php foreach ($items as $i => $item): ?>
      <?php
        $approved = smurf_is_approved($item);
        $key = smurf_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>#<?= $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 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 else: ?>
            <p style="opacity:.8;">You do not have permission to reply.</p>
          <?php endif; ?>
        </div>
      </div>
    <?php endforeach; ?>
  <?php endif; ?>
</section>

<?php include __DIR__ . '/includes/admin_footer.php'; ?>
