Browse Source

More cleaning

Signed-off-by: Suki <[email protected]>
Suki 10 years ago
parent
commit
b7fcfcda31
2 changed files with 22 additions and 52 deletions
  1. 21 52
      Sources/Themes.php
  2. 1 0
      Themes/default/languages/Themes.english.php

+ 21 - 52
Sources/Themes.php

@@ -1350,6 +1350,8 @@ function InstallCopy()
 		'images_url' => $themeurl . '/' . $name . '/images',
 		'version' => '1.0',
 		'install_for' => '2.1 - 2.1.99, '. strtr($forum_version, array('SMF ' => '')),
+		'based_on' => '',
+		'based_on_dir' => $themedir . '/default',
 	);
 
 	// Create the specific dir.
@@ -1831,32 +1833,22 @@ function CopyTemplate()
 
 	$_GET['th'] = isset($_GET['th']) ? (int) $_GET['th'] : (int) $_GET['id'];
 
-	$request = $smcFunc['db_query']('', '
-		SELECT th1.value, th1.id_theme, th2.value
-		FROM {db_prefix}themes AS th1
-			LEFT JOIN {db_prefix}themes AS th2 ON (th2.variable = {string:base_theme_dir} AND th2.id_theme = {int:current_theme})
-		WHERE th1.variable = {string:theme_dir}
-			AND th1.id_theme = {int:current_theme}
-		LIMIT 1',
-		array(
-			'current_theme' => $_GET['th'],
-			'base_theme_dir' => 'base_theme_dir',
-			'theme_dir' => 'theme_dir',
-		)
-	);
-	list ($theme_dir, $context['theme_id'], $base_theme_dir) = $smcFunc['db_fetch_row']($request);
-	$smcFunc['db_free_result']($request);
+	if (empty($_GET['th']))
+		fatal_lang_error('theme_install_invalid_id');
+
+	// Get the theme info.
+	$theme = get_single_theme($_GET['th']);
+	$context['theme_id'] = $theme['id'];
 
 	if (isset($_REQUEST['template']) && preg_match('~[\./\\\\:\0]~', $_REQUEST['template']) == 0)
 	{
-		if (!empty($base_theme_dir) && file_exists($base_theme_dir . '/' . $_REQUEST['template'] . '.template.php'))
-			$filename = $base_theme_dir . '/' . $_REQUEST['template'] . '.template.php';
-		elseif (file_exists($settings['default_theme_dir'] . '/' . $_REQUEST['template'] . '.template.php'))
+		if (file_exists($settings['default_theme_dir'] . '/' . $_REQUEST['template'] . '.template.php'))
 			$filename = $settings['default_theme_dir'] . '/' . $_REQUEST['template'] . '.template.php';
+
 		else
 			fatal_lang_error('no_access', false);
 
-		$fp = fopen($theme_dir . '/' . $_REQUEST['template'] . '.template.php', 'w');
+		$fp = fopen($theme['theme_dir'] . '/' . $_REQUEST['template'] . '.template.php', 'w');
 		fwrite($fp, file_get_contents($filename));
 		fclose($fp);
 
@@ -1864,14 +1856,13 @@ function CopyTemplate()
 	}
 	elseif (isset($_REQUEST['lang_file']) && preg_match('~^[^\./\\\\:\0]\.[^\./\\\\:\0]$~', $_REQUEST['lang_file']) != 0)
 	{
-		if (!empty($base_theme_dir) && file_exists($base_theme_dir . '/languages/' . $_REQUEST['lang_file'] . '.php'))
-			$filename = $base_theme_dir . '/languages/' . $_REQUEST['template'] . '.php';
-		elseif (file_exists($settings['default_theme_dir'] . '/languages/' . $_REQUEST['template'] . '.php'))
+		if (file_exists($settings['default_theme_dir'] . '/languages/' . $_REQUEST['template'] . '.php'))
 			$filename = $settings['default_theme_dir'] . '/languages/' . $_REQUEST['template'] . '.php';
+
 		else
 			fatal_lang_error('no_access', false);
 
-		$fp = fopen($theme_dir . '/languages/' . $_REQUEST['lang_file'] . '.php', 'w');
+		$fp = fopen($theme['theme_dir'] . '/languages/' . $_REQUEST['lang_file'] . '.php', 'w');
 		fwrite($fp, file_get_contents($filename));
 		fclose($fp);
 
@@ -1897,28 +1888,6 @@ function CopyTemplate()
 	}
 	$dir->close();
 
-	if (!empty($base_theme_dir))
-	{
-		$dir = dir($base_theme_dir);
-		while ($entry = $dir->read())
-		{
-			if (substr($entry, -13) == '.template.php' && !in_array(substr($entry, 0, -13), $templates))
-				$templates[] = substr($entry, 0, -13);
-		}
-		$dir->close();
-
-		if (file_exists($base_theme_dir . '/languages'))
-		{
-			$dir = dir($base_theme_dir . '/languages');
-			while ($entry = $dir->read())
-			{
-				if (preg_match('~^([^\.]+\.[^\.]+)\.php$~', $entry, $matches) && !in_array($matches[1], $lang_files))
-					$lang_files[] = $matches[1];
-			}
-			$dir->close();
-		}
-	}
-
 	natcasesort($templates);
 	natcasesort($lang_files);
 
@@ -1928,7 +1897,7 @@ function CopyTemplate()
 			'filename' => $template . '.template.php',
 			'value' => $template,
 			'already_exists' => false,
-			'can_copy' => is_writable($theme_dir),
+			'can_copy' => is_writable($theme['theme_dir']),
 		);
 	$context['available_language_files'] = array();
 	foreach ($lang_files as $file)
@@ -1936,29 +1905,29 @@ function CopyTemplate()
 			'filename' => $file . '.php',
 			'value' => $file,
 			'already_exists' => false,
-			'can_copy' => file_exists($theme_dir . '/languages') ? is_writable($theme_dir . '/languages') : is_writable($theme_dir),
+			'can_copy' => file_exists($theme['theme_dir'] . '/languages') ? is_writable($theme['theme_dir'] . '/languages') : is_writable($theme['theme_dir']),
 		);
 
-	$dir = dir($theme_dir);
+	$dir = dir($theme['theme_dir']);
 	while ($entry = $dir->read())
 	{
 		if (substr($entry, -13) == '.template.php' && isset($context['available_templates'][substr($entry, 0, -13)]))
 		{
 			$context['available_templates'][substr($entry, 0, -13)]['already_exists'] = true;
-			$context['available_templates'][substr($entry, 0, -13)]['can_copy'] = is_writable($theme_dir . '/' . $entry);
+			$context['available_templates'][substr($entry, 0, -13)]['can_copy'] = is_writable($theme['theme_dir'] . '/' . $entry);
 		}
 	}
 	$dir->close();
 
-	if (file_exists($theme_dir . '/languages'))
+	if (file_exists($theme['theme_dir'] . '/languages'))
 	{
-		$dir = dir($theme_dir . '/languages');
+		$dir = dir($theme['theme_dir'] . '/languages');
 		while ($entry = $dir->read())
 		{
 			if (preg_match('~^([^\.]+\.[^\.]+)\.php$~', $entry, $matches) && isset($context['available_language_files'][$matches[1]]))
 			{
 				$context['available_language_files'][$matches[1]]['already_exists'] = true;
-				$context['available_language_files'][$matches[1]]['can_copy'] = is_writable($theme_dir . '/languages/' . $entry);
+				$context['available_language_files'][$matches[1]]['can_copy'] = is_writable($theme['theme_dir'] . '/languages/' . $entry);
 			}
 		}
 		$dir->close();

+ 1 - 0
Themes/default/languages/Themes.english.php

@@ -42,6 +42,7 @@ $txt['theme_install_error_file_6'] = 'Missing a temporary upload folder.';
 $txt['theme_install_error_file_7'] = 'Failed to write file to disk.';
 $txt['theme_install_invalid_dir'] = 'You did not add a path for your actual theme, you cannot re-add the default theme';
 $txt['theme_install_already_dir'] = 'The name you specified is already been used by another theme, please try a different name.';
+$txt['theme_install_invalid_id'] = 'This is not a valid ID theme.';
 
 $txt['theme_pick'] = 'Choose a theme...';
 $txt['theme_preview'] = 'Preview theme';