src/AtechNet/CoreBundle/Entity/BlogPage.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\AtechNet\CoreBundle\Entity;
  3. use Doctrine\Common\Collections\ArrayCollection;
  4. use Doctrine\ORM\Mapping\Column;
  5. use Doctrine\ORM\Mapping\Entity;
  6. use Doctrine\ORM\Mapping\JoinColumn;
  7. use Doctrine\ORM\Mapping\JoinTable;
  8. use Doctrine\ORM\Mapping\ManyToMany;
  9. use Doctrine\ORM\Mapping\ManyToOne;
  10. use Doctrine\ORM\Mapping\OneToMany;
  11. use Doctrine\ORM\Mapping\OrderBy;
  12. use Doctrine\ORM\Mapping\Table as Table;
  13. /**
  14.  * BlogPage
  15.  *
  16.  * @Table(name="pages_blog")
  17.  * @Entity(repositoryClass="App\AtechNet\CoreBundle\Repository\BlogPageRepository")
  18.  */
  19. class BlogPage extends AbstractPage
  20. {
  21.     /**
  22.      * @var Domain
  23.      *
  24.      * @ManyToOne(targetEntity="Domain")
  25.      * @JoinColumn(name="domain_id", referencedColumnName="id")
  26.      */
  27.     private $domain;
  28.     /**
  29.      * @var CategoryPage
  30.      *
  31.      * @ManyToOne(targetEntity="CategoryPage")
  32.      * @JoinColumn(name="category_page_id", referencedColumnName="id", nullable=true)
  33.      */
  34.     private $categoryPage;
  35.     /**
  36.      * @var string
  37.      *
  38.      * @Column(name="cover_image", type="text", nullable=true)
  39.      */
  40.     private $coverImage;
  41.     /**
  42.      * @var ArrayCollection
  43.      *
  44.      * @OneToMany(targetEntity="PageMeta", mappedBy="blogPage", orphanRemoval=true, cascade={"persist", "remove"})
  45.      * @OrderBy({"id" = "ASC"})
  46.      **/
  47.     private $metas;
  48.     /**
  49.      * @var ArrayCollection
  50.      *
  51.      * @ManyToMany(targetEntity="Tag", inversedBy="blogPages", cascade={"persist"})
  52.      * @JoinTable(
  53.      *  name="pages_blog_tags",
  54.      *  joinColumns={
  55.      *      @JoinColumn(name="blog_page_id", referencedColumnName="id")
  56.      *  },
  57.      *  inverseJoinColumns={
  58.      *      @JoinColumn(name="tag_id", referencedColumnName="id")
  59.      *  }
  60.      * )
  61.      **/
  62.     private $tags;
  63.     public function __construct()
  64.     {
  65.         parent::__construct();
  66.         $this->metas = new ArrayCollection();
  67.         $this->tags = new ArrayCollection();
  68.     }
  69.     /**
  70.      * @return Domain
  71.      */
  72.     public function getDomain()
  73.     {
  74.         return $this->domain;
  75.     }
  76.     /**
  77.      * @param Domain $domain
  78.      */
  79.     public function setDomain($domain)
  80.     {
  81.         $this->domain = $domain;
  82.     }
  83.     /**
  84.      * @return CategoryPage
  85.      */
  86.     public function getCategoryPage()
  87.     {
  88.         return $this->categoryPage;
  89.     }
  90.     /**
  91.      * @param CategoryPage $categoryPage
  92.      */
  93.     public function setCategoryPage($categoryPage)
  94.     {
  95.         $this->categoryPage = $categoryPage;
  96.     }
  97.     /**
  98.      * @return string
  99.      */
  100.     public function getLink()
  101.     {
  102.         return $this->link;
  103.     }
  104.     /**
  105.      * @param string $link
  106.      */
  107.     public function setLink($link)
  108.     {
  109.         $this->link = $link;
  110.     }
  111.     /**
  112.      * @return string
  113.      */
  114.     public function getLanguage()
  115.     {
  116.         return $this->getDomain()->getLanguage()->getCode();
  117.     }
  118.     /**
  119.      * @return ArrayCollection
  120.      */
  121.     public function getMetas()
  122.     {
  123.         return $this->metas;
  124.     }
  125.     /**
  126.      * @param Language $language
  127.      * @return null|PageMeta
  128.      */
  129.     public function getMetaByLanguage(Language $language)
  130.     {
  131.         foreach ($this->getMetas() as $meta) {
  132.             if ($meta->getLanguage()->getCode() == $language->getCode()) {
  133.                 return $meta;
  134.             }
  135.         }
  136.         return null;
  137.     }
  138.     /**
  139.      * @param string $code
  140.      * @return null|PageMeta
  141.      */
  142.     public function getMetaByCode($code)
  143.     {
  144.         foreach ($this->getMetas() as $meta) {
  145.             if ($meta->getLanguage()->getCode() == $code) {
  146.                 return $meta;
  147.             }
  148.         }
  149.         return null;
  150.     }
  151.     /**
  152.      * @return string
  153.      */
  154.     public function getCoverImage()
  155.     {
  156.         return $this->coverImage;
  157.     }
  158.     /**
  159.      * @param string $coverImage
  160.      */
  161.     public function setCoverImage($coverImage)
  162.     {
  163.         $this->coverImage = $coverImage;
  164.     }
  165.     /**
  166.      * @return string
  167.      */
  168.     public function getCoverImageLink()
  169.     {
  170.         return !is_null($this->coverImage) && $this->coverImage != '' ? 'https://www.atechcomp.eu/centralis/web/uploads/media/blog/' . $this->coverImage : null;
  171.     }
  172.     /**
  173.      * @param Tag $tag
  174.      */
  175.     public function addTag(Tag $tag): void
  176.     {
  177.         if (!$this->tags->contains($tag)) {
  178.             $this->tags->add($tag);
  179.             $tag->addBlogPage($this);
  180.         }
  181.     }
  182.     /**
  183.      * @param Tag $tag
  184.      */
  185.     public function removeTag(Tag $tag)
  186.     {
  187.         if ($this->tags->contains($tag)) {
  188.             $this->tags->removeElement($tag);
  189.             $tag->removeBlogPage($this);
  190.         }
  191.     }
  192.     /**
  193.      * @return ArrayCollection
  194.      */
  195.     public function getTags()
  196.     {
  197.         return $this->tags;
  198.     }
  199.     public function clearTags()
  200.     {
  201.         $this->tags->clear();
  202.     }
  203. }