Pernahkah Anda ingin menampilkan tiket untuk petugas staf dalam suatu departemen itu saja pada sistem osTicket? Seperti kita ketahui, kondisi yang terjadi saat ini di osTicket sampai dengan versi 1.6 RC5 adalah: ketika seorang petugas staf menampilkan daftar tiket melalui panel staff, maka dia tetap dapat melihat semua tiket milik departemen lainnya di samping tiket untuk departemennya sendiri. Dengan modifikasi ini, maka staf dibatasi hanya dapat melihat tiket untuk departemennya saja, baik melalui halaman daftar tiket, maupun dari halaman ketika menampilkan sebuah tiket. Berikut ini solusinya.
-
Buka file \include\staff\tickets.inc.php Anda, lalu cari kode ini:
83 84
//limited depts....user can access tickets assigned to them regardless of the dept. $qwhere =' WHERE (ticket.dept_id IN ('.implode(',',$depts).') OR ticket.staff_id='.$thisuser->getId().')';
kemudian timpa dengan kode berikut:
83 84 85
//limited depts....user can access tickets assigned to them regardless of the dept. //$qwhere =' WHERE (ticket.dept_id IN ('.implode(',',$depts).') OR ticket.staff_id='.$thisuser->getId().')'; $qwhere =' WHERE (ticket.dept_id = '.$thisuser->getDeptId().' OR ticket.staff_id='.$thisuser->getId().')';
-
Buka file \scp\tickets.php Anda, dan cari kode ini:
24
$ticket=null; //clean start.
setelah baris kode tersebut, tambahkan kode di bawah ini:
25 26 27 28 29 30 31 32 33 34 35
if($id=$_REQUEST['id']?$_REQUEST['id']:$_POST['ticket_id'] && is_numeric($id)) { $qselect = 'SELECT ticketID, dept_id, staff_id FROM '.TICKET_TABLE. ' WHERE ticket_id='.$id.''; $rselect = db_query($qselect); if (db_num_rows($rselect) > 0) { list($ticketID, $dept_id,$staff_id) = db_fetch_row($rselect); if (($dept_id!=$thisuser->getDeptId()) && ($staff_id!=$thisuser->getId()) ) { $errors['err']='The ticket # '.$ticketID.' belongs to another department!'; } } }
Cari lagi kode ini:
407 408 409
if(!$thisuser->isAdmin()){ $sql.=' WHERE ticket.dept_id IN('.implode(',',$thisuser->getDepts()).') OR ticket.staff_id='.db_input($thisuser->getId()); }
lalu timpa dengan kode berikut:
407 408 409 410
if(!$thisuser->isAdmin()){ //$sql.=' WHERE ticket.dept_id IN('.implode(',',$thisuser->getDepts()).') OR ticket.staff_id='.db_input($thisuser->getId()); $sql .=' WHERE (ticket.dept_id = '.$thisuser->getDeptId().' OR ticket.staff_id='.$thisuser->getId().')'; }
Itulah semuanya. Selamat menikmati hasilnya!

Hi Masino, i have tested this mod and i have found a problem
When you log as Admin, and try to access any ticket, i you are not in the “ticket group”, you cant access it
I’d rather admin has total access to tickcets so i suggest includding the condition
&& (!$thisuser->isAdmin()) in your MOD
So it wold look like: