redray
2008-12-01 249541af773142215e06297db6cfbc5cebefcb58
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.1
 * @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;
   }
@@ -160,10 +155,14 @@
        return $this->quote($formfield);
    }
      
   /** Escapes quotes in variable. addslashes() */
   /** Escapes quotes in variable. mysql_real_escape_string() */
    public function quote($formfield)
    {
        return addslashes($formfield);
    {
      if(!$this->connect()){
         $this->updateError('WARNING: mysql_connect: Used addslashes instead of mysql_real_escape_string');
         return addslashes($formfield);
      }
        return mysql_real_escape_string($formfield, $this->linkId);
    }
      
   /** Unquotes a variable, strip_slashes() */
@@ -183,7 +182,8 @@
       return $out;
   }
       
    // deprecated
   /*
    public function insert($tablename, $form, $debug = 0)
    {
        if(is_array($form)){
@@ -200,7 +200,8 @@
            if($debug == 1){ echo 'mySQL Error Message: '.$this->errorMessage; }
        }
    }
   // Deprecated
    public function update($tablename, $form, $bedingung, $debug = 0)
    {
       if(is_array($form)){
@@ -214,6 +215,7 @@
            if($debug == 1){ echo 'mySQL Error Message: '.$this->errorMessage; }
        }
    }
   */
   
   //** Function to fill the datalog with a full differential record.
   public function datalogSave($db_table, $action, $primary_field, $primary_id, $record_old, $record_new) {
@@ -231,7 +233,7 @@
      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) {
               // Record has changed
               $diffrec_full['old'][$key] = $val;
               $diffrec_full['new'][$key] = $record_new[$key];
@@ -243,10 +245,10 @@
         }
      } elseif(is_array($record_new)) {
         foreach($record_new as $key => $val) {
            if(isset($record_new[$key]) && $record_old[$key] != $val) {
            if(isset($record_new[$key]) && @$record_old[$key] != $val) {
               // Record has changed
               $diffrec_full['new'][$key] = $val;
               $diffrec_full['old'][$key] = $record_old[$key];
               $diffrec_full['old'][$key] = @$record_old[$key];
               $diff_num++;
            } else {
               $diffrec_full['new'][$key] = $val;
@@ -258,6 +260,7 @@
      // 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) {
         $diffstr = $app->db->quote(serialize($diffrec_full));
@@ -274,7 +277,20 @@
      return true;
   }
   
   //** Updates a record and saves the cahnges into the datalog
   //** Inserts a record and saves the changes into the datalog
   public function datalogInsert($tablename, $insert_data, $index_field) {
      global $app;
      $old_rec = array();
      $this->query("INSERT INTO $tablename $insert_data");
      $index_value = $this->insertID();
      $new_rec = $this->queryOneRecord("SELECT * FROM $tablename WHERE $index_field = '$index_value'");
      $this->datalogSave($tablename, 'INSERT', $index_field, $index_value, $old_rec, $new_rec);
      return $index_value;
   }
   //** Updates a record and saves the changes into the datalog
   public function datalogUpdate($tablename, $update_data, $index_field, $index_value) {
      global $app;
      
@@ -285,6 +301,20 @@
      
      return true;
   }
   //** Deletes a record and saves the changes into the datalog
   public function datalogDelete($tablename, $index_field, $index_value) {
      global $app;
      $old_rec = $this->queryOneRecord("SELECT * FROM $tablename WHERE $index_field = '$index_value'");
      $this->query("DELETE FROM $tablename WHERE $index_field = '$index_value'");
      $new_rec = array();
      $this->datalogSave($tablename, 'DELETE', $index_field, $index_value, $old_rec, $new_rec);
      return true;
   }
       
    public function closeConn()
    {
@@ -304,15 +334,19 @@
          return false;
       }
    }
   /*
    public function delete()
    {
    }
   */
   /*
    public function Transaction($action)
    {
        //action = begin, commit oder rollback
    }
   */
    
    /** Creates a database table with the following format for the $columns array   
    * <code>
@@ -327,6 +361,8 @@
    *                  option =>   unique | primary | index)
    * </code>   
    */
    public function createTable($table_name, $columns)
    {
        $index = '';