STRATO-apps/wordpress_03/app/wp-content/plugins/fluent-smtp/app/Services/Notification/Manager.php
SHA-256: 04e0bd23f936f98e4e79d18127d89ef703cc52565afbd83db187283563341ef4
<?php
namespace FluentMail\App\Services\Notification;
use FluentMail\App\Models\Settings;
use FluentMail\Includes\Support\Arr;
use FluentMail\Includes\Core\Application;
class Manager
{
protected $app = null;
protected static $config = [];
protected static $settings = [];
public function __construct(?Application $app = null)
{
$this->app = $app ?: fluentMail();
$this->initialize();
}
protected function initialize()
{
$this->loadConfigAndSettings();
}
protected function loadConfigAndSettings()
{
static::$config = require(__DIR__ . '/config.php');
static::$settings = (new Settings())->notificationSettings();
$this->mergeConfigAndSettings();
}
protected function mergeConfigAndSettings()
{
$databaseSettings = $this->getSettings();
// Merge database settings with config
foreach (static::$config['channels'] as $key => $channel) {
$channelSettings = Arr::get($databaseSettings, $key, []);
if ($channelSettings) {
static::$config['channels'][$key]['settings'] = $channelSettings;
}
}
// Set active channel from database
static::$config['active_channel'] = Arr::get($databaseSettings, 'active_channel', []);
}
public function getConfig($key = null, $default = null)
{
return $key ? Arr::get(static::$config, $key, $default) : static::$config;
}
public function getSettings($key = null, $default = null)
{
return $key ? Arr::get(static::$settings, $key, $default) : static::$settings;
}
public function getAllChannels()
{
return static::$config['channels'] ?? [];
}
public function getChannel($key)
{
return Arr::get(static::$config['channels'], $key, null);
}
public function getActiveChannels()
{
static $activeChannels;
if (isset($activeChannels)) {
return $activeChannels;
}
$activeChannelKeys = Arr::get(static::$config, 'active_channel', []);
if (!$activeChannelKeys || !is_array($activeChannelKeys)) {
return [];
}
$activeChannels = [];
foreach ($activeChannelKeys as $activeChannelKey) {
$channel = $this->getChannel($activeChannelKey);
if (!$channel) {
continue;
}
$channelSettings = Arr::get(static::$settings, $activeChannelKey, []);
if (empty($channelSettings['status']) || $channelSettings['status'] != 'yes') {
continue;
}
$channel['driver'] = $activeChannelKey;
$channel['settings'] = $channelSettings;
$activeChannels[] = $channel;
}
return $activeChannels;
}
public function getChannelStatus($key)
{
$channelSettings = Arr::get(static::$settings, $key, []);
return Arr::get($channelSettings, 'status', 'no');
}
public function getAllChannelKeys()
{
return array_keys(static::$config['channels'] ?? []);
}
}