<?php
/*
* This file is part of the Sylius package.
*
* (c) Paweł Jędrzejewski
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Sylius\Component\Core\Model;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Comparable;
use Sylius\Component\Resource\Model\TimestampableTrait;
use Sylius\Component\Taxonomy\Model\Taxon as BaseTaxon;
use Sylius\Component\Taxonomy\Model\TaxonTranslation;
class Taxon extends BaseTaxon implements TaxonInterface, Comparable
{
use TimestampableTrait;
/**
* @var Collection|ImageInterface[]
*
* @psalm-var Collection<array-key, ImageInterface>
*/
protected $images;
public function __construct()
{
parent::__construct();
$this->createdAt = new \DateTime();
/** @var ArrayCollection<array-key, ImageInterface> $this->images */
$this->images = new ArrayCollection();
}
public function getImages(): Collection
{
return $this->images;
}
public function getImagesByType(string $type): Collection
{
return $this->images->filter(function (ImageInterface $image) use ($type): bool {
return $type === $image->getType();
});
}
public function hasImages(): bool
{
return !$this->images->isEmpty();
}
public function hasImage(ImageInterface $image): bool
{
return $this->images->contains($image);
}
public function addImage(ImageInterface $image): void
{
$image->setOwner($this);
$this->images->add($image);
}
public function removeImage(ImageInterface $image): void
{
if ($this->hasImage($image)) {
$image->setOwner(null);
$this->images->removeElement($image);
}
}
public static function getTranslationClass(): string
{
return TaxonTranslation::class;
}
public function compareTo($other): int
{
return $this->code === $other->getCode() ? 0 : 1;
}
}