Silinen ya da düzenlenen içeriklere bağlı dosyaların da silinmesi

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
Muhittin's picture

Merhaba arkadaşlar.
Senaryo:
Resimler isminde bir içerik türü oluşturdum ve resim yükle isminde bir field ekledim 15 resim yükleme sınırı koydum. (Bu içerik türünü de kayıtlı kullanıcılara açtım kayıtlı kullanıcılar istedikleri kadar yayın yapabilecek.)
Herhangi bir kullanıcı 15 resim yayınladı ama resimler hoşuna gitmedi içeriği tekrar düzenledi ve eski resimlerin hepsini yeni 15 resim ile değiştirdi ve yayınladı.
Sorun bundan sonra;
Yayından kaldırdırılan önceki resimler halen serverde Files klasöründe duruyor ve boşyere hostingde yer kaplıyor.
İçerik düzenleme ve ya silme yaptıktan sonra kullanılmayan dosyaların otomatik olarak silinmesini nasıl yapabilirim?

Comments

Modul

xtremetawsan's picture

İstediğiniz işi yapan birkaç modul var https://www.drupal.org/project/fancy_file_delete gibi drupal veritabanına aşina iseniz bu işi yapacak bir cron job da oluşturabilirsiniz

$result = db_query("SELECT fid FROM file_managed WHERE NOT EXISTS (SELECT * FROM file_usage WHERE file_managed.fid = file_usage.fid) ");

//Delete file & database entry
for ($i = 1; $i <= $result->rowCount(); $i++) {
  $record = $result->fetchObject();
  $file = file_load($record->fid);
  if ($file != NULL) {
    file_delete($file);
  } }

mantığında kullanılmayan dosyaları bulup silecek bir cron ayarlayabilirsiniz.

Fancy File Delete ve Audit

Muhittin's picture

Fancy File Delete ve Audit file modüllerini denedim ama dosyaları fiziksel olarak silmedi. Cron deneyeyim inşallah olur.

Drupal Öğrencisi

Facebook Grubu

xtremetawsan's picture

Burası çok aktif kullanılmıyor sanırım, isterseniz sorunuzu facebooktaki DrupalTurkiye grubuna (https://www.facebook.com/groups/drupalturkiye/) da yazın, orda benim de dahil olduğum birkaç kullanıcı yardımcı olur.

İlgin ve alakan içim çok

Muhittin's picture

İlgin ve alakan içim çok teşekkür ederim.
https://www.drupal.org/project/fancy_file_delete
bu mudül de bir sorun var galiba VBO ile silmiyor ama FID no ile manuel siline biliyor. Şimdilik bununla idare edeceğiz mecburen.
Benim anlamadığım Drupal gibi güzçlü bir yapının çekirdeğinde neden böyle bir sıkıntı var. Bence olması gereken Drupal çekirdeğinde bu ayarların olması. Mesela ben bir ilan sitesi üserinde çalışıyorum, kayıtlı kullanıcılar sürekli resim yükleyecek veya değiştirecek kullanılmayan dosyalar ciddi anlamda hostinge boş yere yer kaplayacak. Bence Drupal çekirdekte default bir seçenek olması kullanılmayan dosyaların silinip silinmeyeceğini seçebileceğimiz.
Burada konu açmadan önce baya bir araştırma yaptım, çok fazla bu konuda issue açılmış ama bu iki modülden başka bir şey yok.
Yardımın için çok teşekkür ederim xtremetawsan.

Drupal Öğrencisi

Başka çözüm...

xtremetawsan's picture

Aslında şöyle bir çözüm de olabilir, imaj silme fonksiyonuna bir hook yapıp silme esnasında dosyanın gercekten silinmesini sağlayacak bir kod da yazılabilir. Şu aralar elim biraz yoğun ama olmadı size oyle bir modul yazıp atayım.

Bu arada benzer problem Wordpress te de var bir süre sonra çer çöp dosya kaynıyor public klasörü

Eğer öyle bir modül

Muhittin's picture

Eğer öyle bir modül yaparsanız size ben ve bir çok Drupal kullanıcısı minnettar kalacaktır.

Drupal Öğrencisi