fix#99close#111
On fait un merge et pas un --ff car ce n'est pas une évolution
anedecotique que ce passage à `json_encode` -> on veut pouvoir bien le
voir dans l'historique.
- saisies d'un formulaire
- traitements d'un formulaire
- réponse pour un champ multivalué
Sont désormais en json, via
```
$formidable_serialize = charger_fonction('formidable_serialize', 'filtre');
```
C'est un filtre pour faire le sysmétrique à `|formidable_serialize`,
même si en fait on n'a pas vraiment de raison de l'utiliser en filtre.
Sont gardés en serialize_php :
- les paramètres passées en url pour l'action de recup de fichier
- la base du calcul des hash md5 dans les sessions (utilisés pour
s'assurer qu'on ne perd pas des données en cas d'interruption de config
d'un formulaire -> il faut surtout pas rompre la compat).
- Le filtre `|tenter_unserialize` est déprécié.
- Il est remplacé par `|formidable_deserialize`.
- Ce filtre peut recevoir au choix :
* Un tableau, qu'il retourne tel quel
* Un tableau serializé via `json_encode`
* Un tableau serializé via `serialize`
- Dans les deux dernier cas, il renvoie la version deserializé, en cas
de réussite, sinon l'argument passé.
Exemple
````
include_spip('formidable_fonctions');
'filtre');
$a = ['a' => 'a'];
$a = json_encode($a);
var_dump($a);
$a = formidable_deserialize($a);
var_dump($a);
$a = serialize($a);
var_dump($a);
$a = formidable_deserialize($a);
var_dump($a);
$a = serialize($a).'plop';//Serialisation corrompu
var_dump($a);
$a = formidable_deserialize($a);
var_dump($a);
````
Ainsi, pas besoin de convertir tous les formulaires de `serialize` à
`json_encode` à la mise à jour du plugin formidable :
on peut le faire au fur à mesure qu'on modifie les champs/traitements
d'un formulaire.
On utilisera donc ce filtre à chaque fois que l'on veut déchiffrer
depuis la BDD :
- * traitements d'un formulaire
- * saisies d'un formulaire
- * réponse d'un champ multivalué (ex: checkbox)
`afficher_si` sont cohérents avec les champs du formulaire proposé.
On ne vérifie qu'à la fin, et pas au fur et à mesure, car il se peut
lors de la configuration des champs d'un formulaire qu'on supprime
des champs qui conditionnaient des afficher_si. La vérification
ne peut donc se faire que lors que la liste des champs est ferme.
Nécessite saisies 4.4.0
retombait sur un formulaire de config de traitement vierge
(`exec=formulaire_edit&configurer=traitement`), ou plus exactement au formulaire de création d'un nouveau formulaire.
C'est parce
que l'identifiant du formulaire formidable n'était pas envoyé lors de le
soumission du formulaire de config des traitements. Or lorsque
`?exec=formulaire_edit` ne reçoit pas d'`id_formulaire`, il affiche le
formulaire de création de formulaire formidable.
On corrige en passant le `id_formulaire` en `POST`.
uniquement par le plugin `formidable_quizz`, actuellement non maintenu
et non publié.
Ce pipeline n'était pas générique, car le remplacement des `@@` ne
concerne pas que l'affichage résumé des réponses, mais aussi en
différent endroit (message de retour par exemple).
On créé deux pipelines plus générique :
- `formidable_pre_raccourcis_arobases`
- `formidable_post_raccourcis_arobases`
On supprime donc le pipeline `formidable_affiche_resume_reponse`.
On simplifie par ailleurs la signature de la fonction
`formidable_raccourcis_arobases_2_valeurs_champs()`.
1. En supprimant les deux derniers arguments passés par références (`$valeurs` et
`$valeurs_libellees`).
La seule raison de ce passage par référence, qui n'était utilisé sur
toute la zone que dans **UN** appel à la fonction, était précisement
de passer les valeurs libellées en arguments du pipeline `formidable_affiche_resume_reponse`. Puisqu'on supprime ce pipeline, plus besoin de ces valeurs.
2. On regroupe tout les paramètres en troisième arguments, dans
$options, tout en assurant une rétrocompatibilité (pas d'autre usage de
`formidable_raccourcis_arobases_2_valeurs_champs()` sur la zone, mais j'ai
du code perso qui l'utilise, et il n'est pas impossible que d'autres
fassent de même.
3. On ajoute une option `'contexte'` pour indiquer le contexte d'appel
de `formidable_raccourcis_arobases_2_valeurs_champs`, ce qui permet de
remplacer utilement le pipeline `formidable_affiche_resume_reponse`.