<?php
/**
* Base Page
*
* @author Vincent van Waasbergen <v.vanwaasbergen@visualmedia.nl>
*/
namespace VisualMedia\PageBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use VisualMedia\LisaBundle\Component\Interfaces\EntityInterface;
use VisualMedia\LisaBundle\Traits\BlameableTrait;
use VisualMedia\LisaBundle\Traits\AutoIdTrait;
use VisualMedia\LisaBundle\Traits\TimestampableTrait;
use VisualMedia\PageBundle\Model\BasePageModel;
use VisualMedia\OrderingBundle\Traits\OrderingTrait;
/**
* Base Page
*
* @ORM\Entity(repositoryClass="VisualMedia\PageBundle\Manager\BasePageManager")
* @ORM\Table(name="page")
*
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="discriminator", type="string")
*/
class BasePage extends BasePageModel implements EntityInterface
{
use BlameableTrait;
use AutoIdTrait;
use OrderingTrait;
use TimestampableTrait;
/**
* @ORM\ManyToMany(targetEntity="VisualMedia\TranslationBundle\Entity\BaseChannel")
* @ORM\JoinTable(name="page_channel",
* joinColumns={@ORM\JoinColumn(name="page_id", referencedColumnName="id", onDelete="CASCADE")},
* inverseJoinColumns={@ORM\JoinColumn(name="channel_id", referencedColumnName="id", onDelete="CASCADE")}
* )
*/
public $channels;
/**
* @ORM\OneToMany(targetEntity="VisualMedia\PageBundle\Entity\BasePageContent", mappedBy="page", cascade={"persist", "remove"}, orphanRemoval=true)
*/
public $contents;
/**
* Translatable
*/
public $title;
public $browserTitle;
public $slug;
public $metaDescription;
public $metaKeywords;
public $htmlContent;
/**
* @ORM\Column(name="published", type="boolean", nullable=false)
*/
public $published = true;
/**
* @ORM\Column(name="indexable", type="boolean", nullable=false)
*/
public $indexable = true;
/**
* @ORM\Column(name="layout", type="string", nullable=true)
*/
public $layout;
/**
* @ORM\Column(name="system_page", type="boolean", nullable=false)
*/
public $systemPage = false;
/**
* @ORM\Column(name="components", type="text", nullable=true)
*
*/
public $components;
/**
* @ORM\ManyToOne(targetEntity="VisualMedia\PageBundle\Entity\BasePage", inversedBy="children")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="CASCADE")
*/
public $parent;
/**
* @ORM\OneToMany(targetEntity="VisualMedia\PageBundle\Entity\BasePage", mappedBy="parent", cascade={"persist"})
* @ORM\OrderBy({"ordering"="ASC"})
*/
public $children;
/**
* @ORM\ManyToMany(targetEntity="VisualMedia\VisualBundle\Entity\BaseVisual")
* @ORM\JoinTable(name="page_visual_link",
* joinColumns={@ORM\JoinColumn(name="page_id", referencedColumnName="id", onDelete="CASCADE")},
* inverseJoinColumns={@ORM\JoinColumn(name="visual_id", referencedColumnName="id", onDelete="CASCADE")}
* )
*/
public $visuals;
/**
* @ORM\ManyToMany(targetEntity="VisualMedia\BlockTemplateBundle\Entity\Block", cascade={"persist", "remove"}, orphanRemoval=true)
* @ORM\JoinTable(name="page_block",
* joinColumns={@ORM\JoinColumn(name="page_id", referencedColumnName="id", onDelete="CASCADE")},
* inverseJoinColumns={@ORM\JoinColumn(name="block_id", referencedColumnName="id", onDelete="CASCADE", unique=true)}
* )
*/
public $blocks;
}