<?php
/*
* This file is part of Sulu.
*
* (c) Sulu GmbH
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace Sulu\Bundle\CategoryBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Sulu\Component\Security\Authentication\UserInterface;
/**
* CategoryTranslation.
*/
class CategoryTranslation implements CategoryTranslationInterface
{
/**
* @var string
*/
protected $translation;
/**
* @var string
*/
protected $description;
/**
* @var CategoryTranslationMedia[]
*/
protected $medias;
/**
* @var string
*/
protected $locale;
/**
* @var int
*/
protected $id;
/**
* @var CategoryInterface
*/
protected $category;
/**
* @var UserInterface|null
*/
protected $creator;
/**
* @var UserInterface|null
*/
protected $changer;
/**
* @var \DateTime
*/
protected $created;
/**
* @var \DateTime
*/
protected $changed;
/**
* @var Collection|KeywordInterface[]
*/
protected $keywords;
public function __construct()
{
$this->keywords = new ArrayCollection();
$this->medias = new ArrayCollection();
}
public function setTranslation($translation)
{
$this->translation = $translation;
return $this;
}
public function getTranslation()
{
return $this->translation;
}
public function getDescription()
{
return $this->description;
}
public function setDescription($description)
{
$this->description = $description;
return $this;
}
public function getMedias()
{
$medias = [];
foreach ($this->medias as $media) {
$medias[] = $media->getMedia();
}
return $medias;
}
public function setMedias($medias)
{
$position = 0;
foreach ($this->medias as $media) {
$mediaEntity = $medias[$position] ?? null;
++$position;
if (!$mediaEntity) {
$this->medias->removeElement($media);
continue;
}
$media->setMedia($mediaEntity);
$media->setPosition($position);
}
for (; $position < \count($medias); ++$position) {
$media = new CategoryTranslationMedia($this, $medias[$position], $position + 1);
$this->medias->add($media);
}
}
public function setLocale($locale)
{
$this->locale = $locale;
return $this;
}
public function getLocale()
{
return $this->locale;
}
public function getId()
{
return $this->id;
}
public function setCategory(CategoryInterface $category)
{
$this->category = $category;
return $this;
}
public function getCategory()
{
return $this->category;
}
public function getCreator()
{
return $this->creator;
}
public function setCreator($creator)
{
$this->creator = $creator;
}
public function getChanger()
{
return $this->changer;
}
public function setChanger($changer)
{
$this->changer = $changer;
}
public function getCreated()
{
return $this->created;
}
public function setCreated($created)
{
$this->created = $created;
}
public function getChanged()
{
return $this->changed;
}
public function setChanged($changed)
{
$this->changed = $changed;
}
public function addKeyword(KeywordInterface $keyword)
{
$this->keywords[] = $keyword;
return $this;
}
public function removeKeyword(KeywordInterface $keyword)
{
$this->keywords->removeElement($keyword);
}
public function getKeywords()
{
return $this->keywords;
}
public function hasKeyword(KeywordInterface $keyword)
{
return $this->getKeywords()->exists(
function($key, KeywordInterface $element) use ($keyword) {
return $element->equals($keyword);
}
);
}
}