#
#-----[ COPY ]------------------------------------------
#

copy db_utils_optimize_body.tpl	to	templates/subSilver/admin/db_utils_optimize_body.tpl

# 
#-----[ OPEN ]------------------------------------------ 
# 

admin/admin_db_utilities.php

# 
#-----[ FIND ]------------------------------------------ 
# 

//
// Start Optimize Database 1.0 by Sko22 < sko22@quellicheilpc.com >
//
		case 'optimize':

include('./page_header_admin.'.$phpEx);

echo <<<EOD
<div class="maintitle">$lang[Database_Utilities] : $lang[Optimize]</div>
<br />
<div class="genmed">$lang[Optimize_explain]<br>&nbsp;<br>&nbsp;<br></div>
EOD;

if (!isset($_POST["ottimizza"]))

{

$post = append_sid(basename(__FILE__))."&perform=optimize";	

echo <<<EOD
<script language="JavaScript">
<!--
function setCheckboxes(the_form, do_check)
{
var elts = (typeof(document.forms[the_form].elements['selected_db[]']) != 'undefined')
	? document.forms[the_form].elements['selected_db[]']
    : (typeof(document.forms[the_form].elements['selected_tbl[]']) != 'undefined')
	? document.forms[the_form].elements['selected_tbl[]']
	: document.forms[the_form].elements['selected_fld[]'];

var elts_cnt  = (typeof(elts.length) != 'undefined') ? elts.length : 0;

if (elts_cnt) {
	for (var i = 0; i < elts_cnt; i++) {
		if (do_check == "invert"){
		elts[i].checked == true ? elts[i].checked = false : elts[i].checked = true;
		} else {
		elts[i].checked = do_check;
		}
		} // end for
    } else {
        elts.checked        = do_check;
    } // end if... else

return true;
}
//-->
</script>

<form method="post" name="tablesForm" action="$post">
<table class="forumline" cellspacing="1" cellpadding="2" border="0" align="center">
<tr>
	<th> &nbsp; &nbsp; </th>
	<th>$lang[Optimize_TD_Table]</th>
	<th>$lang[Optimize_TD_Record]</th>
	<th>$lang[Optimize_TD_Type]</th>
	<th>$lang[Optimize_TD_Size]</th>
	<th>$lang[Optimize_TD_Status]</th>
</tr>
EOD;

//Table Status
$sql = "SHOW TABLE STATUS";

$result = $db->sql_query($sql);

while ($row = $db->sql_fetchrow($result))

{

($var%2)==0 ? $color="class=\"row1\"" : $color="class=\"row2\"";

$dbsize = $row[5] + $row[7]; 

/*
if ( is_integer($dbsize) )
	{
*/
		if( $dbsize >= 1048576 )
		{
			//$dbsize = sprintf("%.2f Mb", ( $dbsize / 1048576 ));
			$dbsize = round(($dbsize / 1048576 ),1)." Mb";
		}
		else if( $dbsize >= 1024 )
		{
			//$dbsize = sprintf("%.2f Kb", ( $dbsize / 1024 ));
			$dbsize = round(($dbsize / 1024 ),1)." Kb";
		}
		else
		{
			//$dbsize = sprintf("%.2f Bytes", $dbsize);
			$dbsize = round($dbsize,1)." Bytes";
		}
//	}

$row[8] != 0 ? $data_free = "No OK" : $data_free = "OK";

echo  <<<EOD
<tr>
	<td $color align="center"><input type="checkbox" name="selected_tbl[]" value="$row[0]"></td>
	<td $color>$row[0]</td>
	<td $color align="right">$row[3]</td>
	<td $color align="right">$row[1]</td>
	<td $color align="right">$dbsize</td>
	<td $color align="center">$data_free</td>
</tr>
EOD;

$total_tab = $var + 1;
$total_rec = $total_rec + $row[3]; 
$total_dim = $total_dim + $row[5] + $row[7]; 
if ($data_free == "No OK") $total_stat = "No OK";

$var++;

}

$total_dim = round(($total_dim / 1048576 ),1)." Mb";
$total_stat == "No OK" ? $total_stat = "No OK" : $total_stat = "OK";

echo <<<EOD
<tr>
	<td class="row1">&nbsp;</td>
	<td class="row1"><b>$total_tab</b></td>
	<td class="row1" align="right"><b>$total_rec</b></td>
	<td class="row1" align="center">- -</td>
	<td class="row1" align="right"><b>$total_dim</b></td>
	<td class="row1" align="center"><b>$total_stat</b></td>
</tr>
<tr>
	<td class="row2" align="center" colspan="6">
	<div class="genmed"><a href="#" onclick="setCheckboxes('tablesForm', true); return false;">$lang[Optimize_CheckAll]</a>&nbsp;/&nbsp;<a href="#" onclick="setCheckboxes('tablesForm', false); return false;">$lang[Optimize_UncheckAll]</a>&nbsp;/&nbsp;<a href="#" onclick="setCheckboxes('tablesForm', 'invert'); return false;">$lang[Optimize_InvertChecked]</a></div>
	</td>
</tr>
<tr>
	<td class="catBottom" colspan="6" align="center"><input type="submit" value="$lang[Optimize]" class="liteoption" name="ottimizza"></td>
</tr>
</table>
</form>
<br>&nbsp;<br>
EOD;

		} else {

$sql = "OPTIMIZE TABLE ";

// make query optimize
if ($_POST["selected_tbl"] != ""){

$i=1;
foreach ($_POST["selected_tbl"] as $var => $value){
	if($i<count($_POST["selected_tbl"])){
		$sql .= "`$value`, ";
		} else {
		$sql .= "`$value`";
		}
 $i++;
} 

}

$sql .= " ;";

if (!$result = $db->sql_query($sql))

{
	$err = true;
}

echo <<<EOD
<table class="forumline" cellspacing="1" cellpadding="2" border="0" align="center">
<tr>
	<th>$lang[Optimize_TableOptimized]</th>
</tr>
EOD;

if ($err != true){

foreach ($_POST["selected_tbl"] as $var => $value){

($var%2)==0 ? $color="class=\"row1\"" : $color="class=\"row2\"";

	echo "<tr><td $color>$value</td></tr>";

$var++;

} 

} else {

echo "<tr><td class=\"row1\">$lang[Optimize_NoTableChecked]</td></tr>";

}

echo "</table><br>&nbsp;<br>";
	
unset($_POST["ottimizza"]);

}
		
		break;
//
// End Optimize Database 1.0 by Sko22 < sko22@quellicheilpc.com >
//

# 
#-----[ REPLACE WITH ]------------------------------------------ 
# 

//
// Start Optimize Database 1.1.0 by Sko22 < sko22@quellicheilpc.com >
//
		case 'optimize':

			if(!isset($HTTP_POST_VARS['ottimizza']))
			{
				
				include('./page_header_admin.'.$phpEx);

$sql = "SHOW TABLE STATUS";

	$result = $db->sql_query($sql);
	if( !$result )
	{
		message_die(GENERAL_ERROR, "Couldn't obtain databases list", "", __LINE__, __FILE__, $sql);
	}

	$opt = $db->sql_fetchrowset($result);

	for($i = 0; $i < count($opt); $i++)
	{
		
		$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];

$dbsize = $opt[$i][5] + $opt[$i][7]; 

		if( $dbsize >= 1048576 )
		{
			//$dbsize = sprintf("%.2f Mb", ( $dbsize / 1048576 ));
			$dbsize = round(($dbsize / 1048576 ),1)." Mb";
		}
		else if( $dbsize >= 1024 )
		{
			//$dbsize = sprintf("%.2f Kb", ( $dbsize / 1024 ));
			$dbsize = round(($dbsize / 1024 ),1)." Kb";
		}
		else
		{
			//$dbsize = sprintf("%.2f Bytes", $dbsize);
			$dbsize = round($dbsize,1)." Bytes";
		}

$opt[$i][8] != 0 ? $data_free = "No OK" : $data_free = "OK";
$opt[$i][8] != 0 ? $check = "checked" : $check = ""; 

		$template->assign_block_vars("optimize", array(
			"ROW_CLASS" => $row_class,
			"S_SELECT_TABLE" => "<input type=\"checkbox\" name=\"selected_tbl[]\" value=\"" . $opt[$i][0] . "\"" . $check . ">",
			"TABLE" => $opt[$i][0],
			"RECORD" => $opt[$i][3],
			"TYPE" => $opt[$i][1],
			"SIZE" => $dbsize,
			"STATUS" => $data_free,
			"TOT_TABLE" => $i
			)
		);

$total_tab = $i;
$total_rec = $total_rec + $opt[$i][3]; 
$total_size = $total_size + $opt[$i][5] + $opt[$i][7]; 
if ($data_free == "No OK") $total_stat = "No OK";

	}

$total_size = round(($total_size / 1048576 ),1)." Mb";
$total_stat == "No OK" ? $total_stat = "No OK" : $total_stat = "OK";

			$template->set_filenames(array(
					"body" => "admin/db_utils_optimize_body.tpl")
				);

				$s_hidden_fields = "<input type=\"hidden\" name=\"perform\" value=\"$perform\" />";
				$select_scritp = "
<script language=\"JavaScript\">
// I have copied and modified a script of phpMyAdmin.net
<!--
function setCheckboxes(the_form, do_check)
{
var elts = (typeof(document.forms[the_form].elements['selected_db[]']) != 'undefined')
	? document.forms[the_form].elements['selected_db[]']
    : (typeof(document.forms[the_form].elements['selected_tbl[]']) != 'undefined')
	? document.forms[the_form].elements['selected_tbl[]']
	: document.forms[the_form].elements['selected_fld[]'];

var elts_cnt  = (typeof(elts.length) != 'undefined') ? elts.length : 0;

if (elts_cnt) {
	for (var i = 0; i < elts_cnt; i++) {
		if (do_check == \"invert\"){
		elts[i].checked == true ? elts[i].checked = false : elts[i].checked = true;
		} else {
		elts[i].checked = do_check;
		}
		} // end for
    } else {
        elts.checked        = do_check;
    } // end if... else

return true;
}
//-->
</script>
";

				$template->assign_vars(array(
					"SELECT_SCRIPT" => $select_scritp,
					"L_DATABASE_OPTIMIZE" => $lang['Database_Utilities'] . " : " . $lang['Optimize'],
					"L_OPTIMIZE_EXPLAIN" => $lang['Optimize_explain'],
					"L_OPTIMIZE_TABLE" => $lang['Optimize_Table'],
					"L_OPTIMIZE_RECORD" => $lang['Optimize_Record'],
					"L_OPTIMIZE_TYPE" => $lang['Optimize_Type'],
					"L_OPTIMIZE_SIZE" => $lang['Optimize_Size'],
					"L_OPTIMIZE_STATUS" => $lang['Optimize_Status'],
					"TOT_TABLE" => $total_tab,
					"TOT_RECORD" => $total_rec,
					"TOT_SIZE" => $total_size,
					"TOT_STATUS" => $total_stat,
					"L_OPTIMIZE_CHECKALL" => $lang['Optimize_CheckAll'],
					"L_OPTIMIZE_UNCHECKALL" => $lang['Optimize_UncheckAll'],
					"L_OPTIMIZE_INVERTCHECKED" => $lang['Optimize_InvertChecked'],
					"L_START_OPTIMIZE" => $lang['Optimize'],
					"S_DBUTILS_ACTION" => append_sid("admin_db_utilities.$phpEx"),
					"S_HIDDEN_FIELDS" => $s_hidden_fields
					)
				);

				$template->pparse("body");

				break;

			}

			else
			
			{

include('./page_header_admin.'.$phpEx);

$sql = "OPTIMIZE TABLE ";

// make query optimize
if ($_POST["selected_tbl"] != ""){

$i=1;
foreach ($_POST["selected_tbl"] as $var => $value){
	if($i<count($_POST["selected_tbl"])){
		$sql .= "`$value`, ";
		} else {
		$sql .= "`$value`";
		}
 $i++;
} 

}

$sql .= " ;";

if (!$result = $db->sql_query($sql))

{
	$optimize_notablechecked = true;
}

				$template->set_filenames(array(
					"body" => "admin/admin_message_body.tpl")
				);

				$optimize_notablechecked == true ? $message = $lang['Optimize_NoTableChecked'] : $message = $lang['Optimize_success'];

				$template->assign_vars(array(
					"MESSAGE_TITLE" => $lang['Database_Utilities'] . " : " . $lang['Optimize'],
					"MESSAGE_TEXT" => $message)
				);

				$template->pparse("body");
				break;

			}

		break;
//
// End Optimize Database 1.1.0 by Sko22 < sko22@quellicheilpc.com >
//

# 
#-----[ OPEN ]------------------------------------------ 
# 

language/lang_english/lang_admin.php

# 
#-----[ FIND ]------------------------------------------ 
# 

$lang['Optimize_TD_Table'] = 'Table';
$lang['Optimize_TD_Record'] = 'Record';
$lang['Optimize_TD_Type'] = 'Type';
$lang['Optimize_TD_Size'] = 'Size';
$lang['Optimize_TD_Status'] = 'Status';
$lang['Optimize_CheckAll'] = 'Check All';
$lang['Optimize_UncheckAll'] = 'Uncheck All';
$lang['Optimize_InvertChecked'] = 'Invert Checked';
$lang['Optimize_TableOptimized'] = 'Optimized Tables';
$lang['Optimize_NoTableChecked'] = '<b>No</b> Table Checked';

# 
#-----[ REPLACE WITH ]------------------------------------------ 
# 

$lang['Optimize_Table'] = 'Table';
$lang['Optimize_Record'] = 'Record';
$lang['Optimize_Type'] = 'Type';
$lang['Optimize_Size'] = 'Size';
$lang['Optimize_Status'] = 'Status';
$lang['Optimize_CheckAll'] = 'Check All';
$lang['Optimize_UncheckAll'] = 'Uncheck All';
$lang['Optimize_InvertChecked'] = 'Invert Checked';
$lang['Optimize_success'] = 'The Database has been successfully optimized.';
$lang['Optimize_NoTableChecked'] = '<b>No</b> Table Checked';

# 
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------ 
# 
# EoM 