Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/base.php25
-rw-r--r--lib/composer/composer/autoload_classmap.php17
-rw-r--r--lib/composer/composer/autoload_static.php17
-rw-r--r--lib/l10n/af.js16
-rw-r--r--lib/l10n/af.json14
-rw-r--r--lib/l10n/nb.js55
-rw-r--r--lib/l10n/nb.json55
-rw-r--r--lib/l10n/pl.js6
-rw-r--r--lib/l10n/pl.json6
-rw-r--r--lib/l10n/zh_CN.js16
-rw-r--r--lib/l10n/zh_CN.json16
-rw-r--r--lib/private/Activity/Manager.php2
-rw-r--r--lib/private/AllConfig.php36
-rw-r--r--lib/private/App/InfoParser.php16
-rw-r--r--lib/private/Collaboration/Collaborators/GroupPlugin.php4
-rw-r--r--lib/private/Collaboration/Collaborators/LookupPlugin.php4
-rw-r--r--lib/private/Console/Application.php10
-rw-r--r--lib/private/Federation/CloudFederationProviderManager.php7
-rw-r--r--lib/private/Files/Cache/AbstractCacheEvent.php68
-rw-r--r--lib/private/Files/Cache/Cache.php8
-rw-r--r--lib/private/Files/FileInfo.php18
-rw-r--r--lib/private/Files/Node/LazyRoot.php2
-rw-r--r--lib/private/Files/Node/Node.php5
-rw-r--r--lib/private/Files/Node/NonExistingFile.php4
-rw-r--r--lib/private/Files/Node/NonExistingFolder.php4
-rw-r--r--lib/private/Files/Node/Root.php3
-rw-r--r--lib/private/Files/ObjectStore/ObjectStoreStorage.php4
-rw-r--r--lib/private/Files/ObjectStore/S3ObjectTrait.php25
-rw-r--r--lib/private/Files/Stream/CountReadStream.php65
-rw-r--r--lib/private/Group/Group.php11
-rw-r--r--lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php37
-rw-r--r--lib/private/Mail/EMailTemplate.php1
-rw-r--r--lib/private/NavigationManager.php6
-rw-r--r--lib/private/Repair.php2
-rw-r--r--lib/private/Repair/NC16/AddClenupLoginFlowV2BackgroundJob.php49
-rw-r--r--lib/private/Route/Router.php2
-rw-r--r--lib/private/Server.php3
-rw-r--r--lib/private/Settings/Admin/Security.php26
-rw-r--r--lib/private/Setup.php1
-rw-r--r--lib/private/Share20/Manager.php6
-rw-r--r--lib/private/TemplateLayout.php14
-rw-r--r--lib/private/Updater.php3
-rw-r--r--lib/private/legacy/app.php2
-rw-r--r--lib/public/AppFramework/Http/RedirectToDefaultAppResponse.php40
-rw-r--r--lib/public/Collaboration/AutoComplete/AutoCompleteEvent.php99
-rw-r--r--lib/public/Files/Cache/CacheInsertEvent.php48
-rw-r--r--lib/public/Files/Cache/CacheUpdateEvent.php32
-rw-r--r--lib/public/Files/Cache/ICacheEvent.php47
-rw-r--r--lib/public/Files/FileInfo.php3
-rw-r--r--lib/public/Files/Node.php3
-rw-r--r--lib/public/FullTextSearch/Model/ISearchResult.php2
-rw-r--r--lib/public/FullTextSearch/Model/IndexDocument.php11
-rw-r--r--lib/public/Group/Backend/IHideFromCollaborationBackend.php38
-rw-r--r--lib/public/IConfig.php30
-rw-r--r--lib/public/IGroup.php6
-rw-r--r--lib/public/INavigationManager.php21
56 files changed, 821 insertions, 250 deletions
diff --git a/lib/base.php b/lib/base.php
index 90fa5496200..1c9aaaf7b01 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -285,7 +285,7 @@ class OC {
public static function checkMaintenanceMode() {
// Allow ajax update script to execute without being stopped
- if (\OC::$server->getSystemConfig()->getValue('maintenance', false) && OC::$SUBURI != '/core/ajax/update.php') {
+ if (((bool) \OC::$server->getSystemConfig()->getValue('maintenance', false)) && OC::$SUBURI != '/core/ajax/update.php') {
// send http status 503
http_response_code(503);
header('Retry-After: 120');
@@ -456,20 +456,6 @@ class OC {
return \OC::$server->getConfig()->getSystemValue('session_lifetime', 60 * 60 * 24);
}
- public static function loadAppClassPaths() {
- foreach (OC_App::getEnabledApps() as $app) {
- $appPath = OC_App::getAppPath($app);
- if ($appPath === false) {
- continue;
- }
-
- $file = $appPath . '/appinfo/classpath.php';
- if (file_exists($file)) {
- require_once $file;
- }
- }
- }
-
/**
* Try to set some values to the required Nextcloud default
*/
@@ -905,9 +891,6 @@ class OC {
\OC::$server->getEventLogger()->start('handle_request', 'Handle request');
$systemConfig = \OC::$server->getSystemConfig();
- // load all the classpaths from the enabled apps so they are available
- // in the routing files of each app
- OC::loadAppClassPaths();
// Check if Nextcloud is installed or in maintenance (update) mode
if (!$systemConfig->getValue('installed', false)) {
@@ -938,7 +921,7 @@ class OC {
if (function_exists('opcache_reset')) {
opcache_reset();
}
- if (!$systemConfig->getValue('maintenance', false)) {
+ if (!((bool) $systemConfig->getValue('maintenance', false))) {
self::printUpgradePage($systemConfig);
exit();
}
@@ -966,7 +949,7 @@ class OC {
// Load minimum set of apps
if (!\OCP\Util::needUpgrade()
- && !$systemConfig->getValue('maintenance', false)) {
+ && !((bool) $systemConfig->getValue('maintenance', false))) {
// For logged-in users: Load everything
if(\OC::$server->getUserSession()->isLoggedIn()) {
OC_App::loadApps();
@@ -979,7 +962,7 @@ class OC {
if (!self::$CLI) {
try {
- if (!$systemConfig->getValue('maintenance', false) && !\OCP\Util::needUpgrade()) {
+ if (!((bool) $systemConfig->getValue('maintenance', false)) && !\OCP\Util::needUpgrade()) {
OC_App::loadApps(array('filesystem', 'logging'));
OC_App::loadApps();
}
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index afa82f95856..e1f5e2b8c9c 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -44,6 +44,7 @@ return array(
'OCP\\AppFramework\\Http\\NotFoundResponse' => $baseDir . '/lib/public/AppFramework/Http/NotFoundResponse.php',
'OCP\\AppFramework\\Http\\OCSResponse' => $baseDir . '/lib/public/AppFramework/Http/OCSResponse.php',
'OCP\\AppFramework\\Http\\RedirectResponse' => $baseDir . '/lib/public/AppFramework/Http/RedirectResponse.php',
+ 'OCP\\AppFramework\\Http\\RedirectToDefaultAppResponse' => $baseDir . '/lib/public/AppFramework/Http/RedirectToDefaultAppResponse.php',
'OCP\\AppFramework\\Http\\Response' => $baseDir . '/lib/public/AppFramework/Http/Response.php',
'OCP\\AppFramework\\Http\\StandaloneTemplateResponse' => $baseDir . '/lib/public/AppFramework/Http/StandaloneTemplateResponse.php',
'OCP\\AppFramework\\Http\\StreamResponse' => $baseDir . '/lib/public/AppFramework/Http/StreamResponse.php',
@@ -104,6 +105,7 @@ return array(
'OCP\\Calendar\\Room\\IRoom' => $baseDir . '/lib/public/Calendar/Room/IRoom.php',
'OCP\\Capabilities\\ICapability' => $baseDir . '/lib/public/Capabilities/ICapability.php',
'OCP\\Capabilities\\IPublicCapability' => $baseDir . '/lib/public/Capabilities/IPublicCapability.php',
+ 'OCP\\Collaboration\\AutoComplete\\AutoCompleteEvent' => $baseDir . '/lib/public/Collaboration/AutoComplete/AutoCompleteEvent.php',
'OCP\\Collaboration\\AutoComplete\\IManager' => $baseDir . '/lib/public/Collaboration/AutoComplete/IManager.php',
'OCP\\Collaboration\\AutoComplete\\ISorter' => $baseDir . '/lib/public/Collaboration/AutoComplete/ISorter.php',
'OCP\\Collaboration\\Collaborators\\ISearch' => $baseDir . '/lib/public/Collaboration/Collaborators/ISearch.php',
@@ -174,8 +176,10 @@ return array(
'OCP\\Files' => $baseDir . '/lib/public/Files.php',
'OCP\\Files\\AlreadyExistsException' => $baseDir . '/lib/public/Files/AlreadyExistsException.php',
'OCP\\Files\\Cache\\CacheInsertEvent' => $baseDir . '/lib/public/Files/Cache/CacheInsertEvent.php',
+ 'OCP\\Files\\Cache\\CacheUpdateEvent' => $baseDir . '/lib/public/Files/Cache/CacheUpdateEvent.php',
'OCP\\Files\\Cache\\ICache' => $baseDir . '/lib/public/Files/Cache/ICache.php',
'OCP\\Files\\Cache\\ICacheEntry' => $baseDir . '/lib/public/Files/Cache/ICacheEntry.php',
+ 'OCP\\Files\\Cache\\ICacheEvent' => $baseDir . '/lib/public/Files/Cache/ICacheEvent.php',
'OCP\\Files\\Cache\\IPropagator' => $baseDir . '/lib/public/Files/Cache/IPropagator.php',
'OCP\\Files\\Cache\\IScanner' => $baseDir . '/lib/public/Files/Cache/IScanner.php',
'OCP\\Files\\Cache\\IUpdater' => $baseDir . '/lib/public/Files/Cache/IUpdater.php',
@@ -264,6 +268,7 @@ return array(
'OCP\\Group\\Backend\\ICreateGroupBackend' => $baseDir . '/lib/public/Group/Backend/ICreateGroupBackend.php',
'OCP\\Group\\Backend\\IDeleteGroupBackend' => $baseDir . '/lib/public/Group/Backend/IDeleteGroupBackend.php',
'OCP\\Group\\Backend\\IGroupDetailsBackend' => $baseDir . '/lib/public/Group/Backend/IGroupDetailsBackend.php',
+ 'OCP\\Group\\Backend\\IHideFromCollaborationBackend' => $baseDir . '/lib/public/Group/Backend/IHideFromCollaborationBackend.php',
'OCP\\Group\\Backend\\IIsAdminBackend' => $baseDir . '/lib/public/Group/Backend/IIsAdminBackend.php',
'OCP\\Group\\Backend\\IRemoveFromGroupBackend' => $baseDir . '/lib/public/Group/Backend/IRemoveFromGroupBackend.php',
'OCP\\Group\\ISubAdmin' => $baseDir . '/lib/public/Group/ISubAdmin.php',
@@ -563,6 +568,7 @@ return array(
'OC\\Contacts\\ContactsMenu\\Providers\\EMailProvider' => $baseDir . '/lib/private/Contacts/ContactsMenu/Providers/EMailProvider.php',
'OC\\Core\\Application' => $baseDir . '/core/Application.php',
'OC\\Core\\BackgroundJobs\\BackgroundCleanupUpdaterBackupsJob' => $baseDir . '/core/BackgroundJobs/BackgroundCleanupUpdaterBackupsJob.php',
+ 'OC\\Core\\BackgroundJobs\\CleanupLoginFlowV2' => $baseDir . '/core/BackgroundJobs/CleanupLoginFlowV2.php',
'OC\\Core\\Command\\App\\CheckCode' => $baseDir . '/core/Command/App/CheckCode.php',
'OC\\Core\\Command\\App\\Disable' => $baseDir . '/core/Command/App/Disable.php',
'OC\\Core\\Command\\App\\Enable' => $baseDir . '/core/Command/App/Enable.php',
@@ -652,6 +658,7 @@ return array(
'OC\\Core\\Controller\\AvatarController' => $baseDir . '/core/Controller/AvatarController.php',
'OC\\Core\\Controller\\CSRFTokenController' => $baseDir . '/core/Controller/CSRFTokenController.php',
'OC\\Core\\Controller\\ClientFlowLoginController' => $baseDir . '/core/Controller/ClientFlowLoginController.php',
+ 'OC\\Core\\Controller\\ClientFlowLoginV2Controller' => $baseDir . '/core/Controller/ClientFlowLoginV2Controller.php',
'OC\\Core\\Controller\\ContactsMenuController' => $baseDir . '/core/Controller/ContactsMenuController.php',
'OC\\Core\\Controller\\CssController' => $baseDir . '/core/Controller/CssController.php',
'OC\\Core\\Controller\\GuestAvatarController' => $baseDir . '/core/Controller/GuestAvatarController.php',
@@ -669,6 +676,11 @@ return array(
'OC\\Core\\Controller\\UserController' => $baseDir . '/core/Controller/UserController.php',
'OC\\Core\\Controller\\WalledGardenController' => $baseDir . '/core/Controller/WalledGardenController.php',
'OC\\Core\\Controller\\WhatsNewController' => $baseDir . '/core/Controller/WhatsNewController.php',
+ 'OC\\Core\\Data\\LoginFlowV2Credentials' => $baseDir . '/core/Data/LoginFlowV2Credentials.php',
+ 'OC\\Core\\Data\\LoginFlowV2Tokens' => $baseDir . '/core/Data/LoginFlowV2Tokens.php',
+ 'OC\\Core\\Db\\LoginFlowV2' => $baseDir . '/core/Db/LoginFlowV2.php',
+ 'OC\\Core\\Db\\LoginFlowV2Mapper' => $baseDir . '/core/Db/LoginFlowV2Mapper.php',
+ 'OC\\Core\\Exception\\LoginFlowV2NotFoundException' => $baseDir . '/core/Exception/LoginFlowV2NotFoundException.php',
'OC\\Core\\Middleware\\TwoFactorMiddleware' => $baseDir . '/core/Middleware/TwoFactorMiddleware.php',
'OC\\Core\\Migrations\\Version13000Date20170705121758' => $baseDir . '/core/Migrations/Version13000Date20170705121758.php',
'OC\\Core\\Migrations\\Version13000Date20170718121200' => $baseDir . '/core/Migrations/Version13000Date20170718121200.php',
@@ -686,6 +698,8 @@ return array(
'OC\\Core\\Migrations\\Version15000Date20180926101451' => $baseDir . '/core/Migrations/Version15000Date20180926101451.php',
'OC\\Core\\Migrations\\Version15000Date20181015062942' => $baseDir . '/core/Migrations/Version15000Date20181015062942.php',
'OC\\Core\\Migrations\\Version15000Date20181029084625' => $baseDir . '/core/Migrations/Version15000Date20181029084625.php',
+ 'OC\\Core\\Migrations\\Version16000Date20190212081545' => $baseDir . '/core/Migrations/Version16000Date20190212081545.php',
+ 'OC\\Core\\Service\\LoginFlowV2Service' => $baseDir . '/core/Service/LoginFlowV2Service.php',
'OC\\DB\\Adapter' => $baseDir . '/lib/private/DB/Adapter.php',
'OC\\DB\\AdapterMySQL' => $baseDir . '/lib/private/DB/AdapterMySQL.php',
'OC\\DB\\AdapterOCI8' => $baseDir . '/lib/private/DB/AdapterOCI8.php',
@@ -759,6 +773,7 @@ return array(
'OC\\Federation\\CloudIdManager' => $baseDir . '/lib/private/Federation/CloudIdManager.php',
'OC\\Files\\AppData\\AppData' => $baseDir . '/lib/private/Files/AppData/AppData.php',
'OC\\Files\\AppData\\Factory' => $baseDir . '/lib/private/Files/AppData/Factory.php',
+ 'OC\\Files\\Cache\\AbstractCacheEvent' => $baseDir . '/lib/private/Files/Cache/AbstractCacheEvent.php',
'OC\\Files\\Cache\\Cache' => $baseDir . '/lib/private/Files/Cache/Cache.php',
'OC\\Files\\Cache\\CacheEntry' => $baseDir . '/lib/private/Files/Cache/CacheEntry.php',
'OC\\Files\\Cache\\FailedCache' => $baseDir . '/lib/private/Files/Cache/FailedCache.php',
@@ -838,7 +853,6 @@ return array(
'OC\\Files\\Storage\\Wrapper\\PermissionsMask' => $baseDir . '/lib/private/Files/Storage/Wrapper/PermissionsMask.php',
'OC\\Files\\Storage\\Wrapper\\Quota' => $baseDir . '/lib/private/Files/Storage/Wrapper/Quota.php',
'OC\\Files\\Storage\\Wrapper\\Wrapper' => $baseDir . '/lib/private/Files/Storage/Wrapper/Wrapper.php',
- 'OC\\Files\\Stream\\CountReadStream' => $baseDir . '/lib/private/Files/Stream/CountReadStream.php',
'OC\\Files\\Stream\\Encryption' => $baseDir . '/lib/private/Files/Stream/Encryption.php',
'OC\\Files\\Stream\\Quota' => $baseDir . '/lib/private/Files/Stream/Quota.php',
'OC\\Files\\Type\\Detection' => $baseDir . '/lib/private/Files/Type/Detection.php',
@@ -983,6 +997,7 @@ return array(
'OC\\Repair\\NC14\\AddPreviewBackgroundCleanupJob' => $baseDir . '/lib/private/Repair/NC14/AddPreviewBackgroundCleanupJob.php',
'OC\\Repair\\NC14\\RepairPendingCronJobs' => $baseDir . '/lib/private/Repair/NC14/RepairPendingCronJobs.php',
'OC\\Repair\\NC15\\SetVcardDatabaseUID' => $baseDir . '/lib/private/Repair/NC15/SetVcardDatabaseUID.php',
+ 'OC\\Repair\\NC16\\AddClenupLoginFlowV2BackgroundJob' => $baseDir . '/lib/private/Repair/NC16/AddClenupLoginFlowV2BackgroundJob.php',
'OC\\Repair\\NC16\\CleanupCardDAVPhotoCache' => $baseDir . '/lib/private/Repair/NC16/CleanupCardDAVPhotoCache.php',
'OC\\Repair\\OldGroupMembershipShares' => $baseDir . '/lib/private/Repair/OldGroupMembershipShares.php',
'OC\\Repair\\Owncloud\\DropAccountTermsTable' => $baseDir . '/lib/private/Repair/Owncloud/DropAccountTermsTable.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index 8d612edda58..3f7132316ad 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -74,6 +74,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\AppFramework\\Http\\NotFoundResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/NotFoundResponse.php',
'OCP\\AppFramework\\Http\\OCSResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/OCSResponse.php',
'OCP\\AppFramework\\Http\\RedirectResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/RedirectResponse.php',
+ 'OCP\\AppFramework\\Http\\RedirectToDefaultAppResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/RedirectToDefaultAppResponse.php',
'OCP\\AppFramework\\Http\\Response' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Response.php',
'OCP\\AppFramework\\Http\\StandaloneTemplateResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/StandaloneTemplateResponse.php',
'OCP\\AppFramework\\Http\\StreamResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/StreamResponse.php',
@@ -134,6 +135,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\Calendar\\Room\\IRoom' => __DIR__ . '/../../..' . '/lib/public/Calendar/Room/IRoom.php',
'OCP\\Capabilities\\ICapability' => __DIR__ . '/../../..' . '/lib/public/Capabilities/ICapability.php',
'OCP\\Capabilities\\IPublicCapability' => __DIR__ . '/../../..' . '/lib/public/Capabilities/IPublicCapability.php',
+ 'OCP\\Collaboration\\AutoComplete\\AutoCompleteEvent' => __DIR__ . '/../../..' . '/lib/public/Collaboration/AutoComplete/AutoCompleteEvent.php',
'OCP\\Collaboration\\AutoComplete\\IManager' => __DIR__ . '/../../..' . '/lib/public/Collaboration/AutoComplete/IManager.php',
'OCP\\Collaboration\\AutoComplete\\ISorter' => __DIR__ . '/../../..' . '/lib/public/Collaboration/AutoComplete/ISorter.php',
'OCP\\Collaboration\\Collaborators\\ISearch' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Collaborators/ISearch.php',
@@ -204,8 +206,10 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\Files' => __DIR__ . '/../../..' . '/lib/public/Files.php',
'OCP\\Files\\AlreadyExistsException' => __DIR__ . '/../../..' . '/lib/public/Files/AlreadyExistsException.php',
'OCP\\Files\\Cache\\CacheInsertEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/CacheInsertEvent.php',
+ 'OCP\\Files\\Cache\\CacheUpdateEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/CacheUpdateEvent.php',
'OCP\\Files\\Cache\\ICache' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/ICache.php',
'OCP\\Files\\Cache\\ICacheEntry' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/ICacheEntry.php',
+ 'OCP\\Files\\Cache\\ICacheEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/ICacheEvent.php',
'OCP\\Files\\Cache\\IPropagator' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/IPropagator.php',
'OCP\\Files\\Cache\\IScanner' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/IScanner.php',
'OCP\\Files\\Cache\\IUpdater' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/IUpdater.php',
@@ -294,6 +298,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\Group\\Backend\\ICreateGroupBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/ICreateGroupBackend.php',
'OCP\\Group\\Backend\\IDeleteGroupBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/IDeleteGroupBackend.php',
'OCP\\Group\\Backend\\IGroupDetailsBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/IGroupDetailsBackend.php',
+ 'OCP\\Group\\Backend\\IHideFromCollaborationBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/IHideFromCollaborationBackend.php',
'OCP\\Group\\Backend\\IIsAdminBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/IIsAdminBackend.php',
'OCP\\Group\\Backend\\IRemoveFromGroupBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/IRemoveFromGroupBackend.php',
'OCP\\Group\\ISubAdmin' => __DIR__ . '/../../..' . '/lib/public/Group/ISubAdmin.php',
@@ -593,6 +598,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Contacts\\ContactsMenu\\Providers\\EMailProvider' => __DIR__ . '/../../..' . '/lib/private/Contacts/ContactsMenu/Providers/EMailProvider.php',
'OC\\Core\\Application' => __DIR__ . '/../../..' . '/core/Application.php',
'OC\\Core\\BackgroundJobs\\BackgroundCleanupUpdaterBackupsJob' => __DIR__ . '/../../..' . '/core/BackgroundJobs/BackgroundCleanupUpdaterBackupsJob.php',
+ 'OC\\Core\\BackgroundJobs\\CleanupLoginFlowV2' => __DIR__ . '/../../..' . '/core/BackgroundJobs/CleanupLoginFlowV2.php',
'OC\\Core\\Command\\App\\CheckCode' => __DIR__ . '/../../..' . '/core/Command/App/CheckCode.php',
'OC\\Core\\Command\\App\\Disable' => __DIR__ . '/../../..' . '/core/Command/App/Disable.php',
'OC\\Core\\Command\\App\\Enable' => __DIR__ . '/../../..' . '/core/Command/App/Enable.php',
@@ -682,6 +688,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Core\\Controller\\AvatarController' => __DIR__ . '/../../..' . '/core/Controller/AvatarController.php',
'OC\\Core\\Controller\\CSRFTokenController' => __DIR__ . '/../../..' . '/core/Controller/CSRFTokenController.php',
'OC\\Core\\Controller\\ClientFlowLoginController' => __DIR__ . '/../../..' . '/core/Controller/ClientFlowLoginController.php',
+ 'OC\\Core\\Controller\\ClientFlowLoginV2Controller' => __DIR__ . '/../../..' . '/core/Controller/ClientFlowLoginV2Controller.php',
'OC\\Core\\Controller\\ContactsMenuController' => __DIR__ . '/../../..' . '/core/Controller/ContactsMenuController.php',
'OC\\Core\\Controller\\CssController' => __DIR__ . '/../../..' . '/core/Controller/CssController.php',
'OC\\Core\\Controller\\GuestAvatarController' => __DIR__ . '/../../..' . '/core/Controller/GuestAvatarController.php',
@@ -699,6 +706,11 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Core\\Controller\\UserController' => __DIR__ . '/../../..' . '/core/Controller/UserController.php',
'OC\\Core\\Controller\\WalledGardenController' => __DIR__ . '/../../..' . '/core/Controller/WalledGardenController.php',
'OC\\Core\\Controller\\WhatsNewController' => __DIR__ . '/../../..' . '/core/Controller/WhatsNewController.php',
+ 'OC\\Core\\Data\\LoginFlowV2Credentials' => __DIR__ . '/../../..' . '/core/Data/LoginFlowV2Credentials.php',
+ 'OC\\Core\\Data\\LoginFlowV2Tokens' => __DIR__ . '/../../..' . '/core/Data/LoginFlowV2Tokens.php',
+ 'OC\\Core\\Db\\LoginFlowV2' => __DIR__ . '/../../..' . '/core/Db/LoginFlowV2.php',
+ 'OC\\Core\\Db\\LoginFlowV2Mapper' => __DIR__ . '/../../..' . '/core/Db/LoginFlowV2Mapper.php',
+ 'OC\\Core\\Exception\\LoginFlowV2NotFoundException' => __DIR__ . '/../../..' . '/core/Exception/LoginFlowV2NotFoundException.php',
'OC\\Core\\Middleware\\TwoFactorMiddleware' => __DIR__ . '/../../..' . '/core/Middleware/TwoFactorMiddleware.php',
'OC\\Core\\Migrations\\Version13000Date20170705121758' => __DIR__ . '/../../..' . '/core/Migrations/Version13000Date20170705121758.php',
'OC\\Core\\Migrations\\Version13000Date20170718121200' => __DIR__ . '/../../..' . '/core/Migrations/Version13000Date20170718121200.php',
@@ -716,6 +728,8 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Core\\Migrations\\Version15000Date20180926101451' => __DIR__ . '/../../..' . '/core/Migrations/Version15000Date20180926101451.php',
'OC\\Core\\Migrations\\Version15000Date20181015062942' => __DIR__ . '/../../..' . '/core/Migrations/Version15000Date20181015062942.php',
'OC\\Core\\Migrations\\Version15000Date20181029084625' => __DIR__ . '/../../..' . '/core/Migrations/Version15000Date20181029084625.php',
+ 'OC\\Core\\Migrations\\Version16000Date20190212081545' => __DIR__ . '/../../..' . '/core/Migrations/Version16000Date20190212081545.php',
+ 'OC\\Core\\Service\\LoginFlowV2Service' => __DIR__ . '/../../..' . '/core/Service/LoginFlowV2Service.php',
'OC\\DB\\Adapter' => __DIR__ . '/../../..' . '/lib/private/DB/Adapter.php',
'OC\\DB\\AdapterMySQL' => __DIR__ . '/../../..' . '/lib/private/DB/AdapterMySQL.php',
'OC\\DB\\AdapterOCI8' => __DIR__ . '/../../..' . '/lib/private/DB/AdapterOCI8.php',
@@ -789,6 +803,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Federation\\CloudIdManager' => __DIR__ . '/../../..' . '/lib/private/Federation/CloudIdManager.php',
'OC\\Files\\AppData\\AppData' => __DIR__ . '/../../..' . '/lib/private/Files/AppData/AppData.php',
'OC\\Files\\AppData\\Factory' => __DIR__ . '/../../..' . '/lib/private/Files/AppData/Factory.php',
+ 'OC\\Files\\Cache\\AbstractCacheEvent' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/AbstractCacheEvent.php',
'OC\\Files\\Cache\\Cache' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/Cache.php',
'OC\\Files\\Cache\\CacheEntry' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/CacheEntry.php',
'OC\\Files\\Cache\\FailedCache' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/FailedCache.php',
@@ -868,7 +883,6 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Files\\Storage\\Wrapper\\PermissionsMask' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/PermissionsMask.php',
'OC\\Files\\Storage\\Wrapper\\Quota' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/Quota.php',
'OC\\Files\\Storage\\Wrapper\\Wrapper' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/Wrapper.php',
- 'OC\\Files\\Stream\\CountReadStream' => __DIR__ . '/../../..' . '/lib/private/Files/Stream/CountReadStream.php',
'OC\\Files\\Stream\\Encryption' => __DIR__ . '/../../..' . '/lib/private/Files/Stream/Encryption.php',
'OC\\Files\\Stream\\Quota' => __DIR__ . '/../../..' . '/lib/private/Files/Stream/Quota.php',
'OC\\Files\\Type\\Detection' => __DIR__ . '/../../..' . '/lib/private/Files/Type/Detection.php',
@@ -1013,6 +1027,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Repair\\NC14\\AddPreviewBackgroundCleanupJob' => __DIR__ . '/../../..' . '/lib/private/Repair/NC14/AddPreviewBackgroundCleanupJob.php',
'OC\\Repair\\NC14\\RepairPendingCronJobs' => __DIR__ . '/../../..' . '/lib/private/Repair/NC14/RepairPendingCronJobs.php',
'OC\\Repair\\NC15\\SetVcardDatabaseUID' => __DIR__ . '/../../..' . '/lib/private/Repair/NC15/SetVcardDatabaseUID.php',
+ 'OC\\Repair\\NC16\\AddClenupLoginFlowV2BackgroundJob' => __DIR__ . '/../../..' . '/lib/private/Repair/NC16/AddClenupLoginFlowV2BackgroundJob.php',
'OC\\Repair\\NC16\\CleanupCardDAVPhotoCache' => __DIR__ . '/../../..' . '/lib/private/Repair/NC16/CleanupCardDAVPhotoCache.php',
'OC\\Repair\\OldGroupMembershipShares' => __DIR__ . '/../../..' . '/lib/private/Repair/OldGroupMembershipShares.php',
'OC\\Repair\\Owncloud\\DropAccountTermsTable' => __DIR__ . '/../../..' . '/lib/private/Repair/Owncloud/DropAccountTermsTable.php',
diff --git a/lib/l10n/af.js b/lib/l10n/af.js
new file mode 100644
index 00000000000..fa351f824bd
--- /dev/null
+++ b/lib/l10n/af.js
@@ -0,0 +1,16 @@
+OC.L10N.register(
+ "lib",
+ {
+ "__language_name__" : "Afrikaans",
+ "Help" : "Hulp",
+ "Apps" : "Toeps",
+ "Settings" : "Instellings",
+ "Log out" : "Meld af",
+ "Users" : "Gebruikers",
+ "Unknown user" : "Onbekende gebruiker",
+ "Create" : "Skep",
+ "Delete" : "Skrap",
+ "Share" : "Deel",
+ "Security" : "Sekuriteit"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/af.json b/lib/l10n/af.json
new file mode 100644
index 00000000000..469d41e913a
--- /dev/null
+++ b/lib/l10n/af.json
@@ -0,0 +1,14 @@
+{ "translations": {
+ "__language_name__" : "Afrikaans",
+ "Help" : "Hulp",
+ "Apps" : "Toeps",
+ "Settings" : "Instellings",
+ "Log out" : "Meld af",
+ "Users" : "Gebruikers",
+ "Unknown user" : "Onbekende gebruiker",
+ "Create" : "Skep",
+ "Delete" : "Skrap",
+ "Share" : "Deel",
+ "Security" : "Sekuriteit"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/lib/l10n/nb.js b/lib/l10n/nb.js
index a2c6dc740d7..9654f0fb77b 100644
--- a/lib/l10n/nb.js
+++ b/lib/l10n/nb.js
@@ -2,10 +2,10 @@ OC.L10N.register(
"lib",
{
"Cannot write into \"config\" directory!" : "Kan ikke skrive til «config»-mappen!",
- "This can usually be fixed by giving the webserver write access to the config directory" : "Dette kan vanligvis ordnes ved å gi vev-tjeneren skrivetilgang til config-mappen",
+ "This can usually be fixed by giving the webserver write access to the config directory" : "Dette kan vanligvis ordnes ved å gi webserveren skrivetilgang til config-mappen",
"See %s" : "Se %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dette kan vanligvis ordnes ved å gi vev-tjeneren skrivetilgang til config-mappen. Se %s",
- "The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "Filene i appen %$1s ble ikke erstattet skikkelig. Sjekk at versjonen er kompatibel med tjeneren.",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dette kan vanligvis ordnes ved å gi webserveren skrivetilgang til config-mappen. Se %s",
+ "The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "Filene i appen %$1s ble ikke erstattet skikkelig. Sjekk at versjonen er kompatibel med serveren.",
"Sample configuration detected" : "Eksempeloppsett oppdaget",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Det ble oppdaget at eksempeloppsettet er blitt kopiert. Dette kan ødelegge installasjonen din og støttes ikke. Les dokumentasjonen før du gjør endringer i config.php",
"%1$s and %2$s" : "%1$s og %2$s",
@@ -23,8 +23,9 @@ OC.L10N.register(
"The command line tool %s could not be found" : "Kommandolinjeverktøyet %s ble ikke funnet",
"The library %s is not available." : "Biblioteket %s er ikke tilgjengelig.",
"Following platforms are supported: %s" : "Følgende plattformer støttes: %s",
- "Server version %s or higher is required." : "Tjenerversjon %s eller høyere kreves.",
- "Server version %s or lower is required." : "Tjenerversjon %s eller lavere kreves.",
+ "Server version %s or higher is required." : "Serverversjon %s eller høyere kreves.",
+ "Server version %s or lower is required." : "Serverversjon %s eller lavere kreves.",
+ "Logged in user must be an admin" : "Innlogget bruker må være administrator",
"Unknown filetype" : "Ukjent filtype",
"Invalid image" : "Ugyldig bilde",
"Avatar image is not square" : "Avatarbilde er ikke firkantet",
@@ -47,18 +48,18 @@ OC.L10N.register(
"_%n minute ago_::_%n minutes ago_" : ["for %n minutt siden","for %n minutter siden"],
"in a few seconds" : "om noen sekunder",
"seconds ago" : "for få sekunder siden",
- "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul med ID: %s finnes ikke. Skru den på i programinnstillingene eller kontakt en administrator.",
+ "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul med ID: %s finnes ikke. Skru den på i app-innstillingene eller kontakt en administrator.",
"File name is a reserved word" : "Filnavnet er et reservert ord",
"File name contains at least one invalid character" : "Filnavnet inneholder minst ett ulovlig tegn",
"File name is too long" : "Filnavnet er for langt",
"Dot files are not allowed" : "Punktum-filer er ikke tillatt",
"Empty filename is not allowed" : "Tomt filnavn er ikke tillatt",
- "App \"%s\" cannot be installed because appinfo file cannot be read." : "Programmet \"%s\" kan ikke installeres på grunn av at appinfo-filen ikke kan leses.",
- "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Programmet \"%s\" kan ikke installere fordi det ikke er kompatibel med denne tjenerversjonen.",
+ "App \"%s\" cannot be installed because appinfo file cannot be read." : "Appen \"%s\" kan ikke installeres på grunn av at appinfo-filen ikke kan leses.",
+ "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Appen \"%s\" kan ikke installeres fordi det ikke er kompatibel med denne serverversjonen.",
"__language_name__" : "Norsk bokmål",
"This is an automatically sent email, please do not reply." : "Dette er en automatisk sendt e-post, ikke svar.",
"Help" : "Hjelp",
- "Apps" : "Programmer",
+ "Apps" : "Apper",
"Settings" : "Innstillinger",
"Log out" : "Logg ut",
"Users" : "Brukere",
@@ -67,9 +68,11 @@ OC.L10N.register(
"Change" : "Endre",
"Delete" : "Slett",
"Share" : "Del",
+ "Overview" : "Oversikt",
"Basic settings" : "Grunninnstillinger",
"Sharing" : "Deling",
"Security" : "Sikkerhet",
+ "Groupware" : "Gruppevare",
"Additional settings" : "Flere innstillinger",
"Personal info" : "Personlig informasjon",
"Unlimited" : "Ubegrenset",
@@ -85,14 +88,14 @@ OC.L10N.register(
"PostgreSQL username and/or password not valid" : "PostgreSQL-brukernavn og/eller passord er ikke gyldig",
"You need to enter details of an existing account." : "Du må legge in detaljene til en eksisterende konto.",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X støttes ikke og %s vil ikke fungere korrekt på denne plattformen. Bruk på egen risiko!",
- "For the best results, please consider using a GNU/Linux server instead." : "For beste resultat, vurder å bruke en GNU/Linux-tjener i stedet.",
+ "For the best results, please consider using a GNU/Linux server instead." : "For beste resultat, vurder å bruke en GNU/Linux-server i stedet.",
"It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Det ser ut for at %s-instansen kjører i et 32-bit PHP-miljø med open_basedir satt opp i php.ini. Dette vil føre til problemer med filer over 4 GB og frarådes på det sterkeste.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Fjern innstillingen open_basedir i php.ini eller bytt til 64-bit PHP.",
"Set an admin username." : "Sett et admin-brukernavn.",
"Set an admin password." : "Sett et admin-passord.",
"Can't create or write into the data directory %s" : "Kan ikke opprette eller skrive i datamappen %s",
"Invalid Federated Cloud ID" : "Ugyldig ID for sammenknyttet sky",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Deling av %s mislyktes, fordi tjeneren ikke tillater delinger fra type %i",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "Deling av %s mislyktes, fordi serveren ikke tillater delinger fra type %i",
"Sharing %s failed, because the file does not exist" : "Deling av %s mislyktes, fordi filen ikke eksisterer",
"You are not allowed to share %s" : "Du har ikke lov til å dele %s",
"Sharing %s failed, because you can not share with yourself" : "Deling av %s mislyktes fordi du ikke kan dele med deg selv",
@@ -101,9 +104,9 @@ OC.L10N.register(
"Not allowed to create a federated share with the same user" : "Ikke tillatt å opprette en sammenknyttet sky-deling med den samme brukeren",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Kan ikke sette utøpsdato. Delinger kan ikke utløpe senere enn %s etter at de har blitt delt",
"Cannot set expiration date. Expiration date is in the past" : "Kan ikke sette utløpsdato. Utløpsdato er tilbake i tid",
- "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Delings-tjener %s må implementere grensesnittet OCP\\Share_Backend",
- "Sharing backend %s not found" : "Delings-tjener %s ikke funnet",
- "Sharing backend for %s not found" : "Delings-tjener for %s ikke funnet",
+ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Delings-server %s må implementere grensesnittet OCP\\Share_Backend",
+ "Sharing backend %s not found" : "Delings-server %s ikke funnet",
+ "Sharing backend for %s not found" : "Delings-server for %s ikke funnet",
"Sharing failed, because the user %s is the original sharer" : "Deling mislyktes fordi brukeren %s er den som delte opprinnelig",
"Sharing %s failed, because resharing is not allowed" : "Deling av %s mislyktes, fordi videre-deling ikke er tillatt",
"Sharing %s failed, because the file could not be found in the file cache" : "Deling av %s mislyktes, fordi filen ikke ble funnet i fil-hurtiglageret",
@@ -173,30 +176,30 @@ OC.L10N.register(
"a safe home for all your data" : "et sikkert hjem for alle dine data",
"File is currently busy, please try again later" : "Filen er opptatt for øyeblikket, prøv igjen senere",
"Can't read file" : "Kan ikke lese fil",
- "Application is not enabled" : "Programmet er ikke påslått",
+ "Application is not enabled" : "Appen er ikke påslått",
"Authentication error" : "Autentikasjonsfeil",
"Token expired. Please reload page." : "Symbol utløpt. Last inn siden på nytt.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Ingen databasedrivere (sqlite, mysql, or postgresql) installert.",
"Cannot write into \"config\" directory" : "Kan ikke skrive i \"config\"-mappen",
"Cannot write into \"apps\" directory" : "Kan ikke skrive i \"apps\"-mappen",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Dette kan vanligvis ordnes ved å gi vev-tjeneren skrivetilgang til apps-mappen eller ved å skru av programbutikken i config-filen. Se %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Dette kan vanligvis ordnes ved å gi webserveren skrivetilgang til apps-mappen eller ved å skru av app-butikken i config-filen. Se %s",
"Cannot create \"data\" directory" : "Kan ikke opprette \"data\"-mappe",
- "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Dette kan vanligvis ordnes ved å gi vev-tjeneren skrivetilgang til root-mappen. Se %s",
- "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Tillatelser kan vanligvis ordnes ved å gi vevtjeneren skrivetilgang til rotmappa. Se %s.",
+ "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Dette kan vanligvis ordnes ved å gi webserveren skrivetilgang til rotmappen. Se %s",
+ "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Tillatelser kan vanligvis ordnes ved å gi webserveren skrivetilgang til rotmappen. Se %s.",
"Setting locale to %s failed" : "Setting av nasjonale innstillinger til %s mislyktes.",
- "Please install one of these locales on your system and restart your webserver." : "Installer en av disse nasjonale innstillingene på systemet ditt og start vevtjeneren på nytt.",
- "Please ask your server administrator to install the module." : "Be tjener-administratoren om å installere modulen.",
+ "Please install one of these locales on your system and restart your webserver." : "Installer en av disse nasjonale innstillingene på systemet ditt og start webserveren på nytt.",
+ "Please ask your server administrator to install the module." : "Be server-administratoren om å installere modulen.",
"PHP module %s not installed." : "PHP-modul %s er ikke installert.",
"PHP setting \"%s\" is not set to \"%s\"." : "PHP-innstilling \"%s\" er ikke satt til \"%s\".",
"Adjusting this setting in php.ini will make Nextcloud run again" : "Ved å endre denne innstillingen i php.ini gjør at Nextcloud vil kjøre igjen.",
"mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload er satt til \"%s\" i stedet for den forventede verdien \"0\"",
"To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Sett <code>mbstring.func_overload</code> til <code>0</code> in php.ini for å fikse dette problemet",
"libxml2 2.7.0 is at least required. Currently %s is installed." : "Krever minst libxml2 2.7.0. Per nå er %s installert.",
- "To fix this issue update your libxml2 version and restart your web server." : "For å fikse dette problemet, oppdater din libxml2 versjon og omstart vevtjeneren.",
+ "To fix this issue update your libxml2 version and restart your web server." : "For å fikse dette problemet, oppdater din libxml2 versjon og start webserveren på nytt.",
"PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Det ser ut til at at PHP er satt opp til å fjerne innebygde doc-blokker. Dette gjør at flere av kjerneapplikasjonene blir utilgjengelige.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dette forårsakes sannsynligvis av hurtiglager/akselerator, som f.eks. Zend OPcache eller eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "PHP-moduler har blitt installert, men de listes fortsatt som fraværende?",
- "Please ask your server administrator to restart the web server." : "Be tjener-administratoren om å starte vevtjeneren på nytt.",
+ "Please ask your server administrator to restart the web server." : "Be server-administratoren om å starte webserveren på nytt.",
"PostgreSQL >= 9 required" : "PostgreSQL >= 9 kreves",
"Please upgrade your database version" : "Oppgrader databaseversjonen din",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Endre tillatelsene til 0770 slik at mappen ikke kan listes av andre brukere.",
@@ -224,15 +227,15 @@ OC.L10N.register(
"Sharing %s failed, because this item is already shared with user %s" : "Deling av %s mislyktes, fordi dette elementet allerede er delt med bruker %s",
"Sharing %s failed, because the group %s does not exist" : "Deling av %s mislyktes, fordi gruppen %s ikke finnes",
"Sharing %s failed, because %s is not a member of the group %s" : "Deling av %s mislyktes, fordi %s ikke er medlem av gruppen %s",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Deling %s mislyktes, fant ikke %s, kanskje tjeneren er utilgjengelig for øyeblikket.",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Deling %s mislyktes, fant ikke %s, kanskje serveren er utilgjengelig for øyeblikket.",
"Share type %s is not valid for %s" : "Delingstype %s er ikke gyldig for %s",
"Sharing %s failed, because the permissions exceed permissions granted to %s" : "Deling av %s mislyktes, fordi tillatelsene går utover tillatelsene som er gitt til %s",
"Sharing %s failed, because the sharing backend for %s could not find its source" : "Deling av %s mislyktes, fordi delings-bakenden for %s ikke kunne finne kilden",
"%s shared »%s« with you" : "%s delte »%s« med deg",
"%s shared »%s« with you." : "%s delte \"%s\" med deg.",
"%s via %s" : "%s via %s",
- "No app name specified" : "Intet programnavn spesifisert",
- "App '%s' could not be installed!" : "Programmet '%s' kunne ikke installeres!",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Programmet \"%s\" kan ikke installeres fordi følgende avhengigheter ikke er tilfredsstilt: %s"
+ "No app name specified" : "Intet app-navn spesifisert",
+ "App '%s' could not be installed!" : "Appen '%s' kunne ikke installeres!",
+ "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Appen \"%s\" kan ikke installeres fordi følgende krav ikke er tilfredsstilt: %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/nb.json b/lib/l10n/nb.json
index 95df1d06ae5..a44b4768b71 100644
--- a/lib/l10n/nb.json
+++ b/lib/l10n/nb.json
@@ -1,9 +1,9 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "Kan ikke skrive til «config»-mappen!",
- "This can usually be fixed by giving the webserver write access to the config directory" : "Dette kan vanligvis ordnes ved å gi vev-tjeneren skrivetilgang til config-mappen",
+ "This can usually be fixed by giving the webserver write access to the config directory" : "Dette kan vanligvis ordnes ved å gi webserveren skrivetilgang til config-mappen",
"See %s" : "Se %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dette kan vanligvis ordnes ved å gi vev-tjeneren skrivetilgang til config-mappen. Se %s",
- "The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "Filene i appen %$1s ble ikke erstattet skikkelig. Sjekk at versjonen er kompatibel med tjeneren.",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dette kan vanligvis ordnes ved å gi webserveren skrivetilgang til config-mappen. Se %s",
+ "The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "Filene i appen %$1s ble ikke erstattet skikkelig. Sjekk at versjonen er kompatibel med serveren.",
"Sample configuration detected" : "Eksempeloppsett oppdaget",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Det ble oppdaget at eksempeloppsettet er blitt kopiert. Dette kan ødelegge installasjonen din og støttes ikke. Les dokumentasjonen før du gjør endringer i config.php",
"%1$s and %2$s" : "%1$s og %2$s",
@@ -21,8 +21,9 @@
"The command line tool %s could not be found" : "Kommandolinjeverktøyet %s ble ikke funnet",
"The library %s is not available." : "Biblioteket %s er ikke tilgjengelig.",
"Following platforms are supported: %s" : "Følgende plattformer støttes: %s",
- "Server version %s or higher is required." : "Tjenerversjon %s eller høyere kreves.",
- "Server version %s or lower is required." : "Tjenerversjon %s eller lavere kreves.",
+ "Server version %s or higher is required." : "Serverversjon %s eller høyere kreves.",
+ "Server version %s or lower is required." : "Serverversjon %s eller lavere kreves.",
+ "Logged in user must be an admin" : "Innlogget bruker må være administrator",
"Unknown filetype" : "Ukjent filtype",
"Invalid image" : "Ugyldig bilde",
"Avatar image is not square" : "Avatarbilde er ikke firkantet",
@@ -45,18 +46,18 @@
"_%n minute ago_::_%n minutes ago_" : ["for %n minutt siden","for %n minutter siden"],
"in a few seconds" : "om noen sekunder",
"seconds ago" : "for få sekunder siden",
- "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul med ID: %s finnes ikke. Skru den på i programinnstillingene eller kontakt en administrator.",
+ "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul med ID: %s finnes ikke. Skru den på i app-innstillingene eller kontakt en administrator.",
"File name is a reserved word" : "Filnavnet er et reservert ord",
"File name contains at least one invalid character" : "Filnavnet inneholder minst ett ulovlig tegn",
"File name is too long" : "Filnavnet er for langt",
"Dot files are not allowed" : "Punktum-filer er ikke tillatt",
"Empty filename is not allowed" : "Tomt filnavn er ikke tillatt",
- "App \"%s\" cannot be installed because appinfo file cannot be read." : "Programmet \"%s\" kan ikke installeres på grunn av at appinfo-filen ikke kan leses.",
- "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Programmet \"%s\" kan ikke installere fordi det ikke er kompatibel med denne tjenerversjonen.",
+ "App \"%s\" cannot be installed because appinfo file cannot be read." : "Appen \"%s\" kan ikke installeres på grunn av at appinfo-filen ikke kan leses.",
+ "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Appen \"%s\" kan ikke installeres fordi det ikke er kompatibel med denne serverversjonen.",
"__language_name__" : "Norsk bokmål",
"This is an automatically sent email, please do not reply." : "Dette er en automatisk sendt e-post, ikke svar.",
"Help" : "Hjelp",
- "Apps" : "Programmer",
+ "Apps" : "Apper",
"Settings" : "Innstillinger",
"Log out" : "Logg ut",
"Users" : "Brukere",
@@ -65,9 +66,11 @@
"Change" : "Endre",
"Delete" : "Slett",
"Share" : "Del",
+ "Overview" : "Oversikt",
"Basic settings" : "Grunninnstillinger",
"Sharing" : "Deling",
"Security" : "Sikkerhet",
+ "Groupware" : "Gruppevare",
"Additional settings" : "Flere innstillinger",
"Personal info" : "Personlig informasjon",
"Unlimited" : "Ubegrenset",
@@ -83,14 +86,14 @@
"PostgreSQL username and/or password not valid" : "PostgreSQL-brukernavn og/eller passord er ikke gyldig",
"You need to enter details of an existing account." : "Du må legge in detaljene til en eksisterende konto.",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X støttes ikke og %s vil ikke fungere korrekt på denne plattformen. Bruk på egen risiko!",
- "For the best results, please consider using a GNU/Linux server instead." : "For beste resultat, vurder å bruke en GNU/Linux-tjener i stedet.",
+ "For the best results, please consider using a GNU/Linux server instead." : "For beste resultat, vurder å bruke en GNU/Linux-server i stedet.",
"It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Det ser ut for at %s-instansen kjører i et 32-bit PHP-miljø med open_basedir satt opp i php.ini. Dette vil føre til problemer med filer over 4 GB og frarådes på det sterkeste.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Fjern innstillingen open_basedir i php.ini eller bytt til 64-bit PHP.",
"Set an admin username." : "Sett et admin-brukernavn.",
"Set an admin password." : "Sett et admin-passord.",
"Can't create or write into the data directory %s" : "Kan ikke opprette eller skrive i datamappen %s",
"Invalid Federated Cloud ID" : "Ugyldig ID for sammenknyttet sky",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Deling av %s mislyktes, fordi tjeneren ikke tillater delinger fra type %i",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "Deling av %s mislyktes, fordi serveren ikke tillater delinger fra type %i",
"Sharing %s failed, because the file does not exist" : "Deling av %s mislyktes, fordi filen ikke eksisterer",
"You are not allowed to share %s" : "Du har ikke lov til å dele %s",
"Sharing %s failed, because you can not share with yourself" : "Deling av %s mislyktes fordi du ikke kan dele med deg selv",
@@ -99,9 +102,9 @@
"Not allowed to create a federated share with the same user" : "Ikke tillatt å opprette en sammenknyttet sky-deling med den samme brukeren",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Kan ikke sette utøpsdato. Delinger kan ikke utløpe senere enn %s etter at de har blitt delt",
"Cannot set expiration date. Expiration date is in the past" : "Kan ikke sette utløpsdato. Utløpsdato er tilbake i tid",
- "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Delings-tjener %s må implementere grensesnittet OCP\\Share_Backend",
- "Sharing backend %s not found" : "Delings-tjener %s ikke funnet",
- "Sharing backend for %s not found" : "Delings-tjener for %s ikke funnet",
+ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Delings-server %s må implementere grensesnittet OCP\\Share_Backend",
+ "Sharing backend %s not found" : "Delings-server %s ikke funnet",
+ "Sharing backend for %s not found" : "Delings-server for %s ikke funnet",
"Sharing failed, because the user %s is the original sharer" : "Deling mislyktes fordi brukeren %s er den som delte opprinnelig",
"Sharing %s failed, because resharing is not allowed" : "Deling av %s mislyktes, fordi videre-deling ikke er tillatt",
"Sharing %s failed, because the file could not be found in the file cache" : "Deling av %s mislyktes, fordi filen ikke ble funnet i fil-hurtiglageret",
@@ -171,30 +174,30 @@
"a safe home for all your data" : "et sikkert hjem for alle dine data",
"File is currently busy, please try again later" : "Filen er opptatt for øyeblikket, prøv igjen senere",
"Can't read file" : "Kan ikke lese fil",
- "Application is not enabled" : "Programmet er ikke påslått",
+ "Application is not enabled" : "Appen er ikke påslått",
"Authentication error" : "Autentikasjonsfeil",
"Token expired. Please reload page." : "Symbol utløpt. Last inn siden på nytt.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Ingen databasedrivere (sqlite, mysql, or postgresql) installert.",
"Cannot write into \"config\" directory" : "Kan ikke skrive i \"config\"-mappen",
"Cannot write into \"apps\" directory" : "Kan ikke skrive i \"apps\"-mappen",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Dette kan vanligvis ordnes ved å gi vev-tjeneren skrivetilgang til apps-mappen eller ved å skru av programbutikken i config-filen. Se %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Dette kan vanligvis ordnes ved å gi webserveren skrivetilgang til apps-mappen eller ved å skru av app-butikken i config-filen. Se %s",
"Cannot create \"data\" directory" : "Kan ikke opprette \"data\"-mappe",
- "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Dette kan vanligvis ordnes ved å gi vev-tjeneren skrivetilgang til root-mappen. Se %s",
- "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Tillatelser kan vanligvis ordnes ved å gi vevtjeneren skrivetilgang til rotmappa. Se %s.",
+ "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Dette kan vanligvis ordnes ved å gi webserveren skrivetilgang til rotmappen. Se %s",
+ "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Tillatelser kan vanligvis ordnes ved å gi webserveren skrivetilgang til rotmappen. Se %s.",
"Setting locale to %s failed" : "Setting av nasjonale innstillinger til %s mislyktes.",
- "Please install one of these locales on your system and restart your webserver." : "Installer en av disse nasjonale innstillingene på systemet ditt og start vevtjeneren på nytt.",
- "Please ask your server administrator to install the module." : "Be tjener-administratoren om å installere modulen.",
+ "Please install one of these locales on your system and restart your webserver." : "Installer en av disse nasjonale innstillingene på systemet ditt og start webserveren på nytt.",
+ "Please ask your server administrator to install the module." : "Be server-administratoren om å installere modulen.",
"PHP module %s not installed." : "PHP-modul %s er ikke installert.",
"PHP setting \"%s\" is not set to \"%s\"." : "PHP-innstilling \"%s\" er ikke satt til \"%s\".",
"Adjusting this setting in php.ini will make Nextcloud run again" : "Ved å endre denne innstillingen i php.ini gjør at Nextcloud vil kjøre igjen.",
"mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload er satt til \"%s\" i stedet for den forventede verdien \"0\"",
"To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Sett <code>mbstring.func_overload</code> til <code>0</code> in php.ini for å fikse dette problemet",
"libxml2 2.7.0 is at least required. Currently %s is installed." : "Krever minst libxml2 2.7.0. Per nå er %s installert.",
- "To fix this issue update your libxml2 version and restart your web server." : "For å fikse dette problemet, oppdater din libxml2 versjon og omstart vevtjeneren.",
+ "To fix this issue update your libxml2 version and restart your web server." : "For å fikse dette problemet, oppdater din libxml2 versjon og start webserveren på nytt.",
"PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Det ser ut til at at PHP er satt opp til å fjerne innebygde doc-blokker. Dette gjør at flere av kjerneapplikasjonene blir utilgjengelige.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dette forårsakes sannsynligvis av hurtiglager/akselerator, som f.eks. Zend OPcache eller eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "PHP-moduler har blitt installert, men de listes fortsatt som fraværende?",
- "Please ask your server administrator to restart the web server." : "Be tjener-administratoren om å starte vevtjeneren på nytt.",
+ "Please ask your server administrator to restart the web server." : "Be server-administratoren om å starte webserveren på nytt.",
"PostgreSQL >= 9 required" : "PostgreSQL >= 9 kreves",
"Please upgrade your database version" : "Oppgrader databaseversjonen din",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Endre tillatelsene til 0770 slik at mappen ikke kan listes av andre brukere.",
@@ -222,15 +225,15 @@
"Sharing %s failed, because this item is already shared with user %s" : "Deling av %s mislyktes, fordi dette elementet allerede er delt med bruker %s",
"Sharing %s failed, because the group %s does not exist" : "Deling av %s mislyktes, fordi gruppen %s ikke finnes",
"Sharing %s failed, because %s is not a member of the group %s" : "Deling av %s mislyktes, fordi %s ikke er medlem av gruppen %s",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Deling %s mislyktes, fant ikke %s, kanskje tjeneren er utilgjengelig for øyeblikket.",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Deling %s mislyktes, fant ikke %s, kanskje serveren er utilgjengelig for øyeblikket.",
"Share type %s is not valid for %s" : "Delingstype %s er ikke gyldig for %s",
"Sharing %s failed, because the permissions exceed permissions granted to %s" : "Deling av %s mislyktes, fordi tillatelsene går utover tillatelsene som er gitt til %s",
"Sharing %s failed, because the sharing backend for %s could not find its source" : "Deling av %s mislyktes, fordi delings-bakenden for %s ikke kunne finne kilden",
"%s shared »%s« with you" : "%s delte »%s« med deg",
"%s shared »%s« with you." : "%s delte \"%s\" med deg.",
"%s via %s" : "%s via %s",
- "No app name specified" : "Intet programnavn spesifisert",
- "App '%s' could not be installed!" : "Programmet '%s' kunne ikke installeres!",
- "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Programmet \"%s\" kan ikke installeres fordi følgende avhengigheter ikke er tilfredsstilt: %s"
+ "No app name specified" : "Intet app-navn spesifisert",
+ "App '%s' could not be installed!" : "Appen '%s' kunne ikke installeres!",
+ "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Appen \"%s\" kan ikke installeres fordi følgende krav ikke er tilfredsstilt: %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/pl.js b/lib/l10n/pl.js
index 3b51f335860..2a66333f692 100644
--- a/lib/l10n/pl.js
+++ b/lib/l10n/pl.js
@@ -64,7 +64,7 @@ OC.L10N.register(
"Create" : "Utwórz",
"Change" : "Zmień",
"Delete" : "Usuń",
- "Share" : "Udział",
+ "Share" : "Udostępnianie",
"Overview" : "Przegląd",
"Basic settings" : "Ustawienia podstawowe",
"Sharing" : "Udostępnianie",
@@ -93,10 +93,10 @@ OC.L10N.register(
"Set an admin password." : "Ustaw hasło administratora.",
"Can't create or write into the data directory %s" : "Nie można tworzyć ani zapisywać w katalogu %s",
"Invalid Federated Cloud ID" : "Nieprawidłowy ID Stowarzyszonej Chmury",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Współdzielenie %s nie udało się, ponieważ backend nie pozwala na współdzielenie takiego typu jak %i.",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "Udostępnianie %s nie udało się, ponieważ backend nie pozwala na współdzielenie takiego typu jak %i.",
"Sharing %s failed, because the file does not exist" : "Wspóldzielenie %s nie powiodło się. ponieważ plik nie istnieje",
"You are not allowed to share %s" : "Nie masz uprawnień aby udostępnić %s",
- "Sharing %s failed, because you can not share with yourself" : "Współdzielenie %s nie udało się, ponieważ nie możesz współdzielić sam ze sobą",
+ "Sharing %s failed, because you can not share with yourself" : "Udostępnienie %s nie udało się, ponieważ nie możesz współdzielić sam ze sobą",
"You need to provide a password to create a public link, only protected links are allowed" : "Musisz zapewnić hasło aby utworzyć link publiczny, dozwolone są tylko linki chronione",
"Sharing %s failed, because sharing with links is not allowed" : "Współdzielenie %s nie powiodło się, ponieważ współdzielenie z linkami nie jest dozwolone",
"Not allowed to create a federated share with the same user" : "Nie jest dozwolone tworzenie współdzielenia stowarzyszonego z tym samym użytkownikiem",
diff --git a/lib/l10n/pl.json b/lib/l10n/pl.json
index 5a525f4895d..f1b332567ec 100644
--- a/lib/l10n/pl.json
+++ b/lib/l10n/pl.json
@@ -62,7 +62,7 @@
"Create" : "Utwórz",
"Change" : "Zmień",
"Delete" : "Usuń",
- "Share" : "Udział",
+ "Share" : "Udostępnianie",
"Overview" : "Przegląd",
"Basic settings" : "Ustawienia podstawowe",
"Sharing" : "Udostępnianie",
@@ -91,10 +91,10 @@
"Set an admin password." : "Ustaw hasło administratora.",
"Can't create or write into the data directory %s" : "Nie można tworzyć ani zapisywać w katalogu %s",
"Invalid Federated Cloud ID" : "Nieprawidłowy ID Stowarzyszonej Chmury",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Współdzielenie %s nie udało się, ponieważ backend nie pozwala na współdzielenie takiego typu jak %i.",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "Udostępnianie %s nie udało się, ponieważ backend nie pozwala na współdzielenie takiego typu jak %i.",
"Sharing %s failed, because the file does not exist" : "Wspóldzielenie %s nie powiodło się. ponieważ plik nie istnieje",
"You are not allowed to share %s" : "Nie masz uprawnień aby udostępnić %s",
- "Sharing %s failed, because you can not share with yourself" : "Współdzielenie %s nie udało się, ponieważ nie możesz współdzielić sam ze sobą",
+ "Sharing %s failed, because you can not share with yourself" : "Udostępnienie %s nie udało się, ponieważ nie możesz współdzielić sam ze sobą",
"You need to provide a password to create a public link, only protected links are allowed" : "Musisz zapewnić hasło aby utworzyć link publiczny, dozwolone są tylko linki chronione",
"Sharing %s failed, because sharing with links is not allowed" : "Współdzielenie %s nie powiodło się, ponieważ współdzielenie z linkami nie jest dozwolone",
"Not allowed to create a federated share with the same user" : "Nie jest dozwolone tworzenie współdzielenia stowarzyszonego z tym samym użytkownikiem",
diff --git a/lib/l10n/zh_CN.js b/lib/l10n/zh_CN.js
index bab3b63c82c..1995f215992 100644
--- a/lib/l10n/zh_CN.js
+++ b/lib/l10n/zh_CN.js
@@ -76,6 +76,7 @@ OC.L10N.register(
"Basic settings" : "基本设置",
"Sharing" : "共享",
"Security" : "安全",
+ "Theming" : "主题",
"Groupware" : "组件",
"Additional settings" : "其他设置",
"Personal info" : "个人信息",
@@ -105,23 +106,38 @@ OC.L10N.register(
"You are not allowed to share %s" : "您无权共享 %s",
"Sharing %s failed, because you can not share with yourself" : "共享 %s 失败,因为您不能共享给自己",
"Sharing %1$s failed, because the user %2$s does not exist" : "共享 %1$s 失败,因为 %2$s 用户不存在",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "共享 %1$s失败, 因为用户 %2$s 不是%3$s 所属的任何组的用户",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "共享 %1$s 失败,因为该项已经共享给 %2$s",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "共享 %1$s 失败, 因为该项已经共享给用户 %2$s",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "共享 %1$s 失败,因为 %2$s 分组不存在",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "共享 %1$s 失败,因为 %2$s 不是 %3$s 分组的成员",
"You need to provide a password to create a public link, only protected links are allowed" : "您需要提供密码以创建公开链接,因为只允许创建受保护的链接",
"Sharing %s failed, because sharing with links is not allowed" : "共享 %s 失败,因为不允许使用链接共享",
"Not allowed to create a federated share with the same user" : "不允许创建对相同用户的联合共享",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "共享 %1$s 失败,无法找到 %2$s,该服务当前无法连接。",
+ "Share type %1$s is not valid for %2$s" : "%1$s 不是 %2$s 合法的共享类型",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "无法设置过期时间。过期时间不能晚于其共享时间 %s",
"Cannot set expiration date. Expiration date is in the past" : "无法设置过期时间。过期时间不能为过去",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "共享后端 %s 必须实现 OCP\\Share_Backend 接口",
"Sharing backend %s not found" : "%s 的共享后端未找到",
"Sharing backend for %s not found" : "%s 的共享后端未找到",
"Sharing failed, because the user %s is the original sharer" : "共享失败,因为用户 %s 是原始的共享者",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "共享 %1$s 失败, 因为已经超出了 %2$s 的权限。",
"Sharing %s failed, because resharing is not allowed" : "共享 %s 失败,因为不允许二次共享",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "共享 %1$s失败,因为无法找到 %2$s 共享后端的来源",
"Sharing %s failed, because the file could not be found in the file cache" : "共享 %s 失败,因为文件缓存中找不到该文件",
+ "%1$s shared »%2$s« with you and wants to add:" : "%1$s 与您共享了 »%2$s« 并希望添加:",
+ "%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« 在与您共享的文件中添加了备注",
"Open »%s«" : "打开 »%s«",
+ "%1$s via %2$s" : "%1$s 通过 %2$s",
"Can’t increase permissions of %s" : "无法增加%s的权限。",
"Files can’t be shared with delete permissions" : "无法共享有删除权限的文件",
"Files can’t be shared with create permissions" : "无法共享有创建权限的文件",
"Expiration date is in the past" : "到期日期已过",
"Can’t set expiration date more than %s days in the future" : "无法将过期日期设置为超过 %s 天。",
+ "%1$s shared »%2$s« with you" : "%1$s 与您分享了 »%2$s«",
+ "%1$s shared »%2$s« with you." : "%1$s 与您分享了 »%2$s«。",
"Click the button below to open it." : "点击下方按钮可打开它。",
"The requested share does not exist anymore" : "当前请求的共享已经不存在",
"Could not find category \"%s\"" : "无法找到分类 \"%s\"",
diff --git a/lib/l10n/zh_CN.json b/lib/l10n/zh_CN.json
index 17e1ed1f50f..b729038c92e 100644
--- a/lib/l10n/zh_CN.json
+++ b/lib/l10n/zh_CN.json
@@ -74,6 +74,7 @@
"Basic settings" : "基本设置",
"Sharing" : "共享",
"Security" : "安全",
+ "Theming" : "主题",
"Groupware" : "组件",
"Additional settings" : "其他设置",
"Personal info" : "个人信息",
@@ -103,23 +104,38 @@
"You are not allowed to share %s" : "您无权共享 %s",
"Sharing %s failed, because you can not share with yourself" : "共享 %s 失败,因为您不能共享给自己",
"Sharing %1$s failed, because the user %2$s does not exist" : "共享 %1$s 失败,因为 %2$s 用户不存在",
+ "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "共享 %1$s失败, 因为用户 %2$s 不是%3$s 所属的任何组的用户",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "共享 %1$s 失败,因为该项已经共享给 %2$s",
+ "Sharing %1$s failed, because this item is already shared with user %2$s" : "共享 %1$s 失败, 因为该项已经共享给用户 %2$s",
+ "Sharing %1$s failed, because the group %2$s does not exist" : "共享 %1$s 失败,因为 %2$s 分组不存在",
+ "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "共享 %1$s 失败,因为 %2$s 不是 %3$s 分组的成员",
"You need to provide a password to create a public link, only protected links are allowed" : "您需要提供密码以创建公开链接,因为只允许创建受保护的链接",
"Sharing %s failed, because sharing with links is not allowed" : "共享 %s 失败,因为不允许使用链接共享",
"Not allowed to create a federated share with the same user" : "不允许创建对相同用户的联合共享",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "共享 %1$s 失败,无法找到 %2$s,该服务当前无法连接。",
+ "Share type %1$s is not valid for %2$s" : "%1$s 不是 %2$s 合法的共享类型",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "无法设置过期时间。过期时间不能晚于其共享时间 %s",
"Cannot set expiration date. Expiration date is in the past" : "无法设置过期时间。过期时间不能为过去",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "共享后端 %s 必须实现 OCP\\Share_Backend 接口",
"Sharing backend %s not found" : "%s 的共享后端未找到",
"Sharing backend for %s not found" : "%s 的共享后端未找到",
"Sharing failed, because the user %s is the original sharer" : "共享失败,因为用户 %s 是原始的共享者",
+ "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "共享 %1$s 失败, 因为已经超出了 %2$s 的权限。",
"Sharing %s failed, because resharing is not allowed" : "共享 %s 失败,因为不允许二次共享",
+ "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "共享 %1$s失败,因为无法找到 %2$s 共享后端的来源",
"Sharing %s failed, because the file could not be found in the file cache" : "共享 %s 失败,因为文件缓存中找不到该文件",
+ "%1$s shared »%2$s« with you and wants to add:" : "%1$s 与您共享了 »%2$s« 并希望添加:",
+ "%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« 在与您共享的文件中添加了备注",
"Open »%s«" : "打开 »%s«",
+ "%1$s via %2$s" : "%1$s 通过 %2$s",
"Can’t increase permissions of %s" : "无法增加%s的权限。",
"Files can’t be shared with delete permissions" : "无法共享有删除权限的文件",
"Files can’t be shared with create permissions" : "无法共享有创建权限的文件",
"Expiration date is in the past" : "到期日期已过",
"Can’t set expiration date more than %s days in the future" : "无法将过期日期设置为超过 %s 天。",
+ "%1$s shared »%2$s« with you" : "%1$s 与您分享了 »%2$s«",
+ "%1$s shared »%2$s« with you." : "%1$s 与您分享了 »%2$s«。",
"Click the button below to open it." : "点击下方按钮可打开它。",
"The requested share does not exist anymore" : "当前请求的共享已经不存在",
"Could not find category \"%s\"" : "无法找到分类 \"%s\"",
diff --git a/lib/private/Activity/Manager.php b/lib/private/Activity/Manager.php
index 3381c23e31c..ba2d1147bc8 100644
--- a/lib/private/Activity/Manager.php
+++ b/lib/private/Activity/Manager.php
@@ -58,7 +58,7 @@ class Manager implements IManager {
protected $formattingObjectId;
/** @var bool */
- protected $requirePNG;
+ protected $requirePNG = false;
/** @var string */
protected $currentUserId;
diff --git a/lib/private/AllConfig.php b/lib/private/AllConfig.php
index 09520aae2a9..05ac1bad64b 100644
--- a/lib/private/AllConfig.php
+++ b/lib/private/AllConfig.php
@@ -126,6 +126,42 @@ class AllConfig implements \OCP\IConfig {
}
/**
+ * Looks up a boolean system wide defined value
+ *
+ * @param string $key the key of the value, under which it was saved
+ * @param mixed $default the default value to be returned if the value isn't set
+ * @return mixed the value or $default
+ * @since 16.0.0
+ */
+ public function getSystemValueBool(string $key, bool $default = false): bool {
+ return (bool) $this->getSystemValue($key, $default);
+ }
+
+ /**
+ * Looks up an integer system wide defined value
+ *
+ * @param string $key the key of the value, under which it was saved
+ * @param mixed $default the default value to be returned if the value isn't set
+ * @return mixed the value or $default
+ * @since 16.0.0
+ */
+ public function getSystemValueInt(string $key, int $default = 0): int {
+ return (int) $this->getSystemValue($key, $default);
+ }
+
+ /**
+ * Looks up a string system wide defined value
+ *
+ * @param string $key the key of the value, under which it was saved
+ * @param mixed $default the default value to be returned if the value isn't set
+ * @return mixed the value or $default
+ * @since 16.0.0
+ */
+ public function getSystemValueString(string $key, string $default = ''): string {
+ return (string) $this->getSystemValue($key, $default);
+ }
+
+ /**
* Looks up a system wide defined value and filters out sensitive data
*
* @param string $key the key of the value, under which it was saved
diff --git a/lib/private/App/InfoParser.php b/lib/private/App/InfoParser.php
index e0ed63fc784..ef96156dfed 100644
--- a/lib/private/App/InfoParser.php
+++ b/lib/private/App/InfoParser.php
@@ -52,7 +52,7 @@ class InfoParser {
return null;
}
- if(!is_null($this->cache)) {
+ if ($this->cache !== null) {
$fileCacheKey = $file . filemtime($file);
if ($cachedValue = $this->cache->get($fileCacheKey)) {
return json_decode($cachedValue, true);
@@ -205,13 +205,25 @@ class InfoParser {
$array['settings']['personal-section'] = [$array['settings']['personal-section']];
}
- if(!is_null($this->cache)) {
+ if (isset($array['navigations']['navigation']) && $this->isNavigationItem($array['navigations']['navigation'])) {
+ $array['navigations']['navigation'] = [$array['navigations']['navigation']];
+ }
+
+ if ($this->cache !== null) {
$this->cache->set($fileCacheKey, json_encode($array));
}
return $array;
}
/**
+ * @param $data
+ * @return bool
+ */
+ private function isNavigationItem($data): bool {
+ return isset($data['name'], $data['route']);
+ }
+
+ /**
* @param \SimpleXMLElement $xml
* @return array
*/
diff --git a/lib/private/Collaboration/Collaborators/GroupPlugin.php b/lib/private/Collaboration/Collaborators/GroupPlugin.php
index 7eee042076e..b1e331132be 100644
--- a/lib/private/Collaboration/Collaborators/GroupPlugin.php
+++ b/lib/private/Collaboration/Collaborators/GroupPlugin.php
@@ -73,6 +73,10 @@ class GroupPlugin implements ISearchPlugin {
$lowerSearch = strtolower($search);
foreach ($groups as $group) {
+ if ($group->hideFromCollaboration()) {
+ continue;
+ }
+
// FIXME: use a more efficient approach
$gid = $group->getGID();
if (!in_array($gid, $groupIds)) {
diff --git a/lib/private/Collaboration/Collaborators/LookupPlugin.php b/lib/private/Collaboration/Collaborators/LookupPlugin.php
index fb7c872c30c..438985ef0d3 100644
--- a/lib/private/Collaboration/Collaborators/LookupPlugin.php
+++ b/lib/private/Collaboration/Collaborators/LookupPlugin.php
@@ -62,11 +62,11 @@ class LookupPlugin implements ISearchPlugin {
public function search($search, $limit, $offset, ISearchResult $searchResult) {
$isGlobalScaleEnabled = $this->config->getSystemValue('gs.enabled', false);
- $isLookupServerEnabled = $this->config->getAppValue('files_sharing', 'lookupServerEnabled', 'no') === 'yes';
+ $isLookupServerEnabled = $this->config->getAppValue('files_sharing', 'lookupServerEnabled', 'yes') === 'yes';
$hasInternetConnection = (bool)$this->config->getSystemValue('has_internet_connection', true);
// if case of Global Scale we always search the lookup server
- if ((!$isLookupServerEnabled && !$isGlobalScaleEnabled) || !$hasInternetConnection) {
+ if (!$isGlobalScaleEnabled && (!$isLookupServerEnabled || !$hasInternetConnection)) {
return false;
}
diff --git a/lib/private/Console/Application.php b/lib/private/Console/Application.php
index 0e30fa02b94..d7c047527f1 100644
--- a/lib/private/Console/Application.php
+++ b/lib/private/Console/Application.php
@@ -91,10 +91,10 @@ class Application {
$inputDefinition = $application->getDefinition();
$inputDefinition->addOption(
new InputOption(
- 'no-warnings',
- null,
- InputOption::VALUE_NONE,
- 'Skip global warnings, show command output only',
+ 'no-warnings',
+ null,
+ InputOption::VALUE_NONE,
+ 'Skip global warnings, show command output only',
null
)
);
@@ -119,7 +119,7 @@ class Application {
if ($this->config->getSystemValue('installed', false)) {
if (\OCP\Util::needUpgrade()) {
throw new NeedsUpdateException();
- } elseif ($this->config->getSystemValue('maintenance', false)) {
+ } elseif ($this->config->getSystemValueBool('maintenance')) {
$this->writeMaintenanceModeInfo($input, $output);
} else {
OC_App::loadApps();
diff --git a/lib/private/Federation/CloudFederationProviderManager.php b/lib/private/Federation/CloudFederationProviderManager.php
index 94b2f052747..c2944f410b3 100644
--- a/lib/private/Federation/CloudFederationProviderManager.php
+++ b/lib/private/Federation/CloudFederationProviderManager.php
@@ -134,7 +134,6 @@ class CloudFederationProviderManager implements ICloudFederationProviderManager
public function sendShare(ICloudFederationShare $share) {
$cloudID = $this->cloudIdManager->resolveCloudId($share->getShareWith());
$ocmEndPoint = $this->getOCMEndPoint($cloudID->getRemote());
-
if (empty($ocmEndPoint)) {
return false;
}
@@ -142,7 +141,8 @@ class CloudFederationProviderManager implements ICloudFederationProviderManager
$client = $this->httpClientService->newClient();
try {
$response = $client->post($ocmEndPoint . '/shares', [
- 'body' => $share->getShare(),
+ 'body' => json_encode($share->getShare()),
+ 'headers' => ['content-type' => 'application/json'],
'timeout' => 10,
'connect_timeout' => 10,
]);
@@ -181,7 +181,8 @@ class CloudFederationProviderManager implements ICloudFederationProviderManager
$client = $this->httpClientService->newClient();
try {
$response = $client->post($ocmEndPoint . '/notifications', [
- 'body' => $notification->getMessage(),
+ 'body' => json_encode($notification->getMessage()),
+ 'headers' => ['content-type' => 'application/json'],
'timeout' => 10,
'connect_timeout' => 10,
]);
diff --git a/lib/private/Files/Cache/AbstractCacheEvent.php b/lib/private/Files/Cache/AbstractCacheEvent.php
new file mode 100644
index 00000000000..c8a41ce54d8
--- /dev/null
+++ b/lib/private/Files/Cache/AbstractCacheEvent.php
@@ -0,0 +1,68 @@
+<?php declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Robin Appelman <robin@icewind.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OC\Files\Cache;
+
+use OCP\Files\Cache\ICacheEvent;
+use OCP\Files\Storage\IStorage;
+use Symfony\Component\EventDispatcher\Event;
+
+class AbstractCacheEvent extends Event implements ICacheEvent {
+ protected $storage;
+ protected $path;
+ protected $fileId;
+
+ /**
+ * @param IStorage $storage
+ * @param string $path
+ * @param int $fileId
+ * @since 16.0.0
+ */
+ public function __construct(IStorage $storage, string $path, int $fileId) {
+ $this->storage = $storage;
+ $this->path = $path;
+ $this->fileId = $fileId;
+ }
+
+ /**
+ * @return IStorage
+ * @since 16.0.0
+ */
+ public function getStorage(): IStorage {
+ return $this->storage;
+ }
+
+ /**
+ * @return string
+ * @since 16.0.0
+ */
+ public function getPath(): string {
+ return $this->path;
+ }
+
+ /**
+ * @return int
+ * @since 16.0.0
+ */
+ public function getFileId(): int {
+ return $this->fileId;
+ }
+}
diff --git a/lib/private/Files/Cache/Cache.php b/lib/private/Files/Cache/Cache.php
index 17e870bcbb4..7b42cc2aa57 100644
--- a/lib/private/Files/Cache/Cache.php
+++ b/lib/private/Files/Cache/Cache.php
@@ -41,6 +41,7 @@ use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
use OCP\DB\QueryBuilder\IQueryBuilder;
use Doctrine\DBAL\Driver\Statement;
use OCP\Files\Cache\CacheInsertEvent;
+use OCP\Files\Cache\CacheUpdateEvent;
use OCP\Files\Cache\ICache;
use OCP\Files\Cache\ICacheEntry;
use \OCP\Files\IMimeTypeLoader;
@@ -230,7 +231,7 @@ class Cache implements ICache {
*/
public function put($file, array $data) {
if (($id = $this->getId($file)) > -1) {
- $this->update($id, $data);
+ $this->update($id, $data, $file);
return $id;
} else {
return $this->insert($file, $data);
@@ -337,6 +338,11 @@ class Cache implements ICache {
') AND `fileid` = ? ';
$this->connection->executeQuery($sql, $params);
+ $path = $this->getPathById($id);
+ // path can still be null if the file doesn't exist
+ if ($path !== null) {
+ $this->eventDispatcher->dispatch(CacheUpdateEvent::class, new CacheUpdateEvent($this->storage, $path, $id));
+ }
}
/**
diff --git a/lib/private/Files/FileInfo.php b/lib/private/Files/FileInfo.php
index 575af56ceb5..19b95cd0355 100644
--- a/lib/private/Files/FileInfo.php
+++ b/lib/private/Files/FileInfo.php
@@ -81,6 +81,13 @@ class FileInfo implements \OCP\Files\FileInfo, \ArrayAccess {
private $subMountsUsed = false;
/**
+ * The size of the file/folder without any sub mount
+ *
+ * @var int
+ */
+ private $rawSize = 0;
+
+ /**
* @param string|boolean $path
* @param Storage\Storage $storage
* @param string $internalPath
@@ -95,6 +102,7 @@ class FileInfo implements \OCP\Files\FileInfo, \ArrayAccess {
$this->data = $data;
$this->mount = $mount;
$this->owner = $owner;
+ $this->rawSize = $this->data['size'] ?? 0;
}
public function offsetSet($offset, $value) {
@@ -194,9 +202,13 @@ class FileInfo implements \OCP\Files\FileInfo, \ArrayAccess {
/**
* @return int
*/
- public function getSize() {
- $this->updateEntryfromSubMounts();
- return isset($this->data['size']) ? 0 + $this->data['size'] : 0;
+ public function getSize($includeMounts = true) {
+ if ($includeMounts) {
+ $this->updateEntryfromSubMounts();
+ return isset($this->data['size']) ? 0 + $this->data['size'] : 0;
+ } else {
+ return $this->rawSize;
+ }
}
/**
diff --git a/lib/private/Files/Node/LazyRoot.php b/lib/private/Files/Node/LazyRoot.php
index 389a1a9f0ff..01b4ca52765 100644
--- a/lib/private/Files/Node/LazyRoot.php
+++ b/lib/private/Files/Node/LazyRoot.php
@@ -214,7 +214,7 @@ class LazyRoot implements IRootFolder {
/**
* @inheritDoc
*/
- public function getSize() {
+ public function getSize($includeMounts = true) {
return $this->__call(__FUNCTION__, func_get_args());
}
diff --git a/lib/private/Files/Node/Node.php b/lib/private/Files/Node/Node.php
index 590f1080617..41e8bf75242 100644
--- a/lib/private/Files/Node/Node.php
+++ b/lib/private/Files/Node/Node.php
@@ -190,12 +190,13 @@ class Node implements \OCP\Files\Node {
}
/**
+ * @param bool $includeMounts
* @return int
* @throws InvalidPathException
* @throws NotFoundException
*/
- public function getSize() {
- return $this->getFileInfo()->getSize();
+ public function getSize($includeMounts = true) {
+ return $this->getFileInfo()->getSize($includeMounts);
}
/**
diff --git a/lib/private/Files/Node/NonExistingFile.php b/lib/private/Files/Node/NonExistingFile.php
index fbfb67749bb..5183102483f 100644
--- a/lib/private/Files/Node/NonExistingFile.php
+++ b/lib/private/Files/Node/NonExistingFile.php
@@ -66,9 +66,9 @@ class NonExistingFile extends File {
}
}
- public function getSize() {
+ public function getSize($includeMounts = true) {
if ($this->fileInfo) {
- return parent::getSize();
+ return parent::getSize($includeMounts);
} else {
throw new NotFoundException();
}
diff --git a/lib/private/Files/Node/NonExistingFolder.php b/lib/private/Files/Node/NonExistingFolder.php
index efc359181c6..f6a1794a531 100644
--- a/lib/private/Files/Node/NonExistingFolder.php
+++ b/lib/private/Files/Node/NonExistingFolder.php
@@ -67,9 +67,9 @@ class NonExistingFolder extends Folder {
}
}
- public function getSize() {
+ public function getSize($includeMounts = true) {
if ($this->fileInfo) {
- return parent::getSize();
+ return parent::getSize($includeMounts);
} else {
throw new NotFoundException();
}
diff --git a/lib/private/Files/Node/Root.php b/lib/private/Files/Node/Root.php
index 189c2863a34..390d29edb31 100644
--- a/lib/private/Files/Node/Root.php
+++ b/lib/private/Files/Node/Root.php
@@ -282,9 +282,10 @@ class Root extends Folder implements IRootFolder {
}
/**
+ * @param bool $includeMounts
* @return int
*/
- public function getSize() {
+ public function getSize($includeMounts = true) {
return null;
}
diff --git a/lib/private/Files/ObjectStore/ObjectStoreStorage.php b/lib/private/Files/ObjectStore/ObjectStoreStorage.php
index 7ee1c8e2055..83a649e6084 100644
--- a/lib/private/Files/ObjectStore/ObjectStoreStorage.php
+++ b/lib/private/Files/ObjectStore/ObjectStoreStorage.php
@@ -26,9 +26,9 @@
namespace OC\Files\ObjectStore;
use Icewind\Streams\CallbackWrapper;
+use Icewind\Streams\CountWrapper;
use Icewind\Streams\IteratorDirectory;
use OC\Files\Cache\CacheEntry;
-use OC\Files\Stream\CountReadStream;
use OCP\Files\NotFoundException;
use OCP\Files\ObjectStore\IObjectStore;
@@ -443,7 +443,7 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
try {
//upload to object storage
if ($size === null) {
- $countStream = CountReadStream::wrap($stream, function ($writtenSize) use ($fileId, &$size) {
+ $countStream = CountWrapper::wrap($stream, function ($writtenSize) use ($fileId, &$size) {
$this->getCache()->update($fileId, [
'size' => $writtenSize
]);
diff --git a/lib/private/Files/ObjectStore/S3ObjectTrait.php b/lib/private/Files/ObjectStore/S3ObjectTrait.php
index 0b55c319ea8..7c46ba25c11 100644
--- a/lib/private/Files/ObjectStore/S3ObjectTrait.php
+++ b/lib/private/Files/ObjectStore/S3ObjectTrait.php
@@ -23,8 +23,11 @@
namespace OC\Files\ObjectStore;
+use Aws\S3\Exception\S3MultipartUploadException;
use Aws\S3\MultipartUploader;
+use Aws\S3\ObjectUploader;
use Aws\S3\S3Client;
+use Icewind\Streams\CallbackWrapper;
const S3_UPLOAD_PART_SIZE = 524288000; // 500MB
@@ -73,12 +76,30 @@ trait S3ObjectTrait {
* @since 7.0.0
*/
function writeObject($urn, $stream) {
- $uploader = new MultipartUploader($this->getConnection(), $stream, [
+ $count = 0;
+ $countStream = CallbackWrapper::wrap($stream, function ($read) use (&$count) {
+ $count += $read;
+ });
+
+ $uploader = new MultipartUploader($this->getConnection(), $countStream, [
'bucket' => $this->bucket,
'key' => $urn,
'part_size' => S3_UPLOAD_PART_SIZE
]);
- $uploader->upload();
+
+ try {
+ $uploader->upload();
+ } catch (S3MultipartUploadException $e) {
+ // This is an emty file so just touch it then
+ if ($count === 0 && feof($countStream)) {
+ $uploader = new ObjectUploader($this->getConnection(), $this->bucket, $urn, '');
+ $uploader->upload();
+ } else {
+ throw $e;
+ }
+ }
+
+ fclose($countStream);
}
/**
diff --git a/lib/private/Files/Stream/CountReadStream.php b/lib/private/Files/Stream/CountReadStream.php
deleted file mode 100644
index 93cadf8f214..00000000000
--- a/lib/private/Files/Stream/CountReadStream.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php declare(strict_types=1);
-/**
- * @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl>
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-namespace OC\Files\Stream;
-
-use Icewind\Streams\Wrapper;
-
-class CountReadStream extends Wrapper {
- /** @var int */
- private $count;
-
- /** @var callback */
- private $callback;
-
- public static function wrap($source, $callback) {
- $context = stream_context_create(array(
- 'count' => array(
- 'source' => $source,
- 'callback' => $callback,
- )
- ));
- return Wrapper::wrapSource($source, $context, 'count', self::class);
- }
-
- public function dir_opendir($path, $options) {
- return false;
- }
-
- public function stream_open($path, $mode, $options, &$opened_path) {
- $context = $this->loadContext('count');
-
- $this->callback = $context['callback'];
- return true;
- }
-
- public function stream_read($count) {
- $result = parent::stream_read($count);
- $this->count += strlen($result);
- return $result;
- }
-
- public function stream_close() {
- $result = parent::stream_close();
- call_user_func($this->callback, $this->count);
- return $result;
- }
-}
diff --git a/lib/private/Group/Group.php b/lib/private/Group/Group.php
index 0d54cf8e35a..df8de7af5d5 100644
--- a/lib/private/Group/Group.php
+++ b/lib/private/Group/Group.php
@@ -30,6 +30,7 @@
namespace OC\Group;
+use OCP\Group\Backend\IHideFromCollaborationBackend;
use OCP\GroupInterface;
use OCP\IGroup;
use OCP\IUser;
@@ -350,4 +351,14 @@ class Group implements IGroup {
}
return false;
}
+
+ /**
+ * @return bool
+ * @since 16.0.0
+ */
+ public function hideFromCollaboration(): bool {
+ return array_reduce($this->backends, function(bool $hide, GroupInterface $backend) {
+ return $hide | ($backend instanceof IHideFromCollaborationBackend && $backend->hideGroup($this->gid));
+ }, false);
+ }
}
diff --git a/lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php b/lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php
index e0ad6a550e5..26f4a56d15a 100644
--- a/lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php
+++ b/lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php
@@ -26,7 +26,7 @@ namespace OC\IntegrityCheck\Iterator;
/**
* Class ExcludeFileByNameFilterIterator provides a custom iterator which excludes
- * entries with the specified file name from the file list.
+ * entries with the specified file name from the file list. These file names are matched exactly.
*
* @package OC\Integritycheck\Iterator
*/
@@ -42,21 +42,42 @@ class ExcludeFileByNameFilterIterator extends \RecursiveFilterIterator {
'.DS_Store', // Mac OS X
'Thumbs.db', // Microsoft Windows
'.directory', // Dolphin (KDE)
- '.webapp', // Gentoo/Funtoo & derivatives use a tool known as webapp-config to manager wep-apps.
+ '.webapp', // Gentoo/Funtoo & derivatives use a tool known as webapp-config to manage web-apps.
];
/**
+ * Array of excluded file name parts. Those are not scanned by the integrity checker.
+ * These strings are regular expressions and any file names
+ * matching these expressions are ignored.
+ *
+ * @var array
+ */
+ private $excludedFilenamePatterns = [
+ '/^\.webapp-nextcloud-(\d+\.){2}(\d+)(-r\d+)?$/', // Gentoo/Funtoo & derivatives use a tool known as webapp-config to manage wep-apps.
+ ];
+
+ /**
* @return bool
*/
public function accept() {
- if($this->isDir()) {
+ /** @var \SplFileInfo $current */
+ $current = $this->current();
+
+ if ($current->isDir()) {
return true;
}
- return !\in_array(
- $this->current()->getFilename(),
- $this->excludedFilenames,
- true
- );
+ $currentFileName = $current->getFilename();
+ if (in_array($currentFileName, $this->excludedFilenames, true)){
+ return false;
+ }
+
+ foreach ($this->excludedFilenamePatterns as $pattern){
+ if (preg_match($pattern, $currentFileName) > 0){
+ return false;
+ }
+ }
+
+ return true;
}
}
diff --git a/lib/private/Mail/EMailTemplate.php b/lib/private/Mail/EMailTemplate.php
index 05a884a67fa..b3654f30382 100644
--- a/lib/private/Mail/EMailTemplate.php
+++ b/lib/private/Mail/EMailTemplate.php
@@ -435,6 +435,7 @@ EOF;
$text = htmlspecialchars($text);
}
+ $this->ensureBodyListClosed();
$this->ensureBodyIsOpened();
$this->htmlBody .= vsprintf($this->bodyText, [$text]);
diff --git a/lib/private/NavigationManager.php b/lib/private/NavigationManager.php
index 1874cd0e4ff..2c41fbd88c2 100644
--- a/lib/private/NavigationManager.php
+++ b/lib/private/NavigationManager.php
@@ -271,10 +271,10 @@ class NavigationManager implements INavigationManager {
// load plugins and collections from info.xml
$info = $this->appManager->getAppInfo($app);
- if (empty($info['navigations'])) {
+ if (!isset($info['navigations']['navigation'])) {
continue;
}
- foreach ($info['navigations'] as $nav) {
+ foreach ($info['navigations']['navigation'] as $key => $nav) {
if (!isset($nav['name'])) {
continue;
}
@@ -286,7 +286,7 @@ class NavigationManager implements INavigationManager {
continue;
}
$l = $this->l10nFac->get($app);
- $id = isset($nav['id']) ? $nav['id'] : $app;
+ $id = $nav['id'] ?? $app . ($key === 0 ? '' : $key);
$order = isset($nav['order']) ? $nav['order'] : 100;
$type = isset($nav['type']) ? $nav['type'] : 'link';
$route = $nav['route'] !== '' ? $this->urlGenerator->linkToRoute($nav['route']) : '';
diff --git a/lib/private/Repair.php b/lib/private/Repair.php
index 72995a96132..e4eb4cfcc16 100644
--- a/lib/private/Repair.php
+++ b/lib/private/Repair.php
@@ -43,6 +43,7 @@ use OC\Repair\NC13\RepairInvalidPaths;
use OC\Repair\NC14\AddPreviewBackgroundCleanupJob;
use OC\Repair\NC14\RepairPendingCronJobs;
use OC\Repair\NC15\SetVcardDatabaseUID;
+use OC\Repair\NC16\AddClenupLoginFlowV2BackgroundJob;
use OC\Repair\NC16\CleanupCardDAVPhotoCache;
use OC\Repair\OldGroupMembershipShares;
use OC\Repair\Owncloud\DropAccountTermsTable;
@@ -150,6 +151,7 @@ class Repair implements IOutput {
new RepairPendingCronJobs(\OC::$server->getDatabaseConnection(), \OC::$server->getConfig()),
new SetVcardDatabaseUID(\OC::$server->getDatabaseConnection(), \OC::$server->getConfig(), \OC::$server->getLogger()),
new CleanupCardDAVPhotoCache(\OC::$server->getConfig(), \OC::$server->getAppDataDir('dav-photocache'), \OC::$server->getLogger()),
+ new AddClenupLoginFlowV2BackgroundJob(\OC::$server->getJobList()),
];
}
diff --git a/lib/private/Repair/NC16/AddClenupLoginFlowV2BackgroundJob.php b/lib/private/Repair/NC16/AddClenupLoginFlowV2BackgroundJob.php
new file mode 100644
index 00000000000..9f8bdef9b1f
--- /dev/null
+++ b/lib/private/Repair/NC16/AddClenupLoginFlowV2BackgroundJob.php
@@ -0,0 +1,49 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OC\Repair\NC16;
+
+use OC\Core\BackgroundJobs\CleanupLoginFlowV2;
+use OCP\BackgroundJob\IJobList;
+use OCP\Migration\IOutput;
+use OCP\Migration\IRepairStep;
+
+class AddClenupLoginFlowV2BackgroundJob implements IRepairStep {
+
+ /** @var IJobList */
+ private $jobList;
+
+ public function __construct(IJobList $jobList) {
+ $this->jobList = $jobList;
+ }
+
+ public function getName(): string {
+ return 'Add background job to cleanup login flow v2 tokens';
+ }
+
+ public function run(IOutput $output) {
+ $this->jobList->add(CleanupLoginFlowV2::class);
+ }
+
+}
diff --git a/lib/private/Route/Router.php b/lib/private/Route/Router.php
index b44b3f7c2ce..1839b356424 100644
--- a/lib/private/Route/Router.php
+++ b/lib/private/Route/Router.php
@@ -260,7 +260,7 @@ class Router implements IRouter {
$this->loadRoutes($app);
} else if (substr($url, 0, 6) === '/core/' or substr($url, 0, 10) === '/settings/') {
\OC::$REQUESTEDAPP = $url;
- if (!\OC::$server->getConfig()->getSystemValue('maintenance', false) && !Util::needUpgrade()) {
+ if (!\OC::$server->getConfig()->getSystemValueBool('maintenance') && !Util::needUpgrade()) {
\OC_App::loadApps();
}
$this->loadRoutes('core');
diff --git a/lib/private/Server.php b/lib/private/Server.php
index 89f55fcc9f3..8a49a8a8a94 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -964,7 +964,8 @@ class Server extends ServerContainer implements IServerContainer {
$c->getMemCacheFactory(),
new Util($c->getConfig(), $this->getAppManager(), $c->getAppDataDir('theming')),
new ImageManager($c->getConfig(), $c->getAppDataDir('theming'), $c->getURLGenerator(), $this->getMemCacheFactory(), $this->getLogger()),
- $c->getAppManager()
+ $c->getAppManager(),
+ $c->getNavigationManager()
);
}
return new \OC_Defaults();
diff --git a/lib/private/Settings/Admin/Security.php b/lib/private/Settings/Admin/Security.php
index dd80d4d3ae6..21e18883cc0 100644
--- a/lib/private/Settings/Admin/Security.php
+++ b/lib/private/Settings/Admin/Security.php
@@ -25,25 +25,35 @@
namespace OC\Settings\Admin;
+use OC\Authentication\TwoFactorAuth\MandatoryTwoFactor;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\Encryption\IManager;
+use OCP\IInitialStateService;
use OCP\IUserManager;
use OCP\Settings\ISettings;
class Security implements ISettings {
+
/** @var IManager */
private $manager;
/** @var IUserManager */
private $userManager;
- /**
- * @param IManager $manager
- * @param IUserManager $userManager
- */
- public function __construct(IManager $manager, IUserManager $userManager) {
+ /** @var MandatoryTwoFactor */
+ private $mandatoryTwoFactor;
+
+ /** @var IInitialStateService */
+ private $initialState;
+
+ public function __construct(IManager $manager,
+ IUserManager $userManager,
+ MandatoryTwoFactor $mandatoryTwoFactor,
+ IInitialStateService $initialState) {
$this->manager = $manager;
$this->userManager = $userManager;
+ $this->mandatoryTwoFactor = $mandatoryTwoFactor;
+ $this->initialState = $initialState;
}
/**
@@ -61,6 +71,12 @@ class Security implements ISettings {
}
}
+ $this->initialState->provideInitialState(
+ 'settings',
+ 'mandatory2FAState',
+ $this->mandatoryTwoFactor->getState()
+ );
+
$parameters = [
// Encryption API
'encryptionEnabled' => $this->manager->isEnabled(),
diff --git a/lib/private/Setup.php b/lib/private/Setup.php
index 0278191587a..5b2f71e69c5 100644
--- a/lib/private/Setup.php
+++ b/lib/private/Setup.php
@@ -517,6 +517,7 @@ class Setup {
$content .= "\n RewriteCond %{REQUEST_FILENAME} !/robots.txt";
$content .= "\n RewriteCond %{REQUEST_FILENAME} !/updater/";
$content .= "\n RewriteCond %{REQUEST_FILENAME} !/ocs-provider/";
+ $content .= "\n RewriteCond %{REQUEST_FILENAME} !/ocm-provider/";
$content .= "\n RewriteCond %{REQUEST_URI} !^/\\.well-known/(acme-challenge|pki-validation)/.*";
$content .= "\n RewriteRule . index.php [PT,E=PATH_INFO:$1]";
$content .= "\n RewriteBase " . $rewriteBase;
diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php
index b04f1acbd87..884ab4754f5 100644
--- a/lib/private/Share20/Manager.php
+++ b/lib/private/Share20/Manager.php
@@ -1419,10 +1419,12 @@ class Manager implements IManager {
return $al;
}
- //Get node for the owner
+ //Get node for the owner and correct the owner in case of external storages
$userFolder = $this->rootFolder->getUserFolder($owner);
if ($path->getId() !== $userFolder->getId() && !$userFolder->isSubNode($path)) {
- $path = $userFolder->getById($path->getId())[0];
+ $nodes = $userFolder->getById($path->getId());
+ $path = array_shift($nodes);
+ $owner = $path->getOwner()->getUID();
}
$providers = $this->factory->getAllProviders();
diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php
index e4a2724de67..f23ec97119f 100644
--- a/lib/private/TemplateLayout.php
+++ b/lib/private/TemplateLayout.php
@@ -67,7 +67,7 @@ class TemplateLayout extends \OC_Template {
}
// Decide which page we show
- if($renderAs == 'user') {
+ if($renderAs === 'user') {
parent::__construct( 'core', 'layout.user' );
if(in_array(\OC_App::getCurrentApp(), ['settings','admin', 'help']) !== false) {
$this->assign('bodyid', 'body-settings');
@@ -115,14 +115,20 @@ class TemplateLayout extends \OC_Template {
$this->assign('themingInvertMenu', false);
}
- } else if ($renderAs == 'error') {
+ } else if ($renderAs === 'error') {
parent::__construct('core', 'layout.guest', '', false);
$this->assign('bodyid', 'body-login');
- } else if ($renderAs == 'guest') {
+ $this->assign('user_displayname', '');
+ $this->assign('user_uid', '');
+ } else if ($renderAs === 'guest') {
parent::__construct('core', 'layout.guest');
\OC_Util::addStyle('guest');
$this->assign('bodyid', 'body-login');
- } else if ($renderAs == 'public') {
+
+ $userDisplayName = \OC_User::getDisplayName();
+ $this->assign('user_displayname', $userDisplayName);
+ $this->assign('user_uid', \OC_User::getUser());
+ } else if ($renderAs === 'public') {
parent::__construct('core', 'layout.public');
$this->assign( 'appid', $appId );
$this->assign('bodyid', 'body-public');
diff --git a/lib/private/Updater.php b/lib/private/Updater.php
index 4b4723be94f..313cfc82ffa 100644
--- a/lib/private/Updater.php
+++ b/lib/private/Updater.php
@@ -104,7 +104,7 @@ class Updater extends BasicEmitter {
$this->emit('\OC\Updater', 'setDebugLogLevel', [ $logLevel, $this->logLevelNames[$logLevel] ]);
$this->config->setSystemValue('loglevel', ILogger::DEBUG);
- $wasMaintenanceModeEnabled = $this->config->getSystemValue('maintenance', false);
+ $wasMaintenanceModeEnabled = $this->config->getSystemValueBool('maintenance');
if(!$wasMaintenanceModeEnabled) {
$this->config->setSystemValue('maintenance', true);
@@ -614,4 +614,3 @@ class Updater extends BasicEmitter {
}
}
-
diff --git a/lib/private/legacy/app.php b/lib/private/legacy/app.php
index 4cab92eba64..9b4a83de349 100644
--- a/lib/private/legacy/app.php
+++ b/lib/private/legacy/app.php
@@ -106,7 +106,7 @@ class OC_App {
* if $types is set to non-empty array, only apps of those types will be loaded
*/
public static function loadApps(array $types = []): bool {
- if (\OC::$server->getSystemConfig()->getValue('maintenance', false)) {
+ if ((bool) \OC::$server->getSystemConfig()->getValue('maintenance', false)) {
return false;
}
// Load the enabled apps here
diff --git a/lib/public/AppFramework/Http/RedirectToDefaultAppResponse.php b/lib/public/AppFramework/Http/RedirectToDefaultAppResponse.php
new file mode 100644
index 00000000000..2ec50137ef9
--- /dev/null
+++ b/lib/public/AppFramework/Http/RedirectToDefaultAppResponse.php
@@ -0,0 +1,40 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Joas Schilling <coding@schilljs.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OCP\AppFramework\Http;
+
+
+/**
+ * Redirects to the default app
+ * @since 16.0.0
+ */
+class RedirectToDefaultAppResponse extends RedirectResponse {
+
+
+ /**
+ * Creates a response that redirects to the default app
+ * @since 16.0.0
+ */
+ public function __construct() {
+ parent::__construct(\OC_Util::getDefaultPageUrl());
+ }
+
+}
diff --git a/lib/public/Collaboration/AutoComplete/AutoCompleteEvent.php b/lib/public/Collaboration/AutoComplete/AutoCompleteEvent.php
new file mode 100644
index 00000000000..59dbafcb56f
--- /dev/null
+++ b/lib/public/Collaboration/AutoComplete/AutoCompleteEvent.php
@@ -0,0 +1,99 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Joas Schilling <coding@schilljs.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\Collaboration\AutoComplete;
+
+
+use Symfony\Component\EventDispatcher\GenericEvent;
+
+/**
+ * @since 16.0.0
+ */
+class AutoCompleteEvent extends GenericEvent {
+
+ /**
+ * @param array $arguments
+ * @since 16.0.0
+ */
+ public function __construct(array $arguments) {
+ parent::__construct(null, $arguments);
+ }
+
+ /**
+ * @since 16.0.0
+ */
+ public function getResults(): array {
+ return $this->getArgument('results');
+ }
+
+ /**
+ * @param array $results
+ * @since 16.0.0
+ */
+ public function setResults(array $results): void {
+ $this->setArgument('results', $results);
+ }
+
+ /**
+ * @since 16.0.0
+ */
+ public function getSearchTerm(): string {
+ return $this->getArgument('search');
+ }
+
+ /**
+ * @return int[]
+ * @since 16.0.0
+ */
+ public function getShareTypes(): array {
+ return $this->getArgument('shareTypes');
+ }
+
+ /**
+ * @since 16.0.0
+ */
+ public function getItemType(): string {
+ return $this->getArgument('itemType');
+ }
+
+ /**
+ * @since 16.0.0
+ */
+ public function getItemId(): string {
+ return $this->getArgument('itemId');
+ }
+
+ /**
+ * @since 16.0.0
+ */
+ public function getSorter(): string {
+ return $this->getArgument('sorter');
+ }
+
+ /**
+ * @since 16.0.0
+ */
+ public function getLimit(): int {
+ return $this->getArgument('limit');
+ }
+
+}
diff --git a/lib/public/Files/Cache/CacheInsertEvent.php b/lib/public/Files/Cache/CacheInsertEvent.php
index 071f039d45f..6c2e3f34c72 100644
--- a/lib/public/Files/Cache/CacheInsertEvent.php
+++ b/lib/public/Files/Cache/CacheInsertEvent.php
@@ -21,52 +21,12 @@
namespace OCP\Files\Cache;
-use OCP\Files\Storage\IStorage;
-use Symfony\Component\EventDispatcher\Event;
+use OC\Files\Cache\AbstractCacheEvent;
/**
+ * Event for when a new entry gets added to the cache
+ *
* @since 16.0.0
*/
-class CacheInsertEvent extends Event {
- private $storage;
- private $path;
- private $fileId;
-
- /**
- * CacheInsertEvent constructor.
- *
- * @param IStorage $storage
- * @param string $path
- * @param int $fileId
- * @since 16.0.0
- */
- public function __construct(IStorage $storage, string $path, int $fileId) {
- $this->storage = $storage;
- $this->path = $path;
- $this->fileId = $fileId;
- }
-
- /**
- * @return IStorage
- * @since 16.0.0
- */
- public function getStorage(): IStorage {
- return $this->storage;
- }
-
- /**
- * @return string
- * @since 16.0.0
- */
- public function getPath(): string {
- return $this->path;
- }
-
- /**
- * @return int
- * @since 16.0.0
- */
- public function getFileId(): int {
- return $this->fileId;
- }
+class CacheInsertEvent extends AbstractCacheEvent {
}
diff --git a/lib/public/Files/Cache/CacheUpdateEvent.php b/lib/public/Files/Cache/CacheUpdateEvent.php
new file mode 100644
index 00000000000..e750c0bf8fc
--- /dev/null
+++ b/lib/public/Files/Cache/CacheUpdateEvent.php
@@ -0,0 +1,32 @@
+<?php declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Robin Appelman <robin@icewind.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\Files\Cache;
+
+use OC\Files\Cache\AbstractCacheEvent;
+
+/**
+ * Event for when an existing entry in the cache gets updated
+ *
+ * @since 16.0.0
+ */
+class CacheUpdateEvent extends AbstractCacheEvent {
+}
diff --git a/lib/public/Files/Cache/ICacheEvent.php b/lib/public/Files/Cache/ICacheEvent.php
new file mode 100644
index 00000000000..f3ad9c03ac1
--- /dev/null
+++ b/lib/public/Files/Cache/ICacheEvent.php
@@ -0,0 +1,47 @@
+<?php declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Robin Appelman <robin@icewind.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\Files\Cache;
+
+use OCP\Files\Storage\IStorage;
+
+/**
+ * @since 16.0.0
+ */
+interface ICacheEvent {
+ /**
+ * @return IStorage
+ * @since 16.0.0
+ */
+ public function getStorage(): IStorage;
+
+ /**
+ * @return string
+ * @since 16.0.0
+ */
+ public function getPath(): string;
+
+ /**
+ * @return int
+ * @since 16.0.0
+ */
+ public function getFileId(): int;
+}
diff --git a/lib/public/Files/FileInfo.php b/lib/public/Files/FileInfo.php
index e25a47e83cd..c256f0980f0 100644
--- a/lib/public/Files/FileInfo.php
+++ b/lib/public/Files/FileInfo.php
@@ -81,10 +81,11 @@ interface FileInfo {
/**
* Get the size in bytes for the file or folder
*
+ * @param bool $includeMounts whether or not to include the size of any sub mounts, since 16.0.0
* @return int
* @since 7.0.0
*/
- public function getSize();
+ public function getSize($includeMounts = true);
/**
* Get the last modified date as timestamp for the file or folder
diff --git a/lib/public/Files/Node.php b/lib/public/Files/Node.php
index 59bd0e193c6..016b217afc3 100644
--- a/lib/public/Files/Node.php
+++ b/lib/public/Files/Node.php
@@ -136,12 +136,13 @@ interface Node extends FileInfo {
/**
* Get the size of the file or folder in bytes
*
+ * @param bool $includeMounts
* @return int
* @throws InvalidPathException
* @throws NotFoundException
* @since 6.0.0
*/
- public function getSize();
+ public function getSize($includeMounts = true);
/**
* Get the Etag of the file or folder
diff --git a/lib/public/FullTextSearch/Model/ISearchResult.php b/lib/public/FullTextSearch/Model/ISearchResult.php
index a7dcba82f5c..453ec61e7de 100644
--- a/lib/public/FullTextSearch/Model/ISearchResult.php
+++ b/lib/public/FullTextSearch/Model/ISearchResult.php
@@ -93,7 +93,7 @@ interface ISearchResult {
*
* @since 15.0.0
*
- * @return array
+ * @return IndexDocument[]
*/
public function getDocuments(): array;
diff --git a/lib/public/FullTextSearch/Model/IndexDocument.php b/lib/public/FullTextSearch/Model/IndexDocument.php
index 78679ac6225..d00a8461ee8 100644
--- a/lib/public/FullTextSearch/Model/IndexDocument.php
+++ b/lib/public/FullTextSearch/Model/IndexDocument.php
@@ -183,6 +183,17 @@ class IndexDocument implements JsonSerializable {
return $this->index;
}
+ /**
+ * return if Index is defined.
+ *
+ * @since 16.0.0
+ *
+ * @return bool
+ */
+ final public function hasIndex(): bool {
+ return $this->index !== null;
+ }
+
/**
* Set the modified time of the original document.
diff --git a/lib/public/Group/Backend/IHideFromCollaborationBackend.php b/lib/public/Group/Backend/IHideFromCollaborationBackend.php
new file mode 100644
index 00000000000..81afbc3d568
--- /dev/null
+++ b/lib/public/Group/Backend/IHideFromCollaborationBackend.php
@@ -0,0 +1,38 @@
+<?php declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2019 Robin Appelman <robin@icewind.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\Group\Backend;
+
+/**
+ * @since 16.0.0
+ *
+ * Allow the backend to mark groups to be excluded from being shown in search dialogs
+ */
+interface IHideFromCollaborationBackend {
+ /**
+ * Check if a group should be hidden from search dialogs
+ *
+ * @param string $groupId
+ * @return bool
+ * @since 16.0.0
+ */
+ public function hideGroup(string $groupId): bool;
+}
diff --git a/lib/public/IConfig.php b/lib/public/IConfig.php
index e4cd158f872..878c0acf0c3 100644
--- a/lib/public/IConfig.php
+++ b/lib/public/IConfig.php
@@ -75,6 +75,36 @@ interface IConfig {
public function getSystemValue($key, $default = '');
/**
+ * Looks up a boolean system wide defined value
+ *
+ * @param string $key the key of the value, under which it was saved
+ * @param bool $default the default value to be returned if the value isn't set
+ * @return bool the value or $default
+ * @since 16.0.0
+ */
+ public function getSystemValueBool(string $key, bool $default = false): bool;
+
+ /**
+ * Looks up an integer system wide defined value
+ *
+ * @param string $key the key of the value, under which it was saved
+ * @param int $default the default value to be returned if the value isn't set
+ * @return int the value or $default
+ * @since 16.0.0
+ */
+ public function getSystemValueInt(string $key, int $default = 0): int;
+
+ /**
+ * Looks up a string system wide defined value
+ *
+ * @param string $key the key of the value, under which it was saved
+ * @param string $default the default value to be returned if the value isn't set
+ * @return string the value or $default
+ * @since 16.0.0
+ */
+ public function getSystemValueString(string $key, string $default = ''): string;
+
+ /**
* Looks up a system wide defined value and filters out sensitive data
*
* @param string $key the key of the value, under which it was saved
diff --git a/lib/public/IGroup.php b/lib/public/IGroup.php
index 8fa87e35ce3..48fa84df393 100644
--- a/lib/public/IGroup.php
+++ b/lib/public/IGroup.php
@@ -138,4 +138,10 @@ interface IGroup {
* @since 14.0.0
*/
public function canAddUser();
+
+ /**
+ * @return bool
+ * @since 16.0.0
+ */
+ public function hideFromCollaboration(): bool;
}
diff --git a/lib/public/INavigationManager.php b/lib/public/INavigationManager.php
index 77b881b8b15..f840bc8c8a5 100644
--- a/lib/public/INavigationManager.php
+++ b/lib/public/INavigationManager.php
@@ -39,6 +39,25 @@ namespace OCP;
* @since 6.0.0
*/
interface INavigationManager {
+
+ /**
+ * Navigation entries of the app navigation
+ * @since 16.0.0
+ */
+ const TYPE_APPS = 'link';
+
+ /**
+ * Navigation entries of the settings navigation
+ * @since 16.0.0
+ */
+ const TYPE_SETTINGS = 'settings';
+
+ /**
+ * Navigation entries for public page footer navigation
+ * @since 16.0.0
+ */
+ const TYPE_GUEST = 'guest';
+
/**
* Creates a new navigation entry
*
@@ -65,5 +84,5 @@ interface INavigationManager {
* @return array
* @since 14.0.0
*/
- public function getAll(string $type = 'link'): array;
+ public function getAll(string $type = self::TYPE_APPS): array;
}