Физическое удаление изображений прикрепленных к удаленному документу

Доброго времени суток.
Кто может подсказать, как сделать автоматическое физическое удаление изображений прикрепленных к удаленному документу.
Например у нас был документ, к нему были прикреплены фотографии, документ этот удалили, а фотографии на диске остаются. Если у нас много документов где постоянно происходит добавление а потом удаление фотографий, это разрастается потом в лишний хлам на диске который занимает место...

Возможно для решения этой задачи нужен какой то плагин или есть какое то др. решение в ядре...



Решение:


//<?php
/**
 * Individual_folder_for_tv_value
 * 
 * Plugin
 * 
 * @category    plugin
 * @version     1
 * @internal    @events OnDocFormRender,OnDocFormDelete
 * @internal    @modx_category Content
 * @internal    @disabled 1
**/

/* 
1.
manager/media/browser/mcpuk/tpl/tpl_javascript.php
Добавить, заменив старое значение --> browser.dir = "<?php echo text::jsValue($_SESSION['KCFINDER']['browser.dir'] ."/". $this->session['dir']) ?>";

2.
Создать папку --> assets/uploads/
*/


$e = &$modx->Event;


# Каждый документ имеет свою индивидуальную папку под изображение.
# KCFINDER_SESSION
if ($e->name == 'OnDocFormRender') {

	$dir = $_REQUEST['id'];
	if(!$dir) {
		$dir = $modx->db->getValue($modx->db->query("SELECT MAX(id)+1 FROM ". $modx->getFullTableName('site_content') ." LIMIT 1"));            
	}
	$_SESSION['KCFINDER']['browser.dir'] = "uploads/". $dir;
	$_SESSION['KCFINDER']['uploadDir'] = $modx->config['rb_base_dir'] . "uploads/" . $dir;
}


# Физическое удаление изображений которые прикреплены к документу, при удаление этого документа.
if ($e->name == 'OnDocFormDelete') {

	$dir = $_REQUEST['id'];
	$directory = $modx->config['rb_base_dir'] . "uploads/" . $dir;

	if (is_dir($directory)) {
		exec("rm -rf $directory"); 
	}

}


10 комментариев

avatar
Плагин на событие OnDocFormDelete. Хватаешь id удаленного документа ($id), обращаешься к таблице site_tmplvar_contentvalues, с нее берешь пути к файлам, и затем unlink
Сейчас занят, а так бы накидал плагин, дел на десять минут.
avatar
Понял вас, алгоритм ясень, спасибо!
avatar
Ты ж уже писал про это пару лет назад :)))
avatar
фак. забыл)))
avatar
а что-то у меня в последних версиях он отказался работать. Там в переменной пост кавычек не было, я исправил. Вроде скан запустился, но по факту потом выбранные картинки не удалялись. У тебя все работает?
avatar
там строчка unlink закомментирована :)
avatar
вот жешь)) что-то лень вникать было)
avatar
с учетом того что я забыл что я его писал…
Поправлю. Я сейчас тут разберусь с делами малеху и все что делал ранее приведу в божеский вид. Дай месяц.
avatar
Спасибо вам!
avatar
Вы не забывайте, что одно фото может быть использовано в нескольких документах, а также что существует multiTV…
  • 1px
  • 0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.