<?php
/*======================================================================*\
|| #################################################################### ||
|| # vBulletin 3.0.3 - Licence Number 239149d8
|| # ---------------------------------------------------------------- # ||
|| # Copyright &copy;2000–2004 Jelsoft Enterprises Ltd. All Rights Reserved. ||
|| # This file may not be redistributed in whole or significant part. # ||
|| # ---------------- VBULLETIN IS NOT FREE SOFTWARE ---------------- # ||
|| # http://www.vbulletin.com | http://www.vbulletin.com/license.html # ||
|| #################################################################### ||
\*======================================================================*/

error_reporting(E_ALL & ~E_NOTICE);
ignore_user_abort(true);
define('NOSHUTDOWNFUNC', 1);

if (function_exists('set_time_limit') and get_cfg_var('safe_mode') == 0)
{
	@set_time_limit(1200);
}

$phrasegroups = array();
$specialtemplates = array();

// set this to 1 if you're on Vservers and get disconnected after running an ALTER TABLE command
$onvservers = 0;

$nozip = true;

if (empty($admincpdir))
{
	$admincpdir = 'admincp';
}
chdir("../$admincpdir");
require_once('./global.php');

// #############################################################################

print_cp_header('Datenbank-Tabellen umbenennen');

// #############################################################################

if (empty($_REQUEST['do']))
{
	$_REQUEST['do'] = 'modify';
}

// #############################################################################

function fetch_renamed_table_name($table, $oldprefix, $newprefix, $dobold = false)
{
	static $prefixlength;

	if (!isset($prefixlength))
	{
		$prefixlength = strlen($oldprefix);
	}

	$name = array('old' => $table);

	if (substr($table, 0, $prefixlength) == $oldprefix)
	{
		$table = substr($table, $prefixlength);
		if ($dobold)
		{
			$name['old'] = "<b>$oldprefix</b>$table";
		}
	}

	$name['new'] = iif($dobold, "<b>$newprefix</b>", $newprefix) . $table;

	return $name;

}

// #############################################################################

if ($_POST['do'] == 'rename')
{

	$_POST['newprefix'] = trim($_POST['newprefix']);

	if ($_POST['newprefix'] == TABLE_PREFIX)
	{
		print_cp_message("
			Sie haben kein neues Tabellen-Pr&auml;fix angegeben, daher kann das Skript nicht weiter ausgef&uuml;hrt werden.<br /><br />
			(Altes Tabellen-Pr&auml;fix: '<b>" . TABLE_PREFIX . "</b>', Neues Tabellen-Pr&auml;fix: '<b>$_POST[newprefix]</b>')
		");
	}

	?>
	<div align="center">
	<div class="tborder" style="width:90%;">
	<div class="tcat" style="padding:4px"><b>Datenbank-Tabellen umbenennen</b></div>
	<div class="alt1" style="padding:4px; text-align:<?php echo $stylevar['left']; ?>">
	<b>Bitten lesen Sie den Hinweis unten auf dieser Seite, wenn der Vorgang abgeschlossen wurde.</b>
	<ul class="smallfont">
	<?php

	flush();

	$valid = array();
	$tables = $DB_site->query("SHOW TABLES");
	while ($table = $DB_site->fetch_array($tables, MYSQL_NUM))
	{
		$valid["$table[0]"] = true;
	}
	unset($table);
	$DB_site->free_result($tables);

	foreach(array_keys($_POST['rename']) as $table)
	{

		if (!isset($valid["$table"]))
		{
			echo "<li>Die Tabelle '<i>$table</i>' existiert nicht!</li>\n";
			flush();
		}
		else

		{
			$name = fetch_renamed_table_name($table, TABLE_PREFIX, $_POST['newprefix']);
			echo "<li>Die Tabelle <b>$name[old]</b> wird umbenannt in <b>$name[new]</b>... ";
			flush();
			$DB_site->query("ALTER TABLE $name[old] RENAME $name[new]");
			echo "Fertig.</li>\n";
		}

	}

	?>
	</ul>
	</div>
	<div class="tcat" style="padding:4px"><b>Das Umbenennen wurde durchgef&uuml;hrt.</b></div>
	<div class="alt2" style="padding:4px; text-align:<?php echo $stylevar['left']; ?>">
	<p>Das Skript wurde vollst&auml;ndig ausgef&uuml;hrt.<br />
	Das Tabellen-Pr&auml;fix wurde von
	'<b><?php echo TABLE_PREFIX; ?></b>' in '<b><?php echo $_POST['newprefix']; ?></b>' ge&auml;ndert.</p>
	<p>Sie m&uuml;ssen nun Ihre <i>includes/config.php</i> bearbeiten, so dass diese Zeile enthalten ist:</p>
	<pre>$tableprefix = '<?php echo $_POST['newprefix']; ?>';</pre>
	<p><b><u>Ihre vBulletin-Installation wird erst wieder funktionieren, wenn Sie diesen Schritt
	durchgef&uuml;hrt haben!</u></b></p>
	</div>
	</div>
	</div>
	<?php

}

// #############################################################################

if ($_POST['do'] == 'confirm')
{
	if (array_sum($_POST['rename']) == 0)
	{
		print_cp_message('Sie haben keine Tabellen ausgew&auml;hlt, die umbenannt werden sollen.');
	}
	else
	{

		$_POST['newprefix'] = trim($_POST['newprefix']);

		if ($_POST['newprefix'] == TABLE_PREFIX)
		{
			print_cp_message("
				Sie haben kein neues Tabellen-Pr&auml;fix angegeben, daher kann das Skript nicht weiter ausgef&uuml;hrt werden.<br /><br />
				(Altes Tabellen-Pr&auml;fix: '<b>" . TABLE_PREFIX . "</b>', Neues Tabellen-Pr&auml;fix: '<b>$_POST[newprefix]</b>')
			");
		}

		$prefixlength = strlen($tableprefix);
		$dorename = array();
		$warn = array();
		$dotables = '';
		$warntables = '';

		print_form_header('tableprefix', 'rename');
		print_table_header("&Auml;ndern des Tabellen-Pr&auml;fixes best&auml;tigen (Von '" . TABLE_PREFIX . "' zu '$_POST[newprefix]')");
		construct_hidden_code('newprefix', $_POST['newprefix']);

		foreach($_POST['rename'] as $table => $yesno)
		{
			if ($yesno)
			{
				construct_hidden_code("rename[$table]", 1);
				$dorename[] = $table;
				$tablename = fetch_renamed_table_name($table, TABLE_PREFIX, $_POST['newprefix'], true);
				$dotables .= "<tr class=\"alt2\"><td class=\"smallfont\">$tablename[old]</td><td class=\"smallfont\">$tablename[new]</td></tr>";
				if (substr($table, 0, $prefixlength) != TABLE_PREFIX)
				{
					$warn[] = $table;
				}
			}
		}

		if (!empty($warn))
		{
			foreach($warn as $table)
			{
				$warntables .= "<li>$table</li>";
			}
			print_description_row('
				<b>WARNUNG!</b><br />Die folgenden Tabellen beinhalten <b>nicht</b> das urspr&uuml;ngliche
				Tabellen-Pr&auml;fix! Diese Tabellen sind wahrscheinlich nicht Bestandteil von vBulletin.
				<ul>' . $warntables . '</ul>
				Sind Sie <b>wirklich sicher</b>, dass Sie den Vorgang fortsetzen m&ouml;chten?
			');
			print_description_row('<div align="center"><input type="button" class="button" value="Nein, zur&uuml;ck zur vorherigen Seite" onclick="history.back(1);" /></div>', 0, 2, 'tfoot');
		}
		else

		{
			$bgcounter++;
		}

		if (!empty($dorename))
		{
			print_description_row('
				<p>Sie haben die folgenden Tabellen ausgew&auml;hlt:</p>
				<table cellpadding="1" cellspacing="0" border="0" class="alt1" width="90%" align="center"><tr><td>
				<table cellpadding="3" cellspacing="1" border="0" width="100%">
				<tr><td><b>Alter Tabellenname</b></td><td><b>Neuer Tabellenname</b></td></tr>
				' . $dotables . '
				</table></td></tr></table>
			');
		}

		print_description_row('
			<p>Wenn Sie <b>sicher</b> sind, dass Sie den Vorgang fortsetzen und die oben
			aufgef&uuml;hrten Tabellen umbenennen m&ouml;chten, klicken Sie auf die "Tabellen umbenennen" Schaltfl&auml;che.</p>
			<p><b>Hinweis:</b> Dies ist die letzte M&ouml;glichkeit, den Vorgang abzubrechen.
			Wenn Sie auf die Schaltfl&auml;che unten klicken, werden alle oben aufgef&uuml;hrten
			Tabellen umbenannt und Sie m&uuml;ssen Ihre config.php bearbeiten, bevor Ihr vBulletin
			wieder funktioniert.</p>
		');

		print_submit_row('Tabellen umbenennen', 0, 2, ' Zur&uuml;ck ');

	}

}

// #############################################################################

if ($_REQUEST['do'] == 'choose')
{
	print_form_header('tableprefix', 'confirm');
	print_table_header('Datenbank-Tabellen umbenennen');
	print_label_row('Altes Tabellen-Pr&auml;fix', '<div class="bginput" style="margin-top:2px; width:230px">' . TABLE_PREFIX . '</div>');
	print_input_row('Neues Tabellen-Pr&auml;fix', 'newprefix', TABLE_PREFIX);
	print_label_row('<b>Tabellenname</b>', '<input type="button" class="button" value="Alle ausw&auml;hlen" onclick="js_check_all_option(this.form, 1);" /> <input type="button" class="button" value="Keine ausw&auml;hlen" onclick="js_check_all_option(this.form, 0);" />', 'tfoot');
	print_description_row('
		<p>Unten finden Sie alle Tabellen Ihrer Datenbank aufgef&uuml;hrt.
		Sie sollten sicher stellen, dass Sie <b>nur</b> Tabellen ausw&auml;hlen, die Bestandteil von vBulletin sind.</p>
		<p><b>Falls Sie sich nicht sicher sind, f&uuml;hren Sie den Vorgang nicht weiter aus.</b></p>
	');
	$prefixlength = strlen($tableprefix);
	$tables = $DB_site->query("SHOW TABLES");
	while($table = mysql_fetch_array($tables, MYSQL_NUM))
	{
		print_yes_no_row("Tabelle umbenennen: <b>$table[0]</b>", "rename[$table[0]]", iif(substr($table[0], 0, $prefixlength) == $tableprefix, 1, 0));
	}
	print_submit_row('Tabellen umbenennen');

}

// #############################################################################

if ($_REQUEST['do'] == 'modify')
{

	echo '<p>&nbsp;</p><p>&nbsp;</p>';

	print_form_header('tableprefix', 'choose');
	print_table_header('vBulletin 3 - Skript zum Erweitern der Tabellennamen mit Pr&auml;fixen');
	print_description_row('
		<p>Dieses Skript erm&ouml;glicht es Ihnen, die vBulletin Datenbank-Tabellen umzubenennen,
		um sie somit an ein in der <i>includes/config.php</i> gesetztes Tabellen-Pr&auml;fix anzupassen.</p>
		<p><b>Hinweis:</b> Ver&auml;ndern Sie den $tableprefix Wert in der config.php <b>nicht</b>, bevor
		dieses Skript nicht vollst&auml;ndig ausgef&uuml;hrt wurde und Sie die Meldung bekommen, dass Sie
		diesen Wert jetzt ver&auml;ndern sollen.</p>
		<p>Zurzeit gesetztes Tabellen-Pr&auml;fix: \'<b>' . TABLE_PREFIX . '</b>\'.</p>
	');
	print_submit_row('Fortfahren', 0);

}

// #############################################################################

print_cp_footer();

/*======================================================================*\
|| ####################################################################
|| # Downloaded: 12:37, Fri Nov 19th 2004
|| # CVS: $RCSfile: tableprefix.php,v $ - $Revision: 1.4 $
|| ####################################################################
\*======================================================================*/
?>