zend-blog-3-backend
321 строка · 5.5 Кб
1<?php
2
3namespace App\Entity;4
5use App\Entity\Traits\Gravatar;6use DateTime;7use Doctrine\Common\Collections\ArrayCollection;8use Doctrine\Common\Collections\Collection;9use Doctrine\ORM\Mapping as ORM;10
11/**
12* @ORM\Table(name="commentators", uniqueConstraints={
13* @ORM\UniqueConstraint(columns={"name", "mail", "website"})
14* })
15* @ORM\Entity(repositoryClass="App\Repository\CommentatorRepository")
16*/
17class Commentator implements CommentatorInterface18{
19use Gravatar;20
21/**22* @var int
23*
24* @ORM\Id
25* @ORM\Column(type="integer")
26* @ORM\GeneratedValue(strategy="AUTO")
27*/
28private $id;29
30/**31* @var string
32*
33* @ORM\Column(type="string", length=80)
34*/
35private $name;36
37/**38* @var string|null
39*
40* @ORM\Column(name="mail", type="string", length=80, nullable=true)
41*/
42private $email;43
44/**45* @var bool|null
46*
47* @ORM\Column(type="boolean", nullable=true)
48*/
49private $fakeEmail;50
51/**52* @var DateTime|null
53*
54* @ORM\Column(type="datetime", nullable=true)
55*/
56private $emailCheck;57
58/**59* @var string
60*
61* @ORM\Column(type="string", length=160, nullable=true)
62*/
63private $website;64
65/**66* @var Collection
67*
68* @ORM\OneToMany(targetEntity="Comment", mappedBy="commentator")
69*/
70private $comments;71
72/**73* @var int
74*
75* @ORM\Column(type="smallint", options={"default": 1, "comment":"1: male, 2: female"})
76*/
77private $gender = User::MALE;78
79/**80* @var bool
81*
82* @ORM\Column(type="boolean", options={"default": false})
83*/
84private $rottenLink = false;85
86/**87* @var DateTime|null
88*
89* @ORM\Column(type="datetime", nullable=true)
90*/
91private $rottenCheck;92
93public function __construct()94{95$this->comments = new ArrayCollection();96}97
98/**99* Get id
100*
101* @return int|null
102*/
103public function getId(): ?int104{105return $this->id;106}107
108/**109* @return bool
110*/
111public function isValidEmail(): bool112{113return $this->getEmail() && !is_null($this->isFakeEmail()) && !$this->isFakeEmail();114}115
116/**117* Set name
118*
119* @param string $name
120*
121* @return Commentator
122*/
123public function setName($name)124{125$this->name = $name;126
127return $this;128}129
130/**131* Get name
132*
133* @return string
134*/
135public function getName(): string136{137return $this->name;138}139
140/**141* Set email
142*
143* @param string $email
144*
145* @return Commentator
146*/
147public function setEmail($email)148{149$this->email = $email;150
151return $this;152}153
154/**155* Get email
156*
157* @return string|null
158*/
159public function getEmail(): ?string160{161return $this->email;162}163
164/**165* Set website
166*
167* @param string $website
168*
169* @return Commentator
170*/
171public function setWebsite($website)172{173$this->website = $website;174
175return $this;176}177
178/**179* Get website
180*
181* @return string|null
182*/
183public function getWebsite(): ?string184{185return $this->website;186}187
188/**189* Add comments
190*
191* @param Comment $comments
192*
193* @return Commentator
194*/
195public function addComment(Comment $comments)196{197$this->comments[] = $comments;198
199return $this;200}201
202/**203* Remove comments
204*
205* @param Comment $comments
206*/
207public function removeComment(Comment $comments)208{209$this->comments->removeElement($comments);210}211
212/**213* Get comments
214*
215* @return Collection
216*/
217public function getComments()218{219return $this->comments;220}221
222/**223* @return int
224*/
225public function getGender(): int226{227return $this->gender;228}229
230/**231* @param int $gender
232*
233* @return Commentator
234*/
235public function setGender(int $gender): self236{237$this->gender = $gender;238
239return $this;240}241
242/**243* @return bool|null
244*/
245public function isFakeEmail(): ?bool246{247return $this->fakeEmail;248}249
250/**251* @param bool|null $fakeEmail
252*
253* @return Commentator
254*/
255public function setFakeEmail(?bool $fakeEmail): self256{257$this->fakeEmail = $fakeEmail;258
259return $this;260}261
262/**263* @return DateTime|null
264*/
265public function getEmailCheck(): ?DateTime266{267return $this->emailCheck;268}269
270/**271* @param DateTime|null $emailCheck
272*
273* @return Commentator
274*/
275public function setEmailCheck(?DateTime $emailCheck): self276{277$this->emailCheck = $emailCheck;278
279return $this;280}281
282/**283* @return bool
284*/
285public function isRottenLink(): bool286{287return $this->rottenLink;288}289
290/**291* @param bool $rottenLink
292*
293* @return Commentator
294*/
295public function setRottenLink(bool $rottenLink): self296{297$this->rottenLink = $rottenLink;298
299return $this;300}301
302/**303* @return DateTime|null
304*/
305public function getRottenCheck(): ?DateTime306{307return $this->rottenCheck;308}309
310/**311* @param DateTime|null $rottenCheck
312*
313* @return Commentator
314*/
315public function setRottenCheck(?DateTime $rottenCheck): self316{317$this->rottenCheck = $rottenCheck;318
319return $this;320}321}
322