Changeset 43733 in spip-zone


Ignore:
Timestamp:
Jan 21, 2011, 10:08:31 AM (10 years ago)
Author:
apachot@…
Message:

Enregistrer les infos sur les paiements dans la table spip_formulaires_transactions

Location:
_plugins_/transaction
Files:
3 added
1 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/transaction/paiement/cmcic/paiement_cmcic_confirmation.php

    r43666 r43733  
    9797                                        case "payetest":
    9898                                               
    99                                                 sql_updateq('spip_formulaires_reponses', array('statut_transaction' => 1), 'ref_transaction=' . sql_quote($CMCIC_bruteVars['reference']));
     99                                                sql_updateq('spip_formulaires_transactions', array('statut_transaction' => 1), 'ref_transaction=' . sql_quote($CMCIC_bruteVars['reference']));
    100100                                                break;
    101101
    102102                                        case "paiement":
    103 spip_updateq('spip_formulaires_reponses', array('statut_transaction' => 1), 'ref_transaction=' . $CMCIC_bruteVars['reference']);
     103spip_updateq('spip_formulaires_transactions', array('statut_transaction' => 1), 'ref_transaction=' . $CMCIC_bruteVars['reference']);
    104104                                                break;
    105105                                }
  • _plugins_/transaction/plugin.xml

    r43332 r43733  
    99        <lien></lien>
    1010        <icon>images/transaction-64.png</icon>
    11        
    1211        <prefix>transaction</prefix>
    13        
    14         <options>transaction_options.php</options>
    15         <fonctions>inc/transaction.php</fonctions>
    16        
    17       <pipeline>
    18           <nom>insert_head</nom>
    19           <inclure>transaction_pipelines.php</inclure>
    20       </pipeline>
    21 
    22        
     12        <install>base/transaction_upgrade.php</install>
     13        <options></options>
     14        <fonctions></fonctions>
     15        <pipeline>
     16                <nom>insert_head</nom>
     17                <inclure>transaction_pipelines.php</inclure>
     18        </pipeline>
     19        <pipeline>
     20                <nom>declarer_tables_interfaces</nom>
     21                <inclure>base/transaction.php</inclure>
     22        </pipeline>
     23        <pipeline>
     24                <nom>declarer_tables_principales</nom>
     25                <inclure>base/transaction.php</inclure>
     26        </pipeline>
    2327       
    2428        <necessite id="SPIP" version="[2.1.0;]" />
  • _plugins_/transaction/traiter/paiement_cmcic.php

    r43488 r43733  
    55
    66function traiter_paiement_cmcic_dist($args, $retours){
     7        include_spip('inc/formidable');
     8        include_spip('base/abstract_sql');
     9       
    710        $formulaire = $args['formulaire'];
    811        $options = $args['options'];
     
    5962                $retours['message_ok'] .=  "<span class='transaction_ok cmcic'>"._T('transaction:traiter_message_cmcic')."</span>";
    6063        }
     64
     65        //enregistrement des résultats
     66        $options = $args['options'];
     67        $formulaire = $args['formulaire'];
     68        $id_formulaire = intval($formulaire['id_formulaire']);
     69        $saisies = unserialize($formulaire['saisies']);
     70        $saisies = saisies_lister_par_nom($saisies);
    6171       
    62 //debut enregistrement
    63 
    64 
    65 
    66 //fin enregistrement
     72        // La personne a-t-elle un compte ?
     73        global $auteur_session;
     74        $id_auteur = $auteur_session ? intval($auteur_session['id_auteur']) : 0;
    6775       
     76        // On cherche le cookie et sinon on le crée
     77        $nom_cookie = formidable_generer_nom_cookie($id_formulaire);
     78        if (isset($_COOKIE[$nom_cookie]))
     79                $cookie = $_COOKIE[$nom_cookie];
     80        else {
     81                include_spip("inc/acces");
     82                $cookie = creer_uniqid();
     83        }
     84       
     85        // On regarde si c'est une modif d'une réponse existante
     86        $id_formulaires_reponse = intval(_request('deja_enregistre_'.$id_formulaire));
     87       
     88        // Si la moderation est a posteriori ou que la personne est un boss, on publie direct
     89        if ($options['moderation'] == 'posteriori' or autoriser('instituer', 'formulaires_reponse', $id_formulaires_reponse, null, array('id_formulaire'=>$id_formulaire, 'nouveau_statut'=>'publie')))
     90                $statut='publie';
     91        else
     92                $statut = 'prop';
     93       
     94        // Si ce n'est pas une modif d'une réponse existante, on crée d'abord la réponse
     95        if (!$id_formulaires_reponse){
     96                $id_formulaires_reponse = sql_insertq(
     97                        'spip_formulaires_reponses',
     98                        array(
     99                                'id_formulaire' => $id_formulaire,
     100                                'id_auteur' => $id_auteur,
     101                                'cookie' => $cookie,
     102                                'ip' => $GLOBALS['ip'],
     103                                'date' => 'NOW()',
     104                                'statut' => $statut
     105                        )
     106                );
     107                $id_formulaires_transactions = sql_insertq(
     108                        'spip_formulaires_transactions',
     109                        array(
     110                                'id_formulaires_reponse' => $id_formulaires_reponse,
     111                                'statut_transaction' => 0,
     112                                'ref_transaction' => $_SESSION['ref']
     113                        )
     114                );
     115                // Si on a pas le droit de répondre plusieurs fois ou que les réponses seront modifiables, il faut poser un cookie
     116                if (!$options['multiple'] or $options['modifiable']){
     117                        include_spip("inc/cookie");
     118                        // Expiration dans 30 jours
     119                        spip_setcookie($nom_cookie, $_COOKIE[$nom_cookie] = $cookie, time() + 30 * 24 * 3600);
     120                }
     121        }
     122       
     123        // Si l'id n'a pas été créé correctement alors erreur
     124        if (!($id_formulaires_reponse > 0)){
     125                $retours['message_erreur'] .= "\n<br/>"._T('formidable:traiter_enregistrement_erreur_base');
     126        }
     127        // Sinon on continue à mettre à jour
     128        else{
     129                $champs = array();
     130                $insertions = array();
     131                foreach($saisies as $nom => $saisie){
     132                        // On ne prend que les champs qui ont effectivement été envoyés par le formulaire
     133                        if (($valeur = _request($nom)) !== null){
     134                                $champs[] = $nom;
     135                                $insertions[] = array(
     136                                        'id_formulaires_reponse' => $id_formulaires_reponse,
     137                                        'nom' => $nom,
     138                                        'valeur' => is_array($valeur) ? serialize($valeur) : $valeur
     139                                );
     140                        }
     141                }
     142               
     143                // S'il y a bien des choses à modifier
     144                if ($champs){
     145                        // On supprime d'abord les champs
     146                        sql_delete(
     147                                'spip_formulaires_reponses_champs',
     148                                array(
     149                                        'id_formulaires_reponse = '.$id_formulaires_reponse,
     150                                        sql_in('nom', $champs)
     151                                )
     152                        );
     153                       
     154                        // Puis on insère les nouvelles valeurs
     155                        sql_insertq_multi(
     156                                'spip_formulaires_reponses_champs',
     157                                $insertions
     158                        );
     159                }
     160        }
     161//fin
    68162        return $retours;
    69163}
Note: See TracChangeset for help on using the changeset viewer.