X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FCoreBundle%2FEntity%2FEntry.php;h=24b24dbb13dc6ac29cc6a5fd736367cf26d72387;hb=1930c19d8214c05ceefac5ac011a6b6e7e4a983d;hp=15af105d22f78c7c9f25156a9332108d1e0aef70;hpb=d6fa2f70ac3c798b28ce33c6c143f45c09c74062;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Entity/Entry.php b/src/Wallabag/CoreBundle/Entity/Entry.php index 15af105d..24b24dbb 100644 --- a/src/Wallabag/CoreBundle/Entity/Entry.php +++ b/src/Wallabag/CoreBundle/Entity/Entry.php @@ -4,16 +4,18 @@ namespace Wallabag\CoreBundle\Entity; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\Mapping as ORM; -use Symfony\Component\Validator\Constraints as Assert; use Hateoas\Configuration\Annotation as Hateoas; +use JMS\Serializer\Annotation\Groups; use JMS\Serializer\Annotation\XmlRoot; +use Symfony\Component\Validator\Constraints as Assert; +use Wallabag\UserBundle\Entity\User; /** - * Entry + * Entry. * * @XmlRoot("entry") * @ORM\Entity(repositoryClass="Wallabag\CoreBundle\Repository\EntryRepository") - * @ORM\Table + * @ORM\Table(name="`entry`") * @ORM\HasLifecycleCallbacks() * @Hateoas\Relation("self", href = "expr('/api/entries/' ~ object.getId())") */ @@ -21,11 +23,13 @@ class Entry { /** @Serializer\XmlAttribute */ /** - * @var integer + * @var int * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") + * + * @Groups({"entries_for_user", "export_all"}) */ private $id; @@ -33,6 +37,8 @@ class Entry * @var string * * @ORM\Column(name="title", type="text", nullable=true) + * + * @Groups({"entries_for_user", "export_all"}) */ private $title; @@ -41,20 +47,26 @@ class Entry * * @Assert\NotBlank() * @ORM\Column(name="url", type="text", nullable=true) + * + * @Groups({"entries_for_user", "export_all"}) */ private $url; /** - * @var boolean + * @var bool * * @ORM\Column(name="is_archived", type="boolean") + * + * @Groups({"entries_for_user", "export_all"}) */ private $isArchived = false; /** - * @var boolean + * @var bool * * @ORM\Column(name="is_starred", type="boolean") + * + * @Groups({"entries_for_user", "export_all"}) */ private $isStarred = false; @@ -62,6 +74,8 @@ class Entry * @var string * * @ORM\Column(name="content", type="text", nullable=true) + * + * @Groups({"entries_for_user", "export_all"}) */ private $content; @@ -69,6 +83,8 @@ class Entry * @var date * * @ORM\Column(name="created_at", type="datetime") + * + * @Groups({"export_all"}) */ private $createdAt; @@ -76,6 +92,8 @@ class Entry * @var date * * @ORM\Column(name="updated_at", type="datetime") + * + * @Groups({"export_all"}) */ private $updatedAt; @@ -83,6 +101,8 @@ class Entry * @var string * * @ORM\Column(name="comments", type="text", nullable=true) + * + * @Groups({"export_all"}) */ private $comments; @@ -90,13 +110,26 @@ class Entry * @var string * * @ORM\Column(name="mimetype", type="text", nullable=true) + * + * @Groups({"entries_for_user", "export_all"}) */ private $mimetype; /** - * @var integer + * @var string + * + * @ORM\Column(name="language", type="text", nullable=true) + * + * @Groups({"entries_for_user", "export_all"}) + */ + private $language; + + /** + * @var int + * + * @ORM\Column(name="reading_time", type="integer", nullable=true) * - * @ORM\Column(name="reading_type", type="integer", nullable=true) + * @Groups({"entries_for_user", "export_all"}) */ private $readingTime; @@ -104,40 +137,57 @@ class Entry * @var string * * @ORM\Column(name="domain_name", type="text", nullable=true) + * + * @Groups({"entries_for_user", "export_all"}) */ private $domainName; /** - * @var boolean + * @var string + * + * @ORM\Column(name="preview_picture", type="text", nullable=true) + * + * @Groups({"entries_for_user", "export_all"}) + */ + private $previewPicture; + + /** + * @var bool * * @ORM\Column(name="is_public", type="boolean", nullable=true, options={"default" = false}) + * + * @Groups({"export_all"}) */ private $isPublic; /** - * @ORM\ManyToOne(targetEntity="User", inversedBy="entries") + * @ORM\ManyToOne(targetEntity="Wallabag\UserBundle\Entity\User", inversedBy="entries") + * + * @Groups({"export_all"}) */ private $user; /** * @ORM\ManyToMany(targetEntity="Tag", inversedBy="entries", cascade={"persist"}) * @ORM\JoinTable + * + * @Groups({"entries_for_user", "export_all"}) */ private $tags; /* * @param User $user */ - public function __construct(User $user) + public function __construct(\Wallabag\UserBundle\Entity\User $user) { $this->user = $user; $this->tags = new ArrayCollection(); } /** - * Get id + * Get id. * - * @return integer + * @return int */ public function getId() { @@ -145,9 +195,10 @@ class Entry } /** - * Set title + * Set title. + * + * @param string $title * - * @param string $title * @return Entry */ public function setTitle($title) @@ -158,7 +209,7 @@ class Entry } /** - * Get title + * Get title. * * @return string */ @@ -168,9 +219,10 @@ class Entry } /** - * Set url + * Set url. + * + * @param string $url * - * @param string $url * @return Entry */ public function setUrl($url) @@ -181,7 +233,7 @@ class Entry } /** - * Get url + * Get url. * * @return string */ @@ -191,9 +243,10 @@ class Entry } /** - * Set isArchived + * Set isArchived. + * + * @param bool $isArchived * - * @param string $isArchived * @return Entry */ public function setArchived($isArchived) @@ -204,9 +257,9 @@ class Entry } /** - * Get isArchived + * Get isArchived. * - * @return string + * @return bool */ public function isArchived() { @@ -221,9 +274,10 @@ class Entry } /** - * Set isStarred + * Set isStarred. + * + * @param bool $isStarred * - * @param string $isStarred * @return Entry */ public function setStarred($isStarred) @@ -234,9 +288,9 @@ class Entry } /** - * Get isStarred + * Get isStarred. * - * @return string + * @return bool */ public function isStarred() { @@ -251,9 +305,10 @@ class Entry } /** - * Set content + * Set content. + * + * @param string $content * - * @param string $content * @return Entry */ public function setContent($content) @@ -264,7 +319,7 @@ class Entry } /** - * Get content + * Get content. * * @return string */ @@ -375,7 +430,7 @@ class Entry } /** - * @return boolean + * @return bool */ public function isPublic() { @@ -383,9 +438,9 @@ class Entry } /** - * @param boolean $isPublic + * @param bool $isPublic */ - public function setPublic($isPublic) + public function setIsPublic($isPublic) { $this->isPublic = $isPublic; } @@ -403,6 +458,18 @@ class Entry */ public function addTag(Tag $tag) { + if ($this->tags->contains($tag)) { + return; + } + + // check if tag already exist but has not yet be persisted + // it seems that the previous condition with `contains()` doesn't check that case + foreach ($this->tags as $existingTag) { + if ($existingTag->getLabel() === $tag->getLabel()) { + return; + } + } + $this->tags[] = $tag; $tag->addEntry($this); } @@ -411,4 +478,52 @@ class Entry { $this->tags->removeElement($tag); } + + /** + * Set previewPicture. + * + * @param string $previewPicture + * + * @return Entry + */ + public function setPreviewPicture($previewPicture) + { + $this->previewPicture = $previewPicture; + + return $this; + } + + /** + * Get previewPicture. + * + * @return string + */ + public function getPreviewPicture() + { + return $this->previewPicture; + } + + /** + * Set language. + * + * @param string $language + * + * @return Entry + */ + public function setLanguage($language) + { + $this->language = $language; + + return $this; + } + + /** + * Get language. + * + * @return string + */ + public function getLanguage() + { + return $this->language; + } }