Refaktoryzacja nazw pól w LimeSurvey 7
From LimeSurvey Manual
Refaktoryzacja nazw pól i tabel odpowiedzi - LimeSurvey 7
LimeSurvey 7 wprowadza gruntowne porządki w sposobie generowania tabel odpowiedzi i nazw pól. Ta aktualizacja unowocześnia wieloletnie wewnętrzne konwencje nazewnictwa i tworzy bardziej przewidywalną oraz solidną podstawę dla wtyczek, integracji i dalszego rozwoju.
Ta strona dotyczy refaktoryzacji tabel odpowiedzi i nazw pól.
Ponieważ jest to zmiana strukturalna, wszelkie niestandardowe rozwiązania oparte na starym nazewnictwie mogą wymagać aktualizacji. Ta strona wyjaśnia, co się zmienia, jak bezpiecznie testować oraz jak przygotować się do aktualizacji.
1. Co się zmienia
1.1 Nowe nazwy tabel
LimeSurvey używa teraz spójnego schematu nazewnictwa dla tabel związanych z odpowiedziami.
| Stara nazwa tabeli | Nowa nazwa tabeli |
|---|---|
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>
|
Wszelkie zapytania SQL, integracje lub wtyczki odwołujące się do tych tabel mogą wymagać poprawek.
1.2 Nowa struktura nazw pól
Nazwy pól mają teraz przewidywalny i spójny format. Przykłady:
Q<questionId>- pytanie główneQ<questionId>_S<subquestionId>- podpytaniaQ<questionId>_C<suffix>- komentarz lub inne pola- pola rankingu:
Q<questionId>_S<subquestionId>- elementy rankingu są teraz podpytaniami (zob. 1.3) - pola czasów: na poziomie pytania lub grupy, w zależności od kontekstu
Zastępuje to dawne nazewnictwo oparte na sidXgidXqid.
1.3 Pytania typu ranking
Pytania typu ranking działają teraz tak jak inne typy pytań oparte na podpytaniach:
- Elementy są podpytaniami. Elementy do uszeregowania są zapisywane jako podpytania (typ
R), a nie jako opcje odpowiedzi. - Nazwy pól używają standardowego formatu podpytań
Q<questionId>_S<subquestionId>(jedno pole na każdy element rankingu). - Odpowiedzi są zapisywane w jednej kolumnie JSON
Q<questionId>, jako uporządkowana tabela kodów elementów, w której pozycja = ranga. Przykład:["3", "1", "2"]
2. Dlaczego to ważne
Te porządki dotyczą wzorców nazewnictwa, które były formalnie zdefiniowane i używane przez wiele lat, i nadają im spójną, solidną strukturę, na której możemy budować w przyszłości.
Zmiany strukturalne tego rodzaju rzadko są proste. Dotyczą elementów systemu, na których opiera się wiele wtyczek i integracji, dlatego często są odkładane z powodu swojej złożoności. Jednak spójność i przewidywalność są ważne dla długoterminowej stabilności.
Zajmując się tym teraz, sprawiamy, że LimeSurvey jest czystszy i łatwiejszy do rozbudowy, nawet jeśli zmiana jest w większości niewidoczna na pierwszy rzut oka.
3. Jak wyświetlić podgląd nowych nazw pól
Aby zobaczyć, jak dowolna istniejąca nazwa pola zostanie odwzorowana w nowej strukturze LS7, wykonaj następujące kroki:
- Wykonaj kopię zapasową bazy danych - zmiany są nieodwracalne, a w razie problemów przyda się baza sprzed zmiany, z której można odzyskać dane.
- Przełącz się na gałąź develop-major:
git checkout develop-major
lub sklonuj/pobierz projekt bezpośrednio z tej gałęzi pod adresem https://github.com/LimeSurvey/LimeSurvey/tree/develop-major - Załaduj dowolną stronę administracyjną, aby uruchomić skrypt zmian.
- Zgłoś wszelkie błędy, które wystąpią podczas wykonywania skryptu zmian.
- Przeanalizuj nowe nazwy tabel i pól.
- Przetestuj swoje wtyczki/motywy i popraw błędy związane z nazwami tabel i/lub pól.
Do konwersji starych nazw pól na nowe służy następująca funkcja:
getFieldName($tableName, $fieldName, $questions, $sid, $gid, $cd)
Parametry
- $tableName - oryginalna nazwa tabeli
- $fieldName - oryginalna nazwa pola
- $questions - pytanie główne i jego podpytania
- $sid - ID ankiety
- $gid - ID grupy
- $cd - czy ma zastosowanie logika Projektanta warunków
Wynik
Funkcja zwraca nową nazwę pola LS7 dla danego pola odpowiedzi.
4. Jak bezpiecznie przetestować zmiany
Zdecydowanie zaleca się przetestowanie LS7 w dedykowanym środowisku przed aktualizacją systemów produkcyjnych.
4.1 Zainstaluj LS7 w oddzielnym środowisku
Pobierz najnowszą wersję LS7 z:
https://community.limesurvey.org
Zainstaluj ją oddzielnie od obecnej instalacji.
4.2 Zaimportuj istniejące zasoby
Przetestuj z użyciem:
- ankiet
- motywów ankiet
- motywów administratora
- motywów pytań
- wtyczek
- niestandardowego kodu JavaScript
- wszelkich utworzonych przez Ciebie niestandardowych integracji
Sprawdź, czy wszystko działa zgodnie z oczekiwaniami przy nowym nazewnictwie tabel i nazw pól. Zaktualizuj każdy kod, który opiera się na starym nazewnictwie.
4.3 Jak uruchomić migrację?
Jeśli chcesz wyświetlić podgląd logiki migracji w swojej instalacji testowej:
- Utwórz kopię zapasową bazy danych.
- Zainstaluj wersję LS7.
- Załaduj dowolną stronę administracyjną, aby uruchomić skrypt migracji.
- Przejrzyj zmiany w tabelach i nazwach pól.
- Przetestuj aplikację.
- W razie potrzeby zaktualizuj kod niestandardowy.
4.4 Zgłaszanie problemów
Dziękujemy za wczesne testowanie. Jeśli zauważysz w rdzeniu systemu coś, co wygląda nieprawidłowo, zgłoś to, abyśmy mogli to jak najszybciej naprawić.
5. Co może wymagać aktualizacji
Poniższe elementy mogą wymagać dostosowania:
- wtyczki odwołujące się do starych nazw pól lub nazw tabel
- wszelkie utworzone przez Ciebie niestandardowe integracje
- kod JavaScript używający selektorów opartych na nazwach pól
- motywy niestandardowe korzystające z identyfikatorów związanych z odpowiedziami
- integracje zależne od poprzedniego schematu nazewnictwa
- import starych eksportów, takich jak ankiety, motywy, motywy pytań itp.
Jest to oczekiwane i stanowi część procesu aktualizacji.
6. Podsumowanie
- LS7 wprowadza kompletne uporządkowanie nazewnictwa tabel odpowiedzi i nazw pól
- Jest to główna strukturalna zmiana zaplecza w LS7
- Zdecydowanie zaleca się testowanie w oddzielnym środowisku
getFieldName()pomaga wyświetlić podgląd przyszłego nazewnictwa- Zaktualizuj kod niestandardowy tam, gdzie jest to wymagane
- Zgłaszaj problemy jak najwcześniej, aby pomóc w ustabilizowaniu wersji finalnej