Вход Регистрация
Файл: system/controllers/content/widgets/filter/widget.php
Строк: 81
<?php
class widgetContentFilter extends cmsWidget {

    public 
$is_cacheable false;

    public function 
run(){

        
$ctype_name $this->getOption('ctype_name');

        
$slug null;

        if (!
$ctype_name){

            
$core cmsCore::getInstance();

            if (
$core->controller != 'content'){ return false; }

            
$ctype_string $core->uri_controller;
            
$slug = !mb_strstr($core->uri'.html') ? mb_substr($core->urimb_strlen($ctype_string)+1) : false;

            if (
preg_match('/^([a-z0-9]+)$/'$ctype_string$matches)){
                
$ctype_name $matches[0];
            } else
            if (
preg_match('/^([a-z0-9]+)-([a-z0-9_]+)$/'$ctype_string$matches)){
                
$ctype_name $matches[1];
            } else {
                return 
false;
            }

        }

        
$core cmsCore::getInstance();
        
$model cmsCore::getModel('content');
        
$content_controller cmsCore::getController('content');

        
$fields $model->getContentFields($ctype_name);
        
        
$category = array('id' => 1);
        
        if (
$slug) {
            
$category $model->getCategoryBySLUG($ctype_name$slug);
        }
        
        
$props $model->getContentProps($ctype_name$category['id']);
        
$props_fields $content_controller->getPropsFields($props);        

        
$fields_count 0;
        
        foreach(
$fields as $field){
            if (
$field['is_in_filter']) { $fields_count++; break; }
        }
        
        if (!
$fields_count && !empty($props_fields)){
            foreach(
$props as $prop){
                if (
$prop['is_in_filter']) { $fields_count++; break; }
            }
        }
        
        if (!
$fields_count){
            return 
false;            
        }
        
        
$filters = array();
        
        foreach(
$fields as $name => $field){

            if (!
$field['is_in_filter']) { continue; }
            if (!
$core->request->has($name)){ continue; }

            
$value $core->request->get($name);
            if (!
$value) { continue; }

            
$filters[$name] = $value;

        }        
        
        if (!empty(
$props)){
            foreach(
$props as $prop){

                
$name "p{$prop['id']}";

                if (!
$prop['is_in_filter']) { continue; }
                if (!
$core->request->has($name)){ continue; }

                
$value $core->request->get($name);
                if (!
$value) { continue; }

                
$model->filterPropValue($ctype_name$prop$value);
                
$filters[$name] = $value;

            }
        }        
        
        return array(
            
'ctype_name' => $ctype_name,
            
'page_url' => $core->uri_absolute,
            
'fields' => $fields,
            
'props_fields' => $props_fields,
            
'props' => $props,
            
'filters' => $filters,
        );

    }

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