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

class GenericDao extends Dao {

    protected 
$tableName null;
    protected 
$fileds "*";

    
/**
     *
     * Enter description here ...
     * @param unknown_type $tableName
     */
    
public function __construct($tableName$da) {
        
$this->tableName $tableName;
        
parent::__construct($da);
    }

    
/**
     * 
     * Enter description here ...
     */
    
public function setTable($tableName) {
        
$this->tableName $tableName;
        
$this->fields "*";
    }

    
/**
     * (non-PHPdoc)
     * @see development/rapidp/library/database/mysql/Dao::query()
     */
    
public function & query($sql$params = array(), $rs false) {
        
$rows = array();
        
$result = & parent::query($sql$params);
        if (
$result === false) {
            return 
false;
        } else {
            if (
$rs == true) {
                return 
$result;
            }
            while (
$row $result->fetchAssoc()) {
                
$rows[] = $row;
            }
        }

        return 
$rows;
    }

    
/**
     *
     * Enter description here ...
     * @param $params
     */
    
public function find($params = array()) {
        
$this->params $params;
        if (!empty(
$params['fields'])) {
            
$this->fileds = (is_array($params['fields'])) ? implode(','$params['fields']) : $params['fields'];
        }

        
$values = array();
        
$sqlFoundRows '';
        
$join '';
        
$conditions '';
        
$group '';
        
$having '';
        
$order '';
        
$limit '';

        if (!empty(
$params['found_rows']) && $params['found_rows'] === true) {
            
$sqlFoundRows .= 'SQL_CALC_FOUND_ROWS';
        }

        if (!empty(
$params['join'])) {
            foreach (
$params['join'] as $v) {
                
$join .= ' ' strtoupper($v[0]) . ' JOIN ' $v[1] . ' ON ' $v[2] . ' ';
            }
        }

        if (!empty(
$params['conditions'])) {
            if (
is_array($params['conditions'])) {
                if (!empty(
$params['conditions'][0])) {
                    
$conditions .= $params['conditions'][0];
                }
                if (!empty(
$params['conditions'][1]) && is_array($params['conditions'][1])) {
                    foreach (
$params['conditions'][1] as $v) {
                        
$values[] = $v;
                    }
                }
            } else {
                
$conditions .= $params['conditions'];
            }
        }

        if (!empty(
$params['having'])) {
            if (
is_array($params['having'])) {
                if (!empty(
$params['having'][0])) {
                    
$having .= $params['having'][0];
                }
                if (!empty(
$params['having'][1]) && is_array($params['having'][1])) {
                    foreach (
$params['having'][1] as $v) {
                        
$values[] = $v;
                    }
                }
            } else {
                
$having .= $params['having'];
            }
        }

        if (!empty(
$params['order'])) {
            
$order .= (is_array($params['order'])) ? implode(','$params['order']) : $params['order'];
        }

        if (!empty(
$params['group'])) {
            
$group .= (is_array($params['group'])) ? implode(','$params['group']) : $params['group'];
        }
        if (!empty(
$params['limit']) && (int) $params 0) {
            
$page = (isset($params['page'])) ? (int) $params['page'] : 0;
            if (
$page <= 0) {
                
$limit .= $params['limit'];
            } else {
                
$offset = ($page 1) * (int) $params['limit'];
                
$limit .= $offset ',' $params['limit'];
            }
        }

        
$conditions = ($conditions != '') ? ' WHERE ' $conditions $conditions;
        
$group = ($group != '') ? ' GROUP BY ' $group $group;
        
$having = ($having != '') ? ' HAVING  ' $having $having;
        
$order = ($order != '') ? ' ORDER BY ' $order $order;
        
$limit = ($limit != '') ? ' LIMIT ' $limit $limit;
        
$sql "SELECT " $sqlFoundRows " " $this->fileds " FROM `" $this->tableName "` " $join $conditions " " $group " " $having " " $order " " $limit;

        return 
$this->query($sql$values);
    }

    
/**
     *
     * Enter description here ...
     */
    
public function findFirst($params) {
        
$params['limit'] = 1;
        if (isset(
$params['page'])) {
            unset(
$params['page']);
        }
        
$data $this->find($params);
        if (
$data === false) {
            return 
false;
        } else {
            return (isset(
$data[0])) ? $data[0] : array();
        }
    }

    public function 
insert($params) {
        
        
$fields = array();
        
$data = array();
        
$aryFields $this->da->listFields($this->tableName);
        foreach (
$aryFields as $field) {
            
$fields[] = $field['Field'];
        }
        
$f = array();
        
$o = array();
        
$v = array();
        foreach (
$fields as $field) {
            if (isset(
$params[$field])) {
                
$f[] = $field;
                
$o[] = "?";
                
$v[] = $params[$field];
            }
        }

        
$sql "INSERT INTO `" $this->tableName "` (`" implode("`,`"$f) . "`) VALUES (" implode(","$o) . ")";
        
        
        if (
$this->execute($sql$v) === true) {
            return 
$this->da->insertId();
        } else {
            return 
false;
        }
    }

    public function 
update($params$conditions) {
        
$fields = array();
        
$aryFields $this->da->listFields($this->tableName);
        foreach (
$aryFields as $field) {
            
$fields[] = $field['Field'];
        }
        
$f = array();
        
$values = array();
        foreach (
$fields as $field) {
            if (isset(
$params[$field])) {
                
$f[] = '`' $field '` = ?';
                
$values[] = $params[$field];
            }
        }
        
$c '';
        if (!empty(
$conditions)) {
            if (
is_array($conditions)) {
                if (!empty(
$conditions[0])) {
                    
$c .= $conditions[0];
                }
                if (!empty(
$conditions[1]) && is_array($conditions[1])) {
                    foreach (
$conditions[1] as $v) {
                        
$values[] = $v;
                    }
                }
            } else {
                
$c .= $conditions;
            }
        }
        
$c = ($c != '') ? ' WHERE ' $c $c;
        
$sql "UPDATE `" $this->tableName "` SET " implode(","$f) . $c;
        if (
$this->execute($sql$values) === true) {
            return 
true;
        } else {
            return 
false;
        }
    }

    
/**
     *
     * Enter description here ...
     * @param unknown_type $data
     */
    
public function save($params) {
        
$fields = array();
        
$aryFields $this->da->listFields($this->tableName);
        foreach (
$aryFields as $field) {
            
$fields[] = $field['Field'];
        }
        
$f = array();
        
$o = array();
        
$v = array();
        foreach (
$fields as $field) {
            if (isset(
$params[$field])) {
                
$f[] = $field;
                
$o[] = "?";
                
$v[] = $params[$field];
            }
        }

        
$sql "INSERT INTO `" $this->tableName "` (`" implode("`,`"$f) . "`) VALUES (" implode(","$o) . ") ON DUPLICATE KEY UPDATE ";

        
$f = array();
        foreach (
$fields as $field) {
            if (isset(
$params[$field])) {
                
$f[] = $field ' = ?';
                
$v[] = $params[$field];
            }
        }

        
$sql .= implode(','$f);
        if (
$this->execute($sql$v) === true) {
            return 
$this->da->insertId();
        } else {
            return 
false;
        }
    }

    
/**
     *
     * Enter description here ...
     * @param unknown_type $params
     */
    
public function remove($conditions) {
        
$c '';
        
$values = array();
        if (!empty(
$conditions)) {
            if (
is_array($conditions)) {
                if (!empty(
$conditions[0])) {
                    
$c .= $conditions[0];
                }
                if (!empty(
$conditions[1]) && is_array($conditions[1])) {
                    foreach (
$conditions[1] as $v) {
                        
$values[] = $v;
                    }
                }
            } else {
                
$c .= $conditions;
            }
        }
        
$c = ($c != '') ? ' WHERE ' $c $c;
        
$sql "DELETE FROM `" $this->tableName "` " $c;

        if (
$this->execute($sql$values) === true) {
            return 
true;
        } else {
            return 
false;
        }
    }

    
/**
     *
     * Enter description here ...
     */
    
public function truncate() {
        return 
$this->execute("TRUNCATE TABLE `" $this->tableName "`");
    }

    
/**
     *
     * Enter description here ...
     */
    
public function foundRows() {
        
$sql "SELECT FOUND_ROWS() as totalRow";
        
$rs $this->query($sql, array());
        if (
$rs === false) {
            return 
false;
        } else {
            return (int) 
$rs[0][0]['totalRow'];
        }
    }

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