From 5410d7756c15a0b39150e9a1df80ae6b2d7a8ac1 Mon Sep 17 00:00:00 2001 From: Lucas Date: Sun, 12 Jan 2020 15:25:23 +0800 Subject: [PATCH] Add translation Hide user on discussion --- locale/en.yml | 3 +++ src/Listener/AddForumUserRelationship.php | 18 +++++++++++++++++- src/Listener/SerializingListener.php | 19 ++++++++++++++++++- src/User/Anonymous.php | 7 ++++--- 4 files changed, 42 insertions(+), 5 deletions(-) diff --git a/locale/en.yml b/locale/en.yml index e2d6a80..fa8a293 100644 --- a/locale/en.yml +++ b/locale/en.yml @@ -11,3 +11,6 @@ dotronglong-hide-me: privacy_public_info: Your identity will be visible to everyone. privacy_anonymous_label: Anonymous Mode privacy_anonymous_info: Show as anonymous. You can still edit post. + anonymous: + username: "[hidden]" + display_name: "[hidden]" diff --git a/src/Listener/AddForumUserRelationship.php b/src/Listener/AddForumUserRelationship.php index f85992d..5ee3564 100644 --- a/src/Listener/AddForumUserRelationship.php +++ b/src/Listener/AddForumUserRelationship.php @@ -11,9 +11,25 @@ use Flarum\Event\GetApiRelationship; use Illuminate\Contracts\Events\Dispatcher; use Long\HideMe\User\Anonymous; +use Symfony\Component\Translation\TranslatorInterface; class AddForumUserRelationship { + /** + * @var TranslatorInterface + */ + private $translator; + + /** + * AddForumUserRelationship constructor. + * @param $translator + */ + public function __construct(TranslatorInterface $translator) + { + $this->translator = $translator; + } + + public function subscribe(Dispatcher $events) { $events->listen(GetApiRelationship::class, [$this, 'getApiRelationship']); @@ -31,7 +47,7 @@ public function getApiRelationship(GetApiRelationship $event) public function loadUsersRelationship(WillSerializeData $event) { if ($event->isController(ShowForumController::class)) { - $event->data['users'] = [Anonymous::user()]; + $event->data['users'] = [Anonymous::user($this->translator)]; } } diff --git a/src/Listener/SerializingListener.php b/src/Listener/SerializingListener.php index cb1f259..5bffee2 100644 --- a/src/Listener/SerializingListener.php +++ b/src/Listener/SerializingListener.php @@ -12,9 +12,23 @@ use Flarum\Post\Post; use Long\HideMe\HideMe; use Long\HideMe\User\Anonymous; +use Symfony\Component\Translation\TranslatorInterface; class SerializingListener { + /** + * @var TranslatorInterface + */ + private $translator; + + /** + * SerializingListener constructor. + */ + public function __construct(TranslatorInterface $translator) + { + $this->translator = $translator; + } + public function handle(Serializing $event) { if ($event->serializer instanceof DiscussionSerializer @@ -29,12 +43,15 @@ public function handle(Serializing $event) private function hide(Serializing $event) { - $anonymous = Anonymous::user(); + $anonymous = Anonymous::user($this->translator); if ($event->model instanceof Discussion) { $lastPost = $event->model->lastPost()->first(); if ($lastPost[HideMe::COL_HIDE_ME] === HideMe::ANONYMOUS) { $event->model->setRelation('lastPostedUser', $anonymous); } + if ($event->model[HideMe::COL_HIDE_ME] === HideMe::ANONYMOUS) { + $event->model->setRelation('user', $anonymous); + } } else if (($event->model instanceof Post || $event->model instanceof CommentPost) && $event->model[HideMe::COL_HIDE_ME] === HideMe::ANONYMOUS) { $event->model->setRelation('user', $anonymous); diff --git a/src/User/Anonymous.php b/src/User/Anonymous.php index e02b744..a69d78a 100644 --- a/src/User/Anonymous.php +++ b/src/User/Anonymous.php @@ -4,6 +4,7 @@ use Carbon\Carbon; use Flarum\User\User; +use Symfony\Component\Translation\TranslatorInterface; class Anonymous extends User { @@ -17,13 +18,13 @@ public function isGuest() return false; } - public static function user() + public static function user(TranslatorInterface $translator) { $now = Carbon::now('utc')->toDateTimeString(); $user = new static(); $user->id = -1; - $user->username = '[hidden]'; - $user->display_name = '[hidden]'; + $user->username = $translator->trans("dotronglong-hide-me.anonymous.username"); + $user->display_name = $translator->trans("dotronglong-hide-me.anonymous.display_name"); $user->joined_at = $now; $user->last_seen_at = $now; $user->discussion_count = 0;