Changeset 107568 in spip-zone
- Timestamp:
- Nov 14, 2017, 7:55:51 PM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/paniers/trunk/inc/paniers.php
r90535 r107568 2 2 3 3 // Sécurité 4 if (!defined('_ECRIRE_INC_VERSION')) return; 4 if (!defined('_ECRIRE_INC_VERSION')) { 5 return; 6 } 5 7 6 8 /* … … 9 11 * @return Retourne l'identifiant du panier en cours 10 12 */ 11 function paniers_id_panier_encours() {13 function paniers_id_panier_encours() { 12 14 static $id_panier; 13 15 // Si on a déjà fait les calculs, on termine déjà 14 if ($id_panier > 0) return $id_panier; 15 16 // si rien en cookie ni session, rien a faire (perf issue visiteurs anonymes) 17 if (!(isset($_COOKIE[$GLOBALS['cookie_prefix'].'_panier']) 18 OR (isset($GLOBALS['visiteur_session']['id_panier']) AND $GLOBALS['visiteur_session']['id_panier']) 19 OR (isset($GLOBALS['visiteur_session']['id_auteur']) AND $GLOBALS['visiteur_session']['id_auteur']))){ 16 if ($id_panier > 0) { 20 17 return $id_panier; 21 18 } 22 19 23 20 // si rien en cookie ni session, rien a faire (perf issue visiteurs anonymes) 21 if (!(isset($_COOKIE[$GLOBALS['cookie_prefix'] . '_panier']) 22 OR (isset($GLOBALS['visiteur_session']['id_panier']) AND $GLOBALS['visiteur_session']['id_panier']) 23 OR (isset($GLOBALS['visiteur_session']['id_auteur']) AND $GLOBALS['visiteur_session']['id_auteur']))) { 24 return $id_panier; 25 } 26 24 27 $id_panier = 0; 25 28 26 29 // le session id_panier est toujours pose d'apres le cookie, donc si il est la on peut s'y fier 27 30 // c'est plus rapide 28 if (isset($GLOBALS['visiteur_session']['id_panier']) AND $id_panier =intval($GLOBALS['visiteur_session']['id_panier'])){31 if (isset($GLOBALS['visiteur_session']['id_panier']) AND $id_panier = intval($GLOBALS['visiteur_session']['id_panier'])) { 29 32 return $id_panier; 30 33 } 31 34 32 35 // sinon on regarde le cookie 33 $nom_cookie = $GLOBALS['cookie_prefix'] .'_panier';34 $cookie = isset($_COOKIE[$nom_cookie]) ? $_COOKIE[$nom_cookie] : null;36 $nom_cookie = $GLOBALS['cookie_prefix'] . '_panier'; 37 $cookie = isset($_COOKIE[$nom_cookie]) ? $_COOKIE[$nom_cookie] : null; 35 38 36 39 // On va chercher un panier existant en cours, correspondant au cookie 37 if ($cookie) {40 if ($cookie) { 38 41 include_spip('base/abstract_sql'); 39 42 $id_panier = intval(sql_getfetsel( … … 41 44 'spip_paniers', 42 45 array( 43 'cookie = ' .sql_quote($cookie),44 'statut = ' .sql_quote('encours')46 'cookie = ' . sql_quote($cookie), 47 'statut = ' . sql_quote('encours'), 45 48 ) 46 49 )); … … 51 54 if (!$id_panier 52 55 AND isset($GLOBALS['visiteur_session']['id_auteur']) 53 AND $id_auteur =intval($GLOBALS['visiteur_session']['id_auteur'])54 56 AND $id_auteur = intval($GLOBALS['visiteur_session']['id_auteur']) 57 AND include_spip('base/abstract_sql') 55 58 AND $panier = sql_fetsel( 56 59 'id_panier, cookie, date', 57 60 'spip_paniers', 58 61 array( 59 'id_auteur = ' .$id_auteur,60 'statut = ' .sql_quote('encours')62 'id_auteur = ' . $id_auteur, 63 'statut = ' . sql_quote('encours'), 61 64 ), 62 65 '', 63 66 'date desc', 64 67 '0,1' 65 )) {66 $date = $panier['date'];68 )) { 69 $date = $panier['date']; 67 70 $cookie = $panier['cookie']; 68 71 69 if (!function_exists('lire_config')) 72 if (!function_exists('lire_config')) { 70 73 include_spip('inc/config'); 74 } 71 75 72 76 // Mais ce panier n'est valide que s'il n'est pas trop vieux ! 73 if (time() < $st=strtotime("$date + " . 3600*intval(lire_config('paniers/limite_enregistres', 168)).'seconds')){ 77 if (time() < $st = strtotime("$date + " . 3600 * intval(lire_config('paniers/limite_enregistres', 78 168)) . 'seconds')) { 74 79 // Dans ce cas on le prend 75 80 $id_panier = intval($panier['id_panier']); 76 81 } 77 82 } 78 83 79 84 // Si on a bien un panier et un cookie à la fin 80 85 // synchroniser cookie et id_auteur en session 81 if ($id_panier > 0 and $cookie) {82 if (!function_exists('lire_config')) 86 if ($id_panier > 0 and $cookie) { 87 if (!function_exists('lire_config')) { 83 88 include_spip('inc/config'); 84 if (!function_exists('spip_setcookie')) 89 } 90 if (!function_exists('spip_setcookie')) { 85 91 include_spip('inc/cookie'); 92 } 86 93 // On met son cookie en mémoire 87 spip_setcookie($nom_cookie, $_COOKIE[$nom_cookie] = $cookie, time()+3600*lire_config('paniers/limite_ephemere', 24)); 94 spip_setcookie($nom_cookie, $_COOKIE[$nom_cookie] = $cookie, 95 time() + 3600 * lire_config('paniers/limite_ephemere', 24)); 88 96 // On (re)met le panier dans la session si besoin 89 if (!isset($GLOBALS['visiteur_session']['id_panier']) OR $GLOBALS['visiteur_session']['id_panier'] !=$id_panier){90 if (!function_exists('session_set')) 97 if (!isset($GLOBALS['visiteur_session']['id_panier']) OR $GLOBALS['visiteur_session']['id_panier'] != $id_panier) { 98 if (!function_exists('session_set')) { 91 99 include_spip('inc/session'); 100 } 92 101 session_set('id_panier', $id_panier); 93 102 } 94 } 95 // Sinon on vide le cookie et la session si besoin => evite un appel a cette fonction au prochain hit 96 else{ 103 } // Sinon on vide le cookie et la session si besoin => evite un appel a cette fonction au prochain hit 104 else { 97 105 paniers_supprimer_panier_en_cours(); 98 106 } 99 107 100 108 // On retourne enfin un panier (ou pas) 101 109 return $id_panier; … … 105 113 * Supprimer completement le panier en cours (cookie et session SPIP) 106 114 */ 107 function paniers_supprimer_panier_en_cours() {108 $nom_cookie = $GLOBALS['cookie_prefix'] .'_panier';109 if (isset($_COOKIE[$nom_cookie])) {110 if (!function_exists('spip_setcookie')) 115 function paniers_supprimer_panier_en_cours() { 116 $nom_cookie = $GLOBALS['cookie_prefix'] . '_panier'; 117 if (isset($_COOKIE[$nom_cookie])) { 118 if (!function_exists('spip_setcookie')) { 111 119 include_spip('inc/cookie'); 120 } 112 121 spip_setcookie($nom_cookie, '', 0); 113 122 unset($_COOKIE[$nom_cookie]); 114 123 } 115 if (isset($GLOBALS['visiteur_session']['id_panier'])) {116 if (!function_exists('session_set')) 124 if (isset($GLOBALS['visiteur_session']['id_panier'])) { 125 if (!function_exists('session_set')) { 117 126 include_spip('inc/session'); 127 } 118 128 session_set('id_panier'); 119 129 } … … 125 135 * @return int Retourne l'identifiant du panier créé 126 136 */ 127 function paniers_creer_panier() {137 function paniers_creer_panier() { 128 138 include_spip("inc/acces"); 129 139 include_spip('inc/session'); 130 140 include_spip('base/abstract_sql'); 131 141 include_spip('inc/cookie'); 132 133 $id_auteur = session_get('id_auteur') > 0 ? session_get('id_auteur') : 0;134 $nom_cookie = $GLOBALS['cookie_prefix'] .'_panier';135 142 143 $id_auteur = session_get('id_auteur') > 0 ? session_get('id_auteur') : 0; 144 $nom_cookie = $GLOBALS['cookie_prefix'] . '_panier'; 145 136 146 // On crée l'identifiant du cookie 137 147 $cookie = creer_uniqid(); 138 148 139 149 // On crée le panier 140 150 $id_panier = intval(sql_insertq( … … 142 152 array( 143 153 'id_auteur' => $id_auteur ? $id_auteur : 0, 144 'cookie' => $cookie,145 'date' => date('Y-m-d H:i:s'),154 'cookie' => $cookie, 155 'date' => date('Y-m-d H:i:s'), 146 156 ) 147 157 )); 148 158 149 159 // Si on a un id_panier correct de créé, on le lie à un cookie 150 if ($id_panier > 0){ 151 spip_setcookie($nom_cookie, $_COOKIE[$nom_cookie] = $cookie, time()+3600*lire_config('paniers/limite_ephemere', 24)); 160 if ($id_panier > 0) { 161 spip_setcookie($nom_cookie, $_COOKIE[$nom_cookie] = $cookie, 162 time() + 3600 * lire_config('paniers/limite_ephemere', 24)); 152 163 // Et on met aussi le panier dans la session 153 164 session_set('id_panier', $id_panier); 154 165 } 155 166 156 167 // On retourne 157 168 return $id_panier;
Note: See TracChangeset
for help on using the changeset viewer.