portal.mkgtu.ru/common/components/notifier/notifier.php

163 lines
6.1 KiB
PHP
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace common\components\notifier;
use common\models\User;
use common\models\UserRegistrationConfirmToken;
use Yii;
use yii\helpers\ArrayHelper;
use yii\mail\MessageInterface;
class notifier extends \yii\base\Component
{
public function notifyAboutRegister($user_id, $password)
{
$user = User::findOne($user_id);
$header = Yii::t(
'abiturient/notifier/registred',
'Заголовок для письма регистрации в менеджере оповещений: `Регистрация`'
);
$this->sendTemplateMail($user->email, "{$header} | " . Yii::$app->name, "../../common/components/notifier/views/registred", [
'fio' => $user->getPublicIdentity(),
'login' => $user->email,
'password' => $password,
]);
}
public function notifyAboutApplyApplication($user_id, $comment = null)
{
$user = User::findOne($user_id);
$header = Yii::t(
'abiturient/notifier/application-applyed',
'Заголовок для письма о принятии заявления в менеджере оповещений: `Заявление принято`'
);
$this->sendTemplateMail($user->email, "{$header} | " . Yii::$app->name, "../../common/components/notifier/views/application-applyed", [
'fio' => $user->getPublicIdentity(),
'comment' => $comment
]);
}
public function notifyAboutSendApplication($user_id)
{
$user = User::findOne($user_id);
$header = Yii::t(
'abiturient/notifier/application-sended',
'Заголовок для письма при отправке заявления на проверку в менеджере оповещений: `Заявление передано на рассмотрение модератору`'
);
$this->sendTemplateMail($user->email, "{$header} | " . Yii::$app->name, "../../common/components/notifier/views/application-sended", [
'fio' => $user->getPublicIdentity(),
]);
}
public function notifyAboutRejectApplication($user_id)
{
$user = User::findOne($user_id);
$header = Yii::t(
'abiturient/notifier/application-rejected',
'Заголовок для письма при отклонения заявления системой в менеджере оповещений: `Заявление отклонено системой`'
);
$this->sendTemplateMail($user->email, "{$header} | " . Yii::$app->name, "../../common/components/notifier/views/application-rejected", [
'fio' => $user->getPublicIdentity(),
]);
}
public function notifyAboutDeclineApplication($user_id, $comment)
{
$user = User::findOne($user_id);
$header = Yii::t(
'abiturient/notifier/application-declined',
'Заголовок для письма при отклонения заявления модератором в менеджере оповещений: `Заявление отклонено`'
);
$this->sendTemplateMail($user->email, "{$header} | " . Yii::$app->name, "../../common/components/notifier/views/application-declined", [
'fio' => $user->getPublicIdentity(),
'comment' => $comment,
]);
}
public function notifyAboutChangeSpecialities($userId, $campaignName)
{
$user = User::findOne($userId);
$header = Yii::t(
'abiturient/notifier/change-specialities',
'Заголовок для письма при изменении НП заявления модератором в менеджере оповещений: `В направления подготовки были внесены изменения`'
);
$this->sendTemplateMail(
$user->email,
"{$header} | " . Yii::$app->name,
"../../common/components/notifier/views/change-specialities",
[
'fio' => $user->getPublicIdentity(),
'campaignName' => $campaignName,
]
);
}
public function notifyAboutEmailConfirmation(User $user, UserRegistrationConfirmToken $token)
{
$header = Yii::t(
'abiturient/notifier/email-confirm',
'Заголовок для письма подтверждения электронной почты в менеджере оповещений: `Подтвердите свой email`'
);
return $this->sendTemplateMail($user->email, "{$header} | " . Yii::$app->name, "../../common/components/notifier/views/email-confirm", [
'user' => $user,
'token' => $token,
'ttl' => Yii::$app->configurationManager->getSignupEmailTokenTTL()
]);
}
public function sendTemplateMail($to, $subject, $view_name, $params): bool
{
if (empty(getenv('MAIL_HOST')) or empty(getenv('MAIL_USERNAME'))) {
return false;
}
try {
$this->initMessageBuilder(Yii::$app->mailer->compose($view_name, $params), $subject)
->setTo($to)
->send();
} catch (\Throwable $e) {
Yii::error("Ошибка отправки почты: ({$e->getMessage()}) " . PHP_EOL . print_r(
[
'view_name' => $view_name,
'to' => $to,
'subject' => $subject,
'params' => $params
],
true
));
return false;
}
return true;
}
public function sendMail($to, $subject, $text)
{
$this->initMessageBuilder(Yii::$app->mailer->compose(), $subject)
->setTo($to)
->setTextBody($text)
->send();
}
public function initMessageBuilder(MessageInterface $composed, $subject): MessageInterface
{
return $composed
->setFrom(ArrayHelper::getValue(Yii::$app->mailer, 'messageConfig.from'))
->setSubject($subject);
}
}