Файл: panel/loads_recount.php
Строк: 113
<?php
foreach (array('start', 'compress', 'sess', 'settings', 'db_connect', 'ipua', 'fnc', 'adm_check', 'loads', 'user') as $inc) {
require_once "../sys/inc/$inc.php";
}
access('adm_set_loads', null, 'index.php?' . SID);
adm_check();
$set['title'] = 'Пересчет файлов в з-ц';
include_once '../sys/inc/thead.php';
if (isset($_POST['goc'])) {
mysql_query("TRUNCATE TABLE `loads_list`");
mysql_query("TRUNCATE TABLE `loads_rating`");
msg("База успешно очищена");
}
if (isset($_POST['go']) && isset($_POST['path'])) {
if (function_exists('set_time_limit'))
@set_time_limit(600); // Ставим ограничение на 10 минут
$deleted = 0; // количество удаленных файлов
if (isset($_POST['clear']) && $_POST['clear'] == 1) {
$path = urldecode($_POST['path']);
$path = str_replace('../sys/loads/files', null, $path);
$path = (function_exists('iconv')) ? iconv('windows-1251', 'utf-8', $path) : $path;
$path = '/' . preg_replace('#^/+|/+$#i', null, $path) . '/';
mysql_query("DELETE FROM `loads_list` WHERE `path` LIKE '" . mysql_real_escape_string($path) . "%'");
} else {
$q = mysql_query("SELECT * FROM `loads_list`");
while ($list = mysql_fetch_array($q)) {
$file = (function_exists('iconv')) ? iconv('utf-8', 'windows-1251', $list['path'] . $list['name']) : $list['path'] . $list['name'];
if (!file_exists('../sys/loads/files' . $file)) {
mysql_query("DELETE FROM `loads_list` WHERE `path` = '" . mysql_real_escape_string($list['path']) . "' AND `name` = '" . mysql_real_escape_string($list['name']) . "' LIMIT 1");
$deleted++;
}
}
}
function recount_loads($dir) {
global $added;
global $dirr;
$opendir = opendir($dir);
while ($readdir = readdir($opendir)) {
if (!preg_match("#^.|.99.99.name|.name$|.txt$|.opis$|.db$|.dat$|.99.99.jad$#i", $readdir) && !preg_match("#.1.JPG$|.1.PNG$|.1.GIF$|.2.JPG$|.2.PNG$|.2.GIF$|.3.JPG$|.3.PNG$|.3.GIF$#", $readdir)) {
if (is_dir($dir . '/' . $readdir))
recount_loads($dir . '/' . $readdir);
elseif (is_file($dir . '/' . $readdir)) {
$path = str_replace('../sys/loads/files', null, $dir);
$path = (function_exists('iconv')) ? iconv('windows-1251', 'utf-8', $path) : $path;
$path = '/' . preg_replace('#^/+|/+$#i', null, $path) . '/';
$name = (function_exists('iconv')) ? iconv('windows-1251', 'utf-8', $readdir) : $readdir;
$size = filesize($dir . '/' . $readdir);
$file_time = filectime($dir . '/' . $readdir);
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `loads_list` WHERE `name` = '" . mysql_real_escape_string($name) . "' AND `path` = '" . mysql_real_escape_string($path) . "' LIMIT 1"), 0) == 0) {
mysql_query("INSERT INTO `loads_list` (`name`, `size`, `path`, `time`) values('" . mysql_real_escape_string($name) . "', '$size', '" . mysql_real_escape_string($path) . "', '$file_time')");
$added++;
}
if (@mkdir('../sys/loads/files_dop' . $path . '' . $name, 0777)) {
$dirr++;
}
}
}
}
closedir($opendir);
}
$added = 0;
$dirr = 0; // Добавлено
recount_loads(urldecode($_POST['path']));
admin_log('Загрузки', 'Пересчет файлов', "Удалено $deleted / Добавлено $added записей");
msg("Удалено $deleted / Добавлено $added записей / Созданно $dirr папок для дополнительных файлов");
}
err();
aut();
#Навигация
echo "<div class='list-group-item-null list-group-item-grey'><small>";
echo "<a href='/' class='hint--right' data-hint='" . lang('На главную') . "'><i class='fa fa-home fa-lg'></i></a> <i class='fa fa-angle-right fa-fw'></i> ";
echo "<a href='/panel/'>" . lang('Панель управления') . "</a> <i class='fa fa-angle-right fa-fw'></i> ";
echo lang('Пересчет файлов');
echo "</small></div><br />";
echo "<form method='post' class='list-group-item-null' action='?gen=$passgen'>n";
echo "Директория:*<br />n";
echo "<select class="form-control" name="path">";
echo "<option value='..%2Fsys%2Floads%2Ffiles'>Корневая папка</option>n";
dirrs('../sys/loads/files', '../sys/loads/files');
echo "</select><br />n";
$doc->Button('btn btn-primary btn-sm', 'go', '', 'Пересчитать');
echo "</form>n";
echo "<form method='post' class='list-group-item-null' action='?gen=$passgen'>n";
$doc->Button('btn btn-primary btn-sm', 'goc', 'trash', 'Очистить таблицу**');
echo "</form>n";
echo "<div class='list-group-item-null list-group-item-info'>";
echo "* Частый пересчет большого количества файлов может сильно загрузить сервер, поэтому по возможности старайтесь указывать конкретную папку.<br />n";
echo "** Данная функция дает возможность полностью удалять файлы с таблицы з-ц. Если вы считаете что счетчик з-ц считает не верно, то перед пересчетом используйте эту функцию..<br />n";
echo "</div>";
include_once '../sys/inc/tfoot.php';
?>