From cabd6f6205756a51064fb856aca2ed94d28b1cf7 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Fri, 12 Sep 2008 11:31:19 -0400
Subject: [PATCH] Disabled suphp_UserGroup directive by default to make the setup compatible with the suphp compile options from most linux distributions. If you want some extra security, enable this directive again and recompile mod_suphp with the the option --with-setid-mode=paranoid

---
 interface/lib/classes/db_mysql.inc.php |  832 +++++++++++++++++++++++++++++++----------------------------
 1 files changed, 439 insertions(+), 393 deletions(-)

diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php
index 25ef131..eaa57b0 100644
--- a/interface/lib/classes/db_mysql.inc.php
+++ b/interface/lib/classes/db_mysql.inc.php
@@ -1,4 +1,12 @@
 <?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
 All rights reserved.
@@ -27,295 +35,395 @@
 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
-	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 $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 $currentRow;		// current row number
-		var $errorNumber = 0;	// last error number
-		var $errorMessage = "";	// last error message
-		var $errorLocation = "";// last error location
-		var $show_error_messages = false;
+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
+	public $show_error_messages = false;
 
-		// constructor
-		function db()
-		{
-			
-			global $conf;
-			$this->dbHost = $conf["db_host"];
-			$this->dbName = $conf["db_database"];
-			$this->dbUser = $conf["db_user"];
-			$this->dbPass = $conf["db_password"];
-			//$this->connect();
+	public function __construct()
+    {
+		global $conf;
+		$this->dbHost = $conf['db_host'];
+		$this->dbName = $conf['db_database'];
+		$this->dbUser = $conf['db_user'];
+		$this->dbPass = $conf['db_password'];
+		//$this->connect();
+	}
+
+	/**  Error handler */
+	public function updateError($location)
+    {
+		$this->errorNumber = mysql_errno();
+		$this->errorMessage = mysql_error();
+		$this->errorLocation = $location;
+		if($this->errorNumber && $this->show_error_messages){
+			echo('<br /><b>'.$this->errorLocation.'</b><br />'.$this->errorMessage);
+			flush();
 		}
+	}
 
-		// error handler
-		function updateError($location)
-		{
-			$this->errorNumber = mysql_errno();
-			$this->errorMessage = mysql_error();
-			$this->errorLocation = $location;
-			if($this->errorNumber && $this->show_error_messages)
-			{
-				echo('<br /><b>'.$this->errorLocation.'</b><br />'.$this->errorMessage);
-				flush();
-			}
-		}
-
-		function connect()
-		{
-			if($this->linkId == 0)
-			{
-				$this->linkId = mysql_connect($this->dbHost, $this->dbUser, $this->dbPass);
-				if(!$this->linkId)
-				{
-					$this->updateError('DB::connect()<br />mysql_connect');
-					return false;
-				}
-			}
-			return true;
-		}
-
-		function query($queryString)
-		{
-			if(!$this->connect())
-			{
+	public function connect()
+    {
+		if($this->linkId == 0){
+			$this->linkId = mysql_connect($this->dbHost, $this->dbUser, $this->dbPass);
+			if(!$this->linkId){
+				$this->updateError('DB::connect()<br />mysql_connect');
 				return false;
 			}
-			if(!mysql_select_db($this->dbName, $this->linkId))
-			{
-				$this->updateError('DB::connect()<br />mysql_select_db');
-				return false;
-			}
-			$this->queryId = @mysql_query($queryString, $this->linkId);
-			$this->updateError('DB::query('.$queryString.')<br />mysql_query');
-			if(!$this->queryId)
-			{
-				return false;
-			}
-			$this->currentRow = 0;
-			return $this->queryId;
 		}
+		return true;
+	}
 
-		// returns all records in an array
-		function queryAllRecords($queryString)
-		{
-			if(!$this->query($queryString))
-			{
-				return false;
-			}
-			$ret = array();
-			while($line = $this->nextRecord())
-			{
-				$ret[] = $line;
-			}
-			return $ret;
+	public function query($queryString)
+    {
+		if(!$this->connect()){
+			return false;
 		}
+		if(!mysql_select_db($this->dbName, $this->linkId)){
+			$this->updateError('DB::connect()<br />mysql_select_db');
+			return false;
+		}
+		$this->queryId = @mysql_query($queryString, $this->linkId);
+		$this->updateError('DB::query('.$queryString.')<br />mysql_query');
+		if(!$this->queryId){
+			return false;
+		}
+		$this->currentRow = 0;
+		return $this->queryId;
+	}
 
-		// returns one record in an array
-		function queryOneRecord($queryString)
-		{
-			if(!$this->query($queryString) || $this->numRows() == 0)
-			{
-				return false;
-			}
-			return $this->nextRecord();
+	/** Returns all records as an array */
+	public function queryAllRecords($queryString)
+    {
+		if(!$this->query($queryString)){
+			return false;
 		}
+		$ret = array();
+		while($line = $this->nextRecord()){
+			$ret[] = $line;
+		}
+		return $ret;
+	}
 
-		// returns the next record in an array
-		function nextRecord()
-		{
-            $this->record = mysql_fetch_assoc($this->queryId);
-			$this->updateError('DB::nextRecord()<br />mysql_fetch_array');
-			if(!$this->record || !is_array($this->record))
-			{
-				return false;
-			}
-			$this->currentRow++;
-			return $this->record;
+	/** Returns one row as an array */
+	public function queryOneRecord($queryString)
+    {
+		if(!$this->query($queryString) || $this->numRows() == 0){
+			return false;
 		}
+		return $this->nextRecord();
+	}
 
-		// returns number of rows returned by the last select query
-		function numRows()
-		{
-			return mysql_num_rows($this->queryId);
+	/** Returns the next record as an array */
+	public function nextRecord()
+    {
+        $this->record = mysql_fetch_assoc($this->queryId);
+		$this->updateError('DB::nextRecord()<br />mysql_fetch_array');
+		if(!$this->record || !is_array($this->record)){
+			return false;
 		}
+		$this->currentRow++;
+		return $this->record;
+	}
+
+	/** Returns the number of rows returned by the last select query */
+	public function numRows()
+    {
+		return mysql_num_rows($this->queryId);
+	}
+
+	public function affectedRows()
+    {
+		return mysql_affected_rows($this->linkId);
+	}
 		
-		function affectedRows()
-		{
-			return mysql_affected_rows($this->linkId);
-		}
-		
-		// returns mySQL insert id
-		function insertID()
-		{
-			return mysql_insert_id($this->linkId);
-		}
+	/** Returns the last mySQL insert_id() */
+	public function insertID()
+    {
+		return mysql_insert_id($this->linkId);
+	}
         
-        // Check der variablen
-		// deprecated, now use quote
-        function check($formfield)
-        {
-            return $this->quote($formfield);
-        }
+    /** Checks a variable - Depreciated, use quote() */
+    public function check($formfield)
+    {
+        return $this->quote($formfield);
+    }
 		
-		// Check der variablen
-        function quote($formfield)
-        {
-            return addslashes($formfield);
-        }
+	/** Escapes quotes in variable. addslashes() */
+    public function quote($formfield)
+    {
+        return addslashes($formfield);
+    }
 		
-		// Check der variablen
-        function unquote($formfield)
-        {
-            return stripslashes($formfield);
-        }
+	/** Unquotes a variable, strip_slashes() */
+    public function unquote($formfield)
+    {
+        return stripslashes($formfield);
+    }
 		
-		function toLower($record) {
-			if(is_array($record)) {
-				foreach($record as $key => $val) {
-					$key = strtolower($key);
-					$out[$key] = $val;
-				}
+	public function toLower($record)
+    {
+		if(is_array($record)){
+			foreach($record as $key => $val) {
+				$key = strtolower($key);
+				$out[$key] = $val;
 			}
-		return $out;
 		}
+	    return $out;
+	}
        
-       
-       function insert($tablename,$form,$debug = 0)
-       {
-         if(is_array($form)){
-	       foreach($form as $key => $value) 
-   		    {
-   		    $sql_key .= "$key, ";
-            $sql_value .= "'".$this->check($value)."', ";
-      		 }
-       	$sql_key = substr($sql_key,0,strlen($sql_key) - 2);
-        $sql_value = substr($sql_value,0,strlen($sql_value) - 2);
-        
-       	$sql = "INSERT INTO $tablename (" . $sql_key . ") VALUES (" . $sql_value .")";
-       
-      		 if($debug == 1) echo "SQL-Statement: ".$sql."<br><br>";
-      		 $this->query($sql);
-      		 if($debug == 1) echo "mySQL Error Message: ".$this->errorMessage;
-          }
-       }
-       
-       function update($tablename,$form,$bedingung,$debug = 0)
-       {
-       
-	     if(is_array($form)){
-           foreach($form as $key => $value) 
-   		    {
-   		    $insql .= "$key = '".$this->check($value)."', ";
-      		 }
-       	        $insql = substr($insql,0,strlen($insql) - 2);
-       	        $sql = "UPDATE $tablename SET " . $insql . " WHERE $bedingung";
-      		 if($debug == 1) echo "SQL-Statement: ".$sql."<br><br>";
-      		 $this->query($sql);
-      		 if($debug == 1) echo "mySQL Error Message: ".$this->errorMessage;
-           }
-       }
-       
-       function closeConn() {
-       
-       }
-       
-       function freeResult() {
-       
-       
-       }
-       
-       function delete() {
-       
-       }
-       
-       function Transaction($action) {
-       //action = begin, commit oder rollback
-       
-       }
-       
-       /*
-       $columns = array(action =>   add | alter | drop
-                        name =>     Spaltenname
-                        name_new => neuer Spaltenname, nur bei 'alter' belegt
-                        type =>     42go-Meta-Type: int16, int32, int64, double, char, varchar, text, blob
-                        typeValue => Wert z.B. bei Varchar
-                        defaultValue =>  Default Wert
-                        notNull =>   true | false
-                        autoInc =>   true | false
-                        option =>   unique | primary | index)
-       
-       
-       */
-       
-       function createTable($table_name,$columns) {
-       $index = "";
-       $sql = "CREATE TABLE $table_name (";
-       foreach($columns as $col){
-            $sql .= $col["name"]." ".$this->mapType($col["type"],$col["typeValue"])." ";
-       
-            if($col["defaultValue"] != "") {
-				if($col["defaultValue"] == "NULL" or $col["defaultValue"] == "NOT NULL") {
-					$sql .= "DEFAULT ".$col["defaultValue"]." ";
+    // deprecated
+	/*
+    public function insert($tablename, $form, $debug = 0)
+    {
+        if(is_array($form)){
+	        foreach($form as $key => $value){
+                $sql_key .= "$key, ";
+                $sql_value .= "'".$this->check($value)."', ";
+            }
+            $sql_key = substr($sql_key,0,strlen($sql_key) - 2);
+            $sql_value = substr($sql_value,0,strlen($sql_value) - 2);
+            $sql = "INSERT INTO $tablename (".$sql_key.') VALUES ('.$sql_value.')';
+            //TODO: where has $debug come from !???
+            if($debug == 1){ echo "SQL-Statement: $sql<br><br>"; }
+            $this->query($sql);
+            if($debug == 1){ echo 'mySQL Error Message: '.$this->errorMessage; }
+        }
+    }
+    
+	// Deprecated
+    public function update($tablename, $form, $bedingung, $debug = 0)
+    {
+	    if(is_array($form)){
+            foreach($form as $key => $value){
+                $insql .= "$key = '".$this->check($value)."', ";
+            }
+            $insql = substr($insql, 0, strlen($insql) - 2);
+            $sql = "UPDATE $tablename SET " . $insql . " WHERE $bedingung";
+            if($debug == 1){ echo "SQL-Statement: $sql<br><br>"; }
+            $this->query($sql);
+            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) {
+		global $app,$conf;
+
+		// Insert backticks only for incomplete table names.
+		if(stristr($db_table,'.')) {
+			$escape = '';
+		} else {
+			$escape = '`';
+		}
+
+		$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) {
+					// Record has changed
+					$diffrec_full['old'][$key] = $val;
+					$diffrec_full['new'][$key] = $record_new[$key];
+					$diff_num++;
 				} else {
-					$sql .= "DEFAULT '".$col["defaultValue"]."' ";
+					$diffrec_full['old'][$key] = $val;
+					$diffrec_full['new'][$key] = $val;
 				}
-				
-			} elseif($col["defaultValue"] != false) {
-				$sql .= "DEFAULT '' ";
 			}
-			if($col["defaultValue"] != "NULL" && $col["defaultValue"] != "NOT NULL") {
-            	if($col["notNull"] == true) {
-                	$sql .= "NOT NULL ";
-            	} else {
-                	$sql .= "NULL ";
-            	}
+		} 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;
+				}
 			}
-            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"]."),";
-       }
+		}
+		
+		// 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));
+			$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 true;
+	}
+	
+	//** 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)
+    	{
+    		mysql_close($this->linkId);
+    		return true;
+    	} else { return false; }
+    }
+       
+    public function freeResult($query) 
+    {
+    	if(mysql_free_result($query))
+    	{
+    		return true;
+    	} else {
+    		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>
+    * $columns = array(action =>   add | alter | drop
+    *                  name =>     Spaltenname
+    *                  name_new => neuer Spaltenname, nur bei 'alter' belegt
+    *                  type =>     42go-Meta-Type: int16, int32, int64, double, char, varchar, text, blob
+    *                  typeValue => Wert z.B. bei Varchar
+    *                  defaultValue =>  Default Wert
+    *                  notNull =>   true | false
+    *                  autoInc =>   true | false
+    *                  option =>   unique | primary | index)
+    * </code>   
+    */
+	
+	
+    public function createTable($table_name, $columns)
+    {
+        $index = '';
+        $sql = "CREATE TABLE $table_name (";
+        foreach($columns as $col){
+            $sql .= $col['name'].' '.$this->mapType($col['type'], $col['typeValue']).' ';
+            //* Set default value
+            if(isset($col['defaultValue']) && $col['defaultValue'] != '') {
+			    if($col['defaultValue'] == 'NULL' or $col['defaultValue'] == 'NOT NULL') {
+				    $sql .= 'DEFAULT '.$col['defaultValue'].' ';
+			    } else {
+				    $sql .= "DEFAULT '".$col['defaultValue']."' ";
+			    }
+		    } elseif($col['defaultValue'] != false) {
+			    $sql .= "DEFAULT '' ";
+		    }
+		    if(isset($col['defaultValue']) && $col['defaultValue'] != 'NULL' && $col['defaultValue'] != 'NOT NULL') {
+                if($col['notNull'] == true) {
+                    $sql .= 'NOT NULL ';
+                } else {
+                    $sql .= 'NULL ';
+                }
+		    }
+            if(isset($col['autoInc']) && $col['autoInc'] == true){ $sql .= 'auto_increment '; }
+            $sql.= ',';
+            //* Index Definitions
+            if(isset($col['option']) && $col['option'] == 'primary'){ $index .= 'PRIMARY KEY ('.$col['name'].'),'; }
+            if(isset($col['option']) && $col['option'] == 'index'){   $index .= 'INDEX ('.$col['name'].'),'; }
+            if(isset($col['option']) && $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
-                        name =>     Spaltenname
-                        name_new => neuer Spaltenname, nur bei 'alter' belegt
-                        type =>     42go-Meta-Type: int16, int32, int64, double, char, varchar, text, blob
-                        typeValue => Wert z.B. bei Varchar
-                        defaultValue =>  Default Wert
-                        notNull =>   true | false
-                        autoInc =>   true | false
-                        option =>   unique | primary | index)
-       
-       
-       */
-       function alterTable($table_name,$columns) {
-       $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"]." ";
+    /** Changes a table definition. The format for the $columns array is 
+    * <code>
+    * $columns = array(action =>   add | alter | drop
+    *                  name =>     Spaltenname
+    *                 name_new => neuer Spaltenname, nur bei 'alter' belegt
+    *                 type =>     42go-Meta-Type: int16, int32, int64, double, char, varchar, text, blob
+    *                 typeValue => Wert z.B. bei Varchar
+    *                 defaultValue =>  Default Wert
+    *                 notNull =>   true | false
+    *                 autoInc =>   true | false
+    *                 option =>   unique | primary | index)
+    */
+    public function alterTable($table_name,$columns)
+    {
+        $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"] != 'drop') {  
             if($col["defaultValue"] != "") $sql .= "DEFAULT '".$col["defaultValue"]."' ";
@@ -326,171 +434,109 @@
             }
             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"]."),";
+            //* 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;
-       $sql = substr($sql,0,-1);
+        }
+        $sql .= $index;
+        $sql = substr($sql,0,-1);
+        //die($sql);
+        $this->query($sql);
+        return true;
+    }
        
-       //die($sql);
-       $this->query($sql);
-       return true;
-       }
+    public function dropTable($table_name) 
+    {
+        $this->check($table_name);
+        $sql = "DROP TABLE '". $table_name."'";
+        return $this->query($sql);
+    }
        
-       function dropTable($table_name) {
-       $this->check($table_name);
-       $sql = "DROP TABLE '". $table_name."'";
-       return $this->query($sql);
-       }
-       
-       // gibt Array mit Tabellennamen zur�ck
-       function getTables($database_name = '') {
-	   	
-			if($database_name == '') $database_name = $this->dbName;
-            $result = mysql_list_tables($database_name);
-            for ($i = 0; $i < mysql_num_rows($result); $i++) {
-                $tb_names[$i] = mysql_tablename($result, $i);
-            }
-            return $tb_names;       
-       }
-       
-       // gibt Feldinformationen zur Tabelle zur�ck
-       /*
-       $columns = array(action =>   add | alter | drop
-                        name =>     Spaltenname
-                        name_new => neuer Spaltenname, nur bei 'alter' belegt
-                        type =>     42go-Meta-Type: int16, int32, int64, double, char, varchar, text, blob
-                        typeValue => Wert z.B. bei Varchar
-                        defaultValue =>  Default Wert
-                        notNull =>   true | false
-                        autoInc =>   true | false
-                        option =>   unique | primary | index)
+    /** Return an array of table names */
+    public function getTables($database_name = '')
+    {
+		if($database_name == ''){
+            $database_name = $this->dbName;
+        }
+        $result = @mysql_list_tables($database_name);
+        $tb_names = array();
+        for ($i = 0; $i < @mysql_num_rows($result); $i++) {
+            $tb_names[$i] = @mysql_tablename($result, $i);
+        }
+        return $tb_names;       
+    }
        
        
-       */
-       
-       function tableInfo($table_name) {
-       
-       global $go_api,$go_info;
-       // Tabellenfelder einlesen
-        
-        if($rows = $go_api->db->queryAllRecords("SHOW FIELDS FROM ".$table_name)){
+    public function tableInfo($table_name) {
+        global $go_api,$go_info;
+        //* Tabellenfelder einlesen ?
+        if($rows = $go_api->db->queryAllRecords("SHOW FIELDS FROM $table_name")){
         foreach($rows as $row) {
-            $name = $row[0];
+            $name    = $row[0];
             $default = $row[4];
-            $key = $row[3];
-            $extra = $row[5];
-            $isnull = $row[2];
-            $type = $row[1];
+            $key     = $row[3];
+            $extra   = $row[5];
+            $isnull  = $row[2];
+            $type    = $row[1];
         
-            
-            $column = array();
-        
-            $column["name"] = $name;
+            $column = array('name' => $name, 'defaultValue' => $default);
             //$column["type"] = $type;
-            $column["defaultValue"] = $default;
-            if(stristr($key,"PRI")) $column["option"] = "primary";
-            if(stristr($isnull,"YES")) {
-                $column["notNull"] = false;
-            } else {
-               $column["notNull"] = true; 
-            }
-            if($extra == 'auto_increment') $column["autoInc"] = true;
+            if(stristr($key, 'PRI')){ $column['option'] = 'primary'; }
+            $column['notNull'] = stristr($isnull,'YES') ? false : 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")) {
+            //* Get the Data and Metatype
+            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;
-            
-        $columns[] = $column;
+            $column['type'] = $metaType;
+            $columns[] = $column;
         }
             return $columns;
         } else {
             return false;
         }
-        
-        
-        //$this->createTable('tester',$columns);
-        
-        /*
-        $result = mysql_list_fields($go_info["server"]["db_name"],$table_name);
-        $fields = mysql_num_fields ($result);
-        $i = 0;
-        $table = mysql_field_table ($result, $i);
-        while ($i < $fields) {
-            $name  = mysql_field_name  ($result, $i);
-            $type  = mysql_field_type  ($result, $i);
-            $len   = mysql_field_len   ($result, $i);
-            $flags = mysql_field_flags ($result, $i);
-            print_r($flags);
-            
-            $columns = array(name => $name,
-                        type =>     "",
-                        defaultValue =>  "",
-                        isnull =>   1,
-                        option =>   "");
-            $returnvar[] = $columns;
-            
-            $i++;
-        }
-        */
-        
-        
+    }
        
-       }
-       
-       function mapType($metaType,$typeValue) {
-       global $go_api;
-       $metaType = strtolower($metaType);
-       switch ($metaType) {
-       case 'int16':
+    public function mapType($metaType, $typeValue) {
+        //TODO: ? this is not required ?? global $go_api;
+        $metaType = strtolower($metaType);
+        switch ($metaType) {
+        case 'int16':
             return 'smallint';
-       break;
-       case 'int32':
+        case 'int32':
             return 'int';
-       break;
-       case 'int64':
+        case 'int64':
             return 'bigint';
-       break;
-       case 'double':
+        case 'double':
             return 'double';
-       break;
-       case 'char':
+        case 'char':
             return 'char';
-       break;
-       case 'varchar':
-            if($typeValue < 1) die("Datenbank Fehler: F�r diesen Datentyp ist eine L�ngenangabe notwendig.");
+        case 'varchar':
+            if($typeValue < 1) die('Datenbank Fehler: F�r diesen Datentyp ist eine L�ngenangabe notwendig.');
             return 'varchar('.$typeValue.')';
-       break;
-       case 'text':
+        case 'text':
             return 'text';
-       break;
-       case 'blob':
+        case 'blob':
             return 'blob';
-       break;
-       }
-       }
-		
-	}
+        }
+    }
+	
+}
 
 ?>
\ No newline at end of file

--
Gitblit v1.9.1