Proyectos

No se ha indicado un aulario válido.

($a["created_at"] ?? 0); }); return $projects; } // Handle actions $message = ""; $error = ""; if ($_SERVER["REQUEST_METHOD"] === "POST") { $action = $_POST["action"] ?? ""; if ($action === "create_project") { $name = trim($_POST["name"] ?? ""); $description = trim($_POST["description"] ?? ""); if ($name !== "") { $project_id = generate_id($name); $project_data = [ "id" => $project_id, "name" => $name, "description" => $description, "created_at" => time(), "updated_at" => time(), "items" => [] ]; save_project($proyectos_dir, $project_id, $project_data); // Create project directory $project_dir = "$proyectos_dir/$project_id"; if (!is_dir($project_dir)) { mkdir($project_dir, 0755, true); } header("Location: /entreaulas/proyectos.php?aulario=" . urlencode($aulario_id) . "&project=" . urlencode($project_id)); exit; } else { $error = "El nombre del proyecto es obligatorio."; } } if ($action === "delete_project") { $project_id = $_POST["project_id"] ?? ""; if ($project_id !== "") { $project_file = "$proyectos_dir/$project_id.json"; if (file_exists($project_file)) { unlink($project_file); // Also delete project directory $project_dir = "$proyectos_dir/$project_id"; if (is_dir($project_dir)) { // Delete all files in directory $files = glob("$project_dir/*"); foreach ($files as $file) { if (is_file($file)) { unlink($file); } } rmdir($project_dir); } $message = "Proyecto eliminado correctamente."; } } } if ($action === "add_item") { $project_id = $_POST["project_id"] ?? ""; $item_type = $_POST["item_type"] ?? "link"; $item_name = trim($_POST["item_name"] ?? ""); $item_url = trim($_POST["item_url"] ?? ""); if ($project_id !== "" && $item_name !== "") { $project = load_project($proyectos_dir, $project_id); if ($project) { $item_id = generate_id($item_name); $item = [ "id" => $item_id, "name" => $item_name, "type" => $item_type, "created_at" => time() ]; $can_add_item = true; if ($item_type === "link" && $item_url !== "") { $item["url"] = $item_url; } elseif ($item_type === "file" && isset($_FILES["item_file"]) && $_FILES["item_file"]["error"] === UPLOAD_ERR_OK) { // Handle file upload with validation $project_dir = "$proyectos_dir/$project_id"; if (!is_dir($project_dir)) { mkdir($project_dir, 0755, true); } // Validate file size (max 500MB as configured in PHP) $max_size = 500 * 1024 * 1024; // 500MB if ($_FILES["item_file"]["size"] > $max_size) { $error = "El archivo es demasiado grande. Tamaño máximo: 500MB."; $can_add_item = false; } // Validate file type if ($can_add_item) { $original_name = $_FILES["item_file"]["name"]; $ext = strtolower(pathinfo($original_name, PATHINFO_EXTENSION)); $allowed_extensions = ["pdf", "doc", "docx", "xls", "xlsx", "ppt", "pptx", "jpg", "jpeg", "png", "gif", "webp", "txt", "zip", "mp4", "mp3"]; if (!in_array($ext, $allowed_extensions, true)) { $error = "Tipo de archivo no permitido. Extensiones permitidas: " . implode(", ", $allowed_extensions); $can_add_item = false; } } if ($can_add_item) { $safe_name = safe_filename($original_name); $target_path = "$project_dir/$safe_name"; // Make filename unique if exists $counter = 1; $basename = pathinfo($safe_name, PATHINFO_FILENAME); while (file_exists($target_path)) { $safe_name = safe_filename($basename . "_" . $counter . "." . $ext); $target_path = "$project_dir/$safe_name"; $counter++; } if (move_uploaded_file($_FILES["item_file"]["tmp_name"], $target_path)) { $item["filename"] = $safe_name; $item["original_name"] = $original_name; } else { $error = "No se pudo subir el archivo."; $can_add_item = false; } } } if ($can_add_item) { if (!isset($project["items"])) { $project["items"] = []; } $project["items"][] = $item; $project["updated_at"] = time(); save_project($proyectos_dir, $project_id, $project); header("Location: /entreaulas/proyectos.php?aulario=" . urlencode($aulario_id) . "&project=" . urlencode($project_id)); exit; } } } } if ($action === "delete_item") { $project_id = $_POST["project_id"] ?? ""; $item_id = $_POST["item_id"] ?? ""; if ($project_id !== "" && $item_id !== "") { $project = load_project($proyectos_dir, $project_id); if ($project && isset($project["items"])) { $new_items = []; foreach ($project["items"] as $item) { if ($item["id"] !== $item_id) { $new_items[] = $item; } else { // Delete file if it's a file type if ($item["type"] === "file" && isset($item["filename"])) { $file_path = "$proyectos_dir/$project_id/" . $item["filename"]; if (file_exists($file_path)) { unlink($file_path); } } } } $project["items"] = $new_items; $project["updated_at"] = time(); save_project($proyectos_dir, $project_id, $project); header("Location: /entreaulas/proyectos.php?aulario=" . urlencode($aulario_id) . "&project=" . urlencode($project_id)); exit; } } } } // Determine current view $current_project = $_GET["project"] ?? null; $view = $current_project ? "project" : "list"; ?>

Proyectos

Gestiona proyectos con enlaces y archivos para tu aulario.

0): ?>

elementos

No hay proyectos creados aún. ¡Crea tu primer proyecto!

Error

Proyecto no encontrado.

Volver a Proyectos

← Volver a Proyectos
0): ?>

Este proyecto aún no tiene elementos. ¡Añade tu primer enlace o archivo!