Completed
Push — master ( bb3077...3766b6 )
by Aimeos
03:52
created
controller/jobs/src/Controller/Jobs/Catalog/Import/Csv/Standard.php 1 patch
Spacing   +83 added lines, -83 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', 'Catalog import CSV' );
31
+		return $this->getContext()->getI18n()->dt('controller/jobs', 'Catalog 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 categories from CSV files' );
42
+		return $this->getContext()->getI18n()->dt('controller/jobs', 'Imports new and updates existing categories 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( 'media', 'text' );
57
+		$domains = array('media', 'text');
58 58
 		$mappings = $this->getDefaultMapping();
59 59
 
60 60
 
@@ -74,7 +74,7 @@  discard block
 block discarded – undo
74 74
 		 * @see controller/common/catalog/import/csv/converter
75 75
 		 * @see controller/common/catalog/import/csv/max-size
76 76
 		 */
77
-		$domains = $config->get( 'controller/common/catalog/import/csv/domains', $domains );
77
+		$domains = $config->get('controller/common/catalog/import/csv/domains', $domains);
78 78
 
79 79
 		/** controller/jobs/catalog/import/csv/domains
80 80
 		 * List of item domain names that should be retrieved along with the catalog items
@@ -94,7 +94,7 @@  discard block
 block discarded – undo
94 94
 		 * @see controller/jobs/catalog/import/csv/backup
95 95
 		 * @see controller/common/catalog/import/csv/max-size
96 96
 		 */
97
-		$domains = $config->get( 'controller/jobs/catalog/import/csv/domains', $domains );
97
+		$domains = $config->get('controller/jobs/catalog/import/csv/domains', $domains);
98 98
 
99 99
 
100 100
 		/** controller/common/catalog/import/csv/mapping
@@ -122,7 +122,7 @@  discard block
 block discarded – undo
122 122
 		 * @see controller/common/catalog/import/csv/converter
123 123
 		 * @see controller/common/catalog/import/csv/max-size
124 124
 		 */
125
-		$mappings = $config->get( 'controller/common/catalog/import/csv/mapping', $mappings );
125
+		$mappings = $config->get('controller/common/catalog/import/csv/mapping', $mappings);
126 126
 
127 127
 		/** controller/jobs/catalog/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/catalog/import/csv/backup
143 143
 		 * @see controller/common/catalog/import/csv/max-size
144 144
 		 */
145
-		$mappings = $config->get( 'controller/jobs/catalog/import/csv/mapping', $mappings );
145
+		$mappings = $config->get('controller/jobs/catalog/import/csv/mapping', $mappings);
146 146
 
147 147
 
148 148
 		/** controller/common/catalog/import/csv/converter
@@ -184,7 +184,7 @@  discard block
 block discarded – undo
184 184
 		 * @see controller/common/catalog/import/csv/mapping
185 185
 		 * @see controller/common/catalog/import/csv/max-size
186 186
 		 */
187
-		$converters = $config->get( 'controller/common/catalog/import/csv/converter', [] );
187
+		$converters = $config->get('controller/common/catalog/import/csv/converter', []);
188 188
 
189 189
 		/** controller/jobs/catalog/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/catalog/import/csv/backup
205 205
 		 * @see controller/common/catalog/import/csv/max-size
206 206
 		 */
207
-		$converters = $config->get( 'controller/jobs/catalog/import/csv/converter', $converters );
207
+		$converters = $config->get('controller/jobs/catalog/import/csv/converter', $converters);
208 208
 
209 209
 
210 210
 		/** controller/common/catalog/import/csv/max-size
@@ -224,7 +224,7 @@  discard block
 block discarded – undo
224 224
 		 * @see controller/common/catalog/import/csv/mapping
225 225
 		 * @see controller/common/catalog/import/csv/converter
226 226
 		 */
227
-		$maxcnt = (int) $config->get( 'controller/common/catalog/import/csv/max-size', 1000 );
227
+		$maxcnt = (int) $config->get('controller/common/catalog/import/csv/max-size', 1000);
228 228
 
229 229
 
230 230
 		/** controller/jobs/catalog/import/csv/skip-lines
@@ -246,7 +246,7 @@  discard block
 block discarded – undo
246 246
 		 * @see controller/jobs/catalog/import/csv/backup
247 247
 		 * @see controller/common/catalog/import/csv/max-size
248 248
 		 */
249
-		$skiplines = (int) $config->get( 'controller/jobs/catalog/import/csv/skip-lines', 0 );
249
+		$skiplines = (int) $config->get('controller/jobs/catalog/import/csv/skip-lines', 0);
250 250
 
251 251
 
252 252
 		/** controller/jobs/catalog/import/csv/strict
@@ -270,7 +270,7 @@  discard block
 block discarded – undo
270 270
 		 * @see controller/jobs/catalog/import/csv/backup
271 271
 		 * @see controller/common/catalog/import/csv/max-size
272 272
 		 */
273
-		$strict = (bool) $config->get( 'controller/jobs/catalog/import/csv/strict', true );
273
+		$strict = (bool) $config->get('controller/jobs/catalog/import/csv/strict', true);
274 274
 
275 275
 
276 276
 		/** controller/jobs/catalog/import/csv/backup
@@ -303,75 +303,75 @@  discard block
 block discarded – undo
303 303
 		 * @see controller/jobs/catalog/import/csv/strict
304 304
 		 * @see controller/common/catalog/import/csv/max-size
305 305
 		 */
306
-		$backup = $config->get( 'controller/jobs/catalog/import/csv/backup' );
306
+		$backup = $config->get('controller/jobs/catalog/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 );
323
-			$catalogMap = $this->getCatalogMap( $domains );
320
+			$codePos = $this->getCodePosition($mappings['item']);
321
+			$convlist = $this->getConverterList($converters);
322
+			$processor = $this->getProcessors($procMappings);
323
+			$catalogMap = $this->getCatalogMap($domains);
324 324
 			$container = $this->getContainer();
325 325
 			$path = $container->getName();
326 326
 
327 327
 
328
-			$msg = sprintf( 'Started catalog import from "%1$s" (%2$s)', $path, __CLASS__ );
329
-			$logger->log( $msg, \Aimeos\MW\Logger\Base::NOTICE );
328
+			$msg = sprintf('Started catalog import from "%1$s" (%2$s)', $path, __CLASS__);
329
+			$logger->log($msg, \Aimeos\MW\Logger\Base::NOTICE);
330 330
 
331
-			foreach( $container as $content )
331
+			foreach ($container as $content)
332 332
 			{
333 333
 				$name = $content->getName();
334 334
 
335
-				for( $i = 0; $i < $skiplines; $i++ ) {
335
+				for ($i = 0; $i < $skiplines; $i++) {
336 336
 					$content->next();
337 337
 				}
338 338
 
339
-				while( ( $data = $this->getData( $content, $maxcnt, $codePos ) ) !== [] )
339
+				while (($data = $this->getData($content, $maxcnt, $codePos)) !== [])
340 340
 				{
341
-					$data = $this->convertData( $convlist, $data );
342
-					$errcnt = $this->import( $catalogMap, $data, $mappings['item'], $processor, $strict );
343
-					$chunkcnt = count( $data );
341
+					$data = $this->convertData($convlist, $data);
342
+					$errcnt = $this->import($catalogMap, $data, $mappings['item'], $processor, $strict);
343
+					$chunkcnt = count($data);
344 344
 
345 345
 					$msg = 'Imported catalog lines from "%1$s": %2$d/%3$d (%4$s)';
346
-					$logger->log( sprintf( $msg, $name, $chunkcnt - $errcnt, $chunkcnt, __CLASS__ ), \Aimeos\MW\Logger\Base::NOTICE );
346
+					$logger->log(sprintf($msg, $name, $chunkcnt - $errcnt, $chunkcnt, __CLASS__), \Aimeos\MW\Logger\Base::NOTICE);
347 347
 
348 348
 					$errors += $errcnt;
349 349
 					$total += $chunkcnt;
350
-					unset( $data );
350
+					unset($data);
351 351
 				}
352 352
 			}
353 353
 
354 354
 			$container->close();
355 355
 		}
356
-		catch( \Exception $e )
356
+		catch (\Exception $e)
357 357
 		{
358
-			$logger->log( 'Catalog import error: ' . $e->getMessage() );
359
-			$logger->log( $e->getTraceAsString() );
358
+			$logger->log('Catalog import error: ' . $e->getMessage());
359
+			$logger->log($e->getTraceAsString());
360 360
 
361
-			throw new \Aimeos\Controller\Jobs\Exception( $e->getMessage() );
361
+			throw new \Aimeos\Controller\Jobs\Exception($e->getMessage());
362 362
 		}
363 363
 
364 364
 		$msg = 'Finished catalog import from "%1$s": %2$d successful, %3$s errors, %4$s total (%5$s)';
365
-		$logger->log( sprintf( $msg, $path, $total - $errors, $errors, $total, __CLASS__ ), \Aimeos\MW\Logger\Base::NOTICE );
365
+		$logger->log(sprintf($msg, $path, $total - $errors, $errors, $total, __CLASS__), \Aimeos\MW\Logger\Base::NOTICE);
366 366
 
367
-		if( $errors > 0 )
367
+		if ($errors > 0)
368 368
 		{
369
-			$msg = sprintf( 'Invalid catalog lines in "%1$s": %2$d/%3$d', $path, $errors, $total );
370
-			throw new \Aimeos\Controller\Jobs\Exception( $msg );
369
+			$msg = sprintf('Invalid catalog lines in "%1$s": %2$d/%3$d', $path, $errors, $total);
370
+			throw new \Aimeos\Controller\Jobs\Exception($msg);
371 371
 		}
372 372
 
373
-		if( !empty( $backup ) && @rename( $path, strftime( $backup ) ) === false ) {
374
-			throw new \Aimeos\Controller\Jobs\Exception( sprintf( 'Unable to move imported file' ) );
373
+		if (!empty($backup) && @rename($path, strftime($backup)) === false) {
374
+			throw new \Aimeos\Controller\Jobs\Exception(sprintf('Unable to move imported file'));
375 375
 		}
376 376
 	}
377 377
 
@@ -383,16 +383,16 @@  discard block
 block discarded – undo
383 383
 	 * @return integer Position of the "catalog.code" column
384 384
 	 * @throws \Aimeos\Controller\Jobs\Exception If no mapping for "catalog.code" is found
385 385
 	 */
386
-	protected function getCodePosition( array $mapping )
386
+	protected function getCodePosition(array $mapping)
387 387
 	{
388
-		foreach( $mapping as $pos => $key )
388
+		foreach ($mapping as $pos => $key)
389 389
 		{
390
-			if( $key === 'catalog.code' ) {
390
+			if ($key === 'catalog.code') {
391 391
 				return $pos;
392 392
 			}
393 393
 		}
394 394
 
395
-		throw new \Aimeos\Controller\Jobs\Exception( sprintf( 'No "catalog.code" column in CSV mapping found' ) );
395
+		throw new \Aimeos\Controller\Jobs\Exception(sprintf('No "catalog.code" column in CSV mapping found'));
396 396
 	}
397 397
 
398 398
 
@@ -427,7 +427,7 @@  discard block
 block discarded – undo
427 427
 		 * @see controller/jobs/catalog/import/csv/container/content
428 428
 		 * @see controller/jobs/catalog/import/csv/container/options
429 429
 		 */
430
-		$location = $config->get( 'controller/jobs/catalog/import/csv/location', '.' );
430
+		$location = $config->get('controller/jobs/catalog/import/csv/location', '.');
431 431
 
432 432
 		/** controller/jobs/catalog/import/csv/container/type
433 433
 		 * Nave of the container type to read the data from
@@ -450,7 +450,7 @@  discard block
 block discarded – undo
450 450
 		 * @see controller/jobs/catalog/import/csv/container/content
451 451
 		 * @see controller/jobs/catalog/import/csv/container/options
452 452
 		 */
453
-		$container = $config->get( 'controller/jobs/catalog/import/csv/container/type', 'Directory' );
453
+		$container = $config->get('controller/jobs/catalog/import/csv/container/type', 'Directory');
454 454
 
455 455
 		/** controller/jobs/catalog/import/csv/container/content
456 456
 		 * Name of the content type inside the container to read the data from
@@ -471,7 +471,7 @@  discard block
 block discarded – undo
471 471
 		 * @see controller/jobs/catalog/import/csv/container/type
472 472
 		 * @see controller/jobs/catalog/import/csv/container/options
473 473
 		 */
474
-		$content = $config->get( 'controller/jobs/catalog/import/csv/container/content', 'CSV' );
474
+		$content = $config->get('controller/jobs/catalog/import/csv/container/content', 'CSV');
475 475
 
476 476
 		/** controller/jobs/catalog/import/csv/container/options
477 477
 		 * List of file container options for the catalog import files
@@ -489,9 +489,9 @@  discard block
 block discarded – undo
489 489
 		 * @see controller/jobs/catalog/import/csv/container/content
490 490
 		 * @see controller/jobs/catalog/import/csv/container/type
491 491
 		 */
492
-		$options = $config->get( 'controller/jobs/catalog/import/csv/container/options', [] );
492
+		$options = $config->get('controller/jobs/catalog/import/csv/container/options', []);
493 493
 
494
-		return \Aimeos\MW\Container\Factory::getContainer( $location, $container, $content, $options );
494
+		return \Aimeos\MW\Container\Factory::getContainer($location, $container, $content, $options);
495 495
 	}
496 496
 
497 497
 
@@ -501,13 +501,13 @@  discard block
 block discarded – undo
501 501
 	 * @param array $domains List of domain names whose items should be fetched too
502 502
 	 * @return array Associative list of catalog codes as keys and items implementing \Aimeos\MShop\Catalog\Item\Iface as values
503 503
 	 */
504
-	protected function getCatalogMap( array $domains )
504
+	protected function getCatalogMap(array $domains)
505 505
 	{
506 506
 		$map = [];
507
-		$manager = \Aimeos\MShop\Factory::createManager( $this->getContext(), 'catalog' );
508
-		$search = $manager->createSearch()->setSlice( 0, 0x7fffffff );
507
+		$manager = \Aimeos\MShop\Factory::createManager($this->getContext(), 'catalog');
508
+		$search = $manager->createSearch()->setSlice(0, 0x7fffffff);
509 509
 
510
-		foreach( $manager->searchItems( $search, $domains ) as $item ) {
510
+		foreach ($manager->searchItems($search, $domains) as $item) {
511 511
 			$map[$item->getCode()] = $item;
512 512
 		}
513 513
 
@@ -523,21 +523,21 @@  discard block
 block discarded – undo
523 523
 	 * @param string $code Catalog item code of the parent category
524 524
 	 * @return string|null ID of the parent category or null for top level nodes
525 525
 	 */
526
-	protected function getParentId( array $catalogMap, array $map, $code )
526
+	protected function getParentId(array $catalogMap, array $map, $code)
527 527
 	{
528
-		if( !isset( $map['catalog.parent'] ) )
528
+		if (!isset($map['catalog.parent']))
529 529
 		{
530
-			$msg = sprintf( 'Required column "%1$s" not found for code "%2$s"', 'catalog.parent', $code );
531
-			throw new \Aimeos\Controller\Jobs\Exception( $msg );
530
+			$msg = sprintf('Required column "%1$s" not found for code "%2$s"', 'catalog.parent', $code);
531
+			throw new \Aimeos\Controller\Jobs\Exception($msg);
532 532
 		}
533 533
 
534
-		if( $map['catalog.parent'] != '' && !isset( $catalogMap[$map['catalog.parent']] ) )
534
+		if ($map['catalog.parent'] != '' && !isset($catalogMap[$map['catalog.parent']]))
535 535
 		{
536
-			$msg = sprintf( 'Parent node for code "%1$s" not found', $map['catalog.parent'] );
537
-			throw new \Aimeos\Controller\Jobs\Exception( $msg );
536
+			$msg = sprintf('Parent node for code "%1$s" not found', $map['catalog.parent']);
537
+			throw new \Aimeos\Controller\Jobs\Exception($msg);
538 538
 		}
539 539
 
540
-		return ( $map['catalog.parent'] != '' ? $catalogMap[$map['catalog.parent']]->getId() : null );
540
+		return ($map['catalog.parent'] != '' ? $catalogMap[$map['catalog.parent']]->getId() : null);
541 541
 	}
542 542
 
543 543
 
@@ -552,61 +552,61 @@  discard block
 block discarded – undo
552 552
 	 * @return integer Number of catalogs that couldn't be imported
553 553
 	 * @throws \Aimeos\Controller\Jobs\Exception
554 554
 	 */
555
-	protected function import( array &$catalogMap, array $data, array $mapping,
556
-		\Aimeos\Controller\Common\Catalog\Import\Csv\Processor\Iface $processor, $strict )
555
+	protected function import(array &$catalogMap, array $data, array $mapping,
556
+		\Aimeos\Controller\Common\Catalog\Import\Csv\Processor\Iface $processor, $strict)
557 557
 	{
558 558
 		$errors = 0;
559 559
 		$context = $this->getContext();
560
-		$manager = \Aimeos\MShop\Factory::createManager( $context, 'catalog' );
560
+		$manager = \Aimeos\MShop\Factory::createManager($context, 'catalog');
561 561
 
562
-		foreach( $data as $code => $list )
562
+		foreach ($data as $code => $list)
563 563
 		{
564 564
 			$manager->begin();
565 565
 
566 566
 			try
567 567
 			{
568
-				if( isset( $catalogMap[$code] )  ) {
568
+				if (isset($catalogMap[$code])) {
569 569
 					$catalogItem = $catalogMap[$code];
570 570
 				} else {
571 571
 					$catalogItem = $manager->createItem();
572 572
 				}
573 573
 
574
-				$map = $this->getMappedChunk( $list, $mapping );
574
+				$map = $this->getMappedChunk($list, $mapping);
575 575
 
576
-				if( isset( $map[0] ) )
576
+				if (isset($map[0]))
577 577
 				{
578 578
 					$map = $map[0]; // there can only be one chunk for the base catalog data
579
-					$parentid = $this->getParentId( $catalogMap, $map, $code );
580
-					$catalogItem->fromArray( $this->addItemDefaults( $map ) );
579
+					$parentid = $this->getParentId($catalogMap, $map, $code);
580
+					$catalogItem->fromArray($this->addItemDefaults($map));
581 581
 
582
-					if( isset( $catalogMap[$code] ) )
582
+					if (isset($catalogMap[$code]))
583 583
 					{
584
-						$manager->moveItem( $catalogItem->getId(), $catalogItem->getParentId(), $parentid );
585
-						$catalogItem = $manager->saveItem( $catalogItem );
584
+						$manager->moveItem($catalogItem->getId(), $catalogItem->getParentId(), $parentid);
585
+						$catalogItem = $manager->saveItem($catalogItem);
586 586
 					}
587 587
 					else
588 588
 					{
589
-						$catalogItem = $manager->insertItem( $catalogItem, $parentid );
589
+						$catalogItem = $manager->insertItem($catalogItem, $parentid);
590 590
 					}
591 591
 
592
-					$list = $processor->process( $catalogItem, $list );
592
+					$list = $processor->process($catalogItem, $list);
593 593
 					$catalogMap[$code] = $catalogItem;
594 594
 				}
595 595
 
596 596
 				$manager->commit();
597 597
 			}
598
-			catch( \Exception $e )
598
+			catch (\Exception $e)
599 599
 			{
600 600
 				$manager->rollback();
601 601
 
602
-				$msg = sprintf( 'Unable to import catalog with code "%1$s": %2$s', $code, $e->getMessage() );
603
-				$context->getLogger()->log( $msg );
602
+				$msg = sprintf('Unable to import catalog with code "%1$s": %2$s', $code, $e->getMessage());
603
+				$context->getLogger()->log($msg);
604 604
 
605 605
 				$errors++;
606 606
 			}
607 607
 
608
-			if( $strict && !empty( $list ) ) {
609
-				$context->getLogger()->log( 'Not imported: ' . print_r( $list, true ) );
608
+			if ($strict && !empty($list)) {
609
+				$context->getLogger()->log('Not imported: ' . print_r($list, true));
610 610
 			}
611 611
 		}
612 612
 
@@ -620,9 +620,9 @@  discard block
 block discarded – undo
620 620
 	 * @param array $list Associative list of domain item keys and their values, e.g. "catalog.status" => 1
621 621
 	 * @return array Given associative list enriched by default values if they were not already set
622 622
 	 */
623
-	protected function addItemDefaults( array $list )
623
+	protected function addItemDefaults(array $list)
624 624
 	{
625
-		if( !isset( $list['catalog.status'] ) ) {
625
+		if (!isset($list['catalog.status'])) {
626 626
 			$list['catalog.status'] = 1;
627 627
 		}
628 628
 
Please login to merge, or discard this patch.