Browse Source

Efficiency enhancement for upgrade and upgrade_schema by running global tasks one time rather than for each domain.

Mark Crane 13 years ago
parent
commit
cb2a750efe

+ 119 - 117
core/databases/app_defaults.php

@@ -24,129 +24,131 @@
 	Mark J Crane <[email protected]>
 */
 
-//set the database driver
-	$sql = "select * from v_databases ";
-	$sql .= "where database_driver is null ";
-	$prep_statement = $db->prepare(check_sql($sql));
-	$prep_statement->execute();
-	$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
-	foreach ($result as &$row) {
-		$database_uuid = $row["database_uuid"];
-		$database_type = $row["database_type"];
-		$database_type_array = explode(":",  $database_type);
-		if ($database_type_array[0] == "odbc") {
-			$database_driver = $database_type_array[1];
-		}
-		else {
-			$database_driver = $database_type_array[0];
+//proccess this only one time
+if ($domains_processed == 1) {
+	//set the database driver
+		$sql = "select * from v_databases ";
+		$sql .= "where database_driver is null ";
+		$prep_statement = $db->prepare(check_sql($sql));
+		$prep_statement->execute();
+		$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
+		foreach ($result as &$row) {
+			$database_uuid = $row["database_uuid"];
+			$database_type = $row["database_type"];
+			$database_type_array = explode(":",  $database_type);
+			if ($database_type_array[0] == "odbc") {
+				$database_driver = $database_type_array[1];
+			}
+			else {
+				$database_driver = $database_type_array[0];
+			}
+			$sql = "update v_databases set ";
+			$sql .= "database_driver = '$database_driver' ";
+			$sql .= "where database_uuid = '$database_uuid' ";
+			$db->exec(check_sql($sql));
+			unset($sql);
 		}
-		$sql = "update v_databases set ";
-		$sql .= "database_driver = '$database_driver' ";
-		$sql .= "where database_uuid = '$database_uuid' ";
-		$db->exec(check_sql($sql));
-		unset($sql);
-	}
-
-if (strlen($_SESSION['switch']['scripts']['dir']) > 0) {
 
-	//get the odbc information
-		$sql = "select count(*) as num_rows from v_databases ";
-		$sql .= "where database_driver = 'odbc' ";
-		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);
-			if ($row['num_rows'] > 0) {
-				$odbc_num_rows = $row['num_rows'];
-
-				$sql = "select * from v_databases ";
-				$sql .= "where database_driver = 'odbc' ";
-				$prep_statement = $db->prepare(check_sql($sql));
+	if (strlen($_SESSION['switch']['scripts']['dir']) > 0) {
+		//get the odbc information
+			$sql = "select count(*) as num_rows from v_databases ";
+			$sql .= "where database_driver = 'odbc' ";
+			if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; }
+			$prep_statement = $db->prepare($sql);
+			if ($prep_statement) {
 				$prep_statement->execute();
-				$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
-				foreach ($result as &$row) {
-					$dsn_name = $row["database_name"];
-					$dsn_username = $row["database_username"];
-					$dsn_password = $row["database_password"];
-					break; //limit to 1 row
+				$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
+				if ($row['num_rows'] > 0) {
+					$odbc_num_rows = $row['num_rows'];
+
+					$sql = "select * from v_databases ";
+					$sql .= "where database_driver = 'odbc' ";
+					$prep_statement = $db->prepare(check_sql($sql));
+					$prep_statement->execute();
+					$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
+					foreach ($result as &$row) {
+						$dsn_name = $row["database_name"];
+						$dsn_username = $row["database_username"];
+						$dsn_password = $row["database_password"];
+						break; //limit to 1 row
+					}
+					unset ($prep_statement);
+				}
+				else {
+					$odbc_num_rows = '0';
 				}
-				unset ($prep_statement);
-			}
-			else {
-				$odbc_num_rows = '0';
 			}
-		}
 
-	//config.lua
-		$fout = fopen($_SESSION['switch']['scripts']['dir']."/resources/config.lua","w");
-		$tmp = "\n";
-		$tmp .= "--switch directories\n";
-		if (strlen($_SESSION['switch']['sounds']['dir']) > 0) {
-			$tmp .= "	sounds_dir = \"".$_SESSION['switch']['sounds']['dir']."\";\n";
-		}
-		if (strlen($_SESSION['switch']['recordings']['dir']) > 0) {
-			$tmp .= "	recordings_dir = \"".$_SESSION['switch']['recordings']['dir']."\";\n";
-		}
-		$tmp .= "\n";
-		$tmp .= "--database connection info\n";
-		if (strlen($db_type) > 0) {
-			$tmp .= "	db_type = \"".$db_type."\";\n";
-		}
-		if (strlen($db_name) > 0) {
-			$tmp .= "	db_name = \"".$db_name."\";\n";
-		}
-		if (strlen($db_path) > 0) {
-			$tmp .= "	db_path = \"".$db_path."\";\n";
-		}
-		if (strlen($dsn_name) > 0) {
-			$tmp .= "	dsn_name = \"".$dsn_name."\";\n";
-		}
-		if (strlen($dsn_username) > 0) {
-			$tmp .= "	dsn_username = \"".$dsn_username."\";\n";
-		}
-		if (strlen($dsn_password) > 0) {
-			$tmp .= "	dsn_password = \"".$dsn_password."\";\n";
-		}
-		$tmp .= "\n";
-		$tmp .= "--additional info\n";
-		$tmp .= "	tmp_dir = \"".$tmp_dir."\";\n";
-		fwrite($fout, $tmp);
-		unset($tmp);
-		fclose($fout);
+		//config.lua
+			$fout = fopen($_SESSION['switch']['scripts']['dir']."/resources/config.lua","w");
+			$tmp = "\n";
+			$tmp .= "--switch directories\n";
+			if (strlen($_SESSION['switch']['sounds']['dir']) > 0) {
+				$tmp .= "	sounds_dir = \"".$_SESSION['switch']['sounds']['dir']."\";\n";
+			}
+			if (strlen($_SESSION['switch']['recordings']['dir']) > 0) {
+				$tmp .= "	recordings_dir = \"".$_SESSION['switch']['recordings']['dir']."\";\n";
+			}
+			$tmp .= "\n";
+			$tmp .= "--database connection info\n";
+			if (strlen($db_type) > 0) {
+				$tmp .= "	db_type = \"".$db_type."\";\n";
+			}
+			if (strlen($db_name) > 0) {
+				$tmp .= "	db_name = \"".$db_name."\";\n";
+			}
+			if (strlen($db_path) > 0) {
+				$tmp .= "	db_path = \"".$db_path."\";\n";
+			}
+			if (strlen($dsn_name) > 0) {
+				$tmp .= "	dsn_name = \"".$dsn_name."\";\n";
+			}
+			if (strlen($dsn_username) > 0) {
+				$tmp .= "	dsn_username = \"".$dsn_username."\";\n";
+			}
+			if (strlen($dsn_password) > 0) {
+				$tmp .= "	dsn_password = \"".$dsn_password."\";\n";
+			}
+			$tmp .= "\n";
+			$tmp .= "--additional info\n";
+			$tmp .= "	tmp_dir = \"".$tmp_dir."\";\n";
+			fwrite($fout, $tmp);
+			unset($tmp);
+			fclose($fout);
 
-	//config.js
-		$fout = fopen($_SESSION['switch']['scripts']['dir']."/resources/config.js","w");
-		$tmp = "\n";
-		$tmp .= "//switch directories\n";
-		$tmp .= "	var admin_pin = \"".$row["admin_pin"]."\";\n";
-		$tmp .= "	var sounds_dir = \"".$_SESSION['switch']['sounds']['dir']."\";\n";
-		$tmp .= "	var recordings_dir = \"".$_SESSION['switch']['recordings']['dir']."\";\n";
-		$tmp .= "\n";
-		$tmp = "//database connection info\n";
-		if (strlen($db_type) > 0) {
-			$tmp .= "	var db_type = \"".$db_type."\";\n";
-		}
-		if (strlen($db_name) > 0) {
-			$tmp .= "	var db_name = \"".$db_name."\";\n";
-		}
-		if (strlen($db_path) > 0) {
-			$tmp .= "	var db_path = \"".$db_path."\";\n";
-		}
-		if (strlen($dsn_name) > 0) {
-			$tmp .= "	var dsn_name = \"".$dsn_name."\";\n";
-		}
-		if (strlen($dsn_username) > 0) {
-			$tmp .= "	var dsn_username = \"".$dsn_username."\";\n";
-		}
-		if (strlen($dsn_password) > 0) {
-			$tmp .= "	var dsn_password = \"".$dsn_password."\";\n";
-		}
-		$tmp .= "\n";
-		$tmp .= "//additional info\n";
-		$tmp .= "	var tmp_dir = \"".$tmp_dir."\";\n";
-		fwrite($fout, $tmp);
-		unset($tmp);
-		fclose($fout);
+		//config.js
+			$fout = fopen($_SESSION['switch']['scripts']['dir']."/resources/config.js","w");
+			$tmp = "\n";
+			$tmp .= "//switch directories\n";
+			$tmp .= "	var admin_pin = \"".$row["admin_pin"]."\";\n";
+			$tmp .= "	var sounds_dir = \"".$_SESSION['switch']['sounds']['dir']."\";\n";
+			$tmp .= "	var recordings_dir = \"".$_SESSION['switch']['recordings']['dir']."\";\n";
+			$tmp .= "\n";
+			$tmp = "//database connection info\n";
+			if (strlen($db_type) > 0) {
+				$tmp .= "	var db_type = \"".$db_type."\";\n";
+			}
+			if (strlen($db_name) > 0) {
+				$tmp .= "	var db_name = \"".$db_name."\";\n";
+			}
+			if (strlen($db_path) > 0) {
+				$tmp .= "	var db_path = \"".$db_path."\";\n";
+			}
+			if (strlen($dsn_name) > 0) {
+				$tmp .= "	var dsn_name = \"".$dsn_name."\";\n";
+			}
+			if (strlen($dsn_username) > 0) {
+				$tmp .= "	var dsn_username = \"".$dsn_username."\";\n";
+			}
+			if (strlen($dsn_password) > 0) {
+				$tmp .= "	var dsn_password = \"".$dsn_password."\";\n";
+			}
+			$tmp .= "\n";
+			$tmp .= "//additional info\n";
+			$tmp .= "	var tmp_dir = \"".$tmp_dir."\";\n";
+			fwrite($fout, $tmp);
+			unset($tmp);
+			fclose($fout);
+	}
 }
 ?>

+ 1 - 0
core/databases/database_edit.php

@@ -163,6 +163,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
 				unset($sql);
 
 			//set the defaults
+				$domains_processed = 1;
 				require_once "app_defaults.php";
 
 			//redirect the browser

+ 0 - 1
core/default_settings/app_defaults.php

@@ -25,5 +25,4 @@
 */
 
 
-
 ?>

+ 84 - 81
core/menu/app_defaults.php

@@ -25,94 +25,97 @@
 */
 
 //if there are no items in the menu then add the default menu
-	$sql = "SELECT count(*) as count FROM v_menus ";
-	$prep_statement = $db->prepare(check_sql($sql));
-	$prep_statement->execute();
-	$sub_result = $prep_statement->fetch(PDO::FETCH_ASSOC);
-	unset ($prep_statement);
-	if ($sub_result['count'] > 0) {
-		if ($display_type == "text") {
-			echo "	Menu:			no change\n";
-		}
-	}
-	else {
-		//create the uuid
-			$menu_uuid = 'b4750c3f-2a86-b00d-b7d0-345c14eca286';
-		//set the defaults
-			$menu_name = 'default';
-			$menu_language = 'en';
-			$menu_description = '';
-		//add the menu
-			$sql = "insert into v_menus ";
-			$sql .= "(";
-			$sql .= "menu_uuid, ";
-			$sql .= "menu_name, ";
-			$sql .= "menu_language, ";
-			$sql .= "menu_description ";
-			$sql .= ")";
-			$sql .= "values ";
-			$sql .= "(";
-			$sql .= "'".$menu_uuid."', ";
-			$sql .= "'$menu_name', ";
-			$sql .= "'$menu_language', ";
-			$sql .= "'$menu_description' ";
-			$sql .= ")";
-			$db->exec(check_sql($sql));
-			unset($sql);
-		//add the menu items
-			require_once "includes/classes/menu.php";
-			$menu = new menu;
-			$menu->db = $db;
-			$menu->menu_uuid = $menu_uuid;
-			$menu->restore();
-			unset($menu);
+	if ($domains_processed == 1) {
+		$sql = "SELECT count(*) as count FROM v_menus ";
+		$prep_statement = $db->prepare(check_sql($sql));
+		$prep_statement->execute();
+		$sub_result = $prep_statement->fetch(PDO::FETCH_ASSOC);
+		unset ($prep_statement);
+		if ($sub_result['count'] > 0) {
 			if ($display_type == "text") {
-				echo "	Menu:			added\n";
+				echo "	Menu:			no change\n";
 			}
+		}
+		else {
+			//create the uuid
+				$menu_uuid = 'b4750c3f-2a86-b00d-b7d0-345c14eca286';
+			//set the defaults
+				$menu_name = 'default';
+				$menu_language = 'en';
+				$menu_description = '';
+			//add the menu
+				$sql = "insert into v_menus ";
+				$sql .= "(";
+				$sql .= "menu_uuid, ";
+				$sql .= "menu_name, ";
+				$sql .= "menu_language, ";
+				$sql .= "menu_description ";
+				$sql .= ")";
+				$sql .= "values ";
+				$sql .= "(";
+				$sql .= "'".$menu_uuid."', ";
+				$sql .= "'$menu_name', ";
+				$sql .= "'$menu_language', ";
+				$sql .= "'$menu_description' ";
+				$sql .= ")";
+				$db->exec(check_sql($sql));
+				unset($sql);
+			//add the menu items
+				require_once "includes/classes/menu.php";
+				$menu = new menu;
+				$menu->db = $db;
+				$menu->menu_uuid = $menu_uuid;
+				$menu->restore();
+				unset($menu);
+				if ($display_type == "text") {
+					echo "	Menu:			added\n";
+				}
+		}
+		unset($prep_statement, $sub_result);
 	}
-	unset($prep_statement, $sub_result);
 
 //if there are no groups listed in v_menu_item_groups then add the default groups
-	$sql = "SELECT * FROM v_menus ";
-	$prep_statement = $db->prepare(check_sql($sql));
-	$prep_statement->execute();
-	$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
-	$result_count = count($result);
-	foreach($result as $field) {
-		//get the menu_uuid
-			$menu_uuid = $field['menu_uuid'];
-		//check each menu to see if there are items in the menu assigned to it
-			$sql = "";
-			$sql .= "select count(*) as count from v_menu_item_groups ";
-			$sql .= "where menu_uuid = '$menu_uuid' ";
-			$prep_statement = $db->prepare($sql);
-			$prep_statement->execute();
-			$sub_result = $prep_statement->fetch(PDO::FETCH_ASSOC);
-			unset ($prep_statement);
-			if ($sub_result['count'] == 0) {
-				//no menu item groups found add the defaults
-					foreach($apps as $app) {
-						foreach ($app['menu'] as $sub_row) {
-							foreach ($sub_row['groups'] as $group) {
-								//add the record
-								$sql = "insert into v_menu_item_groups ";
-								$sql .= "(";
-								$sql .= "menu_uuid, ";
-								$sql .= "menu_item_uuid, ";
-								$sql .= "group_name ";
-								$sql .= ")";
-								$sql .= "values ";
-								$sql .= "(";
-								$sql .= "'$menu_uuid', ";
-								$sql .= "'".$sub_row['uuid']."', ";
-								$sql .= "'".$group."' ";
-								$sql .= ")";
-								$db->exec($sql);
-								unset($sql);
+	if ($domains_processed == 1) {
+		$sql = "SELECT * FROM v_menus ";
+		$prep_statement = $db->prepare(check_sql($sql));
+		$prep_statement->execute();
+		$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
+		$result_count = count($result);
+		foreach($result as $field) {
+			//get the menu_uuid
+				$menu_uuid = $field['menu_uuid'];
+			//check each menu to see if there are items in the menu assigned to it
+				$sql .= "select count(*) as count from v_menu_item_groups ";
+				$sql .= "where menu_uuid = '$menu_uuid' ";
+				$prep_statement = $db->prepare($sql);
+				$prep_statement->execute();
+				$sub_result = $prep_statement->fetch(PDO::FETCH_ASSOC);
+				unset ($prep_statement);
+				if ($sub_result['count'] == 0) {
+					//no menu item groups found add the defaults
+						foreach($apps as $app) {
+							foreach ($app['menu'] as $sub_row) {
+								foreach ($sub_row['groups'] as $group) {
+									//add the record
+									$sql = "insert into v_menu_item_groups ";
+									$sql .= "(";
+									$sql .= "menu_uuid, ";
+									$sql .= "menu_item_uuid, ";
+									$sql .= "group_name ";
+									$sql .= ")";
+									$sql .= "values ";
+									$sql .= "(";
+									$sql .= "'$menu_uuid', ";
+									$sql .= "'".$sub_row['uuid']."', ";
+									$sql .= "'".$group."' ";
+									$sql .= ")";
+									$db->exec($sql);
+									unset($sql);
+								}
 							}
 						}
-					}
-			}
+				}
+		}
 	}
 
 ?>

+ 3 - 1
core/upgrade/app_defaults.php

@@ -27,7 +27,9 @@
 if (strlen($_SESSION['switch']['scripts']['dir']) > 0) {
 
 	//if the resource scripts resource directory does not exist then create it
-		if (!is_dir($_SESSION['switch']['scripts']['dir']."/resources")) { mkdir($_SESSION['switch']['scripts']['dir']."/resources",0755,true); }
+		if ($domains_processed == 1) {
+			if (!is_dir($_SESSION['switch']['scripts']['dir']."/resources")) { mkdir($_SESSION['switch']['scripts']['dir']."/resources",0755,true); }
+		}
 
 }
 ?>