<?php
// إخفاء الأخطاء المباشرة لمنع تسرب المعلومات للمستخدم
error_reporting(0);
ini_set('display_errors', 0);
header('Content-Type: application/json; charset=utf-8');

// 1. الاتصال بقاعدة البيانات والحماية (تأكد أن هذا هو المسار الصحيح لديك)
// نفترض أن هذا الملف موجود في مسار: /academy/live_v2/upload_media.php
$db_path = __DIR__ . '/../db_connect.php';
if (file_exists($db_path)) {
    require_once $db_path;
} else {
    echo json_encode(["error" => "لا يمكن الوصول لقاعدة البيانات"]);
    exit;
}

// تشغيل الجلسات بالطريقة المضمونة
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

// استخراج معرف المدرس
$current_teacher_id = isset($_SESSION['teacher_id']) ? intval($_SESSION['teacher_id']) : 0;
// إذا كان المرفوع من رابط البث المباشر المفتوح، قد يكون المعرف مرسلاً كمتغير، نحاول استعادته
if ($current_teacher_id <= 0 && isset($_POST['teacher_id'])) {
    $current_teacher_id = intval($_POST['teacher_id']);
}

// 2. التحقق من المدخلات الأساسية
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    echo json_encode(["error" => "طلب غير صالح"]);
    exit;
}

$subject = $_POST['subject'] ?? '';
$title = $_POST['title'] ?? '';
$type = $_POST['type'] ?? '';

// تنظيف بسيط لاسم المادة لتجنب مشاكل المجلدات
$subject = preg_replace('/[^a-zA-Z0-9_-]/', '_', $subject);

if (empty($subject) || empty($title) || empty($type)) {
    echo json_encode(["error" => "جميع الحقول مطلوبة"]);
    exit;
}

// ==========================================
// 3. معالجة يوتيوب
// ==========================================
if ($type === 'YOUTUBE') {
    $url = trim($_POST['url'] ?? '');
    if (empty($url)) {
        echo json_encode(["error" => "يرجى لصق رابط اليوتيوب"]);
        exit;
    }
    
    try {
        $query = "INSERT INTO academy_media_library (teacher_id, subject, title, media_type, source_url) VALUES (?, ?, ?, ?, ?)";
        $stmt = $conn->prepare($query);
        if ($stmt) {
            $stmt->bind_param("issss", $current_teacher_id, $subject, $title, $type, $url);
            if ($stmt->execute()) {
                echo json_encode(["success" => true]);
            } else {
                echo json_encode(["error" => "فشل الحفظ: " . $stmt->error]);
            }
            $stmt->close();
        } else {
            echo json_encode(["error" => "فشل إعداد الاستعلام"]);
        }
    } catch (Exception $e) {
        echo json_encode(["error" => "خطأ في قاعدة البيانات"]);
    }
    exit;
}

// ==========================================
// 4. معالجة الملفات العادية (أمان عالي)
// ==========================================
if (!isset($_FILES['file']) || $_FILES['file']['error'] !== 0) {
    echo json_encode(["error" => "يرجى اختيار ملف صالح. رمز الخطأ: " . ($_FILES['file']['error'] ?? 'غير معروف')]);
    exit;
}

$file = $_FILES['file'];
$fileName = basename($file['name']);
$fileTmp = $file['tmp_name'];
$fileSize = filesize($fileTmp);

// أمان إضافي لحجم الملف (100 ميجا الحد الأقصى للمجسمات الكبيرة)
if ($fileSize > 100 * 1024 * 1024) {
    echo json_encode(["error" => "حجم الملف يتجاوز 100 ميجابايت."]);
    exit;
}

// فحص الامتداد (القائمة البيضاء للمنصة التعليمية)
$allowed_extensions = ['glb', 'png', 'jpg', 'jpeg', 'pdf', 'mp4'];
$fileExt = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));

if (!in_array($fileExt, $allowed_extensions)) {
    echo json_encode(["error" => "هذا النوع من الملفات ($fileExt) غير مسموح برفعه."]);
    exit;
}

// تحديد المسار الآمن وإنشاء المجلد
$uploadDir = "models_library/" . $subject . "/";
if (!is_dir($uploadDir)) {
    mkdir($uploadDir, 0755, true); // 0755 أأمن
}

// توليد اسم عشوائي لمنع تشغيل الملفات التنفيذية
$cleanFileName = "media_" . time() . "_" . md5(uniqid(rand(), true)) . "." . $fileExt;
$destination = $uploadDir . $cleanFileName;
$fileUrl = "https://roozmari.com/academy/live_v2/" . $destination;

// النقل والحفظ في قاعدة البيانات
if (move_uploaded_file($fileTmp, $destination)) {
    try {
        $query = "INSERT INTO academy_media_library (teacher_id, subject, title, media_type, source_url) VALUES (?, ?, ?, ?, ?)";
        $stmt = $conn->prepare($query);
        if ($stmt) {
            $stmt->bind_param("issss", $current_teacher_id, $subject, $title, $type, $fileUrl);
            if ($stmt->execute()) {
                echo json_encode(["success" => true]);
            } else {
                @unlink($destination); // حذف الملف إذا فشل الحفظ بالقاعدة
                echo json_encode(["error" => "فشل حفظ البيانات في القاعدة"]);
            }
            $stmt->close();
        } else {
            echo json_encode(["error" => "فشل الاتصال بجدول المكتبة"]);
        }
    } catch (Exception $e) {
        @unlink($destination);
        echo json_encode(["error" => "استثناء: " . $e->getMessage()]);
    }
} else {
    echo json_encode(["error" => "فشل نقل الملف بالسيرفر، تأكد من أذونات مجلد models_library"]);
}
?>