136 lines
3.3 KiB
PHP
136 lines
3.3 KiB
PHP
<?php
|
|
|
|
namespace KupShop\ContentBundle\Feed\Wrapper;
|
|
|
|
use Doctrine\Common\Collections\ArrayCollection;
|
|
use KupShop\FeedsBundle\Utils\FeedUtils;
|
|
use KupShop\FeedsBundle\Wrapper\BaseWrapper;
|
|
use KupShop\FeedsBundle\Wrapper\BlockWrapper;
|
|
use KupShop\FeedsBundle\Wrapper\BlockWrapperFactory;
|
|
use KupShop\FeedsBundle\Wrapper\MultiWrapper;
|
|
use KupShop\FeedsBundle\Wrapper\PhotoWrapper;
|
|
use KupShop\FeedsBundle\Wrapper\PhotoWrapperFactory;
|
|
use Symfony\Component\Routing\Router;
|
|
|
|
class PageWrapper extends BaseWrapper
|
|
{
|
|
protected ArrayCollection $objects;
|
|
|
|
protected array $feedRow;
|
|
|
|
protected MultiWrapper $blocksWrapper;
|
|
|
|
protected PhotoWrapper $photoWrapper;
|
|
protected MultiWrapper $photosWrapper;
|
|
|
|
public function __construct(
|
|
PhotoWrapper $photoWrapper,
|
|
PhotoWrapperFactory $photoWrapperFactory,
|
|
BlockWrapper $blockWrapper,
|
|
BlockWrapperFactory $blockWrapperFactory,
|
|
protected FeedUtils $feedUtils,
|
|
) {
|
|
$this->photoWrapper = $photoWrapper;
|
|
$this->photosWrapper = new MultiWrapper($photoWrapper, $photoWrapperFactory);
|
|
$this->blocksWrapper = new MultiWrapper($blockWrapper, $blockWrapperFactory);
|
|
}
|
|
|
|
/**
|
|
* @param array|null $feedRow
|
|
*
|
|
* @private
|
|
*/
|
|
public function setFeedRow($feedRow)
|
|
{
|
|
$this->feedRow = $feedRow;
|
|
}
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
public function setObjects(ArrayCollection $objects): void
|
|
{
|
|
$this->objects = $objects;
|
|
}
|
|
|
|
/** ID stránky */
|
|
public function field_id(): int
|
|
{
|
|
return (int) $this->object->id;
|
|
}
|
|
|
|
/** Název stránky */
|
|
public function field_title(): ?string
|
|
{
|
|
return $this->object->name ?? null;
|
|
}
|
|
|
|
/** Krátký název stránky v menu */
|
|
public function field_title_short(): ?string
|
|
{
|
|
return $this->object->name_short ?? null;
|
|
}
|
|
|
|
/** Viditelnost stránky.
|
|
*
|
|
* Y - Viditelná
|
|
* N - Skrytá
|
|
*/
|
|
public function field_visibility(): string
|
|
{
|
|
return $this->object->figure ?? 'Y';
|
|
}
|
|
|
|
/** Hlavní obrázek */
|
|
public function field_main_photo()
|
|
{
|
|
$this->fetchPhotos();
|
|
|
|
return ($this->object->_main_photo['src'] ?? false) ? $this->photoWrapper->setObject($this->object->_main_photo) : null;
|
|
}
|
|
|
|
/** Ostatní obrázky */
|
|
public function field_photos()
|
|
{
|
|
$this->fetchPhotos();
|
|
|
|
return $this->photosWrapper->setObject($this->object->_photos ?? []);
|
|
}
|
|
|
|
/** URL adresa stránky */
|
|
public function field_url(): string
|
|
{
|
|
return path(
|
|
'page_not_found',
|
|
['path' => $this->object->url],
|
|
Router::ABSOLUTE_URL
|
|
);
|
|
}
|
|
|
|
/** Bloky (obsah) */
|
|
public function field_blocks()
|
|
{
|
|
$this->feedUtils->fetchCollectionBlocks($this->objects);
|
|
|
|
return !empty($this->object->_raw_blocks) ? $this->blocksWrapper->setObject($this->object->_raw_blocks) : [];
|
|
}
|
|
|
|
/** SEO název */
|
|
public function field_meta_title()
|
|
{
|
|
return $this->object->meta_title;
|
|
}
|
|
|
|
/** SEO popis */
|
|
public function field_meta_description()
|
|
{
|
|
return $this->object->meta_description;
|
|
}
|
|
|
|
/** @private */
|
|
protected function fetchPhotos()
|
|
{
|
|
$this->feedUtils->fetchPhotos($this->objects, 'photos_menu_relation', 'id_menu', 'product_catalog');
|
|
}
|
|
}
|