Changeset 82449 in spip-zone


Ignore:
Timestamp:
May 16, 2014, 12:16:49 PM (5 years ago)
Author:
brunobergot@…
Message:

version 1.9.5 : réparer l'enregistrement des données quand deux formulaires sont présents sur une même page

report adapté de r80690 qui fix ce bug dans le trunk, car en récupérant id_formulaire avec _request dans les traitements on récupérait à tord l'id du formulaire précédemment posté depuis l'url de la page

Location:
_plugins_/formidable/branches/v1
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/formidable/branches/v1/formulaires/formidable.php

    r80352 r82449  
    1515include_spip('inc/autoriser');
    1616
     17function formidable_id_formulaire($id){
     18        if (intval($id)>0)
     19                $where = 'id_formulaire = ' . intval($id);
     20        elseif (is_string($id))
     21                $where = 'identifiant = ' . sql_quote($id);
     22        else
     23                return 0;
     24
     25        $id_formulaire = intval(sql_getfetsel('id_formulaire','spip_formulaires',$where));
     26        return $id_formulaire;
     27}
     28
    1729/**
    1830 * Chargement du formulaire CVT de Formidable.
     
    2032 * Genere le formulaire dont l'identifiant (numerique ou texte est indique)
    2133 *
    22  * @param int|string $id_formulaire
     34 * @param int|string $id
    2335 *     Identifiant numerique ou textuel du formulaire formidable
    2436 * @param array $valeurs
     
    3143 *     Contexte envoyé au squelette HTML du formulaire.
    3244**/
    33 function formulaires_formidable_charger($id_formulaire, $valeurs=array(), $id_formulaires_reponse=false){
     45function formulaires_formidable_charger($id, $valeurs=array(), $id_formulaires_reponse=false){
    3446    $contexte = array();
    3547
    36     // On peut donner soit un id soit un identifiant
    37     if (intval($id_formulaire) > 0)
    38         $where = 'id_formulaire = '.intval($id_formulaire);
    39     elseif (is_string($id_formulaire))
    40         $where = 'identifiant = '.sql_quote($id_formulaire);
    41     else
    42         return;
     48        // On peut donner soit un id soit un identifiant
     49        if (!$id_formulaire = formidable_id_formulaire($id))
     50                return;
    4351
    4452    // On cherche si le formulaire existe
    45     if ($formulaire = sql_fetsel('*', 'spip_formulaires', $where)) {
     53    if ($formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire)){
    4654        // On ajoute un point d'entrée avec les infos de ce formulaire
    4755        // pour d'eventuels plugins qui en ont l'utilité
     
    153161 * les saisies et retourne éventuellement les erreurs de saisie.
    154162 *
    155  * @param int|string $id_formulaire
     163 * @param int|string $id
    156164 *     Identifiant numerique ou textuel du formulaire formidable
    157165 * @param array $valeurs
     
    164172 *     Tableau des erreurs
    165173**/
    166 function formulaires_formidable_verifier($id_formulaire, $valeurs=array(), $id_formulaires_reponse=false){
     174function formulaires_formidable_verifier($id, $valeurs=array(), $id_formulaires_reponse=false){
    167175    $erreurs = array();
     176
     177        // On peut donner soit un id soit un identifiant
     178        if (!$id_formulaire = formidable_id_formulaire($id))
     179                return;
    168180
    169181    // Sale bête !
     
    173185    }
    174186
    175     $id_formulaire = intval(_request('id_formulaire'));
    176187    $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire);
    177188    $saisies = unserialize($formulaire['saisies']);
     
    198209 * - rediriger sur une autre page...
    199210 *
    200  * @param int|string $id_formulaire
     211 * @param int|string $id
    201212 *     Identifiant numerique ou textuel du formulaire formidable
    202213 * @param array $valeurs
     
    209220 *     Tableau des erreurs
    210221**/
    211 function formulaires_formidable_traiter($id_formulaire, $valeurs=array(), $id_formulaires_reponse=false){
     222function formulaires_formidable_traiter($id, $valeurs=array(), $id_formulaires_reponse=false){
    212223        $retours = array();
    213     $id_formulaire = intval(_request('id_formulaire'));
     224
     225        // On peut donner soit un id soit un identifiant
     226        if (!$id_formulaire = formidable_id_formulaire($id))
     227                return;
     228
    214229    $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id_formulaire);
    215230    $traitements = unserialize($formulaire['traitements']);
     
    218233    $retours['editable'] = ($formulaire['apres']=='formulaire');
    219234    $retours['formidable_afficher_apres'] = $formulaire['apres'];
     235    $retours['id_formulaire'] = $id_formulaire;
    220236
    221237    // Si on a une redirection valide
  • _plugins_/formidable/branches/v1/paquet.xml

    r82249 r82449  
    22        prefix="formidable"
    33        categorie="communication"
    4         version="1.9.4"
     4        version="1.9.5"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.0.*]"
Note: See TracChangeset for help on using the changeset viewer.