<?php
/* ============================================================
   RollRumble Müzik Paneli — tek dosya
   Yükle / dinle / sil + tracks.json manifesti (video paneli okur)
   ============================================================ */
require __DIR__ . '/config.php';
session_start();

if (!is_dir(TRACKS_DIR)) mkdir(TRACKS_DIR, 0755, true);

/* ---------- oturum ---------- */
if (isset($_POST['pw'])) {
  if (hash_equals(PANEL_PASSWORD, $_POST['pw'])) $_SESSION['ok'] = true;
  else $err = 'Şifre yanlış';
}
if (isset($_GET['cikis'])) { session_destroy(); header('Location: ./'); exit; }
$auth = !empty($_SESSION['ok']);

/* ---------- manifest ---------- */
function rebuild_manifest() {
  $list = [];
  foreach (glob(TRACKS_DIR . '/*') as $f) {
    $ext = strtolower(pathinfo($f, PATHINFO_EXTENSION));
    if (!in_array($ext, ALLOWED_EXT)) continue;
    $list[] = [
      'file' => basename($f),
      'name' => preg_replace('/[-_]+/', ' ', pathinfo($f, PATHINFO_FILENAME)),
      'size' => filesize($f),
      'added'=> date('Y-m-d H:i', filemtime($f)),
    ];
  }
  usort($list, fn($a, $b) => strcmp($a['file'], $b['file']));
  file_put_contents(TRACKS_DIR . '/tracks.json',
    json_encode($list, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
  return $list;
}

/* ---------- işlemler ---------- */
$msg = '';
if ($auth && isset($_FILES['muzik'])) {
  foreach ($_FILES['muzik']['name'] as $i => $orig) {
    if ($_FILES['muzik']['error'][$i] !== UPLOAD_ERR_OK) continue;
    $ext = strtolower(pathinfo($orig, PATHINFO_EXTENSION));
    if (!in_array($ext, ALLOWED_EXT)) { $msg .= "✖ $orig: izin verilmeyen tür. "; continue; }
    if ($_FILES['muzik']['size'][$i] > MAX_MB * 1048576) { $msg .= "✖ $orig: " . MAX_MB . " MB üstü. "; continue; }
    $safe = preg_replace('/[^a-zA-Z0-9._-]/', '-', pathinfo($orig, PATHINFO_FILENAME));
    $dest = TRACKS_DIR . '/' . $safe . '.' . $ext;
    $n = 1;
    while (file_exists($dest)) $dest = TRACKS_DIR . '/' . $safe . '-' . (++$n) . '.' . $ext;
    if (move_uploaded_file($_FILES['muzik']['tmp_name'][$i], $dest))
      $msg .= '✔ ' . basename($dest) . ' yüklendi. ';
  }
  rebuild_manifest();
}
if ($auth && isset($_POST['sil'])) {
  $f = basename($_POST['sil']);
  $p = TRACKS_DIR . '/' . $f;
  if (is_file($p) && in_array(strtolower(pathinfo($p, PATHINFO_EXTENSION)), ALLOWED_EXT)) {
    unlink($p);
    $msg = "🗑 $f silindi.";
  }
  rebuild_manifest();
}
$tracks = rebuild_manifest();
?>
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex,nofollow">
<title>RollRumble · Müzik Paneli</title>
<style>
  :root{--bg:#0e0a20;--panel:#1a1440;--gold:#ffcf3f;--pink:#ff5c8a;--txt:#f4f1ff;--dim:#8f86b8}
  *{box-sizing:border-box}
  body{margin:0;font-family:system-ui,sans-serif;background:var(--bg);color:var(--txt);
    min-height:100vh;display:flex;justify-content:center;padding:32px 16px}
  .wrap{width:100%;max-width:680px}
  h1{font-size:22px;color:var(--gold);margin:0 0 4px}
  .sub{color:var(--dim);font-size:13px;margin-bottom:22px}
  .card{background:var(--panel);border:1px solid rgba(255,255,255,.1);border-radius:14px;
    padding:18px;margin-bottom:16px}
  input[type=password],input[type=file]{width:100%;padding:10px;border-radius:8px;
    border:1px solid rgba(255,255,255,.2);background:rgba(0,0,0,.3);color:var(--txt)}
  button{background:var(--pink);color:#fff;border:0;border-radius:8px;padding:10px 18px;
    font-weight:800;cursor:pointer;margin-top:10px}
  button.kucuk{background:transparent;border:1px solid rgba(255,92,138,.6);color:var(--pink);
    padding:4px 10px;font-size:12px;margin:0}
  .msg{background:rgba(92,224,138,.12);border:1px solid rgba(92,224,138,.4);
    border-radius:8px;padding:10px;font-size:13px;margin-bottom:14px}
  table{width:100%;border-collapse:collapse;font-size:13.5px}
  td{padding:8px 6px;border-top:1px solid rgba(255,255,255,.08);vertical-align:middle}
  audio{width:160px;height:30px}
  .boyut{color:var(--dim);white-space:nowrap}
  a{color:var(--dim);font-size:12px}
  .not{font-size:12px;color:var(--dim);margin-top:10px;line-height:1.6}
</style>
</head>
<body>
<div class="wrap">
  <h1>🎵 RollRumble Müzik Paneli</h1>
  <div class="sub">Parçalar video paneline <code>tracks.json</code> üzerinden servis edilir.</div>

  <?php if (!$auth): ?>
    <div class="card">
      <form method="post">
        <label>Panel şifresi</label>
        <input type="password" name="pw" autofocus>
        <?php if (!empty($err)) echo "<div style='color:var(--pink);font-size:13px;margin-top:6px'>$err</div>"; ?>
        <button>GİRİŞ</button>
      </form>
    </div>
  <?php else: ?>
    <?php if ($msg) echo "<div class='msg'>$msg</div>"; ?>

    <div class="card">
      <form method="post" enctype="multipart/form-data">
        <label>Yeni parça yükle (mp3 / m4a / ogg / wav — en fazla <?= MAX_MB ?> MB, çoklu seçim olur)</label>
        <input type="file" name="muzik[]" accept=".mp3,.m4a,.ogg,.wav" multiple>
        <button>⬆ YÜKLE</button>
      </form>
      <div class="not">
        Adlandırma önerisi: <b>rr-intro</b>, <b>rr-race-a</b>, <b>rr-race-b</b>,
        <b>rr-tension</b>, <b>rr-chill</b>, <b>rr-victory</b> — video panelindeki
        seçim menüsü bu adlarla listeler.
      </div>
    </div>

    <div class="card">
      <b>Kütüphane (<?= count($tracks) ?> parça)</b>
      <table>
        <?php foreach ($tracks as $t): ?>
        <tr>
          <td><b><?= htmlspecialchars($t['name']) ?></b><br>
              <span class="boyut"><?= htmlspecialchars($t['file']) ?> · <?= round($t['size']/1048576,1) ?> MB · <?= $t['added'] ?></span></td>
          <td><audio controls preload="none" src="tracks/<?= rawurlencode($t['file']) ?>"></audio></td>
          <td>
            <form method="post" onsubmit="return confirm('<?= htmlspecialchars($t['file']) ?> silinsin mi?')">
              <input type="hidden" name="sil" value="<?= htmlspecialchars($t['file']) ?>">
              <button class="kucuk">SİL</button>
            </form>
          </td>
        </tr>
        <?php endforeach; ?>
        <?php if (!$tracks) echo '<tr><td colspan="3" style="color:var(--dim)">Henüz parça yok — yukarıdan yükle.</td></tr>'; ?>
      </table>
    </div>

    <a href="?cikis">Çıkış yap</a>
  <?php endif; ?>
</div>
</body>
</html>
