Changeset 49235 in spip-zone
- Timestamp:
- Jul 2, 2011, 3:07:15 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/formitable/traiter/table.php
r49171 r49235 1 1 <?php 2 // Débroussailleur : JLuc2 // Auteur : JLuc 3 3 // 4 // OK :4 // 5 5 // - Paramétrage du traitement = 6 6 // * spécification de la table destinataire pour le formulaire 7 7 // * correspondance des champs entre formulaire et table 8 8 // sous la forme d'une suite de couples champform1|champtable 9 // - Enregistrement d ans la table9 // - Enregistrement des valeurs saisies dans la table utilisateur 10 10 // 11 // Approximatif ou foireux : 12 // - Toute la mécanique de gestion des "modification de réponses existantes" 13 // est dupliquée depuis le traitement "enregistrement" 14 // Notamment, il utilise les valeurs de cette configuration qui doit donc être activée 15 // Il faudrait soit retirer tout ça et faire au plus simple 16 // soit mutualiser le code ET la config ET l'interface de config ! 17 // - La fonction traiter_table_update_dist n'a pas encore été touchée, 18 // elle doit être adaptée pour ce nouveau traitement 19 // 11 // Notes techniques : 12 // La gestion des "modification de réponses existantes" est une dupplication 13 // de cette partie du traitement 'enregistrement'. 14 // Ce serait bien de mutualiser le code et la config en sortant cette partie des traitements. 20 15 21 16 // Sécurité 22 17 if (!defined("_ECRIRE_INC_VERSION")) return; 23 18 24 function traitement_date_fr_vers_sql($date) { 19 // convertir le format des dates issu de formidable à un format SQL de type DATE 20 function traitement_date_fr_vers_sql ($date) { 25 21 sscanf ($date, "%2d/%2d/%4d%s",$jour,$mois,$an,$s); 26 22 return "$an-$mois-$jour"; 27 23 }; 28 24 29 // exemples : 30 // function traitement_champ_bateau_couleur ($valeur, $table, $nom) 31 // function traitement_champ_date_debut ($valeur, $table, $nom) 32 // function traitement_champ_evenement_date_debut ($valeur, $table, $nom) 25 // Exemples : 26 // - $valeur : valeur renvoyée par la saisie 27 // - $table : table SQL utilisateur destinatrice des données 28 // - $champ : champ de la table SQL 29 // - $nom : id de l'input dans le formulaire généré par spip 30 // 31 // function traitement_champ_bateau_couleur ($valeur, $table, $champ, $nom) 32 // function traitement_champ_date_debut ($valeur, $table, $champ, $nom) 33 // function traitement_champ_evenement_date_debut ($valeur, $table, $champ, $nom) 33 34 // function traitement_champ ($valeur, $table, $nom) 34 35 36 function traitement_champ_naissance ($valeur, $table, $champ, $nom) { 37 return traitement_date_fr_vers_sql($valeur); 38 }; 39 35 40 /* exemple d'usage : 36 function traitement_champ ($valeur, $table, $ nom) {37 // ICI appels des fonctions de conversions41 function traitement_champ ($valeur, $table, $champ, $nom) { 42 // Toutes les saisies DATES sont stockées dans un format un champt de type DATE 38 43 if (strpos($nom,'date')===0) { 39 44 $valeur = traitement_date_fr_vers_sql($valeur); 40 45 echo "<br>Reçu date fr et convertit vers SQL = $valeur"; 41 46 }; 42 };43 */47 return $valeur; 48 }; */ 44 49 45 50 function traiter_table_dist($args, $retours){ 46 47 51 include_spip('inc/formidable'); 48 52 include_spip('base/abstract_sql'); 49 53 $options = $args['options']; 50 54 51 55 $table_destinataire = $options['table_destinataire']; 52 53 56 $correspondance_champs_formulaire_table = $options['correspondance_champs_formulaire_table']; 57 $correspondance_champs_formulaire_table = saisies_chaine2tableau($correspondance_champs_formulaire_table); 54 58 55 $correspondance_champs_formulaire_table = saisies_chaine2tableau($correspondance_champs_formulaire_table);56 57 59 $formulaire = $args['formulaire']; 58 60 $id_formulaire = intval($formulaire['id_formulaire']); … … 63 65 global $auteur_session; 64 66 $id_auteur = $auteur_session ? intval($auteur_session['id_auteur']) : 0; 65 67 66 68 // On cherche le cookie et sinon on le crée 67 69 $nom_cookie = formidable_generer_nom_cookie($id_formulaire); … … 77 79 $id_formulaires_reponse 78 80 = intval(_request('deja_enregistre_'.$id_formulaire)); 79 81 80 82 // Si la moderation est a posteriori ou que la personne est un boss, on publie direct 81 83 if ($options['moderation'] == 'posteriori' or autoriser('instituer', 'formulaires_reponse', $id_formulaires_reponse, null, array('id_formulaire'=>$id_formulaire, 'nouveau_statut'=>'publie'))) … … 83 85 else 84 86 $statut = 'prop'; 85 87 86 88 // Si ce n'est pas une modif d'une réponse existante, on crée d'abord la réponse 87 89 if (!$id_formulaires_reponse){ … … 97 99 ) 98 100 ); 101 99 102 // Si on a pas le droit de répondre plusieurs fois ou que les réponses seront modifiables, il faut poser un cookie 100 103 if (!$options['multiple'] or $options['modifiable']){ … … 104 107 } 105 108 } 106 109 107 110 // Si l'id n'a pas été créé correctement alors erreur 108 111 if (!($id_formulaires_reponse > 0)){ … … 123 126 break; 124 127 }; 125 128 129 echo "nom=$nom saisie=$saisie col=$colname valeur=$valeur<br>"; 130 126 131 // traitements des valeurs avant enregistrement : fonction de la table destinataire et du champ destination 127 if (function_exists($f = 'traitement_champ_'.$table_destinataire.'_'.$ nom)128 OR function_exists($f = 'traitement_champ_'.$ nom)132 if (function_exists($f = 'traitement_champ_'.$table_destinataire.'_'.$colname) 133 OR function_exists($f = 'traitement_champ_'.$colname) 129 134 OR function_exists($f = 'traitement_champ')) 130 $valeur = $f($valeur, $table_destinataire, $ nom);131 132 135 $valeur = $f($valeur, $table_destinataire, $colname, $nom); 136 137 $inserts[$colname] = (is_array($valeur) ? serialize($valeur) : $valeur); 133 138 } 134 139 } 135 136 140 if ($modif_reponse) // On modifie l'enregistrement trouvé 137 141 $inserts['id_formulaires_reponse'] = $id_formulaires_reponse; 138 142 139 143 // S'il y a bien des choses à modifier 140 144 if ($champs) { … … 144 148 // On insère les nouvelles valeurs 145 149 $id= sql_insertq ($table_destinataire, $inserts); 150 151 echo "sql_insertq ($table_destinataire, <pre>".print_r($inserts,1)."</pre>)"; 146 152 if (!$id) 147 $retours['message_erreur'] .= "\n<br/>Erreur : l'insertion dans la table utilisateur ne se fait pas bien.".sql_error();153 $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>"; 148 154 }; 149 155 } … … 153 159 154 160 function traiter_table_update_dist($id_formulaire, $traitement, $saisies_anciennes, $saisies_nouvelles){ 155 // Si des champs ont été supprimés du formulaire,161 // Si des champs ont été supprimés, il faut supprimer les réponses à ces champs 156 162 // il faut supprimer les colonnes de la table 157 163 // mais cela se régle en dehors de formidable … … 161 167 162 168 ?> 169
Note: See TracChangeset
for help on using the changeset viewer.