diff --git a/public_html/entreaulas/proyectos.php b/public_html/entreaulas/proyectos.php index 663b720..08082bb 100644 --- a/public_html/entreaulas/proyectos.php +++ b/public_html/entreaulas/proyectos.php @@ -153,6 +153,8 @@ if ($_SERVER["REQUEST_METHOD"] === "POST") { "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) { @@ -166,49 +168,56 @@ if ($_SERVER["REQUEST_METHOD"] === "POST") { $max_size = 500 * 1024 * 1024; // 500MB if ($_FILES["item_file"]["size"] > $max_size) { $error = "El archivo es demasiado grande. Tamaño máximo: 500MB."; - continue; + $can_add_item = false; } // Validate file type - $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); - continue; + 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; + } } - $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); + if ($can_add_item) { + $safe_name = safe_filename($original_name); $target_path = "$project_dir/$safe_name"; - $counter++; + + // 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(); - 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."; - } + save_project($proyectos_dir, $project_id, $project); + + header("Location: /entreaulas/proyectos.php?aulario=" . urlencode($aulario_id) . "&project=" . urlencode($project_id)); + exit; } - - 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; } } }