# Patch Final Lampiran Materi

## Masalah yang diperbaiki

Instalasi tertentu menampilkan pemberitahuan bahwa lampiran belum aktif karena tabel `materi_lampiran` tidak ditemukan, walaupun migration Fase 5B pernah tercatat.

## Perbaikan

- Skema lampiran dipastikan otomatis ketika halaman Materi dibuka.
- Tabel dibuat dengan tipe foreign key yang mengikuti tabel `materi` dan `users`.
- Bila MariaDB menolak foreign key, sistem memakai mode kompatibel tanpa menghilangkan fungsi lampiran.
- Tabel kosong dengan struktur tidak lengkap dipulihkan secara aman.
- Indeks, catatan migration, folder storage, izin tulis, dan `.htaccess` diverifikasi.
- Migration `015_repair_materi_lampiran.sql` serta script `database/repair_materi_lampiran.php` disediakan sebagai fallback.

## Fungsi yang dipertahankan

- Upload PDF, PNG, JPG/JPEG.
- Maksimal 5 MB per file dan 5 file per materi.
- Preview gambar/PDF, unduh, urutan, aktif/nonaktif, dan hapus.
- Lampiran nonaktif atau materi nonaktif tidak dapat dibuka oleh siswa.
- Validasi MIME, struktur gambar, header PDF, nama acak, rollback, CSRF, role guard, dan streaming terproteksi.
