<?php
// Basit aksiyon izin kontrolü ekle
if (isset($model) && function_exists('can')){
    if (!can('delete', $model)){
        // Hata sayfasına atmak yerine kullanıcıya uyarı verip geri gönder
        if (function_exists('m_set_session')){
            m_set_session('formSuccess', false);
            m_set_session('error_message', lang('security_violation', [], 'Bu işlem için yetkiniz yok.'));
        }
        $back = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ADMIN_URL;
        header('Location: '.$back);
        exit();
    }
}
require_once (dirname(__DIR__, 2) . '/init.php');
if (!m_admin_check()) {
    m_redirect(ADMIN_URL . '/login');
}

$url = isset($_GET['url']) ? $_GET['url'] : '';
$segments = explode('/', $url);
$model = $segments[1];
$id = get_id($segments[3]);
$result = $db->table('posts')->where('id', '=', $id)->get();

// Silinmeden önce aynı referansa bağlı tüm dil sürümlerinin slug'larını kaydet (410 Gone için)
$refId = $result['data'][0]['lang_ref_id'];
$allRefPosts = $db->table('posts')->where('lang_ref_id','=', $refId)->get();
if (!empty($allRefPosts['data'])) {
    $cacheDir = ROOT_FOLDER . '/cache';
    if (!is_dir($cacheDir)) { @mkdir($cacheDir, 0775, true); }
    $file = $cacheDir . '/deleted_urls.json';
    $list = [];
    if (is_file($file)) {
        $raw = @file_get_contents($file);
        if ($raw !== false) { $tmp = json_decode($raw, true); if (is_array($tmp)) { $list = $tmp; } }
    }
    $nowIso = date('c');
    foreach ($allRefPosts['data'] as $rp) {
        if (!empty($rp['sef'])) {
            $entry = ['slug' => (string)$rp['sef'], 'lang' => (string)($rp['lang'] ?? ''), 'deleted_at' => $nowIso];
            $listKey = $entry['slug'] . '|' . $entry['lang'];
            $list[$listKey] = $entry; // key bazlı yazarak tekilleştir
        }
    }
    @file_put_contents($file, json_encode(array_values($list), JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES));
}

$delete = $db->table('posts')->where('lang_ref_id','=', $refId)->delete();
if($delete):
    pingSearchEngines();
    // IndexNow: silinen içerik için ana sayfayı ve kategori URL'sini tetiklemek yeterlidir (opsiyonel)
    // Burada özellikle bir URL listesi bilinmiyor; sitemap ping yeterli kabul edilir.
    generate_sitemap();
    $_SESSION['formSuccess'] = true;
    $_SESSION['success_message'] = lang('form_success_delete_message', [], 'Seçilen Kayıt Başarıyla Silindi!');
    m_redirect(ADMIN_URL.'/'.$model.'/lists');
else:
    $_SESSION['formSuccess'] = false;
    $_SESSION['error_message'] = lang('form_error_message', [], 'Değişiklikler Kaydedilirken Bir Sorun Yaşandı!');
endif;