3 namespace Wallabag\CoreBundle\Entity
;
5 use Doctrine\Common\Collections\ArrayCollection
;
6 use Doctrine\ORM\Mapping
as ORM
;
7 use Symfony\Component\Validator\Constraints
as Assert
;
8 use Hateoas\Configuration\Annotation
as Hateoas
;
9 use JMS\Serializer\Annotation\XmlRoot
;
10 use Wallabag\CoreBundle\Tools\Utils
;
16 * @ORM\Entity(repositoryClass="Wallabag\CoreBundle\Repository\EntryRepository")
18 * @ORM\HasLifecycleCallbacks()
19 * @Hateoas\Relation("self", href = "expr('/api/entries/' ~ object.getId())")
23 /** @Serializer\XmlAttribute */
27 * @ORM\Column(name="id", type="integer")
29 * @ORM\GeneratedValue(strategy="AUTO")
36 * @ORM\Column(name="title", type="text", nullable=true)
44 * @ORM\Column(name="url", type="text", nullable=true)
51 * @ORM\Column(name="is_archived", type="boolean")
53 private $isArchived = false;
58 * @ORM\Column(name="is_starred", type="boolean")
60 private $isStarred = false;
65 * @ORM\Column(name="content", type="text", nullable=true)
72 * @ORM\Column(name="created_at", type="datetime")
79 * @ORM\Column(name="updated_at", type="datetime")
86 * @ORM\Column(name="comments", type="text", nullable=true)
93 * @ORM\Column(name="mimetype", type="text", nullable=true)
100 * @ORM\Column(name="language", type="text", nullable=true)
107 * @ORM\Column(name="reading_time", type="integer", nullable=true)
109 private $readingTime;
114 * @ORM\Column(name="domain_name", type="text", nullable=true)
121 * @ORM\Column(name="preview_picture", type="text", nullable=true)
123 private $previewPicture;
128 * @ORM\Column(name="is_public", type="boolean", nullable=true, options={"default" = false})
133 * @ORM\ManyToOne(targetEntity="User", inversedBy="entries")
138 * @ORM\ManyToMany(targetEntity="Tag", inversedBy="entries", cascade={"persist"})
146 public function __construct(User
$user)
149 $this->tags
= new ArrayCollection();
157 public function getId()
165 * @param string $title
169 public function setTitle($title)
171 $this->title
= $title;
181 public function getTitle()
193 public function setUrl($url)
205 public function getUrl()
213 * @param string $isArchived
217 public function setArchived($isArchived)
219 $this->isArchived
= $isArchived;
229 public function isArchived()
231 return $this->isArchived
;
234 public function toggleArchive()
236 $this->isArchived
= $this->isArchived() ^
1;
244 * @param string $isStarred
248 public function setStarred($isStarred)
250 $this->isStarred
= $isStarred;
260 public function isStarred()
262 return $this->isStarred
;
265 public function toggleStar()
267 $this->isStarred
= $this->isStarred() ^
1;
275 * @param string $content
279 public function setContent($content)
281 $this->content
= $content;
282 $this->readingTime
= Utils
::getReadingTime($content);
283 $this->domainName
= parse_url($this->url
, PHP_URL_HOST
);
293 public function getContent()
295 return $this->content
;
301 public function getUser()
309 public function getCreatedAt()
311 return $this->createdAt
;
317 public function getUpdatedAt()
319 return $this->updatedAt
;
326 public function timestamps()
328 if (is_null($this->createdAt
)) {
329 $this->createdAt
= new \
DateTime();
332 $this->updatedAt
= new \
DateTime();
338 public function getComments()
340 return $this->comments
;
344 * @param string $comments
346 public function setComments($comments)
348 $this->comments
= $comments;
354 public function getMimetype()
356 return $this->mimetype
;
360 * @param string $mimetype
362 public function setMimetype($mimetype)
364 $this->mimetype
= $mimetype;
370 public function getReadingTime()
372 return $this->readingTime
;
376 * @param int $readingTime
378 public function setReadingTime($readingTime)
380 $this->readingTime
= $readingTime;
386 public function getDomainName()
388 return $this->domainName
;
392 * @param string $domainName
394 public function setDomainName($domainName)
396 $this->domainName
= $domainName;
402 public function isPublic()
404 return $this->isPublic
;
408 * @param bool $isPublic
410 public function setIsPublic($isPublic)
412 $this->isPublic
= $isPublic;
416 * @return ArrayCollection<Tag>
418 public function getTags()
426 public function addTag(Tag
$tag)
428 $this->tags
[] = $tag;
429 $tag->addEntry($this);
432 public function removeTag(Tag
$tag)
434 $this->tags
->removeElement($tag);
438 * Set previewPicture.
440 * @param string $previewPicture
444 public function setPreviewPicture($previewPicture)
446 $this->previewPicture
= $previewPicture;
452 * Get previewPicture.
456 public function getPreviewPicture()
458 return $this->previewPicture
;
464 * @param string $language
468 public function setLanguage($language)
470 $this->language
= $language;
480 public function getLanguage()
482 return $this->language
;