- <?php
- $set['title'] = 'Обновление';
- include H.'engine/includes/head.php';
- $i_three = $i_two = $i = 0;
- if ($admin) {
- @set_time_limit(99999);
- switch ($do) {
- case 'clean':
- $req = mysqli_query($sql->db, "SELECT `id`, `dir`, `name`, `type` FROM `down_files`");
- while ($result = $sql->fetch($req)) {
- if (!file_exists($result['dir'] . '/' . $result['name'])) {
- if ($result['type'] == 1) {
- $req = mysqli_query($sql->db, "SELECT `id` FROM `down_files` WHERE `refid` = '" . $result['id'] . "'");
- while ($res = mysqli_fetch_assoc($req)) {
- $sql->multi("DELETE FROM `down_comms` WHERE `refid`='" . $res['id'] . "';DELETE FROM `down_more` WHERE `refid` = '" . $res['id'] . "'", true);
- }
- $sql->query("DELETE FROM `down_files` WHERE `id` = '" . $result['id'] . "' OR `refid` = '" . $result['id'] . "'", true);
- }
- else {
- $req = mysqli_query($sql->db, "SELECT `id` FROM `down_more` WHERE `refid` = '" . $result['id'] . "'");
- while ($res = $sql->fetch($req)) {
- @unlink($result['dir'] . '/' . $res['name']);
- }
- $sql->multi("DELETE FROM `down_more` WHERE `refid` = '" . $result['id'] . "';DELETE FROM `down_comms` WHERE `refid`='" . $result['id'] . "';DELETE FROM `down_files` WHERE `id` = '" . $result['id'] . "' LIMIT 1");
-
- }
- }
- }
- $sql->query("OPTIMIZE TABLE `down_files`;");
- $sql->query("OPTIMIZE TABLE `down_comms`;OPTIMIZE TABLE `down_more`;");
- Cache::multi_delete('download', tmpDir);
-
- ?>
- <div class="fmenu">Очистка БД от мусора</div>
- <div class="msg">База данных успешно обновлена</div>
- <div class="menu"><a href="index.php?act=recount">Пересчитать файлы ЗЦ</a></div>
- <div class="p_m"><a href="index.php?id=<?=$id?>">Вернуться</a></div>
- <?php
- break;
- default:
- if ($id) {
- $sql->query("SELECT `dir`, `name`, `rus_name` FROM `down_files` WHERE `type` = 1 AND `id` = '$id' LIMIT 1");
- $res_down_cat = $sql->fetch();
- $scan_dir = $res_down_cat['dir'] . '/' . $res_down_cat['name'];
- if (!is_dir($scan_dir)){//$sql->result() == 0) {
- echo 'Каталога "'.$res_down_cat['rus_name'].'" не существует<br /><a href="index.php">К категориям</a>';
- include H.'engine/includes/foot.php';
- }
- }
- else {
- $scan_dir = $loadroot;
- }
- echo '<div class="fmenu">Обновление ' . ($id ? ' | ' . text::output($res_down_cat['rus_name']) : '') . '</div>';
- if (isset($_GET['yes'])) {
- $array_dowm = $array_id = $array_more = array();
- $sql->query("SELECT `dir`, `name`, `id` FROM `down_files`");
- while ($result = $sql->fetch()) {
- $array_dowm[] = $result['dir'] . '/' . $result['name'];
- $array_id[$result['dir'] . '/' . $result['name']] = $result['id'];
- }
- $sql->query("SELECT `name` FROM `down_more`");
- while ($result_more = $sql->fetch()) {
- $array_more[] = $result_more['name'];
- }
- $array_scan = array();
- function scan_dir($dir = '')
- {
- static $array_scan;
- $arr_dir = glob($dir . '/*');
- foreach ($arr_dir as $val) {
- if (is_dir($val)) {
- $array_scan[] = $val;
- scan_dir($val);
- }
- else
- if (basename($val) != 'index.php')
- $array_scan[] = $val;
- }
- return $array_scan;
- }
- $arr_scan_dir = @scan_dir($scan_dir);
- if ($arr_scan_dir) {
- $i_three = $i_two = $i = 0;
- foreach ($arr_scan_dir as $val) {
- if (!in_array($val, $array_dowm)) {
- if (is_dir($val)) {
- $name = my_esc(basename($val));
- $dir = my_esc(dirname($val));
- $refid = (int)@$array_id[$dir];
- $sql->query("INSERT INTO `down_files` SET `refid`='$refid', `dir`='$dir', `time`='$time', `name`='$name', `type` = '1', `field`='0', `rus_name`='$name'");
- $array_id[$val] = mysqli_insert_id($sql->db);
- ++$i;
- }
- else {
- $name = basename($val);
- if (preg_match("/^file([0-9]+)_/", $name)) {
- if (!in_array($name, $array_more)) {
- $refid = (int)str_replace('file', '', $name);
- $name_link = check(mb_substr(str_replace('file' . $refid . '_', 'Скачать ', $name), 0, 200));
- $name = my_esc($name);
- $size = filesize($val);
- $sql->query("INSERT INTO `down_more` SET `refid`='$refid', `time`='$time',`name`='$name', `rus_name` = '$name_link',`size`='$fsize'");
- ++$i_two;
- }
- }
- else {
- $name = my_esc($name);
- $dir = my_esc(dirname($val));
- $refid = (int)$array_id[$dir];
- $sql->query("INSERT INTO `down_files` SET `refid`='$refid', `dir`='$dir', `time`='$time',`name`='$name', `text` = 'Скачать файл',`rus_name`='$name', `type` = '2',`user_id`='$user_id'");
- ++$i_three;
- }
- }
- }
- }
- }
- $sql->query("OPTIMIZE TABLE `down_files`, `down_more`");
-
- echo '<div class="post">Добавлено:<br />Категорий: ' . $i . '<br />Файлов: ' . $i_three . '<br />Доп. Файлов: ' . $i_two . '</div>';
- echo '<div class="menu"><a href="index.php?act=scan_dir&do=clean&id=' . $id . '">Очистка БД от мусора</a> (рекомендуется)<br />';
- echo '<a href="index.php?act=recount">Пересчитать файлы ЗЦ</a></div>';
- Cache::multi_delete('download', tmpDir);
- }
- else
- echo '<div class="p_t">Обновить? - <a href="index.php?act=scan_dir&yes&id=' . $id . '">Да</a></div>';
- echo '<div class="p_m"><a href="index.php?id=' . $id . '">Вернуться</a></div>';
- }
- if (file_exists(H.'engine/files/tmp/download[dir='.$id.'].swc'))
- unlink(H.'engine/files/tmp/download[dir='.$id.'].swc');
- }
- else
- echo 'Доступ закрыт<br /><a href="index.php">К категориям</a>';