Вход Регистрация
Файл: 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'];
        }
    }

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