Changeset 57707 in spip-zone for _plugins_/formitable


Ignore:
Timestamp:
Jan 25, 2012, 9:01:09 PM (8 years ago)
Author:
jluc@…
Message:

revert du précédent commit qui introduisait plusieurs bugs et une fonctionnalité intéressante mais buguée et mal définie. Je corrige un bug tout de même.

Location:
_plugins_/formitable
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/formitable/plugin.xml

    r56739 r57707  
    44        <auteur>[JLuc->http://ouhpla.net]</auteur>
    55        <licence>GPL v3</licence>
    6         <version>0.2.2</version>
     6        <version>0.2.3</version>
    77        <version_base>0.2</version_base>
    88        <etat>test</etat>
  • _plugins_/formitable/traiter/table.php

    r56739 r57707  
    11<?php
    22// Auteur : JLuc
    3 // 
     3//
    44//
    55// - Paramétrage du traitement =
     
    77//              * correspondance des champs entre formulaire et table
    88//              sous la forme d'une suite de couples champform1|champtable
    9 //              * SI plusieurs champs du formulaire ont la même destination dans la table (mm notation champ|dest et un par lignes)
    10 //              les valeurs sont fusionnées et insérés avec mise en forme simple label : valeur dans le champ de destination
    11 //             
    129// - Enregistrement des valeurs saisies dans la table utilisateur
    1310//
     
    1916// Sécurité
    2017if (!defined("_ECRIRE_INC_VERSION")) return;
    21 
    22 /**
    23  * Passe un tableau d'élements en html
    24  *
    25  *
    26  * @param mixed $tableau
    27  * @return string html simple
    28 **/
    29 function saisies_tableau2html($tableau) {
    30         if ($tableau and is_array($tableau)){
    31                 $chaine = '';
    32        
    33                 foreach($tableau as $cle=>$valeur){
    34                         $label = trim("$cle:<br/>");
    35                         $ligne = trim("<p>$valeur</p>");
    36                         $chaine .= $label.$ligne;
    37                 }
    38                 $chaine = trim($chaine);
    39        
    40                 return $chaine;
    41         }
    42         // Si c'est déjà une chaine on la renvoie telle quelle
    43         elseif (is_string($tableau)){
    44                 return $tableau;
    45         }
    46         else{
    47                 return '';
    48         }
    49 }
    50 
    5118
    5219// convertir le format des dates issu de formidable à un format SQL de type DATE
     
    6734// function traitement_champ ($valeur, $table, $nom)
    6835
    69 //function traitement_champ_naissance ($valeur, $table, $champ, $nom) {
    70 //      return traitement_date_fr_vers_sql();
    71 //};
     36function traitement_champ_naissance ($valeur, $table, $champ, $nom) {
     37        return traitement_date_fr_vers_sql($valeur);
     38};
    7239
    7340/* exemple d'usage :
     
    8956        $correspondance_champs_formulaire_table = $options['correspondance_champs_formulaire_table'];
    9057        $correspondance_champs_formulaire_table = saisies_chaine2tableau($correspondance_champs_formulaire_table);
    91        
    92         // Détection similaires
    93         if(array_count_values($correspondance_champs_formulaire_table)!=1) :
    94                
    95                 $similaires = array_count_values($correspondance_champs_formulaire_table);
    96                        
    97                 foreach($similaires as $val => $nb) {
    98                         //si le nombre de champ utilisant la mm destination est sup à 1
    99                         if($nb>1) $similaire = $val;                           
    100                 }
    101         endif;
    10258
    10359        $formulaire = $args['formulaire'];
     
    10561        $saisies = unserialize($formulaire['saisies']);
    10662        $saisies = saisies_lister_par_nom($saisies);
    107        
     63
    10864        // La personne a-t-elle un compte ?
    10965        global $auteur_session;
     
    14399                        )
    144100                );
    145                 // ont récupère l'id_formulaires_reponse incrémenté dans la base de formidale
    146                 // et ont post l'identique dans la table utilisateur
    147                 $id_new = sql_getfetsel('id_formulaires_reponse', 'spip_formulaires_reponses', 'id_formulaires_reponse='. intval($id_formulaires_reponse));
    148                 // ont ajoute a inserts
    149                 $inserts['id_formulaires_reponse'] = $id_new;
     101
    150102                // Si on a pas le droit de répondre plusieurs fois ou que les réponses seront modifiables, il faut poser un cookie
    151103                if (!$options['multiple'] or $options['modifiable']){
     
    164116                $champs = array();
    165117                $insertions = array();
    166                 $concat = array();
    167                
    168118                foreach($saisies as $nom => $saisie){
    169119                        // On ne prend que les champs qui ont effectivement été envoyés par le formulaire
    170120                        if (($valeur = _request($nom)) !== null){
    171121                                $champs[] = $nom;
    172                                 //ont test ceux qui ont été détectés comme ayant une destination similaire
    173                                 if (isset($similaire)&&$correspondance_champs_formulaire_table[$nom]==$similaire) {
    174                                         $label = $saisies[$nom]['options']['label'];
    175                                         $concat[$label]=$valeur;
    176                                 }
    177                                 if (isset ($correspondance_champs_formulaire_table[$nom])){
     122                                if (isset ($correspondance_champs_formulaire_table[$nom]))
    178123                                        $colname = $correspondance_champs_formulaire_table[$nom];
    179                                 }else {
     124                                else {
    180125                                        $retours['message_erreur'] .= "\n<br/>Erreur : le champ du formulaire ".$nom."n'a pas de correspondance déclarée dans la table utilisateur";
    181126                                        break;
    182127                                };
     128
     129//                              echo "nom=$nom saisie=$saisie col=$colname valeur=$valeur<br>";
    183130
    184131                                // traitements des valeurs avant enregistrement : fonction de la table destinataire et du champ destination
     
    191138                        }
    192139                }
    193                
    194                 if(isset($concat)) {
    195                         $compil = saisies_tableau2html($concat);
    196                         $inserts[$similaire]=$compil;
    197                 }
    198 
    199                 if ($modif_reponse) // On modifie l'enregistrement trouvé
    200                         $inserts['id_formulaires_reponse'] = $id_formulaires_reponse;
    201                
     140                // On modifie l'enregistrement trouvé ou créé
     141                $inserts['id_formulaires_reponse'] = $id_formulaires_reponse;
    202142
    203143                // S'il y a bien des choses à modifier
     
    206146//                              sql_updateq ($table_destinataire, $inserts);
    207147//                      else
    208                         // echo "<pre>".print_r($champ,1)."</pre>";
    209                        
    210148                        // On insère les nouvelles valeurs
    211149                        $id= sql_insertq ($table_destinataire, $inserts);
    212                        
    213                         #TEST
    214                         //echo "sql_insertq ($table_destinataire, <pre>".print_r($inserts,1)."</pre>)";
    215                        
     150
     151 //                     echo "sql_insertq ($table_destinataire, <pre>".print_r($inserts,1)."</pre>)";
    216152                        if (!$id)       
    217153                                $retours['message_erreur'] .= "\n<br/>Erreur : l'insertion dans la table ($table_destinataire) ne se fait pas bien.".sql_error()."<pre class='reponse_formulaire_erreur'>".print_r($inserts,1)."</pre>";
     
    231167
    232168?>
     169
Note: See TracChangeset for help on using the changeset viewer.