Completed
Push — 19.x ( a1484a...46ecd2 )
by Tim
06:08
created

loadEavAttributeOptionValueByAttributeCodeAndStoreIdAndValue()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 0
cts 4
cp 0
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 3
crap 2
1
<?php
2
3
/**
4
 * TechDivision\Import\Product\Services\ProductBunchProcessor
5
 *
6
 * NOTICE OF LICENSE
7
 *
8
 * This source file is subject to the Open Software License (OSL 3.0)
9
 * that is available through the world-wide-web at this URL:
10
 * http://opensource.org/licenses/osl-3.0.php
11
 *
12
 * PHP version 5
13
 *
14
 * @author    Tim Wagner <[email protected]>
15
 * @copyright 2016 TechDivision GmbH <[email protected]>
16
 * @license   http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
17
 * @link      https://github.com/techdivision/import-product
18
 * @link      http://www.techdivision.com
19
 */
20
21
namespace TechDivision\Import\Product\Services;
22
23
use TechDivision\Import\Actions\ActionInterface;
24
use TechDivision\Import\Connection\ConnectionInterface;
25
use TechDivision\Import\Repositories\EavAttributeRepositoryInterface;
26
use TechDivision\Import\Repositories\EavEntityTypeRepositoryInterface;
27
use TechDivision\Import\Repositories\EavAttributeOptionValueRepositoryInterface;
28
use TechDivision\Import\Product\Utils\CacheKeys;
29
use TechDivision\Import\Product\Repositories\ProductRepositoryInterface;
30
use TechDivision\Import\Product\Repositories\StockItemRepositoryInterface;
31
use TechDivision\Import\Product\Repositories\ProductIntRepositoryInterface;
32
use TechDivision\Import\Product\Repositories\ProductTextRepositoryInterface;
33
use TechDivision\Import\Product\Assemblers\ProductAttributeAssemblerInterface;
34
use TechDivision\Import\Product\Repositories\ProductDecimalRepositoryInterface;
35
use TechDivision\Import\Product\Repositories\ProductWebsiteRepositoryInterface;
36
use TechDivision\Import\Product\Repositories\ProductDatetimeRepositoryInterface;
37
use TechDivision\Import\Product\Repositories\ProductVarcharRepositoryInterface;
38
use TechDivision\Import\Product\Repositories\CategoryProductRepositoryInterface;
39
40
/**
41
 * The product bunch processor implementation.
42
 *
43
 * @author    Tim Wagner <[email protected]>
44
 * @copyright 2016 TechDivision GmbH <[email protected]>
45
 * @license   http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
46
 * @link      https://github.com/techdivision/import-product
47
 * @link      http://www.techdivision.com
48
 */
49
class ProductBunchProcessor implements ProductBunchProcessorInterface
0 ignored issues
show
Bug introduced by
There is one abstract method loadEavAttributeOptionVa...eCodeAndStoreIdAndValue in this class; you could implement it, or declare this class as abstract.
Loading history...
50
{
51
52
    /**
53
     * A PDO connection initialized with the values from the Doctrine EntityManager.
54
     *
55
     * @var \TechDivision\Import\Connection\ConnectionInterface
56
     */
57
    protected $connection;
58
59
    /**
60
     * The repository to access EAV attribute option values.
61
     *
62
     * @var \TechDivision\Import\Repositories\EavAttributeOptionValueRepositoryInterface
63
     */
64
    protected $eavAttributeOptionValueRepository;
65
66
    /**
67
     * The repository to access EAV attributes.
68
     *
69
     * @var \TechDivision\Import\Repositories\EavAttributeRepositoryInterface
70
     */
71
    protected $eavAttributeRepository;
72
73
    /**
74
     * The action for product CRUD methods.
75
     *
76
     * @var \TechDivision\Import\Actions\ActionInterface
77
     */
78
    protected $productAction;
79
80
    /**
81
     * The action for product varchar attribute CRUD methods.
82
     *
83
     * @var \TechDivision\Import\Actions\ActionInterface
84
     */
85
    protected $productVarcharAction;
86
87
    /**
88
     * The action for product text attribute CRUD methods.
89
     *
90
     * @var \TechDivision\Import\Actions\ActionInterface
91
     */
92
    protected $productTextAction;
93
94
    /**
95
     * The action for product int attribute CRUD methods.
96
     *
97
     * @var \TechDivision\Import\Actions\ActionInterface
98
     */
99
    protected $productIntAction;
100
101
    /**
102
     * The action for product decimal attribute CRUD methods.
103
     *
104
     * @var \TechDivision\Import\Actions\ActionInterface
105
     */
106
    protected $productDecimalAction;
107
108
    /**
109
     * The action for product datetime attribute CRUD methods.
110
     *
111
     * @var \TechDivision\Import\Actions\ActionInterface
112
     */
113
    protected $productDatetimeAction;
114
115
    /**
116
     * The action for product website CRUD methods.
117
     *
118
     * @var \TechDivision\Import\Actions\ActionInterface
119
     */
120
    protected $productWebsiteAction;
121
122
    /**
123
     * The action for category product relation CRUD methods.
124
     *
125
     * @var \TechDivision\Import\Actions\ActionInterface
126
     */
127
    protected $categoryProductAction;
128
129
    /**
130
     * The action for stock item CRUD methods.
131
     *
132
     * @var \TechDivision\Import\Actions\ActionInterface
133
     */
134
    protected $stockItemAction;
135
136
    /**
137
     * The action for URL rewrite CRUD methods.
138
     *
139
     * @var \TechDivision\Import\Actions\ActionInterface
140
     */
141
    protected $urlRewriteAction;
142
143
    /**
144
     * The repository to load the products with.
145
     *
146
     * @var \TechDivision\Import\Product\Repositories\ProductRepositoryInterface
147
     */
148
    protected $productRepository;
149
150
    /**
151
     * The repository to load the product website relations with.
152
     *
153
     * @var \TechDivision\Import\Product\Repositories\ProductWebsiteRepositoryInterface
154
     */
155
    protected $productWebsiteRepository;
156
157
    /**
158
     * The repository to load the product datetime attribute with.
159
     *
160
     * @var \TechDivision\Import\Product\Repositories\ProductDatetimeRepositoryInterface
161
     */
162
    protected $productDatetimeRepository;
163
164
    /**
165
     * The repository to load the product decimal attribute with.
166
     *
167
     * @var \TechDivision\Import\Product\Repositories\ProductDecimalRepositoryInterface
168
     */
169
    protected $productDecimalRepository;
170
171
    /**
172
     * The repository to load the product integer attribute with.
173
     *
174
     * @var \TechDivision\Import\Product\Repositories\ProductIntRepositoryInterface
175
     */
176
    protected $productIntRepository;
177
178
    /**
179
     * The repository to load the product text attribute with.
180
     *
181
     * @var \TechDivision\Import\Product\Repositories\ProductTextRepositoryInterface
182
     */
183
    protected $productTextRepository;
184
185
    /**
186
     * The repository to load the product varchar attribute with.
187
     *
188
     * @var \TechDivision\Import\Product\Repositories\ProductVarcharRepositoryInterface
189
     */
190
    protected $productVarcharRepository;
191
192
    /**
193
     * The repository to load the category product relations with.
194
     *
195
     * @var \TechDivision\Import\Product\Repositories\CategoryProductRepositoryInterface
196
     */
197
    protected $categoryProductRepository;
198
199
    /**
200
     * The repository to load the stock item with.
201
     *
202
     * @var \TechDivision\Import\Product\Repositories\StockItemRepositoryInterface
203
     */
204
    protected $stockItemRepository;
205
206
    /**
207
     * The assembler to load the product attributes with.
208
     *
209
     * @var \TechDivision\Import\Product\Assemblers\ProductAttributeAssemblerInterface
210
     */
211
    protected $productAttributeAssembler;
212
213
    /**
214
     * Initialize the processor with the necessary assembler and repository instances.
215
     *
216
     * @param \TechDivision\Import\Connection\ConnectionInterface                          $connection                        The connection to use
217
     * @param \TechDivision\Import\Product\Repositories\ProductRepositoryInterface         $productRepository                 The product repository to use
218
     * @param \TechDivision\Import\Product\Repositories\ProductWebsiteRepositoryInterface  $productWebsiteRepository          The product website repository to use
219
     * @param \TechDivision\Import\Product\Repositories\ProductDatetimeRepositoryInterface $productDatetimeRepository         The product datetime repository to use
220
     * @param \TechDivision\Import\Product\Repositories\ProductDecimalRepositoryInterface  $productDecimalRepository          The product decimal repository to use
221
     * @param \TechDivision\Import\Product\Repositories\ProductIntRepositoryInterface      $productIntRepository              The product integer repository to use
222
     * @param \TechDivision\Import\Product\Repositories\ProductTextRepositoryInterface     $productTextRepository             The product text repository to use
223
     * @param \TechDivision\Import\Product\Repositories\ProductVarcharRepositoryInterface  $productVarcharRepository          The product varchar repository to use
224
     * @param \TechDivision\Import\Product\Repositories\CategoryProductRepositoryInterface $categoryProductRepository         The category product repository to use
225
     * @param \TechDivision\Import\Product\Repositories\StockItemRepositoryInterface       $stockItemRepository               The stock item repository to use
226
     * @param \TechDivision\Import\Repositories\EavAttributeOptionValueRepositoryInterface $eavAttributeOptionValueRepository The EAV attribute option value repository to use
227
     * @param \TechDivision\Import\Repositories\EavAttributeRepositoryInterface            $eavAttributeRepository            The EAV attribute repository to use
228
     * @param \TechDivision\Import\Repositories\EavEntityTypeRepositoryInterface           $eavEntityTypeRepository           The EAV entity type repository to use
229
     * @param \TechDivision\Import\Actions\ActionInterface                                 $categoryProductAction             The category product action to use
230
     * @param \TechDivision\Import\Actions\ActionInterface                                 $productDatetimeAction             The product datetime action to use
231
     * @param \TechDivision\Import\Actions\ActionInterface                                 $productDecimalAction              The product decimal action to use
232
     * @param \TechDivision\Import\Actions\ActionInterface                                 $productIntAction                  The product integer action to use
233
     * @param \TechDivision\Import\Actions\ActionInterface                                 $productAction                     The product action to use
234
     * @param \TechDivision\Import\Actions\ActionInterface                                 $productTextAction                 The product text action to use
235
     * @param \TechDivision\Import\Actions\ActionInterface                                 $productVarcharAction              The product varchar action to use
236
     * @param \TechDivision\Import\Actions\ActionInterface                                 $productWebsiteAction              The product website action to use
237
     * @param \TechDivision\Import\Actions\ActionInterface                                 $stockItemAction                   The stock item action to use
238
     * @param \TechDivision\Import\Actions\ActionInterface                                 $urlRewriteAction                  The URL rewrite action to use
239
     * @param \TechDivision\Import\Product\Assemblers\ProductAttributeAssemblerInterface   $productAttributeAssembler         The assembler to load the product attributes with
240
     */
241
    public function __construct(
242
        ConnectionInterface $connection,
243
        ProductRepositoryInterface $productRepository,
244
        ProductWebsiteRepositoryInterface $productWebsiteRepository,
245
        ProductDatetimeRepositoryInterface $productDatetimeRepository,
246
        ProductDecimalRepositoryInterface $productDecimalRepository,
247
        ProductIntRepositoryInterface $productIntRepository,
248
        ProductTextRepositoryInterface $productTextRepository,
249
        ProductVarcharRepositoryInterface $productVarcharRepository,
250
        CategoryProductRepositoryInterface $categoryProductRepository,
251
        StockItemRepositoryInterface $stockItemRepository,
252
        EavAttributeOptionValueRepositoryInterface $eavAttributeOptionValueRepository,
253
        EavAttributeRepositoryInterface $eavAttributeRepository,
254
        EavEntityTypeRepositoryInterface $eavEntityTypeRepository,
255
        ActionInterface $categoryProductAction,
256
        ActionInterface $productDatetimeAction,
257
        ActionInterface $productDecimalAction,
258
        ActionInterface $productIntAction,
259
        ActionInterface $productAction,
260
        ActionInterface $productTextAction,
261
        ActionInterface $productVarcharAction,
262
        ActionInterface $productWebsiteAction,
263
        ActionInterface $stockItemAction,
264
        ActionInterface $urlRewriteAction,
265
        ProductAttributeAssemblerInterface $productAttributeAssembler
266
    ) {
267
        $this->setConnection($connection);
268
        $this->setProductRepository($productRepository);
269
        $this->setProductWebsiteRepository($productWebsiteRepository);
270
        $this->setProductDatetimeRepository($productDatetimeRepository);
271
        $this->setProductDecimalRepository($productDecimalRepository);
272
        $this->setProductIntRepository($productIntRepository);
273
        $this->setProductTextRepository($productTextRepository);
274
        $this->setProductVarcharRepository($productVarcharRepository);
275
        $this->setCategoryProductRepository($categoryProductRepository);
276
        $this->setStockItemRepository($stockItemRepository);
277
        $this->setEavAttributeOptionValueRepository($eavAttributeOptionValueRepository);
278
        $this->setEavAttributeRepository($eavAttributeRepository);
279
        $this->setEavEntityTypeRepository($eavEntityTypeRepository);
280
        $this->setCategoryProductAction($categoryProductAction);
281
        $this->setProductDatetimeAction($productDatetimeAction);
282
        $this->setProductDecimalAction($productDecimalAction);
283
        $this->setProductIntAction($productIntAction);
284
        $this->setProductAction($productAction);
285
        $this->setProductTextAction($productTextAction);
286
        $this->setProductVarcharAction($productVarcharAction);
287
        $this->setProductWebsiteAction($productWebsiteAction);
288
        $this->setStockItemAction($stockItemAction);
289
        $this->setUrlRewriteAction($urlRewriteAction);
290
        $this->setProductAttributeAssembler($productAttributeAssembler);
291
    }
292
293
    /**
294
     * Set's the passed connection.
295
     *
296
     * @param \TechDivision\Import\Connection\ConnectionInterface $connection The connection to set
297
     *
298
     * @return void
299
     */
300
    public function setConnection(ConnectionInterface $connection)
301
    {
302
        $this->connection = $connection;
303
    }
304
305
    /**
306
     * Return's the connection.
307
     *
308
     * @return \TechDivision\Import\Connection\ConnectionInterface The connection instance
309
     */
310
    public function getConnection()
311
    {
312
        return $this->connection;
313
    }
314
315
    /**
316
     * Turns off autocommit mode. While autocommit mode is turned off, changes made to the database via the PDO
317
     * object instance are not committed until you end the transaction by calling ProductProcessor::commit().
318
     * Calling ProductProcessor::rollBack() will roll back all changes to the database and return the connection
319
     * to autocommit mode.
320
     *
321
     * @return boolean Returns TRUE on success or FALSE on failure
322
     * @link http://php.net/manual/en/pdo.begintransaction.php
323
     */
324
    public function beginTransaction()
325
    {
326
        return $this->connection->beginTransaction();
327
    }
328
329
    /**
330
     * Commits a transaction, returning the database connection to autocommit mode until the next call to
331
     * ProductProcessor::beginTransaction() starts a new transaction.
332
     *
333
     * @return boolean Returns TRUE on success or FALSE on failure
334
     * @link http://php.net/manual/en/pdo.commit.php
335
     */
336
    public function commit()
337
    {
338
        return $this->connection->commit();
339
    }
340
341
    /**
342
     * Rolls back the current transaction, as initiated by ProductProcessor::beginTransaction().
343
     *
344
     * If the database was set to autocommit mode, this function will restore autocommit mode after it has
345
     * rolled back the transaction.
346
     *
347
     * Some databases, including MySQL, automatically issue an implicit COMMIT when a database definition
348
     * language (DDL) statement such as DROP TABLE or CREATE TABLE is issued within a transaction. The implicit
349
     * COMMIT will prevent you from rolling back any other changes within the transaction boundary.
350
     *
351
     * @return boolean Returns TRUE on success or FALSE on failure
352
     * @link http://php.net/manual/en/pdo.rollback.php
353
     */
354
    public function rollBack()
355
    {
356
        return $this->connection->rollBack();
357
    }
358
359
    /**
360
     * Set's the repository to access EAV attribute option values.
361
     *
362
     * @param \TechDivision\Import\Repositories\EavAttributeOptionValueRepositoryInterface $eavAttributeOptionValueRepository The repository to access EAV attribute option values
363
     *
364
     * @return void
365
     */
366
    public function setEavAttributeOptionValueRepository(EavAttributeOptionValueRepositoryInterface $eavAttributeOptionValueRepository)
367
    {
368
        $this->eavAttributeOptionValueRepository = $eavAttributeOptionValueRepository;
369
    }
370
371
    /**
372
     * Return's the repository to access EAV attribute option values.
373
     *
374
     * @return \TechDivision\Import\Repositories\EavAttributeOptionValueRepositoryInterface The repository instance
375
     */
376
    public function getEavAttributeOptionValueRepository()
377
    {
378
        return $this->eavAttributeOptionValueRepository;
379
    }
380
381
    /**
382
     * Set's the repository to access EAV attributes.
383
     *
384
     * @param \TechDivision\Import\Repositories\EavAttributeRepositoryInterface $eavAttributeRepository The repository to access EAV attributes
385
     *
386
     * @return void
387
     */
388
    public function setEavAttributeRepository(EavAttributeRepositoryInterface $eavAttributeRepository)
389
    {
390
        $this->eavAttributeRepository = $eavAttributeRepository;
391
    }
392
393
    /**
394
     * Return's the repository to access EAV attributes.
395
     *
396
     * @return \TechDivision\Import\Repositories\EavAttributeRepositoryInterface The repository instance
397
     */
398
    public function getEavAttributeRepository()
399
    {
400
        return $this->eavEntityTypeRepository;
0 ignored issues
show
Bug introduced by
The property eavEntityTypeRepository does not exist. Did you maybe forget to declare it?

In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:

class MyClass { }

$x = new MyClass();
$x->foo = true;

Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:

class MyClass {
    public $foo;
}

$x = new MyClass();
$x->foo = true;
Loading history...
401
    }
402
403
    /**
404
     * Set's the repository to access EAV entity types.
405
     *
406
     * @param \TechDivision\Import\Repositories\EavEntityTypeRepositoryInterface $eavEntityTypeRepository The repository to access EAV entity types
407
     *
408
     * @return void
409
     */
410
    public function setEavEntityTypeRepository(EavEntityTypeRepositoryInterface $eavEntityTypeRepository)
411
    {
412
        $this->eavEntityTypeRepository = $eavEntityTypeRepository;
413
    }
414
415
    /**
416
     * Return's the repository to access EAV entity types.
417
     *
418
     * @return \TechDivision\Import\Repositories\EavEntityTypeRepositoryInterface The repository instance
419
     */
420
    public function getEavEntityTypeRepository()
421
    {
422
        return $this->eavEntityTypeRepository;
423
    }
424
425
    /**
426
     * Set's the action with the product CRUD methods.
427
     *
428
     * @param ActionInterface $productAction The action with the product CRUD methods
429
     *
430
     * @return void
431
     */
432
    public function setProductAction(ActionInterface $productAction)
433
    {
434
        $this->productAction = $productAction;
435
    }
436
437
    /**
438
     * Return's the action with the product CRUD methods.
439
     *
440
     * @return ActionInterface The action instance
441
     */
442
    public function getProductAction()
443
    {
444
        return $this->productAction;
445
    }
446
447
    /**
448
     * Set's the action with the product varchar attribute CRUD methods.
449
     *
450
     * @param ActionInterface $productVarcharAction The action with the product varchar attriute CRUD methods
451
     *
452
     * @return void
453
     */
454
    public function setProductVarcharAction(ActionInterface $productVarcharAction)
455
    {
456
        $this->productVarcharAction = $productVarcharAction;
457
    }
458
459
    /**
460
     * Return's the action with the product varchar attribute CRUD methods.
461
     *
462
     * @return ActionInterface The action instance
463
     */
464
    public function getProductVarcharAction()
465
    {
466
        return $this->productVarcharAction;
467
    }
468
469
    /**
470
     * Set's the action with the product text attribute CRUD methods.
471
     *
472
     * @param ActionInterface $productTextAction The action with the product text attriute CRUD methods
473
     *
474
     * @return void
475
     */
476
    public function setProductTextAction(ActionInterface $productTextAction)
477
    {
478
        $this->productTextAction = $productTextAction;
479
    }
480
481
    /**
482
     * Return's the action with the product text attribute CRUD methods.
483
     *
484
     * @return ActionInterface The action instance
485
     */
486
    public function getProductTextAction()
487
    {
488
        return $this->productTextAction;
489
    }
490
491
    /**
492
     * Set's the action with the product int attribute CRUD methods.
493
     *
494
     * @param ActionInterface $productIntAction The action with the product int attriute CRUD methods
495
     *
496
     * @return void
497
     */
498
    public function setProductIntAction(ActionInterface $productIntAction)
499
    {
500
        $this->productIntAction = $productIntAction;
501
    }
502
503
    /**
504
     * Return's the action with the product int attribute CRUD methods.
505
     *
506
     * @return ActionInterface The action instance
507
     */
508
    public function getProductIntAction()
509
    {
510
        return $this->productIntAction;
511
    }
512
513
    /**
514
     * Set's the action with the product decimal attribute CRUD methods.
515
     *
516
     * @param ActionInterface $productDecimalAction The action with the product decimal attriute CRUD methods
517
     *
518
     * @return void
519
     */
520
    public function setProductDecimalAction(ActionInterface $productDecimalAction)
521
    {
522
        $this->productDecimalAction = $productDecimalAction;
523
    }
524
525
    /**
526
     * Return's the action with the product decimal attribute CRUD methods.
527
     *
528
     * @return ActionInterface The action instance
529
     */
530
    public function getProductDecimalAction()
531
    {
532
        return $this->productDecimalAction;
533
    }
534
535
    /**
536
     * Set's the action with the product datetime attribute CRUD methods.
537
     *
538
     * @param ActionInterface $productDatetimeAction The action with the product datetime attriute CRUD methods
539
     *
540
     * @return void
541
     */
542
    public function setProductDatetimeAction(ActionInterface $productDatetimeAction)
543
    {
544
        $this->productDatetimeAction = $productDatetimeAction;
545
    }
546
547
    /**
548
     * Return's the action with the product datetime attribute CRUD methods.
549
     *
550
     * @return ActionInterface The action instance
551
     */
552
    public function getProductDatetimeAction()
553
    {
554
        return $this->productDatetimeAction;
555
    }
556
557
    /**
558
     * Set's the action with the product website CRUD methods.
559
     *
560
     * @param ActionInterface $productWebsiteAction The action with the product website CRUD methods
561
     *
562
     * @return void
563
     */
564
    public function setProductWebsiteAction(ActionInterface $productWebsiteAction)
565
    {
566
        $this->productWebsiteAction = $productWebsiteAction;
567
    }
568
569
    /**
570
     * Return's the action with the product website CRUD methods.
571
     *
572
     * @return ActionInterface The action instance
573
     */
574
    public function getProductWebsiteAction()
575
    {
576
        return $this->productWebsiteAction;
577
    }
578
579
    /**
580
     * Set's the action with the category product relation CRUD methods.
581
     *
582
     * @param ActionInterface $categoryProductAction The action with the category product relation CRUD methods
583
     *
584
     * @return void
585
     */
586
    public function setCategoryProductAction(ActionInterface $categoryProductAction)
587
    {
588
        $this->categoryProductAction = $categoryProductAction;
589
    }
590
591
    /**
592
     * Return's the action with the category product relation CRUD methods.
593
     *
594
     * @return ActionInterface The action instance
595
     */
596
    public function getCategoryProductAction()
597
    {
598
        return $this->categoryProductAction;
599
    }
600
601
    /**
602
     * Set's the action with the stock item CRUD methods.
603
     *
604
     * @param ActionInterface $stockItemAction The action with the stock item CRUD methods
605
     *
606
     * @return void
607
     */
608
    public function setStockItemAction(ActionInterface $stockItemAction)
609
    {
610
        $this->stockItemAction = $stockItemAction;
611
    }
612
613
    /**
614
     * Return's the action with the stock item CRUD methods.
615
     *
616
     * @return ActionInterface The action instance
617
     */
618
    public function getStockItemAction()
619
    {
620
        return $this->stockItemAction;
621
    }
622
623
    /**
624
     * Set's the action with the URL rewrite CRUD methods.
625
     *
626
     * @param \TechDivision\Import\Actions\ActionInterface $urlRewriteAction The action with the URL rewrite CRUD methods
627
     *
628
     * @return void
629
     */
630
    public function setUrlRewriteAction(ActionInterface $urlRewriteAction)
631
    {
632
        $this->urlRewriteAction = $urlRewriteAction;
633
    }
634
635
    /**
636
     * Return's the action with the URL rewrite CRUD methods.
637
     *
638
     * @return \TechDivision\Import\Actions\ActionInterface The action instance
639
     */
640
    public function getUrlRewriteAction()
641
    {
642
        return $this->urlRewriteAction;
643
    }
644
645
    /**
646
     * Set's the repository to load the products with.
647
     *
648
     * @param \TechDivision\Import\Product\Repositories\ProductRepositoryInterface $productRepository The repository instance
649
     *
650
     * @return void
651
     */
652
    public function setProductRepository(ProductRepositoryInterface $productRepository)
653
    {
654
        $this->productRepository = $productRepository;
655
    }
656
657
    /**
658
     * Return's the repository to load the products with.
659
     *
660
     * @return \TechDivision\Import\Product\Repositories\ProductRepositoryInterface The repository instance
661
     */
662
    public function getProductRepository()
663
    {
664
        return $this->productRepository;
665
    }
666
667
    /**
668
     * Set's the repository to load the product website relations with.
669
     *
670
     * @param \TechDivision\Import\Product\Repositories\ProductWebsiteRepositoryInterface $productWebsiteRepository The repository instance
671
     *
672
     * @return void
673
     */
674
    public function setProductWebsiteRepository(ProductWebsiteRepositoryInterface $productWebsiteRepository)
675
    {
676
        $this->productWebsiteRepository = $productWebsiteRepository;
677
    }
678
679
    /**
680
     * Return's the repository to load the product website relations with.
681
     *
682
     * @return \TechDivision\Import\Product\Repositories\ProductWebsiteRepositoryInterface The repository instance
683
     */
684
    public function getProductWebsiteRepository()
685
    {
686
        return $this->productWebsiteRepository;
687
    }
688
689
    /**
690
     * Set's the repository to load the product datetime attribute with.
691
     *
692
     * @param \TechDivision\Import\Product\Repositories\ProductDatetimeRepositoryInterface $productDatetimeRepository The repository instance
693
     *
694
     * @return void
695
     */
696
    public function setProductDatetimeRepository(ProductDatetimeRepositoryInterface $productDatetimeRepository)
697
    {
698
        $this->productDatetimeRepository = $productDatetimeRepository;
699
    }
700
701
    /**
702
     * Return's the repository to load the product datetime attribute with.
703
     *
704
     * @return \TechDivision\Import\Product\Repositories\ProductDatetimeRepositoryInterface The repository instance
705
     */
706
    public function getProductDatetimeRepository()
707
    {
708
        return $this->productDatetimeRepository;
709
    }
710
711
    /**
712
     * Set's the repository to load the product decimal attribute with.
713
     *
714
     * @param \TechDivision\Import\Product\Repositories\ProductDecimalRepositoryInterface $productDecimalRepository The repository instance
715
     *
716
     * @return void
717
     */
718
    public function setProductDecimalRepository(ProductDecimalRepositoryInterface $productDecimalRepository)
719
    {
720
        $this->productDecimalRepository = $productDecimalRepository;
721
    }
722
723
    /**
724
     * Return's the repository to load the product decimal attribute with.
725
     *
726
     * @return \TechDivision\Import\Product\Repositories\ProductDecimalRepositoryInterface The repository instance
727
     */
728
    public function getProductDecimalRepository()
729
    {
730
        return $this->productDecimalRepository;
731
    }
732
733
    /**
734
     * Set's the repository to load the product integer attribute with.
735
     *
736
     * @param \TechDivision\Import\Product\Repositories\ProductIntRepositoryInterface $productIntRepository The repository instance
737
     *
738
     * @return void
739
     */
740
    public function setProductIntRepository(ProductIntRepositoryInterface $productIntRepository)
741
    {
742
        $this->productIntRepository = $productIntRepository;
743
    }
744
745
    /**
746
     * Return's the repository to load the product integer attribute with.
747
     *
748
     * @return \TechDivision\Import\Product\Repositories\ProductIntRepositoryInterface The repository instance
749
     */
750
    public function getProductIntRepository()
751
    {
752
        return $this->productIntRepository;
753
    }
754
755
    /**
756
     * Set's the repository to load the product text attribute with.
757
     *
758
     * @param \TechDivision\Import\Product\Repositories\ProductTextRepositoryInterface $productTextRepository The repository instance
759
     *
760
     * @return void
761
     */
762
    public function setProductTextRepository(ProductTextRepositoryInterface $productTextRepository)
763
    {
764
        $this->productTextRepository = $productTextRepository;
765
    }
766
767
    /**
768
     * Return's the repository to load the product text attribute with.
769
     *
770
     * @return \TechDivision\Import\Product\Repositories\ProductTextRepositoryInterface The repository instance
771
     */
772
    public function getProductTextRepository()
773
    {
774
        return $this->productTextRepository;
775
    }
776
777
    /**
778
     * Set's the repository to load the product varchar attribute with.
779
     *
780
     * @param \TechDivision\Import\Product\Repositories\ProductVarcharRepositoryInterface $productVarcharRepository The repository instance
781
     *
782
     * @return void
783
     */
784
    public function setProductVarcharRepository(ProductVarcharRepositoryInterface $productVarcharRepository)
785
    {
786
        $this->productVarcharRepository = $productVarcharRepository;
787
    }
788
789
    /**
790
     * Return's the repository to load the product varchar attribute with.
791
     *
792
     * @return \TechDivision\Import\Product\Repositories\ProductVarcharRepositoryInterface The repository instance
793
     */
794
    public function getProductVarcharRepository()
795
    {
796
        return $this->productVarcharRepository;
797
    }
798
799
    /**
800
     * Set's the repository to load the category product relations with.
801
     *
802
     * @param \TechDivision\Import\Product\Repositories\CategoryProductRepositoryInterface $categoryProductRepository The repository instance
803
     *
804
     * @return void
805
     */
806
    public function setCategoryProductRepository(CategoryProductRepositoryInterface $categoryProductRepository)
807
    {
808
        $this->categoryProductRepository = $categoryProductRepository;
809
    }
810
811
    /**
812
     * Return's the repository to load the category product relations with.
813
     *
814
     * @return \TechDivision\Import\Product\Repositories\CategoryProductRepositoryInterface The repository instance
815
     */
816
    public function getCategoryProductRepository()
817
    {
818
        return $this->categoryProductRepository;
819
    }
820
821
    /**
822
     * Set's the repository to load the stock items with.
823
     *
824
     * @param \TechDivision\Import\Product\Repositories\StockItemRepositoryInterface $stockItemRepository The repository instance
825
     *
826
     * @return void
827
     */
828
    public function setStockItemRepository(StockItemRepositoryInterface $stockItemRepository)
829
    {
830
        $this->stockItemRepository = $stockItemRepository;
831
    }
832
833
    /**
834
     * Return's the repository to load the stock items with.
835
     *
836
     * @return \TechDivision\Import\Product\Repositories\StockItemRepositoryInterface The repository instance
837
     */
838
    public function getStockItemRepository()
839
    {
840
        return $this->stockItemRepository;
841
    }
842
843
    /**
844
     * Set's the assembler to load the product attributes with.
845
     *
846
     * @param \TechDivision\Import\Product\Assemblers\ProductAttributeAssemblerInterface $productAttributeAssembler The assembler instance
847
     *
848
     * @return void
849
     */
850
    public function setProductAttributeAssembler(ProductAttributeAssemblerInterface $productAttributeAssembler)
851
    {
852
        $this->productAttributeAssembler = $productAttributeAssembler;
853
    }
854
855
    /**
856
     * Return's the assembler to load the product attributes with.
857
     *
858
     * @return \TechDivision\Import\Product\Assemblers\ProductAttributeAssemblerInterface The assembler instance
859
     */
860
    public function getProductAttributeAssembler()
861
    {
862
        return $this->productAttributeAssembler;
863
    }
864
865
    /**
866
     * Return's an array with the available EAV attributes for the passed is user defined flag.
867
     *
868
     * @param integer $isUserDefined The flag itself
869
     *
870
     * @return array The array with the EAV attributes matching the passed flag
871
     */
872
    public function getEavAttributeByIsUserDefined($isUserDefined = 1)
873
    {
874
        return $this->getEavAttributeRepository()->findAllByIsUserDefined($isUserDefined);
875
    }
876
877
    /**
878
     * Return's the category product relations for the product with the passed SKU.
879
     *
880
     * @param string $sku The product SKU to load the category relations for
881
     *
882
     * @return array The category product relations for the product with the passed SKU
883
     */
884
    public function getCategoryProductsBySku($sku)
885
    {
886
        return $this->getCategoryProductRepository()->findAllBySku($sku);
887
    }
888
889
    /**
890
     * Intializes the existing attributes for the entity with the passed primary key.
891
     *
892
     * @param string  $pk      The primary key of the entity to load the attributes for
893
     * @param integer $storeId The ID of the store view to load the attributes for
894
     *
895
     * @return array The entity attributes
896
     */
897
    public function getProductAttributesByPrimaryKeyAndStoreId($pk, $storeId)
898
    {
899
        return $this->getProductAttributeAssembler()->getProductAttributesByPrimaryKeyAndStoreId($pk, $storeId);
900
    }
901
902
    /**
903
     * Load's and return's the EAV attribute option value with the passed entity type ID, code, store ID and value.
904
     *
905
     * @param string  $entityTypeId  The entity type ID of the EAV attribute to load the option value for
906
     * @param string  $attributeCode The code of the EAV attribute option to load
907
     * @param integer $storeId       The store ID of the attribute option to load
908
     * @param string  $value         The value of the attribute option to load
909
     *
910
     * @return array The EAV attribute option value
911
     */
912
    public function loadAttributeOptionValueByEntityTypeIdAndAttributeCodeAndStoreIdAndValue($entityTypeId, $attributeCode, $storeId, $value)
913
    {
914
        return $this->getEavAttributeOptionValueRepository()->findOneByEntityTypeIdAndAttributeCodeAndStoreIdAndValue($entityTypeId, $attributeCode, $storeId, $value);
915
    }
916
917
    /**
918
     * Load's and return's the product with the passed SKU.
919
     *
920
     * @param string $sku The SKU of the product to load
921
     *
922
     * @return array The product
923
     */
924
    public function loadProduct($sku)
925
    {
926
        return $this->getProductRepository()->findOneBySku($sku);
927
    }
928
929
    /**
930
     * Load's and return's the product website relation with the passed product and website ID.
931
     *
932
     * @param string $productId The product ID of the relation
933
     * @param string $websiteId The website ID of the relation
934
     *
935
     * @return array The product website
936
     */
937
    public function loadProductWebsite($productId, $websiteId)
938
    {
939
        return $this->getProductWebsiteRepository()->findOneByProductIdAndWebsite($productId, $websiteId);
940
    }
941
942
    /**
943
     * Load's and return's the product website relations for the product with the passed SKU.
944
     *
945
     * @param string $sku The SKU to of the product to load the product website relations for
946
     *
947
     * @return array The product website relations
948
     */
949
    public function loadProductWebsitesBySku($sku)
950
    {
951
        return $this->getProductWebsiteRepository()->findAllBySku($sku);
952
    }
953
954
    /**
955
     * Return's the category product relation with the passed category/product ID.
956
     *
957
     * @param integer $categoryId The category ID of the category product relation to return
958
     * @param integer $productId  The product ID of the category product relation to return
959
     *
960
     * @return array The category product relation
961
     */
962
    public function loadCategoryProduct($categoryId, $productId)
963
    {
964
        return $this->getCategoryProductRepository()->findOneByCategoryIdAndProductId($categoryId, $productId);
965
    }
966
967
    /**
968
     * Load's and return's the stock status with the passed product/website/stock ID.
969
     *
970
     * @param integer $productId The product ID of the stock item to load
971
     * @param integer $websiteId The website ID of the stock item to load
972
     * @param integer $stockId   The stock ID of the stock item to load
973
     *
974
     * @return array The stock item
975
     */
976
    public function loadStockItem($productId, $websiteId, $stockId)
977
    {
978
        return $this->getStockItemRepository()->findOneByProductIdAndWebsiteIdAndStockId($productId, $websiteId, $stockId);
979
    }
980
981
    /**
982
     * Load's and return's the varchar attribute with the passed params.
983
     *
984
     * @param integer $attributeCode The attribute code of the varchar attribute
985
     * @param integer $entityTypeId  The entity type ID of the varchar attribute
986
     * @param integer $storeId       The store ID of the varchar attribute
987
     * @param string  $value         The value of the varchar attribute
988
     *
989
     * @return array|null The varchar attribute
990
     */
991
    public function loadProductVarcharAttributeByAttributeCodeAndEntityTypeIdAndStoreIdAndValue($attributeCode, $entityTypeId, $storeId, $value)
992
    {
993
        return $this->getProductVarcharRepository()->findOneByAttributeCodeAndEntityTypeIdAndStoreIdAndValue($attributeCode, $entityTypeId, $storeId, $value);
994
    }
995
996
    /**
997
     * Return's an EAV entity type with the passed entity type code.
998
     *
999
     * @param string $entityTypeCode The code of the entity type to return
1000
     *
1001
     * @return array The entity type with the passed entity type code
1002
     */
1003
    public function loadEavEntityTypeByEntityTypeCode($entityTypeCode)
1004
    {
1005
        return $this->getEavEntityTypeRepository()->findOneByEntityTypeCode($entityTypeCode);
1006
    }
1007
1008
    /**
1009
     * Persist's the passed product data and return's the ID.
1010
     *
1011
     * @param array       $product The product data to persist
1012
     * @param string|null $name    The name of the prepared statement that has to be executed
1013
     *
1014
     * @return string The ID of the persisted entity
1015
     */
1016 View Code Duplication
    public function persistProduct($product, $name = null)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
1017
    {
1018
1019
        // persist the new entity and set the PK value in the entity
1020
        $product[$pkName = $this->getProductRepository()->getPrimaryKeyName()] = $this->getProductAction()->persist($product, $name);
0 ignored issues
show
Unused Code introduced by
The call to ActionInterface::persist() has too many arguments starting with $name.

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.

In this case you can add the @ignore PhpDoc annotation to the duplicate definition and it will be ignored.

Loading history...
Bug introduced by
Are you sure the assignment to $product[$pkName = $this...)->getPrimaryKeyName()] is correct as $this->getProductAction(...ersist($product, $name) (which targets TechDivision\Import\Acti...ionInterface::persist()) seems to always return null.

This check looks for function or method calls that always return null and whose return value is assigned to a variable.

class A
{
    function getObject()
    {
        return null;
    }

}

$a = new A();
$object = $a->getObject();

The method getObject() can return nothing but null, so it makes no sense to assign that value to a variable.

The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes.

Loading history...
1021
1022
        // load the cache adapter instance
1023
        $cacheAdapter = $this->getProductRepository()->getCacheAdapter();
1024
1025
        // we only want to replace existing values, NOT adding new ones as this is the responsibility of the repository
1026
        if ($cacheAdapter->isCached($uniqueKey = array(CacheKeys::PRODUCT => $product[$pkName]))) {
0 ignored issues
show
Documentation introduced by
$uniqueKey = array(\Tech...T => $product[$pkName]) is of type array<string|integer,null>, but the function expects a string.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
1027
            // add the entity value to the cache, register the cache key reference as well
1028
            $cacheAdapter->toCache($uniqueKey, $product, array(), array(), true);
0 ignored issues
show
Documentation introduced by
$uniqueKey is of type array<string|integer,null>, but the function expects a string.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
1029
        }
1030
1031
        // return the ID of the persisted entity
1032
        return $product[$pkName];
1033
    }
1034
1035
    /**
1036
     * Persist's the passed product varchar attribute.
1037
     *
1038
     * @param array       $attribute The attribute to persist
1039
     * @param string|null $name      The name of the prepared statement that has to be executed
1040
     *
1041
     * @return string The ID of the persisted attribute
1042
     */
1043 View Code Duplication
    public function persistProductVarcharAttribute($attribute, $name = null)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
1044
    {
1045
1046
        // persist the new entity and set the PK value in the entity
1047
        $attribute[$pkName = $this->getProductVarcharRepository()->getPrimaryKeyName()] = $this->getProductVarcharAction()->persist($attribute, $name);
0 ignored issues
show
Unused Code introduced by
The call to ActionInterface::persist() has too many arguments starting with $name.

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.

In this case you can add the @ignore PhpDoc annotation to the duplicate definition and it will be ignored.

Loading history...
Bug introduced by
Are you sure the assignment to $attribute[$pkName = $th...)->getPrimaryKeyName()] is correct as $this->getProductVarchar...sist($attribute, $name) (which targets TechDivision\Import\Acti...ionInterface::persist()) seems to always return null.

This check looks for function or method calls that always return null and whose return value is assigned to a variable.

class A
{
    function getObject()
    {
        return null;
    }

}

$a = new A();
$object = $a->getObject();

The method getObject() can return nothing but null, so it makes no sense to assign that value to a variable.

The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes.

Loading history...
1048
1049
        // load the cache adapter instance
1050
        $cacheAdapter = $this->getProductVarcharRepository()->getCacheAdapter();
1051
1052
        // we only want to replace existing values, NOT adding new ones as this is the responsibility of the repository
1053
        if ($cacheAdapter->isCached($uniqueKey = array(CacheKeys::PRODUCT_VARCHAR => $attribute[$pkName]))) {
1054
            // add the attribute value to the cache, register the cache key reference as well
1055
            $cacheAdapter->toCache($uniqueKey, $attribute, array(), array(), true);
1056
        }
1057
1058
        // return the ID of the persisted attribute
1059
        return $attribute[$pkName];
1060
    }
1061
1062
    /**
1063
     * Persist's the passed product integer attribute.
1064
     *
1065
     * @param array       $attribute The attribute to persist
1066
     * @param string|null $name      The name of the prepared statement that has to be executed
1067
     *
1068
     * @return void
1069
     */
1070
    public function persistProductIntAttribute($attribute, $name = null)
1071
    {
1072
        $this->getProductIntAction()->persist($attribute, $name);
0 ignored issues
show
Unused Code introduced by
The call to ActionInterface::persist() has too many arguments starting with $name.

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.

In this case you can add the @ignore PhpDoc annotation to the duplicate definition and it will be ignored.

Loading history...
1073
    }
1074
1075
    /**
1076
     * Persist's the passed product decimal attribute.
1077
     *
1078
     * @param array       $attribute The attribute to persist
1079
     * @param string|null $name      The name of the prepared statement that has to be executed
1080
     *
1081
     * @return void
1082
     */
1083
    public function persistProductDecimalAttribute($attribute, $name = null)
1084
    {
1085
        $this->getProductDecimalAction()->persist($attribute, $name);
0 ignored issues
show
Unused Code introduced by
The call to ActionInterface::persist() has too many arguments starting with $name.

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.

In this case you can add the @ignore PhpDoc annotation to the duplicate definition and it will be ignored.

Loading history...
1086
    }
1087
1088
    /**
1089
     * Persist's the passed product datetime attribute.
1090
     *
1091
     * @param array       $attribute The attribute to persist
1092
     * @param string|null $name      The name of the prepared statement that has to be executed
1093
     *
1094
     * @return void
1095
     */
1096
    public function persistProductDatetimeAttribute($attribute, $name = null)
1097
    {
1098
        $this->getProductDatetimeAction()->persist($attribute, $name);
0 ignored issues
show
Unused Code introduced by
The call to ActionInterface::persist() has too many arguments starting with $name.

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.

In this case you can add the @ignore PhpDoc annotation to the duplicate definition and it will be ignored.

Loading history...
1099
    }
1100
1101
    /**
1102
     * Persist's the passed product text attribute.
1103
     *
1104
     * @param array       $attribute The attribute to persist
1105
     * @param string|null $name      The name of the prepared statement that has to be executed
1106
     *
1107
     * @return void
1108
     */
1109
    public function persistProductTextAttribute($attribute, $name = null)
1110
    {
1111
        $this->getProductTextAction()->persist($attribute, $name);
0 ignored issues
show
Unused Code introduced by
The call to ActionInterface::persist() has too many arguments starting with $name.

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.

In this case you can add the @ignore PhpDoc annotation to the duplicate definition and it will be ignored.

Loading history...
1112
    }
1113
1114
    /**
1115
     * Persist's the passed product website data and return's the ID.
1116
     *
1117
     * @param array       $productWebsite The product website data to persist
1118
     * @param string|null $name           The name of the prepared statement that has to be executed
1119
     *
1120
     * @return void
1121
     */
1122
    public function persistProductWebsite($productWebsite, $name = null)
1123
    {
1124
        $this->getProductWebsiteAction()->persist($productWebsite, $name);
0 ignored issues
show
Unused Code introduced by
The call to ActionInterface::persist() has too many arguments starting with $name.

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.

In this case you can add the @ignore PhpDoc annotation to the duplicate definition and it will be ignored.

Loading history...
1125
    }
1126
1127
    /**
1128
     * Persist's the passed category product relation.
1129
     *
1130
     * @param array       $categoryProduct The category product relation to persist
1131
     * @param string|null $name            The name of the prepared statement that has to be executed
1132
     *
1133
     * @return void
1134
     */
1135
    public function persistCategoryProduct($categoryProduct, $name = null)
1136
    {
1137
        $this->getCategoryProductAction()->persist($categoryProduct, $name);
0 ignored issues
show
Unused Code introduced by
The call to ActionInterface::persist() has too many arguments starting with $name.

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.

In this case you can add the @ignore PhpDoc annotation to the duplicate definition and it will be ignored.

Loading history...
1138
    }
1139
1140
    /**
1141
     * Persist's the passed stock item data and return's the ID.
1142
     *
1143
     * @param array       $stockItem The stock item data to persist
1144
     * @param string|null $name      The name of the prepared statement that has to be executed
1145
     *
1146
     * @return void
1147
     */
1148
    public function persistStockItem($stockItem, $name = null)
1149
    {
1150
        $this->getStockItemAction()->persist($stockItem, $name);
0 ignored issues
show
Unused Code introduced by
The call to ActionInterface::persist() has too many arguments starting with $name.

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.

In this case you can add the @ignore PhpDoc annotation to the duplicate definition and it will be ignored.

Loading history...
1151
    }
1152
1153
    /**
1154
     * Delete's the entity with the passed attributes.
1155
     *
1156
     * @param array       $row  The attributes of the entity to delete
1157
     * @param string|null $name The name of the prepared statement that has to be executed
1158
     *
1159
     * @return void
1160
     */
1161
    public function deleteProduct($row, $name = null)
1162
    {
1163
        $this->getProductAction()->delete($row, $name);
1164
    }
1165
1166
    /**
1167
     * Delete's the URL rewrite with the passed attributes.
1168
     *
1169
     * @param array       $row  The attributes of the entity to delete
1170
     * @param string|null $name The name of the prepared statement that has to be executed
1171
     *
1172
     * @return void
1173
     */
1174
    public function deleteUrlRewrite($row, $name = null)
1175
    {
1176
        $this->getUrlRewriteAction()->delete($row, $name);
1177
    }
1178
1179
    /**
1180
     * Delete's the stock item(s) with the passed attributes.
1181
     *
1182
     * @param array       $row  The attributes of the entity to delete
1183
     * @param string|null $name The name of the prepared statement that has to be executed
1184
     *
1185
     * @return void
1186
     */
1187
    public function deleteStockItem($row, $name = null)
1188
    {
1189
        $this->getStockItemAction()->delete($row, $name);
1190
    }
1191
1192
    /**
1193
     * Delete's the product website relations with the passed attributes.
1194
     *
1195
     * @param array       $row  The attributes of the entity to delete
1196
     * @param string|null $name The name of the prepared statement that has to be executed
1197
     *
1198
     * @return void
1199
     */
1200
    public function deleteProductWebsite($row, $name = null)
1201
    {
1202
        $this->getProductWebsiteAction()->delete($row, $name);
1203
    }
1204
1205
    /**
1206
     * Delete's the category product relations with the passed attributes.
1207
     *
1208
     * @param array       $row  The attributes of the entity to delete
1209
     * @param string|null $name The name of the prepared statement that has to be executed
1210
     *
1211
     * @return void
1212
     */
1213
    public function deleteCategoryProduct($row, $name = null)
1214
    {
1215
        $this->getCategoryProductAction()->delete($row, $name);
1216
    }
1217
1218
    /**
1219
     * Delete's the product datetime attribute with the passed attributes.
1220
     *
1221
     * @param array       $row  The attributes of the entity to delete
1222
     * @param string|null $name The name of the prepared statement that has to be executed
1223
     *
1224
     * @return void
1225
     */
1226
    public function deleteProductDatetimeAttribute($row, $name = null)
1227
    {
1228
        $this->getProductDatetimeAction()->delete($row, $name);
1229
    }
1230
1231
    /**
1232
     * Delete's the product decimal attribute with the passed attributes.
1233
     *
1234
     * @param array       $row  The attributes of the entity to delete
1235
     * @param string|null $name The name of the prepared statement that has to be executed
1236
     *
1237
     * @return void
1238
     */
1239
    public function deleteProductDecimalAttribute($row, $name = null)
1240
    {
1241
        $this->getProductDecimalAction()->delete($row, $name);
1242
    }
1243
1244
    /**
1245
     * Delete's the product integer attribute with the passed attributes.
1246
     *
1247
     * @param array       $row  The attributes of the entity to delete
1248
     * @param string|null $name The name of the prepared statement that has to be executed
1249
     *
1250
     * @return void
1251
     */
1252
    public function deleteProductIntAttribute($row, $name = null)
1253
    {
1254
        $this->getProductIntAction()->delete($row, $name);
1255
    }
1256
1257
    /**
1258
     * Delete's the product text attribute with the passed attributes.
1259
     *
1260
     * @param array       $row  The attributes of the entity to delete
1261
     * @param string|null $name The name of the prepared statement that has to be executed
1262
     *
1263
     * @return void
1264
     */
1265
    public function deleteProductTextAttribute($row, $name = null)
1266
    {
1267
        $this->getProductTextAction()->delete($row, $name);
1268
    }
1269
1270
    /**
1271
     * Delete's the product varchar attribute with the passed attributes.
1272
     *
1273
     * @param array       $row  The attributes of the entity to delete
1274
     * @param string|null $name The name of the prepared statement that has to be executed
1275
     *
1276
     * @return void
1277
     */
1278
    public function deleteProductVarcharAttribute($row, $name = null)
1279
    {
1280
        $this->getProductVarcharAction()->delete($row, $name);
1281
    }
1282
1283
    /**
1284
     * Clean-Up the repositories to free memory.
1285
     *
1286
     * @return void
1287
     */
1288
    public function cleanUp()
1289
    {
1290
    }
1291
}
1292