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

function 
content(){

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

    
$inConf     cmsConfig::getInstance();
    
    
$inCore->loadLib('tags');
    
$inCore->loadLib('content');

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

    
// Проверяем включени ли компонент
    
if(!$cfg['component_enabled']) { cmsCore::error404(); }

    
$inCore->loadModel('content');
    
$model = new cms_model_content();

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

    global 
$_LANG;

    if(!isset(
$cfg['perpage'])) { $cfg['perpage'] = 20; }
    if(!isset(
$cfg['autokeys'])) { $cfg['autokeys'] = 1; }
    if(!isset(
$cfg['af_showlink'])) { $cfg['af_showlink'] = 1; }
    if(!isset(
$cfg['readdesc'])) { $cfg['readdesc'] = 0; }
    if(!isset(
$cfg['rating'])) { $cfg['rating'] = 1; }

    if(!isset(
$cfg['img_small_w'])) { $cfg['img_small_w'] = 100; }
    if(!isset(
$cfg['img_big_w'])) { $cfg['img_big_w'] = 200; }
    if(!isset(
$cfg['img_sqr'])) { $cfg['img_sqr'] = 1; }
    if(!isset(
$cfg['img_users'])) { $cfg['img_users'] = 1; }

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

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

    
$seolink $inCore->request('seolink''str''');

    
$seolink preg_replace ('/[^a-z0-9_/-]/i'''$seolink);

    if (
$seolink) { 
        
$cat $model->getCategoryByLink($seolink);
    } elseif(
$id) {
        
$cat $model->getCategory($id); 
    } else {
        
$cat $model->getCategory($model->getRootCatId());
    }

    if (!
$cat && $inCore->menuId() !== 1) { cmsCore::error404(); }

    if( !
$inCore->checkUserAccess('category'$cat['id']) ){
        
$inPage->setTitle($_LANG['NO_PERM_FOR_VIEW']);
        
$inPage->printHeading($_LANG['NO_PERM_FOR_VIEW']);
        echo 
'<p><b>'.$_LANG['NO_PERM_FOR_VIEW_TEXT'].'</b></p>';
        echo 
'<p>'.$_LANG['NO_PERM_FOR_VIEW_RULES'].'</p>';
        return;
    }

    
//PAGE HEADING
    
if($cat['id']>0){
        
$inPage->setTitle($cat['title']);
        
$pagetitle  $cat['title'];
        
$showdate   $cat['showdate'];
        
$showcomm   $cat['showcomm'];
        
$inPage->addHead('<link rel="alternate" type="application/rss+xml" title="'.htmlspecialchars($cat['title']).'" href="'.HOST.'/rss/content/'.$cat['id'].'/feed.rss">');
    }

    if (
$cat['id']<=0){
        
$inPage->setTitle($_LANG['CATALOG_ARTICLES']);
        
$pagetitle  $_LANG['CATALOG_ARTICLES'];
    }

    
//PATHWAY ENTRY
    
$left_key   $cat['NSLeft'];
    
$right_key  $cat['NSRight'];

    
$path_list  $model->getCategoryPath($left_key$right_key);

    if (
$path_list){
        foreach(
$path_list as $pcat){
            if( !
$inCore->checkUserAccess('category'$pcat['id']) ){
                
$inPage->setTitle($_LANG['NO_PERM_FOR_VIEW']);
                
$inPage->printHeading($_LANG['NO_PERM_FOR_VIEW']);
                echo 
'<p><b>'.$_LANG['NO_PERM_FOR_VIEW_TEXT'].'</b></p>';
                echo 
'<p>'.$_LANG['NO_PERM_FOR_VIEW_RULES'].'</p>';
                return;
            }
            if (
$pcat['id']!=1){
                
$inPage->addPathway($pcat['title'], $model->getCategoryURL(null$pcat['seolink']));
            }
        }
    }
    
    
//LIST OF SUBCATEGORIES
    
$subcats_list   $model->getSubCats($cat['id'], $left_key$right_key);

    if (
$subcats_list){
        
$is_subcats true;
        
$subcats    = array();
        foreach(
$subcats_list as $subcat){
            
$subcat['url']      = $model->getCategoryURL(null$subcat['seolink']);
            
$subcats[]          = $subcat;
        }
    } else {
        
$is_subcats false;
    }

    
//LINKED PHOTOS
    
$photos_html '';
    if (isset(
$cat['photoalbum'])){    
        if(
$cat['photoalbum']){
            
$album unserialize($cat['photoalbum']);
            
$inCore->loadLib('photos');
            
$photos_html cmsPhotoList($album);            
        }
    }

    
//CURRENT CATEGORY CONTENT
    
$perpage        $cfg['perpage'] ? $cfg['perpage'] : 20;
    
$page           $inCore->request('page''int'1);

    
$cons           = array();
    
$content_list   $model->getArticles($cat['id'], $page$perpage$cat['orderby'], $cat['orderto']);

    if (
$content_list){
        foreach(
$content_list as $con){
            
$con['tagline']         = cmsTagLine('content'$con['id'], true);
            
$con['comments']      = $inCore->getCommentsCount('article'$con['id']);
            
$con['user_access']  = true// оставлено для совместимости со старыми шаблонами, убрать в след версиях.
            
$con['url']          = $model->getArticleURL(null$con['seolink']);
            
$con['image']       = (file_exists(PATH.'/images/photos/small/article'.$con['id'].'.jpg') ? 'article'.$con['id'].'.jpg' '');
            
$cons[]              = $con;
        }
        
$is_articles true;
    } else {
        
$is_articles false;
    }

    
$model->whereCatIs($cat['id']);
    
$total      $model->getArticlesCount();
    
$pagelink   $model->getCategoryURL($inCore->menuId(), $cat['seolink'], 0true);
    
$pagebar    cmsPage::getPagebar($total$page$perpage$pagelink);

    
$template = ($cat['tpl'] ? $cat['tpl'] : 'com_content_view.tpl');

    
$smarty $inCore->initSmarty('components'$template);            
    
$smarty->assign('id'$cat['id']);
    
$smarty->assign('cat'$cat);
    
$smarty->assign('is_homepage', (bool)($inCore->menuId()==1));
    
$smarty->assign('showdate'$showdate);
    
$smarty->assign('showcomm'$showcomm);
    
$smarty->assign('pagetitle'$pagetitle);
    
$smarty->assign('is_subcats'$is_subcats);
    if(@
$subcats) { $smarty->assign('subcats'$subcats); }
    
$smarty->assign('photos_html'$photos_html);
    
$smarty->assign('is_articles'$is_articles);
    if(@
$cons) { $smarty->assign('articles'$cons); }
    if (
$content_list){
        
$smarty->assign('pagebar'$pagebar);
    }
    
$smarty->assign('maxcols'$cat['maxcols']);
    
$smarty->display($template);
                
}
///////////////////////////////////// READ ARTICLE ////////////////////////////////////////////////////////////////////////////////
if ($do=='read'){

    
$inCore->includeConfig();

    
$seolink $inCore->request('seolink''str''');

    
$seolink preg_replace ('/[^a-z0-9_/-]/i'''$seolink);

    if (
$seolink) { 
        
$article $model->getArticleByLink($seolink);
    } elseif(
$id) {
        
$article $model->getArticle($id);
    }

    if ( !
$article ) { cmsCore::error404(); }

    if (
$inUser->id) {
        
$is_admin      $inUser->is_admin;
        
$is_author     $inUser->id == $article['user_id'];
        
$is_author_del $inCore->isUserCan('content/delete');
        
$is_editor     = ($article['modgrp_id'] == $inUser->group_id && $inCore->isUserCan('content/autoadd'));
    }

    if (!
$article['published'] && !$is_admin && !$is_editor && !$is_author) { cmsCore::error404(); }     

    if( !
$inCore->checkUserAccess('material'$article['id']) || !$inCore->checkUserAccess('category'$article['category_id']) ){
        
$inPage->setTitle($_LANG['NO_PERM_FOR_VIEW']);
        
$inPage->printHeading($_LANG['NO_PERM_FOR_VIEW']);
        echo 
'<p><b>'.$_LANG['NO_PERM_FOR_VIEW_TEXT'].'</b></p>';
        echo 
'<p>'.$_LANG['NO_PERM_FOR_VIEW_RULES'].'</p>';
        return;
    }

    
$model->increaseHits($article['id']);

    if (!
$article['pagetitle']){
        
$inPage->setTitle($article['title']);
    } else {
        
$inPage->setTitle($article['pagetitle']);
    }

    
$inPage->addHeadJS('core/js/karma.js');

    
//PREPARE CONTENT
    
$article_content $cfg['readdesc'] ? $article['description'].$article['content'] : $article['content'];

    
//PATHWAY ENTRY
    //GET PATH TO ARTICLE
    
if ($article['showpath']){
        
$left_key   $article['leftkey'];
        
$right_key  $article['rightkey'];

        
$path_list  $model->getCategoryPath($left_key$right_key);

        if (
$path_list){
            foreach(
$path_list as $pcat){
                if( !
$inCore->checkUserAccess('category'$pcat['id']) ){
                    
$inPage->setTitle($_LANG['NO_PERM_FOR_VIEW']);
                    
$inPage->printHeading($_LANG['NO_PERM_FOR_VIEW']);
                    echo 
'<p><b>'.$_LANG['NO_PERM_FOR_VIEW_TEXT'].'</b></p>';
                    echo 
'<p>'.$_LANG['NO_PERM_FOR_VIEW_RULES'].'</p>';
                    return;
                }
                if (
$pcat['id']!=1){
                    
$inPage->addPathway($pcat['title'], $model->getCategoryURL(null$pcat['seolink']));
                }
            }
        }
    }

    
$inPage->addPathway($article['title'], $_SERVER['REQUEST_URI']);

    
//SET META KEYWORDS AND DESCRIPTION
    
if (strlen($article['meta_keys'])){ $inPage->setKeywords($article['meta_keys']); }
    elseif ( !
$cfg['autokeys'] ) { $inPage->setKeywords($inConf->keywords); }
    else {
        if (
sizeof($inCore->strClear($article_content))>30){
            
$inPage->setKeywords($inCore->getKeywords($inCore->strClear($article_content)));
        }
    }

    if (
strlen($article['meta_desc'])){ $inPage->setDescription($article['meta_desc']); } else { $inPage->setDescription($inConf->metadesc); }

    
//PROCESS FILTERS
    
$inCore->processFilters($article_content);

    
$cfg['showtitle'] = (isset($cfg['showtitle']) || @$cfg['showtitle']);

    
//CHECK RELATED FORUM THREAD, create if neccessary
    
$forum_thread_id $model->getRelatedThread($article['id']);
    
    
//if thread not found, create it again, only if author is not admin
    
if (!$forum_thread_id && $cfg['af_on'] && $category_id != $cfg['af_hidecat_id'] && !$inCore->userIsAdmin($article['user_id']) && $article['published']){
        
$forum_thread_id cmsAutoCreateThread($article$cfg);
    }

    
$template = ($article['tpl'] ? $article['tpl'] : 'com_content_read.tpl');

    
$smarty $inCore->initSmarty('components'$template);

    if(
$cfg['rating'] && $article['canrate']){
        
$inCore->loadLib('karma');
        
$karma cmsKarma('content'$article['id']);

        
$smarty->assign('karma_points'cmsKarmaFormatSmall($karma['points']));
        
$smarty->assign('karma_votes'$karma['votes']);

        
$btns cmsKarmaButtonsText('content'$article['id'], $karma['points'], $is_author);
        if (
$btns) { $smarty->assign('karma_buttons'$btns); }
    }
    
$article['pubdate'] = $inCore->dateformat($article['pubdate']);
    
$smarty->assign('id'$article['id']);
    if (@
$cat) { $smarty->assign('cat'$cat); }
    
$smarty->assign('article'$article);
    
$smarty->assign('cfg'$cfg);

    foreach(
$GLOBALS['pt'] as $num=>$page_title){
        
$pt_pages[$num]['title']    = $page_title;
        
$pt_pages[$num]['url']      = $model->getArticleURL(null$article['seolink'], $num+1);
    }

    
$page $inCore->request('page''int'1);
    
$smarty->assign('page'$page);
    
$smarty->assign('is_pages'sizeof($GLOBALS['pt']));
    
$smarty->assign('pt_pages'$pt_pages);

    if (
$cfg['pt_disp']) { $disp_style 'display: block;'; } else { $disp_style 'display: none;'; }
    
$smarty->assign('pt_disp_style'$disp_style);

    
$article_image = (file_exists(PATH.'/images/photos/medium/article'.$article['id'].'.jpg') ? 'article'.$article['id'].'.jpg' '');
    
$smarty->assign('article_image'$article_image);

    
$smarty->assign('is_admin'$is_admin);
    
$smarty->assign('is_editor'$is_editor);
    
$smarty->assign('is_author'$is_author);
    
$smarty->assign('is_author_del'$is_author_del);

    
$smarty->assign('article_content'$article_content);
    
$smarty->assign('forum_thread_id'$forum_thread_id);
    
$smarty->assign('tagbar'cmsTagBar('content'$article['id']));

    
$smarty->display($template);

    
//show user comments
    
if($article['published'] && $article['comments'] && $inCore->isComponentInstalled('comments')){
        
$inCore->includeComments();
        
comments('article'$article['id']);
    }
    
}
///////////////////////////////////// ADD ARTICLE //////////////////////////////////////////////////////////////////////////////////
if ($do=='addarticle' || $do=='editarticle'){

    
$is_add      $inCore->isUserCan('content/add');     // может добавлять статьи
    
$is_auto_add $inCore->isUserCan('content/autoadd'); // добавлять статьи без модерации
    
$is_admin    $inUser->is_admin;                     // админ
    
$user_id     $inUser->id;                           // id текущего юзера
    
    
if (!$is_add && !$is_auto_add){ cmsCore::error404(); }

    
$smarty     $inCore->initSmarty('components''com_content_edit.tpl');

    
//Moderation notice
    
$add_notice '';

    if (
$do=='editarticle'){
        
$is_autoadd $is_auto_add '' "AND con.user_id = '$user_id'";
        
$mod $inDB->get_fields('cms_content con LEFT JOIN cms_category cat ON cat.id = con.category_id'"con.id = '$id$is_autoadd"'con.*, cat.modgrp_id''con.id ASC');
        if (!
$mod) { cmsCore::error404(); }

        
$is_editor $mod['modgrp_id'] == $inUser->group_id && $is_auto_add// редактор если id группы редакторов раздела совпадает с id группы текущего пользователя
        
$is_author $user_id == $mod['user_id'];                            // автор, если текущий id пользователя совпадает с id автора статьи
        
if (!$is_editor && !$is_author && !$is_admin) { cmsCore::error404(); };
    }

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

        if (
$do=='addarticle'){
            
$inPage->setTitle($_LANG['ADD_ARTICLE']);
            
$inPage->addPathway($inUser->nicknamecmsUser::getProfileURL($inUser->login));
            
$inPage->addPathway($_LANG['MY_ARTICLES'], '/content/my.html');
            
$inPage->addPathway($_LANG['ADD_ARTICLE']);
            
$pagetitle $_LANG['ADD_ARTICLE'];

            
$pubcats $model->getPublicCats();

            
// поддержка биллинга
            
$dynamic_cost false;
            if (
IS_BILLING){                             
                
$action         cmsBilling::getAction('content''add_content');
                foreach(
$pubcats as $p=>$pubcat){
                    if (
$pubcat['cost']){
                        
$dynamic_cost true;
                    } else {
                        
$pubcats[$p]['cost'] = $action['point_cost'][$inUser->group_id];
                    }
                }
                
cmsBilling::checkBalance('content''add_content'$dynamic_cost);
            }
            
            if(!
$pubcats) { cmsCore::addSessionMessage($_LANG['ADD_ARTICLE_ERR_CAT'], 'error'); $inCore->redirectBack();  }

        }

        if (
$do=='editarticle'){
            
$inPage->setTitle($_LANG['EDIT_ARTICLE']);
            if(!
$is_author){
                
$user $inDB->get_fields('cms_users'"id='{$mod['user_id']}'"'login, nickname');
                
$inPage->addPathway($user['nickname'], cmsUser::getProfileURL($user['login']));
            } else {
                
$inPage->addPathway($inUser->nicknamecmsUser::getProfileURL($inUser->login));
            }
            
$inPage->addPathway($_LANG['EDIT_ARTICLE']);
            
$pagetitle $_LANG['EDIT_ARTICLE'];

            
$mod['tags'] = cmsTagLine('content'$mod['id'], false);
            
$mod['image'] = (file_exists(PATH.'/images/photos/small/article'.$mod['id'].'.jpg') ? 'article'.$mod['id'].'.jpg' '');

            
$smarty->assign('mod'$mod);

            if (!
$is_auto_add){
                
$add_notice '<p><strong>'.$_LANG['ATTENTION'].':</strong> '.$_LANG['EDIT_ARTICLE_PREMODER'].'</p>';
            }
        }

        
$inPage->initAutocomplete();
        
$autocomplete_js $inPage->getAutocompleteJS('tagsearch''tags');

        
//display form
        
$smarty->assign('do'$do);
        
$smarty->assign('cfg'$cfg);
        
$smarty->assign('pubcats'$pubcats);
        
$smarty->assign('pagetitle'$pagetitle);
        
$smarty->assign('add_notice'$add_notice);
        
$smarty->assign('is_admin'$is_admin);
        
$smarty->assign('is_billing'IS_BILLING);
        
$smarty->assign('dynamic_cost'$dynamic_cost);
        
$smarty->assign('autocomplete_js'$autocomplete_js);
        
$smarty->display('com_content_edit.tpl');

    }

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

        
$errors                         false;

        
//SUBMIT & UPDATE
        
$article['category_id']         = $inCore->request('category_id''int'1);
        
$article['user_id']             = $mod['user_id'] ? $mod['user_id'] : $user_id;
        
$article['title']               = $inCore->request('title''str''');
        
$article['tags']                = $inCore->request('tags''str''');

        
$article['description']         = $inCore->request('description''html''');
        
$article['content']             = $inCore->request('content''html''');
        
$article['description']         = $inDB->escape_string($article['description']);
        
$article['content']             = $inDB->escape_string($article['content']);
        
$article['description']         = $inCore->badTagClear($article['description']);
        
$article['content']             = $inCore->badTagClear($article['content']);

        
$article['published']           = $is_auto_add 0;
        if (
$do=='editarticle'){
           
$article['published']           = ($mod['published'] == 0) ? $mod['published'] : $article['published'];
        }
        
$article['pubdate']             = $do=='editarticle' $mod['pubdate'] : date('Y-m-d H:i');
        
$article['enddate']             = $do=='editarticle' $mod['enddate'] : $article['pubdate'];
        
$article['is_end']              = $do=='editarticle' $mod['is_end'] : 0;
        
$article['showtitle']           = $do=='editarticle' $mod['showtitle'] : 1;

        
$article['meta_desc']           = $do=='addarticle' strtolower($article['title']) : $inDB->escape_string($mod['meta_desc']);
        
$article['meta_keys']           = $do=='addarticle' $inCore->getKeywords($article['content']) : $inDB->escape_string($mod['meta_keys']);

        
$article['showdate']            = $do=='editarticle' $mod['showdate'] : 1;
        
$article['showlatest']          = $do=='editarticle' $mod['showlatest'] : 1;
        
$article['showpath']            = $do=='editarticle' $mod['showpath'] : 1;
        
$article['comments']            = $do=='editarticle' $mod['comments'] : 1;
        
$article['canrate']             = $do=='editarticle' $mod['canrate'] : 1;
        
$article['pagetitle']           = $article['title'];
        if (
$do=='editarticle'){
           
$article['tpl']              = $mod['tpl'];
        }

        if (
strlen($article['title'])<2){ cmsCore::addSessionMessage($_LANG['REQ_TITLE'], 'error'); $errors true; }
        if (
strlen($article['content'])<10){ cmsCore::addSessionMessage($_LANG['REQ_CONTENT'], 'error'); $errors true; }

        if(
$errors) { $inCore->redirectBack(); }

        
// загрузка фото
        
$file 'article'.$id.'.jpg';

        if (
$inCore->request('delete_image''int'0)){
            @
unlink(PATH."/images/photos/small/$file");
            @
unlink(PATH."/images/photos/medium/$file");
        }

        if (isset(
$_FILES["picture"]["name"]) && @$_FILES["picture"]["name"]!=''){
            
//generate image file
            
$tmp_name   $_FILES["picture"]["tmp_name"];
            
//upload image and insert record in db
            
if (@move_uploaded_file($tmp_namePATH."/images/photos/$file")){
                @
unlink(PATH."/images/photos/small/$file");
                @
unlink(PATH."/images/photos/medium/$file");
                
$inCore->includeGraphics();
                if (
$cfg['watermark'] && !$cfg['watermark_only_big']) { @img_add_watermark(PATH."/images/photos/$file"); }
                @
img_resize(PATH."/images/photos/$file"PATH."/images/photos/small/$file"$cfg['img_small_w'], $cfg['img_small_w'], $cfg['img_sqr']);
                @
img_resize(PATH."/images/photos/$file"PATH."/images/photos/medium/$file"$cfg['img_big_w'], $cfg['img_big_w'], $cfg['img_sqr']);
                if (
$cfg['watermark'] && $cfg['watermark_only_big']) { @img_add_watermark(PATH."/images/photos/medium/$file"); }
                
                @
unlink(PATH."/images/photos/$file");
                @
chmod(PATH."/images/photos/small/$file"0755);
                @
chmod(PATH."/images/photos/medium/$file"0755);
            }
        }

        
// добавление статьи
        
if ($do=='addarticle'){

            
$article['id'] = $model->addArticle($article);

            
$id $article['id'];

            
//autoforum
            
if ($cfg['af_on'] && $category_id != $cfg['af_hidecat_id'] && $article['published']){
                
cmsAutoCreateThread($article$cfg);
            }
            
            
$article['seolink']     = $inDB->get_field('cms_content'"id='$id'"'seolink');
            
$article['category']    = $inDB->get_fields('cms_category'"id='{$article['category_id']}'"'title, seolink');
            
            if (!
$article['published']){
            
                
cmsCore::addSessionMessage($_LANG['ARTICLE_PREMODER_TEXT'], 'info');

                
$link '<a href="/'.$article['seolink'].'.html">'.$article['title'].'</a>';
                
$user '<a href="'.cmsUser::getProfileURL($inUser->login).'">'.$inUser->nickname.'</a>';
                
$message str_replace('%user%'$user$_LANG['MSG_ARTICLE_SUBMIT']);
                
$message str_replace('%link%'$link$message);
                
cmsUser::sendMessage(USER_UPDATER1$message);

            } else {

                
//регистрируем событие
                
cmsActions::log('add_article', array(
                    
'object' => $article['title'],
                    
'object_url' =>  "/{$article['seolink']}.html",
                    
'object_id' =>  $article['id'],
                    
'target' => $article['category']['title'],
                    
'target_url' => "/{$article['category']['seolink']}",
                    
'target_id' =>  $article['category_id'],
                    
'description' => ''
                
));

                if (
IS_BILLING){
                    
$category_cost $inDB->get_field('cms_category'"id='{$article['category_id']}'"'cost');
                    
$category_cost $category_cost==='' false : (int)$category_cost;
                    
cmsBilling::process('content''add_content'$category_cost);
                }

                
cmsUser::checkAwards($user_id);

            }

            
cmsCore::addSessionMessage($_LANG['ARTICLE_SAVE'], 'info');

            
$inCore->redirect('/my.html');

        }

        if (
$do=='editarticle'){

            
$model->updateArticle($id$articletrue);

            
cmsActions::updateLog('add_article', array('object' => $article['title']), $id);

            
$article['seolink']  = $inDB->get_field('cms_content'"id='$id'"'seolink');
            
$article['category'] = $inDB->get_fields('cms_category'"id='{$article['category_id']}'"'title, seolink');

            if (!
$article['published'] && !$is_auto_add){
                
$link '<a href="/'.$article['seolink'].'.html">'.$article['title'].'</a>';
                
$user '<a href="'.cmsUser::getProfileURL($inUser->login).'">'.$inUser->nickname.'</a>';
                
$message str_replace('%user%'$user$_LANG['MSG_ARTICLE_EDITED']);
                
$message str_replace('%link%'$link$message);
                
cmsUser::sendMessage(USER_UPDATER1$message);
            }

            
cmsInsertTags($article['tags'], 'content'$id);

            
$mess = ($article['published'] || $is_auto_add) ? $_LANG['ARTICLE_SAVE'] : $_LANG['ARTICLE_SAVE'].' '.$_LANG['ARTICLE_PREMODER_TEXT'];
            
cmsCore::addSessionMessage($mess'info');
            
$inCore->redirect('/'.$article['seolink'].'.html');

        }

    }
}
///////////////////////// PUBLISH ARTICLE /////////////////////////////////////////////////////////////////////////////
if ($do == 'publisharticle'){

    
$user_id $inUser->id;

    if (!
$user_id || !$id){ $inCore->halt(); }
    
    
$article $model->getArticle($id);
    if (!
$article) { $inCore->halt(); }

    
//Если пользователь авторизован, проверяем является ли он админом или редактором
    
$is_editor  = ($article['modgrp_id'] == $inUser->group_id && $inCore->isUserCan('content/autoadd'));
    
$is_admin   $inUser->is_admin;

    if (!
$is_editor && !$is_admin) { $inCore->halt(); }

    
$model->publishArticle($id);

    
cmsCore::callEvent('ADD_ARTICLE_DONE'$article);

    if (
IS_BILLING){
        
$author $inDB->get_fields('cms_users'"id='{$article['user_id']}'"'*');
        
$category_cost $inDB->get_field('cms_category'"id='{$article['category_id']}'"'cost');
        
$category_cost $category_cost==='' false : (int)$category_cost;
        
cmsBilling::process('content''add_content'$category_cost$author);
    }
    
    
//регистрируем событие
    
cmsActions::log('add_article', array(
           
'object' => $article['title'],
           
'user_id' => $article['user_id'],
           
'object_url' =>  "/{$article['seolink']}.html",
           
'object_id' =>  $article['id'],
           
'target' => $article['cat_title'],
           
'target_url' => "/{$article['catseolink']}",
           
'target_id' =>  $article['cat_id'],
           
'description' => ''
    
));

    
$link '<a href="/'.$article['seolink'].'.html">'.$article['title'].'</a>';
    
$message str_replace('%link%'$link$_LANG['MSG_ARTICLE_ACCEPTED']);
    
cmsUser::sendMessage(USER_UPDATER$article['user_id'], $message);

    
cmsUser::checkAwards($article['user_id']);

    
$inCore->redirectBack();

}
///////////////////////////////////// DELETE ARTICLE ///////////////////////////////////////////////////////////////////////////////////
if ($do=='deletearticle'){
    
    
$user_id $inUser->id;
    if (!
$user_id || !$id){ $inCore->halt(); }

    
// получаем id редактора и ссылку категории удаляемой статьи
    
$article $inDB->get_fields('cms_content con LEFT JOIN cms_category cat ON cat.id = con.category_id'"con.id = '$id'"'con.seolink as con_seolink, con.title, cat.modgrp_id, cat.seolink''con.id ASC');
    if (!
$article) { $inCore->halt(); }

    
// Определяем права доступа
    
$is_admin  $inUser->is_admin;
    
$is_author $inCore->isUserCan('content/delete') && $inDB->rows_count('cms_content'"id='$id' AND user_id='{$user_id}'");
    
$is_editor = ($article['modgrp_id'] == $inUser->group_id && $inCore->isUserCan('content/autoadd'));
    
    if (!
$is_author && !$is_editor && !$is_admin){    $inCore->halt(); }

    if (!isset(
$_POST['goadd'])){

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

        
$confirm['title']              = $_LANG['ARTICLE_REMOVAL'];
        
$confirm['text']               = $_LANG['ARTICLE_REMOVAL_TEXT'].' <a href="/'.$article['con_seolink'].'.html">'.$article['title'].'</a>?';
        
$confirm['action']             = $_SERVER['REQUEST_URI'];
        
$confirm['yes_button']         = array();
        
$confirm['yes_button']['type'] = 'submit';
        
$confirm['yes_button']['name'] = 'goadd';
        
$smarty $inCore->initSmarty('components''action_confirm.tpl');
        
$smarty->assign('confirm'$confirm);
        
$smarty->display('action_confirm.tpl');
        
$inPage->backButton(false);

    } else {

            
$inCore->includeFile('components/forum/includes/forumcore.php'); //needs for auto-thread deleting
            
$model->deleteArticle($id$cfg['af_delete']);
        if (
$_SERVER['HTTP_REFERER'] == '/my.html' ) { 
            
$inCore->redirectBack();
            
cmsCore::addSessionMessage($_LANG['ARTICLE_DELETED'], 'info');
        } else { 
            if (
$is_editor || $is_admin) {
                
$link '<a href="/'.$article['con_seolink'].'.html">'.$article['title'].'</a>';
                
$message str_replace('%link%'$link$_LANG['MSG_ARTICLE_REJECTED']);
                
cmsUser::sendMessage(USER_UPDATER$article['user_id'], $message);
        }
        
$inCore->redirect('/content/my.html');
    }

    }

}
///////////////////////////////////// MY ARTICLES ///////////////////////////////////////////////////////////////////////////////////
if ($do=='my'){

    if (!
$inCore->isUserCan('content/add')){
        
$inPage->printHeading($_LANG['ACCESS_DENIED']);
        echo 
'<p>'.$_LANG['ACCESS_DENIED'].'</p>';
        return;
    }
    
    
$user_id $inUser->id;
    
    
$inPage->setTitle($_LANG['MY_ARTICLES']);
    
$inPage->addPathway($inUser->nicknamecmsUser::getProfileURL($inUser->login));
    
$inPage->addPathway($_LANG['MY_ARTICLES']);

    
//total count
    
$total $inDB->rows_count('cms_content con'"con.user_id = '$user_id'");

    
$inPage->printHeading($_LANG['MY_ARTICLES'].' ('.$total.')' );    

    
//current page
    
$sql "SELECT  con.*,
                    cat.title as category,
                    cat.seolink as category_seolink
            FROM cms_content con
            LEFT JOIN cms_category cat ON cat.id = con.category_id
            WHERE con.user_id = 
$user_id
            ORDER BY con.pubdate DESC
            "
;

    
$perpage 10;
    
$page $inCore->request('page''int'1);
    
$sql .= "LIMIT ".(($page-1)*$perpage).", $perpage";

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

    if (!
$inDB->num_rows($rs)){
        echo 
'<p>'.$_LANG['NO_YOUR_ARTICL_ON_SITE'].'. <a href="/content/add.html">'.$_LANG['ADD_ARTICLE'] .'?</a></p>';
        return;
    }

    
$articles = array(); $row=0;
    while(
$con $inDB->fetch_assoc($rs)){
        
$row++;
        
$articles[$row] = $con;
        if (
$row %2) { $articles[$row]['class']="search_row1"; } else { $articles[$row]['class']="search_row2"; }
        
$articles[$row]['category_href']    = $model->getCategoryURL(0$con['category_seolink']);
        
$articles[$row]['href']             = $model->getArticleURL(0$con['seolink']);
        
$articles[$row]['comments']         = $inCore->getCommentsCount('article'$articles[$row]['id']);
        
$articles[$row]['pubdate']             = $inCore->dateFormat($articles[$row]['pubdate']);
        
$articles[$row]['status']           = $articles[$row]['published'] ? '<span style="color:green">'.$_LANG['PUBLISHED'].'</span>' '<span style="color:#CC0000">'.$_LANG['NO_PUBLISHED'].'</span>';
    }

    
$smarty $inCore->initSmarty('components''com_content_my.tpl');
        
$smarty->assign('articles'$articles);
        
$smarty->assign('total'$total);
        
$smarty->assign('user_can_delete'$inCore->isUserCan('content/delete'));
        
$smarty->assign('pagebar'cmsPage::getPagebar($total$page$perpage'/content/my%page%.html'));
    
$smarty->display('com_content_my.tpl');

}
///////////////////////////////////// BEST ARTICLES ///////////////////////////////////////////////////////////////////////////////////
if ($do=='best'){
    
$inCore->loadLib('karma');

    
$user_id $inUser->id;

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

    
$inPage->printHeading($_LANG['ARTICLES_RATING']);

    
$sql "SELECT c.*, 
                    IFNULL(r.total_rating, 0) as points, IFNULL(r.total_votes, 0) as votes,
                   cat.title as category, cat.seolink as category_seolink
            FROM cms_content c
            LEFT JOIN cms_category cat ON cat.id = c.category_id
            LEFT JOIN cms_ratings_total r ON r.item_id=c.id AND r.target='content'
            WHERE c.published = 1 AND c.canrate = 1
            ORDER BY points DESC, votes ASC
            LIMIT 30"
;
    
$rs $inDB->query($sql);

    if (!
$inDB->num_rows($rs)){
        
////NO ARTICLES
        
echo '<p>'.$_LANG['NO_ARTICLES_PUBL_ON_SITE'].'</p>';
        return;
    }

    
$articles = array(); $row=0;
    while(
$con $inDB->fetch_assoc($rs)){
        
$row++;
        
$articles[$row] = $con;
        if (
$row%2) { $articles[$row]['class']="search_row1"; } else { $articles[$row]['class']="search_row2"; }
        
$articles[$row]['comments'] = $inCore->getCommentsCount('article'$con['id']);
        
$articles[$row]['karma']     = cmsKarmaFormat($con['points']);
        
$articles[$row]['pubdate']     = $inCore->dateFormat($articles[$row]['pubdate']);
        
$articles[$row]['url']      = $model->getArticleURL(null$con['seolink']);
    }

    
$smarty $inCore->initSmarty('components''com_content_rating.tpl');
    
$smarty->assign('articles'$articles);
    
$smarty->display('com_content_rating.tpl');
        
        
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$inCore->executePluginRoute($do);
//function
?>
Онлайн: 2
Реклама