LimeSurvey 7 Omstrukturering av fältnamn
From LimeSurvey Manual
Omstrukturering av fältnamn och svarstabeller - LimeSurvey 7
LimeSurvey 7 innebär en stor uppstädning av hur svarstabeller och fältnamn genereras. Uppdateringen moderniserar gamla interna namnkonventioner och skapar en mer förutsägbar och robust grund för plugin, integrationer och framtida utveckling.
Den här sidan handlar om omstruktureringen av svarstabeller och fältnamn.
Eftersom det här är en strukturell förändring kan anpassade lösningar som bygger på den gamla namngivningen behöva uppdateras. Den här sidan förklarar vad som ändras, hur du testar på ett säkert sätt och hur du förbereder dig inför uppgraderingen.
1. Vad som ändras
1.1 Nya tabellnamn
LimeSurvey använder nu ett enhetligt namnschema för svarsrelaterade tabeller.
| Gammalt tabellnamn | Nytt tabellnamn |
|---|---|
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-frågor, integrationer eller plugin som refererar till dessa tabeller kan behöva justeras.
1.2 Ny struktur för fältnamn
Fältnamn följer nu ett förutsägbart och enhetligt format. Exempel:
Q<questionId>- huvudfrågaQ<questionId>_S<subquestionId>- delfrågorQ<questionId>_C<suffix>- kommentar eller andra fält- rangordningsfält:
Q<questionId>_S<subquestionId>- rangordningsobjekt är nu delfrågor (se 1.3) - tidtagningsfält: på fråge- eller gruppnivå beroende på sammanhang
Detta ersätter den äldre namngivningen baserad på sidXgidXqid.
1.3 Rangordningsfrågor
Rangordningsfrågor fungerar nu som andra frågetyper som bygger på delfrågor:
- Objekten är delfrågor. Objekt som kan rangordnas lagras som delfrågor (typ
R), inte som Alternativ för svar. - Fältnamn använder standardformatet för delfrågor
Q<questionId>_S<subquestionId>(ett per rangordnat objekt). - Svar lagras i en enda JSON-kolumn
Q<questionId>, som en ordnad samling av objektkoder där position = rangordning. Exempel:["3", "1", "2"]
2. Varför detta är viktigt
Uppstädningen åtgärdar namngivningsmönster som definierades formellt och användes under många år, och ger dem en enhetlig och robust struktur som vi kan bygga vidare på i framtiden.
Strukturella förändringar som denna är sällan enkla. De berör delar av systemet som många plugin och integrationer är beroende av, vilket är anledningen till att de ofta skjuts upp på grund av sin komplexitet. Men att hålla saker enhetliga och förutsägbara är viktigt för stabiliteten på lång sikt.
Genom att ta tag i detta nu gör vi LimeSurvey renare och enklare att utöka, även om förändringen mestadels är osynlig på ytan.
3. Så förhandsvisar du nya fältnamn
För att se hur ett befintligt fältnamn motsvaras i den nya LS7-strukturen kan du utföra följande steg:
- Ta en säkerhetskopia av databasen, eftersom ändringarna inte kan ångras och det är bra att ha databasen från före ändringen att återställa om något går fel
- Checka ut grenen develop-major:
git checkout develop-major
eller klona/ladda ner projektet direkt från den grenen på https://github.com/LimeSurvey/LimeSurvey/tree/develop-major - Läs in en adminsida för att starta ändringsskriptet
- Rapportera eventuella fel som uppstår när ändringsskriptet körs
- Studera de nya tabellnamnen och fältnamnen
- Testa dina plugin/teman och åtgärda fel som rör tabellnamn och/eller fältnamn
Funktionen som används för att konvertera gamla fältnamn till nya fältnamn är följande:
getFieldName($tableName, $fieldName, $questions, $sid, $gid, $cd)
Parametrar
- $tableName - ursprungligt tabellnamn
- $fieldName - ursprungligt fältnamn
- $questions - huvudfråga och dess delfrågor
- $sid - enkätens ID
- $gid - Grupp-ID
- $cd - om logiken för Villkorsdesigner ska tillämpas
Resultat
Funktionen returnerar det nya LS7-fältnamnet för det svarsfältet.
4. Så testar du ändringarna på ett säkert sätt
Det rekommenderas starkt att du testar LS7 i en dedikerad miljö innan du uppgraderar produktionssystem.
4.1 Installera LS7 i en separat miljö
Ladda ner den senaste LS7 från:
https://community.limesurvey.org
Installera den separat från din nuvarande installation.
4.2 Importera dina befintliga resurser
Testa med:
- enkäter
- Undersökningsteman
- Administratörsteman
- Frågeteman
- plugins
- egen JavaScript
- eventuella egna integrationer som du har byggt
Kontrollera att allt fungerar som förväntat med de nya namnen på tabeller och fält. Uppdatera all kod som bygger på de gamla namnen.
4.3 Så startar du migreringen
Om du vill förhandsgranska migreringslogiken i din testinstallation:
- Säkerhetskopiera din databas.
- Installera LS7-versionen.
- Läs in valfri administratörssida för att köra migreringsskriptet.
- Granska ändringarna av tabell- och fältnamn.
- Testa applikationen.
- Uppdatera egen kod vid behov.
4.4 Rapportera problem
Tack för att du testar detta i ett tidigt skede. Om du upptäcker något som ser fel ut i kärnan, rapportera det så att vi kan åtgärda det så snart som möjligt.
5. Vad som kan behöva uppdateras
Följande kan behöva justeras:
- plugins som refererar till gamla fältnamn eller tabellnamn
- eventuella egna integrationer som du har byggt
- JavaScript som använder fältnamnsbaserade selektorer
- egna teman som interagerar med identifierare kopplade till svar
- integrationer som är beroende av det föregående namnschemat
- import av gamla exporter, till exempel enkäter, teman, Frågeteman med mera.
Detta är förväntat och en del av uppgraderingsprocessen.
6. Sammanfattning
- LS7 innebär en fullständig uppstädning av namngivningen av svarstabeller och fältnamn
- Detta är den viktigaste strukturella ändringen i backend för LS7
- Det rekommenderas starkt att testa i en separat miljö
getFieldName()hjälper dig att förhandsvisa den framtida namngivningen- Uppdatera egen kod där det behövs
- Rapportera problem tidigt för att hjälpa till att stabilisera den slutliga versionen