<?php
namespace App\Entity\Pages;
use App\Entity\ClubsCategory;
use App\Entity\ClubsLogoImage;
use App\Entity\Traits\MenuTrait;
use Doctrine\Common\Collections\ArrayCollection;
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 App\Form\Pages\ClubsPageAdminType;
use Symfony\Component\Form\AbstractType;
/**
* @ORM\Entity(repositoryClass="App\Repository\ClubsPageRepository")
* @ORM\Table(name="gcs_clubs_pages")
* @ORM\HasLifecycleCallbacks
* @ORM\AssociationOverrides(
* @ORM\AssociationOverride(name="headerImage",
* joinTable=@ORM\JoinTable(name="gcs_pages_header_images_clubs_page"),
* joinColumns=@ORM\JoinColumn(
* name="clubs_page_id", referencedColumnName="id"
* )
* ),
* @ORM\AssociationOverride(name="listImage",
* joinTable=@ORM\JoinTable(name="gcs_pages_list_images_clubs_page"),
* joinColumns=@ORM\JoinColumn(
* name="clubs_page_id", referencedColumnName="id"
* )
* )
* )
*/
class ClubsPage extends AbstractArticlePage implements HasPageTemplateInterface, SearchTypeInterface, HideSidebarInNodeEditInterface
{
use MenuTrait;
/**
* @var ArrayCollection
*
* @ORM\ManyToMany(targetEntity="App\Entity\ClubsCategory", cascade={"persist"}, inversedBy="clubs")
*/
protected $categories;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\ClubsLogoImage", cascade={"persist"})
* @ORM\JoinTable(name="gcs_clubs_logo_logos_pages_clubs",
* joinColumns={@ORM\JoinColumn(name="clubs_page_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="clubs_logo_logo_id", referencedColumnName="id")}
* )
*/
private $logo;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $name;
public function __construct()
{
$this->categories = new ArrayCollection();
$this->logo = new ArrayCollection();
$this->headerImage = new ArrayCollection();
$this->listImage = new ArrayCollection();
}
/**
* @return
*/
public function getLogo()
{
return $this->logo;
}
public function addLogo(ClubsLogoImage $logo): self
{
if (!$this->logo->contains($logo)) {
$this->logo[] = $logo;
}
return $this;
}
public function removeLogo(ClubsLogoImage $logo): self
{
if ($this->logo->contains($logo)) {
$this->logo->removeElement($logo);
}
return $this;
}
/**
* @param \App\Entity\ClubsCategory $category
* @return $this
*/
public function setCategories($category)
{
$this->categories = $category;
return $this;
}
/**
* @return ArrayCollection
*/
public function getCategories()
{
return $this->categories;
}
public function removeCategories(ClubsCategory $category): self
{
if ($this->categories->contains($category)) {
$this->categories->removeElement($category);
}
return $this;
}
/**
* Returns the default backend form type for this page
*
* @return string
*/
public function getDefaultAdminType()
{
return ClubsPageAdminType::class;
}
/**
* {@inheritdoc}
*/
public function getSearchType()
{
return 'Clubs';
}
/**
* @return array
*/
public function getPagePartAdminConfigurations()
{
return array('clubsmain');
}
/**
* {@inheritdoc}
*/
public function getPageTemplates()
{
return array('clubspage');
}
public function getDefaultView()
{
return 'Pages/ClubsPage/view.html.twig';
}
/**
* Before persisting this entity, check the date.
* When no date is present, fill in current date and time.
*
* @ORM\PrePersist
*/
public function _prePersist()
{
// Set date to now when none is set
if ($this->date == null) {
$this->setDate(new \DateTime());
}
}
public function getName(): ?string
{
return $this->name;
}
public function setName(?string $name): self
{
$this->name = $name;
return $this;
}
}