1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
<?php
/**
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
namespace Piwik\Plugins\Login\Emails;
use Piwik\Date;
use Piwik\Intl\Data\Provider\DateTimeFormatProvider;
use Piwik\Mail;
use Piwik\Piwik;
use Piwik\Plugin\Manager as PluginManager;
use Piwik\Url;
use Piwik\View;
class LoginFromDifferentCountryEmail extends Mail
{
/**
* @var string
*/
protected $login;
/**
* @var string
*/
protected $country;
/**
* @var string
*/
protected $ip;
public function __construct(string $login, string $country, string $ip)
{
parent::__construct();
$this->login = $login;
$this->country = $country;
$this->ip = $ip;
$this->setUpEmail();
}
private function setUpEmail(): void
{
$this->setDefaultFromPiwik();
$this->setSubject($this->getDefaultSubject());
$this->addReplyTo($this->getFrom(), $this->getFromName());
$this->setBodyText($this->getDefaultBodyText());
$this->setWrappedHtmlBody($this->getDefaultBodyView());
}
protected function getDefaultSubject(): string
{
return Piwik::translate('Login_LoginFromDifferentCountryEmailSubject');
}
protected function getDateAndTimeFormatted(): string
{
return Date::now()->getLocalized(DateTimeFormatProvider::DATETIME_FORMAT_LONG);
}
protected function getPasswordResetLink(): string
{
return Url::getCurrentUrlWithoutQueryString()
. '?module=' . Piwik::getLoginPluginName()
. '&showResetForm=1';
}
protected function getEnable2FALink(): string
{
if (PluginManager::getInstance()->isPluginActivated('TwoFactorAuth')) {
return Url::getCurrentUrlWithoutQueryString() . '?module=UsersManager&action=userSecurity';
} else {
return '';
}
}
protected function getDefaultBodyText(): string
{
$view = new View('@Login/_loginFromDifferentCountryTextEmail.twig');
$view->setContentType('text/plain');
$this->assignCommonParameters($view);
return $view->render();
}
protected function getDefaultBodyView(): View
{
$view = new View('@Login/_loginFromDifferentCountryHtmlEmail.twig');
$this->assignCommonParameters($view);
return $view;
}
protected function assignCommonParameters(View $view): void
{
$view->login = $this->login;
$view->country = $this->country;
$view->ip = $this->ip;
$view->dateTime = $this->getDateAndTimeFormatted();
$view->resetPasswordLink = $this->getPasswordResetLink();
$view->enable2FALink = $this->getEnable2FALink();
}
}
|