Вход Регистрация
Файл: components/catalog/model.php
Строк: 306
<?php
/******************************************************************************/
//                                                                            //
//                             InstantCMS v1.10                               //
//                        http://www.instantcms.ru/                           //
//                                                                            //
//                   written by InstantCMS Team, 2007-2013                    //
//                produced by InstantSoft, (www.instantsoft.ru)               //
//                                                                            //
//                        LICENSED BY GNU/GPL v2                              //
//                                                                            //
/******************************************************************************/

class cms_model_catalog{

    public function 
__construct(){
        
$this->inDB cmsDatabase::getInstance();
    }

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

    
public function getCommentTarget($target$target_id) {

        
$result = array();

        switch(
$target){

            case 
'catalog'$item            $this->inDB->get_fields('cms_uc_items'"id={$target_id}"'title');
                            if (!
$item) { return false; }
                            
$result['link']  = '/catalog/item'.$target_id.'.html';
                            
$result['title'] = $item['title'];
                            break;

        }

        return (
$result $result false);

    }

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

    
public function deleteItem($id){
        
$inCore cmsCore::getInstance();
        
$imageurl $this->getItemImageUrl($id);

        @
chmod(PATH."/images/catalog/$file"0777);
        @
chmod(PATH."/images/catalog/small/$file.jpg"0777);
        @
chmod(PATH."/images/catalog/medium/$file.jpg"0777);

        @
unlink(PATH.'/images/catalog/'.$imageurl);
        @
unlink(PATH.'/images/catalog/small/'.$imageurl.'.jpg');
        @
unlink(PATH.'/images/catalog/medium/'.$imageurl.'.jpg');

        
$this->inDB->query("DELETE FROM cms_uc_items WHERE id= '{$id}'");
        
$this->inDB->query("DELETE FROM cms_tags WHERE target='catalog' AND item_id = '{$id}'");
        
$this->inDB->query("DELETE FROM cms_uc_ratings WHERE item_id = '{$id}'");

        
cmsActions::removeObjectLog('add_catalog'$id);

        
$inCore->deleteComments('catalog'$id);

    }

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

    
public function updateItem($id$item){

        
$item cmsCore::callEvent('UPDATE_CATALOG_ITEM'$item);

        if (
$item['file']){
            
$item['imageurl'] = $item['file'];
        }

        if (!
$item['is_moderate']){ $item['is_moderate']=0; }

        
$sql "UPDATE cms_uc_items
                SET title='
{$item['title']}',
                    category_id = '
{$item['cat_id']}',
                    pubdate='
{$item['pubdate']}',
                    published='
{$item['published']}',
                    imageurl='
{$item['imageurl']}',
                    fieldsdata='
{$item['fields']}',
                    is_comments='
{$item['is_comments']}',
                    tags='
{$item['tags']}',
                    meta_desc='
{$item['meta_desc']}',
                    meta_keys='
{$item['meta_keys']}',
                    price='
{$item['price']}',
                    canmany='
{$item['canmany']}',
                    on_moderate='
{$item['on_moderate']}'
                WHERE id = 
$id
                LIMIT 1"
;

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

        
cmsInsertTags($item['tags'], 'catalog'$id);

    }

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

    
public function renewItem($id){
        
cmsCore::callEvent('RENEW_CATALOG_ITEM'$id);
        
$sql "UPDATE cms_uc_items SET pubdate = NOW() WHERE id = $id";
        
$this->inDB->query($sql);
    }

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

    
public function getItemImageUrl($id){
        
$imageurl   $this->inDB->get_field('cms_uc_items'"id={$id}"'imageurl');
        
$imageurl   cmsCore::callEvent('GET_CATALOG_ITEM_IMAGE'$imageurl);
        return 
$imageurl;
    }

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

    
public function addItem($item){
        
$inUser cmsUser::getInstance();

        if (!isset(
$item['on_moderate'])) { $item['on_moderate'] = 0; }

        
$item cmsCore::callEvent('ADD_CATALOG_ITEM'$item);

        
$sql "INSERT INTO cms_uc_items (category_id, title, pubdate, published, imageurl, fieldsdata, is_comments, tags, rating, meta_desc, meta_keys, price, canmany, user_id, on_moderate)
                VALUES (
{$item['cat_id']}, '{$item['title']}', '{$item['pubdate']}', '{$item['published']}',
                        '
{$item['file']}', '{$item['fields']}', {$item['is_comments']}, '{$item['tags']}', 0,
                        '
{$item['meta_desc']}', '{$item['meta_keys']}', '{$item['price']}', {$item['canmany']}{$inUser->id}{$item['on_moderate']})";
        
$this->inDB->query($sql);

        
$item_id $this->inDB->get_last_id('cms_uc_items');

        
cmsInsertTags($item['tags'], 'catalog'$item_id);

        return 
$item_id;
    }

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

    
public function copyItem($id$copies){

        
cmsCore::callEvent('COPY_CATALOG_ITEM'$id);

        
$item $this->inDB->get_fields('cms_uc_items'"id = '$id'"'category_id, title, pubdate, published, imageurl, fieldsdata, is_comments, tags, rating, meta_desc, meta_keys, price, canmany, user_id, on_moderate');
        if(!
$item) { return false; }

        for(
$c=1$c<=$copies$c++){

            
$set '';
            foreach(
$item as $field=>$value){
                
$set .= "{$field} = '{$this->inDB->escape_string($value)}',";
            }
            
$set rtrim($set',');

            
$this->inDB->query("INSERT INTO cms_uc_items SET {$set}");

            
$id $this->inDB->get_last_id('cms_uc_items');

            
cmsInsertTags($item['tags'], 'catalog'$id);

        }

    }

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

    
public function deleteDiscount($id){
        
cmsCore::callEvent('DELETE_CATALOG_DISCOUNT'$id);
        
$sql "DELETE FROM cms_uc_discount WHERE id = $id LIMIT 1";
        
$this->inDB->query($sql) ;
    }

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

    
public function updateDiscount($id$item){
        
$item cmsCore::callEvent('UPDATE_CATALOG_DISCOUNT'$item);
        
$sql "UPDATE cms_uc_discount
                SET cat_id = '
{$item['cat_id']}',
                    title = '
{$item['title']}',
                    sign = '
{$item['sign']}',
                    value = '
{$item['value']}',
                    unit = '
{$item['unit']}',
                    if_limit = 
{$item['if_limit']}
                WHERE id = 
$id
                LIMIT 1"
;
        
$this->inDB->query($sql);
    }

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

    
public function addDiscount($item){
        
$item cmsCore::callEvent('ADD_CATALOG_DISCOUNT'$item);
        
$sql "INSERT INTO cms_uc_discount (title, cat_id, sign, value, unit, if_limit)
                VALUES ('
{$item['title']}', {$item['cat_id']}{$item['sign']}, '{$item['value']}', '{$item['unit']}', {$item['if_limit']})";
        
$this->inDB->query($sql);
    }

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

    
public function deleteCategory($id){
        
$inCore cmsCore::getInstance();
        
cmsCore::callEvent('DELETE_CATALOG_CAT'$id);
        
$sql "SELECT id FROM cms_uc_items WHERE category_id = '$id'";
        
$result $this->inDB->query($sql) ;
        if (
$this->inDB->num_rows($result)){
            while(
$item $this->inDB->fetch_assoc($result)){
                
$this->deleteItem($item['id']);
            }
        }
        
$ns $inCore->nestedSetsInit('cms_uc_cats');
        
$ns->DeleteNode($id);
        return 
true;
    }

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

    
public function updateCategory($id$cat){

        
$old $this->inDB->get_fields('cms_uc_cats'"id='$id'"'parent_id, NSLevel');
        if(!
$old) { return false; }

        
$inCore cmsCore::getInstance();

        
$cat cmsCore::callEvent('UPDATE_CATALOG_CAT'$cat);

        
$ns $inCore->nestedSetsInit('cms_uc_cats');
        if(
$cat['parent_id'] != $old['parent_id'] && $cat['parent_id'] != $id){
            
$ns->MoveNode($id$cat['parent_id']);
        }

        
$cat['parent_id'] == $id $cat['parent_id'] = $old['parent_id'] : '';

        
$sql "UPDATE cms_uc_cats
                SET parent_id = '
{$cat['parent_id']}',
                    title = '
{$cat['title']}',
                    description = '
{$cat['description']}',
                    published = '
{$cat['published']}',
                    fieldsstruct = '
{$cat['fields']}',
                    view_type = '
{$cat['view_type']}',
                    fields_show = '
{$cat['fields_show']}',
                    showmore = '
{$cat['showmore']}',
                    perpage = '
{$cat['perpage']}',
                    showtags = '
{$cat['showtags']}',
                    showsort = '
{$cat['showsort']}',
                    is_ratings = '
{$cat['is_ratings']}',
                    orderby = '
{$cat['orderby']}',
                    orderto = '
{$cat['orderto']}',
                    showabc = '
{$cat['showabc']}',
                    shownew = '
{$cat['shownew']}',
                    newint = '
{$cat['newint']}',
                    filters = '
{$cat['filters']}',
                    is_public = '
{$cat['is_public']}',
                    can_edit = '
{$cat['can_edit']}',
                    cost = '
{$cat['cost']}'
                WHERE id = '
$id'
                LIMIT 1"
;
        
$this->inDB->query($sql);
    }

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

    
public function addCategory($cat){

        
$inCore cmsCore::getInstance();
        
$cat    cmsCore::callEvent('ADD_CATALOG_CAT'$cat);

        
$ns $inCore->nestedSetsInit('cms_uc_cats');
        
$cat['id'] = $ns->AddNode($cat['parent_id']);

        
$sql "UPDATE cms_uc_cats
                SET parent_id = '
{$cat['parent_id']}',
                    title = '
{$cat['title']}',
                    description = '
{$cat['description']}',
                    published = '
{$cat['published']}',
                    fieldsstruct = '
{$cat['fields']}',
                    view_type = '
{$cat['view_type']}',
                    fields_show = '
{$cat['fields_show']}',
                    showmore = '
{$cat['showmore']}',
                    perpage = '
{$cat['perpage']}',
                    showtags = '
{$cat['showtags']}',
                    showsort = '
{$cat['showsort']}',
                    is_ratings = '
{$cat['is_ratings']}',
                    orderby = '
{$cat['orderby']}',
                    orderto = '
{$cat['orderto']}',
                    showabc = '
{$cat['showabc']}',
                    shownew = '
{$cat['shownew']}',
                    newint = '
{$cat['newint']}',
                    filters = '
{$cat['filters']}',
                    is_public = '
{$cat['is_public']}',
                    can_edit = '
{$cat['can_edit']}',
                    cost = '
{$cat['cost']}'
                WHERE id = 
{$cat['id']}
                LIMIT 1"
;
        
$this->inDB->query($sql);

        return 
$cat['id'];
    }

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

    
public function copyCategory($id$copies){

        
$inCore cmsCore::getInstance();
        
$ns $inCore->nestedSetsInit('cms_uc_cats');

        
// Данные категории для копирования
        
$item $this->inDB->get_fields('cms_uc_cats'"id = '$id'"'parent_id, title, description, published, fieldsstruct, view_type, fields_show, showmore, perpage, showtags, showsort,    is_ratings,    orderby, orderto, showabc, shownew, newint,    filters, is_shop, is_public, can_edit, cost');
        if(!
$item) { return false; }

        
// Получаем родительскую категорию
        
$rootid $this->inDB->get_field('cms_uc_cats'"id = '{$item['parent_id']}'"'id');
        if(!
$rootid) { return false; }

        
cmsCore::callEvent('COPY_CATALOG_CAT'$id);

        for(
$c=1$c<=$copies$c++){

            
$cat_id $ns->AddNode($rootid);
            
$set '';
            foreach(
$item as $field=>$value){
                
$set .= "{$field} = '{$this->inDB->escape_string($value)}',";
            }
            
$set rtrim($set',');
            
$this->inDB->query("UPDATE cms_uc_cats SET {$set} WHERE id = '{$cat_id}' LIMIT 1");

        }
    }

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

    
public function getCategoryPath($left_key$right_key) {

        
$path = array();

        
$sql "SELECT id, title, NSLevel
                FROM cms_uc_cats
                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 getSubCats($parent_id$left_key$right_key) {

        
$subcats=array();

        
$sql "SELECT cat.*
                FROM cms_uc_cats cat
                WHERE cat.parent_id = '
$parent_id' AND cat.published = 1
                ORDER BY cat.title"
;

        
$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_uc_items con, cms_uc_cats cat
                          WHERE con.category_id = cat.id AND (cat.NSLeft >= 
{$subcat['NSLeft']} AND cat.NSRight <= {$subcat['NSRight']}) AND con.published = 1";

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

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

            
$subcats[] = $subcat;

        }

        
$subcats cmsCore::callEvent('GET_CATALOG_SUBCATS'$subcats);

        return 
$subcats;

    }

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

    
public function setCategoryAccess($id$showfor_list){

        
$this->clearCategoryAccess($id);

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

        foreach (
$showfor_list as $key=>$value){
            
$sql "INSERT INTO cms_uc_cats_access (cat_id, group_id)
                    VALUES (
$id$value)";
            
$this->inDB->query($sql);
        }

        return 
true;
    }

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

    
public function clearCategoryAccess($id){

        
$sql "DELETE FROM cms_uc_cats_access WHERE cat_id = $id";

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

        return 
true;
    }

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

    
public function checkCategoryAccess($cat_id$cat_public$group_id) {
        return (
$cat_public && $this->inDB->rows_count('cms_uc_cats_access'"cat_id={$cat_id} AND group_id={$group_id}"1));
    }

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

    
public static function getUCSearchLink($cat_id$text){

        
$text strip_tags(html_entity_decode(trim($text)));
        
$text preg_replace('/s+/u'' '$text);

        
$words explode(','$text);
        
$html  '';

        foreach(
$words as $key=>$value){

            
$value trim($value);

            
$html .= '<a href="/catalog/'.$cat_id.'/find/'.urlencode($value).'">'.$value.'</a>, ';

        }

        return 
rtrim($html', ');

    }

    public static function 
buildRating($rating){
        global 
$_LANG;
        
$rating round($rating2);
        
$html   '<span title="'.$_LANG['RATING'].': '.$rating.'">';
        for(
$r 0$r 5$r++){
            if (
round($rating) > $r){
                
$html .= '<img src="/images/ratings/starfull.gif" border="0" />';
            } else {
                
$html .= '<img src="/images/ratings/starhalf.gif" border="0" />';
            }
        }
        
$html .= '</span>';
        return 
$html;
    }

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