Saya ingin melacak acara perubahan sistem, untuk membuatnya dapat dikembalikan. Saat memeriksa variable_set (), saya melihat tidak ada kait yang disediakan untuk acara itu. Apakah ada cara bagi saya untuk melakukan ini?
Saya dapat mengubah untuk menghubungkan ke formulir pengaturan, tetapi ada banyak bentuk pengaturan untuk dilacak, jika saya dapat menghubungkan ke variabel_set () secara langsung, kode menjadi lebih sederhana.
Saya juga dapat melacak perubahan variabel dengan fitur + modul yang lebih kuat, tetapi lebih baik jika admin Drupal dapat menelusuri riwayat variabel tanpa menyentuh kode.
$conf
waktu itu: D Semoga jawaban saya yang diperbarui akan membantu seseorang.Anda bisa menggunakan pemicu basis data, yang akan lebih cepat dari kode.
Berikut ini adalah dokumen MySQL .
buat tabel untuk menyimpan nilai lama
buat pemicu Anda, satu untuk disisipkan dan satu untuk pembaruan:
Sekarang semua pembaruan dan sisipan Anda akan mencatat nilai-nilai lama di variable_backup.
sumber
Seperti yang Anda lihat di kode sumber,
variable_set()
tidak ada permintaan untuk kait atau perubahan, misalnya tidak adamodule_invoke_all()
ataudrupal_alter()
panggilan di sana.Namun, Anda mungkin dapat mendengarkan
db_merge()
kueri dengan ditempatkan khusushook_query_alter()
dan melakukan beberapa pemrosesan tambahan di sana, tetapi, seperti yang ditunjukkan oleh Molot,hook_query_alter()
tampaknya tidak mungkin dapat menargetkandb_merge()
kueri.Sebagai alternatif, Anda mungkin dapat snapshot cron tabel variabel untuk membandingkannya dengan revisi sebelumnya dari tabel itu, atau menerapkan beberapa bentuk penyimpanan revisi variabel lain untuk dibandingkan.
sumber
QueryAlterableInterface
memang diimplementasikan denganQuery
sendirinya. Namun dalam 8 manajemen konfigurasi tetap dibangun kembali. Dan dalam 7 hanya query pilih yang ditandai yang dapat diubah sejauh yang saya lihat. Tapi mungkin aku melewatkan sesuatu?Saya membuka tiket Permintaan Fitur di Drupal.org untuk membuat kait untuk mencegat pengaturan dan menghapus variabel sistem, dan saya menyerahkan ulasan inti patch untuk ini! Tolong lihat:
https://www.drupal.org/project/drupal/issues/2934718
sumber