Skip to content
Snippets Groups Projects
ajax.kbase.php 3.09 KiB
Newer Older
  • Learn to ignore specific revisions
  • Jared Hancock's avatar
    Jared Hancock committed
    <?php
    /*********************************************************************
        ajax.kbase.php
    
        AJAX interface for knowledge base related...allowed methods.
    
        Peter Rotich <peter@osticket.com>
    
        Copyright (c)  2006-2013 osTicket
    
    Jared Hancock's avatar
    Jared Hancock committed
        http://www.osticket.com
    
        Released under the GNU General Public License WITHOUT ANY WARRANTY.
        See LICENSE.TXT for details.
    
        vim: expandtab sw=4 ts=4 sts=4:
    **********************************************************************/
    if(!defined('INCLUDE_DIR')) die('!');
    
    
    Jared Hancock's avatar
    Jared Hancock committed
    class KbaseAjaxAPI extends AjaxController {
    
    Jared Hancock's avatar
    Jared Hancock committed
        function cannedResp($id, $format='') {
    
            global $thisstaff, $cfg;
    
    Jared Hancock's avatar
    Jared Hancock committed
    
            include_once(INCLUDE_DIR.'class.canned.php');
    
            if(!$id || !($canned=Canned::lookup($id)) || !$canned->isEnabled())
                Http::response(404, 'No such premade reply');
    
            //Load ticket.
            if($_GET['tid']) {
                include_once(INCLUDE_DIR.'class.ticket.php');
                $ticket = Ticket::lookup($_GET['tid']);
            }
    
    
            $resp = array();
    
    Jared Hancock's avatar
    Jared Hancock committed
            switch($format) {
                case 'json':
                    $resp['id'] = $canned->getId();
                    $resp['ticket'] = $canned->getTitle();
    
                    $resp['response'] = $ticket
                        ? $ticket->replaceVars($canned->getResponseWithImages())
                        : $canned->getResponseWithImages();
                    $resp['files'] = $canned->attachments->getSeparates();
    
                    if (!$cfg->isHtmlThreadEnabled()) {
    
    Peter Rotich's avatar
    Peter Rotich committed
                        $resp['response'] = Format::html2text($resp['response'], 90);
    
                        $resp['files'] += $canned->attachments->getInlines();
                    }
    
    Jared Hancock's avatar
    Jared Hancock committed
    
                    $response = $this->json_encode($resp);
                    break;
    
    Jared Hancock's avatar
    Jared Hancock committed
                case 'txt':
                default:
    
                    $response =$ticket?$ticket->replaceVars($canned->getResponse()):$canned->getResponse();
    
                    if (!$cfg->isHtmlThreadEnabled())
    
    Peter Rotich's avatar
    Peter Rotich committed
                        $response = Format::html2text($response, 90);
    
    Jared Hancock's avatar
    Jared Hancock committed
    
            return $response;
        }
    
        function faq($id, $format='html') {
    
            //XXX: user ajax->getThisStaff() (nolint)
            global $thisstaff;
    
    Jared Hancock's avatar
    Jared Hancock committed
            include_once(INCLUDE_DIR.'class.faq.php');
    
            if(!($faq=FAQ::lookup($id)))
                return null;
    
    
            //TODO: $fag->getJSON() for json format. (nolint)
    
    Jared Hancock's avatar
    Jared Hancock committed
            $resp = sprintf(
                    '<div style="width:650px;">
    
                     <strong>%s</strong><div class="thread-body">%s</div>
                     <div class="clear"></div>
    
    Jared Hancock's avatar
    Jared Hancock committed
                     <div class="faded">Last updated %s</div>
                     <hr>
                     <a href="faq.php?id=%d">View</a> | <a href="faq.php?id=%d">Attachments (%s)</a>',
    
                    $faq->getQuestion(),
    
                    $faq->getAnswerWithImages(),
    
    Jared Hancock's avatar
    Jared Hancock committed
                    Format::db_daydatetime($faq->getUpdateDate()),
                    $faq->getId(),
                    $faq->getId(),
                    $faq->getNumAttachments());
            if($thisstaff && $thisstaff->canManageFAQ()) {
                $resp.=sprintf(' | <a href="faq.php?id=%d&a=edit">Edit</a>',$faq->getId());
    
            }
            $resp.='</div>';
    
    
            return $resp;