Refaktoriranje naziva polja u LimeSurvey 7
From LimeSurvey Manual
Refaktoriranje naziva polja i tablica odgovora - LimeSurvey 7
LimeSurvey 7 donosi veliko čišćenje načina na koji se generiraju tablice odgovora i nazivi polja. Ovo ažuriranje moderinizira dugogodišnje interne konvencije imenovanja i stvara predvidljiviju i robusniju osnovu za dodatke, integracije i budući razvoj.
Ova stranica posvećena je refaktoriranju tablica odgovora i naziva polja.
Budući da je riječ o strukturnoj promjeni, svaki prilagođeni rad koji se oslanja na stara imena možda će zahtijevati ažuriranje. Ova stranica objašnjava što se mijenja, kako sigurno testirati i kako se pripremiti za nadogradnju.
1. Što se mijenja
1.1 Novi nazivi tablica
LimeSurvey sada koristi dosljednu shemu imenovanja za tablice povezane s odgovorima.
| Stari naziv tablice | Novi naziv tablice |
|---|---|
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>
|
Svi SQL upiti, integracije ili dodaci koji se pozivaju na ove tablice možda će zahtijevati prilagodbu.
1.2 Nova struktura naziva polja
Nazivi polja sada slijede predvidljiv i dosljedan format. Primjeri:
Q<questionId>- korijensko pitanjeQ<questionId>_S<subquestionId>- potpitanjaQ<questionId>_C<suffix>- komentar ili ostala polja- polja rangiranja:
Q<questionId>_S<subquestionId>- stavke rangiranja sada su potpitanja (vidi 1.3) - polja vremena: na razini pitanja ili grupe, ovisno o kontekstu
Ovo zamjenjuje stariji način imenovanja temeljen na sidXgidXqid.
1.3 Pitanja rangiranja
Pitanja rangiranja sada rade kao i ostali tipovi pitanja temeljeni na potpitanjima:
- Stavke su potpitanja. Stavke koje se rangiraju pohranjuju se kao potpitanja (tip
R), a ne kao opcije odgovora. - Nazivi polja koriste standardni format potpitanja
Q<questionId>_S<subquestionId>(jedan po rangiranoj stavci). - Odgovori se pohranjuju u jedan JSON stupac
Q<questionId>, kao poredani niz kodova stavki gdje pozicija = rang. Primjer:["3", "1", "2"]
2. Zašto je ovo važno
Ovo čišćenje rješava obrasce imenovanja koji su formalno definirani i korišteni tijekom mnogo godina te ih dovodi u dosljednu i robusnu strukturu na kojoj možemo graditi u budućnosti.
Ovakve strukturne promjene rijetko su jednostavne. Dotiču dijelove sustava na koje se oslanjaju mnogi dodaci i integracije, zbog čega se zbog složenosti često odgađaju. No dosljednost i predvidljivost važne su za dugoročnu stabilnost.
Rješavanjem ovoga sada LimeSurvey činimo urednijim i lakšim za proširivanje, iako je promjena na površini uglavnom nevidljiva.
3. Kako pregledati nove nazive polja
Da biste vidjeli kako će se bilo koji postojeći naziv polja preslikati u novu strukturu LS7, možete slijediti ove korake:
- Napravite sigurnosnu kopiju baze podataka jer se promjene ne mogu poništiti, a ako nešto pođe po zlu, bit će korisno imati bazu podataka prije promjene za oporavak
- Prebacite se na granu develop-major:
git checkout develop-major
ili klonirajte/preuzmite projekt izravno s ove grane na https://github.com/LimeSurvey/LimeSurvey/tree/develop-major - Učitajte administratorsku stranicu kako biste pokrenuli skriptu za promjenu
- Prijavite sve pogreške koje se pojave tijekom izvođenja skripte za promjenu
- Proučite nove nazive tablica i polja
- Testirajte svoje dodatke/teme i ispravite pogreške povezane s nazivima tablica i/ili polja
Funkcija koja se koristi za pretvaranje starih naziva polja u nove je sljedeća:
getFieldName($tableName, $fieldName, $questions, $sid, $gid, $cd)
Parametri
- $tableName - izvorni naziv tablice
- $fieldName - izvorni naziv polja
- $questions - korijensko pitanje i njegova potpitanja
- $sid - ID upitnika
- $gid - ID skupine
- $cd - primjenjuje li se logika dizajnera uvjeta
Rezultat
Funkcija vraća novi naziv polja LS7 za to polje odgovora.
4. Kako sigurno testirati promjene
Toplo se preporučuje testirati LS7 u zasebnom okruženju prije nadogradnje produkcijskih sustava.
4.1 Instalirajte LS7 u zasebno okruženje
Preuzmite najnoviji LS7 s:
https://community.limesurvey.org
Instalirajte ga odvojeno od svoje trenutne instalacije.
4.2 Uvezite svoje postojeće sadržaje
Testirajte pomoću:
- upitnika
- tema upitnika
- tema administratora
- tema pitanja
- dodataka
- prilagođenog JavaScripta
- svih prilagođenih integracija koje ste izradili
Provjerite radi li sve prema očekivanjima s novim nazivima tablica i polja. Ažurirajte sav kôd koji se oslanja na stare nazive.
4.3 Kako pokrenuti migraciju?
Ako želite pregledati logiku migracije u svojoj testnoj instalaciji:
- Izradite sigurnosnu kopiju baze podataka.
- Instalirajte LS7 verziju.
- Učitajte bilo koju administratorsku stranicu kako biste pokrenuli skriptu za migraciju.
- Pregledajte promjene naziva tablica i polja.
- Testirajte aplikaciju.
- Po potrebi ažurirajte prilagođeni kôd.
4.4 Prijava problema
Hvala vam što ovo testirate već sada. Ako primijetite nešto u jezgri sustava što ne izgleda ispravno, prijavite to kako bismo to mogli ispraviti što je prije moguće.
5. Što bi moglo zahtijevati ažuriranje
Sljedeće bi moglo zahtijevati prilagodbe:
- dodaci koji referenciraju stare nazive polja ili tablica
- sve prilagođene integracije koje ste izradili
- JavaScript koji koristi selektore temeljene na nazivima polja
- prilagođene teme koje koriste identifikatore povezane s odgovorima
- integracije koje ovise o prethodnoj shemi imenovanja
- uvoz starih izvoza kao što su upitnik, teme, teme pitanja itd.
To je očekivano i dio procesa nadogradnje.
6. Sažetak
- LS7 uvodi potpuno čišćenje imenovanja tablica odgovora i naziva polja
- Ovo je glavna strukturna promjena pozadinskog sustava u LS7
- Testiranje u zasebnom okruženju se snažno preporučuje
getFieldName()pomaže u pregledu budućeg imenovanja- Ažurirajte prilagođeni kôd gdje je potrebno
- Probleme prijavite što ranije kako biste pomogli stabilizirati završno izdanje