diff --git a/admin-dev/tabs/AdminDiscounts.php b/admin-dev/tabs/AdminDiscounts.php
index a30abf708..6e082fc32 100644
--- a/admin-dev/tabs/AdminDiscounts.php
+++ b/admin-dev/tabs/AdminDiscounts.php
@@ -342,8 +342,8 @@ class AdminDiscounts extends AdminTab
diff --git a/classes/Cart.php b/classes/Cart.php
index 5e5ce22c1..92bd36265 100644
--- a/classes/Cart.php
+++ b/classes/Cart.php
@@ -956,8 +956,10 @@ class CartCore extends ObjectModel
}
else
{
- $price = Product::getPriceStatic((int)($product['id_product']), $withTaxes, (int)($product['id_product_attribute']), 2, NULL, false, true, $product['cart_quantity'], false, ((int)($this->id_customer) ? (int)($this->id_customer) : NULL), (int)($this->id), ((int)($this->{Configuration::get('PS_TAX_ADDRESS_TYPE')}) ? (int)($this->{Configuration::get('PS_TAX_ADDRESS_TYPE')}) : NULL));
+ $price = Product::getPriceStatic((int)($product['id_product']), true, (int)($product['id_product_attribute']), 2, NULL, false, true, $product['cart_quantity'], false, ((int)($this->id_customer) ? (int)($this->id_customer) : NULL), (int)($this->id), ((int)($this->{Configuration::get('PS_TAX_ADDRESS_TYPE')}) ? (int)($this->{Configuration::get('PS_TAX_ADDRESS_TYPE')}) : NULL));
$total_price = Tools::ps_round($price, 2) * (int)($product['cart_quantity']);
+ if (!$withTaxes)
+ $total_price = Tools::ps_round($total_price / (1 + ($product['rate'] / 100)), 2);
}
$order_total += $total_price;
}
@@ -976,7 +978,6 @@ class CartCore extends ObjectModel
}
$wrapping_fees = Tools::convertPrice(Tools::ps_round($wrapping_fees, 2), Currency::getCurrencyInstance((int)($this->id_currency)));
}
-
if ($type != Cart::ONLY_PRODUCTS)
{
$discounts = array();
@@ -1366,7 +1367,7 @@ class CartCore extends ObjectModel
if (Product::idIsOnCategoryId($product['id_product'], $categories))
{
if ((!$discountObj->cumulable_reduction AND !$product['reduction_applies'] AND !$product['on_sale']) OR $discountObj->cumulable_reduction)
- $total_cart += $product['total_wt'];
+ $total_cart += $discountObj->include_tax ? $product['total_wt'] : $product['total'];
$returnErrorNoProductCategory = false;
}
}
@@ -1411,7 +1412,6 @@ class CartCore extends ObjectModel
break;
}
}
-
return array(
'delivery' => $delivery,
'delivery_state' => State::getNameById($delivery->id_state),
diff --git a/classes/Discount.php b/classes/Discount.php
index 544278fc6..12b6db6eb 100644
--- a/classes/Discount.php
+++ b/classes/Discount.php
@@ -314,7 +314,7 @@ class DiscountCore extends ObjectModel
foreach ($products AS $product)
if (Product::idIsOnCategoryId($product['id_product'], $categories))
if ($this->cumulable_reduction OR (!$product['reduction_applies'] AND !$product['on_sale']))
- $amount += ($this->include_tax ? $product['total_wt'] : $product['total']) * $percentage;
+ $amount += ($useTax? $product['total_wt'] : $product['total']) * $percentage;
return $amount;
/* Absolute value */
@@ -325,7 +325,7 @@ class DiscountCore extends ObjectModel
return 0;
$taxDiscount = Cart::getTaxesAverageUsed((int)($cart->id));
- if (!$this->include_tax AND isset($taxDiscount) AND $taxDiscount != 1)
+ if (!$useTax AND isset($taxDiscount) AND $taxDiscount != 1)
$this->value = abs($this->value / (1 + $taxDiscount * 0.01));
// Main return
diff --git a/classes/MCached.php b/classes/MCached.php
index be3436ce0..df34a3fbc 100755
--- a/classes/MCached.php
+++ b/classes/MCached.php
@@ -156,7 +156,7 @@ class MCachedCore extends Cache
public static function addServer($ip, $port, $weight)
{
- return Db::getInstance()->Execute('INSERT INTO '._DB_PREFIX_.'memcached_servers (id_memcached_server, ip, port, weight) VALUES(\'\', \''.pSQL($ip).'\', '.(int)$port.', '.(int)$weight.')', false);
+ return Db::getInstance()->Execute('INSERT INTO '._DB_PREFIX_.'memcached_servers (ip, port, weight) VALUES(\''.pSQL($ip).'\', '.(int)$port.', '.(int)$weight.')', false);
}
public static function getMemcachedServers()
diff --git a/classes/Module.php b/classes/Module.php
index a771f7de9..335f24886 100644
--- a/classes/Module.php
+++ b/classes/Module.php
@@ -574,6 +574,26 @@ abstract class ModuleCore
$modules_dir = self::getModulesDirOnDisk();
foreach ($modules_dir AS $module)
{
+ // Memory usage checking
+ if ($memory_limit = strtoupper(@ini_get('memory_limit')))
+ {
+ if (strpos($memory_limit, 'M'))
+ {
+ $memory_limit = str_replace('M', '', $memory_limit);
+ $memory_limit *= 1024 * 1024;
+ }
+ elseif (strpos($memory_limit, 'K'))
+ {
+ $memory_limit = str_replace('K', '', $memory_limit);
+ $memory_limit *= 1024;
+ }
+
+ if ($memory_limit - memory_get_usage() <= (512 * 1024))
+ {
+ $errors[] = Tools::displayError('All modules cannot be loaded due to memory limit restriction reason, please increase your memory_limit value on your server configuration');
+ break;
+ }
+ }
$configFile = _PS_MODULE_DIR_.$module.'/config.xml';
$xml_exist = file_exists($configFile);
if ($xml_exist)
diff --git a/images.inc.php b/images.inc.php
index e9dc6a192..824e25be7 100644
--- a/images.inc.php
+++ b/images.inc.php
@@ -329,11 +329,13 @@ function returnDestImage($type, $ressource, $filename)
$flag = imagegif($ressource, $filename);
break;
case 'png':
- $flag = imagepng($ressource, $filename, (int)Configuration::get('PS_PNG_QUALITY'));
+ $quality = (Configuration::get('PS_PNG_QUALITY') === false ? 7 : Configuration::get('PS_PNG_QUALITY'));
+ $flag = imagepng($ressource, $filename, (int)$quality);
break;
case 'jpeg':
default:
- $flag = imagejpeg($ressource, $filename, (int)Configuration::get('PS_JPEG_QUALITY'));
+ $quality = (Configuration::get('PS_JPEG_QUALITY') === false ? 90 : Configuration::get('PS_JPEG_QUALITY'));
+ $flag = imagejpeg($ressource, $filename, (int)$quality);
break;
}
imagedestroy($ressource);
diff --git a/install-dev/langs/es.php b/install-dev/langs/es.php
index 54d4f2d87..dc7d5024b 100644
--- a/install-dev/langs/es.php
+++ b/install-dev/langs/es.php
@@ -135,7 +135,7 @@ $_LANG['This is not a valid image file.'] = 'Esto no es una imagen válida.';
$_LANG['Too long!'] = '¡Demasiado largo!';
$_LANG['Unfortunately,'] = 'Desgraciadamente,';
$_LANG['Update is complete!'] = '¡Actualización completa!';
-$_LANG['Upgrade: get the latest stable version!'] = 'Actualización: instale la última versión de PrestShop';
+$_LANG['Upgrade: get the latest stable version!'] = 'Actualización: instale la última versión de PrestaShop';
$_LANG['Verify now!'] = '¡Pruebe ahora!';
$_LANG['Verify system compatibility'] = 'Compatibilidad sistema';
$_LANG['WARNING: For more security, you must delete the \'install\' folder and readme files (readme_fr.txt, readme_en.txt, readme_es.txt, readme_de.txt, readme_it.txt, CHANGELOG).'] = 'ATENCION : para más seguridad, por favor suprima la carpeta \'/install\' y los archivos readme (readme_fr.txt, readme_en.txt, readme_es.txt, readme_de.txt, readme_it.txt, CHANGELOG)..';
diff --git a/install-dev/langs/fr.php b/install-dev/langs/fr.php
index c392486f3..2274bde54 100644
--- a/install-dev/langs/fr.php
+++ b/install-dev/langs/fr.php
@@ -20,7 +20,7 @@ $_LANG['Community Forum'] = 'notre forum communautaire';
$_LANG['Configure SMTP manually (advanced users only)'] = 'Configurer l\'envoi SMTP (experts uniquement)';
$_LANG['Configure your database by filling out the following fields:'] = 'Configurez votre base de données en remplissant les champs ci-dessous :';
$_LANG['Congratulation, your online shop is now ready!'] = 'Félicitations, votre boutique est installée !';
-$_LANG['Contact us'] = 'Contactez-nous !';
+$_LANG['Contact us!'] = 'Contactez-nous !';
$_LANG['Create new files and folders allowed'] = 'Création de nouveaux dossiers et fichiers autorisée';
$_LANG['Data integrity is not valided. Hack attempt?'] = 'L\'intégrité des données n\'est pas validée.';
$_LANG['Database Server is available but database is not found'] = 'Le serveur de bases de données est disponible mais la base de données n\'a pas été trouvée';
diff --git a/localization/us.xml b/localization/us.xml
index ff3b8a8ee..917fb17b0 100644
--- a/localization/us.xml
+++ b/localization/us.xml
@@ -247,14 +247,14 @@
-
+
-
+
diff --git a/modules/paypal/payment/paypalpayment.php b/modules/paypal/payment/paypalpayment.php
index be6ceddb3..005db96ea 100644
--- a/modules/paypal/payment/paypalpayment.php
+++ b/modules/paypal/payment/paypalpayment.php
@@ -71,14 +71,23 @@ class PaypalPayment extends Paypal
$discounts = (float)($cart->getOrderTotal(true, Cart::ONLY_DISCOUNTS));
if ($discounts == 0)
{
+ if ($params['cart']->id_customer)
+ {
+ $customer = new Customer((int)$params['cart']->id_customer);
+ $taxCalculationMethod = Group::getPriceDisplayMethod((int)$customer->id_default_group);
+ }
+ else
+ $taxCalculationMethod = Group::getDefaultPriceDisplayMethod();
+ $priceField = (($taxCalculationMethod == PS_TAX_EXC) ? 'price' : 'price_wt');
+
$products = $cart->getProducts();
$amt = 0;
for ($i = 0; $i < sizeof($products); $i++)
{
$request .= '&L_NAME'.$i.'='.substr(urlencode($products[$i]['name'].(isset($products[$i]['attributes'])?' - '.$products[$i]['attributes']:'').(isset($products[$i]['instructions'])?' - '.$products[$i]['instructions']:'') ), 0, 127);
- $request .= '&L_AMT'.$i.'='.urlencode($this->PayPalRound($products[$i]['price_wt']));
+ $request .= '&L_AMT'.$i.'='.urlencode($this->PayPalRound($products[$i][$priceField]));
$request .= '&L_QTY'.$i.'='.urlencode($products[$i]['cart_quantity']);
- $amt += $this->PayPalRound($products[$i]['price_wt']*$products[$i]['cart_quantity']);
+ $amt += $this->PayPalRound($products[$i][$priceField] * $products[$i]['cart_quantity']);
}
$shipping = $this->PayPalRound($cart->getOrderShippingCost($cart->id_carrier, false));
$request .= '&ITEMAMT='.urlencode($amt);
diff --git a/modules/paysafecard/payment.php b/modules/paysafecard/payment.php
index 3b1849d13..2d4081725 100644
--- a/modules/paysafecard/payment.php
+++ b/modules/paysafecard/payment.php
@@ -51,7 +51,7 @@ if ($result[0] == 0)
{
list ($rc, $errorcode, $error_message, $amount, $used_currency, $state) = $result;
- if ($state == PrepaidServicesAPI::DISPOSITION_DISPOSED || $state == PrepaidServicesAPI::DISPOSITION_DEBITED)
+ if ($state == PSCPrepaidServicesAPI::DISPOSITION_DISPOSED || $state == PSCPrepaidServicesAPI::DISPOSITION_DEBITED)
{
$state = Configuration::get('PS_OS_PAYMENT');
$message .= $module->getL('disposition_created');
diff --git a/modules/shopimporter/shopimporter.php b/modules/shopimporter/shopimporter.php
index 517d89587..a1f72d866 100644
--- a/modules/shopimporter/shopimporter.php
+++ b/modules/shopimporter/shopimporter.php
@@ -1099,7 +1099,7 @@ class shopimporter extends ImportModule
Image::deleteAllImages(_PS_PROD_IMG_DIR_);
Image::clearTmpDir();
break;
- case 'Manufacturers' :
+ case 'manufacturer' :
Db::getInstance()->Execute('TRUNCATE TABLE `'._DB_PREFIX_.'manufacturer');
Db::getInstance()->Execute('TRUNCATE TABLE `'._DB_PREFIX_.'manufacturer_lang');
foreach (scandir(_PS_MANU_IMG_DIR_) AS $d)