Массовое удаление фотографий msGallery

Здравствуйте! Есть задача удаления фотографий товара подчистую (в том числе папки и файлы в assets). Если с записями в БД понятно, то как все вместе удалить? Может есть решение, о котором уже всем известно? Спасибо!
Stanislavsky
26 января 2018, 18:04
modx.pro
2
1 238
0
Поблагодарить автора Отправить деньги

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

Stanislavsky
29 января 2018, 12:58
0
Неужели ни у кого не было подобной задачи?
    Максим
    30 января 2018, 09:49
    0
    Либо не понял вопрос, либо тут все просто и очевидно:
    1) папку images/products удалить
    2) в БД очистить таблицу `modx_ms2_product_files`.
      Stanislavsky
      30 января 2018, 12:30
      0
      Задача была реализовать все это стандартным методом msGallery
    Stanislavsky
    29 января 2018, 17:10
    0
    Разобрался сам.
      Igor Ivanov
      30 января 2018, 08:03
      +2
      Ну так напиши!
        Stanislavsky
        30 января 2018, 12:39
        +1
        Есть стандартный метод удаления фотографий из галлереи в карточке товара. Находится он в классе 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();
                }
        
            }
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      6