Your IP : 216.73.217.6


Current Path : /home/smartconb/www/armencom33/acv2026/classes/
Upload File :
Current File : /home/smartconb/www/armencom33/acv2026/classes/DB.class.php

<?php

/**
 * Created by JetBrains PhpStorm.
 * User: zaven
 * Date: 1/29/13
 * Time: 2:25 PM
 * To change this template use File | Settings | File Templates.
 */
class DB
{
    private $_link = null;
    private $_errNo = '';
    private $_error = '';
    private $_prefix = '';
    //protected static $instances = array();
    protected static $db = null;

    public static function get($database = '', $hostname = '', $hostport = '', $username = '', $password = '', $charSet = '', $prefix = '')
    {
        //static $db = null;
        if (self::$db == null) {
            if ($database == '')
                $database = Config::get()->getMember('dbName');
            if ($hostname == '')
                $hostname = Config::get()->getMember('dbHost');
            if ($hostport == '')
                $hostport = Config::get()->getMember('dbPort');
            if ($username == '')
                $username = Config::get()->getMember('dbUser');
            if ($password == '')
                $password = Config::get()->getMember('dbPassword');
            if ($charSet == '')
                $charSet = Config::get()->getMember('dbCharSet');
            if ($prefix == '')
                $prefix = Config::get()->getMember('dbPrefix');
            self::$db = new DB($database, $hostname, $hostport, $username, $password, $charSet, $prefix);
        }
        return self::$db;
    }

    /*
    public static function get1($name = 'db', $database = '', $hostname = '', $hostport = '', $username = '', $password = '', $charSet = '')
    {
        if ($database == '')
            $database = Config::get()->getMember('dbName');
        if ($hostname == '')
            $hostname = Config::get()->getMember('dbHost');
        if ($hostport == '')
            $hostport = Config::get()->getMember('dbPort');
        if ($username == '')
            $username = Config::get()->getMember('dbUser');
        if ($password == '')
            $password = Config::get()->getMember('dbPassword');
        if ($charSet == '')
            $charSet = Config::get()->getMember('dbCharSet');

        if (empty(self::$instances[$name])) {
            self::$instances[$name] = new DB($database, $hostname, $hostport, $username, $password, $charSet);
        }

        return self::$instances[$name];
    }
    */
    private function __construct($database, $hostname, $hostport, $username, $password, $charSet, $prefix)
    {
        $this->_link = new mysqli($hostname, $username, $password, $database, $hostport);
        if (mysqli_connect_error()) {
            $this->_link = null;
        } else {
            $this->_errNo = $this->_link->connect_errno;
            $this->_error = $this->_link->connect_error;

            $this->set_charset($charSet);
            $this->_prefix = $prefix;
        }
        return $this->_link;
    }

    /**
     * @return int|null
     */
    public function affected_rows()
    {
        if (!is_null($this->_link))
            return $this->_link->affected_rows;
        return null;
    }

    /**
     * @return null|string
     */
    public function client_encoding()
    {
        if (!is_null($this->_link))
            return $this->_link->character_set_name();
        return null;
    }

    /**
     * @return bool|null
     */
    public function close()
    {
        if (!is_null($this->_link))
            return $this->_link->close();
        return null;
    }

    /**
     * @param $resource mysqli_result
     * @param $offset int
     * @return boolean
     */
    public function data_seek($resource, $offset)
    {
        if (!is_null($this->_link))
            if (is_a($resource, 'mysqli_result'))
                return $resource->data_seek($offset);
        return false;
    }

    /**
     * @return string
     */
    function errNo()
    {
        return $this->_errNo;
    }

    /**
     * @return string
     */
    function error()
    {
        return $this->_error;
    }

    /**
     * @param $escapeStr
     * @return null|string
     */
    public function escape_string($escapeStr)
    {
        if (!is_null($this->_link))
            return $this->_link->escape_string($escapeStr);
        return null;
    }

    /**
     * @param $resource mysqli_result
     * @param int $result_type int
     * @return null|Array
     */
    public function fetch_array($resource, $result_type = MYSQLI_BOTH)
    {
        if (!is_null($this->_link))
            if (is_a($resource, 'mysqli_result'))
                return $resource->fetch_array($result_type);
        return null;
    }

    /**
     * @param $resource mysqli_result
     * @return null|Array
     */
    public function fetch_assoc($resource)
    {
        if (!is_null($this->_link))
            if (is_a($resource, 'mysqli_result'))
                return $resource->fetch_assoc();
        return null;
    }

    /**
     * @param $resource mysqli_result
     * @return Object|Boolean
     */
    public function fetch_field($resource)
    {
        if (!is_null($this->_link))
            if (is_a($resource, 'mysqli_result'))
                return $resource->fetch_field();
        return false;
    }

    /**
     * @param $resource mysqli_result
     * @return boolean|int
     */
    public function fetch_lengths($resource)
    {
        if (!is_null($this->_link))
            if (is_a($resource, 'mysqli_result'))
                return $resource->lengths;
        return false;
    }

    /**
     * @param $resource mysqli_result
     * @param String $class_name
     * @param array $params
     * @return null|Object
     */
    public function fetch_object($resource, $class_name = null, array $params = null)
    {
        if (!is_null($this->_link))
            if (is_a($resource, 'mysqli_result'))
                return $resource->fetch_object($class_name, $params);
        return null;
    }

    /**
     * @param $resource
     * @return null
     */
    public function fetch_row($resource)
    {
        if (!is_null($this->_link))
            if (is_a($resource, 'mysqli_result'))
                return $resource->fetch_row();
        return null;
    }

    /**
     * @param $resource
     * @param $field_offset
     * @return null
     */
    public function field_flag($resource, $field_offset)
    {
        if (!is_null($this->_link))
            if (is_a($resource, 'mysqli_result'))
                return $resource->fetch_field_direct($field_offset)->flags;
        return null;
    }

    /**
     * @param $resource
     * @param $field_offset
     * @return null
     */
    public function field_len($resource, $field_offset)
    {
        if (!is_null($this->_link))
            if (is_a($resource, 'mysqli_result'))
                return $resource->fetch_field_direct($field_offset)->length;
        return null;
    }

    /**
     * @param $resource
     * @param $field_offset
     * @return null
     */
    public function field_name($resource, $field_offset)
    {
        if (!is_null($this->_link))
            if (is_a($resource, 'mysqli_result'))
                return $resource->fetch_field_direct($field_offset)->name;
        return null;
    }

    /**
     * @param $resource
     * @param $field_offset
     * @return null
     */
    public function field_seek($resource, $field_offset)
    {
        if (!is_null($this->_link))
            if (is_a($resource, 'mysqli_result'))
                return $resource->field_seek($field_offset);
        return null;
    }

    /**
     * @param $resource
     * @param $field_offset
     * @return null
     */
    public function field_table($resource, $field_offset)
    {
        if (!is_null($this->_link))
            if (is_a($resource, 'mysqli_result'))
                return $resource->fetch_field_direct($field_offset)->table;
        return null;
    }

    /**
     * @param $resource
     * @param $field_offset
     * @return null
     */
    public function field_type($resource, $field_offset)
    {
        if (!is_null($this->_link))
            if (is_a($resource, 'mysqli_result'))
                return $resource->fetch_field_direct($field_offset)->type;
        return null;
    }

    /**
     * @param $resource
     * @return null
     */
    public function free_result($resource)
    {
        if (!is_null($this->_link))
            if (is_a($resource, 'mysqli_result'))
                $resource->free();
        return null;
    }

    /**
     * @return null|string
     */
    public function get_client_info()
    {
        if (!is_null($this->_link))
            return $this->_link->get_client_info();
        return null;
    }

    /**
     * @return null|string
     */
    public function get_host_info()
    {
        if (!is_null($this->_link))
            return $this->_link->host_info;
        return null;
    }

    /**
     * @return null|string
     */
    public function get_proto_info()
    {
        if (!is_null($this->_link))
            return $this->_link->protocol_version;
        return null;
    }

    /**
     * @return null|string
     */
    public function get_server_info()
    {
        if (!is_null($this->_link))
            return $this->_link->server_info;
        return null;
    }

    /**
     * @return null|string
     */
    public function info()
    {
        if (!is_null($this->_link))
            return $this->_link->info;
        return null;
    }

    /**
     * @return mixed|null
     */
    public function insert_id()
    {
        if (!is_null($this->_link))
            return $this->_link->insert_id;
        return null;
    }

    /**
     * @param null $resource
     * @return int|null
     */
    public function num_fields($resource = null)
    {
        if (!is_null($this->_link))
            if (is_null($resource)) {
                return $this->_link->field_count;
            } else {
                /** @var $resource mysqli_result */
                if (is_a($resource, 'mysqli_result'))
                    return $resource->field_count;
            }
        return null;
    }

    /**
     * @param null $resource
     * @return int|null
     */
    public function num_rows($resource = null)
    {
        if (!is_null($this->_link)) {
            /** @var $resource mysqli_result */
            if (is_a($resource, 'mysqli_result')) {
                return $resource->num_rows;
            }
            /** @var $resource mysqli_stmt */
            if (is_a($resource, 'mysqli_stmt')) {
                return $resource->num_rows;
            }
        }
        return null;
    }

    /**
     * @return bool|null
     */
    public function ping()
    {
        if (!is_null($this->_link))
            return $this->_link->ping();
        return null;
    }

    /**
     * @param $query
     * @param int $resultMode
     * @return bool|mysqli_result|null
     */
    public function query($query, $resultMode = MYSQLI_STORE_RESULT)
    {
        if (!is_null($this->_link))
            return $this->_link->query($this->replacePrefix($query), $resultMode);
        return null;
    }

    /**
     * @param $escapeStr
     * @return null|string
     */
    public function real_escape_string($escapeStr)
    {
        if (!is_null($this->_link))
            return $this->_link->real_escape_string($escapeStr);
        return null;
    }

    /**
     * @param $resource
     * @param $row
     * @param int $field
     * @return null
     */
    public function result($resource, $row, $field = 0)
    {
        if (!is_null($this->_link))
            if (is_a($resource, 'mysqli_result')) {
                if ($resource->data_seek($row)) {
                    $tmpArray = $resource->fetch_array(MYSQLI_BOTH);
                    return $tmpArray[$field];
                }
            }
        return null;
    }

    /**
     * @param $charset
     * @return bool|null
     */
    public function set_charset($charset)
    {
        if (!is_null($this->_link))
            return $this->_link->set_charset($charset);
        return null;
    }

    /**
     * @return null|string
     */
    public function stat()
    {
        if (!is_null($this->_link))
            return $this->_link->stat();
        return null;
    }

    /**
     * @param $sql
     * @param string $prefix
     * @return string
     */
    public function replacePrefix($sql, $prefix = '#__')
    {
        // Initialize variables.
        $escaped = false;
        $startPos = 0;
        $quoteChar = '';
        $literal = '';

        $sql = trim($sql);
        $n = strlen($sql);

        while ($startPos < $n) {
            $ip = strpos($sql, $prefix, $startPos);
            if ($ip === false) {
                break;
            }

            $j = strpos($sql, "'", $startPos);
            $k = strpos($sql, '"', $startPos);
            if (($k !== false) && (($k < $j) || ($j === false))) {
                $quoteChar = '"';
                $j = $k;
            } else {
                $quoteChar = "'";
            }

            if ($j === false) {
                $j = $n;
            }

            $literal .= str_replace($prefix, $this->_prefix, substr($sql, $startPos, $j - $startPos));
            $startPos = $j;

            $j = $startPos + 1;

            if ($j >= $n) {
                break;
            }

            // quote comes first, find end of quote
            while (true) {
                $k = strpos($sql, $quoteChar, $j);
                $escaped = false;
                if ($k === false) {
                    break;
                }
                $l = $k - 1;
                //while ($l >= 0 && $sql{$l} == '\\') {
				while ($l >= 0 && $sql[$l] == '\\') {
                    $l--;
                    $escaped = !$escaped;
                }
                if ($escaped) {
                    $j = $k + 1;
                    continue;
                }
                break;
            }
            if ($k === false) {
                // error in the query - no end quote; ignore it
                break;
            }
            $literal .= substr($sql, $startPos, $k - $startPos + 1);
            $startPos = $k + 1;
        }
        if ($startPos < $n) {
            $literal .= substr($sql, $startPos, $n - $startPos);
        }

        return $literal;
    }

}


/////////////////////////////////////////////////////////////////////////////////////


if (!function_exists('db_affected_rows')) {
    /**
     * @return int|null
     */
    function db_affected_rows()
    {
        return DB::get()->affected_rows();
    }
}

if (!function_exists('db_client_encoding')) {
    /**
     * @return null|string
     */
    function db_client_encoding()
    {
        return DB::get()->client_encoding();
    }
}

if (!function_exists('db_close')) {
    /**
     * @return bool|null
     */
    function db_close()
    {
        return DB::get()->close();
    }
}

if (!function_exists('db_data_seek')) {
    /**
     * @param $resource
     * @param $offset
     * @return null
     */
    function db_data_seek($resource, $offset)
    {
        return DB::get()->data_seek($resource, $offset);
    }
}

if (!function_exists('db_errno')) {
    /**
     * @return string
     */
    function db_errno()
    {
        return DB::get()->errNo();
    }
}

if (!function_exists('db_error')) {
    /**
     * @return string
     */
    function db_error()
    {
        return DB::get()->error();
    }
}

if (!function_exists('db_escape_string')) {
    /**
     * @param $escapeStr
     * @return null|string
     */
    function db_escape_string($escapeStr)
    {
        return DB::get()->escape_string($escapeStr);
    }
}

if (!function_exists('db_fetch_array')) {
    /**
     * @param $resource
     * @param int $result_type
     * @return null
     */
    function db_fetch_array($resource, $result_type = MYSQLI_BOTH)
    {
        return DB::get()->fetch_array($resource, $result_type = MYSQLI_BOTH);
    }
}

if (!function_exists('db_fetch_assoc')) {
    /**
     * @param $resource
     * @return null
     */
    function db_fetch_assoc($resource)
    {
        return DB::get()->fetch_assoc($resource);
    }
}

if (!function_exists('db_fetch_field')) {
    /**
     * @param $resource
     * @return null
     */
    function db_fetch_field($resource)
    {
        return DB::get()->fetch_field($resource);
    }
}

if (!function_exists('db_fetch_lengths')) {
    /**
     * @param $resource
     * @return null
     */
    function db_fetch_lengths($resource)
    {
        return DB::get()->fetch_lengths($resource);
    }
}

if (!function_exists('db_fetch_object')) {
    /**
     * @param $resource
     * @param null $class_name
     * @param array $params
     * @return null
     */
    function db_fetch_object($resource, $class_name = null, array $params = null)
    {
        return DB::get()->fetch_object($resource, $class_name, $params);
    }
}

if (!function_exists('db_fetch_row')) {
    /**
     * @param $resource
     * @return null
     */
    function db_fetch_row($resource)
    {
        return DB::get()->fetch_row($resource);
    }
}

if (!function_exists('db_field_flags')) {
    /**
     * @param $resource
     * @param $field_offset
     * @return null
     */
    function db_field_flags($resource, $field_offset)
    {
        return DB::get()->field_flag($resource, $field_offset);
    }
}

if (!function_exists('db_field_len')) {
    /**
     * @param $resource
     * @param $field_offset
     * @return null
     */
    function db_field_len($resource, $field_offset)
    {
        return DB::get()->field_len($resource, $field_offset);
    }
}

if (!function_exists('db_field_name')) {
    /**
     * @param $resource
     * @param $field_offset
     * @return null
     */
    function db_field_name($resource, $field_offset)
    {
        return DB::get()->field_name($resource, $field_offset);
    }
}

if (!function_exists('db_field_seek')) {
    /**
     * @param $resource
     * @param $field_offset
     * @return null
     */
    function db_field_seek($resource, $field_offset)
    {
        return DB::get()->field_seek($resource, $field_offset);
    }
}

if (!function_exists('db_field_table')) {
    /**
     * @param $resource
     * @param $field_offset
     * @return null
     */
    function db_field_table($resource, $field_offset)
    {
        return DB::get()->field_table($resource, $field_offset);
    }
}

if (!function_exists('db_field_type')) {
    /**
     * @param $resource
     * @param $field_offset
     * @return null
     */
    function db_field_type($resource, $field_offset)
    {
        return DB::get()->field_type($resource, $field_offset);
    }
}

if (!function_exists('db_free_result')) {
    /**
     * @param $resource
     * @return null
     */
    function db_free_result($resource)
    {
        return DB::get()->free_result($resource);
    }
}

if (!function_exists('db_get_client_info')) {
    /**
     * @return null|string
     */
    function db_get_client_info()
    {
        return DB::get()->get_client_info();
    }
}

if (!function_exists('db_get_host_info')) {
    /**
     * @return null|string
     */
    function db_get_host_info()
    {
        return DB::get()->get_host_info();
    }
}

if (!function_exists('db_get_proto_info')) {
    /**
     * @return null|string
     */
    function db_get_proto_info()
    {
        return DB::get()->get_proto_info();
    }
}

if (!function_exists('db_get_server_info')) {
    /**
     * @return null|string
     */
    function db_get_server_info()
    {
        return DB::get()->get_server_info();
    }
}

if (!function_exists('db_info')) {
    /**
     * @return null|string
     */
    function db_info()
    {
        return DB::get()->info();
    }
}

if (!function_exists('db_insert_id')) {
    /**
     * @return mixed|null
     */
    function db_insert_id()
    {
        return DB::get()->insert_id();
    }
}

if (!function_exists('db_num_fields')) {
    /**
     * @param null $resource
     * @return int|null
     */
    function db_num_fields($resource = null)
    {
        return DB::get()->num_fields($resource);
    }
}

if (!function_exists('db_num_rows')) {
    /**
     * @param null $resource
     * @return int|null
     */
    function db_num_rows($resource = null)
    {
        return DB::get()->num_rows($resource);
    }
}

if (!function_exists('db_ping')) {
    /**
     * @return bool|null
     */
    function db_ping()
    {
        return DB::get()->ping();
    }
}

if (!function_exists('db_query')) {
    /**
     * @param $query
     * @param int $resultmode
     * @return bool|mysqli_result|null
     */
    function db_query($query, $resultmode = MYSQLI_STORE_RESULT)
    {
        return DB::get()->query($query, $resultmode);
    }
}

if (!function_exists('db_real_escape_string')) {
    /**
     * @param $escapeStr
     * @return null|string
     */
    function db_real_escape_string($escapeStr)
    {
        return DB::get()->real_escape_string($escapeStr);
    }
}

if (!function_exists('db_result')) {
    /**
     * @param $resource
     * @param $row
     * @param int $field
     * @return null
     */
    function db_result($resource, $row, $field = 0)
    {
        return DB::get()->result($resource, $row, $field);
    }
}

if (!function_exists('db_set_charset')) {
    /**
     * @param $charset
     * @return bool|null
     */
    function db_set_charset($charset)
    {
        return DB::get()->set_charset($charset);
    }
}

if (!function_exists('db_stat')) {
    /**
     * @return null|string
     */
    function db_stat()
    {
        return DB::get()->stat();
    }
}