diff --git a/extensions/tags/src/Listener/UpdateTagMetadata.php b/extensions/tags/src/Listener/UpdateTagMetadata.php index 23066d2cb..87366b86f 100755 --- a/extensions/tags/src/Listener/UpdateTagMetadata.php +++ b/extensions/tags/src/Listener/UpdateTagMetadata.php @@ -100,7 +100,9 @@ class UpdateTagMetadata */ public function whenPostIsDeleted(PostDeleted $event) { - $this->updateTags($event->post->discussion); + $discussion = $event->post->discussion; + $delta = ! $discussion->exists && $discussion->hidden_at === null ? -1 : 0; + $this->updateTags($discussion, $delta); } /** @@ -145,7 +147,7 @@ class UpdateTagMetadata // If this is a new / restored discussion, it isn't private, it isn't null, // and it's more recent than what we have now, set it as last posted discussion. - if ($delta >= 0 && ! $discussion->is_private && $discussion->hidden_at == null && ($discussion->last_posted_at >= $tag->last_posted_at)) { + if ($delta >= 0 && ! $discussion->is_private && $discussion->hidden_at == null && ($discussion->last_posted_at >= $tag->last_posted_at) && $discussion->exists) { $tag->setLastPostedDiscussion($discussion); } elseif ($discussion->id == $tag->last_posted_discussion_id) { // This is to persist refreshLastPost above. It is here instead of there so that