Добавление новых модулей
Добавление новых модулей в FirstWork выполняется через административную панель и не требует ручного размещения файлов в структуре проекта. Система использует встроенный загрузчик модулей, который принимает ZIP‑архив, автоматически распаковывает его, определяет структуру модуля и размещает его в нужной директории. Такой подход исключает ошибки, связанные с неправильным расположением файлов, и обеспечивает единообразие структуры всех установленных модулей.
Процесс установки модуля начинается с загрузки ZIP‑архива через интерфейс административной панели. После получения файла система создаёт временную директорию, распаковывает содержимое архива и определяет корневую папку модуля. Загрузчик автоматически ищет файл module.php, который является обязательным элементом каждого модуля и содержит конфигурацию, описывающую идентификатор, тип и название модуля. Конфигурация считывается как текст, анализируется и преобразуется в массив, который используется для определения назначения модуля.
Каждый модуль имеет тип, который определяет его категорию и конечную директорию размещения. Система использует внутреннюю карту типов, которая сопоставляет тип модуля с конкретной директорией внутри каталога core/plugins. Это позволяет автоматически распределять модули по функциональным группам. Пользователь не влияет на расположение модуля, так как система самостоятельно определяет правильный путь на основе данных конфигурации. Если модуль с таким же идентификатором уже существует, он удаляется перед установкой новой версии.
После определения директории модуль переносится из временной папки в целевую структуру. Временная директория удаляется, а система уведомляет администратора об успешной установке. Такой механизм обеспечивает чистоту структуры проекта и предотвращает накопление временных файлов. Модуль становится доступен сразу после установки и автоматически подхватывается загрузчиком модулей при следующем запуске системы.
Архитектура установки модулей исключает необходимость ручного вмешательства в файловую систему и обеспечивает безопасность процесса. Модули не могут выполнять произвольный код на этапе установки, так как конфигурация считывается как текст и обрабатывается безопасным способом. Такой подход делает систему расширяемой, предсказуемой и устойчивой к ошибкам, связанным с некорректной структурой модулей.