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

  • 6 Ответов
  • 967 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

SolopoV

  • *****
  • 474
  • [+]12 / [-]0
  • зеленею...
На просторах Интернет для 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);
}



*

bgg87

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


*

bgg87

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

*

gartes

Можно конечно написать разумное решение..
Если интересно пишите в личку.