From cc2d7b297c8b8755c4cdf5ea2a13c390f51c23d1 Mon Sep 17 00:00:00 2001 From: Florian Schaal <florian@schaal-24.de> Date: Tue, 13 Jan 2015 10:39:10 -0500 Subject: [PATCH] fixed fr_resync.lng --- server/lib/classes/db_mysql.inc.php | 67 +++++++++++++++++++++++++++------ 1 files changed, 54 insertions(+), 13 deletions(-) diff --git a/server/lib/classes/db_mysql.inc.php b/server/lib/classes/db_mysql.inc.php index 488a381..8075d1f 100644 --- a/server/lib/classes/db_mysql.inc.php +++ b/server/lib/classes/db_mysql.inc.php @@ -86,7 +86,7 @@ $this->_sqlerror('Zugriff auf Datenbankserver fehlgeschlagen! / Database server not accessible!'); return false; } - if(!((bool)mysqli_query( $this->_iConnId, "USE $this->dbName"))) { + if(!((bool)mysqli_query( $this->_iConnId, 'USE `' . $this->dbName . '`'))) { $this->close(); $this->_sqlerror('Datenbank nicht gefunden / Database not found'); return false; @@ -176,6 +176,7 @@ private function _query($sQuery = '') { global $app; + //if($this->isConnected == false) return false; if ($sQuery == '') { $this->_sqlerror('Keine Anfrage angegeben / No query given'); return false; @@ -187,6 +188,17 @@ $ok = mysqli_ping($this->_iConnId); if(!$ok) { if(!mysqli_connect($this->dbHost, $this->dbUser, $this->dbPass, $this->dbName)) { + if($this->errorNumber == '111') { + // server is not available + if($try > 9) { + if(isset($app) && isset($app->forceErrorExit)) { + $app->forceErrorExit('Database connection failure!'); + } + // if we reach this, the app object is missing or has no exit method, so we continue as normal + } + sleep(30); // additional seconds, please! + } + if($try > 9) { $this->_sqlerror('DB::query -> reconnect'); return false; @@ -269,11 +281,11 @@ } public function queryOne($sQuery = '') { - return $this->query_one($sQuery); + return call_user_func_array(array(&$this, 'queryOneRecord'), func_get_args()); } public function query_one($sQuery = '') { - return $this->queryOneRecord($sQuery); + return call_user_func_array(array(&$this, 'queryOneRecord'), func_get_args()); } /** @@ -302,11 +314,11 @@ } public function queryAll($sQuery = '') { - return $this->queryAllRecords($sQuery); + return call_user_func_array(array(&$this, 'queryAllRecords'), func_get_args()); } public function query_all($sQuery = '') { - return $this->queryAllRecords($sQuery); + return call_user_func_array(array(&$this, 'queryAllRecords'), func_get_args()); } /** @@ -335,7 +347,7 @@ } public function query_all_array($sQuery = '') { - return $this->queryAllArray($sQuery); + return call_user_func_array(array(&$this, 'queryAllArray'), func_get_args()); } @@ -378,6 +390,35 @@ /** + * check if a utf8 string is valid + * + * @access public + * @param string $string the string to check + * @return bool true if it is valid utf8, false otherwise + */ + private function check_utf8($str) { + $len = strlen($str); + for($i = 0; $i < $len; $i++){ + $c = ord($str[$i]); + if ($c > 128) { + if (($c > 247)) return false; + elseif ($c > 239) $bytes = 4; + elseif ($c > 223) $bytes = 3; + elseif ($c > 191) $bytes = 2; + else return false; + if (($i + $bytes) > $len) return false; + while ($bytes > 1) { + $i++; + $b = ord($str[$i]); + if ($b < 128 || $b > 191) return false; + $bytes--; + } + } + } + return true; + } // end of check_utf8 + + /** * Escape a string for usage in a query * * @access public @@ -388,21 +429,21 @@ global $app; if(!is_string($sString) && !is_numeric($sString)) { $app->log('NON-String given in escape function! (' . gettype($sString) . ')', LOGLEVEL_INFO); - $sAddMsg = getDebugBacktrace(); + //$sAddMsg = getDebugBacktrace(); $app->log($sAddMsg, LOGLEVEL_DEBUG); $sString = ''; } - /*$cur_encoding = mb_detect_encoding($sString); + $cur_encoding = mb_detect_encoding($sString); if($cur_encoding != "UTF-8") { if($cur_encoding != 'ASCII') { - $app->log('String ' . substr($sString, 0, 25) . '... is ' . $cur_encoding . '.', LOGLEVEL_WARN); + $app->log('String ' . substr($sString, 0, 25) . '... is ' . $cur_encoding . '.', LOGLEVEL_INFO); if($cur_encoding) $sString = mb_convert_encoding($sString, 'UTF-8', $cur_encoding); else $sString = mb_convert_encoding($sString, 'UTF-8'); } - } elseif(!PXBase::check_utf8($sString)) { + } elseif(!$this->check_utf8($sString)) { $sString = utf8_encode($sString); - }*/ + } if($this->_iConnId) return mysqli_real_escape_string($this->_iConnId, $sString); else return addslashes($sString); @@ -419,12 +460,12 @@ $mysql_error = (is_object($this->_iConnId) ? mysqli_error($this->_iConnId) : mysqli_connect_error()); $mysql_errno = (is_object($this->_iConnId) ? mysqli_errno($this->_iConnId) : mysqli_connect_errno()); - $sAddMsg .= getDebugBacktrace(); + //$sAddMsg .= getDebugBacktrace(); if($this->show_error_messages && $conf['demo_mode'] === false) { echo $sErrormsg . $sAddMsg; } else if(is_object($app) && method_exists($app, 'log')) { - $app->log($sErrormsg . $sAddMsg, LOGLEVEL_WARN); + $app->log($sErrormsg . $sAddMsg . ' -> ' . $mysql_errno . ' (' . $mysql_error . ')', LOGLEVEL_WARN); } } -- Gitblit v1.9.1