Вход Регистрация
Файл: components/faq/frontend.php
Строк: 248
<?php
/******************************************************************************/
//                                                                            //
//                             InstantCMS v1.10                               //
//                        http://www.instantcms.ru/                           //
//                                                                            //
//                   written by InstantCMS Team, 2007-2012                    //
//                produced by InstantSoft, (www.instantsoft.ru)               //
//                                                                            //
//                        LICENSED BY GNU/GPL v2                              //
//                                                                            //
/******************************************************************************/
if(!defined('VALID_CMS')) { die('ACCESS DENIED'); }

function 
faq(){

    
$inCore cmsCore::getInstance();
    
$inPage cmsPage::getInstance();
    
$inDB   cmsDatabase::getInstance();
    
$inUser cmsUser::getInstance();

    
$inCore->loadModel('faq');
    
$model = new cms_model_faq();

    
define('IS_BILLING'$inCore->isComponentInstalled('billing'));
    if (
IS_BILLING) { $inCore->loadClass('billing'); }

    global 
$_LANG;

    
$pagetitle $inCore->menuTitle();
    
$pagetitle = ($pagetitle && $inCore->isMenuIdStrict()) ? $pagetitle $_LANG['FAQ'];

    
$inPage->addPathway($pagetitle'/faq');
    
$inPage->setTitle($pagetitle);
    
$inPage->setDescription($pagetitle);

    
$cfg $inCore->loadComponentConfig('faq');

    if(!isset(
$cfg['guest_enabled'])) { $cfg['guest_enabled'] = 1; }
    if(!isset(
$cfg['user_link'])) { $cfg['user_link'] = 1; }
    if(!isset(
$cfg['publish'])) { $cfg['publish'] = 0; }
    if(!isset(
$cfg['is_comment'])) { $cfg['is_comment'] = 1; }

    
$id $inCore->request('id''int'0);
    
$do $inCore->do;

///////////////////////////////////// VIEW CATEGORY ////////////////////////////////////////////////////////////////////////////////
if ($do=='view'){

    if(
$id>0){
        
//CURRENT CATEGORY
        
$sql "SELECT *
                FROM cms_faq_cats
                WHERE id = '
$id'
                ORDER BY title ASC LIMIT 1
                "
;

        
$result $inDB->query($sql) ;

        if (!
$inDB->num_rows($result)) { cmsCore::error404(); }

        
$cat $inDB->fetch_assoc($result);

        
//PAGE HEADING
        
$pagetitle $cat['title'];
        
$inPage->setTitle($cat['title']);
        
$inPage->addPathway($cat['title']);
        
$inPage->setDescription($cat['title']);
    }

    
//LIST OF SUBCATEGORIES
    
$sql "SELECT *
            FROM cms_faq_cats
            WHERE parent_id = 
$id AND id > 0 AND published = 1
            ORDER BY title ASC
            "
;

    
$result $inDB->query($sql) ;

    if (
$inDB->num_rows($result)){
        
$subcats = array();
        while(
$subcat $inDB->fetch_assoc($result)){
            
$subcats[] = $subcat;
        }
        
$is_subcats true;
    } else {
        
$is_subcats false;
    }

    
//CURRENT CATEGORY CONTENT
    
$perpage 15;
    
$page $inCore->request('page''int'1);
    
$records 0;

    if (
$id 0){
        
$sql "SELECT q.*, u.login, u.nickname
                FROM cms_faq_quests q
                LEFT JOIN cms_users u ON u.id = q.user_id
                WHERE q.category_id = 
$id AND q.published = 1
                ORDER BY q.pubdate DESC
                LIMIT "
.(($page-1)*$perpage).", $perpage";
        
$result_total $inDB->query("SELECT id FROM cms_faq_quests WHERE category_id = $id AND published = 1") ;
        
$records $inDB->num_rows($result_total);
    } else {
        
$sql "SELECT q.*, c.title cat_title, c.id cid, u.login, u.nickname
                FROM cms_faq_quests q
                LEFT JOIN cms_faq_cats c ON c.id = q.category_id
                LEFT JOIN cms_users u ON u.id = q.user_id
                WHERE q.published = 1
                ORDER BY q.pubdate DESC
                LIMIT 15"
;
    }
    
$result $inDB->query($sql) ;

    if (
$inDB->num_rows($result)){
        
$quests = array();
        while(
$con $inDB->fetch_assoc($result)){
            
$con['pubdate'] = $inCore->dateFormat($con['pubdate'], truefalsefalse);
            
$con['quest']    = nl2br($con['quest']);
            
$quests[] = $con;
        }
        
$is_quests true;
    } else {
        
$is_quests false;
    }

    
$smarty $inCore->initSmarty('components''com_faq_view.tpl');
    
$smarty->assign('pagetitle'$pagetitle);
    
$smarty->assign('id'$id);
    
$smarty->assign('subcats'$subcats);
    
$smarty->assign('is_subcats'$is_subcats);
    
$smarty->assign('quests'$quests);
    
$smarty->assign('cfg'$cfg);
    
$smarty->assign('is_quests'$is_quests);
    
$smarty->assign('is_user'$inUser->id);
    
$smarty->assign('pagebar'cmsPage::getPagebar($records$page$perpage'/faq/%id%-%page%', array('id'=>$id)));
    
$smarty->display('com_faq_view.tpl');

}

///////////////////////////////////// READ QUESTION ////////////////////////////////////////////////////////////////////////////////
if ($do=='read'){
        
$sql "SELECT con.*,
                cat.title cat_title, cat.id cat_id, u.login, u.nickname
                FROM cms_faq_quests con
                LEFT JOIN cms_faq_cats cat ON cat.id = con.category_id
                LEFT JOIN cms_users u ON u.id = con.user_id
                WHERE con.id = 
$id LIMIT 1";

        
$result $inDB->query($sql);

        if (
$inDB->num_rows($result)){

            
$inDB->query("UPDATE cms_faq_quests SET hits = hits + 1 WHERE id = $id") ;

            
$quest $inDB->fetch_assoc($result);

            
$quest['pubdate']    = $inCore->dateFormat($quest['pubdate'], truefalsefalse);
            
$quest['answerdate'] = $inCore->dateFormat($quest['answerdate'], truefalsefalse);
            if (
mb_strlen($quest['quest'])>40) { $shortquest mb_substr($quest['quest'], 040).'...'; }
            else { 
$shortquest $quest['quest']; }
            
$quest['quest']         = nl2br($quest['quest']);

            
$inPage->setTitle($shortquest);
            
$inPage->setDescription($shortquest);

            
$inPage->addPathway($quest['cat_title'], '/faq/'.$quest['cat_id']);
            
$inPage->addPathway($shortquest);

            
$smarty $inCore->initSmarty('components''com_faq_read.tpl');
            
$smarty->assign('quest'$quest);
            
$smarty->assign('cfg'$cfg);
            
$smarty->assign('labels', array('comments' => $_LANG['ANSWERS'], 'add' => $_LANG['REPLY'], 'rss' => $_LANG['RSS_FEED'], 'not_comments' => $_LANG['NOT_ANSWERS']));
            
$smarty->assign('is_admin'$inUser->is_admin);
            
$smarty->display('com_faq_read.tpl');

        } else { 
cmsCore::error404(); }
}
///////////////////////////////////// SEND QUEST ////////////////////////////////////////////////////////////////////////////////
if ($do=='sendquest'){

    if (!
$inUser->id && !$cfg['guest_enabled']){ cmsCore::error404(); }

    
$inPage->setTitle($_LANG['ASK_QUES']);
    
$inPage->addPathway($_LANG['ASK_QUES']);

    
$inPage->addHeadJS('components/faq/js/common.js');

    
$error          '';
    
$captha_code    $inCore->request('code''str''');
    
$message        $inCore->request('message''str''');
    
$category_id    $inCore->request('category_id''int''');
    
$published      = ($inUser->is_admin || $cfg['publish']) ? 0;
    
$is_submit      $inCore->inRequest('message');

    if (
$is_submit && !$inUser->id && !$inCore->checkCaptchaCode($inCore->request('code''str'))) { $error $_LANG['ERR_CAPTCHA']; }

    if (!
$is_submit || $error){

        if (
IS_BILLING && $inUser->id){ cmsBilling::checkBalance('faq''add_quest'); }

        
//FORM
        
$smarty $inCore->initSmarty('components''com_faq_add.tpl');
        
$smarty->assign('catslist'$inCore->getListItems('cms_faq_cats'$category_id));
        
$smarty->assign('user_id'$inUser->id);
        
$smarty->assign('message'htmlspecialchars($inCore->request('message''html''')));
        
$smarty->assign('error'$error);
        
$smarty->display('com_faq_add.tpl');

    } else {

        
//SAVE QUESTION
        
$sql "INSERT INTO cms_faq_quests (category_id, pubdate, published, quest, answer, user_id, answeruser_id, answerdate, hits)
                VALUES ('
$category_id', NOW(), '$published', '$message', '', '{$inUser->id}', 0, NOW(), 0)";
        
$inDB->query($sql);

        
$quest_id $inDB->get_last_id('cms_faq_quests');

        if (
IS_BILLING && $inUser->id){ cmsBilling::process('faq''add_quest'); }

        
$inPage->setTitle($_LANG['QUESTION_SEND']);
        
$inPage->addPathway($_LANG['QUESTION_SEND'], $_SERVER['REQUEST_URI']);

        if (!
$published){
            echo 
'<div class="con_heading">'.$_LANG['QUESTION_SEND'].'</div>';
            echo 
'<div style="margin-top:10px">'.$_LANG['QUESTION_PREMODER'].'</div>';
            echo 
'<div style="margin-top:10px"><a href="/faq">'.$_LANG['CONTINUE'].'</a></div>';
        } elseif (
$published) {
            
$category $inDB->get_field('cms_faq_cats'"id={$category_id}"'title');
            
//регистрируем событие
            
cmsActions::log('add_quest', array(
                
'object' => 'вопрос',
                
'object_url' => '/faq/quest'.$quest_id.'.html',
                
'object_id' => $quest_id,
                
'target' => $category,
                
'target_url' => '/faq/'.$category_id,
                
'target_id' => $category_id,
                
'description' => strip_tagsmb_strlen(strip_tags($message))>100 mb_substr($message0100) : $message )
            ));
            
$inCore->redirect('/faq/quest'.$quest_id.'.html');
        } else { 
$inCore->redirect('/faq/quest'.$quest_id.'.html'); }

    }
}

///////////////////////////////////// DELETE QUEST ////////////////////////////////////////////////////////////////////////////////

if ($do=='delquest'){

    
$quest_id     $inCore->request('quest_id''int'0);
    
$user_id    $inUser->id;

    
$sql    "SELECT con.id, con.quest, con.category_id
                FROM cms_faq_quests con
                WHERE con.id = '
$quest_id' LIMIT 1";

    
$result $inDB->query($sql);
    
$quest  $inDB->fetch_assoc($result);

    if (!
$user_id || !$quest_id || !$quest) { $inCore->redirectBack(); }

    if ( !
$inCore->inRequest('confirm') ) {

        if (
cmsUser::userIsAdmin($user_id)){
            
$inPage->setTitle($_LANG['DEL_QUES']);
            
$inPage->addPathway($_LANG['DEL_QUES']);
            
$confirm['title'] = $_LANG['DELETE_QUES'];
            
$confirm['text']  = $_LANG['YOU_REALY_DELETE_QUES'].':<br> "<a href="/faq/quest'.$quest['id'].'.html">'.$quest['quest'].'</a>"<br><br>';
            
$confirm['action']                  = $_SERVER['REQUEST_URI'];
            
$confirm['yes_button']              = array();
            
$confirm['yes_button']['type']      = 'submit';
            
$confirm['yes_button']['name']      = 'confirm';
            
$smarty $inCore->initSmarty('components''action_confirm.tpl');
            
$smarty->assign('confirm'$confirm);
            
$smarty->display('action_confirm.tpl');
        } else {
            
$inCore->redirectBack();
        }
    }

    if ( 
$inCore->inRequest('confirm') ){

        if (
cmsUser::userIsAdmin($user_id)){

            
$model->deleteQuest($quest_id);

        }
        
$inCore->redirect('/faq/'.$quest['category_id']);
    }

}

//function
?>
Онлайн: 0
Реклама