vendor/nen/kennisbank-platform/src/Nen/Entity/BoltPage.php line 20

Open in your IDE?
  1. <?php
  2. namespace Nen\Bundle\KennisbankPlatformBundle\Entity;
  3. use Doctrine\Common\Collections\Collection;
  4. use Doctrine\Common\Collections\Criteria;
  5. use Doctrine\ORM\Mapping as ORM;
  6. use Gedmo\Mapping\Annotation as Gedmo;
  7. use Gedmo\Translatable\Translatable;
  8. use Nen\Bundle\KennisbankPlatformBundle\Entity\Bolt\BoltEntity;
  9. use Nen\Bundle\KennisbankPlatformBundle\Entity\Bolt\BoltEntitySeoTrait;
  10. use Nen\Bundle\KennisbankPlatformBundle\Entity\Bolt\BoltEntityTranslatableTrait;
  11. use Nen\Bundle\KennisbankPlatformBundle\Entity\Bolt\BoltTaxonomy;
  12. use Nen\Bundle\KennisbankPlatformBundle\Repository\BoltPageRepository;
  13. /**
  14.  * @ORM\Entity(repositoryClass=BoltPageRepository::class)
  15.  * @ORM\Table(name="bolt_pages")
  16.  */
  17. class BoltPage extends BoltEntity implements Translatable
  18. {
  19.     use BoltEntitySeoTrait;
  20.     use BoltEntityTranslatableTrait;
  21.     /**
  22.      * @ORM\OneToMany(targetEntity=BoltTaxonomy::class, mappedBy="page")
  23.      */
  24.     protected Collection $taxonomy;
  25.     /**
  26.      * @ORM\Column(name="title", type="string", length=256, nullable=true)
  27.      *
  28.      * @Gedmo\Translatable()
  29.      */
  30.     private ?string $title null;
  31.     /**
  32.      * @ORM\Column(name="description", type="text", nullable=true)
  33.      *
  34.      * @Gedmo\Translatable()
  35.      */
  36.     private ?string $description null;
  37.     /**
  38.      * @ORM\Column(name="faqs", type="string", length=256, nullable=true)
  39.      */
  40.     private ?string $faqCategory null;
  41.     /**
  42.      * @ORM\Column(name="about_title", type="string", length=256, nullable=true)
  43.      *
  44.      * @Gedmo\Translatable()
  45.      */
  46.     private ?string $aboutTitle null;
  47.     /**
  48.      * @ORM\Column(name="about_description", type="text", nullable=true)
  49.      *
  50.      * @Gedmo\Translatable()
  51.      */
  52.     private ?string $aboutDescription null;
  53.     /**
  54.      * @ORM\Column(name="tool", type="text", nullable=true)
  55.      */
  56.     private ?string $tool null;
  57.     /**
  58.      * @ORM\Column(name="subscriptions", type="json", nullable=true)
  59.      */
  60.     private ?array $subscriptions null;
  61.     private array $blocks = [];
  62.     private array $pages = [];
  63.     private array $faqs = [];
  64.     private array $sections = [];
  65.     public function getTitle(): ?string
  66.     {
  67.         return $this->title;
  68.     }
  69.     public function setTitle(?string $title): self
  70.     {
  71.         $this->title $title;
  72.         return $this;
  73.     }
  74.     public function getDescription(): ?string
  75.     {
  76.         return $this->description;
  77.     }
  78.     public function setDescription(?string $description): self
  79.     {
  80.         $this->description $description;
  81.         return $this;
  82.     }
  83.     public function getFaqCategory(): ?string
  84.     {
  85.         return $this->faqCategory;
  86.     }
  87.     public function setFaqCategory(?string $faqCategory): self
  88.     {
  89.         $this->faqCategory $faqCategory;
  90.         return $this;
  91.     }
  92.     public function getAboutTitle(): ?string
  93.     {
  94.         return $this->aboutTitle;
  95.     }
  96.     public function setAboutTitle(?string $aboutTitle): self
  97.     {
  98.         $this->aboutTitle $aboutTitle;
  99.         return $this;
  100.     }
  101.     public function getAboutDescription(): ?string
  102.     {
  103.         return $this->aboutDescription;
  104.     }
  105.     public function setAboutDescription(?string $aboutDescription): self
  106.     {
  107.         $this->aboutDescription $aboutDescription;
  108.         return $this;
  109.     }
  110.     public function getBlocks(): array
  111.     {
  112.         return $this->blocks;
  113.     }
  114.     public function setBlocks(array $blocks): self
  115.     {
  116.         $this->blocks $blocks;
  117.         return $this;
  118.     }
  119.     public function hasBlocks(): bool
  120.     {
  121.         return count($this->blocks) > 0;
  122.     }
  123.     public function getPages(): array
  124.     {
  125.         return $this->pages;
  126.     }
  127.     public function setPages(array $pages): self
  128.     {
  129.         $this->pages $pages;
  130.         return $this;
  131.     }
  132.     public function hasPages(): bool
  133.     {
  134.         return count($this->pages) > 0;
  135.     }
  136.     public function getFaqs(): array
  137.     {
  138.         return $this->faqs;
  139.     }
  140.     public function setFaqs(array $faqs): self
  141.     {
  142.         $this->faqs $faqs;
  143.         return $this;
  144.     }
  145.     public function getSection(): ?BoltTaxonomy
  146.     {
  147.         return $this->taxonomy->matching(
  148.             Criteria::create()
  149.                 ->andWhere(Criteria::expr()->eq('contenttype''pages'))
  150.                 ->andWhere(Criteria::expr()->eq('contentId'$this->getId()))
  151.                 ->andWhere(Criteria::expr()->eq('taxonomytype''sections'))
  152.                 // Since Bolt 3 taxonomy is always saved, even when empty.
  153.                 ->andWhere(Criteria::expr()->neq('slug'''))
  154.                 ->setMaxResults(1)
  155.         )->first() ?: null;
  156.     }
  157.     public function getSubscriptions(): ?array
  158.     {
  159.         return $this->subscriptions;
  160.     }
  161.     public function setSubscriptions(?array $subscriptions): self
  162.     {
  163.         $this->subscriptions $subscriptions;
  164.         return $this;
  165.     }
  166.     public function getTool(): ?string
  167.     {
  168.         return $this->tool;
  169.     }
  170.     public function setTool(?string $tool): self
  171.     {
  172.         $this->tool $tool;
  173.         return $this;
  174.     }
  175.     public function getSections(): array
  176.     {
  177.         return $this->sections;
  178.     }
  179.     public function setSections(array $sections): self
  180.     {
  181.         foreach ($sections as $section) {
  182.             $first array_values($section)[0];
  183.             $this->sections[] = [
  184.                 'type' => $first->getBlock(),
  185.                 'value' => $section,
  186.             ];
  187.         }
  188.         return $this;
  189.     }
  190. }