Hanya Staf yang Diberi Tugas atau Admin yang Dapat Menutup dan Membuka Ulang Tiket di osTicket v1.6 RC5

Modifikasi berikut ini akan menambahkan sebuah fitur kecil untuk membatasi kemampuan staff dalam menutup tiket yang statusnya masih terbuka, atau membuka ulang tiket yang statusnya sudah ditutup di osTicket v1.6 RC5. Hanya staf yang telah ditugaskan atau admin yang dapat menutup atau membuka ulang sebuah tiket. Artinya, jika suatu tiket belum ditugaskan ke staf manapun, maka hanya admin yang dapat menutup tiket tersebut. Karena tidak ada informasi staff_id untuk tiket yang statusnya sudah ditutup, maka perlakuan terhadap tiket ini mirip dengan tiket yang belum ditugaskan. Oleh karenanya, aturan ini berlaku juga untuk tiket tersebut.

  1. Buka file \include\class.ticket.php Anda, dan cari kode ini:

    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    
        //Close the ticket
        function close(){
     
            $sql= 'UPDATE '.TICKET_TABLE.' SET status='.db_input('closed').',staff_id=0,isoverdue=0,duedate=NULL,updated=NOW(),closed=NOW() '.
                  ' WHERE ticket_id='.db_input($this->getId());
            return (db_query($sql) && db_affected_rows())?true:false;
        }
        //set status to open on a closed ticket.
        function reopen(){
            global $thisuser;
            $sql= 'UPDATE '.TICKET_TABLE.' SET status='.db_input('open').',isanswered=0,updated=NOW(),reopened=NOW() WHERE ticket_id='.db_input($this->getId());
            return (db_query($sql) && db_affected_rows())?true:false;
        }

    lalu timpa dengan kode berikut:

    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    
        //Close the ticket
        function close(){
        	// MOD Only The Assignee Staff Or Admin Can Close The Ticket, 
    	// by Masino Sinaga (http://www.openscriptsolution.com), December 4, 2009
        	global $thisuser;
            if ($this->getStaffId()!=$thisuser->getId() && !$thisuser->isadmin()) {
    	  return false;	
    	} else {
              $sql= 'UPDATE '.TICKET_TABLE.' SET status='.db_input('closed').',staff_id=0,isoverdue=0,duedate=NULL,updated=NOW(),closed=NOW() '.
                    ' WHERE ticket_id='.db_input($this->getId());        
              return (db_query($sql) && db_affected_rows())?true:false;
            }
        }
        //set status to open on a closed ticket.
        function reopen(){
        	// MOD Only The Assignee Staff Or Admin Can ReOpen The Ticket, 
    	// by Masino Sinaga (http://www.openscriptsolution.com), December 4, 2009
            global $thisuser;
            if ($this->getStaffId()!=$thisuser->getId() && !$thisuser->isadmin()) {
    	  return false;	
    	} else {
              $sql= 'UPDATE '.TICKET_TABLE.' SET status='.db_input('open').',isanswered=0,updated=NOW(),reopened=NOW() WHERE ticket_id='.db_input($this->getId());
              return (db_query($sql) && db_affected_rows())?true:false;
            }
        }
  2. Buka file \scp\tickets.php Anda, dan cari kode ini:

    210
    
    $errors['err']='Problems closing the ticket. Try again';

    lalu timpa dengan kode berikut:

    210
    
    $errors['err']='Problems closing the ticket or you are not allowed to close tickets.';

    Cari lagi kode yang ini:

    224
    
    $errors['err']='Problems reopening the ticket. Try again';

    lalu timpa dengan kode berikut:

    224
    
    $errors['err']='Problems reopening the ticket or you are not allowed to reopen tickets.';

Itulah semuanya! Selamat menikmati kode dan hasilnya. :-)

Share

394 kali dibacaCetak Artikel Ini Cetak Artikel Ini

Komentar

  1. Amarchand mengatakan:

    Hi Masino Sinaga,

    I need some help. We want to disable assign ticket option to staff group. I mean only admin group can assign ticket.
    Please help me in this issue.

    Thanks & Regards
    Amarchand

Utarakan pikiran Anda

*


*