prepare("SELECT id FROM organizaciones WHERE org_id = ?"); $existing->execute([$org_id]); if ($existing->fetch()) { die("La organización ya existe."); } // Create DB record db()->prepare("INSERT INTO organizaciones (org_id, org_name) VALUES (?, ?)")->execute([$org_id, $org_name !== '' ? $org_name : $org_id]); // Keep filesystem directory for activity photos (Panel/Actividades) $org_path = aulatek_orgs_base_path() . "/$org_id"; if (!is_dir($org_path) && !mkdir($org_path, 0755, true) && !is_dir($org_path)) { error_log("orgs.php: failed to create directory $org_path"); } header("Location: ?action=index"); exit(); break; case "edit": $org_id = safe_path_segment(Sf($_GET['org'] ?? '')); $org_name = Sf($_POST['org_name'] ?? ''); if ($org_id === '' || $org_name === '') { die("Datos inválidos para actualizar la organización."); } db()->prepare("UPDATE organizaciones SET org_name = ? WHERE org_id = ?")->execute([$org_name, $org_id]); header("Location: ?action=edit&org=" . urlencode($org_id) . "&_result=" . urlencode("Cambios guardados.")); exit(); break; case "create_activity": ini_set('memory_limit', '512M'); ini_set('upload_max_filesize', '256M'); ini_set('post_max_size', '256M'); $org_id = safe_path_segment(Sf($_GET['org'] ?? '')); // Validate organization exists in DB $stmt = db()->prepare("SELECT id FROM organizaciones WHERE org_id = ?"); $stmt->execute([$org_id]); if (!$stmt->fetch()) { die("Organización no válida."); } $activity_name = safe_path_segment(Sf($_POST["name"] ?? '')); if (empty($activity_name)) { die("Nombre de la actividad no proporcionado."); } $activity_photo = $_FILES["photo"] ?? null; if ($activity_photo === null || $activity_photo["error"] !== UPLOAD_ERR_OK) { die("Error al subir la foto."); } $activity_path = aulatek_orgs_base_path() . "/$org_id/Panel/Actividades/$activity_name"; if (is_dir($activity_path)) { die("La actividad ya existe."); } mkdir($activity_path, 0755, true); move_uploaded_file($activity_photo["tmp_name"], "$activity_path/photo.jpg"); header("Location: ?action=edit&org=" . urlencode($org_id)); exit(); break; case "edit_activity": ini_set('memory_limit', '512M'); ini_set('upload_max_filesize', '256M'); ini_set('post_max_size', '256M'); $org_id = safe_path_segment(Sf($_GET['org'] ?? '')); $activity_name = safe_path_segment(Sf($_GET['activity'] ?? '')); $activity_path = aulatek_orgs_base_path() . "/$org_id/Panel/Actividades/$activity_name"; if (!is_dir($activity_path)) { die("Actividad no válida."); } $activity_photo = $_FILES["file"] ?? null; if ($activity_photo !== null && $activity_photo["error"] === UPLOAD_ERR_OK) { move_uploaded_file($activity_photo["tmp_name"], "$activity_path/photo.jpg"); } $new_name = safe_path_segment(Sf($_POST['nombre'] ?? '')); if ($new_name !== $activity_name && $new_name !== '') { $new_path = aulatek_orgs_base_path() . "/$org_id/Panel/Actividades/$new_name"; if (is_dir($new_path)) { die("Ya existe una actividad con ese nombre."); } rename($activity_path, $new_path); } header("Location: ?action=edit&org=" . urlencode($org_id)); exit(); break; } require_once "_incl/pre-body.php"; $view_action = $_GET["action"] ?? "index"; switch ($view_action) { case "edit_activity": $org_id = safe_path_segment(Sf($_GET['org'] ?? '')); $activity_name = safe_path_segment(Sf($_GET['activity'] ?? '')); $activity_path = aulatek_orgs_base_path() . "/$org_id/Panel/Actividades/$activity_name"; if (!is_dir($activity_path)) { die("Actividad no válida."); } ?>