diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/l10n/mk.js | 4 | ||||
-rw-r--r-- | lib/l10n/mk.json | 4 | ||||
-rw-r--r-- | lib/l10n/ru.js | 4 | ||||
-rw-r--r-- | lib/l10n/ru.json | 4 | ||||
-rw-r--r-- | lib/l10n/uk.js | 4 | ||||
-rw-r--r-- | lib/l10n/uk.json | 4 | ||||
-rw-r--r-- | lib/private/Files/Config/UserMountCache.php | 31 | ||||
-rw-r--r-- | lib/private/Files/Node/LazyUserFolder.php | 18 | ||||
-rw-r--r-- | lib/private/Files/Node/Root.php | 2 | ||||
-rw-r--r-- | lib/private/Share/Constants.php | 2 | ||||
-rw-r--r-- | lib/private/Share20/Manager.php | 1 | ||||
-rw-r--r-- | lib/private/Share20/ProviderFactory.php | 2 | ||||
-rw-r--r-- | lib/public/Share/IShare.php | 5 |
13 files changed, 66 insertions, 19 deletions
diff --git a/lib/l10n/mk.js b/lib/l10n/mk.js index 8bef570df57..2cfc60cada1 100644 --- a/lib/l10n/mk.js +++ b/lib/l10n/mk.js @@ -58,6 +58,7 @@ OC.L10N.register( "Avatar image is not square" : "Сликата за Аватар не е квадратна", "Files" : "Датотеки", "View profile" : "Прегледај профил", + "Local time: %s" : "Локално време: %s", "today" : "денес", "tomorrow" : "утре", "yesterday" : "вчера", @@ -102,6 +103,8 @@ OC.L10N.register( "Users" : "Корисници", "Email" : "Е-пошта", "Mail %s" : "Пошта %s", + "Fediverse" : "Федиверс", + "View %s on the fediverse" : "Погледни %s на федиверс", "Phone" : "Телефон", "Call %s" : "Повикај %s", "Twitter" : "Twitter", @@ -203,6 +206,7 @@ OC.L10N.register( "A valid password must be provided" : "Мора да се обезбеди валидна лозинка", "The username is already being used" : "Корисничкото име е веќе во употреба", "Could not create user" : "Неможе да се креира корисник", + "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", spaces and \"_.@-'\"" : "Само следниве карактери се дозволени во корисничкото име: \"a-z\", \"A-Z\", \"0-9\", празно место и \"_.@-'\"", "A valid username must be provided" : "Мора да се внесе валидно корисничко име ", "Username contains whitespace at the beginning or at the end" : "Корисничкото име содржи празно место на почетокот или на крајот", "Username must not consist of dots only" : "Корисничкото име не смее да се состои само од точки", diff --git a/lib/l10n/mk.json b/lib/l10n/mk.json index 030bb97d3e0..8b679c7bdd5 100644 --- a/lib/l10n/mk.json +++ b/lib/l10n/mk.json @@ -56,6 +56,7 @@ "Avatar image is not square" : "Сликата за Аватар не е квадратна", "Files" : "Датотеки", "View profile" : "Прегледај профил", + "Local time: %s" : "Локално време: %s", "today" : "денес", "tomorrow" : "утре", "yesterday" : "вчера", @@ -100,6 +101,8 @@ "Users" : "Корисници", "Email" : "Е-пошта", "Mail %s" : "Пошта %s", + "Fediverse" : "Федиверс", + "View %s on the fediverse" : "Погледни %s на федиверс", "Phone" : "Телефон", "Call %s" : "Повикај %s", "Twitter" : "Twitter", @@ -201,6 +204,7 @@ "A valid password must be provided" : "Мора да се обезбеди валидна лозинка", "The username is already being used" : "Корисничкото име е веќе во употреба", "Could not create user" : "Неможе да се креира корисник", + "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", spaces and \"_.@-'\"" : "Само следниве карактери се дозволени во корисничкото име: \"a-z\", \"A-Z\", \"0-9\", празно место и \"_.@-'\"", "A valid username must be provided" : "Мора да се внесе валидно корисничко име ", "Username contains whitespace at the beginning or at the end" : "Корисничкото име содржи празно место на почетокот или на крајот", "Username must not consist of dots only" : "Корисничкото име не смее да се состои само од точки", diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js index 1f1d60f29f4..819a83f2e40 100644 --- a/lib/l10n/ru.js +++ b/lib/l10n/ru.js @@ -58,6 +58,7 @@ OC.L10N.register( "Avatar image is not square" : "Изображение аватара не квадратное", "Files" : "Файлы", "View profile" : "Открыть профиль", + "Local time: %s" : "Местное время: %s", "today" : "сегодня", "tomorrow" : "завтра", "yesterday" : "вчера", @@ -102,6 +103,8 @@ OC.L10N.register( "Users" : "Пользователи", "Email" : "Адрес эл. почты", "Mail %s" : "Написать %s", + "Fediverse" : "Федиверс", + "View %s on the fediverse" : "Открыть %s в Федиверс", "Phone" : "Телефон", "Call %s" : "Позвонить %s", "Twitter" : "Твиттер", @@ -203,6 +206,7 @@ OC.L10N.register( "A valid password must be provided" : "Укажите допустимый пароль", "The username is already being used" : "Имя пользователя уже используется", "Could not create user" : "Не удалось создать пользователя", + "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", spaces and \"_.@-'\"" : "В имени пользователя допускаются следующие символы: «a–z», «A–Z», «0–9» и «_.@-'»", "A valid username must be provided" : "Укажите допустимое имя пользователя", "Username contains whitespace at the beginning or at the end" : "Имя пользователя содержит пробел в начале или в конце", "Username must not consist of dots only" : "Имя пользователя должно состоять не только из точек", diff --git a/lib/l10n/ru.json b/lib/l10n/ru.json index f3a5a476dcb..a0d8e3b647a 100644 --- a/lib/l10n/ru.json +++ b/lib/l10n/ru.json @@ -56,6 +56,7 @@ "Avatar image is not square" : "Изображение аватара не квадратное", "Files" : "Файлы", "View profile" : "Открыть профиль", + "Local time: %s" : "Местное время: %s", "today" : "сегодня", "tomorrow" : "завтра", "yesterday" : "вчера", @@ -100,6 +101,8 @@ "Users" : "Пользователи", "Email" : "Адрес эл. почты", "Mail %s" : "Написать %s", + "Fediverse" : "Федиверс", + "View %s on the fediverse" : "Открыть %s в Федиверс", "Phone" : "Телефон", "Call %s" : "Позвонить %s", "Twitter" : "Твиттер", @@ -201,6 +204,7 @@ "A valid password must be provided" : "Укажите допустимый пароль", "The username is already being used" : "Имя пользователя уже используется", "Could not create user" : "Не удалось создать пользователя", + "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", spaces and \"_.@-'\"" : "В имени пользователя допускаются следующие символы: «a–z», «A–Z», «0–9» и «_.@-'»", "A valid username must be provided" : "Укажите допустимое имя пользователя", "Username contains whitespace at the beginning or at the end" : "Имя пользователя содержит пробел в начале или в конце", "Username must not consist of dots only" : "Имя пользователя должно состоять не только из точек", diff --git a/lib/l10n/uk.js b/lib/l10n/uk.js index e5786d61ba3..d5572c40f87 100644 --- a/lib/l10n/uk.js +++ b/lib/l10n/uk.js @@ -93,9 +93,9 @@ OC.L10N.register( "__language_name__" : "Українська", "This is an automatically sent email, please do not reply." : "Це автоматично надісланий електронний лист, будь ласка, не відповідайте.", "Help" : "Допомога", - "Appearance and accessibility" : "Вигляд та доступність", + "Appearance and accessibility" : "Тема та вигляд", "Apps" : "Застосунки", - "Personal settings" : "Особисте", + "Personal settings" : "Мої налаштування", "Administration settings" : "Адміністрування", "Settings" : "Налаштування", "Log out" : "Вихід", diff --git a/lib/l10n/uk.json b/lib/l10n/uk.json index 8f810d5923b..f832eae7404 100644 --- a/lib/l10n/uk.json +++ b/lib/l10n/uk.json @@ -91,9 +91,9 @@ "__language_name__" : "Українська", "This is an automatically sent email, please do not reply." : "Це автоматично надісланий електронний лист, будь ласка, не відповідайте.", "Help" : "Допомога", - "Appearance and accessibility" : "Вигляд та доступність", + "Appearance and accessibility" : "Тема та вигляд", "Apps" : "Застосунки", - "Personal settings" : "Особисте", + "Personal settings" : "Мої налаштування", "Administration settings" : "Адміністрування", "Settings" : "Налаштування", "Log out" : "Вихід", diff --git a/lib/private/Files/Config/UserMountCache.php b/lib/private/Files/Config/UserMountCache.php index fe677c5ea52..a60b39823c5 100644 --- a/lib/private/Files/Config/UserMountCache.php +++ b/lib/private/Files/Config/UserMountCache.php @@ -130,18 +130,25 @@ class UserMountCache implements IUserMountCache { $changedMounts = $this->findChangedMounts($newMounts, $cachedMounts); - foreach ($addedMounts as $mount) { - $this->addToCache($mount); - /** @psalm-suppress InvalidArgument */ - $this->mountsForUsers[$user->getUID()][] = $mount; - } - foreach ($removedMounts as $mount) { - $this->removeFromCache($mount); - $index = array_search($mount, $this->mountsForUsers[$user->getUID()]); - unset($this->mountsForUsers[$user->getUID()][$index]); - } - foreach ($changedMounts as $mount) { - $this->updateCachedMount($mount); + $this->connection->beginTransaction(); + try { + foreach ($addedMounts as $mount) { + $this->addToCache($mount); + /** @psalm-suppress InvalidArgument */ + $this->mountsForUsers[$user->getUID()][] = $mount; + } + foreach ($removedMounts as $mount) { + $this->removeFromCache($mount); + $index = array_search($mount, $this->mountsForUsers[$user->getUID()]); + unset($this->mountsForUsers[$user->getUID()][$index]); + } + foreach ($changedMounts as $mount) { + $this->updateCachedMount($mount); + } + $this->connection->commit(); + } catch (\Throwable $e) { + $this->connection->rollBack(); + throw $e; } $this->eventLogger->end('fs:setup:user:register'); } diff --git a/lib/private/Files/Node/LazyUserFolder.php b/lib/private/Files/Node/LazyUserFolder.php index c85a356ddd3..81009532dbf 100644 --- a/lib/private/Files/Node/LazyUserFolder.php +++ b/lib/private/Files/Node/LazyUserFolder.php @@ -26,6 +26,7 @@ namespace OC\Files\Node; use OCP\Files\FileInfo; use OCP\Constants; use OCP\Files\IRootFolder; +use OCP\Files\Mount\IMountManager; use OCP\Files\NotFoundException; use OCP\IUser; @@ -33,10 +34,12 @@ class LazyUserFolder extends LazyFolder { private IRootFolder $root; private IUser $user; private string $path; + private IMountManager $mountManager; - public function __construct(IRootFolder $rootFolder, IUser $user) { + public function __construct(IRootFolder $rootFolder, IUser $user, IMountManager $mountManager) { $this->root = $rootFolder; $this->user = $user; + $this->mountManager = $mountManager; $this->path = '/' . $user->getUID() . '/files'; parent::__construct(function () use ($user) { try { @@ -61,9 +64,20 @@ class LazyUserFolder extends LazyFolder { /** * @param int $id - * @return \OC\Files\Node\Node[] + * @return \OCP\Files\Node[] */ public function getById($id) { return $this->root->getByIdInPath((int)$id, $this->getPath()); } + + public function getMountPoint() { + if ($this->folder !== null) { + return $this->folder->getMountPoint(); + } + $mountPoint = $this->mountManager->find('/' . $this->user->getUID()); + if (is_null($mountPoint)) { + throw new \Exception("No mountpoint for user folder"); + } + return $mountPoint; + } } diff --git a/lib/private/Files/Node/Root.php b/lib/private/Files/Node/Root.php index 29cdbb987c3..e9fb14e5364 100644 --- a/lib/private/Files/Node/Root.php +++ b/lib/private/Files/Node/Root.php @@ -395,7 +395,7 @@ class Root extends Folder implements IRootFolder { $folder = $this->newFolder('/' . $userId . '/files'); } } else { - $folder = new LazyUserFolder($this, $userObject); + $folder = new LazyUserFolder($this, $userObject, $this->mountManager); } $this->userFolderCache->set($userId, $folder); diff --git a/lib/private/Share/Constants.php b/lib/private/Share/Constants.php index 03c4c2ba828..0c8fad17e07 100644 --- a/lib/private/Share/Constants.php +++ b/lib/private/Share/Constants.php @@ -74,6 +74,8 @@ class Constants { public const SHARE_TYPE_DECK = 12; // const SHARE_TYPE_DECK_USER = 13; // Internal type used by DeckShareProvider + // Note to developers: Do not add new share types here + public const FORMAT_NONE = -1; public const FORMAT_STATUSES = -2; public const FORMAT_SOURCES = -3; // ToDo Check if it is still in use otherwise remove it diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php index 7fd99545668..f84ed1671ba 100644 --- a/lib/private/Share20/Manager.php +++ b/lib/private/Share20/Manager.php @@ -244,6 +244,7 @@ class Manager implements IManager { } } elseif ($share->getShareType() === IShare::TYPE_ROOM) { } elseif ($share->getShareType() === IShare::TYPE_DECK) { + } elseif ($share->getShareType() === IShare::TYPE_SCIENCEMESH) { } else { // We cannot handle other types yet throw new \InvalidArgumentException('unknown share type'); diff --git a/lib/private/Share20/ProviderFactory.php b/lib/private/Share20/ProviderFactory.php index 16f9a17ee42..6abfb372a4d 100644 --- a/lib/private/Share20/ProviderFactory.php +++ b/lib/private/Share20/ProviderFactory.php @@ -340,6 +340,8 @@ class ProviderFactory implements IProviderFactory { $provider = $this->getRoomShareProvider(); } elseif ($shareType === IShare::TYPE_DECK) { $provider = $this->getProvider('deck'); + } elseif ($shareType === IShare::TYPE_SCIENCEMESH) { + $provider = $this->getProvider('sciencemesh'); } diff --git a/lib/public/Share/IShare.php b/lib/public/Share/IShare.php index f8f75be4c41..40548c6c73d 100644 --- a/lib/public/Share/IShare.php +++ b/lib/public/Share/IShare.php @@ -118,6 +118,11 @@ interface IShare { public const TYPE_DECK_USER = 13; /** + * @since 26.0.0 + */ + public const TYPE_SCIENCEMESH = 15; + + /** * @since 18.0.0 */ public const STATUS_PENDING = 0; |