View source
<?php
namespace Drupal\sendinblue\Form;
use Drupal\Component\Serialization\Json;
use Drupal\Core\Cache\CacheBackendInterface;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Menu\MenuLinkManagerInterface;
use Drupal\sendinblue\SendinblueManager;
use Symfony\Component\DependencyInjection\ContainerInterface;
class ConfigurationSendinblueForm extends ConfigFormBase {
private $sendinblueManager;
private $cacheBackend;
private $menuLinkManager;
public function __construct(ConfigFactoryInterface $config_factory, SendinblueManager $sendinblueManager, CacheBackendInterface $cacheBackend, MenuLinkManagerInterface $menuLinkManager) {
parent::__construct($config_factory);
$this->sendinblueManager = $sendinblueManager;
$this->cacheBackend = $cacheBackend;
$this->menuLinkManager = $menuLinkManager;
}
public static function create(ContainerInterface $container) {
return new static($container
->get('config.factory'), $container
->get('sendinblue.manager'), $container
->get('cache.menu'), $container
->get('plugin.manager.menu.link'));
}
public function getFormId() {
return 'sendinblue_form_login';
}
public function buildForm(array $form, FormStateInterface $form_state) {
$form['access_key'] = [
'#type' => 'textfield',
'#title' => $this
->t('API Key'),
'#required' => TRUE,
'#attributes' => [
'placeholder' => $this
->t('API Key'),
],
'#size' => 50,
'#maxlenght' => 100,
];
$form['submit'] = [
'#type' => 'submit',
'#value' => $this
->t('Login'),
];
return $form;
}
public function validateForm(array &$form, FormStateInterface $form_state) {
$accessKey = $form_state
->getValue('access_key');
if (empty($accessKey)) {
$form_state
->setErrorByName('access_key', $this
->t('API key is invalid'));
}
$sendinblueMailin = $this->sendinblueManager
->updateSendinblueMailin($accessKey);
$sibAccount = $sendinblueMailin
->getAccount();
if (!isset($sibAccount)) {
$form_state
->setErrorByName('sib_account', $this
->t('Unable to get account info on Sib'));
}
}
public function submitForm(array &$form, FormStateInterface $form_state) {
$accessKey = $form_state
->getValue('access_key');
$config = $this->configFactory
->getEditable(SendinblueManager::CONFIG_SETTINGS);
$configRegistering = $this
->configFactory()
->getEditable(SendinblueManager::CONFIG_SETTINGS_REGISTERING_USER);
$sendinblueMailin = $this->sendinblueManager
->updateSendinblueMailin($accessKey);
$sibAccount = $sendinblueMailin
->getAccount();
if (isset($sibAccount)) {
$account_user_name = $sibAccount
->getFirstName() . ' ' . $sibAccount
->getLastName();
$config
->set(SendinblueManager::ACCESS_KEY, $accessKey)
->save();
$config
->set(SendinblueManager::ACCOUNT_EMAIL, $sibAccount
->getEmail())
->save();
$config
->set(SendinblueManager::ACCOUNT_USERNAME, $account_user_name)
->save();
$config
->set(SendinblueManager::ACCOUNT_DATA, Json::encode($sibAccount))
->save();
$configRegistering
->set('sendinblue_put_registered_user', '0')
->save();
$this->sendinblueManager
->updateSmtpDetails();
$sendinblueMailin
->partnerDrupal();
}
$this->cacheBackend
->invalidateAll();
$this->menuLinkManager
->rebuild();
parent::submitForm($form, $form_state);
}
protected function getEditableConfigNames() {
return [
'sendinblue_form_login.settings',
];
}
}