]> git.immae.eu Git - github/wallabag/wallabag.git/blame - src/Wallabag/CoreBundle/Entity/Entry.php
Fix database already exist detection
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / Entity / Entry.php
CommitLineData
9d50517c
NL
1<?php
2
ad4d1caa 3namespace Wallabag\CoreBundle\Entity;
9d50517c 4
0a018fe0 5use Doctrine\Common\Collections\ArrayCollection;
9d50517c 6use Doctrine\ORM\Mapping as ORM;
b84a8055 7use Symfony\Component\Validator\Constraints as Assert;
0f006880
NL
8use Hateoas\Configuration\Annotation as Hateoas;
9use JMS\Serializer\Annotation\XmlRoot;
1210dae1 10use Wallabag\UserBundle\Entity\User;
9d50517c
NL
11
12/**
4346a860 13 * Entry.
9d50517c 14 *
0f006880 15 * @XmlRoot("entry")
be463487 16 * @ORM\Entity(repositoryClass="Wallabag\CoreBundle\Repository\EntryRepository")
164bd801 17 * @ORM\Table
34d15eb4 18 * @ORM\HasLifecycleCallbacks()
0f006880 19 * @Hateoas\Relation("self", href = "expr('/api/entries/' ~ object.getId())")
9d50517c 20 */
be463487 21class Entry
9d50517c 22{
0f006880 23 /** @Serializer\XmlAttribute */
9d50517c 24 /**
4346a860 25 * @var int
9d50517c 26 *
be463487 27 * @ORM\Column(name="id", type="integer")
9d50517c 28 * @ORM\Id
34d15eb4 29 * @ORM\GeneratedValue(strategy="AUTO")
9d50517c 30 */
be463487 31 private $id;
9d50517c
NL
32
33 /**
34 * @var string
35 *
36 * @ORM\Column(name="title", type="text", nullable=true)
37 */
38 private $title;
39
40 /**
41 * @var string
42 *
b84a8055 43 * @Assert\NotBlank()
9d50517c
NL
44 * @ORM\Column(name="url", type="text", nullable=true)
45 */
46 private $url;
47
48 /**
4346a860 49 * @var bool
9d50517c 50 *
be463487 51 * @ORM\Column(name="is_archived", type="boolean")
9d50517c 52 */
905ae369 53 private $isArchived = false;
9d50517c
NL
54
55 /**
4346a860 56 * @var bool
9d50517c 57 *
be463487 58 * @ORM\Column(name="is_starred", type="boolean")
9d50517c 59 */
905ae369 60 private $isStarred = false;
9d50517c 61
9d50517c
NL
62 /**
63 * @var string
64 *
eacaf7f8 65 * @ORM\Column(name="content", type="text", nullable=true)
9d50517c 66 */
eacaf7f8 67 private $content;
9d50517c 68
34d15eb4
NL
69 /**
70 * @var date
71 *
be463487 72 * @ORM\Column(name="created_at", type="datetime")
34d15eb4
NL
73 */
74 private $createdAt;
75
76 /**
77 * @var date
78 *
be463487 79 * @ORM\Column(name="updated_at", type="datetime")
34d15eb4
NL
80 */
81 private $updatedAt;
82
34d15eb4
NL
83 /**
84 * @var string
85 *
86 * @ORM\Column(name="comments", type="text", nullable=true)
87 */
88 private $comments;
89
90 /**
91 * @var string
92 *
93 * @ORM\Column(name="mimetype", type="text", nullable=true)
94 */
95 private $mimetype;
96
98f0929f
JB
97 /**
98 * @var string
99 *
100 * @ORM\Column(name="language", type="text", nullable=true)
101 */
102 private $language;
103
34d15eb4 104 /**
4346a860 105 * @var int
34d15eb4 106 *
26864574 107 * @ORM\Column(name="reading_time", type="integer", nullable=true)
34d15eb4
NL
108 */
109 private $readingTime;
110
111 /**
112 * @var string
113 *
114 * @ORM\Column(name="domain_name", type="text", nullable=true)
115 */
116 private $domainName;
117
fad31615
JB
118 /**
119 * @var string
120 *
121 * @ORM\Column(name="preview_picture", type="text", nullable=true)
122 */
123 private $previewPicture;
124
34d15eb4 125 /**
4346a860 126 * @var bool
34d15eb4
NL
127 *
128 * @ORM\Column(name="is_public", type="boolean", nullable=true, options={"default" = false})
129 */
130 private $isPublic;
131
5f09650e 132 /**
1210dae1 133 * @ORM\ManyToOne(targetEntity="Wallabag\UserBundle\Entity\User", inversedBy="entries")
5f09650e
NL
134 */
135 private $user;
136
0a018fe0 137 /**
46bbd8d3 138 * @ORM\ManyToMany(targetEntity="Tag", inversedBy="entries", cascade={"persist"})
164bd801 139 * @ORM\JoinTable
0a018fe0
NL
140 */
141 private $tags;
142
5f09650e
NL
143 /*
144 * @param User $user
145 */
0a878469 146 public function __construct(\Wallabag\UserBundle\Entity\User $user)
5f09650e
NL
147 {
148 $this->user = $user;
0a018fe0 149 $this->tags = new ArrayCollection();
5f09650e
NL
150 }
151
9d50517c 152 /**
4346a860 153 * Get id.
9d50517c 154 *
4346a860 155 * @return int
9d50517c
NL
156 */
157 public function getId()
158 {
159 return $this->id;
160 }
161
162 /**
4346a860
JB
163 * Set title.
164 *
165 * @param string $title
9d50517c 166 *
be463487 167 * @return Entry
9d50517c
NL
168 */
169 public function setTitle($title)
170 {
171 $this->title = $title;
172
173 return $this;
174 }
175
176 /**
4346a860 177 * Get title.
9d50517c 178 *
7df80cb3 179 * @return string
9d50517c
NL
180 */
181 public function getTitle()
182 {
183 return $this->title;
184 }
185
186 /**
4346a860
JB
187 * Set url.
188 *
189 * @param string $url
9d50517c 190 *
be463487 191 * @return Entry
9d50517c
NL
192 */
193 public function setUrl($url)
194 {
195 $this->url = $url;
196
197 return $this;
198 }
199
200 /**
4346a860 201 * Get url.
9d50517c 202 *
7df80cb3 203 * @return string
9d50517c
NL
204 */
205 public function getUrl()
206 {
207 return $this->url;
208 }
209
210 /**
4346a860
JB
211 * Set isArchived.
212 *
213 * @param string $isArchived
9d50517c 214 *
be463487 215 * @return Entry
9d50517c 216 */
905ae369 217 public function setArchived($isArchived)
9d50517c 218 {
905ae369 219 $this->isArchived = $isArchived;
9d50517c
NL
220
221 return $this;
222 }
223
224 /**
4346a860 225 * Get isArchived.
9d50517c 226 *
7df80cb3 227 * @return string
9d50517c 228 */
905ae369 229 public function isArchived()
9d50517c 230 {
905ae369 231 return $this->isArchived;
9d50517c
NL
232 }
233
163eae0b
NL
234 public function toggleArchive()
235 {
905ae369 236 $this->isArchived = $this->isArchived() ^ 1;
7df80cb3 237
163eae0b
NL
238 return $this;
239 }
240
9d50517c 241 /**
4346a860
JB
242 * Set isStarred.
243 *
244 * @param string $isStarred
9d50517c 245 *
be463487 246 * @return Entry
9d50517c 247 */
905ae369 248 public function setStarred($isStarred)
9d50517c 249 {
905ae369 250 $this->isStarred = $isStarred;
9d50517c
NL
251
252 return $this;
253 }
254
255 /**
4346a860 256 * Get isStarred.
9d50517c 257 *
7df80cb3 258 * @return string
9d50517c 259 */
905ae369 260 public function isStarred()
9d50517c 261 {
905ae369 262 return $this->isStarred;
9d50517c
NL
263 }
264
163eae0b
NL
265 public function toggleStar()
266 {
905ae369 267 $this->isStarred = $this->isStarred() ^ 1;
163eae0b
NL
268
269 return $this;
270 }
271
9d50517c 272 /**
4346a860
JB
273 * Set content.
274 *
275 * @param string $content
9d50517c 276 *
be463487 277 * @return Entry
9d50517c
NL
278 */
279 public function setContent($content)
280 {
281 $this->content = $content;
282
283 return $this;
284 }
285
286 /**
4346a860 287 * Get content.
9d50517c 288 *
7df80cb3 289 * @return string
9d50517c
NL
290 */
291 public function getContent()
292 {
293 return $this->content;
294 }
295
296 /**
5f09650e 297 * @return User
9d50517c 298 */
5f09650e 299 public function getUser()
9d50517c 300 {
5f09650e 301 return $this->user;
9d50517c 302 }
42a90646 303
34d15eb4 304 /**
2f69eb4a 305 * @return string
34d15eb4
NL
306 */
307 public function getCreatedAt()
308 {
309 return $this->createdAt;
310 }
311
34d15eb4
NL
312 /**
313 * @return string
314 */
315 public function getUpdatedAt()
316 {
317 return $this->updatedAt;
318 }
319
320 /**
be463487 321 * @ORM\PrePersist
34d15eb4
NL
322 * @ORM\PreUpdate
323 */
be463487 324 public function timestamps()
34d15eb4 325 {
be463487
NL
326 if (is_null($this->createdAt)) {
327 $this->createdAt = new \DateTime();
328 }
329
34d15eb4
NL
330 $this->updatedAt = new \DateTime();
331 }
332
333 /**
334 * @return string
335 */
336 public function getComments()
337 {
338 return $this->comments;
339 }
340
341 /**
342 * @param string $comments
343 */
344 public function setComments($comments)
345 {
346 $this->comments = $comments;
347 }
348
349 /**
350 * @return string
351 */
352 public function getMimetype()
353 {
354 return $this->mimetype;
355 }
356
357 /**
358 * @param string $mimetype
359 */
360 public function setMimetype($mimetype)
361 {
362 $this->mimetype = $mimetype;
363 }
364
365 /**
366 * @return int
367 */
368 public function getReadingTime()
369 {
370 return $this->readingTime;
371 }
372
373 /**
374 * @param int $readingTime
375 */
376 public function setReadingTime($readingTime)
377 {
378 $this->readingTime = $readingTime;
379 }
380
381 /**
382 * @return string
383 */
384 public function getDomainName()
385 {
386 return $this->domainName;
387 }
388
389 /**
390 * @param string $domainName
391 */
392 public function setDomainName($domainName)
393 {
394 $this->domainName = $domainName;
395 }
396
397 /**
4346a860 398 * @return bool
34d15eb4 399 */
2c093b03 400 public function isPublic()
34d15eb4
NL
401 {
402 return $this->isPublic;
403 }
404
405 /**
4346a860 406 * @param bool $isPublic
34d15eb4 407 */
82d6d9cb 408 public function setIsPublic($isPublic)
34d15eb4
NL
409 {
410 $this->isPublic = $isPublic;
411 }
0a018fe0
NL
412
413 /**
414 * @return ArrayCollection<Tag>
415 */
416 public function getTags()
417 {
418 return $this->tags;
419 }
420
421 /**
422 * @param Tag $tag
423 */
424 public function addTag(Tag $tag)
425 {
426 $this->tags[] = $tag;
46bbd8d3 427 $tag->addEntry($this);
0a018fe0 428 }
092ca707
NL
429
430 public function removeTag(Tag $tag)
431 {
432 $this->tags->removeElement($tag);
433 }
fad31615
JB
434
435 /**
a1413a3d 436 * Set previewPicture.
fad31615
JB
437 *
438 * @param string $previewPicture
439 *
440 * @return Entry
441 */
442 public function setPreviewPicture($previewPicture)
443 {
444 $this->previewPicture = $previewPicture;
445
446 return $this;
447 }
448
449 /**
a1413a3d 450 * Get previewPicture.
fad31615
JB
451 *
452 * @return string
453 */
454 public function getPreviewPicture()
455 {
456 return $this->previewPicture;
457 }
98f0929f
JB
458
459 /**
460 * Set language.
461 *
462 * @param string $language
463 *
464 * @return Entry
465 */
466 public function setLanguage($language)
467 {
468 $this->language = $language;
469
470 return $this;
471 }
472
473 /**
474 * Get language.
475 *
476 * @return string
477 */
478 public function getLanguage()
479 {
480 return $this->language;
481 }
9d50517c 482}