diff --git a/blocks_fonctions.php b/blocks_fonctions.php index 35cf993079781e0084324fda3741855286aaf15f..ab8c648794f4b7d74efe9bfb650255e70c0c5b0e 100644 --- a/blocks_fonctions.php +++ b/blocks_fonctions.php @@ -12,3 +12,11 @@ if (!defined('_ECRIRE_INC_VERSION')) { return; } + +function blocks_serialize($data) { + return json_encode($data); +} + +function blocks_deserialize($data) { + return json_decode($data ?? '', true); +} diff --git a/formulaires/editer_blocs_type_champs.php b/formulaires/editer_blocs_type_champs.php index 0d322c2a12f7504972053977785ea7b799b10d3a..cb55ea0b0e6687da3dd3e79193a88efb2204d1d7 100644 --- a/formulaires/editer_blocs_type_champs.php +++ b/formulaires/editer_blocs_type_champs.php @@ -4,6 +4,8 @@ if (!defined('_ECRIRE_INC_VERSION')) { return; } +include_spip('blocks_fonctions'); + function formulaires_editer_blocs_type_champs_charger($id_blocs_type, $redirect = '') { $id_blocs_type = intval($id_blocs_type); $contexte = []; @@ -14,13 +16,13 @@ function formulaires_editer_blocs_type_champs_charger($id_blocs_type, $redirect and $blocs_type = sql_fetsel('*', 'spip_blocs_types', 'id_blocs_type = ' . $id_blocs_type) and autoriser('editer', 'blocs_type', $id_blocs_type) ) { - $saisies = json_decode($blocs_type['saisies'], true); + $saisies = blocks_deserialize($blocs_type['saisies']); // Est-ce qu'on restaure une révision ? if ($id_version = _request('id_version')) { include_spip('inc/revisions'); $old = recuperer_version($id_blocs_type, 'blocs_type', $id_version); - $saisies = json_decode($old['saisies'], true); + $saisies = blocks_deserialize($old['saisies']); } if (!is_array($saisies)) { $saisies = []; @@ -62,7 +64,7 @@ function formulaires_editer_blocs_type_champs_verifier($id_blocs_type, $redirect // Attention à s'assurer que tout les elements du tableau soit bien soit des tableaux, soit un string // En effet, le md5 du formulaire_initial est calculé à partir de ce qui est passé au squelette // Or dès qu'une valeur est passée à un squelette, elle est changé en string, à cause du mode de compilation (?) - $saisies_anciennes = json_decode($saisies_anciennes, true); + $saisies_anciennes = blocks_deserialize($saisies_anciennes); $saisies_anciennes_str = $saisies_anciennes; array_walk_recursive($saisies_anciennes_str, 'blocs_types_array_walk_recursive_strval'); $md5_saisies_anciennes = md5(serialize($saisies_anciennes_str)); @@ -118,7 +120,7 @@ function formulaires_editer_blocs_type_champs_traiter($id_blocs_type, $redirect // On envoie les nouvelles dans la table include_spip('action/editer_objet'); - $err = objet_modifier('blocs_type', $id_blocs_type, ['saisies' => json_encode(saisies_identifier($saisies_nouvelles))]); + $err = objet_modifier('blocs_type', $id_blocs_type, ['saisies' => blocks_serialize(saisies_identifier($saisies_nouvelles))]); // Si c'est bon on reinitialise les sessions if (!$err) { diff --git a/prive/objets/contenu/blocs_type.html b/prive/objets/contenu/blocs_type.html index 127b65e86e50fb2461b74e3ea9a87d272d4336b4..dbd5f14517f27f0a9e9bb98fb18caa71ffe2b472 100644 --- a/prive/objets/contenu/blocs_type.html +++ b/prive/objets/contenu/blocs_type.html @@ -4,7 +4,7 @@ <span dir="#LANG_DIR" class="#EDIT{titre} titre">(#TITRE)</span> </div>] -#SET{saisies, #SAISIES|json_decode{1}} +#SET{saisies, #SAISIES|blocks_deserialize{1}} [(#GET{saisies}|oui) <h2><:blocs_type:champ_saisies_label:/></h2> <div class="formulaire_spip">