Вход Регистрация
Файл: system/controllers/tags/frontend.php
Строк: 81
<?php

class tags extends cmsFrontend {

    protected 
$useOptions true;
    public 
$useSeoOptions true;
    protected 
$unknown_action_as_index_param true;

    public function 
getTagsWidgetParams($options) {

        if (!empty(
$options['subjects'])) {
            
$options['subjects'] = array_filter($options['subjects']);
        }

        if (!empty(
$options['min_len'])) {
            
$this->model->filter("CHAR_LENGTH(tag) >= {$options['min_len']}")->forceIndex('tag');
        }

        if (!empty(
$options['limit'])) {
            
$this->model->limit($options['limit']);
        }

        
$this->model->orderByList([[
            
'by' => 'frequency',
            
'to' => 'desc',
            
'strict' => true
        
]]);

        if (!empty(
$options['subjects'])) {

            
// Если заданы типы контента

            
$this->model->filterEqual('target_controller''content')->
                    
filterIn('target_subject'$options['subjects']);

            
$this->model->groupBy('i.tag_id' . (!empty($options['min_freq']) ? ' HAVING frequency >= ' $options['min_freq'] : ''));

            
$this->model->useCache('tags.tags');

            
$tags $this->model->
                    
selectOnly('i.tag_id''id')->
                    
select('t.tag')->
                    
select('IFNULL(COUNT(i.id), 0)''frequency')->
                    
joinInner('tags''t''t.id = i.tag_id')->
                    
get('tags_bind');

        } else {

            
// Если типы контента не заданы

            
if (!empty($options['min_freq'])) {
                
$this->model->filterGtEqual('frequency'$options['min_freq']);
            }

            
$tags $this->model->
                    
selectOnly('id')->
                    
select('tag')->
                    
select('frequency')->
                    
getTags();
        }

        if (!
$tags) {
            return 
false;
        }

        
// Для стиля "Облако" выбираем мин. и макс. частоты отобранных тегов
        
if ($options['style'] == 'cloud') {
            
$min_frequency end($tags)['frequency'];
            
$max_frequency reset($tags)['frequency'];
        }

        if (empty(
$options['shuffle']) && $options['ordering'] == 'tag') {
            
// Сортировка тегов по алфавиту.
            
array_order_by($tags'tag');
        }

        if (!empty(
$options['shuffle'])) {
            
shuffle($tags);
        }

        return [
            
'subjects' => ((!empty($options['subjects']) && $options['subjects'] !== ['0']) ? $options['subjects'] : []),
            
'style'    => $options['style'],
            
'max_fs'   => $options['max_fs'],
            
'min_fs'   => $options['min_fs'],
            
'colors'   => (!empty($options['colors']) ? explode(','$options['colors']) : []),
            
'tags'     => $tags,
            
'min_freq' => (isset($min_frequency) ? $min_frequency 0),
            
'max_freq' => (isset($max_frequency) ? $max_frequency 0)
        ];
    }

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