Completed
Push — master ( 618dc8...d5c26d )
by Aimeos
02:29
created
controller/jobs/src/Controller/Jobs/Product/Import/Csv/Standard.php 1 patch
Spacing   +69 added lines, -69 removed lines patch added patch discarded remove patch
@@ -28,7 +28,7 @@  discard block
 block discarded – undo
28 28
 	 */
29 29
 	public function getName()
30 30
 	{
31
-		return $this->getContext()->getI18n()->dt( 'controller/jobs', 'Product import CSV' );
31
+		return $this->getContext()->getI18n()->dt('controller/jobs', 'Product import CSV');
32 32
 	}
33 33
 
34 34
 
@@ -39,7 +39,7 @@  discard block
 block discarded – undo
39 39
 	 */
40 40
 	public function getDescription()
41 41
 	{
42
-		return $this->getContext()->getI18n()->dt( 'controller/jobs', 'Imports new and updates existing products from CSV files' );
42
+		return $this->getContext()->getI18n()->dt('controller/jobs', 'Imports new and updates existing products from CSV files');
43 43
 	}
44 44
 
45 45
 
@@ -54,7 +54,7 @@  discard block
 block discarded – undo
54 54
 		$context = $this->getContext();
55 55
 		$config = $context->getConfig();
56 56
 		$logger = $context->getLogger();
57
-		$domains = array( 'attribute', 'media', 'price', 'product', 'text' );
57
+		$domains = array('attribute', 'media', 'price', 'product', 'text');
58 58
 		$mappings = $this->getDefaultMapping();
59 59
 
60 60
 
@@ -74,7 +74,7 @@  discard block
 block discarded – undo
74 74
 		 * @see controller/common/product/import/csv/converter
75 75
 		 * @see controller/common/product/import/csv/max-size
76 76
 		 */
77
-		$domains = $config->get( 'controller/common/product/import/csv/domains', $domains );
77
+		$domains = $config->get('controller/common/product/import/csv/domains', $domains);
78 78
 
79 79
 		/** controller/jobs/product/import/csv/domains
80 80
 		 * List of item domain names that should be retrieved along with the product items
@@ -94,7 +94,7 @@  discard block
 block discarded – undo
94 94
 		 * @see controller/jobs/product/import/csv/backup
95 95
 		 * @see controller/common/product/import/csv/max-size
96 96
 		 */
97
-		$domains = $config->get( 'controller/jobs/product/import/csv/domains', $domains );
97
+		$domains = $config->get('controller/jobs/product/import/csv/domains', $domains);
98 98
 
99 99
 
100 100
 		/** controller/common/product/import/csv/mapping
@@ -122,7 +122,7 @@  discard block
 block discarded – undo
122 122
 		 * @see controller/common/product/import/csv/converter
123 123
 		 * @see controller/common/product/import/csv/max-size
124 124
 		 */
125
-		$mappings = $config->get( 'controller/common/product/import/csv/mapping', $mappings );
125
+		$mappings = $config->get('controller/common/product/import/csv/mapping', $mappings);
126 126
 
127 127
 		/** controller/jobs/product/import/csv/mapping
128 128
 		 * List of mappings between the position in the CSV file and item keys
@@ -142,7 +142,7 @@  discard block
 block discarded – undo
142 142
 		 * @see controller/jobs/product/import/csv/backup
143 143
 		 * @see controller/common/product/import/csv/max-size
144 144
 		 */
145
-		$mappings = $config->get( 'controller/jobs/product/import/csv/mapping', $mappings );
145
+		$mappings = $config->get('controller/jobs/product/import/csv/mapping', $mappings);
146 146
 
147 147
 
148 148
 		/** controller/common/product/import/csv/converter
@@ -184,7 +184,7 @@  discard block
 block discarded – undo
184 184
 		 * @see controller/common/product/import/csv/mapping
185 185
 		 * @see controller/common/product/import/csv/max-size
186 186
 		 */
187
-		$converters = $config->get( 'controller/common/product/import/csv/converter', array() );
187
+		$converters = $config->get('controller/common/product/import/csv/converter', array());
188 188
 
189 189
 		/** controller/jobs/product/import/csv/converter
190 190
 		 * List of converter names for the values at the position in the CSV file
@@ -204,7 +204,7 @@  discard block
 block discarded – undo
204 204
 		 * @see controller/jobs/product/import/csv/backup
205 205
 		 * @see controller/common/product/import/csv/max-size
206 206
 		 */
207
-		$converters = $config->get( 'controller/jobs/product/import/csv/converter', $converters );
207
+		$converters = $config->get('controller/jobs/product/import/csv/converter', $converters);
208 208
 
209 209
 
210 210
 		/** controller/common/product/import/csv/max-size
@@ -224,7 +224,7 @@  discard block
 block discarded – undo
224 224
 		 * @see controller/common/product/import/csv/mapping
225 225
 		 * @see controller/common/product/import/csv/converter
226 226
 		 */
227
-		$maxcnt = (int) $config->get( 'controller/common/product/import/csv/max-size', 1000 );
227
+		$maxcnt = (int) $config->get('controller/common/product/import/csv/max-size', 1000);
228 228
 
229 229
 
230 230
 		/** controller/jobs/product/import/csv/skip-lines
@@ -246,7 +246,7 @@  discard block
 block discarded – undo
246 246
 		 * @see controller/jobs/product/import/csv/backup
247 247
 		 * @see controller/common/product/import/csv/max-size
248 248
 		 */
249
-		$skiplines = (int) $config->get( 'controller/jobs/product/import/csv/skip-lines', 0 );
249
+		$skiplines = (int) $config->get('controller/jobs/product/import/csv/skip-lines', 0);
250 250
 
251 251
 
252 252
 		/** controller/jobs/product/import/csv/strict
@@ -270,7 +270,7 @@  discard block
 block discarded – undo
270 270
 		 * @see controller/jobs/product/import/csv/backup
271 271
 		 * @see controller/common/product/import/csv/max-size
272 272
 		 */
273
-		$strict = (bool) $config->get( 'controller/jobs/product/import/csv/strict', true );
273
+		$strict = (bool) $config->get('controller/jobs/product/import/csv/strict', true);
274 274
 
275 275
 
276 276
 		/** controller/jobs/product/import/csv/backup
@@ -303,74 +303,74 @@  discard block
 block discarded – undo
303 303
 		 * @see controller/jobs/product/import/csv/strict
304 304
 		 * @see controller/common/product/import/csv/max-size
305 305
 		 */
306
-		$backup = $config->get( 'controller/jobs/product/import/csv/backup' );
306
+		$backup = $config->get('controller/jobs/product/import/csv/backup');
307 307
 
308 308
 
309
-		if( !isset( $mappings['item'] ) || !is_array( $mappings['item'] ) )
309
+		if (!isset($mappings['item']) || !is_array($mappings['item']))
310 310
 		{
311
-			$msg = sprintf( 'Required mapping key "%1$s" is missing or contains no array', 'item' );
312
-			throw new \Aimeos\Controller\Jobs\Exception( $msg );
311
+			$msg = sprintf('Required mapping key "%1$s" is missing or contains no array', 'item');
312
+			throw new \Aimeos\Controller\Jobs\Exception($msg);
313 313
 		}
314 314
 
315 315
 		try
316 316
 		{
317 317
 			$procMappings = $mappings;
318
-			unset( $procMappings['item'] );
318
+			unset($procMappings['item']);
319 319
 
320
-			$codePos = $this->getCodePosition( $mappings['item'] );
321
-			$convlist = $this->getConverterList( $converters );
322
-			$processor = $this->getProcessors( $procMappings );
320
+			$codePos = $this->getCodePosition($mappings['item']);
321
+			$convlist = $this->getConverterList($converters);
322
+			$processor = $this->getProcessors($procMappings);
323 323
 			$container = $this->getContainer();
324 324
 			$path = $container->getName();
325 325
 
326
-			$msg = sprintf( 'Started product import from "%1$s" (%2$s)', $path, __CLASS__ );
327
-			$logger->log( $msg, \Aimeos\MW\Logger\Base::NOTICE );
326
+			$msg = sprintf('Started product import from "%1$s" (%2$s)', $path, __CLASS__);
327
+			$logger->log($msg, \Aimeos\MW\Logger\Base::NOTICE);
328 328
 
329
-			foreach( $container as $content )
329
+			foreach ($container as $content)
330 330
 			{
331 331
 				$name = $content->getName();
332 332
 
333
-				for( $i = 0; $i < $skiplines; $i++ ) {
333
+				for ($i = 0; $i < $skiplines; $i++) {
334 334
 					$content->next();
335 335
 				}
336 336
 
337
-				while( ( $data = $this->getData( $content, $maxcnt, $codePos ) ) !== array() )
337
+				while (($data = $this->getData($content, $maxcnt, $codePos)) !== array())
338 338
 				{
339
-					$data = $this->convertData( $convlist, $data );
340
-					$products = $this->getProducts( array_keys( $data ), $domains );
341
-					$errcnt = $this->import( $products, $data, $mappings['item'], $processor, $strict );
342
-					$chunkcnt = count( $data );
339
+					$data = $this->convertData($convlist, $data);
340
+					$products = $this->getProducts(array_keys($data), $domains);
341
+					$errcnt = $this->import($products, $data, $mappings['item'], $processor, $strict);
342
+					$chunkcnt = count($data);
343 343
 
344 344
 					$msg = 'Imported product lines from "%1$s": %2$d/%3$d (%4$s)';
345
-					$logger->log( sprintf( $msg, $name, $chunkcnt - $errcnt, $chunkcnt, __CLASS__ ), \Aimeos\MW\Logger\Base::NOTICE );
345
+					$logger->log(sprintf($msg, $name, $chunkcnt - $errcnt, $chunkcnt, __CLASS__), \Aimeos\MW\Logger\Base::NOTICE);
346 346
 
347 347
 					$errors += $errcnt;
348 348
 					$total += $chunkcnt;
349
-					unset( $products, $data );
349
+					unset($products, $data);
350 350
 				}
351 351
 			}
352 352
 
353 353
 			$container->close();
354 354
 		}
355
-		catch( \Exception $e )
355
+		catch (\Exception $e)
356 356
 		{
357
-			$logger->log( 'Product import error: ' . $e->getMessage() );
358
-			$logger->log( $e->getTraceAsString() );
357
+			$logger->log('Product import error: ' . $e->getMessage());
358
+			$logger->log($e->getTraceAsString());
359 359
 
360
-			throw new \Aimeos\Controller\Jobs\Exception( $e->getMessage() );
360
+			throw new \Aimeos\Controller\Jobs\Exception($e->getMessage());
361 361
 		}
362 362
 
363 363
 		$msg = 'Finished product import from "%1$s": %2$d successful, %3$s errors, %4$s total (%5$s)';
364
-		$logger->log( sprintf( $msg, $path, $total - $errors, $errors, $total, __CLASS__ ), \Aimeos\MW\Logger\Base::NOTICE );
364
+		$logger->log(sprintf($msg, $path, $total - $errors, $errors, $total, __CLASS__), \Aimeos\MW\Logger\Base::NOTICE);
365 365
 
366
-		if( $errors > 0 )
366
+		if ($errors > 0)
367 367
 		{
368
-			$msg = sprintf( 'Invalid product lines in "%1$s": %2$d/%3$d', $path, $errors, $total );
369
-			throw new \Aimeos\Controller\Jobs\Exception( $msg );
368
+			$msg = sprintf('Invalid product lines in "%1$s": %2$d/%3$d', $path, $errors, $total);
369
+			throw new \Aimeos\Controller\Jobs\Exception($msg);
370 370
 		}
371 371
 
372
-		if( !empty( $backup ) && @rename( $path, strftime( $backup ) ) === false ) {
373
-			throw new \Aimeos\Controller\Jobs\Exception( sprintf( 'Unable to move imported file' ) );
372
+		if (!empty($backup) && @rename($path, strftime($backup)) === false) {
373
+			throw new \Aimeos\Controller\Jobs\Exception(sprintf('Unable to move imported file'));
374 374
 		}
375 375
 	}
376 376
 
@@ -382,16 +382,16 @@  discard block
 block discarded – undo
382 382
 	 * @return integer Position of the "product.code" column
383 383
 	 * @throws \Aimeos\Controller\Jobs\Exception If no mapping for "product.code" is found
384 384
 	 */
385
-	protected function getCodePosition( array $mapping )
385
+	protected function getCodePosition(array $mapping)
386 386
 	{
387
-		foreach( $mapping as $pos => $key )
387
+		foreach ($mapping as $pos => $key)
388 388
 		{
389
-			if( $key === 'product.code' ) {
389
+			if ($key === 'product.code') {
390 390
 				return $pos;
391 391
 			}
392 392
 		}
393 393
 
394
-		throw new \Aimeos\Controller\Jobs\Exception( sprintf( 'No "product.code" column in CSV mapping found' ) );
394
+		throw new \Aimeos\Controller\Jobs\Exception(sprintf('No "product.code" column in CSV mapping found'));
395 395
 	}
396 396
 
397 397
 
@@ -426,7 +426,7 @@  discard block
 block discarded – undo
426 426
 		 * @see controller/jobs/product/import/csv/container/content
427 427
 		 * @see controller/jobs/product/import/csv/container/options
428 428
 		 */
429
-		$location = $config->get( 'controller/jobs/product/import/csv/location', '.' );
429
+		$location = $config->get('controller/jobs/product/import/csv/location', '.');
430 430
 
431 431
 		/** controller/jobs/product/import/csv/container/type
432 432
 		 * Nave of the container type to read the data from
@@ -449,7 +449,7 @@  discard block
 block discarded – undo
449 449
 		 * @see controller/jobs/product/import/csv/container/content
450 450
 		 * @see controller/jobs/product/import/csv/container/options
451 451
 		 */
452
-		$container = $config->get( 'controller/jobs/product/import/csv/container/type', 'Directory' );
452
+		$container = $config->get('controller/jobs/product/import/csv/container/type', 'Directory');
453 453
 
454 454
 		/** controller/jobs/product/import/csv/container/content
455 455
 		 * Name of the content type inside the container to read the data from
@@ -470,7 +470,7 @@  discard block
 block discarded – undo
470 470
 		 * @see controller/jobs/product/import/csv/container/type
471 471
 		 * @see controller/jobs/product/import/csv/container/options
472 472
 		 */
473
-		$content = $config->get( 'controller/jobs/product/import/csv/container/content', 'CSV' );
473
+		$content = $config->get('controller/jobs/product/import/csv/container/content', 'CSV');
474 474
 
475 475
 		/** controller/jobs/product/import/csv/container/options
476 476
 		 * List of file container options for the product import files
@@ -488,9 +488,9 @@  discard block
 block discarded – undo
488 488
 		 * @see controller/jobs/product/import/csv/container/content
489 489
 		 * @see controller/jobs/product/import/csv/container/type
490 490
 		 */
491
-		$options = $config->get( 'controller/jobs/product/import/csv/container/options', array() );
491
+		$options = $config->get('controller/jobs/product/import/csv/container/options', array());
492 492
 
493
-		return \Aimeos\MW\Container\Factory::getContainer( $location, $container, $content, $options );
493
+		return \Aimeos\MW\Container\Factory::getContainer($location, $container, $content, $options);
494 494
 	}
495 495
 
496 496
 
@@ -505,54 +505,54 @@  discard block
 block discarded – undo
505 505
 	 * @return integer Number of products that couldn't be imported
506 506
 	 * @throws \Aimeos\Controller\Jobs\Exception
507 507
 	 */
508
-	protected function import( array $products, array $data, array $mapping,
509
-		\Aimeos\Controller\Common\Product\Import\Csv\Processor\Iface $processor, $strict )
508
+	protected function import(array $products, array $data, array $mapping,
509
+		\Aimeos\Controller\Common\Product\Import\Csv\Processor\Iface $processor, $strict)
510 510
 	{
511 511
 		$errors = 0;
512 512
 		$context = $this->getContext();
513
-		$manager = \Aimeos\MShop\Factory::createManager( $context, 'product' );
513
+		$manager = \Aimeos\MShop\Factory::createManager($context, 'product');
514 514
 
515
-		foreach( $data as $code => $list )
515
+		foreach ($data as $code => $list)
516 516
 		{
517 517
 			$manager->begin();
518 518
 
519 519
 			try
520 520
 			{
521
-				if( isset( $products[$code] ) ) {
521
+				if (isset($products[$code])) {
522 522
 					$product = $products[$code];
523 523
 				} else {
524 524
 					$product = $manager->createItem();
525 525
 				}
526 526
 
527
-				$map = $this->getMappedChunk( $list, $mapping );
527
+				$map = $this->getMappedChunk($list, $mapping);
528 528
 
529
-				if( isset( $map[0] ) )
529
+				if (isset($map[0]))
530 530
 				{
531 531
 					$map = $map[0]; // there can only be one chunk for the base product data
532 532
 
533
-					$typecode = ( isset( $map['product.type'] ) ? $map['product.type'] : 'default' );
534
-					$map['product.typeid'] = $this->getTypeId( 'product/type', 'product', $typecode );
533
+					$typecode = (isset($map['product.type']) ? $map['product.type'] : 'default');
534
+					$map['product.typeid'] = $this->getTypeId('product/type', 'product', $typecode);
535 535
 
536
-					$product->fromArray( $this->addItemDefaults( $map ) );
537
-					$manager->saveItem( $product );
536
+					$product->fromArray($this->addItemDefaults($map));
537
+					$manager->saveItem($product);
538 538
 
539
-					$list = $processor->process( $product, $list );
539
+					$list = $processor->process($product, $list);
540 540
 				}
541 541
 
542 542
 				$manager->commit();
543 543
 			}
544
-			catch( \Exception $e )
544
+			catch (\Exception $e)
545 545
 			{
546 546
 				$manager->rollback();
547 547
 
548
-				$msg = sprintf( 'Unable to import product with code "%1$s": %2$s', $code, $e->getMessage() );
549
-				$context->getLogger()->log( $msg );
548
+				$msg = sprintf('Unable to import product with code "%1$s": %2$s', $code, $e->getMessage());
549
+				$context->getLogger()->log($msg);
550 550
 
551 551
 				$errors++;
552 552
 			}
553 553
 
554
-			if( $strict && !empty( $list ) ) {
555
-				$context->getLogger()->log( 'Not imported: ' . print_r( $list, true ) );
554
+			if ($strict && !empty($list)) {
555
+				$context->getLogger()->log('Not imported: ' . print_r($list, true));
556 556
 			}
557 557
 		}
558 558
 
@@ -566,9 +566,9 @@  discard block
 block discarded – undo
566 566
 	 * @param array $list Associative list of domain item keys and their values, e.g. "product.status" => 1
567 567
 	 * @return array Given associative list enriched by default values if they were not already set
568 568
 	 */
569
-	protected function addItemDefaults( array $list )
569
+	protected function addItemDefaults(array $list)
570 570
 	{
571
-		if( !isset( $list['product.status'] ) ) {
571
+		if (!isset($list['product.status'])) {
572 572
 			$list['product.status'] = 1;
573 573
 		}
574 574
 
Please login to merge, or discard this patch.