From 4132d18c50ad877ddfd860d93d0686703b96ed12 Mon Sep 17 00:00:00 2001 From: nicod_ <nicod@lerebooteux.fr> Date: Sat, 15 Apr 2023 17:20:28 +0200 Subject: [PATCH] =?UTF-8?q?Fonctions=20g=C3=A9n=C3=A9riques=20de=20s=C3=A9?= =?UTF-8?q?rialisation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blocks_fonctions.php | 8 ++++++++ formulaires/editer_blocs_type_champs.php | 10 ++++++---- prive/objets/contenu/blocs_type.html | 2 +- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/blocks_fonctions.php b/blocks_fonctions.php index 35cf993..ab8c648 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 0d322c2..cb55ea0 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 127b65e..dbd5f14 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"> -- GitLab