source: spip-zone/_plugins_/commandes_abonnements/trunk/formulaires/commander_abonnement.php @ 122464

Last change on this file since 122464 was 122464, checked in by Charles Razack, 7 months ago

2 corrections : prendre en priorité la commande en cours par rapport à la commande d'abonnement en session, et boucler sur les détails pour celle en cours, sinon on se retrouve avec une jointure non voulue sur id_auteur qui fausse le résultat

File size: 3.0 KB
Line 
1<?php
2
3if (!defined('_ECRIRE_INC_VERSION')) {
4        return;
5}
6
7include_spip('inc/config');
8include_spip('inc/session');
9
10function formulaires_commander_abonnement_charger_dist($retour = ''){
11        $contexte = array(
12                'id_abonnements_offre' => 0,
13                'montants_persos' => array(),
14        );
15       
16        return $contexte;
17}
18
19function formulaires_commander_abonnement_verifier_dist($retour = ''){
20        $erreurs = array();
21        $id_abonnements_offre = intval(_request('id_abonnements_offre'));
22        $montants_persos = _request('montants_persos');
23       
24        // Trouver le prix par défaut de l'offre choisie
25        $trouver_prix = charger_fonction('prix', 'inc');
26        $prix_defaut = $trouver_prix('abonnements_offre', $id_abonnements_offre);
27       
28        // Si déjà on a pas trouvé de prix par défaut
29        if (!$prix_defaut) {
30                $erreurs['message_erreur'] = 'Impossible de trouver le prix de l’offre demandée.';
31        }
32       
33        // S'il y a une demande de montant perso
34        if (is_array($montants_persos) and isset($montants_persos[$id_abonnements_offre])) {
35                if ($montants_persos[$id_abonnements_offre]['libre'] !== '') {
36                        $montant_perso = $montants_persos[$id_abonnements_offre]['libre'];
37                }
38                elseif (isset($montants_persos[$id_abonnements_offre]['predef'])) {
39                        $montant_perso = $montants_persos[$id_abonnements_offre]['predef'];
40                }
41                // On va chercher le montant minimum
42                $montant_minimum = sql_getfetsel('montant_minimum', 'spip_abonnements_offres', 'id_abonnements_offre = '.$id_abonnements_offre);
43                // On ne prend que le tout premier
44                $montant_minimum = array_map('trim', explode('|', $montant_minimum));
45                $montant_minimum = floatval($montant_minimum[0]);
46                // Si le montant minimum est plus petit que le prix de base
47                if ($montant_minimum < $prix_defaut) {
48                        $montant_minimum = $prix_defaut;
49                }
50               
51                if (!is_numeric($montant_perso)) {
52                        $erreurs['montant_'.$id_abonnements_offre] = 'Le montant doit être un nombre.';
53                }
54                elseif ($montant_perso != $prix_defaut and $montant_perso < $montant_minimum) {
55                        $erreurs['montant_'.$id_abonnements_offre] = "Le montant personnalisé doit être d’au moins ${montant_minimum}€";
56                }
57        }
58       
59        // S'il n'y a aucune erreur, on évite de refaire des tests et on garde le bon montant
60        if (!$erreurs) {
61                set_request('montant', $montant_perso ? $montant_perso : $prix_defaut);
62        }
63       
64        return $erreurs;
65}
66
67function formulaires_commander_abonnement_traiter_dist($retour = '') {
68        include_spip('inc/session');
69        $retours = array(
70                'redirect' => $retour,
71        );
72        $id_abonnements_offre = _request('id_abonnements_offre');
73        $montant = _request('montant');
74        $renouvellement_auto = sql_getfetsel('renouvellement_auto', 'spip_abonnements_offres', 'id_abonnements_offre = '.$id_abonnements_offre);
75       
76        // On va enregistrer en session les infos nécessaires à la commande
77        // elle sera créée quand on aura un utilisateur sous la main et qu'on sera sûr d'avoir ses infos à jour
78        $commande_abonnement = array(
79                'id_abonnements_offre' => $id_abonnements_offre,
80                'montant' => $montant,
81                'renouvellement_auto' => $renouvellement_auto,
82        );
83       
84        session_set('commande_abonnement', $commande_abonnement);
85       
86        return $retours;
87}
Note: See TracBrowser for help on using the repository browser.