LimeSurvey 7 refactoring van veldnamen
From LimeSurvey Manual
Refactoring van veldnamen en antwoordtabellen - LimeSurvey 7
LimeSurvey 7 introduceert een grote opschoning van de manier waarop antwoordtabellen en veldnamen worden gegenereerd. Deze update moderniseert al lang bestaande interne naamconventies en zorgt voor een voorspelbaardere en robuustere basis voor plugins, integraties en toekomstige ontwikkeling.
Deze pagina richt zich op de refactoring van antwoordtabellen en veldnamen.
Omdat dit een structurele wijziging is, kan aangepast werk dat afhankelijk is van de oude namen aanpassingen vereisen. Deze pagina legt uit wat er verandert, hoe u veilig kunt testen en hoe u zich op de upgrade kunt voorbereiden.
1. Wat verandert er
1.1 Nieuwe tabelnamen
LimeSurvey gebruikt nu een consistent naamgevingsschema voor tabellen die met responsen te maken hebben.
| Oude tabelnaam | Nieuwe tabelnaam |
|---|---|
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-query's, integraties of plugins die naar deze tabellen verwijzen, kunnen aanpassingen vereisen.
1.2 Nieuwe structuur van veldnamen
Veldnamen volgen nu een voorspelbaar en consistent formaat. Voorbeelden:
Q<questionId>- hoofdvraagQ<questionId>_S<subquestionId>- subvragenQ<questionId>_C<suffix>- opmerking of andere velden- rangschikvelden:
Q<questionId>_S<subquestionId>- items om te rangschikken zijn nu subvragen (zie 1.3) - tijdmetingvelden: op vraagniveau of groepsniveau, afhankelijk van de context
Dit vervangt de oude naamgeving op basis van sidXgidXqid.
1.3 Rangschikvragen
Rangschikvragen werken nu net als andere vraagtypen die op subvragen zijn gebaseerd:
- Items zijn subvragen. Items om te rangschikken worden opgeslagen als subvragen (type
R), niet als antwoordopties. - Veldnamen gebruiken het standaardformaat voor subvragen
Q<questionId>_S<subquestionId>(één per gerangschikt item). - Responsen worden opgeslagen in één JSON-kolom
Q<questionId>, als een geordende array van itemcodes waarbij positie = rang. Voorbeeld:["3", "1", "2"]
2. Waarom dit belangrijk is
Deze opschoning pakt naamgevingspatronen aan die jarenlang formeel zijn gedefinieerd en gebruikt, en brengt ze in een consistente en robuuste structuur waarop we in de toekomst kunnen voortbouwen.
Structurele wijzigingen zoals deze zijn zelden eenvoudig. Ze raken onderdelen van het systeem waar veel plugins en integraties van afhankelijk zijn, en worden daarom vanwege hun complexiteit vaak uitgesteld. Maar consistentie en voorspelbaarheid zijn belangrijk voor stabiliteit op lange termijn.
Door dit nu aan te pakken, maken we LimeSurvey overzichtelijker en gemakkelijker uit te breiden, ook al is de wijziging aan de oppervlakte grotendeels onzichtbaar.
3. Nieuwe veldnamen vooraf bekijken
Om te zien hoe een bestaande veldnaam wordt omgezet naar de nieuwe LS7-structuur, kunt u de volgende stappen uitvoeren:
- Maak een back-up van de database, aangezien de wijzigingen niet omkeerbaar zijn en het handig is om de database van vóór de wijziging te hebben om te herstellen als er iets misgaat
- Check de branch develop-major uit:
git checkout develop-major
of kloon/download het project rechtstreeks op deze branch via https://github.com/LimeSurvey/LimeSurvey/tree/develop-major - Laad een beheerpagina om het wijzigingsscript te starten
- Meld eventuele fouten die u tijdens de uitvoering van het wijzigingsscript tegenkomt
- Bestudeer de nieuwe tabelnamen en veldnamen
- Test uw plugins/thema's en los fouten op die met tabelnamen en/of veldnamen te maken hebben
De functie die wordt gebruikt om oude veldnamen om te zetten naar nieuwe veldnamen is de volgende:
getFieldName($tableName, $fieldName, $questions, $sid, $gid, $cd)
Parameters
- $tableName - oorspronkelijke tabelnaam
- $fieldName - oorspronkelijke veldnaam
- $questions - hoofdvraag en bijbehorende subvragen
- $sid - Enquête-id
- $gid - Groep-id
- $cd - of de logica van de Conditie-editor van toepassing is
Resultaat
De functie geeft de nieuwe LS7-veldnaam voor dat responsveld terug.
4. Zo test u de wijzigingen veilig
Het wordt sterk aanbevolen om LS7 in een aparte omgeving te testen voordat u productiesystemen upgradet.
4.1 LS7 in een aparte omgeving installeren
Download de nieuwste LS7 via:
https://community.limesurvey.org
Installeer deze los van uw huidige installatie.
4.2 Uw bestaande onderdelen importeren
Test met:
- enquêtes
- Enquête-thema's
- Beheer-thema's
- Vraagthema's
- plugins
- aangepaste JavaScript
- alle aangepaste integraties die u hebt gebouwd
Controleer of alles werkt zoals verwacht met de nieuwe naamgeving van tabellen en veldnamen. Pas alle code aan die afhankelijk is van de oude naamgeving.
4.3 Hoe start u de migratie?
Als u een voorbeeld van de migratielogica wilt bekijken in uw testinstallatie:
- Maak een back-up van uw database.
- Installeer de LS7-versie.
- Open een willekeurige beheerpagina om het migratiescript uit te voeren.
- Controleer de wijzigingen in tabellen en veldnamen.
- Test de applicatie.
- Pas indien nodig aangepaste code aan.
4.4 Problemen melden
Bedankt dat u dit al vroeg test. Als u iets opmerkt in de kern dat niet klopt, meld het dan zodat we het zo snel mogelijk kunnen oplossen.
5. Wat mogelijk aanpassingen vereist
Het volgende kan aanpassingen vereisen:
- plugins die verwijzen naar oude veldnamen of tabelnamen
- alle aangepaste integraties die u hebt gebouwd
- JavaScript dat selectors op basis van veldnamen gebruikt
- aangepaste thema's die communiceren met identifiers die met responsen te maken hebben
- integraties die afhankelijk zijn van het vorige naamgevingsschema
- het importeren van oude exports, zoals enquêtes, thema's, vraagthema's enz.
Dit is te verwachten en maakt deel uit van het upgradeproces.
6. Samenvatting
- LS7 voert een complete opschoning door van de naamgeving van antwoordtabellen en veldnamen
- Dit is de belangrijkste structurele backend-wijziging voor LS7
- Testen in een aparte omgeving wordt sterk aanbevolen
getFieldName()helpt om de toekomstige naamgeving te bekijken- Pas aangepaste code aan waar nodig
- Meld problemen vroeg om de definitieve release te helpen stabiliseren