Luar biasa memang fleksibelnya PHPMaker! Setiap hari, ada saja hal baru yang bisa dipelajari sekaligus bermanfaat untuk diterapkan di Aplikasi Web yang di-generate olehnya. Seperti trik yang satu ini. Kita dapat membatasi field apa saja yang akan disertakan untuk Audit Trail, cukup dengan hanya menulis sedikit kode dari bagian Server Events.
Seperti yang kita ketahui, Audit Trail adalah salah satu fitur yang berguna untuk memonitor aktivitas apa saja yang dilakukan oleh Pengguna di Aplikasi Web yang dihasilkan oleh PHPMaker.
Secara standar, jika fitur Audit Trail untuk suatu table kita aktifkan dari PHPMaker, maka sistem akan merekam nilai di semua field yang terdapat di table tadi. Sering kali kita sebagai Web Developer dituntut untuk bisa membatasi field mana saja yang disertakan untuk Audit Trail tadi, dan field mana saja yang tidak perlu. Apalagi jika jumlah field di table tadi relatif banyak, dan kita tidak ingin merekam nilai dari semua field tadi.
Sejak versi 12, PHPMaker sudah menambahkan server event baru lagi khusus untuk kebutuhan itu. Namanya adalah AuditTrail_Inserting. Seperti namanya, server event ini akan dipanggil sesaat sebelum sistem menyimpan data ke table (misalkan namanya) audittrail di Database. Artinya, kita sebagai Web Developer dapat menambahkan sedikit kode PHP untuk menentukan field mana saja yang akan kita sertakan untuk Audit Trail tadi.
Katakanlah kita ingin menerapkan Audit Trail hanya untuk table orderdetails pada file demo project, dan kita tidak ingin menyimpan nilai di semua field pada table orderdetails tadi, tapi hanya ingin menyimpan nilai dari field Quantity saja ke dalam Audit Trail tersebut.
Pertama sekali, pastikan kita sudah mengaktifkan fitur Audit Trail, dan juga item Use database table serta menentukan table tempat menyimpan data Audit Trail tersebut dari menu PHP -> General Options -> PHP -> Audit Trail.
Kedua, pastikan juga kita sudah mengaktifkan pilihan Audit Trail untuk table orderdetails, melalui pengaturan level Table.
Ketiga, dan inilah bagian yang paling mengasyikkan, kita cukup menulis sedikit kode PHP saja ke dalam server event AuditTrail_Inserting, sehingga kode selengkapnya menjadi seperti ini:
// AuditTrail Inserting event function AuditTrail_Inserting(&$rsnew) { //var_dump($rsnew); if ($rsnew["table"] == "orderdetails" && $rsnew["field"] == "Quantity") { return TRUE; } else { return FALSE; } }
Perhatikanlah kode tadi. Kita memeriksa apakah nama table-nya adalah orderdetails dan nama field-nya adalah Quantity. Jika ya, maka kembalikan nilai TRUE, sebaliknya kembalikan nilai FALSE. Itu artinya, selain dari nama table dan nama field tadi, maka kita tidak akan menyimpannya ke Audit Trail.
Tentu saja kode tersebut bisa kita kembangkan untuk nama table dan nama field lainnya sesuai kebutuhan. Contoh di atas hanyalah yang paling sederhana saja, untuk memudahkan Anda dalam memahami fungsi dan kegunaan dari server event itu.
Seandainya kita juga ingin menerapkan Audit Trail tadi untuk table orders, dan kita ingin membatasi hanya untuk field OrderID saja, maka kode di atas disesuaikan menjadi seperti ini:
// AuditTrail Inserting event function AuditTrail_Inserting(&$rsnew) { //var_dump($rsnew); if ( ($rsnew["table"] == "orderdetails" && $rsnew["field"] == "Quantity") || ($rsnew["table"] == "orders" && $rsnew["field"] == "OrderID")) { return TRUE; } else { return FALSE; } }
Betapa kerennya PHPMaker, bukan? Hanya dengan mengaktifkan pengaturan yang terkait Audit Trail tadi (baik di level Global maupun level Table), lalu menambahkan sedikit kode di server event AuditTrail_Inserting itu saja, kita sudah bisa menggunakan Audit Trail sekaligus membatasi secara dinamis, field mana saja yang disertakan ke dalamnya.
Sekarang, bayangkanlah jika Anda membangun Aplikasi Web masih dengan cara-cara manual. Berapa lama waktu yang Anda butuhkan untuk menghasilkan fitur seperti yang terdapat di PHPMaker tadi? Hohohoho… 😛
ibunk mengatakan
Salam Kenal Bang, baru belajar phpmaker nich, ada tugas kuliah dikit pakai phpmaker, cman mentok dan bingung nich..
Jadi tugasnya buat absensi karyawan, untuk proses input dan view saya sudah bisa, tapi ada bagian di Login User yg mentok, skernarionya gini bang :
Karyawan ada yg namanya Cabang (posisi lokasi dikantor cabang mana ) contoh :
Budi
Cabang : Bandung
Nah terus atasan budi namanya misalnya benny, nah ketika benny login otomatis hanya membaca data karyawan yang cabang bandung saja, dia tidak bisa baca data absensi karyawan jakarta
Kira2 gimana ya bang solusinya, butuh pencerahan yang harus saya lakuin gimna ? apa ada settingan lain agar seperti itu
makasih bang
Masino Sinaga mengatakan
Solusinya supaya apa ya?