|
32 | 32 | use OC\Files\Cache\Cache; |
33 | 33 | use OCP\Defaults; |
34 | 34 | use OCP\Files\Folder; |
| 35 | +use OCP\IConfig; |
35 | 36 | use OCP\IL10N; |
36 | 37 | use OCP\IURLGenerator; |
37 | 38 | use OCP\IUser; |
| 39 | +use OCP\L10N\IFactory; |
38 | 40 | use OCP\Mail\IMailer; |
39 | 41 | use OCP\Share\IShare; |
40 | 42 | use OCP\Share\IShareHelper; |
@@ -79,41 +81,34 @@ class DefaultShareProvider implements IShareProvider { |
79 | 81 | /** @var Defaults */ |
80 | 82 | private $defaults; |
81 | 83 |
|
82 | | - /** @var IL10N */ |
83 | | - private $l; |
| 84 | + /** @var IFactory */ |
| 85 | + private $l10nFactory; |
84 | 86 |
|
85 | 87 | /** @var IURLGenerator */ |
86 | 88 | private $urlGenerator; |
87 | 89 |
|
88 | | - /** |
89 | | - * DefaultShareProvider constructor. |
90 | | - * |
91 | | - * @param IDBConnection $connection |
92 | | - * @param IUserManager $userManager |
93 | | - * @param IGroupManager $groupManager |
94 | | - * @param IRootFolder $rootFolder |
95 | | - * @param IMailer $mailer ; |
96 | | - * @param Defaults $defaults |
97 | | - * @param IL10N $l |
98 | | - * @param IURLGenerator $urlGenerator |
99 | | - */ |
| 90 | + /** @var IConfig */ |
| 91 | + private $config; |
| 92 | + |
100 | 93 | public function __construct( |
101 | 94 | IDBConnection $connection, |
102 | 95 | IUserManager $userManager, |
103 | 96 | IGroupManager $groupManager, |
104 | 97 | IRootFolder $rootFolder, |
105 | 98 | IMailer $mailer, |
106 | 99 | Defaults $defaults, |
107 | | - IL10N $l, |
108 | | - IURLGenerator $urlGenerator) { |
| 100 | + IFactory $l10nFactory, |
| 101 | + IURLGenerator $urlGenerator, |
| 102 | + IConfig $config) { |
109 | 103 | $this->dbConn = $connection; |
110 | 104 | $this->userManager = $userManager; |
111 | 105 | $this->groupManager = $groupManager; |
112 | 106 | $this->rootFolder = $rootFolder; |
113 | 107 | $this->mailer = $mailer; |
114 | 108 | $this->defaults = $defaults; |
115 | | - $this->l = $l; |
| 109 | + $this->l10nFactory = $l10nFactory; |
116 | 110 | $this->urlGenerator = $urlGenerator; |
| 111 | + $this->config = $config; |
117 | 112 | } |
118 | 113 |
|
119 | 114 | /** |
@@ -1317,46 +1312,59 @@ private function propagateNote(IShare $share) { |
1317 | 1312 | */ |
1318 | 1313 | private function sendNote(array $recipients, IShare $share) { |
1319 | 1314 |
|
1320 | | - $toList = []; |
| 1315 | + $toListByLanguage = []; |
1321 | 1316 |
|
1322 | 1317 | foreach ($recipients as $recipient) { |
1323 | 1318 | /** @var IUser $recipient */ |
1324 | 1319 | $email = $recipient->getEMailAddress(); |
1325 | 1320 | if ($email) { |
1326 | | - $toList[$email] = $recipient->getDisplayName(); |
| 1321 | + $language = $this->config->getSystemValue('force_language', false); |
| 1322 | + $language = \is_string($language) ? $language : $this->config->getUserValue($recipient->getUID(), 'core', 'lang', null); |
| 1323 | + $language = $language ?? $this->config->getSystemValue('default_language', 'en'); |
| 1324 | + |
| 1325 | + if (!isset($toListByLanguage[$language])) { |
| 1326 | + $toListByLanguage[$language] = []; |
| 1327 | + } |
| 1328 | + $toListByLanguage[$language][$email] = $recipient->getDisplayName(); |
1327 | 1329 | } |
1328 | 1330 | } |
1329 | 1331 |
|
1330 | | - if (!empty($toList)) { |
| 1332 | + if (empty($toListByLanguage)) { |
| 1333 | + return; |
| 1334 | + } |
| 1335 | + |
| 1336 | + foreach ($toListByLanguage as $l10n => $toList) { |
1331 | 1337 |
|
1332 | 1338 | $filename = $share->getNode()->getName(); |
1333 | 1339 | $initiator = $share->getSharedBy(); |
1334 | 1340 | $note = $share->getNote(); |
1335 | 1341 |
|
| 1342 | + $l = $this->l10nFactory->get('lib', $l10n); |
| 1343 | + |
1336 | 1344 | $initiatorUser = $this->userManager->get($initiator); |
1337 | 1345 | $initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator; |
1338 | 1346 | $initiatorEmailAddress = ($initiatorUser instanceof IUser) ? $initiatorUser->getEMailAddress() : null; |
1339 | | - $plainHeading = $this->l->t('%1$s shared »%2$s« with you and wants to add:', [$initiatorDisplayName, $filename]); |
1340 | | - $htmlHeading = $this->l->t('%1$s shared »%2$s« with you and wants to add', [$initiatorDisplayName, $filename]); |
| 1347 | + $plainHeading = $l->t('%1$s shared »%2$s« with you and wants to add:', [$initiatorDisplayName, $filename]); |
| 1348 | + $htmlHeading = $l->t('%1$s shared »%2$s« with you and wants to add', [$initiatorDisplayName, $filename]); |
1341 | 1349 | $message = $this->mailer->createMessage(); |
1342 | 1350 |
|
1343 | 1351 | $emailTemplate = $this->mailer->createEMailTemplate('defaultShareProvider.sendNote'); |
1344 | 1352 |
|
1345 | | - $emailTemplate->setSubject($this->l->t('»%s« added a note to a file shared with you', [$initiatorDisplayName])); |
| 1353 | + $emailTemplate->setSubject($l->t('»%s« added a note to a file shared with you', [$initiatorDisplayName])); |
1346 | 1354 | $emailTemplate->addHeader(); |
1347 | 1355 | $emailTemplate->addHeading($htmlHeading, $plainHeading); |
1348 | 1356 | $emailTemplate->addBodyText(htmlspecialchars($note), $note); |
1349 | 1357 |
|
1350 | 1358 | $link = $this->urlGenerator->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $share->getNode()->getId()]); |
1351 | 1359 | $emailTemplate->addBodyButton( |
1352 | | - $this->l->t('Open »%s«', [$filename]), |
| 1360 | + $l->t('Open »%s«', [$filename]), |
1353 | 1361 | $link |
1354 | 1362 | ); |
1355 | 1363 |
|
1356 | 1364 |
|
1357 | 1365 | // The "From" contains the sharers name |
1358 | 1366 | $instanceName = $this->defaults->getName(); |
1359 | | - $senderName = $this->l->t( |
| 1367 | + $senderName = $l->t( |
1360 | 1368 | '%1$s via %2$s', |
1361 | 1369 | [ |
1362 | 1370 | $initiatorDisplayName, |
|
0 commit comments