X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FCoreBundle%2FEntity%2FEntry.php;h=7276b437cd01e8503507515003e15e1c5fcb04af;hb=f17b89fadce0a8c2280fbe1518d66f20dddce59d;hp=3c742828522935830b11bc90c426946ef63acbdb;hpb=f3d0cb91063840f2b05c63954d3fef3e5b8943fd;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Entity/Entry.php b/src/Wallabag/CoreBundle/Entity/Entry.php index 3c742828..7276b437 100644 --- a/src/Wallabag/CoreBundle/Entity/Entry.php +++ b/src/Wallabag/CoreBundle/Entity/Entry.php @@ -19,7 +19,14 @@ use Wallabag\AnnotationBundle\Entity\Annotation; * * @XmlRoot("entry") * @ORM\Entity(repositoryClass="Wallabag\CoreBundle\Repository\EntryRepository") - * @ORM\Table(name="`entry`") + * @ORM\Table( + * name="`entry`", + * options={"collate"="utf8mb4_unicode_ci", "charset"="utf8mb4"}, + * indexes={ + * @ORM\Index(name="created_at", columns={"created_at"}), + * @ORM\Index(name="uid", columns={"uid"}) + * } + * ) * @ORM\HasLifecycleCallbacks() * @Hateoas\Relation("self", href = "expr('/api/entries/' ~ object.getId())") */ @@ -38,13 +45,13 @@ class Entry private $id; /** - * @var int + * @var string * - * @ORM\Column(name="uuid", type="text", nullable=true) + * @ORM\Column(name="uid", type="string", length=23, nullable=true) * * @Groups({"entries_for_user", "export_all"}) */ - private $uuid; + private $uid; /** * @var string @@ -97,20 +104,20 @@ class Entry private $content; /** - * @var date + * @var \DateTime * * @ORM\Column(name="created_at", type="datetime") * - * @Groups({"export_all"}) + * @Groups({"entries_for_user", "export_all"}) */ private $createdAt; /** - * @var date + * @var \DateTime * * @ORM\Column(name="updated_at", type="datetime") * - * @Groups({"export_all"}) + * @Groups({"entries_for_user", "export_all"}) */ private $updatedAt; @@ -176,6 +183,15 @@ class Entry */ private $isPublic; + /** + * @var string + * + * @ORM\Column(name="http_status", type="string", length=3, nullable=true) + * + * @Groups({"entries_for_user", "export_all"}) + */ + private $httpStatus; + /** * @Exclude * @@ -190,14 +206,12 @@ class Entry * @ORM\JoinTable( * name="entry_tag", * joinColumns={ - * @ORM\JoinColumn(name="entry_id", referencedColumnName="id") + * @ORM\JoinColumn(name="entry_id", referencedColumnName="id", onDelete="cascade") * }, * inverseJoinColumns={ - * @ORM\JoinColumn(name="tag_id", referencedColumnName="id") + * @ORM\JoinColumn(name="tag_id", referencedColumnName="id", onDelete="cascade") * } * ) - * - * @Groups({"entries_for_user", "export_all"}) */ private $tags; @@ -410,7 +424,22 @@ class Entry } /** - * @return string + * Set created_at. + * Only used when importing data from an other service. + * + * @param \DateTime $createdAt + * + * @return Entry + */ + public function setCreatedAt(\DateTime $createdAt) + { + $this->createdAt = $createdAt; + + return $this; + } + + /** + * @return \DateTime */ public function getCreatedAt() { @@ -418,7 +447,7 @@ class Entry } /** - * @return string + * @return \DateTime */ public function getUpdatedAt() { @@ -436,8 +465,6 @@ class Entry } $this->updatedAt = new \DateTime(); - - $this->generateUuid(); } /** @@ -528,6 +555,21 @@ class Entry return $this->tags; } + /** + * @VirtualProperty + * @SerializedName("tags") + * @Groups({"entries_for_user", "export_all"}) + */ + public function getSerializedTags() + { + $data = []; + foreach ($this->tags as $tag) { + $data[] = $tag->getLabel(); + } + + return $data; + } + /** * @param Tag $tag */ @@ -608,29 +650,55 @@ class Entry } /** - * @return int + * @return string */ - public function getUuid() + public function getUid() { - return $this->uuid; + return $this->uid; } /** - * @param int $uuid + * @param string $uid * * @return Entry */ - public function setUuid($uuid) + public function setUid($uid) { - $this->uuid = $uuid; + $this->uid = $uid; return $this; } - public function generateUuid() + public function generateUid() { - if (empty($this->uuid) || is_null($this->uuid)) { - $this->uuid = uniqid(); + if (null === $this->uid) { + // @see http://blog.kevingomez.fr/til/2015/07/26/why-is-uniqid-slow/ for true parameter + $this->uid = uniqid('', true); } } + + public function cleanUid() + { + $this->uid = null; + } + + /** + * @return int + */ + public function getHttpStatus() + { + return $this->httpStatus; + } + + /** + * @param int $httpStatus + * + * @return Entry + */ + public function setHttpStatus($httpStatus) + { + $this->httpStatus = $httpStatus; + + return $this; + } }