<?php
namespace App\AtechNet\CoreBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\JoinColumn;
use Doctrine\ORM\Mapping\JoinTable;
use Doctrine\ORM\Mapping\ManyToMany;
use Doctrine\ORM\Mapping\ManyToOne;
use Doctrine\ORM\Mapping\OneToMany;
use Doctrine\ORM\Mapping\OrderBy;
use Doctrine\ORM\Mapping\Table as Table;
/**
* BlogPage
*
* @Table(name="pages_blog")
* @Entity(repositoryClass="App\AtechNet\CoreBundle\Repository\BlogPageRepository")
*/
class BlogPage extends AbstractPage
{
/**
* @var Domain
*
* @ManyToOne(targetEntity="Domain")
* @JoinColumn(name="domain_id", referencedColumnName="id")
*/
private $domain;
/**
* @var CategoryPage
*
* @ManyToOne(targetEntity="CategoryPage")
* @JoinColumn(name="category_page_id", referencedColumnName="id", nullable=true)
*/
private $categoryPage;
/**
* @var string
*
* @Column(name="cover_image", type="text", nullable=true)
*/
private $coverImage;
/**
* @var ArrayCollection
*
* @OneToMany(targetEntity="PageMeta", mappedBy="blogPage", orphanRemoval=true, cascade={"persist", "remove"})
* @OrderBy({"id" = "ASC"})
**/
private $metas;
/**
* @var ArrayCollection
*
* @ManyToMany(targetEntity="Tag", inversedBy="blogPages", cascade={"persist"})
* @JoinTable(
* name="pages_blog_tags",
* joinColumns={
* @JoinColumn(name="blog_page_id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @JoinColumn(name="tag_id", referencedColumnName="id")
* }
* )
**/
private $tags;
public function __construct()
{
parent::__construct();
$this->metas = new ArrayCollection();
$this->tags = new ArrayCollection();
}
/**
* @return Domain
*/
public function getDomain()
{
return $this->domain;
}
/**
* @param Domain $domain
*/
public function setDomain($domain)
{
$this->domain = $domain;
}
/**
* @return CategoryPage
*/
public function getCategoryPage()
{
return $this->categoryPage;
}
/**
* @param CategoryPage $categoryPage
*/
public function setCategoryPage($categoryPage)
{
$this->categoryPage = $categoryPage;
}
/**
* @return string
*/
public function getLink()
{
return $this->link;
}
/**
* @param string $link
*/
public function setLink($link)
{
$this->link = $link;
}
/**
* @return string
*/
public function getLanguage()
{
return $this->getDomain()->getLanguage()->getCode();
}
/**
* @return ArrayCollection
*/
public function getMetas()
{
return $this->metas;
}
/**
* @param Language $language
* @return null|PageMeta
*/
public function getMetaByLanguage(Language $language)
{
foreach ($this->getMetas() as $meta) {
if ($meta->getLanguage()->getCode() == $language->getCode()) {
return $meta;
}
}
return null;
}
/**
* @param string $code
* @return null|PageMeta
*/
public function getMetaByCode($code)
{
foreach ($this->getMetas() as $meta) {
if ($meta->getLanguage()->getCode() == $code) {
return $meta;
}
}
return null;
}
/**
* @return string
*/
public function getCoverImage()
{
return $this->coverImage;
}
/**
* @param string $coverImage
*/
public function setCoverImage($coverImage)
{
$this->coverImage = $coverImage;
}
/**
* @return string
*/
public function getCoverImageLink()
{
return !is_null($this->coverImage) && $this->coverImage != '' ? 'https://www.atechcomp.eu/centralis/web/uploads/media/blog/' . $this->coverImage : null;
}
/**
* @param Tag $tag
*/
public function addTag(Tag $tag): void
{
if (!$this->tags->contains($tag)) {
$this->tags->add($tag);
$tag->addBlogPage($this);
}
}
/**
* @param Tag $tag
*/
public function removeTag(Tag $tag)
{
if ($this->tags->contains($tag)) {
$this->tags->removeElement($tag);
$tag->removeBlogPage($this);
}
}
/**
* @return ArrayCollection
*/
public function getTags()
{
return $this->tags;
}
public function clearTags()
{
$this->tags->clear();
}
}