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

class actionAdminInlineSave extends cmsAction {

    public function 
run($table = null, $item_id = null) {

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

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

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

        
$data = $this->request->get('data', []);
        if(!
$data){
            return 
$this->cms_template->renderJSON(array(
                
'error' => LANG_ERROR.' #empty data'
            
));
        }

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

        
$i = $this->model->getItemByField($table, 'id', $item_id);
        if (!
$i){
            return 
$this->cms_template->renderJSON(array(
                
'error' => LANG_ERROR.' #404'
            
));
        }

        
$table_fields = $this->model->db->getTableFieldsTypes($table);

        
$_data = [];

        foreach (
$data as $field => $value) {
            if(!
array_key_exists($field, $i) || is_array($data[$field])){
                unset(
$data[$field]);
            } else {

                if(
$value){

                    
$table_field_type = $table_fields[$field];
                    if(
in_array($table_field_type, ['tinyint','smallint','mediumint','int','bigint'])){
                        
$_data[$field] = $data[$field] = intval($value);
                    } elseif(
in_array($table_field_type, ['decimal','float','double'])){
                        
$_data[$field] = $data[$field] = floatval(str_replace(',', '.', trim($value)));
                    } else {
                        
$data[$field] = strip_tags($value);
                        
$_data[$field] = htmlspecialchars($data[$field]);
                    }

                } else {
                    
$_data[$field] = $value;
                }

            }
        }

        if(empty(
$data)){
            return 
$this->cms_template->renderJSON(array(
                
'error' => LANG_ERROR.' #empty data'
            
));
        }

        list(
$data, $_data, $i) = cmsEventsManager::hook('admin_inline_save', array($data, $_data, $i));
        list(
$data, $_data, $i) = cmsEventsManager::hook('admin_inline_save_'.str_replace(['{','}'], '', $table), array($data, $_data, $i));

        
$this->model->update($table, $item_id, $data);

        list(
$data, $_data, $i) = cmsEventsManager::hook('admin_inline_save_after', array($data, $_data, $i));
        list(
$data, $_data, $i) = cmsEventsManager::hook('admin_inline_save_after_'.str_replace(['{','}'], '', $table), array($data, $_data, $i));

        return 
$this->cms_template->renderJSON(array(
            
'error'  => false,
            
'info'   => LANG_SUCCESS_MSG,
            
'values' => $_data
        
));

    }

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