Skip to content

Commit

Permalink
Merge branch 'hotfix/2.5.12'
Browse files Browse the repository at this point in the history
  • Loading branch information
aschempp committed Mar 25, 2019
2 parents ae88db5 + 0eb6bba commit 0f4a3a1
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 60 deletions.
8 changes: 8 additions & 0 deletions system/modules/isotope/docs/CHANGELOG-2.5.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
Isotope eCommerce Changelog
===========================

Version 2.5.12-stable (2019-03-25)
----------------------------------

- Fixed product list showing all product variants
- Fixed PHP warning when attribute option price is empty (#2007, #2025)
- Fixed exception on checkout if shipping address equals billing address (#1997)


Version 2.5.11-stable (2019-03-19)
----------------------------------

Expand Down
6 changes: 3 additions & 3 deletions system/modules/isotope/library/Isotope/Isotope.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ class Isotope extends \Controller
/**
* Isotope version
*/
const VERSION = '2.5.11';
const VERSION = '2.5.12';

/**
* True if the system has been initialized
Expand Down Expand Up @@ -232,8 +232,8 @@ public static function calculatePrice(
array $arrAddresses = null,
array $arrOptions = array()
) {
if (!is_numeric($fltPrice)) {
return $fltPrice;
if (empty($fltPrice) || !is_numeric($fltPrice)) {
return 0;
}

// !HOOK: calculate price
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,43 +155,41 @@ public function getDraftOrder()
array($this->id)
);

if (null !== $objOrder) {
try {
$objOrder->config_id = (int) $this->config_id;
$objOrder->store_id = (int) $this->store_id;
$objOrder->member = (int) $this->member;
if (null === $objOrder) {
$objOrder = Order::createFromCollection($this);
}

$objOrder->setShippingMethod($this->getShippingMethod());
$objOrder->setPaymentMethod($this->getPaymentMethod());
try {
$objOrder->config_id = (int) $this->config_id;
$objOrder->store_id = (int) $this->store_id;
$objOrder->member = (int) $this->member;

$objOrder->setBillingAddress($this->getBillingAddress());
$objOrder->setShippingMethod($this->getShippingMethod());
$objOrder->setPaymentMethod($this->getPaymentMethod());

if ($this->shipping_address_id) {
$objOrder->setShippingAddress($this->getShippingAddress());
} else {
$objOrder->setShippingAddress($this->getBillingAddress());
}
$objOrder->setBillingAddress($this->getBillingAddress());

if ($this->shipping_address_id) {
$objOrder->setShippingAddress($this->getShippingAddress());
} else {
$objOrder->setShippingAddress($this->getBillingAddress());
}

$objOrder->purge();
$arrItemIds = $objOrder->copyItemsFrom($this);
$objOrder->purge();
$arrItemIds = $objOrder->copyItemsFrom($this);

$objOrder->updateDatabase();
$objOrder->updateDatabase();

// HOOK: order status has been updated
if (isset($GLOBALS['ISO_HOOKS']['updateDraftOrder'])
&& is_array($GLOBALS['ISO_HOOKS']['updateDraftOrder'])
) {
foreach ($GLOBALS['ISO_HOOKS']['updateDraftOrder'] as $callback) {
\System::importStatic($callback[0])->{$callback[1]}($objOrder, $this, $arrItemIds);
}
// HOOK: order status has been updated
if (isset($GLOBALS['ISO_HOOKS']['updateDraftOrder'])
&& is_array($GLOBALS['ISO_HOOKS']['updateDraftOrder'])
) {
foreach ($GLOBALS['ISO_HOOKS']['updateDraftOrder'] as $callback) {
\System::importStatic($callback[0])->{$callback[1]}($objOrder, $this, $arrItemIds);
}
} catch (\Exception $e) {
$objOrder = null;
}
}

if (null === $objOrder) {
$objOrder = Order::createFromCollection($this);
} catch (\Exception $e) {
$objOrder = null;
}

$this->objDraftOrder = $objOrder;
Expand Down
6 changes: 4 additions & 2 deletions system/modules/isotope/library/Isotope/Module/ProductList.php
Original file line number Diff line number Diff line change
Expand Up @@ -280,12 +280,14 @@ protected function compile()
*/
protected function findProducts($arrCacheIds = null)
{
$arrColumns = array();
$arrColumns = array();
$arrCategories = $this->findCategories();
$queryBuilder = new FilterQueryBuilder(
$queryBuilder = new FilterQueryBuilder(
Isotope::getRequestCache()->getFiltersForModules($this->iso_filterModules)
);

$arrColumns[] = Product::getTable().'.pid=0';

if (1 === \count($arrCategories)) {
$arrColumns[] = "c.page_id=" . $arrCategories[0];
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,45 +30,31 @@ class ProductVariantList extends ProductList
*/
protected function findProducts($arrCacheIds = null)
{
$t = Product::getTable();
$arrColumns = array();
$arrCategories = $this->findCategories();

$arrProductIds = \Database::getInstance()
->query("
SELECT pid
FROM tl_iso_product_category
WHERE page_id IN (" . implode(',', $arrCategories) . ")
")
->fetchEach('pid')
;

$arrTypes = \Database::getInstance()
->query("SELECT id FROM tl_iso_producttype WHERE variants='1'")
->fetchEach('id')
;

if (empty($arrProductIds)) {
return array();
}

$queryBuilder = new FilterQueryBuilder(
Isotope::getRequestCache()->getFiltersForModules($this->iso_filterModules)
);

$arrColumns[] = "(
($t.id IN (" . implode(',', $arrProductIds) . ") AND $t.type NOT IN (" . implode(',', $arrTypes) . "))
OR $t.pid IN (" . implode(',', $arrProductIds) . ")
(tl_iso_product.pid=0 AND tl_iso_product.type NOT IN (SELECT id FROM tl_iso_producttype WHERE variants='1'))
OR tl_iso_product.pid>0)
)";

if (1 === \count($arrCategories)) {
$arrColumns[] = "c.page_id=" . $arrCategories[0];
} else {
$arrColumns[] = "c.page_id IN (" . implode(',', $arrCategories) . ")";
}

if (!empty($arrCacheIds) && is_array($arrCacheIds)) {
$arrColumns[] = Product::getTable() . ".id IN (" . implode(',', $arrCacheIds) . ")";
}

// Apply new/old product filter
if ($this->iso_newFilter == 'show_new') {
if ('show_new' === $this->iso_newFilter) {
$arrColumns[] = Product::getTable() . ".dateAdded>=" . Isotope::getConfig()->getNewProductLimit();
} elseif ($this->iso_newFilter == 'show_old') {
} elseif ('show_old' === $this->iso_newFilter) {
$arrColumns[] = Product::getTable() . ".dateAdded<" . Isotope::getConfig()->getNewProductLimit();
}

Expand All @@ -83,15 +69,15 @@ protected function findProducts($arrCacheIds = null)
$arrSorting = Isotope::getRequestCache()->getSortingsForModules($this->iso_filterModules);

if (empty($arrSorting) && $this->iso_listingSortField != '') {
$direction = ($this->iso_listingSortDirection == 'DESC' ? Sort::descending() : Sort::ascending());
$direction = ('DESC' === $this->iso_listingSortDirection ? Sort::descending() : Sort::ascending());
$arrSorting[$this->iso_listingSortField] = $direction;
}

$objProducts = Product::findAvailableBy(
$arrColumns,
$queryBuilder->getSqlValues(),
array(
'order' => 'c.sorting',
'order' => 1 === \count($arrCategories) ? 'c.sorting' : null,
'filters' => $queryBuilder->getFilters(),
'sorting' => $arrSorting,
)
Expand Down

0 comments on commit 0f4a3a1

Please sign in to comment.