Script pour effacer les images non utilisé |
Bienvenue invité ( Connexion | Inscription )
Script pour effacer les images non utilisé |
20 Aug 2009, 03:18
Message
#1
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 91 Inscrit : 9-May 03 Lieu : Quebec CANADA Membre no 1137 |
Hello a tous,
J'essaye d'ecrire un petit script qui m'indiquerait le nom des fichiers image non utiliser par ma boutique. J'ai donc une base ou se trouve les infos de mes 3000 items. Jutilise 2 images par item. Les 2 images que chaque produits son appeler par le numero d'item suivi de -01_S.gif et l'autre -01_L.gif Voici donc ce que j'ai ecrit: Code code supprimé Mais bon ca maffiche pratiquement tout les fichiers et pourtant certains sont bien dans ma base de donnee. J'ai surement fait une petite erreur, mais je ne suis pas cappable de la trouver. Si vous pouvez aider... Merci
Raison de l'édition : code supprimé
-------------------- Will - oscommerce-2.2rc2a
|
|
20 Aug 2009, 08:57
Message
#2
|
|
5eme dan OSC Groupe : Administrateur Messages : 9221 Inscrit : 4-March 03 Lieu : Pau Membre no 927 |
je ne sais pas comment est constitué ta bdd ni ton dossier images mais je pense que la méthode n'est pas bonne.
Perso je ferai un array de tous les fichiers image du dossier = $files_image puis un array de toutes les images contenues dans la table products = $products_image et une comparaison des deux avec un foreach : foreach ($files_image as $image){ if ($image !in_array($products_image)) echo $image.'<br>'; } tu pourrais même te permettre de vérifier que toutes les images des produits sont bien des fichiers en faisant l'inverse. -------------------- Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues : Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums. Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin. ----------------------------- Quelques sites de référence --------------------------- PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien) |
|
20 Aug 2009, 09:18
Message
#3
|
|
Ceinture bleue OSC Groupe : Modérateurs Messages : 1037 Inscrit : 16-December 02 Lieu : Est Membre no 669 |
|
|
20 Aug 2009, 09:39
Message
#4
|
|
5eme dan OSC Groupe : Administrateur Messages : 9221 Inscrit : 4-March 03 Lieu : Pau Membre no 927 |
Cool ça Greuter, je ne la connaissais pas !
elle marche très bien ! -------------------- Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues : Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums. Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin. ----------------------------- Quelques sites de référence --------------------------- PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien) |
|
20 Aug 2009, 15:16
Message
#5
|
|
Ceinture jaune OSC Groupe : Membres Messages : 69 Inscrit : 4-March 08 Lieu : Everywhere Membre no 21032 |
je confirme ca marche du tonnerre
|
|
20 Aug 2009, 19:20
Message
#6
|
|
Ceinture bleue OSC Groupe : Membres Messages : 983 Inscrit : 8-April 08 Lieu : strasbourg Membre no 21429 |
Pourriez-vous nous dire quel version avez-vous utilisé s'il vous plais?
cordialement |
|
20 Aug 2009, 22:26
Message
#7
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 91 Inscrit : 9-May 03 Lieu : Quebec CANADA Membre no 1137 |
J'ai une question est ce que cette contrib efface automatiquement les fichiers ou donne t-elle un choix?
-------------------- Will - oscommerce-2.2rc2a
|
|
20 Aug 2009, 22:43
Message
#8
|
|
5eme dan OSC Groupe : Administrateur Messages : 9221 Inscrit : 4-March 03 Lieu : Pau Membre no 927 |
Elle efface toute ta base de données et va s'auto-détruire après.
L'as-tu téléchargée ? Au passage pour audioshop55 j'ai pris la dernière version, au hasard. Ouvert le fichier et regardé ce qu'elle faisait puis copié le script en local dans admin. (c'est la seule chose à faire pour tester) Ce que chacun devrait faire lors de la découverte d'une nouvelle contribution surtout quand elle est aussi light que ça. Le read-me rédigé par l'auteur, Azer, est assez clair : Citation Scenario: I have 9000 image files. 2400 of them are not being used. How to find them and remove them quickly and safely. This script does just that. Here is the full script, read it for more details. Just copy it and run it in the admin root What this script does: * Read the database and report back a list of installed images * Mark (in RED) any DB listed image which does not exist on the server * Read the server images and report back a list * Compare the lists for missing data * Offer you the ability to check or uncheck listed images controlling what gets renamed * Rename the USER checked listed images from myimage.jpg to #UNUSED_myimage.jpg * Allow you to ftp and delete ALL renamed #UNUSED_myimage.jpg images Dites les gars, vous voulez quoi en plus du lien vers cette contrib ? Qu'on la teste pour vous ? Qu'on vous traduise le read-me ? faudrait peut-être revenir dans le monde où vous vivez ! Pour la traduc, c'est par là : http://translate.google.com/translate_t?hl...l=en&tl=fr# Allez, au boulot! -------------------- Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues : Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums. Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin. ----------------------------- Quelques sites de référence --------------------------- PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien) |
|
21 Aug 2009, 06:43
Message
#9
|
|
Ceinture bleue OSC Groupe : Modérateurs Messages : 1037 Inscrit : 16-December 02 Lieu : Est Membre no 669 |
Bonjour,
Citation Scénario: vous avez 9000 images, 2400 d'entre elles ne sont plus utilisées. Comment déceler celles qui ne sont pas utilisées et les supprimer de façon sûre et rapide? Gestion, détermination et effacement des images inutilisées Remove Unused Images Que fait cette contribution: * Elle lit la base de données et établit une liste des images installées. * Elle marque alors (en ROUGE) les images de cette liste qui sont inexistantes sur le serveur. * Elle fait ensuite une liste des images/fichiers présents sur le serveur. * Elle compare les deux listes et détermine les élément supplémentaires ou manquants. * Elle offre la possibilité de choisir et cocher les éléments qui seront renommés par la suite. * Elle renomme ensuite les fichiers CHOISIS PAR l'UTILISATEUR (monimage.jpg devient UNUSED_monimage.jpg). * Elle vous permet par ce biais d'effacer en UNE FOIS (par FTP) toutes les images choisies et inutilisées commençant par UNUSED_monimage.jpg. Les Contributions |
|
21 Aug 2009, 09:29
Message
#10
|
|
5eme dan OSC Groupe : Administrateur Messages : 14914 Inscrit : 22-November 02 Membre no 610 |
Il est simple, efficace et facile à adapter à sa configuration perso (contributions multi images) Avant de le lancer donc, j'ai modifié deux choses dans les "ADDITIONAL OPTIONS" en début de script: j'ai ajouté le nom de la table products_bimage pour la contribution big_image que j'utilise: Code // to add more tables use ex: $table_array = array("products_image","products_image_med"); // see below for possible image names $table_array = array("products_image", "products_bimage"); Et j'ai commenté la ligne supprimant les images des aticles désactivées!!! Pour mon utilisation, ce n'est pas parce qu'un article est désactivé momentanément qu'il faut supprimer son image! Citation get image info if the product status is on only example query: $optional_sql = " where p.products_status = '1'"; */ $optional_sql = ""; // supprimé " where p.products_status = '1'" -------------------- Ni Hot-line ni Service Après Vente, ces forums sont un lieu d'échanges.
Une Question? Rechercher / FAQ / docV1.pdf / docV2.pdf / contributions |
|
21 Aug 2009, 09:52
Message
#11
|
|
5eme dan OSC Groupe : Administrateur Messages : 14914 Inscrit : 22-November 02 Membre no 610 |
oops, un petit défaut pour mon install... les images des catégories sont supprimées!!! je creuse et vous dis...
-------------------- Ni Hot-line ni Service Après Vente, ces forums sont un lieu d'échanges.
Une Question? Rechercher / FAQ / docV1.pdf / docV2.pdf / contributions |
|
21 Aug 2009, 10:50
Message
#12
|
|
5eme dan OSC Groupe : Administrateur Messages : 14914 Inscrit : 22-November 02 Membre no 610 |
Après mon engouement trop rapide du premier test, il me semble pas super bien fini ce script
sans parler de son langage peu "OsC" et utilisant peu les fonctions d'OsC existantes, rendant les modifications lourdes et un peu complexes, j'ai du mal à comprendre toutes ses logiques: 1- c'est clair qu'il faudrait prendre en compte les images des catégories 2- pourquoi avoir limité son action sur les jpg... on n'a plus le droit de travailler avec des gifs ou des png??? Bref, je crois qu'il peut y avoir un peu beaucoup de boulot pour l'adapter chacun à ses besoins spécifiques... L'idée est super bonne, mais il faudrait le réécrire complètement pour nettoyer les ajouts de chacun et le rendre plus accessible à tous je ne sais si j'aurai le courage -------------------- Ni Hot-line ni Service Après Vente, ces forums sont un lieu d'échanges.
Une Question? Rechercher / FAQ / docV1.pdf / docV2.pdf / contributions |
|
21 Aug 2009, 11:55
Message
#13
|
|
5eme dan OSC Groupe : Administrateur Messages : 14914 Inscrit : 22-November 02 Membre no 610 |
Bon, ben je confirme que je laisse tomber... En fait, le dossier "images" est plein d'images sans rapport avec les produits (stars_, store_logo, ...) et différents pictos... Sans compter tous les ajouts que chacun à pu faire dans ce dossier foutoir
C'est peut-être pour cela que azer n'avait pas pris en compte les gif et les png... pour contourner le problème C'est clair qu'osc a un défaut de structure même de ses répertoires. Les images de fonctionnement des pages ne devraient pas être mélangées aux images produits. Il faudrait donc modifier ce fonctionnement structurel pour que cette contribution devienne intéressante... perso, sauf idée géniale de l'un d'entre vous, je laisse tomber, à vous les studios. PS. Je vous laisse là où j'en étais du travail de nettoyage de ce script ici (clic droit, save as puis renommer en .php) des fois que ça puisse servir à quelqu'un. Au boulot Ce message a été modifié par xaglo - 21 Aug 2009, 13:23.
Raison de l'édition : modification du lien
-------------------- Ni Hot-line ni Service Après Vente, ces forums sont un lieu d'échanges.
Une Question? Rechercher / FAQ / docV1.pdf / docV2.pdf / contributions |
|
21 Aug 2009, 12:07
Message
#14
|
|
Ceinture bleue OSC Groupe : Membres Messages : 983 Inscrit : 8-April 08 Lieu : strasbourg Membre no 21429 |
Pareil pour moi après avoir testé l'install et fais la traduction cette contrib n'est pas du tout adapté à mon installation d'oscommerce.
xaglo=> Concernant la structure et la gestion des images d'oscommerce, pense tu qu'il serais difficile de mettre un peut d'ordre la dedans et qu'il faudrais modifier beaucoup de fichier? Parce que c'est vrai que c'est le bordel dans ce dossier et que ranger tous sa ne ferais pas de mal. PS: ton fichier fais 0 octets chez moi Ce message a été modifié par audioshop55 - 21 Aug 2009, 12:17. |
|
21 Aug 2009, 12:32
Message
#15
|
|
5eme dan OSC Groupe : Administrateur Messages : 14914 Inscrit : 22-November 02 Membre no 610 |
pas forcement très complexe en code, mais ça obligerait à toucher la structure même de fonctionnement du logiciel. il faut donc prendre le temps de réfléchir pour le faire intelligemment!!! Et alors ta boutique s'apparenterait à un fork, tout ajout de contributions serait à adapter et complexifié... à voir...
Est-ce bien grave que ce soit le bordel dans le dossier images??? pour le lien, c'est corrigé, le site n'autorise pas à télécharger un fichier php (heureusement!!!!) je l'ai passé en .txt -------------------- Ni Hot-line ni Service Après Vente, ces forums sont un lieu d'échanges.
Une Question? Rechercher / FAQ / docV1.pdf / docV2.pdf / contributions |
|
21 Aug 2009, 18:43
Message
#16
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 91 Inscrit : 9-May 03 Lieu : Quebec CANADA Membre no 1137 |
Parreil pour moi...l'idee est bonne, mais ce n'est pas complet et je crois que tant qu'a la modifier, vaudrait mieux recommencer du debut.
Aillant une boutique assez modifier, je crains que je puisse en faire une contrib si jamais je me decide a vouloir faire de quelques choses.. En tout cas..bonne chance! -------------------- Will - oscommerce-2.2rc2a
|
|
22 Aug 2009, 11:08
Message
#17
|
|
5eme dan OSC Groupe : Administrateur Messages : 9221 Inscrit : 4-March 03 Lieu : Pau Membre no 927 |
Donc,
en partant de l'idée, voici les rudiments d'un script qui liste toutes les images non utilisées dans la bdd. Il faudra l'aménager et éventuellement le compléter selon vos images et bdd (notamment si vous avez plusieurs images par produit). Ce script est rudimentaire et se contente de faire une liste, il n'y a donc aucune action destructive de quelque ordre que ce soit. à placer dans le dossier admin . Code <?php /* $Id: list_images.php,v 0.1 22/08/2009 10:58:30 gnidhal Exp $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2003 osCommerce Released under the GNU General Public License */ require('includes/application_top.php'); $contents = array(); function list_existents_files($dir){ global $contents; // on liste les images de structure pour les écarter de la liste des images produit et catégories. //Compléter la liste si nécessaire avec le début du nom de fichier (y compris le sous-dossier depuis images/) $images_system_array = array("pixel_", // pixel_trans etc. "stars_", // les étoiles "table_background_", // les imagettes table_background "icons/", // le dossier icons "infobox/", //le dossier infobox avec ses pictos "default/", //le dossier default "account_", // les picto de account_history "arrow_", // les flèches de direction "box_", // les éléments de box "header_", // les éléments de header "store_logo", // le logo par défaut "mail/", // le dossier mail "checkout_bullet", // la puce de suivi de conclusion de commande "_thumbs/" // le dossier de miniatures si vous utilisez auto_thumbnailers ); $read_dir = opendir($dir); while ($file = readdir($read_dir)) { if ( ($file != '.') && ($file != 'CVS') && ($file != '..') ) { // on élimine les sous dossiers et éventuellement tout ce qui est CVS $full_dir_file = preg_replace('@//@', '/',$dir . '/' . $file); // on élimine les / en double dans les chemins image if (is_dir($full_dir_file)) { //si c'est un sous-dossier list_existents_files($full_dir_file); // on ajoute son contenu }else{ $short_dir_file = preg_replace('@'.DIR_FS_CATALOG_IMAGES.'@', '', $full_dir_file ); // nettoyage du chemin complet pour ne garder que l'image avec son chemin propre $masque =''; foreach($images_system_array as $prefix){ // pour chaque occurence des images à écarter $masque .= '('.str_replace('/','\/',$prefix).')|';// concatenation des exception dans le masque } $masque ='^('.trim($masque,'|').')(.*)$'; //mise en forme du masque d'exception if (!preg_match("/$masque/", $short_dir_file)&& preg_match("/(gif|jpg|png|jpeg)$/i", $short_dir_file))$contents[] = $short_dir_file; //on ajoute le nom de l'image qui correspond aux masques dans la liste } } }// fin while return $contents; } $list_images_files = list_existents_files(DIR_FS_CATALOG_IMAGES); echo count($list_images_files) . " fichiers images trouvés<br>"; // liste des images en bdd $list_images_bdd = array(); $categories_images_query = tep_db_query("select categories_image as img from ".TABLE_CATEGORIES." "); $products_images_query = tep_db_query("select products_image as img from ".TABLE_PRODUCTS." "); $manufacturers_images_query = tep_db_query("select manufacturers_image as img from ".TABLE_MANUFACTURERS." "); $banners_images_query = tep_db_query("select banners_image as img from ".TABLE_BANNERS." "); while ($imgs = tep_db_fetch_array($categories_images_query)){ if(tep_not_null($imgs['img'])) { $list_images_bdd[] = $imgs['img']; } } while ($imgs = tep_db_fetch_array($products_images_query)){ if(tep_not_null($imgs['img'])) { $list_images_bdd[] = $imgs['img']; } } while ($imgs = tep_db_fetch_array($manufacturers_images_query)){ if(tep_not_null($imgs['img'])) { $list_images_bdd[] = $imgs['img']; } } while ($imgs = tep_db_fetch_array($banners_images_query)){ if(tep_not_null($imgs['img'])) { $list_images_bdd[] = $imgs['img']; } } echo count($list_images_bdd) . " images trouvées en bdd<br>"; // vérification des images sur disque en bdd $unused_img = array(); foreach($list_images_files as $img_file){ if (!in_array($img_file,$list_images_bdd)) $unused_img[]=$img_file; } echo count($unused_img) . " images non utilisées<br>"; echo '<pre>'; var_dump($unused_img); echo '</pre>'; require('includes/application_bottom.php'); ?> ce script permet de filtrer les dossiers ou images à ne pas prendre en compte dans la liste et ne liste que les fichiers avec les extensions jpg, gif,png et jpeg Regardez les commentaires dans le code il ne tient pas compte non plus des images absentes (dans la bdd mais pas sur le disque) ça pourrait être une extension. La liste est affichée en fin avec un var_dump. A vous de voir si ce procédé peut vous être utile pour poursuivre le développement. -------------------- Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues : Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums. Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin. ----------------------------- Quelques sites de référence --------------------------- PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien) |
|
22 Aug 2009, 14:29
Message
#18
|
|
Ceinture marron OSC Groupe : Membres Messages : 1335 Inscrit : 12-July 08 Lieu : aux Açores au milieu de l'atlantique Membre no 22434 |
Est-ce bien grave que ce soit le bordel dans le dossier images??? "petit scarabée Xaglo", apprend que Chuck Norris n'abandonne jamais ! il frotte sa lampe magique et son "Gnidhal" apparait et fait le script
-------------------- entre chats : chat affamé cherche chat pelure pour faire sauter chat perché dans poil de chat (allergiques s'abstenir)
ah oui ... osCommerce v2.2 RC1 french by Delaballe "merci à lui" - PHP version 4.4.8 - mysql5-41 - OVH 240Plan - contribs : (entre autre) AJAX-AttributeManager-V2.8.2 - Limit_Countries - Multi-Product Update v1.00 - Quick Updates 2.7 - Individual Product Shipping Prices - v1_0 - Attribute Qty Product Info - user_tracking_1 - Visitor Web Stats 3.2.1 - Sort Order - image_subdirectories - master password v1.4 - virementbancaire1.4 - Welcome_Email_password ... "et grand merci à tous les contributionneurs" |
|
22 Aug 2009, 17:14
Message
#19
|
|
5eme dan OSC Groupe : Administrateur Messages : 9221 Inscrit : 4-March 03 Lieu : Pau Membre no 927 |
il frotte sa lampe magique et son "Gnidhal" apparait et fait le script Wai bin faut arrêter de frotter, ça va fumer! script incomplet mais compatible partie admin avec la mise en page : Code <?php /* $Id: list_images.php,v 0.1 22/08/2009 10:58:30 gnidhal Exp $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2003 osCommerce Released under the GNU General Public License */ require('includes/application_top.php'); $contents = array(); function list_existents_files($dir){ global $contents; // on liste les images de structure pour les écarter de la liste des images produit et catégories. //Compléter la liste si nécessaire avec le début du nom de fichier (y compris le sous-dossier depuis images/) $images_system_array = array("pixel_", // pixel_trans etc. "stars_", // les étoiles "table_background_", // les imagettes table_background "icons/", // le dossier icons "infobox/", //le dossier infobox avec ses pictos "default/", //le dossier default "account_", // les picto de account_history "arrow_", // les flèches de direction "box_", // les éléments de box "header_", // les éléments de header "store_logo", // le logo par défaut "mail/", // le dossier mail "checkout_bullet", // la puce de suivi de conclusion de commande "_thumbs/" // le dossier de miniatures si vous utilisez auto_thumbnailers ); $read_dir = opendir($dir); while ($file = readdir($read_dir)) { if ( ($file != '.') && ($file != 'CVS') && ($file != '..') ) { // on élimine les sous dossiers et éventuellement tout ce qui est CVS $full_dir_file = preg_replace('@//@', '/',$dir . '/' . $file); // on élimine les / en double dans les chemins image if (is_dir($full_dir_file)) { //si c'est un sous-dossier list_existents_files($full_dir_file); // on ajoute son contenu }else{ $short_dir_file = preg_replace('@'.DIR_FS_CATALOG_IMAGES.'@', '', $full_dir_file ); // nettoyage du chemin complet pour ne garder que l'image avec son chemin propre $masque =''; foreach($images_system_array as $prefix){ // pour chaque occurence des images à écarter $masque .= '('.str_replace('/','\/',$prefix).')|';// concatenation des exception dans le masque } $masque ='^('.trim($masque,'|').')(.*)$'; //mise en forme du masque d'exception if (!preg_match("/$masque/", $short_dir_file)&& preg_match("/(gif|jpg|png|jpeg)$/i", $short_dir_file))$contents[] = $short_dir_file; //on ajoute le nom de l'image qui correspond aux masques dans la liste } } }// fin while return $contents; } $list_images_files = list_existents_files(DIR_FS_CATALOG_IMAGES); // liste des images en bdd $list_images_bdd = array(); $categories_images_query = tep_db_query("select categories_image as img from ".TABLE_CATEGORIES." "); $products_images_query = tep_db_query("select products_image as img from ".TABLE_PRODUCTS." "); $manufacturers_images_query = tep_db_query("select manufacturers_image as img from ".TABLE_MANUFACTURERS." "); $banners_images_query = tep_db_query("select banners_image as img from ".TABLE_BANNERS." "); while ($imgs = tep_db_fetch_array($categories_images_query)){ if(tep_not_null($imgs['img'])) { $list_images_bdd[] = $imgs['img']; } } while ($imgs = tep_db_fetch_array($products_images_query)){ if(tep_not_null($imgs['img'])) { $list_images_bdd[] = $imgs['img']; } } while ($imgs = tep_db_fetch_array($manufacturers_images_query)){ if(tep_not_null($imgs['img'])) { $list_images_bdd[] = $imgs['img']; } } while ($imgs = tep_db_fetch_array($banners_images_query)){ if(tep_not_null($imgs['img'])) { $list_images_bdd[] = $imgs['img']; } } // vérification des images sur disque en bdd $unused_img = array(); foreach($list_images_files as $img_file){ if (!in_array($img_file,$list_images_bdd)) $unused_img[]=$img_file; } //echo '<pre>'; // var_dump($unused_img); //echo '</pre>'; ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html <?php echo HTML_PARAMS; ?>> <head> <meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>"> <title><?php echo TITLE; ?></title> <link rel="stylesheet" type="text/css" href="includes/stylesheet.css"> <script type="text/javascript" src="includes/general.js"></script> <script type="text/javascript" LANGUAGE="JavaScript"> function PopupImage(img,larg,haut) { var largeur = 30+larg var hauteur = haut + 30 w=open("",'image','weigth=toolbar=no,scrollbars=yes,resizable=yes, width='+largeur+', height='+hauteur+',screenX=150,screenY=150,top=150,left=150 ') w.document.write("<HTML><BODY onblur=\"window.close();\"><IMG src='<?php echo DIR_WS_CATALOG_IMAGES;?>"+img+"'>") w.document.write("</BODY></HTML>") w.document.close() } </script> </head> <body> <!-- header //--> <?php require(DIR_WS_INCLUDES . 'header.php'); ?> <!-- header_eof //--> <!-- body //--> <table border="0" summary="" width="100%" cellspacing="2" cellpadding="2"> <tr> <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" summary="" width="<?php echo BOX_WIDTH; ?>" cellspacing="1" cellpadding="1" class="columnLeft"> <!-- left_navigation //--> <?php require(DIR_WS_INCLUDES . 'column_left.php'); ?> <!-- left_navigation_eof //--> </table></td> <!-- body_text //--> <td width="100%" valign="top"> <table border="0" summary="" width="100%" cellspacing="0" cellpadding="2"> <tr> <td><table border="0" summary="" width="100%" cellspacing="0" cellpadding="0"> <tr> <td class="pageHeading"><?php echo 'suppression des images inutilisées'; ?></td> <td class="pageHeading" align="right"><?php echo tep_draw_separator('pixel_trans.gif', HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td> </tr> </table></td> </tr> <tr> <td><table border="0" summary="" width="100%" cellspacing="0" cellpadding="0"> <tr> <td class="main"><?php echo count($list_images_files) . " fichiers images trouvés";?></td> </tr> <tr> <td class="main"><?php echo count($list_images_bdd) . " images trouvées en bdd";?></td> </tr> <tr> <td class="main"><?php echo count($unused_img) . " images non utilisées";?></td> <tr> </table> </td> </tr> <tr> <td><table border="0" summary="" width="100%" cellspacing="0" cellpadding="2"> <tr class="dataTableHeadingRow"> <td class="dataTableHeadingContent"> </td> <td class="dataTableHeadingContent">Nom de l'image</td> <td class="dataTableHeadingContent">chemin complet</td> <td class="dataTableHeadingContent">Afficher</td> <td class="dataTableHeadingContent">Supprimer</td> </tr> <?php $count = 0; foreach($unused_img as $filename){ $count++; echo '<tr class="dataTableRow" >' . "\n"; echo '<td class="dataTableContent" align="right" ><a name="'.$count.'">'.$count.'</a></td>'; echo '<td class="dataTableContent">'.$filename.'</td>'; echo '<td class="dataTableContent">'.DIR_FS_CATALOG_IMAGES.$filename.'</td>'; $size = getimagesize(DIR_FS_CATALOG_IMAGES.$filename); // echo '<td class="dataTableContent">'.tep_image(DIR_WS_CATALOG_IMAGES . $filename, DIR_WS_CATALOG_IMAGES . $filename, SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT).'</td>'; echo '<td class="dataTableContent"><a href="java script:PopupImage(\''. $filename.'\','.$size[0].','.$size[1].')">'.tep_image(DIR_WS_IMAGES.'icon_info.gif', 'Voir').'</a></td>'; echo '<td class="dataTableContent"><a href="#'.$count.'">'.tep_image(DIR_WS_ICONS.'cross.gif', 'supprimer').'</a></td>'; echo '</tr>'; } ?> </table> </tr> </tr> </table> </td> <?php if ( (tep_not_null($heading)) && (tep_not_null($contents)) ) { echo ' <td width="25%" valign="top">' . "\n"; $box = new box; echo $box->infoBox($heading, $contents); echo ' </td>' . "\n"; } ?> </tr> </table></td> </tr> </table></td> <!-- body_text_eof //--> </tr> </table> <!-- body_eof //--> <!-- footer //--> <?php require(DIR_WS_INCLUDES . 'footer.php'); ?> <!-- footer_eof //--> <br> </body> </html> <?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?> reste plus qu'à faire un script pour dégager les images mais là j'hésite entre popup et ajax. Pour rester full compatible, ça sera peut-être un popup attention j'ai testé en local avec 4000 images trouvées sur disque dont 2000 images non référencées en bdd. C'est lourdingue mais ça tourne. Faudra penser à optimiser le code (au passage, je développe pour moi et je partage ) -------------------- Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues : Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums. Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin. ----------------------------- Quelques sites de référence --------------------------- PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien) |
|
22 Aug 2009, 20:27
Message
#20
|
|
5eme dan OSC Groupe : Administrateur Messages : 9221 Inscrit : 4-March 03 Lieu : Pau Membre no 927 |
Tiens, je vais arrêter là pour le moment.
Il se trouve que ce script ne prend pas en compte les images insérées dans les descriptions produit. Mais là, ça devient très lourd de scanner toutes les descriptions à la recherche d'images dans les textes surtout si le catalogue contient plus d'un milliers d'articles. il faut une requête sql pour chaque image trouvée sans correspondance dans un champ image. Si ça peut marcher pour un petit catalogue, il faut que j'optimise pour les grosses boutiques. ça se réfléchit donc. -------------------- Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues : Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums. Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin. ----------------------------- Quelques sites de référence --------------------------- PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien) |
|
24 Aug 2009, 10:04
Message
#21
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 133 Inscrit : 10-April 05 Membre no 5450 |
en effet, faudrait extraire pratiquement du site toutes les images utilisées + celles indiquées dans les descriptifs et les différents modules... (à la fois texte + sql) bref faudrait pratiquement scanner tout les fichiers d'oscommerce + qqs tables de la BD + contribs pour s'assurer qu'on ne détruit pas un fichier utilisé.
si vous trouvez la solution, partagez! curieux d'en connaitre les tenants et aboutissants! Ce message a été modifié par demoalt - 24 Aug 2009, 10:05. |
|
24 Aug 2009, 20:12
Message
#22
|
|
5eme dan OSC Groupe : Administrateur Messages : 14914 Inscrit : 22-November 02 Membre no 610 |
perso je n'utilise pas d'image supplémentaire dans les descriptions articles, je me contente donc d'utiliser le script que je laissais ici
et je pense y ajouter à terme un petit array() des images présentes de façon définitive (icones, logos...) pourquoi se compliquer la vie -------------------- Ni Hot-line ni Service Après Vente, ces forums sont un lieu d'échanges.
Une Question? Rechercher / FAQ / docV1.pdf / docV2.pdf / contributions |
|
24 Aug 2009, 20:57
Message
#23
|
|
5eme dan OSC Groupe : Administrateur Messages : 14914 Inscrit : 22-November 02 Membre no 610 |
je pense y ajouter à terme un petit array() des images présentes de façon définitive (icones, logos...) D'ailleurs, Gnidhal l'a déjà fait dans son script... Code $images_system_array = array("pixel_", // pixel_trans etc. "stars_", // les étoiles "table_background_", // les imagettes table_background "icons/", // le dossier icons "infobox/", //le dossier infobox avec ses pictos "default/", //le dossier default "account_", // les picto de account_history "arrow_", // les flèches de direction "box_", // les éléments de box "header_", // les éléments de header "store_logo", // le logo par défaut "mail/", // le dossier mail "checkout_bullet", // la puce de suivi de conclusion de commande "_thumbs/" // le dossier de miniatures si vous utilisez auto_thumbnailers ); et hop! j'ai regardé rapidement ton script Gnidhal. Il ne fonctionne pas parfaitement pour moi: j'ai dû y ajouter mes "big_images", ce qui normal, c'est propre à ma contribution, mais beaucoup d'images utilisées sont encore proposées à la suppression (!!!???) Je n'ai pas creusé plus que ça pour comprendre le pourquoi du comment, probablement à cause de mes scripts trop bricolés. Et il reste à ajouter la fonction de renommage ou suppression des fichiers inutiles! en tous cas, merci pour le partage Je vais voir à faire mon petit melting-pot de tout cela -------------------- Ni Hot-line ni Service Après Vente, ces forums sont un lieu d'échanges.
Une Question? Rechercher / FAQ / docV1.pdf / docV2.pdf / contributions |
|
24 Aug 2009, 22:11
Message
#24
|
|
5eme dan OSC Groupe : Administrateur Messages : 9221 Inscrit : 4-March 03 Lieu : Pau Membre no 927 |
Oui, et finalement la recherche dans les descriptions n'est pas si lourde que je le craignais.
en fait il suffit de modifier la recherche des images dans le tableau en ajoutant une requête pour chaque image ce qui donne : Code foreach($list_images_files as $img_file){ A noter au passage que ça cherche aussi dans les descriptions des catégories, une option qui n'existe pas dans la version de base. if (!in_array($img_file,$images_bdd)) { $c_description_query = tep_db_query("select * from categories_description where categories_description LIKE '%".$img_file."%'"); $p_description_query = tep_db_query("select * from products_description where products_description LIKE '%".$img_file."%'"); if (!tep_db_num_rows($c_description_query) && !tep_db_num_rows($p_description_query)) $unused_img[]=$img_file; } } l'ancien code était : Code $unused_img = array(); foreach($list_images_files as $img_file){ if (!in_array($img_file,$list_images_bdd)) $unused_img[]=$img_file; } Mais cela ne me convient pas non plus. Sur la boutique que j'utilise en test j'ai : 4454 fichiers images trouvés 2689 images trouvées en bdd 1818 images non utilisées sans la recherche en descriptions et 1205 images non utilisées en cherchant dans les descriptions. C'est encore trop! Je constate entre autres que les noms d'image comportant un espace ne sont pas correctement comptabilisées : l'espace stocké en bdd est remplacé par un %20 sur le nom de fichier ... Oui, je sais, il ne devrait pas y avoir d'espace dans les noms images, c'est justement un des buts de cet outil, -------------------- Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues : Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums. Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin. ----------------------------- Quelques sites de référence --------------------------- PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien) |
|
Version bas débit | Nous sommes le : 29th March 2024 - 07:07 |
Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |