PEEL Shopping
Open source ecommerce : PEEL Shopping
caddie_ajout.php
Go to the documentation of this file.
1 <?php
2 // This file should be in UTF8 without BOM - Accents examples: éèê
3 // +----------------------------------------------------------------------+
4 // | Copyright (c) 2004-2015 Advisto SAS, service PEEL - contact@peel.fr |
5 // +----------------------------------------------------------------------+
6 // | This file is part of PEEL Shopping 8.0.0, which is subject to an |
7 // | opensource GPL license: you are allowed to customize the code |
8 // | for your own needs, but must keep your changes under GPL |
9 // | More information: https://www.peel.fr/lire/licence-gpl-70.html |
10 // +----------------------------------------------------------------------+
11 // | Author: Advisto SAS, RCS 479 205 452, France, https://www.peel.fr/ |
12 // +----------------------------------------------------------------------+
13 // $Id: caddie_ajout.php 47349 2015-10-12 20:06:51Z sdelaporte $
14 include("../configuration.inc.php");
15 
17 
18 call_module_hook('cart_product_add', array('user_id' => vn($_SESSION['session_utilisateur']['id_utilisateur'])));
19 if (!isset($_COOKIE[$session_cookie_name]) && function_exists('ini_set')) {
20  // L'utilisateur a chargé la page sans avoir déclaré dans sa requête HTTP de cookie de session.
21  // Donc c'est que ce n'est pas un utilisateur avec les sessions qui fonctionnent, ou c'est un robot qui appelle cette page
22  redirect_and_die(get_url('cookie'));
23 } elseif (!empty($_POST) && !empty($_GET)) {
24  if(!is_array($_POST['qte'])) {
25  // Dans la grande majorité des cas on ajoute les produits un par un, donc qte n'est pas un tableau.
26  $_POST['qte'] = array($_POST['qte']);
27  }
28  unset($_SESSION['session_display_popup']);
29  unset($_SESSION['session_show_caddie_popup']);
30 
31  $_SESSION['session_display_popup']['error_text'] = '';
32  foreach ($_POST['qte'] as $i => $qte) {
33  $quantite = max(0, get_float_from_user_input($qte));
34  $email_check = '';
35  if (!empty($_GET['checkid'])) {
36  // Le produit est un chèque cadeau
37  $id = intval(trim($_GET['checkid']));
38  $email_check = vb($_POST['email_check' . vb($_GET['checkid'])]);
39  $quantite = "1";
40  } elseif (!empty($_POST['produit_id'][$i])) {
41  $id = intval(trim($_POST['produit_id'][$i]));
42  } elseif (isset($_GET['prodid']) && !empty($_GET['prodid'])) {
43  $id = intval(trim($_GET['prodid']));
44  } elseif (!empty($_POST['reference'][$i])) {
45  $query = query("SELECT id
46  FROM peel_produits
47  WHERE etat=1 AND reference = '" . nohtml_real_escape_string($_POST['reference'][$i]) . "' AND " . get_filter_site_cond('produits'));
49  $id = $result['id'];
50  }
51  if(empty($GLOBALS['site_parameters']['allow_float_quantity'])) {
52  $quantite = intval($quantite);
53  }
54 
55  if ((!empty($_GET['from']) && $_GET['from'] == 'search_page') && ((isset($_POST['save_product_list']) && check_if_module_active('cart_preservation')) || (isset($_POST['export_pdf']) && check_if_module_active('facture_advanced', 'administrer/genere_pdf.php')))) {
56  // Sauvegarde via le module de conservation de panier de la liste de produit envoyée.
57  // Constitution du tableau de donnée compatible avec la fonction save_cart (voir plus bas)
58  $articles_array[$i]['product_id'] = $id;
59  $articles_array[$i]['quantite'] = $quantite;
60  $articles_array[$i]['couleurId'] = null;
61  $articles_array[$i]['tailleId'] = null;
62  $articles_array[$i]['attribut'] = null;
63  $articles_array[$i]['id_attribut'] = null;
64  $articles_array[$i]['products_list_name'] = vb($_POST['products_list_name']);
65  } elseif(isset($_POST['save_product_list_in_reminder']) && !empty($_GET['from']) && $_GET['from'] == 'search_page' && check_if_module_active('pensebete')) {
66  // Insertion du produit dans le pense-bête
67  insere_pense($id, 'produit');
68  // produit suivant.
69  continue;
70  } else {
71  $product_object = new Product($id, null, false, null, true, !is_user_tva_intracom_for_no_vat() && !check_if_module_active('micro_entreprise'));
72  $listcadeaux_owner = null;
73  if (!empty($_POST['listcadeaux_owner']) && check_if_module_active('listecadeau')) {
74  $listcadeaux_owner = $_POST['listcadeaux_owner'];
75  }
76  $attributs_array = array();
77  if (check_if_module_active('attributs')) {
78  // L'appel à get_attribut_list_from_post_data remplit également $_SESSION["session_display_popup"] en cas d'erreur de téléchargement
80  if (!empty($_SESSION["session_display_popup"]["upload_error_text"])) {
81  if (!empty($_SERVER['HTTP_REFERER'])) {
82  redirect_and_die($_SERVER['HTTP_REFERER'] . "");
83  } else {
84  redirect_and_die(get_url('/'));
85  }
86  } else {
87  // on supprime la variable de session gérant le téléchargement de l'image
88  unset($_SESSION["session_display_popup"]);
89  }
90  }
91 
92  if (!empty($_POST['critere']) || !empty($_POST['critere_' . $i])) {
93  // Affichage des combinaisons de couleur et taille dans un unique select
94  if (!empty($_POST['critere_' . $i])) {
95  $criteres = explode("|", $_POST['critere_' . $i]);
96  } else {
97  $criteres = explode("|", $_POST['critere']);
98  }
99  $couleur_id = intval(vn($criteres[0]));
100  $taille_id = intval(vn($criteres[1]));
101  } else {
102  if (!empty($_POST['couleur_' . $i]) || !empty($_POST['taille_' . $i]) ) {
103  $couleur_id = intval(vn($_POST['couleur_' . $i]));
104  $taille_id = intval(vn($_POST['taille_' . $i]));
105  } else {
106  $couleur_id = intval(vn($_POST['couleur']));
107  $taille_id = intval(vn($_POST['taille']));
108  }
109  }
110  // On enregistre la taille pour revenir sur la bonne valeur du select
111  $_SESSION['session_taille_id'] = $taille_id;
112  // On enregistre le message à afficher si la quantité demandée est trop élevée par rapport au stock disponnible
113  $product_object->set_configuration($couleur_id, $taille_id, vb($attribut_list), check_if_module_active('reseller') && is_reseller());
114 
115  if ($product_object->on_check == 0 || !empty($email_check)) {
116  $can_add_to_cart = true; // possibilité d'ajouter au panier
117  // Contrôle de la présence des attributs ayant un mandatory==1 - tableau d'erreurs rempli par l'appel à get_attribut_list_from_post_data() ci-dessus
118  if (!empty($GLOBALS['error_attribut_mandatory'])) {
119  // on n'ajoute pas au panier
120  $can_add_to_cart = false;
121  // le tableau $GLOBALS['error_attribut_mandatory'] contient le nom des attributs qui devraient être renseignés mais qui sont vides.
122  foreach($GLOBALS['error_attribut_mandatory'] as $missed_attribut) {
123  $_SESSION['session_display_popup']['error_text'] .= sprintf($GLOBALS['STR_MISSED_ATTRIBUT_MANDATORY'], $missed_attribut)."\n";
124  }
125  }
126  // Contrôle si produit est sur devis ou non
127  if ($product_object->on_estimate && !check_if_module_active('devis')) {
128  // on n'ajoute pas au panier
129  $can_add_to_cart = false;
130  if(!est_identifie()) {
131  $_SESSION['session_display_popup']['error_text'] .= $GLOBALS['STR_PLEASE_LOGIN'];
132  } else {
133  $_SESSION['session_display_popup']['error_text'] .= $GLOBALS['STR_CONTACT_US'];
134  }
135  }
136  // Gestion de l'ajout au caddie
137  if ($can_add_to_cart) {
138  // Pas de problème => on ajoute le produit
139  $added_quantity = $_SESSION['session_caddie']->add_product($product_object, $quantite, $email_check, $listcadeaux_owner);
140  // Préparation par exemple de l'affichage d'une popup de confirmation de mise dans le panier dans le module cart_popup
141  call_module_hook('cart_product_added', array('quantite' => $added_quantity, 'user_id' => $_SESSION['session_utilisateur']['id_utilisateur']));
142  unset($_SESSION['session_taille_id']);
143  } else {
144  $added_quantity = 0;
145  }
146  if ($added_quantity < $quantite && empty($_SESSION['session_display_popup']['error_text'])) {
147  // La quantité à ajouter est égale au maximum de la quantité commandable
148  $_SESSION['session_display_popup']['error_text'] = $GLOBALS['STR_QUANTITY_INSUFFICIENT'] . "\n";
149  if ($added_quantity == 0) {
150  // Aucun produit ajouté au caddie
151  $_SESSION['session_display_popup']['error_text'] .= $GLOBALS['STR_ZERO_PRODUCT_ADD'];
152  } elseif ($added_quantity == 1) {
153  // un seul produit ajouté
154  $_SESSION['session_display_popup']['error_text'] .= $added_quantity . ' ' . $GLOBALS['STR_QUANTITY_PRODUCT_ADD'];
155  } else {
156  // plus de un produit ajoutés au caddie
157  $_SESSION['session_display_popup']['error_text'] .= $added_quantity . ' ' . $GLOBALS['STR_QUANTITY_PRODUCTS_ADD'];
158  }
159  }
160  }
161  $_SESSION['session_caddie']->update();
162  }
163  }
164  if (isset($_POST['save_product_list']) && !empty($articles_array)) {
165  // Sauvgarde de la liste de produit
166  save_cart($articles_array);
167  // Les produits ont été sauvegardés, l'utilisateur est redirigé vers la page des produits sauvegardés
168  redirect_and_die(get_url('/compte.php'));
169  } elseif(isset($_POST['save_product_list_in_reminder']) && !empty($_GET['from']) && $_GET['from'] == 'search_page' && check_if_module_active('pensebete')){
170  // Les produits ont été ajoutés au pense-bête, l'utilisateur est redirigé vers la page pour voir le résultat.
171  redirect_and_die(get_url('/modules/pensebete/voir.php'));
172  } elseif(isset($_POST['export_pdf']) && !empty($articles_array)){
173  $_SESSION['export_pdf_products_info_array'] = $articles_array;
174  redirect_and_die($GLOBALS['wwwroot'] . '/modules/facture_advanced/genere_pdf.php?export_products_list_in_pdf_file=search_page');
175  }
176 }
177 
178 if (!empty($_SERVER['HTTP_REFERER'])) {
179  redirect_and_die($_SERVER['HTTP_REFERER'] . "");
180 } else {
181  redirect_and_die(get_url('/'));
182 }
183 
$attributs_array_upload
$result
is_user_tva_intracom_for_no_vat($user_id=null)
is_user_tva_intracom_for_no_vat()
Definition: user.php:959
$attribut_list
$attributs_array
redirect_and_die($url, $permanent_redirection=false, $avoid_loop=false)
Redirige vers l'URL demandée et arrête le programme.
Definition: fonctions.php:1551
nohtml_real_escape_string($value, $allowed_tags=null)
Protège les données pour insertion dans MySQL ET supprime les tags HTML pour protéger de toute sorte ...
Definition: database.php:400
if(empty($_GET['id'])) if(!empty($GLOBALS['site_parameters']['allow_multiple_product_url_with_category'])) $product_object
get_float_from_user_input($string, $from_currency_rate=1)
Transforme tout nombre formaté en un float au format PHP Exemples : 12 004,34 ou 12,324.50.
Definition: format.php:196
get_filter_site_cond($table_technical_code, $table_alias=null, $use_strict_rights_if_in_admin=false, $specific_site_id=null, $exclude_public_items=false, $admin_force_multisite_if_allowed=false)
Retourne la condition SQL permettant de filtrer les données pour une table.
Definition: fonctions.php:4643
query($query, $die_if_error=false, $database_object=null, $silent_if_error=false, $security_sql_filter=true)
The query() function is meant to be called anywhere you want to make a query.
Definition: database.php:158
if(!defined('IN_PEEL')) est_identifie()
Retourne true si l'utilisateur est identifié
Definition: user.php:23
vb(&$var, $default=null)
Variable blanche if $var n'est pas défini, retourne $default, sinon retourne $var.
Definition: format.php:97
if(strlen($date2)== '10') if($type== 'users-by-age'&&a_priv('admin_users', true)) elseif($type== 'forums-count'&&a_priv('admin_content', true)) elseif($type== 'forums-categories'&&a_priv('admin_content', true)) elseif($type== 'users-count'&&a_priv('admin_users', true)) elseif($type== 'product-categories'&&a_priv('admin_products', true)) elseif($type== 'users-by-sex'&&a_priv('admin_users', true)) elseif($type== 'users-by-country'&&a_priv('admin_users', true)) elseif($type== 'sales'&&a_priv('admin_sales', true))
Definition: chart-data.php:160
fetch_assoc($query_result)
fetch_assoc()
Definition: database.php:283
call_module_hook($hook, $params, $mode= 'boolean')
Appelle la fonction correspondant au $hook pour chaque module installé La fonction doit s'appeler : [...
$GLOBALS['page_columns_count']
insere_pense($item_id=null, $type=null)
Definition: fonctions.php:35
vn(&$var, $default=0)
Variable nulle if $var n'est pas défini, retourne $default, sinon retourne $var.
Definition: format.php:110
get_attribut_list_from_post_data(&$product_object, &$frm, $keep_free_attributs_only=false, $keep_costly_attributs_only=false)
Traite les informations relatives aux attributs dans le post d'un formulaire produit.
Definition: fonctions.php:606
$id
Definition: articles.php:22
check_if_module_active($module_name, $specific_file_name=null)
Renvoie si un module est présent et activé ou non - Peut être appelé avant ou après le chargement d'u...
if(defined('IN_PEEL_ADMIN')||IN_INSTALLATION) $_SESSION['session_langue']

This documentation for Open ecommerce PEEL Shopping and PEEL.fr has been generated by Doxygen on Thu Oct 15 2015 14:28:53 - Peel ecommerce is a product of Agence web Advisto SAS. All rights reserved.