Completed
Push — master ( 678f1d...178281 )
by Aimeos
06:36
created
controller/frontend/src/Controller/Frontend/Basket/Base.php 1 patch
Spacing   +150 added lines, -150 removed lines patch added patch discarded remove patch
@@ -31,52 +31,52 @@  discard block
 block discarded – undo
31 31
 	 * @param integer $quantity New product quantity
32 32
 	 * @return \Aimeos\MShop\Price\Item\Iface Price item with calculated price
33 33
 	 */
34
-	protected function calcPrice( \Aimeos\MShop\Order\Item\Base\Product\Iface $product, array $prices, $quantity )
34
+	protected function calcPrice(\Aimeos\MShop\Order\Item\Base\Product\Iface $product, array $prices, $quantity)
35 35
 	{
36 36
 		$context = $this->getContext();
37 37
 
38
-		if( empty( $prices ) )
38
+		if (empty($prices))
39 39
 		{
40
-			$manager = \Aimeos\MShop\Factory::createManager( $context, 'product' );
41
-			$prices = $manager->getItem( $product->getProductId(), array( 'price' ) )->getRefItems( 'price', 'default' );
40
+			$manager = \Aimeos\MShop\Factory::createManager($context, 'product');
41
+			$prices = $manager->getItem($product->getProductId(), array('price'))->getRefItems('price', 'default');
42 42
 		}
43 43
 
44 44
 
45
-		$priceManager = \Aimeos\MShop\Factory::createManager( $context, 'price' );
46
-		$price = $priceManager->getLowestPrice( $prices, $quantity );
45
+		$priceManager = \Aimeos\MShop\Factory::createManager($context, 'price');
46
+		$price = $priceManager->getLowestPrice($prices, $quantity);
47 47
 
48 48
 		// customers can pay what they would like to pay
49
-		if( ( $attr = $product->getAttributeItem( 'price', 'custom' ) ) !== null )
49
+		if (($attr = $product->getAttributeItem('price', 'custom')) !== null)
50 50
 		{
51 51
 			$amount = $attr->getValue();
52 52
 
53
-			if( preg_match( '/^[0-9]*(\.[0-9]+)?$/', $amount ) !== 1 || ((double) $amount) < 0.01 )
53
+			if (preg_match('/^[0-9]*(\.[0-9]+)?$/', $amount) !== 1 || ((double) $amount) < 0.01)
54 54
 			{
55
-				$msg = $context->getI18n()->dt( 'controller/frontend', 'Invalid price value "%1$s"' );
56
-				throw new \Aimeos\Controller\Frontend\Basket\Exception( sprintf( $msg, $amount ) );
55
+				$msg = $context->getI18n()->dt('controller/frontend', 'Invalid price value "%1$s"');
56
+				throw new \Aimeos\Controller\Frontend\Basket\Exception(sprintf($msg, $amount));
57 57
 			}
58 58
 
59
-			$price->setValue( $amount );
59
+			$price->setValue($amount);
60 60
 		}
61 61
 
62 62
 		$orderAttributes = $product->getAttributes();
63
-		$attrItems = $this->getAttributeItems( $orderAttributes );
63
+		$attrItems = $this->getAttributeItems($orderAttributes);
64 64
 
65 65
 		// add prices of (optional) attributes
66
-		foreach( $orderAttributes as $orderAttrItem )
66
+		foreach ($orderAttributes as $orderAttrItem)
67 67
 		{
68 68
 			$attrId = $orderAttrItem->getAttributeId();
69 69
 
70
-			if( isset( $attrItems[$attrId] )
71
-				&& ( $prices = $attrItems[$attrId]->getRefItems( 'price', 'default' ) ) !== []
70
+			if (isset($attrItems[$attrId])
71
+				&& ($prices = $attrItems[$attrId]->getRefItems('price', 'default')) !== []
72 72
 			) {
73
-				$attrPrice = $priceManager->getLowestPrice( $prices, $orderAttrItem->getQuantity() );
74
-				$price->addItem( $attrPrice, $orderAttrItem->getQuantity() );
73
+				$attrPrice = $priceManager->getLowestPrice($prices, $orderAttrItem->getQuantity());
74
+				$price->addItem($attrPrice, $orderAttrItem->getQuantity());
75 75
 			}
76 76
 		}
77 77
 
78 78
 		// remove product rebate of original price in favor to rebates granted for the order
79
-		$price->setRebate( '0.00' );
79
+		$price->setRebate('0.00');
80 80
 
81 81
 		return $price;
82 82
 	}
@@ -90,43 +90,43 @@  discard block
 block discarded – undo
90 90
 	 * @param array $refMap Associative list of list type codes as keys and lists of reference IDs as values
91 91
 	 * @throws \Aimeos\Controller\Frontend\Basket\Exception If one or more of the IDs are not associated
92 92
 	 */
93
-	protected function checkListRef( $prodId, $domain, array $refMap )
93
+	protected function checkListRef($prodId, $domain, array $refMap)
94 94
 	{
95
-		if( empty( $refMap ) ) {
95
+		if (empty($refMap)) {
96 96
 			return;
97 97
 		}
98 98
 
99 99
 		$context = $this->getContext();
100
-		$productManager = \Aimeos\MShop\Factory::createManager( $context, 'product' );
101
-		$search = $productManager->createSearch( true );
100
+		$productManager = \Aimeos\MShop\Factory::createManager($context, 'product');
101
+		$search = $productManager->createSearch(true);
102 102
 
103 103
 		$expr = array(
104
-			$search->compare( '==', 'product.id', $prodId ),
104
+			$search->compare('==', 'product.id', $prodId),
105 105
 			$search->getConditions(),
106 106
 		);
107 107
 
108
-		foreach( $refMap as $listType => $refIds )
108
+		foreach ($refMap as $listType => $refIds)
109 109
 		{
110
-			if( empty( $refIds ) ) {
110
+			if (empty($refIds)) {
111 111
 				continue;
112 112
 			}
113 113
 
114
-			foreach( $refIds as $key => $refId ) {
114
+			foreach ($refIds as $key => $refId) {
115 115
 				$refIds[$key] = (string) $refId;
116 116
 			}
117 117
 
118
-			$param = array( $domain, $this->getProductListTypeItem( $domain, $listType )->getId(), $refIds );
119
-			$cmpfunc = $search->createFunction( 'product.contains', $param );
118
+			$param = array($domain, $this->getProductListTypeItem($domain, $listType)->getId(), $refIds);
119
+			$cmpfunc = $search->createFunction('product.contains', $param);
120 120
 
121
-			$expr[] = $search->compare( '==', $cmpfunc, count( $refIds ) );
121
+			$expr[] = $search->compare('==', $cmpfunc, count($refIds));
122 122
 		}
123 123
 
124
-		$search->setConditions( $search->combine( '&&', $expr ) );
124
+		$search->setConditions($search->combine('&&', $expr));
125 125
 
126
-		if( count( $productManager->searchItems( $search, [] ) ) === 0 )
126
+		if (count($productManager->searchItems($search, [])) === 0)
127 127
 		{
128
-			$msg = $context->getI18n()->dt( 'controller/frontend', 'Invalid "%1$s" references for product with ID %2$s' );
129
-			throw new \Aimeos\Controller\Frontend\Basket\Exception( sprintf( $msg, $domain, json_encode( $prodId ) ) );
128
+			$msg = $context->getI18n()->dt('controller/frontend', 'Invalid "%1$s" references for product with ID %2$s');
129
+			throw new \Aimeos\Controller\Frontend\Basket\Exception(sprintf($msg, $domain, json_encode($prodId)));
130 130
 		}
131 131
 	}
132 132
 
@@ -137,40 +137,40 @@  discard block
 block discarded – undo
137 137
 	 * @param \Aimeos\MShop\Locale\Item\Iface $locale Locale object from current basket
138 138
 	 * @param string $type Basket type
139 139
 	 */
140
-	protected function checkLocale( \Aimeos\MShop\Locale\Item\Iface $locale, $type )
140
+	protected function checkLocale(\Aimeos\MShop\Locale\Item\Iface $locale, $type)
141 141
 	{
142 142
 		$errors = [];
143 143
 		$context = $this->getContext();
144 144
 		$session = $context->getSession();
145 145
 
146
-		$localeStr = $session->get( 'aimeos/basket/locale' );
146
+		$localeStr = $session->get('aimeos/basket/locale');
147 147
 		$localeKey = $locale->getSite()->getCode() . '|' . $locale->getLanguageId() . '|' . $locale->getCurrencyId();
148 148
 
149
-		if( $localeStr !== null && $localeStr !== $localeKey )
149
+		if ($localeStr !== null && $localeStr !== $localeKey)
150 150
 		{
151
-			$locParts = explode( '|', $localeStr );
152
-			$locSite = ( isset( $locParts[0] ) ? $locParts[0] : '' );
153
-			$locLanguage = ( isset( $locParts[1] ) ? $locParts[1] : '' );
154
-			$locCurrency = ( isset( $locParts[2] ) ? $locParts[2] : '' );
151
+			$locParts = explode('|', $localeStr);
152
+			$locSite = (isset($locParts[0]) ? $locParts[0] : '');
153
+			$locLanguage = (isset($locParts[1]) ? $locParts[1] : '');
154
+			$locCurrency = (isset($locParts[2]) ? $locParts[2] : '');
155 155
 
156
-			$localeManager = \Aimeos\MShop\Factory::createManager( $context, 'locale' );
157
-			$locale = $localeManager->bootstrap( $locSite, $locLanguage, $locCurrency, false );
156
+			$localeManager = \Aimeos\MShop\Factory::createManager($context, 'locale');
157
+			$locale = $localeManager->bootstrap($locSite, $locLanguage, $locCurrency, false);
158 158
 
159 159
 			$context = clone $context;
160
-			$context->setLocale( $locale );
160
+			$context->setLocale($locale);
161 161
 
162
-			$manager = \Aimeos\MShop\Factory::createManager( $context, 'order/base' );
163
-			$basket = $manager->getSession( $type );
162
+			$manager = \Aimeos\MShop\Factory::createManager($context, 'order/base');
163
+			$basket = $manager->getSession($type);
164 164
 
165
-			$this->copyAddresses( $basket, $errors, $localeKey );
166
-			$this->copyServices( $basket, $errors );
167
-			$this->copyProducts( $basket, $errors, $localeKey );
168
-			$this->copyCoupons( $basket, $errors, $localeKey );
165
+			$this->copyAddresses($basket, $errors, $localeKey);
166
+			$this->copyServices($basket, $errors);
167
+			$this->copyProducts($basket, $errors, $localeKey);
168
+			$this->copyCoupons($basket, $errors, $localeKey);
169 169
 
170
-			$manager->setSession( $basket, $type );
170
+			$manager->setSession($basket, $type);
171 171
 		}
172 172
 
173
-		$session->set( 'aimeos/basket/locale', $localeKey );
173
+		$session->set('aimeos/basket/locale', $localeKey);
174 174
 	}
175 175
 
176 176
 
@@ -182,22 +182,22 @@  discard block
 block discarded – undo
182 182
 	 * @param string $localeKey Unique identifier of the site, language and currency
183 183
 	 * @return array Associative list of errors occured
184 184
 	 */
185
-	protected function copyAddresses( \Aimeos\MShop\Order\Item\Base\Iface $basket, array $errors, $localeKey )
185
+	protected function copyAddresses(\Aimeos\MShop\Order\Item\Base\Iface $basket, array $errors, $localeKey)
186 186
 	{
187
-		foreach( $basket->getAddresses() as $type => $item )
187
+		foreach ($basket->getAddresses() as $type => $item)
188 188
 		{
189 189
 			try
190 190
 			{
191
-				$this->setAddress( $type, $item->toArray() );
192
-				$basket->deleteAddress( $type );
191
+				$this->setAddress($type, $item->toArray());
192
+				$basket->deleteAddress($type);
193 193
 			}
194
-			catch( \Exception $e )
194
+			catch (\Exception $e)
195 195
 			{
196 196
 				$logger = $this->getContext()->getLogger();
197 197
 				$errors['address'][$type] = $e->getMessage();
198 198
 
199 199
 				$str = 'Error migrating address with type "%1$s" in basket to locale "%2$s": %3$s';
200
-				$logger->log( sprintf( $str, $type, $localeKey, $e->getMessage() ), \Aimeos\MW\Logger\Base::INFO );
200
+				$logger->log(sprintf($str, $type, $localeKey, $e->getMessage()), \Aimeos\MW\Logger\Base::INFO);
201 201
 			}
202 202
 		}
203 203
 
@@ -213,22 +213,22 @@  discard block
 block discarded – undo
213 213
 	 * @param string $localeKey Unique identifier of the site, language and currency
214 214
 	 * @return array Associative list of errors occured
215 215
 	 */
216
-	protected function copyCoupons( \Aimeos\MShop\Order\Item\Base\Iface $basket, array $errors, $localeKey )
216
+	protected function copyCoupons(\Aimeos\MShop\Order\Item\Base\Iface $basket, array $errors, $localeKey)
217 217
 	{
218
-		foreach( $basket->getCoupons() as $code => $list )
218
+		foreach ($basket->getCoupons() as $code => $list)
219 219
 		{
220 220
 			try
221 221
 			{
222
-				$this->addCoupon( $code );
223
-				$basket->deleteCoupon( $code, true );
222
+				$this->addCoupon($code);
223
+				$basket->deleteCoupon($code, true);
224 224
 			}
225
-			catch( \Exception $e )
225
+			catch (\Exception $e)
226 226
 			{
227 227
 				$logger = $this->getContext()->getLogger();
228 228
 				$errors['coupon'][$code] = $e->getMessage();
229 229
 
230 230
 				$str = 'Error migrating coupon with code "%1$s" in basket to locale "%2$s": %3$s';
231
-				$logger->log( sprintf( $str, $code, $localeKey, $e->getMessage() ), \Aimeos\MW\Logger\Base::INFO );
231
+				$logger->log(sprintf($str, $code, $localeKey, $e->getMessage()), \Aimeos\MW\Logger\Base::INFO);
232 232
 			}
233 233
 		}
234 234
 
@@ -244,11 +244,11 @@  discard block
 block discarded – undo
244 244
 	 * @param string $localeKey Unique identifier of the site, language and currency
245 245
 	 * @return array Associative list of errors occured
246 246
 	 */
247
-	protected function copyProducts( \Aimeos\MShop\Order\Item\Base\Iface $basket, array $errors, $localeKey )
247
+	protected function copyProducts(\Aimeos\MShop\Order\Item\Base\Iface $basket, array $errors, $localeKey)
248 248
 	{
249
-		foreach( $basket->getProducts() as $pos => $product )
249
+		foreach ($basket->getProducts() as $pos => $product)
250 250
 		{
251
-			if( $product->getFlags() & \Aimeos\MShop\Order\Item\Base\Product\Base::FLAG_IMMUTABLE ) {
251
+			if ($product->getFlags() & \Aimeos\MShop\Order\Item\Base\Product\Base::FLAG_IMMUTABLE) {
252 252
 				continue;
253 253
 			}
254 254
 
@@ -256,7 +256,7 @@  discard block
 block discarded – undo
256 256
 			{
257 257
 				$attrIds = [];
258 258
 
259
-				foreach( $product->getAttributes() as $attrItem ) {
259
+				foreach ($product->getAttributes() as $attrItem) {
260 260
 					$attrIds[$attrItem->getType()][] = $attrItem->getAttributeId();
261 261
 				}
262 262
 
@@ -264,22 +264,22 @@  discard block
 block discarded – undo
264 264
 					$product->getProductId(),
265 265
 					$product->getQuantity(),
266 266
 					$product->getStockType(),
267
-					$this->getValue( $attrIds, 'variant', [] ),
268
-					$this->getValue( $attrIds, 'config', [] ),
269
-					$this->getValue( $attrIds, 'hidden', [] ),
270
-					$this->getValue( $attrIds, 'custom', [] )
267
+					$this->getValue($attrIds, 'variant', []),
268
+					$this->getValue($attrIds, 'config', []),
269
+					$this->getValue($attrIds, 'hidden', []),
270
+					$this->getValue($attrIds, 'custom', [])
271 271
 				);
272 272
 
273
-				$basket->deleteProduct( $pos );
273
+				$basket->deleteProduct($pos);
274 274
 			}
275
-			catch( \Exception $e )
275
+			catch (\Exception $e)
276 276
 			{
277 277
 				$code = $product->getProductCode();
278 278
 				$logger = $this->getContext()->getLogger();
279 279
 				$errors['product'][$pos] = $e->getMessage();
280 280
 
281 281
 				$str = 'Error migrating product with code "%1$s" in basket to locale "%2$s": %3$s';
282
-				$logger->log( sprintf( $str, $code, $localeKey, $e->getMessage() ), \Aimeos\MW\Logger\Base::INFO );
282
+				$logger->log(sprintf($str, $code, $localeKey, $e->getMessage()), \Aimeos\MW\Logger\Base::INFO);
283 283
 			}
284 284
 		}
285 285
 
@@ -294,24 +294,24 @@  discard block
 block discarded – undo
294 294
 	 * @param array $errors Associative list of previous errors
295 295
 	 * @return array Associative list of errors occured
296 296
 	 */
297
-	protected function copyServices( \Aimeos\MShop\Order\Item\Base\Iface $basket, array $errors )
297
+	protected function copyServices(\Aimeos\MShop\Order\Item\Base\Iface $basket, array $errors)
298 298
 	{
299
-		foreach( $basket->getServices() as $type => $list )
299
+		foreach ($basket->getServices() as $type => $list)
300 300
 		{
301
-			foreach( $list as $item )
301
+			foreach ($list as $item)
302 302
 			{
303 303
 				try
304 304
 				{
305 305
 					$attributes = [];
306 306
 
307
-					foreach( $item->getAttributes() as $attrItem ) {
307
+					foreach ($item->getAttributes() as $attrItem) {
308 308
 						$attributes[$attrItem->getCode()] = $attrItem->getValue();
309 309
 					}
310 310
 
311
-					$this->addService( $type, $item->getServiceId(), $attributes );
312
-					$basket->deleteService( $type );
311
+					$this->addService($type, $item->getServiceId(), $attributes);
312
+					$basket->deleteService($type);
313 313
 				}
314
-				catch( \Exception $e ) { ; } // Don't notify the user as appropriate services can be added automatically
314
+				catch (\Exception $e) {; } // Don't notify the user as appropriate services can be added automatically
315 315
 			}
316 316
 		}
317 317
 
@@ -324,21 +324,21 @@  discard block
 block discarded – undo
324 324
 	 *
325 325
 	 * @param \Aimeos\MShop\Order\Item\Base\Iface $basket Basket object
326 326
 	 */
327
-	protected function createSubscriptions( \Aimeos\MShop\Order\Item\Base\Iface $basket )
327
+	protected function createSubscriptions(\Aimeos\MShop\Order\Item\Base\Iface $basket)
328 328
 	{
329
-		$manager = \Aimeos\MShop\Factory::createManager( $this->getContext(), 'subscription' );
329
+		$manager = \Aimeos\MShop\Factory::createManager($this->getContext(), 'subscription');
330 330
 
331
-		foreach( $basket->getProducts() as $orderProduct )
331
+		foreach ($basket->getProducts() as $orderProduct)
332 332
 		{
333
-			if( ( $interval = $orderProduct->getAttribute( 'interval', 'config' ) ) !== null )
333
+			if (($interval = $orderProduct->getAttribute('interval', 'config')) !== null)
334 334
 			{
335 335
 				$item = $manager->createItem();
336
-				$item->setOrderBaseId( $basket->getId() );
337
-				$item->setOrderProductId( $orderProduct->getId() );
338
-				$item->setInterval( $interval );
339
-				$item->setStatus( 1 );
336
+				$item->setOrderBaseId($basket->getId());
337
+				$item->setOrderProductId($orderProduct->getId());
338
+				$item->setInterval($interval);
339
+				$item->setStatus(1);
340 340
 
341
-				$manager->saveItem( $item, false );
341
+				$manager->saveItem($item, false);
342 342
 			}
343 343
 		}
344 344
 	}
@@ -352,32 +352,32 @@  discard block
 block discarded – undo
352 352
 	 * @return array List of items implementing \Aimeos\MShop\Attribute\Item\Iface
353 353
 	 * @throws \Aimeos\Controller\Frontend\Basket\Exception If the actual attribute number doesn't match the expected one
354 354
 	 */
355
-	protected function getAttributes( array $attributeIds, array $domains = array( 'price', 'text' ) )
355
+	protected function getAttributes(array $attributeIds, array $domains = array('price', 'text'))
356 356
 	{
357
-		if( empty( $attributeIds ) ) {
357
+		if (empty($attributeIds)) {
358 358
 			return [];
359 359
 		}
360 360
 
361
-		$attributeManager = \Aimeos\MShop\Factory::createManager( $this->getContext(), 'attribute' );
361
+		$attributeManager = \Aimeos\MShop\Factory::createManager($this->getContext(), 'attribute');
362 362
 
363
-		$search = $attributeManager->createSearch( true );
363
+		$search = $attributeManager->createSearch(true);
364 364
 		$expr = array(
365
-			$search->compare( '==', 'attribute.id', $attributeIds ),
365
+			$search->compare('==', 'attribute.id', $attributeIds),
366 366
 			$search->getConditions(),
367 367
 		);
368
-		$search->setConditions( $search->combine( '&&', $expr ) );
369
-		$search->setSlice( 0, 0x7fffffff );
368
+		$search->setConditions($search->combine('&&', $expr));
369
+		$search->setSlice(0, 0x7fffffff);
370 370
 
371
-		$attrItems = $attributeManager->searchItems( $search, $domains );
371
+		$attrItems = $attributeManager->searchItems($search, $domains);
372 372
 
373
-		if( count( $attrItems ) !== count( $attributeIds ) )
373
+		if (count($attrItems) !== count($attributeIds))
374 374
 		{
375 375
 			$i18n = $this->getContext()->getI18n();
376
-			$expected = implode( ',', $attributeIds );
377
-			$actual = implode( ',', array_keys( $attrItems ) );
378
-			$msg = $i18n->dt( 'controller/frontend', 'Available attribute IDs "%1$s" do not match the given attribute IDs "%2$s"' );
376
+			$expected = implode(',', $attributeIds);
377
+			$actual = implode(',', array_keys($attrItems));
378
+			$msg = $i18n->dt('controller/frontend', 'Available attribute IDs "%1$s" do not match the given attribute IDs "%2$s"');
379 379
 
380
-			throw new \Aimeos\Controller\Frontend\Basket\Exception( sprintf( $msg, $actual, $expected ) );
380
+			throw new \Aimeos\Controller\Frontend\Basket\Exception(sprintf($msg, $actual, $expected));
381 381
 		}
382 382
 
383 383
 		return $attrItems;
@@ -390,31 +390,31 @@  discard block
 block discarded – undo
390 390
 	 * @param \Aimeos\MShop\Order\Item\Base\Product\Attribute\Item[] $orderAttributes List of order product attribute items
391 391
 	 * @return \Aimeos\MShop\Attribute\Item\Iface[] Associative list of attribute IDs as key and attribute items as values
392 392
 	 */
393
-	protected function getAttributeItems( array $orderAttributes )
393
+	protected function getAttributeItems(array $orderAttributes)
394 394
 	{
395
-		if( empty( $orderAttributes ) ) {
395
+		if (empty($orderAttributes)) {
396 396
 			return [];
397 397
 		}
398 398
 
399
-		$attributeManager = \Aimeos\MShop\Factory::createManager( $this->getContext(), 'attribute' );
400
-		$search = $attributeManager->createSearch( true );
399
+		$attributeManager = \Aimeos\MShop\Factory::createManager($this->getContext(), 'attribute');
400
+		$search = $attributeManager->createSearch(true);
401 401
 		$expr = [];
402 402
 
403
-		foreach( $orderAttributes as $item )
403
+		foreach ($orderAttributes as $item)
404 404
 		{
405 405
 			$tmp = array(
406
-				$search->compare( '==', 'attribute.domain', 'product' ),
407
-				$search->compare( '==', 'attribute.code', $item->getValue() ),
408
-				$search->compare( '==', 'attribute.type.domain', 'product' ),
409
-				$search->compare( '==', 'attribute.type.code', $item->getCode() ),
410
-				$search->compare( '>', 'attribute.type.status', 0 ),
406
+				$search->compare('==', 'attribute.domain', 'product'),
407
+				$search->compare('==', 'attribute.code', $item->getValue()),
408
+				$search->compare('==', 'attribute.type.domain', 'product'),
409
+				$search->compare('==', 'attribute.type.code', $item->getCode()),
410
+				$search->compare('>', 'attribute.type.status', 0),
411 411
 				$search->getConditions(),
412 412
 			);
413
-			$expr[] = $search->combine( '&&', $tmp );
413
+			$expr[] = $search->combine('&&', $tmp);
414 414
 		}
415 415
 
416
-		$search->setConditions( $search->combine( '||', $expr ) );
417
-		return $attributeManager->searchItems( $search, array( 'price' ) );
416
+		$search->setConditions($search->combine('||', $expr));
417
+		return $attributeManager->searchItems($search, array('price'));
418 418
 	}
419 419
 
420 420
 
@@ -427,24 +427,24 @@  discard block
 block discarded – undo
427 427
 	 * @param array $quantities Associative list of attribute IDs as keys and their quantities as values
428 428
 	 * @return array List of items implementing \Aimeos\MShop\Order\Item\Product\Attribute\Iface
429 429
 	 */
430
-	protected function getOrderProductAttributes( $type, array $ids, array $values = [], array $quantities = [] )
430
+	protected function getOrderProductAttributes($type, array $ids, array $values = [], array $quantities = [])
431 431
 	{
432
-		if( empty( $ids ) ) {
432
+		if (empty($ids)) {
433 433
 			return [];
434 434
 		}
435 435
 
436 436
 		$list = [];
437
-		$manager = \Aimeos\MShop\Factory::createManager( $this->getContext(), 'order/base/product/attribute' );
437
+		$manager = \Aimeos\MShop\Factory::createManager($this->getContext(), 'order/base/product/attribute');
438 438
 
439
-		foreach( $this->getAttributes( $ids ) as $id => $attrItem )
439
+		foreach ($this->getAttributes($ids) as $id => $attrItem)
440 440
 		{
441 441
 			$item = $manager->createItem();
442
-			$item->copyFrom( $attrItem );
443
-			$item->setType( $type );
444
-			$item->setQuantity( isset( $quantities[$id] ) ? $quantities[$id] : 1 );
442
+			$item->copyFrom($attrItem);
443
+			$item->setType($type);
444
+			$item->setQuantity(isset($quantities[$id]) ? $quantities[$id] : 1);
445 445
 
446
-			if( isset( $values[$id] ) ) {
447
-				$item->setValue( $values[$id] );
446
+			if (isset($values[$id])) {
447
+				$item->setValue($values[$id]);
448 448
 			}
449 449
 
450 450
 			$list[] = $item;
@@ -461,23 +461,23 @@  discard block
 block discarded – undo
461 461
 	 * @param string $code Code of the list type
462 462
 	 * @return \Aimeos\MShop\Common\Item\Type\Iface List type item
463 463
 	 */
464
-	protected function getProductListTypeItem( $domain, $code )
464
+	protected function getProductListTypeItem($domain, $code)
465 465
 	{
466 466
 		$context = $this->getContext();
467 467
 
468
-		if( empty( $this->listTypeItems ) )
468
+		if (empty($this->listTypeItems))
469 469
 		{
470
-			$manager = \Aimeos\MShop\Factory::createManager( $context, 'product/lists/type' );
470
+			$manager = \Aimeos\MShop\Factory::createManager($context, 'product/lists/type');
471 471
 
472
-			foreach( $manager->searchItems( $manager->createSearch( true ) ) as $item ) {
473
-				$this->listTypeItems[ $item->getDomain() ][ $item->getCode() ] = $item;
472
+			foreach ($manager->searchItems($manager->createSearch(true)) as $item) {
473
+				$this->listTypeItems[$item->getDomain()][$item->getCode()] = $item;
474 474
 			}
475 475
 		}
476 476
 
477
-		if( !isset( $this->listTypeItems[$domain][$code] ) )
477
+		if (!isset($this->listTypeItems[$domain][$code]))
478 478
 		{
479
-			$msg = $context->getI18n()->dt( 'controller/frontend', 'List type for domain "%1$s" and code "%2$s" not found' );
480
-			throw new \Aimeos\Controller\Frontend\Basket\Exception( sprintf( $msg, $domain, $code ) );
479
+			$msg = $context->getI18n()->dt('controller/frontend', 'List type for domain "%1$s" and code "%2$s" not found');
480
+			throw new \Aimeos\Controller\Frontend\Basket\Exception(sprintf($msg, $domain, $code));
481 481
 		}
482 482
 
483 483
 		return $this->listTypeItems[$domain][$code];
@@ -492,43 +492,43 @@  discard block
 block discarded – undo
492 492
 	 * @param array $domains Names of the domain items that should be fetched too
493 493
 	 * @return array List of products matching the given attributes
494 494
 	 */
495
-	protected function getProductVariants( \Aimeos\MShop\Product\Item\Iface $productItem, array $variantAttributeIds,
496
-			array $domains = array( 'attribute', 'media', 'price', 'text' ) )
495
+	protected function getProductVariants(\Aimeos\MShop\Product\Item\Iface $productItem, array $variantAttributeIds,
496
+			array $domains = array('attribute', 'media', 'price', 'text'))
497 497
 	{
498 498
 		$subProductIds = [];
499
-		foreach( $productItem->getRefItems( 'product', 'default', 'default' ) as $item ) {
499
+		foreach ($productItem->getRefItems('product', 'default', 'default') as $item) {
500 500
 			$subProductIds[] = $item->getId();
501 501
 		}
502 502
 
503
-		if( count( $subProductIds ) === 0 ) {
503
+		if (count($subProductIds) === 0) {
504 504
 			return [];
505 505
 		}
506 506
 
507
-		$productManager = \Aimeos\MShop\Factory::createManager( $this->getContext(), 'product' );
508
-		$search = $productManager->createSearch( true );
507
+		$productManager = \Aimeos\MShop\Factory::createManager($this->getContext(), 'product');
508
+		$search = $productManager->createSearch(true);
509 509
 
510 510
 		$expr = array(
511
-			$search->compare( '==', 'product.id', $subProductIds ),
511
+			$search->compare('==', 'product.id', $subProductIds),
512 512
 			$search->getConditions(),
513 513
 		);
514 514
 
515
-		if( count( $variantAttributeIds ) > 0 )
515
+		if (count($variantAttributeIds) > 0)
516 516
 		{
517
-			foreach( $variantAttributeIds as $key => $id ) {
517
+			foreach ($variantAttributeIds as $key => $id) {
518 518
 				$variantAttributeIds[$key] = (string) $id;
519 519
 			}
520 520
 
521
-			$listTypeItem = $this->getProductListTypeItem( 'attribute', 'variant' );
521
+			$listTypeItem = $this->getProductListTypeItem('attribute', 'variant');
522 522
 
523
-			$param = array( 'attribute', $listTypeItem->getId(), $variantAttributeIds );
524
-			$cmpfunc = $search->createFunction( 'product.contains', $param );
523
+			$param = array('attribute', $listTypeItem->getId(), $variantAttributeIds);
524
+			$cmpfunc = $search->createFunction('product.contains', $param);
525 525
 
526
-			$expr[] = $search->compare( '==', $cmpfunc, count( $variantAttributeIds ) );
526
+			$expr[] = $search->compare('==', $cmpfunc, count($variantAttributeIds));
527 527
 		}
528 528
 
529
-		$search->setConditions( $search->combine( '&&', $expr ) );
529
+		$search->setConditions($search->combine('&&', $expr));
530 530
 
531
-		return $productManager->searchItems( $search, $domains );
531
+		return $productManager->searchItems($search, $domains);
532 532
 	}
533 533
 
534 534
 
@@ -540,9 +540,9 @@  discard block
 block discarded – undo
540 540
 	 * @param mixed $default Default value if no value is available for the given name
541 541
 	 * @return mixed Value from the array or default value
542 542
 	 */
543
-	protected function getValue( array $values, $name, $default = null )
543
+	protected function getValue(array $values, $name, $default = null)
544 544
 	{
545
-		if( isset( $values[$name] ) ) {
545
+		if (isset($values[$name])) {
546 546
 			return $values[$name];
547 547
 		}
548 548
 
Please login to merge, or discard this patch.