<?php
namespace App\Entity\Pages;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Kunstmaan\ArticleBundle\Entity\AbstractArticlePage;
use Kunstmaan\NodeSearchBundle\Helper\SearchTypeInterface;
use Kunstmaan\PagePartBundle\Helper\HasPageTemplateInterface;
use Kunstmaan\NodeBundle\Entity\HideSidebarInNodeEditInterface;
use Kunstmaan\MediaBundle\Entity\Media;
use App\Form\Pages\NewsPageAdminType;
use Symfony\Component\Form\AbstractType;
use App\Entity\NewsTag;
use App\Repository\NewsPageRepository;
#[ORM\Entity(repositoryClass:NewsPageRepository::class)]
#[ORM\Table(name: 'app_news_pages')]
#[ORM\HasLifecycleCallbacks]
class NewsPage extends AbstractArticlePage implements HasPageTemplateInterface, SearchTypeInterface, HideSidebarInNodeEditInterface
{
/**
* @var ArrayCollection
*
*/
#[ORM\ManyToMany(targetEntity: NewsTag::class,cascade:["persist"])]
#[ORM\JoinTable(name: 'app_news_tag_page_tags')]
#[ORM\JoinColumn(name: 'news_page_id', referencedColumnName: 'id')]
#[ORM\InverseJoinColumn(name: 'news_tag_id', referencedColumnName: 'id')]
protected $tags;
#[ORM\Column(name: 'image_alt_text', type:"text", nullable:true)]
protected string $imageAltText;
#[ORM\ManyToOne(targetEntity: Media::class)]
#[ORM\JoinColumn(name: 'image_id', referencedColumnName: 'id')]
protected $image;
public function __construct()
{
$this->tags = new ArrayCollection();
}
/**
* @param App\Entity\NewsTag $tag
* @return $this
*/
public function setTags($tag)
{
$this->tags = $tag;
return $this;
}
/**
* @return ArrayCollection
*/
public function getTags()
{
return $this->tags;
}
public function addTag(NewsTag $tag)
{
$this->tags[] = $tag;
return $this;
}
public function removeTag(NewsTag $tag)
{
$this->tags->removeElement($tag);
}
/**
* Returns the default backend form type for this page
*
* @return string
*/
public function getDefaultAdminType()
{
return NewsPageAdminType::class;
}
/**
* {@inheritdoc}
*/
public function getSearchType()
{
return 'News';
}
/**
* @return array
*/
public function getPagePartAdminConfigurations()
{
return array('newsmain');
}
/**
* {@inheritdoc}
*/
public function getPageTemplates()
{
return array('newspage');
}
public function getDefaultView()
{
return 'Pages/NewsPage/view.html.twig';
}
/**
* Before persisting this entity, check the date.
* When no date is present, fill in current date and time.
*
* @ORM\PrePersist
*/
#[ORM\PrePersist]
public function _prePersist()
{
// Set date to now when none is set
if ($this->date == null) {
$this->setDate(new \DateTime());
}
}
/**
* Set imageAltText
*
* @param string $imageAltText
*
* @return NewsPage
*/
public function setImageAltText($imageAltText)
{
$this->imageAltText = $imageAltText;
return $this;
}
/**
* Get imageAltText
*
* @return string
*/
public function getImageAltText()
{
return $this->imageAltText;
}
/**
* Set image
*
* @param \Kunstmaan\MediaBundle\Entity\Media $image
*
* @return NewsPage
*/
public function setImage(\Kunstmaan\MediaBundle\Entity\Media $image = null)
{
$this->image = $image;
return $this;
}
/**
* Get image
*
* @return \Kunstmaan\MediaBundle\Entity\Media
*/
public function getImage()
{
return $this->image;
}
}