Для чего нужна функция Обновление файлов?

93
.
Добавлено: 15.05.2019 / 09:24
Обьясните мне пожалуйста для чего в загрузках сделан пункт Обновление файлов?
Я совсем не ожидал, что он все дополнительные файлы от загрузок сделает как отдельные загрузки.
Для чего вообще это надо?
Теперь у меня Кроме нормальных загрузок - ещё и поштучные дубли из files__more.

Добавлено: 15.05.2019 / 09:25
Хорошо хоть бэкап сделал несколько дней назад.

Добавлено: 15.05.2019 / 09:40
Вот код
if (isset($_GET['yes'])) {
                // Сканирование папок
                $array_dowm = [];
                $array_id = [];
                $array_more = [];
                $query = $db->query("SELECT `dir`, `name`, `id` FROM `download__files`");

                while ($result = $query->fetch()) {
                    $array_dowm[] = $result['dir'] . '/' . $result['name'];
                    $array_id[$result['dir'] . '/' . $result['name']] = $result['id'];
                }

                $queryCat = $db->query("SELECT `dir`, `id` FROM `download__category`");

                while ($resultCat = $queryCat->fetch()) {
                    $array_dowm[] = $resultCat['dir'];
                    $array_id[$resultCat['dir']] = $resultCat['id'];
                }

                $query_more = $db->query("SELECT `name` FROM `download__more`");

                while ($result_more = $query_more->fetch()) {
                    $array_more[] = $result_more['name'];
                }

                $array_scan = [];

                function scan_dir($dir = '')
                {
                    static $array_scan;
                    global $mod;
                    $arr_dir = glob($dir . '/*');

                    foreach ($arr_dir as $val) {
                        if (is_dir($val)) {
                            $array_scan[] = $val;
                            if (!$mod) {
                                scan_dir($val);
                            }
                        } else {
                            $file_name = basename($val);
                            if ($file_name != '.' && $file_name != '..' && $file_name != 'index.php' && $file_name != '.htaccess' && $file_name != '.svn') {
                                $array_scan[] = $val;
                            }
                        }
                    }

                    return $array_scan;
                }

                $i = 0;
                $i_two = 0;
                $i_three = 0;
                $arr_scan_dir = scan_dir($scan_dir);

                if ($arr_scan_dir) {
                    $stmt_c = $db->prepare("
                        INSERT INTO `download__category`
                        (`refid`, `dir`, `sort`, `name`, `field`, `rus_name`, `text`, `desc`)
                        VALUES (?, ?, ?, ?, 0, ?, '', '')
                    ");

                    $stmt_m = $db->prepare("
                        INSERT INTO `download__more`
                        (`refid`, `time`, `name`, `rus_name`, `size`)
                        VALUES (?, ?, ?, ?, ?)
                    ");

                    $stmt_f = $db->prepare("
                        INSERT INTO `download__files`
                        (`refid`, `dir`, `time`, `name`, `text`, `rus_name`, `type`, `user_id`, `about`, `desc`)
                        VALUES (?, ?, ?, ?, 'Download', ?, 2, ?, '', '')
                    ");

                    foreach ($arr_scan_dir as $val) {
                        if (!in_array($val, $array_dowm)) {
                            if (is_dir($val)) {
                                $name = basename($val);
                                $dir = dirname($val);
                                $refid = isset($array_id[$dir]) ? (int)$array_id[$dir] : 0;
                                $sort = isset($sort) ? ($sort + 1) : time();

                                $stmt_c->execute([
                                    $refid,
                                    $dir . "/" . $name,
                                    $sort,
                                    $name,
                                    $name,
                                ]);

                                $array_id[$dir . "/" . $name] = $db->lastInsertId();

                                ++$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 = htmlspecialchars(mb_substr(str_replace('file' . $refid . '_', _t('Download') . ' ', $name), 0, 200));
                                        $size = filesize($val);

                                        $stmt_m->execute([
                                            $refid,
                                            time(),
                                            $name,
                                            $name_link,
                                            $size,
                                        ]);

                                        ++$i_two;
                                    }
                                } else {
                                    $isFile = $start ? is_file($val) : true;
                                    if ($isFile) {
                                        $dir = dirname($val);
                                        $refid = (int)$array_id[$dir];

                                        $stmt_f->execute([
                                            $refid,
                                            $dir,
                                            time(),
                                            $name,
                                            $name,
                                            $systemUser->id,
                                        ]);

                                        if ($start) {
                                            $fileId = $db->lastInsertId();
                                            $screenFile = false;

                                            if (is_file($val . '.jpg')) {
                                                $screenFile = $val . '.jpg';
                                            } elseif (is_file($val . '.gif')) {
                                                $screenFile = $val . '.gif';
                                            } elseif (is_file($val . '.png')) {
                                                $screenFile = $val . '.png';
                                            }

                                            if ($screenFile) {
                                                $is_dir = mkdir($screens_path . '/' . $fileId, 0777);

                                                if ($is_dir == true) {
                                                    @chmod($screens_path . '/' . $fileId, 0777);
                                                }

                                                @copy($screenFile, $screens_path . '/' . $fileId . '/' . str_replace($val, $fileId, $screenFile));
                                                unlink($screenFile);
                                            }

                                            if (is_file($val . '.txt')) {
                                                @copy($val . '.txt', DOWNLOADS . 'about/' . $fileId . '.txt');
                                                unlink($val . '.txt');
                                            }
                                        }

                                        ++$i_three;
                                    }
                                }
                            }
                        }
                    }

                    $stmt_c = null;
                    $stmt_m = null;
                    $stmt_f = null;
                }

                if ($id) {
                    $dir_files = $db->query("SELECT COUNT(*) FROM `download__files` WHERE `type` = '2' AND `dir` LIKE '" . ($res_down_cat['dir'] . '/' . $res_down_cat['name']) . "%'")->fetchColumn();
                    $db->exec("UPDATE `download__category` SET `total` = '$dir_files' WHERE `id` = '" . $id . "'");
                } else {
                    $req_down = $db->query("SELECT `dir`, `name`, `id` FROM `download__files` WHERE `type` = 1");

                    while ($res_down = $req_down->fetch()) {
                        $dir_files = $db->query("SELECT COUNT(*) FROM `download__files` WHERE `type` = '2' AND `dir` LIKE '" . ($res_down['dir'] . '/' . $res_down['name']) . "%'")->fetchColumn();
                        $db->exec("UPDATE `download__category` SET `total` = '$dir_files' WHERE `id` = '" . $res_down['id'] . "'");
                    }
                }

                echo '<div class="menu"><b>' . _t('Added') . ':</b><br>' .
                    _t('Categories') . ': ' . $i . '<br>' .
                    _t('Files') . ': ' . $i_three . '<br>' .
                    _t('Additional Files') . ': ' . $i_two . '</div>';

                echo '<div class="rmenu">' .
                    '<a href="?act=scan_dir&amp;do=clean&amp;id=' . $id . '">' . _t('Remove missing files') . '</a><br>' .
                    '<a href="?act=recount&amp;do=clean&amp;id=' . $id . '">' . _t('Update counters') . '</a></div>';
            } else {
                // Выбор режима обновления
                echo '<div class="menu"><p><h3>' . _t('Update') . '</h3><ul>';

                if ($id) {
                    echo '<li><a href="?act=scan_dir&amp;yes&amp;id=' . $id . '&amp;mod=1">' . _t('Current folder') . '</a></li>'
                        . '<li><a href="?act=scan_dir&amp;yes&amp;id=' . $id . '">' . _t('Current folder and all subfolders') . '</a></li>';
                }

                echo '<li><a href="?act=scan_dir&amp;yes">' . _t('Entire Downloads') . '</a></li>'
                    . '</ul></p></div>';
            }


Добавлено: 15.05.2019 / 09:57
Как эту байду переделать чтобы она наоборот, удаляла файлы, которые нигде не прописаны в БД?
.
Fublin
оо..чувак ты добрался до истоков.. Теперь все вопросы к Олегу хотя я знаю что он скажет.. Движок писали несколько людей...я вот даже навскиду их ников не вспомню...хотя помню про обновление файлов кое что
Ты какой языг учил ?..То есть практически это принцмпиально..с чего ты пишешь..с телефона или с пк, оператор какой..Сейчас кешируется все что возможно потому что время такое создавать видимое за желаемое ..Те Олеговы потуги что он писал ранее насчет этого теперь только будут мешать..
Это как вариант..
Перегрузи страничку может поможет..мыж копаемся в своем и не видим очевидного..ну например того что нас любит кто то
А зачем ты сюда притащил чистый код я вообщене понял..научись говорить по сущестуву..яж тебе говорю.. у меня ома кран течет..но я не покажу тебе даже фотографий..просто течет - помоги что делать ?..То есть это тоже самое..Извини если обидел, я те реально почь хочу..Но вырази свои мысли кокнретнее..и поэлегантнее..чтоб нервов небыло
Опять же..я хз менялись ли тут ЗЦ или нет..нужен кто то у кого он есть..а это уже случай редкий..ЗЦ рудимент
.
Chifty, а если по чеснаку уже никто не понит нифга как этот форум даже работает..я его перерисовал так в лохматые года что даже не помню что там..загрузки удалил из него потому что путаницы больше только фотки и они всегда хранятся уже не по адрессу сайта а на другом сервере..то есть личноые фото пользователей и т.д и т.п..в общем маета за которую я брался когда был дибилом..второй раз я такой ошибки не сделаю..я думаю семья дороже..поверь..но ты не поверишь..у нас только один чел может продолжать это Старый..у него для этого есть ресурсы и человекочасы..Ты помрешь или станешь толстиым..ты хочешь быть толсмтым ?
.
Напишу коротко, а то вижу люди не понимают в чём проблема.

В загруз центре кнопка "обновить файлы" делает из дополнительных файлов - отдельные загрузки по 1 файлу.

Тест например у меня была одна игра в загрузках, внутри 10 дополнительных файлов для разных телефонов.
Я нажал обновить файлы - и теперь в папке 11 загрузок по 1 файлу.

Внимание вопрос:
С какой целью делалась эта функция?

Вопрос 2: почему функция называется неправильно?
Ведь по логике эта кнопка должна удалять файлы, которые не прикреплены ни к одной загрузке.

Вопрос 3: кто поможет переделать эту функцию? Чтобы чистила ненужные файлы
.
# Chifty (20.05.2019 / 19:06)
Напишу коротко, а то вижу люди не понимают в чём проблема.
Ты похоже или объясняешь неправильно, или не понимаешь что делаешь.
Вообще то эта функция как раз тем и занимается, что упорядочивает состояние загруз. центра.
Ты можешь добавить по адресу /files/downloads/files свои папки с файлами, напр. по ftp потом обновить состояние обменника, и все. То есть не надо например 10 000 картинок корячить через http.
.
JohnCMS
Chifty, загруз центр какой?
Я тож когда то спросил forum/index.php?id=937396&page=6 смотри там посты
.
kantry, Агааааа...
Тогда полезная штука
Но почему была не назвать "Импорт из Папки" или как-то понятнее.

И зачем оно выносит все дополнительные файлы как отдельные загрузки?
.
# Chifty (21.05.2019 / 19:09)
kantry, Агааааа...
Тогда полезная штука
Но почему была не назвать "Импорт из Папки" или как-то понятнее.

И зачем оно выносит все дополнительные файлы как отдельные загрузки?
патамушто джон - движок рбщестенный и писался еще те лохматые года веник был..если ты сам сдаешь умнее что то то добро пожаловать..Старый тебя засместит там на страничках..я говорю безшутотк...нужна новая кровь..типа..Тут тьма великих кодырей1 прогсто половина уже справляет пенси...вот надо ражечь огонь...подпалимть фитилег...бгг
.
# Chifty (21.05.2019 / 19:09)
зачем оно выносит все дополнительные файлы как отдельные загрузки?
А она не должна из них отдельные загрузки делать, что то у тебя там не так происходит.
По крайней мере мне, такую ситуацию не удалось повторить
Всего: 9
Фильтр по автору
Скачать тему