Browse Source

make EnableTheme a lot more simple

Signed-off-by: Suki <[email protected]>
Suki 10 years ago
parent
commit
889700990f
2 changed files with 16 additions and 16 deletions
  1. 3 3
      Sources/Subs-Themes.php
  2. 13 13
      Sources/Themes.php

+ 3 - 3
Sources/Subs-Themes.php

@@ -449,15 +449,15 @@ function remove_theme($themeID)
 	$known = strtr(implode(',', $known), array(',,' => ','));
 	$enable = strtr(implode(',', $enable), array(',,' => ','));
 
+	// Update the enableThemes list.
+	updateSettings(array('enableThemes' => $enable));
+
 	// Fix it if the theme was the overall default theme.
 	if ($modSettings['theme_guests'] == $themeID)
 		updateSettings(array('theme_guests' => '1', 'knownThemes' => $known));
 
 	else
-	{
 		updateSettings(array('knownThemes' => $known));
-		updateSettings(array('enableThemes' => $enable));
-	}
 
 	return true;
 }

+ 13 - 13
Sources/Themes.php

@@ -836,26 +836,26 @@ function EnableTheme()
 	isAllowedTo('admin_forum');
 	validateToken('admin-tre', 'request');
 
-	$enable = '1';
-
 	// The theme's ID must be an integer.
 	$themeID = isset($_GET['th']) ? (int) $_GET['th'] : (int) $_GET['id'];
 
+	// Get the current list.
+	$enable = explode(',', $modSettings['enableThemes']);
+
 	// Are we disabling it?
 	if (isset($_GET['disabled']))
-		$enable = '0';
+	{
+		for ($i = 0, $n = count($enable); $i < $n; $i++)
+			if ($enable[$i] == $themeID)
+				unset($enable[$i]);
 
-	// Make the query.
-	$smcFunc['db_query']('', '
-		UPDATE {db_prefix}themes
-		SET value = {string:enable}
-		WHERE id_theme = {int:theme}',
-		array(
-			'enable' => $enable,
-			'theme' => $themeID,
-		)
-	);
+		updateSettings(array('knownThemes' => $enable));
+	}
+
+	// Nope? then enable it!
+	updateSettings(array('enableThemes' => strtr($modSettings['enableThemes'] . ',' . $themeID, array(',,' => ','))));
 
+	// Done!
 	redirectexit('action=admin;area=theme;sa=list;' . $context['session_var'] . '=' . $context['session_id']);
 }