<?php declare(strict_types=1);
namespace Shopware\Core\Content\Cms;
use Shopware\Core\Content\Category\CategoryCollection;
use Shopware\Core\Content\Cms\Aggregate\CmsPageTranslation\CmsPageTranslationEntity;
use Shopware\Core\Content\Cms\Aggregate\CmsSection\CmsSectionCollection;
use Shopware\Core\Content\Cms\Aggregate\CmsSlot\CmsSlotEntity;
use Shopware\Core\Content\LandingPage\LandingPageCollection;
use Shopware\Core\Content\Media\MediaEntity;
use Shopware\Core\Content\Product\ProductCollection;
use Shopware\Core\Framework\DataAbstractionLayer\Entity;
use Shopware\Core\Framework\DataAbstractionLayer\EntityCollection;
use Shopware\Core\Framework\DataAbstractionLayer\EntityCustomFieldsTrait;
use Shopware\Core\Framework\DataAbstractionLayer\EntityIdTrait;
class CmsPageEntity extends Entity
{
use EntityIdTrait;
use EntityCustomFieldsTrait;
/**
* @var string|null
*/
protected $name;
/**
* @var string
*/
protected $type;
/**
* @var string|null
*/
protected $entity;
/**
* @var CmsSectionCollection|null
*/
protected $sections;
/**
* @var EntityCollection<CmsPageTranslationEntity>|null
*/
protected $translations;
/**
* @var CategoryCollection|null
*/
protected $categories;
/**
* @var ProductCollection|null
*/
protected $products;
/**
* @var string|null
*/
protected $cssClass;
/**
* @var array|null
*/
protected $config;
/**
* @var string|null
*/
protected $previewMediaId;
/**
* @var MediaEntity|null
*/
protected $previewMedia;
/**
* @var bool
*/
protected $locked;
/**
* @var LandingPageCollection|null
*/
protected $landingPages;
/**
* @var CmsPageCollection|null
*/
protected $homeSalesChannels;
public function getName(): ?string
{
return $this->name;
}
public function setName(?string $name): void
{
$this->name = $name;
}
public function getType(): string
{
return $this->type;
}
public function setType(string $type): void
{
$this->type = $type;
}
public function getEntity(): ?string
{
return $this->entity;
}
public function setEntity(?string $entity): void
{
$this->entity = $entity;
}
public function getSections(): ?CmsSectionCollection
{
return $this->sections;
}
public function setSections(CmsSectionCollection $sections): void
{
$this->sections = $sections;
}
/**
* @return EntityCollection<CmsPageTranslationEntity>|null
*/
public function getTranslations(): ?EntityCollection
{
return $this->translations;
}
/**
* @param EntityCollection<CmsPageTranslationEntity> $translations
*/
public function setTranslations(EntityCollection $translations): void
{
$this->translations = $translations;
}
public function getCategories(): ?CategoryCollection
{
return $this->categories;
}
public function setCategories(CategoryCollection $categories): void
{
$this->categories = $categories;
}
public function getProducts(): ?ProductCollection
{
return $this->products;
}
public function setProducts(ProductCollection $products): void
{
$this->products = $products;
}
public function getCssClass(): ?string
{
return $this->cssClass;
}
public function setCssClass(?string $cssClass): void
{
$this->cssClass = $cssClass;
}
public function getConfig(): ?array
{
return $this->config;
}
public function setConfig(array $config): void
{
$this->config = $config;
}
public function getPreviewMediaId(): ?string
{
return $this->previewMediaId;
}
public function setPreviewMediaId(string $previewMediaId): void
{
$this->previewMediaId = $previewMediaId;
}
public function getPreviewMedia(): ?MediaEntity
{
return $this->previewMedia;
}
public function setPreviewMedia(MediaEntity $previewMedia): void
{
$this->previewMedia = $previewMedia;
}
public function getLocked(): bool
{
return $this->locked;
}
public function setLocked(bool $locked): void
{
$this->locked = $locked;
}
public function getFirstElementOfType(string $type): ?CmsSlotEntity
{
$elements = $this->getElementsOfType($type);
return array_shift($elements);
}
public function getLandingPages(): ?LandingPageCollection
{
return $this->landingPages;
}
public function setLandingPages(LandingPageCollection $landingPages): void
{
$this->landingPages = $landingPages;
}
public function getHomeSalesChannels(): ?CmsPageCollection
{
return $this->homeSalesChannels;
}
public function setHomeSalesChannels(CmsPageCollection $homeSalesChannels): void
{
$this->homeSalesChannels = $homeSalesChannels;
}
public function getElementsOfType(string $type): array
{
$elements = [];
if ($this->getSections() === null) {
return $elements;
}
foreach ($this->getSections()->getBlocks() as $block) {
if ($block->getSlots() === null) {
continue;
}
foreach ($block->getSlots() as $slot) {
if ($slot->getType() === $type) {
$elements[] = $slot;
}
}
}
return $elements;
}
}