зеркало из https://github.com/nextcloud/activity.git
Use \OCP\IUserManager instead of static getDisplayName()
This commit is contained in:
Родитель
3c4d4ac615
Коммит
e1d8fde672
|
@ -118,7 +118,8 @@ class Application extends App {
|
|||
$server->getDateTimeFormatter(),
|
||||
$server->getDatabaseConnection(),
|
||||
$c->query('DataHelper'),
|
||||
$server->getMailer()
|
||||
$server->getMailer(),
|
||||
$server->getUserManager()
|
||||
);
|
||||
});
|
||||
|
||||
|
|
|
@ -25,6 +25,8 @@ namespace OCA\Activity;
|
|||
|
||||
use OCP\IDateTimeFormatter;
|
||||
use OCP\IDBConnection;
|
||||
use OCP\IUser;
|
||||
use OCP\IUserManager;
|
||||
use OCP\Mail\IMailer;
|
||||
use OCP\Util;
|
||||
|
||||
|
@ -63,15 +65,18 @@ class MailQueueHandler {
|
|||
* @param IDBConnection $connection
|
||||
* @param DataHelper $dataHelper
|
||||
* @param IMailer $mailer
|
||||
* @param IUserManager $userManager
|
||||
*/
|
||||
public function __construct(IDateTimeFormatter $dateFormatter,
|
||||
IDBConnection $connection,
|
||||
DataHelper $dataHelper,
|
||||
IMailer $mailer) {
|
||||
IMailer $mailer,
|
||||
IUserManager $userManager) {
|
||||
$this->dateFormatter = $dateFormatter;
|
||||
$this->connection = $connection;
|
||||
$this->dataHelper = $dataHelper;
|
||||
$this->mailer = $mailer;
|
||||
$this->userManager = $userManager;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -185,15 +190,20 @@ class MailQueueHandler {
|
|||
/**
|
||||
* Send a notification to one user
|
||||
*
|
||||
* @param string $user Username of the recipient
|
||||
* @param string $userName Username of the recipient
|
||||
* @param string $email Email address of the recipient
|
||||
* @param string $lang Selected language of the recipient
|
||||
* @param string $timezone Selected timezone of the recipient
|
||||
* @param array $mailData Notification data we send to the user
|
||||
*/
|
||||
public function sendEmailToUser($user, $email, $lang, $timezone, $mailData) {
|
||||
public function sendEmailToUser($userName, $email, $lang, $timezone, $mailData) {
|
||||
$user = $this->userManager->get($userName);
|
||||
if (!$user instanceof IUser) {
|
||||
return;
|
||||
}
|
||||
|
||||
$l = $this->getLanguage($lang);
|
||||
$this->dataHelper->setUser($user);
|
||||
$this->dataHelper->setUser($userName);
|
||||
$this->dataHelper->setL10n($l);
|
||||
|
||||
$activityList = array();
|
||||
|
@ -213,7 +223,7 @@ class MailQueueHandler {
|
|||
}
|
||||
|
||||
$alttext = new \OCP\Template('activity', 'email.notification', '');
|
||||
$alttext->assign('username', \OCP\User::getDisplayName($user));
|
||||
$alttext->assign('username', $user->getDisplayName());
|
||||
$alttext->assign('timeframe', $this->getLangForApproximatedTimeFrame($mailData[0]['amq_timestamp']));
|
||||
$alttext->assign('activities', $activityList);
|
||||
$alttext->assign('owncloud_installation', \OC_Helper::makeURLAbsolute('/'));
|
||||
|
@ -221,7 +231,7 @@ class MailQueueHandler {
|
|||
$emailText = $alttext->fetchPage();
|
||||
|
||||
$message = $this->mailer->createMessage();
|
||||
$message->setTo([$email => \OCP\User::getDisplayName($user)]);
|
||||
$message->setTo([$email => $user->getDisplayName()]);
|
||||
$message->setSubject((string) $l->t('Activity notification'));
|
||||
$message->setPlainBody($emailText);
|
||||
$message->setFrom([$this->getSenderData('email') => $this->getSenderData('name')]);
|
||||
|
|
|
@ -46,7 +46,6 @@ class MailQueueHandlerTest extends TestCase {
|
|||
|
||||
$app = $this->getUniqueID('MailQueueHandlerTest');
|
||||
$this->userManager = $this->getMock('OCP\IUserManager');
|
||||
$this->registerUserManager($this->userManager);
|
||||
|
||||
$query = \OCP\DB::prepare('INSERT INTO `*PREFIX*activity_mq` '
|
||||
. ' (`amq_appid`, `amq_subject`, `amq_subjectparams`, `amq_affecteduser`, `amq_timestamp`, `amq_type`, `amq_latest_send`) '
|
||||
|
@ -72,7 +71,8 @@ class MailQueueHandlerTest extends TestCase {
|
|||
$this->getMockBuilder('\OCA\Activity\DataHelper')
|
||||
->disableOriginalConstructor()
|
||||
->getMock(),
|
||||
$this->mailer
|
||||
$this->mailer,
|
||||
$this->userManager
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -80,24 +80,9 @@ class MailQueueHandlerTest extends TestCase {
|
|||
$query = \OCP\DB::prepare('DELETE FROM `*PREFIX*activity_mq` WHERE `amq_timestamp` < 200');
|
||||
$query->execute();
|
||||
|
||||
$this->restoreUserManager();
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
protected function registerUserManager($userManager) {
|
||||
$this->oldUserManager = \OC::$server->getUserManager();
|
||||
\OC::$server->registerService('UserManager', function () use ($userManager) {
|
||||
return $userManager;
|
||||
});
|
||||
}
|
||||
|
||||
protected function restoreUserManager() {
|
||||
$oldUserManager = $this->oldUserManager;
|
||||
\OC::$server->registerService('UserManager', function () use ($oldUserManager) {
|
||||
return $oldUserManager;
|
||||
});
|
||||
}
|
||||
|
||||
public function getAffectedUsersData()
|
||||
{
|
||||
return [
|
||||
|
@ -171,14 +156,19 @@ class MailQueueHandlerTest extends TestCase {
|
|||
->willReturn($userDisplayName);
|
||||
$this->userManager->expects($this->any())
|
||||
->method('get')
|
||||
->with($user)
|
||||
->willReturn($userObject);
|
||||
->willReturnMap([
|
||||
[$user, $userObject],
|
||||
[$user . $user, null],
|
||||
]);
|
||||
|
||||
$users = $this->mailQueueHandler->getAffectedUsers(1, $maxTime);
|
||||
$this->assertEquals([$user], $users);
|
||||
$items = $this->mailQueueHandler->getItemsForUsers($users, $maxTime);
|
||||
$this->assertArrayHasKey($user, $items);
|
||||
$this->mailQueueHandler->sendEmailToUser($user, $email, 'en', 'UTC', $items[$user]);
|
||||
|
||||
// Invalid user, no object no email
|
||||
$this->mailQueueHandler->sendEmailToUser($user . $user, $email, 'en', 'UTC', $items[$user]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Загрузка…
Ссылка в новой задаче