Your IP : 216.73.216.224


Current Path : /var/www/html/administrator/components/com_jssupportticket/models/
Upload File :
Current File : /var/www/html/administrator/components/com_jssupportticket/models/faqs.php

<?php

/**
 * @Copyright Copyright (C) 2012 ... Ahmad Bilal
 * @license GNU/GPL http://www.gnu.org/copyleft/gpl.html
 * Company:		Buruj Solutions
  + Contact:		www.burujsolutions.com , info@burujsolutions.com
 * Created on:	May 03, 2012
  ^
  + Project: 	JS Tickets
  ^
 */
defined('_JEXEC') or die('Not Allowed');

jimport('joomla.application.component.model');
jimport('joomla.html.html');

class JSSupportticketModelFaqs extends JSSupportTicketModel {

    function __construct() {
        parent::__construct();
    }

    function getFaqForForm($id) {
        if($id) if(!is_numeric($id)) return false;
        $db = $this->getDBO();
        $configs = $this->getJSModel('config')->getConfigByFor('default');
        $title = "";
        $categories = $this->getJSModel('knowledgebase')->getCategories('faqs');
        if(isset($id) && $id <> ''){
            $query = "SELECT faq.*  FROM `#__js_ticket_faqs` AS faq  WHERE faq.id = ".$id;
            $db->setQuery($query);
            $faqs= $db->loadObject();
        }
        $status = array(array('value' => null, 'text' => JText::_('Select Status')),array('value' => '1', 'text' => JText::_('Active')),array('value' => '0', 'text' => JText::_('Disabled')));
        if(isset($id) && $id <> ''){
            $lists['categories'] = JHTML::_('select.genericList', $categories, 'categoryid', 'class="inputbox js-ticket-select-field" ' . '', 'value', 'text',$faqs->categoryid);
            $lists['status'] = JHTML::_('select.genericList', $status, 'status', 'class="inputbox js-ticket-select-field " ' . '', 'value', 'text',$faqs->status);
        }else{
            $lists['categories'] = JHTML::_('select.genericList', $categories, 'categoryid', 'class="inputbox js-ticket-select-field" ' . '', 'value', 'text','');
            $lists['status'] = JHTML::_('select.genericList', $status, 'status', 'class="inputbox  js-ticket-select-field" ' . '', 'value', 'text',1);
        }
        if (isset($faqs))
            $result[0] = $faqs;
        $result[1] = $lists;
        return $result;
    }

    function storeFaq($data){
        $user = JSSupportticketCurrentUser::getInstance();
        if(!$user->getIsAdmin()){
            $permission = ($data['id'] == '') ? 'Add FAQ' : 'Edit FAQ';
            $per = $user->checkUserPermission($permission);
            if ($per == false) 
                return PERMISSION_ERROR;
        }
        $data['staffid'] = $user->getStaffId();
        $row = $this->getTable('faqs');
        $data['content'] = JFactory::getApplication()->input->get('faq_content', '', 'raw');
        if (!$row->bind($data)) {
            $this->setError($row->getError());
            return SAVE_ERROR;
        }
        if (!$row->check()) {
            $this->setError($row->getError());
            return SAVE_ERROR;
        }
        if (!$row->store()) {
            $this->getJSModel('systemerrors')->updateSystemErrors($row->getError());
            $this->setError($row->getError());
            return SAVE_ERROR;
        }
        JSSupportticketMessage::$recordid = $row->id;        
        return SAVED;
    }

    function getAllFaqs($subject, $catid, $limitstart, $limit) {  // get all staff members

        if ($catid)
            if (!is_numeric($catid))
                return False;
        $db = $this->getDBO();
        $result = array();

        $lists['categories'] = JHTML::_('select.genericList', $this->getJSModel('knowledgebase')->getCategories('faqs'), 'filter_categoryid', 'class="inputbox js-ticket-select-field " ' . '', 'value', 'text', $catid);

        $wherequery = "";
        $clause = " Where ";
        if ($subject) {
            $subject = trim($subject);
            $wherequery .= $clause . " faq.subject LIKE " . $db->quote("%" . $subject . "%");
            $clause = " AND ";
        }
        if ($catid) {
            $wherequery .= $clause . " faq.categoryid = " . $catid;
            $clause = " AND ";
        }
        $query = "SELECT COUNT(faq.id) FROM `#__js_ticket_faqs` AS faq ";
        $query.=$wherequery;

        $db->setQuery($query);
        $total = $db->loadResult();
        if ($total <= $limitstart)
            $limitstart = 0;

        $query = "SELECT faq.*,kbcat.name AS faqcategory
            FROM `#__js_ticket_faqs` AS faq
            LEFT JOIN `#__js_ticket_categories` AS kbcat ON faq.categoryid = kbcat.id ";
        $query.=$wherequery;
        $db->setQuery($query, $limitstart, $limit);
        if ($subject)
            $lists['filter_subject'] = $subject;
        $result[0] = $db->loadObjectList();
        $result[1] = $total;
        $result[2] = $lists;
        return $result;
    }

    function getUserCatAndFaqs($id ,$subject,$keyword,$limitstart, $limit) {
        $db = $this->getDBO();
        $inquery = '';
        $inquerykey = '';
        $inquerycat = '';
        if ($subject != null) {
            $subject = trim($subject);
            $inquery .=" AND faq.subject LIKE " . $db->quote("%" . $subject . "%");
            $inquerycat .=" AND category.name LIKE " . $db->quote("%" . $subject . "%");
            $lists['filter_subject'] = $subject;
        }
        // keyword search
        if($keyword != null){
            $inquerykey .= " AND category.metakey LIKE " . $db->quote("%" . $keyword . "%");
        }
        // copid form wp
        if ($id) {
            if (!is_numeric($id))
                return false;
        } else
            $id = 0;
        $result = array();
        $query = "SELECT category.name, category.id, category.logo AS catlogo
                 FROM `#__js_ticket_categories` AS category 
                    WHERE category.parentid = " . $id . " AND category.faqs = 1 AND category.status = 1";
        $query .= $inquerycat.$inquerykey;
        $db->setQuery($query);
        $result['categories'] = $db->loadObjectList();

        $query = "SELECT category.name
                    FROM `#__js_ticket_categories` AS category
                    WHERE category.id = " . $id . " AND category.faqs = 1 AND category.status = 1";
        $db->setQuery($query);
        $result['categoryname'] = $db->loadResult();

        if ($id != 0)
            $inquery .= " AND faq.categoryid = " . $id;

        if ($id > 0) {
            $query = "SELECT category.name, category.logo, category.id
                    FROM `#__js_ticket_categories` AS category
                    WHERE category.id = " . $id . " AND kb = 1 AND category.status = 1";
            $db->setQuery($query);
            $result['categoryname'] = $db->loadResult();
        }

        $inquery .= $inquerykey;
        // Pagination
        $query = "SELECT COUNT(faq.id)
                   FROM `#__js_ticket_faqs` AS faq
                   JOIN `#__js_ticket_categories` AS category ON category.id = faq.categoryid
                WHERE faq.status = 1 " . $inquery;
        $db->setQuery($query);
        $total = $db->loadResult();
        if ( $total <= $limitstart ) $limitstart = 0;
        $result['total'] = $total;

        $query = "SELECT faq.id, faq.subject
                FROM `#__js_ticket_faqs` AS faq
                JOIN `#__js_ticket_categories` AS category ON category.id = faq.categoryid
                WHERE faq.status = 1 " . $inquery;
        $db->setQuery($query,$limitstart,$limit);
        $result['faqs'] = $db->loadObjectList();
        $result['lists']['filter_subject'] = $subject;
        $result['lists']['filter_faq_keyword'] = $keyword;

        return $result;
    }

    function getUserFaqDetail($id){
        if($id){
            $db = $this->getDBO();
            $query = "SELECT faq.subject,faq.content AS detail,category.name AS categoryname
                    FROM `#__js_ticket_faqs` AS faq
                    LEFT JOIN `#__js_ticket_categories` AS category ON faq.categoryid = category.id
                    WHERE faq.id=".$id." AND faq.status = 1";
            $db->setQuery($query);
            $result = $db->loadObject();
            $this->updateHitsByID($id);
            return $result;
        }
    }

    function updateHitsByID($id){
        if(!is_numeric($id)) return false;
        $db = JFactory::getDbo();
        $query = "UPDATE `#__js_ticket_faqs` SET hits = hits + 1 WHERE id = $id";
        $db->setQuery($query);
        $db->execute();
        return;
    }

    function deleteFaq(){
        $cids = JFactory::getApplication()->input->get('cid', array(0), null, 'array');
        if(!empty($cids)){
            foreach($cids AS $id){
                if(is_numeric($id)){
                    $user = JSSupportticketCurrentUser::getInstance();
                    if(!$user->getIsAdmin()){
                        $per = $user->checkUserPermission('Delete FAQ');
                        if ($per == false) 
                            return PERMISSION_ERROR;
                    }
                    $db =$this->getDbo();
                    $query="DELETE FROM `#__js_ticket_faqs` WHERE id=".$id;
                    $db->setQuery($query);
                    if(!$db->execute()){
                        $this->getJSModel('systemerrors')->updateSystemErrors($db->getErrorMsg());
                        $db->setError($db->getErrorMsg());
                        return DELETE_ERROR;
                    }
                }else{
                    return DELETE_ERROR;
                }
            }
        }else{
            return DELETE_ERROR;
        }

        return DELETED;
    }

    function deleteUserFaq($id){
        if(is_numeric($id)){
            $user = JSSupportticketCurrentUser::getInstance();
            $per = $user->checkUserPermission('Delete FAQ');
            if ($per == false) 
                return PERMISSION_ERROR;
            $db =$this->getDbo();
            $query="DELETE FROM `#__js_ticket_faqs` WHERE id=".$id;
            $db->setQuery($query);
            if(!$db->execute()){
                $this->getJSModel('systemerrors')->updateSystemErrors($db->getErrorMsg());
                $db->setError($db->getErrorMsg());
                return DELETE_ERROR;
            }
        }else{
            return DELETE_ERROR;
        }
        return DELETED;
    }

    function getFAQForMP($listtype,$maxrecord){
        if(! is_numeric($maxrecord))
            return false;
        $db = JFactory::getDbo();
        $query = "SELECT faq.subject AS title,faq.id AS id
                    FROM `#__js_ticket_faqs` AS faq WHERE faq.status = 1 ";
        switch($listtype){
            case 1: // Latest
                $query .= " ORDER BY faq.created DESC";
            break;
            case 2: // Popular
                $query .= " ORDER BY faq.hits DESC";
            break;
            case 3: // All
            break;
        }
        $query .= " LIMIT $maxrecord";
        $db->setQuery($query);
        $result = $db->loadObjectList();
        return $result;
    }

    function getSubCategoryFaqsByParentCat($parentid){
        if(!is_numeric($parentid))
            return false;
        $db = JFactory::getDbo();
        $result = array();
        $categories = $this->getJSModel('knowledgebase')->getAllSubCategoriesById($parentid);
        if($categories != ''){
            foreach($categories AS $category){
                $catarray[] = $category->id;
            }
            if(!empty($catarray)){
                $catarray = implode(',', $catarray);
                $query = "SELECT id,categoryid,subject
                            FROM `#__js_ticket_faqs`
                            WHERE find_in_set(categoryid, '". $catarray ."') LIMIT 5";
                $db->setQuery($query);
                $result = $db->loadObjectList();
            }
        }
        return $result;
    }
}

?>