diff options
author | François D <franek@users.noreply.github.com> | 2017-08-23 23:06:40 +0200 |
---|---|---|
committer | François D <franek@users.noreply.github.com> | 2017-08-25 21:19:47 +0200 |
commit | a991c46eedec0efb24d0a9974b1c7fcabf8cfa66 (patch) | |
tree | fa33236c5ef67e023833c889eb52d5bed99d35bd /src/Wallabag/CoreBundle/Entity | |
parent | 2490f61dca635026a3eb9b5e9b6978b1981b1172 (diff) | |
download | wallabag-a991c46eedec0efb24d0a9974b1c7fcabf8cfa66.tar.gz wallabag-a991c46eedec0efb24d0a9974b1c7fcabf8cfa66.tar.zst wallabag-a991c46eedec0efb24d0a9974b1c7fcabf8cfa66.zip |
Set a starred_at field when an entry is starred.
This date is used to sort starred entries.
Can not use Entry::timestamps method otherwise starred_at will be updated each time entry is updated.
Add an updateStar method into Entry class
A migration script has been added in order to set starred_at field.
Diffstat (limited to 'src/Wallabag/CoreBundle/Entity')
-rw-r--r-- | src/Wallabag/CoreBundle/Entity/Entry.php | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/Wallabag/CoreBundle/Entity/Entry.php b/src/Wallabag/CoreBundle/Entity/Entry.php index 61d01bdc..4367902e 100644 --- a/src/Wallabag/CoreBundle/Entity/Entry.php +++ b/src/Wallabag/CoreBundle/Entity/Entry.php | |||
@@ -143,6 +143,15 @@ class Entry | |||
143 | private $publishedBy; | 143 | private $publishedBy; |
144 | 144 | ||
145 | /** | 145 | /** |
146 | * @var \DateTime | ||
147 | * | ||
148 | * @ORM\Column(name="starred_at", type="datetime", nullable=true) | ||
149 | * | ||
150 | * @Groups({"entries_for_user", "export_all"}) | ||
151 | */ | ||
152 | private $starredAt = null; | ||
153 | |||
154 | /** | ||
146 | * @ORM\OneToMany(targetEntity="Wallabag\AnnotationBundle\Entity\Annotation", mappedBy="entry", cascade={"persist", "remove"}) | 155 | * @ORM\OneToMany(targetEntity="Wallabag\AnnotationBundle\Entity\Annotation", mappedBy="entry", cascade={"persist", "remove"}) |
147 | * @ORM\JoinTable | 156 | * @ORM\JoinTable |
148 | * | 157 | * |
@@ -476,6 +485,44 @@ class Entry | |||
476 | } | 485 | } |
477 | 486 | ||
478 | /** | 487 | /** |
488 | * @return \DateTime|null | ||
489 | */ | ||
490 | public function getStarredAt() | ||
491 | { | ||
492 | return $this->starredAt; | ||
493 | } | ||
494 | |||
495 | /** | ||
496 | * @param \DateTime|null $starredAt | ||
497 | * | ||
498 | * @return Entry | ||
499 | */ | ||
500 | public function setStarredAt($starredAt = null) | ||
501 | { | ||
502 | $this->starredAt = $starredAt; | ||
503 | |||
504 | return $this; | ||
505 | } | ||
506 | |||
507 | /** | ||
508 | * update isStarred and starred_at fields. | ||
509 | * | ||
510 | * @param bool $isStarred | ||
511 | * | ||
512 | * @return Entry | ||
513 | */ | ||
514 | public function updateStar($isStarred = false) | ||
515 | { | ||
516 | $this->setStarred($isStarred); | ||
517 | $this->setStarredAt(null); | ||
518 | if ($this->isStarred()) { | ||
519 | $this->setStarredAt(new \DateTime()); | ||
520 | } | ||
521 | |||
522 | return $this; | ||
523 | } | ||
524 | |||
525 | /** | ||
479 | * @return ArrayCollection<Annotation> | 526 | * @return ArrayCollection<Annotation> |
480 | */ | 527 | */ |
481 | public function getAnnotations() | 528 | public function getAnnotations() |