discussion = $discussion; $this->topic = $discussion->topic; } public function notifySubscribers(): void { $subscribers = $this->getSubscribers(); foreach ($subscribers as $subscriber) { $this->sendNotifications($subscriber); } } protected function getSubscribers(): array { return Subscription::findBySQL( "subject = :subject AND subject_id = :subject_id AND notification_type = :notification_type", [ 'subject' => 'topic', 'subject_id' => $this->topic->topic_id, 'notification_type' => SubscriptionNotificationType::All->value ] ); } protected function sendNotifications(Subscription $subscriber): void { $url = URLHelper::getURL('dispatch.php/course/forum/discussions/show/'.$this->discussion->discussion_id, ['cid' => $this->topic->range_id], true); $message = sprintf( _('Es gibt eine neue Diskussion ā€ž%1$sā€œ zum Thema ā€ž%2$sā€œ.'), $this->discussion->title, $this->topic->name ); PersonalNotifications::add( $subscriber->user_id, $url, $message, null, Icon::create('forum') ); } }