en preInsert je mets par défaut un certain nombre d’éléments dont ceux-ci …
Comme il m a été dit de faire
Je ne teste pas si qlq chose existe deja…
Puisqu on est sur un insert, je partais en effet du principe que c etait un equipement vierge.
un peu trop fastidieux a faire un test d existence sur toutes les clés… A moins qu une autre methode existe !?
Du coup, ca doit aussi vouloir dire que ca ne doit pas etre le seul plugin touché…!?
Etant donné qu’avec la class preInsert, il n’y aucun moyen de savoir si elle a été appelée initialement par la fonction copy.
Seul moyen que je vois pour résoudre coté Core, c’est d’ajouter un argument supplémentaire dans eqLogic::save et DB::save pour conditionner l’appel au preInsert()
Ou alors dans la fonction copy() passer l’argument $_direct a true mais cela fait aussi perdre le preSave(), postInsert() ainsi que le postSave().
Edit :
Pour le cas de birthday, tu pourrais conditionner tes setConfiguration comme ceci :
L inverse doit aussi etre vrai
Tous les plugin qui initialisent certains choix par defaut a la creation d un equipement sont aussi concernés, et du coup je ne pense pas etre le seul dans ce cas.
En 4.3 tu pouvais faire des « selected » directement sur ta page php, ca n est plus vrai en 4.4 (cf echange + haut, pour lequel je n ai pas eu de suite)
A moins d avoir en effet mis en place un test qui a (a mon avis) pas vraiment de sens.
J’ai sûrement loupé un truc, pas bien compris quelle est la demande d’ailleurs mais la solution ne serait elle pas de surcharger la fonction $eqLogic->copy() en la reprenant dans la classe du plugin et en ajoutant ce qui manquerai ?
le selected permet d obtenir le choix 5 présélectionné par défaut lors de la création d un nouvel équipement.
En 4.4, le meme code fait afficher :
Du coup, choix « vide » par defaut, pas glop …
Comme mentionné plus haut, j ai ouvert un sujet dédié auquel @Loic a répondu qu il suffit d initier les valeurs dans le preInsert.
→ aussi bien en 4.3 qu en 4.4 j ai bien le bon choix par défaut qui est affiché a la création d un nouvel équipement
Dupliquer un équipement
Notre ami @Bad remonte ici un dysfonctionnement : il essaie de dupliquer un équipement en utilisant le bouton « dupliquer » affiché par le core.
Or une fois l équipement dupliqué, il se retrouve avec tout sauf un équipement dupliqué :
ce ne sont pas les select de l équipement d origine qu il avait préalablement choisis et validés qui s affichent, mais ceux par défaut définis par le plugin (entre autre)
le preInsert pour moi est censé s’appliquer lors de l’insertion, sur un équipement censé être « vierge ».
Il ne me semble donc pas utile de faire des tests sur l’existence ou non d’un paramétrage qui en théorie n’a pas lieu d’être …
donc la question :
comment faire une duplication propre via le core, sans intégrer des tests en principe « inutiles » ?
d’où les réflexions actuelles, et autres propositions faites par @Phpvarious
désolé ca n’a aucun sens, le postulat de base est faux.
Qui dit qu’on veut systématiquement recopier toutes les valeurs de l’équipement précédent?
qui dit que les initialisations sont toujours « en dur » ?
donc c’est au plugin à gérer dans ton preInsert suivant son cas qui n’est pas forcément une généralité.
ce n’est pas du tout un contournement de tester la situation avant de faire des actions.
C’est bizarre car l’objet de base est cloné dont la colonne configuration, j’ai testé vite fait et la configuration de l’équipement d’origine a bien été reprise.
OK c’est ton preInsert qui met une config par défaut si je comprend bien, d’où la proposition adaptée de @Phpvarious et la réponse de @Mips qui confirme également.
je ne dois pas comprendre le sens du mot « duplication » alors …??
d’ailleurs le core parle/utilise le « clone » (ligne 686 plus haut), que je ne dois pas comprendre non plus
Il me semblait que « clone » = copie integralement conforme a l initiale. (J’ai pas fait spé bio, je me trompe peut etre )
Il en a fait plusieurs en effet.
Si tu parles de celle avec le test dans le preInsert, le mot « adaptée » ne me semble pas … adapté
Mais c’est qu’il serait un petit peu chonchon notre ami @tomitomas Si je peux me permettre, tu as demandé les avis de 4 personnes quelques messages plus haut et 3 d’entre eux te donnent sensiblement la même réponse
[ma-vie-perso]
Grosse sinusite qui m empeche d’aller plonger depuis 3 semaines
ca commence à me peser un peu c est vrai
après ça m’empêche pas d’être sympa quand meme hein !!
reçu hier au boulot :
[/ma-vie-perso]
2.5 !
La réponse « faire un test » de @Phpvarious était l’initiale, avant qu’il creuse un peu et propose autres choses qui me paraissent + censées.
à priori à lui aussi …
Je ne veux pas lancer un débat de persévérants, mais je souhaitais à minima que le point soit abordé (et idéalement réfléchi ) d’où le ping à certains d’entre vous.
Si « on » dit que c’est mieux que chaque plugin se démerde à « faire un test lors de la création d’un nouvel équipement pour savoir si une config existe déjà » ( ← et c’est cette partie là qui m’ennuie sur le principe, perso), alors OK go for it, je m’en vais ajouter ce test !
Si on se dit que ya quand même peut etre mieux à faire … ça m’intéresse aussi
( perso la partie initialisation des valeurs par défaut de la 4.3 directement dans le html sans passer par le preInsert m’allait également très bien, et ne générait pas de soucis hein )
Je ne pensais pas faire couler autant d’encre (ou taper autant de touches) avec mon « petit problème ».
Dans jMQTT je n’utilise pas preInsert/postInsert, mais uniquement preSave/postSave.
Je sauvegarde des valeurs en preSave dans une variable d’instance et je récup le tout en postSave pour mener d’autres action (en fonction de ce qui a changé).
Je différencie un nouvel eqLogic avec l’id : s’il est null en preSave, c’est un nouvel eqLogic. Selon l’état précédent, je fais aussi les modifs qui vont bien en postSave (et je re save en direct=true).