Skip to content
Extraits de code Groupes Projets
Valider 4132d18c rédigé par nicod's avatar nicod
Parcourir les fichiers

Fonctions génériques de sérialisation

parent f1c6e06a
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -12,3 +12,11 @@ ...@@ -12,3 +12,11 @@
if (!defined('_ECRIRE_INC_VERSION')) { if (!defined('_ECRIRE_INC_VERSION')) {
return; return;
} }
function blocks_serialize($data) {
return json_encode($data);
}
function blocks_deserialize($data) {
return json_decode($data ?? '', true);
}
...@@ -4,6 +4,8 @@ if (!defined('_ECRIRE_INC_VERSION')) { ...@@ -4,6 +4,8 @@ if (!defined('_ECRIRE_INC_VERSION')) {
return; return;
} }
include_spip('blocks_fonctions');
function formulaires_editer_blocs_type_champs_charger($id_blocs_type, $redirect = '') { function formulaires_editer_blocs_type_champs_charger($id_blocs_type, $redirect = '') {
$id_blocs_type = intval($id_blocs_type); $id_blocs_type = intval($id_blocs_type);
$contexte = []; $contexte = [];
...@@ -14,13 +16,13 @@ function formulaires_editer_blocs_type_champs_charger($id_blocs_type, $redirect ...@@ -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 $blocs_type = sql_fetsel('*', 'spip_blocs_types', 'id_blocs_type = ' . $id_blocs_type)
and autoriser('editer', '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 ? // Est-ce qu'on restaure une révision ?
if ($id_version = _request('id_version')) { if ($id_version = _request('id_version')) {
include_spip('inc/revisions'); include_spip('inc/revisions');
$old = recuperer_version($id_blocs_type, 'blocs_type', $id_version); $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)) { if (!is_array($saisies)) {
$saisies = []; $saisies = [];
...@@ -62,7 +64,7 @@ function formulaires_editer_blocs_type_champs_verifier($id_blocs_type, $redirect ...@@ -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 // 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 // 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 (?) // 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; $saisies_anciennes_str = $saisies_anciennes;
array_walk_recursive($saisies_anciennes_str, 'blocs_types_array_walk_recursive_strval'); array_walk_recursive($saisies_anciennes_str, 'blocs_types_array_walk_recursive_strval');
$md5_saisies_anciennes = md5(serialize($saisies_anciennes_str)); $md5_saisies_anciennes = md5(serialize($saisies_anciennes_str));
...@@ -118,7 +120,7 @@ function formulaires_editer_blocs_type_champs_traiter($id_blocs_type, $redirect ...@@ -118,7 +120,7 @@ function formulaires_editer_blocs_type_champs_traiter($id_blocs_type, $redirect
// On envoie les nouvelles dans la table // On envoie les nouvelles dans la table
include_spip('action/editer_objet'); 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 // Si c'est bon on reinitialise les sessions
if (!$err) { if (!$err) {
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<span dir="#LANG_DIR" class="#EDIT{titre} titre">(#TITRE)</span> <span dir="#LANG_DIR" class="#EDIT{titre} titre">(#TITRE)</span>
</div>] </div>]
#SET{saisies, #SAISIES|json_decode{1}} #SET{saisies, #SAISIES|blocks_deserialize{1}}
[(#GET{saisies}|oui) [(#GET{saisies}|oui)
<h2><:blocs_type:champ_saisies_label:/></h2> <h2><:blocs_type:champ_saisies_label:/></h2>
<div class="formulaire_spip"> <div class="formulaire_spip">
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter