Tái cấu trúc tên trường trong LimeSurvey 7
From LimeSurvey Manual
Tái cấu trúc tên trường và bảng phản hồi - LimeSurvey 7
LimeSurvey 7 giới thiệu một đợt dọn dẹp lớn về cách tạo các bảng phản hồi và tên trường. Bản cập nhật này hiện đại hóa các quy ước đặt tên nội bộ đã tồn tại từ lâu và tạo ra nền tảng dễ dự đoán, vững chắc hơn cho các plugin, tích hợp và quá trình phát triển trong tương lai.
Trang này tập trung vào việc tái cấu trúc bảng phản hồi và tên trường.
Vì đây là một thay đổi về cấu trúc, mọi tùy biến dựa trên cách đặt tên cũ đều có thể cần được cập nhật. Trang này giải thích những gì thay đổi, cách kiểm thử an toàn và cách chuẩn bị cho việc nâng cấp.
1. Những gì thay đổi
1.1 Tên bảng mới
LimeSurvey hiện sử dụng một quy tắc đặt tên nhất quán cho các bảng liên quan đến phản hồi.
| Tên bảng cũ | Tên bảng mới |
|---|---|
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>
|
Mọi truy vấn SQL, tích hợp hoặc plugin tham chiếu đến các bảng này có thể cần được điều chỉnh.
1.2 Cấu trúc tên trường mới
Tên trường hiện theo một định dạng dễ dự đoán và nhất quán. Ví dụ:
Q<questionId>- câu hỏi gốcQ<questionId>_S<subquestionId>- các câu hỏi phụQ<questionId>_C<suffix>- dẫn giải hoặc các trường khác- trường xếp hạng:
Q<questionId>_S<subquestionId>- các mục xếp hạng hiện là câu hỏi phụ (xem 1.3) - trường thời gian: ở cấp câu hỏi hoặc cấp nhóm tùy theo ngữ cảnh
Điều này thay thế cách đặt tên cũ dựa trên sidXgidXqid.
1.3 Câu hỏi xếp hạng
Câu hỏi xếp hạng hiện hoạt động giống các loại câu hỏi khác dựa trên câu hỏi phụ:
- Các mục là câu hỏi phụ. Các mục có thể xếp hạng được lưu dưới dạng câu hỏi phụ (loại
R), không phải Tuỳ chọn trả lời. - Tên trường sử dụng định dạng câu hỏi phụ tiêu chuẩn
Q<questionId>_S<subquestionId>(một trường cho mỗi mục được xếp hạng). - Phản hồi được lưu trong một cột JSON duy nhất
Q<questionId>, dưới dạng mảng có thứ tự các mã mục, trong đó vị trí = thứ hạng. Ví dụ:["3", "1", "2"]
2. Tại sao điều này quan trọng
Đợt dọn dẹp này xử lý các mẫu đặt tên đã được định nghĩa chính thức và sử dụng trong nhiều năm, đưa chúng về một cấu trúc nhất quán và vững chắc để chúng tôi có thể xây dựng tiếp trong tương lai.
Những thay đổi cấu trúc như thế này hiếm khi đơn giản. Chúng chạm đến các phần của hệ thống mà nhiều plugin và tích hợp phụ thuộc vào, vì vậy thường bị trì hoãn do độ phức tạp. Tuy nhiên, giữ cho mọi thứ nhất quán và dễ dự đoán là điều quan trọng đối với sự ổn định lâu dài.
Bằng cách xử lý vấn đề này ngay bây giờ, chúng tôi giúp LimeSurvey gọn gàng hơn và dễ mở rộng hơn, ngay cả khi thay đổi này phần lớn không hiển thị bên ngoài.
3. Cách xem trước tên trường mới
Để xem tên trường hiện có sẽ được ánh xạ như thế nào sang cấu trúc LS7 mới, bạn có thể thực hiện các bước sau:
- Sao lưu cơ sở dữ liệu, vì các thay đổi không thể hoàn tác và nếu có sự cố, việc có cơ sở dữ liệu trước khi thay đổi sẽ hữu ích để khôi phục
- Checkout nhánh develop-major:
git checkout develop-major
hoặc clone/tải xuống trực tiếp dự án ở nhánh này tại https://github.com/LimeSurvey/LimeSurvey/tree/develop-major - Tải một trang quản trị để kích hoạt tập lệnh thay đổi
- Báo cáo mọi lỗi bạn gặp trong quá trình thực thi tập lệnh thay đổi
- Nghiên cứu các tên bảng và tên trường mới
- Kiểm thử các plugin/giao diện của bạn và sửa các lỗi liên quan đến tên bảng và/hoặc tên trường
Hàm dùng để chuyển đổi tên trường cũ thành tên trường mới như sau:
getFieldName($tableName, $fieldName, $questions, $sid, $gid, $cd)
Tham số
- $tableName - tên bảng gốc
- $fieldName - tên trường gốc
- $questions - câu hỏi gốc và các câu hỏi phụ của nó
- $sid - ID khảo sát
- $gid - Id nhóm
- $cd - có áp dụng logic của Trình thiết kế điều kiện hay không
Kết quả
Hàm trả về tên trường LS7 mới cho trường phản hồi đó.
4. Cách kiểm thử các thay đổi một cách an toàn
Chúng tôi khuyến nghị mạnh mẽ nên kiểm thử LS7 trong một môi trường riêng trước khi nâng cấp các hệ thống đang vận hành.
4.1 Cài đặt LS7 trong một môi trường riêng
Tải phiên bản LS7 mới nhất từ:
https://community.limesurvey.org
Cài đặt nó tách biệt với hệ thống hiện tại của bạn.
4.2 Tải nhập các tài nguyên hiện có của bạn
Hãy thử nghiệm với:
- khảo sát
- chủ đề khảo sát
- chủ đề quản trị
- chủ đề câu hỏi
- plugin
- JavaScript tùy chỉnh
- mọi tích hợp tùy chỉnh mà bạn đã xây dựng
Kiểm tra xem mọi thứ có hoạt động như mong đợi với cách đặt tên bảng và tên trường mới hay không. Cập nhật mọi mã phụ thuộc vào cách đặt tên cũ.
4.3 Cách kích hoạt quá trình di chuyển dữ liệu?
Nếu bạn muốn xem trước logic di chuyển dữ liệu trong bản cài đặt thử nghiệm của mình:
- Sao lưu cơ sở dữ liệu của bạn.
- Cài đặt phiên bản LS7.
- Tải bất kỳ trang quản trị nào để chạy tập lệnh di chuyển dữ liệu.
- Xem lại các thay đổi về tên bảng và tên trường.
- Kiểm thử ứng dụng.
- Cập nhật mã tùy chỉnh nếu cần.
4.4 Báo cáo sự cố
Cảm ơn bạn đã thử nghiệm sớm. Nếu bạn phát hiện điều gì bất thường từ phần lõi, vui lòng báo cáo để chúng tôi có thể khắc phục sớm nhất có thể.
5. Những phần có thể cần cập nhật
Những phần sau có thể cần điều chỉnh:
- plugin tham chiếu đến tên trường hoặc tên bảng cũ
- mọi tích hợp tùy chỉnh mà bạn đã xây dựng
- JavaScript sử dụng bộ chọn dựa trên tên trường
- chủ đề tùy chỉnh tương tác với các định danh liên quan đến phản hồi
- các tích hợp phụ thuộc vào cách đặt tên trước đây
- tải nhập các bản xuất cũ như khảo sát, chủ đề, chủ đề câu hỏi, v.v.
Điều này là bình thường và là một phần của quá trình nâng cấp.
6. Tóm tắt
- LS7 giới thiệu một đợt dọn dẹp toàn diện cách đặt tên bảng phản hồi và tên trường
- Đây là thay đổi cấu trúc backend chính của LS7
- Rất khuyến nghị thử nghiệm trong một môi trường riêng biệt
getFieldName()giúp xem trước cách đặt tên trong tương lai- Cập nhật mã tùy chỉnh khi cần thiết
- Báo cáo sự cố sớm để giúp ổn định bản phát hành cuối cùng