Files
2025-08-02 16:30:27 +02:00

376 lines
6.5 KiB
PHP

<?php
namespace KupShop\ContentBundle\Entity;
use Doctrine\Common\Collections\Collection;
use KupShop\ContentBundle\Util\BlockCollection;
class Page
{
private $id;
private $block;
private $childBlocksHierarchy;
private $template = '';
private int $type;
private ?int $parentId = null;
private $name = '';
private string $nameShort = '';
private ?string $link = null;
private string $target = '';
private $label = '';
private $erasable = 'Y';
private $selectable = 'Y';
private $meta_title;
private $meta_description;
private $meta_keywords;
private $old_id_page = '';
private $figure = 'Y';
private $show_in_search = 'Y';
private $url;
private $data;
private array $photos = [];
private array $children = [];
public function getId()
{
return $this->id;
}
public function setId($id)
{
$this->id = $id;
return $this;
}
public function addPhoto(array $photo)
{
$this->photos[] = $photo;
}
public function getPhotos()
{
return $this->photos;
}
public function setTemplate($template)
{
$this->template = $template;
return $this;
}
public function getTemplate()
{
return $this->template;
}
public function setType(int $type): self
{
$this->type = $type;
return $this;
}
public function getType(): int
{
return $this->type;
}
public function setParentId(?int $parentId): self
{
$this->parentId = $parentId;
return $this;
}
public function getParentId(): ?int
{
return $this->parentId;
}
public function setName($name)
{
$this->name = $name;
return $this;
}
public function getName()
{
return $this->name;
}
public function setNameShort(string $nameShort): self
{
$this->nameShort = $nameShort;
return $this;
}
public function getNameShort(): string
{
return $this->nameShort;
}
public function setLink(?string $link): self
{
$this->link = $link;
return $this;
}
public function getLink(): ?string
{
return $this->link;
}
public function setTarget(string $target): self
{
$this->target = $target;
return $this;
}
public function getTarget(): ?string
{
return $this->target;
}
public function setLabel($label)
{
$this->label = $label;
return $this;
}
public function getLabel()
{
return $this->label;
}
public function setOldIdPage($old_id_page)
{
$this->old_id_page = $old_id_page;
return $this;
}
public function getOldIdPage()
{
return $this->old_id_page;
}
public function setErasable($erasable)
{
$this->erasable = $erasable;
return $this;
}
public function getErasable()
{
return $this->erasable;
}
public function setSelectable($selectable)
{
$this->selectable = $selectable;
return $this;
}
public function getSelectable()
{
return $this->selectable;
}
public function getChildBlocks(): Collection
{
if ($this->getBlock()) {
return $this->getBlock()->getBlocks();
}
if (!getAdminUser()) {
return new BlockCollection();
}
return new BlockCollection([new Block()]);
}
public function getMetaTitle()
{
if ($this->meta_title) {
return $this->meta_title;
}
return $this->name;
}
public function setMetaTitle(string $meta_title)
{
$this->meta_title = $meta_title;
return $this;
}
public function getMetaDescription()
{
if ($this->meta_description) {
return $this->meta_description;
}
$dbcfg = \Settings::getDefault();
return $this->name.' - '.$dbcfg->shop_description;
}
public function setMetaDescription(string $meta_description)
{
$this->meta_description = $meta_description;
return $this;
}
public function getMetaKeywords()
{
if ($this->meta_keywords) {
return $this->meta_keywords;
}
$dbcfg = \Settings::getDefault();
return $dbcfg->shop_keywords;
}
public function setMetaKeywords(string $meta_keywords)
{
$this->meta_keywords = $meta_keywords;
return $this;
}
public function setBlock(?Block $block = null)
{
$this->block = $block;
return $this;
}
public function getBlock()
{
return $this->block;
}
/** Get blocks hierarchy
* returns only root blocks with cached children.
*/
public function getChildBlocksHierarchy(): BlockCollection
{
if (!$this->childBlocksHierarchy) {
$this->childBlocksHierarchy = Block::buildBlocksHierarchy($this->getChildBlocks());
}
return $this->childBlocksHierarchy;
}
public function setChildBlocksHierarchy($childBlocksHierarchy)
{
$this->childBlocksHierarchy = $childBlocksHierarchy;
return $this->childBlocksHierarchy;
}
public function getFigure(): string
{
return $this->figure;
}
public function setFigure(string $figure): Page
{
$this->figure = $figure;
return $this;
}
public function getShowInSearch(): string
{
return $this->show_in_search;
}
public function setShowInSearch(string $show_in_search): Page
{
$this->show_in_search = $show_in_search;
return $this;
}
public function getUrl(): ?string
{
return $this->url;
}
public function setUrl(?string $url)
{
$this->url = $url;
return $this;
}
/**
* @return array
*/
public function getData()
{
return $this->data;
}
/**
* @param array $data
*
* @return Page
*/
public function setData($data)
{
$this->data = $data;
return $this;
}
public function setChildren(array $children): self
{
$this->children = $children;
return $this;
}
public function getChildren(): array
{
return $this->children;
}
public function appendChild(Page $child): void
{
$this->children[$child->getId()] = $child;
}
}