From 7757e8319b2e7a79353319a97b8fa847599caf9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=AFeul=20Rouquette?= <maieul@maieul.net> Date: Fri, 24 Apr 2020 14:52:55 +0200 Subject: [PATCH] =?UTF-8?q?On=20revient=20totalement=20sur=20la=20mani?= =?UTF-8?q?=C3=A8re=20de=20g=C3=A9rer=20les=20crayons=20pour=20des=20champ?= =?UTF-8?q?s=20qui=20n'existeraient=20pas=20encore=20en=20base=20pour=20un?= =?UTF-8?q?e=20r=C3=A9ponse=20donn=C3=A9e.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Partant du constat 1. Que lorsque formidable reçoit une réponse vide (soit par afficher_si, soit par non remplissage) pour un champ donné, il insère ce champ en base quand même. 2. Que les seuls cas où le champ non rempli n'est pas présent en base pour une réponse donnée, c'est quand il a été ajouté dans le formulaire après l'enregistrement de la réponse. Il ne paraît pas gênant lorsqu'on appel un crayon sur un champ inexistant en base pour une réponse donnée de le créer en base, cela revient juste à faire 1. --- controleurs/formulaires_reponses_champ.php | 19 ++++++------------- formidable_fonctions.php | 2 +- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/controleurs/formulaires_reponses_champ.php b/controleurs/formulaires_reponses_champ.php index b1432b0a..866fb495 100644 --- a/controleurs/formulaires_reponses_champ.php +++ b/controleurs/formulaires_reponses_champ.php @@ -12,26 +12,19 @@ function controleurs_formulaires_reponses_champ_dist($regs, $c = null) { list(,$crayon, $type, $champ, $id) = $regs; $id_formulaires_reponses_champ = $regs[4]; - // Cas 1. On est sur un champ déjà enregistreé - if (strpos($id_formulaires_reponses_champ, 'new') === false) { // Recuperer id_formulaires_reponse et id_formulaire // Note, sans doute pourrait-on passer directement cela en classe // Mais // 1. Cela ferait une exception // 2. Des gens utilisent peut être pas #VOIR_REPONSE{xxx,edit} - // - $data = sql_fetsel('saisies, nom, valeur', 'spip_formulaires_reponses_champs JOIN spip_formulaires_reponses JOIN spip_formulaires', "id_formulaires_reponses_champ=$id_formulaires_reponses_champ AND spip_formulaires_reponses.id_formulaires_reponse = spip_formulaires_reponses_champs.id_formulaires_reponse AND spip_formulaires.id_formulaire = spip_formulaires_reponses.id_formulaire"); - $nom = $data['nom']; - $valeur = $data['valeur']; - } else { - $valeur = ''; - preg_match('#new-(.*)-(.*)#', $id_formulaires_reponses_champ, $match); - $nom = $match[1]; - $id_formulaires_reponse = $match[2]; - $data = sql_fetsel('saisies', 'spip_formulaires_reponses JOIN spip_formulaires', "id_formulaires_reponse=$id_formulaires_reponse AND spip_formulaires.id_formulaire = spip_formulaires_reponses.id_formulaire"); - } + $data = sql_fetsel('*', 'spip_formulaires_reponses_champs JOIN spip_formulaires_reponses JOIN spip_formulaires', "id_formulaires_reponses_champ=$id_formulaires_reponses_champ AND spip_formulaires_reponses.id_formulaires_reponse = spip_formulaires_reponses_champs.id_formulaires_reponse AND spip_formulaires.id_formulaire = spip_formulaires_reponses.id_formulaire"); + $id_formulaires_reponse = $data['id_formulaires_reponse']; + + $nom = $data['nom']; + $valeur = $data['valeur']; $saisie = saisies_chercher(unserialize($data['saisies']), $nom); + $valeur = $data['valeur']; $n = new Crayon( $type . '-valeur-' . $id_formulaires_reponses_champ, diff --git a/formidable_fonctions.php b/formidable_fonctions.php index 552ab1e5..c0c317a5 100644 --- a/formidable_fonctions.php +++ b/formidable_fonctions.php @@ -102,7 +102,7 @@ function calculer_voir_reponse($id_formulaires_reponse, $id_formulaire, $nom, $s if (isset($reponses_valeurs[$id_formulaires_reponse][$nom]['id'])) { $valeur = $reponses_valeurs[$id_formulaires_reponse][$nom]['id']; } else { - $valeur = "new-$nom-$id_formulaires_reponse"; + $valeur = sql_insertq('spip_formulaires_reponses_champs', array('id_formulaires_reponse' => $id_formulaires_reponse, 'nom' => $nom)); } return 'crayon '.'formulaires_reponses_champ-valeur-'. $valeur; } -- GitLab