Subversion Repositories cheapmusic

Rev

Blame | Last modification | View Log | RSS feed

<?php

/***************************************************************************
 *   Copyright (C) 2009-2011 by Geo Varghese(www.seopanel.in)      *
 *   sendtogeo@gmail.com                                                                                                   *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/

# class defines all database functions
class Database{
        
        var $dbEngine;
        var $dbConObj;
        
    // constructor
    function __construct($dbEngine='mysql'){
        
        // if db engine is mysql
        if ($dbEngine == 'mysql') {
                $this->dbEngine = function_exists('mysqli_query') ? "mysqlihelper" : $dbEngine;
        } else {
                $this->dbEngine = $dbEngine;
        }
        
    }
    
        # func to connect db enine
    function dbConnect(){
        include_once(SP_LIBPATH."/".$this->dbEngine."/".$this->dbEngine.".class.php");
        $this->dbConObj = New $this->dbEngine(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME, SP_DEBUG);
        return $this->dbConObj;
    }
    
    /**
     * function get a db table row information
     * @param String $table                     The name of the table
     * @param String $whereCond         The where condition string to get the results
     * @param String $cols                      The db columns needs to be retrieved
     */
    public function getRow($table, $whereCond = '1=1', $cols = '*') {
        $whereCond = !empty($whereCond) ? $whereCond : '1=1';
        $sql = "SELECT $cols FROM $table WHERE $whereCond";
        $rowInfo = $this->dbConObj->select($sql, true);
        return $rowInfo;
    }
    
    /**
     * function get all db table rows according to where condition
     * @param String $table                     The name of the table
     * @param String $whereCond         The where condition string to get the results
     * @param String $cols                      The db columns needs to be retrieved
     */
    public function getAllRows($table, $whereCond = '1=1', $cols = '*') {
        $whereCond = !empty($whereCond) ? $whereCond : '1=1';
        $sql = "SELECT $cols FROM $table WHERE $whereCond";
        $rowList = $this->dbConObj->select($sql);
        return $rowList;
    }
    
    /**
     * Function to delete db table row according to the where condition
     * @param String $table                     The name of the table
     * @param String $whereCond         The where condition string to get the results
     */
    public function deleteRows($table, $whereCond = '1=1') {
        
        $whereCond = !empty($whereCond) ? $whereCond : '1=1';
        $sql = "Delete FROM $table WHERE $whereCond";
                
        // if no error occured
        if ($this->dbConObj->query($sql)) {
                return TRUE;
        }
    
        return FALSE;
    }
    
    /**
     * function to insert row to a db table
     * @param string $table                     The name of the table
     * @param Array $dataList           The data list array with key as db column and value as db column insert value
     *                                                          Eg: array('name' => 'Tom', 'status' => 1)
     */
    public function insertRow($table, $dataList) {

        $dataList = self::escapeValue($dataList);
        $colList = array_keys($dataList);
        $valueList = array_values($dataList);
        $sql = "INSERT into $table(" . implode(',', $colList) . ") values('" . implode("', '", $valueList) . "')";
        
        // if no error occured
        if ($this->dbConObj->query($sql)) {
                return TRUE;
        }
    
        return FALSE;
    }
    
    /**
     * function to update row of a db table
     * @param string $table                     The name of the table
     * @param Array $dataList           The data list array with key as db column and value as db column insert value
     *                                                          Eg: array('name' => 'Tom', 'status' => 1)
     * @param String $whereCond         The where condition string to get the results
     */
    public function updateRow($table, $dataList, $whereCond = '1=1') {

        $dataList = self::escapeValue($dataList);
        $whereCond = !empty($whereCond) ? $whereCond : '1=1';
        $sql = "Update $table SET ";
                
        // for loop through values
        foreach ($dataList as $key => $value) {
                $sql .= "$key='$value',";
        }
                
        $sql = rtrim($sql, ",");
                $sql .= " WHERE $whereCond";
                
        // if no error occured
        if ($this->dbConObj->query($sql)) {
                return TRUE;
        }
    
        return FALSE;
    }

    /**
     * function to escape db values to be inserted
     * @param Mixed $dataList           the array contains valus as key => $value
     */
    public static function escapeValue($dataList) {
        $escDataList = array();
        
        // loop through the data list
        foreach ($dataList as $key => $value) {
        
                // check whether type passed
                if (stristr($key, '|')) {
                        list($key, $type) = explode("|", $key);
                } else {
                        $type = "string";
                }
                 
                switch ($type) {
            
                        case "float":
                                $value = floatval($value);
                                break;
        
                        case "number":
                        case "integer":
                        case "int":
                                $value = intval($value);
                                break;
            
                        case "text":
                        case "string":
                        default:
                                $value = addslashes($value);
                                break;
                                 
                }
                
                $escDataList[$key] = $value;
        }
        
        return $escDataList;
         
    }
    
    /**
     * function to escape data
     * @param mixed $value              To be escaped
     * @param string $type              The data type[float|number|integer|int|text|string]
     */
    public static function escapeData($value, $type) {
        $dataList = array("data|$type" => $value);
        $dataList = self::escapeValue($dataList);
        return $dataList['data'];
    }

}
?>