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

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