Beranda > osTicket > Bagaimana Membuat Pencarian dan Tampilan Knowledge Base di Sistem osTicket Berfungsi

Bagaimana Membuat Pencarian dan Tampilan Knowledge Base di Sistem osTicket Berfungsi

Baik di kedua Sistem osTicket versi 1.6 RC4 dan 1.6 RC5, mereka belum mengimplementasikan pencarian dan tampilan dari Knowledge Base sebagaimana mestinya. Setiap kali saya mencoba untuk mencari kata kunci tertentu yang memang sudah terdapat di database, sistem ini selalu memberikan hasil pencarian: Query returned 0 results. Menurut saya, hal ini benar-benar aneh. Oleh karena itu, saya membuat modifikasi supaya staff dapat mencari dan menampilkan hasil yang sesuai dengan kata kunci yang telah mereka masukkan.

Buka file \include\staff\premade.inc.php, lalu cari kode berikut:

4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//List premade answers.
$select='SELECT premade.*,dept_name ';
$from='FROM '.KB_PREMADE_TABLE.' premade LEFT JOIN '.DEPT_TABLE.' USING(dept_id) ';
 
//make sure the search query is 3 chars min...defaults to no query with warning message
if($_REQUEST['a']=='search') {
    if(!$_REQUEST['query'] || strlen($_REQUEST['query'])<3) {
        $errors['err']='Search term must be more than 3 chars';
    }else{
        //fulltext search.
        $search=true;
        $qstr.='&a='.urlencode($_REQUEST['a']);
        $qstr.='&query='.urlencode($_REQUEST['query']);
        $where=' WHERE MATCH(title,answer) AGAINST ('.db_input($_REQUEST['query']).')';
        if($_REQUEST['dept'])
            $where.=' AND dept_id='.db_input($_REQUEST['dept']);
    }
}
 
//I admit this crap sucks...but who cares??

lalu timpa dengan kode di bawah ini:

4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//List premade answers.
$select='SELECT DISTINCT(d.dept_name), premade.* ';
$from='FROM '.KB_PREMADE_TABLE.' premade, '.DEPT_TABLE.' d ';
 
//make sure the search query is 3 chars min...defaults to no query with warning message
if($_REQUEST['a']=='search') {
    if(!$_REQUEST['query'] || strlen($_REQUEST['query'])<3) {
        $errors['err']=I_S_PREM_SEARCH_TERM;
    }else{
        //fulltext search.
        $search=true;
        $qstr.='&a='.urlencode($_REQUEST['a']);
        $qstr.='&query='.urlencode($_REQUEST['query']);
        $searchfor = $_REQUEST['query'];
        $where=" WHERE (premade.title LIKE '%$searchfor%' 
                 OR premade.answer LIKE '%$searchfor%') 
                 AND (d.dept_id = premade.dept_id OR premade.dept_id = 0) "; 
	if($_REQUEST['dept'])
            $where.=' AND d.dept_id='.db_input($_REQUEST['dept']);
    }
}
if (!isset($where)) $where = 'WHERE d.dept_id = premade.dept_id 
                              OR premade.dept_id = 0'; 
//I admit this crap sucks...but who cares??

Sekarang staff dapat mencari dan menampilkan hasil sebagaimana mestinya. Di samping itu, jika sebuah record Premade Reply ditugaskan untuk All Departments (sebagai contoh, Anda sudah memiliki 3 departemen), maka sekarang Anda akan melihat di daftar tabel dari Premade Replies, terdapat 3 record Premade Reply untuk ketiga departemen tadi. Dengan cara ini, maka ketika staff mencari record Premade Reply milik departemen tertentu, maka sistem hanya akan menampilkan record milik departemen itu saja.

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