<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

require_once '../../includes/db.php';
require_once '../header.php';

if (!isset($_GET['id']) || empty($_GET['id'])) {
    header("Location: index.php");
    exit;
}

$id = intval($_GET['id']);
$blog = $db->prepare("SELECT * FROM blogs WHERE id = ?");
$blog->execute([$id]);
$yazi = $blog->fetch(PDO::FETCH_ASSOC);

if (!$yazi) {
    echo '<div class="alert alert-danger m-3">Yazı bulunamadı.</div>';
    require_once '../footer.php';
    exit;
}

if (isset($_POST['yazi_duzenle'])) {
    $title = trim($_POST['title']);
    $slug = trim($_POST['slug']);
    $category_id = $_POST['category_id'];
    $content = $_POST['content'];
    $meta_title = trim($_POST['meta_title']);
    $meta_description = trim($_POST['meta_description']);
    $status = isset($_POST['status']) ? 1 : 0;
    
    // Görsel Güncelleme ve SEO Optimizasyonu İşlemi
    $image_path = $yazi['image']; // Varsayılan olarak eski görsel kalır
    if (isset($_FILES['image']) && $_FILES['image']['error'] == 0) {
        
        // Yıl ve Ay'a göre klasör yapısı
        $yil = date('Y');
        $ay = date('m');
        $upload_dir = "../../uploads/blog/$yil/$ay/";
        
        if (!is_dir($upload_dir)) { 
            mkdir($upload_dir, 0777, true); 
        }
        
        $file_info = pathinfo($_FILES['image']['name']);
        $extension = strtolower($file_info['extension']);
        $allowed_extensions = ['jpg', 'jpeg', 'png', 'webp'];
        
        if (in_array($extension, $allowed_extensions)) {
            // SEO uyumlu dosya adı: slug-kisaID.webp
            $yeni_dosya_adi = $slug . '-' . substr(uniqid(), -5) . '.webp';
            $destination = $upload_dir . $yeni_dosya_adi;
            
            // Görseli işleme (1200x630 Kırpma ve WebP dönüştürme)
            $tmp_name = $_FILES['image']['tmp_name'];
            $hedef_w = 1200;
            $hedef_h = 630;
            
            switch($extension) {
                case 'jpg':
                case 'jpeg': $kaynak = imagecreatefromjpeg($tmp_name); break;
                case 'png': $kaynak = imagecreatefrompng($tmp_name); break;
                case 'webp': $kaynak = imagecreatefromwebp($tmp_name); break;
                default: $kaynak = false;
            }

            if ($kaynak) {
                $orj_w = imagesx($kaynak);
                $orj_h = imagesy($kaynak);

                $orj_oran = $orj_w / $orj_h;
                $hedef_oran = $hedef_w / $hedef_h;

                // Merkezi Kırpma
                if ($orj_oran > $hedef_oran) {
                    $kirp_h = $orj_h;
                    $kirp_w = (int) ($orj_h * $hedef_oran);
                    $kirp_x = (int) (($orj_w - $kirp_w) / 2);
                    $kirp_y = 0;
                } else {
                    $kirp_w = $orj_w;
                    $kirp_h = (int) ($orj_w / $hedef_oran);
                    $kirp_x = 0;
                    $kirp_y = (int) (($orj_h - $kirp_h) / 2);
                }

                $hedef_resim = imagecreatetruecolor($hedef_w, $hedef_h);

                // Şeffaflık Koruması
                if ($extension == 'png' || $extension == 'webp') {
                    imagealphablending($hedef_resim, false);
                    imagesavealpha($hedef_resim, true);
                    $saydam = imagecolorallocatealpha($hedef_resim, 255, 255, 255, 127);
                    imagefilledrectangle($hedef_resim, 0, 0, $hedef_w, $hedef_h, $saydam);
                }

                imagecopyresampled($hedef_resim, $kaynak, 0, 0, $kirp_x, $kirp_y, $hedef_w, $hedef_h, $kirp_w, $kirp_h);

                // WEBP olarak kaydet
                if (imagewebp($hedef_resim, $destination, 85)) {
                    $image_path = "uploads/blog/$yil/$ay/$yeni_dosya_adi";
                    
                    // Başarılı yüklendiyse, eski görseli sunucudan sil (Yer kaplamaması için)
                    if (!empty($yazi['image']) && file_exists('../../' . $yazi['image'])) {
                        unlink('../../' . $yazi['image']);
                    }
                } else {
                    $error = "Yeni görsel işlenirken bir hata oluştu.";
                }

                imagedestroy($kaynak);
                imagedestroy($hedef_resim);
            } else {
                $error = "Görsel okunamadı, bozuk bir dosya olabilir.";
            }
        } else {
            $error = "Sadece JPG, JPEG, PNG ve WEBP formatları desteklenmektedir.";
        }
    }

    if (!isset($error)) {
        $query = $db->prepare("UPDATE blogs SET category_id=?, title=?, slug=?, content=?, image=?, meta_title=?, meta_description=?, status=? WHERE id=?");
        $update = $query->execute([$category_id, $title, $slug, $content, $image_path, $meta_title, $meta_description, $status, $id]);

        if ($update) {
            echo '<div class="alert alert-success m-3">Yazı başarıyla güncellendi. <a href="index.php">Listeye Dön</a></div>';
            // Veriyi tazele
            $blog->execute([$id]);
            $yazi = $blog->fetch(PDO::FETCH_ASSOC);
        } else {
            echo '<div class="alert alert-danger m-3">Yazı güncellenirken bir hata oluştu.</div>';
        }
    } else {
        echo '<div class="alert alert-danger m-3">' . $error . '</div>';
    }
}
?>

<div class="container-fluid">
    <div class="card">
        <div class="card-header d-flex justify-content-between align-items-center">
            <h5 class="m-0">Blog Yazısını Düzenle</h5>
            <a href="index.php" class="btn btn-secondary btn-sm">Geri Dön</a>
        </div>
        <div class="card-body">
            <form action="" method="POST" enctype="multipart/form-data">
                <div class="row">
                    <div class="col-md-8">
                        <div class="mb-3">
                            <label class="form-label fw-bold">Yazı Başlığı</label>
                            <input type="text" name="title" id="title" class="form-control form-control-lg" value="<?= htmlspecialchars($yazi['title']) ?>" required>
                        </div>
                        
                        <div class="mb-3">
                            <label class="form-label fw-bold">Kalıcı Bağlantı (Slug)</label>
                            <div class="input-group">
                                <span class="input-group-text">site.com/blog/</span>
                                <input type="text" name="slug" id="slug" class="form-control" value="<?= htmlspecialchars($yazi['slug']) ?>" required>
                            </div>
                        </div>

                        <div class="mb-3">
                            <label class="form-label fw-bold">İçerik</label>
                            <textarea name="content" id="content" class="form-control" rows="15"><?= htmlspecialchars($yazi['content']) ?></textarea>
                        </div>
                    </div>

                    <div class="col-md-4">
                        <div class="card bg-light mb-3">
                            <div class="card-body">
                                <h6 class="card-title fw-bold">Yayımlama Ayarları</h6>
                                <div class="mb-3">
                                    <label class="form-label">Kategori</label>
                                    <select name="category_id" class="form-select" required>
                                        <option value="">Kategori Seçin</option>
                                        <?php
                                        $kategoriler = $db->query("SELECT * FROM blog_categories")->fetchAll(PDO::FETCH_ASSOC);
                                        foreach ($kategoriler as $kat) {
                                            $selected = ($kat['id'] == $yazi['category_id']) ? 'selected' : '';
                                            echo '<option value="'.$kat['id'].'" '.$selected.'>'.htmlspecialchars($kat['name']).'</option>';
                                        }
                                        ?>
                                    </select>
                                </div>
                                <div class="mb-3 form-check form-switch">
                                    <input class="form-check-input" type="checkbox" name="status" id="status" <?= $yazi['status'] == 1 ? 'checked' : '' ?>>
                                    <label class="form-check-label" for="status">Yayında (Aktif)</label>
                                </div>
                            </div>
                        </div>

                        <div class="card bg-light mb-3">
                            <div class="card-body">
                                <h6 class="card-title fw-bold">Kapak Görseli <span class="badge bg-success">SEO Optimize</span></h6>
                                <?php if(!empty($yazi['image'])): ?>
                                    <div class="mb-3 p-2 bg-white rounded border text-center">
                                        <img src="../../<?= $yazi['image'] ?>" class="img-fluid rounded shadow-sm" alt="Mevcut Görsel" style="max-height: 150px;">
                                        <small class="d-block text-muted mt-2">Mevcut Görsel</small>
                                    </div>
                                <?php endif; ?>
                                <div class="mb-3">
                                    <label class="form-label">Görseli Değiştir</label>
                                    <input type="file" name="image" class="form-control" accept="image/*">
                                    <small class="text-muted d-block mt-2"><i class="bi bi-info-circle"></i> Sadece görseli değiştirmek isterseniz seçin. Yüklediğiniz görsel otomatik <strong>1200x630</strong> piksele kırpılacak ve <strong>WebP</strong> formatına dönüştürülecektir.</small>
                                </div>
                            </div>
                        </div>

                        <div class="card bg-light mb-3">
                            <div class="card-body">
                                <h6 class="card-title fw-bold">SEO Ayarları (Google)</h6>
                                <div class="mb-3">
                                    <label class="form-label">SEO Başlığı (Meta Title)</label>
                                    <input type="text" name="meta_title" class="form-control" value="<?= htmlspecialchars($yazi['meta_title']) ?>">
                                </div>
                                <div class="mb-3">
                                    <label class="form-label">SEO Açıklaması (Meta Description)</label>
                                    <textarea name="meta_description" class="form-control" rows="4"><?= htmlspecialchars($yazi['meta_description']) ?></textarea>
                                </div>
                            </div>
                        </div>
                        
                        <button type="submit" name="yazi_duzenle" class="btn btn-warning text-white w-100 btn-lg">Değişiklikleri Kaydet</button>
                    </div>
                </div>
            </form>
        </div>
    </div>
</div>

<script src="https://cdn.tiny.cloud/1/vrj5aef2zvyqm82vfs8ay0ltvq1l9v6bmkio7ovzkqj8trrq/tinymce/6/tinymce.min.js" referrerpolicy="origin"></script>
<script>
    tinymce.init({
        selector: '#content',
        plugins: 'anchor autolink charmap codesample emoticons image link lists media searchreplace table visualblocks wordcount',
        toolbar: 'undo redo | blocks fontfamily fontsize | bold italic underline strikethrough | link image media table | align lineheight | numlist bullist indent outdent | emoticons charmap | removeformat',
        language: 'tr',
        height: 500
    });

    // Slug değiştirici (Sadece manuel olarak başlık değiştirildiğinde tetiklenir, mevcut slug'ı ezmemek için)
    document.getElementById('title').addEventListener('change', function() {
        var title = this.value;
        var slug = title.toLowerCase()
            .replace(/ğ/g, 'g')
            .replace(/ü/g, 'u')
            .replace(/ş/g, 's')
            .replace(/ı/g, 'i')
            .replace(/ö/g, 'o')
            .replace(/ç/g, 'c')
            .replace(/[^a-z0-9-]/g, '-') 
            .replace(/-+/g, '-')         
            .replace(/^-|-$/g, '');      
        
        // Sadece slug alanı boşsa otomatik doldur (mevcut SEO yapısını bozmamak için)
        if(document.getElementById('slug').value === '') {
            document.getElementById('slug').value = slug;
        }
    });
</script>

<?php require_once '../footer.php'; ?>