<?php
set_time_limit(0);

require_once __DIR__ . '/../../config.php';

$BASE_DIR = '/home/heysen/public_html/app.heysen.net/assets/upload/send';
$DRY_RUN = false;

/* =======================
   FILESYSTEM (TEK GERÇEK KAYNAK)
   ======================= */

$files = array_diff(scandir($BASE_DIR), ['.', '..']);
$totalFs = count($files);

// hızlı lookup
$fsSet = [];
foreach ($files as $f) {
    $fsSet[$f] = true;
}

/* =======================
   DB’DEN GELENLER (AMA SADECE FS’DE OLANLAR KABUL)
   ======================= */

$used = [];

$stmt = $db->query("
    SELECT icerik
    FROM mesajlar
    WHERE icerik LIKE '%/assets/upload/send/%'
");

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    preg_match_all('#/assets/upload/send/([^"\s]+)#', $row['icerik'], $m);

    foreach ($m[1] as $raw) {
        $raw = trim($raw);
        if ($raw === '') continue;

        // query / fragment kırp
        $raw = preg_split('/[?#]/', $raw, 2)[0];

        $file = basename($raw);

        if (!isset($fsSet[$file])) continue;

        $used[$file] = true;
    }
}

/* =======================
   SAYILAR ARTIK BURADAN
   ======================= */

$nonOrphans = array_keys($used);
sort($nonOrphans);

$usedCount   = count($nonOrphans);
$orphanCount = $totalFs - $usedCount;

/* =======================
   ÇIKTI
   ======================= */

echo "<h2>İstatistik</h2>";
echo "<ul>";
echo "<li><strong>Filesystem toplam dosya:</strong> {$totalFs}</li>";
echo "<li><strong>DB’de referanslı (SİLİNMEYECEK):</strong> {$usedCount}</li>";
echo "<li><strong>Yetim (SİLİNECEK):</strong> {$orphanCount}</li>";
echo "</ul>";

echo "<p><strong>TEST MODU:</strong> Şu an hiçbir dosya silinmiyor.</p>";

echo "<h3>SİLİNMEYECEK DOSYALAR ({$usedCount} adet)</h3><pre>";
foreach ($nonOrphans as $f) {
    echo $f . "\n";
}
echo "</pre>";

if ($DRY_RUN) {
    echo "<p>Silmek için <code>\$DRY_RUN = false;</code> yap.</p>";
    exit;
}

/* =======================
   SİLME
   ======================= */

foreach ($files as $f) {
    if (!isset($used[$f])) {
        @unlink($BASE_DIR . '/' . $f);
    }
}

echo "<p>✅ {$orphanCount} dosya silindi.</p>";
