Вход Регистрация
Файл: 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>'+' '-';

        
$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}'".$where1);

        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>'/page-'.$page '');

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

        return 
$url;

    }

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

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

        if (!
$pagetag){
            
$page_section = ($page>'/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;

    }

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

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