diff --git a/config/config.inc.php b/config/config.inc.php new file mode 100644 index 00000000..8c482cf2 --- /dev/null +++ b/config/config.inc.php @@ -0,0 +1,199 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 8937 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +/* Debug only */ +@ini_set('display_errors', 'off'); +define('_PS_DEBUG_SQL_', false); + +$start_time = microtime(true); + +/* Compatibility warning */ +define('_PS_DISPLAY_COMPATIBILITY_WARNING_', false); + +/* SSL configuration */ +define('_PS_SSL_PORT_', 443); + +/* Improve PHP configuration to prevent issues */ +ini_set('upload_max_filesize', '100M'); +ini_set('default_charset', 'utf-8'); +ini_set('magic_quotes_runtime', 0); + +// correct Apache charset (except if it's too late +if (!headers_sent()) + header('Content-Type: text/html; charset=utf-8'); + +/* No settings file? goto installer...*/ +if (!file_exists(dirname(__FILE__).'/settings.inc.php')) +{ + $dir = ((is_dir($_SERVER['REQUEST_URI']) OR substr($_SERVER['REQUEST_URI'], -1) == '/') ? $_SERVER['REQUEST_URI'] : dirname($_SERVER['REQUEST_URI']).'/'); + if (!file_exists(dirname(__FILE__).'/../install')) + die('Error: \'install\' directory is missing'); + header('Location: install/'); + exit; +} +require_once(dirname(__FILE__).'/settings.inc.php'); +define('_PS_OPEN_SHOP_', 0); + +/* Include all defines */ +require_once(dirname(__FILE__).'/defines.inc.php'); +if (!defined('_PS_MAGIC_QUOTES_GPC_')) + define('_PS_MAGIC_QUOTES_GPC_', get_magic_quotes_gpc()); +if (!defined('_PS_MODULE_DIR_')) + define('_PS_MODULE_DIR_', _PS_ROOT_DIR_.'/modules/'); +if (!defined('_PS_MYSQL_REAL_ESCAPE_STRING_')) + define('_PS_MYSQL_REAL_ESCAPE_STRING_', function_exists('mysql_real_escape_string')); + +/* Autoload */ +require_once(dirname(__FILE__).'/autoload.php'); + +/* Redefine REQUEST_URI if empty (on some webservers...) */ +if (!isset($_SERVER['REQUEST_URI']) OR empty($_SERVER['REQUEST_URI'])) +{ + if (substr($_SERVER['SCRIPT_NAME'], -9) == 'index.php' && empty($_SERVER['QUERY_STRING'])) + $_SERVER['REQUEST_URI'] = dirname($_SERVER['SCRIPT_NAME']).'/'; + else + { + $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME']; + if (isset($_SERVER['QUERY_STRING']) AND !empty($_SERVER['QUERY_STRING'])) + $_SERVER['REQUEST_URI'] .= '?'.$_SERVER['QUERY_STRING']; + } +} + +/* Trying to redefine HTTP_HOST if empty (on some webservers...) */ +if (!isset($_SERVER['HTTP_HOST']) OR empty($_SERVER['HTTP_HOST'])) + $_SERVER['HTTP_HOST'] = @getenv('HTTP_HOST'); + +/* aliases */ +function p($var) { + return (Tools::p($var)); +} +function d($var) { + Tools::d($var); +} + +function ppp($var) { + return (Tools::p($var)); +} +function ddd($var) { + Tools::d($var); +} + +global $_MODULES; +$_MODULES = array(); + +/* Load all configuration keys */ +Configuration::loadConfiguration(); + +/* Load all language definitions */ +Language::loadLanguages(); + +/* Define order state */ +// DEPRECATED : these defines are going to be deleted on 1.6 version of Prestashop +// USE : Configuration::get() method in order to getting the id of order state +define('_PS_OS_CHEQUE_', Configuration::get('PS_OS_CHEQUE')); +define('_PS_OS_PAYMENT_', Configuration::get('PS_OS_PAYMENT')); +define('_PS_OS_PREPARATION_', Configuration::get('PS_OS_PREPARATION')); +define('_PS_OS_SHIPPING_', Configuration::get('PS_OS_SHIPPING')); +define('_PS_OS_DELIVERED_', Configuration::get('PS_OS_DELIVERED')); +define('_PS_OS_CANCELED_', Configuration::get('PS_OS_CANCELED')); +define('_PS_OS_REFUND_', Configuration::get('PS_OS_REFUND')); +define('_PS_OS_ERROR_', Configuration::get('PS_OS_ERROR')); +define('_PS_OS_OUTOFSTOCK_', Configuration::get('PS_OS_OUTOFSTOCK')); +define('_PS_OS_BANKWIRE_', Configuration::get('PS_OS_BANKWIRE')); +define('_PS_OS_PAYPAL_', Configuration::get('PS_OS_PAYPAL')); +define('_PS_OS_WS_PAYMENT_', Configuration::get('PS_OS_WS_PAYMENT')); + +/* It is not safe to rely on the system's timezone settings, and this would generate a PHP Strict Standards notice. */ +if (function_exists('date_default_timezone_set')) + @date_default_timezone_set(Configuration::get('PS_TIMEZONE')); + +/* Smarty */ +require_once(dirname(__FILE__).'/smarty.config.inc.php'); +/* Possible value are true, false, 'URL' + (for 'URL' append SMARTY_DEBUG as a parameter to the url) + default is false for production environment */ +define('SMARTY_DEBUG_CONSOLE', false); + + +// INTERNATIONALISATION +global $site_versions, $site_version; +$site_versions = array('com', 'es','local'/*'it'*/); +//$domain_chunks = explode('.bebeboutik.', strtolower($_SERVER['HTTP_HOST'])); +$domain_chunks = explode('bebeboutik.', strtolower($_SERVER['HTTP_HOST'])); + +if(count($domain_chunks) !== 2) { + /*$extensions = explode('.', $domain_chunks[0]); + if(in_array($extensions[1], $site_versions)) { + header('Location: http://www.bebeboutik.'.$extensions[1]); + exit; + } else {*/ + header('Location: http://www.bebeboutik.com'); + exit; + /*}*/ +} + +$cookie_version = ( +isset($_COOKIE['site_version']) && in_array(strtolower($_COOKIE['site_version']), $site_versions) + ? strtolower($_COOKIE['site_version']) + : FALSE +); + +if(!in_array($domain_chunks[0], array('www', 'm',''/*'dev'*/)) + || ($domain_chunks[1] !== 'com' && !in_array($domain_chunks[1], $site_versions)) + || ($domain_chunks[1] === 'com' && $domain_chunks[0] !== 'bo' && $cookie_version !== FALSE)) { + /* + * Security check in case of a misconfigured web server + * If the selected domain is not allowed, redirect to default site + */ + header('Location: http://' + .(in_array($domain_chunks[0], array('www', 'm', 'bo'))? $domain_chunks[0]: 'www') + .'.bebeboutik.' + .($cookie_version + ? $cookie_version + : (in_array($domain_chunks[1], $site_versions) + ? $domain_chunks[1] + : 'com' + ) + ) + .$_SERVER['REQUEST_URI'] + ); + exit; +} + +$_COOKIE['site_version'] = $domain_chunks[1]; +$_GET['isolang'] = $domain_chunks[1]; +$site_version = $domain_chunks[1]; + +if ($site_version == 'com' || $site_version == 'local') { + $site_version_front = 'fr'; +} else { + $site_version_front = $site_version; +} +if(isset($site_version)) { + global $smarty; + $smarty->assign('site_version', $site_version); +} diff --git a/modules/contactform/contactform.php b/modules/contactform/contactform.php index ae9c57de..be180d77 100644 --- a/modules/contactform/contactform.php +++ b/modules/contactform/contactform.php @@ -10,7 +10,7 @@ class Contactform extends Module { private $assets_module_dir; public function __construct() { - $this->name = 'Contactform'; + $this->name = 'contactform'; $this->tab = 'advertising_marketing'; $this->version = '1.0'; $this->author = 'Antadis'; @@ -43,11 +43,21 @@ class Contactform extends Module { `type` INT(11) NOT NULL, PRIMARY KEY (`id_contactform`) ) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8; - '); + ') +// && Db::getInstance()->Execute(' +// CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'contactform_email` ( +// `id_contactform_email` INT UNSIGNED NOT NULL AUTO_INCREMENT, +// `email` VARCHAR(255) NULL, +// PRIMARY KEY (`id_contactform_email`) +// ) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8; +// ') +; } public function uninstallDB() { - return Db::getInstance()->Execute('DROP TABLE `'._DB_PREFIX_.'contactform`;'); + return Db::getInstance()->Execute('DROP TABLE `'._DB_PREFIX_.'contactform`;') + //&& Db::getInstance()->Execute('DROP TABLE `'._DB_PREFIX_.'contactform_email`;') + ; } public function install() { @@ -64,4 +74,39 @@ class Contactform extends Module { return TRUE; } +// public function getContent() { +// +// $content = " +// {{ error }} +//
+// +// +// +// "; +// +// if ($_POST) { +// if (empty($_POST['emails'])) { +// $content = str_replace('{{ error }}', "Aucune adresse email n'a été renseignée", $content); +// return $content; +// } +// $emails = explode("\n", $_POST['emails']); +// foreach ($emails as $k => $email) { +// $email[$k] = trim($email); +// } +// $emails = array_unique($emails); +// foreach ($emails as $k => $email) { +// if (!$this->emailExistInDb($email)) { +// $content = str_replace('{{ error }}', "Existe pas", $content); +// } +// } +// } +// +// $content = str_replace('{{ error }}', "", $content); +// return $content; +// } +// +// private function emailExistInDb($email) { +// return (Db::getInstance()->executeS("SELECT COUNT(*) as count FROM `"._DB_PREFIX_."contactform_email` WHERE email = \"".pSQL($email)."\" ")[0]['count'] != 0); +// } + } diff --git a/modules/labelgenerate/AdminLabelGenerate.php b/modules/labelgenerate/AdminLabelGenerate.php index 0ce82a16..778de161 100644 --- a/modules/labelgenerate/AdminLabelGenerate.php +++ b/modules/labelgenerate/AdminLabelGenerate.php @@ -47,7 +47,7 @@ class AdminLabelGenerate extends AdminTab { } if ($quantity>0) { $ean_generate = $barcode->generateBarcode($combination['id_product'], $combination['id_product_attribute'],$product->reference); - $barcode->assocProduct($combination['id_product'], $combination['id_product_attribute'], $quantity); + $barcode->_assocProduct($combination['id_product'], $combination['id_product_attribute'], $quantity); Db::getInstance()->execute(' UPDATE `'._DB_PREFIX_.'product_attribute` @@ -71,7 +71,7 @@ class AdminLabelGenerate extends AdminTab { } if ($quantity>0) { $ean_generate = $barcode->generateBarcode($product->id, NULL, $product->reference); - $barcode->assocProduct($product->id, NULL, $quantity); + $barcode->_assocProduct($product->id, NULL, $quantity); Db::getInstance()->execute(' UPDATE `'._DB_PREFIX_.'product` @@ -84,13 +84,15 @@ class AdminLabelGenerate extends AdminTab { } if (!empty($ean_generate)) { - $barcode->printPDF(); + $barcode->_printPDF(); $this->_html .= '

Génération terminée : Télécharger le PDF

'; } else { - $this->_html .= '

Tous les produits de la vente ont déjà des EANS

'; + $barcode->_printPDF(); + $this->_html .= '

Génération terminée : Télécharger le PDF

'; + /*$this->_html .= '

Tous les produits de la vente ont déjà des EANS

'; if (glob(_PS_MODULE_DIR_.'labelgenerate/img/'.$barcode->id_sale.'/barcode.pdf')) { $this->_html .= '

Dernières étiquettes générées : Télécharger le PDF

'; - } + }*/ } } } diff --git a/modules/labelgenerate/img/3962/barcode.pdf b/modules/labelgenerate/img/3962/barcode.pdf index 4b9d2396..2e2617a3 100644 Binary files a/modules/labelgenerate/img/3962/barcode.pdf and b/modules/labelgenerate/img/3962/barcode.pdf differ diff --git a/modules/labelgenerate/img/3962/ean-125415-322.gif b/modules/labelgenerate/img/3962/ean-125415-322.gif index 1afac393..561ee2e2 100644 Binary files a/modules/labelgenerate/img/3962/ean-125415-322.gif and b/modules/labelgenerate/img/3962/ean-125415-322.gif differ diff --git a/modules/labelgenerate/img/3962/ean-125416-332.gif b/modules/labelgenerate/img/3962/ean-125416-332.gif index 4c424863..b95d2446 100644 Binary files a/modules/labelgenerate/img/3962/ean-125416-332.gif and b/modules/labelgenerate/img/3962/ean-125416-332.gif differ diff --git a/modules/labelgenerate/models/generatebarcode.php b/modules/labelgenerate/models/generatebarcode.php index d029637d..32dd3ed5 100644 --- a/modules/labelgenerate/models/generatebarcode.php +++ b/modules/labelgenerate/models/generatebarcode.php @@ -63,9 +63,17 @@ class GenerateBarcode { } public function _assocProduct($id_product, $id_product_attribute = NULL, $quantity) { - $p = new Product((int)$id_product, FALSE, $cookie->id_lang); + global $cookie; + + /*$p = new Product((int)$id_product, FALSE, $cookie->id_lang);*/ + $p = Db::getInstance()->getRow(' + SELECT pl.name + FROM `'._DB_PREFIX_.'product` p + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON pl.`id_product` = p.`id_product` + WHERE p.`id_product` = '.(int)$id_product.' + AND pl.`id_lang`='.(int)$cookie->id_lang); if ($id_product_attribute) { - $details = Product::getDetailsCombination((int)$id_product_attribute, $cookie->id_lang); + $details = Product::getDetailsCombination($id_product_attribute, $cookie->id_lang); $name_combination = ''; foreach ($details as $key_attr => $detail) { $name_combination .= $detail['attribute_name'].'-'; @@ -73,13 +81,13 @@ class GenerateBarcode { $this->products[] = array( 'quantity' => $quantity, 'key' => ($id_product.'-'.$id_product_attribute), - 'label' => ($name_combination . ' ' . $p->name) + 'label' => ($name_combination . ' ' . $p['name']) ); } else { $this->products[] = array( 'quantity' => $quantity, 'key' => $id_product.'-0', - 'label' => $p->name + 'label' => $p['name'] ); } } @@ -159,6 +167,17 @@ class GenerateBarcode { public function _printPDF() { global $cookie; + $this->products[0] = array( + 'quantity' => 30, + 'key' => "125415-322", + 'label' => "03 mois (62 cm)- Lot de 2 bodies Ri" + ) ; + $this->products[1] = array( + 'quantity' => 150, + 'key' => "125416-332", + 'label' => "03 mois (62 cm)- Ensemble grenouill" + ) ; + if (empty($this->products)) { die('Tous les produits ont déjà un EAN'); } @@ -180,53 +199,54 @@ class GenerateBarcode { */ foreach ($this->products as $k => $p) { $quantity_already_print = 0; - - // printed line - $nb_line = ceil(($p['quantity']/self::_NB_PER_LINE_)); - for ($i=1; $i <= $nb_line; $i++) { - - if($nb_per_page == self::_TOTAL_PER_PAGE_) { - $pdf->addPage(); - $nb_per_page = 0; + if ($this->products[$k]['quantity']>0){ + // printed line + $nb_line = ceil(($this->products[$k]['quantity']/self::_NB_PER_LINE_)); + for ($i=1; $i <= $nb_line; $i++) { + + if($nb_per_page == self::_TOTAL_PER_PAGE_) { + $pdf->addPage(); + $nb_per_page = 0; + } + + $quantity_to_print = self::_NB_PER_LINE_; + if ( ($quantity_already_print + self::_NB_PER_LINE_) > $this->products[$k]['quantity'] ) { + $quantity_to_print = $this->products[$k]['quantity'] - $quantity_already_print; + } + + // label + $this->_printLabel($pdf, $p['label'], $quantity_to_print); + + if ((self::_NB_PER_LINE_ - $quantity_to_print)>1 && isset($this->products[$k+1])) { + // cellule vierge + $pdf->Cell(48, 4, '', 0,0, 'C'); + + // ajout d'1 à 2 cellule du produit suivant (label) + $quantity_remaining = self::_NB_PER_LINE_ - ($quantity_to_print+1); + $this->_printLabel($pdf, $this->products[$k+1]['label'], $quantity_remaining); + + // Decrementation de la quantité dejà print sur le produit suivant + $this->products[$k+1]['quantity'] = $this->products[$k+1]['quantity'] - $quantity_remaining; + } + $pdf->Ln(4); + + // Barcode + $ean_image = $this->directory.'/ean-'.$p['key'].'.gif'; + $this->_printEAN($pdf, $ean_image, $quantity_to_print); + + if ((self::_NB_PER_LINE_ - $quantity_to_print)>1 && isset($this->products[$k+1])) { + // cellule vierge + $pdf->Cell(48, 10, '', 0,0, 'C'); + + // ajout d'1 à 2 cellule du produit suivant (codebarre) + $ean_image = $this->directory.'/ean-'.$this->products[$k+1]['key'].'.gif'; + $this->_printEAN($pdf, $ean_image, $quantity_remaining); + } + $pdf->Ln(13); + + $quantity_already_print += self::_NB_PER_LINE_; + $nb_per_page += 1; } - - $quantity_to_print = self::_NB_PER_LINE_; - if ( ($quantity_already_print + self::_NB_PER_LINE_) > $p['quantity'] ) { - $quantity_to_print = $p['quantity'] - $quantity_already_print; - } - - // label - $this->_printLabel($pdf, $p['label'], $quantity_to_print); - - if ((self::_NB_PER_LINE_ - $quantity_to_print)>1 && isset($this->products[$k+1])) { - // cellule vierge - $pdf->Cell(48, 4, '', 0,0, 'C'); - - // ajout d'1 à 2 cellule du produit suivant (label) - $quantity_remaining = self::_NB_PER_LINE_ - ($quantity_to_print+1); - $this->_printLabel($pdf, $this->products[$k+1]['label'], $quantity_remaining); - - // Decrementation de la quantité dejà print sur le produit suivant - $this->products[$k+1]['quantity'] -= $quantity_remaining; - } - $pdf->Ln(4); - - // Barcode - $ean_image = $this->directory.'/ean-'.$p['key'].'.gif'; - $this->_printEAN($pdf, $ean_image, $quantity_to_print); - - if ((self::_NB_PER_LINE_ - $quantity_to_print)>1 && isset($this->products[$k+1])) { - // cellule vierge - $pdf->Cell(48, 10, '', 0,0, 'C'); - - // ajout d'1 à 2 cellule du produit suivant (codebarre) - $ean_image = $this->directory.'/ean-'.$this->products[$k+1]['key'].'.gif'; - $this->_printEAN($pdf, $ean_image, $quantity_remaining); - } - $pdf->Ln(13); - - $quantity_already_print += self::_NB_PER_LINE_; - $nb_per_page += 1; } } diff --git a/override/classes/Product.php b/override/classes/Product.php index 2a3f08a6..14939eaa 100644 --- a/override/classes/Product.php +++ b/override/classes/Product.php @@ -74,7 +74,7 @@ class Product extends ProductCore if ($cached) { self::$producPropertiesCache[$cacheKey] = $row; - return self::$producPropertiesCache[$cacheKey]; + return self::$producPropertiesCache[$cacheKey]; } else { return $row; } @@ -90,4 +90,17 @@ class Product extends ProductCore } } + public static function getDetailsCombination($id_product_attribute, $id_lang) { + return Db::getInstance()->ExecuteS(' + SELECT pa.*, ag.`id_attribute_group`, ag.`is_color_group`, agl.`name` AS group_name, al.`name` AS attribute_name, a.`id_attribute`, pa.`unit_price_impact` + FROM `'._DB_PREFIX_.'product_attribute` pa + LEFT JOIN `'._DB_PREFIX_.'product_attribute_combination` pac ON pac.`id_product_attribute` = pa.`id_product_attribute` + LEFT JOIN `'._DB_PREFIX_.'attribute` a ON a.`id_attribute` = pac.`id_attribute` + LEFT JOIN `'._DB_PREFIX_.'attribute_group` ag ON ag.`id_attribute_group` = a.`id_attribute_group` + LEFT JOIN `'._DB_PREFIX_.'attribute_lang` al ON (a.`id_attribute` = al.`id_attribute` AND al.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'attribute_group_lang` agl ON (ag.`id_attribute_group` = agl.`id_attribute_group` AND agl.`id_lang` = '.(int)($id_lang).') + WHERE pa.`id_product_attribute` = '.(int)($id_product_attribute).' + ORDER BY pa.`id_product_attribute`'); + } + } diff --git a/themes/site_mobile/css/style.css b/themes/site_mobile/css/style.css index 99d84835..2fa5c842 100755 --- a/themes/site_mobile/css/style.css +++ b/themes/site_mobile/css/style.css @@ -4364,6 +4364,7 @@ body#index .jqibuttons span.gradient{ .module-contactform-input-group { margin: 12px 0; + margin-left: 0 !important; } .module-contactform-input-group input, .module-contactform-input-group textarea { margin-top: 3px;