<?php
declare(strict_types=1);
namespace Crea\MediaBundle\Entity;
use Crea\MediaBundle\Repository\MediaTagRepository;
use Crea\ToolsBundle\Entity\LifecycleUserIdentifierTrait;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=MediaTagRepository::class)
*
* @ORM\Table(name="media_tag")
*/
class MediaTag
{
use LifecycleUserIdentifierTrait;
/**
* @ORM\Id
*
* @ORM\GeneratedValue
*
* @ORM\Column(type="integer")
*/
private ?int $id = null;
/**
* @ORM\Column(type="string", length=512, nullable=true)
*/
private ?string $projectContentFqcn = null;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private ?int $projectContentId = null;
/**
* @ORM\Column(type="string", length=512, nullable=true, unique=true)
*/
private ?string $label = null;
/**
* @ORM\Column(type="string", length=64, nullable=true)
*/
private ?string $color = MediaTagRepository::DEFAULTTAGCOLOR;
/**
* @var string[]|null
*
* @ORM\Column(type="simple_array", nullable=true)
*/
private ?array $mergedTagLabels = null;
/**
* @var Collection<int, MediaFile>
*
* @ORM\ManyToMany(targetEntity=MediaFile::class, inversedBy="mediaTags")
*/
private Collection $mediaFiles;
public function __construct()
{
$this->mediaFiles = new ArrayCollection();
$this->mergedTagLabels = [];
}
public function getId(): ?int
{
return $this->id;
}
public function setId(?int $id): self
{
$this->id = $id;
return $this;
}
public function getProjectContentFqcn(): ?string
{
return $this->projectContentFqcn;
}
public function setProjectContentFqcn(?string $projectContentFqcn): self
{
$this->projectContentFqcn = $projectContentFqcn;
return $this;
}
public function getProjectContentId(): ?int
{
return $this->projectContentId;
}
public function setProjectContentId(?int $projectContentId): self
{
$this->projectContentId = $projectContentId;
return $this;
}
public function getLabel(): ?string
{
return $this->label;
}
public function setLabel(?string $label): self
{
$this->label = $label;
return $this;
}
public function getColor(): ?string
{
return $this->color;
}
public function setColor(?string $color): self
{
$this->color = $color;
return $this;
}
/**
* @return string[]
*/
public function getMergedTagLabels(): array
{
return $this->mergedTagLabels;
}
/**
* @param array<string> $mergedTagLabels
*
* @return $this
*/
public function setMergedTagLabels(array $mergedTagLabels): self
{
$this->mergedTagLabels = $mergedTagLabels;
return $this;
}
/**
* @param string $delimitedTagLabel tag label delimited to avoid miss match
*/
public function addMergedTagLabel(string $delimitedTagLabel): self
{
if (!in_array($delimitedTagLabel, $this->mergedTagLabels, true)) {
$this->mergedTagLabels[] = $delimitedTagLabel;
}
return $this;
}
/**
* @return Collection<int,MediaFile>
*/
public function getMediaFiles(): Collection
{
return $this->mediaFiles;
}
public function addMediaFile(MediaFile $mediaFile): self
{
if (!$this->mediaFiles->contains($mediaFile)) {
$this->mediaFiles[] = $mediaFile;
$mediaFile->addMediaTag($this);
}
return $this;
}
public function removeMediaFile(MediaFile $mediaFile): self
{
if ($this->mediaFiles->removeElement($mediaFile)) {
$mediaFile->removeMediaTag($this);
}
return $this;
}
}