lib/boab/cms-bundle/src/Entity/Content.php line 21

Open in your IDE?
  1. <?php
  2. namespace Boab\CmsBundle\Entity;
  3. use Boab\CmsBundle\Entity\Media;
  4. use Boab\CmsBundle\Contract\ThumbnailInterface;
  5. use Boab\CmsBundle\Contract\ThumbnailTrait;
  6. use Doctrine\Common\Collections\ArrayCollection;
  7. use Doctrine\Common\Collections\Collection;
  8. use Doctrine\ORM\Mapping as ORM;
  9. use Boab\CmsBundle\Entity\UserRelationInterface;
  10. use Boab\CmsBundle\Entity\User;
  11. use Boab\CmsBundle\Model\SeoInterface;
  12. use Boab\CmsBundle\Model\SeoTrait;
  13. /**
  14.  * @ORM\Entity (repositoryClass="Boab\CmsBundle\Repository\ContentRepository")
  15.  * @ORM\Table(name="contents")
  16.  * @ORM\InheritanceType("JOINED")
  17.  * @ORM\DiscriminatorColumn(name="content_type", type="string")
  18.  */
  19. abstract class Content implements ContentInterfaceUserRelationInterfaceSeoInterfaceThumbnailInterface
  20. {
  21.     protected $dateformat 'Y-m-d H:i:s';
  22.     use ThumbnailTrait;
  23.     use SeoTrait;   
  24.    /**
  25.      * @var integer
  26.      *
  27.      * @ORM\Column(name="id", type="integer")
  28.      * @ORM\Id
  29.      * @ORM\GeneratedValue(strategy="AUTO")
  30.      */
  31.     protected $id;
  32.     /**
  33.      * @var string
  34.      *
  35.      * @ORM\Column(name="unique_id", type="string", nullable=true, unique=true)
  36.      */
  37.     protected $uniqueId;    
  38.     /**
  39.      * @var string
  40.      *
  41.      * @ORM\Column(name="title", type="string", length=255, precision=0, scale=0, nullable=false, unique=false)
  42.      */
  43.     protected $title;
  44.     /**
  45.      * @var string
  46.      *
  47.      * @ORM\Column(name="slug", type="string", length=255, precision=0, scale=0, nullable=false, unique=true)
  48.      */
  49.     protected $slug;
  50.     /**
  51.      * @var string
  52.      *
  53.      * @ORM\Column(name="summary", type="text", precision=0, scale=0, nullable=true, unique=false)
  54.      */
  55.     protected $summary;
  56.     /**
  57.      * @var string
  58.      *
  59.      * @ORM\Column(name="body", type="text", precision=0, scale=0, nullable=true, unique=false)
  60.      */
  61.     protected $body;
  62.     /**
  63.      * @var string
  64.      *
  65.      * @ORM\Column(name="thumbnail", type="string", length=255, precision=0, scale=0, nullable=true, unique=false)
  66.      */
  67.     protected $thumbnail;
  68.     /**
  69.      * @var integer
  70.      *
  71.      * @ORM\Column(name="status", type="string", length=20, precision=0, scale=0, nullable=false, unique=false)
  72.      */
  73.     protected $status;
  74.     /**
  75.      * @var integer
  76.      *
  77.      * @ORM\Column(name="is_featured", type="boolean",  nullable=true)
  78.      */
  79.     protected $isFeatured=null;
  80.     /**
  81.      * @var integer
  82.      *
  83.      * @ORM\Column(name="promoted", type="boolean",  nullable=true)
  84.      */
  85.     protected $promoted;
  86.     /**
  87.      * @var integer
  88.      *
  89.      * @ORM\Column(name="publish_on_socialmedia", type="boolean",  nullable=true)
  90.      */
  91.     protected $publishOnSocialMedia;   
  92.     
  93.     /**
  94.      * @var integer
  95.      *
  96.      * @ORM\Column(name="is_published_social_media", type="boolean",  nullable=true)
  97.      */
  98.     protected $isPublishedOnSocialMedia;      
  99.     /**
  100.      * @var integer
  101.      *
  102.      * @ORM\Column(name="is_home", type="boolean",  nullable=true)
  103.      */
  104.     protected $isHome;    
  105.     /**
  106.      * @var \DateTime
  107.      *
  108.      * @ORM\Column(name="date_created", type="datetime", precision=0, scale=0, nullable=false)
  109.      */
  110.     protected $dateCreated;
  111.     /**
  112.      * @var \DateTime
  113.      *
  114.      * @ORM\Column(name="date_published", type="datetime", precision=0, scale=0, nullable=true)
  115.      */
  116.     protected $datePublished;
  117.     /**
  118.      * @var string
  119.      *
  120.      * @ORM\Column(name="meta_keywords", type="string", length=255, precision=0, scale=0, nullable=true, unique=false)
  121.      */
  122.     protected $metaKeywords;
  123.     /**
  124.      * @var string
  125.      *
  126.      * @ORM\Column(name="meta_description", type="string", length=255, precision=0, scale=0, nullable=true, unique=false)
  127.      */
  128.     protected $metaDescription;
  129.     /**
  130.      * @var \Boab\CmsBundle\Entity\UserAdmin
  131.      *
  132.      * @ORM\ManyToOne(targetEntity="Boab\CmsBundle\Entity\User", inversedBy="contents")
  133.      * @ORM\JoinColumns({
  134.      *   @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=false)
  135.      * })
  136.      */
  137.     protected $user;
  138.     /**
  139.      *
  140.      * @ORM\ManyToOne(targetEntity="Boab\CmsBundle\Entity\Term", fetch="EAGER")
  141.      * @ORM\JoinColumns({
  142.      * @ORM\JoinColumn(name="term_id", referencedColumnName="id", nullable=true)
  143.      * })
  144.      */
  145.     protected $term;
  146.     /**
  147.      * @var \Doctrine\Common\Collections\Collection
  148.      *
  149.      * @ORM\OneToMany(targetEntity="Boab\CmsBundle\Entity\Photo", mappedBy="content", cascade={"persist","remove"}, orphanRemoval=true)
  150.      */
  151.     protected $photos;
  152.     /**
  153.      * @ORM\Column(type="datetime", nullable=true)
  154.      */
  155.     private $updatedAt;
  156.     /**
  157.      * @ORM\Column(type="integer", nullable=true)
  158.      */
  159.     private $position;
  160.     /**
  161.      * @ORM\OneToMany(targetEntity=Media::class, mappedBy="content")
  162.      */
  163.     private $medias;  
  164.     /**
  165.      * Constructor
  166.      */
  167.     public function __construct()
  168.     {
  169.         $this->photos = new \Doctrine\Common\Collections\ArrayCollection();
  170.         $this->medias = new ArrayCollection();
  171.     }
  172.     /**
  173.      * Add photo
  174.      *
  175.      * @param \Boab\CmsBundle\Entity\Photo $photo
  176.      *
  177.      * @return Content
  178.      */
  179.     public function addPhoto(\Boab\CmsBundle\Entity\Photo $photo)
  180.     {
  181.         $this->photos[] = $photo;
  182.         return $this;
  183.     }
  184.     /**
  185.      * Remove photo
  186.      *
  187.      * @param \Boab\CmsBundle\Entity\Photo $photo
  188.      */
  189.     public function removePhoto(\Boab\CmsBundle\Entity\Photo $photo)
  190.     {
  191.         $this->photos->removeElement($photo);
  192.     }
  193.     /**
  194.      * Get photos
  195.      *
  196.      * @return \Doctrine\Common\Collections\Collection
  197.      */
  198.     public function getPhotos()
  199.     {
  200.         return $this->photos;
  201.     }
  202.      /**
  203.      * Get id
  204.      *
  205.      * @return integer
  206.      */
  207.     public function getId()
  208.     {
  209.         return $this->id;
  210.     }
  211.     /**
  212.      * Set uniqueId.
  213.      *
  214.      * @param string $uniqueId
  215.      *
  216.      * @return Content
  217.      */
  218.     public function setUniqueId($uniqueId)
  219.     {
  220.         $this->uniqueId $uniqueId;
  221.         return $this;
  222.     }
  223.     /**
  224.      * Get uniqueId.
  225.      *
  226.      * @return string
  227.      */
  228.     public function getUniqueId()
  229.     {
  230.         return $this->uniqueId;
  231.     }    
  232.     /**
  233.      * Set title
  234.      *
  235.      * @param  string $title
  236.      * @return Page
  237.      */
  238.     public function setTitle($title)
  239.     {
  240.         $this->title $title;
  241.         return $this;
  242.     }
  243.     /**
  244.      * Get title
  245.      *
  246.      * @return string
  247.      */
  248.     public function getTitle()
  249.     {
  250.         return $this->title;
  251.     }
  252.     /**
  253.      * Set slug
  254.      *
  255.      * @param  string $slug
  256.      * @return Page
  257.      */
  258.     public function setSlug($slug)
  259.     {
  260.         $this->slug $slug;
  261.         return $this;
  262.     }
  263.     /**
  264.      * Get slug
  265.      *
  266.      * @return string
  267.      */
  268.     public function getSlug()
  269.     {
  270.         return $this->slug;
  271.     }
  272.     /**
  273.      * Set summary
  274.      *
  275.      * @param  string $summary
  276.      * @return Page
  277.      */
  278.     public function setSummary($summary)
  279.     {
  280.         $this->summary $summary;
  281.         return $this;
  282.     }
  283.     /**
  284.      * Get summary
  285.      *
  286.      * @return string
  287.      */
  288.     public function getSummary()
  289.     {
  290.         return $this->summary;
  291.     }
  292.     /**
  293.      * Set body
  294.      *
  295.      * @param  string  $body
  296.      * @return Content
  297.      */
  298.     public function setBody($body)
  299.     {
  300.         $this->body $body;
  301.         return $this;
  302.     }
  303.     /**
  304.      * Get body
  305.      *
  306.      * @return string
  307.      */
  308.     public function getBody()
  309.     {
  310.         return $this->body;
  311.     }
  312.     /**
  313.      * Set user
  314.      *
  315.      * @param  \Boab\CmsBundle\Entity\User $user
  316.      * @return Page
  317.      */
  318.     public function setUser(User $user)
  319.     {
  320.         $this->user $user;
  321.         return $this;
  322.     }
  323.     /**
  324.      * Get user
  325.      *
  326.      * @return \Boab\CmsBundle\Entity\User
  327.      */
  328.     public function getUser()
  329.     {
  330.         return $this->user;
  331.     }
  332.     /**
  333.      * Set status
  334.      *
  335.      * @param  integer $status
  336.      * @return Page
  337.      */
  338.     public function setStatus($status)
  339.     {
  340.         $this->status $status;
  341.         return $this;
  342.     }
  343.     /**
  344.      * Get status
  345.      *
  346.      * @return integer
  347.      */
  348.     public function getStatus()
  349.     {
  350.         return $this->status;
  351.     }
  352.     /**
  353.      * Set isFeatured
  354.      *
  355.      * @param  integer $isFeatured
  356.      * @return Content
  357.      */
  358.     public function setIsFeatured($isFeatured)
  359.     {
  360.         $this->isFeatured = !empty($isFeatured) ? 0;
  361.         return $this;
  362.     }
  363.     /**
  364.      * Get isFeatured
  365.      *
  366.      * @return integer
  367.      */
  368.     public function getIsFeatured()
  369.     {
  370.         return $this->isFeatured;
  371.     }
  372.     public function isFeatured()
  373.     {
  374.         return (bool) $this->getIsFeatured();
  375.     }
  376.     /**
  377.      * Set promoted
  378.      *
  379.      * @param  integer $promoted
  380.      * @return Content
  381.      */
  382.     public function setPromoted($promoted='')
  383.     {
  384.         $this->promoted = !empty($promoted) ? 0;
  385.         return $this;
  386.     }
  387.     /**
  388.      * Get promoted
  389.      *
  390.      * @return integer
  391.      */
  392.     public function getPromoted()
  393.     {
  394.         return $this->promoted;
  395.     }
  396.     public function isPromoted()
  397.     {
  398.         return (bool) $this->getPromoted();
  399.     }
  400.     /**
  401.      * Set isHome
  402.      *
  403.      * @param boolean $isHome
  404.      *
  405.      * @return Content
  406.      */
  407.     public function setIsHome($isHome)
  408.     {
  409.         $this->isHome $isHome;
  410.         return $this;
  411.     }
  412.     /**
  413.      * Get isHome
  414.      *
  415.      * @return boolean
  416.      */
  417.     public function getIsHome()
  418.     {
  419.         return $this->isHome;
  420.     }    
  421.     /**
  422.      * Set dateCreated
  423.      *
  424.      * @param  \DateTime $dateCreated
  425.      * @return Page
  426.      */
  427.     public function setDateCreated($dateCreated)
  428.     {
  429.         $this->dateCreated $dateCreated;
  430.         return $this;
  431.     }
  432.     /**
  433.      * Get dateCreated
  434.      *
  435.      * @return \DateTime
  436.      */
  437.     public function getDateCreated()
  438.     {
  439.         return $this->dateCreated->format($this->dateformat);
  440.     }
  441.     /**
  442.      * Set datePublished
  443.      *
  444.      * @param  \DateTime $datePublished
  445.      * @return Page
  446.      */
  447.     public function setDatePublished($datePublished null)
  448.     {
  449.         $this->datePublished $datePublished;
  450.         return $this;
  451.     }
  452.     /**
  453.      * Get datePublished
  454.      *
  455.      * @return \DateTime
  456.      */
  457.     public function getDatePublished()
  458.     {
  459.         return $this->datePublished;
  460.     }
  461.     /**
  462.      * Set metaKeyWords
  463.      *
  464.      * @param string $metaKeyWords
  465.      *
  466.      * @return Content
  467.      */
  468.     public function setMetaKeywords($metaKeywords)
  469.     {
  470.         $this->metaKeywords $metaKeywords;
  471.         return $this;
  472.     }
  473.     /**
  474.      * Get metaKeyWords
  475.      *
  476.      * @return string
  477.      */
  478.     public function getMetaKeyWords()
  479.     {
  480.         return $this->metaKeywords;
  481.     }
  482.     /**
  483.      * Set metaDescription
  484.      *
  485.      * @param string $metaDescription
  486.      *
  487.      * @return Content
  488.      */
  489.     public function setMetaDescription($metaDescription)
  490.     {
  491.         $this->metaDescription $metaDescription;
  492.         return $this;
  493.     }
  494.     /**
  495.      * Get metaDescription
  496.      *
  497.      * @return string
  498.      */
  499.     public function getMetaDescription()
  500.     {     
  501.         return $this->metaDescription;
  502.     }
  503.     /**
  504.      * Set term
  505.      *
  506.      * @param \Boab\CmsBundle\Entity\Term $term
  507.      *
  508.      * @return Content
  509.      */
  510.     public function setTerm(\Boab\CmsBundle\Entity\Term $term null)
  511.     {
  512.         $this->term $term;
  513.         return $this;
  514.     }
  515.     /**
  516.      * Get term
  517.      *
  518.      * @return \Boab\CmsBundle\Entity\Term
  519.      */
  520.     public function getTerm()
  521.     {
  522.         return $this->term;
  523.     }    
  524.     /**
  525.     * Remove all user Roles
  526.     */
  527.     public function removeAllPhotos()
  528.     {
  529.        $this->photos->clear();
  530.     }  
  531.     
  532.     public function getAuthoredBy()
  533.     {
  534.         if(null == $this->getUser()){
  535.             return;
  536.         }
  537.         return $this->getUser()->getFullName();
  538.     }
  539.     public function isPublished()
  540.     {
  541.         return (self::STATUS_PUBLISHED == $this->getStatus());
  542.     } 
  543.         
  544.     /**
  545.      * Set publishOnSocialMedia.
  546.      *
  547.      * @param bool|null $publishOnSocialMedia
  548.      *
  549.      * @return Content
  550.      */
  551.     public function setPublishOnSocialMedia($publishOnSocialMedia null)
  552.     {
  553.         $this->publishOnSocialMedia $publishOnSocialMedia;
  554.         return $this;
  555.     }
  556.     /**
  557.      * Get publishOnSocialMedia.
  558.      *
  559.      * @return bool|null
  560.      */
  561.     public function getPublishOnSocialMedia()
  562.     {
  563.         return $this->publishOnSocialMedia;
  564.     }
  565.     /**
  566.      * Set isPublishedOnSocialMedia.
  567.      *
  568.      * @param bool|null $isPublishedOnSocialMedia
  569.      *
  570.      * @return Content
  571.      */
  572.     public function setIsPublishedOnSocialMedia($isPublishedOnSocialMedia null)
  573.     {
  574.         $this->isPublishedOnSocialMedia $isPublishedOnSocialMedia;
  575.         return $this;
  576.     }
  577.     /**
  578.      * Get isPublishedOnSocialMedia.
  579.      *
  580.      * @return bool|null
  581.      */
  582.     public function getIsPublishedOnSocialMedia()
  583.     {
  584.         return $this->isPublishedOnSocialMedia;
  585.     }
  586.     public function getUpdatedAt(): ?\DateTimeInterface
  587.     {
  588.         return $this->updatedAt;
  589.     }
  590.     public function setUpdatedAt(?\DateTimeInterface $updatedAt): self
  591.     {
  592.         $this->updatedAt $updatedAt;
  593.         return $this;
  594.     }
  595.     public function getPosition(): ?int
  596.     {
  597.         return $this->position;
  598.     }
  599.     public function setPosition(int $position): self
  600.     {
  601.         $this->position $position;
  602.         return $this;
  603.     }
  604.     /**
  605.      * @return Collection<int, Media>
  606.      */
  607.     public function getMedias(): Collection
  608.     {
  609.         return $this->medias;
  610.     }
  611.     public function addMedia(Media $media): self
  612.     {
  613.         if (!$this->medias->contains($media)) {
  614.             $this->medias[] = $media;
  615.             $media->setContent($this);
  616.         }
  617.         return $this;
  618.     }
  619.     public function removeMedia(Media $media): self
  620.     {
  621.         if ($this->medias->removeElement($media)) {
  622.             // set the owning side to null (unless already changed)
  623.             if ($media->getContent() === $this) {
  624.                 $media->setContent(null);
  625.             }
  626.         }
  627.         return $this;
  628.     }
  629. }