source: spip-zone/_plugins_/transaction/traiter/paiement_paypal.php @ 44110

Last change on this file since 44110 was 44110, checked in by apachot@…, 9 years ago

Nettoyage

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