Moodle'da Silinmiş Kullanıcıları Tamamen Yok Etmek

Öğrenmiş oldum ki, moodle asla bir kullanıcıyı silmiyormuş. Yani uygulama tarafında kullanıcı silinse bile, aslında yapılan işlem veritabanında (mdl_user tablosunda) sadece kullanıcının boolean olan deleted alanının 1’e dönüşmesi işlemiymiş.

Bu konu hakkında şöyle güzel bir tartışma var:

https://moodle.org/mod/forum/discuss.php?d=128227

Özetle bu tartışmada söylenen, bu silinmiş kullanıcıların SQL hareketleriyle uçurulmasının riskli olabileceği. Çünkü kullanıcıların forum mesajı, sınav sonucu vs. bilgilerini de tespit edip temizlemek gerekecek. Aksi halde arkamızda nereye bağlı olduğu veya nasıl oluştuğu belli olmayan bir yığın çöp veri bırakmış oluruz ki – fayda sağlayalım derken daha çok zararı dokunur. Moodle veritabanının karmaşık yapısı ise bu ilişki tespit işlemini çok zorlaştırıyor.

Ancak benim karşılaştığım durum biraz daha farklıydı. Bir çok öğrencinin kaydı yanlışlıkla -bulk upload- yapılmış ve daha sonra bunlar silinmiş. Bu öğrencilerin “firstaccess” ve “lastaccess” bilgileri de (mdl_user tablosunda) doğal olarak “0” (veya human-readable olarak 1970-01-01 02:00:00) çünkü hiç giriş yapmamışlar. O halde bunların arkada bırakabileceği harici bir data’da bulunmuyor, yani risk yok.

Risksiz uçurma işlemi öncesinde bunları tespit edelim:

Uçuralım:

Son “1,5 yıldır” giriş yapmamış kullanıcıların silinmesinde de bir sakınca yok, çünkü bunların yaratmış olabileceği forum mesajı, özel mesaj vb. içerikler zaten çoktaaan silinmiştir diyerek onları da uçuruyorum.

Bunları da tespit edelim:

* 1330006358 değeri, bugünün yani 23 Şubat 2013’ün timestamp bilgisidir.

Bunları da uçuralım:

Unutmadan veritabanımıza auto-repair yapalım:

Tebrikler, hepsi bu kadar. Veritabanım bu işlem sonucunda 10mb. kadar daha küçüldü.

Leave a Reply