PHPMaker memiliki kemampuan untuk merekam setiap perubahan yang terjadi di Database melalui fitur Audit Trail di Aplikasi Web yang dihasilkan olehnya. Jika Pengguna menambah, mengubah, atau bahkan menghapus Record, maka sistem dapat menyimpan catatan aktivitas tersebut. Hal ini penting untuk mengetahui siapa yang melakukan apa di dalam Aplikasi Web.
Untuk mengaktifkan Audit Trail, maka Anda cukup mengaktifkan pengaturan Audit Trail yang terdapat di tab level Table. Tentu saja Anda harus memilih terlebih dulu salah satu Table yang Anda inginkan dari panel Database.
Ada satu server event Row_CustomAction yang tidak bisa dideteksi oleh sistem. Oleh karena itu, kita sebagai Web Developer harus menambahkan sendiri fungsi yang akan merekam perubahan data melalui server event tadi. Anda cukup memanggil sebuah fungsi global yang disediakan oleh PHPMaker untuk merekam aktivitas yang bersifat kostum.
Katakanlah kita akan merekam aktivitas kostum yang dilakukan oleh Pengguna, maka kode selengkapnya pada server event Row_CustomAction adalah sebagai berikut:
function Row_CustomAction($action, $row) { if ($action == "star") $usr = (CurrentUserName()!="") ? CurrentUserName() : "guest"; $old_value = ew_ExecuteScalar("SELECT Starred FROM MyTable WHERE ID=" . $row["ID"]); ew_Execute("UPDATE MyTable SET Starred = 'Y' WHERE ID=" . $row["ID"]); // asumsi field ID tipenya Integer ew_WriteAuditTrail("log", ew_StdCurrentDateTime(), ew_ScriptName(), $usr, "Update MyTable", "MyTable", "Starred", "Starred", $old_value, "Y"); } }
Perhatikan kode tadi. Untuk merekam nilai yang lama, maka kita dapat mengambilnya cukup dengan menggunakan fungsi global yang bernama ew_ExecuteScalar yang akan mengembalikan nilai pada satu-satunya field yang dipilih pada Record pertama yang dikembalikan oleh fungsi tadi.
Untuk merekam ke Audit Trail, maka kita menggunakan fungsi global yang bernama ew_WriteAuditTrail. Anda bisa melihat kode selengkapnya mengenai fungsi ini melalui file phpfn*.php (tanda * tergantung versi major PHPMaker).
Betapa cepat dan mudahnya, bukan? 😀
Tinggalkan Balasan