PEEL Shopping
Open source ecommerce : PEEL Shopping
configuration.inc.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: configuration.inc.php 47304 2015-10-12 10:09:41Z gboussin $
14 if (!defined('IN_PEEL')) {
15  define('IN_PEEL', true);
16 } else {
17  return;
18 }
19 // Toutes les configurations de base qui sont à modifier lorsqu'on change d'hébergement
20 // sont stockées dans /lib/setup/info.inc.php
21 // Le présent fichier de configuration est standard et n'a pas besoin d'être modifié.
22 // Néanmoins vous pouvez modifier des valeurs ci-dessous si vous maîtrisez les implications sur l'ensemble du code
23 if (version_compare(PHP_VERSION, '5.4', '>=')) {
24  // On veut de la compatibilité avec la formalisation des objets qui est compatible PHP4 mais ne passe pas en strict dans PHP 5
25  // Dans PHP>=5.4, E_STRICT est incorporé dans E_ALL, on l'exclut donc ici
26  @error_reporting(E_ALL & ~E_STRICT);
27 } else {
28  @error_reporting(E_ALL);
29 }
30 if (version_compare(PHP_VERSION, '5.1.2', '<')) {
31  // Si PHP5 n'est pas présent sur le serveur, on affiche un message d'erreur et on s'arrête
32  // NB : Si on allait plus loin, le chargement du moteur de template n'étant pas compatible PHP5, ça mettrait des erreurs diverses à la place
33  echo '<div>PHP ' . PHP_VERSION . ' < 5.1.2 => check .htaccess or your server configuration to enable PHP >= 5.2</div>';
34  die();
35 }
36 
37 // Pour fonctionner correctement en UTF8, il faut que l'extension mbstring de PHP soit activée sur le serveur.
38 // Si elle ne l'est pas, la classe String fait appel aux fonctions non compatibles multibyte à la place,
39 // ce qui génèrerait des dysfonctionnement sur les chaines de caractères avec caractères non ANSI
40 // ---
41 // ATTENTION : GENERAL_ENCODING ne peut être changé que par des développeurs avertis
42 // Si on veut implémenter l'encodage il y a aussi à changer :
43 // - la déclaration default charset dans le .htaccess à la racine
44 // - le format de stockage à changer en BDD
45 // - l'encodage des fichiers PHP (qui sont par défaut depuis PEEL 6.0 en UTF8 sans BOM)
46 define('PEEL_VERSION', '8.0.0');
47 if (!defined('IN_CRON')) {
48  define('GENERAL_ENCODING', 'utf-8'); // En minuscules. ATTENTION : Seulement pour développeurs avertis
49 }
50 if (!defined('IN_INSTALLATION')) {
51  define('IN_INSTALLATION', false);
52 }
53 
54 $GLOBALS['dirroot'] = dirname(__FILE__);
55 $GLOBALS['repertoire_achat'] = $GLOBALS['dirroot'] . "/achat";
56 $GLOBALS['libdir'] = $GLOBALS['dirroot'] . "/lib";
57 $GLOBALS['invoicedir'] = $GLOBALS['dirroot'] . "/invoice";
58 $GLOBALS['uploaddir'] = $GLOBALS['dirroot'] . "/upload";
59 
60 include($GLOBALS['dirroot'] . "/lib/fonctions/fonctions.php");
63 
64 $GLOBALS['display_errors'] = 0; // Initialisation de la variable de gestion des erreurs
65 $GLOBALS['script_start_time'] = array_sum(explode(' ', microtime()));
66 $GLOBALS['notification_output_array'] = array();
67 
68 // ***********************************
69 // * DEBUT CONFIGURATION PAR DEFAUT *
70 // Les valeurs ci-dessous sont ensuite remplacées après l'installation par les valeurs contenues dans la table peel_configuration
71 // Si vous voulez imposer ce paramètre après l'installation, mettez vos lignes dans la section plus bas appelée FORCE SITE_PARAMETERS
72 $GLOBALS['site_parameters']['mysql_extension'] = 'mysqli'; // Mettre "mysqli" (par défaut, à laisser dans 99% des cas) ou "mysql". Si mysqli n'est pas disponible, mysql sera utilisé à la place
73 $GLOBALS['site_parameters']['backoffice_directory_name'] = 'administrer'; // VOIR DANS FORCE SITE_PARAMETERS
74 $GLOBALS['site_parameters']['cache_folder'] = 'cache';
75 $GLOBALS['site_parameters']['css'] = 'screen.css';
76 $GLOBALS['site_parameters']['sha256_encoding_salt'] = "k)I8#;z=TIxnXmIPdW2TRzt4Ov89|#V~cU@]";
77 $GLOBALS['site_parameters']['id'] = '1';
78 $GLOBALS['site_parameters']['complete_lang_files'] = array('fr', 'en', 'es');
79 $GLOBALS['site_parameters']['display_warning_if_connection_problem'] = true;
80 $GLOBALS['site_parameters']['session_cookie_basename'] = 'sid'; // Valeur par défaut pour que l'installation ait bien le même nom de session que par la suite
81 $GLOBALS['site_parameters']['bootstrap_enabled'] = true;
82 $GLOBALS['site_parameters']['only_show_products_with_picture_in_containers'] = true;
83 
84 // Ci-dessous :
85 // Valeurs par défaut de variables servant dans le processus installation car nécessaires dans les fichiers de langues
86 // => les valeurs n'ont pas d'importance car pas utilisées, mais elles doivent être définies
87 $GLOBALS['site_parameters']['quotation_delay'] = null;
88 $GLOBALS['site_parameters']['avoir'] = null;
89 $GLOBALS['site_parameters']['commission_affilie'] = null;
90 // * FIN CONFIGURATION PAR DEFAUT *
91 // ***********************************
92 if($GLOBALS['site_parameters']['mysql_extension'] == 'mysqli' && !class_exists('mysqli')) {
93  $GLOBALS['site_parameters']['mysql_extension'] = 'mysql';
94 }
95 
96 $GLOBALS['ip_for_debug_mode'] = '';
97 foreach(explode(',', str_replace(array(' ', ';'), array(',', ','), $GLOBALS['ip_for_debug_mode'])) as $this_ip_part) {
98  if (!empty($this_ip_part) && ($this_ip_part == '*' || strpos($_SERVER['REMOTE_ADDR'], $this_ip_part) === 0)) {
99  define('PEEL_DEBUG', true);
100  define('DEBUG_TEMPLATES', true);
101  $GLOBALS['display_errors'] = 1;
102  break;
103  }
104 }
105 
106 // Compatibilité serveur web IIS (sans gestion d'URL rewriting)
107 if (!isset($_SERVER['REQUEST_URI'])) {
108  $_SERVER['REQUEST_URI'] = $_SERVER['PHP_SELF'];
109  if (!empty($_SERVER['QUERY_STRING'])) {
110  $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
111  }
112 }
113 // Fin compatibilité IIS
114 if (empty($_SERVER["HTTP_HOST"])) {
115  // Gestion d'un appel en local sur le serveur ou en cas de bug du serveur web
116  $_SERVER["HTTP_HOST"] = '127.0.0.1';
117 }
118 // On détecte l'URL de base du site pour l'installation uniquement
119 // Si $GLOBALS['wwwroot'] est précisé dans /lib/setup/info.inc.php, alors il aura la priorité
120 $GLOBALS['apparent_folder'] = get_apparent_folder();
121 $GLOBALS['apparent_folder_main'] = $GLOBALS['apparent_folder'];
122 
123 require($GLOBALS['dirroot'] . "/lib/fonctions/database.php");
124 
125 if (!IN_INSTALLATION && is_dir($GLOBALS['dirroot'] . '/installation')) {
126  // Le site est configuré mais a toujours le répertoire d'installation présent
127  $GLOBALS['installation_folder_active'] = true;
128 } elseif (!IN_INSTALLATION) {
129  // Chargement des variables de connexion à la BDD et de la configuration wwwroot
130  require($GLOBALS['dirroot'] . "/lib/setup/info.inc.php");
131 }
132 if (!empty($_SERVER["HTTP_HOST"])) {
133  $GLOBALS['detected_wwwroot'] = 'http://' . $_SERVER["HTTP_HOST"] . substr($GLOBALS['apparent_folder'], 0, strlen($GLOBALS['apparent_folder']) - 1);
134  if (empty($GLOBALS['wwwroot']) || substr($GLOBALS['wwwroot'], 0, 4) !== 'http') {
135  // Si wwwroot n'est pas défini dans lib/setup/info.inc.php (par exemple pour fonctionnement multisite)
136  // ou si wwwroot ne semble pas valable, on utilise la valeur détectée automatiquement
137  $GLOBALS['wwwroot'] = $GLOBALS['detected_wwwroot'];
138  }
139 } elseif(!defined('IN_CRON')) {
140  // Si HTTP_HOST pas défini (problème de configuration du serveur a priori - Vu sur serveur avec appel https://xxxx:443/ : le fait de préciser port fait que HTTP_HOST pas défini par Apache)
141  $GLOBALS['detected_wwwroot'] = $GLOBALS['wwwroot'];
142  $temp_array = explode('/', $GLOBALS['wwwroot']);
143  // On récupère HTTP_HOST après le second / et avant un troisième
144  if(!empty($temp_array[2])) {
145  $_SERVER["HTTP_HOST"] = $temp_array[2];
146  } else {
147  $_SERVER["HTTP_HOST"] = '';
148  }
149 }
150 if ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') || (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] === '443')) {
151  $GLOBALS['detected_wwwroot'] = str_replace('http://', 'https://', $GLOBALS['detected_wwwroot']);
152  $GLOBALS['wwwroot'] = str_replace('http://', 'https://', $GLOBALS['wwwroot']);
153  // @ini_set('session.cookie_secure', '1');
154 }
155 if(!empty($GLOBALS['wwwroot'])) {
156  $GLOBALS['wwwroot_main'] = $GLOBALS['wwwroot'];
157 } else {
158  $GLOBALS['wwwroot_main'] = '';
159 }
160 
161 /*
162  * Déclaration des objets et des fonctions
163  *
164  */
165 require($GLOBALS['dirroot'] . "/lib/class/Module.php");
166 require($GLOBALS['dirroot'] . "/lib/class/Cache.php");
167 require($GLOBALS['dirroot'] . "/lib/class/String.php");
168 require($GLOBALS['dirroot'] . "/lib/class/Caddie.php");
169 require($GLOBALS['dirroot'] . "/lib/class/FormError.php");
170 require($GLOBALS['dirroot'] . "/lib/class/Multipage.php");
171 require($GLOBALS['dirroot'] . "/lib/class/Product.php");
172 require($GLOBALS['dirroot'] . "/lib/class/SHA256.php");
173 require($GLOBALS['dirroot'] . "/lib/fonctions/images.php");
174 require($GLOBALS['dirroot'] . "/lib/fonctions/order.php");
175 require($GLOBALS['dirroot'] . "/lib/fonctions/emails.php");
176 require($GLOBALS['dirroot'] . "/lib/fonctions/user.php");
177 require($GLOBALS['dirroot'] . "/lib/fonctions/format.php");
178 
179 if (!IN_INSTALLATION) {
180  if (empty($GLOBALS['installation_folder_active'])) {
181  db_connect($GLOBALS['database_object']);
182  if (!$GLOBALS['database_object']) {
183  die('database_object is null');
184  }
185  if(!defined('IN_CRON')) {
186  // Les fichiers de crons sont utilisés en dehors de la logique de multisite. Si des crons spécifiques ont besoin d'utiliser des ressources multisites (templates d'email par exemple), le fichier de cron contiendra la configuration de site et de langue, mais ce n'est pas nécessaire pour les cas standards.
187  // On remplit $GLOBALS['site_parameters'] qui sera ensuite surchargé pour la langue choisie par set_lang_configuration_and_texts()
189  } else {
190  // Approche pragmatique, on charge par défaut la configuration pour site_id = 1 pour l'exécution d'un cron. Si le fichier de cron à exécuter s'applique sur d'autres sites, la fonction load_site_parameters sera à nouveau appelé à l'intérieur de ce fichier de cron avec $GLOBALS['site_id'] qui convient.
191  load_site_parameters(null, false, 1);
192  }
193  // A ce stade : $GLOBALS['site_id'] est détecté
194  $parameters_loaded = true;
195  }
196 } else {
197  // Pour l'installation
198  if(empty($GLOBALS['site_id'])) {
199  $GLOBALS['site_id'] = 1;
200  }
201  // On ne définit que le dossier modeles/ car dans l'installation on ne va pas chercher la configuration en BDD
203 }
204 
205 // ***********************************
206 // * FORCER DES VALEURS DE SITE_PARAMETERS *
207 // Le fonctionnement normal est l'utilisation de variables de configurations stockés dans la table peel_configuration et éditable dans l'administration (section Variables de configuration)
208 // Si néanmoins vous voulez forcer en PHP des paramètres site_parameters en priorité sur la table peel_configuration, vous pouvez les imposer ci-après.
209 // Pär exemple retirez les // devant la ligne suivante et remplacez adminfolder par votre valeur :
210 // $GLOBALS['site_parameters']['backoffice_directory_name'] = 'adminfolder';
211 // $GLOBALS['site_parameters']['site_suspended'] = true;
212 // * FIN SITE_PARAMETERS *
213 // ***********************************
214 if (!isset($GLOBALS['site_parameters']['display_errors_for_ips'])) {
215  $GLOBALS['display_errors'] = 1;
216 } elseif (!empty($GLOBALS['site_parameters']['display_errors_for_ips'])) {
217  foreach(explode(',', str_replace(array(' ', ';'), array(',', ','), $GLOBALS['site_parameters']['display_errors_for_ips'])) as $this_ip_part) {
218  if (!empty($this_ip_part) && ($this_ip_part == '*' || strpos($_SERVER['REMOTE_ADDR'], $this_ip_part) === 0)) {
219  // IP utilisée détectée comme commençant par une IP listée dans display_errors_for_ips
220  $GLOBALS['display_errors'] = 1;
221  break;
222  }
223  }
224 }
225 if (!empty($GLOBALS['site_parameters']['default_socket_timeout'])) {
226  @ini_set('default_socket_timeout', $GLOBALS['site_parameters']['default_socket_timeout']);
227 }
228 @ini_set('display_errors', $GLOBALS['display_errors']);
229 
230 if (!empty($GLOBALS['site_parameters']['enable_gzhandler'])) {
231  ob_start('ob_gzhandler');
232 }
233 $GLOBALS['modules_installed'] = array();
234 require($GLOBALS['dirroot'] . '/lib/fonctions/modules_handler.php');
235 // Module d'URL Rewriting et gestion des modules de sites qui peuvent contenir des définitions d'URL
236 // A gérer avant la gestion des langues ci-après
237 
238 // Chargement de modules complémentaires
239 if (!empty($GLOBALS['site_parameters']['load_site_specific_files_before_others'])) {
240  foreach($GLOBALS['site_parameters']['load_site_specific_files_before_others'] as $this_file_relative_path) {
241  if(file_exists($GLOBALS['dirroot'] . $this_file_relative_path)) {
242  include($GLOBALS['dirroot'] . $this_file_relative_path);
243  if(String::strpos($this_file_relative_path, '/modules/') !==false) {
244  $temp = String::substr($this_file_relative_path, String::strpos($this_file_relative_path, '/modules/')+1);
245  $temp2 = explode('/', $temp);
246  }
247  $GLOBALS['modules_installed'][$temp2[1]] = $temp2[1];
248  }
249  }
250 }
251 
252 // Démarrage de la session PHP
254 
255 // Nettoyage des données et suppressions des magic_quotes si nécessaire
256 // NB : ne peut pas être mis dans une fonction si $$xxxx ne renvoie pas le tableau superglobal dans toutes les versions de PHP
257 // NB2 : doit être fait APRES l'ouverture de la session car ça retire le HTML des données si on n'est pas administrateur
258 foreach(array('_POST', '_GET', '_COOKIE', '_REQUEST') as $this_global_array) {
259  if (function_exists('array_walk_recursive')) {
260  // PHP 5+ uniquement
261  array_walk_recursive($$this_global_array, 'cleanDataDeep');
262  } else {
263  $$this_global_array = array_map('cleanDataDeep', $$this_global_array);
264  }
265 }
266 
267 // Nettoyage des données et suppressions des magic_quotes si nécessaire
268 @set_magic_quotes_runtime(0);
269 foreach(array('_POST', '_GET', '_COOKIE', '_REQUEST') as $this_global_array) {
270  if (function_exists('array_walk_recursive')) {
271  array_walk_recursive($$this_global_array, 'cleanDataDeep');
272  } else {
273  $$this_global_array = array_map('cleanDataDeep', $$this_global_array);
274  }
275 }
276 
277 // Nom pour le cookie qui contiendra les produits du panier. Le nom du cookie est différent pour chaque installation de PEEL.
278 // Le cookie sera initialisé dans la fonction update de la classe Caddie, uniquement si la variable de configuration save_caddie_in_cookie === true.
279 $GLOBALS['caddie_cookie_name'] = vb($GLOBALS['site_parameters']['caddie_cookie_name']) . substr(md5($GLOBALS['wwwroot_main']), 0, 8);
280 
281 $GLOBALS['google_pub_count'] = 0;
282 
283 if ((!empty($_GET['update']) && $_GET['update'] == 1 && (!est_identifie() || !a_priv("admin*", true) || is_user_bot())) || ((!empty($_GET['devise']) || !empty($_GET['nombre'])) && is_user_bot())) {
284  // Page de MAJ du cache : les moteurs ne doivent pas pouvoir activer ou référencer ces pages => redirection 301
285  redirect_and_die(get_current_url(true, false, array('update', 'devise', 'nombre', 'multipage')), true);
286 }
287 
288 if (IN_INSTALLATION >= 4 && empty($_SESSION['session_install_finished'])) {
289  if(!empty($_SESSION['session_install_utilisateur'])) {
290  // Pour l'installation, la connexion à la BDD ne peut avoir lieu qu'après avoir chargé les sesssions
291  $GLOBALS['serveur_mysql'] = $_SESSION['session_install_serveur'];
292  $GLOBALS['utilisateur_mysql'] = $_SESSION['session_install_utilisateur'];
293  $GLOBALS['mot_de_passe_mysql'] = $_SESSION['session_install_motdepasse'];
294  }
295  db_connect($GLOBALS['database_object'], false);
296  if (!$GLOBALS['database_object']) {
297  redirect_and_die("bdd.php?err=1");
298  }
299  if (IN_INSTALLATION >= 5) {
300  if(!empty($_SESSION['session_install_choixbase'])) {
301  $GLOBALS['nom_de_la_base'] = $_SESSION['session_install_choixbase'];
302  }
303  if (!select_db(vb($GLOBALS['nom_de_la_base']), $GLOBALS['database_object'], true)) {
304  redirect_and_die("choixbase.php?err=1");
305  }
306  }
307 }
308 // NB: The module has to be loaded even if LOAD_NO_OPTIONAL_MODULE is defined
309 load_modules('url_rewriting');
310 require($GLOBALS['dirroot'] . "/lib/fonctions/url_standard.php");
311 
312 $GLOBALS['repertoire_modele'] = $GLOBALS['dirroot'] . "/modeles/" . vb($GLOBALS['site_parameters']['template_directory']);
313 
314 $GLOBALS['lang_codes'] = array(); // Variable globale récuperant les codes Langue
315 $GLOBALS['admin_lang_codes'] = array(); // Variable globale récuperant les codes Langue des langues administrables (actives, ou désactivées mais administrables : pastille orange)
316 $GLOBALS['lang_flags'] = array(); // Variable globale récuperant l'URL des drapeaux de langues
317 $GLOBALS['lang_names'] = array(); // Variable globale récuperant le nom de la langue dans sa propre langue
318 $GLOBALS['langs_flags_correspondance'] = array(); // Possibilité de mettre correspondance entre langue et drapeau de pays si aucune image de langue n'existe. Par exemple : 'en'=>'uk.gif'
319 $GLOBALS['load_default_lang_files_before_main_lang_array_by_lang'] = null;
320 // We get the activated languages
322 
323 if(defined('IN_PEEL_ADMIN') || IN_INSTALLATION) {
324  // Chargement des fonctions d'administration
325  include($GLOBALS['dirroot'] . "/lib/fonctions/fonctions_admin.php");
326  $GLOBALS['load_admin_lang'] = true;
327 }
328 
329 // Si nécessaire dans get_identified_lang, on redirige si langue pas définie
330 // Dans ce cas on considère que la version de la base de données et la version du code sont les mêmes, donc on exécute un contrôle sur la configuration.
331 $_SESSION['session_langue'] = get_identified_lang((defined('IN_PEEL_ADMIN')?$GLOBALS['admin_lang_codes']:$GLOBALS['lang_codes']));
332 if(empty($_SESSION['session_langue'])) {
333  if(empty($GLOBALS['admin_lang_codes']) && defined('IN_PEEL_ADMIN')) {
334  redirect_and_die(get_url('/'));
335  } else {
336  // Protection en cas de problème majeur
337  die();
338  }
339 }
340 
341 // On est maintenant sûr que la langue est correctement définie et que le fichier de langue associé existe
342 // Dans la ligne suivante, on modifie notamment $GLOBALS['site'] et $GLOBALS['wwwroot'], $GLOBALS['wwwroot_in_admin'] et $GLOBALS['administrer_url']
343 // On charge les fichiers de langue de base, on va gérer les modules ensuite
344 if(!in_array($_SESSION['session_langue'], $GLOBALS['site_parameters']['complete_lang_files'])) {
345  // Si la langue utilisée n'est pas une langue principale du logiciel, on considère que le fichiers de langue peuvent être incomplets
346  // => on charge la langue anglaise par défaut avant la langue spécifiée => si il manque une chaine de caractères, c'est la version anglaise qui sera présente
347  $GLOBALS['load_default_lang_files_before_main_lang_array_by_lang'][$_SESSION['session_langue']] = array('en');
348 }
349 if(!defined('IN_CRON')) {
350  // Les fichiers de crons sont utilisés en dehors de la logique de multisite. Si des crons spécifiques ont besoin d'utiliser des ressources multisites (templates d'email par exemple), le fichier de cron contiendra la configuration de site et de langue, mais ce n'est pas nécessaire pour les cas standards.
351  // Si SKIP_LANG est défini, seules les variables globales seront définies
352  // La fonction suivante va définir $GLOBALS['wwwroot'], wwwroot_in_admin, et toutes les autres variables globales générales qui peuvent être affectées par l'URL rewriting
353  set_lang_configuration_and_texts($_SESSION['session_langue'], vb($GLOBALS['load_default_lang_files_before_main_lang_array_by_lang'][$_SESSION['session_langue']]), true, false, !empty($GLOBALS['load_admin_lang']), true, defined('SKIP_SET_LANG'));
354  // A ce stade : $GLOBALS['wwwroot'] contient l'URL du domaine avec le sous-domaine de la langue si défini, ou autre domaine
355 }
356 $_SESSION['session_langue'] = check_language($_SESSION['session_langue'], (defined('IN_PEEL_ADMIN')?$GLOBALS['admin_lang_codes']:$GLOBALS['lang_codes']));
357 
358 if (!IN_INSTALLATION && empty($GLOBALS['installation_folder_active'])) {
359  if (empty($_POST) && !defined('IN_CRON')) {
360  if (String::strpos(String::strtolower(String::rawurldecode($_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'])), str_replace(array('http://', 'https://'), '', String::strtolower(String::rawurldecode($GLOBALS['wwwroot'])))) === false && String::strpos(str_replace(array('http://', 'https://'), '', String::strtolower(String::rawurldecode($GLOBALS['wwwroot']))), String::strtolower(String::rawurldecode($_SERVER['HTTP_HOST']))) !== false && String::strpos(String::strtolower(String::rawurldecode(get_url('/'))), String::strtolower(String::rawurldecode($GLOBALS['apparent_folder']))) !== false) {
361  // Dans le cas où un site est accessible via un domaine directement
362  // Si on est sur une URL qui ne contient pas wwwroot, mais le domaine est bien contenu dans wwwroot => on veut donc rajouter le sous-domaine
363  // NB : Il manque donc un sous-domaine, mais on n'est pas sur une URL alternative (en effet, on fait attention à se trouver uniquement dans des cas "normaux" d'absence de sous-domaine, pas d'autres cas plus complexes de configuration avec plusieurs chemins serveurs)
364  // par exemple : wwwroot indique un sous-domaine tel que www, alors que l'URL en cours ne contient pas www => on redirige vers une URL qui respecte la configuration de wwwroot
365  redirect_and_die(String::substr($GLOBALS['wwwroot'], 0, String::strlen($GLOBALS['wwwroot']) - String::strlen($GLOBALS['apparent_folder']) + 1) . $_SERVER['REQUEST_URI'], true);
366  }
367  if (String::strpos(String::strtolower(rawurldecode($_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'])), 'www.' . str_replace(array('http://', 'https://'), '', String::strtolower(rawurldecode($GLOBALS['wwwroot'])))) === 0) {
368  // Si on a www. en trop par rapport à ce qui est prévu dans wwwroot, on retire le www.
369  redirect_and_die(String::substr($GLOBALS['wwwroot'], 0, String::strlen($GLOBALS['wwwroot']) - String::strlen($GLOBALS['apparent_folder']) + 1) . $_SERVER['REQUEST_URI'], true);
370  }
371  // redirections éventuelles si la langue est définie sans cohérence avec ce qui est configuré dans peel_langues
372  if (String::substr($_SERVER['REQUEST_URI'], String::strlen($GLOBALS['apparent_folder']) - 1, 4) == '/' . $_SESSION['session_langue'] . '/' && empty($GLOBALS['lang_url_rewriting'][$_SESSION['session_langue']])) {
373  // Exemple : on redirige domaine.com/en vers domaine.com/
374  redirect_and_die($GLOBALS['wwwroot'] . String::substr($_SERVER['REQUEST_URI'], 3 + String::strlen($GLOBALS['apparent_folder']) - 1), true);
375  }
376  if (!empty($GLOBALS['lang_url_rewriting'][$_SESSION['session_langue']]) && strpos($GLOBALS['lang_url_rewriting'][$_SESSION['session_langue']], '//') !== false) {
377  if ($GLOBALS['detected_wwwroot'] != $GLOBALS['wwwroot'] && $GLOBALS['detected_wwwroot'] == str_replace(array('www.'), array($_SESSION['session_langue'] . '.'), $GLOBALS['wwwroot_main'])) {
378  // Exemple : on redirige en.domaine.com vers domaine-specifique-pour-langue-en.com
379  redirect_and_die($GLOBALS['wwwroot'] . String::substr($_SERVER['REQUEST_URI'], String::strlen($GLOBALS['apparent_folder']) - 1), true);
380  }
381  if (String::substr($_SERVER['REQUEST_URI'], String::strlen($GLOBALS['apparent_folder']) - 1, 4) == '/' . $_SESSION['session_langue'] . '/') {
382  // Exemple : on redirige domaine.com/en vers domaine-specifique-pour-langue-en.com
383  redirect_and_die($GLOBALS['wwwroot'] . String::substr($_SERVER['REQUEST_URI'], 3 + String::strlen($GLOBALS['apparent_folder']) - 1), true);
384  }
385  if (String::substr_count($GLOBALS['wwwroot'], '/') == 2 && String::strpos(String::strtolower(String::rawurldecode($_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'])), str_replace(array('http://', 'https://'), '', String::strtolower(String::rawurldecode($GLOBALS['wwwroot'])))) === false && String::strpos(str_replace(array('http://', 'https://'), '', String::strtolower(String::rawurldecode($GLOBALS['wwwroot']))), String::strtolower(String::rawurldecode($_SERVER['HTTP_HOST']))) !== false) {
386  // Dans le cas où un site est accesible via un domaine directement (pas via un répertoire) :
387  // Si on est sur une URL qui ne contient pas wwwroot, mais le domaine est bien contenu dans wwwroot => on veut donc rajouter le sous-domaine
388  // NB : Il manque donc un sous-domaine, mais on n'est pas sur une URL alternative (en effet, on fait attention à se trouver uniquement dans des cas "normaux" d'absence de sous-domaine, pas d'autres cas plsu complexes de configuration avec plusieurs chemins serveurs)
389  // par exemple : wwwroot indique un sous-domaine tel que www, alors que l'URL en cours ne contient pas www => on redirige vers une URL qui respecte la configuration de wwwroot
390  redirect_and_die($GLOBALS['wwwroot'] . String::substr($_SERVER['REQUEST_URI'], String::strlen($GLOBALS['apparent_folder']) - 1), true);
391  }
392  }
394  }
395  // Détermine les variables en fonction du site
396  if (vb($GLOBALS['site_parameters']['admin_force_ssl'])) {
397  if (defined('IN_PEEL_ADMIN')) {
398  // On ne fait pas la redirection sur sites.php pour éviter de bloquer totalement l'administrateur si https ne marche pas
399  if (strpos($_SERVER['PHP_SELF'], 'sites.php') === false && strpos($_SERVER['PHP_SELF'], 'ipn.php') === false && (empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == 'off')) {
400  // Attention : on perd les POST si il y en avait, mais on ne veut pas pour des raisons de sécurité exclure le cas où il y aurait des POST
401  redirect_and_die(str_replace('http://', 'https://', get_current_url()));
402  }
403  }
404  }
405  if (empty($GLOBALS['site'])) {
406  // $GLOBALS['site'] est déjà défini si on a exécuté set_lang_configuration_and_texts plus haut
407  $GLOBALS['site'] = vb($GLOBALS['site_parameters']['nom_' . $_SESSION['session_langue']]);
408  }
409  if (empty($GLOBALS['site'])) {
410  $GLOBALS['site'] = $GLOBALS['wwwroot'];
411  }
412  $GLOBALS['support'] = vb($GLOBALS['site_parameters']['email_webmaster']);
413  // Email support client
414  $GLOBALS['support_sav_client'] = vb($GLOBALS['site_parameters']['email_client']);
415  if (empty($GLOBALS['support_sav_client'])) {
416  $GLOBALS['support_sav_client'] = $GLOBALS['support'];
417  }
418  // Email envoi des commandes
419  $GLOBALS['support_commande'] = vb($GLOBALS['site_parameters']['email_commande']);
420  if (empty($GLOBALS['support_commande'])) {
421  $GLOBALS['support_commande'] = $GLOBALS['support'];
422  }
423 } else {
424  $GLOBALS['site'] = '';
425  $GLOBALS['support'] = '';
426  $GLOBALS['support_sav_client'] = '';
427  $GLOBALS['support_commande'] = '';
428  $GLOBALS['repertoire_images'] = '';
429 }
430 
431 if (!IN_INSTALLATION) {
432  // Module des gestion des devises
433  // NB: The module has to be loaded even if LOAD_NO_OPTIONAL_MODULE is defined
434  load_modules('devises');
435 }
436 // Gestion de la devise de l'utilisateur
437 if (empty($_SESSION['session_devise']) || empty($_SESSION['session_devise']['code'])) {
438  // Initialisation de la devise utilisateur car pas encore définie
439  if (check_if_module_active('devises')) {
440  // On séléctionne de préférence la devise de référence du site - si pas active, alors on prend la première devise qu'on trouve en tenant compte de la variable position croissante
441  set_current_devise(vb($GLOBALS['site_parameters']['code']));
442  }
443  if (empty($_SESSION['session_devise']) || empty($_SESSION['session_devise']['code'])) {
444  if(!empty($GLOBALS['site_parameters']['code'])) {
445  // Site sans module de gestion des devises
446  $_SESSION['session_devise']['symbole'] = String::html_entity_decode(str_replace('&euro;', '€', vb($GLOBALS['site_parameters']['symbole'])));
447  $_SESSION['session_devise']['symbole_place'] = vb($GLOBALS['site_parameters']['symbole_place']);
448  $_SESSION['session_devise']['conversion'] = 1;
449  $_SESSION['session_devise']['code'] = vb($GLOBALS['site_parameters']['code']);
450  } else {
451  // Installation
452  $_SESSION['session_devise']['code'] = 'EUR';
453  $_SESSION['session_devise']['symbole'] = ' €';
454  $_SESSION['session_devise']['conversion'] = 1;
455  $_SESSION['session_devise']['symbole_place'] = 1;
456  }
457  }
458 }
459 
460 if (!defined('IN_CRON') && (empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == 'off') && strpos($GLOBALS['wwwroot'], 'https://') === 0 && strpos($_SERVER['PHP_SELF'], 'sites.php') === false && strpos($_SERVER['PHP_SELF'], 'ipn.php') === false && strpos($GLOBALS['wwwroot'], $_SERVER['HTTP_HOST']) !== false) {
461  // On accède en http et non pas en https à un site explicitement configuré en https
462  // Attention : on perd les POST si il y en avait, mais on ne veut pas pour des raisons de sécurité exclure le cas où il y aurait des POST
463  // On ne souhaite pas faire la redirection si le nom de domaine utilisé n'est pas le domaine principal. Il faut faire la redirection uniquement si le $_SERVER['HTTP_HOST'] est présent dans wwwroot
464  redirect_and_die(str_replace('http://', 'https://', get_current_url()), true);
465 }
466 
467 // Si allow_w3c_validator_access_admin est défini à true (ce qui n'est pas le cas par défaut par sécurité), alors le moteur de validation W3C est autorisé pour accéder dans l'administration, en mode démo (limite les risques de faille de sécurité de le mettre en démo)
468 $GLOBALS['force_demo_rights'] = (vb($GLOBALS['site_parameters']['allow_w3c_validator_access_admin']) && strpos($_SERVER['REMOTE_ADDR'], '128.30.52.') === 0 && substr(vb($_SERVER['HTTP_USER_AGENT']),0, 3) == 'W3C');
469 if($GLOBALS['force_demo_rights']) {
470  // Emulation mode demo pour un utilisateur précis
471  $_SESSION['session_utilisateur']['priv'] = 'demo';
472  $_SESSION['session_utilisateur']['id_utilisateur'] = 9999999999999999999;
473  $_SESSION['session_utilisateur']['email'] = 'demo@demo.fr';
474  $_SESSION['session_utilisateur']['prenom'] = 'demo';
475  $_SESSION['session_utilisateur']['nom_famille'] = 'demo';
476  $_SESSION['session_utilisateur']['pseudo'] = 'demo';
477  $_SESSION['session_utilisateur']['site_id'] = '1';
478 }
479 
480 // Liste par défaut des privilèges qui ne peuvent pas se connecter à leur compte :
481 // - Les revendeurs en attente de validation
482 // - Les affiliés en attente de validation
483 // - Les inscrits à la newsletter
484 // - Les inscrits aux téléchargements
485 $GLOBALS['disable_login_by_privilege'] = vb($GLOBALS['site_parameters']['disable_login_by_privilege'], array('load', 'newsletter', 'stop', 'stand'));
486 
487 handle_template_engine_init((defined('DEBUG_TEMPLATES') && DEBUG_TEMPLATES) || (!empty($_GET['update']) && $_GET['update'] == 1) || (!defined('IN_CRON') && (strpos($GLOBALS['wwwroot'], '://localhost')!==false || strpos($GLOBALS['wwwroot'], '://127.0.0.1')!==false)) || empty($GLOBALS['site_parameters']['smarty_avoid_check_template_files_update']));
488 
489 // Chargement de librairies - Les librairies de type display sont chargées après display_custom.php
490 if (!IN_INSTALLATION && empty($GLOBALS['installation_folder_active'])) {
491  if (file_exists($GLOBALS['repertoire_modele'] . "/fonctions/display_custom.php")) {
492  include($GLOBALS['repertoire_modele'] . "/fonctions/display_custom.php");
493  }
494 }
495 include($GLOBALS['dirroot'] . "/lib/fonctions/display.php");
496 include($GLOBALS['dirroot'] . "/lib/fonctions/display_user_forms.php");
497 include($GLOBALS['dirroot'] . "/lib/fonctions/display_product.php");
498 include($GLOBALS['dirroot'] . "/lib/fonctions/display_article.php");
499 
501 
502 if (!IN_INSTALLATION || IN_INSTALLATION >= 5) {
503  if (defined('IN_PEEL_ADMIN')) {
504  // Protection de l'administration, qui vient en doublon de vérification en haut de chaque fichier d'admin
505  // pour plus de sécurité
506  if(!defined('IN_RPC')) {
507  // On redirige si problème de sécurité
509  necessite_priv("admin*");
510  } elseif (!est_identifie() || !a_priv("admin*", true)) {
511  // On ne redirige pas, on s'arrête
512  die();
513  }
514  if (!isset($_SESSION['session_admin_multisite']) && isset($GLOBALS['site_id'])) {
515  // session_admin_multisite permet de récupérer les données d'un site à administrer. Cette valeur est choisissable par l'admin dans la page administer/index.php.
516  $all_sites_name_array = get_all_sites_name_array(false, false, true);
517  if(count($all_sites_name_array)>1) {
518  $_SESSION['session_admin_multisite'] = $GLOBALS['site_id'];
519  } else {
520  $_SESSION['session_admin_multisite'] = 0;
521  }
522  }
523  $GLOBALS['disable_google_ads'] = true;
524  } elseif(!empty($_GET['email']) || !empty($_POST['email']) || !empty($_GET['mot_passe']) || !empty($_POST['mot_passe']) || !empty($_GET['password_once']) || !empty($_POST['password_once'])) {
525  // Adsense : "il est interdit de nous transmettre des informations que nous pourrions identifier comme étant des informations personnelles"
526  $GLOBALS['disable_google_ads'] = true;
527  $GLOBALS['robots_noindex'] = true;
528  }
529  // Chargement des modules
530  // Des modules optionnels, sont vendus séparément ou dans le package du module Premium
531  // Contactez PEEL sur https://www.peel.fr/ ou au 01 75 43 67 97 pour obtenir un de ces modules
532  load_modules();
533 }
534 
535 if (!IN_INSTALLATION) {
536  // Initialisation de l'objet caddie si nécessaire
537  if (!isset($_SESSION['session_caddie']) || empty($_SESSION['session_caddie'])) {
538  $_SESSION['session_caddie'] = new Caddie(get_current_user_promotion_percentage());
539  } elseif (!empty($_SESSION['session_caddie']->commande_id)) {
540  // Une commande est en cours : on vérifie son statut de paiement et si elle est payée, alors on réinitialise le caddie
541  $query_com = query("SELECT c.*, sp.nom_" . $_SESSION['session_langue'] . " AS statut_paiement
542  FROM peel_commandes c
543  LEFT JOIN peel_statut_paiement sp ON sp.id=c.id_statut_paiement AND " . get_filter_site_cond('statut_paiement', 'sp') . "
544  WHERE c.id ='" . intval($_SESSION['session_caddie']->commande_id) . "' AND c.id_utilisateur = '" . intval($_SESSION['session_utilisateur']['id_utilisateur']) . "' AND " . get_filter_site_cond('commandes', 'c') . "");
545  $result_com = fetch_object($query_com);
546  if ($result_com && in_array($result_com->statut_paiement, array('being_checked', 'completed'))) {
547  $_SESSION['session_caddie']->init();
548  }
549  }
550  // Initialisation de la session session_ariane_panier
551  if (!isset($_SESSION['session_ariane_panier']) || empty($_SESSION['session_ariane_panier'])) {
552  $_SESSION['session_ariane_panier'] = array('in_caddie' => false, 'in_step1' => false, 'in_step2' => false, 'in_step3' => false);
553  }
554  // Suppression de la session session_redirect_after_login si un utilisateur sort de la page membre.php après une redirection sans s'être connecté
555  if ((!empty($_SERVER['HTTP_REFERER']) && strpos($_SERVER['HTTP_REFERER'], 'membre') !== false) && !empty($_SESSION['session_redirect_after_login']) && !est_identifie() && !defined('LOAD_NO_OPTIONAL_MODULE') && !defined('IN_ACCES_ACCOUNT') && !defined('IN_GET_PASSWORD')) {
556  unset($_SESSION['session_redirect_after_login']);
557  }
558 }
559 
560 if (!defined('SKIP_SET_LANG')) {
561  // On charge les fichiers de langue des modules
562  set_lang_configuration_and_texts($_SESSION['session_langue'], vb($GLOBALS['load_default_lang_files_before_main_lang_array_by_lang'][$_SESSION['session_langue']]), false, true, false);
563 }
564 if (!defined('LOAD_NO_OPTIONAL_MODULE') && !empty($GLOBALS['site_parameters']['load_site_specific_files_after_others'])) {
565  // Fichiers nécessitant que les fonctions d'URL soient toutes définies et les constantes de langue
566  foreach($GLOBALS['site_parameters']['load_site_specific_files_after_others'] as $this_file_relative_path) {
567  if(file_exists($GLOBALS['dirroot'] . $this_file_relative_path)) {
568  include($GLOBALS['dirroot'] . $this_file_relative_path);
569  if(String::strpos($this_file_relative_path, '/modules/') !==false) {
570  $temp = String::substr($this_file_relative_path, String::strpos($this_file_relative_path, '/modules/')+1);
571  $temp2 = explode('/', $temp);
572  $GLOBALS['modules_installed'][$temp2[1]] = $temp2[1];
573  }
574  }
575  }
576 }
577 
578 if (!empty($GLOBALS['installation_folder_active'])) {
579  // Le site est configuré mais a toujours le répertoire d'installation présent
580  echo print_delete_installation_folder();
581  die();
582 }
583 if (!empty($_POST['password_first_hash']) && !empty($_POST['password_length']) && !empty($_POST['email_or_pseudo'])) {
584  // Login automatique en POST quand on vient d'une application tierce, avec la première étape de hash appliquée au mot de passe
585  $utilisateur = user_login_now($_POST['email_or_pseudo'], $_POST['password_first_hash'], true, true, $_POST['password_length']);
586  if ($utilisateur) {
588  } else {
589  redirect_and_die(get_url('membre'));
590  }
591 }
592 
593 // Gestion de l'affichage de contenu spécifique en fonction du pays du visiteur. Cette fonction nécessite une mise en place spécifique en SQL et n'est pas standard.
594 if(isset($_GET['site_country']) && !empty($GLOBALS['site_parameters']['site_country_allowed_array'])) {
595  if(!empty($_SESSION['session_country_detected']) && in_array(strval($_SESSION['session_country_detected']), $GLOBALS['site_parameters']['site_country_modify_allowed_array']) && empty($_SESSION['session_utilisateur']['site_country'])) {
596  if(in_array(strval($_GET['site_country']), $GLOBALS['site_parameters']['site_country_allowed_array'])) {
597  $_SESSION['session_site_country'] = intval($_GET['site_country']);
598  }
599  }
600  // On redirige 302 après avoir défini le site_country
601  redirect_and_die(get_current_url(true, false, array('site_country')));
602 }
603 if(!isset($_SESSION['session_site_country']) && !empty($GLOBALS['site_parameters']['site_country_allowed_array'])) {
604  // On définit pour quel pays on montre les données du site, lors de la première page vue par l'utilisateur
605  if(!empty($_SESSION['session_utilisateur']['site_country'])) {
606  $_SESSION['session_site_country'] = intval($_SESSION['session_utilisateur']['site_country']);
607  // on essaie de prendre la devise correspondant au pays si elle est disponible sur le site, sinon on laisse session_devise tel que défini plus tôt dans ce fichier
608  set_current_devise(null, $_SESSION['session_site_country']);
609  } elseif (!isset($_SESSION['session_country_detected']) && !empty($_SERVER['REMOTE_ADDR']) && check_if_module_active('geoip')) {
610  include($GLOBALS['dirroot'] . '/modules/geoip/class/geoIP.php');
611  $geoIP = new geoIP();
612  $_SESSION['session_country_detected'] = $geoIP->geoIPCountryIDByAddr($_SERVER['REMOTE_ADDR']);
613  $geoIP->geoIPClose();
614  unset($geoIP);
615  if(in_array(strval($_SESSION['session_country_detected']), $GLOBALS['site_parameters']['site_country_allowed_array'])) {
616  $_SESSION['session_site_country'] = intval($_SESSION['session_country_detected']);
617  // on essaie de prendre la devise correspondant au pays si elle est disponible sur le site, sinon on laisse session_devise tel que défini plus tôt dans ce fichier
618  set_current_devise(null, $_SESSION['session_site_country']);
619  } else {
620  $_SESSION['session_site_country'] = 0;
621  }
622  }
623 }
625 if(!defined('PEEL_PREFETCH')) {
626  call_module_hook('configuration_end', array());
627 }
set_lang_configuration_and_texts($lang, $load_default_lang_files_before_main_lang_array=null, $general_setup=true, $load_modules_files=true, $load_general_admin_files=true, $exclude_empty_string=true, $skip_load_files=false)
On charge les variables de langue, en complétant éventuellement avec la langue de référence...
Definition: fonctions.php:1941
load_site_parameters($lang=null, $skip_loading_currency_infos=false, $forced_site_id=null)
On charge les variables de configuration On récupère d'abord les données valables pour tous les sites...
Definition: fonctions.php:2567
handle_site_suspended()
Affiche ou non le fait que le site est suspendu.
Definition: fonctions.php:2433
check_language($this_lang, $langs_array)
Vérification de l'existance de la langue, et redirection si nécessaire ou nouvelle langue définie...
Definition: fonctions.php:1657
static strpos($haystack, $needle, $offset=0)
Returns the numeric position of the first occurrence of needle in the haystack string.
Definition: String.php:54
get_current_url($with_get=true, $get_short_url=false, $take_away_get_args_array=null)
get_current_url()
Definition: fonctions.php:1743
static rawurldecode($string, $avoid_slash=false)
Returns rawurldecode.
Definition: String.php:909
handle_register_globals()
Empêche les effets de register_globals.
Definition: fonctions.php:2376
handle_template_engine_init($templates_force_compile=false)
Appelle le moteur de template pour définir $GLOBALS['tplEngine'].
Definition: fonctions.php:2414
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
select_db($database_name, &$database_object, $continue_if_error=false)
select_db()
Definition: database.php:110
static strtolower($string)
Returns string with all alphabetic characters converted to lowercase.
Definition: String.php:135
static strlen($string)
Returns the length of the given string.
Definition: String.php:36
if(!defined('IN_PEEL')) db_connect(&$database_object, $database_name=null, $serveur_mysql=null, $utilisateur_mysql=null, $mot_de_passe_mysql=null, $continue_if_error=false)
db_connect()
Definition: database.php:31
if(!defined('IN_PEEL')) load_modules($technical_code=null)
Charge les modules Pour obtenir des modules optionnels : Contactez PEEL sur https://www.peel.fr/ ou au 01 75 43 67 97.
get_current_user_promotion_percentage()
Calcule la réduction générale applicable à un utilisateur et garde la valeur en session pour accélére...
Definition: user.php:939
if(!function_exists('ipGet')) if(!function_exists('isPublicIP')) is_user_bot($ip=null, $user_agent=null)
Renvoie si le visiteur est un robot ou non.
Definition: fonctions.php:3083
get_identified_lang($langs_array=array())
On identifie la langue utilisée, et on redirige si cette langue n'est pas activée Pour qu'une langue ...
Definition: fonctions.php:1611
handle_setup_redirections($url, $mode= 'redirect')
Gère les redirections définies dans $GLOBALS['site_parameters']['redirections'].
Definition: fonctions.php:2462
if(!defined('IN_CRON')) if(!defined('IN_INSTALLATION')) $GLOBALS['dirroot']
necessite_priv($priv, $demo_allowed=true, $configuration_modification=false)
Cette fonction vérifie si l'utilisateur a les privilèges de $priv.
Definition: fonctions.php:1575
const IN_INSTALLATION
Definition: bdd.php:14
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
necessite_identification()
Si l'utilisateur n'est pas connecté à un compte, on affiche une page d'identification et arrête le sc...
Definition: fonctions.php:1596
handle_sessions()
Gère les sessions PHP et des protections contre des vols de session.
Definition: fonctions.php:2497
handle_php_default_setup()
Définit les paramètres de base de PHP.
Definition: fonctions.php:2326
fetch_object($query_result)
fetch_object()
Definition: database.php:302
call_module_hook($hook, $params, $mode= 'boolean')
Appelle la fonction correspondant au $hook pour chaque module installé La fonction doit s'appeler : [...
set_current_devise($currency_id_or_code, $reference_country_id=null)
set_current_devise()
Definition: fonctions.php:50
get_all_sites_name_array($admin_force_multisite_if_allowed=false, $allow_null_site_id=false, $skip_rights_check=false)
Retourne un tableau des noms des sites configurés en fonction des droits de l'administrateur.
Definition: fonctions.php:4792
account_update()
Met à jour les informations de l'utilisateur connecté, telles que pour de la messagerie interne...
Definition: user.php:1098
load_active_languages_list($site_id=null)
On charge les variables de listes de langues.
Definition: fonctions.php:2130
a_priv($requested_priv, $demo_allowed=false, $site_configuration_modification=false, $user_id=null)
Renvoie true si l'utilisateur de la session a le privilège $requested_priv ou un droit supérieur Des ...
Definition: user.php:63
static html_entity_decode($string, $quote_style=ENT_COMPAT, $charset=GENERAL_ENCODING)
String::html_entity_decode()
Definition: String.php:517
user_login_now($email_or_pseudo, $mot_passe, $check_password=true, $password_given_as_first_password_hash=false, $password_length_if_given_as_first_password_hash=null)
user_login_now()
Definition: user.php:694
static substr($string, $start, $length=null)
Returns the portion of string specified by the start and length parameters.
Definition: String.php:112
static substr_count($string, $searched)
Returns the number of times the needle substring occurs in the haystack string.
Definition: String.php:194
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...
get_apparent_folder()
Renvoyer le répertoire racine apparent de l'URL courante.
Definition: fonctions.php:2268
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:29:52 - Peel ecommerce is a product of Agence web Advisto SAS. All rights reserved.