<?php
if (!function_exists('formatbytes')) {
function formatbytes(int $bytes, int $precision = 2): string {
$units = array('b', 'kb', 'mb', 'gb', 'tb');
$bytes = max($bytes, 0);
$pow = floor(($bytes ? log($bytes) : 0) / log(1024));
$pow = (int)min($pow, count($units) - 1);
$bytes /= (1 << (10 * $pow));
return round($bytes, $precision) . ' ' . $units[$pow];
}
}
if (!function_exists('calculate_directory_size')) {
function calculate_directory_size(string $dir): int {
$total_size = 0;
$files = glob($dir . '/*');
if ($files !== false) {
foreach ($files as $path) {
if (is_file($path)) {
$total_size += filesize($path);
} elseif (is_dir($path) && function_exists('get_dir_size')) {
$total_size += get_dir_size($path);
}
}
}
return $total_size;
}
}
$images_count = count(glob('images/*.*') ?: []);
$docs_count = count(glob('docs/*.*') ?: []);
$miter_dir_size = calculate_directory_size('miters');
$miter_size = formatbytes($miter_dir_size);
$rasp_dir_size = calculate_directory_size('rasps');
$rasp_size = formatbytes($rasp_dir_size);
$tenon_dir_size = calculate_directory_size('tenons');
$tenon_size = formatbytes($tenon_dir_size);
$images_dir_size = calculate_directory_size('images');
$images_size = formatbytes($images_dir_size);
$doc_dir_size = calculate_directory_size('docs');
$doc_size = formatbytes($doc_dir_size);
$xml_dir = 'user/user.xml';
$xml_size = (file_exists($xml_dir) && is_file($xml_dir)) ? filesize($xml_dir) : 0;
$panel_dir_size = calculate_directory_size('panels') + $xml_size;
$subtotal_size = $miter_dir_size + $rasp_dir_size + $tenon_dir_size + $panel_dir_size;
$total_size = formatbytes($subtotal_size);
$log_dir = 'back/admin/log.txt';
$log_size_raw = (file_exists($log_dir) && is_file($log_dir)) ? filesize($log_dir) : 0;
$log_size = formatbytes($log_size_raw);
$color_rows = [
['bg', 'Page Ground Color', $user_bg],
['mainbg', 'Table Ground Color', $user_main_bg],
['border', 'Border Color', $user_border],
['header', 'Header Color', $user_header],
['headertext', 'Header Text Color', $user_header_text],
['maintext', 'Text Color', $user_text],
['link', 'Link Color', $user_link],
['faded', 'Faded Color', $user_faded],
];
$number_rows = [
['widthmiter', 'Miter Width', $user_width_miter],
['widthpanel', 'Panel Width', $user_width_panel],
['fontsize', 'Font Size', $user_font_size],
['radius', 'Border Radius', $user_radius],
];
$select_rows = [
['side', 'Panel Alignment', $user_side, ['left' => 'Left', 'right' => 'Right']],
['underline', 'Link Decoration', $user_under_line, ['none' => 'None', 'underline' => 'Under-Line']],
];
?>
<div class='tenon_header'>
<div class='tenon_header_td'>
<span class='title'>Profile</span>
</div>
</div>
<div class='tenon_table_end'>
<div class='setting_table'>
<form action='back/admin/style_write.php' method='POST' class='setting_row setting_row_compact setting_row_auto'>
<div class='setting_row_label'><span class='text'>User Name</span></div>
<div class='setting_row_field'>
<input type='text' id='miter_user' name='miter_value' class='settings_field' maxlength='47' value='<?php echo htmlspecialchars(str_replace('@', '', $user_name), ENT_QUOTES, 'UTF-8'); ?>' required>
<button type='submit' class='setting_row_check' title='Save'>✓</button>
<input type='hidden' name='miter_field' value='name'>
</div>
</form>
<form action='back/admin/style_write.php' method='POST' class='setting_row setting_row_compact setting_row_auto'>
<div class='setting_row_label'><span class='text'>Description</span></div>
<div class='setting_row_field'>
<input type='text' id='miter_bio' name='miter_value' class='settings_field' value='<?php echo htmlspecialchars($user_bio, ENT_QUOTES, 'UTF-8'); ?>' required>
<button type='submit' class='setting_row_check' title='Save'>✓</button>
<input type='hidden' name='miter_field' value='bio'>
</div>
</form>
<form action='back/admin/style_write.php' enctype='multipart/form-data' method='POST' class='setting_row setting_row_compact setting_row_auto'>
<div class='setting_row_label'><span class='text'>Avatar</span></div>
<div class='setting_row_field'>
<a href='images/<?php echo urlencode($user_avatar); ?>' target='_blank' class='setting_row_avatar_link'>
<img src='images/<?php echo urlencode($user_avatar); ?>' class='setting_row_avatar' alt='Avatar'>
</a>
<input type='file' id='avatar' name='miter_value' class='settings_field' accept='image/jpeg,image/png,image/gif'>
<button type='submit' class='setting_row_check' title='Save'>✓</button>
<input type='hidden' name='miter_field' value='avatar'>
</div>
</form>
</div>
</div>
<div class='bump'></div>
<div class='tenon_header'>
<div class='tenon_header_td'>
<span class='title'>Aesthetics</span>
</div>
</div>
<div class='tenon_table_end'>
<div class='setting_table'>
<?php foreach ($color_rows as [$field, $label, $value]): ?>
<form action='back/admin/style_write.php' method='POST' class='setting_row setting_row_compact setting_row_auto'>
<div class='setting_row_label'><span class='text'><?php echo htmlspecialchars($label, ENT_QUOTES, 'UTF-8'); ?></span></div>
<div class='setting_row_field'>
<div class='setting_row_swatch' style='background-color:<?php echo htmlspecialchars($value, ENT_QUOTES, 'UTF-8'); ?>;'></div>
<input type='text' name='miter_value' class='settings_field' value='<?php echo htmlspecialchars($value, ENT_QUOTES, 'UTF-8'); ?>' required>
<button type='submit' class='setting_row_check' title='Save'>✓</button>
<input type='hidden' name='miter_field' value='<?php echo htmlspecialchars($field, ENT_QUOTES, 'UTF-8'); ?>'>
</div>
</form>
<?php endforeach; ?>
<?php foreach ($number_rows as [$field, $label, $value]): ?>
<form action='back/admin/style_write.php' method='POST' class='setting_row setting_row_compact setting_row_auto'>
<div class='setting_row_label'><span class='text'><?php echo htmlspecialchars($label, ENT_QUOTES, 'UTF-8'); ?></span></div>
<div class='setting_row_field'>
<input type='number' name='miter_value' class='settings_field' min='0' value='<?php echo htmlspecialchars((string)$value, ENT_QUOTES, 'UTF-8'); ?>' required>
<button type='submit' class='setting_row_check' title='Save'>✓</button>
<input type='hidden' name='miter_field' value='<?php echo htmlspecialchars($field, ENT_QUOTES, 'UTF-8'); ?>'>
</div>
</form>
<?php endforeach; ?>
<?php foreach ($select_rows as [$field, $label, $value, $options]): ?>
<form action='back/admin/style_write.php' method='POST' class='setting_row setting_row_compact setting_row_auto'>
<div class='setting_row_label'><span class='text'><?php echo htmlspecialchars($label, ENT_QUOTES, 'UTF-8'); ?></span></div>
<div class='setting_row_field'>
<select name='miter_value' class='settings_select'>
<?php foreach ($options as $option_value => $option_label): ?>
<option value='<?php echo htmlspecialchars((string)$option_value, ENT_QUOTES, 'UTF-8'); ?>'<?php echo ((string)$value === (string)$option_value) ? ' selected' : ''; ?>><?php echo htmlspecialchars($option_label, ENT_QUOTES, 'UTF-8'); ?></option>
<?php endforeach; ?>
</select>
<button type='submit' class='setting_row_check' title='Save'>✓</button>
<input type='hidden' name='miter_field' value='<?php echo htmlspecialchars($field, ENT_QUOTES, 'UTF-8'); ?>'>
</div>
</form>
<?php endforeach; ?>
</div>
</div>
<div class='bump'></div>
<div class='tenon_header'>
<div class='tenon_header_td'>
<span class='title'>Data</span>
</div>
</div>
<div class='tenon_table_end'>
<div class='setting_table'>
<form action='back/admin/delete_miters_all.php' method='POST' target='_blank' class='setting_row'>
<div class='setting_row_label'><span class='text'>miters/*.txt (<?php echo (int)$miter_count; ?>)</span></div>
<div class='setting_row_field'>
<input type='text' class='settings_field' value='<?php echo htmlspecialchars($miter_size, ENT_QUOTES, 'UTF-8'); ?>' readonly>
</div>
<div class='setting_row_submit'>
<input type='submit' value='Delete Miters' class='settings_submit_delete' onclick="return confirm('Alert: Delete Miters?!')">
</div>
</form>
<form action='back/admin/delete_rasp_all.php' method='POST' target='_blank' class='setting_row'>
<div class='setting_row_label'><span class='text'>rasps/*.txt (<?php echo (int)$rasp_count; ?>)</span></div>
<div class='setting_row_field'>
<input type='text' class='settings_field' value='<?php echo htmlspecialchars($rasp_size, ENT_QUOTES, 'UTF-8'); ?>' readonly>
</div>
<div class='setting_row_submit'>
<input type='submit' value='Delete Rasps' class='settings_submit_delete' onclick="return confirm('Alert: Delete Rasps?!')">
</div>
</form>
<form action='back/admin/delete_tenons_all.php' method='POST' target='_blank' class='setting_row'>
<div class='setting_row_label'><span class='text'>tenons/*.txt (<?php echo (int)$tenon_count; ?>)</span></div>
<div class='setting_row_field'>
<input type='text' class='settings_field' value='<?php echo htmlspecialchars($tenon_size, ENT_QUOTES, 'UTF-8'); ?>' readonly>
</div>
<div class='setting_row_submit'>
<input type='submit' value='Delete Tenons' class='settings_submit_delete' onclick="return confirm('Alert: Delete Tenons?!')">
</div>
</form>
<div class='setting_row'>
<div class='setting_row_label'><span class='text'>images/ (<?php echo (int)$images_count; ?>)</span></div>
<div class='setting_row_field'>
<input type='text' class='settings_field_solo' value='<?php echo htmlspecialchars($images_size, ENT_QUOTES, 'UTF-8'); ?>' readonly>
</div>
<div class='setting_row_submit'></div>
</div>
<div class='setting_row'>
<div class='setting_row_label'><span class='text'>docs/ (<?php echo (int)$docs_count; ?>)</span></div>
<div class='setting_row_field'>
<input type='text' class='settings_field_solo' value='<?php echo htmlspecialchars($doc_size, ENT_QUOTES, 'UTF-8'); ?>' readonly>
</div>
<div class='setting_row_submit'></div>
</div>
<form action='back/admin/log_purge.php' method='POST' target='_blank' class='setting_row'>
<div class='setting_row_label'><span class='text'>log.txt</span></div>
<div class='setting_row_field'>
<input type='text' class='settings_field' value='<?php echo htmlspecialchars($log_size, ENT_QUOTES, 'UTF-8'); ?>' readonly>
</div>
<div class='setting_row_submit'>
<input type='submit' value='Purge Log File' class='settings_submit'>
</div>
</form>
<form action='back/admin/zip.php' method='POST' target='_blank' class='setting_row'>
<div class='setting_row_label'><span class='text'>Archive (.zip)</span></div>
<div class='setting_row_field'>
<input type='text' class='settings_field' value='<?php echo htmlspecialchars($total_size, ENT_QUOTES, 'UTF-8'); ?>' readonly>
</div>
<div class='setting_row_submit'>
<input type='submit' value='Download Archive' class='settings_submit'>
</div>
</form>
</div>
</div>
<div class='bump'></div>