Массовое удаление фотографий msGallery
Здравствуйте! Есть задача удаления фотографий товара подчистую (в том числе папки и файлы в assets). Если с записями в БД понятно, то как все вместе удалить? Может есть решение, о котором уже всем известно? Спасибо!
Поблагодарить автора
Отправить деньги
Комментарии: 6
Неужели ни у кого не было подобной задачи?
Либо не понял вопрос, либо тут все просто и очевидно:
1) папку images/products удалить
2) в БД очистить таблицу `modx_ms2_product_files`.
1) папку images/products удалить
2) в БД очистить таблицу `modx_ms2_product_files`.
Задача была реализовать все это стандартным методом msGallery
Разобрался сам.
Ну так напиши!
Есть стандартный метод удаления фотографий из галлереи в карточке товара. Находится он в классе msproductfile.class.php на 272 строке. Его берем и переделываем под свою задачу, но сначала инициализируем источник файлов:
public function initializeSource($ctx = '')
{
if ($this->mediaSource = $this->modx->getObject('sources.modMediaSource', 2) {
if (empty($ctx)) {
$product = $this->getOne('Product');
$ctx = $product->get('context_key');
}
$this->mediaSource->set('ctx', $ctx);
$this->mediaSource->initialize();
return $this->mediaSource;
}
return false;
}
А вот и метод удаленияpublic function remove($file)
{
$parent = $this->modx->getObject('msProductFile', array('parent' => 0, 'file' => $file)); // это родительская папка
$parent->remove();
$children = $this->modx->getIterator('msProductFile', array('file' => $file));
foreach ($children as $child) { //Здесь удаляются файлы в папке
$child->remove();
}
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.