source: spip-zone/_plugins_/paniers/trunk/paniers_options.php @ 103860

Last change on this file since 103860 was 103860, checked in by cedric@…, 4 years ago

Eviter de trop morceler le code : le plugin panier est naturellement predispose pour fonctionner avec les commandes du plugin commandes, sans plugin intermediaire
Aucune rupture de compatibilite :

  • Cela n'empeche pas de l'utiliser avec autre chose si c'etait le cas avant
  • Si le plugin panier2commande reste actif, pas de collision, tout continue de fonctionner, mais il n'est plus utile, donc
File size: 2.6 KB
Line 
1<?php
2
3// Sécurité
4if (!defined('_ECRIRE_INC_VERSION')) return;
5
6// À chaque hit en partie publique, on va chercher le panier du visiteur actuel si il en a un
7// on ne fait rien sur les hits visiteurs anonymes, bots, cron, etc...
8if (isset($_COOKIE[$GLOBALS['cookie_prefix'].'_panier'])
9  OR (isset($GLOBALS['visiteur_session']['id_panier']) AND $GLOBALS['visiteur_session']['id_panier'])
10  OR (isset($GLOBALS['visiteur_session']['id_auteur']) AND $GLOBALS['visiteur_session']['id_auteur'])){
11
12        // verifier/mettre a jour l'existence d'un panier en cours
13        include_spip('inc/paniers');
14        $id_panier = paniers_id_panier_encours();
15
16}
17
18// si on a une transformation panier=>commande en attente et qu'on est connecte,
19// creer la commande
20if (  isset($_COOKIE['spip_pwl']) AND $_COOKIE['spip_pwl']
21        AND isset($GLOBALS['visiteur_session']['id_auteur']) AND $GLOBALS['visiteur_session']['id_auteur']){
22
23        include_spip('inc/filtres');
24        $contexte = decoder_contexte_ajax($_COOKIE['spip_pwl'],'spip_pwl');
25        $arg = reset($contexte);
26        $commandes_paniers = charger_fonction("commandes_paniers","action");
27        $commandes_paniers($arg);
28        include_spip('inc/cookie');
29        spip_setcookie("spip_pwl",$_COOKIE['spip_pwl'] = '',0);
30}
31
32
33/**
34 * Calculer rapidement le nombre de produits dans un panier
35 * @param $id_panier
36 * @return int|number
37 */
38function paniers_nombre_produits($id_panier){
39        $quantite = intval(sql_getfetsel("SUM(quantite)","spip_paniers_liens","id_panier=".intval($id_panier)));
40        return $quantite;
41}
42
43// Eviter une collistion de fonction si le plugin deprecie panier2commande est encore actif
44if (!defined('_DIR_PLUGIN_PANIER2COMMANDE')){
45        /**
46         * Creer la commande si connecte ou renvoyer vers la page de login
47         * @param null $arg
48         */
49        function action_commandes_paniers_if_loged_dist($arg = null){
50
51                // Si $arg n'est pas donne directement, le recuperer via _POST ou _GET
52                if (is_null($arg)){
53                        $securiser_action = charger_fonction('securiser_action', 'inc');
54                        $arg = $securiser_action();
55                }
56
57                // si on est identifie, on peut passer a la commande directement
58                if (isset($GLOBALS['visiteur_session']['id_auteur']) AND $GLOBALS['visiteur_session']['id_auteur']){
59                        $commandes_paniers = charger_fonction("commandes_paniers", "action");
60                        $commandes_paniers($arg);
61                }
62                // sinon on note le arg pour creer la commande des qu'on est idenfie
63                // et on redirige vers la page d'idendification
64                else {
65                        include_spip('inc/cookie');
66                        include_spip('inc/filtres');
67                        spip_setcookie("spip_pwl", encoder_contexte_ajax(array($arg), 'spip_pwl'));
68
69                        $GLOBALS['redirect'] = parametre_url(generer_url_public('qui'), 'url', _request('redirect'));
70                }
71        }
72}
Note: See TracBrowser for help on using the repository browser.