From 8d4e35dfa7630a2ecbaa549274560faf8a4c0b4d Mon Sep 17 00:00:00 2001 From: Aimeos Date: Wed, 1 Aug 2018 15:22:50 +0200 Subject: [PATCH] Several stock level request to avoid too long URLs --- client/html/src/Client/Html/Catalog/Base.php | 30 +++++++++++++++++-- .../catalog/detail/header-standard.php | 4 ++- .../catalog/lists/items-header-standard.php | 4 ++- .../catalog/lists/promo-header-standard.php | 6 ++-- 4 files changed, 38 insertions(+), 6 deletions(-) diff --git a/client/html/src/Client/Html/Catalog/Base.php b/client/html/src/Client/Html/Catalog/Base.php index fa4ee323f..3f69e5452 100644 --- a/client/html/src/Client/Html/Catalog/Base.php +++ b/client/html/src/Client/Html/Catalog/Base.php @@ -450,6 +450,7 @@ protected function getStockUrl( \Aimeos\MW\View\Iface $view, array $products ) * @see client/html/catalog/stock/url/controller * @see client/html/catalog/stock/url/action * @see client/html/catalog/stock/url/config + * @see client/html/catalog/stock/url/max-items */ $target = $view->config( 'client/html/catalog/stock/url/target' ); @@ -466,6 +467,7 @@ protected function getStockUrl( \Aimeos\MW\View\Iface $view, array $products ) * @see client/html/catalog/stock/url/target * @see client/html/catalog/stock/url/action * @see client/html/catalog/stock/url/config + * @see client/html/catalog/stock/url/max-items */ $cntl = $view->config( 'client/html/catalog/stock/url/controller', 'catalog' ); @@ -482,6 +484,7 @@ protected function getStockUrl( \Aimeos\MW\View\Iface $view, array $products ) * @see client/html/catalog/stock/url/target * @see client/html/catalog/stock/url/controller * @see client/html/catalog/stock/url/config + * @see client/html/catalog/stock/url/max-items */ $action = $view->config( 'client/html/catalog/stock/url/action', 'stock' ); @@ -504,10 +507,28 @@ protected function getStockUrl( \Aimeos\MW\View\Iface $view, array $products ) * @see client/html/catalog/stock/url/target * @see client/html/catalog/stock/url/controller * @see client/html/catalog/stock/url/action - * @see client/html/url/config + * @see client/html/catalog/stock/url/max-items */ $config = $view->config( 'client/html/catalog/stock/url/config', [] ); + /** client/html/catalog/stock/url/max-items + * Maximum number of product stock levels per request + * + * To avoid URLs that exceed the maximum amount of characters (usually 8190), + * each request contains only up to the configured amount of product codes. + * If more product codes are available, several requests will be sent to the + * server. + * + * @param integer Maximum number of product codes per request + * @since 2018.10 + * @category Developer + * @see client/html/catalog/stock/url/target + * @see client/html/catalog/stock/url/controller + * @see client/html/catalog/stock/url/action + * @see client/html/catalog/stock/url/config + */ + $max = $view->config( 'client/html/catalog/stock/url/config', 200 ); + $codes = []; @@ -516,8 +537,13 @@ protected function getStockUrl( \Aimeos\MW\View\Iface $view, array $products ) } sort( $codes ); + $urls = []; + + while( ( $list = array_splice( $codes, -$max ) ) !== [] ) { + $urls[] = $view->url( $target, $cntl, $action, array( "s_prodcode" => $list ), [], $config ); + } - return $view->url( $target, $cntl, $action, array( "s_prodcode" => $codes ), [], $config ); + return array_reverse( $urls ); } diff --git a/client/html/templates/catalog/detail/header-standard.php b/client/html/templates/catalog/detail/header-standard.php index 6d26cfe06..d10f9c88b 100644 --- a/client/html/templates/catalog/detail/header-standard.php +++ b/client/html/templates/catalog/detail/header-standard.php @@ -57,7 +57,9 @@ detailStockUrl ) ) : ?> - + detailStockUrl as $url ) : ?> + + get( 'detailHeader' ); ?> diff --git a/client/html/templates/catalog/lists/items-header-standard.php b/client/html/templates/catalog/lists/items-header-standard.php index cbef8b81c..2a960f8f7 100644 --- a/client/html/templates/catalog/lists/items-header-standard.php +++ b/client/html/templates/catalog/lists/items-header-standard.php @@ -11,5 +11,7 @@ ?> itemsStockUrl ) ) : ?> - + promoStockUrl as $url ) : ?> + + diff --git a/client/html/templates/catalog/lists/promo-header-standard.php b/client/html/templates/catalog/lists/promo-header-standard.php index d68912ab7..bbb779032 100644 --- a/client/html/templates/catalog/lists/promo-header-standard.php +++ b/client/html/templates/catalog/lists/promo-header-standard.php @@ -11,5 +11,7 @@ ?> promoStockUrl ) ) : ?> - - + promoStockUrl as $url ) : ?> + + +