Duplicator ne fonctionne pas sur les evenements #4

Closed
opened 5 months ago by maieul · 6 comments
maieul commented 5 months ago
Collaborator

Testés sur un site neuf (v3.2.11) avec juste duplicator v2.0.9 + agenda 4.3.1 + les dépendances.

Testés sur un site neuf (v3.2.11) avec juste duplicator v2.0.9 + agenda 4.3.1 + les dépendances.
Poster
Collaborator

ah bah c'est parce que le https://git.spip.net/spip-contrib-extensions/duplicator/src/branch/master/action/dupliquer_objet.php#L148 envoi comme id_parent de l'objet qu'on duplique 0, et pas l'id_article de l'evenement.

Mais du coup il faudrait utiliser l'API de parenté

  1. A ce niveau là dans duplicator
  2. Dans agenda aussi

Mais j'avoue que je suis perdu avec toutes les discussions à ce sujet.

ah bah c'est parce que le https://git.spip.net/spip-contrib-extensions/duplicator/src/branch/master/action/dupliquer_objet.php#L148 envoi comme `id_parent` de l'objet qu'on duplique 0, et pas l'id_article de l'evenement. Mais du coup il faudrait utiliser l'API de parenté 1. A ce niveau là dans duplicator 2. Dans agenda aussi Mais j'avoue que je suis perdu avec toutes les discussions à ce sujet.

Euh Duplicator est intégralement basé sur l'API de parenté…

Et dans $infos_a_dupliquer, ya tous les champs, donc id_article aussi s'il fait parti des choses à dupliquer (par défaut 100% des champs saud l'id primaire)

Euh Duplicator est intégralement basé sur l'API de parenté… Et dans $infos_a_dupliquer, ya *tous* les champs, donc id_article aussi s'il fait parti des choses à dupliquer (par défaut 100% des champs saud l'id primaire)
Poster
Collaborator

je parle du second argument passer à objet_inserer qui est 0 alors que cela devrait être l'id du parent... et comme objet_inserer fait appel ensuite à https://git.spip.net/spip-contrib-extensions/agenda/src/branch/master/action/editer_evenement.php#L45 lequel a besoin de l'id_article parent, bah ca foire :p

je parle du second argument passer à `objet_inserer` qui est 0 alors que cela devrait être l'id du parent... et comme objet_inserer fait appel ensuite à https://git.spip.net/spip-contrib-extensions/agenda/src/branch/master/action/editer_evenement.php#L45 lequel a besoin de l'id_article parent, bah ca foire :p

mais ça ne devrait rien changer puisqu'on donne explicitement la liste brute des champs à remplir directement lors de l'insertion, en param $set, il est fait pour ça ce dernier param, pour aller au-delà des champs calculés automatiquement

Là ya plusieurs choses qui vont pas c'est que Agenda fait un autoriser() dans une fonction d'API CRUD ! Ya un autoriser() dans evenement_inserer() quoi… alors que les autorisations ça doit être dans les éléments d'interface, les squelettes, les CVT, mais pas les fonctions au cœur du cœur. Je l'ai toujours dit que cet entre deux où parfois on met du autoriser() parfois pas (yen a dans le noyau pour objet_instituer par ex), ça foutait la merde… Vraiment pour l'insertion il ne devrait pas y avoir d'autorisation, c'est censé être fait avant.

Et aussi je vois que le "id_article" il est mis après le $set dans $champs. Alors que

  • soit ça devrait être avant (càd 1) définition des valeurs par défaut, pour le parent, date ou autre, puis 2) surcharge par les valeurs données explicitement dans l'appel d'insertion)
  • soit si c'est après, ça devrait être que if ($id_article) si c'est pas du rien quoi
mais ça ne devrait rien changer puisqu'on donne explicitement la liste brute des champs à remplir directement lors de l'insertion, en param $set, il est fait pour ça ce dernier param, pour aller au-delà des champs calculés automatiquement Là ya plusieurs choses qui vont pas c'est que Agenda fait un autoriser() dans une fonction d'API CRUD ! Ya un autoriser() dans evenement_inserer() quoi… alors que les autorisations ça doit être dans les éléments d'interface, les squelettes, les CVT, mais pas les fonctions au cœur du cœur. Je l'ai toujours dit que cet entre deux où parfois on met du autoriser() parfois pas (yen a dans le noyau pour objet_instituer par ex), ça foutait la merde… Vraiment pour l'insertion il ne devrait pas y avoir d'autorisation, c'est censé être fait avant. Et aussi je vois que le "id_article" il est mis *après* le $set dans $champs. Alors que - soit ça devrait être avant (càd 1) définition des valeurs par défaut, pour le parent, date ou autre, puis 2) surcharge par les valeurs données explicitement dans l'appel d'insertion) - soit si c'est après, ça devrait être que if ($id_article) si c'est pas du rien quoi
Poster
Collaborator

oui je constatais juste ce qui bloquait, mais oui effectivement le problème est au niveau d'agenda qui pose sa sécurité au mauvais endroit..

oui je constatais juste ce qui bloquait, mais oui effectivement le problème est au niveau d'agenda qui pose sa sécurité au mauvais endroit..
Résolu par https://git.spip.net/spip-contrib-extensions/agenda/commit/9c99d52c
rastapopoulos closed this issue 4 days ago
Sign in to join this conversation.
No Label
No Milestone
No Assignees
2 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.