Changeset 90527 in spip-zone


Ignore:
Timestamp:
Jun 25, 2015, 4:52:45 PM (4 years ago)
Author:
cedric@…
Message:

une fonction paniers_supprimer_panier_en_cours(), date PHP au lieu de NOW() et optimisation de la fonction paniers_id_panier_encours() pour eviter au maximum les inclusions et requetes SQL si on en a pas besoin. La fonction met a jour id_panier en session si besoin

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/paniers/trunk/inc/paniers.php

    r73764 r90527  
    1414        if ($id_panier > 0) return $id_panier;
    1515       
    16         include_spip('inc/session');
    17         include_spip('inc/cookie');
    18         include_spip('inc/config');
    19         include_spip('base/abstract_sql');
    20 
    2116        $id_panier = 0;
    22         $id_auteur = session_get('id_auteur') > 0 ? session_get('id_auteur') : 0;
     17        $id_auteur = (isset($GLOBALS['visiteur_session']['id_auteur']) AND $GLOBALS['visiteur_session']['id_auteur']) ? $GLOBALS['visiteur_session']['id_auteur'] : 0;
    2318        $nom_cookie = $GLOBALS['cookie_prefix'].'_panier';
    2419        $cookie = isset($_COOKIE[$nom_cookie]) ? $_COOKIE[$nom_cookie] : null;
     
    2621        // On va chercher un panier existant en cours, correspondant au cookie
    2722        if ($cookie){
     23                include_spip('base/abstract_sql');
    2824                $id_panier = intval(sql_getfetsel(
    2925                        'id_panier',
     
    3935        if (!$id_panier
    4036                and $id_auteur
     37          and include_spip('base/abstract_sql')
    4138                and $panier = sql_fetsel(
    4239                        'id_panier, cookie, date',
     
    5350                $date = $panier['date'];
    5451                $cookie = $panier['cookie'];
    55                
     52
     53                if (!function_exists('lire_config'))
     54                        include_spip('inc/config');
     55
    5656                // Mais ce panier n'est valide que s'il n'est pas trop vieux !
    5757                if (time() < $st=strtotime("$date + " . 3600*intval(lire_config('paniers/limite_enregistres', 168)).'seconds')){
     
    6363        // Si on a bien un panier et un cookie à la fin
    6464        if ($id_panier > 0 and $cookie){
     65                if (!function_exists('lire_config'))
     66                        include_spip('inc/config');
     67                if (!function_exists('spip_setcookie'))
     68                        include_spip('inc/cookie');
    6569                // On met son cookie en mémoire
    6670                spip_setcookie($nom_cookie, $_COOKIE[$nom_cookie] = $cookie, time()+3600*lire_config('paniers/limite_ephemere', 24));
     71                // On (re)met le panier dans la session si besoin
     72                if (!isset($GLOBALS['visiteur_session']['id_panier']) OR $GLOBALS['visiteur_session']['id_panier']!=$id_panier){
     73                        if (!function_exists('session_set'))
     74                                include_spip('inc/session');
     75                        session_set('id_panier', $id_panier);
     76                }
    6777        }
    68         // Sinon on vide le cookie
     78        // Sinon on vide le cookie et la session si besoin
    6979        else{
    70                 spip_setcookie($nom_cookie, '', 0);
    71                 unset($_COOKIE[$nom_cookie]);
     80                paniers_supprimer_panier_en_cours();
    7281        }
    7382       
    7483        // On retourne enfin un panier (ou pas)
    7584        return $id_panier;
     85}
     86
     87/**
     88 * Supprimer completement le panier en cours (cookie et session SPIP)
     89 */
     90function paniers_supprimer_panier_en_cours(){
     91        $nom_cookie = $GLOBALS['cookie_prefix'].'_panier';
     92        if (isset($_COOKIE[$nom_cookie])){
     93                if (!function_exists('spip_setcookie'))
     94                        include_spip('inc/cookie');
     95                spip_setcookie($nom_cookie, '', 0);
     96                unset($_COOKIE[$nom_cookie]);
     97        }
     98        if (isset($GLOBALS['visiteur_session']['id_panier'])){
     99                if (!function_exists('session_set'))
     100                        include_spip('inc/session');
     101                session_set('id_panier');
     102        }
    76103}
    77104
     
    99126                        'id_auteur' => $id_auteur ? $id_auteur : 0,
    100127                        'cookie' => $cookie,
    101                         'date' => 'NOW()'
     128                        'date' => date('Y-m-d H:i:s'),
    102129                )
    103130        ));
Note: See TracChangeset for help on using the changeset viewer.