Pemfaktoran Semula Nama Medan LimeSurvey 7
From LimeSurvey Manual
Pemfaktoran Semula Nama Medan dan Jadual Respons - LimeSurvey 7
LimeSurvey 7 memperkenalkan pembersihan besar-besaran cara jadual respons dan nama medan dijana. Kemas kini ini memodenkan konvensyen penamaan dalaman yang telah lama digunakan dan mewujudkan asas yang lebih boleh diramal dan teguh untuk pemalam, integrasi dan pembangunan masa depan.
Halaman ini memberi tumpuan kepada pemfaktoran semula jadual respons dan nama medan.
Oleh kerana ini ialah perubahan struktur, sebarang kerja tersuai yang bergantung pada penamaan lama mungkin memerlukan kemas kini. Halaman ini menerangkan apa yang berubah, cara menguji dengan selamat dan cara membuat persediaan untuk naik taraf.
1. Apa yang berubah
1.1 Nama jadual baharu
LimeSurvey kini menggunakan skema penamaan yang konsisten untuk jadual berkaitan jawapan.
| Nama jadual lama | Nama jadual baharu |
|---|---|
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>
|
Sebarang pertanyaan SQL, integrasi atau pemalam yang merujuk jadual ini mungkin memerlukan pelarasan.
1.2 Struktur nama medan baharu
Nama medan kini mengikut format yang boleh diramal dan konsisten. Contoh:
Q<questionId>- soalan indukQ<questionId>_S<subquestionId>- subsoalanQ<questionId>_C<suffix>- komen atau medan lain- medan kedudukan:
Q<questionId>_S<subquestionId>- item kedudukan kini ialah subsoalan (lihat 1.3) - medan pemasaan: pada peringkat soalan atau peringkat kumpulan bergantung pada konteks
Ini menggantikan penamaan lama berasaskan sidXgidXqid.
1.3 Soalan kedudukan
Soalan kedudukan kini berfungsi seperti jenis soalan lain yang berasaskan subsoalan:
- Item ialah subsoalan. Item yang boleh disusun disimpan sebagai subsoalan (jenis
R), bukan pilihan jawapan. - Nama medan menggunakan format subsoalan standard
Q<questionId>_S<subquestionId>(satu bagi setiap item yang disusun). - Jawapan disimpan dalam satu lajur JSON
Q<questionId>, sebagai tatasusunan tertib kod item di mana kedudukan = peringkat. Contoh:["3", "1", "2"]
2. Mengapa ini penting
Pembersihan ini menangani corak penamaan yang telah ditakrifkan secara rasmi dan digunakan selama bertahun-tahun, dan membawanya ke dalam struktur yang konsisten dan teguh yang boleh kita bina untuk masa depan.
Perubahan struktur seperti ini jarang mudah. Ia menyentuh bahagian sistem yang menjadi pergantungan banyak pemalam dan integrasi, sebab itulah ia sering ditangguhkan kerana kerumitannya. Namun, mengekalkan konsistensi dan kebolehramalan adalah penting untuk kestabilan jangka panjang.
Dengan menanganinya sekarang, kami menjadikan LimeSurvey lebih bersih dan lebih mudah dikembangkan, walaupun perubahan ini kebanyakannya tidak kelihatan di permukaan.
3. Cara pratonton nama medan baharu
Untuk melihat bagaimana mana-mana nama medan sedia ada dipetakan kepada struktur LS7 yang baharu, anda boleh melakukan langkah berikut:
- Buat sandaran pangkalan data, kerana perubahan ini tidak boleh dipulihkan dan jika berlaku kesilapan, pangkalan data sebelum perubahan akan berguna untuk pemulihan
- Checkout cabang develop-major:
git checkout develop-major
atau klon/muat turun projek terus pada cabang ini di https://github.com/LimeSurvey/LimeSurvey/tree/develop-major - Muatkan halaman pentadbir untuk mencetuskan skrip perubahan
- Laporkan sebarang ralat yang anda temui semasa skrip perubahan dijalankan
- Kaji nama jadual dan nama medan yang baharu
- Uji pemalam/tema anda dan baiki ralat yang berkaitan dengan nama jadual dan/atau nama medan
Fungsi yang digunakan untuk menukar nama medan lama kepada nama medan baharu ialah seperti berikut:
getFieldName($tableName, $fieldName, $questions, $sid, $gid, $cd)
Parameter
- $tableName - nama jadual asal
- $fieldName - nama medan asal
- $questions - soalan induk dan subsoalannya
- $sid - ID tinjauan
- $gid - ID kumpulan
- $cd - sama ada logik Pereka syarat digunakan
Hasil
Fungsi ini mengembalikan nama medan LS7 yang baharu bagi medan jawapan tersebut.
4. Cara menguji perubahan dengan selamat
Anda amat disyorkan menguji LS7 dalam persekitaran khusus sebelum menaik taraf sistem pengeluaran.
4.1 Pasang LS7 dalam persekitaran berasingan
Muat turun LS7 terkini dari:
https://community.limesurvey.org
Pasangnya secara berasingan daripada persediaan semasa anda.
4.2 Import aset sedia ada anda
Uji menggunakan:
- tinjauan
- Tema tinjauan
- Tema pentadbir
- Tema soalan
- pemalam
- JavaScript tersuai
- sebarang integrasi tersuai yang telah anda bina
Semak sama ada semuanya berfungsi seperti yang dijangkakan dengan penamaan jadual dan nama medan yang baharu. Kemas kini sebarang kod yang bergantung pada penamaan lama.
4.3 Bagaimana untuk mencetuskan migrasi?
Jika anda ingin pratonton logik migrasi dalam pemasangan ujian anda:
- Sandarkan pangkalan data anda.
- Pasang versi LS7.
- Muatkan mana-mana halaman pentadbir untuk menjalankan skrip migrasi.
- Semak perubahan pada jadual dan nama medan.
- Uji aplikasi tersebut.
- Kemas kini kod tersuai jika perlu.
4.4 Laporkan isu
Terima kasih kerana menguji lebih awal. Jika anda menemui sesuatu yang kelihatan tidak betul daripada teras, sila laporkannya supaya kami dapat membetulkannya secepat mungkin.
5. Perkara yang mungkin memerlukan kemas kini
Perkara berikut mungkin memerlukan pelarasan:
- plugin yang merujuk nama medan atau nama jadual lama
- sebarang integrasi tersuai yang telah anda bina
- JavaScript yang menggunakan pemilih berasaskan nama medan
- tema tersuai yang berinteraksi dengan pengecam berkaitan jawapan
- integrasi yang bergantung pada skema penamaan sebelumnya
- mengimport eksport lama seperti tinjauan, tema, Tema soalan dan sebagainya.
Ini adalah dijangka dan merupakan sebahagian daripada proses naik taraf.
6. Ringkasan
- LS7 memperkenalkan pembersihan menyeluruh bagi penamaan jadual respons dan nama medan
- Ini ialah perubahan struktur bahagian belakang yang utama untuk LS7
- Pengujian dalam persekitaran yang berasingan amat disyorkan
getFieldName()membantu pratonton penamaan akan datang- Kemas kini kod tersuai jika diperlukan
- Laporkan isu lebih awal untuk membantu menstabilkan keluaran akhir