<?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 H . 'sys/inc/thead.php';

if (isset($_POST['goc'])) {
    $db->query("TRUNCATE TABLE `loads_list`");
    $db->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) . '/';
        $db->query("DELETE FROM `loads_list` WHERE `path` LIKE '" . $db->safesql($path) . "%'");
    } else {
        $q = $db->query("SELECT * FROM `loads_list`");
        while ($list = $db->get_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)) {
                $db->query("DELETE FROM `loads_list` WHERE `path` = '" . $db->safesql($list['path']) . "' AND `name` = '" . $db->safesql($list['name']) . "' LIMIT 1");
                $deleted++;
            }
        }
    }

    function recount_loads($dir) {
        global $added;
        global $dirr;
        $db = new db;

        $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);

                    $llist = $db->super_query("SELECT COUNT(*) as count FROM `loads_list` WHERE `name` = '" . $db->safesql($name) . "' AND `path` = '" . $db->safesql($path) . "' LIMIT 1");
                    if ($llist['count'] == 0) {
                        $db->query("INSERT INTO `loads_list` (`name`, `size`,  `path`, `time`) values('" . $db->safesql($name) . "', '$size', '" . $db->safesql($path) . "', '$file_time')");
                        $added++;
                    }
                }
            }
        }
        closedir($opendir);
    }

    $added = 0;
    $dirr = 0; // Добавлено


    recount_loads(urldecode($_POST['path']));
    admin_log('Загрузки', 'Пересчет файлов', "Удалено $deleted / Добавлено $added записей");
    msg("Удалено $deleted / Добавлено $added записей");
}
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='" . DIR_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';
?>