]> git.mxchange.org Git - friendica.git/blobdiff - include/dba.php
Merge pull request #2830 from annando/1610-account_type
[friendica.git] / include / dba.php
index cae045d874cb384e5d4dac8176175a30acdaac90..97f6c8795645492aeda5f47cd5707dc0b325545a 100644 (file)
@@ -1,4 +1,5 @@
 <?php
+require_once("dbm.php");
 
 # if PDO is avaible for mysql, use the new database abstraction
 # TODO: PDO is disabled for release 3.3. We need to investigate why
@@ -65,6 +66,8 @@ class dba {
                        if(! mysqli_connect_errno()) {
                                $this->connected = true;
                        }
+                       if (isset($a->config["system"]["db_charset"]))
+                               $this->db->set_charset($a->config["system"]["db_charset"]);
                }
                else {
                        $this->mysqli = false;
@@ -72,6 +75,8 @@ class dba {
                        if($this->db && mysql_select_db($db,$this->db)) {
                                $this->connected = true;
                        }
+                       if (isset($a->config["system"]["db_charset"]))
+                               mysql_set_charset($a->config["system"]["db_charset"], $this->db);
                }
                if(! $this->connected) {
                        $this->db = null;
@@ -94,6 +99,14 @@ class dba {
 
                $this->error = '';
 
+               // Check the connection (This can reconnect the connection - if configured)
+               if ($this->mysqli)
+                       $connected = $this->db->ping();
+               else
+                       $connected = mysql_ping($this->db);
+
+               $connstr = ($connected ? "Connected": "Disonnected");
+
                $stamp1 = microtime(true);
 
                if($this->mysqli)
@@ -106,6 +119,9 @@ class dba {
 
                $a->save_timestamp($stamp1, "database");
 
+               if (strtolower(substr($sql, 0, 6)) != "select")
+                       $a->save_timestamp($stamp1, "database_write");
+
                if(x($a->config,'system') && x($a->config['system'],'db_log')) {
                        if (($duration > $a->config["system"]["db_loglimit"])) {
                                $duration = round($duration, 3);
@@ -118,14 +134,17 @@ class dba {
                }
 
                if($this->mysqli) {
-                       if($this->db->errno)
+                       if($this->db->errno) {
                                $this->error = $this->db->error;
+                               $this->errorno = $this->db->errno;
+                       }
+               } elseif(mysql_errno($this->db)) {
+                       $this->error = mysql_error($this->db);
+                       $this->errorno = mysql_errno($this->db);
                }
-               elseif(mysql_errno($this->db))
-                               $this->error = mysql_error($this->db);
 
                if(strlen($this->error)) {
-                       logger('dba: ' . $this->error);
+                       logger('DB Error ('.$connstr.') '.$this->errorno.': '.$this->error);
                }
 
                if($this->debug) {
@@ -230,6 +249,15 @@ class dba {
                }
        }
 
+       function connected() {
+               if ($this->mysqli)
+                       $connected = $this->db->ping();
+               else
+                       $connected = mysql_ping($this->db);
+
+               return $connected;
+       }
+
        function __destruct() {
                if ($this->db)
                        if($this->mysqli)
@@ -340,4 +368,3 @@ function dbesc_array(&$arr) {
 function dba_timer() {
        return microtime(true);
 }
-