Completed
Push — 4.0 ( b48f64...137622 )
by chihiro
20:21 queued 10s
created

src/Eccube/Entity/Product.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
/*
4
 * This file is part of EC-CUBE
5
 *
6
 * Copyright(c) LOCKON CO.,LTD. All Rights Reserved.
7
 *
8
 * http://www.lockon.co.jp/
9
 *
10
 * For the full copyright and license information, please view the LICENSE
11
 * file that was distributed with this source code.
12
 */
13
14
namespace Eccube\Entity;
15
16
use Doctrine\Common\Collections\ArrayCollection;
17
use Doctrine\ORM\Mapping as ORM;
18
19 1
if (!class_exists('\Eccube\Entity\Product')) {
20
    /**
21
     * Product
22
     *
23
     * @ORM\Table(name="dtb_product")
24
     * @ORM\InheritanceType("SINGLE_TABLE")
25
     * @ORM\DiscriminatorColumn(name="discriminator_type", type="string", length=255)
26
     * @ORM\HasLifecycleCallbacks()
27
     * @ORM\Entity(repositoryClass="Eccube\Repository\ProductRepository")
28
     */
29
    class Product extends \Eccube\Entity\AbstractEntity
30
    {
31
        private $_calc = false;
32
        private $stockFinds = [];
33
        private $stocks = [];
34
        private $stockUnlimiteds = [];
35
        private $price01 = [];
36
        private $price02 = [];
37
        private $price01IncTaxs = [];
38
        private $price02IncTaxs = [];
39
        private $codes = [];
40
        private $classCategories1 = [];
41
        private $classCategories2 = [];
42
        private $className1;
43
        private $className2;
44
45
        /**
46
         * @return string
47
         */
48
        public function __toString()
49
        {
50
            return (string) $this->getName();
51
        }
52
53 49
        public function _calc()
54
        {
55 49
            if (!$this->_calc) {
56 49
                $i = 0;
57 49
                foreach ($this->getProductClasses() as $ProductClass) {
58
                    /* @var $ProductClass \Eccube\Entity\ProductClass */
59
                    // stock_find
60 49
                    if ($ProductClass->isVisible() == false) {
61 49
                        continue;
62
                    }
63 49
                    $ClassCategory1 = $ProductClass->getClassCategory1();
64 49
                    $ClassCategory2 = $ProductClass->getClassCategory2();
65 49
                    if ($ClassCategory1 && !$ClassCategory1->isVisible()) {
66
                        continue;
67
                    }
68 49
                    if ($ClassCategory2 && !$ClassCategory2->isVisible()) {
69
                        continue;
70
                    }
71
72
                    // stock_find
73 49
                    $this->stockFinds[] = $ProductClass->getStockFind();
74
75
                    // stock
76 49
                    $this->stocks[] = $ProductClass->getStock();
77
78
                    // stock_unlimited
79 49
                    $this->stockUnlimiteds[] = $ProductClass->isStockUnlimited();
80
81
                    // price01
82 49
                    if (!is_null($ProductClass->getPrice01())) {
83 7
                        $this->price01[] = $ProductClass->getPrice01();
84
                        // price01IncTax
85 7
                        $this->price01IncTaxs[] = $ProductClass->getPrice01IncTax();
86
                    }
87
88
                    // price02
89 49
                    $this->price02[] = $ProductClass->getPrice02();
90
91
                    // price02IncTax
92 49
                    $this->price02IncTaxs[] = $ProductClass->getPrice02IncTax();
93
94
                    // product_code
95 49
                    $this->codes[] = $ProductClass->getCode();
96
97 49
                    if ($i === 0) {
98 49
                        if ($ProductClass->getClassCategory1() && $ProductClass->getClassCategory1()->getId()) {
99 49
                            $this->className1 = $ProductClass->getClassCategory1()->getClassName()->getName();
100
                        }
101 49
                        if ($ProductClass->getClassCategory2() && $ProductClass->getClassCategory2()->getId()) {
102 33
                            $this->className2 = $ProductClass->getClassCategory2()->getClassName()->getName();
103
                        }
104
                    }
105 49
                    if ($ProductClass->getClassCategory1()) {
106 49
                        $classCategoryId1 = $ProductClass->getClassCategory1()->getId();
107 49
                        if (!empty($classCategoryId1)) {
108 49
                            if ($ProductClass->getClassCategory2()) {
109 49
                                $this->classCategories1[$ProductClass->getClassCategory1()->getId()] = $ProductClass->getClassCategory1()->getName();
110 33
                                $this->classCategories2[$ProductClass->getClassCategory1()->getId()][$ProductClass->getClassCategory2()->getId()] = $ProductClass->getClassCategory2()->getName();
111
                            } else {
112
                                $this->classCategories1[$ProductClass->getClassCategory1()->getId()] = $ProductClass->getClassCategory1()->getName().($ProductClass->getStockFind() ? '' : trans('front.product.out_of_stock_label'));
113
                            }
114 49
                        }
115
                    }
116 49
                    $i++;
117
                }
118
                $this->_calc = true;
119
            }
120
        }
121
122
        /**
123
         * Is Enable
124
         *
125 80
         * @return bool
126
         *
127 80
         * @deprecated
128
         */
129
        public function isEnable()
130
        {
131
            return $this->getStatus()->getId() === \Eccube\Entity\Master\ProductStatus::DISPLAY_SHOW ? true : false;
132
        }
133
134
        /**
135 45
         * Get ClassName1
136
         *
137 45
         * @return string
138
         */
139 45
        public function getClassName1()
140
        {
141
            $this->_calc();
142
143
            return $this->className1;
144
        }
145
146
        /**
147 45
         * Get ClassName2
148
         *
149 45
         * @return string
150
         */
151 45
        public function getClassName2()
152
        {
153
            $this->_calc();
154
155
            return $this->className2;
156
        }
157
158
        /**
159 46
         * Get getClassCategories1
160
         *
161 46
         * @return array
162
         */
163 46
        public function getClassCategories1()
164
        {
165
            $this->_calc();
166 45
167
            return $this->classCategories1;
168 45
        }
169
170
        public function getClassCategories1AsFlip()
171
        {
172
            return array_flip($this->getClassCategories1());
173
        }
174
175
        /**
176 4
         * Get getClassCategories2
177
         *
178 4
         * @return array
179
         */
180 4
        public function getClassCategories2($class_category1)
181
        {
182
            $this->_calc();
183 3
184
            return isset($this->classCategories2[$class_category1]) ? $this->classCategories2[$class_category1] : [];
185 3
        }
186
187
        public function getClassCategories2AsFlip($class_category1)
188
        {
189
            return array_flip($this->getClassCategories2($class_category1));
190
        }
191
192
        /**
193 46
         * Get StockFind
194
         *
195 46
         * @return bool
196
         */
197 46
        public function getStockFind()
198
        {
199
            $this->_calc();
200
201
            return max($this->stockFinds);
202
        }
203
204
        /**
205
         * Get Stock min
206
         *
207
         * @return integer
208
         */
209
        public function getStockMin()
210
        {
211
            $this->_calc();
212
213
            return min($this->stocks);
214
        }
215
216
        /**
217
         * Get Stock max
218
         *
219
         * @return integer
220
         */
221
        public function getStockMax()
222
        {
223
            $this->_calc();
224
225
            return max($this->stocks);
226
        }
227
228
        /**
229
         * Get StockUnlimited min
230
         *
231
         * @return integer
232
         */
233
        public function getStockUnlimitedMin()
234
        {
235
            $this->_calc();
236
237
            return min($this->stockUnlimiteds);
238
        }
239
240
        /**
241
         * Get StockUnlimited max
242
         *
243
         * @return integer
244
         */
245
        public function getStockUnlimitedMax()
246
        {
247
            $this->_calc();
248
249
            return max($this->stockUnlimiteds);
250
        }
251
252
        /**
253 11
         * Get Price01 min
254
         *
255 11
         * @return integer
256
         */
257 11 View Code Duplication
        public function getPrice01Min()
258 9
        {
259
            $this->_calc();
260
261 2
            if (count($this->price01) == 0) {
262
                return null;
263
            }
264
265
            return min($this->price01);
266
        }
267
268
        /**
269 2
         * Get Price01 max
270
         *
271 2
         * @return integer
272
         */
273 2 View Code Duplication
        public function getPrice01Max()
274
        {
275
            $this->_calc();
276
277 2
            if (count($this->price01) == 0) {
278
                return null;
279
            }
280
281
            return max($this->price01);
282
        }
283
284
        /**
285 3
         * Get Price02 min
286
         *
287 3
         * @return integer
288
         */
289 3
        public function getPrice02Min()
290
        {
291
            $this->_calc();
292
293
            return min($this->price02);
294
        }
295
296
        /**
297 3
         * Get Price02 max
298
         *
299 3
         * @return integer
300
         */
301 3
        public function getPrice02Max()
302
        {
303
            $this->_calc();
304
305
            return max($this->price02);
306
        }
307
308
        /**
309 2
         * Get Price01IncTax min
310
         *
311 2
         * @return integer
312
         */
313 2
        public function getPrice01IncTaxMin()
314
        {
315
            $this->_calc();
316
317
            return min($this->price01IncTaxs);
318
        }
319
320
        /**
321 2
         * Get Price01IncTax max
322
         *
323 2
         * @return integer
324
         */
325 2
        public function getPrice01IncTaxMax()
326
        {
327
            $this->_calc();
328
329
            return max($this->price01IncTaxs);
330
        }
331
332
        /**
333 14
         * Get Price02IncTax min
334
         *
335 14
         * @return integer
336
         */
337 14
        public function getPrice02IncTaxMin()
338
        {
339
            $this->_calc();
340
341
            return min($this->price02IncTaxs);
342
        }
343
344
        /**
345 14
         * Get Price02IncTax max
346
         *
347 14
         * @return integer
348
         */
349 14
        public function getPrice02IncTaxMax()
350
        {
351
            $this->_calc();
352
353
            return max($this->price02IncTaxs);
354
        }
355
356
        /**
357 13
         * Get Product_code min
358
         *
359 13
         * @return integer
360
         */
361 13 View Code Duplication
        public function getCodeMin()
362 13
        {
363 13
            $this->_calc();
364 13
365
            $codes = [];
366
            foreach ($this->codes as $code) {
367
                if (!is_null($code)) {
368 13
                    $codes[] = $code;
369
                }
370
            }
371
372
            return count($codes) ? min($codes) : null;
373
        }
374
375
        /**
376 13
         * Get Product_code max
377
         *
378 13
         * @return integer
379
         */
380 13 View Code Duplication
        public function getCodeMax()
381 13
        {
382 13
            $this->_calc();
383 13
384
            $codes = [];
385
            foreach ($this->codes as $code) {
386
                if (!is_null($code)) {
387 13
                    $codes[] = $code;
388
                }
389
            }
390 62
391
            return count($codes) ? max($codes) : null;
392 62
        }
393
394 62
        public function getMainListImage()
395
        {
396
            $ProductImages = $this->getProductImage();
397 1
398
            return empty($ProductImages) ? null : $ProductImages[0];
399 1
        }
400 1
401
        public function getMainFileName()
402
        {
403
            if (count($this->ProductImage) > 0) {
404
                return $this->ProductImage[0];
405
            } else {
406 43
                return null;
407
            }
408 43
        }
409 43
410 1
        public function hasProductClass()
411
        {
412 43
            foreach ($this->ProductClasses as $ProductClass) {
413 43
                if (!$ProductClass->isVisible()) {
414
                    continue;
415
                }
416
                if (!is_null($ProductClass->getClassCategory1())) {
417 18
                    return true;
418
                }
419
            }
420
421
            return false;
422
        }
423
424
        /**
425
         * @var integer
426
         *
427
         * @ORM\Column(name="id", type="integer", options={"unsigned":true})
428
         * @ORM\Id
429
         * @ORM\GeneratedValue(strategy="IDENTITY")
430
         */
431
        private $id;
432
433
        /**
434
         * @var string
435
         *
436
         * @ORM\Column(name="name", type="string", length=255)
437
         */
438
        private $name;
439
440
        /**
441
         * @var string|null
442
         *
443
         * @ORM\Column(name="note", type="string", length=4000, nullable=true)
444
         */
445
        private $note;
446
447
        /**
448
         * @var string|null
449
         *
450
         * @ORM\Column(name="description_list", type="string", length=4000, nullable=true)
451
         */
452
        private $description_list;
453
454
        /**
455
         * @var string|null
456
         *
457
         * @ORM\Column(name="description_detail", type="string", length=4000, nullable=true)
458
         */
459
        private $description_detail;
460
461
        /**
462
         * @var string|null
463
         *
464
         * @ORM\Column(name="search_word", type="string", length=4000, nullable=true)
465
         */
466
        private $search_word;
467
468
        /**
469
         * @var string|null
470
         *
471
         * @ORM\Column(name="free_area", type="text", nullable=true)
472
         */
473
        private $free_area;
474
475
        /**
476
         * @var \DateTime
477
         *
478
         * @ORM\Column(name="create_date", type="datetimetz")
479
         */
480
        private $create_date;
481
482
        /**
483
         * @var \DateTime
484
         *
485
         * @ORM\Column(name="update_date", type="datetimetz")
486
         */
487
        private $update_date;
488
489
        /**
490
         * @var \Doctrine\Common\Collections\Collection
491
         *
492
         * @ORM\OneToMany(targetEntity="Eccube\Entity\ProductCategory", mappedBy="Product", cascade={"persist","remove"})
493
         */
494
        private $ProductCategories;
495
496
        /**
497
         * @var \Doctrine\Common\Collections\Collection
498
         *
499
         * @ORM\OneToMany(targetEntity="Eccube\Entity\ProductClass", mappedBy="Product", cascade={"persist","remove"})
500
         */
501
        private $ProductClasses;
502
503
        /**
504
         * @var \Doctrine\Common\Collections\Collection
505
         *
506
         * @ORM\OneToMany(targetEntity="Eccube\Entity\ProductImage", mappedBy="Product", cascade={"remove"})
507
         * @ORM\OrderBy({
508
         *     "sort_no"="ASC"
509
         * })
510
         */
511
        private $ProductImage;
512
513
        /**
514
         * @var \Doctrine\Common\Collections\Collection
515
         *
516
         * @ORM\OneToMany(targetEntity="Eccube\Entity\ProductTag", mappedBy="Product")
517
         */
518
        private $ProductTag;
519
520
        /**
521
         * @var \Doctrine\Common\Collections\Collection
522
         *
523
         * @ORM\OneToMany(targetEntity="Eccube\Entity\CustomerFavoriteProduct", mappedBy="Product")
524
         */
525
        private $CustomerFavoriteProducts;
526
527
        /**
528
         * @var \Eccube\Entity\Member
529
         *
530
         * @ORM\ManyToOne(targetEntity="Eccube\Entity\Member")
531
         * @ORM\JoinColumns({
532
         *   @ORM\JoinColumn(name="creator_id", referencedColumnName="id")
533
         * })
534
         */
535
        private $Creator;
536
537
        /**
538
         * @var \Eccube\Entity\Master\ProductStatus
539
         *
540
         * @ORM\ManyToOne(targetEntity="Eccube\Entity\Master\ProductStatus")
541
         * @ORM\JoinColumns({
542
         *   @ORM\JoinColumn(name="product_status_id", referencedColumnName="id")
543
         * })
544
         */
545
        private $Status;
546 409
547
        /**
548 409
         * Constructor
549 409
         */
550 409
        public function __construct()
551 409
        {
552 409
            $this->ProductCategories = new \Doctrine\Common\Collections\ArrayCollection();
553
            $this->ProductClasses = new \Doctrine\Common\Collections\ArrayCollection();
554
            $this->ProductImage = new \Doctrine\Common\Collections\ArrayCollection();
555 1
            $this->ProductTag = new \Doctrine\Common\Collections\ArrayCollection();
556
            $this->CustomerFavoriteProducts = new \Doctrine\Common\Collections\ArrayCollection();
557 1
        }
558
559
        public function __clone()
560 1
        {
561
            $this->id = null;
562
        }
563 1
564
        public function copy()
565 1
        {
566 1
            // コピー対象外
567 1
            $this->CustomerFavoriteProducts = new ArrayCollection();
568 1
569 1
            $Categories = $this->getProductCategories();
570 1
            $this->ProductCategories = new ArrayCollection();
571
            foreach ($Categories as $Category) {
572
                $CopyCategory = clone $Category;
573 1
                $this->addProductCategory($CopyCategory);
574 1
                $CopyCategory->setProduct($this);
575 1
            }
576 1
577 1
            $Classes = $this->getProductClasses();
578 1
            $this->ProductClasses = new ArrayCollection();
579
            foreach ($Classes as $Class) {
580
                $CopyClass = clone $Class;
581 1
                $this->addProductClass($CopyClass);
582 1
                $CopyClass->setProduct($this);
583 1
            }
584 1
585 1
            $Images = $this->getProductImage();
586 1
            $this->ProductImage = new ArrayCollection();
587
            foreach ($Images as $Image) {
588
                $CloneImage = clone $Image;
589 1
                $this->addProductImage($CloneImage);
590 1
                $CloneImage->setProduct($this);
591 1
            }
592
593
            $Tags = $this->getProductTag();
594
            $this->ProductTag = new ArrayCollection();
595
            foreach ($Tags as $Tag) {
596
                $CloneTag = clone $Tag;
597 1
                $this->addProductTag($CloneTag);
598
                $CloneTag->setProduct($this);
599
            }
600
601
            return $this;
602
        }
603
604
        /**
605 418
         * Get id.
606
         *
607 418
         * @return int
608
         */
609
        public function getId()
610
        {
611
            return $this->id;
612
        }
613
614
        /**
615
         * Set name.
616
         *
617 409
         * @param string $name
618
         *
619 409
         * @return Product
620
         */
621 409
        public function setName($name)
622
        {
623
            $this->name = $name;
624
625
            return $this;
626
        }
627
628
        /**
629 279
         * Get name.
630
         *
631 279
         * @return string
632
         */
633
        public function getName()
634
        {
635
            return $this->name;
636
        }
637
638
        /**
639
         * Set note.
640
         *
641 25
         * @param string|null $note
642
         *
643 25
         * @return Product
644
         */
645 25
        public function setNote($note = null)
646
        {
647
            $this->note = $note;
648
649
            return $this;
650
        }
651
652
        /**
653 18
         * Get note.
654
         *
655 18
         * @return string|null
656
         */
657
        public function getNote()
658
        {
659
            return $this->note;
660
        }
661
662
        /**
663
         * Set descriptionList.
664
         *
665 406
         * @param string|null $descriptionList
666
         *
667 406
         * @return Product
668
         */
669 406
        public function setDescriptionList($descriptionList = null)
670
        {
671
            $this->description_list = $descriptionList;
672
673
            return $this;
674
        }
675
676
        /**
677 20
         * Get descriptionList.
678
         *
679 20
         * @return string|null
680
         */
681
        public function getDescriptionList()
682
        {
683
            return $this->description_list;
684
        }
685
686
        /**
687
         * Set descriptionDetail.
688
         *
689 406
         * @param string|null $descriptionDetail
690
         *
691 406
         * @return Product
692
         */
693 406
        public function setDescriptionDetail($descriptionDetail = null)
694
        {
695
            $this->description_detail = $descriptionDetail;
696
697
            return $this;
698
        }
699
700
        /**
701 29
         * Get descriptionDetail.
702
         *
703 29
         * @return string|null
704
         */
705
        public function getDescriptionDetail()
706
        {
707
            return $this->description_detail;
708
        }
709
710
        /**
711
         * Set searchWord.
712
         *
713 23
         * @param string|null $searchWord
714
         *
715 23
         * @return Product
716
         */
717 23
        public function setSearchWord($searchWord = null)
718
        {
719
            $this->search_word = $searchWord;
720
721
            return $this;
722
        }
723
724
        /**
725 18
         * Get searchWord.
726
         *
727 18
         * @return string|null
728
         */
729
        public function getSearchWord()
730
        {
731
            return $this->search_word;
732
        }
733
734
        /**
735
         * Set freeArea.
736
         *
737 25
         * @param string|null $freeArea
738
         *
739 25
         * @return Product
740
         */
741 25
        public function setFreeArea($freeArea = null)
742
        {
743
            $this->free_area = $freeArea;
744
745
            return $this;
746
        }
747
748
        /**
749 29
         * Get freeArea.
750
         *
751 29
         * @return string|null
752
         */
753
        public function getFreeArea()
754
        {
755
            return $this->free_area;
756
        }
757
758
        /**
759
         * Set createDate.
760
         *
761 408
         * @param \DateTime $createDate
762
         *
763 408
         * @return Product
764
         */
765 408
        public function setCreateDate($createDate)
766
        {
767
            $this->create_date = $createDate;
768
769
            return $this;
770
        }
771
772
        /**
773 8
         * Get createDate.
774
         *
775 8
         * @return \DateTime
776
         */
777
        public function getCreateDate()
778
        {
779
            return $this->create_date;
780
        }
781
782
        /**
783
         * Set updateDate.
784
         *
785 409
         * @param \DateTime $updateDate
786
         *
787 409
         * @return Product
788
         */
789 409
        public function setUpdateDate($updateDate)
790
        {
791
            $this->update_date = $updateDate;
792
793
            return $this;
794
        }
795
796
        /**
797 7
         * Get updateDate.
798
         *
799 7
         * @return \DateTime
800
         */
801
        public function getUpdateDate()
802
        {
803
            return $this->update_date;
804
        }
805
806
        /**
807
         * Add productCategory.
808
         *
809 398
         * @param \Eccube\Entity\ProductCategory $productCategory
810
         *
811 398
         * @return Product
812
         */
813 398
        public function addProductCategory(\Eccube\Entity\ProductCategory $productCategory)
814
        {
815
            $this->ProductCategories[] = $productCategory;
816
817
            return $this;
818
        }
819
820
        /**
821
         * Remove productCategory.
822
         *
823 12
         * @param \Eccube\Entity\ProductCategory $productCategory
824
         *
825 12
         * @return boolean TRUE if this collection contained the specified element, FALSE otherwise.
826
         */
827
        public function removeProductCategory(\Eccube\Entity\ProductCategory $productCategory)
828
        {
829
            return $this->ProductCategories->removeElement($productCategory);
830
        }
831
832
        /**
833 38
         * Get productCategories.
834
         *
835 38
         * @return \Doctrine\Common\Collections\Collection
836
         */
837
        public function getProductCategories()
838
        {
839
            return $this->ProductCategories;
840
        }
841
842
        /**
843
         * Add productClass.
844
         *
845 409
         * @param \Eccube\Entity\ProductClass $productClass
846
         *
847 409
         * @return Product
848
         */
849 409
        public function addProductClass(\Eccube\Entity\ProductClass $productClass)
850
        {
851
            $this->ProductClasses[] = $productClass;
852
853
            return $this;
854
        }
855
856
        /**
857
         * Remove productClass.
858
         *
859
         * @param \Eccube\Entity\ProductClass $productClass
860
         *
861
         * @return boolean TRUE if this collection contained the specified element, FALSE otherwise.
862
         */
863
        public function removeProductClass(\Eccube\Entity\ProductClass $productClass)
864
        {
865
            return $this->ProductClasses->removeElement($productClass);
866
        }
867
868
        /**
869 375
         * Get productClasses.
870
         *
871 375
         * @return \Doctrine\Common\Collections\Collection
872
         */
873
        public function getProductClasses()
874
        {
875
            return $this->ProductClasses;
876
        }
877
878
        /**
879
         * Add productImage.
880
         *
881 398
         * @param \Eccube\Entity\ProductImage $productImage
882
         *
883 398
         * @return Product
884
         */
885 398
        public function addProductImage(\Eccube\Entity\ProductImage $productImage)
886
        {
887
            $this->ProductImage[] = $productImage;
888
889
            return $this;
890
        }
891
892
        /**
893
         * Remove productImage.
894
         *
895 2
         * @param \Eccube\Entity\ProductImage $productImage
896
         *
897 2
         * @return boolean TRUE if this collection contained the specified element, FALSE otherwise.
898
         */
899
        public function removeProductImage(\Eccube\Entity\ProductImage $productImage)
900
        {
901
            return $this->ProductImage->removeElement($productImage);
902
        }
903
904
        /**
905 95
         * Get productImage.
906
         *
907 95
         * @return \Doctrine\Common\Collections\Collection
908
         */
909
        public function getProductImage()
910
        {
911
            return $this->ProductImage;
912
        }
913
914
        /**
915
         * Add productTag.
916
         *
917 18
         * @param \Eccube\Entity\ProductTag $productTag
918
         *
919 18
         * @return Product
920
         */
921 18
        public function addProductTag(\Eccube\Entity\ProductTag $productTag)
922
        {
923
            $this->ProductTag[] = $productTag;
924
925
            return $this;
926
        }
927
928
        /**
929
         * Remove productTag.
930
         *
931 2
         * @param \Eccube\Entity\ProductTag $productTag
932
         *
933 2
         * @return boolean TRUE if this collection contained the specified element, FALSE otherwise.
934
         */
935
        public function removeProductTag(\Eccube\Entity\ProductTag $productTag)
936
        {
937
            return $this->ProductTag->removeElement($productTag);
938
        }
939
940
        /**
941 40
         * Get productTag.
942
         *
943 40
         * @return \Doctrine\Common\Collections\Collection
944
         */
945
        public function getProductTag()
946
        {
947
            return $this->ProductTag;
948
        }
949
950
        /**
951
         * Get Tag
952 31
         * フロント側タグsort_no順の配列を作成する
953
         *
954 31
         * @return []Tag
0 ignored issues
show
The doc-type []Tag could not be parsed: Unknown type name "" at position 0. [(view supported doc-types)

This check marks PHPDoc comments that could not be parsed by our parser. To see which comment annotations we can parse, please refer to our documentation on supported doc-types.

Loading history...
955
         */
956 31
        public function getTags()
957 1
        {
958
            $tags = [];
959
960 31
            foreach ($this->getProductTag() as $productTag) {
961
                $tags[] = $productTag->getTag();
962 31
            }
963
964 31
            usort($tags, function (Tag $tag1, Tag $tag2) {
965
                return $tag1->getSortNo() < $tag2->getSortNo();
966
            });
967
968
            return $tags;
969
        }
970
971
        /**
972
         * Add customerFavoriteProduct.
973
         *
974
         * @param \Eccube\Entity\CustomerFavoriteProduct $customerFavoriteProduct
975
         *
976
         * @return Product
977
         */
978
        public function addCustomerFavoriteProduct(\Eccube\Entity\CustomerFavoriteProduct $customerFavoriteProduct)
979
        {
980
            $this->CustomerFavoriteProducts[] = $customerFavoriteProduct;
981
982
            return $this;
983
        }
984
985
        /**
986
         * Remove customerFavoriteProduct.
987
         *
988
         * @param \Eccube\Entity\CustomerFavoriteProduct $customerFavoriteProduct
989
         *
990
         * @return boolean TRUE if this collection contained the specified element, FALSE otherwise.
991
         */
992
        public function removeCustomerFavoriteProduct(\Eccube\Entity\CustomerFavoriteProduct $customerFavoriteProduct)
993
        {
994
            return $this->CustomerFavoriteProducts->removeElement($customerFavoriteProduct);
995
        }
996
997
        /**
998
         * Get customerFavoriteProducts.
999
         *
1000
         * @return \Doctrine\Common\Collections\Collection
1001
         */
1002
        public function getCustomerFavoriteProducts()
1003
        {
1004
            return $this->CustomerFavoriteProducts;
1005
        }
1006
1007
        /**
1008
         * Set creator.
1009
         *
1010 408
         * @param \Eccube\Entity\Member|null $creator
1011
         *
1012 408
         * @return Product
1013
         */
1014 408
        public function setCreator(\Eccube\Entity\Member $creator = null)
1015
        {
1016
            $this->Creator = $creator;
1017
1018
            return $this;
1019
        }
1020
1021
        /**
1022 12
         * Get creator.
1023
         *
1024 12
         * @return \Eccube\Entity\Member|null
1025
         */
1026
        public function getCreator()
1027
        {
1028
            return $this->Creator;
1029
        }
1030
1031
        /**
1032
         * Set status.
1033
         *
1034 406
         * @param \Eccube\Entity\Master\ProductStatus|null $status
1035
         *
1036 406
         * @return Product
1037
         */
1038 406
        public function setStatus(\Eccube\Entity\Master\ProductStatus $status = null)
1039
        {
1040
            $this->Status = $status;
1041
1042
            return $this;
1043
        }
1044
1045
        /**
1046 106
         * Get status.
1047
         *
1048 106
         * @return \Eccube\Entity\Master\ProductStatus|null
1049
         */
1050
        public function getStatus()
1051
        {
1052
            return $this->Status;
1053
        }
1054
    }
1055
}
1056