Вход Регистрация
Файл: InstantSocial/uploud/components/content/model.php
Строк: 652
<?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'); }

class 
cms_model_content{

    private 
$where      = '';
    private 
$group_by   = '';
    private 
$order_by   = '';
    private 
$limit      = '100';
    
    function 
__construct(){
        
$this->inDB = cmsDatabase::getInstance();
    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function install(){

        return 
true;

    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function getCommentTarget($target, $target_id) {

        
$result = array();

        switch(
$target){

            case 
'article': $article            = $this->inDB->get_fields('cms_content', "id='{$target_id}'", 'seolink, title');
                            if (!
$article) { return false; }
                            
$result['link']     = $this->getArticleURL(null, $article['seolink']);
                            
$result['title']    = $article['title'];
                            break;

        }

        return (
$result ? $result : false);

    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function getCategory($category_id) {

        if (!
$category_id){
            
$where = 'NSLevel = 0';
        } else {
            
$where = 'id = '.$category_id;
        }

        
$sql = "SELECT *
                FROM cms_category
                WHERE 
{$where}
                LIMIT 1"
;

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

        if (!
$this->inDB->num_rows($result)) { return false; }

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

        
$cat = cmsCore::callEvent('GET_CONTENT_CAT', $cat);

        return 
$cat;
        
    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function getCategoryByLink($seolink) {

        
$sql = "SELECT *
                FROM cms_category
                WHERE seolink = '
$seolink'
                LIMIT 1"
;

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

        if (!
$this->inDB->num_rows($result)) { return false; }

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

        
$cat = cmsCore::callEvent('GET_CONTENT_CAT', $cat);

        return 
$cat;

    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function getCategoryPath($left_key, $right_key) {
        
        
$path = array();

        
$sql = "SELECT id, title, NSLevel, seolink, url
                FROM cms_category
                WHERE NSLeft <= 
$left_key AND NSRight >= $right_key AND parent_id > 0
                ORDER BY NSLeft"
;

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

        if (!
$this->inDB->num_rows($result)) { return false; }

        while(
$cat = $this->inDB->fetch_assoc($result)){
            
$path[] = $cat;
        }

        return 
$path;

    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function getCatsTree() {

        
$subcats=array();

        
$sql = "SELECT  cat.id as id,
                        cat.title as title,
                        cat.NSLeft as NSLeft,
                        cat.NSRight as NSRight,
                        cat.NSLevel as NSLevel,
                        cat.seolink as seolink
                FROM cms_category cat
                WHERE cat.NSLevel>0
                ORDER BY cat.NSLeft"
;

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

        if (!
$this->inDB->num_rows($result)) { return false; }

        while(
$subcat = $this->inDB->fetch_assoc($result)){

            
$subcats[] = $subcat;

        }

        
$subcats = cmsCore::callEvent('GET_CONTENT_CATS_TREE', $subcats);

        return 
$subcats;

    }

    public function 
getSubCats($parent_id, $left_key, $right_key) {

        
$subcats=array();

        
$sql = "SELECT cat.*
                FROM cms_category cat
                WHERE cat.parent_id = '
$parent_id' AND cat.published = 1";

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

        if (!
$this->inDB->num_rows($result)) { return false; }

        while(
$subcat = $this->inDB->fetch_assoc($result)){

            
$count_sql = "SELECT con.id
                          FROM cms_content con
                          INNER JOIN cms_category cat ON cat.id = con.category_id AND (cat.NSLeft >= 
{$subcat['NSLeft']} AND cat.NSRight <= {$subcat['NSRight']})
                          WHERE con.published = 1 AND con.is_arhive = 0"
;

            
$count_result = $this->inDB->query($count_sql);

            
$subcat['content_count'] = $this->inDB->num_rows($count_result);

            
$subcats[] = $subcat;
            
        }

        
$subcats = cmsCore::callEvent('GET_CONTENT_SUBCATS', $subcats);

        return 
$subcats;

    }

    public function 
getPublicCats() {

        
$inCore = cmsCore::getInstance();

        
$nested_sets    = $inCore->nestedSetsInit('cms_category');
        
$rootid         = $this->getRootCatId();

        
$rs_rows        = $nested_sets->SelectSubNodes($rootid);

        if (
$rs_rows){
            while(
$node = $this->inDB->fetch_assoc($rs_rows)){
                if(
$node['is_public'] && $inCore->checkUserAccess('category', $node['id'])){
                    
$subcats[] = $node;
                }
            }
        }

        
$subcats = cmsCore::callEvent('GET_CONTENT_PUBCATS', $subcats);

        return 
$subcats;

    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function getRootCatId($differ = ''){
        
        return 
$this->inDB->get_field('cms_category', "parent_id=0 AND NSDiffer = '$differ'", 'id');

    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function getSubCatsCount($parent_id) {

        return 
$this->inDB->rows_count('cms_category', 'parent_id='.$parent_id);
        
    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
private function resetConditions(){

        
$this->where        = '';
        
$this->group_by     = '';
        
$this->order_by     = '';
        
$this->limit        = '';

    }

    public function 
where($condition){
        
$this->where .= ' AND ('.$condition.')' . "n";
    }

    public function 
whereCatIs($category_id) {
        
$this->where("con.category_id = {$category_id}");
    }

    public function 
groupBy($field){
        
$this->group_by = "GROUP BY {$field}";
    }

    public function 
orderBy($field, $direction='ASC'){
        
$this->order_by = "ORDER BY {$field} {$direction}";
    }

    public function 
limitIs($from, $howmany='') {
        
$this->limit = (int)$from;
        if (
$howmany){
            
$this->limit .= ', '.$howmany;
        }
    }

    public function 
limitPage($page, $perpage) {
        
$this->limitIs(($page-1)*$perpage, $perpage);
    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function getArticlesList($only_published=true) {

        
$articles = array();

        
$today    = date("Y-m-d H:i:s");

        if (
$only_published){
            
$this->where("con.published = 1 AND (con.is_end=0 OR (con.is_end=1 AND con.enddate >= '$today' AND con.pubdate <= '$today'))");
        }

        
$sql = "SELECT con.*,
                       con.pubdate as fpubdate,
                       u.nickname as author,
                       u.login as user_login

                FROM cms_content con

                LEFT JOIN cms_users u ON u.id = con.user_id

                WHERE con.is_arhive = 0
                      
{$this->where}

                
{$this->group_by}                      
                
                
{$this->order_by}n";

        if (
$this->limit){
            
$sql .= "LIMIT {$this->limit}";
        }

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

        if (!
$this->inDB->num_rows($result)) { return false; }

        while(
$article = $this->inDB->fetch_assoc($result)){
            
$article['fpubdate'] = date('d.m.Y', strtotime($article['fpubdate']));
            
$articles[] = $article;
        }

        
$articles = cmsCore::callEvent('GET_ARTICLES', $articles);

        
$this->resetConditions();

        return 
$articles;

    }

    public function 
getArticlesCount($only_published=true) {

        
$articles = array();

        
$today    = date("Y-m-d H:i:s");

        if (
$only_published){
            
$this->where("con.published = 1 AND con.pubdate <= '$today'
                      AND (con.is_end=0 OR (con.is_end=1 AND con.enddate >= '
$today'))");
        }

        
$sql = "SELECT 1

                FROM cms_content con

                WHERE con.is_arhive = 0
                      
{$this->where}

                
{$this->group_by}

                
{$this->order_by}n";

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

        return 
$this->inDB->num_rows($result);

    }

    public function 
reorder() {

        
$table      = 'cms_content';
        
$cat_field  = 'category_id';
        
$item_field = 'id';

        
$sql = "SELECT {$cat_field} FROM {$table} GROUP BY {$cat_field}";
        
$res = $this->inDB->query($sql);

        while(
$r = $this->inDB->fetch_assoc($res)){

            
$ord = 1;

            
$sql2 = "SELECT {$item_field}
                     FROM 
{$table}
                     WHERE 
{$cat_field} = {$r[$cat_field]}
                     ORDER BY ordering"
;

            
$res2 = $this->inDB->query($sql2);

            while(
$r2 = $this->inDB->fetch_assoc($res2)){
                
$this->inDB->query("UPDATE {$table} SET ordering = {$ord} WHERE {$item_field}={$r2[$item_field]} AND {$cat_field}={$r[$cat_field]}");
                
$ord++;
            }

        }

        return 
true;

    }

    public function 
moveItem($item_id, $cat_id, $dir, $step=1) {

        
$sign   = $dir>0 ? '+' : '-';

        
$current = $this->inDB->get_field('cms_content', "id={$item_id}", 'ordering');

        if (
$dir>0){
            
//движение вверх
            //у элемента следующего за текущим нужно уменьшить порядковый номер
            
$sql = "UPDATE cms_content
                    SET ordering = ordering-1
                    WHERE category_id=
{$cat_id} AND ordering = ({$current}+1)
                    LIMIT 1"
;
            
$this->inDB->query($sql);
        }
        if (
$dir<0){
            
//движение вниз
            //у элемента предшествующего текущему нужно увеличить порядковый номер
            
$sql = "UPDATE cms_content
                    SET ordering = ordering+1
                    WHERE category_id=
{$cat_id} AND ordering = ({$current}-1)
                    LIMIT 1"
;
            
$this->inDB->query($sql);
        }

        
$sql    = "UPDATE cms_content
                   SET ordering = ordering 
{$sign} {$step}
                   WHERE id=
{$item_id}";
        
$this->inDB->query($sql);

        return 
true;

    }

    public function 
moveArticlesToCat($articles, $to_cat_id) {

        
$ids = rtrim(implode(',', $articles), ',');

        
$this->inDB->query("UPDATE cms_content SET category_id = {$to_cat_id} WHERE id IN ({$ids})");

        return 
true;

    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function getArticles($category_id, $page=1, $perpage=100, $orderby='title', $orderto='asc') {

        
$articles = array();
        
$today = date("Y-m-d H:i:s");
        
$sql = "SELECT con.*, 
                       con.pubdate as fpubdate,
                       u.nickname as author,
                       u.login as user_login
                FROM cms_content con
                LEFT JOIN cms_users u ON u.id = con.user_id
                WHERE con.category_id = '
$category_id' AND con.published = 1 AND con.is_arhive = 0 AND con.pubdate <= '$today'
                      AND (con.is_end=0 OR (con.is_end=1 AND con.enddate >= '
$today'))
                ORDER BY con."
.$orderby." ".$orderto."
                LIMIT "
.(($page-1)*$perpage).", $perpage";

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

        if (!
$this->inDB->num_rows($result)) { return false; }

        while(
$article = $this->inDB->fetch_assoc($result)){
            
$article['fpubdate'] = cmsCore::dateFormat($article['fpubdate']);
            
$articles[] = $article;
        }

        
$articles = cmsCore::callEvent('GET_ARTICLES', $articles);

        
//Переносим в архив просроченные статьи
        
$sql = "UPDATE cms_content SET is_arhive = 1 WHERE is_end = 1 AND enddate < NOW()";
        
$this->inDB->query($sql);

        return 
$articles;

    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function getSeoLink($article){

        
$seolink    = '';
        
        
$category   = $this->inDB->get_fields('cms_category', "id={$article['category_id']}", 'NSLeft, NSRight');

        
$left_key   = $category['NSLeft'];
        
$right_key  = $category['NSRight'];

        
$path_list  = $this->getCategoryPath($left_key, $right_key);

        if (
$path_list){
            foreach(
$path_list as $pcat){
                if (
$pcat['id']!=1){
                    
$seolink .= cmsCore::strToURL(($pcat['url'] ? $pcat['url'] : $pcat['title'])) . '/';
                }
            }
        }

        
$seolink .= cmsCore::strToURL(($article['url'] ? $article['url'] : $article['title']));

        if (
$article['id']){
            
$where = ' AND id<>'.$article['id'];
        } else {
            
$where = '';
        }

        
$is_exists = $this->inDB->rows_count('cms_content', "seolink='{$seolink}'".$where, 1);

        if (
$is_exists) { $seolink .= '-' . $article['id']; }

        return 
$seolink;

    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function getCategorySeoLink($category){

        
$seolink    = '';

        
//Строим путь к разделу
        
$keys       = $this->inDB->get_fields('cms_category', "id={$category['id']}", 'NSLeft, NSRight');

        
$left_key   = $keys['NSLeft'] + 1;
        
$right_key  = $keys['NSRight'] + 1;

        
$path_list  = $this->getCategoryPath($left_key, $right_key);

        if (
$path_list){
            foreach(
$path_list as $pcat){
                if (
$pcat['id']!=1){
                    
$seolink .= cmsCore::strToURL(($pcat['url'] ? $pcat['url'] : $pcat['title'])) . '/';
                }
            }
        }

        
$seolink .= cmsCore::strToURL(($category['url'] ? $category['url'] : $category['title']));

        
//Обновляем пути всех статей этого раздела
        
$sql = "SELECT id, title, url FROM cms_content WHERE category_id = '{$category['id']}'";

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

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

            while(
$article = $this->inDB->fetch_assoc($result)){

                
$article_seolink = $seolink . '/' . cmsCore::strToURL(($article['url'] ? $article['url'] : $article['title']));

                
$this->inDB->query("UPDATE cms_content SET seolink='{$article_seolink}' WHERE id='{$article['id']}'");

                
//обновляем ссылки на комментарии
                
$comments_sql = "UPDATE cms_comments c,
                                        cms_content a
                                 SET c.target_link = CONCAT('/content/', a.seolink, '.html')
                                 WHERE a.id = '
{$article['id']}' AND
                                 c.target = 'article' AND c.target_id = a.id"
;
                
                
$this->inDB->query($comments_sql);

            }

        }

        return 
$seolink;

    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function getArticle($article_id) {

        
$sql = "SELECT  con.*,
                        cat.title cat_title, cat.id cat_id, cat.NSLeft as leftkey, cat.NSRight as rightkey, cat.modgrp_id,
                        cat.showtags as showtags, cat.seolink as catseolink, u.nickname as author, u.login as user_login
                FROM cms_content con
                LEFT JOIN cms_category cat ON cat.id = con.category_id
                LEFT JOIN cms_users u ON u.id = con.user_id
                WHERE con.id = '
$article_id' LIMIT 1";

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

        if (!
$this->inDB->num_rows($result)) { return false; }

        
$article = $this->inDB->fetch_assoc($result);

        
$article = cmsCore::callEvent('GET_ARTICLE', $article);

        return 
$article;
        
    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function getArticleByLink($seolink) {

        
$today = date("Y-m-d H:i:s");

        
$sql = "SELECT con.*,
                        cat.title cat_title, cat.id cat_id, cat.NSLeft as leftkey, cat.NSRight as rightkey, cat.showtags as showtags,
                        cat.modgrp_id, u.nickname as author, con.user_id as user_id, u.login as user_login
                FROM cms_content con
                LEFT JOIN cms_category cat ON cat.id = con.category_id
                LEFT JOIN cms_users u ON u.id = con.user_id
                WHERE con.seolink = '
$seolink' AND con.pubdate <= '$today' LIMIT 1";

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

        if (!
$this->inDB->num_rows($result)) { return false; }

        
$article = $this->inDB->fetch_assoc($result);

        
$article = cmsCore::callEvent('GET_ARTICLE', $article);

        return 
$article;

    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function getArticleURL($menuid, $seolink, $page=1){

        
$page_section = ($page>1 ? '/page-'.$page : '');

        
$url = '/'.$seolink.$page_section.'.html';

        return 
$url;

    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function getCategoryURL($menuid, $seolink, $page=1, $pagetag = false){

        if (!
$pagetag){
            
$page_section = ($page>1 ? '/page-'.$page : '');
        } else {
            
$page_section = '/page-%page%';
        }

        
$url = '/'.$seolink.$page_section;

        return 
$url;

    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function increaseHits($article_id) {

        
$this->inDB->query("UPDATE cms_content SET hits = hits + 1 WHERE id = '$article_id'");

        return 
true;

    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function getRelatedThread($article_id) {
        return 
$this->inDB->get_field('cms_forum_threads', "rel_to='content' AND rel_id='$article_id'", 'id');
    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function deleteArticle($id, $forum_delete=false){

        
$inCore = cmsCore::getInstance();

        
cmsCore::callEvent('DELETE_ARTICLE', $id);

        
$this->inDB->query("DELETE FROM cms_content WHERE id='$id'");
        
$this->inDB->query("DELETE FROM cms_content_access WHERE content_id='$id'");
        
$this->inDB->query("DELETE FROM cms_tags WHERE target='content' AND item_id='$id'");

        
cmsActions::removeObjectLog('add_article', $id);

        @
unlink(PATH.'/images/photos/small/article'.$id.'.jpg');
        @
unlink(PATH.'/images/photos/medium/article'.$id.'.jpg');
       
        
$inCore->deleteRatings('content', $id);
        
$inCore->deleteComments('article', $id);

        if (
$forum_delete){
            
$inCore = cmsCore::getInstance();
            
$inCore->loadModel('forum');
            
$forum_model = new cms_model_forum();
            
$forum_model->deleteAutoThread('content', $id);
        }

        return 
true;
    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function deleteArticles($id_list, $forum_delete=false){
        foreach(
$id_list as $key=>$id){
            
$this->deleteArticle($id, $forum_delete);
        }
        return 
true;
    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function addArticle($article){
        
$inCore = cmsCore::getInstance();

        
$article = cmsCore::callEvent('ADD_ARTICLE', $article);

        if (
$article['url']) { $article['url'] = cmsCore::strToURL($article['url']); }

        
// получаем значение порядка последней статьи
        
$last_ordering = (int)$this->inDB->get_field('cms_content', "category_id = '{$article['category_id']}' ORDER BY ordering DESC", 'ordering');
        
$ordering = $last_ordering+1;

        
$sql = "INSERT INTO cms_content (category_id, user_id, pubdate, enddate, 
                                         is_end, title, description, content,
                                         published, hits, meta_desc, meta_keys,
                                         showtitle, showdate, showlatest,
                                         showpath, ordering, comments, seolink,
                                         canrate, pagetitle, url, tpl)
                VALUES ('
{$article['category_id']}', '{$article['user_id']}', '{$article['pubdate']}', '{$article['enddate']}',
                         '
{$article['is_end']}', '{$article['title']}', '{$article['description']}', '{$article['content']}', '{$article['published']}', 0,
                        '
{$article['meta_desc']}', '{$article['meta_keys']}', '{$article['showtitle']}', '{$article['showdate']}', '{$article['showlatest']}',
                        '
{$article['showpath']}', {$ordering}, '{$article['comments']}', '',
                        '
{$article['canrate']}', '{$article['pagetitle']}', '{$article['url']}', '{$article['tpl']}')";

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

        
$article['id'] = $this->inDB->get_last_id('cms_content');

        if (
$article['id']){

            
$article['seolink'] = $this->getSeoLink($article);
            
$this->inDB->query("UPDATE cms_content SET seolink='{$article['seolink']}' WHERE id = '{$article['id']}'");

            
$inCore->loadLib('tags');
            
cmsInsertTags($article['tags'], 'content', $article['id']);

            if (
$article['published']) { cmsCore::callEvent('ADD_ARTICLE_DONE', $article); }
            
        }

        return 
$article['id'] ? $article['id'] : false;
    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function updateArticle($id, $article, $not_upd_seo = false){

        
$inCore             = cmsCore::getInstance();
        
$inUser             = cmsUser::getInstance();

        
$article['id']      = $id;

        if(!
$not_upd_seo){
            if (
$article['url']) { 
                
$article['url']  = cmsCore::strToURL($article['url']);
            }
            
$article['seolink'] = $this->getSeoLink($article);
            
$article_seo_sql = "url='{$article['url']}', seolink='{$article['seolink']}',";
        }

        if (!
$article['user_id']) { $article['user_id'] = $inUser->id; }

        
$article = cmsCore::callEvent('UPDATE_ARTICLE', $article);        

        
$sql = "UPDATE cms_content
                SET category_id = 
{$article['category_id']},
                    pubdate = '
{$article['pubdate']}',
                    enddate = '
{$article['enddate']}',
                    is_end = '
{$article['is_end']}',
                    title='
{$article['title']}',
                    description='
{$article['description']}',
                    content='
{$article['content']}',
                    published='
{$article['published']}',
                    meta_desc='
{$article['meta_desc']}',
                    meta_keys='
{$article['meta_keys']}',
                    showtitle='
{$article['showtitle']}',
                    showdate='
{$article['showdate']}',
                    showlatest='
{$article['showlatest']}',
                    showpath='
{$article['showpath']}',
                    comments='
{$article['comments']}',
                    
$article_seo_sql
                    canrate='
{$article['canrate']}',
                    pagetitle='
{$article['pagetitle']}',
                    user_id='
{$article['user_id']}',
                    tpl='
{$article['tpl']}'
                WHERE id = '
$id'
                LIMIT 1"
;

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

        
$inCore->loadLib('tags');
        
cmsInsertTags($article['tags'], 'content', $article['id']);

        if(!
$not_upd_seo){
            
//обновляем ссылки меню
            
$menuid = $this->inDB->get_field('cms_menu', "linktype='content' AND linkid={$id}", 'id');
            if (
$menuid){
                
$menulink = $inCore->getMenuLink('content', $id, $menuid);
                
$this->inDB->query("UPDATE cms_menu SET link='{$menulink}' WHERE id='{$menuid}'");
            }
    
            
//обновляем ссылки на комментарии
            
$comments_sql = "UPDATE cms_comments c,
                                    cms_content a
                             SET c.target_link = CONCAT('/content/', a.seolink, '.html')
                             WHERE a.id = '
$id' AND
                                   c.target = 'article' AND c.target_id = a.id"
;
    
            
$this->inDB->query($comments_sql);
        }

        return 
true;
        
    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function publishArticle($article_id, $flag=1){

        
$this->inDB->query("UPDATE cms_content SET published = '$flag' WHERE id = '$article_id'");
        return 
true;
        
    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function setArticleAccess($id, $showfor_list, $content_type = 'material'){

        if (!
sizeof($showfor_list)){ return true; }

        
$this->clearArticleAccess($id, $content_type);

        foreach (
$showfor_list as $key=>$value){
            
$sql = "INSERT INTO cms_content_access (content_id, content_type, group_id)
                    VALUES ('
$id', '$content_type', '$value')";
            
$this->inDB->query($sql);
        }
        
        return 
true;
    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function clearArticleAccess($id, $content_type = 'material'){

        
$sql = "DELETE FROM cms_content_access WHERE content_id = '$id' AND content_type = '$content_type'";

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

        return 
true;
    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function getNestedArticles($category_id) {

        
$cat = $this->getCategory($category_id);

        
$sql = "SELECT  con.id as id, con.title as title
                FROM    cms_content con
                JOIN cms_category cat ON cat.id = con.category_id AND
                                         cat.NSLeft >= 
{$cat['NSLeft']} AND
                                         cat.NSRight <= 
{$cat['NSRight']}
                "
;

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

        if (!
$this->inDB->num_rows($result)) { return false; }

        
$articles = array();

        while(
$article = $this->inDB->fetch_assoc($result)){
            
$articles[] = $article['id'];
        }

        return 
$articles ? $articles : false;

    }

/* ==================================================================================================== */
/* ==================================================================================================== */

    
public function deleteCategory($id, $is_with_content = false) {

        if (
$is_with_content){
            
$articles = $this->getNestedArticles($id);
            foreach(
$articles as $article_id){
                
$this->deleteArticle($article_id);
            }
        }

        
$this->inDB->deleteNS('cms_category', $id);

        return 
true;

    }

/* ==================================================================================================== */
/* ==================================================================================================== */

}
Онлайн: 0
Реклама