aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/dav/lib/Connector/Sabre/File.php18
-rw-r--r--apps/dav/lib/Upload/ChunkingV2Plugin.php16
-rw-r--r--apps/dav/lib/UserMigration/CalendarMigrator.php4
-rw-r--r--apps/dav/lib/UserMigration/ContactsMigrator.php4
-rw-r--r--apps/files/l10n/zh_CN.js6
-rw-r--r--apps/files/l10n/zh_CN.json6
-rw-r--r--apps/files/lib/Command/Scan.php69
-rw-r--r--apps/files_sharing/l10n/fr.js2
-rw-r--r--apps/files_sharing/l10n/fr.json2
-rw-r--r--apps/files_trashbin/lib/UserMigration/TrashbinMigrator.php4
-rw-r--r--apps/files_versions/lib/Storage.php7
-rw-r--r--apps/settings/l10n/sr.js8
-rw-r--r--apps/settings/l10n/sr.json8
-rw-r--r--apps/settings/lib/UserMigration/AccountMigrator.php4
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);
}
/**