<?php
/**
* (c) itmedia.by <info@itmedia.by>
*/
namespace Submarine\PagesBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Postroyka\AppBundle\Redis\RedisBaseProvider;
use Submarine\CoreBundle\Entity\SubmarineEntityInterface;
use Doctrine\ORM\Mapping as ORM;
/**
* Class PageBody
* @package Submarine\PagesBundle
*
* @ORM\Entity()
* @ORM\Table(name="submarine_pages_body")
*
* @ORM\HasLifecycleCallbacks()
*/
class PageBody implements SubmarineEntityInterface
{
/**
* ID
* @var int
*
* @ORM\Column(name="id", type="integer", nullable=false, unique=true)
* @ORM\Id()
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* Тело документа
* @var string
*
* @ORM\Column(name="body", type="text", nullable=true)
*/
private $body;
/**
* @var ArrayCollection|Page[]
* @ORM\OneToMany(targetEntity="Submarine\PagesBundle\Entity\Page", mappedBy="pageBody", cascade={"persist", "remove"})
*/
private $pages;
public function __construct()
{
$this->pages = new ArrayCollection();
}
/**
* Имя сущности
* @return string
*/
public static function entityName()
{
return __CLASS__;
}
/**
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* @param int $id
*/
public function setId($id)
{
$this->id = $id;
}
/**
* @return string
*/
public function getBody()
{
return $this->body;
}
/**
* @param string $body
*/
public function setBody($body)
{
$this->body = $body;
}
/**
* @return ArrayCollection
*/
public function getPages(): ArrayCollection
{
return $this->pages;
}
/**
* @param ArrayCollection $pages
*/
public function setPages(ArrayCollection $pages): void
{
$this->pages = $pages;
}
public function __toString()
{
return $this->getBody();
}
/**
* @ORM\PreUpdate()
*/
public function preUpdate()
{
/** @var Page $page */
foreach ($this->pages->toArray() as $page) {
$page->setUpdatedAt(new \DateTime());
}
RedisBaseProvider::clearKeysByPattern('*' . RedisBaseProvider::REDIS_HOMEPAGE_KEY);
RedisBaseProvider::clearKeysByPattern('*' . RedisBaseProvider::CATALOG_PAGE_REDIS_KEY . '*');
}
}