Jump to content

[PRESTATEAM] Demande d'ajout de hooks


Recommended Posts

Bonjour à vous!

J'ai une petite demande et je pense que pas mal de développeurs confirmeront que c'est une bonne idée... Voici les hooks qui je pensent manquent à la solution (entre autres...)

---

beforeUpdateObject
Qui se trouverait au début de la fonction "update()" de la classe "ObjectModel". Cela nous permettrait de pouvoir agir sur l'objet avant que celui-ci ne soit modifié en BDD.

afterUpdateObject
Qui se trouverait à la fin de la fonction "update()" de la classe "ObjectModel". Cela nous permettrait de pouvoir agir sur l'objet après que celui-ci soit modifié en BDD.

beforeAddObject
Qui se trouverait au début de la fonction "add()" de la classe "ObjectModel". Cela nous permettrait de pouvoir agir sur l'objet avant que celui-ci ne soit inséré en BDD.

afterAddObject
Qui se trouverait à la fin de la fonction "add()" de la classe "ObjectModel". Cela nous permettrait de pouvoir agir sur l'objet après que celui-ci soit inséré en BDD.

beforeDeleteObject
Qui se trouverait au début de la fonction "delete()" de la classe "ObjectModel". Cela nous permettrait de pouvoir agir sur l'objet avant que celui-ci ne soit supprimé en BDD.

afterDeleteObject
Qui se trouverait à la fin de la fonction "delete()" de la classe "ObjectModel". Cela nous permettrait de pouvoir agir sur l'objet après que celui-ci soit supprimé en BDD.

---

Ce sont des toutes petites modifications au final (6 lignes à ajouter dans le code et 6 enregistrement dans la table hook), mais qui pourraient vraiment nous être utiles.

Et vous les développeurs de la communauté, vous en pensez quoi?!

Link to comment
Share on other sites

Je dirais que dans l'absolu c'est une très bonne idée... mais alors quand en plus elle vient de PY ça ne peut qu'être qu'une excellente idée !!!

+ 1 pour moi

Actuellement, on a un système de hook spatial (activation de l'objet en fonction de sa localisation) et là PY nous propose d'élargir à un système de hook temporel (activation de l'objet en fonction d'un évènement)

Link to comment
Share on other sites

Après longues discussions autour de ce sujet avec P-Y de nombreuses fois.
Je me joins à cette initiative.
Il est plus que temps de faire évoluer le système de "callback" des "objects models" de la solution.

J'aimerai ajouter à mon tour deux principes que j'aimerai travailler avec la team. (je le rends publique car intéressent)
La possibilité de mettre un cache sur le "hook mapping" ou "callback mapping" et ainsi pouvoir utiliser dans nos template :

{hook name="its_me"}

grâce à une "registered function" dans "Smarty".

Ainsi, on fait ce-que-l-on-veut !

Link to comment
Share on other sites

L'idée n'est pas mauvaise en soit mais à prendre avec des pincettes.
Certains objets peuvent en effet - hors import - être ajoutés ou mis à jour de très nombreuses fois :

Cart
Connections
ConnectionsSource
Guest

Je viens d'ailleurs d'enlever un update du cart qui se faisait sur chaque page.

Par ailleurs, j'estime que le principe du before/after est absolument dégoutant, il me semble qu'un appel du hook juste avant l'insertion est bien suffisant.

Autre remarque : le risque de boucle infini me semble assez élevé : un module qui veut add/update un objet qui lui même appelera un module...

Link to comment
Share on other sites

Oui effectivement tu as raison, sur certains objets cela peut devenir catastrophique :)

Mais d'un autre coté, il suffit de garder le rapport "HOOK => MODULES" en cache au lieu d'aller le rechercher dans la base de données (même si mysql à un système de cache) les modules qui sont exécutés à chaque appel de hook.

Dans ce cas, alors il n'y a plus rien de catastrophique, sauf si les modules utilisant ces hook sont mal développés ;) Mais là c'est de la faute du dev et de l'utilisateur, plus de PrestaShop.

Concernant le before/after, si tu ne fais qu'un before, comment peux-tu savoir si l'objet est bien crée? Le after permettrais de gérer les erreurs sur les insertions/update/delete d'objets :). Ou alors, il faut créer un hook "onErrorObject" (bref, tu me comprends).

Concernant les boucles infinies, oui... si le module est mal développé :). Mais sinon ce genre de hook est plutôt un énorme plus > interaction avec les objets avant (ou après ?! :D) leur insertion en base de données.

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...