В cscart 4.11.1 при установке модулей “Опасным” способом некорректно работает установка модулей. В описании способа говорится “мы установим новый модуль поверх старого” что в свою очередь предполагает старое поведение установки модулей, при этом выполняется контроллер addons.php(mode recheck), который в свою очередь вызывает функцию fn_addons_move_and_install в котором уже вызывается fn_remove_addon_files и в этой функции вызывается следующий код > $themes_dirs_list = fn_get_dir_contents($config_dirs[‘design_frontend’]);
В итоге имеем следующее поведение - при установке модуля опасным способом все файлы модуля в папке design\themes удаляются и при последующей установке не восстанавливаются и ожидать корректной работы модуля после этого бессмысленно.
Ожидаемое поведение - никакие файлы модуля, как и раньше, не должны удалятся, должны заменятся те файлы которые есть в новой версии модуля и папка design\themes не должна быть затронута(предположительно fn_remove_addon_files вообще не должна вызываться при установке опасным способом).
Баг подтверждаю, но не тот, о котором написано в сообщении. Проблема тут в том, что описание у “опасного” способа устарело. Оно отражает проблему старого поведения: файлы перемешивались и получался нерабочий модуль. При реализации задачи возникло другое решение (на наш взгляд, более правильное).
Сейчас оба способа удаляют все старые файлы модуля (если они находятся в стандартных папках CS-Cart) и заменяют их на новые. В результате:
Если в модуле не менялась структура данных в БД, то “опасным” способом можно перейти со старой версии модуля на новую (с заменой всех файлов).
Если структура данных изменилась (или если есть вообще любые сомнения), то безопасный способ делает “чистую” установку модуля с потерей всех данных.
Я создал задачу, чтобы описание модуля в будущих версиях это отражало.
@ikoshkin
Мне кажется вы не поняли суть проблемы, при обоих способах сейчас очищаются старые файлы(в том числе и в design/themes), но при безопасном способе отрабатывает установка модуля и новые файлы копируются в папку design/themes, а при опасном способе установка не отрабатывает(так как модуль не удалялся, проверка на то установлен ли модуль прописана в методе установки и если установлен то метод просто завершает работу) и design/themes остаётся пустым(без каких либо файлов модуля), соответственно перейти на новую версию нельзя(фактически обновление опасным способом сломано)