Как сделать ваш плагин совместимым с LS4
From LimeSurvey Manual
Технические изменения
Новый конфигурационный XML-файл
Начиная с LimeSurvey 4.0, для запуска плагинов в приложении требуется конфигурационный XML-файл.
Это позволяет хранить метаданные, такие как автор плагина, e-mail службы поддержки или информация об обновлениях.
Этот XML-файл является обязательным в LimeSurvey 4. Он должен находиться в корневом каталоге плагина. Дополнительную информацию см. в разделе о разработке плагинов: плагины
Пример:

Новый каталог плагинов
В LimeSurvey 4 каталог плагинов изменён. Из соображений безопасности, а также из-за нового менеджера плагинов (загрузчика плагинов), каталог плагинов теперь находится в каталоге загрузки (/upload/plugins). При ручной загрузке рекомендуем загружать ваши файлы в новый каталог, чтобы избежать сбоев в работе программы.
Если каталог жёстко прописан в вашем плагине, обязательно измените его или добавьте новый.
Пример:

Новые события плагинов
Некоторые события плагинов из LS3 устарели. Замените старые события новыми событиями, появившимися в LS4. Дополнительную информацию см. в нашем руководстве для разработчиков: события плагинов.
Устаревшие функции и методы
Поскольку кодовая база и структура LimeSurvey 4 изменились, многие методы и функции больше не используются. Чтобы устранить эту проблему, сначала включите режим отладки в файле config.php, а затем перейдите на страницу плагина. Все несуществующие методы будут показаны на странице ошибки.
Некоторые методы в LS4 переименованы или больше не используются. Чтобы плагин работал и в LS3, и в LS4, проверяйте версию LS перед вызовом нужного метода.
Пример:

Рекомендации
Избегайте файлов SVG
Из соображений безопасности (XSS) загрузка файлов SVG невозможна. Загрузчик плагинов будет игнорировать файлы SVG. Замените их файлами PNG или JPEG. Загрузка файлов SVG возможна только при наличии доступа к каталогу установки через FTP или другие серверные средства (загружайте любые файлы на свой страх и риск).
Избегайте глобальных констант
Избегайте использования глобальных констант, которые могут конфликтовать с переменными ядра приложения или других плагинов, например «ROOT_PATH». В целом не используйте глобальные константы при разработке плагинов.
Используйте пространства имён
Используйте пространства имён для лучшей организации кода: они группируют классы, которые совместно выполняют задачу в вашем плагине. Так вы избежите использования классов, которые уже применяются в ядре приложения.
Пример:

