From ed30c60150ffda0301eb1f8d30c93cac94de41df Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Mon, 25 Jul 2011 10:38:22 -0400
Subject: [PATCH] Fixed some warnings in the installer.
---
server/lib/classes/db_mysql.inc.php | 253 ++++++++++++++++++++++++++++++++++++--------------
1 files changed, 182 insertions(+), 71 deletions(-)
diff --git a/server/lib/classes/db_mysql.inc.php b/server/lib/classes/db_mysql.inc.php
index 364fd7e..2c113b5 100644
--- a/server/lib/classes/db_mysql.inc.php
+++ b/server/lib/classes/db_mysql.inc.php
@@ -29,18 +29,19 @@
class db
{
- var $dbHost = ""; // hostname of the MySQL server
- var $dbName = ""; // logical database name on that server
- var $dbUser = ""; // database authorized user
- var $dbPass = ""; // user's password
+ var $dbHost = ''; // hostname of the MySQL server
+ var $dbName = ''; // logical database name on that server
+ var $dbUser = ''; // database authorized user
+ var $dbPass = ''; // user's password
+ var $dbCharset = 'utf8';// Database charset
var $linkId = 0; // last result of mysql_connect()
var $queryId = 0; // last result of mysql_query()
var $record = array(); // last record fetched
- var $autoCommit = 1; // Autocommit Transactions
+ var $autoCommit = 1; // Autocommit Transactions
var $currentRow; // current row number
var $errorNumber = 0; // last error number
- var $errorMessage = ""; // last error message
- var $errorLocation = "";// last error location
+ var $errorMessage = ''; // last error message
+ var $errorLocation = '';// last error location
var $show_error_messages = true;
// constructor
@@ -48,10 +49,10 @@
{
global $conf;
- $this->dbHost = $conf["db_host"];
- $this->dbName = $conf["db_database"];
- $this->dbUser = $conf["db_user"];
- $this->dbPass = $conf["db_password"];
+ $this->dbHost = $conf['db_host'];
+ $this->dbName = $conf['db_database'];
+ $this->dbUser = $conf['db_user'];
+ $this->dbPass = $conf['db_password'];
$this->dbCharset = $conf['db_charset'];
//$this->connect();
}
@@ -60,13 +61,13 @@
function updateError($location)
{
global $app;
- $this->errorNumber = mysql_errno($this->linkId);
- $this->errorMessage = mysql_error($this->linkId);
+ $this->errorNumber = @mysql_errno($this->linkId);
+ $this->errorMessage = @mysql_error($this->linkId);
$this->errorLocation = $location;
if($this->errorNumber && $this->show_error_messages && method_exists($app,'log'))
{
// echo('<br /><b>'.$this->errorLocation.'</b><br />'.$this->errorMessage);
- $app->log($this->errorLocation." ".$this->errorMessage,LOGLEVEL_WARN);
+ $app->log($this->errorLocation.' '.$this->errorMessage,LOGLEVEL_WARN);
//flush();
}
}
@@ -75,7 +76,7 @@
{
if($this->linkId == 0)
{
- $this->linkId = mysql_connect($this->dbHost, $this->dbUser, $this->dbPass);
+ $this->linkId = @mysql_connect($this->dbHost, $this->dbUser, $this->dbPass);
if(!$this->linkId)
{
$this->updateError('DB::connect()-> mysql_connect');
@@ -229,7 +230,118 @@
}
}
*/
-
+
+ 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($record_new[$key] != $val) {
+ // Record has changed
+ $diffrec_full['old'][$key] = $val;
+ $diffrec_full['new'][$key] = $record_new[$key];
+ $diff_num++;
+ } else {
+ $diffrec_full['old'][$key] = $val;
+ $diffrec_full['new'][$key] = $val;
+ }
+ }
+ } elseif(is_array($record_new)) {
+ foreach($record_new as $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];
+ $diff_num++;
+ } else {
+ $diffrec_full['new'][$key] = $val;
+ $diffrec_full['old'][$key] = $val;
+ }
+ }
+ }
+
+ 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;
+
+ if($action == 'INSERT') $action = 'i';
+ if($action == 'UPDATE') $action = 'u';
+ if($action == 'DELETE') $action = 'd';
+ $sql = "INSERT INTO sys_datalog (dbtable,dbidx,server_id,action,tstamp,user,data) VALUES ('".$db_table."','$dbidx','$server_id','$action','".time()."','$username','$diffstr')";
+ $app->db->query($sql);
+ }
+
+ return true;
+ }
+
+ //** 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;
+
+ $old_rec = $this->queryOneRecord("SELECT * FROM $tablename WHERE $index_field = '$index_value'");
+ $this->query("UPDATE $tablename SET $update_data WHERE $index_field = '$index_value'");
+ $new_rec = $this->queryOneRecord("SELECT * FROM $tablename WHERE $index_field = '$index_value'");
+ $this->datalogSave($tablename, 'UPDATE', $index_field, $index_value, $old_rec, $new_rec);
+
+ 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()
{
if($this->linkId)
@@ -273,31 +385,30 @@
*/
function createTable($table_name,$columns) {
- $index = "";
+ $index = '';
$sql = "CREATE TABLE $table_name (";
foreach($columns as $col){
- $sql .= $col["name"]." ".$this->mapType($col["type"],$col["typeValue"])." ";
+ $sql .= $col['name'].' '.$this->mapType($col['type'],$col['typeValue']).' ';
- if($col["defaultValue"] != "") $sql .= "DEFAULT '".$col["defaultValue"]."' ";
- if($col["notNull"] == true) {
- $sql .= "NOT NULL ";
+ if($col['defaultValue'] != '') $sql .= "DEFAULT '".$col['defaultValue']."' ";
+ if($col['notNull'] == true) {
+ $sql .= 'NOT NULL ';
} else {
- $sql .= "NULL ";
+ $sql .= 'NULL ';
}
- if($col["autoInc"] == true) $sql .= "auto_increment ";
- $sql.= ",";
+ if($col['autoInc'] == true) $sql .= 'auto_increment ';
+ $sql.= ',';
// key Definitionen
- if($col["option"] == "primary") $index .= "PRIMARY KEY (".$col["name"]."),";
- if($col["option"] == "index") $index .= "INDEX (".$col["name"]."),";
- if($col["option"] == "unique") $index .= "UNIQUE (".$col["name"]."),";
+ if($col['option'] == 'primary') $index .= 'PRIMARY KEY ('.$col['name'].'),';
+ if($col['option'] == 'index') $index .= 'INDEX ('.$col['name'].'),';
+ if($col['option'] == 'unique') $index .= 'UNIQUE ('.$col['name'].'),';
}
$sql .= $index;
$sql = substr($sql,0,-1);
- $sql .= ")";
-
+ $sql .= ')';
$this->query($sql);
return true;
- }
+ }
/*
$columns = array(action => add | alter | drop
@@ -313,29 +424,29 @@
*/
function alterTable($table_name,$columns) {
- $index = "";
+ $index = '';
$sql = "ALTER TABLE $table_name ";
foreach($columns as $col){
- if($col["action"] == 'add') {
- $sql .= "ADD ".$col["name"]." ".$this->mapType($col["type"],$col["typeValue"])." ";
- } elseif ($col["action"] == 'alter') {
- $sql .= "CHANGE ".$col["name"]." ".$col["name_new"]." ".$this->mapType($col["type"],$col["typeValue"])." ";
- } elseif ($col["action"] == 'drop') {
- $sql .= "DROP ".$col["name"]." ";
+ if($col['action'] == 'add') {
+ $sql .= 'ADD '.$col['name'].' '.$this->mapType($col['type'],$col['typeValue']).' ';
+ } elseif ($col['action'] == 'alter') {
+ $sql .= 'CHANGE '.$col['name'].' '.$col['name_new'].' '.$this->mapType($col['type'],$col['typeValue']).' ';
+ } elseif ($col['action'] == 'drop') {
+ $sql .= 'DROP '.$col['name'].' ';
}
- if($col["action"] != 'drop') {
- if($col["defaultValue"] != "") $sql .= "DEFAULT '".$col["defaultValue"]."' ";
- if($col["notNull"] == true) {
- $sql .= "NOT NULL ";
+ if($col['action'] != 'drop') {
+ if($col['defaultValue'] != '') $sql .= "DEFAULT '".$col['defaultValue']."' ";
+ if($col['notNull'] == true) {
+ $sql .= 'NOT NULL ';
} else {
- $sql .= "NULL ";
+ $sql .= 'NULL ';
}
- if($col["autoInc"] == true) $sql .= "auto_increment ";
- $sql.= ",";
- // key Definitionen
- if($col["option"] == "primary") $index .= "PRIMARY KEY (".$col["name"]."),";
- if($col["option"] == "index") $index .= "INDEX (".$col["name"]."),";
- if($col["option"] == "unique") $index .= "UNIQUE (".$col["name"]."),";
+ if($col['autoInc'] == true) $sql .= 'auto_increment ';
+ $sql.= ',';
+ // Index definitions
+ if($col['option'] == 'primary') $index .= 'PRIMARY KEY ('.$col['name'].'),';
+ if($col['option'] == 'index') $index .= 'INDEX ('.$col['name'].'),';
+ if($col['option'] == 'unique') $index .= 'UNIQUE ('.$col['name'].'),';
}
}
$sql .= $index;
@@ -352,7 +463,7 @@
return $this->query($sql);
}
- // gibt Array mit Tabellennamen zur�ck
+ // gibt Array mit Tabellennamen zur�ck
function getTables($database_name = '') {
if($database_name == '') $database_name = $this->dbName;
@@ -363,7 +474,7 @@
return $tb_names;
}
- // gibt Feldinformationen zur Tabelle zur�ck
+ // gibt Feldinformationen zur Tabelle zur�ck
/*
$columns = array(action => add | alter | drop
name => Spaltenname
@@ -383,7 +494,7 @@
global $go_api,$go_info;
// Tabellenfelder einlesen
- if($rows = $go_api->db->queryAllRecords("SHOW FIELDS FROM ".$table_name)){
+ if($rows = $go_api->db->queryAllRecords('SHOW FIELDS FROM '.$table_name)){
foreach($rows as $row) {
$name = $row[0];
$default = $row[4];
@@ -395,38 +506,38 @@
$column = array();
- $column["name"] = $name;
- //$column["type"] = $type;
- $column["defaultValue"] = $default;
- if(stristr($key,"PRI")) $column["option"] = "primary";
- if(stristr($isnull,"YES")) {
- $column["notNull"] = false;
+ $column['name'] = $name;
+ //$column['type'] = $type;
+ $column['defaultValue'] = $default;
+ if(stristr($key,'PRI')) $column['option'] = 'primary';
+ if(stristr($isnull,'YES')) {
+ $column['notNull'] = false;
} else {
- $column["notNull"] = true;
+ $column['notNull'] = true;
}
- if($extra == 'auto_increment') $column["autoInc"] = true;
+ if($extra == 'auto_increment') $column['autoInc'] = true;
// Type in Metatype umsetzen
- if(stristr($type,"int(")) $metaType = 'int32';
- if(stristr($type,"bigint")) $metaType = 'int64';
- if(stristr($type,"char")) {
+ if(stristr($type,'int(')) $metaType = 'int32';
+ if(stristr($type,'bigint')) $metaType = 'int64';
+ if(stristr($type,'char')) {
$metaType = 'char';
$tmp_typeValue = explode('(',$type);
- $column["typeValue"] = substr($tmp_typeValue[1],0,-1);
+ $column['typeValue'] = substr($tmp_typeValue[1],0,-1);
}
- if(stristr($type,"varchar")) {
+ if(stristr($type,'varchar')) {
$metaType = 'varchar';
$tmp_typeValue = explode('(',$type);
- $column["typeValue"] = substr($tmp_typeValue[1],0,-1);
+ $column['typeValue'] = substr($tmp_typeValue[1],0,-1);
}
- if(stristr($type,"text")) $metaType = 'text';
- if(stristr($type,"double")) $metaType = 'double';
- if(stristr($type,"blob")) $metaType = 'blob';
+ if(stristr($type,'text')) $metaType = 'text';
+ if(stristr($type,'double')) $metaType = 'double';
+ if(stristr($type,'blob')) $metaType = 'blob';
- $column["type"] = $metaType;
+ $column['type'] = $metaType;
$columns[] = $column;
}
@@ -485,7 +596,7 @@
return 'char';
break;
case 'varchar':
- if($typeValue < 1) die("Datenbank Fehler: F�r diesen Datentyp ist eine L�ngenangabe notwendig.");
+ if($typeValue < 1) die('Database failure: Lenght required for these data types.');
return 'varchar('.$typeValue.')';
break;
case 'text':
@@ -499,4 +610,4 @@
}
-?>
\ No newline at end of file
+?>
--
Gitblit v1.9.1