LimeSurvey 7: Refaktorering av feltnavn
From LimeSurvey Manual
LimeSurvey 7 introduserer en omfattende opprydding i hvordan svartabeller og feltnavn genereres. Oppdateringen moderniserer gamle interne navnekonvensjoner og skaper et mer forutsigbart og robust fundament for plugins, integrasjoner og fremtidig utvikling.
Denne siden handler om refaktoreringen av svartabeller og feltnavn.
Fordi dette er en strukturell endring, kan egenutviklet arbeid som er avhengig av gammel navngiving, kreve oppdateringer. Denne siden forklarer hva som endres, hvordan du kan teste på en trygg måte, og hvordan du forbereder deg på oppgraderingen.
1. Hva som endres
LimeSurvey bruker nå et enhetlig navneskjema for tabeller knyttet til besvarelser.
| Gammelt tabellnavn | Nytt tabellnavn |
|---|---|
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-spørringer, integrasjoner eller plugins som refererer til disse tabellene, kan kreve justeringer.
Feltnavn følger nå et forutsigbart og enhetlig format. Eksempler:
Q<questionId>- hovedspørsmålQ<questionId>_S<subquestionId>- underspørsmålQ<questionId>_C<suffix>- kommentar eller andre felt- rangeringsfelt:
Q<questionId>_S<subquestionId>- rangeringselementer er nå underspørsmål (se 1.3) - tidsbruksfelt: på spørsmålsnivå eller gruppenivå, avhengig av sammenhengen
Dette erstatter den gamle navngivingen basert på sidXgidXqid.
1.3 Rangeringsspørsmål
Rangeringsspørsmål fungerer nå som andre spørsmålstyper basert på underspørsmål:
- Elementene er underspørsmål. Elementer som kan rangeres, lagres som underspørsmål (type
R), ikke som svaralternativer. - Feltnavn bruker standardformatet for underspørsmål
Q<questionId>_S<subquestionId>(ett per rangerte element). - Besvarelser lagres i én enkelt JSON-kolonne
Q<questionId>, som en ordnet matrise med elementkoder der posisjon = rangering. Eksempel:["3", "1", "2"]
2. Hvorfor dette er viktig
Denne oppryddingen tar tak i navnemønstre som ble formelt definert og brukt i mange år, og gir dem en enhetlig og robust struktur vi kan bygge videre på i fremtiden.
Strukturelle endringer som dette er sjelden enkle. De berører deler av systemet som mange plugins og integrasjoner er avhengige av, og blir derfor ofte utsatt på grunn av kompleksiteten. Men å holde ting enhetlig og forutsigbart er viktig for stabiliteten på lang sikt.
Ved å ta tak i dette nå gjør vi LimeSurvey ryddigere og enklere å utvide, selv om endringen for det meste er usynlig på overflaten.
For å se hvordan et eksisterende feltnavn blir koblet til den nye LS7-strukturen, kan du gjøre følgende:
- Ta en sikkerhetskopi av databasen. Endringene kan ikke angres, og hvis noe går galt, er det nyttig å ha databasen slik den var før endringen, slik at du kan gjenopprette den.
- Sjekk ut grenen develop-major:
git checkout develop-major
eller klon/last ned prosjektet direkte fra denne grenen på https://github.com/LimeSurvey/LimeSurvey/tree/develop-major - Last inn en adminside for å utløse endringsskriptet.
- Rapporter eventuelle feil du får under kjøringen av endringsskriptet.
- Studer de nye tabellnavnene og feltnavnene.
- Test pluginene/temaene dine og rett feil knyttet til tabellnavn og/eller feltnavn.
Funksjonen som brukes til å konvertere gamle feltnavn til nye feltnavn, er følgende:
getFieldName($tableName, $fieldName, $questions, $sid, $gid, $cd)
Parametere
- $tableName - opprinnelig tabellnavn
- $fieldName - opprinnelig feltnavn
- $questions - hovedspørsmål og tilhørende underspørsmål
- $sid - ID for undersøkelsen
- $gid - ID for gruppen
- $cd - om logikk for betingelsesdesigneren gjelder
Resultat
Funksjonen returnerer det nye LS7-feltnavnet for det aktuelle besvarelsesfeltet.
4. Slik tester du endringene trygt
Det anbefales på det sterkeste å teste LS7 i et dedikert miljø før du oppgraderer produksjonssystemer.
4.1 Installer LS7 i et eget miljø
Last ned den nyeste LS7 fra:
https://community.limesurvey.org
Installer den separat fra din nåværende installasjon.
4.2 Importer dine eksisterende ressurser
Test med:
- undersøkelser
- undersøkelsestema
- admintema
- spørsmålstema
- plugins
- egendefinert JavaScript
- eventuelle egenutviklede integrasjoner
Kontroller at alt fungerer som forventet med de nye navnene på tabeller og feltnavn. Oppdater all kode som er avhengig av de gamle navnene.
4.3 Hvordan utløse migreringen?
Hvis du vil forhåndsvise migreringslogikken i testinstallasjonen din:
- Ta sikkerhetskopi av databasen.
- Installer LS7-versjonen.
- Last inn en vilkårlig administrasjonsside for å kjøre migreringsskriptet.
- Gå gjennom endringene i tabell- og feltnavn.
- Test applikasjonen.
- Oppdater egendefinert kode om nødvendig.
4.4 Rapporter problemer
Takk for at du tester dette på et tidlig tidspunkt. Hvis du oppdager noe som ser feil ut i kjernen, bør du rapportere det slik at vi kan rette det så raskt som mulig.
5. Hva som kan kreve oppdateringer
Følgende kan trenge justeringer:
- plugins som refererer til gamle feltnavn eller tabellnavn
- alle egendefinerte integrasjoner du har bygget
- JavaScript som bruker feltnavnbaserte selektorer
- egendefinerte temaer som samhandler med identifikatorer knyttet til besvarelser
- integrasjoner som er avhengige av det forrige navneskjemaet
- import av gamle eksporter, for eksempel undersøkelser, temaer, Spørsmålstema osv.
Dette er forventet og en del av oppgraderingsprosessen.
6. Sammendrag
- LS7 innfører en fullstendig opprydding i navngivingen av svartabeller og feltnavn
- Dette er den viktigste strukturelle endringen i bakenden for LS7
- Det anbefales på det sterkeste å teste i et separat miljø
getFieldName()hjelper deg med å forhåndsvise fremtidig navngiving- Oppdater egendefinert kode der det er nødvendig
- Rapporter problemer tidlig for å bidra til å stabilisere den endelige versjonen