Refaktorizácia názvov polí v LimeSurvey 7
From LimeSurvey Manual
Refaktorizácia názvov polí a tabuliek odpovedí - LimeSurvey 7
LimeSurvey 7 prináša rozsiahle vyčistenie spôsobu, akým sa generujú tabuľky odpovedí a názvy polí. Táto aktualizácia modernizuje dlhoročné interné konvencie pomenovania a vytvára predvídateľnejší a robustnejší základ pre pluginy, integrácie a budúci vývoj.
Táto stránka sa zameriava na refaktorizáciu tabuliek odpovedí a názvov polí.
Keďže ide o štrukturálnu zmenu, každé vlastné riešenie, ktoré sa spolieha na staré pomenovanie, môže vyžadovať úpravy. Táto stránka vysvetľuje, čo sa mení, ako bezpečne testovať a ako sa pripraviť na aktualizáciu.
1. Čo sa mení
1.1 Nové názvy tabuliek
LimeSurvey teraz používa jednotnú schému pomenovania tabuliek súvisiacich s odpoveďami.
| Starý názov tabuľky | Nový názov tabuľky |
|---|---|
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>
|
Všetky SQL dotazy, integrácie alebo pluginy, ktoré odkazujú na tieto tabuľky, môžu vyžadovať úpravy.
1.2 Nová štruktúra názvov polí
Názvy polí teraz majú predvídateľný a jednotný formát. Príklady:
Q<questionId>- hlavná otázkaQ<questionId>_S<subquestionId>- podotázkyQ<questionId>_C<suffix>- komentár alebo iné polia- polia poradia:
Q<questionId>_S<subquestionId>- položky poradia sú teraz podotázky (pozri 1.3) - polia časovania: na úrovni otázky alebo skupiny podľa kontextu
Toto nahrádza pôvodné pomenovanie založené na sidXgidXqid.
1.3 Otázky typu poradie
Otázky typu poradie teraz fungujú ako ostatné typy otázok založené na podotázkach:
- Položky sú podotázky. Položky na zoradenie sú uložené ako podotázky (typ
R), nie ako možnosti odpovede. - Názvy polí používajú štandardný formát podotázok
Q<questionId>_S<subquestionId>(jeden pre každú zoradenú položku). - Odpovede sa ukladajú do jedného stĺpca JSON
Q<questionId>ako usporiadané pole kódov položiek, kde pozícia = poradie. Príklad:["3", "1", "2"]
2. Prečo je to dôležité
Táto úprava rieši vzory pomenovania, ktoré boli formálne definované a používané mnoho rokov, a prináša ich do jednotnej a robustnej štruktúry, na ktorej môžeme stavať v budúcnosti.
Štrukturálne zmeny ako táto sú len zriedka jednoduché. Zasahujú časti systému, na ktoré sa spolieha mnoho pluginov a integrácií, a preto sa kvôli svojej zložitosti často odkladajú. Zachovanie jednotnosti a predvídateľnosti je však dôležité pre dlhodobú stabilitu.
Tým, že sa tomu venujeme už teraz, robíme LimeSurvey čistejším a ľahšie rozšíriteľným, aj keď je zmena navonok väčšinou neviditeľná.
3. Ako zobraziť náhľad nových názvov polí
Ak chcete zistiť, ako sa ktorýkoľvek existujúci názov poľa premietne do novej štruktúry LS7, môžete postupovať takto:
- Vytvorte zálohu databázy, pretože zmeny nie sú vratné a ak sa niečo pokazí, bude užitočné mať databázu spred zmeny na obnovenie
- Prepnite sa na vetvu develop-major:
git checkout develop-major
alebo naklonujte/stiahnite projekt priamo z tejto vetvy na https://github.com/LimeSurvey/LimeSurvey/tree/develop-major - Načítajte stránku administrácie, čím sa spustí skript zmeny
- Nahláste každú chybu, ktorú dostanete počas vykonávania skriptu zmeny
- Preštudujte si nové názvy tabuliek a polí
- Otestujte svoje pluginy/témy a opravte chyby súvisiace s názvami tabuliek a/alebo polí
Funkcia používaná na prevod starých názvov polí na nové názvy polí je nasledovná:
getFieldName($tableName, $fieldName, $questions, $sid, $gid, $cd)
Parametre
- $tableName - pôvodný názov tabuľky
- $fieldName - pôvodný názov poľa
- $questions - hlavná otázka a jej podotázky
- $sid - ID prieskumu
- $gid - ID skupiny
- $cd - či sa uplatňuje logika Návrhára podmienok
Výsledok
Funkcia vráti nový názov poľa LS7 pre dané pole odpovede.
4. Ako bezpečne otestovať zmeny
Dôrazne odporúčame otestovať LS7 vo vyhradenom prostredí pred aktualizáciou produkčných systémov.
4.1 Nainštalujte LS7 v samostatnom prostredí
Stiahnite si najnovšiu verziu LS7 z:
https://community.limesurvey.org
Nainštalujte ju oddelene od vášho súčasného prostredia.
4.2 Importujte svoje existujúce prvky
Otestujte pomocou:
- prieskumy
- motívy prieskumu
- témy admin rozhrania
- témy otázok
- pluginy
- vlastný JavaScript
- všetky vlastné integrácie, ktoré ste vytvorili
Skontrolujte, či všetko funguje podľa očakávaní s novým pomenovaním tabuliek a názvov polí. Aktualizujte každý kód, ktorý sa spolieha na staré pomenovanie.
4.3 Ako spustiť migráciu?
Ak si chcete pozrieť náhľad logiky migrácie vo svojej testovacej inštalácii:
- Zálohujte svoju databázu.
- Nainštalujte verziu LS7.
- Načítajte ľubovoľnú administračnú stránku, aby sa spustil skript migrácie.
- Skontrolujte zmeny v názvoch tabuliek a polí.
- Otestujte aplikáciu.
- V prípade potreby aktualizujte vlastný kód.
4.4 Nahlásenie problémov
Ďakujeme, že testujete už v tejto early fáze. Ak si všimnete niečo, čo sa v jadre systému javí ako nesprávne, nahláste to, aby sme to mohli čo najskôr opraviť.
5. Čo môže vyžadovať aktualizáciu
Úpravy môžu vyžadovať nasledujúce položky:
- pluginy, ktoré odkazujú na staré názvy polí alebo tabuliek
- všetky vlastné integrácie, ktoré ste vytvorili
- JavaScript používajúci selektory založené na názvoch polí
- vlastné témy, ktoré pracujú s identifikátormi súvisiacimi s odpoveďami
- integrácie závislé od predchádzajúcej schémy pomenovania
- import starých exportov, ako sú prieskumy, témy, témy otázok atď.
Je to očakávané a je to súčasť procesu aktualizácie.
6. Súhrn
- LS7 prináša kompletné vyčistenie pomenovania tabuliek odpovedí a názvov polí
- Ide o hlavnú štrukturálnu zmenu backendu v LS7
- Testovanie v samostatnom prostredí sa dôrazne odporúča
getFieldName()pomáha zobraziť náhľad budúceho pomenovania- V prípade potreby aktualizujte vlastný kód
- Nahláste problémy čo najskôr, pomôžete tak stabilizovať finálne vydanie