diff --git a/lib/mysql.php b/lib/mysql.php
index 26d5fe0..3a0a598 100644
--- a/lib/mysql.php
+++ b/lib/mysql.php
@@ -1,210 +1,215 @@
-1 connection
- static $queries = 0;
- static $cachehits = 0;
- static $rowsf = 0;
- static $rowst = 0;
- static $time = 0;
-
- // Query debugging functions for admins
- static $connection_count = 0;
- static $debug_on = false;
- static $debug_list = array();
-
- var $cache = array();
- var $connection = NULL;
- var $id = 0;
-
- public function connect($host,$user,$pass,$persist=false) {
- $start=microtime(true);
- $this->connection = (($persist) ? mysql_pconnect($host,$user,$pass) : mysql_connect($host,$user,$pass));
- $t = microtime(true)-$start;
- $this->id = ++self::$connection_count;
-
- if (self::$debug_on) {
- $b = self::getbacktrace();
- self::$debug_list[] = array($this->id, $b['pfunc'], "$b[file]:$b[line]", "".(($persist)?"Persistent c":"C")."onnection established to mySQL server ($host, $user, using password: ".(($pass!=="") ? "YES" : "NO").")", sprintf("%01.6fs",$t));
- }
-
- self::$time += $t;
- return $this->connection;
- }
-
- public function selectdb($dbname) {
- $start=microtime(true);
- $r = mysql_select_db($dbname, $this->connection);
- self::$time += microtime(true)-$start;
- return $r;
- }
-
- public function query($query, $usecache = false) {
- if ($usecache && array_key_exists($hash = md5($query), $this->cache)) {
- $start=microtime(true);
- ++self::$cachehits;
- @mysql_data_seek($this->cache[$hash], 0);
- $t = microtime(true)-$start;
- if (self::$debug_on) {
- $b = self::getbacktrace();
- self::$debug_list[] = array($this->id, $b['pfunc'], "$b[file]:$b[line]", "$query", "".sprintf("%01.6fs",$t)."");
- }
- return $this->cache[$hash];
- }
-
- $start=microtime(true);
- if($res = mysql_query($query, $this->connection)) {
- ++self::$queries;
- if (!is_bool($res))
- self::$rowst += @mysql_num_rows($res);
-
- if ($usecache) {
- $this->cache[md5($query)] = &$res;
- }
- }
- else {
- // the huge SQL warning text sucks
- $err = str_replace("You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use", "SQL syntax error", mysql_error());
- trigger_error("MySQL error: $err", E_USER_ERROR);
- }
-
- $t = microtime(true)-$start;
- self::$time += $t;
-
- if (self::$debug_on) {
- $b = self::getbacktrace();
- $tx = ((!$err) ? $query : "$query");
- self::$debug_list[] = array($this->id, $b['pfunc'], "$b[file]:$b[line]", $tx, sprintf("%01.6fs",$t));
- }
-
- return $res;
- }
-
- public function fetch($result, $flag = MYSQL_BOTH){
- $start=microtime(true);
-
- if($result && $res=mysql_fetch_array($result, $flag))
- ++self::$rowsf;
-
- self::$time += microtime(true)-$start;
- return $res;
- }
-
- public function result($result,$row=0,$col=0){
- $start=microtime(true);
-
- if($result) {
- if (mysql_num_rows($result) < $row+1)
- $res = NULL;
- elseif ($res=@mysql_result($result,$row,$col))
- ++self::$rowsf;
- }
-
- self::$time += microtime(true)-$start;
- return $res;
- }
-
- public function fetchq($query, $flag = MYSQL_BOTH, $cache = false){
- $res = $this->query($query, $cache);
- $res = $this->fetch($res, $flag);
- return $res;
- }
-
- public function resultq($query,$row=0,$col=0, $cache = false){
- $res = $this->query($query, $cache);
- $res = $this->result($res,$row,$col);
- return $res;
- }
-
- public function getmultiresults($query, $key, $wanted, $cache = false) {
- $q = $this->query($query, $cache);
- $ret = array();
- $tmp = array();
-
- while ($res = @$this->fetch($q, MYSQL_ASSOC))
- $tmp[$res[$key]][] = $res[$wanted];
- foreach ($tmp as $keys => $values)
- $ret[$keys] = implode(",", $values);
- return $ret;
- }
-
- public function getresultsbykey($query, $key, $wanted, $cache = false) {
- $q = $this->query($query, $cache);
- $ret = array();
- while ($res = @$this->fetch($q, MYSQL_ASSOC))
- $ret[$res[$key]] = $res[$wanted];
- return $ret;
- }
-
- public function getresults($query, $wanted, $cache = false) {
- $q = $this->query($query, $cache);
- $ret = array();
- while ($res = @$this->fetch($q, MYSQL_ASSOC))
- $ret[] = $res[$wanted];
- return $ret;
- }
-
- public function getarraybykey($query, $key, $cache = false) {
- $q = $this->query($query, $cache);
- $ret = array();
- while ($res = @$this->fetch($q, MYSQL_ASSOC))
- $ret[$res[$key]] = $res;
- return $ret;
- }
-
- public function getarray($query, $cache = false) {
- $q = $this->query($query, $cache);
- $ret = array();
- while ($res = @$this->fetch($q, MYSQL_ASSOC))
- $ret[] = $res;
- return $ret;
- }
-
- public function escape($s) {
- return mysql_real_escape_string($s);
- }
-
- //private function __construct() {}
-
- // Debugging shit for admins
- public static function debugprinter() {
- global $tccellh, $tccellc, $tccell1, $tccell2, $tblstart, $smallfont, $tblend;
- if (!self::$debug_on) return "";
- $out = "";
- $out .= "
$tblstart
$tccellh colspan=5>SQL Debug
- $tccellh width=20> 
- $tccellh width=20>ID
- $tccellh width=300>Function
- $tccellh width=*>Query
- $tccellh width=90>Time
";
- foreach(self::$debug_list as $i => $d) {
- $altcell = "tccell" . (($i & 1)+1);
- $cell = $$altcell;
- if ($oldid && $oldid != $d[0])
- $out .= "$tccellc colspan=5>
";
- $oldid = $d[0];
- $out .= "
- $cell>$i
- $cell>$d[0]
- $cell>$d[1]$smallfont
$d[2]
- $cell style='white-space: pre-wrap; text-align: left'>$d[3]
- $cell>$d[4]
";
- }
- $out .= "$tblend";
- return $out;
- }
-
- private static function getbacktrace() {
- $backtrace = debug_backtrace();
- for ($i = 1; isset($backtrace[$i]); ++$i) {
- if (substr($backtrace[$i]['file'], -9) !== "mysql.php") {
- if (!($backtrace[$i]['pfunc'] = $backtrace[$i+1]['function']))
- $backtrace[$i]['pfunc'] = "(main)";
- $backtrace[$i]['file'] = str_replace($_SERVER['DOCUMENT_ROOT'], "", $backtrace[$i]['file']);
- return $backtrace[$i];
- }
- }
- return $backtrace[$i-1];
- }
- }
-?>
+1 connection
+ static $queries = 0;
+ static $cachehits = 0;
+ static $rowsf = 0;
+ static $rowst = 0;
+ static $time = 0;
+
+ // Query debugging functions for admins
+ static $connection_count = 0;
+ static $debug_on = false;
+ static $debug_list = array();
+
+ var $cache = array();
+ var $connection = NULL;
+ var $id = 0;
+
+ public function connect($host,$user,$pass,$persist=false) {
+ $start=microtime(true);
+ $this->connection = (($persist) ? mysql_pconnect($host,$user,$pass) : mysql_connect($host,$user,$pass));
+ $t = microtime(true)-$start;
+ $this->id = ++self::$connection_count;
+
+ if (self::$debug_on) {
+ $b = self::getbacktrace();
+ self::$debug_list[] = array($this->id, $b['pfunc'], "$b[file]:$b[line]", "".(($persist)?"Persistent c":"C")."onnection established to mySQL server ($host, $user, using password: ".(($pass!=="") ? "YES" : "NO").")", sprintf("%01.6fs",$t));
+ }
+
+ self::$time += $t;
+ return $this->connection;
+ }
+
+ public function selectdb($dbname) {
+ $start=microtime(true);
+ $r = mysql_select_db($dbname, $this->connection);
+ self::$time += microtime(true)-$start;
+ return $r;
+ }
+
+ public function query($query, $usecache = false) {
+ if ($usecache && array_key_exists($hash = md5($query), $this->cache)) {
+ $start=microtime(true);
+ ++self::$cachehits;
+ @mysql_data_seek($this->cache[$hash], 0);
+ $t = microtime(true)-$start;
+ if (self::$debug_on) {
+ $b = self::getbacktrace();
+ self::$debug_list[] = array($this->id, $b['pfunc'], "$b[file]:$b[line]", "$query", "".sprintf("%01.6fs",$t)."");
+ }
+ return $this->cache[$hash];
+ }
+
+ $start=microtime(true);
+ if($res = mysql_query($query, $this->connection)) {
+ ++self::$queries;
+ if (!is_bool($res))
+ self::$rowst += @mysql_num_rows($res);
+
+ if ($usecache) {
+ $this->cache[md5($query)] = &$res;
+ }
+ }
+ else {
+ // the huge SQL warning text sucks
+ $err = str_replace("You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use", "SQL syntax error", mysql_error());
+ trigger_error("MySQL error: $err", E_USER_ERROR);
+ }
+
+ $t = microtime(true)-$start;
+ self::$time += $t;
+
+ if (self::$debug_on) {
+ $b = self::getbacktrace();
+ $tx = ((!$err) ? $query : "$query");
+ self::$debug_list[] = array($this->id, $b['pfunc'], "$b[file]:$b[line]", $tx, sprintf("%01.6fs",$t));
+ }
+
+ return $res;
+ }
+
+ public function fetch($result, $flag = MYSQL_BOTH){
+ $start=microtime(true);
+
+ if($result && $res=mysql_fetch_array($result, $flag))
+ ++self::$rowsf;
+
+ self::$time += microtime(true)-$start;
+ return $res;
+ }
+
+ public function result($result,$row=0,$col=0){
+ $start=microtime(true);
+
+ if($result) {
+ if (mysql_num_rows($result) < $row+1)
+ $res = NULL;
+ elseif ($res=@mysql_result($result,$row,$col))
+ ++self::$rowsf;
+ }
+
+ self::$time += microtime(true)-$start;
+ return $res;
+ }
+
+ public function fetchq($query, $flag = MYSQL_BOTH, $cache = false){
+ $res = $this->query($query, $cache);
+ $res = $this->fetch($res, $flag);
+ return $res;
+ }
+
+ public function resultq($query,$row=0,$col=0, $cache = false){
+ $res = $this->query($query, $cache);
+ $res = $this->result($res,$row,$col);
+ return $res;
+ }
+
+ public function getmultiresults($query, $key, $wanted, $cache = false) {
+ $q = $this->query($query, $cache);
+ $ret = array();
+ $tmp = array();
+
+ while ($res = @$this->fetch($q, MYSQL_ASSOC))
+ $tmp[$res[$key]][] = $res[$wanted];
+ foreach ($tmp as $keys => $values)
+ $ret[$keys] = implode(",", $values);
+ return $ret;
+ }
+
+ public function getresultsbykey($query, $key, $wanted, $cache = false) {
+ $q = $this->query($query, $cache);
+ $ret = array();
+ while ($res = @$this->fetch($q, MYSQL_ASSOC))
+ $ret[$res[$key]] = $res[$wanted];
+ return $ret;
+ }
+
+ public function getresults($query, $wanted, $cache = false) {
+ $q = $this->query($query, $cache);
+ $ret = array();
+ while ($res = @$this->fetch($q, MYSQL_ASSOC))
+ $ret[] = $res[$wanted];
+ return $ret;
+ }
+
+ public function getarraybykey($query, $key, $cache = false) {
+ $q = $this->query($query, $cache);
+ $ret = array();
+ while ($res = @$this->fetch($q, MYSQL_ASSOC))
+ $ret[$res[$key]] = $res;
+ return $ret;
+ }
+
+ public function getarray($query, $cache = false) {
+ $q = $this->query($query, $cache);
+ $ret = array();
+ while ($res = @$this->fetch($q, MYSQL_ASSOC))
+ $ret[] = $res;
+ return $ret;
+ }
+
+ public function escape($s) {
+ return mysql_real_escape_string($s);
+ }
+
+
+ public function set_character_encoding($s) {
+ return mysql_set_charset($s, $this->connection);
+ }
+
+ //private function __construct() {}
+
+ // Debugging shit for admins
+ public static function debugprinter() {
+ global $tccellh, $tccellc, $tccell1, $tccell2, $tblstart, $smallfont, $tblend;
+ if (!self::$debug_on) return "";
+ $out = "";
+ $out .= "
$tblstart$tccellh colspan=5>SQL Debug
+ $tccellh width=20> 
+ $tccellh width=20>ID
+ $tccellh width=300>Function
+ $tccellh width=*>Query
+ $tccellh width=90>Time
";
+ foreach(self::$debug_list as $i => $d) {
+ $altcell = "tccell" . (($i & 1)+1);
+ $cell = $$altcell;
+ if ($oldid && $oldid != $d[0])
+ $out .= "$tccellc colspan=5>
";
+ $oldid = $d[0];
+ $out .= "
+ $cell>$i
+ $cell>$d[0]
+ $cell>$d[1]$smallfont
$d[2]
+ $cell style='white-space: pre-wrap; text-align: left'>$d[3]
+ $cell>$d[4]
";
+ }
+ $out .= "$tblend";
+ return $out;
+ }
+
+ private static function getbacktrace() {
+ $backtrace = debug_backtrace();
+ for ($i = 1; isset($backtrace[$i]); ++$i) {
+ if (substr($backtrace[$i]['file'], -9) !== "mysql.php") {
+ if (!($backtrace[$i]['pfunc'] = $backtrace[$i+1]['function']))
+ $backtrace[$i]['pfunc'] = "(main)";
+ $backtrace[$i]['file'] = str_replace($_SERVER['DOCUMENT_ROOT'], "", $backtrace[$i]['file']);
+ return $backtrace[$i];
+ }
+ }
+ return $backtrace[$i-1];
+ }
+ }
+?>