Index: trunk/wb/admin/templates/uninstall.php
===================================================================
--- trunk/wb/admin/templates/uninstall.php	(revision 169)
+++ trunk/wb/admin/templates/uninstall.php	(revision 170)
@@ -61,6 +61,9 @@
 // Try to delete the template dir
 if(!rm_full_dir(WB_PATH.'/templates/'.$file)) {
 	$admin->print_error($MESSAGE['GENERIC']['CANNOT_UNINSTALL']);
+} else {
+	// Remove entry from DB
+	$database->query("DELETE FROM ".TABLE_PREFIX."addons WHERE directory = '".$file."' AND type = 'template' LIMIT 0,1");
 }
 
 // Update pages that use this template with default template
Index: trunk/wb/admin/templates/install.php
===================================================================
--- trunk/wb/admin/templates/install.php	(revision 169)
+++ trunk/wb/admin/templates/install.php	(revision 170)
@@ -119,6 +119,9 @@
 	}
 }
 
+// Load template info into DB
+load_module(WB_PATH.'/templates/'.$template_directory);
+
 // Print success message
 $admin->print_success($success_message);
 
Index: trunk/wb/admin/settings/index.php
===================================================================
--- trunk/wb/admin/settings/index.php	(revision 169)
+++ trunk/wb/admin/settings/index.php	(revision 170)
@@ -141,28 +141,22 @@
 
 // Insert language values
 $template->set_block('main_block', 'language_list_block', 'language_list');
-if($handle = opendir(WB_PATH.'/languages/')) {
-   while (false !== ($file = readdir($handle))) {
-		if($file != '.' AND $file != '..' AND !is_dir($file) AND $file != 'index.php') {
-			// Get language name
-			require(WB_PATH.'/languages/'.$file);
-			// Insert code and name
-			$template->set_var(array(
-											'CODE' => $language_code,
-											'NAME' => $language_name
-											)
-									);
-			// Check if it is selected
-			if(DEFAULT_LANGUAGE == $language_code) {
-				$template->set_var('SELECTED', ' selected');
-			} else {
-				$template->set_var('SELECTED', '');
-			}
-			$template->parse('language_list', 'language_list_block', true);
+$result = $database->query("SELECT * FROM ".TABLE_PREFIX."addons WHERE type = 'language'");
+if($result->numRows() > 0) {
+	while ($addon = $result->fetchRow()) {
+		// Insert code and name
+		$template->set_var(array(
+								'CODE' => $addon['directory'],
+								'NAME' => $addon['name']
+								));
+		// Check if it is selected
+		if(DEFAULT_LANGUAGE == $addon['directory']) {
+			$template->set_var('SELECTED', ' selected');
+		} else {
+			$template->set_var('SELECTED', '');
 		}
+		$template->parse('language_list', 'language_list_block', true);
 	}
-	// Restore language to original file
-	require(WB_PATH.'/languages/'.LANGUAGE.'.php');
 }
 
 // Insert default timezone values
@@ -222,16 +216,14 @@
 
 // Insert templates
 $template->set_block('main_block', 'template_list_block', 'template_list');
-if($handle = opendir(WB_PATH.'/templates/')) {
-	while (false !== ($file = readdir($handle))) {
-		if($file != "." AND $file != ".." AND $file != ".svn" AND is_dir(WB_PATH."/templates/$file") AND file_exists(WB_PATH."/templates/$file/info.php")) {
-			include(WB_PATH."/templates/$file/info.php");
-			$template->set_var('FILE', $file);
-			$template->set_var('NAME', $template_name);
-			if($file == DEFAULT_TEMPLATE ? $selected = ' selected' : $selected = '');
-			$template->set_var('SELECTED', $selected);
-			$template->parse('template_list', 'template_list_block', true);
-		}
+$result = $database->query("SELECT * FROM ".TABLE_PREFIX."addons WHERE type = 'template'");
+if($result->numRows() > 0) {
+	while($addon = $result->fetchRow()) {
+		$template->set_var('FILE', $addon['directory']);
+		$template->set_var('NAME', $addon['name']);
+		if($file == DEFAULT_TEMPLATE ? $selected = ' selected' : $selected = '');
+		$template->set_var('SELECTED', $selected);
+		$template->parse('template_list', 'template_list_block', true);
 	}
 }
 
@@ -581,4 +573,4 @@
 
 $admin->print_footer();
 
-?>
+?>
\ No newline at end of file
Index: trunk/wb/admin/preferences/index.php
===================================================================
--- trunk/wb/admin/preferences/index.php	(revision 169)
+++ trunk/wb/admin/preferences/index.php	(revision 170)
@@ -45,28 +45,22 @@
 
 // Insert language values
 $template->set_block('main_block', 'language_list_block', 'language_list');
-if($handle = opendir(WB_PATH.'/languages/')) {
-   while (false !== ($file = readdir($handle))) {
-		if($file != '.' AND $file != '..' AND !is_dir($file) AND $file != 'index.php') {
-			// Get language name
-			require(WB_PATH.'/languages/'.$file);
-			// Insert code and name
-			$template->set_var(array(
-											'CODE' => $language_code,
-											'NAME' => $language_name
-											)
-									);
-			// Check if it is selected
-			if(LANGUAGE == $language_code) {
-				$template->set_var('SELECTED', ' selected');
-			} else {
-				$template->set_var('SELECTED', '');
-			}
-			$template->parse('language_list', 'language_list_block', true);
+$result = $database->query("SELECT * FROM ".TABLE_PREFIX."addons WHERE type = 'language'");
+if($result->numRows() > 0) {
+	while($addon = $result->fetchRow()) {
+		// Insert code and name
+		$template->set_var(array(
+								'CODE' => $addon['directory'],
+								'NAME' => $addon['name']
+								));
+		// Check if it is selected
+		if(LANGUAGE == $addon['directory']) {
+			$template->set_var('SELECTED', ' selected');
+		} else {
+			$template->set_var('SELECTED', '');
 		}
+		$template->parse('language_list', 'language_list_block', true);
 	}
-	// Restore language to original file
-	require(WB_PATH.'/languages/'.LANGUAGE.'.php');
 }
 
 // Insert default timezone values
Index: trunk/wb/admin/languages/uninstall.php
===================================================================
--- trunk/wb/admin/languages/uninstall.php	(revision 169)
+++ trunk/wb/admin/languages/uninstall.php	(revision 170)
@@ -54,6 +54,9 @@
 // Try to delete the language code
 if(!unlink(WB_PATH.'/languages/'.$_POST['code'].'.php')) {
 	$admin->print_error($MESSAGE['GENERIC']['CANNOT_UNINSTALL']);
+} else {
+	// Remove entry from DB
+	$database->query("DELETE FROM ".TABLE_PREFIX."addons WHERE directory = '".$_POST['code']."' AND type = 'language' LIMIT 0,1");
 }
 
 // Print success message
Index: trunk/wb/admin/languages/install.php
===================================================================
--- trunk/wb/admin/languages/install.php	(revision 169)
+++ trunk/wb/admin/languages/install.php	(revision 170)
@@ -96,6 +96,9 @@
 // Chmod the file
 change_mode($language_file, 'file');
 
+// Load language info into DB
+load_module(WB_PATH.'/languages/'.$language_file);
+
 // Restore to correct language
 require(WB_PATH.'/languages/'.LANGUAGE.'.php');
 
Index: trunk/wb/admin/languages/index.php
===================================================================
--- trunk/wb/admin/languages/index.php	(revision 169)
+++ trunk/wb/admin/languages/index.php	(revision 170)
@@ -37,7 +37,7 @@
 $template->set_block('main_block', 'language_list_block', 'language_list');
 $result = $database->query("SELECT * FROM ".TABLE_PREFIX."addons WHERE type = 'language'");
 if($result->numRows() > 0) {
-	while ($addon = $result->fetchRow()) {
+	while($addon = $result->fetchRow()) {
 		$template->set_var('VALUE', $addon['directory']);
 		$template->set_var('NAME', $addon['name'].' ('.$addon['directory'].')');
 		$template->parse('language_list', 'language_list_block', true);
Index: trunk/wb/admin/modules/uninstall.php
===================================================================
--- trunk/wb/admin/modules/uninstall.php	(revision 169)
+++ trunk/wb/admin/modules/uninstall.php	(revision 170)
@@ -54,8 +54,7 @@
 	$admin->print_error($MESSAGE['GENERIC']['CANNOT_UNINSTALL']);
 }
 
-$database->query("DELETE FROM ".TABLE_PREFIX."modules WHERE directory =
-'$file'"); 
+$database->query("DELETE FROM ".TABLE_PREFIX."modules WHERE directory = '$file'"); 
 
 // Run the modules uninstall script if there is one
 if(file_exists(WB_PATH.'/modules/'.$file.'/uninstall.php')) {
@@ -65,6 +64,9 @@
 // Try to delete the module dir
 if(!rm_full_dir(WB_PATH.'/modules/'.$file)) {
 	$admin->print_error($MESSAGE['MODULES']['CANNOT_UNINSTALL']);
+} else {
+	// Remove entry from DB
+	$database->query("DELETE FROM ".TABLE_PREFIX."addons WHERE directory = '".$file."' AND type = 'module' LIMIT 0,1");
 }
 
 // Print success message
Index: trunk/wb/admin/modules/install.php
===================================================================
--- trunk/wb/admin/modules/install.php	(revision 169)
+++ trunk/wb/admin/modules/install.php	(revision 170)
@@ -114,8 +114,9 @@
 	}
 }
 
+// Load module info into DB
+load_module(WB_PATH.'/modules/'.$module_directory, false);
 
-
 // Run the modules install // upgrade script if there is one
 if(file_exists(WB_PATH.'/modules/'.$module_directory.'/'.$action.'.php')) {
 	require(WB_PATH.'/modules/'.$module_directory.'/'.$action.'.php');
@@ -131,8 +132,7 @@
 	$admin->print_success($MESSAGE['GENERIC']['UPGRADED']);
 }	
 
-
 // Print admin footer
 $admin->print_footer();
 
-?>
+?>
\ No newline at end of file
