src/Entity/Pages/NewsPage.php line 40

Open in your IDE?
  1. <?php
  2. namespace App\Entity\Pages;
  3. use App\Entity\HeaderImage;
  4. use App\Entity\ListImage;
  5. use App\Entity\NewsCategory;
  6. use App\Entity\NewsTag;
  7. use App\Entity\Traits\MenuTrait;
  8. use Doctrine\Common\Collections\ArrayCollection;
  9. use Doctrine\ORM\Mapping as ORM;
  10. use Doctrine\ORM\PersistentCollection;
  11. use Kunstmaan\ArticleBundle\Entity\AbstractArticlePage;
  12. use Kunstmaan\NodeSearchBundle\Helper\SearchTypeInterface;
  13. use Kunstmaan\PagePartBundle\Helper\HasPageTemplateInterface;
  14. use Kunstmaan\NodeBundle\Entity\HideSidebarInNodeEditInterface;
  15. use App\Form\Pages\NewsPageAdminType;
  16. use Symfony\Component\Form\AbstractType;
  17. use Symfony\Component\Validator\Constraints\Collection;
  18. /**
  19.  * @ORM\Entity(repositoryClass="App\Repository\NewsPageRepository")
  20.  * @ORM\Table(name="gcs_news_pages")
  21.  * @ORM\HasLifecycleCallbacks
  22.  * @ORM\AssociationOverrides(
  23.  *      @ORM\AssociationOverride(name="headerImage",
  24.  *          joinTable=@ORM\JoinTable(name="gcs_pages_header_images_news_page"),
  25.  *          joinColumns=@ORM\JoinColumn(
  26.  *              name="news_page_id", referencedColumnName="id"
  27.  *          )
  28.  *      ),
  29.  *      @ORM\AssociationOverride(name="listImage",
  30.  *          joinTable=@ORM\JoinTable(name="gcs_pages_list_images_news_page"),
  31.  *          joinColumns=@ORM\JoinColumn(
  32.  *              name="news_page_id", referencedColumnName="id"
  33.  *          )
  34.  *      )
  35.  * )
  36.  */
  37. class NewsPage extends AbstractArticlePage implements HasPageTemplateInterfaceSearchTypeInterfaceHideSidebarInNodeEditInterface
  38. {
  39.     use MenuTrait;
  40.     /**
  41.      * @var \App\Entity\NewsAuthor
  42.      *
  43.      * @ORM\ManyToOne(targetEntity="App\Entity\NewsAuthor")
  44.      * @ORM\JoinColumn(name="news_author_id", referencedColumnName="id")
  45.      */
  46.     protected $author;
  47.     /**
  48.      * @var ArrayCollection
  49.      *
  50.      * @ORM\ManyToMany(targetEntity="App\Entity\NewsCategory", cascade={"persist"}, inversedBy="news")
  51.      */
  52.     protected $categories;
  53.     /**
  54.      * @var ArrayCollection
  55.      *
  56.      * @ORM\ManyToMany(targetEntity="App\Entity\NewsTag", cascade={"persist"}, inversedBy="news")
  57.      */
  58.     protected $tags;
  59.     /**
  60.      * @ORM\Column(type="boolean")
  61.      */
  62.     private $showOnHomepage false;
  63.     public function __construct()
  64.     {
  65.         $this->categories = new ArrayCollection();
  66.         $this->tags = new ArrayCollection();
  67.         $this->headerImage = new ArrayCollection();
  68.         $this->listImage = new ArrayCollection();     }
  69.     /**
  70.      * @param \App\Entity\NewsAuthor $author
  71.      * @return $this
  72.      */
  73.     public function setAuthor($author)
  74.     {
  75.         $this->author $author;
  76.         return $this;
  77.     }
  78.     /**
  79.      * @return \App\Entity\NewsAuthor $author
  80.      */
  81.     public function getAuthor()
  82.     {
  83.         return $this->author;
  84.     }
  85.     /**
  86.      * @param \App\Entity\NewsCategory $category
  87.      * @return $this
  88.      */
  89.     public function setCategories($category)
  90.     {
  91.         $this->categories $category;
  92.         return $this;
  93.     }
  94.     /**
  95.      * @return ArrayCollection
  96.      */
  97.     public function getCategories()
  98.     {
  99.         return $this->categories;
  100.     }
  101.     public function getCategoriesNames()
  102.     {
  103.         $array = [];
  104.         /** @var NewsCategory $category */
  105.         foreach ($this->getCategories() as $category) {
  106.             $array[] = $category->getName();
  107.         }
  108.         return $array;
  109.     }
  110.     public function getCategoriesIds()
  111.     {
  112.         $array = [];
  113.         /** @var NewsCategory $category */
  114.         foreach ($this->getCategories() as $category) {
  115.             $array[] = $category->getId();
  116.         }
  117.         return $array;
  118.     }
  119.     /**
  120.      * @param \App\Entity\NewsTag $tag
  121.      * @return $this
  122.      */
  123.     public function setTags($tag)
  124.     {
  125.         $this->tags $tag;
  126.         return $this;
  127.     }
  128.     /**
  129.      * @return ArrayCollection
  130.      */
  131.     public function getTags()
  132.     {
  133.         return $this->tags;
  134.     }
  135.     public function removeCategories(NewsCategory $category): self
  136.     {
  137.         if ($this->categories->contains($category)) {
  138.             $this->categories->removeElement($category);
  139.         }
  140.         return $this;
  141.     }
  142.     public function removeTags(NewsTag $tag): self
  143.     {
  144.         if ($this->tags->contains($tag)) {
  145.             $this->tags->removeElement($tag);
  146.         }
  147.         return $this;
  148.     }
  149.     /**
  150.      * Returns the default backend form type for this page
  151.      *
  152.      * @return string
  153.      */
  154.     public function getDefaultAdminType()
  155.     {
  156.         return NewsPageAdminType::class;
  157.     }
  158.     /**
  159.      * {@inheritdoc}
  160.      */
  161.     public function getSearchType()
  162.     {
  163.         return 'News';
  164.     }
  165.     /**
  166.      * @return array
  167.      */
  168.     public function getPagePartAdminConfigurations()
  169.     {
  170.         return array('newsmain');
  171.     }
  172.     /**
  173.      * {@inheritdoc}
  174.      */
  175.     public function getPageTemplates()
  176.     {
  177.         return array('newspage');
  178.     }
  179.     public function getDefaultView()
  180.     {
  181.         return 'Pages/NewsPage/view.html.twig';
  182.     }
  183.     /**
  184.      * Before persisting this entity, check the date.
  185.      * When no date is present, fill in current date and time.
  186.      *
  187.      * @ORM\PrePersist
  188.      */
  189.     public function _prePersist()
  190.     {
  191.         // Set date to now when none is set
  192.         if ($this->date == null) {
  193.             $this->setDate(new \DateTime());
  194.         }
  195.     }
  196.     public function getShowOnHomepage(): ?bool
  197.     {
  198.         return $this->showOnHomepage;
  199.     }
  200.     public function setShowOnHomepage(bool $showOnHomepage): self
  201.     {
  202.         $this->showOnHomepage $showOnHomepage;
  203.         return $this;
  204.     }
  205. }