163 lines
3.9 KiB
PHP
163 lines
3.9 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace Illuminate\Notifications;
|
||
|
|
|
||
|
|
use Illuminate\Contracts\Bus\Dispatcher as Bus;
|
||
|
|
use Illuminate\Contracts\Events\Dispatcher;
|
||
|
|
use Illuminate\Contracts\Notifications\Dispatcher as DispatcherContract;
|
||
|
|
use Illuminate\Contracts\Notifications\Factory as FactoryContract;
|
||
|
|
use Illuminate\Support\Manager;
|
||
|
|
use InvalidArgumentException;
|
||
|
|
|
||
|
|
class ChannelManager extends Manager implements DispatcherContract, FactoryContract
|
||
|
|
{
|
||
|
|
/**
|
||
|
|
* The default channel used to deliver messages.
|
||
|
|
*
|
||
|
|
* @var string
|
||
|
|
*/
|
||
|
|
protected $defaultChannel = 'mail';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* The locale used when sending notifications.
|
||
|
|
*
|
||
|
|
* @var string|null
|
||
|
|
*/
|
||
|
|
protected $locale;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Send the given notification to the given notifiable entities.
|
||
|
|
*
|
||
|
|
* @param \Illuminate\Support\Collection|array|mixed $notifiables
|
||
|
|
* @param mixed $notification
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
public function send($notifiables, $notification)
|
||
|
|
{
|
||
|
|
return (new NotificationSender(
|
||
|
|
$this, $this->container->make(Bus::class), $this->container->make(Dispatcher::class), $this->locale)
|
||
|
|
)->send($notifiables, $notification);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Send the given notification immediately.
|
||
|
|
*
|
||
|
|
* @param \Illuminate\Support\Collection|array|mixed $notifiables
|
||
|
|
* @param mixed $notification
|
||
|
|
* @param array|null $channels
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
public function sendNow($notifiables, $notification, array $channels = null)
|
||
|
|
{
|
||
|
|
return (new NotificationSender(
|
||
|
|
$this, $this->container->make(Bus::class), $this->container->make(Dispatcher::class), $this->locale)
|
||
|
|
)->sendNow($notifiables, $notification, $channels);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Get a channel instance.
|
||
|
|
*
|
||
|
|
* @param string|null $name
|
||
|
|
* @return mixed
|
||
|
|
*/
|
||
|
|
public function channel($name = null)
|
||
|
|
{
|
||
|
|
return $this->driver($name);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Create an instance of the database driver.
|
||
|
|
*
|
||
|
|
* @return \Illuminate\Notifications\Channels\DatabaseChannel
|
||
|
|
*/
|
||
|
|
protected function createDatabaseDriver()
|
||
|
|
{
|
||
|
|
return $this->container->make(Channels\DatabaseChannel::class);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Create an instance of the broadcast driver.
|
||
|
|
*
|
||
|
|
* @return \Illuminate\Notifications\Channels\BroadcastChannel
|
||
|
|
*/
|
||
|
|
protected function createBroadcastDriver()
|
||
|
|
{
|
||
|
|
return $this->container->make(Channels\BroadcastChannel::class);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Create an instance of the mail driver.
|
||
|
|
*
|
||
|
|
* @return \Illuminate\Notifications\Channels\MailChannel
|
||
|
|
*/
|
||
|
|
protected function createMailDriver()
|
||
|
|
{
|
||
|
|
return $this->container->make(Channels\MailChannel::class);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Create a new driver instance.
|
||
|
|
*
|
||
|
|
* @param string $driver
|
||
|
|
* @return mixed
|
||
|
|
*
|
||
|
|
* @throws \InvalidArgumentException
|
||
|
|
*/
|
||
|
|
protected function createDriver($driver)
|
||
|
|
{
|
||
|
|
try {
|
||
|
|
return parent::createDriver($driver);
|
||
|
|
} catch (InvalidArgumentException $e) {
|
||
|
|
if (class_exists($driver)) {
|
||
|
|
return $this->container->make($driver);
|
||
|
|
}
|
||
|
|
|
||
|
|
throw $e;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Get the default channel driver name.
|
||
|
|
*
|
||
|
|
* @return string
|
||
|
|
*/
|
||
|
|
public function getDefaultDriver()
|
||
|
|
{
|
||
|
|
return $this->defaultChannel;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Get the default channel driver name.
|
||
|
|
*
|
||
|
|
* @return string
|
||
|
|
*/
|
||
|
|
public function deliversVia()
|
||
|
|
{
|
||
|
|
return $this->getDefaultDriver();
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Set the default channel driver name.
|
||
|
|
*
|
||
|
|
* @param string $channel
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
public function deliverVia($channel)
|
||
|
|
{
|
||
|
|
$this->defaultChannel = $channel;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Set the locale of notifications.
|
||
|
|
*
|
||
|
|
* @param string $locale
|
||
|
|
* @return $this
|
||
|
|
*/
|
||
|
|
public function locale($locale)
|
||
|
|
{
|
||
|
|
$this->locale = $locale;
|
||
|
|
|
||
|
|
return $this;
|
||
|
|
}
|
||
|
|
}
|