Удаление оригинального изображения после загрузки.
День добрый сообщество. Возникла такая задача, необходимо при загрузки изображений удалять оригинальную картинку, загрузка производится с фронта при помощи компонента Tickets. Возможно у кого то уже есть готовое решение.
Буду очень благодарен за любые комментарии.
Буду очень благодарен за любые комментарии.
Комментарии: 4
Если в общих чертах, то реализовать это можно следующим образом:
Пишем плагин на событие создания ресурса:
Как правило, загружаемые изображения имеют следующую структуру:
=> в вышеописанном плагине формируем путь до созданной для изображений директории:
И далее циклом находим и удаляем все файлы на 1 уровень вглубь внутри $path.
Минус этого решения: если вы в этих же папках храните что-то еще, помимо оригинальных изображений (подгруженные вручную файлы, например), то скрипт затрет и их тоже.
Решается или дополнительной проверкой на расширение файла (удалять только картинки) или вклиниваться/перехватывать процесс загрузки изображений тикетами.
Пишем плагин на событие создания ресурса:
<?php
if ($modx->event->name == 'OnDocFormSave') {
if($mode == 'new') {
//...
}
}
Как правило, загружаемые изображения имеют следующую структуру:
/путь_до_загрузки/
~/id/
~~(список папок для миниатюр)
~~(список оригинальных изображений)
=> в вышеописанном плагине формируем путь до созданной для изображений директории:
$path = $_SERVER['DOCUMENT_ROOT'] . '/путь_до_директории_загрузки/' . $resource->get('id') . '/';
//при желании можно указать источник файлов и динамически получать его путь до директории загрузки
И далее циклом находим и удаляем все файлы на 1 уровень вглубь внутри $path.
Минус этого решения: если вы в этих же папках храните что-то еще, помимо оригинальных изображений (подгруженные вручную файлы, например), то скрипт затрет и их тоже.
Решается или дополнительной проверкой на расширение файла (удалять только картинки) или вклиниваться/перехватывать процесс загрузки изображений тикетами.
UPD: если у вас в тикетах присутствует возможность дозагрузки изображений при редактировании, то условие $mode=='new' не требуется, но в таком случае (да и вообще, для большей целенаправленности) стоит ограничивать работу плагина по:
Категории
Шаблону
Тикетам в принципе
— и тому подобное)
Категории
$resource->get('parent')
Шаблону
$resource->get('template')
Тикетам в принципе
$resource->get('class_key') == 'Ticket'
— и тому подобное)
Спасибо за ответ, а что если оставлять только те изображения у которых имеется префикс thumb, а все остальные удалять… такое возможно?
скрин!
скрин!
Почему нет, по маске в цикле, через регулярку.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.