Objet sans statut : problème avec objet_instituer()
Le contexte
J'ai un objet éditorial sans statut, et avec une date.
La date est bien déclarée dans declarer_tables_objets_sql : 'date' => 'date'
Le formulaire d'édition permet de modifier directement la date, sans avoir à passer par #FORMULAIRE_DATER
.
Problème
La date saisies par l'utilisateur n'est pas enregistrée, ça remet systématiquement la date actuelle. À la toute fin des traitements, dans la fonction "objet_editer_heritage()":https://git.spip.net/SPIP/spip/src/branch/master/ecrire/action/editer_objet.php#L485, on retrouve bien la date correcte dans le tableau des champs à modifier qui est transmis à "sql_updateq()":https://git.spip.net/SPIP/spip/src/branch/master/ecrire/action/editer_objet.php#L485. Par contre il y également le champ 'statut', hors il n'a rien à faire là : ça provoque une erreur SQL.
Voici ce que renvoie var_dump($champs)
:
array (size=2) 'statut' => string '' (length=0) 'date' => string '2019-01-22 00:00:00' (length=19)
C'est en amont dans "objet_instituer()":https://git.spip.net/SPIP/spip/src/branch/master/ecrire/action/editer_objet.php#L333 que le tabeau des champs à modifier est contruit. Il semble qu'il y a des tests effectués pour vérifier la présence du champ de statut dans la table, pourtant même en son absence il se retrouve dans la liste. Je n'arrive pas à mettre le doigt sur l'endroit exact où ça coince, RastaPopoulos me dit que ça doit se jouer vers "la ligne 333":https://git.spip.net/SPIP/spip/src/branch/master/ecrire/action/editer_objet.php#L333
Solution
Pas vraiment une solution, mais ça montre bien que c'est l'absence de statut qui fait tout planter : quand je retire la clé 'statut' dans au moyen du pipeline pre_edition
, ça marche.