leonbazar Posted February 7, 2018 Share Posted February 7, 2018 Hola Estoy utilizando este script que encontré entre el foro inglés e internet. Utilizo prestashop 1.6... Con el elimino las fotos que están en el servidor y que no aparecen ya en la base de datos, en principio funciona bien, pero me he dado cuenta que no elimina la foto original. por ejemplo, en la carpeta img/p/1/0/2/4 me quita las imágenes que crea prestashop, pero no la foto original que yo he dado, es decir me quita: img/p/1/0/2/4/1024-cart_default.jpg img/p/1/0/2/4/1024-large_default.jpg img/p/1/0/2/4/1024-small_default.jpg img/p/1/0/2/4/1024-home_default.jpg img/p/1/0/2/4/1024-thickbox_default.jpg img/p/1/0/2/4/1024-medium_default.jpg pero la foto original img/p/1/0/2/4/1024.jpg no la quita. ¿Habrá algún alma caritativa que sepa programar que pueda hacer que se elimine también esa imagen? Gracias. <?php // root path of the shop require(dirname(__FILE__).'/config/config.inc.php'); // root path of the shop $shop_root = $_SERVER['DOCUMENT_ROOT']."/"; // limit number of image files to check, set to 10 for testing $limit=10000000000; include $shop_root . '/config/settings.inc.php'; $pdo = new PDO( 'mysql:host='._DB_SERVER_.';dbname='._DB_NAME_, _DB_USER_, _DB_PASSWD_ ); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $r=$pdo->query('select count(1) cnt from ps_image')->fetch(); echo 'count images database: '.$r['cnt'] . "<Br />"; // reset some counters $cnt_files=0; $cnt_checked=0; $cnt_not_found=0; $cnt_found=0; for($ii=1; ($ii<=9) && ($cnt_files != $limit); $ii++) { $pathRacine=$shop_root.'img/p/'.$ii; //delImage($path); for($jj=0; ($jj<=9) && ($cnt_files != $limit); $jj++) { $path1=$shop_root.'img/p/'.$ii.'/'.$jj; //delImage($path); for($kk=0; ($kk<=9) && ($cnt_files != $limit); $kk++) { $path2=$shop_root.'img/p/'.$ii.'/'.$jj.'/'.$kk; //delImage($path); for($ll=0; ($ll<=9) && ($cnt_files != $limit); $ll++) { $path3=$shop_root.'img/p/'.$ii.'/'.$jj.'/'.$kk.'/'.$ll; //delImage($path); for($mm=0; ($mm<=9) && ($cnt_files != $limit); $mm++) { $path4=$shop_root.'img/p/'.$ii.'/'.$jj.'/'.$kk.'/'.$ll.'/'.$mm; //delImage($path); for($nn=0; ($nn<=9) && ($cnt_files != $limit); $nn++) { $path5=$shop_root.'img/p/'.$ii.'/'.$jj.'/'.$kk.'/'.$ll.'/'.$mm.'/'.$nn; delImage($path5); } delImage($path4); } delImage($path3); } delImage($path2); } delImage($path1); } delImage($pathRacine); } echo 'files: '.$cnt_files.' checked: '.$cnt_checked.' not_found: '.$cnt_not_found.' found: '.$cnt_found; function delImage($imageDir) { global $limit, $pdo, $cnt_files, $cnt_checked, $cnt_not_found, $cnt_found; if ($handle = @opendir($imageDir)) { //@ is wriiten to avoid warning message and is handled in else condition echo $imageDir."<BR />"; while ($cnt_files != $limit && false !== ($entry = readdir($handle))) { if ($entry != "." && $entry != "..") { $cnt_files++; $pi = explode('-',$entry); if($pi[0]>0 && !empty($pi[1])) { $cnt_checked++; if(!checkExistsDb($pdo,$pi[0])) { $cnt_not_found++; echo 'rm '.$imageDir.'/'.$entry."<BR />"; unlink($imageDir.'/'.$entry); } else { $cnt_found++; } } } } closedir($handle); } else { echo $imageDir." doesn't exist".'<BR />'; } } function checkExistsDb($pdo, $id_image) { $r=$pdo->query($q='select \'ok\' ok, (select id_image from ps_image where id_image = '.(int)$id_image.') id_image'); $row=$r->fetch(); if($row['ok']!='ok') die( 'Problem with query, please correct'); return $row['id_image']?true:false; } ?> Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now