%PDF- %PDF-
| Direktori : /www/varak.net/nextcloud.varak.net/apps_old/apps/passwords/lib/Services/ |
| Current File : /www/varak.net/nextcloud.varak.net/apps_old/apps/passwords/lib/Services/MailService.php |
<?php
/**
* This file is part of the Passwords App
* created by Marius David Wieschollek
* and licensed under the AGPL.
*/
namespace OCA\Passwords\Services;
use Exception;
use OCA\Passwords\AppInfo\Application;
use OCA\Passwords\Mail\AbstractMail;
use OCA\Passwords\Mail\BadPasswordMail;
use OCA\Passwords\Mail\NewClientMail;
use OCA\Passwords\Mail\ShareCreatedMail;
use OCP\IConfig;
use OCP\IL10N;
use OCP\IUser;
use OCP\L10N\IFactory;
/**
* Class MailService
*
* @package OCA\Passwords\Services
*/
class MailService {
/**
* @var LoggingService
*/
protected LoggingService $logger;
/**
* @var IConfig
*/
protected IConfig $config;
/**
* @var UserSettingsService
*/
protected UserSettingsService $settings;
/**
* @var UserService
*/
protected UserService $userService;
/**
* @var IFactory
*/
protected IFactory $l10NFactory;
/**
* @var NewClientMail
*/
protected NewClientMail $newClientMail;
/**
* @var BadPasswordMail
*/
protected BadPasswordMail $badPasswordMail;
/**
* @var ShareCreatedMail
*/
protected ShareCreatedMail $shareCreatedMail;
/**
* MailService constructor.
*
* @param IConfig $config
* @param IFactory $l10NFactory
* @param LoggingService $logger
* @param UserService $userService
* @param UserSettingsService $settings
* @param NewClientMail $newClientMail
* @param BadPasswordMail $badPasswordMail
* @param ShareCreatedMail $shareCreatedMail
*/
public function __construct(
IConfig $config,
IFactory $l10NFactory,
LoggingService $logger,
UserService $userService,
NewClientMail $newClientMail,
UserSettingsService $settings,
BadPasswordMail $badPasswordMail,
ShareCreatedMail $shareCreatedMail
) {
$this->logger = $logger;
$this->config = $config;
$this->settings = $settings;
$this->userService = $userService;
$this->l10NFactory = $l10NFactory;
$this->newClientMail = $newClientMail;
$this->badPasswordMail = $badPasswordMail;
$this->shareCreatedMail = $shareCreatedMail;
}
/**
* @param string $userId
* @param int $passwords
*/
public function sendBadPasswordMail(string $userId, int $passwords): void {
$this->createAndSendMail($userId, $this->badPasswordMail, $passwords);
}
/**
* @param string $userId
* @param array $owners
*/
public function sendShareCreateMail(string $userId, array $owners): void {
$this->createAndSendMail($userId, $this->shareCreatedMail, $owners);
}
/**
* @param string $userId
* @param string $client
*/
public function sendNewClientMail(string $userId, string $client): void {
$this->createAndSendMail($userId, $this->newClientMail, $client);
}
/**
* @param string $userId
* @param AbstractMail $mail
* @param mixed ...$parameters
*/
protected function createAndSendMail(string $userId, AbstractMail $mail, ...$parameters): void {
$user = $this->getReceivingUser($userId, $mail::MAIL_TYPE);
if($user === null) return;
$localisation = $this->getLocalisation($userId);
$mail->send($user, $localisation, ...$parameters);
}
/**
* @param string $userId
*
* @return IL10N
*/
protected function getLocalisation(string $userId): IL10N {
$lang = $this->config->getUserValue($userId, 'core', 'lang');
return $this->l10NFactory->get(Application::APP_NAME, $lang);
}
/**
* @param string $userId
* @param string $mailType
*
* @return null|IUser
*/
protected function getReceivingUser(string $userId, string $mailType): ?IUser {
try {
if(!$this->settings->get('user.mail.'.$mailType, $userId)) return null;
} catch(Exception $e) {
$this->logger->logException($e);
}
$user = $this->userService->getUser($userId);
if(empty($user->getEMailAddress())) return null;
return $user;
}
}