vendor/shopware/core/Content/Category/CategoryEntity.php line 20

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Shopware\Core\Content\Category;
  3. use Shopware\Core\Content\Category\Aggregate\CategoryTranslation\CategoryTranslationCollection;
  4. use Shopware\Core\Content\Cms\CmsPageEntity;
  5. use Shopware\Core\Content\Media\MediaEntity;
  6. use Shopware\Core\Content\Product\ProductCollection;
  7. use Shopware\Core\Content\ProductStream\ProductStreamEntity;
  8. use Shopware\Core\Content\Seo\MainCategory\MainCategoryCollection;
  9. use Shopware\Core\Content\Seo\SeoUrl\SeoUrlCollection;
  10. use Shopware\Core\Framework\DataAbstractionLayer\Entity;
  11. use Shopware\Core\Framework\DataAbstractionLayer\EntityCustomFieldsTrait;
  12. use Shopware\Core\Framework\DataAbstractionLayer\EntityIdTrait;
  13. use Shopware\Core\Framework\Log\Package;
  14. use Shopware\Core\System\SalesChannel\SalesChannelCollection;
  15. use Shopware\Core\System\Tag\TagCollection;
  16. #[Package('content')]
  17. class CategoryEntity extends Entity
  18. {
  19.     use EntityIdTrait;
  20.     use EntityCustomFieldsTrait;
  21.     /**
  22.      * @var string|null
  23.      */
  24.     public $afterCategoryId;
  25.     /**
  26.      * @var string|null
  27.      */
  28.     protected $parentId;
  29.     /**
  30.      * @var int
  31.      */
  32.     protected $autoIncrement;
  33.     /**
  34.      * @var string|null
  35.      */
  36.     protected $mediaId;
  37.     /**
  38.      * @var string|null
  39.      */
  40.     protected $name;
  41.     /**
  42.      * @var array<mixed>|null
  43.      */
  44.     protected $breadcrumb;
  45.     /**
  46.      * @var string|null
  47.      */
  48.     protected $path;
  49.     /**
  50.      * @var int
  51.      */
  52.     protected $level;
  53.     /**
  54.      * @var bool
  55.      */
  56.     protected $active;
  57.     /**
  58.      * @var int
  59.      */
  60.     protected $childCount;
  61.     /**
  62.      * @var int
  63.      */
  64.     protected $visibleChildCount 0;
  65.     /**
  66.      * @var bool
  67.      */
  68.     protected $displayNestedProducts;
  69.     /**
  70.      * @var CategoryEntity|null
  71.      */
  72.     protected $parent;
  73.     /**
  74.      * @var CategoryCollection|null
  75.      */
  76.     protected $children;
  77.     /**
  78.      * @var CategoryTranslationCollection|null
  79.      */
  80.     protected $translations;
  81.     /**
  82.      * @var MediaEntity|null
  83.      */
  84.     protected $media;
  85.     /**
  86.      * @var ProductCollection|null
  87.      */
  88.     protected $products;
  89.     /**
  90.      * @var ProductCollection|null
  91.      */
  92.     protected $nestedProducts;
  93.     /**
  94.      * @var TagCollection|null
  95.      */
  96.     protected $tags;
  97.     /**
  98.      * @var string|null
  99.      */
  100.     protected $cmsPageId;
  101.     /**
  102.      * @var bool
  103.      */
  104.     protected $cmsPageIdSwitched false;
  105.     /**
  106.      * @var CmsPageEntity|null
  107.      */
  108.     protected $cmsPage;
  109.     /**
  110.      * @var string|null
  111.      */
  112.     protected $productStreamId;
  113.     /**
  114.      * @var ProductStreamEntity|null
  115.      */
  116.     protected $productStream;
  117.     /**
  118.      * @var array<mixed>|null
  119.      */
  120.     protected $slotConfig;
  121.     /**
  122.      * @var SalesChannelCollection|null
  123.      */
  124.     protected $navigationSalesChannels;
  125.     /**
  126.      * @var SalesChannelCollection|null
  127.      */
  128.     protected $footerSalesChannels;
  129.     /**
  130.      * @var SalesChannelCollection|null
  131.      */
  132.     protected $serviceSalesChannels;
  133.     /**
  134.      * @var string|null
  135.      */
  136.     protected $linkType;
  137.     /**
  138.      * @var bool|null
  139.      */
  140.     protected $linkNewTab;
  141.     /**
  142.      * @var string|null
  143.      */
  144.     protected $internalLink;
  145.     /**
  146.      * @var string|null
  147.      */
  148.     protected $externalLink;
  149.     /**
  150.      * @var bool
  151.      */
  152.     protected $visible;
  153.     /**
  154.      * @var string
  155.      */
  156.     protected $type;
  157.     /**
  158.      * @var string
  159.      */
  160.     protected $productAssignmentType;
  161.     /**
  162.      * @var string|null
  163.      */
  164.     protected $description;
  165.     /**
  166.      * @var string|null
  167.      */
  168.     protected $metaTitle;
  169.     /**
  170.      * @var string|null
  171.      */
  172.     protected $metaDescription;
  173.     /**
  174.      * @var string|null
  175.      */
  176.     protected $keywords;
  177.     /**
  178.      * @var MainCategoryCollection|null
  179.      */
  180.     protected $mainCategories;
  181.     /**
  182.      * @var SeoUrlCollection|null
  183.      */
  184.     protected $seoUrls;
  185.     public function getParentId(): ?string
  186.     {
  187.         return $this->parentId;
  188.     }
  189.     public function setParentId(?string $parentId): void
  190.     {
  191.         $this->parentId $parentId;
  192.     }
  193.     public function getMediaId(): ?string
  194.     {
  195.         return $this->mediaId;
  196.     }
  197.     public function setMediaId(?string $mediaId): void
  198.     {
  199.         $this->mediaId $mediaId;
  200.     }
  201.     public function getName(): ?string
  202.     {
  203.         return $this->name;
  204.     }
  205.     public function setName(?string $name): void
  206.     {
  207.         $this->name $name;
  208.     }
  209.     public function getPath(): ?string
  210.     {
  211.         return $this->path;
  212.     }
  213.     public function setPath(?string $path): void
  214.     {
  215.         $this->path $path;
  216.     }
  217.     public function getLevel(): int
  218.     {
  219.         return $this->level;
  220.     }
  221.     public function setLevel(int $level): void
  222.     {
  223.         $this->level $level;
  224.     }
  225.     public function getActive(): bool
  226.     {
  227.         return $this->active;
  228.     }
  229.     public function setActive(bool $active): void
  230.     {
  231.         $this->active $active;
  232.     }
  233.     public function getChildCount(): int
  234.     {
  235.         return $this->childCount;
  236.     }
  237.     public function setChildCount(int $childCount): void
  238.     {
  239.         $this->childCount $childCount;
  240.     }
  241.     public function getVisibleChildCount(): int
  242.     {
  243.         return $this->visibleChildCount;
  244.     }
  245.     public function setVisibleChildCount(int $visibleChildCount): void
  246.     {
  247.         $this->visibleChildCount $visibleChildCount;
  248.     }
  249.     public function getParent(): ?CategoryEntity
  250.     {
  251.         return $this->parent;
  252.     }
  253.     public function setParent(CategoryEntity $parent): void
  254.     {
  255.         $this->parent $parent;
  256.     }
  257.     public function getMedia(): ?MediaEntity
  258.     {
  259.         return $this->media;
  260.     }
  261.     public function setMedia(MediaEntity $media): void
  262.     {
  263.         $this->media $media;
  264.     }
  265.     public function getChildren(): ?CategoryCollection
  266.     {
  267.         return $this->children;
  268.     }
  269.     public function setChildren(CategoryCollection $children): void
  270.     {
  271.         $this->children $children;
  272.     }
  273.     public function getTranslations(): ?CategoryTranslationCollection
  274.     {
  275.         return $this->translations;
  276.     }
  277.     public function setTranslations(CategoryTranslationCollection $translations): void
  278.     {
  279.         $this->translations $translations;
  280.     }
  281.     public function getProducts(): ?ProductCollection
  282.     {
  283.         return $this->products;
  284.     }
  285.     public function setProducts(ProductCollection $products): void
  286.     {
  287.         $this->products $products;
  288.     }
  289.     public function getAutoIncrement(): int
  290.     {
  291.         return $this->autoIncrement;
  292.     }
  293.     public function setAutoIncrement(int $autoIncrement): void
  294.     {
  295.         $this->autoIncrement $autoIncrement;
  296.     }
  297.     public function getNestedProducts(): ?ProductCollection
  298.     {
  299.         return $this->nestedProducts;
  300.     }
  301.     public function setNestedProducts(ProductCollection $nestedProducts): void
  302.     {
  303.         $this->nestedProducts $nestedProducts;
  304.     }
  305.     public function getDisplayNestedProducts(): bool
  306.     {
  307.         return $this->displayNestedProducts;
  308.     }
  309.     public function setDisplayNestedProducts(bool $displayNestedProducts): void
  310.     {
  311.         $this->displayNestedProducts $displayNestedProducts;
  312.     }
  313.     public function getAfterCategoryId(): ?string
  314.     {
  315.         return $this->afterCategoryId;
  316.     }
  317.     public function setAfterCategoryId(string $afterCategoryId): void
  318.     {
  319.         $this->afterCategoryId $afterCategoryId;
  320.     }
  321.     public function getTags(): ?TagCollection
  322.     {
  323.         return $this->tags;
  324.     }
  325.     public function setTags(TagCollection $tags): void
  326.     {
  327.         $this->tags $tags;
  328.     }
  329.     public function getCmsPage(): ?CmsPageEntity
  330.     {
  331.         return $this->cmsPage;
  332.     }
  333.     public function setCmsPage(CmsPageEntity $cmsPage): void
  334.     {
  335.         $this->cmsPage $cmsPage;
  336.     }
  337.     public function getCmsPageId(): ?string
  338.     {
  339.         return $this->cmsPageId;
  340.     }
  341.     public function setCmsPageId(string $cmsPageId): void
  342.     {
  343.         $this->cmsPageId $cmsPageId;
  344.     }
  345.     public function getCmsPageIdSwitched(): bool
  346.     {
  347.         return $this->cmsPageIdSwitched;
  348.     }
  349.     public function setCmsPageIdSwitched(bool $switched): void
  350.     {
  351.         $this->cmsPageIdSwitched $switched;
  352.     }
  353.     public function getProductStream(): ?ProductStreamEntity
  354.     {
  355.         return $this->productStream;
  356.     }
  357.     public function setProductStream(ProductStreamEntity $productStream): void
  358.     {
  359.         $this->productStream $productStream;
  360.     }
  361.     public function getProductStreamId(): ?string
  362.     {
  363.         return $this->productStreamId;
  364.     }
  365.     public function setProductStreamId(string $productStreamId): void
  366.     {
  367.         $this->productStreamId $productStreamId;
  368.     }
  369.     /**
  370.      * @return array<mixed>|null
  371.      */
  372.     public function getSlotConfig(): ?array
  373.     {
  374.         return $this->slotConfig;
  375.     }
  376.     /**
  377.      * @param array<mixed> $slotConfig
  378.      */
  379.     public function setSlotConfig(array $slotConfig): void
  380.     {
  381.         $this->slotConfig $slotConfig;
  382.     }
  383.     public function getNavigationSalesChannels(): ?SalesChannelCollection
  384.     {
  385.         return $this->navigationSalesChannels;
  386.     }
  387.     public function setNavigationSalesChannels(SalesChannelCollection $navigationSalesChannels): void
  388.     {
  389.         $this->navigationSalesChannels $navigationSalesChannels;
  390.     }
  391.     public function getFooterSalesChannels(): ?SalesChannelCollection
  392.     {
  393.         return $this->footerSalesChannels;
  394.     }
  395.     public function setFooterSalesChannels(SalesChannelCollection $footerSalesChannels): void
  396.     {
  397.         $this->footerSalesChannels $footerSalesChannels;
  398.     }
  399.     public function getServiceSalesChannels(): ?SalesChannelCollection
  400.     {
  401.         return $this->serviceSalesChannels;
  402.     }
  403.     public function setServiceSalesChannels(SalesChannelCollection $serviceSalesChannels): void
  404.     {
  405.         $this->serviceSalesChannels $serviceSalesChannels;
  406.     }
  407.     public function getLinkType(): ?string
  408.     {
  409.         return $this->linkType;
  410.     }
  411.     public function setLinkType(?string $linkType): void
  412.     {
  413.         $this->linkType $linkType;
  414.     }
  415.     public function getLinkNewTab(): ?bool
  416.     {
  417.         return $this->linkNewTab;
  418.     }
  419.     public function setLinkNewTab(?bool $linkNewTab): void
  420.     {
  421.         $this->linkNewTab $linkNewTab;
  422.     }
  423.     public function getInternalLink(): ?string
  424.     {
  425.         return $this->internalLink;
  426.     }
  427.     public function setInternalLink(?string $internalLink): void
  428.     {
  429.         $this->internalLink $internalLink;
  430.     }
  431.     public function getExternalLink(): ?string
  432.     {
  433.         return $this->externalLink;
  434.     }
  435.     public function setExternalLink(string $externalLink): void
  436.     {
  437.         $this->externalLink $externalLink;
  438.     }
  439.     public function getVisible(): bool
  440.     {
  441.         return $this->visible;
  442.     }
  443.     public function setVisible(bool $visible): void
  444.     {
  445.         $this->visible $visible;
  446.     }
  447.     public function getType(): string
  448.     {
  449.         return $this->type;
  450.     }
  451.     public function setType(string $type): void
  452.     {
  453.         $this->type $type;
  454.     }
  455.     public function getDescription(): ?string
  456.     {
  457.         return $this->description;
  458.     }
  459.     public function setDescription(string $description): void
  460.     {
  461.         $this->description $description;
  462.     }
  463.     /**
  464.      * @return array<mixed>
  465.      */
  466.     public function getBreadcrumb(): array
  467.     {
  468.         return array_values($this->getPlainBreadcrumb());
  469.     }
  470.     /**
  471.      * @return array<mixed>
  472.      */
  473.     public function getPlainBreadcrumb(): array
  474.     {
  475.         $breadcrumb $this->getTranslation('breadcrumb');
  476.         if ($breadcrumb === null) {
  477.             return [];
  478.         }
  479.         if ($this->path === null) {
  480.             return $breadcrumb;
  481.         }
  482.         $parts \array_slice(explode('|'$this->path), 1, -1);
  483.         $filtered = [];
  484.         foreach ($parts as $id) {
  485.             if (isset($breadcrumb[$id])) {
  486.                 $filtered[$id] = $breadcrumb[$id];
  487.             }
  488.         }
  489.         $filtered[$this->getId()] = $breadcrumb[$this->getId()];
  490.         return $filtered;
  491.     }
  492.     /**
  493.      * @param array<mixed>|null $breadcrumb
  494.      */
  495.     public function setBreadcrumb(?array $breadcrumb): void
  496.     {
  497.         $this->breadcrumb $breadcrumb;
  498.     }
  499.     /**
  500.      * @return array<mixed>
  501.      */
  502.     public function jsonSerialize(): array
  503.     {
  504.         // Make sure that the sorted breadcrumb gets serialized
  505.         $data parent::jsonSerialize();
  506.         $data['translated']['breadcrumb'] = $data['breadcrumb'] = $this->getBreadcrumb();
  507.         return $data;
  508.     }
  509.     public function getMainCategories(): ?MainCategoryCollection
  510.     {
  511.         return $this->mainCategories;
  512.     }
  513.     public function setMainCategories(MainCategoryCollection $mainCategories): void
  514.     {
  515.         $this->mainCategories $mainCategories;
  516.     }
  517.     public function getMetaTitle(): ?string
  518.     {
  519.         return $this->metaTitle;
  520.     }
  521.     public function setMetaTitle(?string $metaTitle): void
  522.     {
  523.         $this->metaTitle $metaTitle;
  524.     }
  525.     public function getMetaDescription(): ?string
  526.     {
  527.         return $this->metaDescription;
  528.     }
  529.     public function setMetaDescription(?string $metaDescription): void
  530.     {
  531.         $this->metaDescription $metaDescription;
  532.     }
  533.     public function getKeywords(): ?string
  534.     {
  535.         return $this->keywords;
  536.     }
  537.     public function setKeywords(?string $keywords): void
  538.     {
  539.         $this->keywords $keywords;
  540.     }
  541.     public function getSeoUrls(): ?SeoUrlCollection
  542.     {
  543.         return $this->seoUrls;
  544.     }
  545.     public function setSeoUrls(SeoUrlCollection $seoUrls): void
  546.     {
  547.         $this->seoUrls $seoUrls;
  548.     }
  549.     public function getProductAssignmentType(): string
  550.     {
  551.         return $this->productAssignmentType;
  552.     }
  553.     public function setProductAssignmentType(string $productAssignmentType): void
  554.     {
  555.         $this->productAssignmentType $productAssignmentType;
  556.     }
  557. }