Builder
В данном классе находятся все методы для сборки страниц. Порядок выполнен ия методов описан в списке Builder::$build_flow. Сборка запускается с помощью метода generate_build
generate_build
- Удаляет логи предыдущей сборки
- Устанавливает статус
Building - Повышает счетчик сборок (revesions) на один
- По очереди запускает методы из свойства
$build_flow. Перед каждым запуском проверяется, не требуется ли остановка сборки - После успешной сборки, статус
Completed
- Во время сборки может быть выброшено исключение
BuildStoppedException. В таком случае сборка перейдет в статусStoppedи будет остановлена - Могут быть выброшены и другие исключения. Они считаются фатальными, поэтому сборка перейдет в статус
Errorи будет остановлена
$build_flow
Следующий методы включены в процесс сборки:
remove_build_dir
Удаляет файлы предыдущей сборки
create_build_dir
Создает директорию для новой сборки
copy_custom_paths
Копирует все пути из настройки сборок "Прочее > Дополнительные поля и файлы" в сборку
build_pages
Собирает все сущности сборки.
Для старта берутся страницы выбранные в настройке сборки и модалки из Внешний вид → Плеер курса → Доп. контент (ранее «Настройка сборок > Доп. Контент > Модальные окна»).
По умолчанию в сборку добавляются только заданные в настройках сущности, но можно включить автоматическое добавл ение страниц и модалок. Сущность автоматически добавится в сборку, если на нее ссылается какая-то сущность из сборки (есть ссылка на странице, открывается с помощью триггеров)
prepare_elementor
Elementor и Elementor pro требуют модификаций файлов перед попаданием в сборку. Модификации происходят с помощью класса Elementor
configure_build
Генерирует конфигурационные файлы сборки. Набор файлов зависит от типа сборки, настроек и списка сущностей
remove_empty_dirs
В сборку могут попасть пустые директории, захламляющие структуру файлов. На данном этапе эти директории удаляются
create_archive
Архивирует директорию со сборкой. Для работы архивации должна быть включена поддержка zip (существовать класс ZipArchive) и использовать OS Linux (на Windows этот этап пропускается)