Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: flarum 2.0 upgrade #77

Draft
wants to merge 11 commits into
base: master
Choose a base branch
from
Prev Previous commit
Next Next commit
chore(2.0): misc backend changes
Miscellaneous backend changes
SychO9 committed Nov 15, 2024
commit 5fc5ae3fa09b6e0671ff498ee1fa94495ddc3457
6 changes: 3 additions & 3 deletions extend.php
Original file line number Diff line number Diff line change
@@ -63,9 +63,9 @@
->attributes(AddTagSubscriptionAttribute::class),

(new Extend\Notification())
->type(Notifications\NewDiscussionBlueprint::class, DiscussionSerializer::class, ['alert', 'email'])
->type(Notifications\NewPostBlueprint::class, DiscussionSerializer::class, ['alert', 'email'])
->type(Notifications\NewDiscussionTagBlueprint::class, DiscussionSerializer::class, ['alert', 'email'])
->type(Notifications\NewDiscussionBlueprint::class, ['alert', 'email'])
->type(Notifications\NewPostBlueprint::class, ['alert', 'email'])
->type(Notifications\NewDiscussionTagBlueprint::class, ['alert', 'email'])
->beforeSending(Listeners\PreventMentionNotificationsFromIgnoredTags::class),

(new Extend\Conditional())
8 changes: 1 addition & 7 deletions src/Controllers/ChangeTagSubscription.php
Original file line number Diff line number Diff line change
@@ -26,14 +26,8 @@ class ChangeTagSubscription extends AbstractShowController
{
public $serializer = TagSerializer::class;

/**
* @var Dispatcher
*/
protected $events;

public function __construct(Dispatcher $events)
public function __construct(protected Dispatcher $events)
{
$this->events = $events;
}

protected function data(ServerRequestInterface $request, Document $document)
25 changes: 5 additions & 20 deletions src/Event/SubscriptionChanged.php
Original file line number Diff line number Diff line change
@@ -17,25 +17,10 @@

class SubscriptionChanged
{
/**
* @var User
*/
public $actor;

/**
* @var Tag
*/
public $tag;

/**
* @var TagState
*/
public $state;

public function __construct(User $actor, Tag $tag, TagState $state)
{
$this->actor = $actor;
$this->tag = $tag;
$this->state = $state;
public function __construct(
public User $actor,
public Tag $tag,
public TagState $state
) {
}
}
32 changes: 6 additions & 26 deletions src/Event/SubscriptionChanging.php
Original file line number Diff line number Diff line change
@@ -18,31 +18,11 @@

class SubscriptionChanging
{
/**
* @var User
*/
public $actor;

/**
* @var Tag
*/
public $tag;

/**
* @var TagState
*/
public $state;

/**
* @var ServerRequestInterface
*/
public $request;

public function __construct(User $actor, Tag $tag, TagState $state, ServerRequestInterface $request)
{
$this->actor = $actor;
$this->tag = $tag;
$this->state = $state;
$this->request = $request;
public function __construct(
public User $actor,
public Tag $tag,
public TagState $state,
public ServerRequestInterface $request
) {
}
}
14 changes: 1 addition & 13 deletions src/Jobs/SendNotificationWhenDiscussionIsReTagged.php
Original file line number Diff line number Diff line change
@@ -20,20 +20,8 @@

class SendNotificationWhenDiscussionIsReTagged extends NotificationJob
{
/**
* @var User
*/
protected $actor;

/**
* @var Discussion
*/
protected $discussion;

public function __construct(User $actor, Discussion $discussion)
public function __construct(protected User $actor, protected Discussion $discussion)
{
$this->actor = $actor;
$this->discussion = $discussion;
}

public function handle(NotificationSyncer $notifications)
8 changes: 1 addition & 7 deletions src/Jobs/SendNotificationWhenDiscussionIsStarted.php
Original file line number Diff line number Diff line change
@@ -19,14 +19,8 @@

class SendNotificationWhenDiscussionIsStarted extends NotificationJob
{
/**
* @var Discussion
*/
protected $discussion;

public function __construct(Discussion $discussion)
public function __construct(protected Discussion $discussion)
{
$this->discussion = $discussion;
}

public function handle(NotificationSyncer $notifications)
14 changes: 1 addition & 13 deletions src/Jobs/SendNotificationWhenReplyIsPosted.php
Original file line number Diff line number Diff line change
@@ -19,20 +19,8 @@

class SendNotificationWhenReplyIsPosted extends NotificationJob
{
/**
* @var Post
*/
protected $post;

/**
* @var int
*/
protected $lastPostNumber;

public function __construct(Post $post, int $lastPostNumber)
public function __construct(protected Post $post, protected int $lastPostNumber)
{
$this->post = $post;
$this->lastPostNumber = $lastPostNumber;
}

public function handle(NotificationSyncer $notifications)
Original file line number Diff line number Diff line change
@@ -18,17 +18,8 @@

class DeleteNotificationWhenDiscussionIsHiddenOrDeleted
{
/**
* @var NotificationSyncer
*/
protected $notifications;

/**
* @param NotificationSyncer $notifications
*/
public function __construct(NotificationSyncer $notifications)
public function __construct(protected NotificationSyncer $notifications)
{
$this->notifications = $notifications;
}

/**
11 changes: 1 addition & 10 deletions src/Listeners/DeleteNotificationWhenPostIsHiddenOrDeleted.php
Original file line number Diff line number Diff line change
@@ -18,17 +18,8 @@

class DeleteNotificationWhenPostIsHiddenOrDeleted
{
/**
* @var NotificationSyncer
*/
protected $notifications;

/**
* @param NotificationSyncer $notifications
*/
public function __construct(NotificationSyncer $notifications)
public function __construct(protected NotificationSyncer $notifications)
{
$this->notifications = $notifications;
}

/**
14 changes: 3 additions & 11 deletions src/Listeners/RestoreNotificationWhenDiscussionIsRestored.php
Original file line number Diff line number Diff line change
@@ -17,17 +17,9 @@

class RestoreNotificationWhenDiscussionIsRestored
{
/**
* @var NotificationSyncer
*/
protected $notifications;

/**
* @param NotificationSyncer $notifications
*/
public function __construct(NotificationSyncer $notifications)
{
$this->notifications = $notifications;
public function __construct(
protected NotificationSyncer $notifications
) {
}

public function handle(Restored $event)
14 changes: 3 additions & 11 deletions src/Listeners/RestoreNotificationWhenPostIsRestored.php
Original file line number Diff line number Diff line change
@@ -17,17 +17,9 @@

class RestoreNotificationWhenPostIsRestored
{
/**
* @var NotificationSyncer
*/
protected $notifications;

/**
* @param NotificationSyncer $notifications
*/
public function __construct(NotificationSyncer $notifications)
{
$this->notifications = $notifications;
public function __construct(
protected NotificationSyncer $notifications
) {
}

public function handle(Restored $event)
39 changes: 16 additions & 23 deletions src/Notifications/NewDiscussionBlueprint.php
Original file line number Diff line number Diff line change
@@ -11,66 +11,59 @@

namespace FoF\FollowTags\Notifications;

use Flarum\Database\AbstractModel;
use Flarum\Notification\AlertableInterface;
use Flarum\Discussion\Discussion;
use Flarum\Notification\Blueprint\BlueprintInterface;
use Flarum\Notification\MailableInterface;
use Flarum\Post\Post;
use Symfony\Contracts\Translation\TranslatorInterface;
use Flarum\User\User;
use Flarum\Locale\TranslatorInterface;

class NewDiscussionBlueprint implements BlueprintInterface, MailableInterface
class NewDiscussionBlueprint implements BlueprintInterface, MailableInterface, AlertableInterface
{
/**
* @var Discussion
*/
public $discussion;

/**
* @var Post
*/
public $post;

public function __construct(Discussion $discussion, Post $post = null)
{
$this->discussion = $discussion;
$this->post = $post;
public function __construct(
public Discussion $discussion,
public ?Post $post = null
) {
}

/**
* {@inheritdoc}
*/
public function getFromUser()
public function getFromUser(): ?User
{
return $this->discussion->user;
}

/**
* {@inheritdoc}
*/
public function getSubject()
public function getSubject(): ?AbstractModel
{
return $this->discussion;
}

/**
* {@inheritdoc}
*/
public function getData()
public function getData(): mixed
{
return [];
}

/**
* {@inheritdoc}
*/
public function getEmailView()
public function getEmailViews(): array
{
return ['text' => 'fof-follow-tags::emails.newDiscussion'];
}

/**
* {@inheritdoc}
*/
public function getEmailSubject(TranslatorInterface $translator)
public function getEmailSubject(TranslatorInterface $translator): string
{
return $translator->trans('fof-follow-tags.email.subject.newDiscussionInTag', [
'{title' => $this->discussion->title,
@@ -80,15 +73,15 @@ public function getEmailSubject(TranslatorInterface $translator)
/**
* {@inheritdoc}
*/
public static function getType()
public static function getType(): string
{
return 'newDiscussionInTag';
}

/**
* {@inheritdoc}
*/
public static function getSubjectModel()
public static function getSubjectModel(): string
{
return Discussion::class;
}
45 changes: 16 additions & 29 deletions src/Notifications/NewDiscussionTagBlueprint.php
Original file line number Diff line number Diff line change
@@ -11,73 +11,60 @@

namespace FoF\FollowTags\Notifications;

use Flarum\Database\AbstractModel;
use Flarum\Notification\AlertableInterface;
use Flarum\Discussion\Discussion;
use Flarum\Notification\Blueprint\BlueprintInterface;
use Flarum\Notification\MailableInterface;
use Flarum\Post\Post;
use Flarum\User\User;
use Symfony\Contracts\Translation\TranslatorInterface;
use Flarum\Locale\TranslatorInterface;

class NewDiscussionTagBlueprint implements BlueprintInterface, MailableInterface
class NewDiscussionTagBlueprint implements BlueprintInterface, MailableInterface, AlertableInterface
{
/**
* @var User
*/
public $actor;

/**
* @var Discussion
*/
public $discussion;

/**
* @var Post
*/
public $post;

public function __construct(User $actor, Discussion $discussion, Post $post = null)
{
$this->actor = $actor;
$this->discussion = $discussion;
$this->post = $post;
public function __construct(
public User $actor,
public Discussion $discussion,
public ?Post $post = null
) {
}

/**
* {@inheritdoc}
*/
public function getFromUser()
public function getFromUser(): ?User
{
return $this->actor;
}

/**
* {@inheritdoc}
*/
public function getSubject()
public function getSubject(): ?AbstractModel
{
return $this->discussion;
}

/**
* {@inheritdoc}
*/
public function getData()
public function getData(): mixed
{
return [];
}

/**
* {@inheritdoc}
*/
public function getEmailView()
public function getEmailViews(): array
{
return ['text' => 'fof-follow-tags::emails.newTag'];
}

/**
* {@inheritdoc}
*/
public function getEmailSubject(TranslatorInterface $translator)
public function getEmailSubject(TranslatorInterface $translator): string
{
return $translator->trans('fof-follow-tags.email.subject.newDiscussionTag', [
'actor' => $this->actor,
@@ -88,15 +75,15 @@ public function getEmailSubject(TranslatorInterface $translator)
/**
* {@inheritdoc}
*/
public static function getType()
public static function getType(): string
{
return 'newDiscussionTag';
}

/**
* {@inheritdoc}
*/
public static function getSubjectModel()
public static function getSubjectModel(): string
{
return Discussion::class;
}
35 changes: 15 additions & 20 deletions src/Notifications/NewPostBlueprint.php
Original file line number Diff line number Diff line change
@@ -11,63 +11,58 @@

namespace FoF\FollowTags\Notifications;

use Flarum\Database\AbstractModel;
use Flarum\Locale\TranslatorInterface;
use Flarum\Notification\AlertableInterface;
use Flarum\Discussion\Discussion;
use Flarum\Notification\Blueprint\BlueprintInterface;
use Flarum\Notification\MailableInterface;
use Flarum\Post\Post;
use Symfony\Contracts\Translation\TranslatorInterface;
use Flarum\User\User;

class NewPostBlueprint implements BlueprintInterface, MailableInterface
class NewPostBlueprint implements BlueprintInterface, MailableInterface, AlertableInterface
{
/**
* @var Post
*/
public $post;

/**
* @param Post $post
*/
public function __construct(Post $post)
{
$this->post = $post;
public function __construct(
public Post $post
) {
}

/**
* {@inheritdoc}
*/
public function getSubject()
public function getSubject(): ?AbstractModel
{
return $this->post->discussion;
}

/**
* {@inheritdoc}
*/
public function getFromUser()
public function getFromUser(): ?User
{
return $this->post->user;
}

/**
* {@inheritdoc}
*/
public function getData()
public function getData(): mixed
{
return ['postNumber' => (int) $this->post->number];
}

/**
* {@inheritdoc}
*/
public function getEmailView()
public function getEmailViews(): array
{
return ['text' => 'fof-follow-tags::emails.newPost'];
}

/**
* {@inheritdoc}
*/
public function getEmailSubject(TranslatorInterface $translator)
public function getEmailSubject(TranslatorInterface $translator): string
{
return $translator->trans('fof-follow-tags.email.subject.newPostInTag', [
'title' => $this->post->discussion->title,
@@ -77,15 +72,15 @@ public function getEmailSubject(TranslatorInterface $translator)
/**
* {@inheritdoc}
*/
public static function getType()
public static function getType(): string
{
return 'newPostInTag';
}

/**
* {@inheritdoc}
*/
public static function getSubjectModel()
public static function getSubjectModel(): string
{
return Discussion::class;
}