YamlFormEmailProvider.php in YAML Form 8
File
src/YamlFormEmailProvider.php
View source
<?php
namespace Drupal\yamlform;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Mail\MailManagerInterface;
class YamlFormEmailProvider implements YamlFormEmailProviderInterface {
protected $configFactory;
protected $moduleHandler;
protected $mailManager;
public function __construct(ConfigFactoryInterface $config_factory, ModuleHandlerInterface $module_handler, MailManagerInterface $mail_manager) {
$this->configFactory = $config_factory;
$this->moduleHandler = $module_handler;
$this->mailManager = $mail_manager;
}
public function getModules() {
return [
'mailsystem',
'smtp',
];
}
public function check() {
if ($this->configFactory
->get('system.mail')
->get('interface.default') == 'test_mail_collector') {
return $this
->uninstall();
}
$mail_modules = $this
->getModules();
foreach ($mail_modules as $module) {
if ($this->moduleHandler
->moduleExists($module)) {
return $this
->uninstall();
}
}
if ($this->configFactory
->get('system.mail')
->get('interface.default') == 'php_mail') {
return $this
->install();
}
else {
return $this
->uninstall();
}
}
public function installed() {
return $this->configFactory
->get('system.mail')
->get('interface.yamlform') == 'yamlform_php_mail';
}
public function install() {
$config = $this->configFactory
->getEditable('system.mail');
$mail_plugins = $config
->get('interface');
$mail_plugins['yamlform'] = 'yamlform_php_mail';
$config
->set('interface', $mail_plugins)
->save();
}
public function uninstall() {
$config = $this->configFactory
->getEditable('system.mail');
$mail_plugins = $config
->get('interface');
unset($mail_plugins['yamlform']);
$config
->set('interface', $mail_plugins)
->save();
}
public function getModule() {
if ($this
->installed()) {
return 'yamlform';
}
else {
$modules = $this
->getModules();
foreach ($modules as $module) {
if ($this->moduleHandler
->moduleExists($module)) {
return $module;
}
}
}
return FALSE;
}
public function getModuleName() {
return ($module = $this
->getModule()) ? $this->moduleHandler
->getName($module) : FALSE;
}
public function getMailPluginId() {
$config = $this->configFactory
->get('system.mail');
return $config
->get('interface.yamlform') ?: $config
->get('interface.default') ?: FALSE;
}
public function getMailPluginDefinition() {
$plugin_id = $this
->getMailPluginId();
return $plugin_id ? $this->mailManager
->getDefinition($plugin_id) : NULL;
}
}