| Current Path : /home/smartconb/www/armencom33/acv2026/classes/ |
| 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();
}
}