diff options
Diffstat (limited to 'lib')
66 files changed, 358 insertions, 422 deletions
diff --git a/lib/base.php b/lib/base.php index ec5cf3759f2..5bab5d9f3f6 100644 --- a/lib/base.php +++ b/lib/base.php @@ -292,10 +292,12 @@ class OC { http_response_code(503); header('Retry-After: 120'); + $serverVersion = \OCP\Server::get(\OCP\ServerVersion::class); + // render error page $template = new OC_Template('', 'update.use-cli', 'guest'); $template->assign('productName', 'nextcloud'); // for now - $template->assign('version', OC_Util::getVersionString()); + $template->assign('version', $serverVersion->getVersionString()); $template->assign('tooBig', $tooBig); $template->assign('cliUpgradeLink', $cliUpgradeLink); @@ -321,7 +323,7 @@ class OC { $appManager = Server::get(\OCP\App\IAppManager::class); $tmpl = new OC_Template('', 'update.admin', 'guest'); - $tmpl->assign('version', OC_Util::getVersionString()); + $tmpl->assign('version', \OCP\Server::get(\OCP\ServerVersion::class)->getVersionString()); $tmpl->assign('isAppsOnlyUpgrade', $isAppsOnlyUpgrade); // get third party apps @@ -663,7 +665,7 @@ class OC { if (!function_exists('simplexml_load_file')) { throw new \OCP\HintException('The PHP SimpleXML/PHP-XML extension is not installed.', 'Install the extension or make sure it is enabled.'); } - + OC_App::loadApps(['session']); if (!self::$CLI) { self::initSession(); diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php index 82964a6e6c7..234cc20b4a4 100644 --- a/lib/composer/composer/autoload_classmap.php +++ b/lib/composer/composer/autoload_classmap.php @@ -428,6 +428,7 @@ return array( 'OCP\\Files\\StorageNotAvailableException' => $baseDir . '/lib/public/Files/StorageNotAvailableException.php', 'OCP\\Files\\StorageTimeoutException' => $baseDir . '/lib/public/Files/StorageTimeoutException.php', 'OCP\\Files\\Storage\\IChunkedFileWrite' => $baseDir . '/lib/public/Files/Storage/IChunkedFileWrite.php', + 'OCP\\Files\\Storage\\IConstructableStorage' => $baseDir . '/lib/public/Files/Storage/IConstructableStorage.php', 'OCP\\Files\\Storage\\IDisableEncryptionStorage' => $baseDir . '/lib/public/Files/Storage/IDisableEncryptionStorage.php', 'OCP\\Files\\Storage\\ILockingStorage' => $baseDir . '/lib/public/Files/Storage/ILockingStorage.php', 'OCP\\Files\\Storage\\INotifyStorage' => $baseDir . '/lib/public/Files/Storage/INotifyStorage.php', @@ -688,6 +689,7 @@ return array( 'OCP\\Security\\VerificationToken\\IVerificationToken' => $baseDir . '/lib/public/Security/VerificationToken/IVerificationToken.php', 'OCP\\Security\\VerificationToken\\InvalidTokenException' => $baseDir . '/lib/public/Security/VerificationToken/InvalidTokenException.php', 'OCP\\Server' => $baseDir . '/lib/public/Server.php', + 'OCP\\ServerVersion' => $baseDir . '/lib/public/ServerVersion.php', 'OCP\\Session\\Exceptions\\SessionNotAvailableException' => $baseDir . '/lib/public/Session/Exceptions/SessionNotAvailableException.php', 'OCP\\Settings\\DeclarativeSettingsTypes' => $baseDir . '/lib/public/Settings/DeclarativeSettingsTypes.php', 'OCP\\Settings\\Events\\DeclarativeSettingsGetValueEvent' => $baseDir . '/lib/public/Settings/Events/DeclarativeSettingsGetValueEvent.php', diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index d83229c7426..79186210848 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -461,6 +461,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2 'OCP\\Files\\StorageNotAvailableException' => __DIR__ . '/../../..' . '/lib/public/Files/StorageNotAvailableException.php', 'OCP\\Files\\StorageTimeoutException' => __DIR__ . '/../../..' . '/lib/public/Files/StorageTimeoutException.php', 'OCP\\Files\\Storage\\IChunkedFileWrite' => __DIR__ . '/../../..' . '/lib/public/Files/Storage/IChunkedFileWrite.php', + 'OCP\\Files\\Storage\\IConstructableStorage' => __DIR__ . '/../../..' . '/lib/public/Files/Storage/IConstructableStorage.php', 'OCP\\Files\\Storage\\IDisableEncryptionStorage' => __DIR__ . '/../../..' . '/lib/public/Files/Storage/IDisableEncryptionStorage.php', 'OCP\\Files\\Storage\\ILockingStorage' => __DIR__ . '/../../..' . '/lib/public/Files/Storage/ILockingStorage.php', 'OCP\\Files\\Storage\\INotifyStorage' => __DIR__ . '/../../..' . '/lib/public/Files/Storage/INotifyStorage.php', @@ -721,6 +722,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2 'OCP\\Security\\VerificationToken\\IVerificationToken' => __DIR__ . '/../../..' . '/lib/public/Security/VerificationToken/IVerificationToken.php', 'OCP\\Security\\VerificationToken\\InvalidTokenException' => __DIR__ . '/../../..' . '/lib/public/Security/VerificationToken/InvalidTokenException.php', 'OCP\\Server' => __DIR__ . '/../../..' . '/lib/public/Server.php', + 'OCP\\ServerVersion' => __DIR__ . '/../../..' . '/lib/public/ServerVersion.php', 'OCP\\Session\\Exceptions\\SessionNotAvailableException' => __DIR__ . '/../../..' . '/lib/public/Session/Exceptions/SessionNotAvailableException.php', 'OCP\\Settings\\DeclarativeSettingsTypes' => __DIR__ . '/../../..' . '/lib/public/Settings/DeclarativeSettingsTypes.php', 'OCP\\Settings\\Events\\DeclarativeSettingsGetValueEvent' => __DIR__ . '/../../..' . '/lib/public/Settings/Events/DeclarativeSettingsGetValueEvent.php', diff --git a/lib/l10n/ar.js b/lib/l10n/ar.js index c5ac1254030..c816b91b655 100644 --- a/lib/l10n/ar.js +++ b/lib/l10n/ar.js @@ -157,19 +157,19 @@ OC.L10N.register( "%1$s shared »%2$s« with you and wants to add" : "%1$s شارك »%2$s« معك و يرغب في إضافة", "»%s« added a note to a file shared with you" : "»%s« أضاف ملاحظة لملفٍ سلفت مشاركته معك", "Passwords are enforced for link and mail shares" : "كلمة المرور لازمة للمشاركات عن طريق الروابط و الإيميل", - "SharedWith is not a valid user" : "SharedWith غير مقبول كمستخدِم", - "SharedWith is not a valid group" : "SharedWith غير مقبول كمجموعة", - "SharedWith should be empty" : "SharedWith يجب أن يكون فارغاً", - "SharedWith should not be empty" : "SharedWith يجب ألّا يكون فارغاً", - "SharedWith is not a valid circle" : "SharedWith ليس حلقة اتصال مقبولة", + "Share recipient is not a valid user" : "مُستلِم المشاركة ليس مستخدِماً صالحاً", + "Share recipient is not a valid group" : "مُستلِم المشاركة ليس مجموعةً صالحةً", + "Share recipient should be empty" : "مُستلِم المشاركة يجب أن يكون فارغاً", + "Share recipient should not be empty" : "مُستلِم المشاركة يجب ألّا يكون فارغاً", + "Share recipient is not a valid circle" : "مُستلِم المشاركة ليس حلقة اتصال صالحة", "Unknown share type" : "نوع مشاركة غير معروف", - "SharedBy should be set" : "SharedBy يجب تعيينه", + "Share initiator must be set" : "مُنشِيء المشاركة يجب تعيينه", "Cannot share with yourself" : "لا يمكنك المشاركة مع نفسك", - "Path should be set" : "يجب تعيين المسار", - "Path should be either a file or a folder" : "يجب أن يكون المسار إمّا ملفاً أو مجلداً", + "Shared path must be set" : "مسار المشاركة يجب تعيينه", + "Shared path must be either a file or a folder" : "مسار المشاركة يجب أن يكون إمّا ملفاً أو مجلداً", "You cannot share your root folder" : "لا يمكنك مشاركة مجلدك الجذر", "You are not allowed to share %s" : "أنت غير مسموح لك أن تشارك %s", - "A share requires permissions" : "مشاركة تتطلب إذونات", + "Valid permissions are required for sharing" : "المشاركة تلزمها أذونات صالحة", "Cannot increase permissions of %s" : "لا يمكن زيادة أذونات %s", "Shares need at least read permissions" : "المشاركات تتطلب في الحد الأدنى إذناً بالقراءة", "Files cannot be shared with delete permissions" : "لا يمكن مشاركة ملفات بأذونات حذفٍ", @@ -196,7 +196,7 @@ OC.L10N.register( "Cannot disable sending the password by Talk without setting a new password" : "لا يمكن تعطيل إرسال كلمة المرور عن طريق برنامج \"المحادثة\" Talk بدون تعيين كلمة مرور جديدة", "Share provider does not support accepting" : "مزود المشاركة لا يدعم خاصية خيار القبول", "Cannot change target of link share" : "لا يمكن تغيير مَقصِد مشاركة الرابط", - "Invalid recipient" : "المستلم غير مقبول", + "Invalid share recipient" : "مُستلِم المشاركة غير صالح", "Group \"%s\" does not exist" : "المجموعة \"%s\" غير موجودة", "The requested share does not exist anymore" : "المشاركة المطلوبة لم تعد موجودةً", "The requested share comes from a disabled user" : "المشاركة المطلوبة آتية من مستخدم معطل.", diff --git a/lib/l10n/ar.json b/lib/l10n/ar.json index f497a28885d..ff43625e64d 100644 --- a/lib/l10n/ar.json +++ b/lib/l10n/ar.json @@ -155,19 +155,19 @@ "%1$s shared »%2$s« with you and wants to add" : "%1$s شارك »%2$s« معك و يرغب في إضافة", "»%s« added a note to a file shared with you" : "»%s« أضاف ملاحظة لملفٍ سلفت مشاركته معك", "Passwords are enforced for link and mail shares" : "كلمة المرور لازمة للمشاركات عن طريق الروابط و الإيميل", - "SharedWith is not a valid user" : "SharedWith غير مقبول كمستخدِم", - "SharedWith is not a valid group" : "SharedWith غير مقبول كمجموعة", - "SharedWith should be empty" : "SharedWith يجب أن يكون فارغاً", - "SharedWith should not be empty" : "SharedWith يجب ألّا يكون فارغاً", - "SharedWith is not a valid circle" : "SharedWith ليس حلقة اتصال مقبولة", + "Share recipient is not a valid user" : "مُستلِم المشاركة ليس مستخدِماً صالحاً", + "Share recipient is not a valid group" : "مُستلِم المشاركة ليس مجموعةً صالحةً", + "Share recipient should be empty" : "مُستلِم المشاركة يجب أن يكون فارغاً", + "Share recipient should not be empty" : "مُستلِم المشاركة يجب ألّا يكون فارغاً", + "Share recipient is not a valid circle" : "مُستلِم المشاركة ليس حلقة اتصال صالحة", "Unknown share type" : "نوع مشاركة غير معروف", - "SharedBy should be set" : "SharedBy يجب تعيينه", + "Share initiator must be set" : "مُنشِيء المشاركة يجب تعيينه", "Cannot share with yourself" : "لا يمكنك المشاركة مع نفسك", - "Path should be set" : "يجب تعيين المسار", - "Path should be either a file or a folder" : "يجب أن يكون المسار إمّا ملفاً أو مجلداً", + "Shared path must be set" : "مسار المشاركة يجب تعيينه", + "Shared path must be either a file or a folder" : "مسار المشاركة يجب أن يكون إمّا ملفاً أو مجلداً", "You cannot share your root folder" : "لا يمكنك مشاركة مجلدك الجذر", "You are not allowed to share %s" : "أنت غير مسموح لك أن تشارك %s", - "A share requires permissions" : "مشاركة تتطلب إذونات", + "Valid permissions are required for sharing" : "المشاركة تلزمها أذونات صالحة", "Cannot increase permissions of %s" : "لا يمكن زيادة أذونات %s", "Shares need at least read permissions" : "المشاركات تتطلب في الحد الأدنى إذناً بالقراءة", "Files cannot be shared with delete permissions" : "لا يمكن مشاركة ملفات بأذونات حذفٍ", @@ -194,7 +194,7 @@ "Cannot disable sending the password by Talk without setting a new password" : "لا يمكن تعطيل إرسال كلمة المرور عن طريق برنامج \"المحادثة\" Talk بدون تعيين كلمة مرور جديدة", "Share provider does not support accepting" : "مزود المشاركة لا يدعم خاصية خيار القبول", "Cannot change target of link share" : "لا يمكن تغيير مَقصِد مشاركة الرابط", - "Invalid recipient" : "المستلم غير مقبول", + "Invalid share recipient" : "مُستلِم المشاركة غير صالح", "Group \"%s\" does not exist" : "المجموعة \"%s\" غير موجودة", "The requested share does not exist anymore" : "المشاركة المطلوبة لم تعد موجودةً", "The requested share comes from a disabled user" : "المشاركة المطلوبة آتية من مستخدم معطل.", diff --git a/lib/l10n/cs.js b/lib/l10n/cs.js index d777b143268..f8b41915ae6 100644 --- a/lib/l10n/cs.js +++ b/lib/l10n/cs.js @@ -159,7 +159,6 @@ OC.L10N.register( "Sharing is disabled for you" : "Máte zakázáno sdílet", "Cannot share with the share owner" : "Nelze sdílet zpět vlastníkovi sdílení", "Cannot change share type" : "Nelze změnit typ sdílení", - "Invalid recipient" : "Neplatný příjemce", "Group \"%s\" does not exist" : "Skupina \"%s\" neexistuje", "The requested share does not exist anymore" : "Požadované sdílení už neexistuje", "The requested share comes from a disabled user" : "Požadované sdílení pochází od vypnutého uživatelského účtu", diff --git a/lib/l10n/cs.json b/lib/l10n/cs.json index 56be78c340f..cc1349b0bbb 100644 --- a/lib/l10n/cs.json +++ b/lib/l10n/cs.json @@ -157,7 +157,6 @@ "Sharing is disabled for you" : "Máte zakázáno sdílet", "Cannot share with the share owner" : "Nelze sdílet zpět vlastníkovi sdílení", "Cannot change share type" : "Nelze změnit typ sdílení", - "Invalid recipient" : "Neplatný příjemce", "Group \"%s\" does not exist" : "Skupina \"%s\" neexistuje", "The requested share does not exist anymore" : "Požadované sdílení už neexistuje", "The requested share comes from a disabled user" : "Požadované sdílení pochází od vypnutého uživatelského účtu", diff --git a/lib/l10n/de.js b/lib/l10n/de.js index 6f99a7c5fde..4ac9f7400db 100644 --- a/lib/l10n/de.js +++ b/lib/l10n/de.js @@ -157,19 +157,10 @@ OC.L10N.register( "%1$s shared »%2$s« with you and wants to add" : "%1$shat »%2$s« mit dir geteilt und möchte folgendes hinzufügen", "»%s« added a note to a file shared with you" : "»%s« hat eine Bemerkung zu einer mit dir geteilten Datei hinzugefügt", "Passwords are enforced for link and mail shares" : "Für Link- und E-Mail-Freigaben werden Passwörter erzwungen", - "SharedWith is not a valid user" : "SharedWith ist kein gültiger Benutzer", - "SharedWith is not a valid group" : "SharedWith ist keine gültige Gruppe", - "SharedWith should be empty" : "SharedWith sollte leer sein", - "SharedWith should not be empty" : "SharedWith sollte nicht leer sein", - "SharedWith is not a valid circle" : "SharedWith ist kein gültiger Kreis", "Unknown share type" : "Unbekannter Freigabetyp", - "SharedBy should be set" : "SharedBy sollte gesetzt sein", "Cannot share with yourself" : "Es kann nicht mit dir selbst geteilt werden", - "Path should be set" : "Pfad sollte festgelegt werden", - "Path should be either a file or a folder" : "Der Pfad muss entweder eine Datei oder ein Ordner sein", "You cannot share your root folder" : "Du kannst deinen Stammordner nicht freigeben", "You are not allowed to share %s" : "Du bist nicht berechtigt, %s zu teilen.", - "A share requires permissions" : "Eine Freigabe erfordert Berechtigungen", "Cannot increase permissions of %s" : "Kann die Berechtigungen von %s nicht erhöhen", "Shares need at least read permissions" : "Freigaben benötigen mindestens Leseberechtigungen", "Files cannot be shared with delete permissions" : "Dateien mit Lösch-Berechtigungen können nicht geteilt werden", @@ -196,7 +187,6 @@ OC.L10N.register( "Cannot disable sending the password by Talk without setting a new password" : "Das Senden des Passworts durch Talk kann nicht deaktiviert werden, ohne ein neues Passwort festzulegen", "Share provider does not support accepting" : "Der Teilen-Anbieter unterstützt das Akzeptieren nicht", "Cannot change target of link share" : "Das Ziel der Linkfreigabe kann nicht geändert werden", - "Invalid recipient" : "Ungültiger Empfänger", "Group \"%s\" does not exist" : "Gruppe \"%s\" existiert nicht", "The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr", "The requested share comes from a disabled user" : "Die angeforderte Freigabe stammt von einem deaktivierten Benutzer", diff --git a/lib/l10n/de.json b/lib/l10n/de.json index 6d4d0005ad2..318cf689751 100644 --- a/lib/l10n/de.json +++ b/lib/l10n/de.json @@ -155,19 +155,10 @@ "%1$s shared »%2$s« with you and wants to add" : "%1$shat »%2$s« mit dir geteilt und möchte folgendes hinzufügen", "»%s« added a note to a file shared with you" : "»%s« hat eine Bemerkung zu einer mit dir geteilten Datei hinzugefügt", "Passwords are enforced for link and mail shares" : "Für Link- und E-Mail-Freigaben werden Passwörter erzwungen", - "SharedWith is not a valid user" : "SharedWith ist kein gültiger Benutzer", - "SharedWith is not a valid group" : "SharedWith ist keine gültige Gruppe", - "SharedWith should be empty" : "SharedWith sollte leer sein", - "SharedWith should not be empty" : "SharedWith sollte nicht leer sein", - "SharedWith is not a valid circle" : "SharedWith ist kein gültiger Kreis", "Unknown share type" : "Unbekannter Freigabetyp", - "SharedBy should be set" : "SharedBy sollte gesetzt sein", "Cannot share with yourself" : "Es kann nicht mit dir selbst geteilt werden", - "Path should be set" : "Pfad sollte festgelegt werden", - "Path should be either a file or a folder" : "Der Pfad muss entweder eine Datei oder ein Ordner sein", "You cannot share your root folder" : "Du kannst deinen Stammordner nicht freigeben", "You are not allowed to share %s" : "Du bist nicht berechtigt, %s zu teilen.", - "A share requires permissions" : "Eine Freigabe erfordert Berechtigungen", "Cannot increase permissions of %s" : "Kann die Berechtigungen von %s nicht erhöhen", "Shares need at least read permissions" : "Freigaben benötigen mindestens Leseberechtigungen", "Files cannot be shared with delete permissions" : "Dateien mit Lösch-Berechtigungen können nicht geteilt werden", @@ -194,7 +185,6 @@ "Cannot disable sending the password by Talk without setting a new password" : "Das Senden des Passworts durch Talk kann nicht deaktiviert werden, ohne ein neues Passwort festzulegen", "Share provider does not support accepting" : "Der Teilen-Anbieter unterstützt das Akzeptieren nicht", "Cannot change target of link share" : "Das Ziel der Linkfreigabe kann nicht geändert werden", - "Invalid recipient" : "Ungültiger Empfänger", "Group \"%s\" does not exist" : "Gruppe \"%s\" existiert nicht", "The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr", "The requested share comes from a disabled user" : "Die angeforderte Freigabe stammt von einem deaktivierten Benutzer", diff --git a/lib/l10n/de_DE.js b/lib/l10n/de_DE.js index 03186a62a0f..617cf1ec00d 100644 --- a/lib/l10n/de_DE.js +++ b/lib/l10n/de_DE.js @@ -157,19 +157,19 @@ OC.L10N.register( "%1$s shared »%2$s« with you and wants to add" : "%1$s hat »%2$s« mit Ihnen geteilt und möchte folgendes hinzufügen", "»%s« added a note to a file shared with you" : "»%s« hat eine Bemerkung zu einer mit Ihnen geteilten Datei hinzugefügt", "Passwords are enforced for link and mail shares" : "Für Link- und E-Mail-Freigaben werden Passwörter erzwungen", - "SharedWith is not a valid user" : "SharedWith ist kein gültiger Benutzer", - "SharedWith is not a valid group" : "SharedWith ist keine gültige Gruppe", - "SharedWith should be empty" : "SharedWith sollte leer sein", - "SharedWith should not be empty" : "SharedWith sollte nicht leer sein", - "SharedWith is not a valid circle" : "SharedWith ist kein gültiger Kreis", + "Share recipient is not a valid user" : "Freigabeempfänger ist kein gültiger Benutzer", + "Share recipient is not a valid group" : "Freigabeempfänger ist keine gültige Gruppe", + "Share recipient should be empty" : "Freigabeempfänger sollte leer sein", + "Share recipient should not be empty" : "Freigabeempfänger sollte nicht leer sein", + "Share recipient is not a valid circle" : "Freigabeempfänger ist kein gültiger Kreis", "Unknown share type" : "Unbekannter Freigabetyp", - "SharedBy should be set" : "SharedBy sollte gesetzt sein", + "Share initiator must be set" : "Freigabeinitiator muss festgelegt sein", "Cannot share with yourself" : "Es kann nicht mit Ihnen selbst geteilt werden", - "Path should be set" : "Pfad sollte festgelegt werden", - "Path should be either a file or a folder" : "Der Pfad muss entweder eine Datei oder ein Ordner sein", + "Shared path must be set" : "Der freigegebene Pfad muss festgelegt werden", + "Shared path must be either a file or a folder" : "Der freigegebene Pfad muss entweder eine Datei oder ein Ordner sein", "You cannot share your root folder" : "Sie können Ihren Stammordner nicht freigeben", "You are not allowed to share %s" : "Die Freigabe von %s ist Ihnen nicht erlaubt", - "A share requires permissions" : "Eine Freigabe erfordert Berechtigungen", + "Valid permissions are required for sharing" : "Zum Teilen sind gültige Berechtigungen erforderlich", "Cannot increase permissions of %s" : "Kann die Berechtigungen von %s nicht erhöhen", "Shares need at least read permissions" : "Freigaben benötigen mindestens Leseberechtigungen", "Files cannot be shared with delete permissions" : "Dateien mit Lösch-Berechtigungen können nicht geteilt werden", @@ -196,7 +196,7 @@ OC.L10N.register( "Cannot disable sending the password by Talk without setting a new password" : "Das Senden des Passworts durch Talk kann nicht deaktiviert werden, ohne ein neues Passwort festzulegen", "Share provider does not support accepting" : "Der Teilen-Anbieter unterstützt das Akzeptieren nicht", "Cannot change target of link share" : "Das Ziel der Linkfreigabe kann nicht geändert werden", - "Invalid recipient" : "Ungültiger Empfänger", + "Invalid share recipient" : "Ungültiger Freigabeempfänger", "Group \"%s\" does not exist" : "Gruppe \"%s\" existiert nicht", "The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr", "The requested share comes from a disabled user" : "Die angeforderte Freigabe stammt von einem deaktivierten Benutzer", diff --git a/lib/l10n/de_DE.json b/lib/l10n/de_DE.json index 9315a4f01db..7a5b1f5be7c 100644 --- a/lib/l10n/de_DE.json +++ b/lib/l10n/de_DE.json @@ -155,19 +155,19 @@ "%1$s shared »%2$s« with you and wants to add" : "%1$s hat »%2$s« mit Ihnen geteilt und möchte folgendes hinzufügen", "»%s« added a note to a file shared with you" : "»%s« hat eine Bemerkung zu einer mit Ihnen geteilten Datei hinzugefügt", "Passwords are enforced for link and mail shares" : "Für Link- und E-Mail-Freigaben werden Passwörter erzwungen", - "SharedWith is not a valid user" : "SharedWith ist kein gültiger Benutzer", - "SharedWith is not a valid group" : "SharedWith ist keine gültige Gruppe", - "SharedWith should be empty" : "SharedWith sollte leer sein", - "SharedWith should not be empty" : "SharedWith sollte nicht leer sein", - "SharedWith is not a valid circle" : "SharedWith ist kein gültiger Kreis", + "Share recipient is not a valid user" : "Freigabeempfänger ist kein gültiger Benutzer", + "Share recipient is not a valid group" : "Freigabeempfänger ist keine gültige Gruppe", + "Share recipient should be empty" : "Freigabeempfänger sollte leer sein", + "Share recipient should not be empty" : "Freigabeempfänger sollte nicht leer sein", + "Share recipient is not a valid circle" : "Freigabeempfänger ist kein gültiger Kreis", "Unknown share type" : "Unbekannter Freigabetyp", - "SharedBy should be set" : "SharedBy sollte gesetzt sein", + "Share initiator must be set" : "Freigabeinitiator muss festgelegt sein", "Cannot share with yourself" : "Es kann nicht mit Ihnen selbst geteilt werden", - "Path should be set" : "Pfad sollte festgelegt werden", - "Path should be either a file or a folder" : "Der Pfad muss entweder eine Datei oder ein Ordner sein", + "Shared path must be set" : "Der freigegebene Pfad muss festgelegt werden", + "Shared path must be either a file or a folder" : "Der freigegebene Pfad muss entweder eine Datei oder ein Ordner sein", "You cannot share your root folder" : "Sie können Ihren Stammordner nicht freigeben", "You are not allowed to share %s" : "Die Freigabe von %s ist Ihnen nicht erlaubt", - "A share requires permissions" : "Eine Freigabe erfordert Berechtigungen", + "Valid permissions are required for sharing" : "Zum Teilen sind gültige Berechtigungen erforderlich", "Cannot increase permissions of %s" : "Kann die Berechtigungen von %s nicht erhöhen", "Shares need at least read permissions" : "Freigaben benötigen mindestens Leseberechtigungen", "Files cannot be shared with delete permissions" : "Dateien mit Lösch-Berechtigungen können nicht geteilt werden", @@ -194,7 +194,7 @@ "Cannot disable sending the password by Talk without setting a new password" : "Das Senden des Passworts durch Talk kann nicht deaktiviert werden, ohne ein neues Passwort festzulegen", "Share provider does not support accepting" : "Der Teilen-Anbieter unterstützt das Akzeptieren nicht", "Cannot change target of link share" : "Das Ziel der Linkfreigabe kann nicht geändert werden", - "Invalid recipient" : "Ungültiger Empfänger", + "Invalid share recipient" : "Ungültiger Freigabeempfänger", "Group \"%s\" does not exist" : "Gruppe \"%s\" existiert nicht", "The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr", "The requested share comes from a disabled user" : "Die angeforderte Freigabe stammt von einem deaktivierten Benutzer", diff --git a/lib/l10n/en_GB.js b/lib/l10n/en_GB.js index 0d2e6d74fdf..ce510473935 100644 --- a/lib/l10n/en_GB.js +++ b/lib/l10n/en_GB.js @@ -157,19 +157,10 @@ OC.L10N.register( "%1$s shared »%2$s« with you and wants to add" : "%1$s shared »%2$s« with you and wants to add", "»%s« added a note to a file shared with you" : "»%s« added a note to a file shared with you", "Passwords are enforced for link and mail shares" : "Passwords are enforced for link and mail shares", - "SharedWith is not a valid user" : "SharedWith is not a valid user", - "SharedWith is not a valid group" : "SharedWith is not a valid group", - "SharedWith should be empty" : "SharedWith should be empty", - "SharedWith should not be empty" : "SharedWith should not be empty", - "SharedWith is not a valid circle" : "SharedWith is not a valid circle", "Unknown share type" : "Unknown share type", - "SharedBy should be set" : "SharedBy should be set", "Cannot share with yourself" : "Cannot share with yourself", - "Path should be set" : "Path should be set", - "Path should be either a file or a folder" : "Path should be either a file or a folder", "You cannot share your root folder" : "You cannot share your root folder", "You are not allowed to share %s" : "You are not allowed to share %s", - "A share requires permissions" : "A share requires permissions", "Cannot increase permissions of %s" : "Cannot increase permissions of %s", "Shares need at least read permissions" : "Shares need at least read permissions", "Files cannot be shared with delete permissions" : "Files cannot be shared with delete permissions", @@ -196,7 +187,6 @@ OC.L10N.register( "Cannot disable sending the password by Talk without setting a new password" : "Cannot disable sending the password by Talk without setting a new password", "Share provider does not support accepting" : "Share provider does not support accepting", "Cannot change target of link share" : "Cannot change target of link share", - "Invalid recipient" : "Invalid recipient", "Group \"%s\" does not exist" : "Group \"%s\" does not exist", "The requested share does not exist anymore" : "The requested share does not exist any more", "The requested share comes from a disabled user" : "The requested share comes from a disabled user", diff --git a/lib/l10n/en_GB.json b/lib/l10n/en_GB.json index f7055b9f110..814fe3e56b5 100644 --- a/lib/l10n/en_GB.json +++ b/lib/l10n/en_GB.json @@ -155,19 +155,10 @@ "%1$s shared »%2$s« with you and wants to add" : "%1$s shared »%2$s« with you and wants to add", "»%s« added a note to a file shared with you" : "»%s« added a note to a file shared with you", "Passwords are enforced for link and mail shares" : "Passwords are enforced for link and mail shares", - "SharedWith is not a valid user" : "SharedWith is not a valid user", - "SharedWith is not a valid group" : "SharedWith is not a valid group", - "SharedWith should be empty" : "SharedWith should be empty", - "SharedWith should not be empty" : "SharedWith should not be empty", - "SharedWith is not a valid circle" : "SharedWith is not a valid circle", "Unknown share type" : "Unknown share type", - "SharedBy should be set" : "SharedBy should be set", "Cannot share with yourself" : "Cannot share with yourself", - "Path should be set" : "Path should be set", - "Path should be either a file or a folder" : "Path should be either a file or a folder", "You cannot share your root folder" : "You cannot share your root folder", "You are not allowed to share %s" : "You are not allowed to share %s", - "A share requires permissions" : "A share requires permissions", "Cannot increase permissions of %s" : "Cannot increase permissions of %s", "Shares need at least read permissions" : "Shares need at least read permissions", "Files cannot be shared with delete permissions" : "Files cannot be shared with delete permissions", @@ -194,7 +185,6 @@ "Cannot disable sending the password by Talk without setting a new password" : "Cannot disable sending the password by Talk without setting a new password", "Share provider does not support accepting" : "Share provider does not support accepting", "Cannot change target of link share" : "Cannot change target of link share", - "Invalid recipient" : "Invalid recipient", "Group \"%s\" does not exist" : "Group \"%s\" does not exist", "The requested share does not exist anymore" : "The requested share does not exist any more", "The requested share comes from a disabled user" : "The requested share comes from a disabled user", diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js index 00970b4e600..ab21f2feabe 100644 --- a/lib/l10n/fr.js +++ b/lib/l10n/fr.js @@ -126,6 +126,7 @@ OC.L10N.register( "Headline" : "Titre", "Organisation" : "Organisme", "Role" : "Fonction", + "Pronouns" : "Pronoms", "Unknown account" : "Compte inconnu", "Additional settings" : "Paramètres supplémentaires", "Enter the database Login and name for %s" : "Saisissez l'identifiant et le nom de la base de données pour %s", diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json index 0efc2236147..49041f5132f 100644 --- a/lib/l10n/fr.json +++ b/lib/l10n/fr.json @@ -124,6 +124,7 @@ "Headline" : "Titre", "Organisation" : "Organisme", "Role" : "Fonction", + "Pronouns" : "Pronoms", "Unknown account" : "Compte inconnu", "Additional settings" : "Paramètres supplémentaires", "Enter the database Login and name for %s" : "Saisissez l'identifiant et le nom de la base de données pour %s", diff --git a/lib/l10n/ga.js b/lib/l10n/ga.js index 292002805d1..e8f516c426e 100644 --- a/lib/l10n/ga.js +++ b/lib/l10n/ga.js @@ -157,19 +157,19 @@ OC.L10N.register( "%1$s shared »%2$s« with you and wants to add" : "%1$s shared »%2$s« with you and wants to add", "»%s« added a note to a file shared with you" : "»%s« added a note to a file shared with you", "Passwords are enforced for link and mail shares" : "Cuirtear pasfhocail i bhfeidhm le haghaidh naisc agus scaireanna ríomhphoist", - "SharedWith is not a valid user" : "Ní úsáideoir bailí é SharedWith", - "SharedWith is not a valid group" : "Ní grúpa bailí é SharedW", - "SharedWith should be empty" : "Ba chóir go mbeadh SharedWith folamh", - "SharedWith should not be empty" : "Níor cheart go mbeadh SharedWith folamh", - "SharedWith is not a valid circle" : "Ní ciorcal bailí é SharedW", + "Share recipient is not a valid user" : "Ní úsáideoir bailí é faighteoir scaireanna", + "Share recipient is not a valid group" : "Ní grúpa bailí é faighteoir scaireanna", + "Share recipient should be empty" : "Ba chóir go mbeadh faighteoir scaireanna folamh", + "Share recipient should not be empty" : "Níor cheart go mbeadh faighteoir scaireanna folamh", + "Share recipient is not a valid circle" : "Ní ciorcal bailí é an faighteoir comhroinnte", "Unknown share type" : "Cineál scaire anaithnid", - "SharedBy should be set" : "Ba cheart SharedBy a shocrú", + "Share initiator must be set" : "Ní mór thionscnóir scaireanna a shocrú", "Cannot share with yourself" : "Ní féidir a roinnt leat féin", - "Path should be set" : "Ba chóir cosán a shocrú", - "Path should be either a file or a folder" : "Ba chóir go mbeadh an cosán ina chomhad nó ina fhillteán", + "Shared path must be set" : "Ní mór cosán roinnte a shocrú", + "Shared path must be either a file or a folder" : "Ní mór go mbeadh an cosán roinnte ina chomhad nó ina fhillteán", "You cannot share your root folder" : "Ní féidir leat do fhréamhfhillteán a roinnt", "You are not allowed to share %s" : "Níl cead agat %s a roinnt", - "A share requires permissions" : "Teastaíonn ceadanna le scair", + "Valid permissions are required for sharing" : "Teastaíonn ceadanna bailí chun comhroinnt", "Cannot increase permissions of %s" : "Ní féidir ceadanna %s a mhéadú", "Shares need at least read permissions" : "Teastaíonn ceadanna léite ar a laghad ó scaireanna", "Files cannot be shared with delete permissions" : "Ní féidir comhaid a roinnt le ceadanna scriosta", @@ -196,7 +196,7 @@ OC.L10N.register( "Cannot disable sending the password by Talk without setting a new password" : "Ní féidir seoladh an fhocail faire le Talk a dhíchumasú gan focal faire nua a shocrú", "Share provider does not support accepting" : "Ní thacaíonn soláthraí scaireanna le glacadh", "Cannot change target of link share" : "Ní féidir an sprioc maidir le comhroinnt naisc a athrú", - "Invalid recipient" : "Faighteoir neamhbhailí", + "Invalid share recipient" : "Faighteoir scaireanna neamhbhailí", "Group \"%s\" does not exist" : "Níl grúpa \"%s\" ann", "The requested share does not exist anymore" : "Níl an sciar iarrtha ann a thuilleadh", "The requested share comes from a disabled user" : "Tagann an sciar iarrtha ó úsáideoir díchumasaithe", diff --git a/lib/l10n/ga.json b/lib/l10n/ga.json index a47c324cc0c..497be4e3326 100644 --- a/lib/l10n/ga.json +++ b/lib/l10n/ga.json @@ -155,19 +155,19 @@ "%1$s shared »%2$s« with you and wants to add" : "%1$s shared »%2$s« with you and wants to add", "»%s« added a note to a file shared with you" : "»%s« added a note to a file shared with you", "Passwords are enforced for link and mail shares" : "Cuirtear pasfhocail i bhfeidhm le haghaidh naisc agus scaireanna ríomhphoist", - "SharedWith is not a valid user" : "Ní úsáideoir bailí é SharedWith", - "SharedWith is not a valid group" : "Ní grúpa bailí é SharedW", - "SharedWith should be empty" : "Ba chóir go mbeadh SharedWith folamh", - "SharedWith should not be empty" : "Níor cheart go mbeadh SharedWith folamh", - "SharedWith is not a valid circle" : "Ní ciorcal bailí é SharedW", + "Share recipient is not a valid user" : "Ní úsáideoir bailí é faighteoir scaireanna", + "Share recipient is not a valid group" : "Ní grúpa bailí é faighteoir scaireanna", + "Share recipient should be empty" : "Ba chóir go mbeadh faighteoir scaireanna folamh", + "Share recipient should not be empty" : "Níor cheart go mbeadh faighteoir scaireanna folamh", + "Share recipient is not a valid circle" : "Ní ciorcal bailí é an faighteoir comhroinnte", "Unknown share type" : "Cineál scaire anaithnid", - "SharedBy should be set" : "Ba cheart SharedBy a shocrú", + "Share initiator must be set" : "Ní mór thionscnóir scaireanna a shocrú", "Cannot share with yourself" : "Ní féidir a roinnt leat féin", - "Path should be set" : "Ba chóir cosán a shocrú", - "Path should be either a file or a folder" : "Ba chóir go mbeadh an cosán ina chomhad nó ina fhillteán", + "Shared path must be set" : "Ní mór cosán roinnte a shocrú", + "Shared path must be either a file or a folder" : "Ní mór go mbeadh an cosán roinnte ina chomhad nó ina fhillteán", "You cannot share your root folder" : "Ní féidir leat do fhréamhfhillteán a roinnt", "You are not allowed to share %s" : "Níl cead agat %s a roinnt", - "A share requires permissions" : "Teastaíonn ceadanna le scair", + "Valid permissions are required for sharing" : "Teastaíonn ceadanna bailí chun comhroinnt", "Cannot increase permissions of %s" : "Ní féidir ceadanna %s a mhéadú", "Shares need at least read permissions" : "Teastaíonn ceadanna léite ar a laghad ó scaireanna", "Files cannot be shared with delete permissions" : "Ní féidir comhaid a roinnt le ceadanna scriosta", @@ -194,7 +194,7 @@ "Cannot disable sending the password by Talk without setting a new password" : "Ní féidir seoladh an fhocail faire le Talk a dhíchumasú gan focal faire nua a shocrú", "Share provider does not support accepting" : "Ní thacaíonn soláthraí scaireanna le glacadh", "Cannot change target of link share" : "Ní féidir an sprioc maidir le comhroinnt naisc a athrú", - "Invalid recipient" : "Faighteoir neamhbhailí", + "Invalid share recipient" : "Faighteoir scaireanna neamhbhailí", "Group \"%s\" does not exist" : "Níl grúpa \"%s\" ann", "The requested share does not exist anymore" : "Níl an sciar iarrtha ann a thuilleadh", "The requested share comes from a disabled user" : "Tagann an sciar iarrtha ó úsáideoir díchumasaithe", diff --git a/lib/l10n/gl.js b/lib/l10n/gl.js index 045a68e335e..92037444a28 100644 --- a/lib/l10n/gl.js +++ b/lib/l10n/gl.js @@ -157,19 +157,19 @@ OC.L10N.register( "%1$s shared »%2$s« with you and wants to add" : "%1$s compartiu «%2$s» con Vde. e quere engadir", "»%s« added a note to a file shared with you" : "«%s» engadiu unha nota a un ficheiro compartido con Vde.", "Passwords are enforced for link and mail shares" : "É obrigatorio o emprego de contrasinais para compartir por ligazón e por correo", - "SharedWith is not a valid user" : "O destinatario da compartición non é un usuario válido", - "SharedWith is not a valid group" : "O destinatario da compartición non é un grupo válido", - "SharedWith should be empty" : "O destinatario da compartición debe estar baleiro", - "SharedWith should not be empty" : "O destinatario da compartición non debe estar baleiro", - "SharedWith is not a valid circle" : "O destinatario da compartición non é un círculo válido", + "Share recipient is not a valid user" : "O destinatario da compartición non é un usuario válido", + "Share recipient is not a valid group" : "O destinatario da compartición non é un grupo válido", + "Share recipient should be empty" : "O destinatario da compartición debe estar baleiro", + "Share recipient should not be empty" : "O destinatario da compartición non debe estar baleiro", + "Share recipient is not a valid circle" : "O destinatario da compartición non é un círculo válido", "Unknown share type" : "Tipo descoñecido de compartición", - "SharedBy should be set" : "Debe estar definido quen inicia a compartición", + "Share initiator must be set" : "Debe estar definido quen inicia a compartición", "Cannot share with yourself" : "Non é posíbel compartir con un mesmo.", - "Path should be set" : "A ruta compartida debe estar definida", - "Path should be either a file or a folder" : "A ruta compartida debe ser a un ficheiro ou un cartafol", + "Shared path must be set" : "Debe estar definida a ruta compartida", + "Shared path must be either a file or a folder" : "A ruta compartida debe ser a un ficheiro ou un cartafol", "You cannot share your root folder" : "Non pode compartir o seu cartafol raíz", "You are not allowed to share %s" : "Non ten permiso para compartir %s", - "A share requires permissions" : "Requírense permisos válidos para compartir", + "Valid permissions are required for sharing" : "Precisanse permisos válidos para compartir", "Cannot increase permissions of %s" : "Non é posíbel incrementar os permisos de %s", "Shares need at least read permissions" : "As comparticións necesitan polo menos permisos de lectura", "Files cannot be shared with delete permissions" : "Non é posíbel compartir ficheiros con permisos de eliminación", @@ -196,7 +196,7 @@ OC.L10N.register( "Cannot disable sending the password by Talk without setting a new password" : "Non é posíbel desactivar o envío do contrasinal por Talk sen definir un novo contrasinal", "Share provider does not support accepting" : "O provedor de comparticións non admite a aceptación", "Cannot change target of link share" : "Non é posíbel cambiar o destino da ligazón compartida", - "Invalid recipient" : "Destinatario de compartición incorrecto", + "Invalid share recipient" : "Destinatario de compartición incorrecto", "Group \"%s\" does not exist" : "O grupo «%s» non existe", "The requested share does not exist anymore" : "A compartición solicitada xa non existe", "The requested share comes from a disabled user" : "A compartición solicitada procede dun usuario desactivado", diff --git a/lib/l10n/gl.json b/lib/l10n/gl.json index f463fb0c1dd..3c2cccb0c62 100644 --- a/lib/l10n/gl.json +++ b/lib/l10n/gl.json @@ -155,19 +155,19 @@ "%1$s shared »%2$s« with you and wants to add" : "%1$s compartiu «%2$s» con Vde. e quere engadir", "»%s« added a note to a file shared with you" : "«%s» engadiu unha nota a un ficheiro compartido con Vde.", "Passwords are enforced for link and mail shares" : "É obrigatorio o emprego de contrasinais para compartir por ligazón e por correo", - "SharedWith is not a valid user" : "O destinatario da compartición non é un usuario válido", - "SharedWith is not a valid group" : "O destinatario da compartición non é un grupo válido", - "SharedWith should be empty" : "O destinatario da compartición debe estar baleiro", - "SharedWith should not be empty" : "O destinatario da compartición non debe estar baleiro", - "SharedWith is not a valid circle" : "O destinatario da compartición non é un círculo válido", + "Share recipient is not a valid user" : "O destinatario da compartición non é un usuario válido", + "Share recipient is not a valid group" : "O destinatario da compartición non é un grupo válido", + "Share recipient should be empty" : "O destinatario da compartición debe estar baleiro", + "Share recipient should not be empty" : "O destinatario da compartición non debe estar baleiro", + "Share recipient is not a valid circle" : "O destinatario da compartición non é un círculo válido", "Unknown share type" : "Tipo descoñecido de compartición", - "SharedBy should be set" : "Debe estar definido quen inicia a compartición", + "Share initiator must be set" : "Debe estar definido quen inicia a compartición", "Cannot share with yourself" : "Non é posíbel compartir con un mesmo.", - "Path should be set" : "A ruta compartida debe estar definida", - "Path should be either a file or a folder" : "A ruta compartida debe ser a un ficheiro ou un cartafol", + "Shared path must be set" : "Debe estar definida a ruta compartida", + "Shared path must be either a file or a folder" : "A ruta compartida debe ser a un ficheiro ou un cartafol", "You cannot share your root folder" : "Non pode compartir o seu cartafol raíz", "You are not allowed to share %s" : "Non ten permiso para compartir %s", - "A share requires permissions" : "Requírense permisos válidos para compartir", + "Valid permissions are required for sharing" : "Precisanse permisos válidos para compartir", "Cannot increase permissions of %s" : "Non é posíbel incrementar os permisos de %s", "Shares need at least read permissions" : "As comparticións necesitan polo menos permisos de lectura", "Files cannot be shared with delete permissions" : "Non é posíbel compartir ficheiros con permisos de eliminación", @@ -194,7 +194,7 @@ "Cannot disable sending the password by Talk without setting a new password" : "Non é posíbel desactivar o envío do contrasinal por Talk sen definir un novo contrasinal", "Share provider does not support accepting" : "O provedor de comparticións non admite a aceptación", "Cannot change target of link share" : "Non é posíbel cambiar o destino da ligazón compartida", - "Invalid recipient" : "Destinatario de compartición incorrecto", + "Invalid share recipient" : "Destinatario de compartición incorrecto", "Group \"%s\" does not exist" : "O grupo «%s» non existe", "The requested share does not exist anymore" : "A compartición solicitada xa non existe", "The requested share comes from a disabled user" : "A compartición solicitada procede dun usuario desactivado", diff --git a/lib/l10n/ja.js b/lib/l10n/ja.js index f148fcadf4b..38a5170f443 100644 --- a/lib/l10n/ja.js +++ b/lib/l10n/ja.js @@ -156,19 +156,10 @@ OC.L10N.register( "%1$s shared »%2$s« with you and wants to add" : "%1$s shared »%2$s« with you and wants to add", "»%s« added a note to a file shared with you" : "»%s« があなたと共有しているファイルにノートを追加しました。 ", "Passwords are enforced for link and mail shares" : "リンクとメールの共有にパスワードが強制されます", - "SharedWith is not a valid user" : "SharedWithは有効なユーザーではありません", - "SharedWith is not a valid group" : "SharedWithは有効なグループではありません", - "SharedWith should be empty" : "SharedWithは空でなければなりません", - "SharedWith should not be empty" : "SharedWithは空にできません", - "SharedWith is not a valid circle" : "SharedWithは有効なサークルではありません", "Unknown share type" : "不明な共有タイプ", - "SharedBy should be set" : "SharedByを設定する必要があります", "Cannot share with yourself" : "自分自身とは共有できません", - "Path should be set" : "パスを設定する必要があります", - "Path should be either a file or a folder" : "パスは、ファイルまたはフォルダーのいずれかでなければなりません", "You cannot share your root folder" : "ルートルートフォルダーを共有することはできません", "You are not allowed to share %s" : "%s を共有することを許可されていません。", - "A share requires permissions" : "共有には権限が必要です", "Cannot increase permissions of %s" : "%sの権限を追加できません ", "Shares need at least read permissions" : "共有には少なくとも読み取り権限が必要です", "Files cannot be shared with delete permissions" : "削除権限付きでファイルを共有できません", @@ -195,7 +186,6 @@ OC.L10N.register( "Cannot disable sending the password by Talk without setting a new password" : "新しいパスワードを設定しないとTalkによるパスワード送信を無効にできません", "Share provider does not support accepting" : "共有プロバイダは受け入れをサポートしていません", "Cannot change target of link share" : "リンク共有のターゲットを変更できません", - "Invalid recipient" : "無効な受信者", "Group \"%s\" does not exist" : "グループ \"%s\" は存在しません", "The requested share does not exist anymore" : "この共有はもう存在しません。", "The requested share comes from a disabled user" : "要求された共有は無効化されたユーザーからのものです。", diff --git a/lib/l10n/ja.json b/lib/l10n/ja.json index 549e11415d3..ba30bf77d12 100644 --- a/lib/l10n/ja.json +++ b/lib/l10n/ja.json @@ -154,19 +154,10 @@ "%1$s shared »%2$s« with you and wants to add" : "%1$s shared »%2$s« with you and wants to add", "»%s« added a note to a file shared with you" : "»%s« があなたと共有しているファイルにノートを追加しました。 ", "Passwords are enforced for link and mail shares" : "リンクとメールの共有にパスワードが強制されます", - "SharedWith is not a valid user" : "SharedWithは有効なユーザーではありません", - "SharedWith is not a valid group" : "SharedWithは有効なグループではありません", - "SharedWith should be empty" : "SharedWithは空でなければなりません", - "SharedWith should not be empty" : "SharedWithは空にできません", - "SharedWith is not a valid circle" : "SharedWithは有効なサークルではありません", "Unknown share type" : "不明な共有タイプ", - "SharedBy should be set" : "SharedByを設定する必要があります", "Cannot share with yourself" : "自分自身とは共有できません", - "Path should be set" : "パスを設定する必要があります", - "Path should be either a file or a folder" : "パスは、ファイルまたはフォルダーのいずれかでなければなりません", "You cannot share your root folder" : "ルートルートフォルダーを共有することはできません", "You are not allowed to share %s" : "%s を共有することを許可されていません。", - "A share requires permissions" : "共有には権限が必要です", "Cannot increase permissions of %s" : "%sの権限を追加できません ", "Shares need at least read permissions" : "共有には少なくとも読み取り権限が必要です", "Files cannot be shared with delete permissions" : "削除権限付きでファイルを共有できません", @@ -193,7 +184,6 @@ "Cannot disable sending the password by Talk without setting a new password" : "新しいパスワードを設定しないとTalkによるパスワード送信を無効にできません", "Share provider does not support accepting" : "共有プロバイダは受け入れをサポートしていません", "Cannot change target of link share" : "リンク共有のターゲットを変更できません", - "Invalid recipient" : "無効な受信者", "Group \"%s\" does not exist" : "グループ \"%s\" は存在しません", "The requested share does not exist anymore" : "この共有はもう存在しません。", "The requested share comes from a disabled user" : "要求された共有は無効化されたユーザーからのものです。", diff --git a/lib/l10n/lv.js b/lib/l10n/lv.js index 2c8265343f7..b23ef66d742 100644 --- a/lib/l10n/lv.js +++ b/lib/l10n/lv.js @@ -56,6 +56,7 @@ OC.L10N.register( "Address" : "Adrese", "Profile picture" : "Profila attēls", "About" : "Par", + "Display name" : "Attēlojamais vārds", "Additional settings" : "Papildu iestatījumi", "Oracle connection could not be established" : "Nevar izveidot savienojumu ar Oracle", "Set an admin password." : "Iestatiet administratora paroli.", diff --git a/lib/l10n/lv.json b/lib/l10n/lv.json index 6ca3ee1708e..657d681ec02 100644 --- a/lib/l10n/lv.json +++ b/lib/l10n/lv.json @@ -54,6 +54,7 @@ "Address" : "Adrese", "Profile picture" : "Profila attēls", "About" : "Par", + "Display name" : "Attēlojamais vārds", "Additional settings" : "Papildu iestatījumi", "Oracle connection could not be established" : "Nevar izveidot savienojumu ar Oracle", "Set an admin password." : "Iestatiet administratora paroli.", diff --git a/lib/l10n/nb.js b/lib/l10n/nb.js index a38140c289b..017e13221de 100644 --- a/lib/l10n/nb.js +++ b/lib/l10n/nb.js @@ -126,6 +126,7 @@ OC.L10N.register( "Headline" : "Overskrift", "Organisation" : "Organisasion", "Role" : "Rolle", + "Pronouns" : "Pronomen", "Unknown account" : "Ukjent konto", "Additional settings" : "Flere innstillinger", "Enter the database Login and name for %s" : "Skriv inn databasens pålogging og navn for %s", @@ -155,6 +156,7 @@ OC.L10N.register( "%1$s shared »%2$s« with you and wants to add:" : "%1$s delte »%2$s« med deg og vil legge til:", "%1$s shared »%2$s« with you and wants to add" : "%1$s delte »%2$s« med deg og vil legge til", "»%s« added a note to a file shared with you" : "»%s« la til en melding til en fil delt med deg", + "Passwords are enforced for link and mail shares" : "Passord håndheves for koblings- og e-postdelinger", "Unknown share type" : "Ukjent ressurstype", "You are not allowed to share %s" : "Du har ikke lov til å dele %s", "Cannot increase permissions of %s" : "Kan ikke øke tillatelser for %s", diff --git a/lib/l10n/nb.json b/lib/l10n/nb.json index 2a77f186ffc..616144ed573 100644 --- a/lib/l10n/nb.json +++ b/lib/l10n/nb.json @@ -124,6 +124,7 @@ "Headline" : "Overskrift", "Organisation" : "Organisasion", "Role" : "Rolle", + "Pronouns" : "Pronomen", "Unknown account" : "Ukjent konto", "Additional settings" : "Flere innstillinger", "Enter the database Login and name for %s" : "Skriv inn databasens pålogging og navn for %s", @@ -153,6 +154,7 @@ "%1$s shared »%2$s« with you and wants to add:" : "%1$s delte »%2$s« med deg og vil legge til:", "%1$s shared »%2$s« with you and wants to add" : "%1$s delte »%2$s« med deg og vil legge til", "»%s« added a note to a file shared with you" : "»%s« la til en melding til en fil delt med deg", + "Passwords are enforced for link and mail shares" : "Passord håndheves for koblings- og e-postdelinger", "Unknown share type" : "Ukjent ressurstype", "You are not allowed to share %s" : "Du har ikke lov til å dele %s", "Cannot increase permissions of %s" : "Kan ikke øke tillatelser for %s", diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js index f0763f24959..052c1d2de89 100644 --- a/lib/l10n/pt_BR.js +++ b/lib/l10n/pt_BR.js @@ -157,19 +157,10 @@ OC.L10N.register( "%1$s shared »%2$s« with you and wants to add" : "%1$s compartilhou »%2$s« com você e quer adicionar", "»%s« added a note to a file shared with you" : "»%s« adicionou uma anotação num arquivo compartilhado com você", "Passwords are enforced for link and mail shares" : "As senhas são aplicadas para compartilhamentos de links e e-mails", - "SharedWith is not a valid user" : "SharedWith não é um usuário válido", - "SharedWith is not a valid group" : "SharedWith não é um grupo válido", - "SharedWith should be empty" : "SharedWith pode estar vazio", - "SharedWith should not be empty" : "SharedWith não pode estar vazio", - "SharedWith is not a valid circle" : "SharedWith não é um círculo válido", "Unknown share type" : "Tipo de compartilhamento desconhecido", - "SharedBy should be set" : "SharedBy deve estar definido", "Cannot share with yourself" : "Não é possível compartilhar consigo mesmo", - "Path should be set" : "O caminho deve estar definido", - "Path should be either a file or a folder" : "O caminho deve ser um arquivo ou pasta", "You cannot share your root folder" : "Você não pode compartilhar sua pasta raiz", "You are not allowed to share %s" : "Você não tem permissão para compartilhar %s", - "A share requires permissions" : "Um compartilhamento requer permissões", "Cannot increase permissions of %s" : "Não foi possível aumentar as permissões de %s", "Shares need at least read permissions" : "Compartilhamentos precisam pelo menos permissões de leitura", "Files cannot be shared with delete permissions" : "Arquivos não podem ser compartilhados com permissões de exclusão", @@ -196,7 +187,6 @@ OC.L10N.register( "Cannot disable sending the password by Talk without setting a new password" : "Não é possível desativar o envio da senha pelo Talk sem definir uma nova senha", "Share provider does not support accepting" : "O provedor de compartilhamento não oferece suporte à aceitação", "Cannot change target of link share" : "Não é possível alterar o destino do compartilhamento do link", - "Invalid recipient" : "Destinatário inválido", "Group \"%s\" does not exist" : "Grupo \"%s\" não existe", "The requested share does not exist anymore" : "O compartilhamento solicitado não existe mais", "The requested share comes from a disabled user" : "O compartilhamento solicitado vem de um usuário desabilitado", diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json index ae40d06187f..d5ed81d4bcc 100644 --- a/lib/l10n/pt_BR.json +++ b/lib/l10n/pt_BR.json @@ -155,19 +155,10 @@ "%1$s shared »%2$s« with you and wants to add" : "%1$s compartilhou »%2$s« com você e quer adicionar", "»%s« added a note to a file shared with you" : "»%s« adicionou uma anotação num arquivo compartilhado com você", "Passwords are enforced for link and mail shares" : "As senhas são aplicadas para compartilhamentos de links e e-mails", - "SharedWith is not a valid user" : "SharedWith não é um usuário válido", - "SharedWith is not a valid group" : "SharedWith não é um grupo válido", - "SharedWith should be empty" : "SharedWith pode estar vazio", - "SharedWith should not be empty" : "SharedWith não pode estar vazio", - "SharedWith is not a valid circle" : "SharedWith não é um círculo válido", "Unknown share type" : "Tipo de compartilhamento desconhecido", - "SharedBy should be set" : "SharedBy deve estar definido", "Cannot share with yourself" : "Não é possível compartilhar consigo mesmo", - "Path should be set" : "O caminho deve estar definido", - "Path should be either a file or a folder" : "O caminho deve ser um arquivo ou pasta", "You cannot share your root folder" : "Você não pode compartilhar sua pasta raiz", "You are not allowed to share %s" : "Você não tem permissão para compartilhar %s", - "A share requires permissions" : "Um compartilhamento requer permissões", "Cannot increase permissions of %s" : "Não foi possível aumentar as permissões de %s", "Shares need at least read permissions" : "Compartilhamentos precisam pelo menos permissões de leitura", "Files cannot be shared with delete permissions" : "Arquivos não podem ser compartilhados com permissões de exclusão", @@ -194,7 +185,6 @@ "Cannot disable sending the password by Talk without setting a new password" : "Não é possível desativar o envio da senha pelo Talk sem definir uma nova senha", "Share provider does not support accepting" : "O provedor de compartilhamento não oferece suporte à aceitação", "Cannot change target of link share" : "Não é possível alterar o destino do compartilhamento do link", - "Invalid recipient" : "Destinatário inválido", "Group \"%s\" does not exist" : "Grupo \"%s\" não existe", "The requested share does not exist anymore" : "O compartilhamento solicitado não existe mais", "The requested share comes from a disabled user" : "O compartilhamento solicitado vem de um usuário desabilitado", diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js index 7390eb7407c..182bb336dff 100644 --- a/lib/l10n/ru.js +++ b/lib/l10n/ru.js @@ -158,11 +158,8 @@ OC.L10N.register( "Passwords are enforced for link and mail shares" : "Для общих ссылок и почтовых рассылок применяются пароли", "Unknown share type" : "Общий доступ неизвестного типа", "Cannot share with yourself" : "Не могу поделиться с самим собой", - "Path should be set" : "Путь должен быть задан", - "Path should be either a file or a folder" : "Путь должен быть либо к файлу, либо к папке", "You cannot share your root folder" : "Вы не можете предоставить общий доступ к своей корневой папке", "You are not allowed to share %s" : "Вам не разрешено делиться %s", - "A share requires permissions" : "Для общего доступа требуются разрешения", "Cannot increase permissions of %s" : "Не удалось повысить права доступа %s", "Shares need at least read permissions" : "Общим ресурсам требуются как минимум разрешения на чтение", "Files cannot be shared with delete permissions" : "Права на удаление файлов не позволяют открывать общий доступ к ним", @@ -189,7 +186,6 @@ OC.L10N.register( "Cannot disable sending the password by Talk without setting a new password" : "Невозможно отключить отправку пароля по телефону без установки нового пароля", "Share provider does not support accepting" : "Поставщик общего доступа не поддерживает прием", "Cannot change target of link share" : "Невозможно изменить цель публикации ссылки", - "Invalid recipient" : "Недействительный получатель", "Group \"%s\" does not exist" : "Группа \"%s\" не существует", "The requested share does not exist anymore" : "Запрошенный общий ресурс более не существует.", "The requested share comes from a disabled user" : "Запрос на общий доступ поступает от отключенного пользователя", diff --git a/lib/l10n/ru.json b/lib/l10n/ru.json index 8394dc961da..5ad4569ed4f 100644 --- a/lib/l10n/ru.json +++ b/lib/l10n/ru.json @@ -156,11 +156,8 @@ "Passwords are enforced for link and mail shares" : "Для общих ссылок и почтовых рассылок применяются пароли", "Unknown share type" : "Общий доступ неизвестного типа", "Cannot share with yourself" : "Не могу поделиться с самим собой", - "Path should be set" : "Путь должен быть задан", - "Path should be either a file or a folder" : "Путь должен быть либо к файлу, либо к папке", "You cannot share your root folder" : "Вы не можете предоставить общий доступ к своей корневой папке", "You are not allowed to share %s" : "Вам не разрешено делиться %s", - "A share requires permissions" : "Для общего доступа требуются разрешения", "Cannot increase permissions of %s" : "Не удалось повысить права доступа %s", "Shares need at least read permissions" : "Общим ресурсам требуются как минимум разрешения на чтение", "Files cannot be shared with delete permissions" : "Права на удаление файлов не позволяют открывать общий доступ к ним", @@ -187,7 +184,6 @@ "Cannot disable sending the password by Talk without setting a new password" : "Невозможно отключить отправку пароля по телефону без установки нового пароля", "Share provider does not support accepting" : "Поставщик общего доступа не поддерживает прием", "Cannot change target of link share" : "Невозможно изменить цель публикации ссылки", - "Invalid recipient" : "Недействительный получатель", "Group \"%s\" does not exist" : "Группа \"%s\" не существует", "The requested share does not exist anymore" : "Запрошенный общий ресурс более не существует.", "The requested share comes from a disabled user" : "Запрос на общий доступ поступает от отключенного пользователя", diff --git a/lib/l10n/sk.js b/lib/l10n/sk.js index b2bb6464ad0..d182e3071c2 100644 --- a/lib/l10n/sk.js +++ b/lib/l10n/sk.js @@ -147,7 +147,6 @@ OC.L10N.register( "%1$s shared »%2$s« with you and wants to add" : "%1$s vám sprístupnil »%2$s« s poznámkou", "»%s« added a note to a file shared with you" : "»%s« pridal poznámku k súboru ktorý s Vami zdieľa", "Unknown share type" : "Neplatný typ sprístupnenia", - "Path should be set" : "Cesta musí byť nastavená", "You are not allowed to share %s" : "Nemôžete sprístupniť %s", "Cannot increase permissions of %s" : "Nie je možné navýšiť oprávnenia pre %s", "Files cannot be shared with delete permissions" : "Súbory nie je možné sprístupňovať s oprávneniami na odstránenie", @@ -156,7 +155,6 @@ OC.L10N.register( "_Cannot set expiration date more than %n day in the future_::_Cannot set expiration date more than %n days in the future_" : ["Nie je možné nastaviť dátum konca platnosti viac ako %s deň v budúcnosti","Nie je možné nastaviť dátum konca platnosti viac ako %s dní v budúcnosti","Nie je možné nastaviť dátum konca platnosti viac ako %s dní v budúcnosti","Nie je možné nastaviť dátum konca platnosti viac ako %s dní v budúcnosti"], "Sharing is only allowed with group members" : "Zdieľanie je možné iba s členmi skupiny", "Sharing %s failed, because this item is already shared with the account %s" : "Zdieľanie %s zlyhalo, pretože táto položka už je užívateľovi %s zozdieľaná.", - "Invalid recipient" : "Neplatný príjemca", "The requested share does not exist anymore" : "Požadované sprístupnenie už neexistuje", "The requested share comes from a disabled user" : "Požadované zdieľanie pochádza od zakázaného užívateľa.", "The user was not created because the user limit has been reached. Check your notifications to learn more." : "Bol dosiahnutý limit používateľov a používateľ nebol vytvorený. Pozrite sa do upozornení pre viac informácií.", diff --git a/lib/l10n/sk.json b/lib/l10n/sk.json index fd905b9ab37..097b833df96 100644 --- a/lib/l10n/sk.json +++ b/lib/l10n/sk.json @@ -145,7 +145,6 @@ "%1$s shared »%2$s« with you and wants to add" : "%1$s vám sprístupnil »%2$s« s poznámkou", "»%s« added a note to a file shared with you" : "»%s« pridal poznámku k súboru ktorý s Vami zdieľa", "Unknown share type" : "Neplatný typ sprístupnenia", - "Path should be set" : "Cesta musí byť nastavená", "You are not allowed to share %s" : "Nemôžete sprístupniť %s", "Cannot increase permissions of %s" : "Nie je možné navýšiť oprávnenia pre %s", "Files cannot be shared with delete permissions" : "Súbory nie je možné sprístupňovať s oprávneniami na odstránenie", @@ -154,7 +153,6 @@ "_Cannot set expiration date more than %n day in the future_::_Cannot set expiration date more than %n days in the future_" : ["Nie je možné nastaviť dátum konca platnosti viac ako %s deň v budúcnosti","Nie je možné nastaviť dátum konca platnosti viac ako %s dní v budúcnosti","Nie je možné nastaviť dátum konca platnosti viac ako %s dní v budúcnosti","Nie je možné nastaviť dátum konca platnosti viac ako %s dní v budúcnosti"], "Sharing is only allowed with group members" : "Zdieľanie je možné iba s členmi skupiny", "Sharing %s failed, because this item is already shared with the account %s" : "Zdieľanie %s zlyhalo, pretože táto položka už je užívateľovi %s zozdieľaná.", - "Invalid recipient" : "Neplatný príjemca", "The requested share does not exist anymore" : "Požadované sprístupnenie už neexistuje", "The requested share comes from a disabled user" : "Požadované zdieľanie pochádza od zakázaného užívateľa.", "The user was not created because the user limit has been reached. Check your notifications to learn more." : "Bol dosiahnutý limit používateľov a používateľ nebol vytvorený. Pozrite sa do upozornení pre viac informácií.", diff --git a/lib/l10n/sr.js b/lib/l10n/sr.js index 612537d1e77..ac59d5cf8f0 100644 --- a/lib/l10n/sr.js +++ b/lib/l10n/sr.js @@ -157,19 +157,10 @@ OC.L10N.register( "%1$s shared »%2$s« with you and wants to add" : "%1$s је поделио „%2$s“ са Вама и жели да дода", "»%s« added a note to a file shared with you" : "\"%s\" је додао белешку на фајл који дели са Вама", "Passwords are enforced for link and mail shares" : "За дељења линком и поштом је обавезна заштита лозинком", - "SharedWith is not a valid user" : "SharedWith није исправан корисник", - "SharedWith is not a valid group" : "SharedWith није исправна група", - "SharedWith should be empty" : "SharedWith би требало да буде празно", - "SharedWith should not be empty" : "SharedWith не би требало да буде празно", - "SharedWith is not a valid circle" : "SharedWith није исправан круг", "Unknown share type" : "Непознат тип дељења", - "SharedBy should be set" : "SharedBy би требало да буде постављено", "Cannot share with yourself" : "Не можете да делите са самим собом", - "Path should be set" : "Путања би требало да буде постављена", - "Path should be either a file or a folder" : "Путања би требало да буде или фајл или фолдер", "You cannot share your root folder" : "Не можете да делите свој корени фолдер", "You are not allowed to share %s" : "Није вам дозвољено да делите %s", - "A share requires permissions" : "За дељење су потребне дозволе", "Cannot increase permissions of %s" : "Не могу да повећам привилегије за %s", "Shares need at least read permissions" : "Дељења морају да имају барем право читања", "Files cannot be shared with delete permissions" : "Фајлови не могу да се деле са дозволама за брисање", @@ -196,7 +187,6 @@ OC.L10N.register( "Cannot disable sending the password by Talk without setting a new password" : "Без постављања нове лозинке не може да се искључи слање лозинке апликацијом Talk", "Share provider does not support accepting" : "Пружалац услуге дељења не подржава прихватање", "Cannot change target of link share" : "Не може да се промени циљ дељења линком", - "Invalid recipient" : "Неисправан прималац", "Group \"%s\" does not exist" : "Група „%s” не постоји", "The requested share does not exist anymore" : "Захтевано дељење више не постоји", "The requested share comes from a disabled user" : "Захтевано дељење долази од искљученог корисника", diff --git a/lib/l10n/sr.json b/lib/l10n/sr.json index 10777fe38af..d96483d2259 100644 --- a/lib/l10n/sr.json +++ b/lib/l10n/sr.json @@ -155,19 +155,10 @@ "%1$s shared »%2$s« with you and wants to add" : "%1$s је поделио „%2$s“ са Вама и жели да дода", "»%s« added a note to a file shared with you" : "\"%s\" је додао белешку на фајл који дели са Вама", "Passwords are enforced for link and mail shares" : "За дељења линком и поштом је обавезна заштита лозинком", - "SharedWith is not a valid user" : "SharedWith није исправан корисник", - "SharedWith is not a valid group" : "SharedWith није исправна група", - "SharedWith should be empty" : "SharedWith би требало да буде празно", - "SharedWith should not be empty" : "SharedWith не би требало да буде празно", - "SharedWith is not a valid circle" : "SharedWith није исправан круг", "Unknown share type" : "Непознат тип дељења", - "SharedBy should be set" : "SharedBy би требало да буде постављено", "Cannot share with yourself" : "Не можете да делите са самим собом", - "Path should be set" : "Путања би требало да буде постављена", - "Path should be either a file or a folder" : "Путања би требало да буде или фајл или фолдер", "You cannot share your root folder" : "Не можете да делите свој корени фолдер", "You are not allowed to share %s" : "Није вам дозвољено да делите %s", - "A share requires permissions" : "За дељење су потребне дозволе", "Cannot increase permissions of %s" : "Не могу да повећам привилегије за %s", "Shares need at least read permissions" : "Дељења морају да имају барем право читања", "Files cannot be shared with delete permissions" : "Фајлови не могу да се деле са дозволама за брисање", @@ -194,7 +185,6 @@ "Cannot disable sending the password by Talk without setting a new password" : "Без постављања нове лозинке не може да се искључи слање лозинке апликацијом Talk", "Share provider does not support accepting" : "Пружалац услуге дељења не подржава прихватање", "Cannot change target of link share" : "Не може да се промени циљ дељења линком", - "Invalid recipient" : "Неисправан прималац", "Group \"%s\" does not exist" : "Група „%s” не постоји", "The requested share does not exist anymore" : "Захтевано дељење више не постоји", "The requested share comes from a disabled user" : "Захтевано дељење долази од искљученог корисника", diff --git a/lib/l10n/sv.js b/lib/l10n/sv.js index 7f22d7b5d92..84c5bb87970 100644 --- a/lib/l10n/sv.js +++ b/lib/l10n/sv.js @@ -159,11 +159,8 @@ OC.L10N.register( "Passwords are enforced for link and mail shares" : "Lösenord är obligatoriskt för länk och e-postdelning", "Unknown share type" : "Ogiltig delningstyp", "Cannot share with yourself" : "Kan inte dela med dig själv", - "Path should be set" : "Sökvägen bör ställas in", - "Path should be either a file or a folder" : "Sökvägen ska vara antingen en fil eller en mapp", "You cannot share your root folder" : "Du kan inte dela din rotmapp", "You are not allowed to share %s" : "Du tillåts inte att dela %s", - "A share requires permissions" : "En delning kräver behörigheter", "Cannot increase permissions of %s" : "Kan inte höja behörigheter av %s", "Shares need at least read permissions" : "Delningar behöver åtminstone läsbehörighet", "Files cannot be shared with delete permissions" : "Filer kan inte delas med rättighet att radera", @@ -189,7 +186,6 @@ OC.L10N.register( "Cannot enable sending the password by Talk without setting a new password" : "Kan inte aktivera sändning av lösenordet med Talk utan att ange ett nytt lösenord", "Cannot disable sending the password by Talk without setting a new password" : "Kan inte inaktivera sändning av lösenordet med Talk utan att ange ett nytt lösenord", "Cannot change target of link share" : "Kan inte ändra mål för länkdelning", - "Invalid recipient" : "Ogiltig mottagare", "Group \"%s\" does not exist" : "Gruppen \"%s\" finns inte", "The requested share does not exist anymore" : "Den begärda delningen finns inte mer", "The requested share comes from a disabled user" : "Den begärda delningen kommer från en inaktiverad användare", diff --git a/lib/l10n/sv.json b/lib/l10n/sv.json index e46b063e54f..1e27fe194cb 100644 --- a/lib/l10n/sv.json +++ b/lib/l10n/sv.json @@ -157,11 +157,8 @@ "Passwords are enforced for link and mail shares" : "Lösenord är obligatoriskt för länk och e-postdelning", "Unknown share type" : "Ogiltig delningstyp", "Cannot share with yourself" : "Kan inte dela med dig själv", - "Path should be set" : "Sökvägen bör ställas in", - "Path should be either a file or a folder" : "Sökvägen ska vara antingen en fil eller en mapp", "You cannot share your root folder" : "Du kan inte dela din rotmapp", "You are not allowed to share %s" : "Du tillåts inte att dela %s", - "A share requires permissions" : "En delning kräver behörigheter", "Cannot increase permissions of %s" : "Kan inte höja behörigheter av %s", "Shares need at least read permissions" : "Delningar behöver åtminstone läsbehörighet", "Files cannot be shared with delete permissions" : "Filer kan inte delas med rättighet att radera", @@ -187,7 +184,6 @@ "Cannot enable sending the password by Talk without setting a new password" : "Kan inte aktivera sändning av lösenordet med Talk utan att ange ett nytt lösenord", "Cannot disable sending the password by Talk without setting a new password" : "Kan inte inaktivera sändning av lösenordet med Talk utan att ange ett nytt lösenord", "Cannot change target of link share" : "Kan inte ändra mål för länkdelning", - "Invalid recipient" : "Ogiltig mottagare", "Group \"%s\" does not exist" : "Gruppen \"%s\" finns inte", "The requested share does not exist anymore" : "Den begärda delningen finns inte mer", "The requested share comes from a disabled user" : "Den begärda delningen kommer från en inaktiverad användare", diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js index 1e90ed02f76..32fddae2a15 100644 --- a/lib/l10n/tr.js +++ b/lib/l10n/tr.js @@ -157,19 +157,19 @@ OC.L10N.register( "%1$s shared »%2$s« with you and wants to add" : "%1$s sizinle »%2$s« ögesini paylaştı ve eklemenizi istiyor", "»%s« added a note to a file shared with you" : "»%s« sizinle paylaştığı bir dosyaya bir not ekledi", "Passwords are enforced for link and mail shares" : "Bağlantı ve e-posta paylaşımları için parolalar zorunludur", - "SharedWith is not a valid user" : "SharedWith geçerli bir kullanıcı değil", - "SharedWith is not a valid group" : "SharedWith geçerli bir grup değil", - "SharedWith should be empty" : "SharedWith boş olamaz", - "SharedWith should not be empty" : "SharedWith boş olmamalı", - "SharedWith is not a valid circle" : "SharedWith geçerli bir çevre değil", + "Share recipient is not a valid user" : "Paylaşım alıcısı geçerli bir kullanıcı değil", + "Share recipient is not a valid group" : "Paylaşım alıcısı geçerli bir grup değil", + "Share recipient should be empty" : "Paylaşım alıcısı boş olmalı", + "Share recipient should not be empty" : "Paylaşım alıcısı boş olmamalı", + "Share recipient is not a valid circle" : "Paylaşım alıcısı geçerli bir çevre değil", "Unknown share type" : "Paylaşım türü bilinmiyor", - "SharedBy should be set" : "SharedBy ayarlanmalıdır", + "Share initiator must be set" : "Paylaşımı başlatan ayarlanmalıdır", "Cannot share with yourself" : "Kendinizle paylaşamazsınız", - "Path should be set" : "Yol ayarlanmalıdır", - "Path should be either a file or a folder" : "Yol bir dosya ya da klasör olmalıdır", + "Shared path must be set" : "Paylaşılan yol ayarlanmalıdır", + "Shared path must be either a file or a folder" : "Paylaşılan yol bir dosya ya da klasör olmalıdır", "You cannot share your root folder" : "Kök klasörünüzü paylaşamazsınız", "You are not allowed to share %s" : "%s ögesini paylaşma izniniz yok", - "A share requires permissions" : "Bir paylaşımın izinleri olmalıdır", + "Valid permissions are required for sharing" : "Paylaşım için geçerli izinler olmalıdır", "Cannot increase permissions of %s" : "%s izinleri yükseltilemedi", "Shares need at least read permissions" : "Paylaşımların en azından okuma izinleri olmalıdır", "Files cannot be shared with delete permissions" : "Silme izni ile dosya paylaşılamaz", @@ -196,7 +196,7 @@ OC.L10N.register( "Cannot disable sending the password by Talk without setting a new password" : "Yeni bir parola ayarlanmadan Sohbet uygulaması ile parola gönderme devre dışı bırakılamaz", "Share provider does not support accepting" : "Paylaşım hizmeti sağlayıcısı kabul etmeyi desteklemiyor", "Cannot change target of link share" : "Bağlantı paylaşımının hedefi değiştirilemedi", - "Invalid recipient" : "Alıcı geçersiz", + "Invalid share recipient" : "Paylaşım alıcısı geçersiz", "Group \"%s\" does not exist" : "\"%s\" grubu bulunamadı", "The requested share does not exist anymore" : "Erişilmek istenilen paylaşım artık yok", "The requested share comes from a disabled user" : "Erişilmek istenilen paylaşım devre dışı bırakılmış bir kullanıcıdan geliyor", diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json index ee0704de2c3..a267199af95 100644 --- a/lib/l10n/tr.json +++ b/lib/l10n/tr.json @@ -155,19 +155,19 @@ "%1$s shared »%2$s« with you and wants to add" : "%1$s sizinle »%2$s« ögesini paylaştı ve eklemenizi istiyor", "»%s« added a note to a file shared with you" : "»%s« sizinle paylaştığı bir dosyaya bir not ekledi", "Passwords are enforced for link and mail shares" : "Bağlantı ve e-posta paylaşımları için parolalar zorunludur", - "SharedWith is not a valid user" : "SharedWith geçerli bir kullanıcı değil", - "SharedWith is not a valid group" : "SharedWith geçerli bir grup değil", - "SharedWith should be empty" : "SharedWith boş olamaz", - "SharedWith should not be empty" : "SharedWith boş olmamalı", - "SharedWith is not a valid circle" : "SharedWith geçerli bir çevre değil", + "Share recipient is not a valid user" : "Paylaşım alıcısı geçerli bir kullanıcı değil", + "Share recipient is not a valid group" : "Paylaşım alıcısı geçerli bir grup değil", + "Share recipient should be empty" : "Paylaşım alıcısı boş olmalı", + "Share recipient should not be empty" : "Paylaşım alıcısı boş olmamalı", + "Share recipient is not a valid circle" : "Paylaşım alıcısı geçerli bir çevre değil", "Unknown share type" : "Paylaşım türü bilinmiyor", - "SharedBy should be set" : "SharedBy ayarlanmalıdır", + "Share initiator must be set" : "Paylaşımı başlatan ayarlanmalıdır", "Cannot share with yourself" : "Kendinizle paylaşamazsınız", - "Path should be set" : "Yol ayarlanmalıdır", - "Path should be either a file or a folder" : "Yol bir dosya ya da klasör olmalıdır", + "Shared path must be set" : "Paylaşılan yol ayarlanmalıdır", + "Shared path must be either a file or a folder" : "Paylaşılan yol bir dosya ya da klasör olmalıdır", "You cannot share your root folder" : "Kök klasörünüzü paylaşamazsınız", "You are not allowed to share %s" : "%s ögesini paylaşma izniniz yok", - "A share requires permissions" : "Bir paylaşımın izinleri olmalıdır", + "Valid permissions are required for sharing" : "Paylaşım için geçerli izinler olmalıdır", "Cannot increase permissions of %s" : "%s izinleri yükseltilemedi", "Shares need at least read permissions" : "Paylaşımların en azından okuma izinleri olmalıdır", "Files cannot be shared with delete permissions" : "Silme izni ile dosya paylaşılamaz", @@ -194,7 +194,7 @@ "Cannot disable sending the password by Talk without setting a new password" : "Yeni bir parola ayarlanmadan Sohbet uygulaması ile parola gönderme devre dışı bırakılamaz", "Share provider does not support accepting" : "Paylaşım hizmeti sağlayıcısı kabul etmeyi desteklemiyor", "Cannot change target of link share" : "Bağlantı paylaşımının hedefi değiştirilemedi", - "Invalid recipient" : "Alıcı geçersiz", + "Invalid share recipient" : "Paylaşım alıcısı geçersiz", "Group \"%s\" does not exist" : "\"%s\" grubu bulunamadı", "The requested share does not exist anymore" : "Erişilmek istenilen paylaşım artık yok", "The requested share comes from a disabled user" : "Erişilmek istenilen paylaşım devre dışı bırakılmış bir kullanıcıdan geliyor", diff --git a/lib/l10n/zh_CN.js b/lib/l10n/zh_CN.js index 7af34971d75..ffe415ae409 100644 --- a/lib/l10n/zh_CN.js +++ b/lib/l10n/zh_CN.js @@ -82,6 +82,7 @@ OC.L10N.register( "Empty file" : "空文件", "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "模块:%s不存在。请在 App 设置中开启或联系您的管理员。", "Dot files are not allowed" : "以 . 开头的文件不被允许", + "\"%1$s\" is a forbidden file or folder name." : "\"%1$s\" 是禁止的文件或文件夹名称。", "File already exists" : "文件已存在", "Invalid path" : "无效的路径", "Failed to create file from template" : "从模板创建文件失败", @@ -150,14 +151,10 @@ OC.L10N.register( "%1$s shared »%2$s« with you and wants to add" : "%1$s 与您共享了 »%2$s« 并希望添加", "»%s« added a note to a file shared with you" : "»%s« 在与您共享的文件中添加了备注", "Passwords are enforced for link and mail shares" : "链接和邮件共享必须使用密码", - "SharedWith is not a valid user" : "ShareWith 不是有效用户", "Unknown share type" : "未知共享类型", "Cannot share with yourself" : "无法与自己分享", - "Path should be set" : "应设置路径", - "Path should be either a file or a folder" : "路径应该是文件或文件夹", "You cannot share your root folder" : "您无法共享您的主文件夹", "You are not allowed to share %s" : "您无权共享 %s", - "A share requires permissions" : "共享需要权限", "Cannot increase permissions of %s" : "无法提升 %s 的权限", "Shares need at least read permissions" : "共享至少需要读取权限", "Files cannot be shared with delete permissions" : "不能带删除权限分享文件", @@ -279,6 +276,7 @@ OC.L10N.register( "Your data directory must be an absolute path." : "您的数据目录必须是绝对路径。", "Check the value of \"datadirectory\" in your configuration." : "请检查配置文件中 \"datadirectory\" 的值。", "Your data directory is invalid." : "您的数据目录无效。", + "Ensure there is a file called \"%1$s\" in the root of the data directory. It should have the content: \"%2$s\"" : "确保数据目录的根目录中有一个名为\"%1$s\"的文件。它应该包含以下内容:\"%2$s\"", "Action \"%s\" not supported or implemented." : "操作 \"%s\" 不支持或未实现。", "Authentication failed, wrong token or provider ID given" : "认证失败,提供了错误的token或提供者ID", "Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "缺少参数来完成请求。缺少的参数为:\"%s\"", diff --git a/lib/l10n/zh_CN.json b/lib/l10n/zh_CN.json index 430f3cf59b2..4c861fdc4ee 100644 --- a/lib/l10n/zh_CN.json +++ b/lib/l10n/zh_CN.json @@ -80,6 +80,7 @@ "Empty file" : "空文件", "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "模块:%s不存在。请在 App 设置中开启或联系您的管理员。", "Dot files are not allowed" : "以 . 开头的文件不被允许", + "\"%1$s\" is a forbidden file or folder name." : "\"%1$s\" 是禁止的文件或文件夹名称。", "File already exists" : "文件已存在", "Invalid path" : "无效的路径", "Failed to create file from template" : "从模板创建文件失败", @@ -148,14 +149,10 @@ "%1$s shared »%2$s« with you and wants to add" : "%1$s 与您共享了 »%2$s« 并希望添加", "»%s« added a note to a file shared with you" : "»%s« 在与您共享的文件中添加了备注", "Passwords are enforced for link and mail shares" : "链接和邮件共享必须使用密码", - "SharedWith is not a valid user" : "ShareWith 不是有效用户", "Unknown share type" : "未知共享类型", "Cannot share with yourself" : "无法与自己分享", - "Path should be set" : "应设置路径", - "Path should be either a file or a folder" : "路径应该是文件或文件夹", "You cannot share your root folder" : "您无法共享您的主文件夹", "You are not allowed to share %s" : "您无权共享 %s", - "A share requires permissions" : "共享需要权限", "Cannot increase permissions of %s" : "无法提升 %s 的权限", "Shares need at least read permissions" : "共享至少需要读取权限", "Files cannot be shared with delete permissions" : "不能带删除权限分享文件", @@ -277,6 +274,7 @@ "Your data directory must be an absolute path." : "您的数据目录必须是绝对路径。", "Check the value of \"datadirectory\" in your configuration." : "请检查配置文件中 \"datadirectory\" 的值。", "Your data directory is invalid." : "您的数据目录无效。", + "Ensure there is a file called \"%1$s\" in the root of the data directory. It should have the content: \"%2$s\"" : "确保数据目录的根目录中有一个名为\"%1$s\"的文件。它应该包含以下内容:\"%2$s\"", "Action \"%s\" not supported or implemented." : "操作 \"%s\" 不支持或未实现。", "Authentication failed, wrong token or provider ID given" : "认证失败,提供了错误的token或提供者ID", "Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "缺少参数来完成请求。缺少的参数为:\"%s\"", diff --git a/lib/l10n/zh_HK.js b/lib/l10n/zh_HK.js index 02eb53865d4..4a924532b54 100644 --- a/lib/l10n/zh_HK.js +++ b/lib/l10n/zh_HK.js @@ -159,11 +159,8 @@ OC.L10N.register( "Passwords are enforced for link and mail shares" : "連結及郵件分享強制使用密碼", "Unknown share type" : "分享類型不詳", "Cannot share with yourself" : "無法與您自己分享", - "Path should be set" : "應該設定途徑", - "Path should be either a file or a folder" : "途徑應為檔案或資料夾", "You cannot share your root folder" : "您無法分享您的根資料夾", "You are not allowed to share %s" : "你無權分享 %s", - "A share requires permissions" : "分享需要權限", "Cannot increase permissions of %s" : "無法增加 %s 的權限", "Shares need at least read permissions" : "分享需要至少讀取的權限", "Files cannot be shared with delete permissions" : "無法分享具有刪除權限的檔案", @@ -190,7 +187,6 @@ OC.L10N.register( "Cannot disable sending the password by Talk without setting a new password" : "若未設定新密碼,則無法停用透過 Talk 傳送密碼", "Share provider does not support accepting" : "分享提供者不支援接受", "Cannot change target of link share" : "無法變更連結分享的目標", - "Invalid recipient" : "無效的收件人", "Group \"%s\" does not exist" : "群組「%s」不存在", "The requested share does not exist anymore" : "該分享已經不存在", "The requested share comes from a disabled user" : "請求的分享來自已停用的用戶", diff --git a/lib/l10n/zh_HK.json b/lib/l10n/zh_HK.json index da306f66a38..9c78255002a 100644 --- a/lib/l10n/zh_HK.json +++ b/lib/l10n/zh_HK.json @@ -157,11 +157,8 @@ "Passwords are enforced for link and mail shares" : "連結及郵件分享強制使用密碼", "Unknown share type" : "分享類型不詳", "Cannot share with yourself" : "無法與您自己分享", - "Path should be set" : "應該設定途徑", - "Path should be either a file or a folder" : "途徑應為檔案或資料夾", "You cannot share your root folder" : "您無法分享您的根資料夾", "You are not allowed to share %s" : "你無權分享 %s", - "A share requires permissions" : "分享需要權限", "Cannot increase permissions of %s" : "無法增加 %s 的權限", "Shares need at least read permissions" : "分享需要至少讀取的權限", "Files cannot be shared with delete permissions" : "無法分享具有刪除權限的檔案", @@ -188,7 +185,6 @@ "Cannot disable sending the password by Talk without setting a new password" : "若未設定新密碼,則無法停用透過 Talk 傳送密碼", "Share provider does not support accepting" : "分享提供者不支援接受", "Cannot change target of link share" : "無法變更連結分享的目標", - "Invalid recipient" : "無效的收件人", "Group \"%s\" does not exist" : "群組「%s」不存在", "The requested share does not exist anymore" : "該分享已經不存在", "The requested share comes from a disabled user" : "請求的分享來自已停用的用戶", diff --git a/lib/l10n/zh_TW.js b/lib/l10n/zh_TW.js index c4f6c7cf38b..5135fdb829e 100644 --- a/lib/l10n/zh_TW.js +++ b/lib/l10n/zh_TW.js @@ -157,19 +157,10 @@ OC.L10N.register( "%1$s shared »%2$s« with you and wants to add" : "%1$s 與您分享了 %2$s ,且想要加入", "»%s« added a note to a file shared with you" : "%s 在與您分享的檔案中加入了註解", "Passwords are enforced for link and mail shares" : "連結與郵件分享強制使用密碼", - "SharedWith is not a valid user" : "SharedWith 不是有效的使用者", - "SharedWith is not a valid group" : "SharedWith 不是有效的群組", - "SharedWith should be empty" : "SharedWith 應該為空", - "SharedWith should not be empty" : "SharedWith 不應為空", - "SharedWith is not a valid circle" : "SharedWith 不是有效的小圈圈", "Unknown share type" : "未知的分享類型", - "SharedBy should be set" : "應該設定 SharedBy", "Cannot share with yourself" : "無法與您自己分享", - "Path should be set" : "應該設定路徑", - "Path should be either a file or a folder" : "路徑應為檔案或資料夾", "You cannot share your root folder" : "您無法分享您的根資料夾", "You are not allowed to share %s" : "你不被允許分享 %s", - "A share requires permissions" : "分享需要權限", "Cannot increase permissions of %s" : "無法增加 %s 的權限", "Shares need at least read permissions" : "分享需要至少讀取的權限", "Files cannot be shared with delete permissions" : "無法分享具有刪除權限的檔案", @@ -196,7 +187,6 @@ OC.L10N.register( "Cannot disable sending the password by Talk without setting a new password" : "若未設定新密碼,則無法停用透過 Talk 傳送密碼", "Share provider does not support accepting" : "分享提供者不支援接受", "Cannot change target of link share" : "無法變更連結分享的目標", - "Invalid recipient" : "無效的接收者", "Group \"%s\" does not exist" : "群組「%s」不存在", "The requested share does not exist anymore" : "該分享已經不存在", "The requested share comes from a disabled user" : "請求的分享來自已停用的使用者", diff --git a/lib/l10n/zh_TW.json b/lib/l10n/zh_TW.json index 6970dba9744..bd9c91a004e 100644 --- a/lib/l10n/zh_TW.json +++ b/lib/l10n/zh_TW.json @@ -155,19 +155,10 @@ "%1$s shared »%2$s« with you and wants to add" : "%1$s 與您分享了 %2$s ,且想要加入", "»%s« added a note to a file shared with you" : "%s 在與您分享的檔案中加入了註解", "Passwords are enforced for link and mail shares" : "連結與郵件分享強制使用密碼", - "SharedWith is not a valid user" : "SharedWith 不是有效的使用者", - "SharedWith is not a valid group" : "SharedWith 不是有效的群組", - "SharedWith should be empty" : "SharedWith 應該為空", - "SharedWith should not be empty" : "SharedWith 不應為空", - "SharedWith is not a valid circle" : "SharedWith 不是有效的小圈圈", "Unknown share type" : "未知的分享類型", - "SharedBy should be set" : "應該設定 SharedBy", "Cannot share with yourself" : "無法與您自己分享", - "Path should be set" : "應該設定路徑", - "Path should be either a file or a folder" : "路徑應為檔案或資料夾", "You cannot share your root folder" : "您無法分享您的根資料夾", "You are not allowed to share %s" : "你不被允許分享 %s", - "A share requires permissions" : "分享需要權限", "Cannot increase permissions of %s" : "無法增加 %s 的權限", "Shares need at least read permissions" : "分享需要至少讀取的權限", "Files cannot be shared with delete permissions" : "無法分享具有刪除權限的檔案", @@ -194,7 +185,6 @@ "Cannot disable sending the password by Talk without setting a new password" : "若未設定新密碼,則無法停用透過 Talk 傳送密碼", "Share provider does not support accepting" : "分享提供者不支援接受", "Cannot change target of link share" : "無法變更連結分享的目標", - "Invalid recipient" : "無效的接收者", "Group \"%s\" does not exist" : "群組「%s」不存在", "The requested share does not exist anymore" : "該分享已經不存在", "The requested share comes from a disabled user" : "請求的分享來自已停用的使用者", diff --git a/lib/private/App/AppStore/Fetcher/Fetcher.php b/lib/private/App/AppStore/Fetcher/Fetcher.php index edb96b55f0a..f998c9e2023 100644 --- a/lib/private/App/AppStore/Fetcher/Fetcher.php +++ b/lib/private/App/AppStore/Fetcher/Fetcher.php @@ -13,6 +13,8 @@ use OCP\Files\IAppData; use OCP\Files\NotFoundException; use OCP\Http\Client\IClientService; use OCP\IConfig; +use OCP\Server; +use OCP\ServerVersion; use OCP\Support\Subscription\IRegistry; use Psr\Log\LoggerInterface; @@ -207,7 +209,7 @@ abstract class Fetcher { */ protected function getChannel() { if ($this->channel === null) { - $this->channel = \OC_Util::getChannel(); + $this->channel = Server::get(ServerVersion::class)->getChannel(); } return $this->channel; } diff --git a/lib/private/BinaryFinder.php b/lib/private/BinaryFinder.php index f7ac7a5195c..3dad245ff0d 100644 --- a/lib/private/BinaryFinder.php +++ b/lib/private/BinaryFinder.php @@ -11,15 +11,28 @@ namespace OC; use OCP\IBinaryFinder; use OCP\ICache; use OCP\ICacheFactory; +use OCP\IConfig; use Symfony\Component\Process\ExecutableFinder; /** * Service that find the binary path for a program */ class BinaryFinder implements IBinaryFinder { + public const DEFAULT_BINARY_SEARCH_PATHS = [ + '/usr/local/sbin', + '/usr/local/bin', + '/usr/sbin', + '/usr/bin', + '/sbin', + '/bin', + '/opt/bin', + ]; private ICache $cache; - public function __construct(ICacheFactory $cacheFactory) { + public function __construct( + ICacheFactory $cacheFactory, + private IConfig $config, + ) { $this->cache = $cacheFactory->createLocal('findBinaryPath'); } @@ -37,15 +50,10 @@ class BinaryFinder implements IBinaryFinder { if (\OCP\Util::isFunctionEnabled('exec')) { $exeSniffer = new ExecutableFinder(); // Returns null if nothing is found - $result = $exeSniffer->find($program, null, [ - '/usr/local/sbin', - '/usr/local/bin', - '/usr/sbin', - '/usr/bin', - '/sbin', - '/bin', - '/opt/bin', - ]); + $result = $exeSniffer->find( + $program, + null, + $this->config->getSystemValue('binary_search_paths', self::DEFAULT_BINARY_SEARCH_PATHS)); if ($result === null) { $result = false; } diff --git a/lib/private/Console/Application.php b/lib/private/Console/Application.php index 1b620089736..ac30a93a186 100644 --- a/lib/private/Console/Application.php +++ b/lib/private/Console/Application.php @@ -19,6 +19,7 @@ use OCP\EventDispatcher\IEventDispatcher; use OCP\IConfig; use OCP\IRequest; use OCP\Server; +use OCP\ServerVersion; use Psr\Container\ContainerExceptionInterface; use Psr\Log\LoggerInterface; use Symfony\Component\Console\Application as SymfonyApplication; @@ -31,6 +32,7 @@ class Application { private SymfonyApplication $application; public function __construct( + ServerVersion $serverVersion, private IConfig $config, private IEventDispatcher $dispatcher, private IRequest $request, @@ -39,7 +41,7 @@ class Application { private IAppManager $appManager, private Defaults $defaults, ) { - $this->application = new SymfonyApplication($defaults->getName(), \OC_Util::getVersionString()); + $this->application = new SymfonyApplication($defaults->getName(), $serverVersion->getVersionString()); } /** diff --git a/lib/private/Files/Storage/Common.php b/lib/private/Files/Storage/Common.php index b6f14321f61..a9721c30d77 100644 --- a/lib/private/Files/Storage/Common.php +++ b/lib/private/Files/Storage/Common.php @@ -21,6 +21,7 @@ use OCP\Files\ForbiddenException; use OCP\Files\GenericFileException; use OCP\Files\IFilenameValidator; use OCP\Files\InvalidPathException; +use OCP\Files\Storage\IConstructableStorage; use OCP\Files\Storage\ILockingStorage; use OCP\Files\Storage\IStorage; use OCP\Files\Storage\IWriteStreamStorage; @@ -41,7 +42,7 @@ use Psr\Log\LoggerInterface; * Some \OC\Files\Storage\Common methods call functions which are first defined * in classes which extend it, e.g. $this->stat() . */ -abstract class Common implements Storage, ILockingStorage, IWriteStreamStorage { +abstract class Common implements Storage, ILockingStorage, IWriteStreamStorage, IConstructableStorage { use LocalTempFileTrait; protected ?Cache $cache = null; diff --git a/lib/private/Files/Storage/StorageFactory.php b/lib/private/Files/Storage/StorageFactory.php index 590425f5b64..f194228d3c8 100644 --- a/lib/private/Files/Storage/StorageFactory.php +++ b/lib/private/Files/Storage/StorageFactory.php @@ -8,8 +8,10 @@ namespace OC\Files\Storage; use OCP\Files\Mount\IMountPoint; +use OCP\Files\Storage\IConstructableStorage; use OCP\Files\Storage\IStorage; use OCP\Files\Storage\IStorageFactory; +use Psr\Log\LoggerInterface; class StorageFactory implements IStorageFactory { /** @@ -62,6 +64,9 @@ class StorageFactory implements IStorageFactory { * @return IStorage */ public function getInstance(IMountPoint $mountPoint, $class, $arguments) { + if (!($class instanceof IConstructableStorage)) { + \OCP\Server::get(LoggerInterface::class)->warning('Building a storage not implementing IConstructableStorage is deprecated since 31.0.0', ['class' => $class]); + } return $this->wrap($mountPoint, new $class($arguments)); } diff --git a/lib/private/IntegrityCheck/Checker.php b/lib/private/IntegrityCheck/Checker.php index a6a61555957..3a24e8632de 100644 --- a/lib/private/IntegrityCheck/Checker.php +++ b/lib/private/IntegrityCheck/Checker.php @@ -21,6 +21,7 @@ use OCP\IAppConfig; use OCP\ICache; use OCP\ICacheFactory; use OCP\IConfig; +use OCP\ServerVersion; use phpseclib\Crypt\RSA; use phpseclib\File\X509; @@ -40,6 +41,7 @@ class Checker { private ICache $cache; public function __construct( + private ServerVersion $serverVersion, private EnvironmentHelper $environmentHelper, private FileAccessHelper $fileAccessHelper, private AppLocator $appLocator, @@ -59,7 +61,7 @@ class Checker { */ public function isCodeCheckEnforced(): bool { $notSignedChannels = [ '', 'git']; - if (\in_array($this->environmentHelper->getChannel(), $notSignedChannels, true)) { + if (\in_array($this->serverVersion->getChannel(), $notSignedChannels, true)) { return false; } diff --git a/lib/private/IntegrityCheck/Helpers/EnvironmentHelper.php b/lib/private/IntegrityCheck/Helpers/EnvironmentHelper.php index dcdc7839f8e..583ae5e534f 100644 --- a/lib/private/IntegrityCheck/Helpers/EnvironmentHelper.php +++ b/lib/private/IntegrityCheck/Helpers/EnvironmentHelper.php @@ -23,13 +23,4 @@ class EnvironmentHelper { public function getServerRoot(): string { return rtrim(\OC::$SERVERROOT, '/'); } - - /** - * Provides \OC_Util::getChannel() - * - * @return string - */ - public function getChannel(): string { - return \OC_Util::getChannel(); - } } diff --git a/lib/private/Profiler/FileProfilerStorage.php b/lib/private/Profiler/FileProfilerStorage.php index a4021d064a9..cd45090e7ca 100644 --- a/lib/private/Profiler/FileProfilerStorage.php +++ b/lib/private/Profiler/FileProfilerStorage.php @@ -81,11 +81,11 @@ class FileProfilerStorage { $iterator = new \RecursiveIteratorIterator($iterator, \RecursiveIteratorIterator::CHILD_FIRST); foreach ($iterator as $file) { - $file = (string)$file->getPathInfo(); - if (is_file($file)) { - unlink($file); + $path = $file->getPathname(); + if (is_file($path)) { + unlink($path); } else { - rmdir($file); + rmdir($path); } } } diff --git a/lib/private/Server.php b/lib/private/Server.php index 943b4fc6997..19c3b72c11c 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -216,6 +216,7 @@ use OCP\Security\ISecureRandom; use OCP\Security\ITrustedDomainHelper; use OCP\Security\RateLimiting\ILimiter; use OCP\Security\VerificationToken\IVerificationToken; +use OCP\ServerVersion; use OCP\Settings\IDeclarativeManager; use OCP\SetupCheck\ISetupCheckManager; use OCP\Share\IProviderFactory; @@ -593,10 +594,12 @@ class Server extends ServerContainer implements IServerContainer { ); /** @var SystemConfig $config */ $config = $c->get(SystemConfig::class); + /** @var ServerVersion $serverVersion */ + $serverVersion = $c->get(ServerVersion::class); if ($config->getValue('installed', false) && !(defined('PHPUNIT_RUN') && PHPUNIT_RUN)) { $logQuery = $config->getValue('log_query'); - $prefixClosure = function () use ($logQuery) { + $prefixClosure = function () use ($logQuery, $serverVersion) { if (!$logQuery) { try { $v = \OC_App::getAppVersions(); @@ -613,7 +616,7 @@ class Server extends ServerContainer implements IServerContainer { 'log_query' => 'enabled', ]; } - $v['core'] = implode(',', \OC_Util::getVersion()); + $v['core'] = implode(',', $serverVersion->getVersion()); $version = implode(',', $v); $instanceId = \OC_Util::getInstanceId(); $path = \OC::$SERVERROOT; @@ -865,7 +868,8 @@ class Server extends ServerContainer implements IServerContainer { $appManager = $c->get(IAppManager::class); return new Checker( - new EnvironmentHelper(), + $c->get(ServerVersion::class), + $c->get(EnvironmentHelper::class), new FileAccessHelper(), new AppLocator(), $config, @@ -1056,7 +1060,7 @@ class Server extends ServerContainer implements IServerContainer { $c->get(IUserSession::class), $c->get(IURLGenerator::class), $c->get(ICacheFactory::class), - new Util($c->get(\OCP\IConfig::class), $this->get(IAppManager::class), $c->getAppDataDir('theming'), $imageManager), + new Util($c->get(ServerVersion::class), $c->get(\OCP\IConfig::class), $this->get(IAppManager::class), $c->getAppDataDir('theming'), $imageManager), $imageManager, $c->get(IAppManager::class), $c->get(INavigationManager::class), diff --git a/lib/private/Setup.php b/lib/private/Setup.php index fa10f238bde..e64f6806b87 100644 --- a/lib/private/Setup.php +++ b/lib/private/Setup.php @@ -32,6 +32,7 @@ use OCP\L10N\IFactory as IL10NFactory; use OCP\Migration\IOutput; use OCP\Security\ISecureRandom; use OCP\Server; +use OCP\ServerVersion; use Psr\Log\LoggerInterface; class Setup { @@ -380,7 +381,7 @@ class Setup { unlink(\OC::$configDir . '/CAN_INSTALL'); } - $bootstrapCoordinator = \OCP\Server::get(\OC\AppFramework\Bootstrap\Coordinator::class); + $bootstrapCoordinator = Server::get(\OC\AppFramework\Bootstrap\Coordinator::class); $bootstrapCoordinator->runInitialRegistration(); // Create a session token for the newly created user @@ -561,7 +562,7 @@ class Setup { } public function shouldRemoveCanInstallFile(): bool { - return \OC_Util::getChannel() !== 'git' && is_file(\OC::$configDir . '/CAN_INSTALL'); + return Server::get(ServerVersion::class)->getChannel() !== 'git' && is_file(\OC::$configDir . '/CAN_INSTALL'); } public function canInstallFileExists(): bool { diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php index d82e57415d3..1477560c6fd 100644 --- a/lib/private/Share20/Manager.php +++ b/lib/private/Share20/Manager.php @@ -130,34 +130,34 @@ class Manager implements IManager { if ($share->getShareType() === IShare::TYPE_USER) { // We expect a valid user as sharedWith for user shares if (!$this->userManager->userExists($share->getSharedWith())) { - throw new \InvalidArgumentException($this->l->t('SharedWith is not a valid user')); + throw new \InvalidArgumentException($this->l->t('Share recipient is not a valid user')); } } elseif ($share->getShareType() === IShare::TYPE_GROUP) { // We expect a valid group as sharedWith for group shares if (!$this->groupManager->groupExists($share->getSharedWith())) { - throw new \InvalidArgumentException($this->l->t('SharedWith is not a valid group')); + throw new \InvalidArgumentException($this->l->t('Share recipient is not a valid group')); } } elseif ($share->getShareType() === IShare::TYPE_LINK) { // No check for TYPE_EMAIL here as we have a recipient for them if ($share->getSharedWith() !== null) { - throw new \InvalidArgumentException($this->l->t('SharedWith should be empty')); + throw new \InvalidArgumentException($this->l->t('Share recipient should be empty')); } } elseif ($share->getShareType() === IShare::TYPE_EMAIL) { if ($share->getSharedWith() === null) { - throw new \InvalidArgumentException($this->l->t('SharedWith should not be empty')); + throw new \InvalidArgumentException($this->l->t('Share recipient should not be empty')); } } elseif ($share->getShareType() === IShare::TYPE_REMOTE) { if ($share->getSharedWith() === null) { - throw new \InvalidArgumentException($this->l->t('SharedWith should not be empty')); + throw new \InvalidArgumentException($this->l->t('Share recipient should not be empty')); } } elseif ($share->getShareType() === IShare::TYPE_REMOTE_GROUP) { if ($share->getSharedWith() === null) { - throw new \InvalidArgumentException($this->l->t('SharedWith should not be empty')); + throw new \InvalidArgumentException($this->l->t('Share recipient should not be empty')); } } elseif ($share->getShareType() === IShare::TYPE_CIRCLE) { $circle = \OCA\Circles\Api\v1\Circles::detailsCircle($share->getSharedWith()); if ($circle === null) { - throw new \InvalidArgumentException($this->l->t('SharedWith is not a valid circle')); + throw new \InvalidArgumentException($this->l->t('Share recipient is not a valid circle')); } } elseif ($share->getShareType() === IShare::TYPE_ROOM) { } elseif ($share->getShareType() === IShare::TYPE_DECK) { @@ -169,7 +169,7 @@ class Manager implements IManager { // Verify the initiator of the share is set if ($share->getSharedBy() === null) { - throw new \InvalidArgumentException($this->l->t('SharedBy should be set')); + throw new \InvalidArgumentException($this->l->t('Share initiator must be set')); } // Cannot share with yourself @@ -180,13 +180,13 @@ class Manager implements IManager { // The path should be set if ($share->getNode() === null) { - throw new \InvalidArgumentException($this->l->t('Path should be set')); + throw new \InvalidArgumentException($this->l->t('Shared path must be set')); } // And it should be a file or a folder if (!($share->getNode() instanceof \OCP\Files\File) && !($share->getNode() instanceof \OCP\Files\Folder)) { - throw new \InvalidArgumentException($this->l->t('Path should be either a file or a folder')); + throw new \InvalidArgumentException($this->l->t('Shared path must be either a file or a folder')); } // And you cannot share your rootfolder @@ -206,7 +206,7 @@ class Manager implements IManager { // Permissions should be set if ($share->getPermissions() === null) { - throw new \InvalidArgumentException($this->l->t('A share requires permissions')); + throw new \InvalidArgumentException($this->l->t('Valid permissions are required for sharing')); } $permissions = 0; @@ -227,7 +227,6 @@ class Manager implements IManager { throw new GenericShareException($this->l->t('Cannot increase permissions of %s', [$path]), code: 404); } - // Check that read permissions are always set // Link shares are allowed to have no read permissions to allow upload to hidden folders $noReadPermissionRequired = $share->getShareType() === IShare::TYPE_LINK @@ -1072,7 +1071,7 @@ class Manager implements IManager { } if ($share->getShareType() === IShare::TYPE_USER && $share->getSharedWith() !== $recipientId) { - throw new \InvalidArgumentException($this->l->t('Invalid recipient')); + throw new \InvalidArgumentException($this->l->t('Invalid share recipient')); } if ($share->getShareType() === IShare::TYPE_GROUP) { @@ -1082,7 +1081,7 @@ class Manager implements IManager { } $recipient = $this->userManager->get($recipientId); if (!$sharedWith->inGroup($recipient)) { - throw new \InvalidArgumentException($this->l->t('Invalid recipient')); + throw new \InvalidArgumentException($this->l->t('Invalid share recipient')); } } diff --git a/lib/private/Template/JSConfigHelper.php b/lib/private/Template/JSConfigHelper.php index 1dec8634aca..44563f2938c 100644 --- a/lib/private/Template/JSConfigHelper.php +++ b/lib/private/Template/JSConfigHelper.php @@ -30,6 +30,7 @@ use OCP\ILogger; use OCP\ISession; use OCP\IURLGenerator; use OCP\IUser; +use OCP\ServerVersion; use OCP\Session\Exceptions\SessionNotAvailableException; use OCP\Share\IManager as IShareManager; use OCP\User\Backend\IPasswordConfirmationBackend; @@ -41,6 +42,7 @@ class JSConfigHelper { private $excludedUserBackEnds = ['user_saml' => true, 'user_globalsiteselector' => true]; public function __construct( + protected ServerVersion $serverVersion, protected IL10N $l, protected Defaults $defaults, protected IAppManager $appManager, @@ -53,7 +55,7 @@ class JSConfigHelper { protected CapabilitiesManager $capabilitiesManager, protected IInitialStateService $initialStateService, protected IProvider $tokenProvider, - protected FilenameValidator $filenameValidator, + protected FilenameValidator $filenameValidator, ) { } @@ -154,8 +156,8 @@ class JSConfigHelper { 'session_lifetime' => min($this->config->getSystemValue('session_lifetime', $this->iniWrapper->getNumeric('session.gc_maxlifetime')), $this->iniWrapper->getNumeric('session.gc_maxlifetime')), 'sharing.maxAutocompleteResults' => max(0, $this->config->getSystemValueInt('sharing.maxAutocompleteResults', Constants::SHARING_MAX_AUTOCOMPLETE_RESULTS_DEFAULT)), 'sharing.minSearchStringLength' => $this->config->getSystemValueInt('sharing.minSearchStringLength', 0), - 'version' => implode('.', Util::getVersion()), - 'versionstring' => \OC_Util::getVersionString(), + 'version' => implode('.', $this->serverVersion->getVersion()), + 'versionstring' => $this->serverVersion->getVersionString(), 'enable_non-accessible_features' => $this->config->getSystemValueBool('enable_non-accessible_features', true), ]; diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php index 6c7cec90740..c21df495b5b 100644 --- a/lib/private/TemplateLayout.php +++ b/lib/private/TemplateLayout.php @@ -25,6 +25,7 @@ use OCP\IRequest; use OCP\IURLGenerator; use OCP\IUserSession; use OCP\L10N\IFactory; +use OCP\ServerVersion; use OCP\Support\Subscription\IRegistry; use OCP\Util; @@ -218,6 +219,7 @@ class TemplateLayout extends \OC_Template { // this is on purpose outside of the if statement below so that the initial state is prefilled (done in the getConfig() call) // see https://github.com/nextcloud/server/pull/22636 for details $jsConfigHelper = new JSConfigHelper( + \OCP\Server::get(ServerVersion::class), \OCP\Util::getL10N('lib'), \OCP\Server::get(Defaults::class), \OC::$server->getAppManager(), diff --git a/lib/private/Updater.php b/lib/private/Updater.php index 2ea680efcf5..c4631f2c7d3 100644 --- a/lib/private/Updater.php +++ b/lib/private/Updater.php @@ -31,6 +31,7 @@ use OCP\HintException; use OCP\IAppConfig; use OCP\IConfig; use OCP\ILogger; +use OCP\ServerVersion; use OCP\Util; use Psr\Log\LoggerInterface; @@ -53,6 +54,7 @@ class Updater extends BasicEmitter { ]; public function __construct( + private ServerVersion $serverVersion, private IConfig $config, private IAppConfig $appConfig, private Checker $checker, @@ -82,14 +84,14 @@ class Updater extends BasicEmitter { } // Clear CAN_INSTALL file if not on git - if (\OC_Util::getChannel() !== 'git' && is_file(\OC::$configDir . '/CAN_INSTALL')) { + if ($this->serverVersion->getChannel() !== 'git' && is_file(\OC::$configDir . '/CAN_INSTALL')) { if (!unlink(\OC::$configDir . '/CAN_INSTALL')) { $this->log->error('Could not cleanup CAN_INSTALL from your config folder. Please remove this file manually.'); } } $installedVersion = $this->config->getSystemValueString('version', '0.0.0'); - $currentVersion = implode('.', \OCP\Util::getVersion()); + $currentVersion = implode('.', $this->serverVersion->getVersion()); $this->log->debug('starting upgrade from ' . $installedVersion . ' to ' . $currentVersion, ['app' => 'core']); diff --git a/lib/private/Updater/VersionCheck.php b/lib/private/Updater/VersionCheck.php index cc5ff63379c..53bfc0d5d5f 100644 --- a/lib/private/Updater/VersionCheck.php +++ b/lib/private/Updater/VersionCheck.php @@ -11,12 +11,14 @@ use OCP\Http\Client\IClientService; use OCP\IAppConfig; use OCP\IConfig; use OCP\IUserManager; +use OCP\ServerVersion; use OCP\Support\Subscription\IRegistry; use OCP\Util; use Psr\Log\LoggerInterface; class VersionCheck { public function __construct( + private ServerVersion $serverVersion, private IClientService $clientService, private IConfig $config, private IAppConfig $appConfig, @@ -54,9 +56,9 @@ class VersionCheck { $version = Util::getVersion(); $version['installed'] = $this->config->getAppValue('core', 'installedat'); $version['updated'] = $this->appConfig->getValueInt('core', 'lastupdatedat'); - $version['updatechannel'] = \OC_Util::getChannel(); + $version['updatechannel'] = $this->serverVersion->getChannel(); $version['edition'] = ''; - $version['build'] = \OC_Util::getBuild(); + $version['build'] = $this->serverVersion->getBuild(); $version['php_major'] = PHP_MAJOR_VERSION; $version['php_minor'] = PHP_MINOR_VERSION; $version['php_release'] = PHP_RELEASE_VERSION; diff --git a/lib/private/User/LazyUser.php b/lib/private/User/LazyUser.php index cd3e268be48..92a0c735215 100644 --- a/lib/private/User/LazyUser.php +++ b/lib/private/User/LazyUser.php @@ -36,9 +36,12 @@ class LazyUser implements IUser { $this->user = $this->userManager->get($this->uid); } } - /** @var IUser */ - $user = $this->user; - return $user; + + if ($this->user === null) { + throw new NoUserException('User not found in backend'); + } + + return $this->user; } public function getUID() { diff --git a/lib/private/User/Manager.php b/lib/private/User/Manager.php index e21759b1e98..3ee748a2775 100644 --- a/lib/private/User/Manager.php +++ b/lib/private/User/Manager.php @@ -68,6 +68,7 @@ class Manager extends PublicEmitter implements IUserManager { private IConfig $config, ICacheFactory $cacheFactory, private IEventDispatcher $eventDispatcher, + private LoggerInterface $logger, ) { $this->cache = new WithLocalCache($cacheFactory->createDistributed('user_backend_map')); $this->listen('\OC\User', 'postDelete', function (IUser $user): void { @@ -201,7 +202,7 @@ class Manager extends PublicEmitter implements IUserManager { $result = $this->checkPasswordNoLogging($loginName, $password); if ($result === false) { - \OCP\Server::get(LoggerInterface::class)->warning('Login failed: \'' . $loginName . '\' (Remote IP: \'' . \OC::$server->getRequest()->getRemoteAddress() . '\')', ['app' => 'core']); + $this->logger->warning('Login failed: \'' . $loginName . '\' (Remote IP: \'' . \OC::$server->getRequest()->getRemoteAddress() . '\')', ['app' => 'core']); } return $result; @@ -319,11 +320,16 @@ class Manager extends PublicEmitter implements IUserManager { if ($search !== '') { $users = array_filter( $users, - fn (IUser $user): bool => - mb_stripos($user->getUID(), $search) !== false || - mb_stripos($user->getDisplayName(), $search) !== false || - mb_stripos($user->getEMailAddress() ?? '', $search) !== false, - ); + function (IUser $user) use ($search): bool { + try { + return mb_stripos($user->getUID(), $search) !== false || + mb_stripos($user->getDisplayName(), $search) !== false || + mb_stripos($user->getEMailAddress() ?? '', $search) !== false; + } catch (NoUserException $ex) { + $this->logger->error('Error while filtering disabled users', ['exception' => $ex, 'userUID' => $user->getUID()]); + return false; + } + }); } $tempLimit = ($limit === null ? null : $limit + $offset); diff --git a/lib/private/legacy/OC_Defaults.php b/lib/private/legacy/OC_Defaults.php index cc0ac687ccc..f7015a1863a 100644 --- a/lib/private/legacy/OC_Defaults.php +++ b/lib/private/legacy/OC_Defaults.php @@ -6,6 +6,10 @@ * SPDX-License-Identifier: AGPL-3.0-only */ +use OCP\IConfig; +use OCP\Server; +use OCP\ServerVersion; + class OC_Defaults { private $theme; @@ -27,7 +31,8 @@ class OC_Defaults { private $defaultProductName; public function __construct() { - $config = \OC::$server->getConfig(); + $config = Server::get(IConfig::class); + $serverVersion = Server::get(ServerVersion::class); $this->defaultEntity = 'Nextcloud'; /* e.g. company name, used for footers and copyright notices */ $this->defaultName = 'Nextcloud'; /* short name, used when referring to the software */ @@ -39,7 +44,7 @@ class OC_Defaults { $this->defaultAndroidClientUrl = $config->getSystemValue('customclient_android', 'https://play.google.com/store/apps/details?id=com.nextcloud.client'); $this->defaultFDroidClientUrl = $config->getSystemValue('customclient_fdroid', 'https://f-droid.org/packages/com.nextcloud.client/'); $this->defaultDocBaseUrl = 'https://docs.nextcloud.com'; - $this->defaultDocVersion = \OC_Util::getVersion()[0]; // used to generate doc links + $this->defaultDocVersion = $serverVersion->getMajorVersion(); // used to generate doc links $this->defaultColorBackground = '#00679e'; $this->defaultColorPrimary = '#00679e'; $this->defaultTextColorPrimary = '#ffffff'; diff --git a/lib/private/legacy/OC_Util.php b/lib/private/legacy/OC_Util.php index c390b7727e9..7b41f797e32 100644 --- a/lib/private/legacy/OC_Util.php +++ b/lib/private/legacy/OC_Util.php @@ -216,76 +216,6 @@ class OC_Util { } /** - * get the current installed version of ownCloud - * - * @return array - */ - public static function getVersion() { - OC_Util::loadVersion(); - return self::$versionCache['OC_Version']; - } - - /** - * get the current installed version string of ownCloud - * - * @return string - */ - public static function getVersionString() { - OC_Util::loadVersion(); - return self::$versionCache['OC_VersionString']; - } - - /** - * @deprecated 11.0.0 the value is of no use anymore - * @return string - */ - public static function getEditionString() { - return ''; - } - - /** - * @description get the update channel of the current installed of ownCloud. - * @return string - */ - public static function getChannel() { - OC_Util::loadVersion(); - return \OC::$server->getConfig()->getSystemValueString('updater.release.channel', self::$versionCache['OC_Channel']); - } - - /** - * @description get the build number of the current installed of ownCloud. - * @return string - */ - public static function getBuild() { - OC_Util::loadVersion(); - return self::$versionCache['OC_Build']; - } - - /** - * @description load the version.php into the session as cache - * @suppress PhanUndeclaredVariable - */ - private static function loadVersion() { - if (self::$versionCache !== null) { - return; - } - - $timestamp = filemtime(OC::$SERVERROOT . '/version.php'); - require OC::$SERVERROOT . '/version.php'; - /** @var int $timestamp */ - self::$versionCache['OC_Version_Timestamp'] = $timestamp; - /** @var string $OC_Version */ - self::$versionCache['OC_Version'] = $OC_Version; - /** @var string $OC_VersionString */ - self::$versionCache['OC_VersionString'] = $OC_VersionString; - /** @var string $OC_Build */ - self::$versionCache['OC_Build'] = $OC_Build; - - /** @var string $OC_Channel */ - self::$versionCache['OC_Channel'] = $OC_Channel; - } - - /** * generates a path for JS/CSS files. If no application is provided it will create the path for core. * * @param string $application application to get the files from @@ -1022,20 +952,6 @@ class OC_Util { } /** - * A human readable string is generated based on version and build number - * - * @return string - */ - public static function getHumanVersion() { - $version = OC_Util::getVersionString(); - $build = OC_Util::getBuild(); - if (!empty($build) and OC_Util::getChannel() === 'daily') { - $version .= ' Build:' . $build; - } - return $version; - } - - /** * Check whether the instance needs to perform an upgrade, * either when the core version is higher or any app requires * an upgrade. diff --git a/lib/public/Files/Storage/IConstructableStorage.php b/lib/public/Files/Storage/IConstructableStorage.php new file mode 100644 index 00000000000..57749fa30fa --- /dev/null +++ b/lib/public/Files/Storage/IConstructableStorage.php @@ -0,0 +1,26 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-only + */ +// use OCP namespace for all classes that are considered public. +// This means that they should be used by apps instead of the internal Nextcloud classes + +namespace OCP\Files\Storage; + +/** + * Marks a storage as constructable. Allows to pass the storage as a string to a mounpoint and let it build the instance. + * + * @since 31.0.0 + */ +interface IConstructableStorage { + /** + * @param array $parameters is a free form array with the configuration options needed to construct the storage + * + * @since 31.0.0 + */ + public function __construct(array $parameters); +} diff --git a/lib/public/Files/Storage/IStorage.php b/lib/public/Files/Storage/IStorage.php index 2016c273f91..2368e126bb7 100644 --- a/lib/public/Files/Storage/IStorage.php +++ b/lib/public/Files/Storage/IStorage.php @@ -23,17 +23,10 @@ use OCP\Files\InvalidPathException; * All paths passed to the storage are relative to the storage and should NOT have a leading slash. * * @since 9.0.0 + * @since 31.0.0 Moved the constructor to IConstructableStorage so that wrappers can use DI */ interface IStorage { /** - * $parameters is a free form array with the configuration options needed to construct the storage - * - * @param array $parameters - * @since 9.0.0 - */ - public function __construct($parameters); - - /** * Get the identifier for the storage, * the returned id should be the same for every storage object that is created with the same parameters * and two storage objects with the same id should refer to two storages that display the same files. diff --git a/lib/public/ServerVersion.php b/lib/public/ServerVersion.php new file mode 100644 index 00000000000..637c34d3619 --- /dev/null +++ b/lib/public/ServerVersion.php @@ -0,0 +1,102 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace OCP; + +/** + * @since 31.0.0 + */ +class ServerVersion { + + private array $version; + private string $versionString; + private string $build; + /** @var 'beta'|'stable'|'enterprise'|'git' */ + private string $channel; + + /** + * @since 31.0.0 + */ + public function __construct() { + $versionFile = __DIR__ . '/../../version.php'; + require $versionFile; + + /** @var int[] $OC_Version */ + $this->version = $OC_Version; + /** @var string $OC_VersionString */ + $this->versionString = $OC_VersionString; + /** @var string $OC_Build */ + $this->build = $OC_Build; + /** @var string $OC_Channel */ + $this->channel = $OC_Channel; + } + + /** + * @since 31.0.0 + */ + public function getMajorVersion(): int { + return $this->version[0]; + } + + /** + * @since 31.0.0 + */ + public function getMinorVersion(): int { + return $this->version[1]; + } + + /** + * @since 31.0.0 + */ + public function getPatchVersion(): int { + return $this->version[2]; + } + + /** + * @since 31.0.0 + */ + public function getVersion(): array { + return $this->version; + } + + /** + * @since 31.0.0 + */ + public function getVersionString(): string { + return $this->versionString; + } + + /** + * @psalm-return 'beta'|'stable'|'enterprise'|'git' + * @since 31.0.0 + */ + public function getChannel(): string { + return $this->channel; + } + + /** + * @since 31.0.0 + */ + public function getBuild(): string { + return $this->build; + } + + /** + * @since 31.0.0 + */ + public function getHumanVersion(): string { + $version = $this->getVersionString(); + $build = $this->getBuild(); + if (!empty($build) && $this->getChannel() === 'daily') { + $version .= ' Build:' . $build; + } + return $version; + + } +} diff --git a/lib/public/Util.php b/lib/public/Util.php index 520e4616de5..28da91c9a0f 100644 --- a/lib/public/Util.php +++ b/lib/public/Util.php @@ -35,9 +35,10 @@ class Util { * get the current installed version of Nextcloud * @return array * @since 4.0.0 + * @deprecated 31.0.0 Use \OCP\ServerVersion::getVersion */ public static function getVersion() { - return \OC_Util::getVersion(); + return Server::get(ServerVersion::class)->getVersion(); } /** @@ -46,7 +47,7 @@ class Util { public static function hasExtendedSupport(): bool { try { /** @var \OCP\Support\Subscription\IRegistry */ - $subscriptionRegistry = \OCP\Server::get(\OCP\Support\Subscription\IRegistry::class); + $subscriptionRegistry = Server::get(\OCP\Support\Subscription\IRegistry::class); return $subscriptionRegistry->delegateHasExtendedSupport(); } catch (ContainerExceptionInterface $e) { } @@ -66,9 +67,10 @@ class Util { * Get current update channel * @return string * @since 8.1.0 + * @deprecated 31.0.0 Use \OCP\ServerVersion::getChannel */ public static function getChannel() { - return \OC_Util::getChannel(); + return \OCP\Server::get(ServerVersion::class)->getChannel(); } /** @@ -567,7 +569,7 @@ class Util { if (!function_exists($functionName)) { return false; } - $ini = \OCP\Server::get(IniGetWrapper::class); + $ini = Server::get(IniGetWrapper::class); $disabled = explode(',', $ini->get('disable_functions') ?: ''); $disabled = array_map('trim', $disabled); if (in_array($functionName, $disabled)) { |