Browse Source

Lorsqu'on initialise une session pour modifier un formulaire, stocker le md5 du formulaire initial.

Lorsqu'on reprend la modification du formulaire, après avoir par exemple fermé un onglet, vérifier qu'il n'y pas de modification du md5 du formulaire initial. Si oui, alors le formulaire_initial prend le pas sur tout ce qu'il y avait en session, et remplace le formulaire qui était en session.

cf spip-contrib-extensions/formidable#8, cas 2 (vérification en amont du formulaire).

Reste à faire le cas 1, vérification à la fin du formulaire.
svn/attic/branches/formidable_issue8/122771
Maïeul 3 years ago
parent
commit
673fcfac85
  1. 27
      formulaires/construire_formulaire.php
  2. 2
      paquet.xml

27
formulaires/construire_formulaire.php

@ -5,6 +5,17 @@ if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Formulaire permettant de construire un formulaire ! En agençant des champs
* Chargement.
* @param string $identifiant identifiant unique du formulaire
* @param array $formulaires_initial, formulaire initial (par exemple si on modifie un formulaire déjà construit)
* @param array $options tableau d'options
* - array options_globales : proposer des options globales pour le formulaire, liste de ces options
* - array saisies_exclues : liste des saisies à ne pas proposer (= à exclure du choix)
* - bool uniquement_sql : ne proposer que les saisies qui permettent de remplir un champ sql
* @return array $contexte
**/
function formulaires_construire_formulaire_charger($identifiant, $formulaire_initial = array(), $options = array()) {
include_spip('inc/saisies');
$contexte = array();
@ -21,9 +32,21 @@ function formulaires_construire_formulaire_charger($identifiant, $formulaire_ini
// On s'assure que toutes les saisies ont un identifiant (en cas de bug lors de la création, par ex.)
$formulaire_initial = saisies_identifier($formulaire_initial);
// On initialise la session si elle est vide
if (is_null($formulaire_actuel = session_get($identifiant))) {
// Construire le md5 du paramètre $formulaire_initial, et trouver celui qu'on avait stocké
$md5_formulaire_initial = md5(serialize($formulaire_initial));
$md5_precedent_formulaire_initial = session_get($identifiant.'_md5_formulaire_initial');
// Si pas de session, on prend le formulaire initial comme formulaire actuel,
// ou bien si la session est trop trop veille, on prend le formulaire initial comme formulaire
if (
is_null($formulaire_actuel = session_get($identifiant))
or
($md5_precedent_formulaire_initial
and
$md5_formulaire_initial != $md5_precedent_formulaire_initial and $_SERVER['REQUEST_METHOD'] === 'GET')
) {
session_set($identifiant, $formulaire_initial);
session_set($identifiant.'_md5_formulaire_initial', $md5_formulaire_initial);
$formulaire_actuel = $formulaire_initial;
}

2
paquet.xml

@ -1,7 +1,7 @@
<paquet
prefix="saisies"
categorie="outil"
version="3.32.1"
version="3.33.0"
etat="stable"
compatibilite="[3.0.0;3.2.*]"
logo="images/logo_saisie_48.png"

Loading…
Cancel
Save