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

    public function 
run(){

        
$model cmsCore::getModel('groups');
        
$model_content cmsCore::getModel('content');
        
$user cmsUser::getInstance();

        
$dataset_id $this->getOption('dataset_id');
        
$fields_is_in_list = (array)$this->getOption('fields_is_in_list', array());

        
$current_group cmsModel::getCachedResult('current_group');

        
$fields $model_content->setTablePrefix('')->orderBy('ordering')->getContentFields('groups');

        if (
$dataset_id){

            
$dataset $model_content->getContentDataset($dataset_id);

            if (
$dataset){
                
$model->applyDatasetFilters($dataset);
            } else {
                
$dataset_id false;
            }

        }

        if(
$this->getOption('widget_type') == 'related'){
            if(
$current_group){

                
$this->disableCache();

                
$model->filterRelated('title'$current_group['title']);

                
$model->filterNotEqual('id'$current_group['id']);

            } else {
                return 
false;
            }
        }

        list(
$fields$model) = cmsEventsManager::hook('groups_list_filter', array($fields$model));

        
$model->limit($this->getOption('limit'10));

        
$groups $model->getGroups();
        if(!
$groups){ return false; }

        list(
$groups$fields) = cmsEventsManager::hook('groups_before_list', array($groups$fields));

        
// строим массив полей для списка
        
if($groups){
            foreach (
$groups as $key => $group) {
                foreach(
$fields as $name => $field){

                    if (
$field['is_system'] || !in_array($field['id'], $fields_is_in_list) || !isset($group[$field['name']])) { continue; }
                    if (
$field['groups_read'] && !$user->isInGroups($field['groups_read'])) { continue; }
                    if (!
$group[$field['name']] && $group[$field['name']] !== '0') { continue; }

                    if (!isset(
$field['options']['label_in_list'])) {
                        
$label_pos 'none';
                    } else {
                        
$label_pos $field['options']['label_in_list'];
                    }

                    
$field_html $field['handler']->setItem($group)->parseTeaser($group[$field['name']]);
                    if (!
$field_html) { continue; }

                    
$groups[$key]['fields'][$field['name']] = array(
                        
'label_pos' => $label_pos,
                        
'type'      => $field['type'],
                        
'name'      => $field['name'],
                        
'title'     => $field['title'],
                        
'html'      => $field_html
                    
);

                }
            }
        }

        
cmsCore::loadControllerLanguage('groups');

        return array(
            
'show_members_count' => $this->getOption('show_members_count'true),
            
'fields'            => $fields,
            
'fields_is_in_list' => $fields_is_in_list,
            
'groups'            => $groups
        
);

    }

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