LotGDocker/lotgd-web/lotgd/lib/dbwrapper_mysqli_oos.php

210 lines
5.3 KiB
PHP
Raw Normal View History

2020-08-17 19:16:42 -04:00
<?php
// addnews ready
// translator ready
// mail ready
function db_query($sql, $die=true){
if (defined("DB_NODB") && !defined("LINK")) return array();
global $session,$dbinfo,$mysqli_resource;
$dbinfo['queriesthishit']++;
// $fname = DBTYPE."_query";
$starttime = getmicrotime();
//$r = $fname($sql);
$r = $mysqli_resource->Query($sql);
if (!$r && $die === true) {
if (defined("IS_INSTALLER")){
return array();
}else{
if ($session['user']['superuser'] & SU_DEVELOPER || 1){
require_once("lib/show_backtrace.php");
die(
"<pre>".HTMLEntities($sql, ENT_COMPAT, getsetting("charset", "ISO-8859-1"))."</pre>"
.db_error(LINK)
.show_backtrace()
);
}else{
die("A most bogus error has occurred. I apologise, but the page you were trying to access is broken. Please use your browser's back button and try again.");
}
}
}
$endtime = getmicrotime();
if ($endtime - $starttime >= 1.00 && ($session['user']['superuser'] & SU_DEBUG_OUTPUT)){
$s = trim($sql);
if (strlen($s) > 800) $s = substr($s,0,400)." ... ".substr($s,strlen($s)-400);
debug("Slow Query (".round($endtime-$starttime,2)."s): ".(HTMLEntities($s, ENT_COMPAT, getsetting("charset", "ISO-8859-1")))."`n");
}
unset($dbinfo['affected_rows']);
$dbinfo['affected_rows']=db_affected_rows();
$dbinfo['querytime'] += $endtime-$starttime;
return $r;
}
//& at the start returns a reference to the data array.
//since it's possible this array is large, we'll save ourselves
//the overhead of duplicating the array, then destroying the old
//one by returning a reference instead.
function &db_query_cached($sql,$name,$duration=900){
//this function takes advantage of the data caching library to make
//all of the other db_functions act just like MySQL queries but rely
//instead on disk cached data.
//if (getsetting("usedatacache", 0) == 1) debug("DataCache: $name");
//standard is 15 minutes, als hooks don't need to be cached *that* often, normally you invalidate the cache properly
global $dbinfo;
$data = datacache($name,$duration);
if (is_array($data)){
reset($data);
$dbinfo['affected_rows']=-1;
return $data;
}else{
$result = db_query($sql);
$data = array();
while ($row = db_fetch_assoc($result)) {
$data[] = $row;
}
updatedatacache($name,$data);
reset($data);
return $data;
}
}
if (file_exists("lib/dbremote.php")) {
require_once("lib/dbremote.php");
}
function db_error(){
global $mysqli_resource;
$r = $mysqli_resource->error;
if ($r=="" && defined("DB_NODB") && !defined("DB_INSTALLER_STAGE4")) return "The database connection was never established";
return $r;
}
function db_fetch_assoc(&$result){
if (is_array($result)){
//cached data
if (list($key,$val)=each($result))
return $val;
else
return false;
}else{
//$fname = DBTYPE."_fetch_assoc";
//$r = $fname($result);
$r = $result->Fetch_Assoc();
return $r;
}
}
function db_insert_id(){
global $mysqli_resource;
if (defined("DB_NODB") && !defined("LINK")) return -1;
//$fname = DBTYPE."_insert_id";
//$r = $fname();
$r = $mysqli_resource->insert_id;
return $r;
}
function db_num_rows($result){
if (is_array($result)){
return count($result);
}else{
if (defined("DB_NODB") && !defined("LINK")) return 0;
$r = $result->num_rows;
return $r;
}
}
function db_affected_rows($link=false){
global $dbinfo, $mysqli_resource;
if (isset($dbinfo['affected_rows'])) {
return $dbinfo['affected_rows'];
}
if (defined("DB_NODB") && !defined("LINK")) return 0;
$r = $mysqli_resource->affected_rows;
return $r;
}
function db_pconnect($host,$user,$pass){
global $mysqli_resource;
// Constants cannot be an object
// MySQLi do not know a pconnect
$mysqli_resource = New MySQLi($host, $user, $pass);
if($mysqli_resource) {
return true;
}
else {
return false;
}
}
function db_connect($host,$user,$pass){
global $mysqli_resource;
// Constants cannot be an object
$mysqli_resource = New MySQLi($host, $user, $pass);
if($mysqli_resource) {
return true;
}
else {
return false;
}
}
function db_get_server_version() {
global $mysqli_resource;
return $mysqli_resource->server_info;
}
function db_select_db($dbname){
global $mysqli_resource;
$r = $mysqli_resource->select_db($dbname);
return $r;
}
function db_free_result($result){
if (is_array($result)){
//cached data
unset($result);
}else{
if (defined("DB_NODB") && !defined("LINK")) return false;
$result->Free();
return true;
}
}
function db_table_exists($tablename){
global $mysqli_resource;
if (defined("DB_NODB") && !defined("LINK")) return false;
$exists = $mysqli_resource->Query("SELECT 1 FROM `$tablename` LIMIT 0");
if ($exists) return true;
return false;
}
function db_prefix($tablename, $force=false) {
global $DB_PREFIX;
if ($force === false) {
$special_prefixes = array();
// The following file should be used to override or modify the
// special_prefixes array to be correct for your site. Do NOT
// do this unles you know EXACTLY what this means to you, your
// game, your county, your state, your nation, your planet and
// your universe!
if (file_exists("prefixes.php")) require_once("prefixes.php");
$prefix = $DB_PREFIX;
if (isset($special_prefixes[$tablename])) {
$prefix = $special_prefixes[$tablename];
}
} else {
$prefix = $force;
}
return $prefix . $tablename;
}
?>