Просмотр файла download/include/scan_dir.php

Размер файла: 7.55Kb
  1. <?php
  2. $set['title'] = 'Обновление';
  3. include H.'engine/includes/head.php';
  4. $i_three = $i_two = $i = 0;
  5. if ($admin) {
  6. @set_time_limit(99999);
  7. switch ($do) {
  8. case 'clean':
  9. $req = mysqli_query($sql->db, "SELECT `id`, `dir`, `name`, `type` FROM `down_files`");
  10. while ($result = $sql->fetch($req)) {
  11. if (!file_exists($result['dir'] . '/' . $result['name'])) {
  12. if ($result['type'] == 1) {
  13. $req = mysqli_query($sql->db, "SELECT `id` FROM `down_files` WHERE `refid` = '" . $result['id'] . "'");
  14. while ($res = mysqli_fetch_assoc($req)) {
  15. $sql->multi("DELETE FROM `down_comms` WHERE `refid`='" . $res['id'] . "';DELETE FROM `down_more` WHERE `refid` = '" . $res['id'] . "'", true);
  16. }
  17. $sql->query("DELETE FROM `down_files` WHERE `id` = '" . $result['id'] . "' OR `refid` = '" . $result['id'] . "'", true);
  18. }
  19. else {
  20. $req = mysqli_query($sql->db, "SELECT `id` FROM `down_more` WHERE `refid` = '" . $result['id'] . "'");
  21. while ($res = $sql->fetch($req)) {
  22. @unlink($result['dir'] . '/' . $res['name']);
  23. }
  24. $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");
  25.  
  26. }
  27. }
  28. }
  29. $sql->multi("OPTIMIZE TABLE `down_files`;OPTIMIZE TABLE `down_comms`;OPTIMIZE TABLE `down_more`;");
  30. ?>
  31. <div class="fmenu">Очистка БД от мусора</div>
  32. <div class="msg">База данных успешно обновлена</div>
  33. <div class="menu"><a href="index.php?act=recount">Пересчитать файлы ЗЦ</a></div>
  34. <div class="p_m"><a href="index.php?id=<?=$id?>">Вернуться</a></div>
  35. <?php
  36. break;
  37. default:
  38. if ($id) {
  39. $sql->query("SELECT `dir`, `name`, `rus_name` FROM `down_files` WHERE `type` = 1 AND `id` = '$id' LIMIT 1");
  40. $res_down_cat = $sql->fetch();
  41. $scan_dir = $res_down_cat['dir'] . '/' . $res_down_cat['name'];
  42. if (!is_dir($scan_dir)){//$sql->result() == 0) {
  43. echo 'Каталога "'.$res_down_cat['rus_name'].'" не существует<br /><a href="index.php">К категориям</a>';
  44. include H.'engine/includes/foot.php';
  45. }
  46. }
  47. else {
  48. $scan_dir = $loadroot;
  49. }
  50. echo '<div class="fmenu">Обновление ' . ($id ? ' | ' . text::output($res_down_cat['rus_name']) : '') . '</div>';
  51. if (isset($_GET['yes'])) {
  52. $array_dowm = $array_id = $array_more = array();
  53. $sql->query("SELECT `dir`, `name`, `id` FROM `down_files`");
  54. while ($result = $sql->fetch()) {
  55. $array_dowm[] = $result['dir'] . '/' . $result['name'];
  56. $array_id[$result['dir'] . '/' . $result['name']] = $result['id'];
  57. }
  58. $sql->query("SELECT `name` FROM `down_more`");
  59. while ($result_more = $sql->fetch()) {
  60. $array_more[] = $result_more['name'];
  61. }
  62. $array_scan = array();
  63. function scan_dir($dir = '')
  64. {
  65. static $array_scan;
  66. $arr_dir = glob($dir . '/*');
  67. foreach ($arr_dir as $val) {
  68. if (is_dir($val)) {
  69. $array_scan[] = $val;
  70. scan_dir($val);
  71. }
  72. else
  73. if (basename($val) != 'index.php')
  74. $array_scan[] = $val;
  75. }
  76. return $array_scan;
  77. }
  78. $arr_scan_dir = @scan_dir($scan_dir);
  79. if ($arr_scan_dir) {
  80. $i_three = $i_two = $i = 0;
  81. foreach ($arr_scan_dir as $val) {
  82. if (!in_array($val, $array_dowm)) {
  83. if (is_dir($val)) {
  84. $name = my_esc(basename($val));
  85. $dir = my_esc(dirname($val));
  86. $refid = (int)@$array_id[$dir];
  87. $sql->query("INSERT INTO `down_files` SET `refid`='$refid', `dir`='$dir', `time`='$time', `name`='$name', `type` = '1', `field`='0', `rus_name`='$name'");
  88. $array_id[$val] = mysqli_insert_id($sql->db);
  89. ++$i;
  90. }
  91. else {
  92. $name = basename($val);
  93. if (preg_match("/^file([0-9]+)_/", $name)) {
  94. if (!in_array($name, $array_more)) {
  95. $refid = (int)str_replace('file', '', $name);
  96. $name_link = check(mb_substr(str_replace('file' . $refid . '_', 'Скачать ', $name), 0, 200));
  97. $name = my_esc($name);
  98. $size = filesize($val);
  99. $sql->query("INSERT INTO `down_more` SET `refid`='$refid', `time`='$time',`name`='$name', `rus_name` = '$name_link',`size`='$fsize'");
  100. ++$i_two;
  101. }
  102. }
  103. else {
  104. $name = my_esc($name);
  105. $dir = my_esc(dirname($val));
  106. $refid = (int)$array_id[$dir];
  107. $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'");
  108. ++$i_three;
  109. }
  110. }
  111. }
  112. }
  113. }
  114. $sql->multi("OPTIMIZE TABLE `down_files`;OPTIMIZE TABLE `down_more`");
  115. echo '<div class="post">Добавлено:<br />Категорий: ' . $i . '<br />Файлов: ' . $i_three . '<br />Доп. Файлов: ' . $i_two . '</div>';
  116. echo '<div class="menu"><a href="index.php?act=scan_dir&amp;do=clean&amp;id=' . $id . '">Очистка БД от мусора</a> (рекомендуется)<br />';
  117. echo '<a href="index.php?act=recount">Пересчитать файлы ЗЦ</a></div>';
  118. }
  119. else
  120. echo '<div class="p_t">Обновить? - <a href="index.php?act=scan_dir&amp;yes&amp;id=' . $id . '">Да</a></div>';
  121. echo '<div class="p_m"><a href="index.php?id=' . $id . '">Вернуться</a></div>';
  122. }
  123. if (file_exists(H.'engine/files/tmp/download[dir='.$id.'].swc'))
  124. unlink(H.'engine/files/tmp/download[dir='.$id.'].swc');
  125. }
  126. else
  127. echo 'Доступ закрыт<br /><a href="index.php">К категориям</a>';