Selaa lähdekoodia

Command: Database class integration.

Nate 6 vuotta sitten
vanhempi
commit
f5605a0fee
5 muutettua tiedostoa jossa 136 lisäystä ja 154 poistoa
  1. 24 22
      exec.php
  2. 36 64
      sql_backup.php
  3. 13 20
      sql_query_db.php
  4. 7 7
      sql_query_pdo.php
  5. 56 41
      sql_query_result.php

+ 24 - 22
exec.php

@@ -259,13 +259,15 @@
 			case 'pgsql': $sql = "select table_name as name from information_schema.tables where table_schema='public' and table_type='BASE TABLE' order by table_name"; break;
 			case 'mysql': $sql = "show tables"; break;
 		}
-		$prep_statement = $db->prepare(check_sql($sql));
-		$prep_statement->execute();
-		$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
-		foreach ($result as &$row) {
-			$row = array_values($row);
-			echo "					<option value='".escape($row[0])."'>".escape($row[0])."</option>\n";
+		$database = new database;
+		$result = $database->select($sql, null, 'all');
+		if (is_array($result) && @sizeof($result) != 0) {
+			foreach ($result as &$row) {
+				$row = array_values($row);
+				echo "					<option value='".escape($row[0])."'>".escape($row[0])."</option>\n";
+			}
 		}
+		unset($sql, $result, $row);
 		echo "					</select>\n";
 		//echo "					<br /><br />\n";
 		//echo "					".$text['label-result_type']."<br />";
@@ -366,21 +368,21 @@
 			<td valign='middle' style='padding-left: 4px; padding-right: 0px;'>
 				<select id='theme' style='height: 23px;' onchange="editor.setTheme('ace/theme/' + this.options[this.selectedIndex].value); focus_editor();">
 					<?php
-					$themes['Bright']['chrome']= 'Chrome';
-					$themes['Bright']['clouds']= 'Clouds';
-					$themes['Bright']['crimson_editor']= 'Crimson Editor';
-					$themes['Bright']['dawn']= 'Dawn';
-					$themes['Bright']['dreamweaver']= 'Dreamweaver';
-					$themes['Bright']['eclipse']= 'Eclipse';
-					$themes['Bright']['github']= 'GitHub';
-					$themes['Bright']['iplastic']= 'IPlastic';
-					$themes['Bright']['solarized_light']= 'Solarized Light';
-					$themes['Bright']['textmate']= 'TextMate';
-					$themes['Bright']['tomorrow']= 'Tomorrow';
-					$themes['Bright']['xcode']= 'XCode';
-					$themes['Bright']['kuroir']= 'Kuroir';
-					$themes['Bright']['katzenmilch']= 'KatzenMilch';
-					$themes['Bright']['sqlserver']= 'SQL Server';
+					$themes['Light']['chrome']= 'Chrome';
+					$themes['Light']['clouds']= 'Clouds';
+					$themes['Light']['crimson_editor']= 'Crimson Editor';
+					$themes['Light']['dawn']= 'Dawn';
+					$themes['Light']['dreamweaver']= 'Dreamweaver';
+					$themes['Light']['eclipse']= 'Eclipse';
+					$themes['Light']['github']= 'GitHub';
+					$themes['Light']['iplastic']= 'IPlastic';
+					$themes['Light']['solarized_light']= 'Solarized Light';
+					$themes['Light']['textmate']= 'TextMate';
+					$themes['Light']['tomorrow']= 'Tomorrow';
+					$themes['Light']['xcode']= 'XCode';
+					$themes['Light']['kuroir']= 'Kuroir';
+					$themes['Light']['katzenmilch']= 'KatzenMilch';
+					$themes['Light']['sqlserver']= 'SQL Server';
 					$themes['Dark']['ambiance']= 'Ambiance';
 					$themes['Dark']['chaos']= 'Chaos';
 					$themes['Dark']['clouds_midnight']= 'Clouds Midnight';
@@ -416,7 +418,7 @@
 	</table>
 	<div id='editor'><?php echo escape($command); ?></div>
 
-<?php
+	<?php
 	echo "		</td>";
 	echo "	</tr>\n";
 	echo "</table>";

+ 36 - 64
sql_backup.php

@@ -90,8 +90,8 @@
 
 //get the list of tables
 	if ($db_type == "sqlite") {
-		$sql = "SELECT name FROM sqlite_master ";
-		$sql .= "WHERE type='table' ";
+		$sql = "select name from sqlite_master ";
+		$sql .= "where type='table' ";
 		$sql .= "order by name;";
 	}
 	if ($db_type == "pgsql") {
@@ -104,78 +104,50 @@
 	if ($db_type == "mysql") {
 		$sql = "show tables";
 	}
-	$prep_statement = $db->prepare(check_sql($sql));
-	$prep_statement->execute();
-	$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
-	foreach ($result as &$row) {
-		$row = array_values($row);
-		$table_name = $row[0];
-
-		//get the table data
-			$sql = "select * from $table_name";
-			if (strlen($sql) > 0) {
-				$prep_statement_2 = $db->prepare(check_sql($sql));
-				if ($prep_statement_2) {
-					$prep_statement_2->execute();
-					$result2 = $prep_statement_2->fetchAll(PDO::FETCH_ASSOC);
-				}
-				else {
-					echo "<b>".$text['label-error'].":</b>\n";
-					echo "<pre>\n";
-					print_r($db->errorInfo());
-					echo "</pre>\n";
-				}
-
-				$x = 0;
-				foreach ($result2[0] as $key => $value) {
-					if ($row[$column] != "db") {
+	$database = new database;
+	$result_1 = $database->select($sql, null, 'all');
+	unset($sql);
+
+	if (is_array($result_1) && @sizeof($result_1) != 0) {
+		foreach ($result_1 as &$row_1) {
+			$row_1 = array_values($row_1);
+			$table_name = $row_1[0];
+
+			//get the table data
+				$sql = "select * from ".$table_name;
+				$database = new database;
+				$result_2 = $database->select($sql, null, 'all');
+				unset($sql);
+
+				foreach ($result_2[0] as $key => $value) {
+					if ($row_1[$column] != "db") {
 						if (field_exists($apps, $table_name, $key)) {
-							$column_array[$x] = $key;
+							$column_array[] = $key;
 						}
-						$x++;
 					}
 				}
 
 				$column_array_count = count($column_array);
 
-				foreach ($result2 as &$row) {
-					$sql = "INSERT INTO $table_name (";
-					$x = 1;
+				foreach ($result_2 as &$row_2) {
 					foreach ($column_array as $column) {
-						if ($x < $column_array_count) {
-							if (strlen($row[$column]) > 0) {
-								$sql .= ''.$column.',';
-							}
-						}
-						else {
-							if (strlen($row[$column]) > 0) {
-								$sql .= ''.$column.'';
-							}
-						}
-						$x++;
+						$columns[] = $column;
+						$values[] = $row_2[$column] != '' ? "'".check_str($row_2[$column])."'" : 'null';
 					}
-					$sql .= ") ";
-					$sql .= "VALUES( ";
-					$x = 1;
-					foreach ($column_array as $column) {
-						if ($x < $column_array_count) {
-							if (strlen($row[$column])> 0) {
-								$sql .= "'".check_str($row[$column])."',";
-							}
-						}
-						else {
-							if (strlen($row[$column])> 0) {
-								$sql .= "'".check_str($row[$column])."'";
-							}
-						}
-						$x++;
-					}
-					$sql .= ");\n";
-					echo str_replace(",)", ")", $sql);
+					$sql = "insert into ".$table_name." (";
+					$sql .= implode(', ', $columns);
+					$sql .= ") values ( ";
+					$sql .= implode(', ', $values);
+					$sql .= ");";
+					echo $sql."\n";
+
+					unset($columns, $values);
 				}
-			}
+				unset($result_2, $row_2);
 
-		unset($column_array);
+			unset($column_array);
+		}
 	}
+	unset($result_1, $row_1);
 
-?>
+?>

+ 13 - 20
sql_query_db.php

@@ -73,14 +73,9 @@
 	echo "</table>\n";
 
 	//prepare to page the results
-		$sql = "select count(*) as num_rows from v_databases ";
-		if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; }
-		$prep_statement = $db->prepare($sql);
-		if ($prep_statement) {
-		$prep_statement->execute();
-			$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
-			$num_rows = ($row['num_rows'] > 0) ? $row['num_rows'] : '0';
-		}
+		$sql = "select count(*) from v_databases ";
+		$database = new database;
+		$num_rows = $database->select($sql, null, 'column');
 
 	//prepare to page the results
 		$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
@@ -91,14 +86,12 @@
 		$offset = $rows_per_page * $page;
 
 	//get the  list
-		$sql = "select * from v_databases ";
-		if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; }
-		$sql .= "limit $rows_per_page offset $offset ";
-		$prep_statement = $db->prepare(check_sql($sql));
-		$prep_statement->execute();
-		$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
-		$result_count = count($result);
-		unset ($prep_statement, $sql);
+		$sql = str_replace('count(*)', '*', $sql);
+		$sql .= order_by($order_by, $order);
+		$sql .= limit_offset($rows_per_page, $offset);
+		$database = new database;
+		$result = $database->select($sql, null, 'all');
+		unset($sql);
 
 	$c = 0;
 	$row_style["0"] = "row_style0";
@@ -113,7 +106,7 @@
 	echo "<td class='list_control_icons' style='width: 25px;'>&nbsp;</td>\n";
 	echo "<tr>\n";
 
-	if (is_array($result)) {
+	if (is_array($result) && @sizeof($result) != 0) {
 		foreach($result as $row) {
 			$tr_link = "href='exec.php?id=".escape($row['database_uuid'])."'";
 			echo "<tr ".$tr_link.">\n";
@@ -126,9 +119,9 @@
 			echo "	</td>\n";
 			echo "</tr>\n";
 			$c = ($c == 0) ? 1 : 0;
-		} //end foreach
-		unset($sql, $result, $row_count);
-	} //end if results
+		}
+	}
+	unset($result, $row);
 
 	echo "</table>";
 	echo "<br><br>";

+ 7 - 7
sql_query_pdo.php

@@ -45,13 +45,13 @@
 	}
 
 //get the db connection information
-	if (strlen($_REQUEST['id']) > 0) {
+	if (is_uuid($_REQUEST['id'])) {
 		$sql = "select * from v_databases ";
-		$sql .= "where database_uuid = '".$_REQUEST['id']."' ";
-		$prep_statement = $db->prepare($sql);
-		$prep_statement->execute();
-		$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
-		foreach ($result as &$row) {
+		$sql .= "where database_uuid = :database_uuid ";
+		$parameters['database_uuid'] = $_REQUEST['id'];
+		$database = new database;
+		$row = $database->select($sql, $parameters, 'row');
+		if (is_array($row) && @sizeof($row) != 0) {
 			$db_type = $row["database_type"];
 			$db_host = $row["database_host"];
 			$db_port = $row["database_port"];
@@ -59,8 +59,8 @@
 			$db_username = $row["database_username"];
 			$db_password = $row["database_password"];
 			$db_path = $row["database_path"];
-			break;
 		}
+		unset($sql, $parameters, $row);
 	}
 
 //unset the database connection

+ 56 - 41
sql_query_result.php

@@ -114,7 +114,6 @@
 		$header .= "	text-align: left;\n";
 		$header .= "	vertical-align: top;\n";
 		$header .= "}\n";
-		$header .= "\n";
 		$header .= "</style>";
 		$header .= "</head>\n";
 		$header .= "<body style='margin: 0; padding: 8;'>\n";
@@ -141,46 +140,56 @@
 	
 				if (sizeof($sql_array) > 1 || $show_query) {
 					if ($sql_index > 0) { echo "<br /><br /><br />"; }
-					echo "<span style='display: block; padding: 8px; color: green; background-color: #eefff0;'>".escape($sql).";</span><br />";
+					echo "<span style='display: block; font-family: monospace; padding: 8px; color: green; background-color: #eefff0;'>".escape($sql).";</span><br />";
 				}
-	
-				$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
-				try {
-					$prep_statement = $db->prepare(check_sql($sql));
-					$prep_statement->execute();
-					$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
+
+				$database = new database;
+				$result = $database->execute($sql, null, 'all');
+				$message = $database->message;
+
+				if ($message['message'] == 'OK' && $message['code'] == 200) {
 					echo "<b>".$text['label-records'].": ".count($result)."</b>";
 					echo "<br /><br />\n";
 				}
-				catch(PDOException $e) {
+				else {
 					echo "<b>".$text['label-error']."</b>";
 					echo "<br /><br />\n";
-					echo $e->getMessage();
-					echo "<br /><br />\n";
+					echo $message['message'].' ['.$message['code']."]<br />\n";
+					if (is_array($message['error']) && @sizeof($message['error']) != 0) {
+						foreach ($message['error'] as $error) {
+							echo "<pre>".$error."</pre><br /><br />\n";
+						}
+					}
 					exit;
 				}
-	
+
 				echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
 				$x = 0;
 				if (is_array($result[0])) {
+					echo "<thead>\n";
+					echo "	<tr>\n";
 					foreach ($result[0] as $key => $value) {
-						echo "<th>".escape($key)."</th>";
+						echo "<th>".escape($key)."</th>\n";
 						$column_array[$x++] = $key;
 					}
+					echo "	</tr>\n";
+					echo "</thead>\n";
 				}
 				$x = 1;
 				if (is_array($result)) {
+					echo "<tbody>\n";
 					foreach ($result as &$row) {
 						if ($x++ > 1000) { break; }
 						echo "<tr>\n";
 						if (is_array($column_array)) {
 							foreach ($column_array as $column_index => $column) {
-								echo "<td class='".$row_style[$c]."' ".(($column_index == 0) ? "style='border-left: none;'" : null).">".escape($row[$column])."&nbsp;</td>";
+								echo "<td class='".$row_style[$c]."' ".(($column_index == 0) ? "style='border-left: none;'" : null).">".escape($row[$column])."&nbsp;</td>\n";
 							}
 						}
 						echo "</tr>\n";
 						$c = ($c == 0) ? 1 : 0;
 					}
+					echo "</tbody>\n";
 				}
 				echo "</table>\n";
 				echo "<br>\n";
@@ -199,19 +208,22 @@
 				$sql = (strlen($sql_cmd) == 0) ? "select * from ".$table_name : $sql_cmd;
 	
 				if (strlen($sql) > 0) {
-					$prep_statement = $db->prepare(check_sql($sql));
-					if ($prep_statement) {
-						$prep_statement->execute();
-						$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
-					}
-					else {
-						echo "<b>".$text['label-error']."</b>\n";
-						echo "<br /><br />\n";
-						echo "<pre>".print_r($db->errorInfo(), true)."</pre>\n";
+					$database = new database;
+					$result = $database->execute($sql);
+					$message = $database->message;
+
+					if ($message['message'] != 'OK' || $message['code'] != 200) {
+						echo "<b>".$text['label-error']."</b>";
 						echo "<br /><br />\n";
+						echo $message['message'].' ['.$message['code']."]<br />\n";
+						if (is_array($message['error']) && @sizeof($message['error']) != 0) {
+							foreach ($message['error'] as $error) {
+								echo "<pre>".$error."</pre><br /><br />\n";
+							}
+						}
 						exit;
 					}
-	
+
 					$x = 0;
 					if (is_array($result[0])) {
 						foreach ($result[0] as $key => $value) {
@@ -220,36 +232,36 @@
 					}
 	
 					$column_array_count = count($column_array);
-					if (is_array($result)) foreach ($result as &$row) {
+					if (is_array($result)) foreach ($result as $index => &$row) {
+
+						echo "<div style='font-family: monospace; border-bottom: 1px solid #ccc; padding-bottom: 8px; ".($index != 0 ? 'padding-top: 8px;' : null)."'>\n";
 						echo "insert into ".$table_name." (";
-						$x = 1;
 						if (is_array($column_array)) {
 							foreach ($column_array as $column) {
 								if ($column != "menuid" && $column != "menuparentid") {
 									$columns[] = $column;
 								}
-								$x++;
 							}
 						}
 						if (is_array($columns) && sizeof($columns) > 0) {
 							echo implode(', ', $columns);
 						}
 						echo ") values (";
-						$x = 1;
 						if (is_array($column_array)) {
 							foreach ($column_array as $column) {
 								if ($column != "menuid" && $column != "menuparentid") {
-									$values[] = ($row[$column] != '') ? "'".check_str($row[$column])."'" : 'null';
+									$values[] = $row[$column] != '' ? "'".escape($row[$column])."'" : 'null';
 								}
-								$x++;
 							}
 						}
 						if (is_array($values) && sizeof($values) > 0) {
-							echo implode(', ', escape($values));
+							echo implode(', ', $values);
 						}
-						echo ");<br />\n";
+						echo ");\n";
+						echo "</div>\n";
 						unset($columns, $values);
 					}
+
 				}
 			echo $footer;
 		}
@@ -273,16 +285,19 @@
 					$sql = "select * from ".$table_name;
 				}
 				if (strlen($sql) > 0) {
-					$prep_statement = $db->prepare(check_sql($sql));
-					if ($prep_statement) {
-						$prep_statement->execute();
-						$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
-					}
-					else {
-						echo "<b>".$text['label-error']."</b>\n";
-						echo "<br /><br />\n";
-						echo "<pre>".print_r($db->errorInfo(), true)."</pre>\n";
+					$database = new database;
+					$result = $database->execute($sql);
+					$message = $database->message;
+
+					if ($message['message'] != 'OK' || $message['code'] != 200) {
+						echo "<b>".$text['label-error']."</b>";
 						echo "<br /><br />\n";
+						echo $message['message'].' ['.$message['code']."]<br />\n";
+						if (is_array($message['error']) && @sizeof($message['error']) != 0) {
+							foreach ($message['error'] as $error) {
+								echo "<pre>".$error."</pre><br /><br />\n";
+							}
+						}
 						exit;
 					}