LimeSurvey 7 Refaktorering af feltnavne
From LimeSurvey Manual
LimeSurvey 7 introducerer en gennemgribende oprydning i, hvordan svartabeller og feltnavne genereres. Opdateringen moderniserer mangeårige interne navngivningskonventioner og skaber et mere forudsigeligt og robust fundament for plugins, integrationer og fremtidig udvikling.
Denne side handler om refaktoreringen af svartabeller og feltnavne.
Da der er tale om en strukturel ændring, kan det være nødvendigt at opdatere egne tilpasninger, der bygger på den gamle navngivning. Denne side forklarer, hvad der ændres, hvordan du tester sikkert, og hvordan du forbereder dig på opgraderingen.
1. Hvad ændres der =
LimeSurvey bruger nu et ensartet navngivningsskema for tabeller relateret til besvarelser.
| Gammelt tabelnavn | Nyt tabelnavn |
|---|---|
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-forespørgsler, integrationer eller plugins, der refererer til disse tabeller, kan kræve tilpasninger.
Feltnavne følger nu et forudsigeligt og ensartet format. Eksempler:
Q<questionId>- rodspørgsmålQ<questionId>_S<subquestionId>- underspørgsmålQ<questionId>_C<suffix>- kommentar- eller andre felter- felter til rangordning:
Q<questionId>_S<subquestionId>- elementer i en rangordning er nu underspørgsmål (se 1.3) - tidsfelter: på spørgsmålsniveau eller gruppeniveau afhængigt af konteksten
Dette erstatter den ældre navngivning baseret på sidXgidXqid.
1.3 Spørgsmål med rangordning
Spørgsmål med rangordning fungerer nu som andre spørgsmålstyper baseret på underspørgsmål:
- Elementer er underspørgsmål. Elementer, der kan rangordnes, gemmes som underspørgsmål (type
R) og ikke som svarmuligheder. - Feltnavne bruger standardformatet for underspørgsmål
Q<questionId>_S<subquestionId>(ét pr. rangordnet element). - Besvarelser gemmes i én enkelt JSON-kolonne
Q<questionId>som en ordnet matrix af elementkoder, hvor position = rang. Eksempel:["3", "1", "2"]
2. Hvorfor det er vigtigt
Denne oprydning adresserer navngivningsmønstre, der blev defineret formelt og brugt gennem mange år, og bringer dem ind i en ensartet og robust struktur, som vi kan bygge videre på i fremtiden.
Strukturelle ændringer som denne er sjældent simple. De berører dele af systemet, som mange plugins og integrationer er afhængige af, og derfor bliver de ofte udskudt på grund af deres kompleksitet. Men det er vigtigt for den langsigtede stabilitet, at tingene er ensartede og forudsigelige.
Ved at tage fat på det nu gør vi LimeSurvey federe at arbejde med og lettere at udvide, selvom ændringen for det meste er usynlig på overfladen.
For at se, hvordan et eksisterende feltnavn bliver afbildet til den nye LS7-struktur, kan du følge disse trin:
- Tag en backup af databasen, da ændringerne ikke kan fortrydes, og det er nyttigt at have databasen fra før ændringen, hvis noget går galt
- Check branchen develop-major ud:
git checkout develop-major
eller klon/download projektet direkte på denne branch på https://github.com/LimeSurvey/LimeSurvey/tree/develop-major - Indlæs en administrationsside for at udløse ændringsscriptet
- Rapportér eventuelle fejl, du får under kørslen af ændringsscriptet
- Gennemgå de nye tabelnavne og feltnavne
- Test dine plugins/temaer og ret fejl relateret til tabelnavne og/eller feltnavne
Funktionen, der bruges til at konvertere gamle feltnavne til nye feltnavne, er følgende:
getFieldName($tableName, $fieldName, $questions, $sid, $gid, $cd)
Parametre
- $tableName - oprindeligt tabelnavn
- $fieldName - oprindeligt feltnavn
- $questions - rodspørgsmål og dets underspørgsmål
- $sid - Undersøgelses-ID
- $gid - Gruppe-ID
- $cd - om logikken fra Tilstandsdesigner skal anvendes
Resultat
Funktionen returnerer det nye LS7-feltnavn for det pågældende besvarelsesfelt.
4. Sådan tester du ændringerne sikkert
Det anbefales kraftigt at teste LS7 i et dedikeret miljø, før du opgraderer produktionssystemer.
4.1 Installer LS7 i et separat miljø
Download den nyeste LS7 fra:
https://community.limesurvey.org
Installer den adskilt fra din nuværende opsætning.
4.2 Importer dine eksisterende elementer
Test med:
- undersøgelser
- Undersøgelse temaer
- Admin temaer
- Spørgsmålstemaer
- plugins
- brugerdefineret JavaScript
- alle brugerdefinerede integrationer, du har bygget
Kontroller, at alt fungerer som forventet med de nye navne på tabeller og felter. Opdater al kode, der er afhængig af de gamle navne.
4.3 Sådan udløser du migreringen
Hvis du vil se et eksempel på migreringslogikken i din testinstallation:
- Tag en sikkerhedskopi af din database.
- Installer LS7-versionen.
- Indlæs en vilkårlig administrationsside for at køre migreringsscriptet.
- Gennemgå ændringerne i tabel- og feltnavne.
- Test applikationen.
- Opdater om nødvendigt brugerdefineret kode.
4.4 Rapporter problemer
Tak, fordi du tester det så tidligt. Hvis du opdager noget i kernen, der ser forkert ud, bedes du rapportere det, så vi kan rette det hurtigst muligt.
5. Hvad kan kræve opdateringer
Følgende kan kræve justeringer:
- plugins, der refererer til gamle feltnavne eller tabelnavne
- alle brugerdefinerede integrationer, du har bygget
- JavaScript, der bruger vælgere baseret på feltnavne
- brugerdefinerede temaer, der interagerer med identifikatorer relateret til besvarelser
- integrationer, der afhænger af det tidligere navngivningsskema
- import af gamle eksporter, såsom undersøgelser, temaer, Spørgsmålstemaer osv.
Det er forventet og en del af opgraderingsprocessen.
6. Oversigt
- LS7 introducerer en komplet oprydning af navngivningen af svartabeller og feltnavne
- Dette er den primære strukturelle backend-ændring i LS7
- Det anbefales kraftigt at teste i et separat miljø
getFieldName()hjælper med at få en eksempelvisning af den fremtidige navngivning- Opdater brugerdefineret kode, hvor det er nødvendigt
- Rapporter problemer tidligt for at hjælpe med at stabilisere den endelige udgivelse