X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FCoreBundle%2FEntity%2FEntry.php;h=ceae78b05556e4005f0c51e35e1eb93a5bf6c57a;hb=5ecdfcd041767c9e3244a92bb0a6cc3c3f80fea3;hp=24b24dbb13dc6ac29cc6a5fd736367cf26d72387;hpb=619cc45359ead519b64129181a07e14160fbbfcb;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Entity/Entry.php b/src/Wallabag/CoreBundle/Entity/Entry.php index 24b24dbb..ceae78b0 100644 --- a/src/Wallabag/CoreBundle/Entity/Entry.php +++ b/src/Wallabag/CoreBundle/Entity/Entry.php @@ -7,8 +7,12 @@ use Doctrine\ORM\Mapping as ORM; use Hateoas\Configuration\Annotation as Hateoas; use JMS\Serializer\Annotation\Groups; use JMS\Serializer\Annotation\XmlRoot; +use JMS\Serializer\Annotation\Exclude; +use JMS\Serializer\Annotation\VirtualProperty; +use JMS\Serializer\Annotation\SerializedName; use Symfony\Component\Validator\Constraints as Assert; use Wallabag\UserBundle\Entity\User; +use Wallabag\AnnotationBundle\Entity\Annotation; /** * Entry. @@ -55,6 +59,8 @@ class Entry /** * @var bool * + * @Exclude + * * @ORM\Column(name="is_archived", type="boolean") * * @Groups({"entries_for_user", "export_all"}) @@ -64,6 +70,8 @@ class Entry /** * @var bool * + * @Exclude + * * @ORM\Column(name="is_starred", type="boolean") * * @Groups({"entries_for_user", "export_all"}) @@ -98,13 +106,12 @@ class Entry private $updatedAt; /** - * @var string - * - * @ORM\Column(name="comments", type="text", nullable=true) + * @ORM\OneToMany(targetEntity="Wallabag\AnnotationBundle\Entity\Annotation", mappedBy="entry", cascade={"persist", "remove"}) + * @ORM\JoinTable * - * @Groups({"export_all"}) + * @Groups({"entries_for_user", "export_all"}) */ - private $comments; + private $annotations; /** * @var string @@ -161,6 +168,8 @@ class Entry private $isPublic; /** + * @Exclude + * * @ORM\ManyToOne(targetEntity="Wallabag\UserBundle\Entity\User", inversedBy="entries") * * @Groups({"export_all"}) @@ -169,7 +178,15 @@ class Entry /** * @ORM\ManyToMany(targetEntity="Tag", inversedBy="entries", cascade={"persist"}) - * @ORM\JoinTable + * @ORM\JoinTable( + * name="entry_tag", + * joinColumns={ + * @ORM\JoinColumn(name="entry_id", referencedColumnName="id") + * }, + * inverseJoinColumns={ + * @ORM\JoinColumn(name="tag_id", referencedColumnName="id") + * } + * ) * * @Groups({"entries_for_user", "export_all"}) */ @@ -178,7 +195,7 @@ class Entry /* * @param User $user */ - public function __construct(\Wallabag\UserBundle\Entity\User $user) + public function __construct(User $user) { $this->user = $user; $this->tags = new ArrayCollection(); @@ -266,6 +283,16 @@ class Entry return $this->isArchived; } + /** + * @VirtualProperty + * @SerializedName("is_archived") + * @Groups({"entries_for_user", "export_all"}) + */ + public function is_Archived() + { + return (int) $this->isArchived(); + } + public function toggleArchive() { $this->isArchived = $this->isArchived() ^ 1; @@ -297,6 +324,16 @@ class Entry return $this->isStarred; } + /** + * @VirtualProperty + * @SerializedName("is_starred") + * @Groups({"entries_for_user", "export_all"}) + */ + public function is_Starred() + { + return (int) $this->isStarred(); + } + public function toggleStar() { $this->isStarred = $this->isStarred() ^ 1; @@ -336,6 +373,33 @@ class Entry return $this->user; } + /** + * @VirtualProperty + * @SerializedName("user_name") + */ + public function getUserName() + { + return $this->user->getUserName(); + } + + /** + * @VirtualProperty + * @SerializedName("user_email") + */ + public function getUserEmail() + { + return $this->user->getEmail(); + } + + /** + * @VirtualProperty + * @SerializedName("user_id") + */ + public function getUserId() + { + return $this->user->getId(); + } + /** * @return string */ @@ -366,19 +430,19 @@ class Entry } /** - * @return string + * @return ArrayCollection */ - public function getComments() + public function getAnnotations() { - return $this->comments; + return $this->annotations; } /** - * @param string $comments + * @param Annotation $annotation */ - public function setComments($comments) + public function setAnnotation(Annotation $annotation) { - $this->comments = $comments; + $this->annotations[] = $annotation; } /** @@ -470,13 +534,18 @@ class Entry } } - $this->tags[] = $tag; + $this->tags->add($tag); $tag->addEntry($this); } public function removeTag(Tag $tag) { + if (!$this->tags->contains($tag)) { + return; + } + $this->tags->removeElement($tag); + $tag->removeEntry($this); } /**