prepare("SELECT * FROM program_bantuan WHERE id=? LIMIT 1"); $stmt->bind_param('i', $id); $program = fetch_all_stmt($stmt)[0] ?? null; if (!$program) json_response('err', 'Program tidak ditemukan.'); if ($_SESSION['role'] === 'admin_rumah_ibadah') { if (!is_admin_rumah_ibadah_id((int)$program['rumah_ibadah_id'], (int)$_SESSION['user_id'], true)) { json_response('err', 'Akses ditolak. Program ini bukan milik rumah ibadah yang dikelola akun Anda.', [], 403); } } $jenis = post('jenis_bantuan'); $status = post('status_program', 'aktif'); if (!valid_enum($jenis, ['zakat','sembako','uang_tunai','lainnya']) || !valid_enum($status, ['aktif','selesai','dibatalkan'])) json_response('err', 'Pilihan tidak valid.'); $nama = clean_text(post('nama_program'), 150); $deskripsi = clean_text(post('deskripsi'), 1500); $bulan = (int) post('bulan'); $tahun = (int) post('tahun'); $target = (int) post('target_frekuensi', 1); $nominalInput = post('nominal', ''); $nominal = $nominalInput === '' ? null : (int) $nominalInput; $jumlah_item = clean_text(post('jumlah_item', ''), 100); if ($nama==='' || $bulan<1 || $bulan>12 || $tahun<2000 || $target<1) json_response('err', 'Data program tidak valid.'); if ($nominal !== null && $nominal < 0) json_response('err', 'Nominal tidak boleh minus.'); $stmt = $koneksi->prepare("UPDATE program_bantuan SET nama_program=?, jenis_bantuan=?, deskripsi=?, bulan=?, tahun=?, target_frekuensi=?, nominal=?, jumlah_item=?, status_program=? WHERE id=?"); $stmt->bind_param('sssiiiissi', $nama, $jenis, $deskripsi, $bulan, $tahun, $target, $nominal, $jumlah_item, $status, $id); if (!$stmt->execute()) json_response('err', 'Gagal mengubah program: ' . $koneksi->error); json_response('ok', 'Program bantuan berhasil diubah.', ['id' => $id]); ?>