tbrehm
2010-01-28 40dd9fb5c2f1083b2793674d5c418ead836d764e
interface/lib/classes/db_mysql.inc.php
@@ -1,14 +1,7 @@
<?php
/**
 * mySQL Database class
 *
 * @author Till Brehm
 * @copyright  2005, Till Brehm, projektfarm Gmbh
 * @version 0.2
 * @package ISPConfig
 */
/*
Copyright (c) 2005, Till Brehm, projektfarm Gmbh
Copyright (c) 2007, Till Brehm, projektfarm Gmbh
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
@@ -35,20 +28,20 @@
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
class db
{
   private $dbHost = '';      // hostname of the MySQL server
   private $dbName = '';      // logical database name on that server
   private $dbUser = '';      // database authorized user
   private $dbPass = '';      // user's password
   private $linkId = 0;      // last result of mysql_connect()
   private $queryId = 0;      // last result of mysql_query()
   private $record   = array();   // last record fetched
    private $autoCommit = 1;    // Autocommit Transactions
   private $currentRow;      // current row number
   private $errorNumber = 0;   // last error number
   public $errorMessage = '';   // last error message
   private $errorLocation = '';// last error location
class db {
   private $dbHost = '';         // hostname of the MySQL server
   private $dbName = '';         // logical database name on that server
   private $dbUser = '';         // database authorized user
   private $dbPass = '';         // user's password
    private $dbCharset = "";       // what charset comes and goes to mysql: utf8 / latin1
   private $linkId = 0;         // last result of mysql_connect()
   private $queryId = 0;         // last result of mysql_query()
   private $record   = array();      // last record fetched
    private $autoCommit = 1;       // Autocommit Transactions
   private $currentRow;         // current row number
   private $errorNumber = 0;      // last error number
   public $errorMessage = '';      // last error message
   private $errorLocation = '';   // last error location
   public $show_error_messages = false;
   public function __construct()
@@ -58,6 +51,7 @@
      $this->dbName = $conf['db_database'];
      $this->dbUser = $conf['db_user'];
      $this->dbPass = $conf['db_password'];
      $this->dbCharset = $conf['db_charset'];
      //$this->connect();
   }
@@ -81,6 +75,7 @@
            $this->updateError('DB::connect()<br />mysql_connect');
            return false;
         }
          $this->queryId = @mysql_query('SET NAMES '.$this->dbCharset, $this->linkId);
      }
      return true;
   }
@@ -222,23 +217,14 @@
    }
   */
   
   //** Function to fill the datalog with a full differential record.
   public function datalogSave($db_table, $action, $primary_field, $primary_id, $record_old, $record_new) {
      global $app,$conf;
      // Insert backticks only for incomplete table names.
      if(stristr($db_table,'.')) {
         $escape = '';
      } else {
         $escape = '`';
      }
   public function diffrec($record_old, $record_new) {
      $diffrec_full = array();
      $diff_num = 0;
      if(is_array($record_old) && count($record_old) > 0) {
         foreach($record_old as $key => $val) {
            if(!isset($record_new[$key]) || $record_new[$key] != $val) {
            // if(!isset($record_new[$key]) || $record_new[$key] != $val) {
            if($record_new[$key] != $val) {
               // Record has changed
               $diffrec_full['old'][$key] = $val;
               $diffrec_full['new'][$key] = $record_new[$key];
@@ -262,12 +248,34 @@
         }
      }
      
      return array('diff_num' => $diff_num, 'diff_rec' => $diffrec_full);
   }
   //** Function to fill the datalog with a full differential record.
   public function datalogSave($db_table, $action, $primary_field, $primary_id, $record_old, $record_new) {
      global $app,$conf;
      // Insert backticks only for incomplete table names.
      if(stristr($db_table,'.')) {
         $escape = '';
      } else {
         $escape = '`';
      }
      $tmp = $this->diffrec($record_old, $record_new);
      $diffrec_full = $tmp['diff_rec'];
      $diff_num = $tmp['diff_num'];
      unset($tmp);
      // Insert the server_id, if the record has a server_id
      $server_id = (isset($record_old["server_id"]) && $record_old["server_id"] > 0)?$record_old["server_id"]:0;
      if(isset($record_new["server_id"])) $server_id = $record_new["server_id"];
      
      if($diff_num > 0) {
         //print_r($diff_num);
         //print_r($diffrec_full);
         $diffstr = $app->db->quote(serialize($diffrec_full));
         $username = $app->db->quote($_SESSION["s"]["user"]["username"]);
         $dbidx = $primary_field.":".$primary_id;
@@ -474,16 +482,15 @@
       
       
    public function tableInfo($table_name) {
        global $go_api,$go_info;
        //* Tabellenfelder einlesen ?
        if($rows = $go_api->db->queryAllRecords("SHOW FIELDS FROM $table_name")){
        if($rows = $this->queryAllRecords("SHOW FIELDS FROM $table_name")){
        foreach($rows as $row) {
            $name    = $row[0];
            $default = $row[4];
            $key     = $row[3];
            $extra   = $row[5];
            $isnull  = $row[2];
            $type    = $row[1];
            $name    = $row['Field'];
            $default = $row['Default'];
            $key     = $row['Key'];
            $extra   = $row['Extra'];
            $isnull  = $row['Null'];
            $type    = $row['Type'];
        
            $column = array('name' => $name, 'defaultValue' => $default);
            //$column["type"] = $type;