Sebagai Administrator di Sistem osTicket, suatu ketika Anda dapat membatasi tiket yang dikirim oleh pengguna menggunakan email yang sama dalam periode waktu tertentu. Sebagai contoh, Anda ingin membatasi hanya 3 tiket yang dapat dikirim oleh seorang pengguna (dideteksi dari emailnya) dalam waktu satu bulan terakhir. Ketika kondisi ini terpenuhi, maka Sistem osTicket akan menampilkan pesan seperti: “Anda tidak diijinkan mengirim tiket karena Anda sudah pernah mengirim 3 tiket dalam 30 hari terakhir!”, dan setelah itu, sistem akan langsung menolak tiket yang sedang akan dikirim oleh pengguna tadi. Untuk itu, inilah solusi yang berhasil saya buat.
-
Buka file \include\class.ticket.php, dan cari kode ini:
1152 1153
//Any error above is fatal. if($errors) { return 0; }
sebelum baris pertama dari cuplikan kode di atas, tambahkan kode berikut ini:
1151 1152 1153 1154 1155 1156 1157 1158
$sqllimit='SELECT email FROM '.TICKET_TABLE.' WHERE 30 >= TIMESTAMPDIFF(DAY,created,NOW()) AND email='.db_input($var['email']).''; $reslimit=db_query($sqllimit); // Batasi hanya 3 tiket yang dapat dikirim dalam waktu 30 hari terakhir if (db_num_rows($reslimit) >= 3) { $errors['err'] = 'Anda tidak diijinkan mengirim tiket karena Anda sudah pernah mengirim 3 tiket dalam 30 hari terakhir!'; }
Jika Anda ingin mengganti periode hari tadi (misalnya Anda ingin mengganti dari 30 hari menjadi satu minggu), maka Anda dapat menggantinya dari kode di atas pada bagian yang ini:
WHERE 30 >= TIMESTAMPDIFF(DAY,created,NOW())
menjadi:
WHERE 7 >= TIMESTAMPDIFF(DAY,created,NOW())
Dan jangan lupa pula untuk menyesuaikan pesan di atas yang akan ditampilkan ke klien Anda.

[...] being asked to myself regarding the modification on osTicket System I made through this article: Limiting Tickets Sent by Same Email Within The Last N Days in osTicket. That request was about send email to user when the limit tickets is reached and the last ticket is [...]