mirror of
https://github.com/nextcloud/server.git
synced 2026-03-21 18:11:02 -04:00
Merge pull request #44906 from nextcloud/feat/localized-ownership-transfer-target
feat(files): Use receiving users language for the ownership transfer target folder
This commit is contained in:
commit
57a7f09a72
3 changed files with 16 additions and 11 deletions
|
|
@ -23,6 +23,7 @@ use OCP\Files\IRootFolder;
|
|||
use OCP\Files\Mount\IMountManager;
|
||||
use OCP\IUser;
|
||||
use OCP\IUserManager;
|
||||
use OCP\L10N\IFactory;
|
||||
use OCP\Share\IManager as IShareManager;
|
||||
use OCP\Share\IShare;
|
||||
use Symfony\Component\Console\Helper\ProgressBar;
|
||||
|
|
@ -45,6 +46,7 @@ class OwnershipTransferService {
|
|||
private IMountManager $mountManager,
|
||||
private IUserMountCache $userMountCache,
|
||||
private IUserManager $userManager,
|
||||
private IFactory $l10nFactory,
|
||||
) {
|
||||
$this->encryptionManager = $encryptionManager;
|
||||
}
|
||||
|
|
@ -93,19 +95,15 @@ class OwnershipTransferService {
|
|||
if ($move) {
|
||||
$finalTarget = "$destinationUid/files/";
|
||||
} else {
|
||||
$l = $this->l10nFactory->get('files', $this->l10nFactory->getUserLanguage($destinationUser));
|
||||
$date = date('Y-m-d H-i-s');
|
||||
|
||||
// Remove some characters which are prone to cause errors
|
||||
$cleanUserName = str_replace(['\\', '/', ':', '.', '?', '#', '\'', '"'], '-', $sourceUser->getDisplayName());
|
||||
// Replace multiple dashes with one dash
|
||||
$cleanUserName = preg_replace('/-{2,}/s', '-', $cleanUserName);
|
||||
$cleanUserName = $cleanUserName ?: $sourceUid;
|
||||
|
||||
$finalTarget = "$destinationUid/files/transferred from $cleanUserName on $date";
|
||||
$cleanUserName = $this->sanitizeFolderName($sourceUser->getDisplayName()) ?: $sourceUid;
|
||||
$finalTarget = "$destinationUid/files/" . $this->sanitizeFolderName($l->t('Transferred from %1$s on %2$s', [$cleanUserName, $date]));
|
||||
try {
|
||||
$view->verifyPath(dirname($finalTarget), basename($finalTarget));
|
||||
} catch (InvalidPathException $e) {
|
||||
$finalTarget = "$destinationUid/files/transferred from $sourceUid on $date";
|
||||
$finalTarget = "$destinationUid/files/" . $this->sanitizeFolderName($l->t('Transferred from %1$s on %2$s', [$sourceUid, $date]));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -185,6 +183,13 @@ class OwnershipTransferService {
|
|||
}
|
||||
}
|
||||
|
||||
private function sanitizeFolderName(string $name): string {
|
||||
// Remove some characters which are prone to cause errors
|
||||
$name = str_replace(['\\', '/', ':', '.', '?', '#', '\'', '"'], '-', $name);
|
||||
// Replace multiple dashes with one dash
|
||||
return preg_replace('/-{2,}/s', '-', $name);
|
||||
}
|
||||
|
||||
private function walkFiles(View $view, $path, Closure $callBack) {
|
||||
foreach ($view->getDirectoryContent($path) as $fileInfo) {
|
||||
if (!$callBack($fileInfo)) {
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ class CommandLineContext implements \Behat\Behat\Context\Context {
|
|||
foreach ($results as $path => $data) {
|
||||
$path = rawurldecode($path);
|
||||
$parts = explode(' ', $path);
|
||||
if (basename($parts[0]) !== 'transferred') {
|
||||
if (basename($parts[0]) !== 'Transferred') {
|
||||
continue;
|
||||
}
|
||||
if (isset($parts[2]) && $parts[2] === $sourceUser) {
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ Feature: transfer-ownership
|
|||
And As an "user1"
|
||||
And using received transfer folder of "user1" as dav path
|
||||
Then Downloaded content when downloading file "/test/somefile.txt" with range "bytes=0-6" should be "This is"
|
||||
And transfer folder name contains "transferred from user0 -risky- ヂspḷay -na|-|e- on"
|
||||
And transfer folder name contains "Transferred from user0 -risky- ヂspḷay -na|-|e- on"
|
||||
And using old dav path
|
||||
And as "user0" the folder "/test" does not exist
|
||||
And using received transfer folder of "user1" as dav path
|
||||
|
|
@ -345,7 +345,7 @@ Feature: transfer-ownership
|
|||
And As an "user1"
|
||||
And using received transfer folder of "user1" as dav path
|
||||
Then Downloaded content when downloading file "/test/somefile.txt" with range "bytes=0-6" should be "This is"
|
||||
And transfer folder name contains "transferred from user0 -risky- ヂspḷay -na|-|e- on"
|
||||
And transfer folder name contains "Transferred from user0 -risky- ヂspḷay -na|-|e- on"
|
||||
And using old dav path
|
||||
And as "user0" the folder "/test" does not exist
|
||||
And using received transfer folder of "user1" as dav path
|
||||
|
|
|
|||
Loading…
Reference in a new issue