Beranda > osTicket > Tampilkan Tiket Hanya untuk Anggota Departemen di osTicket v1.6 RC5

Tampilkan Tiket Hanya untuk Anggota Departemen di osTicket v1.6 RC5

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.

  1. 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().')';
  2. 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! :-)

  • Share/Bookmark
260 kali dibaca Cetak Artikel Ini Cetak Artikel Ini

  1. Daniel
    26 Juni 2010 pada 23:30 | #1

    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:

    < 0) {
        list($ticketID, $dept_id,$staff_id) = db_fetch_row($rselect);
        if (($dept_id!=$thisuser->getDeptId()) && ($staff_id!=$thisuser->getId()) && (!$thisuser->isAdmin()) ) { 
          $errors['err']='The ticket # '.$ticketID.' belongs to another department!';
        }
      }
    }
    >>
  1. Belum ada tautan balik