Prenova imen polj v LimeSurvey 7
From LimeSurvey Manual
Prenova imen polj in tabel odzivov - LimeSurvey 7
LimeSurvey 7 prinaša obsežno prenovo načina, kako se ustvarjajo tabele odzivov in imena polj. Posodobitev posodablja dolgoletne interne konvencije poimenovanja in ustvarja predvidljivejšo ter robustnejšo osnovo za vtičnike, integracije in prihodnji razvoj.
Ta stran se osredotoča na prenovo tabel odzivov in imen polj.
Ker gre za strukturno spremembo, bo morda treba posodobiti vse prilagojene rešitve, ki se zanašajo na staro poimenovanje. Na tej strani je pojasnjeno, kaj se spreminja, kako varno testirati in kako se pripraviti na nadgradnjo.
1. Kaj se spreminja
1.1 Nova imena tabel
LimeSurvey zdaj uporablja enotno shemo poimenovanja za tabele, povezane z odzivi.
| Staro ime tabele | Novo ime tabele |
|---|---|
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>
|
Vse poizvedbe SQL, integracije ali vtičniki, ki se sklicujejo na te tabele, bodo morda potrebovali prilagoditve.
1.2 Nova struktura imen polj
Imena polj zdaj sledijo predvidljivi in enotni obliki. Primeri:
Q<questionId>- korensko vprašanjeQ<questionId>_S<subquestionId>- podvprašanjaQ<questionId>_C<suffix>- komentar ali druga polja- polja za razvrščanje:
Q<questionId>_S<subquestionId>- elementi za razvrščanje so zdaj podvprašanja (glejte 1.3) - polja za čas: na ravni vprašanja ali skupine, odvisno od konteksta
To nadomešča starejše poimenovanje, ki temelji na sidXgidXqid.
1.3 Vprašanja z razvrščanjem
Vprašanja z razvrščanjem zdaj delujejo enako kot druge vrste vprašanj, ki temeljijo na podvprašanjih:
- Elementi so podvprašanja. Elementi za razvrščanje so shranjeni kot podvprašanja (vrsta
R), ne kot možni odgovori. - Imena polj uporabljajo standardno obliko podvprašanj
Q<questionId>_S<subquestionId>(eno za vsak razvrščeni element). - Odzivi so shranjeni v enem samem stolpcu JSON
Q<questionId>, kot urejeno polje kod elementov, kjer položaj = uvrstitev. Primer:["3", "1", "2"]
2. Zakaj je to pomembno
Ta prenova obravnava vzorce poimenovanja, ki so bili formalno določeni in uporabljani več let, ter jih vzpostavlja v enotno in robustno strukturo, na kateri lahko gradimo v prihodnje.
Take strukturne spremembe so redko preproste. Posegajo v dele sistema, na katere se zanaša veliko vtičnikov in integracij, zato jih zaradi kompleksnosti pogosto odlagamo. Vendar sta doslednost in predvidljivost pomembni za dolgoročno stabilnost.
Z reševanjem tega zdaj naredimo LimeSurvey čistejši in lažje razširljiv, čeprav je sprememba na površini večinoma nevidna.
3. Kako si ogledati predogled novih imen polj
Če želite videti, kako se bo posamezno obstoječe ime polja preslikalo v novo strukturo LS7, lahko izvedete naslednje korake:
- Naredite varnostno kopijo zbirke podatkov, saj so spremembe nepovratne in vam bo v primeru napake prav prišla zbirka podatkov pred spremembo za obnovitev
- Preklopite na vejo develop-major:
git checkout develop-major
ali klonirajte/prenesite projekt neposredno s te veje na https://github.com/LimeSurvey/LimeSurvey/tree/develop-major - Naložite skrbniško stran, da se sproži skripta za spremembo
- Sporočite morebitne napake, ki jih opazite med izvajanjem skripte za spremembo
- Preučite nova imena tabel in polj
- Preizkusite svoje vtičnike/teme in odpravite napake, povezane z imeni tabel in/ali polj
Funkcija, ki se uporablja za pretvorbo starih imen polj v nova, je naslednja:
getFieldName($tableName, $fieldName, $questions, $sid, $gid, $cd)
Parametri
- $tableName - izvirno ime tabele
- $fieldName - izvirno ime polja
- $questions - korensko vprašanje in njegova podvprašanja
- $sid - ID ankete
- $gid - ID skupine
- $cd - ali velja logika oblikovalca pogojev
Rezultat
Funkcija vrne novo ime polja LS7 za to polje odziva.
4. Kako varno preizkusiti spremembe
Zelo priporočamo, da LS7 preizkusite v namenskem okolju, preden nadgradite produkcijske sisteme.
4.1 Namestitev LS7 v ločeno okolje
Najnovejši LS7 prenesite z:
https://community.limesurvey.org
Namestite ga ločeno od svoje trenutne namestitve.
4.2 Uvozite svoja obstoječa sredstva
Testirajte z naslednjim:
- ankete
- teme anket
- teme skrbnika
- teme vprašanj
- vtičniki
- lasten JavaScript
- vse lastne integracije, ki ste jih razvili
Preverite, ali vse deluje, kot je pričakovano, z novim poimenovanjem tabel in imen polj. Posodobite vso kodo, ki se zanaša na staro poimenovanje.
4.3 Kako sprožiti migracijo?
Če želite v testni namestitvi pogledati predogled migracijske logike:
- Naredite varnostno kopijo svoje zbirke podatkov.
- Namestite različico LS7.
- Naložite katero koli skrbniško stran, da se zažene migracijska skripta.
- Preglejte spremembe tabel in imen polj.
- Preizkusite aplikacijo.
- Po potrebi posodobite lastno kodo.
4.4 Prijava težav
Hvala, da testirate že v zgodnji fazi. Če opazite kaj nenavadnega v jedru sistema, nam to prijavite, da lahko težavo čim prej odpravimo.
5. Kaj bo morda treba posodobiti
Naslednje bo morda treba prilagoditi:
- vtičniki, ki se sklicujejo na stara imena polj ali tabel
- vse lastne integracije, ki ste jih razvili
- JavaScript, ki uporablja izbirnike na podlagi imen polj
- lastne teme, ki komunicirajo z identifikatorji, povezanimi z odzivi
- integracije, ki so odvisne od prejšnje sheme poimenovanja
- uvoz starih izvozov, kot so ankete, teme, teme vprašanj itd.
To je pričakovano in del postopka nadgradnje.
6. Povzetek
- LS7 uvaja popolno ureditev poimenovanja tabel odzivov in imen polj
- To je glavna strukturna sprememba zaledja v LS7
- Testiranje v ločenem okolju je zelo priporočljivo
getFieldName()pomaga pri predogledu prihodnjega poimenovanja- Kjer je treba, posodobite lastno kodo
- Težave prijavite čim prej, da pomagate stabilizirati končno izdajo