source: spip-zone/_plugins_/transaction/traiter/paiement_paybox.php @ 44131

Last change on this file since 44131 was 44131, checked in by apachot@…, 9 years ago
  • Suite du paiement paybox
  • début d'intégration ATOS
File size: 4.7 KB
Line 
1<?php
2
3// Sécurité
4if (!defined("_ECRIRE_INC_VERSION")) return;
5
6function traiter_paiement_paybox_dist($args, $retours){
7        include_spip('inc/session');
8        include_spip('inc/formidable');
9        include_spip('base/abstract_sql');
10       
11        $formulaire = $args['formulaire'];
12        $options = $args['options'];
13        $saisies = unserialize($formulaire['saisies']);
14        $traitements = unserialize($formulaire['traitements']);
15        $champs = saisies_lister_champs($saisies);
16       
17        // Empecher le traitement en AJAX car on sait que le formulaire va rediriger autre part
18    refuser_traiter_formulaire_ajax();
19   
20    // On stocke le montant et la référence de la transaction
21    session_start();
22   
23   
24   
25    if ($_REQUEST['montant_selection_1']) $_SESSION['total'] = $_REQUEST['montant_selection_1'];
26    if ($_REQUEST['montant_1']) $_SESSION['total'] = $_REQUEST['montant_1'];
27   
28    // ID unique de la transaction
29    $_SESSION['ref'] = uniqid();
30
31    $_SESSION['langue_paybox'] = strtoupper($_GET['lang']);
32    if ($_SESSION['langue_paybox'] == '') $_SESSION['langue_paybox'] = 'FR';
33       
34        $nb_paiement = 0;
35    //On compte le nombre de paiement utilisé par le formulaire
36    foreach($traitements as $type_traitement=>$options){
37                if (substr($type_traitement,0,9) == "paiement_") $nb_paiement++;
38        }
39       
40        // Le formulaire a été validé, on le masque
41        $retours['editable'] = false;
42        $retours['message_ok'] .=  "<div class='transaction_ok paybox' style='background: url(".find_in_path('paiement/paybox/logo.jpg').") no-repeat top left'>"._T('transaction:traiter_message_paybox').'<p><a href="'.find_in_path("paiement/paybox/paiement.php").'"  class="valider"><span>'._T('transaction:valider_paiement').'</span></a></p></div>';
43
44        //enregistrement des résultats
45        $options = $args['options'];
46        $formulaire = $args['formulaire'];
47        $id_formulaire = intval($formulaire['id_formulaire']);
48        $saisies = unserialize($formulaire['saisies']);
49        $saisies = saisies_lister_par_nom($saisies);
50       
51        // La personne a-t-elle un compte ?
52        global $auteur_session;
53        $id_auteur = $auteur_session ? intval($auteur_session['id_auteur']) : 0;
54       
55        // On cherche le cookie et sinon on le crée
56        $nom_cookie = formidable_generer_nom_cookie($id_formulaire);
57        if (isset($_COOKIE[$nom_cookie]))
58                $cookie = $_COOKIE[$nom_cookie];
59        else {
60                include_spip("inc/acces");
61                $cookie = creer_uniqid();
62        }
63       
64        // On regarde si c'est une modif d'une réponse existante
65        $id_formulaires_reponse = intval(_request('deja_enregistre_'.$id_formulaire));
66       
67        // Si la moderation est a posteriori ou que la personne est un boss, on publie direct
68        if ($options['moderation'] == 'posteriori' or autoriser('instituer', 'formulaires_reponse', $id_formulaires_reponse, null, array('id_formulaire'=>$id_formulaire, 'nouveau_statut'=>'publie')))
69                $statut='publie';
70        else
71                $statut = 'prop';
72       
73        // Si ce n'est pas une modif d'une réponse existante, on crée d'abord la réponse
74        if (!$id_formulaires_reponse){
75                $id_formulaires_reponse = sql_insertq(
76                        'spip_formulaires_reponses',
77                        array(
78                                'id_formulaire' => $id_formulaire,
79                                'id_auteur' => $id_auteur,
80                                'cookie' => $cookie,
81                                'ip' => $GLOBALS['ip'],
82                                'date' => 'NOW()',
83                                'statut' => $statut
84                        )
85                );
86                $id_formulaires_transactions = sql_insertq(
87                        'spip_formulaires_transactions',
88                        array(
89                                'id_formulaires_reponse' => $id_formulaires_reponse,
90                                'statut_transaction' => 0,
91                                'ref_transaction' => $_SESSION['ref']
92                        )
93                );
94                // Si on a pas le droit de répondre plusieurs fois ou que les réponses seront modifiables, il faut poser un cookie
95                if (!$options['multiple'] or $options['modifiable']){
96                        include_spip("inc/cookie");
97                        // Expiration dans 30 jours
98                        spip_setcookie($nom_cookie, $_COOKIE[$nom_cookie] = $cookie, time() + 30 * 24 * 3600);
99                }
100        }
101       
102        // Si l'id n'a pas été créé correctement alors erreur
103        if (!($id_formulaires_reponse > 0)){
104                $retours['message_erreur'] .= "\n<br/>"._T('formidable:traiter_enregistrement_erreur_base');
105        }
106        // Sinon on continue à mettre à jour
107        else{
108                $champs = array();
109                $insertions = array();
110                foreach($saisies as $nom => $saisie){
111                        // On ne prend que les champs qui ont effectivement été envoyés par le formulaire
112                        if (($valeur = _request($nom)) !== null){
113                                $champs[] = $nom;
114                                $insertions[] = array(
115                                        'id_formulaires_reponse' => $id_formulaires_reponse,
116                                        'nom' => $nom,
117                                        'valeur' => is_array($valeur) ? serialize($valeur) : $valeur
118                                );
119                        }
120                }
121               
122                // S'il y a bien des choses à modifier
123                if ($champs){
124                        // On supprime d'abord les champs
125                        sql_delete(
126                                'spip_formulaires_reponses_champs',
127                                array(
128                                        'id_formulaires_reponse = '.$id_formulaires_reponse,
129                                        sql_in('nom', $champs)
130                                )
131                        );
132                       
133                        // Puis on insère les nouvelles valeurs
134                        sql_insertq_multi(
135                                'spip_formulaires_reponses_champs',
136                                $insertions
137                        );
138                }
139        }
140//fin
141        return $retours;
142}
143
144?>
Note: See TracBrowser for help on using the repository browser.