Удаление оригинального изображения после загрузки.

День добрый сообщество. Возникла такая задача, необходимо при загрузки изображений удалять оригинальную картинку, загрузка производится с фронта при помощи компонента Tickets. Возможно у кого то уже есть готовое решение.
Буду очень благодарен за любые комментарии.
Дмитрий Середюк
10 декабря 2015, 06:51
modx.pro
1
1 099
0

Комментарии: 4

Максим Кузнецов
17 декабря 2015, 12:45
0
Если в общих чертах, то реализовать это можно следующим образом:
Пишем плагин на событие создания ресурса:
<?php
	if ($modx->event->name == 'OnDocFormSave') {
		if($mode == 'new') {  
			//...
		}
	}

Как правило, загружаемые изображения имеют следующую структуру:
/путь_до_загрузки/
~/id/
~~(список папок для миниатюр)
~~(список оригинальных изображений)

=> в вышеописанном плагине формируем путь до созданной для изображений директории:
$path = $_SERVER['DOCUMENT_ROOT'] . '/путь_до_директории_загрузки/' . $resource->get('id') . '/';
//при желании можно указать источник файлов и динамически получать его путь до директории загрузки

И далее циклом находим и удаляем все файлы на 1 уровень вглубь внутри $path.

Минус этого решения: если вы в этих же папках храните что-то еще, помимо оригинальных изображений (подгруженные вручную файлы, например), то скрипт затрет и их тоже.

Решается или дополнительной проверкой на расширение файла (удалять только картинки) или вклиниваться/перехватывать процесс загрузки изображений тикетами.
    Максим Кузнецов
    17 декабря 2015, 13:18
    0
    UPD: если у вас в тикетах присутствует возможность дозагрузки изображений при редактировании, то условие $mode=='new' не требуется, но в таком случае (да и вообще, для большей целенаправленности) стоит ограничивать работу плагина по:

    Категории
    $resource->get('parent')

    Шаблону
    $resource->get('template')

    Тикетам в принципе
    $resource->get('class_key') == 'Ticket'

    — и тому подобное)
      Дмитрий Середюк
      17 декабря 2015, 13:54
      0
      Спасибо за ответ, а что если оставлять только те изображения у которых имеется префикс thumb, а все остальные удалять… такое возможно?
      скрин!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
4