src/Entity/EventArticle.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Application\Sonata\MediaBundle\Entity\Media;
  4. use DateTime;
  5. use Doctrine\ORM\Mapping as ORM;
  6. use Gedmo\Mapping\Annotation as Gedmo;
  7. use Gedmo\Timestampable\Traits\TimestampableEntity;
  8. use Symfony\Component\Validator\Constraints as Assert;
  9. /**
  10.  * To use in many templates
  11.  * @ORM\Entity(repositoryClass="App\Repository\EventArticleRepository")
  12.  * @ORM\HasLifecycleCallbacks()
  13.  */
  14. class EventArticle implements EntityInterface
  15. {
  16.     use TimestampableEntity;
  17.     use BlameableEntity;
  18.     const DRAFT "DRAFT";
  19.     const PUBLISHED "PUBLISHED";
  20.     const BANNER_VISIBILITY_NO "NO";
  21.     const BANNER_VISIBILITY_YES "YES";
  22.     const BANNER_VISIBILITY_YES_BY_EVENT_TYPE "YES_BY_EVENT_TYPE";
  23.     /**
  24.      * @var int
  25.      *
  26.      * @ORM\Column(name="id", type="integer")
  27.      * @ORM\Id
  28.      * @ORM\GeneratedValue(strategy="AUTO")
  29.      */
  30.     public $id;
  31.     /**
  32.      * @var Event
  33.      * @ORM\ManyToOne(targetEntity="Event", inversedBy="articles")
  34.      * @ORM\JoinColumn(name="event_id", referencedColumnName="id")
  35.      */
  36.     private $event;
  37.     /**
  38.      * @var string
  39.      * @ORM\Column(name="title", type="string", length=255)
  40.      */
  41.     private $title;
  42.     /**
  43.      * @var string
  44.      * @ORM\Column(name="photo_credit",type="string", length=255, nullable=true)
  45.      */
  46.     private $photoCredit;
  47.     /**
  48.      * @var string
  49.      * @Gedmo\Slug(fields={"title"}, updatable=false)
  50.      * @ORM\Column(name="url", type="string", length=255, unique=true)
  51.      */
  52.     private $url;
  53.     /**
  54.      * @var string
  55.      * @Assert\NotBlank(message="Text cannot be blank",groups={"new"})
  56.      * @ORM\Column(name="text", type="text", nullable=false)
  57.      */
  58.     private $text;
  59.     /**
  60.      * @var string
  61.      * @ORM\Column(name="category", type="string", length=255, nullable=true)
  62.      */
  63.     private $category;
  64.     /**
  65.      * @var string $status
  66.      *
  67.      * @ORM\Column(name="status", type="string", length=50, nullable=false)
  68.      * @Assert\NotBlank(message="Status cannot be blank",groups={"new"})
  69.      * @Assert\Choice(
  70.      *      choices = {
  71.      *          EventArticle::DRAFT: "Draft",
  72.      *          EventArticle::PUBLISHED: "Published"
  73.      *      },
  74.      *      message = "Choose a valid status.", groups={"new"}
  75.      * )
  76.      */
  77.     private $status;
  78.     /**
  79.      * @var DateTime
  80.      *
  81.      * @ORM\Column(name="date", type="datetime", nullable=false)
  82.      */
  83.     private $date;
  84.     /**
  85.      * @ORM\ManyToOne(targetEntity="App\Application\Sonata\MediaBundle\Entity\Media", cascade={"persist"}, fetch="LAZY")
  86.      */
  87.     private $smallPicture;
  88.     /**
  89.      * @ORM\ManyToOne(targetEntity="App\Application\Sonata\MediaBundle\Entity\Media", cascade={"persist"}, fetch="LAZY")
  90.      */
  91.     private $bigPicture;
  92.     /**
  93.      * @var boolean
  94.      * @ORM\Column(name="send_mail", type="boolean")
  95.      */
  96.     private $sendMail false;
  97.     /**
  98.      * @var DateTime
  99.      *
  100.      * @ORM\Column(name="date_email_sent", type="datetime", nullable=true)
  101.      */
  102.     private $dateEmailSent;
  103.     /**
  104.      * @var string $type
  105.      *
  106.      * @ORM\Column(name="banner_visibility", type="string", length=50, nullable=true)
  107.      * @Assert\Choice(
  108.      *      choices = {
  109.      *          EventArticle::BANNER_VISIBILITY_NO: "No",
  110.      *          EventArticle::BANNER_VISIBILITY_YES: "Yes - this event page",
  111.      *          EventArticle::BANNER_VISIBILITY_YES_BY_EVENT_TYPE: "Yes - all event pages for this event type"
  112.      *      },
  113.      *      message = "Choose a visibility.", groups={"new"}
  114.      * )
  115.      */
  116.     private $bannerVisibility;
  117.     /**
  118.      * @var DateTime
  119.      *
  120.      * @ORM\Column(name="banner_start_date", type="datetime", nullable=true)
  121.      */
  122.     private $bannerStartDate;
  123.     /**
  124.      * @var DateTime
  125.      *
  126.      * @ORM\Column(name="banner_end_date", type="datetime", nullable=true)
  127.      */
  128.     private $bannerEndDate;
  129.     /**
  130.      * @var string
  131.      * @Assert\Length(max=280)
  132.      * @ORM\Column(name="banner_text", type="string", length=280, nullable=true)
  133.      */
  134.     private $bannerText;
  135.     /**
  136.      * @var string
  137.      * @ORM\Column(name="banner_link", type="string", length=500, nullable=true)
  138.      */
  139.     private $bannerLink;
  140.     /**
  141.      * @var string
  142.      * @ORM\Column(name="banner_category", type="string", length=255, nullable=true)
  143.      */
  144.     private $bannerCategory;
  145.     /**
  146.      * @return string
  147.      */
  148.     public function getPhotoCredit(): ?string
  149.     {
  150.         return $this->photoCredit;
  151.     }
  152.     /**
  153.      * @param string $photoCredit
  154.      */
  155.     public function setPhotoCredit(string $photoCredit null): void
  156.     {
  157.         $this->photoCredit $photoCredit;
  158.     }
  159.     /**
  160.      * @return bool true if article is published and visible
  161.      */
  162.     public function isPublishedAndVisible(): bool
  163.     {
  164.         return $this->getStatus() == EventArticle::PUBLISHED && $this->getDate()->getTimestamp() < time();
  165.     }
  166.     /**
  167.      * @return string
  168.      */
  169.     public function getStatus()
  170.     {
  171.         return $this->status;
  172.     }
  173.     /**
  174.      * @param string $status
  175.      */
  176.     public function setStatus(string $status)
  177.     {
  178.         $this->status $status;
  179.     }
  180.     /**
  181.      * @return DateTime
  182.      */
  183.     public function getDate()
  184.     {
  185.         return $this->date;
  186.     }
  187.     /**
  188.      * @param DateTime $date
  189.      */
  190.     public function setDate(DateTime $date null)
  191.     {
  192.         $this->date $date;
  193.     }
  194.     /**
  195.      * @return int|null
  196.      */
  197.     public function getId(): ?int
  198.     {
  199.         return $this->id;
  200.     }
  201.     /**
  202.      * @param int $id
  203.      */
  204.     public function setId(int $id)
  205.     {
  206.         $this->id $id;
  207.     }
  208.     /**
  209.      * @return string
  210.      */
  211.     public function getTitle()
  212.     {
  213.         return $this->title;
  214.     }
  215.     /**
  216.      * @param string $title
  217.      */
  218.     public function setTitle(string $title)
  219.     {
  220.         $this->title $title;
  221.     }
  222.     /**
  223.      * @return string
  224.      */
  225.     public function getUrl()
  226.     {
  227.         return $this->url;
  228.     }
  229.     /**
  230.      * @param string $url
  231.      */
  232.     public function setUrl(string $url)
  233.     {
  234.         $this->url $url;
  235.     }
  236.     /**
  237.      * @return string
  238.      */
  239.     public function getText()
  240.     {
  241.         return $this->text;
  242.     }
  243.     /**
  244.      * @param string $text
  245.      */
  246.     public function setText(string $text)
  247.     {
  248.         $this->text $text;
  249.     }
  250.     /**
  251.      * @return string
  252.      */
  253.     public function getCategory()
  254.     {
  255.         return $this->category;
  256.     }
  257.     /**
  258.      * @param string $category
  259.      */
  260.     public function setCategory(string $category)
  261.     {
  262.         $this->category $category;
  263.     }
  264.     /**
  265.      * Get sendMail
  266.      *
  267.      * @return boolean
  268.      */
  269.     public function getSendMail()
  270.     {
  271.         return $this->sendMail;
  272.     }
  273.     /**
  274.      * Set sendMail
  275.      *
  276.      * @param boolean $sendMail
  277.      *
  278.      * @return EventArticle
  279.      */
  280.     public function setSendMail($sendMail)
  281.     {
  282.         $this->sendMail $sendMail;
  283.         return $this;
  284.     }
  285.     public function getDateEmailSent()
  286.     {
  287.         return $this->dateEmailSent;
  288.     }
  289.     public function setDateEmailSent($dateEmailSent)
  290.     {
  291.         $this->dateEmailSent $dateEmailSent;
  292.         return $this;
  293.     }
  294.     /**
  295.      * @return Media
  296.      */
  297.     public function getSmallPicture(): ?Media
  298.     {
  299.         return $this->smallPicture;
  300.     }
  301.     /**
  302.      * @param Media $smallPicture
  303.      * @return EventArticle
  304.      */
  305.     public function setSmallPicture(Media $smallPicture null)
  306.     {
  307.         $this->smallPicture $smallPicture;
  308.         return $this;
  309.     }
  310.     /**
  311.      * @return Media
  312.      */
  313.     public function getBigPicture(): ?Media
  314.     {
  315.         return $this->bigPicture;
  316.     }
  317.     /**
  318.      * @param Media $bigPicture
  319.      * @return $this
  320.      */
  321.     public function setBigPicture(Media $bigPicture null)
  322.     {
  323.         $this->bigPicture $bigPicture;
  324.         return $this;
  325.     }
  326.     public function toString(): string
  327.     {
  328.         return (string)$this->title;
  329.     }
  330.     public function __toString()
  331.     {
  332.         return (string)$this->title;
  333.     }
  334.     public function uploadSmallPicture()
  335.     {
  336.     }
  337.     public function uploadBigPicture()
  338.     {
  339.     }
  340.     /**
  341.      * Get event
  342.      *
  343.      * @return Event
  344.      */
  345.     public function getEvent()
  346.     {
  347.         return $this->event;
  348.     }
  349.     /**
  350.      * Set event
  351.      *
  352.      * @param Event $event
  353.      *
  354.      * @return EventArticle
  355.      */
  356.     public function setEvent(Event $event null)
  357.     {
  358.         $this->event $event;
  359.         return $this;
  360.     }
  361.     /**
  362.      * @return string|null
  363.      */
  364.     public function getBannerVisibility(): ?string
  365.     {
  366.         return $this->bannerVisibility;
  367.     }
  368.     /**
  369.      * @param string $bannerVisibility
  370.      */
  371.     public function setBannerVisibility(string $bannerVisibility)
  372.     {
  373.         $this->bannerVisibility $bannerVisibility;
  374.     }
  375.     /**
  376.      * @return DateTime|null
  377.      */
  378.     public function getBannerStartDate(): ?DateTime
  379.     {
  380.         return $this->bannerStartDate;
  381.     }
  382.     /**
  383.      * @param DateTime $bannerStartDate
  384.      */
  385.     public function setBannerStartDate(DateTime $bannerStartDate)
  386.     {
  387.         $this->bannerStartDate $bannerStartDate;
  388.     }
  389.     /**
  390.      * @return DateTime|null
  391.      */
  392.     public function getBannerEndDate(): ?DateTime
  393.     {
  394.         return $this->bannerEndDate;
  395.     }
  396.     /**
  397.      * @param DateTime $bannerEndDate
  398.      */
  399.     public function setBannerEndDate(DateTime $bannerEndDate)
  400.     {
  401.         $this->bannerEndDate $bannerEndDate;
  402.     }
  403.     /**
  404.      * @return string|null
  405.      */
  406.     public function getBannerText(): ?string
  407.     {
  408.         return $this->bannerText;
  409.     }
  410.     /**
  411.      * @param string|null $bannerText
  412.      */
  413.     public function setBannerText(?string $bannerText)
  414.     {
  415.         $this->bannerText $bannerText;
  416.     }
  417.     /**
  418.      * @return string|null
  419.      */
  420.     public function getBannerCategory(): ?string
  421.     {
  422.         return $this->bannerCategory;
  423.     }
  424.     /**
  425.      * @param null|string $bannerCategory
  426.      */
  427.     public function setBannerCategory(?string $bannerCategory)
  428.     {
  429.         $this->bannerCategory $bannerCategory;
  430.     }
  431.     /**
  432.      * @return string|null
  433.      */
  434.     public function getBannerLink(): ?string
  435.     {
  436.         return $this->bannerLink;
  437.     }
  438.     /**
  439.      * @param string|null $bannerLink
  440.      */
  441.     public function setBannerLink(string $bannerLink)
  442.     {
  443.         $this->bannerLink $bannerLink;
  444.     }
  445. }