Anomalie #3617
objet_modifier_champ
100%
Description
objet_modifier_champ est l'api générique de modification d'un objet,
mais le code de la fonction appelle controler_md5 avec l'argument $_POST,
pour des vérifications qui n'ont de sens éventuellement que dans un formulaire.
cf https://core.spip.net/projects/spip/repository/entry/spip/ecrire/inc/modifier.php#L170
Du coup, quand on appelle pas objet_modifier_champ dans un formulaire, un conflit est parfois détecté sans raison.
Associated revisions
Fix #3617 : la fonction objet_modifier_champ utilise options[data] pour verifier les conflit, et si non fourni ou nul se rabat sur $_POST pour assurer la continuite de fonctionnement
Fix #3617 : passer $set a objet_modifier_champs pour qu'elle ne detecte les conflits sur $_POST que quand c'est pertinent
History
#1
Updated by cedric - about 5 years ago
De mémoire, pour avoir eu le cas une fois, si on appelle l'API modifier une seconde fois dans le POST, avec une variable que a le même nom que dans ce qui a été posté, un conflit est détecté à tord.
#2
Updated by jluc - about 5 years ago
En l'occurence, c'est avec gis : gis_modifier est appelé et appelle
objet_modifier_champs(gis, 1976, options=Array ( [invalideur] => id='gis/1976' ), c=Array (
[titre] => Annonce 10630 — Recherche une chambre temporaire!
[lat] => 44.8964144
[lon] => 4.6452795
[code_pays] => fr
[pays] => France
[zoom] => 6
[descriptif] =>
[adresse] =>
[region] =>
[ville] => Vernoux-en-Vivarais
[departement] => Ardèche
)
Le conflit détecté est :
= Array
( [titre] => Array (
[base] =>
[post] => Annonce 10630 — Recherche une chambre temporaire!
)
)
#3
Updated by jluc - about 5 years ago
De manière générale, la fonction objet_modifier_champ peut être appelée en dehors d'un formulaire, ou dans un formulaire n'ayant rien à voir avec l'objet modifié, et donc elle ne devrait pas faire référence à $_POST
Dans mon code, le pb se produit seulement pour certains points, toujours les mêmes, mais pas pour tous. Je n'ai pas vu ce qu'ils avaient de particulier. Je ne crois pas qu'il y ait plusieurs appels à l'API dans un même hit.
#4
Updated by cedric - about 5 years ago
- Status changed from Nouveau to Résolu
- Resolution set to fixed
#5 Updated by Anonymous about 5 years ago
- Status changed from Résolu to Fermé
- % Done changed from 0 to 100
Appliqué par commit r22650.