Форум русской поддержки Joomla!® CMS
03.12.2016, 04:27:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Удаление неиспользуемых изображений товаров

 (Прочитано 641 раз)
0 Пользователей и 1 Гость смотрят эту тему.
SolopoV
Завсегдатай
*****

Репутация: +12/-0
Offline Offline

Пол: Мужской
Сообщений: 462


зеленею...


« : 31.03.2015, 18:57:43 »

На просторах Интернет для Virtuemart2 нашел скрипт для удаления картинок товаров, которые (товары) удалены через админку. Вирт не удаляет файлы изображений, и этот скрипт может кому то и пригодится.

Подскажите пожалуйста, как поправить это скрипт для работы в Virtuemart3 (+Joomla3).

Заранее благодарен.

Вот код:

Код:
<?php $type = 'product';
$imgPath = $_SERVER['DOCUMENT_ROOT'].'/images/stories/virtuemart/product/';
$resizedPath = $_SERVER['DOCUMENT_ROOT'].'/images/stories/virtuemart/product/resized/';
set_time_limit(0);
require $_SERVER['DOCUMENT_ROOT'].'/configuration.php';
$conf = new JConfig; $db = new mysqli($conf->host, $conf->user, $conf->password, $conf->db);
 
$images = array_slice(scandir($imgPath), 2);
$resized = array_slice(scandir($resizedPath), 2);
 
$res = $db->query("SELECT
                    virtuemart_media_id,
                    file_url,
                    file_url_thumb
                   FROM {$conf->dbprefix}virtuemart_medias
                   WHERE virtuemart_media_id IN(SELECT DISTINCT virtuemart_media_id FROM {$conf->dbprefix}virtuemart_{$type}_medias)");
             
var_dump($res); die;
             
while($r = $res->fetch_array()){
    $activeID[] = $r[0];
     
    $p = pathinfo($r[1]);
    $activeImg[] = $p['basename'];
     
    $p = pathinfo($r[2]);
    $activeResized[] = $p['basename'];
}     
 
$notActiveImg = array_diff($images, $activeImg);
$notActiveResized = array_diff($resized, $activeResized);
 
$db->query("DELETE FROM {$conf->dbprefix}virtuemart_medias WHERE file_type='$type' AND virtuemart_media_id NOT IN(".implode(',', $activeID).")");
$db->close();
 
foreach($notActiveImg as $i){
    if(is_file($imgPath.$i) && $i != 'index.html')
        unlink($imgPath.$i);
}
foreach($notActiveResized as $i){
    if(is_file($resizedPath.$i)  && $i != 'index.html')
        unlink($resizedPath.$i);
}
Записан
vetall
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 36



« Ответ #1 : 28.07.2016, 14:47:34 »

Удаление не используемых изображений в Virtuemart
Записан
gartes
Живу я здесь
******

Репутация: +62/-3
Online Online

Сообщений: 826


Е = mс²


« Ответ #2 : 04.08.2016, 12:53:11 »

Код:
var_dump($res); die;
Попробуйте убрать die;
Записан
bgg87
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 141



« Ответ #3 : 19.10.2016, 13:20:52 »

Подскажите пожалуйста, как поправить это скрипт для работы в Virtuemart3 (+Joomla3).
Добрый день!
Удалось ли решить вопрос?
Записан
gartes
Живу я здесь
******

Репутация: +62/-3
Online Online

Сообщений: 826


Е = mс²


« Ответ #4 : 19.10.2016, 14:31:31 »

Думаю что нет ... ))
Записан
bgg87
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 141



« Ответ #5 : 19.10.2016, 14:36:54 »

Неужели на всем белом свете нет путного решения?
Я как то пробовал вычислять из БД, путем сравнения таблиц товаров и медиа, потом после получения списка неиспользуемых фото запускал скрипт удаления картинок по списку, но весь это процесс не из быстрых. 
Тогда нужно было 15тыс товаров проверить, фоток соответственно скопилось раза в 3 больше. Раз в год конечно можно, но все равно это не дело и хочется человеческое решение вопроса Azn
Записан
gartes
Живу я здесь
******

Репутация: +62/-3
Online Online

Сообщений: 826


Е = mс²


« Ответ #6 : 19.10.2016, 15:47:57 »

Можно конечно написать разумное решение..
Если интересно пишите в личку.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet