diff --git a/src/Dao/EntityConverters/TagEntityConverter.php b/src/Dao/EntityConverters/TagEntityConverter.php index d340b27d..4b703cf0 100644 --- a/src/Dao/EntityConverters/TagEntityConverter.php +++ b/src/Dao/EntityConverters/TagEntityConverter.php @@ -11,6 +11,7 @@ class TagEntityConverter extends AbstractEntityConverter implements IEntityConve [ 'name' => $entity->getName(), 'creationTime' => $this->entityTimeToDbTime($entity->getCreationTime()), + 'lastEditTime' => $this->entityTimeToDbTime($entity->getLastEditTime()), 'banned' => intval($entity->isBanned()), 'category' => $entity->getCategory(), ]; @@ -21,6 +22,7 @@ class TagEntityConverter extends AbstractEntityConverter implements IEntityConve $entity = new Tag(intval($array['id'])); $entity->setName($array['name']); $entity->setCreationTime($this->dbTimeToEntityTime($array['creationTime'])); + $entity->setLastEditTime($this->dbTimeToEntityTime($array['lastEditTime'])); $entity->setMeta(Tag::META_USAGES, intval($array['usages'])); $entity->setBanned($array['banned']); $entity->setCategory($array['category']); diff --git a/src/Entities/Tag.php b/src/Entities/Tag.php index c3e98ee9..2bbb23c1 100644 --- a/src/Entities/Tag.php +++ b/src/Entities/Tag.php @@ -5,6 +5,7 @@ final class Tag extends Entity { private $name; private $creationTime; + private $lastEditTime; private $banned = false; private $category = 'default'; @@ -33,6 +34,16 @@ final class Tag extends Entity $this->creationTime = $creationTime; } + public function getLastEditTime() + { + return $this->lastEditTime; + } + + public function setLastEditTime($lastEditTime) + { + $this->lastEditTime = $lastEditTime; + } + public function isBanned() { return $this->banned; diff --git a/src/Search/Filters/TagFilter.php b/src/Search/Filters/TagFilter.php index da7cb6f1..52ab98c1 100644 --- a/src/Search/Filters/TagFilter.php +++ b/src/Search/Filters/TagFilter.php @@ -6,6 +6,7 @@ class TagFilter extends BasicFilter implements IFilter const ORDER_ID = 'id'; const ORDER_NAME = 'name'; const ORDER_CREATION_TIME = 'creationTime'; + const ORDER_LAST_EDIT_TIME = 'lastEditTime'; const ORDER_USAGE_COUNT = 'usages'; const REQUIREMENT_PARTIAL_TAG_NAME = 'partialTagName'; diff --git a/src/Search/Parsers/TagSearchParser.php b/src/Search/Parsers/TagSearchParser.php index edc65c3c..5405b6d4 100644 --- a/src/Search/Parsers/TagSearchParser.php +++ b/src/Search/Parsers/TagSearchParser.php @@ -45,6 +45,7 @@ class TagSearchParser extends AbstractSearchParser [['id'], TagFilter::ORDER_ID], [['name'], TagFilter::ORDER_NAME], [['creation_time', 'creation_date', 'date'], TagFilter::ORDER_CREATION_TIME], + [['edit_time', 'edit_date'], TagFilter::ORDER_LAST_EDIT_TIME], [['usage_count', 'usages'], TagFilter::ORDER_USAGE_COUNT], ]; } diff --git a/src/Services/TagService.php b/src/Services/TagService.php index d454c443..90ecadd6 100644 --- a/src/Services/TagService.php +++ b/src/Services/TagService.php @@ -106,6 +106,7 @@ class TagService $tag->setName($tagName); } $tag->setCreationTime($this->timeService->getCurrentTime()); + $tag->setLastEditTime($this->timeService->getCurrentTime()); $tagsToCreate[$tagNameGetter($tag)] = $tag; } @@ -137,6 +138,8 @@ class TagService { $this->validator->validate($formData); + $tag->setLastEditTime($this->timeService->getCurrentTime()); + if ($formData->name !== null) $this->updateTagName($tag, $formData->name); diff --git a/src/Upgrades/Upgrade44.php b/src/Upgrades/Upgrade44.php new file mode 100644 index 00000000..e98af9d8 --- /dev/null +++ b/src/Upgrades/Upgrade44.php @@ -0,0 +1,13 @@ +getPDO(); + $pdo->exec('ALTER TABLE tags ADD COLUMN lastEditTime TIMESTAMP NOT NULL DEFAULT 0'); + $pdo->exec('UPDATE tags SET lastEditTime = creationTime'); + } +} diff --git a/src/di.php b/src/di.php index f7c50253..e7f73d85 100644 --- a/src/di.php +++ b/src/di.php @@ -60,6 +60,7 @@ return [ $container->get(\Szurubooru\Upgrades\Upgrade41::class), $container->get(\Szurubooru\Upgrades\Upgrade42::class), $container->get(\Szurubooru\Upgrades\Upgrade43::class), + $container->get(\Szurubooru\Upgrades\Upgrade44::class), ]; }),