x

主要章节

  1. LimeSurvey Cloud 与 LimeSurvey CE 对比
  2. 快速入门指南 - LimeSurvey 3.0+
  3. 软件安装
  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() 可帮助预览未来的命名
  • 请在需要时更新自定义代码
  • 请尽早报告问题,以帮助稳定最终版本