Refaktor Nama Field LimeSurvey 7
From LimeSurvey Manual
Refaktor Nama Field dan Tabel Tanggapan - LimeSurvey 7
LimeSurvey 7 menghadirkan pembersihan besar-besaran pada cara tabel tanggapan dan nama field dibuat. Pembaruan ini memodernisasi konvensi penamaan internal yang sudah lama digunakan dan menciptakan fondasi yang lebih dapat diprediksi dan andal untuk plugin, integrasi, dan pengembangan di masa mendatang.
Halaman ini membahas refaktor tabel tanggapan dan nama field.
Karena ini merupakan perubahan struktural, pekerjaan kustom apa pun yang bergantung pada penamaan lama mungkin perlu diperbarui. Halaman ini menjelaskan apa saja yang berubah, cara menguji dengan aman, dan cara mempersiapkan peningkatan versi.
1. Apa yang berubah
1.1 Nama tabel baru
LimeSurvey kini menggunakan skema penamaan yang konsisten untuk tabel terkait tanggapan.
| Nama tabel lama | Nama tabel baru |
|---|---|
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>
|
Kueri SQL, integrasi, atau plugin apa pun yang merujuk ke tabel-tabel ini mungkin memerlukan penyesuaian.
1.2 Struktur nama field baru
Nama field kini mengikuti format yang dapat diprediksi dan konsisten. Contoh:
Q<questionId>- pertanyaan indukQ<questionId>_S<subquestionId>- subpertanyaanQ<questionId>_C<suffix>- komentar atau field lainnya- field peringkat:
Q<questionId>_S<subquestionId>- item peringkat kini berupa subpertanyaan (lihat 1.3) - field waktu: tingkat pertanyaan atau tingkat grup tergantung konteks
Ini menggantikan penamaan lama berbasis sidXgidXqid.
1.3 Pertanyaan peringkat
Pertanyaan peringkat kini bekerja seperti tipe pertanyaan berbasis subpertanyaan lainnya:
- Item adalah subpertanyaan. Item yang dapat diberi peringkat disimpan sebagai subpertanyaan (tipe
R), bukan opsi jawaban. - Nama field menggunakan format subpertanyaan standar
Q<questionId>_S<subquestionId>(satu untuk setiap item yang diberi peringkat). - Tanggapan disimpan dalam satu kolom JSON
Q<questionId>, berupa larik berurutan berisi kode item di mana posisi = peringkat. Contoh:["3", "1", "2"]
2. Mengapa ini penting
Pembersihan ini menangani pola penamaan yang telah didefinisikan secara resmi dan digunakan selama bertahun-tahun, lalu membawanya ke dalam struktur yang konsisten dan andal yang dapat kami andalkan untuk masa depan.
Perubahan struktural seperti ini jarang sekali sederhana. Perubahan ini menyentuh bagian sistem yang diandalkan banyak plugin dan integrasi, itulah sebabnya perubahan semacam ini sering ditunda karena kompleksitasnya. Namun menjaga konsistensi dan keterprediksian sangat penting untuk stabilitas jangka panjang.
Dengan menanganinya sekarang, kami membuat LimeSurvey lebih bersih dan lebih mudah dikembangkan, meskipun perubahan ini sebagian besar tidak terlihat di permukaan.
3. Cara melihat pratinjau nama field baru
Untuk melihat bagaimana nama field yang ada akan dipetakan ke struktur LS7 yang baru, Anda dapat melakukan langkah-langkah berikut:
- Cadangkan basis data, karena perubahan ini tidak dapat dibatalkan dan jika terjadi kesalahan, akan berguna memiliki basis data sebelum perubahan untuk pemulihan
- Checkout cabang develop-major:
git checkout develop-major
atau lakukan clone/unduh proyek langsung pada cabang ini di https://github.com/LimeSurvey/LimeSurvey/tree/develop-major - Muat halaman admin untuk memicu skrip perubahan
- Laporkan setiap kesalahan yang Anda temui selama eksekusi skrip perubahan
- Pelajari nama tabel dan nama field yang baru
- Uji plugin/tema Anda dan perbaiki kesalahan terkait nama tabel dan/atau nama field
Fungsi yang digunakan untuk mengonversi nama field lama menjadi nama field baru adalah sebagai berikut:
getFieldName($tableName, $fieldName, $questions, $sid, $gid, $cd)
Parameter
- $tableName - nama tabel asli
- $fieldName - nama field asli
- $questions - pertanyaan induk dan subpertanyaannya
- $sid - ID survei
- $gid - ID grup
- $cd - apakah logika Desainer kondisi berlaku
Hasil
Fungsi ini mengembalikan nama field LS7 yang baru untuk field tanggapan tersebut.
4. Cara menguji perubahan dengan aman
Sangat disarankan untuk menguji LS7 di lingkungan khusus sebelum meningkatkan versi sistem produksi.
4.1 Instal LS7 di lingkungan terpisah
Unduh LS7 terbaru dari:
https://community.limesurvey.org
Instal secara terpisah dari penyiapan Anda saat ini.
4.2 Impor aset Anda yang sudah ada
Uji menggunakan:
- survei
- Tema survei
- Tema admin
- Tema pertanyaan
- plugin
- JavaScript kustom
- integrasi kustom apa pun yang telah Anda buat
Periksa apakah semuanya berfungsi seperti yang diharapkan dengan penamaan tabel dan nama bidang yang baru. Perbarui kode apa pun yang bergantung pada penamaan lama.
4.3 Cara memicu migrasi
Jika Anda ingin melihat pratinjau logika migrasi di instalasi pengujian Anda:
- Cadangkan basis data Anda.
- Instal LimeSurvey versi LS7.
- Buka halaman admin mana pun untuk menjalankan skrip migrasi.
- Tinjau perubahan pada tabel dan nama bidang.
- Uji aplikasi.
- Perbarui kode kustom jika diperlukan.
4.4 Laporkan masalah
Terima kasih telah menguji sejak dini. Jika Anda menemukan sesuatu yang tampak janggal pada inti sistem, silakan laporkan agar kami dapat segera memperbaikinya.
5. Apa saja yang mungkin perlu diperbarui
Hal-hal berikut mungkin perlu disesuaikan:
- plugin yang merujuk ke nama bidang atau nama tabel lama
- integrasi kustom apa pun yang Anda buat
- JavaScript yang menggunakan selektor berbasis nama bidang
- tema kustom yang berinteraksi dengan pengenal terkait tanggapan
- integrasi yang bergantung pada skema penamaan sebelumnya
- mengimpor ekspor lama seperti survei, tema, tema pertanyaan, dan sebagainya.
Hal ini wajar dan merupakan bagian dari proses peningkatan versi.
6. Ringkasan
- LS7 menghadirkan pembersihan menyeluruh pada penamaan tabel tanggapan dan nama bidang
- Ini adalah perubahan struktural backend utama pada LS7
- Sangat disarankan untuk melakukan pengujian di lingkungan terpisah
getFieldName()membantu melihat pratinjau penamaan di masa mendatang- Perbarui kode kustom jika diperlukan
- Laporkan masalah sejak dini untuk membantu menstabilkan rilis final