diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/dav/lib/Connector/Sabre/File.php | 18 | ||||
-rw-r--r-- | apps/dav/lib/Upload/ChunkingV2Plugin.php | 16 | ||||
-rw-r--r-- | apps/dav/lib/UserMigration/CalendarMigrator.php | 4 | ||||
-rw-r--r-- | apps/dav/lib/UserMigration/ContactsMigrator.php | 4 | ||||
-rw-r--r-- | apps/files/l10n/zh_CN.js | 6 | ||||
-rw-r--r-- | apps/files/l10n/zh_CN.json | 6 | ||||
-rw-r--r-- | apps/files/lib/Command/Scan.php | 69 | ||||
-rw-r--r-- | apps/files_sharing/l10n/fr.js | 2 | ||||
-rw-r--r-- | apps/files_sharing/l10n/fr.json | 2 | ||||
-rw-r--r-- | apps/files_trashbin/lib/UserMigration/TrashbinMigrator.php | 4 | ||||
-rw-r--r-- | apps/files_versions/lib/Storage.php | 7 | ||||
-rw-r--r-- | apps/settings/l10n/sr.js | 8 | ||||
-rw-r--r-- | apps/settings/l10n/sr.json | 8 | ||||
-rw-r--r-- | apps/settings/lib/UserMigration/AccountMigrator.php | 4 |
14 files changed, 88 insertions, 70 deletions
diff --git a/apps/dav/lib/Connector/Sabre/File.php b/apps/dav/lib/Connector/Sabre/File.php index b0f17417d21..a7cafeb4a5e 100644 --- a/apps/dav/lib/Connector/Sabre/File.php +++ b/apps/dav/lib/Connector/Sabre/File.php @@ -422,14 +422,15 @@ class File extends Node implements IFile { } } - /** - * @param string $path - */ - private function emitPreHooks($exists, $path = null) { + private function emitPreHooks(bool $exists, ?string $path = null): bool { if (is_null($path)) { $path = $this->path; } $hookPath = Filesystem::getView()->getRelativePath($this->fileView->getAbsolutePath($path)); + if ($hookPath === null) { + // We only trigger hooks from inside default view + return true; + } $run = true; if (!$exists) { @@ -450,14 +451,15 @@ class File extends Node implements IFile { return $run; } - /** - * @param string $path - */ - private function emitPostHooks($exists, $path = null) { + private function emitPostHooks(bool $exists, ?string $path = null): void { if (is_null($path)) { $path = $this->path; } $hookPath = Filesystem::getView()->getRelativePath($this->fileView->getAbsolutePath($path)); + if ($hookPath === null) { + // We only trigger hooks from inside default view + return; + } if (!$exists) { \OC_Hook::emit(\OC\Files\Filesystem::CLASSNAME, \OC\Files\Filesystem::signal_post_create, [ \OC\Files\Filesystem::signal_param_path => $hookPath diff --git a/apps/dav/lib/Upload/ChunkingV2Plugin.php b/apps/dav/lib/Upload/ChunkingV2Plugin.php index cb7c802125c..6b660fb7c6f 100644 --- a/apps/dav/lib/Upload/ChunkingV2Plugin.php +++ b/apps/dav/lib/Upload/ChunkingV2Plugin.php @@ -255,17 +255,15 @@ class ChunkingV2Plugin extends ServerPlugin { public function beforeDelete(RequestInterface $request, ResponseInterface $response) { try { - $this->prepareUpload($request->getPath()); - if (!$this->uploadFolder instanceof UploadFolder) { - return true; - } - - [$storage, $storagePath] = $this->getUploadStorage($this->uploadPath); - $storage->cancelChunkedWrite($storagePath, $this->uploadId); - return true; - } catch (NotFound $e) { + $this->prepareUpload(dirname($request->getPath())); + $this->checkPrerequisites(); + } catch (StorageInvalidException|BadRequest|NotFound $e) { return true; } + + [$storage, $storagePath] = $this->getUploadStorage($this->uploadPath); + $storage->cancelChunkedWrite($storagePath, $this->uploadId); + return true; } /** diff --git a/apps/dav/lib/UserMigration/CalendarMigrator.php b/apps/dav/lib/UserMigration/CalendarMigrator.php index 057f7dce77d..e5b404e785f 100644 --- a/apps/dav/lib/UserMigration/CalendarMigrator.php +++ b/apps/dav/lib/UserMigration/CalendarMigrator.php @@ -211,7 +211,7 @@ class CalendarMigrator implements IMigrator, ISizeEstimationMigrator { /** * {@inheritDoc} */ - public function getEstimatedExportSize(IUser $user): int { + public function getEstimatedExportSize(IUser $user): int|float { $calendarExports = $this->getCalendarExports($user, new NullOutput()); $calendarCount = count($calendarExports); @@ -230,7 +230,7 @@ class CalendarMigrator implements IMigrator, ISizeEstimationMigrator { // 450B for each component (events, todos, alarms, etc.) $size += ($componentCount * 450) / 1024; - return (int)ceil($size); + return ceil($size); } /** diff --git a/apps/dav/lib/UserMigration/ContactsMigrator.php b/apps/dav/lib/UserMigration/ContactsMigrator.php index 196d0a6110a..58e267ab28c 100644 --- a/apps/dav/lib/UserMigration/ContactsMigrator.php +++ b/apps/dav/lib/UserMigration/ContactsMigrator.php @@ -202,7 +202,7 @@ class ContactsMigrator implements IMigrator, ISizeEstimationMigrator { /** * {@inheritDoc} */ - public function getEstimatedExportSize(IUser $user): int { + public function getEstimatedExportSize(IUser $user): int|float { $addressBookExports = $this->getAddressBookExports($user, new NullOutput()); $addressBookCount = count($addressBookExports); @@ -217,7 +217,7 @@ class ContactsMigrator implements IMigrator, ISizeEstimationMigrator { // 350B for each contact $size += ($contactsCount * 350) / 1024; - return (int)ceil($size); + return ceil($size); } /** diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js index 0d6978e5fbd..327e23ac172 100644 --- a/apps/files/l10n/zh_CN.js +++ b/apps/files/l10n/zh_CN.js @@ -109,6 +109,8 @@ OC.L10N.register( "Create new folder" : "创建新文件夹", "Upload file" : "上传文件", "Recent" : "最近", + "This file has the tag {tag}" : "这个文件有 {tag} 标签", + "This file has the tags {firstTags} and {lastTag}" : "这个文件有 {firstTags} 和 {lastTag} 标签", "Not favorited" : "未收藏", "Remove from favorites" : "从收藏中移除", "Add to favorites" : "添加到收藏夹", @@ -176,9 +178,11 @@ OC.L10N.register( "\"{displayName}\" action failed" : "\"{displayName}\" 操作执行失败", "Select all" : "全部选择", "Unselect all" : "取消全选", + "\"{displayName}\" batch action executed successfully" : "批量操作 \"{displayName}\" 运行成功", "ascending" : "升序", "descending" : "降序", "Sort list by {column} ({direction})" : "按 {column} ({direction}) 排序列表", + "This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list." : "该列表因为性能原因没有完全加载。文件将会在您浏览列表的时候加载。", "Storage informations" : "存储信息", "{usedQuotaByte} used" : "{usedQuotaByte} 已使用", "{relative}% used" : "{relative}% 已使用", @@ -187,6 +191,7 @@ OC.L10N.register( "Choose file or folder to transfer" : "选择要转移的文件或文件夹", "Change" : "修改", "New owner" : "新的拥有者", + "Search for an account" : "搜索一个账户", "Choose a file or folder to transfer" : "选择要转移的文件或文件夹", "Transfer" : "转移", "Transfer {path} to {userid}" : "将 {path} 转移给 {userid}", @@ -225,6 +230,7 @@ OC.L10N.register( "Delete permanently" : "彻底删除", "Set up templates folder" : "设置模板文件夹", "Templates" : "模板", + "Create new templates folder" : "新建模板文件夹", "Unable to initialize the templates directory" : "无法初始化模板目录", "Toggle %1$s sublist" : "切换 %1$s 子列表", "Toggle grid view" : "切换网格视图", diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json index 97a7c05d76c..149b51ed282 100644 --- a/apps/files/l10n/zh_CN.json +++ b/apps/files/l10n/zh_CN.json @@ -107,6 +107,8 @@ "Create new folder" : "创建新文件夹", "Upload file" : "上传文件", "Recent" : "最近", + "This file has the tag {tag}" : "这个文件有 {tag} 标签", + "This file has the tags {firstTags} and {lastTag}" : "这个文件有 {firstTags} 和 {lastTag} 标签", "Not favorited" : "未收藏", "Remove from favorites" : "从收藏中移除", "Add to favorites" : "添加到收藏夹", @@ -174,9 +176,11 @@ "\"{displayName}\" action failed" : "\"{displayName}\" 操作执行失败", "Select all" : "全部选择", "Unselect all" : "取消全选", + "\"{displayName}\" batch action executed successfully" : "批量操作 \"{displayName}\" 运行成功", "ascending" : "升序", "descending" : "降序", "Sort list by {column} ({direction})" : "按 {column} ({direction}) 排序列表", + "This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list." : "该列表因为性能原因没有完全加载。文件将会在您浏览列表的时候加载。", "Storage informations" : "存储信息", "{usedQuotaByte} used" : "{usedQuotaByte} 已使用", "{relative}% used" : "{relative}% 已使用", @@ -185,6 +189,7 @@ "Choose file or folder to transfer" : "选择要转移的文件或文件夹", "Change" : "修改", "New owner" : "新的拥有者", + "Search for an account" : "搜索一个账户", "Choose a file or folder to transfer" : "选择要转移的文件或文件夹", "Transfer" : "转移", "Transfer {path} to {userid}" : "将 {path} 转移给 {userid}", @@ -223,6 +228,7 @@ "Delete permanently" : "彻底删除", "Set up templates folder" : "设置模板文件夹", "Templates" : "模板", + "Create new templates folder" : "新建模板文件夹", "Unable to initialize the templates directory" : "无法初始化模板目录", "Toggle %1$s sublist" : "切换 %1$s 子列表", "Toggle grid view" : "切换网格视图", diff --git a/apps/files/lib/Command/Scan.php b/apps/files/lib/Command/Scan.php index a59665c56e9..6c7a607d2af 100644 --- a/apps/files/lib/Command/Scan.php +++ b/apps/files/lib/Command/Scan.php @@ -58,6 +58,7 @@ class Scan extends Base { protected float $execTime = 0; protected int $foldersCounter = 0; protected int $filesCounter = 0; + protected int $errorsCounter = 0; private IRootFolder $root; private MetadataManager $metadataManager; @@ -148,10 +149,12 @@ class Scan extends Base { $scanner->listen('\OC\Files\Utils\Scanner', 'StorageNotAvailable', function (StorageNotAvailableException $e) use ($output) { $output->writeln('Error while scanning, storage not available (' . $e->getMessage() . ')', OutputInterface::VERBOSITY_VERBOSE); + ++$this->errorsCounter; }); $scanner->listen('\OC\Files\Utils\Scanner', 'normalizedNameMismatch', function ($fullPath) use ($output) { $output->writeln("\t<error>Entry \"" . $fullPath . '" will not be accessible due to incompatible encoding</error>'); + ++$this->errorsCounter; }); try { @@ -164,14 +167,17 @@ class Scan extends Base { $output->writeln("<error>Home storage for user $user not writable or 'files' subdirectory missing</error>"); $output->writeln(' ' . $e->getMessage()); $output->writeln('Make sure you\'re running the scan command only as the user the web server runs as'); + ++$this->errorsCounter; } catch (InterruptedException $e) { # exit the function if ctrl-c has been pressed $output->writeln('Interrupted by user'); } catch (NotFoundException $e) { $output->writeln('<error>Path not found: ' . $e->getMessage() . '</error>'); + ++$this->errorsCounter; } catch (\Exception $e) { $output->writeln('<error>Exception during scan: ' . $e->getMessage() . '</error>'); $output->writeln('<error>' . $e->getTraceAsString() . '</error>'); + ++$this->errorsCounter; } } @@ -192,11 +198,6 @@ class Scan extends Base { $users = $input->getArgument('user_id'); } - # restrict the verbosity level to VERBOSITY_VERBOSE - if ($output->getVerbosity() > OutputInterface::VERBOSITY_VERBOSE) { - $output->setVerbosity(OutputInterface::VERBOSITY_VERBOSE); - } - # check quantity of users to be process and show it on the command line $users_total = count($users); if ($users_total === 0) { @@ -204,7 +205,7 @@ class Scan extends Base { return 1; } - $this->initTools(); + $this->initTools($output); $user_count = 0; foreach ($users as $user) { @@ -236,15 +237,19 @@ class Scan extends Base { /** * Initialises some useful tools for the Command */ - protected function initTools() { + protected function initTools(OutputInterface $output) { // Start the timer $this->execTime = -microtime(true); // Convert PHP errors to exceptions - set_error_handler([$this, 'exceptionErrorHandler'], E_ALL); + set_error_handler( + fn (int $severity, string $message, string $file, int $line): bool => + $this->exceptionErrorHandler($output, $severity, $message, $file, $line), + E_ALL + ); } /** - * Processes PHP errors as exceptions in order to be able to keep track of problems + * Processes PHP errors in order to be able to show them in the output * * @see https://www.php.net/manual/en/function.set-error-handler.php * @@ -252,15 +257,17 @@ class Scan extends Base { * @param string $message * @param string $file the filename that the error was raised in * @param int $line the line number the error was raised - * - * @throws \ErrorException */ - public function exceptionErrorHandler($severity, $message, $file, $line) { - if (!(error_reporting() & $severity)) { - // This error code is not included in error_reporting - return; + public function exceptionErrorHandler(OutputInterface $output, int $severity, string $message, string $file, int $line): bool { + if (($severity === E_DEPRECATED) || ($severity === E_USER_DEPRECATED)) { + // Do not show deprecation warnings + return false; } - throw new \ErrorException($message, 0, $severity, $file, $line); + $e = new \ErrorException($message, 0, $severity, $file, $line); + $output->writeln('<error>Error during scan: ' . $e->getMessage() . '</error>'); + $output->writeln('<error>' . $e->getTraceAsString() . '</error>', OutputInterface::VERBOSITY_VERY_VERBOSE); + ++$this->errorsCounter; + return true; } /** @@ -271,28 +278,18 @@ class Scan extends Base { $this->execTime += microtime(true); $headers = [ - 'Folders', 'Files', 'Elapsed time' + 'Folders', + 'Files', + 'Errors', + 'Elapsed time', ]; - - $this->showSummary($headers, null, $output); - } - - /** - * Shows a summary of operations - * - * @param string[] $headers - * @param string[] $rows - * @param OutputInterface $output - */ - protected function showSummary($headers, $rows, OutputInterface $output) { $niceDate = $this->formatExecTime(); - if (!$rows) { - $rows = [ - $this->foldersCounter, - $this->filesCounter, - $niceDate, - ]; - } + $rows = [ + $this->foldersCounter, + $this->filesCounter, + $this->errorsCounter, + $niceDate, + ]; $table = new Table($output); $table ->setHeaders($headers) diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js index 17d94f9f7cd..b86c1064534 100644 --- a/apps/files_sharing/l10n/fr.js +++ b/apps/files_sharing/l10n/fr.js @@ -120,6 +120,7 @@ OC.L10N.register( "You cannot share to a Circle if the app is not enabled" : "Vous ne pouvez pas partager au Cercle si l'application n'est pas activée", "Please specify a valid circle" : "Veuillez entrer un cercle valide", "Sharing %s failed because the back end does not support room shares" : "Le partage %s a échoué parce que l'arrière-plan ne prend pas en charge les partages.", + "Sharing %s failed because the back end does not support ScienceMesh shares" : "Le partage de %s a échoué car le serveur ne supporte pas les partages ScienceMesh", "Unknown share type" : "Type de partage inconnu", "Not a directory" : "N'est pas un dossier", "Could not lock node" : "Impossible de verrouiller le nœud", @@ -225,6 +226,7 @@ OC.L10N.register( "Circle" : "Cercle", "Talk conversation" : "Conversation Talk", "Deck board" : "Tableau Deck", + "ScienceMesh" : "ScienceMesh", "on {server}" : "sur {server}", "Others with access" : "Autres utilisateurs ayant accès", "No other users with access found" : "Aucun autre utilisateur ayant un accès n'a été trouvé", diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json index bcbab1f4560..4681e1c5504 100644 --- a/apps/files_sharing/l10n/fr.json +++ b/apps/files_sharing/l10n/fr.json @@ -118,6 +118,7 @@ "You cannot share to a Circle if the app is not enabled" : "Vous ne pouvez pas partager au Cercle si l'application n'est pas activée", "Please specify a valid circle" : "Veuillez entrer un cercle valide", "Sharing %s failed because the back end does not support room shares" : "Le partage %s a échoué parce que l'arrière-plan ne prend pas en charge les partages.", + "Sharing %s failed because the back end does not support ScienceMesh shares" : "Le partage de %s a échoué car le serveur ne supporte pas les partages ScienceMesh", "Unknown share type" : "Type de partage inconnu", "Not a directory" : "N'est pas un dossier", "Could not lock node" : "Impossible de verrouiller le nœud", @@ -223,6 +224,7 @@ "Circle" : "Cercle", "Talk conversation" : "Conversation Talk", "Deck board" : "Tableau Deck", + "ScienceMesh" : "ScienceMesh", "on {server}" : "sur {server}", "Others with access" : "Autres utilisateurs ayant accès", "No other users with access found" : "Aucun autre utilisateur ayant un accès n'a été trouvé", diff --git a/apps/files_trashbin/lib/UserMigration/TrashbinMigrator.php b/apps/files_trashbin/lib/UserMigration/TrashbinMigrator.php index 70338a469d3..842721eeac9 100644 --- a/apps/files_trashbin/lib/UserMigration/TrashbinMigrator.php +++ b/apps/files_trashbin/lib/UserMigration/TrashbinMigrator.php @@ -67,7 +67,7 @@ class TrashbinMigrator implements IMigrator, ISizeEstimationMigrator { /** * {@inheritDoc} */ - public function getEstimatedExportSize(IUser $user): int { + public function getEstimatedExportSize(IUser $user): int|float { $uid = $user->getUID(); try { @@ -75,7 +75,7 @@ class TrashbinMigrator implements IMigrator, ISizeEstimationMigrator { if (!$trashbinFolder instanceof Folder) { return 0; } - return (int)ceil($trashbinFolder->getSize() / 1024); + return ceil($trashbinFolder->getSize() / 1024); } catch (\Throwable $e) { return 0; } diff --git a/apps/files_versions/lib/Storage.php b/apps/files_versions/lib/Storage.php index 9141e6c4c65..cd13e74e786 100644 --- a/apps/files_versions/lib/Storage.php +++ b/apps/files_versions/lib/Storage.php @@ -608,7 +608,12 @@ class Storage { foreach ($versions as $version) { $internalPath = $version->getInternalPath(); \OC_Hook::emit('\OCP\Versions', 'preDelete', ['path' => $internalPath, 'trigger' => self::DELETE_TRIGGER_RETENTION_CONSTRAINT]); - $versionsMapper->delete($versionEntities[$version->getId()]); + + $versionEntity = $versionEntities[$version->getId()]; + if (!is_null($versionEntity)) { + $versionsMapper->delete($versionEntity); + } + $version->delete(); \OC_Hook::emit('\OCP\Versions', 'delete', ['path' => $internalPath, 'trigger' => self::DELETE_TRIGGER_RETENTION_CONSTRAINT]); } diff --git a/apps/settings/l10n/sr.js b/apps/settings/l10n/sr.js index 893626fe6aa..5a875feae2d 100644 --- a/apps/settings/l10n/sr.js +++ b/apps/settings/l10n/sr.js @@ -231,12 +231,12 @@ OC.L10N.register( "Copied!" : "Копирано!", "Copy" : "Копирај", "Could not copy app password. Please copy it manually." : "Не могу да копирам апликативну лозинку. Копирајте је ручно.", - "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Да би сервер исправно радио, важно је да се правилно подесе позадински послови. Cron је препоручено подешавање. За још информација, молимо вас да погледате документацију .", + "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Да би сервер исправно радио, важно је да се правилно подесе позадински послови. Cron је препоручено подешавање. За још информација, молимо вас да погледате документацију.", "Last job execution ran {time}. Something seems wrong." : "Последњи посао се извршавао {time}. Изгледа да нешто није у реду.", - "Last job ran {relativeTime}." : "Последњи посао се изврашавао {relativeTime}.", + "Last job ran {relativeTime}." : "Последњи посао се извршавао {relativeTime}.", "Background job did not run yet!" : "Позадински посао се још увек није покренуо!", "AJAX" : "AJAX", - "Execute one task with each page loaded. Use case: Single user instance." : "Извршава један задатак за сваку учитану страницу. Случај употребе: инстанца са једним корисником", + "Execute one task with each page loaded. Use case: Single user instance." : "Извршава један задатак за сваку учитану страницу. Случај употребе: инстанца са једним корисником.", "Webcron" : "Webcron", "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php се регуструје у webcron сервису тако да се cron.php позива преко HTTP сваких 5 минута. Случај употребе: врло мала инстанца (1–5 корисника, у зависности од употребе).", "Cron (Recommended)" : "Cron (Препоручено)", @@ -441,7 +441,7 @@ OC.L10N.register( "Login" : "Пријава", "SSL/TLS" : "SSL/TLS", "Open documentation" : "Отвори документацију", - "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Важно је да подесите сервер да може да шаље е-пошту, када нпр. треба послати ресетовање лозинке или нека обавештења.", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Важно је да подесите сервер тако да може да шаље е-пошту када нпр. треба послати ресетовање лозинке или нека обавештења.", "Send mode" : "Режим слања", "Encryption" : "Шифровање", "Sendmail mode" : "Sendmail режим", diff --git a/apps/settings/l10n/sr.json b/apps/settings/l10n/sr.json index ddc8fa1d262..0efdb13fc6a 100644 --- a/apps/settings/l10n/sr.json +++ b/apps/settings/l10n/sr.json @@ -229,12 +229,12 @@ "Copied!" : "Копирано!", "Copy" : "Копирај", "Could not copy app password. Please copy it manually." : "Не могу да копирам апликативну лозинку. Копирајте је ручно.", - "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Да би сервер исправно радио, важно је да се правилно подесе позадински послови. Cron је препоручено подешавање. За још информација, молимо вас да погледате документацију .", + "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Да би сервер исправно радио, важно је да се правилно подесе позадински послови. Cron је препоручено подешавање. За још информација, молимо вас да погледате документацију.", "Last job execution ran {time}. Something seems wrong." : "Последњи посао се извршавао {time}. Изгледа да нешто није у реду.", - "Last job ran {relativeTime}." : "Последњи посао се изврашавао {relativeTime}.", + "Last job ran {relativeTime}." : "Последњи посао се извршавао {relativeTime}.", "Background job did not run yet!" : "Позадински посао се још увек није покренуо!", "AJAX" : "AJAX", - "Execute one task with each page loaded. Use case: Single user instance." : "Извршава један задатак за сваку учитану страницу. Случај употребе: инстанца са једним корисником", + "Execute one task with each page loaded. Use case: Single user instance." : "Извршава један задатак за сваку учитану страницу. Случај употребе: инстанца са једним корисником.", "Webcron" : "Webcron", "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php се регуструје у webcron сервису тако да се cron.php позива преко HTTP сваких 5 минута. Случај употребе: врло мала инстанца (1–5 корисника, у зависности од употребе).", "Cron (Recommended)" : "Cron (Препоручено)", @@ -439,7 +439,7 @@ "Login" : "Пријава", "SSL/TLS" : "SSL/TLS", "Open documentation" : "Отвори документацију", - "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Важно је да подесите сервер да може да шаље е-пошту, када нпр. треба послати ресетовање лозинке или нека обавештења.", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Важно је да подесите сервер тако да може да шаље е-пошту када нпр. треба послати ресетовање лозинке или нека обавештења.", "Send mode" : "Режим слања", "Encryption" : "Шифровање", "Sendmail mode" : "Sendmail режим", diff --git a/apps/settings/lib/UserMigration/AccountMigrator.php b/apps/settings/lib/UserMigration/AccountMigrator.php index e8c70624224..a779ad76c8d 100644 --- a/apps/settings/lib/UserMigration/AccountMigrator.php +++ b/apps/settings/lib/UserMigration/AccountMigrator.php @@ -84,7 +84,7 @@ class AccountMigrator implements IMigrator, ISizeEstimationMigrator { /** * {@inheritDoc} */ - public function getEstimatedExportSize(IUser $user): int { + public function getEstimatedExportSize(IUser $user): int|float { $size = 100; // 100KiB for account JSON try { @@ -97,7 +97,7 @@ class AccountMigrator implements IMigrator, ISizeEstimationMigrator { // Skip avatar in size estimate on failure } - return (int)ceil($size); + return ceil($size); } /** |