class SendinblueManager in SendinBlue 8
Same name and namespace in other branches
- 8.2 src/SendinblueManager.php \Drupal\sendinblue\SendinblueManager
Basic manager of module.
Hierarchy
- class \Drupal\sendinblue\SendinblueManager uses StringTranslationTrait
Expanded class hierarchy of SendinblueManager
13 files declare their use of SendinblueManager
- ConfigurationSendinblueForm.php in src/
Form/ ConfigurationSendinblueForm.php - LogoutForm.php in src/
Form/ LogoutForm.php - RegisteringUserForm.php in src/
Form/ RegisteringUserForm.php - sendinblue.install in ./
sendinblue.install - Install, update and uninstall functions for the sendinblue module.
- sendinblue.module in ./
sendinblue.module - The entry point of Sendinblue module.
1 string reference to 'SendinblueManager'
1 service uses SendinblueManager
File
- src/
SendinblueManager.php, line 24
Namespace
Drupal\sendinblueView source
class SendinblueManager {
use StringTranslationTrait;
const SENDINBLUE_SIGNUP_ENTITY = 'sendinblue_signup_form';
const SENDINBLUE_SIGNUP_BLOCK = 1;
const SENDINBLUE_SIGNUP_PAGE = 2;
const SENDINBLUE_SIGNUP_BOTH = 3;
const SENDINBLUE_API_VERSION_V2 = 'v2';
const SENDINBLUE_API_VERSION_V3 = 'v3';
/**
* Variable name of Sendinblue URL.
*/
const SIB_URL = 'https://my.sendinblue.com';
/**
* Variable name of Sendinblue access key.
*/
const CONFIG_SETTINGS = 'sendinblue.config_global.settings';
/**
* Variable name of Sendinblue access key.
*/
const CONFIG_SETTINGS_REGISTERING_USER = 'sendinblue.config_registering_user.settings';
/**
* Variable name of Sendinblue access key.
*/
const CONFIG_SETTINGS_SEND_EMAIL = 'sendinblue.config_send_email.settings';
/**
* Variable name of Sendinblue access key.
*/
const ACCESS_KEY = 'sendinblue_access_key';
/**
* Variable name of Sendinblue account email.
*/
const ACCOUNT_EMAIL = 'sendinblue_account_email';
/**
* Variable name of Sendinblue account user name.
*/
const ACCOUNT_USERNAME = 'sendinblue_account_username';
/**
* Variable name of Sendinblue account data.
*/
const ACCOUNT_DATA = 'sendinblue_account_data';
/**
* Variable name of access_token.
*/
const ACCESS_TOKEN = 'sendinblue_access_token';
/**
* Variable name of smtp details.
*/
const SMTP_DETAILS = 'sendinblue_smtp_details';
/**
* ConfigFactoryInterface.
*
* @var \Drupal\Core\Config\ConfigFactoryInterface
*/
private $configFactory;
/**
* FormBuilderInterface.
*
* @var \Drupal\Core\Form\FormBuilderInterface
*/
private $formBuilder;
/**
* Renderer.
*
* @var \Drupal\Core\Render\Renderer
*/
private $renderer;
/**
* SendinblueMailin.
*
* @var \Drupal\sendinblue\Tools\Api\SendInBlueApiInterface
*/
private $sendinblueMailin;
/**
* Connection.
*
* @var \Drupal\Core\Database\Connection
*/
private $connection;
/**
* MailManagerInterface.
*
* @var \Drupal\Core\Mail\MailManagerInterface
*/
private $mailManager;
/**
* AccountProxyInterface.
*
* @var \Drupal\Core\Session\AccountProxyInterface
*/
private $accountProxy;
/**
* SendinblueApi V2.
*
* @var \Drupal\sendinblue\Tools\Api\SendinblueApiV2
*/
private $sendinblueApiV2;
/**
* SendinblueApi V3.
*
* @var \Drupal\sendinblue\Tools\Api\SendinblueApiV3
*/
private $sendinblueApiV3;
/**
* EntityModerationForm constructor.
*
* @param \Drupal\sendinblue\Tools\Api\SendinblueApiV2 $sendinblueApiV2
* SendinblueMailin.
* @param \Drupal\sendinblue\Tools\Api\SendinblueApiV3 $sendinblueApiV3
* SendinblueMailin.
* @param \Drupal\Core\Config\ConfigFactoryInterface $configFactory
* ConfigFactoryInterface.
* @param \Drupal\Core\Database\Connection $connection
* Connection.
* @param \Drupal\Core\Form\FormBuilderInterface $formBuilder
* FormBuilderInterface.
* @param \Drupal\Core\Render\Renderer $renderer
* Renderer.
* @param \Drupal\Core\Mail\MailManagerInterface $mailManager
* MailManagerInterface.
* @param \Drupal\Core\Session\AccountProxyInterface $accountProxy
* AccountProxyInterface.
*/
public function __construct(SendinblueApiV2 $sendinblueApiV2, SendinblueApiV3 $sendinblueApiV3, ConfigFactoryInterface $configFactory, Connection $connection, FormBuilderInterface $formBuilder, Renderer $renderer, MailManagerInterface $mailManager, AccountProxyInterface $accountProxy) {
$this->configFactory = $configFactory;
$this->connection = $connection;
$this->formBuilder = $formBuilder;
$this->renderer = $renderer;
$this->mailManager = $mailManager;
$this->accountProxy = $accountProxy;
$this->sendinblueApiV2 = $sendinblueApiV2;
$this->sendinblueApiV3 = $sendinblueApiV3;
$this
->updateSendinblueMailin($this
->getAccessKey());
}
/**
* Get the access key store in configuration.
*
* @return string
* The SiB access key
*/
public function getAccessKey() {
return $this->configFactory
->get(self::CONFIG_SETTINGS)
->get(self::ACCESS_KEY);
}
/**
* Get the access key store in configuration.
*
* @param string $accessKey
* The SiB access key.
*
* @return string
* The SiB API version (V2 or V3)
*/
public function getApiVersion($accessKey) {
if (strlen($accessKey) > 20 && strpos($accessKey, 'xkeysib') !== FALSE) {
return self::SENDINBLUE_API_VERSION_V3;
}
return self::SENDINBLUE_API_VERSION_V2;
}
/**
* Get the correct Class in function of API version.
*
* @return \Drupal\sendinblue\Tools\Api\SendInBlueApiInterface
* SendInBlueApiInterface (V2 or V3)
*/
public function getSendinblueMailin() : SendInBlueApiInterface {
return $this->sendinblueMailin;
}
/**
* Change Class Class in function of API version.
*
* @param string $accessKey
* The SiB access key.
*
* @return \Drupal\sendinblue\Tools\Api\SendInBlueApiInterface
* SendInBlueApiInterface (V2 or V3)
*/
public function updateSendinblueMailin($accessKey) {
if ($this
->getApiVersion($accessKey) === self::SENDINBLUE_API_VERSION_V3) {
$this->sendinblueMailin = $this->sendinblueApiV3;
}
else {
$this->sendinblueMailin = $this->sendinblueApiV2;
}
$this->sendinblueMailin
->setApiKey($accessKey);
return $this->sendinblueMailin;
}
/**
* Get the account email store in configuration.
*
* @return string
* The SiB account email
*/
public function getAccountEmail() {
return $this->configFactory
->get(self::CONFIG_SETTINGS)
->get(self::ACCOUNT_EMAIL);
}
/**
* Get the account username store in configuration.
*
* @return string
* The SiB account username
*/
public function getAccountUsername() {
return $this->configFactory
->get(self::CONFIG_SETTINGS)
->get(self::ACCOUNT_USERNAME);
}
/**
* Get the data account store in configuration.
*
* @return string
* The SiB account store
*/
public function getAccountData() {
return $this->configFactory
->get(self::CONFIG_SETTINGS)
->get(self::ACCOUNT_DATA);
}
/**
* Get the data account store in configuration.
*
* @return string
* The SiB account store
*/
public function getSmtpDetails() {
return $this->configFactory
->get(self::CONFIG_SETTINGS_SEND_EMAIL)
->get(self::SMTP_DETAILS);
}
/**
* Get the access token store in configuration.
*
* @return string
* The SiB access token
*/
public function getAccessKeyToken() {
return $this->configFactory
->get(self::CONFIG_SETTINGS)
->get(self::ACCESS_TOKEN);
}
/**
* Generate Home layout of Log out.
*
* @return array
* A html of home page when log out.
*/
public function generateHomeLogout() {
$form = $this->formBuilder
->getForm(ConfigurationSendinblueForm::class);
return [
'#formulaire_api_key' => $this->renderer
->render($form),
];
}
/**
* Generate Home layout of Log out.
*
* @return array
* A html of home page when login.
*/
public function generateHomeLogin() {
// Calculate total count of subscribers.
$lists = $this->sendinblueMailin
->getLists();
$totalSubscribers = 0;
$listIds = [];
if ($lists
->getCount() > 0) {
$listData = $lists
->getLists();
foreach ($listData as $list) {
$listIds[] = $list['id'];
}
$totalSubscribers = $this->sendinblueMailin
->countUserlists($listIds);
}
// Get account details.
$accountEmail = $this
->getAccountEmail();
$accountUsername = $this
->getAccountUsername();
$account_data = Json::decode($this
->getAccountData());
$sendinblue_logout_form = $this->formBuilder
->getForm(LogoutForm::class);
$sendinblue_send_email_form = $this->formBuilder
->getForm(TransactionnalEmailForm::class);
$sendinblue_user_register_form = $this->formBuilder
->getForm(RegisteringUserForm::class);
return [
'#account_username' => [
'#plain_text' => $accountUsername,
],
'#account_email' => [
'#plain_text' => $accountEmail,
],
'#total_subscribers' => [
'#plain_text' => $totalSubscribers,
],
'#account_data' => $account_data,
'#api_version' => $this
->getApiVersion($this
->getAccessKey()),
'#sendinblue_logout_form' => $this->renderer
->render($sendinblue_logout_form),
'#sendinblue_send_email_form' => $this->renderer
->render($sendinblue_send_email_form),
'#sendinblue_user_register_form' => $this->renderer
->render($sendinblue_user_register_form),
];
}
/**
* Generate List page when log in.
*
* @return string
* A html of list page.
*/
public function generateListLogin() {
$access_token = $this
->updateAccessToken();
return sprintf(self::SIB_URL . '/lists/index/access_token/%s', $access_token);
}
/**
* Generate Campaign page when log in.
*
* @return string
* A html of campaign.
*/
public function generateCampaignLogin() {
$access_token = $this
->updateAccessToken();
return sprintf(self::SIB_URL . '/camp/listing/access_token/%s', $access_token);
}
/**
* Generate Statistic page when log in.
*
* @return string
* A html of statistic page.
*/
public function generateStatisticLogin() {
$access_token = $this
->updateAccessToken();
return sprintf(self::SIB_URL . '/camp/message/access_token/%s', $access_token);
}
/**
* Check if current state is logged in.
*
* @return bool
* A status of login of user.
*/
public function isLoggedInState() {
$access_key = $this
->getAccessKey();
if (!empty($access_key)) {
return TRUE;
}
return FALSE;
}
/**
* Update access token.
*
* @return string
* An access token information.
*/
public function updateAccessToken() {
$config = $this->configFactory
->getEditable('sendinblue.settings');
// Get new access_token.
$access_token = $this->sendinblueMailin
->getAccessTokens();
$config
->set(self::ACCESS_TOKEN, $access_token);
return $access_token;
}
/**
* Get email template by type.
*
* @param string $type
* A type of email.
*
* @return array
* An array of email content.
*/
public function getEmailTemplate($type = 'test') {
$file = 'temp';
$file_path = drupal_get_path('module', 'sendinblue') . '/asset/email-templates/' . $type . '/';
// Get html content.
$html_content = file_get_contents($file_path . $file . '.html');
// Get text content.
$text_content = file_get_contents($file_path . $file . '.txt');
$templates = [
'html_content' => $html_content,
'text_content' => $text_content,
];
return $templates;
}
/**
* Send mail.
*
* @param string $type
* A type of email.
* @param string $to_email
* A recipe address.
* @param string $template_id
* A template identification.
*/
public function sendEmail($type, $to_email, $template_id = '-1') {
$subjects = [
'confirm' => $this
->t('Subscription confirmed'),
'test' => $this
->t('[SendinBlue SMTP] test email'),
];
$account_email = $this
->getAccountEmail();
$account_username = $this
->getAccountUsername();
// Set subject info.
$subject = $subjects[$type] ?? '[SendinBlue]';
$sender_email = !empty($account_email) ? $account_email : $this
->t('no-reply@sendinblue.com');
$sender_name = !empty($account_username) ? $account_username : $this
->t('SendinBlue');
// Get template html and text.
$template_contents = $this
->getEmailTemplate($type);
$html_content = $template_contents['html_content'];
$text_content = $template_contents['text_content'];
if ($type === "confirm" && $template_id !== '-1') {
$template = $this->sendinblueMailin
->getTemplate($template_id);
if ($template !== NULL) {
$html_content = $template
->getHtmlContent();
$subject = $template
->getSubject();
if ($template
->getFromName() !== '[DEFAULT_FROM_NAME]' && $template
->getFromEmail() !== '[DEFAULT_FROM_EMAIL]') {
$sender_name = $template
->getFromName();
$sender_email = $template
->getFromEmail();
}
}
}
// Send mail.
$replyTo = [
'email' => $sender_email,
'name' => $sender_name,
];
$from = [
'email' => $sender_email,
'name' => $sender_name,
];
$to = [
'email' => $to_email,
];
$base_url = $this
->getBaseUrl();
$site_domain = str_replace([
'https://',
'http://',
], '', $base_url);
$html_content = str_replace([
'{title}',
'{site_domain}',
], [
$subject,
$site_domain,
], $html_content);
$text_content = str_replace('{site_domain}', $base_url, $text_content);
$this->sendinblueMailin
->sendEmail($to, $subject, $html_content, $text_content, $from, $replyTo);
}
/**
* Get Base URL.
*
* @return string
* A base url of the site.
*/
public function getBaseUrl() {
global $base_url;
return $base_url;
}
/**
* Get Attribute lists.
*
* @return \Drupal\sendinblue\Tools\Model\GetAttributesAttributes[]
* An array of attributes.
*/
public function getAttributeLists() {
$sibAttributes = $this->sendinblueMailin
->getAttributes();
if (!empty($sibAttributes
->getAttributes())) {
$attributes = [];
foreach ($sibAttributes
->getAttributes() as $attribute) {
if ($attribute
->getCategory() === 'normal') {
$attributes[] = $attribute;
}
}
return $attributes;
}
return [];
}
/**
* Get template list.
*
* @return \Drupal\sendinblue\Tools\Model\GetSmtpTemplates
* An array of template.
*/
public function getTemplateList() {
return $this->sendinblueMailin
->getTemplates();
}
/**
* Get lists.
*
* @return array
* An array of lists.
*/
public function getLists() {
$lists = $this->sendinblueMailin
->getLists();
if ($lists !== NULL) {
return $lists
->getLists();
}
return [];
}
/**
* Get list name form id.
*
* @param int $list_id
* A list id.
*
* @return string
* A list name.
*/
public function getListNameById($list_id) {
$list = $this->sendinblueMailin
->getList($list_id);
return $list !== NULL ? $list
->getName() : NULL;
}
/**
* Check the email address of subscriber.
*
* @param string $email
* An email address.
* @param string $list_id
* A list id.
*
* @return array
* A response information.
*/
public function validationEmail($email, $list_id) {
$contactInfo = $this->sendinblueMailin
->getUser($email);
if ($contactInfo === NULL) {
$ret = [
'code' => 'success',
'listid' => [],
];
return $ret;
}
$listId = $contactInfo
->getListIds();
if ($contactInfo
->isEmailBlacklisted()) {
$ret = [
'code' => 'update',
'listid' => $listId,
];
}
else {
if (!in_array($list_id, $listId)) {
$ret = [
'code' => 'success',
'listid' => $listId,
];
}
else {
$ret = [
'code' => 'already_exist',
'listid' => $listId,
];
}
}
return $ret;
}
/**
* Subscriber user.
*
* @param string $email
* An email address of subscriber.
* @param array $info
* A data of subscriber.
* @param array $listids
* An array of list id.
*/
public function subscribeUser($email, array $info = [], array $listids = []) {
$this->sendinblueMailin
->createUpdateUser($email, $info, [], $listids, NULL);
}
/**
* Get subscriber data by email on drupal table.
*
* @param string $email
* An email address.
*
* @return string
* A details of subscriber.
*/
public function getSubscriberByEmail($email) {
$record = $this->connection
->select('sendinblue_contact', 'c')
->fields('c', [
'email',
])
->condition('c.email', $email)
->execute()
->fetchAssoc();
return $record;
}
/**
* Add subscriber on drupal table.
*
* @param array $data
* A data to add in table.
*/
public function addSubscriberTable(array $data = []) {
$this->connection
->insert('sendinblue_contact')
->fields([
'email' => $data['email'],
'info' => $data['info'],
'code' => $data['code'],
'is_active' => $data['is_active'],
])
->execute();
}
/**
* Update smtp details.
*
* @return string|bool
* A access token if exist, else 0.
*/
public function updateSmtpDetails() {
$smtpDetails = $this->sendinblueMailin
->getSmtpDetails();
$config = $this->configFactory
->getEditable(self::CONFIG_SETTINGS_SEND_EMAIL);
$drupalEmailconfig = $this->configFactory
->getEditable('system.mail');
if (isset($smtpDetails) && $smtpDetails
->isEnabled()) {
// Set SendinBlue SMTP on ON.
$config
->set('sendinblue_on', 1)
->save();
$config
->set(self::SMTP_DETAILS, Json::encode($smtpDetails))
->save();
// Set DRUPAL SMTP on ON with SiB.
$drupalEmailconfig
->set('interface.default', 'sendinblue_mail')
->save();
return $smtpDetails;
}
// Set SendinBlue SMTP on OFF.
$config
->set('sendinblue_on', 0)
->save();
$config
->set(self::SMTP_DETAILS, NULL)
->save();
// Set DRUPAL SMTP on OFF with SiB, reset with php_mail.
$drupalEmailconfig
->set('interface.default', 'php_mail')
->save();
return NULL;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
SendinblueManager:: |
private | property | AccountProxyInterface. | |
SendinblueManager:: |
private | property | ConfigFactoryInterface. | |
SendinblueManager:: |
private | property | Connection. | |
SendinblueManager:: |
private | property | FormBuilderInterface. | |
SendinblueManager:: |
private | property | MailManagerInterface. | |
SendinblueManager:: |
private | property | Renderer. | |
SendinblueManager:: |
private | property | SendinblueApi V2. | |
SendinblueManager:: |
private | property | SendinblueApi V3. | |
SendinblueManager:: |
private | property | SendinblueMailin. | |
SendinblueManager:: |
constant | Variable name of Sendinblue access key. | ||
SendinblueManager:: |
constant | Variable name of access_token. | ||
SendinblueManager:: |
constant | Variable name of Sendinblue account data. | ||
SendinblueManager:: |
constant | Variable name of Sendinblue account email. | ||
SendinblueManager:: |
constant | Variable name of Sendinblue account user name. | ||
SendinblueManager:: |
public | function | Add subscriber on drupal table. | |
SendinblueManager:: |
constant | Variable name of Sendinblue access key. | ||
SendinblueManager:: |
constant | Variable name of Sendinblue access key. | ||
SendinblueManager:: |
constant | Variable name of Sendinblue access key. | ||
SendinblueManager:: |
public | function | Generate Campaign page when log in. | |
SendinblueManager:: |
public | function | Generate Home layout of Log out. | |
SendinblueManager:: |
public | function | Generate Home layout of Log out. | |
SendinblueManager:: |
public | function | Generate List page when log in. | |
SendinblueManager:: |
public | function | Generate Statistic page when log in. | |
SendinblueManager:: |
public | function | Get the access key store in configuration. | |
SendinblueManager:: |
public | function | Get the access token store in configuration. | |
SendinblueManager:: |
public | function | Get the data account store in configuration. | |
SendinblueManager:: |
public | function | Get the account email store in configuration. | |
SendinblueManager:: |
public | function | Get the account username store in configuration. | |
SendinblueManager:: |
public | function | Get the access key store in configuration. | |
SendinblueManager:: |
public | function | Get Attribute lists. | |
SendinblueManager:: |
public | function | Get Base URL. | |
SendinblueManager:: |
public | function | Get email template by type. | |
SendinblueManager:: |
public | function | Get list name form id. | |
SendinblueManager:: |
public | function | Get lists. | |
SendinblueManager:: |
public | function | Get the correct Class in function of API version. | |
SendinblueManager:: |
public | function | Get the data account store in configuration. | |
SendinblueManager:: |
public | function | Get subscriber data by email on drupal table. | |
SendinblueManager:: |
public | function | Get template list. | |
SendinblueManager:: |
public | function | Check if current state is logged in. | |
SendinblueManager:: |
public | function | Send mail. | |
SendinblueManager:: |
constant | |||
SendinblueManager:: |
constant | |||
SendinblueManager:: |
constant | |||
SendinblueManager:: |
constant | |||
SendinblueManager:: |
constant | |||
SendinblueManager:: |
constant | |||
SendinblueManager:: |
constant | Variable name of Sendinblue URL. | ||
SendinblueManager:: |
constant | Variable name of smtp details. | ||
SendinblueManager:: |
public | function | Subscriber user. | |
SendinblueManager:: |
public | function | Update access token. | |
SendinblueManager:: |
public | function | Change Class Class in function of API version. | |
SendinblueManager:: |
public | function | Update smtp details. | |
SendinblueManager:: |
public | function | Check the email address of subscriber. | |
SendinblueManager:: |
public | function | EntityModerationForm constructor. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |