From 09de6f3bb429b8be5de84a56dfaeb832d073c607 Mon Sep 17 00:00:00 2001 From: crynobone Date: Thu, 28 Jul 2016 09:11:51 +0800 Subject: [PATCH] Message and Notifiable should be able to handle Mailable. Signed-off-by: crynobone --- src/Message.php | 13 +++++++++++++ src/Notifiable.php | 10 +++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/Message.php b/src/Message.php index fed5875..cfd4c73 100644 --- a/src/Message.php +++ b/src/Message.php @@ -4,6 +4,7 @@ use Illuminate\Support\Arr; use Illuminate\Support\Fluent; +use Illuminate\Contracts\Mail\Mailable as MailableContract; use Orchestra\Contracts\Notification\Message as MessageContract; class Message extends Fluent implements MessageContract @@ -55,4 +56,16 @@ public function getView() { return Arr::get($this->attributes, 'view'); } + + /** + * Is message mailable. + * + * @return bool + */ + public function mailable() + { + $view = $this->getView(); + + return ($view instanceof MailableContract); + } } diff --git a/src/Notifiable.php b/src/Notifiable.php index 798dce6..982c78a 100644 --- a/src/Notifiable.php +++ b/src/Notifiable.php @@ -40,14 +40,18 @@ protected function sendNotifications(Collection $users, $subject, $view = null, */ protected function sendNotification(Recipient $user, $subject, $view = null, array $data = []) { - $entity = $user; - if ($subject instanceof MessageContract) { - $data = $subject->getData(); + if ($subject->mailable()) { + return Notifier::send($user, $subject); + } + $view = $subject->getView(); + $data = $subject->getData(); $subject = $subject->getSubject(); } + $entity = $user; + if ($user instanceof Arrayable) { $entity = $user->toArray(); }