Cirice Posted January 19 Share Posted January 19 Bonjour, Je migre un PS 1.6.0.?? vers 1.6.1.24, site qui ne vend que des produits numériques (fichiers à télécharger). Je dois importer les tables produits à la main car MigrationPro bloque dessus. La table product_download fait 20Go à elle toute seule, donc j'ai fait une sélection uniquement sur les lignes avec active=1 pour m'en sortir. J'aimerais comprendre cette multiplication. Là il y a 3 nouveaux produits qui ont été ajoutés, et pan 287 lignes ! Et pour certains vieux produits dont les fichiers ont été "remplacés" plusieurs fois, cela peut monter à plus de 20 000 lignes. Alors il y a bien un module installé qui permet d'ajouter de créer des déclinaisons avec aussi des fichiers à télécharger. Est-ce le module ou est-ce Prestashop qui fait ça ? Le module n'est plus maintenu, j'ai essayé de contacter les dev successifs. En attendant, dans le fichier de class Product.php, je vois une fonction duplicateDownload. C'est quand même pas ça ?? J'ai fait une recherche sur internet et manifestement c'était déjà un souci avec PS1.5, donc je suppose que le module n'est pas en cause. Y a-t-il eu un correctif depuis ? Merci Link to comment Share on other sites More sharing options...
Eolia Posted January 19 Share Posted January 19 La fonction duplicateDownload() sert quand on duplique un produit, c'est ce que vous avez fait ? Normalement cette table stocke le nom du fichier (en clair et crypté) pour chaque déclinaison/produit (avez-vous des déclinaisons ?) Je viens de regarder chez un client qui a 8 produits virtuels, je n'ai que 8 lignes dans cette table. Link to comment Share on other sites More sharing options...
Cirice Posted January 19 Author Share Posted January 19 Merci Eolia, A la base, oui, certains produits ont pu être dupliqués. Oui il y a des déclinaisons mais je peux les "séparer" parce que le module Produits Virtuels avec Déclinaisons à ajouté un champ dans la table product_download. Enfin, en principe, car je viens d'exporter la table avec id_product_declinaison = 0 pour n'avoir que les produits sans, et je vois que j'ai quand même une série de lignes pour ce même produit avec un filename et un display_name. Alors que si j'exporte uniquement les produits avec unb id_product_download, la plupart des déclinaisons de ce produit n'ont pas ces champs remplis. C'est comme le dossier Downloads : il contient plus de 65000 fichiers pour 740 produits. Il ne devrait pas y en avoir d'autres que ceux qui constituent les produits numériques. Alors quid ? Par exemple, je vois dans le dossier des lignes avec des noms de fichiers différents mais ayant exactement la même heure de modification. J'en ai pris un au hasard dans les lignes les plus récentes (20 fichiers à la même heure à la seconde près) et ai fait une recherche sur ce nom dans la table product_download. Effectivement, ça me sort le dernier produit ajouté il y a 4 jours, avec 11 lignes dans la table, produit sans déclinaisons. Et malgré cela, il y a des produits qui n'ont pas de fichier dans le dossier alors qu'ils ont bien un display_name et un filename dans la table. Bref un sacré pataquès ... Je me demande si le mieux ne serait pas de vider la table dans le site en prod et le dossier Download et de réimporter proprement chaque fichier dans chaque produit ... Parce qu'en effet, sur la nouvelle mouture (où le module permettant d'ajouter des fichiers aux déclinaisons n'est pas installé), il n'y a pas de duplication. Link to comment Share on other sites More sharing options...
Eolia Posted January 19 Share Posted January 19 C'est donc bien le module qui fiche le bazar. Vous devriez vraiment essayer PhenixSuite, les produits virtuels avec déclinaisons sont natifs Link to comment Share on other sites More sharing options...
Cirice Posted January 19 Author Share Posted January 19 ah mince alors ! il a tout pour me plaire ! je l'ai téléchargé>. Je peux mettre à jour le 1.6.1.24 que je suis en train de préparer sans risques ou vaut-il mieux que je l'installe puis importe les données ? Sur le site en dev donc, je n'avais pas encore installé le module pour les déclinaisons et avais importé les produits à la main via des exports/imports de csv (avec ajout des colonnes manquantes éventuelles). De la table product_download, je n'avais exporté que les produits n'ayant pas de déclinaisons, pensant faire celles-ci ensuite. Est-ce que Phenix ajoute aussi une colonne dans cette table pour les déclinaisons ou ajoute-t-il une autre table dans laquelle je pourrais les importer après mise en forme éventuelle du fichier ? Et je suppose que mon super module permettant d'afficher les produits récemment mis à jour fonctionnera aussi dessus ? Par contre, pour nettoyer le dossier Download et supprimer les fichiers inutiles, je ne vois pas d'autre solution que de piocher 1 à 1 les fichiers en fonction des filename et de reconstituer le dossier comme cela ? Link to comment Share on other sites More sharing options...
Eolia Posted January 19 Share Posted January 19 Structure de la table dans Phenix: CREATE TABLE `ps_product_download` ( `id_product_download` int(11) unsigned NOT NULL AUTO_INCREMENT, `id_product` int(11) unsigned NOT NULL, `id_product_attribute` int(11) NOT NULL, `display_filename` varchar(255) DEFAULT NULL, `filename` varchar(255) DEFAULT NULL, `date_add` datetime NOT NULL, `date_expiration` datetime DEFAULT NULL, `nb_days_accessible` int(11) unsigned DEFAULT NULL, `nb_downloadable` int(11) unsigned DEFAULT 1, `active` tinyint(1) unsigned NOT NULL DEFAULT 1, `is_shareable` tinyint(1) unsigned NOT NULL DEFAULT 0, PRIMARY KEY (`id_product_download`), UNIQUE KEY `id_product` (`id_product`,`id_product_attribute`), KEY `product_active` (`id_product`,`active`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; Vous pouvez mettre à jour avec le module autoupgrade fourni dans le zip (si vous aviez l'ancien "officiel", désinstallez-le et supprimez-le. Quand je mets à jour vers PhenixSuite, je regarde 2 choses: - la liste des fichiers coeurs modifiés (facile à voir dans le module autoupgrade) - La liste des overrides (à voir ceux qui sont encore utiles ou à ré-écrire si trop vieux et pas compatibles PHP 7/8) Link to comment Share on other sites More sharing options...
Cirice Posted January 19 Author Share Posted January 19 hé bé ! un plaisir ! la maj s'est faite fingers in the nose. J'ai voulu passer après en PHP 8.2 mais manifestement il y a au moins 2 modules qui ne supportent pas au-delà de 7.4. J'ai donc rétrogradé. Si je reste dans cette version de PHP, ce genre de souci va se poser éventuellement pour changer de thème ou d'autres modules compatibles 1.6 et donc n'ayant pas prévu de passer à une version supérieure de PHP ? EN tout cas merci infiniment, je découvre ! et le Phénix est plus joli que le pingouin 🙂 Link to comment Share on other sites More sharing options...
Cirice Posted January 19 Author Share Posted January 19 Par contre, petit souci quand je vais dans Paramètres > Produits : Erreur de compilation JavaScript Uncaught TypeError: Cannot set properties of null (setting 'disabled') dans le fichier: xxxxx/js/admin.js?v=1.6.2.32 à la ligne 477 J'ai essayé les 2 réglages js dans Performances, mais cela ne semble pas changer quelque chose Link to comment Share on other sites More sharing options...
Eolia Posted January 20 Share Posted January 20 On 1/19/2025 at 9:40 PM, Cirice said: Par contre, petit souci quand je vais dans Paramètres > Produits : Erreur de compilation JavaScript Uncaught TypeError: Cannot set properties of null (setting 'disabled') dans le fichier: xxxxx/js/admin.js?v=1.6.2.32 à la ligne 477 J'ai essayé les 2 réglages js dans Performances, mais cela ne semble pas changer quelque chose Expand Vous n'auriez pas un override dans l'admin ? (/override/controller/admin/template) Link to comment Share on other sites More sharing options...
Eolia Posted January 20 Share Posted January 20 La liste des overrides est visible dans PhenixSuite. Paramètres avancés => Performances Link to comment Share on other sites More sharing options...
Cirice Posted January 20 Author Share Posted January 20 Merci Eolia C'est génial cet outil ... sauf qu'il n'affiche pas le contenu des fichiers, mais ce n'est pas important. Oui il y a des overrides admin, qui à première vue concernent les virtuals products. Est-ce Phenix qui les a ajoutés ou viennent-ils de l'ancien module ? Link to comment Share on other sites More sharing options...
Eolia Posted January 20 Share Posted January 20 Normalement ça affiche le contenu en cliquant sur le bouton^^ Et oui ce sont les overrides ajoutés par l'ancien module (et je soupçonne l'override de Product et FrontController d'en faire partie). Il aurait fallu désinstaller le module avant, ça aurait supprimé les overrides proprement. Link to comment Share on other sites More sharing options...
Cirice Posted January 20 Author Share Posted January 20 l'override Product, c'est moi, pour afficher les produits récemment mis à jour. En fait c'est le seul qui ne s'affiche pas avec l'outil. J'essaie de le joindre à ce post, si cela ne vous ennuie pas trop d'y jeter un oeil ? Le module des décl, je l'avais pourtant désinstallé. J'ai retiré ses overrides mais cela ne résout pas le souci. Serait-ce alors mon override Product ? Product.zipFetching info... Link to comment Share on other sites More sharing options...
Eolia Posted January 20 Share Posted January 20 Non votre override ne concerne pas le BO. Pouvez-vous m'envoyer un accès ftp par Message Privé pour votre site de dev ? 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