source: spip-zone/_plugins_/optionsproduits/trunk/formulaires/panier_options.php @ 111457

Last change on this file since 111457 was 111457, checked in by nicod@…, 9 months ago

Un formulaire générique pour ajouter n'importe quel objet avec ses options au panier (cf README.md)

File size: 1.9 KB
Line 
1<?php
2
3// Sécurité
4if (!defined('_ECRIRE_INC_VERSION')) {
5        return;
6}
7
8function formulaires_panier_options_charger_dist($objet, $id_objet) {
9        $valeurs = array(
10                'objet'    => $objet,
11                'id_objet' => $id_objet,
12        );
13       
14        // Calculer le prix de l'objet pour le passer au formulaire
15        $fonction_prix = charger_fonction('prix', 'inc/');
16        $fonction_prix_ht = charger_fonction('ht', 'inc/prix');
17        $valeurs['prix_ht'] = $fonction_prix_ht($objet, $id_objet, 6);
18        $valeurs['prix'] = $fonction_prix($objet, $id_objet, 6);
19       
20        // On transmet les options reçues au formulaire sous forme concaténee
21        // pour qu'il les réaffiche comme cochées, mais on ne lui transmet pas les
22        // id_options reçues pour qu'il ne les remette pas dans #ACTION_FORMULAIRE
23        $options = array();
24        foreach ($_REQUEST as $key => $value) {
25                if ($value && strpos($key, 'id_option') !== false) {
26                        set_request($key, '');
27                        $options[] = intval($value);
28                }
29        }
30        $valeurs['options'] = join('|', array_filter($options));
31
32        return $valeurs;
33}
34
35function formulaires_panier_options_traiter_dist($id_objet) {
36        // On récupère les infos       
37        $objet    = _request('objet');
38        $id_objet = intval(_request('id_objet'));
39        $quantite = intval(_request('quantite'));
40        $negatif  = intval(_request('negatif'));
41        $options  = array(_request('id_option'));
42
43        // On reçoit des options en POST sous la forme id_option
44        // ou id_optionX où X est l'id du groupe d'options.
45        $groupes = sql_allfetsel('id_optionsgroupe', 'spip_optionsgroupes');
46        foreach ($groupes as $groupe) {
47                if ($id_option = _request('id_option' . $groupe['id_optionsgroupe'])) {
48                        $options[] = $id_option;
49                }
50        }
51        // On concatène pour passer les options à l'action remplir_panier.
52        $options = join('|', array_filter($options));
53
54        // On appelle l'action remplir_panier
55        $remplir_panier = charger_fonction('remplir_panier', 'action');
56        $remplir_panier($objet . '-' . $id_objet . '-' . $quantite . '-' . $negatif . '-' . $options);
57}
Note: See TracBrowser for help on using the repository browser.