Вход Регистрация
Файл: source/library/scrud/Scrud.php
Строк: 843
<?php

require_once LIBRARY '/Validation.php';
require_once 
LIBRARY '/FileUpload.php';
require_once 
LIBRARY '/Image.php';
require_once 
LIBRARY '/scrud/ScrudDao.php';

$hook Hook::singleton();

$hook->set('SCRUD_INIT');
$hook->set('SCRUD_BEFORE_VALIDATE');
$hook->set('SCRUD_VALIDATE');
$hook->set('SCRUD_ADD_FORM');
$hook->set('SCRUD_EDIT_FORM');
$hook->set('SCRUD_VIEW_FORM');
$hook->set('SCRUD_ADD_CONFIRM');
$hook->set('SCRUD_EDIT_CONFIRM');
$hook->set('SCRUD_BEFORE_SAVE');
$hook->set('SCRUD_BEFORE_INSERT');
$hook->set('SCRUD_BEFORE_UPDATE');
$hook->set('SCRUD_COMPLETE_INSERT');
$hook->set('SCRUD_COMPLETE_UPDATE');
$hook->set('SCRUD_COMPLETE_SAVE');
$hook->set('SCRUD_CONFRIM_DELETE_FORM');
$hook->set('SCRUD_COMPLETE_DELETE');

class 
Scurd {

    private 
$da;
    private 
$conf;
    private 
$title '';
    private 
$errors = array();
    private 
$dao;
    private 
$primaryKey = array();
    private 
$fields;
    private 
$conditions null;
    private 
$join = array();
    private 
$fieldsDisplay = array();
    private 
$fieldsAlias = array();
    private 
$orderField '';
    private 
$orderType '';
    private 
$colsWidth = array();
    private 
$colsCustom = array();
    private 
$colsAlign = array();
    private 
$pageIndex 1;
    private 
$limit 20;
    private 
$search 'one_field';
    private 
$form = array();
    private 
$elements = array();
    private 
$validate = array();
    private 
$data = array();
    private 
$queryString = array();
    private 
$table;
    private 
$fileUpload;
    private 
$image;
    private 
$frmType '1';
    private 
$globalAccess false;
    private 
$theme_default '';

    public function 
__construct($table null$conf = array(), $da null) {
        
$this->theme_default dirname(__FILE__) . '/templates';
        
$hook Hook::singleton();
        if (empty(
$da)) {
            die(
'DataAccess object is not null.');
        }
        
        if (!isset(
$conf['confirm_page'])){
            
$conf['confirm_page'] = 1;
        }
        
        if (
$hook->isExisted('SCRUD_INIT')) {
            
$conf $hook->filter('SCRUD_INIT'$conf);
        }
        
        
$conf['theme_path'] = (!empty($conf['theme_path'])) ? $conf['theme_path'] : dirname(__FILE__) . '/templates';
        
        if (
file_exists($conf['theme_path'].'/template_functions.php')){
            require_once 
$conf['theme_path'].'/template_functions.php';
        }else{
            require_once 
LIBRARY '/scrud/templates/template_functions.php';
        }
        
        if (empty(
$conf['tool_bar_position'])){
            
$conf['tool_bar_position'] = array(50,24);
        }
        
        
//if (!function_exists('__toolbar')){
        //    require_once LIBRARY . '/scrud/templates/toolbar.php';
        //}
        
if (file_exists($conf['theme_path'].'/toolbar.php')){
            require_once 
$conf['theme_path'].'/toolbar.php';
        }else{
            require_once 
$this->theme_default '/toolbar.php';;
        }
        
        
$this->fileUpload = new FileUpload();

        
$this->image = new Image(__IMAGE_UPLOAD_REAL_PATH__);

        
$this->da $da;

        if (isset(
$conf['global_access']) && $conf['global_access'] == true) {
            
$this->globalAccess true;
        }
        
        if (isset(
$conf['frm_type'])) {
            
$this->frmType $conf['frm_type'];
        }

        if (empty(
$conf['order_field'])) {
            
$conf['order_field'] = '';
        }
        if (empty(
$conf['order_type'])) {
            
$conf['order_type'] = '';
        }

        if (isset(
$conf['title'])) {
            
$this->setTitle($conf['title']);
        }

        if (isset(
$conf['form_elements'])) {
            
$this->formElements($conf['form_elements']);
        }

        if (isset(
$conf['elements'])) {
            
$this->elements($conf['elements']);
        }

        if (isset(
$conf['search_form'])) {
            
$this->searchForm('fields'$conf['search_form']);
        }

        if (isset(
$conf['data_list'])) {
            
$this->dataList($conf['data_list']);
        }

        if (isset(
$conf['validate']) && is_array($conf['validate'])) {
            
$this->validate $conf['validate'];
        }
        if (
$hook->isExisted('SCRUD_BEFORE_VALIDATE')) {
            
$this->validate $hook->filter('SCRUD_BEFORE_VALIDATE'$this->validate);
        }

        if (isset(
$conf['join']) && is_array($conf['join'])) {
            
$this->join $conf['join'];
        }

        
$conf['limit_opts'] = (isset($conf['limit_opts']) && is_array($conf['limit_opts'])) ? $conf['limit_opts'] : array();
        
//$conf['theme_path'] = (!empty($conf['theme_path'])) ? $conf['theme_path'] : dirname(__FILE__) . '/templates';
        
$conf['theme'] = (!empty($conf['theme'])) ? $conf['theme'] : '';
        
$conf['color'] = (!empty($conf['color'])) ? $conf['color'] : '';
        
$this->table $conf['table'] = $table;

        
$this->dao = new ScrudDao($conf['table'], $this->da);
        
$this->conf $conf;

        
$fields $this->da->listFields($this->conf['table']);
        foreach (
$fields as $v) {
            
$this->fields[] = $this->conf['table'] . '.' $v['Field'];
            if (
$v['Key'] == "PRI") {
                
$this->primaryKey[] = $this->conf['table'] . '.' $v['Field'];
            }
        }

        if (!empty(
$this->conf['join'])) {
            foreach (
$this->conf['join'] as $table => $v) {
                
$fields $this->da->listFields($table);
                foreach (
$fields as $v) {
                    
$this->fields[] = $table '.' $v['Field'];
                }
            }
        }


        
$this->dao->p_fields $this->fields;


        
$this->limit = (isset($conf['limit'])) ? $conf['limit'] : 20;
        
$this->data = (!empty($_POST['data'])) ? $_POST['data'] : array();
    }

    
//public function join($type, $table, $conditions) {
    //    $this->join[] = array($type, $table, $conditions);
    //}

    
public function conditions($conditions) {
        
$this->conditions $conditions;
    }

    private function 
setTitle($title) {
        
$this->title $title;
    }

    private function 
fields($fields = array()) {
        
$this->fields $fields;
    }

    private function 
colsWidth($colsWidth = array()) {
        
$this->colsWidth $colsWidth;
    }

    
/**
     * @param $dataList
     */
    
private function dataList($dataList = array()) {
        foreach (
$dataList as $field => $v) {
            if (isset(
$field)) {
                
$this->fieldsDisplay[] = $field;
            } else {
                continue;
            }
            if (isset(
$v['alias'])) {
                
$this->fieldsAlias[$field] = $v['alias'];
            }
            if (isset(
$v['width'])) {
                
$this->colsWidth[$field] = $v['width'];
            }
            if (isset(
$v['format'])) {
                
$this->colsCustom[$field] = $v['format'];
            }
            if (isset(
$v['align'])) {
                
$this->colsAlign[$field] = $v['align'];
            }
        }
    }

    
/**
     *
     * @param $type
     * @param $elements
     */
    
private function searchForm($type 'one_field'$elements = array()) {
        switch (
$type) {
            case 
'one_field':
                
$this->search 'one_field';
                break;
            case 
'fields':
                
$this->search $elements;
                break;
        }
    }

    
/**
     *
     * @param $form
     */
    
private function formElements($form = array()) {
        
$this->form $form;
    }

    private function 
elements($element = array()) {
        
$this->elements $element;
    }

    
/**
     *
     */
    
public function getDa() {
        return 
$this->da;
    }

    
/**
     *
     */
    
public function process() {
        if (!empty(
$_SERVER['QUERY_STRING'])) {
            
parse_str($_SERVER['QUERY_STRING'], $this->queryString);
        }
        
        if (isset(
$_GET['apache_mod_rewrite']) && (int) $_GET['apache_mod_rewrite'] == 1){
            if (isset(
$this->queryString['wp'])) {
                unset(
$this->queryString['wp']);
            }
        }

        
$action = (isset($_GET['xtype'])) ? trim($_GET['xtype']) : '';
        
ob_start();
        switch (
$action) {
            case 
'index':
                
$this->index();
                break;
            case 
'modalform':
                
$this->modalform();
                break;
            case 
'form':
                
$this->form();
                break;
            case 
'confirm':
                
$this->confirm();
                break;
            case 
'update':
                
$this->update();
                break;
            case 
'del':
                
$this->del();
                break;
            case 
'delFile':
                
$this->delFile();
                break;
            case 
'delconfirm':
                
$this->delConfirm();
                break;
            case 
'exportcsv':
                
$this->exportCsv();
                break;
            case 
'exportcsvall':
                
$this->exportcsvall();
                break;
            case 
'view':
                
$this->view();
                break;
            default:
                if (isset(
$_SESSION['auth_token_xtable'])) {
                    unset(
$_SESSION['auth_token_xtable']);
                }
                if (isset(
$_SESSION['xtable_search_conditions'])) {
                    unset(
$_SESSION['xtable_search_conditions']);
                }
                
$this->index();
                break;
        }
        
$content ob_get_contents();
        
ob_get_clean();

        return 
$content;
    }

    
/**
     *
     */
    
private function index() {
        global 
$config_database;
        
        if (isset(
$_POST['src'])){
            
$src $_POST['src'];
            if (!empty(
$src[$this->conf['table']])){
                foreach (
$src[$this->conf['table']] as $k => $v){
                     
                    if (isset(
$this->conf['form_elements'][$this->conf['table'].'.'.$k]) &&
                    
$this->conf['form_elements'][$this->conf['table'].'.'.$k]['element'][0] == 'date' && $v != ''){
                        
$v str2mysqltime($v,'Y-m-d');
                        if (!
is_date($v)){
                            
$v '';
                        }
                    }
                     
                    if (isset(
$this->conf['form_elements'][$this->conf['table'].'.'.$k]) &&
                    
$this->conf['form_elements'][$this->conf['table'].'.'.$k]['element'][0] == 'datetime' && $v != ''){
                        
$v str2mysqltime($v,'Y-m-d H:i:s');
                        if (!
is_date($v)){
                            
$v '';
                        }
                    }
            
                    
$_POST['src'][$this->conf['table']][$k] = $v;
            
                }
            }
        }

        if (!empty(
$this->conf['join'])) {
            foreach (
$this->conf['join'] as $tbl => $tmp) {
                if (
file_exists(__DATABASE_CONFIG_PATH__ '/' $config_database['default']["database"] . '/' $tbl '.php')) {
                    
$content unserialize(str_replace("<?php exit; ?>n"""file_get_contents(__DATABASE_CONFIG_PATH__ '/' $config_database['default']["database"] . '/' $tbl '.php')));
                    if (!empty(
$content['form_elements'])) {
                        foreach (
$content['form_elements'] as $k => $v) {
                            if (
strpos($k'.') !== false) {
                                
$this->form[$k] = $v;
                            }
                        }
                    }
                }
            }
        }

        if (!isset(
$_POST['src']) && isset($_SESSION['xtable_search_conditions'])) {
            
$_POST['src'] = $_SESSION['xtable_search_conditions'];
            unset(
$_POST['src']['page']);
        }
        if (!isset(
$_POST['src']['page'])) {
            if (isset(
$_GET['src']['p'])) {
                
$_POST['src']['page'] = $_GET['src']['p'];
            }
        }
        if (isset(
$_GET['src']['l'])) {
            
$_POST['src']['limit'] = $_GET['src']['l'];
        }
        
$pageIndex = (!empty($_POST['src']['page'])) ? $_POST['src']['page'] : 1;
        
$this->pageIndex $pageIndex = ((int) $pageIndex 0) ? (int) $pageIndex 1;
        
$this->limit = (isset($_POST['src']['limit'])) ? $_POST['src']['limit'] : $this->limit;
        
$conditions '';
        
$order '';
        
$ps = array();
        
$strAnd '';
        if (
is_array($this->search)) {
            foreach (
$this->fields as $field) {
                
$ary explode('.'$field);
                if (isset(
$_POST['src']) &&
                        isset(
$_POST['src'][$ary[0]][$ary[1]]) &&
                        
$_POST['src'][$ary[0]][$ary[1]] != '$$__src_r_all_value__$$'
                
) {
                    if (!
is_array($_POST['src'][$ary[0]][$ary[1]]) && trim($_POST['src'][$ary[0]][$ary[1]]) != '') {
                        if (isset(
$this->form[$field]['element'][0]) && 
                            (
$this->form[$field]['element'][0] == 'autocomplete' || 
                                
$this->form[$field]['element'][0] == 'select')){
                            
$conditions .= $strAnd $field ' = ? ';
                            
$ps[] =  $_POST['src'][$ary[0]][$ary[1]];
                            
$strAnd 'AND ';
                        }else{
                            
$conditions .= $strAnd $field ' like ? ';
                            
$ps[] = '%' $_POST['src'][$ary[0]][$ary[1]] . '%';
                            
$strAnd 'AND ';
                        }
                    } else if (
is_array($_POST['src'][$ary[0]][$ary[1]])) {
                        if (
count($_POST['src'][$ary[0]][$ary[1]]) > 0) {
                            
$strOr  '';
                            
$tempConditons "";
                            foreach (
$_POST['src'][$ary[0]][$ary[1]] as $v) {
                                if (!empty(
$v)){
                                    
$tempConditons .= $strOr $field ' like ? ';
                                    
$ps[] = '%,' $v ',%';
                                    
$strOr ' OR ';
                                }
                            }
                            if (
$tempConditons != ""){
                                
$conditions .= $strAnd .' ( '.$tempConditons.' ) ';
                                
$strAnd ' AND ';
                            }
                        }
                    }
                }
            }
        } else if (
$this->search == 'one_field') {
            if (isset(
$_POST['src']) &&
                    isset(
$_POST['src']['one_field']) &&
                    
trim($_POST['src']['one_field']) !== '') {
                
$conditions .= "(";
                foreach (
$this->fields as $field) {
                    if (!
in_array($field$this->fieldsDisplay))
                        continue;
                    if (
trim($_POST['src']['one_field']) !== '') {
                        
$conditions .= $strAnd $field ' like ? ';
                        
$ps[] = '%' $_POST['src']['one_field'] . '%';
                        
$strAnd 'OR ';
                    }
                }
                
$conditions .= ")";
                
$strAnd 'AND ';
            }
        }

        if (isset(
$_GET['src']['o'])) {
            
$_POST['src']['order_field'] = $_GET['src']['o'];
        }
        if (isset(
$_GET['src']['t'])) {
            
$_POST['src']['order_type'] = $_GET['src']['t'];
        }
        if (!empty(
$_POST['src']['order_field']) && !empty($_POST['src']['order_type'])) {
            
$order .= $_POST['src']['order_field'] . ' ' $_POST['src']['order_type'];
            
$this->orderField trim($_POST['src']['order_field']);
            
$this->orderType trim(strtolower($_POST['src']['order_type']));
        } else if (!empty(
$this->conf['order_field']) && !empty($this->conf['order_type'])) {
            
$order .= $this->conf['order_field'] . ' ' $this->conf['order_type'];
            
$this->orderField trim($this->conf['order_field']);
            
$this->orderType trim(strtolower($this->conf['order_type']));
        }
        if (!empty(
$this->conditions)) {
            if (
is_array($this->conditions)) {
                
$conditions .= ' ' $strAnd $this->conditions[0] . ' ';
                foreach (
$this->conditions[1] as $v) {
                    
$ps[] = $v;
                }
                
$strAnd 'AND ';
            } else {
                
$conditions .= ' ' $strAnd $this->conditions ' ';
                
$strAnd 'AND ';
            }
        }

        if (isset(
$_POST['src'])) {
            
$_SESSION['xtable_search_conditions'] = $_POST['src'];
        }
        
        
        if (
$this->globalAccess == false && 
            isset(
$_SESSION['CRUD_AUTH']) && 
            isset(
$_SESSION['CRUD_AUTH']['id']) && 
            
in_array($this->conf['table'] . '.created_by'$this->fields) ){
            
$conditions .= ' ' $strAnd $this->conf['table'] . '.created_by = '.$_SESSION['CRUD_AUTH']['id'].' ' ;
            
$strAnd 'AND ';
        }
        
        if (!empty(
$this->conf['where'])){
            
$conditions .= ' ' $strAnd$this->conf['where'];
        }
        
        
$matches = array();
        
preg_match_all("/{([^}]*)}/s"$conditions$matches);
        if (!empty(
$matches[0])){
            
$user $_SESSION['CRUD_AUTH'];
            foreach (
$matches[1] as $k => $v){
                
$v strtolower($v);
                
$ary_v explode('.'$v);
                
$v3 $user;
                if (
count($ary_v) >=&& $ary_v[0] == 'user'){
                    foreach (
$ary_v as  $k1 => $v1){
                        if (
$v1 == 'user' ) continue;
                        if (
is_array($v3)){
                            
$v3 $v3[$v1];
                        }else{
                            
$v3 '';
                        }
                    }
                }
                if (
is_array($v3)){
                    
$v3 '';
                }
                
$matches[1][$k] = $v3;
            }
        
            
$conditions str_replace($matches[0], $matches[1], $conditions);
        }

        
$params = array();
        
$params['fields'] = $this->fields;
        
$params['join'] = $this->join;
        
$params['found_rows'] = true;
        
$params['limit'] = $this->limit;
        
$params['page'] = $pageIndex;
        
$params['conditions'] = array($conditions$ps);
        
$params['order'] = $order;
        
        
$this->results $this->dao->find($params);
        
$this->totalRecord $this->dao->foundRows();
        
$this->totalPage ceil($this->totalRecord $this->limit);
        
$fields = array();

        if (!empty(
$this->fieldsDisplay)) {
            
$fields $this->fieldsDisplay;
        } else {
            
$fields $this->fields;
        }

        if (
is_file($this->conf['theme_path'] . '/index.php')) {
            require_once 
$this->conf['theme_path'] . '/index.php';
        } else {
            if (
is_file($this->theme_default.'/index.php')){
                require_once 
$this->theme_default.'/index.php';
            }
        }
    }
    
    public function 
modalform(){
        if (!isset(
$_POST['src']) && isset($_SESSION['xtable_search_conditions'])) {
            
$_POST['src'] = $_SESSION['xtable_search_conditions'];
        }
        if (
is_file($this->conf['theme_path'] . '/search_form.php')) {
            require_once 
$this->conf['theme_path'] . '/search_form.php';
            exit;
        } else {
            if (
is_file($this->theme_default.'/search_form.php')){
                require_once 
$this->theme_default.'/search_form.php';
                exit;
            }
        }
    }

    
/**
     * 
     */
    
private function exportCsv() {
        if (!isset(
$_POST['src']) && isset($_SESSION['xtable_search_conditions'])) {
            
$_POST['src'] = $_SESSION['xtable_search_conditions'];
            unset(
$_POST['src']['page']);
        }
        
$conditions '';
        
$order '';
        
$ps = array();
        
$strAnd '';
        if (
is_array($this->search)) {
            foreach (
$this->fields as $field) {
                
$ary explode('.'$field);
                if (isset(
$_POST['src']) &&
                        isset(
$_POST['src'][$ary[0]][$ary[1]]) &&
                        !
is_array($_POST['src'][$ary[0]][$ary[1]]) && trim($_POST['src'][$ary[0]][$ary[1]]) != '') {
                    
$conditions .= $strAnd $field ' like ? ';
                    
$ps[] = '%' $_POST['src'][$ary[0]][$ary[1]] . '%';
                    
$strAnd 'AND ';
                }
            }
        } else if (
$this->search == 'one_field') {
            if (
trim($_POST['src']['one_field']) !== '') {
                
$conditions .= "(";
                foreach (
$this->fields as $field) {
                    if (!
in_array($field$this->fieldsDisplay))
                        continue;
                    if (
trim($_POST['src']['one_field']) !== '') {
                        
$conditions .= $strAnd $field ' like ? ';
                        
$ps[] = '%' $_POST['src']['one_field'] . '%';
                        
$strAnd 'OR ';
                    }
                }
                
$conditions .= ")";
                
$strAnd 'AND ';
            }
        }

        if (isset(
$_GET['src']['o'])) {
            
$_POST['src']['order_field'] = $_GET['src']['o'];
        }
        if (isset(
$_GET['src']['t'])) {
            
$_POST['src']['order_type'] = $_GET['src']['t'];
        }
        if (!empty(
$_POST['src']['order_field']) && !empty($_POST['src']['order_type'])) {
            
$order .= $_POST['src']['order_field'] . ' ' $_POST['src']['order_type'];
            
$this->orderField trim($_POST['src']['order_field']);
            
$this->orderType trim(strtolower($_POST['src']['order_type']));
        } else if (!empty(
$this->conf['order_field']) && !empty($this->conf['order_type'])) {
            
$order .= $this->conf['order_field'] . ' ' $this->conf['order_type'];
            
$this->orderField trim($this->conf['order_field']);
            
$this->orderType trim(strtolower($this->conf['order_type']));
        }
        if (!empty(
$this->conditions)) {
            if (
is_array($this->conditions)) {
                
$conditions .= ' ' $strAnd $this->conditions[0] . ' ';
                foreach (
$this->conditions[1] as $v) {
                    
$ps[] = $v;
                }
                
$strAnd 'AND ';
            } else {
                
$conditions .= ' ' $strAnd $this->conditions ' ';
                
$strAnd 'AND ';
            }
        }

        if (isset(
$_POST['src'])) {
            
$_SESSION['xtable_search_conditions'] = $_POST['src'];
        }
        
        if (
$this->globalAccess == false &&
        isset(
$_SESSION['CRUD_AUTH']) &&
        
in_array($this->conf['table'] . '.created_by'$this->fields) ){
            
$conditions .= ' ' $strAnd $this->conf['table'] . '.created_by = '.$_SESSION['CRUD_AUTH']['id'].' ' ;
            
$strAnd 'AND ';
        }

        
$params = array();
        
$params['fields'] = $this->fields;
        
$params['join'] = $this->join;
        
$params['conditions'] = array($conditions$ps);
        
$params['order'] = $order;

        
$this->results $this->dao->find($params);
        
$fields = array();
        if (!empty(
$this->fieldsDisplay)) {
            
$fields $this->fieldsDisplay;
        } else {
            
$fields $this->fields;
        }

        if (
is_file($this->conf['theme_path'] . '/csv.php')) {
            require_once 
$this->conf['theme_path'] . '/csv.php';
        } else {
            if (
is_file($this->theme_default.'/csv.php')){
                require_once 
$this->theme_default.'/csv.php';
            }
        }
    }

    private function 
exportcsvall(){
        
$conditions '';
        if (
$this->globalAccess == false &&
        isset(
$_SESSION['CRUD_AUTH']) &&
        
in_array($this->conf['table'] . '.created_by'$this->fields) ){
            
$conditions =  $this->conf['table'] . '.created_by = '.$_SESSION['CRUD_AUTH']['id'].' ' ;
        }
        
        
$params = array();
        
$params['fields'] = $this->fields;
        
$params['join'] = $this->join;
        
$params['conditions'] = array($conditions,array());
        
        
$this->results $this->dao->find($params);
        
$fields = array();
        
$fields $this->fields;
        
        if (
is_file($this->conf['theme_path'] . '/csv.php')) {
            require_once 
$this->conf['theme_path'] . '/csv.php';
        } else {
            if (
is_file($this->theme_default.'/csv.php')){
                require_once 
$this->theme_default.'/csv.php';
            }
        }
    }
    
/**
     *
     */
    
private function form() {
        
$hook Hook::singleton();
        if (isset(
$_GET['key'])) {
            if (
$hook->isExisted('SCRUD_EDIT_FORM')) {
                
$this->form $hook->filter('SCRUD_EDIT_FORM'$this->form);
            }
            
$params = array();
            
$strCon "";
            
$aryVal = array();
            
$_tmp "";
            foreach (
$this->primaryKey as $f) {
                
$strCon .= $_tmp " " $f ' = ?';
                
$_tmp " AND ";
                
$aryVal[] = $_GET['key'][$f];
            }
            
            if (
$this->globalAccess == false &&
            isset(
$_SESSION['CRUD_AUTH']) &&
            
in_array($this->conf['table'] . '.created_by'$this->fields) ){
                
$strCon .= ' ' $_tmp $this->conf['table'] . '.created_by = '.$_SESSION['CRUD_AUTH']['id'].' ' ;
                
$_tmp 'AND ';
            }
            
            
$params['fields'] = $this->fields;
            
$params['join'] = $this->join;
            
$params['conditions'] = array($strCon$aryVal);
            
$rs $this->dao->findFirst($params);
            if (!empty(
$rs)){
                
$_POST array_merge($_POST, array('data' => $rs));
            }else{
                
$q $this->queryString;
                
$q['xtype'] = 'index';
                if (isset(
$q['key']))
                    unset(
$q['key']);
                if (isset(
$q['auth_token']))
                    unset(
$q['auth_token']);
                
header("Location: ?" http_build_query($q'''&'));
            }
        } else {
            if (
$hook->isExisted('SCRUD_ADD_FORM')) {
                
$this->form $hook->filter('SCRUD_ADD_FORM'$this->form);
            }
        }
        if (
is_file($this->conf['theme_path'] . '/form.php')) {
            require_once 
$this->conf['theme_path'] . '/form.php';
        } else {
            if (
is_file($this->theme_default.'/form.php')){
                require_once 
$this->theme_default.'/form.php';
            }
        }
    }

    
/**
     *
     */
    
private function confirm() {
        
$hook Hook::singleton();
        if (isset(
$_POST['key'])) {
            if (
$hook->isExisted('SCRUD_EDIT_CONFIRM')) {
                
$this->form $hook->filter('SCRUD_EDIT_CONFIRM'$this->form);
            }
        } else {
            if (
$hook->isExisted('SCRUD_ADD_CONFIRM')) {
                
$this->form $hook->filter('SCRUD_ADD_CONFIRM'$this->form);
            }
        }
        global 
$imageExtensions;
        global 
$fileExtensions;
        foreach (
$this->form as $field => $v) {
            
$elements = (isset($v['element'])) ? $v['element'] : array();
            switch (
$elements[0]) {
                case 
'image':
                    
$tmpfields explode('.'$field);
                    
$this->fileUpload->uploadDir __IMAGE_UPLOAD_REAL_PATH__;
                    
$this->fileUpload->extensions $imageExtensions;
                    
$this->fileUpload->tmpFileName $_FILES['img_data']['tmp_name'][$tmpfields[0]][$tmpfields[1]];
                    
$this->fileUpload->fileName $_FILES['img_data']['name'][$tmpfields[0]][$tmpfields[1]];
                    if (empty(
$this->data[$tmpfields[0]][$tmpfields[1]])){
                        
$this->data[$tmpfields[0]][$tmpfields[1]] = $_FILES['img_data']['name'][$tmpfields[0]][$tmpfields[1]];
                    }
                    
$this->fileUpload->httpError $_FILES['img_data']['error'][$tmpfields[0]][$tmpfields[1]];

                    if (
$this->fileUpload->upload()) {
                        
$this->data[$field] = $_POST['data'][$tmpfields[0]][$tmpfields[1]] = $this->fileUpload->newFileName;
                        if (isset(
$elements[1]) && isset($elements[1]['thumbnail'])) {
                            switch (
$elements[1]['thumbnail']) {
                                case 
'mini':
                                    
$this->image->miniThumbnail($this->fileUpload->newFileName);
                                    break;
                                case 
'small':
                                    
$this->image->smallThumbnail($this->fileUpload->newFileName);
                                    break;
                                case 
'medium':
                                    
$this->image->mediumThumbnail($this->fileUpload->newFileName);
                                    break;
                                case 
'large':
                                    
$this->image->largeThumbnail($this->fileUpload->newFileName);
                                    break;
                                default :
                                    
$this->image->miniThumbnail($this->fileUpload->newFileName);
                                    break;
                            }
                        } else {
                            
$this->image->miniThumbnail($this->fileUpload->newFileName);
                        }
                        
$width = (isset($elements[1]['width']))?$elements[1]['width']:'';
                        
$height = (isset($elements[1]['height']))?$elements[1]['height']:'';
                        
$fix 'width';
                        if (
$width != '' || $height != ''){
                            
$this->image->newWidth '';
                            
$this->image->newHeight '';
                            
$this->image->pre '';
                            if (
$width == ''){
                                
$fix 'height';
                            }
                            
$this->image->resize($this->fileUpload->newFileName,$width,$height,$fix);
                        }
                    }
                    
$error $this->fileUpload->getMessage();
                    if (!empty(
$error)) {
                        
$this->errors[$field] = $error;
                        
$this->data[$field] = "no error";
                    }
                    break;
                case 
'file':
                    
$tmpfields explode('.'$field);
                    
$this->fileUpload->uploadDir __FILE_UPLOAD_REAL_PATH__;
                    
$this->fileUpload->extensions $fileExtensions;
                    
$this->fileUpload->tmpFileName $_FILES['file_data']['tmp_name'][$tmpfields[0]][$tmpfields[1]];
                    
$this->fileUpload->fileName $_FILES['file_data']['name'][$tmpfields[0]][$tmpfields[1]];
                    if (empty(
$this->data[$tmpfields[0]][$tmpfields[1]])){
                        
$this->data[$tmpfields[0]][$tmpfields[1]] = $_FILES['file_data']['name'][$tmpfields[0]][$tmpfields[1]];
                    }
                    
$this->fileUpload->httpError $_FILES['file_data']['error'][$tmpfields[0]][$tmpfields[1]];

                    if (
$this->fileUpload->upload()) {
                        
$this->data[$field] = $_POST['data'][$tmpfields[0]][$tmpfields[1]] = $this->fileUpload->newFileName;
                    }
                    
$error $this->fileUpload->getMessage();
                    if (!empty(
$error)) {
                        
$this->errors[$field] = $error;
                        
$this->data[$field] = "no error";
                    }
                    break;
            }
        }
        if (
count($_POST) > && $this->validate()) {
            if (
$this->conf['confirm_page'] == 1){
                if (
is_file($this->conf['theme_path'] . '/confirm.php')) {
                    require_once 
$this->conf['theme_path'] . '/confirm.php';
                } else {
                    if (
is_file($this->theme_default.'/confirm.php')){
                        require_once 
$this->theme_default.'/confirm.php';
                    }
                }
            }else{
                
$this->update();
            }
        } else {
            if (isset(
$_POST['key'])) {
                if (
$hook->isExisted('SCRUD_EDIT_FORM')) {
                    
$this->form $hook->filter('SCRUD_EDIT_FORM'$this->form);
                }
            } else {
                if (
$hook->isExisted('SCRUD_ADD_FORM')) {
                    
$this->form $hook->filter('SCRUD_ADD_FORM'$this->form);
                }
            }
            if (
is_file($this->conf['theme_path'] . '/form.php')) {
                require_once 
$this->conf['theme_path'] . '/form.php';
            } else {
                if (
is_file($this->theme_default.'/form.php')){
                    require_once 
$this->theme_default.'/form.php';
                }
            }
        }
    }

    
/**
     *
     */
    
private function update() {
        
$editFlag false;
        foreach (
$this->primaryKey as $f) {
            
$ary explode('.'$f);
            if (isset(
$_POST['key'][$ary[0]][$ary[1]])) {
                
$editFlag true;
            } else {
                
$editFlag false;
                break;
            }
        }
        
$hook Hook::singleton();
        foreach (
$this->data[$this->conf['table']] as $k => $v){
            
            if (isset(
$this->conf['form_elements'][$this->conf['table'].'.'.$k]) &&
                (
$this->conf['form_elements'][$this->conf['table'].'.'.$k]['element'][0] == 'image' ||
                        
$this->conf['form_elements'][$this->conf['table'].'.'.$k]['element'][0] == 'file') &&
                
$editFlag == false && (empty($v) || trim($v) == '')){
                
$v $this->conf['form_elements'][$this->conf['table'].'.'.$k]['def_val'];
            }
            
            if (isset(
$this->conf['form_elements'][$this->conf['table'].'.'.$k]) && 
                
$this->conf['form_elements'][$this->conf['table'].'.'.$k]['element'][0] == 'date'){
                if (
__DATE_FORMAT__ == 'dd/MM/yyyy'){
                    
$v str_replace('/','-',$v);
                }
                
$v str2mysqltime($v,'Y-m-d');
            }
            
            if (isset(
$this->conf['form_elements'][$this->conf['table'].'.'.$k]) &&
            
$this->conf['form_elements'][$this->conf['table'].'.'.$k]['element'][0] == 'datetime'){
                if (
__DATE_FORMAT__ == 'dd/MM/yyyy'){
                    
$v str_replace('/','-',$v);
                }
                
$v str2mysqltime($v,'Y-m-d H:i:s');
            }
            
            if (
is_array($v)){
                
$this->data[$this->conf['table']][$k] = ','.implode(','$v).',';
            }else{
                
$this->data[$this->conf['table']][$k] = $v;
            }
        }
        
$historyDao = new ScrudDao('crud_histories'$this->da);
        
$history = array();
        
$history['user_id'] = (isset($_SESSION['CRUD_AUTH']['id']))?$_SESSION['CRUD_AUTH']['id']:0;
        
$history['user_name'] = (isset($_SESSION['CRUD_AUTH']['user_name']))?$_SESSION['CRUD_AUTH']['user_name']:'';
        
$history['history_table_name'] = $this->conf['table'];
        
$history['history_date_time'] = date("Y-m-d H:i:s");
        if (
count($_POST) > && $this->validate() && $_POST['auth_token'] == $_SESSION['auth_token_xtable']) {
            if (
$hook->isExisted('SCRUD_BEFORE_SAVE')) {
                
$this->data $hook->filter('SCRUD_BEFORE_SAVE'$this->data);
            }
            
$q $this->queryString;
            
$q['xtype'] = 'index';
            if (isset(
$q['key']))
                unset(
$q['key']);

            if (
$editFlag) {
                
$params = array();
                
$strCon "";
                
$aryVal = array();
                
$_tmp "";
                foreach (
$this->primaryKey as $f) {
                    
$ary explode('.'$f);
                    
$strCon .= $_tmp $f ' = ?';
                    
$_tmp " AND ";
                    
$aryVal[] = $_POST['key'][$ary[0]][$ary[1]];
                }
                if (
$this->globalAccess == false &&
                isset(
$_SESSION['CRUD_AUTH']) &&
                
in_array($this->conf['table'] . '.created_by'$this->fields) ){
                    
$strCon .= ' ' $_tmp $this->conf['table'] . '.created_by = '.$_SESSION['CRUD_AUTH']['id'].' ' ;
                    
$_tmp 'AND ';
                }
                
$params = array($strCon$aryVal);
                try {
                    if (
$hook->isExisted('SCRUD_BEFORE_UPDATE')) {
                        
$this->data $hook->filter('SCRUD_BEFORE_UPDATE'$this->data);
                    }
                    if (
in_array($this->conf['table'] . '.modified_by'$this->fields)){
                        
$this->data[$this->conf['table']]['modified_by'] = $_SESSION['CRUD_AUTH']['id'];
                    }
                    
                    if (
in_array($this->conf['table'] . '.modified'$this->fields)){
                        
$this->data[$this->conf['table']]['modified'] = date('Y-m-d H:i:s');
                    }
                    
                    
$this->dao->update($this->data[$this->conf['table']], $params);
                    
                    
$tmpData $this->data[$this->conf['table']];
                    foreach (
$this->primaryKey as $f) {
                        
$ary explode('.'$f);
                        
$tmpData[$ary[1]] = $_POST['key'][$ary[0]][$ary[1]];
                    }
                    
                    
$history['history_data'] = json_encode($tmpData);
                    
$history['history_action'] = 'update';
                    
$historyDao->insert($history);

                    if (
$hook->isExisted('SCRUD_COMPLETE_SAVE')) {
                        
$hook->execute('SCRUD_COMPLETE_SAVE'$this->data);
                    }
                    if (
$hook->isExisted('SCRUD_COMPLETE_UPDATE')) {
                        
$hook->execute('SCRUD_COMPLETE_UPDATE'$this->data);
                    }

                    
header("Location: ?" http_build_query($q'''&'));
                } catch (
Exception $e) {
                    
$this->errors['__NO_FIELD__'][] = $e->getMessage();
                    if (
is_file($this->conf['theme_path'] . '/form.php')) {
                        require_once 
$this->conf['theme_path'] . '/form.php';
                    } else {
                        if (
is_file($this->theme_default.'/form.php')){
                            require_once 
$this->theme_default.'/form.php';
                        }
                    }
                }
            } else {
                try {
                    if (
$hook->isExisted('SCRUD_BEFORE_INSERT')) {
                        
$this->data $hook->filter('SCRUD_BEFORE_INSERT'$this->data);
                    }
                    if (
in_array($this->conf['table'] . '.created_by'$this->fields)){
                        
$this->data[$this->conf['table']]['created_by'] = $_SESSION['CRUD_AUTH']['id'];
                    }
                    if (
in_array($this->conf['table'] . '.created'$this->fields)){
                        
$this->data[$this->conf['table']]['created'] = date('Y-m-d H:i:s');
                    }
                    
                    
$this->dao->insert($this->data[$this->conf['table']]);
                    
$history['history_data'] = json_encode($this->data[$this->conf['table']]);
                    
$history['history_action'] = 'add';
                    
$historyDao->insert($history);

                    if (
$hook->isExisted('SCRUD_COMPLETE_SAVE')) {
                        
$hook->execute('SCRUD_COMPLETE_SAVE'$this->data);
                    }
                    if (
$hook->isExisted('SCRUD_COMPLETE_INSERT')) {
                        
$hook->execute('SCRUD_COMPLETE_INSERT'$this->data);
                    }
                    
                    
header("Location: ?" http_build_query($q'''&'));
                } catch (
Exception $e) {
                    
$this->errors['__NO_FIELD__'][] = $e->getMessage();
                    if (
is_file($this->conf['theme_path'] . '/form.php')) {
                        require_once 
$this->conf['theme_path'] . '/form.php';
                    } else {
                        if (
is_file($this->theme_default.'/form.php')){
                            require_once 
$this->theme_default.'/form.php';
                        }
                    }
                }
                if (isset(
$_SESSION['xtable_search_conditions'])) {
                    unset(
$_SESSION['xtable_search_conditions']);
                }
            }
        } else {
            if (
$_POST['auth_token'] != $_SESSION['auth_token_xtable']) {
                
$this->errors['auth_token'][] = 'Auth token does not exist.';
            }
            if (
is_file($this->conf['theme_path'] . '/form.php')) {
                require_once 
$this->conf['theme_path'] . '/form.php';
            } else {
                if (
is_file($this->theme_default.'/form.php')){
                    require_once 
$this->theme_default.'/form.php';
                }
            }
        }
    }

    private function 
delConfirm() {
        if (isset(
$_GET['key'])) {
            
$hook Hook::singleton();
            if (
$hook->isExisted('SCRUD_CONFRIM_DELETE_FORM')) {
                
$this->form $hook->filter('SCRUD_CONFRIM_DELETE_FORM'$this->form);
            }
            
$params = array();
            
$strCon "";
            
$aryVal = array();
            
$_tmp "";
            foreach (
$this->primaryKey as $f) {
                
$strCon .= $_tmp " " $f ' = ?';
                
$_tmp " AND ";
                
$aryVal[] = $_GET['key'][$f];
            }
            
            if (
$this->globalAccess == false &&
            isset(
$_SESSION['CRUD_AUTH']) &&
            
in_array($this->conf['table'] . '.created_by'$this->fields) ){
                
$strCon .= ' ' $_tmp $this->conf['table'] . '.created_by = '.$_SESSION['CRUD_AUTH']['id'].' ' ;
                
$_tmp 'AND ';
            }
            
            
$params['fields'] = $this->fields;
            
$params['join'] = $this->join;
            
$params['conditions'] = array($strCon$aryVal);
            
$rs $this->dao->findFirst($params);
            if (!empty(
$rs)){
                
$_POST array_merge($_POST, array('data' => $rs));
    
                if (
is_file($this->conf['theme_path'] . '/delete_confirm.php')) {
                    require_once 
$this->conf['theme_path'] . '/delete_confirm.php';
                }else{
                    if (
is_file($this->theme_default.'/delete_confirm.php')){
                        require_once 
$this->theme_default.'/delete_confirm.php';
                    }
                }
            }else{
                
$q $this->queryString;
                
$q['xtype'] = 'index';
                if (isset(
$q['key']))
                    unset(
$q['key']);
                if (isset(
$q['auth_token']))
                    unset(
$q['auth_token']);
                
header("Location: ?" http_build_query($q'''&'));
            }
        } else {
            
$q $this->queryString;
            
$q['xtype'] = 'index';
            if (isset(
$q['key']))
                unset(
$q['key']);
            if (isset(
$q['auth_token']))
                unset(
$q['auth_token']);
            
header("Location: ?" http_build_query($q'''&'));
        }
    }

    
/**
     *
     */
    
private function del() {
        
$hook Hook::singleton();
        
$historyDao = new ScrudDao('crud_histories'$this->da);
        
$history = array();
        
$history['user_id'] = (isset($_SESSION['CRUD_AUTH']['id']))?$_SESSION['CRUD_AUTH']['id']:0;
        
$history['user_name'] = (isset($_SESSION['CRUD_AUTH']['user_name']))?$_SESSION['CRUD_AUTH']['user_name']:'';
        
$history['history_table_name'] = $this->conf['table'];
        
$history['history_date_time'] = date("Y-m-d H:i:s");
        if (isset(
$_GET['key']) && $_GET['auth_token'] == $_SESSION['auth_token_xtable']) {
            
$params = array();
            
$strCon "";
            
$aryVal = array();
            
$_tmp "";
            foreach (
$this->primaryKey as $f) {
                
$strCon .= $_tmp " " $f ' = ?';
                
$_tmp " AND ";
                
$aryVal[] = $_GET['key'][$f];
            }
            
            if (
$this->globalAccess == false &&
            isset(
$_SESSION['CRUD_AUTH']) &&
            
in_array($this->conf['table'] . '.created_by'$this->fields) ){
                
$strCon .= ' ' $_tmp $this->conf['table'] . '.created_by = '.$_SESSION['CRUD_AUTH']['id'].' ' ;
                
$_tmp 'AND ';
            }
            
            
$params = array($strCon$aryVal);
            
            
$tmpData $this->dao->findFirst(array('conditions'=>$params));
            if (!empty(
$tmpData)){
                
$this->dao->remove($params);
                
                if (
$hook->isExisted('SCRUD_COMPLETE_DELETE')) {
                    
$hook->execute('SCRUD_COMPLETE_DELETE'$tmpData);
                }
                
                
$history['history_data'] = json_encode($tmpData[$this->conf['table']]);
                
$history['history_action'] = 'delete';
                
$historyDao->insert($history);
            }else{
                
$q $this->queryString;
                
$q['xtype'] = 'index';
                if (isset(
$q['key']))
                    unset(
$q['key']);
                if (isset(
$q['auth_token']))
                    unset(
$q['auth_token']);
                
header("Location: ?" http_build_query($q'''&'));
            }
            
        }
        
$q $this->queryString;
        
$q['xtype'] = 'index';
        if (isset(
$q['key']))
            unset(
$q['key']);
        if (isset(
$q['auth_token']))
            unset(
$q['auth_token']);
        
header("Location: ?" http_build_query($q'''&'));
    }

    private function 
delFile() {
        if (isset(
$_GET['fileType']) && $_GET['fileType'] == 'img') {
            
$this->fileUpload->uploadDir __IMAGE_UPLOAD_REAL_PATH__;
        } else {
            
$this->fileUpload->uploadDir __FILE_UPLOAD_REAL_PATH__;
        }

        
$_POST['src']['field'] = str_replace('data.'''$_POST['src']['field']);
        if (isset(
$_POST['src']['field']) &&
                
is_file($this->fileUpload->uploadDir $_POST['src']['file'])) {
            
$params = array();
            
$strCon "";
            
$aryVal = array();
            
$_tmp "";
            foreach (
$this->primaryKey as $f) {
                
$strCon .= $_tmp " " $f ' = ?';
                
$_tmp " AND ";
                
$aryVal[] = $_GET['key'][$f];
            }
            
$params['fields'] = $this->fields;
            
$params['join'] = $this->join;
            
$params['conditions'] = array($strCon$aryVal);
            
$rs $this->dao->findFirst($params);
            
$ary explode('.'$_POST['src']['field']);
            if (!empty(
$rs)) {
                if (
trim($rs[$ary[0]][$ary[1]]) == trim($_POST['src']['file'])) {
                    
$data = array();
                    
$data[$ary[1]] = '';
                    
$this->dao->update($data$params['conditions']);
                    
$this->fileUpload->delFile(trim($_POST['src']['file']));
                    
$this->fileUpload->delFile('thumbnail_' trim($_POST['src']['file']));
                }
            }
        }
    }

    
/**
     *
     * Enter description here ...
     */
    
private function view() {
        if (isset(
$_GET['key'])) {
            
$hook Hook::singleton();
            if (
$hook->isExisted('SCRUD_VIEW_FORM')) {
                
$this->form $hook->filter('SCRUD_VIEW_FORM'$this->form);
            }
            
$params = array();
            
$strCon "";
            
$aryVal = array();
            
$_tmp "";
            foreach (
$this->primaryKey as $f) {
                
$strCon .= $_tmp " " $f ' = ?';
                
$_tmp " AND ";
                
$aryVal[] = $_GET['key'][$f];
            }
            
            if (
$this->globalAccess == false &&
            isset(
$_SESSION['CRUD_AUTH']) &&
            
in_array($this->conf['table'] . '.created_by'$this->fields) ){
                
$strCon .= ' ' $_tmp $this->conf['table'] . '.created_by = '.$_SESSION['CRUD_AUTH']['id'].' ' ;
                
$_tmp 'AND ';
            }
            
            
$params['fields'] = $this->fields;
            
$params['join'] = $this->join;
            
$params['conditions'] = array($strCon$aryVal);
            
$rs $this->dao->findFirst($params);
            if (!empty(
$rs)){
                
$_POST array_merge($_POST, array('data' => $rs));
    
                if (
is_file($this->conf['theme_path'] . '/view.php')) {
                    require_once 
$this->conf['theme_path'] . '/view.php';
                }else{
                    if (
is_file($this->theme_default.'/view.php')){
                        require_once 
$this->theme_default.'/view.php';
                    }
                }
            }else{
                
$q $this->queryString;
                
$q['xtype'] = 'index';
                if (isset(
$q['key']))
                    unset(
$q['key']);
                if (isset(
$q['auth_token']))
                    unset(
$q['auth_token']);
                
header("Location: ?" http_build_query($q'''&'));
            }
        } else {
            
$q $this->queryString;
            
$q['xtype'] = 'index';
            if (isset(
$q['key']))
                unset(
$q['key']);
            if (isset(
$q['auth_token']))
                unset(
$q['auth_token']);
            
header("Location: ?" http_build_query($q'''&'));
        }
    }

    private function 
validate() {
        
$hook Hook::singleton();
        foreach (
$this->validate as $k => $v) {
            if (isset(
$v['rule'])) {
                
$this->_validate($k$v);
            } else {
                foreach (
$v as $k1 => $v1) {
                    
$this->_validate($k$v1);
                }
            }
        }
        if (
$hook->isExisted('SCRUD_VALIDATE')) {
            
$this->errors $hook->filter('SCRUD_VALIDATE'$this->errors);
        }

        return (
count($this->errors) > 0) ? false true;
    }

    private function 
_validate($k$v) {
        
$ary explode('.'$k);
        
$validation Validation::singleton();
        if (
$v['rule'] == 'notEmpty') {
            
$v['required'] = true;
        }
        if (isset(
$v['required']) && $v['required'] === true) {
            if (@!
$validation->notEmpty($this->data[$ary[0]][$ary[1]])) {
                
$this->errors[$k][] = $v['message'];
            } else {
                if (!
is_array($v['rule'])) {
                    if (
trim($v['rule']) != '') {
                        if (!
$validation->{$v['rule']}($this->data[$ary[0]][$ary[1]])) {
                            
$this->errors[$k][] = $v['message'];
                        }
                    }
                } else {
                    if (
trim($v['rule'][0]) != '') {
                        
$params = array($this->data[$ary[0]][$ary[1]]);
                        foreach (
$v['rule'] as $value) {
                            if (
$value == $v['rule'][0])
                                continue;
                            
$params[] = $value;
                        }
                        if (!
call_user_func_array(array($validation$v['rule'][0]), $params)) {
                            
$this->errors[$k][] = $v['message'];
                        }
                    }
                }
            }
        } else if (!empty(
$this->data[$ary[0]][$ary[1]])) {
            if (!
is_array($v['rule'])) {
                if (
trim($v['rule']) != '') {
                    if (!
$validation->{$v['rule']}($this->data[$ary[0]][$ary[1]])) {
                        
$this->errors[$k][] = $v['message'];
                    }
                }
            } else {
                if (
trim($v['rule'][0]) != '') {
                    
$params = array($this->data[$ary[0]][$ary[1]]);
                    foreach (
$v['rule'] as $value) {
                        if (
$value == $v['rule'][0])
                            continue;
                        
$params[] = $value;
                    }
                    if (!
call_user_func_array(array($validation$v['rule'][0]), $params)) {
                        
$this->errors[$k][] = $v['message'];
                    }
                }
            }
        }
    }

    
/**
     *
     * Enter description here ...
     */
    
private function getToken() {
        if (!isset(
$_SESSION['auth_token_xtable'])) {
            
$string 'HTTP_USER_AGENT=' $_SERVER['HTTP_USER_AGENT'];
            
$string .= 'time=' time();
            
$auth md5($string);
            
$_SESSION['auth_token_xtable'] = $auth;
        } else {
            
$auth $_SESSION['auth_token_xtable'];
        }

        return 
$auth;
    }

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