x

Основные главы

  1. LimeSurvey Cloud и LimeSurvey CE: сравнение
  2. Краткое руководство по началу работы - LimeSurvey 3.0+
  3. Установка - LimeSurvey CE
  4. Как разработать хороший опрос (руководство)
  5. Начиная
  6. Администрирование LimeSurvey
  7. Опросы - Вступление
  8. Настройки опроса
  9. Меню опроса
  10. Структура опроса
  11. Вопросы — введение
  12. Группы вопросов - введение
  13. Опросы - управление
  14. Параметры панели инструментов опроса
  15. Многоязычный опрос
  16. Движок ExpressionScript — краткое руководство
  17. Не классифицированы и расширенные функции
  18. ЧаВо
  19. Устранение неполадок
  20. Обходные пути
  21. Лицензия
  22. Журнал изменений версий
  23. Плагины
 Actions

Рефакторинг имён полей в LimeSurvey 7

From LimeSurvey Manual

Эта страница, возможно, переведена машинным способом и может содержать ошибки. Показать английский оригинал · Улучшить этот перевод
This page is a translated version of the page LimeSurvey 7 Fieldname Refactor and the translation is 100% complete.

Рефакторинг имён полей и таблиц ответов - LimeSurvey 7

В LimeSurvey 7 проведена масштабная очистка того, как создаются таблицы ответов и имена полей. Это обновление модернизирует давно сложившиеся внутренние соглашения об именовании и создаёт более предсказуемую и надёжную основу для плагинов, интеграций и дальнейшей разработки.

Эта страница посвящена рефакторингу таблиц ответов и имён полей.

Поскольку это структурное изменение, любые пользовательские доработки, опирающиеся на прежние имена, могут потребовать обновления. На этой странице описано, что меняется, как безопасно протестировать изменения и как подготовиться к обновлению.

1. Что меняется

1.1 Новые имена таблиц

Теперь LimeSurvey использует единую схему именования для таблиц, связанных с ответами.

Старое имя таблицы Новое имя таблицы
old_survey_<sid>_<timestamp> old_responses_<sid>_<timestamp>
old_survey_<sid>_timings_<timestamp> old_timings_<sid>_<timestamp>
survey_<sid> responses_<sid>
survey_<sid>_timings timings_<sid>

Любые SQL-запросы, интеграции или плагины, обращающиеся к этим таблицам, могут потребовать корректировки.

1.2 Новая структура имён полей

Имена полей теперь имеют предсказуемый и единообразный формат. Примеры:

  • Q<questionId> - корневой вопрос
  • Q<questionId>_S<subquestionId> - подвопросы
  • Q<questionId>_C<suffix> - комментарий или другие поля
  • поля рейтинга: Q<questionId>_S<subquestionId> - элементы рейтинга теперь являются подвопросами (см. 1.3)
  • поля времени: на уровне вопроса или группы в зависимости от контекста

Это заменяет прежнее именование на основе sidXgidXqid.

1.3 Вопросы типа «Рейтинг»

Вопросы типа «Рейтинг» теперь работают так же, как другие типы вопросов с подвопросами:

  • Элементы — это подвопросы. Элементы для ранжирования хранятся как подвопросы (тип R), а не как варианты ответов.
  • Имена полей используют стандартный формат подвопросов Q<questionId>_S<subquestionId> (по одному на каждый ранжируемый элемент).
  • Ответы хранятся в единственном столбце JSON Q<questionId> в виде упорядоченного массива кодов элементов, где позиция = место в рейтинге. Пример: ["3", "1", "2"]

2. Почему это важно

Эта очистка затрагивает шаблоны именования, которые были формально определены и использовались на протяжении многих лет, и приводит их к единой и надёжной структуре, на которой можно строить будущее.

Подобные структурные изменения редко бывают простыми. Они затрагивают части системы, от которых зависят многие плагины и интеграции, поэтому их часто откладывают из-за сложности. Но единообразие и предсказуемость важны для долгосрочной стабильности.

Сделав это сейчас, мы делаем LimeSurvey чище и проще в расширении, даже если на поверхности это изменение почти незаметно.

3. Как просмотреть новые имена полей заранее

Чтобы увидеть, как любое существующее имя поля будет преобразовано в новую структуру LS7, выполните следующие шаги:

  1. Создайте резервную копию базы данных: изменения необратимы, и в случае сбоя вам понадобится база данных до внесения изменений для восстановления.
  2. Переключитесь на ветку develop-major:
    git checkout develop-major
    или клонируйте/скачайте проект сразу из этой ветки по адресу https://github.com/LimeSurvey/LimeSurvey/tree/develop-major
  3. Откройте любую страницу администрирования, чтобы запустить скрипт изменений.
  4. Сообщайте о любых ошибках, возникших при выполнении скрипта изменений.
  5. Изучите новые имена таблиц и полей.
  6. Протестируйте свои плагины и темы и исправьте ошибки, связанные с именами таблиц и/или полей.

Для преобразования старых имён полей в новые используется следующая функция:

getFieldName($tableName, $fieldName, $questions, $sid, $gid, $cd)

Параметры

  • $tableName - исходное имя таблицы
  • $fieldName - исходное имя поля
  • $questions - корневой вопрос и его подвопросы
  • $sid - ID опроса
  • $gid - ID группы
  • $cd - применяется ли логика дизайнера условий

Результат

Функция возвращает новое имя поля LS7 для данного поля ответа.

4. Как безопасно протестировать изменения

Настоятельно рекомендуется протестировать LS7 в отдельной среде, прежде чем обновлять рабочие системы.

4.1 Установите LS7 в отдельной среде

Скачайте последнюю версию LS7 здесь:

https://community.limesurvey.org

Установите её отдельно от вашей текущей установки.

4.2 Импорт существующих материалов

Проведите тестирование, используя:

  • опросы
  • темы опросов
  • темы панели администратора
  • темы вопросов
  • плагины
  • пользовательский JavaScript
  • любые созданные вами собственные интеграции

Убедитесь, что всё работает должным образом с новыми именами таблиц и полей. Обновите код, который использует старые имена.

4.3 Как запустить миграцию?

Если вы хотите выполнить предварительный просмотр логики миграции в тестовой установке:

  1. Создайте резервную копию базы данных.
  2. Установите версию LS7.
  3. Откройте любую страницу панели администратора, чтобы запустить скрипт миграции.
  4. Проверьте изменения имён таблиц и полей.
  5. Протестируйте приложение.
  6. При необходимости обновите пользовательский код.

4.4 Сообщения о проблемах

Благодарим вас за раннее тестирование. Если вы заметили в ядре что-либо необычное, сообщите нам об этом, чтобы мы могли исправить проблему как можно скорее.

https://bugs.limesurvey.org

5. Что может потребовать обновления

Корректировки могут потребоваться для следующего:

  • плагины, ссылающиеся на старые имена полей или таблиц
  • любые созданные вами собственные интеграции
  • JavaScript, использующий селекторы на основе имён полей
  • пользовательские темы, работающие с идентификаторами, связанными с ответами
  • интеграции, зависящие от предыдущей схемы именования
  • импорт старых экспортированных данных, таких как опросы, темы, темы вопросов и т. д.

Это ожидаемо и является частью процесса обновления.

6. Итоги

  • В LS7 выполнена полная очистка имён таблиц ответов и полей
  • Это основное структурное изменение серверной части в LS7
  • Настоятельно рекомендуется тестировать в отдельной среде
  • getFieldName() помогает выполнить предварительный просмотр будущих имён
  • При необходимости обновите пользовательский код
  • Сообщайте о проблемах как можно раньше, чтобы помочь стабилизировать финальный выпуск