Betul, Guru Duan. install.xml Anda saat ini hanya mendefinisikan 3 tabel:
-
local_jurnalmengajar -
local_jurnalmengajar_suratizin -
local_jurnallayananbk
Sementara di DB ada 9 tabel:
-
mdl_local_jm_nilaiharian← tidak ada di install.xml -
mdl_local_jurnalguruwali← tidak ada -
mdl_local_jurnallayananbk← sudah ada -
mdl_local_jurnalmengajar← sudah ada -
mdl_local_jurnalmengajar_beban← tidak ada -
mdl_local_jurnalmengajar_suratizin← sudah ada -
mdl_local_jurnalmengajar_suratizinguru← tidak ada -
mdl_local_jurnalpembinaan← tidak ada -
mdl_local_jurnalpramuka← tidak ada
Jadi, ada 6 tabel “local_…” yang tidak tercantum di install.xml.
Apa artinya?
-
install.xmlhanya dipakai saat instalasi baru plugin. -
Perubahan setelah itu harus lewat
db/upgrade.php(Moodle tidak pernah menghapus/menurunkan skema otomatis untuk mencegah kehilangan data). -
Karena sebagian tabel lahir dari versi sebelumnya/SQL manual/upgrade steps, DB Anda bisa lebih “kaya” dari
install.xml.
Rekomendasi aman
-
Konsolidasikan skema: pastikan semua tabel yang memang bagian plugin masuk ke
install.xmldan/atau dibuat lewatupgrade.php.-
Pilihan A (disarankan): Lengkapi
install.xmldengan definisi 6 tabel yang belum ada, sehingga instalasi baru akan lengkap. -
Pilihan B: Biarkan
install.xmltetap minimal, tapi pastikanupgrade.phpmeng-create tabel-tabel tersebut ketika upgrade dari versi lawas.
-
-
Jangan drop tabel “tambahan” kecuali Anda yakin tidak dipakai. Selalu backup dulu:
mysqldump -u root -p moodle mdl_local_jurnalguruwali mdl_local_jurnalpembinaan ... > backup_local_extra.sql
Cara cepat sinkron
-
XMLDB Editor (Site administration → Development → XMLDB editor)
Buat/rapikan definisi tabel-tabel yang belum ada (nama tanpa prefixmdl_). -
Contoh kerangka
install.xmluntuk satu tabel yang belum ada (sesuaikan kolomnya):<TABLE NAME="local_jurnalmengajar_beban" COMMENT="Beban jam mengajar per guru/kelas"> <FIELDS> <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true"/> <FIELD NAME="userid" TYPE="int" LENGTH="10" NOTNULL="true"/> <FIELD NAME="kelas" TYPE="char" LENGTH="20" NOTNULL="true"/> <FIELD NAME="jam_per_minggu" TYPE="int" LENGTH="3" NOTNULL="true" DEFAULT="0"/> <FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0"/> </FIELDS> <KEYS> <KEY NAME="primary" TYPE="primary" FIELDS="id"/> <KEY NAME="userid_fk" TYPE="foreign" FIELDS="userid" REFTABLE="user" REFFIELDS="id"/> </KEYS> </TABLE> -
Contoh
upgrade.phpuntuk membuat tabel jika belum ada (aman untuk site yang sudah jalan):if ($oldversion < 2025102901) { $table = new xmldb_table('local_jurnalmengajar_beban'); $table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null); $table->add_field('userid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null); $table->add_field('kelas', XMLDB_TYPE_CHAR, '20', null, XMLDB_NOTNULL, null, null); $table->add_field('jam_per_minggu', XMLDB_TYPE_INTEGER, '3', null, XMLDB_NOTNULL, null, '0'); $table->add_field('timecreated', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0'); $table->add_key('primary', XMLDB_KEY_PRIMARY, ['id']); $table->add_key('userid_fk', XMLDB_KEY_FOREIGN, ['userid'], 'user', ['id']); if (!$dbman->table_exists($table)) { $dbman->create_table($table); } upgrade_plugin_savepoint(true, 2025102901, 'local', 'jurnalmengajar'); }Ulangi pola itu untuk:
-
local_jurnalguruwali -
local_jurnalmengajar_suratizinguru -
local_jurnalpembinaan -
local_jurnalpramuka -
local_jm_nilaiharian
-
Tips teknis
-
Prefix
mdl_: di XML jangan pakaimdl_; Moodle menambahkan prefix otomatis sesuai$CFG->prefix. -
VERSION&version.php: setelah memperbaruiinstall.xml/upgrade.php, naikkan$plugin->versiondiversion.phpagar langkah upgrade dieksekusi. -
Audit cepat kolom: untuk menulis skema akurat, lihat struktur tiap tabel:
DESCRIBE mdl_local_jurnalguruwali; DESCRIBE mdl_local_jurnalmengajar_suratizinguru; DESCRIBE mdl_local_jurnalpembinaan; DESCRIBE mdl_local_jurnalpramuka; DESCRIBE mdl_local_jm_nilaiharian; DESCRIBE mdl_local_jurnalmengajar_beban;Samakan tipe/NOT NULL/default/foreign key di XML/upgrade.
Kalau Guru mau, saya bisa bantu tuliskan blok XML lengkap untuk ke-6 tabel itu berdasarkan output DESCRIBE masing-masing (tinggal ditempel di sini).
0 comments:
Post a Comment