Вход Регистрация
Файл: system/controllers/admin/actions/get_table_list.php
Строк: 39
<?php

class actionAdminGetTableList extends cmsAction {

    public function 
run($table$id_field null$title_field null) {

        
header('X-Frame-Options: DENY');

        if (!
$this->request->isAjax()) { return cmsCore::error404(); }

        if (!
$table || $this->validate_regexp('/^([a-z0-9_{}]*)$/'urldecode($table)) !== true){
            return 
$this->cms_template->renderJSON(array(
                
'error' => LANG_ERROR.' #validate table'
            
));
        }

        if (!
$this->model->db->isTableExists($table)){
            return 
$this->cms_template->renderJSON(array(
                
'error' => LANG_ERROR.' #table not exists'
            
));
        }

        if(!
$id_field){
            
$id_field 'id';
        }

        if(!
$title_field){
            
$title_field 'title';
        }

        
$filter_field_value $this->request->get('value''');

        
$filter_field_name $this->request->get('filter_field_name''');
        if (!
$filter_field_name) { return cmsCore::error404(); }

        
$table_fields $this->model->db->getTableFields($table);

        if(!
in_array($id_field$table_fieldstrue)){
            return 
$this->cms_template->renderJSON(array(
                
'error' => LANG_ERROR.' #id_field'
            
));
        }

        if(!
in_array($title_field$table_fieldstrue)){
            return 
$this->cms_template->renderJSON(array(
                
'error' => LANG_ERROR.' #title_field'
            
));
        }

        if(!
in_array($filter_field_name$table_fieldstrue)){
            return 
$this->cms_template->renderJSON(array(
                
'error' => LANG_ERROR.' #filter_field_name'
            
));
        }

        
// Основной фильтр
        
$this->model->filterEqual($filter_field_name$filter_field_value);

        
// Дополнительные фильтры
        
$filters $this->request->get('filters', []);

        if(
$filters){
            
$this->model->applyDatasetFilters(['filters' => $filters], true$table_fields);
        }

        
$items $this->model->selectOnly($id_field)->select($title_field)->get($table, function ($item$model) use($title_field) {
            return 
$item[$title_field];
        }, 
$id_field);

        
$list = ['0' => ''];

        if (
$items) {
            foreach(
$items as $id => $title){
                
$list[] = ['title' => $title'value' => $id];
            }
        }

        return 
$this->cms_template->renderJSON($list);

    }

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