rendered paste body<?php
$days = 31;
$minimum_level = 30;
$data_folder = 'c:/otserv/ots/data/';
$time_to_delete = time( - ($days * 24 * 60 * 60));
if($handle_dir = opendir($data_folder . 'accounts'))
{
$deleted_characters = 0;
$deleted_accounts = 0;
while(false !== ($file = readdir($handle_dir)))
{
if($file != "." && $file != "..")
{
if(fileatime($data_folder . 'accounts/' . $file) < $time_to_delete)
{
$char_too_low_lvl = 0;
$characters_in_account = 0;
$handle_file = fopen($data_folder . 'accounts/' . $file, 'r');
$simple = fread($handle_file, filesize($data_folder . 'accounts/' . $file));
fclose($handle_file);
$p = xml_parser_create();
xml_parse_into_struct($p, $simple, $vals_acc, $index);
xml_parser_free($p);
foreach($vals_acc as $check_for_characters)
{
if($check_for_characters['tag'] == 'CHARACTER')
{
$handle_file = fopen($data_folder . 'players/' . $check_for_characters['attributes']['NAME'] . '.xml', 'r');
$simple = fread($handle_file, filesize($data_folder . 'players/' . $check_for_characters['attributes']['NAME'] . '.xml'));
fclose($handle_file);
$p = xml_parser_create();
xml_parse_into_struct($p, $simple, $vals_char, $index);
xml_parser_free($p);
if($vals_char[0]['attributes']['LEVEL'] < $minimum_level) $char_too_low_lvl++;
$characters_in_account++;
}
}
if($characters_in_account == $char_too_low_lvl)
{
foreach($vals_acc as $delete_char)
{
if($delete_char['tag'] == 'CHARACTER')
{
if(unlink($data_folder . 'players/' . $delete_char['attributes']['NAME'] . '.xml'))
{
echo '<p>Deleted ' . $delete_char['attributes']['NAME'] . '.</p>';
$deleted_characters++;
}
else echo '<p>Failed to delete ' . $delete_char['attributes']['NAME'] . '</p>';
}
}
$acc_nr = explode('.txt', $file);
if(unlink($data_folder . 'accounts/' . $file))
{
echo '<p>Account ' . $acc_nr[0] . ' deleted.</p>';
$deleted_accounts++;
}
else echo '<p>Failed to delete account ' . $acc_nr[0] . '</p>';
}
}
}
}
}
?>
</pre>
<?php echo '<p>Deleted ' . $deleted_characters . ' characters in ' . $deleted_accounts . ' accounts.</p>';