Файл: system/controllers/content/widgets/slider/widget.php
Строк: 84
<?php
class widgetContentSlider extends cmsWidget {
public function run(){
$cat_id = $this->getOption('category_id');
$ctype_id = $this->getOption('ctype_id');
$dataset_id = $this->getOption('dataset');
$image_field = $this->getOption('image_field');
$big_image_field = $this->getOption('big_image_field');
$big_image_preset = $this->getOption('big_image_preset');
$teaser_fields = $this->getOption('teaser_field');
$limit = $this->getOption('limit', 10);
$delay = $this->getOption('delay', 5);
$teaser_len = $this->getOption('teaser_len', 100);
$model = cmsCore::getModel('content');
$ctype = $model->getContentType($ctype_id);
if (!$ctype) { return false; }
if ($cat_id){
$category = $model->getCategory($ctype['name'], $cat_id);
} else {
$category = false;
}
if ($dataset_id){
$dataset = $model->getContentDataset($dataset_id);
if ($dataset){
$model->applyDatasetFilters($dataset);
} else {
$dataset_id = false;
}
}
$table_name = $model->getContentCategoryTableName($ctype['name']);
$bind_table_name = $table_name . '_bind';
$model->select('c.title', 'cat_title');
$model->select('c.slug', 'cat_slug');
if ($category){
$model->joinInner($bind_table_name, 'b FORCE INDEX (item_id)', 'b.item_id = i.id');
$model->joinInner($table_name, 'c', 'c.id = b.category_id');
$model->filterGtEqual('c.ns_left', $category['ns_left']);
$model->filterLtEqual('c.ns_right', $category['ns_right']);
if(!empty($ctype['options']['is_cats_multi'])){
$model->distinctSelect();
}
} else {
$model->joinInner($table_name, 'c', 'c.id = i.category_id');
}
// применяем приватность
// флаг показа только названий
$hide_except_title = $model->applyPrivacyFilter($ctype, cmsUser::isAllowed($ctype['name'], 'view_all'));
// Скрываем записи из скрытых родителей (приватных групп и т.п.)
$model->enableHiddenParentsFilter();
// выключаем формирование рейтинга в хуках
$ctype['is_rating'] = 0;
list($ctype, $model) = cmsEventsManager::hook('content_list_filter', array($ctype, $model));
list($ctype, $model) = cmsEventsManager::hook("content_{$ctype['name']}_list_filter", array($ctype, $model));
$items = $model->limit($limit)->getContentItems($ctype['name']);
if (!$items) { return false; }
list($ctype, $items) = cmsEventsManager::hook("content_before_list", array($ctype, $items));
list($ctype, $items) = cmsEventsManager::hook("content_{$ctype['name']}_before_list", array($ctype, $items));
return array(
'ctype' => $ctype,
'teaser_len' => $teaser_len,
'hide_except_title' => $hide_except_title,
'delay' => $delay,
'image_field' => $image_field,
'big_image_field' => $big_image_field,
'big_image_preset' => $big_image_preset,
'teaser_field' => $teaser_fields,
'items' => $items
);
}
}