[SI-LINDER-PARTNER-2][OSC] - Refonte du site Internet pour supporter le Responsive Design
// -> [VTAB-TEAM-LINDER-PARTNER-1][OSC] - Revue de la charte Graphique
/*
ATTENTION - le design du site ne peut pas être passé en doctype html (html 5) dans la révision 1 du design.
bien qu'une révision 2 sera instanciée plus tard (l'année prochaine), il faudra se contenter de nombreux workaround en restant en HTML TRANSITIONAL 4.01
Du fait du nombre massif des éléments DE CETTE PAGE (et de ce qui en découlerait) qui seront à revoir pour transformer le design en design responsive..
.. il est alors plus judicieux de globaliser un TAG unique pour cette tâche pour ne pas alourdir de commentaires le code déjà suffisemment alourdi comme cela!
En gros, ici, pour cette méga-tâche, je vais utiliser un format maison de commentaires pour cette tâche précise:
--> pour en comprendre les méandres, voir le fichier /[!] - Saphyra-Interactive-TaskList-Explanations/[SI-LINDER-PARTNER-2][OSC]--semantic.php
*/
// <- [VTAB-TEAM-LINDER-PARTNER-1][OSC] - Revue de la charte Graphique
// <- [SI-LINDER-PARTNER-2][OSC] - Refonte du site Internet pour supporter le Responsive Design
?> VDPHP5 : compatibilité php4/5
if ( isset($_GET) ) { $HTTP_GET_VARS=$_GET; }
if ( isset($_POST) ) { $HTTP_POST_VARS=$_POST; }
if ( isset($_SERVER) ) { $HTTP_SERVER_VARS=$_SERVER; }
// <- VDPHP5 : compatibilité php4/5
// -> CKPHP5 : patch de compatibilité cookie/sessions php4/5
if ( isset($_COOKIE) ) { $HTTP_COOKIE_VARS=$_COOKIE; }
//if ( isset($_SESSION) ) { $HTTP_SESSION_VARS=$_SESSION; }
// <- CKPHP5 : patch de compatibilité cookie/sessions php4/5
// start the timer for the page parse time log
define('PAGE_PARSE_START_TIME', microtime());
// set the level of error reporting
error_reporting(E_ALL & ~(E_DEPRECATED | E_NOTICE) );
// check if register_globals is enabled.
// since this is a temporary measure this message is hardcoded. The requirement will be removed before 2.2 is finalized.
if (function_exists('ini_get')) {
ini_get('register_globals') or exit('Server Requirement Error: register_globals is disabled in your PHP configuration. This can be enabled in your php.ini configuration file or in the .htaccess file in your catalog directory.');
}
// Set the local configuration parameters - mainly for developers
if (file_exists('includes/local/configure.php')) include('includes/local/configure.php');
// include server parameters
require('includes/configure.php');
if (strlen(DB_SERVER) < 1) {
if (is_dir('install')) {
header('Location: install/index.php');
}
}
// define the project version
define('PROJECT_VERSION', 'osCommerce 2.2-MS2');
// set the type of request (secure or not)
$request_type = (getenv('HTTPS') == 'on') ? 'SSL' : 'NONSSL';
// set php_self in the local scope
if (!isset($PHP_SELF)) $PHP_SELF = $HTTP_SERVER_VARS['PHP_SELF'];
if ($request_type == 'NONSSL') {
define('DIR_WS_CATALOG', DIR_WS_HTTP_CATALOG);
} else {
define('DIR_WS_CATALOG', DIR_WS_HTTPS_CATALOG);
}
// include the list of project filenames
require(DIR_WS_INCLUDES . 'filenames.php');
// include the list of project database tables
require(DIR_WS_INCLUDES . 'database_tables.php');
// customization for the design layout
define(BOX_WIDTH, 250); // how wide the boxes should be in pixels (default: 125)
// include the database functions
require(DIR_WS_FUNCTIONS . 'database.php');
// make a connection to the database... now
// -> OSC-URGENCE_ALERT : Modification du message d'erreur par un message moins brutal et plus joli (on redirige..)
// OLD: tep_db_connect() or die('Connexion impossible à la Base de Données!');
/* new: */ tep_db_connect() or die('');
// <- OSC-URGENCE_ALERT : Modification du message d'erreur par un message moins brutal et plus joli (on redirige..)
// -> OSC-70 :
/*
La fonctionnalité du carnet d'adresse doit accepter autant d'ajouts d'adresses que possibles selon la clef de configuration sql nommée 'MAX_ADDRESS_BOOK_ENTRIES_FOR_PRO_CUSTOMERS'
De plus, à l'origine, cette clef était utilisée uniquement si le mode 'PRO' était actif.
Le double mode d'affichages des prix (bouton bascule HT/TTC) a été abandonné le 27/11/2012 par nécéssité de compréhension pour les clients du client.
Le cookie 'cookie__AccessMode' n'existant plus dans les modifications inhérente à la tâche OSC-70 il a fallu penser à trouver un substitut du fait que les cookies ne connaissent pas le domaine AVANT la recherche de ces clefs..
L'idée est donc de déclarer une variable factice : $OSC_70_FakeCookie__AccessMode
Qui prendra la valeur 'PRO'
Et de modifier $_COOKIE['cookie__AccessMode'] en '$OSC_70_FakeCookie__AccessMode'
*/
$OSC_70_FakeCookie__AccessMode = 'PRO'; // Peut aussi prendre la valeur 'PARTICULIER'.. Mais ceci désactivera au final le nombre maximum d'adresses ajoutables au carnet d'adresses par le client.
// set the application parameters
$configuration_query = tep_db_query('select configuration_key as cfgKey, configuration_value as cfgValue from ' . TABLE_CONFIGURATION);
while ($configuration = tep_db_fetch_array($configuration_query)) {
// -> OSC-51 : Augmentation de la limite d'adresses dans le Carnet d'Adresses pour les clients PRO
//
// Nouveau depuis le 27/11/2012: cette fonctionnalité autorisera désormais n'importe quel membre identifié à ajouter autant d'adresses qu'il le souhaite à son carnet d'adresses.
// ces conditions au final sont là pour montrer comment créér des interceptions de (clefs de) configurations dans OSCommerce!
//
// dans le vérificateur des configurations de la table 'configuration' :
// interception de la configuration de MAX_ADDRESS_BOOK_ENTRIES pour augmenter la limite d'adresses dans le carnet d'adresses.
if ( ( empty($OSC_70_FakeCookie__AccessMode) || $OSC_70_FakeCookie__AccessMode == 'PARTICULIER' ) && $configuration['cfgKey'] == 'MAX_ADDRESS_BOOK_ENTRIES' )
{
// Nouveau depuis le 27/11/2012: Vérification de la variable factice: OSC_70_FakeCookie__AccessMode (cette variable est créée et mise à la valeur 'PRO' à tout les coups suite à la fonctionnalité introduite par la tâche OSC-70
// Nouveau depuis le 27/11/2012: si la variable factice $OSC_70_FakeCookie__AccessMode est à la valeur 'PARTICULIER', et que la configuration_key est actuellement: MAX_ADDRESS_BOOK_ENTRIES
// on définit la constante php MAX_ADDRESS_BOOK_ENTRIES, selon la valeur de la configuration MAX_ADDRESS_BOOK_ENTRIES
// echo 'passed CONDITION-FakeCookie particulier';
// Nouveau depuis le 27/11/2012: le code ne passera plus jamais par cette condition (sauf si on donne manuellement une nouvelle valeur à la variable $OSC_70_FakeCookie__AccessMode déclarée plus haut).
define('MAX_ADDRESS_BOOK_ENTRIES', $configuration['cfgValue']);
} else if ( $OSC_70_FakeCookie__AccessMode == 'PRO' && $configuration['cfgKey'] == 'MAX_ADDRESS_BOOK_ENTRIES_FOR_PRO_CUSTOMERS' )
{
// echo 'passed CONDITION-FakeCookie pro: CONFVal: ' . $configuration['cfgValue'];
// Nouveau depuis le 27/11/2012: si au contraire la variable factice $OSC_70_FakeCookie__AccessMode est à la valeur 'PRO', et que la configuration_key est actuellement: MAX_ADDRESS_BOOK_ENTRIES_FOR_PRO_CUSTOMERS
// on définit la constante php MAX_ADDRESS_BOOK_ENTRIES, selon la valeur de la configuration MAX_ADDRESS_BOOK_ENTRIES_FOR_PRO_CUSTOMERS
define('MAX_ADDRESS_BOOK_ENTRIES', $configuration['cfgValue']);
} else {
// dans le cas où configuration_key ne matche pas MAX_ADDRESS_BOOK_ENTRIES ou MAX_ADDRESS_BOOK_ENTRIES_FOR_PRO_CUSTOMERS
// on demande à OsCommerce de garder la configuration_key en tant que nom de constante PHP (comportement normal), car ça n'a rien à voir avec le Carnet d'Adresses.
if ($configuration['cfgKey'] != 'MAX_ADDRESS_BOOK_ENTRIES' && $configuration['cfgKey'] != 'MAX_ADDRESS_BOOK_ENTRIES_FOR_PRO_CUSTOMERS'):
define($configuration['cfgKey'], $configuration['cfgValue']);
endif;
}
// <- OSC-51 : Augmentation de la limite d'adresses dans le Carnet d'Adresses pour les clients PRO
// <- OSC-70 : Gestion HT/TTC : affichage prix HT et TTC
}
// if gzip_compression is enabled, start to buffer the output
if ( (GZIP_COMPRESSION == 'true') && ($ext_zlib_loaded = extension_loaded('zlib')) && (PHP_VERSION >= '4') ) {
if (($ini_zlib_output_compression = (int)ini_get('zlib.output_compression')) < 1) {
if (PHP_VERSION >= '4.0.4') {
ob_start('ob_gzhandler');
} else {
include(DIR_WS_FUNCTIONS . 'gzip_compression.php');
ob_start();
ob_implicit_flush();
}
} else {
ini_set('zlib.output_compression_level', GZIP_LEVEL);
}
}
// set the HTTP GET parameters manually if search_engine_friendly_urls is enabled
if (SEARCH_ENGINE_FRIENDLY_URLS == 'true') {
if (strlen(getenv('PATH_INFO')) > 1) {
$GET_array = array();
$PHP_SELF = str_replace(getenv('PATH_INFO'), '', $PHP_SELF);
$vars = explode('/', substr(getenv('PATH_INFO'), 1));
for ($i=0, $n=sizeof($vars); $i<$n; $i++) {
if (strpos($vars[$i], '[]')) {
$GET_array[substr($vars[$i], 0, -2)][] = $vars[$i+1];
} else {
$HTTP_GET_VARS[$vars[$i]] = $vars[$i+1];
}
$i++;
}
if (sizeof($GET_array) > 0) {
while (list($key, $value) = each($GET_array)) {
$HTTP_GET_VARS[$key] = $value;
}
}
}
}
// define general functions used application-wide
require(DIR_WS_FUNCTIONS . 'general.php');
require(DIR_WS_FUNCTIONS . 'html_output.php');
// [VTAB-TEAM-LINDER-PARTNER-1][OSC][SimpleTaskDescription]:{" on inclut les fonctions VTAB généralistes pour toutes les pages "}
// WIP require(DIR_WS_FUNCTIONS . 'vtab_general.php');
// [VTAB-TEAM-LINDER-PARTNER-1][OSC][SimpleTaskDescription]:{" on inclut les fonctions VTAB de sorties HTML pour toutes les pages "}
require(DIR_WS_FUNCTIONS . 'vtab_html_output.php');
// set the cookie domain
$cookie_domain = (($request_type == 'NONSSL') ? HTTP_COOKIE_DOMAIN : HTTPS_COOKIE_DOMAIN);
$cookie_path = (($request_type == 'NONSSL') ? HTTP_COOKIE_PATH : HTTPS_COOKIE_PATH);
// include cache functions if enabled
if (USE_CACHE == 'true') include(DIR_WS_FUNCTIONS . 'cache.php');
// include shopping cart class
require(DIR_WS_CLASSES . 'shopping_cart.php');
// include navigation history class
require(DIR_WS_CLASSES . 'navigation_history.php');
// some code to solve compatibility issues
require(DIR_WS_FUNCTIONS . 'compatibility.php');
// check if sessions are supported, otherwise use the php3 compatible session class
if (!function_exists('session_start')) {
define('PHP_SESSION_NAME', 'osCsid');
define('PHP_SESSION_PATH', $cookie_path);
define('PHP_SESSION_DOMAIN', $cookie_domain);
define('PHP_SESSION_SAVE_PATH', SESSION_WRITE_DIRECTORY);
include(DIR_WS_CLASSES . 'sessions.php');
}
// define how the session functions will be used
require(DIR_WS_FUNCTIONS . 'sessions.php');
// set the session name and save path
tep_session_name('osCsid');
tep_session_save_path(SESSION_WRITE_DIRECTORY);
// set the session cookie parameters
if (function_exists('session_set_cookie_params')) {
session_set_cookie_params(0, $cookie_path, $cookie_domain);
} elseif (function_exists('ini_set')) {
ini_set('session.cookie_lifetime', '0');
ini_set('session.cookie_path', $cookie_path);
ini_set('session.cookie_domain', $cookie_domain);
}
// set the session ID if it exists
if (isset($HTTP_POST_VARS[tep_session_name()])) {
tep_session_id($HTTP_POST_VARS[tep_session_name()]);
} elseif ( ($request_type == 'SSL') && isset($HTTP_GET_VARS[tep_session_name()]) ) {
tep_session_id($HTTP_GET_VARS[tep_session_name()]);
}
// start the session
$session_started = false;
if (SESSION_FORCE_COOKIE_USE == 'True') {
tep_setcookie('cookie_test', 'please_accept_for_session', time()+60*60*24*30, $cookie_path, $cookie_domain);
if (isset($HTTP_COOKIE_VARS['cookie_test'])) {
tep_session_start();
$session_started = true;
}
} elseif (SESSION_BLOCK_SPIDERS == 'True') {
$user_agent = strtolower(getenv('HTTP_USER_AGENT'));
$spider_flag = false;
if (tep_not_null($user_agent)) {
$spiders = file(DIR_WS_INCLUDES . 'spiders.txt');
for ($i=0, $n=sizeof($spiders); $i<$n; $i++) {
if (tep_not_null($spiders[$i])) {
if (is_integer(strpos($user_agent, trim($spiders[$i])))) {
$spider_flag = true;
break;
}
}
}
}
if ($spider_flag == false) {
tep_session_start();
$session_started = true;
}
} else {
tep_session_start();
$session_started = true;
}
// set SID once, even if empty
$SID = (defined('SID') ? SID : '');
// verify the ssl_session_id if the feature is enabled
if ( ($request_type == 'SSL') && (SESSION_CHECK_SSL_SESSION_ID == 'True') && (ENABLE_SSL == true) && ($session_started == true) ) {
$ssl_session_id = getenv('SSL_SESSION_ID');
if (!tep_session_is_registered('SSL_SESSION_ID')) {
$SESSION_SSL_ID = $ssl_session_id;
tep_session_register('SESSION_SSL_ID');
}
if ($SESSION_SSL_ID != $ssl_session_id) {
tep_session_destroy();
tep_redirect(tep_href_link(FILENAME_SSL_CHECK));
}
}
// verify the browser user agent if the feature is enabled
if (SESSION_CHECK_USER_AGENT == 'True') {
$http_user_agent = getenv('HTTP_USER_AGENT');
if (!tep_session_is_registered('SESSION_USER_AGENT')) {
$SESSION_USER_AGENT = $http_user_agent;
tep_session_register('SESSION_USER_AGENT');
}
if ($SESSION_USER_AGENT != $http_user_agent) {
tep_session_destroy();
tep_redirect(tep_href_link(FILENAME_LOGIN));
}
}
// verify the IP address if the feature is enabled
if (SESSION_CHECK_IP_ADDRESS == 'True') {
$ip_address = tep_get_ip_address();
if (!tep_session_is_registered('SESSION_IP_ADDRESS')) {
$SESSION_IP_ADDRESS = $ip_address;
tep_session_register('SESSION_IP_ADDRESS');
}
// -> SESSIONFIX
// if ($SESSION_IP_ADDRESS != $ip_address) {
// tep_session_destroy();
// tep_redirect(tep_href_link(FILENAME_LOGIN));
// }
if ($SESSION_IP_ADDRESS != $ip_address) {
tep_session_destroy();
require(DIR_WS_INCLUDES . 'session_fix.php');
header('Location: ' . sanitiseURL());
}
// <- SESSIONFIX
}
// create user manager object
$account_query = tep_db_query("select is_partner,coeff_partner from " . TABLE_CUSTOMERS . " where customers_id = '" . (int)$customer_id . "'");
$account = tep_db_fetch_array($account_query);
$coeff_partner = $account['coeff_partner'];
$is_partner = $account['is_partner'];
$um = new UserManager($is_partner);
// create the shopping cart & fix the cart if necesary
if (tep_session_is_registered('cart') && is_object($cart)) {
if (PHP_VERSION < 4) {
$broken_cart = $cart;
$cart = new shoppingCart;
$cart->unserialize($broken_cart);
}
} else {
tep_session_register('cart');
$cart = new shoppingCart;
}
// include currencies class and create an instance
require(DIR_WS_CLASSES . 'currencies.php');
$currencies = new currencies();
// -> QPBPP135
// include the price formatter classes for the price breaks contribution
require(DIR_WS_CLASSES . 'PriceFormatter.php');
$pf = new PriceFormatter;
require(DIR_WS_CLASSES . 'PriceFormatterStore.php');
$pfs = new PriceFormatterStore;
// <- QPBPP135
// include the mail classes
require(DIR_WS_CLASSES . 'mime.php');
require(DIR_WS_CLASSES . 'email.php');
// set the language
if (!tep_session_is_registered('language') || isset($HTTP_GET_VARS['language'])) {
if (!tep_session_is_registered('language')) {
tep_session_register('language');
tep_session_register('languages_id');
}
include(DIR_WS_CLASSES . 'language.php');
$lng = new language();
if (isset($HTTP_GET_VARS['language']) && tep_not_null($HTTP_GET_VARS['language'])) {
$lng->set_language($HTTP_GET_VARS['language']);
} else {
$lng->get_browser_language();
}
$language = $lng->language['directory'];
$languages_id = $lng->language['id'];
}
// include the language translations
require(DIR_WS_LANGUAGES . $language . '.php');
// Ultimate SEO URLs v2.2d
if ((!defined(SEO_ENABLED)) || (SEO_ENABLED == 'true')) {
include_once('includes/classes/seo.class.php');
if ( !is_object($seo_urls) ){
$seo_urls = new SEO_URL($languages_id);
}
}
// -> DWFM1
if (STORE_ONLINE == 'false') {
if ($aauth != 'yes')
{
if ($aadmin != 'yes')
{
echo OFFLINE_MESSAGE;
exit;
}
else
{
tep_session_register('aauth');
$aauth = 'yes';
}
}
}
// <- DWFM1
// currency
if (!tep_session_is_registered('currency') || isset($HTTP_GET_VARS['currency']) || ( (USE_DEFAULT_LANGUAGE_CURRENCY == 'true') && (LANGUAGE_CURRENCY != $currency) ) ) {
if (!tep_session_is_registered('currency')) tep_session_register('currency');
if (isset($HTTP_GET_VARS['currency'])) {
if (!$currency = tep_currency_exists($HTTP_GET_VARS['currency'])) $currency = (USE_DEFAULT_LANGUAGE_CURRENCY == 'true') ? LANGUAGE_CURRENCY : DEFAULT_CURRENCY;
} else {
$currency = (USE_DEFAULT_LANGUAGE_CURRENCY == 'true') ? LANGUAGE_CURRENCY : DEFAULT_CURRENCY;
}
}
// navigation history
if (tep_session_is_registered('navigation')) {
if (PHP_VERSION < 4) {
$broken_navigation = $navigation;
$navigation = new navigationHistory;
$navigation->unserialize($broken_navigation);
}
} else {
tep_session_register('navigation');
$navigation = new navigationHistory;
}
$navigation->add_current_page();
// Shopping cart actions
if (isset($HTTP_GET_VARS['action'])) {
// redirect the customer to a friendly cookie-must-be-enabled page if cookies are disabled
if ($session_started == false) {
tep_redirect(tep_href_link(FILENAME_COOKIE_USAGE));
}
if (DISPLAY_CART == 'true') {
$goto = FILENAME_SHOPPING_CART;
$parameters = array('action', 'cPath', 'products_id', 'pid');
} else {
$goto = basename($PHP_SELF);
if ($HTTP_GET_VARS['action'] == 'buy_now') {
$parameters = array('action', 'pid', 'products_id');
} else {
$parameters = array('action', 'pid');
}
}
switch ($HTTP_GET_VARS['action']) {
// customer wants to update the product quantity in their shopping cart
case 'update_product' : for ($i=0, $n=sizeof($HTTP_POST_VARS['products_id']); $i<$n; $i++) {
if (in_array($HTTP_POST_VARS['products_id'][$i], (is_array($HTTP_POST_VARS['cart_delete']) ? $HTTP_POST_VARS['cart_delete'] : array()))) {
$cart->remove($HTTP_POST_VARS['products_id'][$i]);
} else {
if (PHP_VERSION < 4) {
// if PHP3, make correction for lack of multidimensional array.
reset($HTTP_POST_VARS);
while (list($key, $value) = each($HTTP_POST_VARS)) {
if (is_array($value)) {
while (list($key2, $value2) = each($value)) {
if (ereg ("(.*)\]\[(.*)", $key2, $var)) {
$id2[$var[1]][$var[2]] = $value2;
}
}
}
}
$attributes = ($id2[$HTTP_POST_VARS['products_id'][$i]]) ? $id2[$HTTP_POST_VARS['products_id'][$i]] : '';
} else {
$attributes = ($HTTP_POST_VARS['id'][$HTTP_POST_VARS['products_id'][$i]]) ? $HTTP_POST_VARS['id'][$HTTP_POST_VARS['products_id'][$i]] : '';
}
$cart->add_cart($HTTP_POST_VARS['products_id'][$i], $HTTP_POST_VARS['cart_quantity'][$i], $attributes, false);
}
}
tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));
break;
// customer adds a product from the products page
case 'add_product' : if (isset($HTTP_POST_VARS['products_id']) && is_numeric($HTTP_POST_VARS['products_id'])) {
// -> QPBPP135
//$cart->add_cart($HTTP_POST_VARS['products_id'], $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'], $HTTP_POST_VARS['id']))+1, $HTTP_POST_VARS['id']);
$cart->add_cart($HTTP_POST_VARS['products_id'], $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'], $HTTP_POST_VARS['id'])) + $HTTP_POST_VARS['cart_quantity'], $HTTP_POST_VARS['id']);
// <- QPBPP135
}
tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));
break;
// performed by the 'buy now' button in product listings and review page
case 'buy_now' : if (isset($HTTP_GET_VARS['products_id'])) {
if (tep_has_product_attributes($HTTP_GET_VARS['products_id'])) {
tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $HTTP_GET_VARS['products_id']));
} else {
// -> QPBPP135 : ajustement de la quantité dans le cas d'achat immediat
$pf->loadProduct((int)$HTTP_GET_VARS['products_id'], (int)$languages_id);
// $cart->add_cart($HTTP_GET_VARS['products_id'], $cart->get_quantity($HTTP_GET_VARS['products_id'])+1);
// -> OSC-87 : ajouter un champ quantité en haut du bouton ajouter
if (isset($HTTP_POST_VARS['cart_quantity']))
{
$qt_to_add = (int)$HTTP_POST_VARS['cart_quantity'];
}
else
{
$qt_to_add = 1;
}
$cart->add_cart($HTTP_GET_VARS['products_id'], $pf->adjustQty($cart->get_quantity($HTTP_GET_VARS['products_id'])+$qt_to_add));
// <- OSC-87 : ajouter un champ quantité en haut du bouton ajouter
// <- QPBPP135
}
}
tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));
break;
case 'notify' : if (tep_session_is_registered('customer_id')) {
if (isset($HTTP_GET_VARS['products_id'])) {
$notify = $HTTP_GET_VARS['products_id'];
} elseif (isset($HTTP_GET_VARS['notify'])) {
$notify = $HTTP_GET_VARS['notify'];
} elseif (isset($HTTP_POST_VARS['notify'])) {
$notify = $HTTP_POST_VARS['notify'];
} else {
tep_redirect(tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action', 'notify'))));
}
if (!is_array($notify)) $notify = array($notify);
for ($i=0, $n=sizeof($notify); $i<$n; $i++) {
$check_query = tep_db_query("select count(*) as count from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . $notify[$i] . "' and customers_id = '" . $customer_id . "'");
$check = tep_db_fetch_array($check_query);
if ($check['count'] < 1) {
tep_db_query("insert into " . TABLE_PRODUCTS_NOTIFICATIONS . " (products_id, customers_id, date_added) values ('" . $notify[$i] . "', '" . $customer_id . "', now())");
}
}
tep_redirect(tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action', 'notify'))));
} else {
$navigation->set_snapshot();
tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
}
break;
case 'notify_remove' : if (tep_session_is_registered('customer_id') && isset($HTTP_GET_VARS['products_id'])) {
$check_query = tep_db_query("select count(*) as count from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . $HTTP_GET_VARS['products_id'] . "' and customers_id = '" . $customer_id . "'");
$check = tep_db_fetch_array($check_query);
if ($check['count'] > 0) {
tep_db_query("delete from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . $HTTP_GET_VARS['products_id'] . "' and customers_id = '" . $customer_id . "'");
}
tep_redirect(tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action'))));
} else {
$navigation->set_snapshot();
tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
}
break;
case 'cust_order' : if (tep_session_is_registered('customer_id') && isset($HTTP_GET_VARS['pid'])) {
if (tep_has_product_attributes($HTTP_GET_VARS['pid'])) {
tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $HTTP_GET_VARS['pid']));
} else {
$cart->add_cart($HTTP_GET_VARS['pid'], $cart->get_quantity($HTTP_GET_VARS['pid'])+1);
}
}
tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));
break;
}
}
// include the who's online functions
require(DIR_WS_FUNCTIONS . 'whos_online.php');
tep_update_whos_online();
// include the password crypto functions
require(DIR_WS_FUNCTIONS . 'password_funcs.php');
// include validation functions (right now only email address)
require(DIR_WS_FUNCTIONS . 'validations.php');
// split-page-results
require(DIR_WS_CLASSES . 'split_page_results.php');
// infobox
require(DIR_WS_CLASSES . 'boxes.php');
// auto activate and expire banners
require(DIR_WS_FUNCTIONS . 'banner.php');
tep_activate_banners();
tep_expire_banners();
// auto expire special products
require(DIR_WS_FUNCTIONS . 'specials.php');
tep_expire_specials();
// calculate category path
/*
************************************************************************
[VTAB-TEAM-LINDER-PARTNER-1][OSC][MultiTaskDescriptions]:{
- 1/ on va effectuer différentes actions concernant le fil d'ariane
(
on va le corriger car il a un bug, et on va en conserver son avant-dernière localisation
qui sera utilisée dans un bouton VTAB spécialement conçue pour retourner en arrière (dans la catégorie parente)
)
- 2/ BUG BUGFIX
il peut arriver que lors de l'affichage d'un produit à partir du page catégorie, le système n'affiche pas le chemin
de la catégorie précédente dans le fil d'ariane mais un tout autre chemin qui correspond au chemin d'une autre catégorie
à laquelle le produit appartient également
avec les deux preg_match() on va vérifier et agir en quatres étapes:
on doit afficher un produit et .. (voir CODETAG[VTAB_FIX_BREADCRUMBAR_A])
que la page précedente affichait une catégorie (voir CODETAG[VTAB_FIX_BREADCRUMBAR_B])
alors le cPath est forcément à forcer à celui de la page précédente (voir CODETAG[VTAB_FIX_BREADCRUMBAR_C])
autrement on fait comme c'était avant (voir CODETAG[VTAB_FIX_BREADCRUMBAR_D])
- 3/ HACK TRICK
on va dans le cadre du bouton VTAB (STYLIZED)
déclarer une nouvelle variable et la valoriser à 2 pas arrière dans le tableau des chemins de catégories (dans un premier cas) (voir CODETAG[VTAB_PREPARE_VTAB_CATEGORY_BACKVIEW_A])
déclarer une nouvelle variable et la valoriser à 0 (car pas de catégories dans un autre cas) (voir CODETAG[VTAB_PREPARE_VTAB_CATEGORY_BACKVIEW_B])
déclarer une nouvelle variable qui sera un tableau associatif qui contiendra deux index: un 'nom' et un 'lien',
cela sera utilisé au sein de la fonction vtab_tep_button(), quand son argument $kind sera égal à STYLIZED_ (voir CODETAG[VTAB_PREPARE_VTAB_CATEGORY_BACKVIEW_C])
trouver à l'aide d'une requête SQL, le nom de la catégorie en accordance avec l'ID de catégorie recherché (voir CODETAG[VTAB_PREPARE_VTAB_CATEGORY_BACKVIEW_D])
lorsqu'on a trouvé une correspondance avec la requête SQL,
on valorise alors le tableau associatif pour qu'il contienne des valeurs utilisables plus tard au sein de la fonction vtab_tep_button() (voir CODETAG[VTAB_PREPARE_VTAB_CATEGORY_BACKVIEW_E])
finalement, on nullifie (pour éviter tout conflits potentiels et libérer la mémoire) les variables déclarées sauf celle qui contient le tableau associatif
les endroits qui utilisent ce système seront: /index.php ; /includes/modules/product_listing.php
}
*/
// ([1])-->[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN
// ([2])-->[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN
if ( preg_match('/-p-[0-9]+\..*$/', $_SERVER['REQUEST_URI']) && \ // [VTAB_FIX_BREADCRUMBAR_A]
preg_match('/-c-([0-9_\.]+)\..*$/',$_SERVER['HTTP_REFERER'],$referer_cPath) ) { // [VTAB_FIX_BREADCRUMBAR_B]
$cPath = $referer_cPath[1]; // [VTAB_FIX_BREADCRUMBAR_C]
}
// [VTAB_FIX_BREADCRUMBAR_D]
elseif (isset($HTTP_GET_VARS['cPath'])) {
// ([2])-->[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END
$cPath = $HTTP_GET_VARS['cPath'];
} elseif (isset($HTTP_GET_VARS['products_id']) && !isset($HTTP_GET_VARS['manufacturers_id'])) {
$cPath = tep_get_product_path($HTTP_GET_VARS['products_id']);
} else {
$cPath = '';
}
// ([3])-->[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN
if (tep_not_null($cPath)) {
$cPath_array = tep_parse_category_path($cPath);
$cPath = implode('_', $cPath_array);
$current_category_id = $cPath_array[(sizeof($cPath_array)-1)];
// [VTAB_PREPARE_VTAB_CATEGORY_BACKVIEW_A]
$VTAB_previousCategoryId = $cPath_array[(sizeof($cPath_array)-2)];
} else {
$current_category_id = 0;
// [VTAB_PREPARE_VTAB_CATEGORY_BACKVIEW_B]
$VTAB_previousCategoryId = 0;
}
// [VTAB_PREPARE_VTAB_CATEGORY_BACKVIEW_C]
$VTAB_CurrentCategoryNameAndLink = array('nom' => '', 'lien' => '');
// [VTAB_PREPARE_VTAB_CATEGORY_BACKVIEW_D]
$VTAB_categories_query = tep_db_query("select categories_name from " . TABLE_CATEGORIES_DESCRIPTION . " where categories_id = '" . (int)$VTAB_previousCategoryId . "' and language_id = '" . (int)$languages_id . "'");
if (tep_db_num_rows($VTAB_categories_query) > 0) {
$VTAB_categories = tep_db_fetch_array($VTAB_categories_query);
// [VTAB_PREPARE_VTAB_CATEGORY_BACKVIEW_E]
$VTAB_CurrentCategoryNameAndLink = array('nom' => $VTAB_categories['categories_name'], 'lien' => tep_href_link(FILENAME_DEFAULT, 'cPath=' . $VTAB_previousCategoryId));
// [VTAB_PREPARE_VTAB_CATEGORY_BACKVIEW_F]
$VTAB_previousCategoryId = null;
$VTAB_categories_query = null;
$VTAB_categories = null;
}
// ([1])-->[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END
/*
[SI-LINDER-PARTNER-2][OSC][MultiTaskDescriptions]
************************************************************************
*/
// include the breadcrumb class and start the breadcrumb trail
require(DIR_WS_CLASSES . 'breadcrumb.php');
$breadcrumb = new breadcrumb;
$breadcrumb->add(HEADER_TITLE_TOP, HTTP_SERVER);
$breadcrumb->add(HEADER_TITLE_CATALOG, tep_href_link(FILENAME_DEFAULT));
// add category names or the manufacturer name to the breadcrumb trail
if (isset($cPath_array)) {
for ($i=0, $n=sizeof($cPath_array); $i<$n; $i++) {
$categories_query = tep_db_query("select categories_name from " . TABLE_CATEGORIES_DESCRIPTION . " where categories_id = '" . (int)$cPath_array[$i] . "' and language_id = '" . (int)$languages_id . "'");
if (tep_db_num_rows($categories_query) > 0) {
$categories = tep_db_fetch_array($categories_query);
$breadcrumb->add($categories['categories_name'], tep_href_link(FILENAME_DEFAULT, 'cPath=' . implode('_', array_slice($cPath_array, 0, ($i+1)))));
} else {
break;
}
}
} elseif (isset($HTTP_GET_VARS['manufacturers_id'])) {
$manufacturers_query = tep_db_query("select manufacturers_name from " . TABLE_MANUFACTURERS . " where manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "'");
if (tep_db_num_rows($manufacturers_query)) {
$manufacturers = tep_db_fetch_array($manufacturers_query);
$breadcrumb->add($manufacturers['manufacturers_name'], tep_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $HTTP_GET_VARS['manufacturers_id']));
}
}
// add the products model to the breadcrumb trail
if (isset($HTTP_GET_VARS['products_id'])) {
$model_query = tep_db_query("select products_model from " . TABLE_PRODUCTS . " where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "'");
if (tep_db_num_rows($model_query)) {
$model = tep_db_fetch_array($model_query);
$breadcrumb->add($model['products_model'], tep_href_link(FILENAME_PRODUCT_INFO, 'cPath=' . $cPath . '&products_id=' . $HTTP_GET_VARS['products_id']));
}
}
// -> OSCTHUMB112
////
// START oscThumb
require(DIR_WS_CLASSES . 'oscthumb.php');
$oscthumb = new oscthumb;
$oscthumb->check_hash(); // Check if parameters have changed. Delete cache if yes.
// END oscThumb
// <- OSCTHUMB112
// initialize the message stack for output messages
require(DIR_WS_CLASSES . 'message_stack.php');
$messageStack = new messageStack;
// set which precautions should be checked
define('WARN_INSTALL_EXISTENCE', 'true');
define('WARN_CONFIG_WRITEABLE', 'true');
define('WARN_SESSION_DIRECTORY_NOT_WRITEABLE', 'true');
define('WARN_SESSION_AUTO_START', 'true');
define('WARN_DOWNLOAD_DIRECTORY_NOT_READABLE', 'true');
// -> HTCT262
require(DIR_WS_FUNCTIONS . 'header_tags.php');
require(DIR_WS_FUNCTIONS . 'clean_html_comments.php');
// <- HTCT262
// -> SPRP11
$sel_currency = array();
$sel_currency_query = tep_db_query("select symbol_left, symbol_right, value from " . TABLE_CURRENCIES . " where code = '" . $currency . "' limit 1");
$sel_currency = tep_db_fetch_array($sel_currency_query);
$price_range_values = array();
$price_range_array = array();
// -> VDPHP5 : compatibilité php/5
if (PHP_VERSION >= '5.3.0') {
// cf: http://www.commentcamarche.net/forum/affich-14741174-function-split-is-deprecated
$step_range = explode('[/,:]',STEP_PRICE_RANGE_VALUES);
}
else {
$step_range = split('[/,:]',STEP_PRICE_RANGE_VALUES);
}
// <- VDPHP5 : compatibilité php/5
foreach($step_range as $key => $step) {
$price_range_values[$key]['to'] = intval($step);
$price_range_values[$key+1]['from'] = intval($step);
$price_range_array[$key] = array('id' => $key, 'text'=> ($price_range_values[$key]['from'] !=0) ? FROM_RANGE_PRICE.$sel_currency['symbol_left'].$price_range_values[$key]['from'].$sel_currency['symbol_right']. TO_RANGE_PRICE .$sel_currency['symbol_left'].$price_range_values[$key]['to'].$sel_currency['symbol_right'] : UPTO_RANGE_PRICE .$price_range_values[$key]['to'].$sel_currency['symbol_right']) ;
$price_range_array[$key+1] = array('id' => $key+1, 'text'=> ($price_range_values[$key+1]['to'] !=0) ? FROM_RANGE_PRICE.$sel_currency['symbol_left'].$price_range_values[$key+1]['from'].$sel_currency['symbol_right']. TO_RANGE_PRICE .$sel_currency['symbol_left'].$price_range_values[$key+1]['to'].$sel_currency['symbol_right'] : ABOVE_RANGE_PRICE .$sel_currency['symbol_left'] .$price_range_values[$key]['to'].$sel_currency['symbol_right']) ;
}
$price_range_array[0] = array( 'id'=>0, 'text'=> SELECT_RANGE_PRICE);
// <- SPRP11
// -> 0000003: icirelais/exapaq
// Added for ICI Relais
require_once(DIR_WS_FUNCTIONS . 'icirelais_function.php');
// End added for ICI Relais
// <- 0000003
?>