summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.codecov.yml3
m---------3rdparty0
-rw-r--r--apps/dav/l10n/cs.js2
-rw-r--r--apps/dav/l10n/cs.json2
-rw-r--r--apps/dav/lib/Avatars/AvatarHome.php2
-rw-r--r--apps/dav/lib/Connector/Sabre/MaintenancePlugin.php3
-rw-r--r--apps/dav/lib/Migration/Version1004Date20170825134824.php8
-rw-r--r--apps/dav/lib/Migration/Version1004Date20170919104507.php8
-rw-r--r--apps/dav/lib/Migration/Version1004Date20170924124212.php8
-rw-r--r--apps/dav/lib/Migration/Version1004Date20170926103422.php3
-rw-r--r--apps/dav/tests/unit/Avatars/AvatarHomeTest.php17
-rw-r--r--apps/federatedfilesharing/lib/Controller/RequestHandlerController.php2
-rw-r--r--apps/federatedfilesharing/tests/FederatedShareProviderTest.php18
-rw-r--r--apps/files_external/3rdparty/composer.json2
-rw-r--r--apps/files_external/3rdparty/composer.lock12
-rw-r--r--apps/files_external/3rdparty/composer/ClassLoader.php4
-rw-r--r--apps/files_external/3rdparty/composer/autoload_classmap.php13
-rw-r--r--apps/files_external/3rdparty/composer/autoload_static.php13
-rw-r--r--apps/files_external/3rdparty/composer/installed.json60
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/AbstractShare.php4
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/Connection.php9
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/NativeShare.php50
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/NativeState.php5
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/Share.php3
-rw-r--r--apps/files_external/appinfo/routes.php37
-rw-r--r--apps/files_external/js/statusmanager.js3
-rw-r--r--apps/files_external/l10n/nb.js1
-rw-r--r--apps/files_external/l10n/nb.json1
-rw-r--r--apps/files_external/lib/Controller/ApiController.php (renamed from apps/files_external/lib/Lib/Api.php)44
-rw-r--r--apps/files_external/tests/Storage/SmbTest.php4
-rw-r--r--apps/files_sharing/css/public.scss7
-rw-r--r--apps/files_sharing/templates/public.php8
-rw-r--r--apps/files_sharing/tests/ApiTest.php22
-rw-r--r--apps/files_sharing/tests/CacheTest.php6
-rw-r--r--apps/files_versions/l10n/bg.js2
-rw-r--r--apps/files_versions/l10n/bg.json2
-rw-r--r--apps/systemtags/list.php18
-rw-r--r--apps/testing/lib/Locking/FakeDBLockingProvider.php2
-rw-r--r--apps/theming/lib/Controller/ThemingController.php10
-rw-r--r--apps/twofactor_backupcodes/lib/Migration/Version1002Date20170607104347.php8
-rw-r--r--apps/twofactor_backupcodes/lib/Migration/Version1002Date20170607113030.php12
-rw-r--r--apps/twofactor_backupcodes/lib/Migration/Version1002Date20170919123342.php8
-rw-r--r--apps/twofactor_backupcodes/lib/Migration/Version1002Date20170926101419.php3
-rw-r--r--apps/updatenotification/appinfo/app.php53
-rw-r--r--apps/updatenotification/appinfo/info.xml4
-rw-r--r--apps/updatenotification/composer/composer/autoload_classmap.php1
-rw-r--r--apps/updatenotification/composer/composer/autoload_static.php1
-rw-r--r--apps/updatenotification/l10n/af.js2
-rw-r--r--apps/updatenotification/l10n/af.json2
-rw-r--r--apps/updatenotification/l10n/ast.js2
-rw-r--r--apps/updatenotification/l10n/ast.json2
-rw-r--r--apps/updatenotification/l10n/bg.js2
-rw-r--r--apps/updatenotification/l10n/bg.json2
-rw-r--r--apps/updatenotification/l10n/ca.js2
-rw-r--r--apps/updatenotification/l10n/ca.json2
-rw-r--r--apps/updatenotification/l10n/cs.js2
-rw-r--r--apps/updatenotification/l10n/cs.json2
-rw-r--r--apps/updatenotification/l10n/da.js2
-rw-r--r--apps/updatenotification/l10n/da.json2
-rw-r--r--apps/updatenotification/l10n/de.js2
-rw-r--r--apps/updatenotification/l10n/de.json2
-rw-r--r--apps/updatenotification/l10n/de_DE.js2
-rw-r--r--apps/updatenotification/l10n/de_DE.json2
-rw-r--r--apps/updatenotification/l10n/el.js2
-rw-r--r--apps/updatenotification/l10n/el.json2
-rw-r--r--apps/updatenotification/l10n/en_GB.js2
-rw-r--r--apps/updatenotification/l10n/en_GB.json2
-rw-r--r--apps/updatenotification/l10n/es.js2
-rw-r--r--apps/updatenotification/l10n/es.json2
-rw-r--r--apps/updatenotification/l10n/es_419.js2
-rw-r--r--apps/updatenotification/l10n/es_419.json2
-rw-r--r--apps/updatenotification/l10n/es_AR.js2
-rw-r--r--apps/updatenotification/l10n/es_AR.json2
-rw-r--r--apps/updatenotification/l10n/es_CL.js2
-rw-r--r--apps/updatenotification/l10n/es_CL.json2
-rw-r--r--apps/updatenotification/l10n/es_CO.js2
-rw-r--r--apps/updatenotification/l10n/es_CO.json2
-rw-r--r--apps/updatenotification/l10n/es_CR.js2
-rw-r--r--apps/updatenotification/l10n/es_CR.json2
-rw-r--r--apps/updatenotification/l10n/es_DO.js2
-rw-r--r--apps/updatenotification/l10n/es_DO.json2
-rw-r--r--apps/updatenotification/l10n/es_EC.js2
-rw-r--r--apps/updatenotification/l10n/es_EC.json2
-rw-r--r--apps/updatenotification/l10n/es_GT.js2
-rw-r--r--apps/updatenotification/l10n/es_GT.json2
-rw-r--r--apps/updatenotification/l10n/es_HN.js2
-rw-r--r--apps/updatenotification/l10n/es_HN.json2
-rw-r--r--apps/updatenotification/l10n/es_MX.js2
-rw-r--r--apps/updatenotification/l10n/es_MX.json2
-rw-r--r--apps/updatenotification/l10n/es_NI.js2
-rw-r--r--apps/updatenotification/l10n/es_NI.json2
-rw-r--r--apps/updatenotification/l10n/es_PA.js2
-rw-r--r--apps/updatenotification/l10n/es_PA.json2
-rw-r--r--apps/updatenotification/l10n/es_PE.js2
-rw-r--r--apps/updatenotification/l10n/es_PE.json2
-rw-r--r--apps/updatenotification/l10n/es_PR.js2
-rw-r--r--apps/updatenotification/l10n/es_PR.json2
-rw-r--r--apps/updatenotification/l10n/es_PY.js2
-rw-r--r--apps/updatenotification/l10n/es_PY.json2
-rw-r--r--apps/updatenotification/l10n/es_SV.js2
-rw-r--r--apps/updatenotification/l10n/es_SV.json2
-rw-r--r--apps/updatenotification/l10n/es_UY.js2
-rw-r--r--apps/updatenotification/l10n/es_UY.json2
-rw-r--r--apps/updatenotification/l10n/fi.js2
-rw-r--r--apps/updatenotification/l10n/fi.json2
-rw-r--r--apps/updatenotification/l10n/fr.js2
-rw-r--r--apps/updatenotification/l10n/fr.json2
-rw-r--r--apps/updatenotification/l10n/gl.js2
-rw-r--r--apps/updatenotification/l10n/gl.json2
-rw-r--r--apps/updatenotification/l10n/hu.js2
-rw-r--r--apps/updatenotification/l10n/hu.json2
-rw-r--r--apps/updatenotification/l10n/ia.js2
-rw-r--r--apps/updatenotification/l10n/ia.json2
-rw-r--r--apps/updatenotification/l10n/id.js2
-rw-r--r--apps/updatenotification/l10n/id.json2
-rw-r--r--apps/updatenotification/l10n/is.js2
-rw-r--r--apps/updatenotification/l10n/is.json2
-rw-r--r--apps/updatenotification/l10n/it.js2
-rw-r--r--apps/updatenotification/l10n/it.json2
-rw-r--r--apps/updatenotification/l10n/ja.js2
-rw-r--r--apps/updatenotification/l10n/ja.json2
-rw-r--r--apps/updatenotification/l10n/ka_GE.js2
-rw-r--r--apps/updatenotification/l10n/ka_GE.json2
-rw-r--r--apps/updatenotification/l10n/ko.js2
-rw-r--r--apps/updatenotification/l10n/ko.json2
-rw-r--r--apps/updatenotification/l10n/lt_LT.js2
-rw-r--r--apps/updatenotification/l10n/lt_LT.json2
-rw-r--r--apps/updatenotification/l10n/lv.js2
-rw-r--r--apps/updatenotification/l10n/lv.json2
-rw-r--r--apps/updatenotification/l10n/nb.js2
-rw-r--r--apps/updatenotification/l10n/nb.json2
-rw-r--r--apps/updatenotification/l10n/nl.js2
-rw-r--r--apps/updatenotification/l10n/nl.json2
-rw-r--r--apps/updatenotification/l10n/pl.js2
-rw-r--r--apps/updatenotification/l10n/pl.json2
-rw-r--r--apps/updatenotification/l10n/pt_BR.js2
-rw-r--r--apps/updatenotification/l10n/pt_BR.json2
-rw-r--r--apps/updatenotification/l10n/ru.js2
-rw-r--r--apps/updatenotification/l10n/ru.json2
-rw-r--r--apps/updatenotification/l10n/sk.js2
-rw-r--r--apps/updatenotification/l10n/sk.json2
-rw-r--r--apps/updatenotification/l10n/sq.js2
-rw-r--r--apps/updatenotification/l10n/sq.json2
-rw-r--r--apps/updatenotification/l10n/sr.js2
-rw-r--r--apps/updatenotification/l10n/sr.json2
-rw-r--r--apps/updatenotification/l10n/sv.js2
-rw-r--r--apps/updatenotification/l10n/sv.json2
-rw-r--r--apps/updatenotification/l10n/tr.js2
-rw-r--r--apps/updatenotification/l10n/tr.json2
-rw-r--r--apps/updatenotification/l10n/zh_CN.js2
-rw-r--r--apps/updatenotification/l10n/zh_CN.json2
-rw-r--r--apps/updatenotification/l10n/zh_TW.js2
-rw-r--r--apps/updatenotification/l10n/zh_TW.json2
-rw-r--r--apps/updatenotification/lib/AppInfo/Application.php96
-rw-r--r--apps/updatenotification/lib/Controller/AdminController.php99
-rw-r--r--apps/updatenotification/lib/Notification/BackgroundJob.php56
-rw-r--r--apps/updatenotification/lib/Notification/Notifier.php18
-rw-r--r--apps/updatenotification/lib/ResetTokenBackgroundJob.php27
-rw-r--r--apps/updatenotification/lib/Settings/Admin.php117
-rw-r--r--apps/updatenotification/lib/UpdateChecker.php13
-rw-r--r--apps/updatenotification/templates/admin.php9
-rw-r--r--apps/updatenotification/tests/Controller/AdminControllerTest.php163
-rw-r--r--apps/updatenotification/tests/Notification/BackgroundJobTest.php41
-rw-r--r--apps/updatenotification/tests/Notification/NotifierTest.php7
-rw-r--r--apps/updatenotification/tests/ResetTokenBackgroundJobTest.php20
-rw-r--r--apps/updatenotification/tests/Settings/AdminTest.php127
-rw-r--r--apps/updatenotification/tests/UpdateCheckerTest.php8
-rw-r--r--apps/user_ldap/lib/Access.php4
-rw-r--r--apps/user_ldap/tests/User_LDAPTest.php24
-rw-r--r--apps/workflowengine/l10n/bg.js2
-rw-r--r--apps/workflowengine/l10n/bg.json2
-rw-r--r--apps/workflowengine/lib/Check/FileSize.php4
-rw-r--r--core/Command/Db/Migrations/GenerateCommand.php10
-rw-r--r--core/Command/Db/Migrations/GenerateFromSchemaFileCommand.php2
-rw-r--r--core/Command/Upgrade.php17
-rw-r--r--core/Controller/AvatarController.php6
-rw-r--r--core/Controller/ClientFlowLoginController.php2
-rw-r--r--core/Controller/CssController.php2
-rw-r--r--core/Controller/JsController.php2
-rw-r--r--core/Controller/LoginController.php16
-rw-r--r--core/Migrations/Version13000Date20170705121758.php8
-rw-r--r--core/Migrations/Version13000Date20170718121200.php8
-rw-r--r--core/Migrations/Version13000Date20170814074715.php12
-rw-r--r--core/Migrations/Version13000Date20170919121250.php12
-rw-r--r--core/Migrations/Version13000Date20170926101637.php3
-rw-r--r--core/ajax/update.php9
-rw-r--r--core/l10n/bg.js30
-rw-r--r--core/l10n/bg.json30
-rw-r--r--core/l10n/ca.js2
-rw-r--r--core/l10n/ca.json2
-rw-r--r--core/l10n/cs.js2
-rw-r--r--core/l10n/cs.json2
-rw-r--r--core/l10n/da.js2
-rw-r--r--core/l10n/da.json2
-rw-r--r--core/l10n/de.js4
-rw-r--r--core/l10n/de.json4
-rw-r--r--core/l10n/de_DE.js4
-rw-r--r--core/l10n/de_DE.json4
-rw-r--r--core/l10n/el.js2
-rw-r--r--core/l10n/el.json2
-rw-r--r--core/l10n/en_GB.js4
-rw-r--r--core/l10n/en_GB.json4
-rw-r--r--core/l10n/es.js4
-rw-r--r--core/l10n/es.json4
-rw-r--r--core/l10n/es_419.js2
-rw-r--r--core/l10n/es_419.json2
-rw-r--r--core/l10n/es_AR.js2
-rw-r--r--core/l10n/es_AR.json2
-rw-r--r--core/l10n/es_CL.js2
-rw-r--r--core/l10n/es_CL.json2
-rw-r--r--core/l10n/es_CO.js2
-rw-r--r--core/l10n/es_CO.json2
-rw-r--r--core/l10n/es_CR.js2
-rw-r--r--core/l10n/es_CR.json2
-rw-r--r--core/l10n/es_DO.js2
-rw-r--r--core/l10n/es_DO.json2
-rw-r--r--core/l10n/es_EC.js2
-rw-r--r--core/l10n/es_EC.json2
-rw-r--r--core/l10n/es_GT.js2
-rw-r--r--core/l10n/es_GT.json2
-rw-r--r--core/l10n/es_HN.js2
-rw-r--r--core/l10n/es_HN.json2
-rw-r--r--core/l10n/es_MX.js2
-rw-r--r--core/l10n/es_MX.json2
-rw-r--r--core/l10n/es_NI.js2
-rw-r--r--core/l10n/es_NI.json2
-rw-r--r--core/l10n/es_PA.js2
-rw-r--r--core/l10n/es_PA.json2
-rw-r--r--core/l10n/es_PE.js2
-rw-r--r--core/l10n/es_PE.json2
-rw-r--r--core/l10n/es_PR.js2
-rw-r--r--core/l10n/es_PR.json2
-rw-r--r--core/l10n/es_PY.js2
-rw-r--r--core/l10n/es_PY.json2
-rw-r--r--core/l10n/es_SV.js2
-rw-r--r--core/l10n/es_SV.json2
-rw-r--r--core/l10n/es_UY.js2
-rw-r--r--core/l10n/es_UY.json2
-rw-r--r--core/l10n/et_EE.js2
-rw-r--r--core/l10n/et_EE.json2
-rw-r--r--core/l10n/eu.js2
-rw-r--r--core/l10n/eu.json2
-rw-r--r--core/l10n/fa.js2
-rw-r--r--core/l10n/fa.json2
-rw-r--r--core/l10n/fi.js2
-rw-r--r--core/l10n/fi.json2
-rw-r--r--core/l10n/fr.js4
-rw-r--r--core/l10n/fr.json4
-rw-r--r--core/l10n/hu.js3
-rw-r--r--core/l10n/hu.json3
-rw-r--r--core/l10n/id.js2
-rw-r--r--core/l10n/id.json2
-rw-r--r--core/l10n/is.js2
-rw-r--r--core/l10n/is.json2
-rw-r--r--core/l10n/it.js4
-rw-r--r--core/l10n/it.json4
-rw-r--r--core/l10n/ja.js2
-rw-r--r--core/l10n/ja.json2
-rw-r--r--core/l10n/ka_GE.js4
-rw-r--r--core/l10n/ka_GE.json4
-rw-r--r--core/l10n/ko.js2
-rw-r--r--core/l10n/ko.json2
-rw-r--r--core/l10n/lt_LT.js2
-rw-r--r--core/l10n/lt_LT.json2
-rw-r--r--core/l10n/lv.js2
-rw-r--r--core/l10n/lv.json2
-rw-r--r--core/l10n/nb.js14
-rw-r--r--core/l10n/nb.json14
-rw-r--r--core/l10n/nl.js4
-rw-r--r--core/l10n/nl.json4
-rw-r--r--core/l10n/pl.js2
-rw-r--r--core/l10n/pl.json2
-rw-r--r--core/l10n/pt_BR.js4
-rw-r--r--core/l10n/pt_BR.json4
-rw-r--r--core/l10n/pt_PT.js2
-rw-r--r--core/l10n/pt_PT.json2
-rw-r--r--core/l10n/ro.js2
-rw-r--r--core/l10n/ro.json2
-rw-r--r--core/l10n/ru.js4
-rw-r--r--core/l10n/ru.json4
-rw-r--r--core/l10n/sk.js2
-rw-r--r--core/l10n/sk.json2
-rw-r--r--core/l10n/sl.js2
-rw-r--r--core/l10n/sl.json2
-rw-r--r--core/l10n/sq.js2
-rw-r--r--core/l10n/sq.json2
-rw-r--r--core/l10n/sr.js4
-rw-r--r--core/l10n/sr.json4
-rw-r--r--core/l10n/sv.js2
-rw-r--r--core/l10n/sv.json2
-rw-r--r--core/l10n/tr.js4
-rw-r--r--core/l10n/tr.json4
-rw-r--r--core/l10n/uk.js2
-rw-r--r--core/l10n/uk.json2
-rw-r--r--core/l10n/vi.js2
-rw-r--r--core/l10n/vi.json2
-rw-r--r--core/l10n/zh_CN.js2
-rw-r--r--core/l10n/zh_CN.json2
-rw-r--r--core/l10n/zh_TW.js2
-rw-r--r--core/l10n/zh_TW.json2
-rw-r--r--core/templates/login.php6
-rw-r--r--lib/base.php51
-rw-r--r--lib/composer/composer/autoload_classmap.php8
-rw-r--r--lib/composer/composer/autoload_static.php8
-rw-r--r--lib/l10n/es_419.js2
-rw-r--r--lib/l10n/es_419.json2
-rw-r--r--lib/l10n/es_AR.js1
-rw-r--r--lib/l10n/es_AR.json1
-rw-r--r--lib/l10n/es_CL.js2
-rw-r--r--lib/l10n/es_CL.json2
-rw-r--r--lib/l10n/es_CO.js2
-rw-r--r--lib/l10n/es_CO.json2
-rw-r--r--lib/l10n/es_CR.js2
-rw-r--r--lib/l10n/es_CR.json2
-rw-r--r--lib/l10n/es_DO.js2
-rw-r--r--lib/l10n/es_DO.json2
-rw-r--r--lib/l10n/es_EC.js2
-rw-r--r--lib/l10n/es_EC.json2
-rw-r--r--lib/l10n/es_GT.js2
-rw-r--r--lib/l10n/es_GT.json2
-rw-r--r--lib/l10n/es_HN.js2
-rw-r--r--lib/l10n/es_HN.json2
-rw-r--r--lib/l10n/es_NI.js2
-rw-r--r--lib/l10n/es_NI.json2
-rw-r--r--lib/l10n/es_PA.js2
-rw-r--r--lib/l10n/es_PA.json2
-rw-r--r--lib/l10n/es_PE.js2
-rw-r--r--lib/l10n/es_PE.json2
-rw-r--r--lib/l10n/es_PR.js2
-rw-r--r--lib/l10n/es_PR.json2
-rw-r--r--lib/l10n/es_PY.js2
-rw-r--r--lib/l10n/es_PY.json2
-rw-r--r--lib/l10n/es_SV.js2
-rw-r--r--lib/l10n/es_SV.json2
-rw-r--r--lib/l10n/es_UY.js2
-rw-r--r--lib/l10n/es_UY.json2
-rw-r--r--lib/private/AllConfig.php10
-rw-r--r--lib/private/App/AppManager.php8
-rw-r--r--lib/private/App/CodeChecker/DeprecationCheck.php4
-rw-r--r--lib/private/AppConfig.php5
-rw-r--r--lib/private/AppFramework/Http/Request.php5
-rw-r--r--lib/private/Avatar.php19
-rw-r--r--lib/private/AvatarManager.php14
-rw-r--r--lib/private/Collaboration/Collaborators/Search.php9
-rw-r--r--lib/private/Collaboration/Collaborators/UserPlugin.php11
-rw-r--r--lib/private/Comments/Comment.php4
-rw-r--r--lib/private/Console/Application.php2
-rw-r--r--lib/private/DB/MigrationService.php6
-rw-r--r--lib/private/DB/SchemaWrapper.php33
-rw-r--r--lib/private/Federation/CloudId.php11
-rw-r--r--lib/private/Federation/CloudIdManager.php11
-rw-r--r--lib/private/Files/Cache/QuerySearchHelper.php14
-rw-r--r--lib/private/Http/Client/Client.php28
-rw-r--r--lib/private/Http/Client/ClientService.php4
-rw-r--r--lib/private/Http/Client/Response.php11
-rw-r--r--lib/private/Installer.php2
-rw-r--r--lib/private/L10N/Factory.php2
-rw-r--r--lib/private/Lock/AbstractLockingProvider.php12
-rw-r--r--lib/private/Lock/DBLockingProvider.php20
-rw-r--r--lib/private/Lock/MemcacheLockingProvider.php13
-rw-r--r--lib/private/Lock/NoopLockingProvider.php23
-rw-r--r--lib/private/Log/File.php5
-rw-r--r--lib/private/Memcache/APCu.php4
-rw-r--r--lib/private/Memcache/Factory.php33
-rw-r--r--lib/private/OCS/DiscoveryService.php24
-rw-r--r--lib/private/Preview/Generator.php20
-rw-r--r--lib/private/Preview/GeneratorHelper.php6
-rw-r--r--lib/private/Preview/TXT.php5
-rw-r--r--lib/private/PreviewManager.php4
-rw-r--r--lib/private/Repair.php21
-rw-r--r--lib/private/Repair/NC11/CleanPreviews.php73
-rw-r--r--lib/private/Repair/NC11/CleanPreviewsBackgroundJob.php132
-rw-r--r--lib/private/Repair/NC11/MoveAvatars.php73
-rw-r--r--lib/private/Repair/NC11/MoveAvatarsBackgroundJob.php146
-rw-r--r--lib/private/Repair/NC12/InstallCoreBundle.php80
-rw-r--r--lib/private/Repair/NC12/RepairIdentityProofKeyFolders.php112
-rw-r--r--lib/private/Repair/NC12/UpdateLanguageCodes.php91
-rw-r--r--lib/private/Security/Crypto.php7
-rw-r--r--lib/private/Security/Hasher.php17
-rw-r--r--lib/private/Server.php10
-rw-r--r--lib/private/Share/Share.php121
-rw-r--r--lib/private/Updater.php41
-rw-r--r--lib/private/legacy/app.php14
-rw-r--r--lib/private/legacy/image.php48
-rw-r--r--lib/private/legacy/json.php2
-rw-r--r--lib/private/legacy/user.php76
-rw-r--r--lib/private/legacy/util.php7
-rw-r--r--lib/public/DB/ISchemaWrapper.php92
-rw-r--r--lib/public/Federation/ICloudId.php9
-rw-r--r--lib/public/Federation/ICloudIdManager.php7
-rw-r--r--lib/public/Http/Client/IClient.php13
-rw-r--r--lib/public/Http/Client/IClientService.php3
-rw-r--r--lib/public/Http/Client/IResponse.php9
-rw-r--r--lib/public/IAppConfig.php60
-rw-r--r--lib/public/IAvatarManager.php7
-rw-r--r--lib/public/ICacheFactory.php19
-rw-r--r--lib/public/IImage.php4
-rw-r--r--lib/public/Lock/ILockingProvider.php9
-rw-r--r--lib/public/Lock/LockedException.php5
-rw-r--r--lib/public/Migration/BigIntMigration.php8
-rw-r--r--lib/public/Migration/IMigrationStep.php10
-rw-r--r--lib/public/Migration/SimpleMigrationStep.php10
-rw-r--r--lib/public/OCS/IDiscoveryService.php3
-rw-r--r--lib/public/Security/ICrypto.php5
-rw-r--r--lib/public/Security/IHasher.php5
-rw-r--r--lib/public/Security/StringUtils.php3
-rw-r--r--lib/public/User.php29
-rw-r--r--settings/ajax/setquota.php2
-rw-r--r--settings/l10n/cs.js6
-rw-r--r--settings/l10n/cs.json6
-rw-r--r--settings/l10n/zh_CN.js7
-rw-r--r--settings/l10n/zh_CN.json7
-rw-r--r--settings/users.php11
-rw-r--r--tests/Core/Controller/ClientFlowLoginControllerTest.php13
-rw-r--r--tests/Core/Controller/LoginControllerTest.php19
-rw-r--r--tests/lib/App/AppManagerTest.php7
-rw-r--r--tests/lib/AppFramework/Http/JSONResponseTest.php1
-rw-r--r--tests/lib/AppTest.php2
-rw-r--r--tests/lib/AvatarManagerTest.php5
-rw-r--r--tests/lib/AvatarTest.php15
-rw-r--r--tests/lib/Collaboration/Collaborators/UserPluginTest.php47
-rw-r--r--tests/lib/Comments/CommentTest.php9
-rw-r--r--tests/lib/DB/MigrationsTest.php2
-rw-r--r--tests/lib/Files/Cache/QuerySearchHelperTest.php7
-rw-r--r--tests/lib/Files/ViewTest.php14
-rw-r--r--tests/lib/ImageTest.php124
-rw-r--r--tests/lib/L10N/FactoryTest.php15
-rw-r--r--tests/lib/Memcache/FactoryTest.php9
-rw-r--r--tests/lib/Repair/NC11/CleanPreviewsBackgroundJobTest.php245
-rw-r--r--tests/lib/Repair/NC11/CleanPreviewsTest.php135
-rw-r--r--tests/lib/Repair/NC12/InstallCoreBundleTest.php144
-rw-r--r--tests/lib/Repair/NC12/UpdateLanguageCodesTest.php177
-rw-r--r--tests/lib/Security/HasherTest.php4
-rw-r--r--tests/lib/Share/ShareTest.php6
-rw-r--r--tests/lib/TestCase.php2
-rw-r--r--tests/lib/Traits/EncryptionTrait.php2
-rw-r--r--tests/lib/UpdaterTest.php7
-rw-r--r--tests/lib/UserTest.php55
438 files changed, 1894 insertions, 3133 deletions
diff --git a/.codecov.yml b/.codecov.yml
index 47e0b94bec4..c3746987f0f 100644
--- a/.codecov.yml
+++ b/.codecov.yml
@@ -1,5 +1,8 @@
codecov:
branch: master
+ ci:
+ - drone.nextcloud.com
+ - !scrutinizer-ci.com
coverage:
precision: 2
diff --git a/3rdparty b/3rdparty
-Subproject 3cec97e2cbdbac0a07dc6269e7fc80048596b41
+Subproject dd2cb3094cbe27e995ac256fc149d2fce2fd411
diff --git a/apps/dav/l10n/cs.js b/apps/dav/l10n/cs.js
index 2145acaa23c..34157ad58a3 100644
--- a/apps/dav/l10n/cs.js
+++ b/apps/dav/l10n/cs.js
@@ -10,6 +10,8 @@ OC.L10N.register(
"You deleted calendar {calendar}" : "Smazal(a) jste kalendář {calendar}",
"{actor} updated calendar {calendar}" : "{actor} aktualizoval(a) kalendář {calendar}",
"You updated calendar {calendar}" : "Aktualizoval(a) jste kalendář {calendar}",
+ "You shared calendar {calendar} as public link" : "Sdílel(a) jste kalendář {calendar} jako veřejný odkaz",
+ "You removed public link for calendar {calendar}" : "Odstranil(a) jste veřejný odkaz pro kalendář {calendar} ",
"{actor} shared calendar {calendar} with you" : "{actor} s vámi nasdílel(a) kalendář {calendar}",
"You shared calendar {calendar} with {user}" : "S uživatelem {user} jste začal(a) sdílet kalendář {calendar}",
"{actor} shared calendar {calendar} with {user}" : "{actor} začal sdílet kalendář {calendar} s uživatelem {user}",
diff --git a/apps/dav/l10n/cs.json b/apps/dav/l10n/cs.json
index 0857d4120a5..b3f64bb54cf 100644
--- a/apps/dav/l10n/cs.json
+++ b/apps/dav/l10n/cs.json
@@ -8,6 +8,8 @@
"You deleted calendar {calendar}" : "Smazal(a) jste kalendář {calendar}",
"{actor} updated calendar {calendar}" : "{actor} aktualizoval(a) kalendář {calendar}",
"You updated calendar {calendar}" : "Aktualizoval(a) jste kalendář {calendar}",
+ "You shared calendar {calendar} as public link" : "Sdílel(a) jste kalendář {calendar} jako veřejný odkaz",
+ "You removed public link for calendar {calendar}" : "Odstranil(a) jste veřejný odkaz pro kalendář {calendar} ",
"{actor} shared calendar {calendar} with you" : "{actor} s vámi nasdílel(a) kalendář {calendar}",
"You shared calendar {calendar} with {user}" : "S uživatelem {user} jste začal(a) sdílet kalendář {calendar}",
"{actor} shared calendar {calendar} with {user}" : "{actor} začal sdílet kalendář {calendar} s uživatelem {user}",
diff --git a/apps/dav/lib/Avatars/AvatarHome.php b/apps/dav/lib/Avatars/AvatarHome.php
index ee654f2aaa2..2047c5894e4 100644
--- a/apps/dav/lib/Avatars/AvatarHome.php
+++ b/apps/dav/lib/Avatars/AvatarHome.php
@@ -70,7 +70,7 @@ class AvatarHome implements ICollection {
throw new MethodNotAllowed('Invalid image size');
}
$avatar = $this->avatarManager->getAvatar($this->getName());
- if ($avatar === null || !$avatar->exists()) {
+ if (!$avatar->exists()) {
throw new NotFound();
}
return new AvatarNode($size, $ext, $avatar);
diff --git a/apps/dav/lib/Connector/Sabre/MaintenancePlugin.php b/apps/dav/lib/Connector/Sabre/MaintenancePlugin.php
index 21bffcdb299..36110c81db9 100644
--- a/apps/dav/lib/Connector/Sabre/MaintenancePlugin.php
+++ b/apps/dav/lib/Connector/Sabre/MaintenancePlugin.php
@@ -27,6 +27,7 @@
namespace OCA\DAV\Connector\Sabre;
use OCP\IConfig;
+use OCP\Util;
use Sabre\DAV\Exception\ServiceUnavailable;
use Sabre\DAV\ServerPlugin;
@@ -80,7 +81,7 @@ class MaintenancePlugin extends ServerPlugin {
if ($this->config->getSystemValue('maintenance', false)) {
throw new ServiceUnavailable('System in maintenance mode.');
}
- if (\OC::checkUpgrade(false)) {
+ if (Util::needUpgrade()) {
throw new ServiceUnavailable('Upgrade needed');
}
diff --git a/apps/dav/lib/Migration/Version1004Date20170825134824.php b/apps/dav/lib/Migration/Version1004Date20170825134824.php
index dceb1ffbbdc..26855c2e23e 100644
--- a/apps/dav/lib/Migration/Version1004Date20170825134824.php
+++ b/apps/dav/lib/Migration/Version1004Date20170825134824.php
@@ -23,20 +23,20 @@
*/
namespace OCA\DAV\Migration;
-use Doctrine\DBAL\Schema\Schema;
+use OCP\DB\ISchemaWrapper;
use OCP\Migration\SimpleMigrationStep;
use OCP\Migration\IOutput;
class Version1004Date20170825134824 extends SimpleMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
- * @return null|Schema
+ * @return null|ISchemaWrapper
* @since 13.0.0
*/
public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) {
- /** @var Schema $schema */
+ /** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
if (!$schema->hasTable('addressbooks')) {
diff --git a/apps/dav/lib/Migration/Version1004Date20170919104507.php b/apps/dav/lib/Migration/Version1004Date20170919104507.php
index d4c7026aea8..2cf4065011b 100644
--- a/apps/dav/lib/Migration/Version1004Date20170919104507.php
+++ b/apps/dav/lib/Migration/Version1004Date20170919104507.php
@@ -23,7 +23,7 @@
*/
namespace OCA\DAV\Migration;
-use Doctrine\DBAL\Schema\Schema;
+use OCP\DB\ISchemaWrapper;
use OCP\Migration\SimpleMigrationStep;
use OCP\Migration\IOutput;
@@ -31,13 +31,13 @@ class Version1004Date20170919104507 extends SimpleMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
- * @return null|Schema
+ * @return null|ISchemaWrapper
* @since 13.0.0
*/
public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) {
- /** @var Schema $schema */
+ /** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
$table = $schema->getTable('addressbooks');
diff --git a/apps/dav/lib/Migration/Version1004Date20170924124212.php b/apps/dav/lib/Migration/Version1004Date20170924124212.php
index 425747af742..e3f509b2a71 100644
--- a/apps/dav/lib/Migration/Version1004Date20170924124212.php
+++ b/apps/dav/lib/Migration/Version1004Date20170924124212.php
@@ -22,7 +22,7 @@
*/
namespace OCA\DAV\Migration;
-use Doctrine\DBAL\Schema\Schema;
+use OCP\DB\ISchemaWrapper;
use OCP\Migration\SimpleMigrationStep;
use OCP\Migration\IOutput;
@@ -30,13 +30,13 @@ class Version1004Date20170924124212 extends SimpleMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
- * @return null|Schema
+ * @return null|ISchemaWrapper
* @since 13.0.0
*/
public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) {
- /** @var Schema $schema */
+ /** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
$table = $schema->getTable('cards');
diff --git a/apps/dav/lib/Migration/Version1004Date20170926103422.php b/apps/dav/lib/Migration/Version1004Date20170926103422.php
index d50cbae396b..5da6465bc86 100644
--- a/apps/dav/lib/Migration/Version1004Date20170926103422.php
+++ b/apps/dav/lib/Migration/Version1004Date20170926103422.php
@@ -23,10 +23,7 @@
*/
namespace OCA\DAV\Migration;
-use Doctrine\DBAL\Schema\Schema;
use OCP\Migration\BigIntMigration;
-use OCP\Migration\SimpleMigrationStep;
-use OCP\Migration\IOutput;
/**
* Auto-generated migration step: Please modify to your needs!
diff --git a/apps/dav/tests/unit/Avatars/AvatarHomeTest.php b/apps/dav/tests/unit/Avatars/AvatarHomeTest.php
index aa5c4bf3049..2dffa8b7424 100644
--- a/apps/dav/tests/unit/Avatars/AvatarHomeTest.php
+++ b/apps/dav/tests/unit/Avatars/AvatarHomeTest.php
@@ -86,11 +86,10 @@ class AvatarHomeTest extends TestCase {
if ($expectedException !== null) {
$this->expectException($expectedException);
}
- $avatar = null;
- if ($hasAvatar) {
- $avatar = $this->createMock(IAvatar::class);
- $avatar->expects($this->once())->method('exists')->willReturn(true);
- }
+
+ $avatar = $this->createMock(IAvatar::class);
+ $avatar->method('exists')->willReturn($hasAvatar);
+
$this->avatarManager->expects($this->any())->method('getAvatar')->with('admin')->willReturn($avatar);
$avatarNode = $this->home->getChild($path);
$this->assertInstanceOf(AvatarNode::class, $avatarNode);
@@ -111,11 +110,9 @@ class AvatarHomeTest extends TestCase {
* @dataProvider providesTestGetChild
*/
public function testChildExists($expectedException, $hasAvatar, $path) {
- $avatar = null;
- if ($hasAvatar) {
- $avatar = $this->createMock(IAvatar::class);
- $avatar->expects($this->once())->method('exists')->willReturn(true);
- }
+ $avatar = $this->createMock(IAvatar::class);
+ $avatar->method('exists')->willReturn($hasAvatar);
+
$this->avatarManager->expects($this->any())->method('getAvatar')->with('admin')->willReturn($avatar);
$childExists = $this->home->childExists($path);
$this->assertEquals($hasAvatar, $childExists);
diff --git a/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php b/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php
index e0985f9aefc..a74342f1182 100644
--- a/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php
+++ b/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php
@@ -148,7 +148,7 @@ class RequestHandlerController extends OCSController {
);
\OCP\Util::writeLog('files_sharing', 'shareWith after, ' . $shareWith, \OCP\Util::DEBUG);
- if (!\OCP\User::userExists($shareWith)) {
+ if (!\OC::$server->getUserManager()->userExists($shareWith)) {
throw new OCSException('User does not exists', 400);
}
diff --git a/apps/federatedfilesharing/tests/FederatedShareProviderTest.php b/apps/federatedfilesharing/tests/FederatedShareProviderTest.php
index 0a6d95d9d9e..52266383b36 100644
--- a/apps/federatedfilesharing/tests/FederatedShareProviderTest.php
+++ b/apps/federatedfilesharing/tests/FederatedShareProviderTest.php
@@ -490,6 +490,9 @@ class FederatedShareProviderTest extends \Test\TestCase {
$this->addressHandler->expects($this->at(1))->method('splitUserRemote')
->willReturn(['user2', 'server.com']);
+ $this->addressHandler->method('generateRemoteURL')
+ ->willReturn('remoteurl.com');
+
$this->tokenHandler->method('generateToken')->willReturn('token');
$this->notifications
->method('sendRemoteShare')
@@ -532,6 +535,9 @@ class FederatedShareProviderTest extends \Test\TestCase {
$this->rootFolder->expects($this->never())->method($this->anything());
+ $this->addressHandler->method('generateRemoteURL')
+ ->willReturn('remoteurl.com');
+
$share = $this->shareManager->newShare();
$share->setSharedWith('user@server.com')
->setSharedBy('sharedBy')
@@ -570,6 +576,9 @@ class FederatedShareProviderTest extends \Test\TestCase {
$this->rootFolder->expects($this->never())->method($this->anything());
+ $this->addressHandler->method('generateRemoteURL')
+ ->willReturn('remoteurl.com');
+
$share = $this->shareManager->newShare();
$share->setSharedWith('user@server.com')
->setSharedBy('shareOwner')
@@ -611,6 +620,9 @@ class FederatedShareProviderTest extends \Test\TestCase {
$this->rootFolder->expects($this->never())->method($this->anything());
+ $this->addressHandler->method('generateRemoteURL')
+ ->willReturn('remoteurl.com');
+
$share = $this->shareManager->newShare();
$share->setSharedWith('user@server.com')
->setSharedBy('sharedBy')
@@ -806,6 +818,9 @@ class FederatedShareProviderTest extends \Test\TestCase {
->method('sendRemoteShare')
->willReturn(true);
+ $this->addressHandler->method('generateRemoteURL')
+ ->willReturn('remoteurl.com');
+
$share1 = $this->shareManager->newShare();
$share1->setSharedWith('user@server.com')
->setSharedBy($u1->getUID())
@@ -857,6 +872,9 @@ class FederatedShareProviderTest extends \Test\TestCase {
$result = $this->provider->getAccessList([$file1], false);
$this->assertEquals(['remote' => false], $result);
+ $this->addressHandler->method('generateRemoteURL')
+ ->willReturn('remoteurl.com');
+
$share1 = $this->shareManager->newShare();
$share1->setSharedWith('user@server.com')
->setSharedBy($u1->getUID())
diff --git a/apps/files_external/3rdparty/composer.json b/apps/files_external/3rdparty/composer.json
index 307a062c7e0..b556de7c395 100644
--- a/apps/files_external/3rdparty/composer.json
+++ b/apps/files_external/3rdparty/composer.json
@@ -8,7 +8,7 @@
"classmap-authoritative": true
},
"require": {
- "icewind/smb": "2.0.3",
+ "icewind/smb": "2.0.4",
"icewind/streams": "0.5.2"
}
}
diff --git a/apps/files_external/3rdparty/composer.lock b/apps/files_external/3rdparty/composer.lock
index e00a7bd80e4..2ec6ee94c8d 100644
--- a/apps/files_external/3rdparty/composer.lock
+++ b/apps/files_external/3rdparty/composer.lock
@@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "content-hash": "b6a304e8ab2effa3791b513007fadcbc",
+ "content-hash": "8b87ff18cd1c30945c631607fbfbf8b7",
"packages": [
{
"name": "icewind/smb",
- "version": "v2.0.3",
+ "version": "v2.0.4",
"source": {
"type": "git",
"url": "https://github.com/icewind1991/SMB.git",
- "reference": "8394551bf29a37b884edb33dae8acde369177f32"
+ "reference": "f258947a6f840cc9655ba81744872f9bb292a7dd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/icewind1991/SMB/zipball/8394551bf29a37b884edb33dae8acde369177f32",
- "reference": "8394551bf29a37b884edb33dae8acde369177f32",
+ "url": "https://api.github.com/repos/icewind1991/SMB/zipball/f258947a6f840cc9655ba81744872f9bb292a7dd",
+ "reference": "f258947a6f840cc9655ba81744872f9bb292a7dd",
"shasum": ""
},
"require": {
@@ -45,7 +45,7 @@
}
],
"description": "php wrapper for smbclient and libsmbclient-php",
- "time": "2017-10-18T16:21:10+00:00"
+ "time": "2018-01-19T14:36:36+00:00"
},
{
"name": "icewind/streams",
diff --git a/apps/files_external/3rdparty/composer/ClassLoader.php b/apps/files_external/3rdparty/composer/ClassLoader.php
index 2c72175e772..dc02dfb114f 100644
--- a/apps/files_external/3rdparty/composer/ClassLoader.php
+++ b/apps/files_external/3rdparty/composer/ClassLoader.php
@@ -379,9 +379,9 @@ class ClassLoader
$subPath = substr($subPath, 0, $lastPos);
$search = $subPath.'\\';
if (isset($this->prefixDirsPsr4[$search])) {
+ $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
foreach ($this->prefixDirsPsr4[$search] as $dir) {
- $length = $this->prefixLengthsPsr4[$first][$search];
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
+ if (file_exists($file = $dir . $pathEnd)) {
return $file;
}
}
diff --git a/apps/files_external/3rdparty/composer/autoload_classmap.php b/apps/files_external/3rdparty/composer/autoload_classmap.php
index 257bdb64eb5..d51895234b4 100644
--- a/apps/files_external/3rdparty/composer/autoload_classmap.php
+++ b/apps/files_external/3rdparty/composer/autoload_classmap.php
@@ -21,6 +21,7 @@ return array(
'Icewind\\SMB\\Exception\\FileInUseException' => $vendorDir . '/icewind/smb/src/Exception/FileInUseException.php',
'Icewind\\SMB\\Exception\\ForbiddenException' => $vendorDir . '/icewind/smb/src/Exception/ForbiddenException.php',
'Icewind\\SMB\\Exception\\HostDownException' => $vendorDir . '/icewind/smb/src/Exception/HostDownException.php',
+ 'Icewind\\SMB\\Exception\\InvalidArgumentException' => $vendorDir . '/icewind/smb/src/Exception/InvalidArgumentException.php',
'Icewind\\SMB\\Exception\\InvalidHostException' => $vendorDir . '/icewind/smb/src/Exception/InvalidHostException.php',
'Icewind\\SMB\\Exception\\InvalidParameterException' => $vendorDir . '/icewind/smb/src/Exception/InvalidParameterException.php',
'Icewind\\SMB\\Exception\\InvalidPathException' => $vendorDir . '/icewind/smb/src/Exception/InvalidPathException.php',
@@ -51,13 +52,13 @@ return array(
'Icewind\\SMB\\Server' => $vendorDir . '/icewind/smb/src/Server.php',
'Icewind\\SMB\\Share' => $vendorDir . '/icewind/smb/src/Share.php',
'Icewind\\SMB\\System' => $vendorDir . '/icewind/smb/src/System.php',
- 'Icewind\\SMB\\Test\\AbstractShare' => $vendorDir . '/icewind/smb/tests/AbstractShare.php',
- 'Icewind\\SMB\\Test\\NativeShare' => $vendorDir . '/icewind/smb/tests/NativeShare.php',
- 'Icewind\\SMB\\Test\\NativeStream' => $vendorDir . '/icewind/smb/tests/NativeStream.php',
+ 'Icewind\\SMB\\Test\\AbstractShareTest' => $vendorDir . '/icewind/smb/tests/AbstractShareTest.php',
+ 'Icewind\\SMB\\Test\\NativeShareTestTest' => $vendorDir . '/icewind/smb/tests/NativeShareTestTest.php',
+ 'Icewind\\SMB\\Test\\NativeStreamTest' => $vendorDir . '/icewind/smb/tests/NativeStreamTest.php',
'Icewind\\SMB\\Test\\NotifyHandlerTest' => $vendorDir . '/icewind/smb/tests/NotifyHandlerTest.php',
- 'Icewind\\SMB\\Test\\Parser' => $vendorDir . '/icewind/smb/tests/Parser.php',
- 'Icewind\\SMB\\Test\\Server' => $vendorDir . '/icewind/smb/tests/Server.php',
- 'Icewind\\SMB\\Test\\Share' => $vendorDir . '/icewind/smb/tests/Share.php',
+ 'Icewind\\SMB\\Test\\ParserTest' => $vendorDir . '/icewind/smb/tests/ParserTest.php',
+ 'Icewind\\SMB\\Test\\ServerTest' => $vendorDir . '/icewind/smb/tests/ServerTest.php',
+ 'Icewind\\SMB\\Test\\ShareTestTest' => $vendorDir . '/icewind/smb/tests/ShareTestTest.php',
'Icewind\\SMB\\Test\\TestCase' => $vendorDir . '/icewind/smb/tests/TestCase.php',
'Icewind\\SMB\\TimeZoneProvider' => $vendorDir . '/icewind/smb/src/TimeZoneProvider.php',
'Icewind\\Streams\\CallbackWrapper' => $vendorDir . '/icewind/streams/src/CallbackWrapper.php',
diff --git a/apps/files_external/3rdparty/composer/autoload_static.php b/apps/files_external/3rdparty/composer/autoload_static.php
index 62be2df6a0d..51739b6b6cd 100644
--- a/apps/files_external/3rdparty/composer/autoload_static.php
+++ b/apps/files_external/3rdparty/composer/autoload_static.php
@@ -51,6 +51,7 @@ class ComposerStaticInit98fe9b281934250b3a93f69a5ce843b3
'Icewind\\SMB\\Exception\\FileInUseException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/FileInUseException.php',
'Icewind\\SMB\\Exception\\ForbiddenException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/ForbiddenException.php',
'Icewind\\SMB\\Exception\\HostDownException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/HostDownException.php',
+ 'Icewind\\SMB\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidArgumentException.php',
'Icewind\\SMB\\Exception\\InvalidHostException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidHostException.php',
'Icewind\\SMB\\Exception\\InvalidParameterException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidParameterException.php',
'Icewind\\SMB\\Exception\\InvalidPathException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidPathException.php',
@@ -81,13 +82,13 @@ class ComposerStaticInit98fe9b281934250b3a93f69a5ce843b3
'Icewind\\SMB\\Server' => __DIR__ . '/..' . '/icewind/smb/src/Server.php',
'Icewind\\SMB\\Share' => __DIR__ . '/..' . '/icewind/smb/src/Share.php',
'Icewind\\SMB\\System' => __DIR__ . '/..' . '/icewind/smb/src/System.php',
- 'Icewind\\SMB\\Test\\AbstractShare' => __DIR__ . '/..' . '/icewind/smb/tests/AbstractShare.php',
- 'Icewind\\SMB\\Test\\NativeShare' => __DIR__ . '/..' . '/icewind/smb/tests/NativeShare.php',
- 'Icewind\\SMB\\Test\\NativeStream' => __DIR__ . '/..' . '/icewind/smb/tests/NativeStream.php',
+ 'Icewind\\SMB\\Test\\AbstractShareTest' => __DIR__ . '/..' . '/icewind/smb/tests/AbstractShareTest.php',
+ 'Icewind\\SMB\\Test\\NativeShareTestTest' => __DIR__ . '/..' . '/icewind/smb/tests/NativeShareTestTest.php',
+ 'Icewind\\SMB\\Test\\NativeStreamTest' => __DIR__ . '/..' . '/icewind/smb/tests/NativeStreamTest.php',
'Icewind\\SMB\\Test\\NotifyHandlerTest' => __DIR__ . '/..' . '/icewind/smb/tests/NotifyHandlerTest.php',
- 'Icewind\\SMB\\Test\\Parser' => __DIR__ . '/..' . '/icewind/smb/tests/Parser.php',
- 'Icewind\\SMB\\Test\\Server' => __DIR__ . '/..' . '/icewind/smb/tests/Server.php',
- 'Icewind\\SMB\\Test\\Share' => __DIR__ . '/..' . '/icewind/smb/tests/Share.php',
+ 'Icewind\\SMB\\Test\\ParserTest' => __DIR__ . '/..' . '/icewind/smb/tests/ParserTest.php',
+ 'Icewind\\SMB\\Test\\ServerTest' => __DIR__ . '/..' . '/icewind/smb/tests/ServerTest.php',
+ 'Icewind\\SMB\\Test\\ShareTestTest' => __DIR__ . '/..' . '/icewind/smb/tests/ShareTestTest.php',
'Icewind\\SMB\\Test\\TestCase' => __DIR__ . '/..' . '/icewind/smb/tests/TestCase.php',
'Icewind\\SMB\\TimeZoneProvider' => __DIR__ . '/..' . '/icewind/smb/src/TimeZoneProvider.php',
'Icewind\\Streams\\CallbackWrapper' => __DIR__ . '/..' . '/icewind/streams/src/CallbackWrapper.php',
diff --git a/apps/files_external/3rdparty/composer/installed.json b/apps/files_external/3rdparty/composer/installed.json
index 6855971a9f1..640bebc9175 100644
--- a/apps/files_external/3rdparty/composer/installed.json
+++ b/apps/files_external/3rdparty/composer/installed.json
@@ -1,33 +1,33 @@
[
{
- "name": "icewind/streams",
- "version": "0.5.2",
- "version_normalized": "0.5.2.0",
+ "name": "icewind/smb",
+ "version": "v2.0.4",
+ "version_normalized": "2.0.4.0",
"source": {
"type": "git",
- "url": "https://github.com/icewind1991/Streams.git",
- "reference": "6bfd2fdbd99319f5e010d0a684409189a562cb1e"
+ "url": "https://github.com/icewind1991/SMB.git",
+ "reference": "f258947a6f840cc9655ba81744872f9bb292a7dd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/icewind1991/Streams/zipball/6bfd2fdbd99319f5e010d0a684409189a562cb1e",
- "reference": "6bfd2fdbd99319f5e010d0a684409189a562cb1e",
+ "url": "https://api.github.com/repos/icewind1991/SMB/zipball/f258947a6f840cc9655ba81744872f9bb292a7dd",
+ "reference": "f258947a6f840cc9655ba81744872f9bb292a7dd",
"shasum": ""
},
"require": {
- "php": ">=5.3"
+ "icewind/streams": ">=0.2.0",
+ "php": ">=5.4"
},
"require-dev": {
- "phpunit/phpunit": "^4.8",
- "satooshi/php-coveralls": "v1.0.0"
+ "phpunit/phpunit": "^4.8"
},
- "time": "2016-12-02T14:21:23+00:00",
+ "time": "2018-01-19T14:36:36+00:00",
"type": "library",
- "installation-source": "dist",
+ "installation-source": "source",
"autoload": {
"psr-4": {
- "Icewind\\Streams\\Tests\\": "tests/",
- "Icewind\\Streams\\": "src/"
+ "Icewind\\SMB\\": "src/",
+ "Icewind\\SMB\\Test\\": "tests/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -40,37 +40,37 @@
"email": "icewind@owncloud.com"
}
],
- "description": "A set of generic stream wrappers"
+ "description": "php wrapper for smbclient and libsmbclient-php"
},
{
- "name": "icewind/smb",
- "version": "v2.0.3",
- "version_normalized": "2.0.3.0",
+ "name": "icewind/streams",
+ "version": "0.5.2",
+ "version_normalized": "0.5.2.0",
"source": {
"type": "git",
- "url": "https://github.com/icewind1991/SMB.git",
- "reference": "8394551bf29a37b884edb33dae8acde369177f32"
+ "url": "https://github.com/icewind1991/Streams.git",
+ "reference": "6bfd2fdbd99319f5e010d0a684409189a562cb1e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/icewind1991/SMB/zipball/8394551bf29a37b884edb33dae8acde369177f32",
- "reference": "8394551bf29a37b884edb33dae8acde369177f32",
+ "url": "https://api.github.com/repos/icewind1991/Streams/zipball/6bfd2fdbd99319f5e010d0a684409189a562cb1e",
+ "reference": "6bfd2fdbd99319f5e010d0a684409189a562cb1e",
"shasum": ""
},
"require": {
- "icewind/streams": ">=0.2.0",
- "php": ">=5.4"
+ "php": ">=5.3"
},
"require-dev": {
- "phpunit/phpunit": "^4.8"
+ "phpunit/phpunit": "^4.8",
+ "satooshi/php-coveralls": "v1.0.0"
},
- "time": "2017-10-18T16:21:10+00:00",
+ "time": "2016-12-02T14:21:23+00:00",
"type": "library",
- "installation-source": "source",
+ "installation-source": "dist",
"autoload": {
"psr-4": {
- "Icewind\\SMB\\": "src/",
- "Icewind\\SMB\\Test\\": "tests/"
+ "Icewind\\Streams\\Tests\\": "tests/",
+ "Icewind\\Streams\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -83,6 +83,6 @@
"email": "icewind@owncloud.com"
}
],
- "description": "php wrapper for smbclient and libsmbclient-php"
+ "description": "A set of generic stream wrappers"
}
]
diff --git a/apps/files_external/3rdparty/icewind/smb/src/AbstractShare.php b/apps/files_external/3rdparty/icewind/smb/src/AbstractShare.php
index a5cfe59a3c4..0af03ff5698 100644
--- a/apps/files_external/3rdparty/icewind/smb/src/AbstractShare.php
+++ b/apps/files_external/3rdparty/icewind/smb/src/AbstractShare.php
@@ -23,4 +23,8 @@ abstract class AbstractShare implements IShare {
}
}
}
+
+ public function setForbiddenChars(array $charList) {
+ $this->forbiddenCharacters = $charList;
+ }
}
diff --git a/apps/files_external/3rdparty/icewind/smb/src/Connection.php b/apps/files_external/3rdparty/icewind/smb/src/Connection.php
index c1ebb861711..0196231b082 100644
--- a/apps/files_external/3rdparty/icewind/smb/src/Connection.php
+++ b/apps/files_external/3rdparty/icewind/smb/src/Connection.php
@@ -34,6 +34,15 @@ class Connection extends RawConnection {
parent::write($input . PHP_EOL);
}
+ public function clearTillPrompt() {
+ $this->write('');
+ do {
+ $promptLine = $this->readLine();
+ } while (!$this->isPrompt($promptLine));
+ $this->write('');
+ $this->readLine();
+ }
+
/**
* get all unprocessed output from smbclient until the next prompt
*
diff --git a/apps/files_external/3rdparty/icewind/smb/src/NativeShare.php b/apps/files_external/3rdparty/icewind/smb/src/NativeShare.php
index 228d9cd7d2e..9653e6064b2 100644
--- a/apps/files_external/3rdparty/icewind/smb/src/NativeShare.php
+++ b/apps/files_external/3rdparty/icewind/smb/src/NativeShare.php
@@ -34,7 +34,6 @@ class NativeShare extends AbstractShare {
parent::__construct();
$this->server = $server;
$this->name = $name;
- $this->state = new NativeState();
}
/**
@@ -42,12 +41,14 @@ class NativeShare extends AbstractShare {
* @throws \Icewind\SMB\Exception\AuthenticationException
* @throws \Icewind\SMB\Exception\InvalidHostException
*/
- protected function connect() {
- if ($this->state and $this->state instanceof NativeShare) {
- return;
+ protected function getState() {
+ if ($this->state and $this->state instanceof NativeState) {
+ return $this->state;
}
+ $this->state = new NativeState();
$this->state->init($this->server->getWorkgroup(), $this->server->getUser(), $this->server->getPassword());
+ return $this->state;
}
/**
@@ -60,7 +61,6 @@ class NativeShare extends AbstractShare {
}
private function buildUrl($path) {
- $this->connect();
$this->verifyPath($path);
$url = sprintf('smb://%s/%s', $this->server->getHost(), $this->name);
if ($path) {
@@ -83,15 +83,15 @@ class NativeShare extends AbstractShare {
public function dir($path) {
$files = array();
- $dh = $this->state->opendir($this->buildUrl($path));
- while ($file = $this->state->readdir($dh)) {
+ $dh = $this->getState()->opendir($this->buildUrl($path));
+ while ($file = $this->getState()->readdir($dh)) {
$name = $file['name'];
if ($name !== '.' and $name !== '..') {
$files [] = new NativeFileInfo($this, $path . '/' . $name, $name);
}
}
- $this->state->closedir($dh);
+ $this->getState()->closedir($dh);
return $files;
}
@@ -104,7 +104,7 @@ class NativeShare extends AbstractShare {
}
public function getStat($path) {
- return $this->state->stat($this->buildUrl($path));
+ return $this->getState()->stat($this->buildUrl($path));
}
/**
@@ -117,7 +117,7 @@ class NativeShare extends AbstractShare {
* @throws \Icewind\SMB\Exception\AlreadyExistsException
*/
public function mkdir($path) {
- return $this->state->mkdir($this->buildUrl($path));
+ return $this->getState()->mkdir($this->buildUrl($path));
}
/**
@@ -130,7 +130,7 @@ class NativeShare extends AbstractShare {
* @throws \Icewind\SMB\Exception\InvalidTypeException
*/
public function rmdir($path) {
- return $this->state->rmdir($this->buildUrl($path));
+ return $this->getState()->rmdir($this->buildUrl($path));
}
/**
@@ -143,7 +143,7 @@ class NativeShare extends AbstractShare {
* @throws \Icewind\SMB\Exception\InvalidTypeException
*/
public function del($path) {
- return $this->state->unlink($this->buildUrl($path));
+ return $this->getState()->unlink($this->buildUrl($path));
}
/**
@@ -157,7 +157,7 @@ class NativeShare extends AbstractShare {
* @throws \Icewind\SMB\Exception\AlreadyExistsException
*/
public function rename($from, $to) {
- return $this->state->rename($this->buildUrl($from), $this->buildUrl($to));
+ return $this->getState()->rename($this->buildUrl($from), $this->buildUrl($to));
}
/**
@@ -172,12 +172,12 @@ class NativeShare extends AbstractShare {
*/
public function put($source, $target) {
$sourceHandle = fopen($source, 'rb');
- $targetHandle = $this->state->create($this->buildUrl($target));
+ $targetHandle = $this->getState()->create($this->buildUrl($target));
while ($data = fread($sourceHandle, NativeReadStream::CHUNK_SIZE)) {
- $this->state->write($targetHandle, $data);
+ $this->getState()->write($targetHandle, $data);
}
- $this->state->close($targetHandle);
+ $this->getState()->close($targetHandle);
return true;
}
@@ -208,16 +208,16 @@ class NativeShare extends AbstractShare {
throw new InvalidResourceException('Failed opening local file "' . $target . '" for writing: ' . $reason);
}
- $sourceHandle = $this->state->open($this->buildUrl($source), 'r');
+ $sourceHandle = $this->getState()->open($this->buildUrl($source), 'r');
if (!$sourceHandle) {
fclose($targetHandle);
throw new InvalidResourceException('Failed opening remote file "' . $source . '" for reading');
}
- while ($data = $this->state->read($sourceHandle, NativeReadStream::CHUNK_SIZE)) {
+ while ($data = $this->getState()->read($sourceHandle, NativeReadStream::CHUNK_SIZE)) {
fwrite($targetHandle, $data);
}
- $this->state->close($sourceHandle);
+ $this->getState()->close($sourceHandle);
return true;
}
@@ -232,8 +232,8 @@ class NativeShare extends AbstractShare {
*/
public function read($source) {
$url = $this->buildUrl($source);
- $handle = $this->state->open($url, 'r');
- return NativeReadStream::wrap($this->state, $handle, 'r', $url);
+ $handle = $this->getState()->open($url, 'r');
+ return NativeReadStream::wrap($this->getState(), $handle, 'r', $url);
}
/**
@@ -247,8 +247,8 @@ class NativeShare extends AbstractShare {
*/
public function write($source) {
$url = $this->buildUrl($source);
- $handle = $this->state->create($url);
- return NativeWriteStream::wrap($this->state, $handle, 'w', $url);
+ $handle = $this->getState()->create($url);
+ return NativeWriteStream::wrap($this->getState(), $handle, 'w', $url);
}
/**
@@ -259,7 +259,7 @@ class NativeShare extends AbstractShare {
* @return string the attribute value
*/
public function getAttribute($path, $attribute) {
- return $this->state->getxattr($this->buildUrl($path), $attribute);
+ return $this->getState()->getxattr($this->buildUrl($path), $attribute);
}
/**
@@ -276,7 +276,7 @@ class NativeShare extends AbstractShare {
$value = '0x' . dechex($value);
}
- return $this->state->setxattr($this->buildUrl($path), $attribute, $value);
+ return $this->getState()->setxattr($this->buildUrl($path), $attribute, $value);
}
/**
diff --git a/apps/files_external/3rdparty/icewind/smb/src/NativeState.php b/apps/files_external/3rdparty/icewind/smb/src/NativeState.php
index 45e0441d252..036a0255048 100644
--- a/apps/files_external/3rdparty/icewind/smb/src/NativeState.php
+++ b/apps/files_external/3rdparty/icewind/smb/src/NativeState.php
@@ -10,7 +10,7 @@ namespace Icewind\SMB;
use Icewind\SMB\Exception\Exception;
/**
- * Low level wrapper for libsmbclient-php for error handling
+ * Low level wrapper for libsmbclient-php with error handling
*/
class NativeState {
/**
@@ -28,9 +28,11 @@ class NativeState {
1 => '\Icewind\SMB\Exception\ForbiddenException',
2 => '\Icewind\SMB\Exception\NotFoundException',
13 => '\Icewind\SMB\Exception\ForbiddenException',
+ 16 => '\Icewind\SMB\Exception\FileInUseException',
17 => '\Icewind\SMB\Exception\AlreadyExistsException',
20 => '\Icewind\SMB\Exception\InvalidTypeException',
21 => '\Icewind\SMB\Exception\InvalidTypeException',
+ 22 => '\Icewind\SMB\Exception\InvalidArgumentException',
28 => '\Icewind\SMB\Exception\OutOfSpaceException',
39 => '\Icewind\SMB\Exception\NotEmptyException',
110 => '\Icewind\SMB\Exception\TimedOutException',
@@ -71,6 +73,7 @@ class NativeState {
return true;
}
$this->state = smbclient_state_new();
+ smbclient_option_set($this->state, SMBCLIENT_OPT_AUTO_ANONYMOUS_LOGIN, false);
$result = @smbclient_state_init($this->state, $workGroup, $user, $password);
$this->testResult($result, '');
diff --git a/apps/files_external/3rdparty/icewind/smb/src/Share.php b/apps/files_external/3rdparty/icewind/smb/src/Share.php
index 542eaf0887e..8f1dace2be2 100644
--- a/apps/files_external/3rdparty/icewind/smb/src/Share.php
+++ b/apps/files_external/3rdparty/icewind/smb/src/Share.php
@@ -72,6 +72,8 @@ class Share extends AbstractShare {
if (!$connection->isValid()) {
throw new ConnectionException($connection->readLine());
}
+ // some versions of smbclient add a help message in first of the first prompt
+ $connection->clearTillPrompt();
return $connection;
}
@@ -125,6 +127,7 @@ class Share extends AbstractShare {
//check output for errors
$this->parseOutput($output, $path);
$output = $this->execute('dir');
+
$this->execute('cd /');
return $this->parser->parseDir($output, $path);
diff --git a/apps/files_external/appinfo/routes.php b/apps/files_external/appinfo/routes.php
index 97c2d7b0e00..b8f055530c4 100644
--- a/apps/files_external/appinfo/routes.php
+++ b/apps/files_external/appinfo/routes.php
@@ -31,26 +31,33 @@
**/
\OC_Mount_Config::$app->registerRoutes(
$this,
- array(
- 'resources' => array(
- 'global_storages' => array('url' => '/globalstorages'),
- 'user_storages' => array('url' => '/userstorages'),
- 'user_global_storages' => array('url' => '/userglobalstorages'),
- ),
- 'routes' => array(
- array(
+ [
+ 'resources' => [
+ 'global_storages' => ['url' => '/globalstorages'],
+ 'user_storages' => ['url' => '/userstorages'],
+ 'user_global_storages' => ['url' => '/userglobalstorages'],
+ ],
+ 'routes' => [
+ [
'name' => 'Ajax#getSshKeys',
'url' => '/ajax/public_key.php',
'verb' => 'POST',
- 'requirements' => array()
- ),
+ 'requirements' => [],
+ ],
[
'name' => 'Ajax#saveGlobalCredentials',
'url' => '/globalcredentials',
'verb' => 'POST',
],
- )
- )
+ ],
+ 'ocs' => [
+ [
+ 'name' => 'Api#getUserMounts',
+ 'url' => '/api/v1/mounts',
+ 'verb' => 'GET',
+ ],
+ ],
+ ]
);
$this->create('files_external_oauth1', 'ajax/oauth1.php')
@@ -61,9 +68,3 @@ $this->create('files_external_oauth2', 'ajax/oauth2.php')
$this->create('files_external_list_applicable', '/applicable')
->actionInclude('files_external/ajax/applicable.php');
-
-\OCP\API::register('get',
- '/apps/files_external/api/v1/mounts',
- array('\OCA\Files_External\Lib\Api', 'getUserMounts'),
- 'files_external');
-
diff --git a/apps/files_external/js/statusmanager.js b/apps/files_external/js/statusmanager.js
index 3850351d213..563f8a76493 100644
--- a/apps/files_external/js/statusmanager.js
+++ b/apps/files_external/js/statusmanager.js
@@ -560,9 +560,6 @@ OCA.External.StatusManager.Utils = {
case 'windows_network_drive':
icon = OC.imagePath('windows_network_drive', 'folder-windows');
break;
- case 'sharepoint':
- icon = OC.imagePath('sharepoint', 'folder-sharepoint');
- break;
}
return icon;
diff --git a/apps/files_external/l10n/nb.js b/apps/files_external/l10n/nb.js
index a96f89e8319..5e6cc04a855 100644
--- a/apps/files_external/l10n/nb.js
+++ b/apps/files_external/l10n/nb.js
@@ -75,6 +75,7 @@ OC.L10N.register(
"Region" : "Området",
"Enable SSL" : "Aktiver SSL",
"Enable Path Style" : "Aktiver Path Style",
+ "Legacy (v2) authentication" : "Foreldet (v2-) autentisering",
"WebDAV" : "WebDAV",
"URL" : "URL",
"Remote subfolder" : "Ekstern undermappe",
diff --git a/apps/files_external/l10n/nb.json b/apps/files_external/l10n/nb.json
index 3cf8c0d42b1..64df4669793 100644
--- a/apps/files_external/l10n/nb.json
+++ b/apps/files_external/l10n/nb.json
@@ -73,6 +73,7 @@
"Region" : "Området",
"Enable SSL" : "Aktiver SSL",
"Enable Path Style" : "Aktiver Path Style",
+ "Legacy (v2) authentication" : "Foreldet (v2-) autentisering",
"WebDAV" : "WebDAV",
"URL" : "URL",
"Remote subfolder" : "Ekstern undermappe",
diff --git a/apps/files_external/lib/Lib/Api.php b/apps/files_external/lib/Controller/ApiController.php
index 6957af0b7bb..8be623c5eee 100644
--- a/apps/files_external/lib/Lib/Api.php
+++ b/apps/files_external/lib/Controller/ApiController.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -26,9 +27,25 @@
*
*/
-namespace OCA\Files_External\Lib;
+namespace OCA\Files_External\Controller;
-class Api {
+use OCP\AppFramework\Http\DataResponse;
+use OCP\AppFramework\OCSController;
+use OCP\IRequest;
+use OCP\IUserSession;
+
+class ApiController extends OCSController {
+
+ /** @var IUserSession */
+ private $userSession;
+
+ public function __construct(string $appName,
+ IRequest $request,
+ IUserSession $userSession) {
+ parent::__construct($appName, $request);
+
+ $this->userSession = $userSession;
+ }
/**
* Formats the given mount config to a mount entry.
@@ -38,13 +55,13 @@ class Api {
*
* @return array entry
*/
- private static function formatMount($mountPoint, $mountConfig) {
+ private function formatMount(string $mountPoint, array $mountConfig): array {
// strip "/$user/files" from mount point
$mountPoint = explode('/', trim($mountPoint, '/'), 3);
- $mountPoint = isset($mountPoint[2]) ? $mountPoint[2] : '';
+ $mountPoint = $mountPoint[2] ?? '';
// split path from mount point
- $path = dirname($mountPoint);
+ $path = \dirname($mountPoint);
if ($path === '.') {
$path = '';
}
@@ -62,7 +79,7 @@ class Api {
'path' => $path,
'type' => 'dir',
'backend' => $mountConfig['backend'],
- 'scope' => ( $isSystemMount ? 'system' : 'personal' ),
+ 'scope' => $isSystemMount ? 'system' : 'personal',
'permissions' => $permissions,
'id' => $mountConfig['id'],
'class' => $mountConfig['class']
@@ -71,20 +88,21 @@ class Api {
}
/**
+ * @NoAdminRequired
+ *
* Returns the mount points visible for this user.
*
- * @param array $params
- * @return \OC\OCS\Result share information
+ * @return DataResponse share information
*/
- public static function getUserMounts($params) {
- $entries = array();
- $user = \OC::$server->getUserSession()->getUser()->getUID();
+ public function getUserMounts(): DataResponse {
+ $entries = [];
+ $user = $this->userSession->getUser()->getUID();
$mounts = \OC_Mount_Config::getAbsoluteMountPoints($user);
foreach($mounts as $mountPoint => $mount) {
- $entries[] = self::formatMount($mountPoint, $mount);
+ $entries[] = $this->formatMount($mountPoint, $mount);
}
- return new \OC\OCS\Result($entries);
+ return new DataResponse($entries);
}
}
diff --git a/apps/files_external/tests/Storage/SmbTest.php b/apps/files_external/tests/Storage/SmbTest.php
index edacb498d5e..e3c0408114d 100644
--- a/apps/files_external/tests/Storage/SmbTest.php
+++ b/apps/files_external/tests/Storage/SmbTest.php
@@ -96,11 +96,11 @@ class SmbTest extends \Test\Files\Storage\Storage {
public function testNotifyGetChanges() {
$notifyHandler = $this->instance->notify('');
- usleep(100 * 1000); //give time for the notify to start
+ sleep(1); //give time for the notify to start
$this->instance->file_put_contents('/newfile.txt', 'test content');
$this->instance->rename('/newfile.txt', 'renamed.txt');
$this->instance->unlink('/renamed.txt');
- usleep(100 * 1000); //time for all changes to be processed
+ sleep(1); //time for all changes to be processed
$changes = $notifyHandler->getChanges();
$notifyHandler->stop();
diff --git a/apps/files_sharing/css/public.scss b/apps/files_sharing/css/public.scss
index 51c2bc9f4ce..5edc3f7eb90 100644
--- a/apps/files_sharing/css/public.scss
+++ b/apps/files_sharing/css/public.scss
@@ -39,15 +39,10 @@
}
-#imgframe img,
-#imgframe video {
+#imgframe img {
max-height: 100% !important;
max-width: 100% !important;
}
-#imgframe video {
- width: 854px;
- height: 480px;
-}
#imgframe .text-preview {
display: inline-block;
diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php
index 9d28c178dde..3c2bbe5fb59 100644
--- a/apps/files_sharing/templates/public.php
+++ b/apps/files_sharing/templates/public.php
@@ -91,13 +91,7 @@ $maxUploadFilesize = min($upload_max_filesize, $post_max_size);
<?php if (isset($_['folder'])): ?>
<?php print_unescaped($_['folder']); ?>
<?php else: ?>
- <?php if ($_['previewEnabled'] && substr($_['mimetype'], 0, strpos($_['mimetype'], '/')) === 'video'): ?>
- <div id="imgframe">
- <video tabindex="0" controls="" preload="none" style="max-width: <?php p($_['previewMaxX']); ?>px; max-height: <?php p($_['previewMaxY']); ?>px">
- <source src="<?php p($_['downloadURL']); ?>" type="<?php p($_['mimetype']); ?>" />
- </video>
- </div>
- <?php elseif ($_['previewEnabled'] && substr($_['mimetype'], 0, strpos($_['mimetype'], '/')) == 'audio'): ?>
+ <?php if ($_['previewEnabled'] && substr($_['mimetype'], 0, strpos($_['mimetype'], '/')) == 'audio'): ?>
<div id="imgframe">
<audio tabindex="0" controls="" preload="none" style="width: 100%; max-width: <?php p($_['previewMaxX']); ?>px; max-height: <?php p($_['previewMaxY']); ?>px">
<source src="<?php p($_['downloadURL']); ?>" type="<?php p($_['mimetype']); ?>" />
diff --git a/apps/files_sharing/tests/ApiTest.php b/apps/files_sharing/tests/ApiTest.php
index 2279155e914..8e2b5942d14 100644
--- a/apps/files_sharing/tests/ApiTest.php
+++ b/apps/files_sharing/tests/ApiTest.php
@@ -62,8 +62,8 @@ class ApiTest extends TestCase {
protected function setUp() {
parent::setUp();
- \OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups', 'no');
- \OC::$server->getAppConfig()->setValue('core', 'shareapi_expire_after_n_days', '7');
+ \OC::$server->getConfig()->setAppValue('core', 'shareapi_exclude_groups', 'no');
+ \OC::$server->getConfig()->setAppValue('core', 'shareapi_expire_after_n_days', '7');
$this->folder = self::TEST_FOLDER_NAME;
$this->subfolder = '/subfolder_share_api_test';
@@ -239,8 +239,8 @@ class ApiTest extends TestCase {
function testEnfoceLinkPassword() {
$password = md5(time());
- $appConfig = \OC::$server->getAppConfig();
- $appConfig->setValue('core', 'shareapi_enforce_links_password', 'yes');
+ $config = \OC::$server->getConfig();
+ $config->setAppValue('core', 'shareapi_enforce_links_password', 'yes');
$ocs = $this->createOCS(self::TEST_FILES_SHARING_API_USER1);
try {
@@ -287,7 +287,7 @@ class ApiTest extends TestCase {
$ocs->deleteShare($data['id']);
$ocs->cleanup();
- $appConfig->setValue('core', 'shareapi_enforce_links_password', 'no');
+ $config->setAppValue('core', 'shareapi_enforce_links_password', 'no');
}
/**
@@ -296,7 +296,7 @@ class ApiTest extends TestCase {
function testSharePermissions() {
// sharing file to a user should work if shareapi_exclude_groups is set
// to no
- \OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups', 'no');
+ \OC::$server->getConfig()->setAppValue('core', 'shareapi_exclude_groups', 'no');
$ocs = $this->createOCS(self::TEST_FILES_SHARING_API_USER1);
$result = $ocs->createShare($this->filename, \OCP\Constants::PERMISSION_ALL, \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2);
@@ -311,8 +311,8 @@ class ApiTest extends TestCase {
$ocs->cleanup();
// exclude groups, but not the group the user belongs to. Sharing should still work
- \OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups', 'yes');
- \OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups_list', 'admin,group1,group2');
+ \OC::$server->getConfig()->setAppValue('core', 'shareapi_exclude_groups', 'yes');
+ \OC::$server->getConfig()->setAppValue('core', 'shareapi_exclude_groups_list', 'admin,group1,group2');
$ocs = $this->createOCS(self::TEST_FILES_SHARING_API_USER1);
$result = $ocs->createShare($this->filename, \OCP\Constants::PERMISSION_ALL, \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2);
@@ -327,15 +327,15 @@ class ApiTest extends TestCase {
$ocs->cleanup();
// now we exclude the group the user belongs to ('group'), sharing should fail now
- \OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups_list', 'admin,group');
+ \OC::$server->getConfig()->setAppValue('core', 'shareapi_exclude_groups_list', 'admin,group');
$ocs = $this->createOCS(self::TEST_FILES_SHARING_API_USER1);
$ocs->createShare($this->filename, \OCP\Constants::PERMISSION_ALL, \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2);
$ocs->cleanup();
// cleanup
- \OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups', 'no');
- \OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups_list', '');
+ \OC::$server->getConfig()->setAppValue('core', 'shareapi_exclude_groups', 'no');
+ \OC::$server->getConfig()->setAppValue('core', 'shareapi_exclude_groups_list', '');
}
diff --git a/apps/files_sharing/tests/CacheTest.php b/apps/files_sharing/tests/CacheTest.php
index 5d5de433ee4..c891f56f3d3 100644
--- a/apps/files_sharing/tests/CacheTest.php
+++ b/apps/files_sharing/tests/CacheTest.php
@@ -66,8 +66,10 @@ class CacheTest extends TestCase {
$this->shareManager = \OC::$server->getShareManager();
- \OC_User::setDisplayName(self::TEST_FILES_SHARING_API_USER1, 'User One');
- \OC_User::setDisplayName(self::TEST_FILES_SHARING_API_USER2, 'User Two');
+
+ $userManager = \OC::$server->getUserManager();
+ $userManager->get(self::TEST_FILES_SHARING_API_USER1)->setDisplayName('User One');
+ $userManager->get(self::TEST_FILES_SHARING_API_USER2)->setDisplayName('User Two');
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
diff --git a/apps/files_versions/l10n/bg.js b/apps/files_versions/l10n/bg.js
index b9bf92b30ee..84a5c39fe18 100644
--- a/apps/files_versions/l10n/bg.js
+++ b/apps/files_versions/l10n/bg.js
@@ -6,6 +6,8 @@ OC.L10N.register(
"Failed to revert {file} to revision {timestamp}." : "Грешка при връщане на {file} към версия {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n байт","%n байта"],
"Restore" : "Възтановяване",
+ "No earlier versions available" : "Няма други налични по-ранни версии",
+ "More versions …" : "Още версии ...",
"No versions available" : "Няма налични версии",
"More versions..." : "Още версии..."
},
diff --git a/apps/files_versions/l10n/bg.json b/apps/files_versions/l10n/bg.json
index 3b16ecd57bc..ea3f3a6d599 100644
--- a/apps/files_versions/l10n/bg.json
+++ b/apps/files_versions/l10n/bg.json
@@ -4,6 +4,8 @@
"Failed to revert {file} to revision {timestamp}." : "Грешка при връщане на {file} към версия {timestamp}.",
"_%n byte_::_%n bytes_" : ["%n байт","%n байта"],
"Restore" : "Възтановяване",
+ "No earlier versions available" : "Няма други налични по-ранни версии",
+ "More versions …" : "Още версии ...",
"No versions available" : "Няма налични версии",
"More versions..." : "Още версии..."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/systemtags/list.php b/apps/systemtags/list.php
index 67fdeca93e9..f8cdf715f17 100644
--- a/apps/systemtags/list.php
+++ b/apps/systemtags/list.php
@@ -19,8 +19,24 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
+// WARNING: this should be moved to proper AppFramework handling
// Check if we are a user
-OCP\User::checkLoggedIn();
+if (!\OC::$server->getUserSession()->isLoggedIn()) {
+ header('Location: ' . \OC::$server->getURLGenerator()->linkToRoute(
+ 'core.login.showLoginForm',
+ [
+ 'redirect_url' => \OC::$server->getRequest()->getRequestUri(),
+ ]
+ )
+ );
+ exit();
+}
+// Redirect to 2FA challenge selection if 2FA challenge was not solved yet
+if (\OC::$server->getTwoFactorAuthManager()->needsSecondFactor(\OC::$server->getUserSession()->getUser())) {
+ header('Location: ' . \OC::$server->getURLGenerator()->linkToRoute('core.TwoFactorChallenge.selectChallenge'));
+ exit();
+}
$tmpl = new OCP\Template('systemtags', 'list', '');
$tmpl->printPage();
diff --git a/apps/testing/lib/Locking/FakeDBLockingProvider.php b/apps/testing/lib/Locking/FakeDBLockingProvider.php
index 174cc2ec7fe..f656150da3b 100644
--- a/apps/testing/lib/Locking/FakeDBLockingProvider.php
+++ b/apps/testing/lib/Locking/FakeDBLockingProvider.php
@@ -51,7 +51,7 @@ class FakeDBLockingProvider extends \OC\Lock\DBLockingProvider {
* @param string $path
* @param int $type self::LOCK_SHARED or self::LOCK_EXCLUSIVE
*/
- public function releaseLock($path, $type) {
+ public function releaseLock(string $path, int $type) {
// we DONT keep shared locks till the end of the request
if ($type === self::LOCK_SHARED) {
$this->db->executeUpdate(
diff --git a/apps/theming/lib/Controller/ThemingController.php b/apps/theming/lib/Controller/ThemingController.php
index 6592eb7f7ab..f27841c0042 100644
--- a/apps/theming/lib/Controller/ThemingController.php
+++ b/apps/theming/lib/Controller/ThemingController.php
@@ -288,12 +288,10 @@ class ThemingController extends Controller {
// Optimize the image since some people may upload images that will be
// either to big or are not progressive rendering.
$tmpFile = $this->tempManager->getTemporaryFile();
- if (function_exists('imagescale')) {
- // FIXME: Once PHP 5.5.0 is a requirement the above check can be removed
- // Workaround for https://bugs.php.net/bug.php?id=65171
- $newHeight = imagesy($image) / (imagesx($image) / 1920);
- $image = imagescale($image, 1920, $newHeight);
- }
+ $newWidth = imagesx($image) < 4096 ? imagesx($image) : 4096;
+ $newHeight = imagesy($image) / (imagesx($image) / $newWidth);
+ $image = imagescale($image, $newWidth, $newHeight);
+
imageinterlace($image, 1);
imagejpeg($image, $tmpFile, 75);
imagedestroy($image);
diff --git a/apps/twofactor_backupcodes/lib/Migration/Version1002Date20170607104347.php b/apps/twofactor_backupcodes/lib/Migration/Version1002Date20170607104347.php
index a7823c5b7a8..9d369ae3a8d 100644
--- a/apps/twofactor_backupcodes/lib/Migration/Version1002Date20170607104347.php
+++ b/apps/twofactor_backupcodes/lib/Migration/Version1002Date20170607104347.php
@@ -23,7 +23,7 @@
namespace OCA\TwoFactorBackupCodes\Migration;
-use Doctrine\DBAL\Schema\Schema;
+use OCP\DB\ISchemaWrapper;
use Doctrine\DBAL\Types\Type;
use OCP\Migration\SimpleMigrationStep;
use OCP\Migration\IOutput;
@@ -31,13 +31,13 @@ use OCP\Migration\IOutput;
class Version1002Date20170607104347 extends SimpleMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
- * @return null|Schema
+ * @return null|ISchemaWrapper
* @since 13.0.0
*/
public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) {
- /** @var Schema $schema */
+ /** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
if (!$schema->hasTable('twofactor_backupcodes')) {
diff --git a/apps/twofactor_backupcodes/lib/Migration/Version1002Date20170607113030.php b/apps/twofactor_backupcodes/lib/Migration/Version1002Date20170607113030.php
index dae9e011787..6895aa44a51 100644
--- a/apps/twofactor_backupcodes/lib/Migration/Version1002Date20170607113030.php
+++ b/apps/twofactor_backupcodes/lib/Migration/Version1002Date20170607113030.php
@@ -23,7 +23,7 @@
namespace OCA\TwoFactorBackupCodes\Migration;
-use Doctrine\DBAL\Schema\Schema;
+use OCP\DB\ISchemaWrapper;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
use OCP\Migration\SimpleMigrationStep;
@@ -43,12 +43,12 @@ class Version1002Date20170607113030 extends SimpleMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
* @since 13.0.0
*/
public function preSchemaChange(IOutput $output, \Closure $schemaClosure, array $options) {
- /** @var Schema $schema */
+ /** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
if (!$schema->hasTable('twofactor_backup_codes')) {
@@ -87,13 +87,13 @@ class Version1002Date20170607113030 extends SimpleMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
- * @return null|Schema
+ * @return null|ISchemaWrapper
* @since 13.0.0
*/
public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) {
- /** @var Schema $schema */
+ /** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
if ($schema->hasTable('twofactor_backup_codes')) {
diff --git a/apps/twofactor_backupcodes/lib/Migration/Version1002Date20170919123342.php b/apps/twofactor_backupcodes/lib/Migration/Version1002Date20170919123342.php
index bb35a900a1e..5cbbcb2ecca 100644
--- a/apps/twofactor_backupcodes/lib/Migration/Version1002Date20170919123342.php
+++ b/apps/twofactor_backupcodes/lib/Migration/Version1002Date20170919123342.php
@@ -23,8 +23,8 @@
namespace OCA\TwoFactorBackupCodes\Migration;
-use Doctrine\DBAL\Schema\Schema;
use Doctrine\DBAL\Types\Type;
+use OCP\DB\ISchemaWrapper;
use OCP\Migration\SimpleMigrationStep;
use OCP\Migration\IOutput;
@@ -32,13 +32,13 @@ class Version1002Date20170919123342 extends SimpleMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
- * @return null|Schema
+ * @return null|ISchemaWrapper
* @since 13.0.0
*/
public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) {
- /** @var Schema $schema */
+ /** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
$table = $schema->getTable('twofactor_backupcodes');
diff --git a/apps/twofactor_backupcodes/lib/Migration/Version1002Date20170926101419.php b/apps/twofactor_backupcodes/lib/Migration/Version1002Date20170926101419.php
index 8072ebd6810..0e19fe2a35e 100644
--- a/apps/twofactor_backupcodes/lib/Migration/Version1002Date20170926101419.php
+++ b/apps/twofactor_backupcodes/lib/Migration/Version1002Date20170926101419.php
@@ -1,10 +1,7 @@
<?php
namespace OCA\TwoFactorBackupCodes\Migration;
-use Doctrine\DBAL\Schema\Schema;
use OCP\Migration\BigIntMigration;
-use OCP\Migration\SimpleMigrationStep;
-use OCP\Migration\IOutput;
/**
* Auto-generated migration step: Please modify to your needs!
diff --git a/apps/updatenotification/appinfo/app.php b/apps/updatenotification/appinfo/app.php
index fd1739bde55..5002fd7c837 100644
--- a/apps/updatenotification/appinfo/app.php
+++ b/apps/updatenotification/appinfo/app.php
@@ -1,56 +1,25 @@
<?php
/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @copyright Copyright (c) 2018, Joas Schilling <coding@schilljs.com>
*
* @author Joas Schilling <coding@schilljs.com>
- * @author Lukas Reschke <lukas@statuscode.ch>
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
*
- * @license AGPL-3.0
+ * @license GNU AGPL version 3 or any later version
*
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
+ * 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
+ * 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, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
+ * 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/>.
*
*/
-if(\OC::$server->getConfig()->getSystemValue('updatechecker', true) === true) {
- $updater = new \OC\Updater\VersionCheck(
- \OC::$server->getHTTPClientService(),
- \OC::$server->getConfig()
- );
- $updateChecker = new \OCA\UpdateNotification\UpdateChecker(
- $updater
- );
-
- $userObject = \OC::$server->getUserSession()->getUser();
- if($userObject !== null) {
- if(\OC::$server->getGroupManager()->isAdmin($userObject->getUID()) &&
- !\OC::$server->getAppManager()->isEnabledForUser('notifications')) {
- if($updateChecker->getUpdateState() !== []) {
- \OCP\Util::addScript('updatenotification', 'notification');
- OC_Hook::connect('\OCP\Config', 'js', $updateChecker, 'getJavaScript');
- }
- }
- }
-
- $manager = \OC::$server->getNotificationManager();
- $manager->registerNotifier(function() use ($manager) {
- return \OC::$server->query(\OCA\UpdateNotification\Notification\Notifier::class);
- }, function() {
- $l = \OC::$server->getL10N('updatenotification');
- return [
- 'id' => 'updatenotification',
- 'name' => $l->t('Update notifications'),
- ];
- });
-}
+$app = new \OCA\UpdateNotification\AppInfo\Application();
+$app->register();
diff --git a/apps/updatenotification/appinfo/info.xml b/apps/updatenotification/appinfo/info.xml
index 5dc0889bb9d..14ec98916ab 100644
--- a/apps/updatenotification/appinfo/info.xml
+++ b/apps/updatenotification/appinfo/info.xml
@@ -5,7 +5,7 @@
<description>Displays update notifications for Nextcloud and provides the SSO for the updater.</description>
<licence>AGPL</licence>
<author>Lukas Reschke</author>
- <version>1.4.0</version>
+ <version>1.4.1</version>
<namespace>UpdateNotification</namespace>
<default_enable/>
<dependencies>
@@ -17,6 +17,6 @@
</background-jobs>
<settings>
- <admin>OCA\UpdateNotification\Controller\AdminController</admin>
+ <admin>OCA\UpdateNotification\Settings\Admin</admin>
</settings>
</info>
diff --git a/apps/updatenotification/composer/composer/autoload_classmap.php b/apps/updatenotification/composer/composer/autoload_classmap.php
index e1833548bcf..55ad497a858 100644
--- a/apps/updatenotification/composer/composer/autoload_classmap.php
+++ b/apps/updatenotification/composer/composer/autoload_classmap.php
@@ -11,5 +11,6 @@ return array(
'OCA\\UpdateNotification\\Notification\\BackgroundJob' => $baseDir . '/../lib/Notification/BackgroundJob.php',
'OCA\\UpdateNotification\\Notification\\Notifier' => $baseDir . '/../lib/Notification/Notifier.php',
'OCA\\UpdateNotification\\ResetTokenBackgroundJob' => $baseDir . '/../lib/ResetTokenBackgroundJob.php',
+ 'OCA\\UpdateNotification\\Settings\\Admin' => $baseDir . '/../lib/Settings/Admin.php',
'OCA\\UpdateNotification\\UpdateChecker' => $baseDir . '/../lib/UpdateChecker.php',
);
diff --git a/apps/updatenotification/composer/composer/autoload_static.php b/apps/updatenotification/composer/composer/autoload_static.php
index 1c63a2d234b..4a50e180a8f 100644
--- a/apps/updatenotification/composer/composer/autoload_static.php
+++ b/apps/updatenotification/composer/composer/autoload_static.php
@@ -26,6 +26,7 @@ class ComposerStaticInitUpdateNotification
'OCA\\UpdateNotification\\Notification\\BackgroundJob' => __DIR__ . '/..' . '/../lib/Notification/BackgroundJob.php',
'OCA\\UpdateNotification\\Notification\\Notifier' => __DIR__ . '/..' . '/../lib/Notification/Notifier.php',
'OCA\\UpdateNotification\\ResetTokenBackgroundJob' => __DIR__ . '/..' . '/../lib/ResetTokenBackgroundJob.php',
+ 'OCA\\UpdateNotification\\Settings\\Admin' => __DIR__ . '/..' . '/../lib/Settings/Admin.php',
'OCA\\UpdateNotification\\UpdateChecker' => __DIR__ . '/..' . '/../lib/UpdateChecker.php',
);
diff --git a/apps/updatenotification/l10n/af.js b/apps/updatenotification/l10n/af.js
index e54c19fe5aa..2a620f81cf1 100644
--- a/apps/updatenotification/l10n/af.js
+++ b/apps/updatenotification/l10n/af.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Werk kennisgewings by",
"Could not start updater, please try the manual update" : "Bywerker kon nie begin nie, probeer handmatig bywerk",
"{version} is available. Get more information on how to update." : "{version} is beskikbaar. Kry meer inligting oor hoe om by te werk.",
+ "Update notifications" : "Werk kennisgewings by",
"Channel updated" : "Kanaal bygewerk",
"The update server could not be reached since %d days to check for new updates." : "Die bywerkingsbediener kan al vir %d dae nie bereik word om nuwe bywerkings te soek nie.",
"Please check the Nextcloud and server log files for errors." : "Gaan die Nextcloud- en bedienerloglêers na vir foute.",
diff --git a/apps/updatenotification/l10n/af.json b/apps/updatenotification/l10n/af.json
index db90ccd2c18..b666e58bfe6 100644
--- a/apps/updatenotification/l10n/af.json
+++ b/apps/updatenotification/l10n/af.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Werk kennisgewings by",
"Could not start updater, please try the manual update" : "Bywerker kon nie begin nie, probeer handmatig bywerk",
"{version} is available. Get more information on how to update." : "{version} is beskikbaar. Kry meer inligting oor hoe om by te werk.",
+ "Update notifications" : "Werk kennisgewings by",
"Channel updated" : "Kanaal bygewerk",
"The update server could not be reached since %d days to check for new updates." : "Die bywerkingsbediener kan al vir %d dae nie bereik word om nuwe bywerkings te soek nie.",
"Please check the Nextcloud and server log files for errors." : "Gaan die Nextcloud- en bedienerloglêers na vir foute.",
diff --git a/apps/updatenotification/l10n/ast.js b/apps/updatenotification/l10n/ast.js
index 1ae6ace7743..16e3fe7616e 100644
--- a/apps/updatenotification/l10n/ast.js
+++ b/apps/updatenotification/l10n/ast.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Avisos d'anovamientu",
"Could not start updater, please try the manual update" : "Nun pudo aniciase l'anovador, por favor prueba l'anovamientu manual",
"{version} is available. Get more information on how to update." : "Ta disponible {version}. Consigui más infromación tocante a cómo anovar.",
+ "Update notifications" : "Avisos d'anovamientu",
"Channel updated" : "Anovóse la canal",
"The update server could not be reached since %d days to check for new updates." : "Nun pudo algamase'l sirvidor d'anovamientu dende hai %d díes pa comprobar anovamientos.",
"Please check the Nextcloud and server log files for errors." : "Comprueba los fallos de los ficheros de rexistru del sirvidor y Nextcloud, por favor.",
diff --git a/apps/updatenotification/l10n/ast.json b/apps/updatenotification/l10n/ast.json
index 7b96e3c873d..53f5e7a2bec 100644
--- a/apps/updatenotification/l10n/ast.json
+++ b/apps/updatenotification/l10n/ast.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Avisos d'anovamientu",
"Could not start updater, please try the manual update" : "Nun pudo aniciase l'anovador, por favor prueba l'anovamientu manual",
"{version} is available. Get more information on how to update." : "Ta disponible {version}. Consigui más infromación tocante a cómo anovar.",
+ "Update notifications" : "Avisos d'anovamientu",
"Channel updated" : "Anovóse la canal",
"The update server could not be reached since %d days to check for new updates." : "Nun pudo algamase'l sirvidor d'anovamientu dende hai %d díes pa comprobar anovamientos.",
"Please check the Nextcloud and server log files for errors." : "Comprueba los fallos de los ficheros de rexistru del sirvidor y Nextcloud, por favor.",
diff --git a/apps/updatenotification/l10n/bg.js b/apps/updatenotification/l10n/bg.js
index cb82d4513b6..c30bebfe7d7 100644
--- a/apps/updatenotification/l10n/bg.js
+++ b/apps/updatenotification/l10n/bg.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Известия за обновления",
"Could not start updater, please try the manual update" : "Актуализиращата програма не беше стартирана. Моля, опитайте ръчно обновление",
"{version} is available. Get more information on how to update." : "{version} е налична. Намерете повече информация за това как да актуализирате.",
+ "Update notifications" : "Известия за обновления",
"Channel updated" : "Канала е променен",
"Update to %1$s is available." : "Обновление към %1$s е налично.",
"Update for %1$s to version %2$s is available." : "Обновление за %1$s към версия %2$s е налично.",
diff --git a/apps/updatenotification/l10n/bg.json b/apps/updatenotification/l10n/bg.json
index 229f118ed40..76f6d579762 100644
--- a/apps/updatenotification/l10n/bg.json
+++ b/apps/updatenotification/l10n/bg.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Известия за обновления",
"Could not start updater, please try the manual update" : "Актуализиращата програма не беше стартирана. Моля, опитайте ръчно обновление",
"{version} is available. Get more information on how to update." : "{version} е налична. Намерете повече информация за това как да актуализирате.",
+ "Update notifications" : "Известия за обновления",
"Channel updated" : "Канала е променен",
"Update to %1$s is available." : "Обновление към %1$s е налично.",
"Update for %1$s to version %2$s is available." : "Обновление за %1$s към версия %2$s е налично.",
diff --git a/apps/updatenotification/l10n/ca.js b/apps/updatenotification/l10n/ca.js
index 005ee987671..346f6063429 100644
--- a/apps/updatenotification/l10n/ca.js
+++ b/apps/updatenotification/l10n/ca.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Notificacions d'actualització",
"Could not start updater, please try the manual update" : "No s'ha pogut iniciar actualitzador, provi l'actualització manual",
"{version} is available. Get more information on how to update." : "Hi ha disponible la versió {version}. Obtingueu més informació sobre com actualitzar.",
+ "Update notifications" : "Notificacions d'actualització",
"Channel updated" : "Canal actualitzat",
"The update server could not be reached since %d days to check for new updates." : "El servidor d'actualització no es va poder arribar des %d dies per comprovar si hi ha noves actualitzacions.",
"Please check the Nextcloud and server log files for errors." : "Si us plau, comproveu els fitxers de log del servidor i de Nextcloud per detectar errors.",
diff --git a/apps/updatenotification/l10n/ca.json b/apps/updatenotification/l10n/ca.json
index fcd9d277d23..f0218375eb2 100644
--- a/apps/updatenotification/l10n/ca.json
+++ b/apps/updatenotification/l10n/ca.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Notificacions d'actualització",
"Could not start updater, please try the manual update" : "No s'ha pogut iniciar actualitzador, provi l'actualització manual",
"{version} is available. Get more information on how to update." : "Hi ha disponible la versió {version}. Obtingueu més informació sobre com actualitzar.",
+ "Update notifications" : "Notificacions d'actualització",
"Channel updated" : "Canal actualitzat",
"The update server could not be reached since %d days to check for new updates." : "El servidor d'actualització no es va poder arribar des %d dies per comprovar si hi ha noves actualitzacions.",
"Please check the Nextcloud and server log files for errors." : "Si us plau, comproveu els fitxers de log del servidor i de Nextcloud per detectar errors.",
diff --git a/apps/updatenotification/l10n/cs.js b/apps/updatenotification/l10n/cs.js
index 38e49baf7df..dff205d9976 100644
--- a/apps/updatenotification/l10n/cs.js
+++ b/apps/updatenotification/l10n/cs.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Aktualizovat upozornění",
"Could not start updater, please try the manual update" : "Nepodařilo se spustit aktualizátor, zkuste ruční aktualizaci",
"{version} is available. Get more information on how to update." : "Je dostupná {version}. Přečtěte si více informací jak aktualizovat.",
+ "Update notifications" : "Aktualizovat upozornění",
"Channel updated" : "Kanál aktualizován",
"The update server could not be reached since %d days to check for new updates." : "Aktualizační server nebyl dosažen %d dní pro kontrolu aktualizací.",
"Please check the Nextcloud and server log files for errors." : "Po chybách se podívejte v protokolech Nextcloudu a webového serveru.",
diff --git a/apps/updatenotification/l10n/cs.json b/apps/updatenotification/l10n/cs.json
index eb1fc5f143f..0a9f60cc9b7 100644
--- a/apps/updatenotification/l10n/cs.json
+++ b/apps/updatenotification/l10n/cs.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Aktualizovat upozornění",
"Could not start updater, please try the manual update" : "Nepodařilo se spustit aktualizátor, zkuste ruční aktualizaci",
"{version} is available. Get more information on how to update." : "Je dostupná {version}. Přečtěte si více informací jak aktualizovat.",
+ "Update notifications" : "Aktualizovat upozornění",
"Channel updated" : "Kanál aktualizován",
"The update server could not be reached since %d days to check for new updates." : "Aktualizační server nebyl dosažen %d dní pro kontrolu aktualizací.",
"Please check the Nextcloud and server log files for errors." : "Po chybách se podívejte v protokolech Nextcloudu a webového serveru.",
diff --git a/apps/updatenotification/l10n/da.js b/apps/updatenotification/l10n/da.js
index 39b81001090..af04a782155 100644
--- a/apps/updatenotification/l10n/da.js
+++ b/apps/updatenotification/l10n/da.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Opdaterings notifikationer",
"Could not start updater, please try the manual update" : "Kunne ikke starte opdateringen, prøv venligst med en manual opdatering",
"{version} is available. Get more information on how to update." : "{version} er tilgængelig. Få mere information om hvordan du opdaterer.",
+ "Update notifications" : "Opdaterings notifikationer",
"Channel updated" : "Kanal opdateret",
"The update server could not be reached since %d days to check for new updates." : "Har ikke været forbundet til opdateringsserveren i %d dage for at tjekke efter nye opdateringer.",
"Please check the Nextcloud and server log files for errors." : "Tjek venligst Nextcloud server log for fejl.",
diff --git a/apps/updatenotification/l10n/da.json b/apps/updatenotification/l10n/da.json
index 921499d1764..9d743bb49c2 100644
--- a/apps/updatenotification/l10n/da.json
+++ b/apps/updatenotification/l10n/da.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Opdaterings notifikationer",
"Could not start updater, please try the manual update" : "Kunne ikke starte opdateringen, prøv venligst med en manual opdatering",
"{version} is available. Get more information on how to update." : "{version} er tilgængelig. Få mere information om hvordan du opdaterer.",
+ "Update notifications" : "Opdaterings notifikationer",
"Channel updated" : "Kanal opdateret",
"The update server could not be reached since %d days to check for new updates." : "Har ikke været forbundet til opdateringsserveren i %d dage for at tjekke efter nye opdateringer.",
"Please check the Nextcloud and server log files for errors." : "Tjek venligst Nextcloud server log for fejl.",
diff --git a/apps/updatenotification/l10n/de.js b/apps/updatenotification/l10n/de.js
index 14fcd2995db..a845e13cb8c 100644
--- a/apps/updatenotification/l10n/de.js
+++ b/apps/updatenotification/l10n/de.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Update-Benachrichtigungen",
"Could not start updater, please try the manual update" : "Der Updater konnte nicht gestartet werden, bitte versuche ein manuelles Update",
"{version} is available. Get more information on how to update." : "{version} ist verfügbar. Weitere Informationen zur Aktualisierung.",
+ "Update notifications" : "Update-Benachrichtigungen",
"Channel updated" : "Kanal aktualisiert",
"The update server could not be reached since %d days to check for new updates." : "Der Aktualisierungsserver konnte seit %d Tagen nicht erreicht werden um auf verfügbare Aktualisierungen zu prüfen.",
"Please check the Nextcloud and server log files for errors." : "Bitte überprüfe die Server- und Nextcloud-Logdateien auf Fehler.",
diff --git a/apps/updatenotification/l10n/de.json b/apps/updatenotification/l10n/de.json
index d5104abd5c2..d4aee7c82e5 100644
--- a/apps/updatenotification/l10n/de.json
+++ b/apps/updatenotification/l10n/de.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Update-Benachrichtigungen",
"Could not start updater, please try the manual update" : "Der Updater konnte nicht gestartet werden, bitte versuche ein manuelles Update",
"{version} is available. Get more information on how to update." : "{version} ist verfügbar. Weitere Informationen zur Aktualisierung.",
+ "Update notifications" : "Update-Benachrichtigungen",
"Channel updated" : "Kanal aktualisiert",
"The update server could not be reached since %d days to check for new updates." : "Der Aktualisierungsserver konnte seit %d Tagen nicht erreicht werden um auf verfügbare Aktualisierungen zu prüfen.",
"Please check the Nextcloud and server log files for errors." : "Bitte überprüfe die Server- und Nextcloud-Logdateien auf Fehler.",
diff --git a/apps/updatenotification/l10n/de_DE.js b/apps/updatenotification/l10n/de_DE.js
index 01b98f1b5e4..587879da431 100644
--- a/apps/updatenotification/l10n/de_DE.js
+++ b/apps/updatenotification/l10n/de_DE.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Update-Benachrichtigungen",
"Could not start updater, please try the manual update" : "Der Updater konnte nicht gestartet werden, bitte versuchen Sie ein manuelles Update",
"{version} is available. Get more information on how to update." : "{version} ist verfügbar. Weitere Informationen zur Aktualisierung.",
+ "Update notifications" : "Update-Benachrichtigungen",
"Channel updated" : "Kanal aktualisiert",
"The update server could not be reached since %d days to check for new updates." : "Der Aktualisierungsserver konnte seit %d Tagen nicht erreicht werden um auf verfügbare Aktualisierungen zu prüfen.",
"Please check the Nextcloud and server log files for errors." : "Bitte überprüfe die Server- und Nextcloud-Logdateien auf Fehler.",
diff --git a/apps/updatenotification/l10n/de_DE.json b/apps/updatenotification/l10n/de_DE.json
index b748bfcf72e..82d09e4fa94 100644
--- a/apps/updatenotification/l10n/de_DE.json
+++ b/apps/updatenotification/l10n/de_DE.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Update-Benachrichtigungen",
"Could not start updater, please try the manual update" : "Der Updater konnte nicht gestartet werden, bitte versuchen Sie ein manuelles Update",
"{version} is available. Get more information on how to update." : "{version} ist verfügbar. Weitere Informationen zur Aktualisierung.",
+ "Update notifications" : "Update-Benachrichtigungen",
"Channel updated" : "Kanal aktualisiert",
"The update server could not be reached since %d days to check for new updates." : "Der Aktualisierungsserver konnte seit %d Tagen nicht erreicht werden um auf verfügbare Aktualisierungen zu prüfen.",
"Please check the Nextcloud and server log files for errors." : "Bitte überprüfe die Server- und Nextcloud-Logdateien auf Fehler.",
diff --git a/apps/updatenotification/l10n/el.js b/apps/updatenotification/l10n/el.js
index 0b73d991e16..2e4fc989b66 100644
--- a/apps/updatenotification/l10n/el.js
+++ b/apps/updatenotification/l10n/el.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Ειδοποιήσεις ενημέρωσης",
"Could not start updater, please try the manual update" : "Δεν μπορεί να εκκινήσει η εφαρμογή ενημέρωσης, παρακαλώ δοκιμάστε την χειροκίνητη ενημέρωση",
"{version} is available. Get more information on how to update." : "Η έκδοση {version} είναι διαθέσιμη. Δείτε περισσότερες πληροφορίες για το πως να κάνετε την ενημέρωση.",
+ "Update notifications" : "Ειδοποιήσεις ενημέρωσης",
"Channel updated" : "Ενημερωμένο κανάλι",
"The update server could not be reached since %d days to check for new updates." : "Ο διακομιστής ενημέρωσης δεν ήταν προσβάσιμος από %dημέρες για να ελέγξει για νέες ενημερώσεις. ",
"Please check the Nextcloud and server log files for errors." : "Παρακαλούμε ελέγξτε για σφάλματα στα αρχεία ιστορικού του Nextcloud και του διακομιστή σας.",
diff --git a/apps/updatenotification/l10n/el.json b/apps/updatenotification/l10n/el.json
index 663ae62def0..2265d980a52 100644
--- a/apps/updatenotification/l10n/el.json
+++ b/apps/updatenotification/l10n/el.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Ειδοποιήσεις ενημέρωσης",
"Could not start updater, please try the manual update" : "Δεν μπορεί να εκκινήσει η εφαρμογή ενημέρωσης, παρακαλώ δοκιμάστε την χειροκίνητη ενημέρωση",
"{version} is available. Get more information on how to update." : "Η έκδοση {version} είναι διαθέσιμη. Δείτε περισσότερες πληροφορίες για το πως να κάνετε την ενημέρωση.",
+ "Update notifications" : "Ειδοποιήσεις ενημέρωσης",
"Channel updated" : "Ενημερωμένο κανάλι",
"The update server could not be reached since %d days to check for new updates." : "Ο διακομιστής ενημέρωσης δεν ήταν προσβάσιμος από %dημέρες για να ελέγξει για νέες ενημερώσεις. ",
"Please check the Nextcloud and server log files for errors." : "Παρακαλούμε ελέγξτε για σφάλματα στα αρχεία ιστορικού του Nextcloud και του διακομιστή σας.",
diff --git a/apps/updatenotification/l10n/en_GB.js b/apps/updatenotification/l10n/en_GB.js
index dd5e55722bb..54b3768945f 100644
--- a/apps/updatenotification/l10n/en_GB.js
+++ b/apps/updatenotification/l10n/en_GB.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Update notifications",
"Could not start updater, please try the manual update" : "Could not start updater, please try the manual update",
"{version} is available. Get more information on how to update." : "{version} is available. Get more information on how to update.",
+ "Update notifications" : "Update notifications",
"Channel updated" : "Channel updated",
"The update server could not be reached since %d days to check for new updates." : "The update server could not be reached since %d days to check for new updates.",
"Please check the Nextcloud and server log files for errors." : "Please check the Nextcloud and server log files for errors.",
diff --git a/apps/updatenotification/l10n/en_GB.json b/apps/updatenotification/l10n/en_GB.json
index cb2d296238f..132289a1471 100644
--- a/apps/updatenotification/l10n/en_GB.json
+++ b/apps/updatenotification/l10n/en_GB.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Update notifications",
"Could not start updater, please try the manual update" : "Could not start updater, please try the manual update",
"{version} is available. Get more information on how to update." : "{version} is available. Get more information on how to update.",
+ "Update notifications" : "Update notifications",
"Channel updated" : "Channel updated",
"The update server could not be reached since %d days to check for new updates." : "The update server could not be reached since %d days to check for new updates.",
"Please check the Nextcloud and server log files for errors." : "Please check the Nextcloud and server log files for errors.",
diff --git a/apps/updatenotification/l10n/es.js b/apps/updatenotification/l10n/es.js
index 088da46cd32..9f409b8fe57 100644
--- a/apps/updatenotification/l10n/es.js
+++ b/apps/updatenotification/l10n/es.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No se pudo iniciar el actualizador, por favor inténtalo de forma manual la actualización",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obtenga más información sobre cómo actualizar.",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no se ha podido alcanzar desde hace %d días para comprobar nuevas actualizaciones.",
"Please check the Nextcloud and server log files for errors." : "Por favor revise los archivos de registros para Nextcloud y el servidor en búsca de errores.",
diff --git a/apps/updatenotification/l10n/es.json b/apps/updatenotification/l10n/es.json
index 777bd24ae9e..41e8d807849 100644
--- a/apps/updatenotification/l10n/es.json
+++ b/apps/updatenotification/l10n/es.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No se pudo iniciar el actualizador, por favor inténtalo de forma manual la actualización",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obtenga más información sobre cómo actualizar.",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no se ha podido alcanzar desde hace %d días para comprobar nuevas actualizaciones.",
"Please check the Nextcloud and server log files for errors." : "Por favor revise los archivos de registros para Nextcloud y el servidor en búsca de errores.",
diff --git a/apps/updatenotification/l10n/es_419.js b/apps/updatenotification/l10n/es_419.js
index 7753f5b5a04..97a64693f9a 100644
--- a/apps/updatenotification/l10n/es_419.js
+++ b/apps/updatenotification/l10n/es_419.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_419.json b/apps/updatenotification/l10n/es_419.json
index 5dea8ca3eec..52b76efbfab 100644
--- a/apps/updatenotification/l10n/es_419.json
+++ b/apps/updatenotification/l10n/es_419.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_AR.js b/apps/updatenotification/l10n/es_AR.js
index a8c015e77f1..848ac7bd5bc 100644
--- a/apps/updatenotification/l10n/es_AR.js
+++ b/apps/updatenotification/l10n/es_AR.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, favor de intentar la actualización manual",
"{version} is available. Get more information on how to update." : "{version} no está disponible. Obtenga más información acerca de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Favor de verificar los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_AR.json b/apps/updatenotification/l10n/es_AR.json
index 4a35a71648e..5a7fc541a8f 100644
--- a/apps/updatenotification/l10n/es_AR.json
+++ b/apps/updatenotification/l10n/es_AR.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, favor de intentar la actualización manual",
"{version} is available. Get more information on how to update." : "{version} no está disponible. Obtenga más información acerca de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Favor de verificar los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_CL.js b/apps/updatenotification/l10n/es_CL.js
index 7753f5b5a04..97a64693f9a 100644
--- a/apps/updatenotification/l10n/es_CL.js
+++ b/apps/updatenotification/l10n/es_CL.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_CL.json b/apps/updatenotification/l10n/es_CL.json
index 5dea8ca3eec..52b76efbfab 100644
--- a/apps/updatenotification/l10n/es_CL.json
+++ b/apps/updatenotification/l10n/es_CL.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_CO.js b/apps/updatenotification/l10n/es_CO.js
index 7753f5b5a04..97a64693f9a 100644
--- a/apps/updatenotification/l10n/es_CO.js
+++ b/apps/updatenotification/l10n/es_CO.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_CO.json b/apps/updatenotification/l10n/es_CO.json
index 5dea8ca3eec..52b76efbfab 100644
--- a/apps/updatenotification/l10n/es_CO.json
+++ b/apps/updatenotification/l10n/es_CO.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_CR.js b/apps/updatenotification/l10n/es_CR.js
index 7753f5b5a04..97a64693f9a 100644
--- a/apps/updatenotification/l10n/es_CR.js
+++ b/apps/updatenotification/l10n/es_CR.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_CR.json b/apps/updatenotification/l10n/es_CR.json
index 5dea8ca3eec..52b76efbfab 100644
--- a/apps/updatenotification/l10n/es_CR.json
+++ b/apps/updatenotification/l10n/es_CR.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_DO.js b/apps/updatenotification/l10n/es_DO.js
index 7753f5b5a04..97a64693f9a 100644
--- a/apps/updatenotification/l10n/es_DO.js
+++ b/apps/updatenotification/l10n/es_DO.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_DO.json b/apps/updatenotification/l10n/es_DO.json
index 5dea8ca3eec..52b76efbfab 100644
--- a/apps/updatenotification/l10n/es_DO.json
+++ b/apps/updatenotification/l10n/es_DO.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_EC.js b/apps/updatenotification/l10n/es_EC.js
index 7753f5b5a04..97a64693f9a 100644
--- a/apps/updatenotification/l10n/es_EC.js
+++ b/apps/updatenotification/l10n/es_EC.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_EC.json b/apps/updatenotification/l10n/es_EC.json
index 5dea8ca3eec..52b76efbfab 100644
--- a/apps/updatenotification/l10n/es_EC.json
+++ b/apps/updatenotification/l10n/es_EC.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_GT.js b/apps/updatenotification/l10n/es_GT.js
index 7753f5b5a04..97a64693f9a 100644
--- a/apps/updatenotification/l10n/es_GT.js
+++ b/apps/updatenotification/l10n/es_GT.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_GT.json b/apps/updatenotification/l10n/es_GT.json
index 5dea8ca3eec..52b76efbfab 100644
--- a/apps/updatenotification/l10n/es_GT.json
+++ b/apps/updatenotification/l10n/es_GT.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_HN.js b/apps/updatenotification/l10n/es_HN.js
index 7753f5b5a04..97a64693f9a 100644
--- a/apps/updatenotification/l10n/es_HN.js
+++ b/apps/updatenotification/l10n/es_HN.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_HN.json b/apps/updatenotification/l10n/es_HN.json
index 5dea8ca3eec..52b76efbfab 100644
--- a/apps/updatenotification/l10n/es_HN.json
+++ b/apps/updatenotification/l10n/es_HN.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_MX.js b/apps/updatenotification/l10n/es_MX.js
index 7753f5b5a04..97a64693f9a 100644
--- a/apps/updatenotification/l10n/es_MX.js
+++ b/apps/updatenotification/l10n/es_MX.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_MX.json b/apps/updatenotification/l10n/es_MX.json
index 5dea8ca3eec..52b76efbfab 100644
--- a/apps/updatenotification/l10n/es_MX.json
+++ b/apps/updatenotification/l10n/es_MX.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_NI.js b/apps/updatenotification/l10n/es_NI.js
index 7753f5b5a04..97a64693f9a 100644
--- a/apps/updatenotification/l10n/es_NI.js
+++ b/apps/updatenotification/l10n/es_NI.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_NI.json b/apps/updatenotification/l10n/es_NI.json
index 5dea8ca3eec..52b76efbfab 100644
--- a/apps/updatenotification/l10n/es_NI.json
+++ b/apps/updatenotification/l10n/es_NI.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_PA.js b/apps/updatenotification/l10n/es_PA.js
index 7753f5b5a04..97a64693f9a 100644
--- a/apps/updatenotification/l10n/es_PA.js
+++ b/apps/updatenotification/l10n/es_PA.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_PA.json b/apps/updatenotification/l10n/es_PA.json
index 5dea8ca3eec..52b76efbfab 100644
--- a/apps/updatenotification/l10n/es_PA.json
+++ b/apps/updatenotification/l10n/es_PA.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_PE.js b/apps/updatenotification/l10n/es_PE.js
index 7753f5b5a04..97a64693f9a 100644
--- a/apps/updatenotification/l10n/es_PE.js
+++ b/apps/updatenotification/l10n/es_PE.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_PE.json b/apps/updatenotification/l10n/es_PE.json
index 5dea8ca3eec..52b76efbfab 100644
--- a/apps/updatenotification/l10n/es_PE.json
+++ b/apps/updatenotification/l10n/es_PE.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_PR.js b/apps/updatenotification/l10n/es_PR.js
index 7753f5b5a04..97a64693f9a 100644
--- a/apps/updatenotification/l10n/es_PR.js
+++ b/apps/updatenotification/l10n/es_PR.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_PR.json b/apps/updatenotification/l10n/es_PR.json
index 5dea8ca3eec..52b76efbfab 100644
--- a/apps/updatenotification/l10n/es_PR.json
+++ b/apps/updatenotification/l10n/es_PR.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_PY.js b/apps/updatenotification/l10n/es_PY.js
index 7753f5b5a04..97a64693f9a 100644
--- a/apps/updatenotification/l10n/es_PY.js
+++ b/apps/updatenotification/l10n/es_PY.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_PY.json b/apps/updatenotification/l10n/es_PY.json
index 5dea8ca3eec..52b76efbfab 100644
--- a/apps/updatenotification/l10n/es_PY.json
+++ b/apps/updatenotification/l10n/es_PY.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_SV.js b/apps/updatenotification/l10n/es_SV.js
index 7753f5b5a04..97a64693f9a 100644
--- a/apps/updatenotification/l10n/es_SV.js
+++ b/apps/updatenotification/l10n/es_SV.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_SV.json b/apps/updatenotification/l10n/es_SV.json
index 5dea8ca3eec..52b76efbfab 100644
--- a/apps/updatenotification/l10n/es_SV.json
+++ b/apps/updatenotification/l10n/es_SV.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_UY.js b/apps/updatenotification/l10n/es_UY.js
index 7753f5b5a04..97a64693f9a 100644
--- a/apps/updatenotification/l10n/es_UY.js
+++ b/apps/updatenotification/l10n/es_UY.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/es_UY.json b/apps/updatenotification/l10n/es_UY.json
index 5dea8ca3eec..52b76efbfab 100644
--- a/apps/updatenotification/l10n/es_UY.json
+++ b/apps/updatenotification/l10n/es_UY.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Actualizar notificaciones",
"Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ",
+ "Update notifications" : "Actualizar notificaciones",
"Channel updated" : "Canal actualizado",
"The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ",
"Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ",
diff --git a/apps/updatenotification/l10n/fi.js b/apps/updatenotification/l10n/fi.js
index 116a472dddb..b0c6c2649c9 100644
--- a/apps/updatenotification/l10n/fi.js
+++ b/apps/updatenotification/l10n/fi.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Päivitysilmoitukset",
"Could not start updater, please try the manual update" : "Ei voitu aloittaa päivitystä, kokeile päivittämistä manuaalisesti",
"{version} is available. Get more information on how to update." : "{version} on saatavilla. Tarjolla on lisätietoja päivittämisestä.",
+ "Update notifications" : "Päivitysilmoitukset",
"Channel updated" : "Päivityskanava päivitetty",
"The update server could not be reached since %d days to check for new updates." : "Päivityspalvelinta ei ole tavoitettu %d päivään; uusia päivityksiä ei voida tarkistaa.",
"Please check the Nextcloud and server log files for errors." : "Tarkista Nextcloud- ja palvelinlokitiedostot virheiden osalta.",
diff --git a/apps/updatenotification/l10n/fi.json b/apps/updatenotification/l10n/fi.json
index 5e8a8b8faec..f5da44de182 100644
--- a/apps/updatenotification/l10n/fi.json
+++ b/apps/updatenotification/l10n/fi.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Päivitysilmoitukset",
"Could not start updater, please try the manual update" : "Ei voitu aloittaa päivitystä, kokeile päivittämistä manuaalisesti",
"{version} is available. Get more information on how to update." : "{version} on saatavilla. Tarjolla on lisätietoja päivittämisestä.",
+ "Update notifications" : "Päivitysilmoitukset",
"Channel updated" : "Päivityskanava päivitetty",
"The update server could not be reached since %d days to check for new updates." : "Päivityspalvelinta ei ole tavoitettu %d päivään; uusia päivityksiä ei voida tarkistaa.",
"Please check the Nextcloud and server log files for errors." : "Tarkista Nextcloud- ja palvelinlokitiedostot virheiden osalta.",
diff --git a/apps/updatenotification/l10n/fr.js b/apps/updatenotification/l10n/fr.js
index 87bc4175c66..32738b7ff20 100644
--- a/apps/updatenotification/l10n/fr.js
+++ b/apps/updatenotification/l10n/fr.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Notifications de mises à jour",
"Could not start updater, please try the manual update" : "Impossible de démarrer le système de mise à jour, veuillez essayer de mettre à jour manuellement",
"{version} is available. Get more information on how to update." : "La version {version} est disponible. Cliquez ici pour plus d'informations sur comment mettre à jour.",
+ "Update notifications" : "Notifications de mises à jour",
"Channel updated" : "Canal de mise à jour modifié",
"The update server could not be reached since %d days to check for new updates." : "Le serveur de mise à jour n'a pas pu être atteint depuis %d jours pour vérifier les nouvelles mises à jour.",
"Please check the Nextcloud and server log files for errors." : "Veuillez vérifier les fichiers de log de Nextcloud et du serveur pour les erreurs.",
diff --git a/apps/updatenotification/l10n/fr.json b/apps/updatenotification/l10n/fr.json
index 2fbb5dd9c3d..09ef72902e1 100644
--- a/apps/updatenotification/l10n/fr.json
+++ b/apps/updatenotification/l10n/fr.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Notifications de mises à jour",
"Could not start updater, please try the manual update" : "Impossible de démarrer le système de mise à jour, veuillez essayer de mettre à jour manuellement",
"{version} is available. Get more information on how to update." : "La version {version} est disponible. Cliquez ici pour plus d'informations sur comment mettre à jour.",
+ "Update notifications" : "Notifications de mises à jour",
"Channel updated" : "Canal de mise à jour modifié",
"The update server could not be reached since %d days to check for new updates." : "Le serveur de mise à jour n'a pas pu être atteint depuis %d jours pour vérifier les nouvelles mises à jour.",
"Please check the Nextcloud and server log files for errors." : "Veuillez vérifier les fichiers de log de Nextcloud et du serveur pour les erreurs.",
diff --git a/apps/updatenotification/l10n/gl.js b/apps/updatenotification/l10n/gl.js
index 063652d2ad7..97377e6b727 100644
--- a/apps/updatenotification/l10n/gl.js
+++ b/apps/updatenotification/l10n/gl.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Actualizar as notificacións",
"Could not start updater, please try the manual update" : "Non foi posíbel iniciar o actualizador, por favor tente a actualización manual",
"{version} is available. Get more information on how to update." : "{version} está dispoñíbel. Obteña máis información sobre como actualizar.",
+ "Update notifications" : "Actualizar as notificacións",
"Channel updated" : "Canle actualizada",
"The update server could not be reached since %d days to check for new updates." : "Non foi posíbel conectar co servidor de actualizacións dende vai %d días para comprobar se hai novas actualizacións.",
"Please check the Nextcloud and server log files for errors." : "Por favor comprobe os ficheiros de rexistro de Nextcloud e do servidor na procura de erros.",
diff --git a/apps/updatenotification/l10n/gl.json b/apps/updatenotification/l10n/gl.json
index cfe5ecf9d00..35b9e507bb2 100644
--- a/apps/updatenotification/l10n/gl.json
+++ b/apps/updatenotification/l10n/gl.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Actualizar as notificacións",
"Could not start updater, please try the manual update" : "Non foi posíbel iniciar o actualizador, por favor tente a actualización manual",
"{version} is available. Get more information on how to update." : "{version} está dispoñíbel. Obteña máis información sobre como actualizar.",
+ "Update notifications" : "Actualizar as notificacións",
"Channel updated" : "Canle actualizada",
"The update server could not be reached since %d days to check for new updates." : "Non foi posíbel conectar co servidor de actualizacións dende vai %d días para comprobar se hai novas actualizacións.",
"Please check the Nextcloud and server log files for errors." : "Por favor comprobe os ficheiros de rexistro de Nextcloud e do servidor na procura de erros.",
diff --git a/apps/updatenotification/l10n/hu.js b/apps/updatenotification/l10n/hu.js
index ff5f2ba62a7..d9a9d308f63 100644
--- a/apps/updatenotification/l10n/hu.js
+++ b/apps/updatenotification/l10n/hu.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Frissítési értesítés",
"Could not start updater, please try the manual update" : "Nem sikerült elindítani a frissítőt, kérlek próbáld a manuális frissítést",
"{version} is available. Get more information on how to update." : "{version} rendelkezésre áll. További információ a frissítéshez.",
+ "Update notifications" : "Frissítési értesítés",
"Channel updated" : "Csatorna frissítve",
"The update server could not be reached since %d days to check for new updates." : "A frissítési szerver %d napja nem elérhető a frissítések kereséséhez.",
"Please check the Nextcloud and server log files for errors." : "Kérlek nézd meg a Nextcloud és a szervernaplókat a hibák miatt.",
diff --git a/apps/updatenotification/l10n/hu.json b/apps/updatenotification/l10n/hu.json
index 2eaacdff14e..f800931c2dc 100644
--- a/apps/updatenotification/l10n/hu.json
+++ b/apps/updatenotification/l10n/hu.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Frissítési értesítés",
"Could not start updater, please try the manual update" : "Nem sikerült elindítani a frissítőt, kérlek próbáld a manuális frissítést",
"{version} is available. Get more information on how to update." : "{version} rendelkezésre áll. További információ a frissítéshez.",
+ "Update notifications" : "Frissítési értesítés",
"Channel updated" : "Csatorna frissítve",
"The update server could not be reached since %d days to check for new updates." : "A frissítési szerver %d napja nem elérhető a frissítések kereséséhez.",
"Please check the Nextcloud and server log files for errors." : "Kérlek nézd meg a Nextcloud és a szervernaplókat a hibák miatt.",
diff --git a/apps/updatenotification/l10n/ia.js b/apps/updatenotification/l10n/ia.js
index 6e62eb5ebb0..cffca2728fc 100644
--- a/apps/updatenotification/l10n/ia.js
+++ b/apps/updatenotification/l10n/ia.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Actualisar notificationes",
"Could not start updater, please try the manual update" : "Impossibile initiar le actualisator, per favor tenta le actualisation manual",
"{version} is available. Get more information on how to update." : "{version} es disponibile. Obtene plus informationes super como actualisar.",
+ "Update notifications" : "Actualisar notificationes",
"Channel updated" : "Canal actualisate",
"Update to %1$s is available." : "Un actualisation a %1$s es disponibile.",
"Update for %1$s to version %2$s is available." : "Un actualisation de %1$s al version %2$s es disponibile.",
diff --git a/apps/updatenotification/l10n/ia.json b/apps/updatenotification/l10n/ia.json
index dfe8edc981d..f5737890c65 100644
--- a/apps/updatenotification/l10n/ia.json
+++ b/apps/updatenotification/l10n/ia.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Actualisar notificationes",
"Could not start updater, please try the manual update" : "Impossibile initiar le actualisator, per favor tenta le actualisation manual",
"{version} is available. Get more information on how to update." : "{version} es disponibile. Obtene plus informationes super como actualisar.",
+ "Update notifications" : "Actualisar notificationes",
"Channel updated" : "Canal actualisate",
"Update to %1$s is available." : "Un actualisation a %1$s es disponibile.",
"Update for %1$s to version %2$s is available." : "Un actualisation de %1$s al version %2$s es disponibile.",
diff --git a/apps/updatenotification/l10n/id.js b/apps/updatenotification/l10n/id.js
index e24df632591..c751e60da41 100644
--- a/apps/updatenotification/l10n/id.js
+++ b/apps/updatenotification/l10n/id.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Perbarui pemberitahuan",
"Could not start updater, please try the manual update" : "Tidak dapat menjalankan updater, harap coba perbarui manual",
"{version} is available. Get more information on how to update." : "{version} tersedia. Dapatkan informasi lebih lanjut cara memperbaruinya.",
+ "Update notifications" : "Perbarui pemberitahuan",
"Channel updated" : "Kanal diperbarui",
"Update to %1$s is available." : "Pembaruan untuk %1$s tersedia.",
"Update for %1$s to version %2$s is available." : "Pembaruan untuk %1$s ke versi %2$s tersedia.",
diff --git a/apps/updatenotification/l10n/id.json b/apps/updatenotification/l10n/id.json
index 153bcc93cf4..d50c02dda80 100644
--- a/apps/updatenotification/l10n/id.json
+++ b/apps/updatenotification/l10n/id.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Perbarui pemberitahuan",
"Could not start updater, please try the manual update" : "Tidak dapat menjalankan updater, harap coba perbarui manual",
"{version} is available. Get more information on how to update." : "{version} tersedia. Dapatkan informasi lebih lanjut cara memperbaruinya.",
+ "Update notifications" : "Perbarui pemberitahuan",
"Channel updated" : "Kanal diperbarui",
"Update to %1$s is available." : "Pembaruan untuk %1$s tersedia.",
"Update for %1$s to version %2$s is available." : "Pembaruan untuk %1$s ke versi %2$s tersedia.",
diff --git a/apps/updatenotification/l10n/is.js b/apps/updatenotification/l10n/is.js
index 4d1929d09e1..51c1de56e8e 100644
--- a/apps/updatenotification/l10n/is.js
+++ b/apps/updatenotification/l10n/is.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Tilkynningar um uppfærslu",
"Could not start updater, please try the manual update" : "Gat ekki ræst uppfærslustýringu, prófaðu að uppfæra handvirkt",
"{version} is available. Get more information on how to update." : "{version} er í boði. Fáðu frekari upplýsingar um hvernig á að uppfæra.",
+ "Update notifications" : "Tilkynningar um uppfærslu",
"Channel updated" : "Rás uppfærð",
"The update server could not be reached since %d days to check for new updates." : "Ekki hefur verið hægt að nálgast uppfærsluþjóninn í %d daga til að athuga með nýjar uppfærslur.",
"Please check the Nextcloud and server log files for errors." : "Skoðaðu hvort einhver villuboð séu í annálaskrám Nextcloud þjónsins.",
diff --git a/apps/updatenotification/l10n/is.json b/apps/updatenotification/l10n/is.json
index 004502af355..bb4c7ab83fa 100644
--- a/apps/updatenotification/l10n/is.json
+++ b/apps/updatenotification/l10n/is.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Tilkynningar um uppfærslu",
"Could not start updater, please try the manual update" : "Gat ekki ræst uppfærslustýringu, prófaðu að uppfæra handvirkt",
"{version} is available. Get more information on how to update." : "{version} er í boði. Fáðu frekari upplýsingar um hvernig á að uppfæra.",
+ "Update notifications" : "Tilkynningar um uppfærslu",
"Channel updated" : "Rás uppfærð",
"The update server could not be reached since %d days to check for new updates." : "Ekki hefur verið hægt að nálgast uppfærsluþjóninn í %d daga til að athuga með nýjar uppfærslur.",
"Please check the Nextcloud and server log files for errors." : "Skoðaðu hvort einhver villuboð séu í annálaskrám Nextcloud þjónsins.",
diff --git a/apps/updatenotification/l10n/it.js b/apps/updatenotification/l10n/it.js
index b48ba2cd554..98b40a4db2b 100644
--- a/apps/updatenotification/l10n/it.js
+++ b/apps/updatenotification/l10n/it.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Notifiche di aggiornamento",
"Could not start updater, please try the manual update" : "Impossibile avviare lo strumento di aggiornamento, prova l'aggiornamento manuale",
"{version} is available. Get more information on how to update." : "{version} è disponibile. Ottieni ulteriori informazioni su come eseguire l'aggiornamento.",
+ "Update notifications" : "Notifiche di aggiornamento",
"Channel updated" : "Canale aggiornato",
"The update server could not be reached since %d days to check for new updates." : "Il server degli aggiornamenti non è raggiungibile da %d giorni per controllare la presenza di nuovi aggiornamenti.",
"Please check the Nextcloud and server log files for errors." : "Controlla i file di log di Nextcloud e del server alla ricerca di errori.",
diff --git a/apps/updatenotification/l10n/it.json b/apps/updatenotification/l10n/it.json
index ab7cad2172e..fd0e40bc624 100644
--- a/apps/updatenotification/l10n/it.json
+++ b/apps/updatenotification/l10n/it.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Notifiche di aggiornamento",
"Could not start updater, please try the manual update" : "Impossibile avviare lo strumento di aggiornamento, prova l'aggiornamento manuale",
"{version} is available. Get more information on how to update." : "{version} è disponibile. Ottieni ulteriori informazioni su come eseguire l'aggiornamento.",
+ "Update notifications" : "Notifiche di aggiornamento",
"Channel updated" : "Canale aggiornato",
"The update server could not be reached since %d days to check for new updates." : "Il server degli aggiornamenti non è raggiungibile da %d giorni per controllare la presenza di nuovi aggiornamenti.",
"Please check the Nextcloud and server log files for errors." : "Controlla i file di log di Nextcloud e del server alla ricerca di errori.",
diff --git a/apps/updatenotification/l10n/ja.js b/apps/updatenotification/l10n/ja.js
index 2f6de6ed93e..6a64620cbf2 100644
--- a/apps/updatenotification/l10n/ja.js
+++ b/apps/updatenotification/l10n/ja.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "アップデート通知",
"Could not start updater, please try the manual update" : "アップデータを起動できませんでした。手動アップデートをお試しください",
"{version} is available. Get more information on how to update." : "{version} が利用可能です。アップデート方法について詳細情報を確認してください。",
+ "Update notifications" : "アップデート通知",
"Channel updated" : "チャンネルが更新されました",
"The update server could not be reached since %d days to check for new updates." : "%d日以降、新しい更新をチェックする更新サーバーにアクセスできませんでした。",
"Please check the Nextcloud and server log files for errors." : "Nextcloudとサーバーログファイルでエラーがないか確認してください。",
diff --git a/apps/updatenotification/l10n/ja.json b/apps/updatenotification/l10n/ja.json
index 4a807956e34..ab2d647490c 100644
--- a/apps/updatenotification/l10n/ja.json
+++ b/apps/updatenotification/l10n/ja.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "アップデート通知",
"Could not start updater, please try the manual update" : "アップデータを起動できませんでした。手動アップデートをお試しください",
"{version} is available. Get more information on how to update." : "{version} が利用可能です。アップデート方法について詳細情報を確認してください。",
+ "Update notifications" : "アップデート通知",
"Channel updated" : "チャンネルが更新されました",
"The update server could not be reached since %d days to check for new updates." : "%d日以降、新しい更新をチェックする更新サーバーにアクセスできませんでした。",
"Please check the Nextcloud and server log files for errors." : "Nextcloudとサーバーログファイルでエラーがないか確認してください。",
diff --git a/apps/updatenotification/l10n/ka_GE.js b/apps/updatenotification/l10n/ka_GE.js
index 3010f92d5f0..aea93a24b51 100644
--- a/apps/updatenotification/l10n/ka_GE.js
+++ b/apps/updatenotification/l10n/ka_GE.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "განახლების შეტყობინებები",
"Could not start updater, please try the manual update" : "განმანახმებლის გაშვება ვერ მოხერხდა, გთხოვთ სცადოთ განახლება მექანიკურ რეჯიმში",
"{version} is available. Get more information on how to update." : "{version} ხელმისაწვდომია. მოიპოვეთ მეტი ინფორმაცია იმაზე, თუ როგორ განაახლოთ.",
+ "Update notifications" : "განახლების შეტყობინებები",
"Channel updated" : "განახლების შეჩერება",
"The update server could not be reached since %d days to check for new updates." : "განახლების სერვერი გალახლებების შესამოწმებლად %d დღე მიუწვდომელია.",
"Please check the Nextcloud and server log files for errors." : "შეცდომებისთვის გთხოვთ შეამოწმოთ Nextcloud-ი სერვერის ლოგები.",
diff --git a/apps/updatenotification/l10n/ka_GE.json b/apps/updatenotification/l10n/ka_GE.json
index 7489f6959f3..49f3d75420e 100644
--- a/apps/updatenotification/l10n/ka_GE.json
+++ b/apps/updatenotification/l10n/ka_GE.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "განახლების შეტყობინებები",
"Could not start updater, please try the manual update" : "განმანახმებლის გაშვება ვერ მოხერხდა, გთხოვთ სცადოთ განახლება მექანიკურ რეჯიმში",
"{version} is available. Get more information on how to update." : "{version} ხელმისაწვდომია. მოიპოვეთ მეტი ინფორმაცია იმაზე, თუ როგორ განაახლოთ.",
+ "Update notifications" : "განახლების შეტყობინებები",
"Channel updated" : "განახლების შეჩერება",
"The update server could not be reached since %d days to check for new updates." : "განახლების სერვერი გალახლებების შესამოწმებლად %d დღე მიუწვდომელია.",
"Please check the Nextcloud and server log files for errors." : "შეცდომებისთვის გთხოვთ შეამოწმოთ Nextcloud-ი სერვერის ლოგები.",
diff --git a/apps/updatenotification/l10n/ko.js b/apps/updatenotification/l10n/ko.js
index 8b696f289fc..729fc75ca08 100644
--- a/apps/updatenotification/l10n/ko.js
+++ b/apps/updatenotification/l10n/ko.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "업데이트 알림",
"Could not start updater, please try the manual update" : "업데이트를 시작할 수 없습니다. 수동 업데이트를 시도하십시오.",
"{version} is available. Get more information on how to update." : "{version}을(를) 사용할 수 있습니다. 업데이트하는 방법에 대해서 알아보십시오.",
+ "Update notifications" : "업데이트 알림",
"Channel updated" : "채널 업데이트됨",
"The update server could not be reached since %d days to check for new updates." : "업데이트 서버에 %d일 동안 접근할 수 없어서 새 업데이트를 확인할 수 없습니다.",
"Please check the Nextcloud and server log files for errors." : "Nextcloud 및 서버 로그에서 오류 정보를 확인하십시오.",
diff --git a/apps/updatenotification/l10n/ko.json b/apps/updatenotification/l10n/ko.json
index 759305f9c10..cb1273375dd 100644
--- a/apps/updatenotification/l10n/ko.json
+++ b/apps/updatenotification/l10n/ko.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "업데이트 알림",
"Could not start updater, please try the manual update" : "업데이트를 시작할 수 없습니다. 수동 업데이트를 시도하십시오.",
"{version} is available. Get more information on how to update." : "{version}을(를) 사용할 수 있습니다. 업데이트하는 방법에 대해서 알아보십시오.",
+ "Update notifications" : "업데이트 알림",
"Channel updated" : "채널 업데이트됨",
"The update server could not be reached since %d days to check for new updates." : "업데이트 서버에 %d일 동안 접근할 수 없어서 새 업데이트를 확인할 수 없습니다.",
"Please check the Nextcloud and server log files for errors." : "Nextcloud 및 서버 로그에서 오류 정보를 확인하십시오.",
diff --git a/apps/updatenotification/l10n/lt_LT.js b/apps/updatenotification/l10n/lt_LT.js
index dd29887f985..026a47bcb92 100644
--- a/apps/updatenotification/l10n/lt_LT.js
+++ b/apps/updatenotification/l10n/lt_LT.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Atnaujinimų pranešimai",
"Could not start updater, please try the manual update" : "Nepavyko paleisti atnaujinimo programos, prašome bandyti atnaujinimą rankiniu būdu",
"{version} is available. Get more information on how to update." : "Yra prieinama {version}. Gaukite daugiau informacijos apie tai kaip atnaujinti.",
+ "Update notifications" : "Atnaujinimų pranešimai",
"Channel updated" : "Kanalas atnaujintas",
"The update server could not be reached since %d days to check for new updates." : " Atnaujinimo serveris nepasiekiamas %d dienas.",
"Please check the Nextcloud and server log files for errors." : "Prašome patikrinti Nextcloud ir serverio žurnalų įrašus apie galimas klaidas.",
diff --git a/apps/updatenotification/l10n/lt_LT.json b/apps/updatenotification/l10n/lt_LT.json
index e652fe57b91..45235fe7ad1 100644
--- a/apps/updatenotification/l10n/lt_LT.json
+++ b/apps/updatenotification/l10n/lt_LT.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Atnaujinimų pranešimai",
"Could not start updater, please try the manual update" : "Nepavyko paleisti atnaujinimo programos, prašome bandyti atnaujinimą rankiniu būdu",
"{version} is available. Get more information on how to update." : "Yra prieinama {version}. Gaukite daugiau informacijos apie tai kaip atnaujinti.",
+ "Update notifications" : "Atnaujinimų pranešimai",
"Channel updated" : "Kanalas atnaujintas",
"The update server could not be reached since %d days to check for new updates." : " Atnaujinimo serveris nepasiekiamas %d dienas.",
"Please check the Nextcloud and server log files for errors." : "Prašome patikrinti Nextcloud ir serverio žurnalų įrašus apie galimas klaidas.",
diff --git a/apps/updatenotification/l10n/lv.js b/apps/updatenotification/l10n/lv.js
index 7c9ece59d92..be40cff62a6 100644
--- a/apps/updatenotification/l10n/lv.js
+++ b/apps/updatenotification/l10n/lv.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Atjauninājumu paziņojumi",
"Could not start updater, please try the manual update" : "Nevar sākt atjauninājumu, lūdzu, mēģiniet manuālo atjauninājumu",
"{version} is available. Get more information on how to update." : "{version} ir pieejama. Iegūstiet vairāk informācijas par to, kā atjaunināt.",
+ "Update notifications" : "Atjauninājumu paziņojumi",
"Channel updated" : "Kanāls atjaunots",
"Update to %1$s is available." : "Atjauninājums uz %1$s ir pieejams.",
"Update for %1$s to version %2$s is available." : "Atjauninājums %1$s uz versiju %2$s ir pieejams.",
diff --git a/apps/updatenotification/l10n/lv.json b/apps/updatenotification/l10n/lv.json
index 58cd3f39feb..79e7df4f5cf 100644
--- a/apps/updatenotification/l10n/lv.json
+++ b/apps/updatenotification/l10n/lv.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Atjauninājumu paziņojumi",
"Could not start updater, please try the manual update" : "Nevar sākt atjauninājumu, lūdzu, mēģiniet manuālo atjauninājumu",
"{version} is available. Get more information on how to update." : "{version} ir pieejama. Iegūstiet vairāk informācijas par to, kā atjaunināt.",
+ "Update notifications" : "Atjauninājumu paziņojumi",
"Channel updated" : "Kanāls atjaunots",
"Update to %1$s is available." : "Atjauninājums uz %1$s ir pieejams.",
"Update for %1$s to version %2$s is available." : "Atjauninājums %1$s uz versiju %2$s ir pieejams.",
diff --git a/apps/updatenotification/l10n/nb.js b/apps/updatenotification/l10n/nb.js
index a9f9249b0c6..096b06833e8 100644
--- a/apps/updatenotification/l10n/nb.js
+++ b/apps/updatenotification/l10n/nb.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Oppdateringsvarsel",
"Could not start updater, please try the manual update" : "Kunne ikke starte oppdateringen, prøv å oppdatere manuelt",
"{version} is available. Get more information on how to update." : "{version} er tilgjengelig. Få mer informasjon om å oppdatere.",
+ "Update notifications" : "Oppdateringsvarsel",
"Channel updated" : "Kanal oppdatert",
"The update server could not be reached since %d days to check for new updates." : "Har ikke oppnådd kontakt med oppdateringstjeneren på %d dager for å se etter nye oppdateringer.",
"Please check the Nextcloud and server log files for errors." : "Se i Nextcloud- og tjener-loggen etter feil.",
diff --git a/apps/updatenotification/l10n/nb.json b/apps/updatenotification/l10n/nb.json
index fe4574dd4b2..1182bc49958 100644
--- a/apps/updatenotification/l10n/nb.json
+++ b/apps/updatenotification/l10n/nb.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Oppdateringsvarsel",
"Could not start updater, please try the manual update" : "Kunne ikke starte oppdateringen, prøv å oppdatere manuelt",
"{version} is available. Get more information on how to update." : "{version} er tilgjengelig. Få mer informasjon om å oppdatere.",
+ "Update notifications" : "Oppdateringsvarsel",
"Channel updated" : "Kanal oppdatert",
"The update server could not be reached since %d days to check for new updates." : "Har ikke oppnådd kontakt med oppdateringstjeneren på %d dager for å se etter nye oppdateringer.",
"Please check the Nextcloud and server log files for errors." : "Se i Nextcloud- og tjener-loggen etter feil.",
diff --git a/apps/updatenotification/l10n/nl.js b/apps/updatenotification/l10n/nl.js
index 6337f5cb5bf..89e6ecf2f14 100644
--- a/apps/updatenotification/l10n/nl.js
+++ b/apps/updatenotification/l10n/nl.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Bijwerken meldingen",
"Could not start updater, please try the manual update" : "Kon de updater niet starten, probeer alsjeblieft de handmatige update",
"{version} is available. Get more information on how to update." : "{version} is beschikbaar. Meer informatie over het bijwerken.",
+ "Update notifications" : "Bijwerken meldingen",
"Channel updated" : "Kanaal bijgewerkt",
"The update server could not be reached since %d days to check for new updates." : "De updateserver kon sinds %d dagen niet meer worden bereikt om op updates te controleren.",
"Please check the Nextcloud and server log files for errors." : "Controleer de Nextcloud en server logbestanden op fouten.",
diff --git a/apps/updatenotification/l10n/nl.json b/apps/updatenotification/l10n/nl.json
index 176e3ff28c5..44e63a8c181 100644
--- a/apps/updatenotification/l10n/nl.json
+++ b/apps/updatenotification/l10n/nl.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Bijwerken meldingen",
"Could not start updater, please try the manual update" : "Kon de updater niet starten, probeer alsjeblieft de handmatige update",
"{version} is available. Get more information on how to update." : "{version} is beschikbaar. Meer informatie over het bijwerken.",
+ "Update notifications" : "Bijwerken meldingen",
"Channel updated" : "Kanaal bijgewerkt",
"The update server could not be reached since %d days to check for new updates." : "De updateserver kon sinds %d dagen niet meer worden bereikt om op updates te controleren.",
"Please check the Nextcloud and server log files for errors." : "Controleer de Nextcloud en server logbestanden op fouten.",
diff --git a/apps/updatenotification/l10n/pl.js b/apps/updatenotification/l10n/pl.js
index 34f095b6540..0b9c40c88d3 100644
--- a/apps/updatenotification/l10n/pl.js
+++ b/apps/updatenotification/l10n/pl.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Powiadomienia o aktualizacji",
"Could not start updater, please try the manual update" : "Nie można uruchomić aktualizacji, spróbuj z aktualizować ręcznie",
"{version} is available. Get more information on how to update." : "Wersja {version} jest dostępna. Dowiedz się jak zaktualizować.",
+ "Update notifications" : "Powiadomienia o aktualizacji",
"Channel updated" : "Kanał zaktualizowany",
"The update server could not be reached since %d days to check for new updates." : "Połączenie z serwerem z aktualizacjami w celu sprawdzenia nowych aktualizacji nie powiodło się od %d dni.",
"Please check the Nextcloud and server log files for errors." : "Proszę sprawdzić pliki z logami Nextcloud i serwera w celu znalezienia błędów.",
diff --git a/apps/updatenotification/l10n/pl.json b/apps/updatenotification/l10n/pl.json
index d90d6afdcd6..b41ad102495 100644
--- a/apps/updatenotification/l10n/pl.json
+++ b/apps/updatenotification/l10n/pl.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Powiadomienia o aktualizacji",
"Could not start updater, please try the manual update" : "Nie można uruchomić aktualizacji, spróbuj z aktualizować ręcznie",
"{version} is available. Get more information on how to update." : "Wersja {version} jest dostępna. Dowiedz się jak zaktualizować.",
+ "Update notifications" : "Powiadomienia o aktualizacji",
"Channel updated" : "Kanał zaktualizowany",
"The update server could not be reached since %d days to check for new updates." : "Połączenie z serwerem z aktualizacjami w celu sprawdzenia nowych aktualizacji nie powiodło się od %d dni.",
"Please check the Nextcloud and server log files for errors." : "Proszę sprawdzić pliki z logami Nextcloud i serwera w celu znalezienia błędów.",
diff --git a/apps/updatenotification/l10n/pt_BR.js b/apps/updatenotification/l10n/pt_BR.js
index 4e5f3051faa..29e7706ca74 100644
--- a/apps/updatenotification/l10n/pt_BR.js
+++ b/apps/updatenotification/l10n/pt_BR.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Notificações de atualização",
"Could not start updater, please try the manual update" : "Não foi possível iniciar o atualizador, tente a atualização manual",
"{version} is available. Get more information on how to update." : "{version} está disponível. Obtenha mais informações sobre como atualizar.",
+ "Update notifications" : "Notificações de atualização",
"Channel updated" : "Canal atualizado",
"The update server could not be reached since %d days to check for new updates." : "O servidor de atualização não foi encontrado já há %d dias para verificar por novas atualizações.",
"Please check the Nextcloud and server log files for errors." : "Verifique se há erros nos arquivos de log do servidor e do Nextcloud ",
diff --git a/apps/updatenotification/l10n/pt_BR.json b/apps/updatenotification/l10n/pt_BR.json
index c045786cc7b..a0a73e0a7f6 100644
--- a/apps/updatenotification/l10n/pt_BR.json
+++ b/apps/updatenotification/l10n/pt_BR.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Notificações de atualização",
"Could not start updater, please try the manual update" : "Não foi possível iniciar o atualizador, tente a atualização manual",
"{version} is available. Get more information on how to update." : "{version} está disponível. Obtenha mais informações sobre como atualizar.",
+ "Update notifications" : "Notificações de atualização",
"Channel updated" : "Canal atualizado",
"The update server could not be reached since %d days to check for new updates." : "O servidor de atualização não foi encontrado já há %d dias para verificar por novas atualizações.",
"Please check the Nextcloud and server log files for errors." : "Verifique se há erros nos arquivos de log do servidor e do Nextcloud ",
diff --git a/apps/updatenotification/l10n/ru.js b/apps/updatenotification/l10n/ru.js
index 39eab95a31a..7f5a0833cdc 100644
--- a/apps/updatenotification/l10n/ru.js
+++ b/apps/updatenotification/l10n/ru.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Уведомления об обновлениях",
"Could not start updater, please try the manual update" : "Не удалось обновить. Пожалуйста, выполните обновление вручную.",
"{version} is available. Get more information on how to update." : "Доступна версия {version}. Получить дополнительную информацию о порядке обновления.",
+ "Update notifications" : "Уведомления об обновлениях",
"Channel updated" : "Канал обновлен.",
"The update server could not be reached since %d days to check for new updates." : "Сервер обновлений недоступен для проверки наличия обновлений дней: %d.",
"Please check the Nextcloud and server log files for errors." : "Проверьте наличие ошибок в файлах журналов Nextcloud и сервера.",
diff --git a/apps/updatenotification/l10n/ru.json b/apps/updatenotification/l10n/ru.json
index 182f7967b0b..cb11fc0f0d0 100644
--- a/apps/updatenotification/l10n/ru.json
+++ b/apps/updatenotification/l10n/ru.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Уведомления об обновлениях",
"Could not start updater, please try the manual update" : "Не удалось обновить. Пожалуйста, выполните обновление вручную.",
"{version} is available. Get more information on how to update." : "Доступна версия {version}. Получить дополнительную информацию о порядке обновления.",
+ "Update notifications" : "Уведомления об обновлениях",
"Channel updated" : "Канал обновлен.",
"The update server could not be reached since %d days to check for new updates." : "Сервер обновлений недоступен для проверки наличия обновлений дней: %d.",
"Please check the Nextcloud and server log files for errors." : "Проверьте наличие ошибок в файлах журналов Nextcloud и сервера.",
diff --git a/apps/updatenotification/l10n/sk.js b/apps/updatenotification/l10n/sk.js
index 54b68f19418..aaa96cebf0c 100644
--- a/apps/updatenotification/l10n/sk.js
+++ b/apps/updatenotification/l10n/sk.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Upozornenia aktualizácií",
"Could not start updater, please try the manual update" : "Nebolo možné spustiť aktualizátor, skúste prosím manuálnu aktualizáciu",
"{version} is available. Get more information on how to update." : "{version} je dostupná. Získajte viac informácií o postupe aktualizácie.",
+ "Update notifications" : "Upozornenia aktualizácií",
"Channel updated" : "Kanál bol aktualizovaný",
"The update server could not be reached since %d days to check for new updates." : "Aktualizačný server je nedostupný %d dní pre kontrolu aktualizácií.",
"Please check the Nextcloud and server log files for errors." : "Chyby skontrolujte prosím v logoch Nextcloud a webového servera",
diff --git a/apps/updatenotification/l10n/sk.json b/apps/updatenotification/l10n/sk.json
index f11393fd542..67391c3c882 100644
--- a/apps/updatenotification/l10n/sk.json
+++ b/apps/updatenotification/l10n/sk.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Upozornenia aktualizácií",
"Could not start updater, please try the manual update" : "Nebolo možné spustiť aktualizátor, skúste prosím manuálnu aktualizáciu",
"{version} is available. Get more information on how to update." : "{version} je dostupná. Získajte viac informácií o postupe aktualizácie.",
+ "Update notifications" : "Upozornenia aktualizácií",
"Channel updated" : "Kanál bol aktualizovaný",
"The update server could not be reached since %d days to check for new updates." : "Aktualizačný server je nedostupný %d dní pre kontrolu aktualizácií.",
"Please check the Nextcloud and server log files for errors." : "Chyby skontrolujte prosím v logoch Nextcloud a webového servera",
diff --git a/apps/updatenotification/l10n/sq.js b/apps/updatenotification/l10n/sq.js
index baa98223389..a739f232459 100644
--- a/apps/updatenotification/l10n/sq.js
+++ b/apps/updatenotification/l10n/sq.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Njoftime përditësimesh",
"Could not start updater, please try the manual update" : "Nuk mundi të filloj përditësuesi, ju lutemi të provoni përditësimin manual",
"{version} is available. Get more information on how to update." : "Është gati {version}. Merrni më tepër informacion se si ta përditësoni.",
+ "Update notifications" : "Njoftime përditësimesh",
"Channel updated" : "Kanali u përditësua",
"The update server could not be reached since %d days to check for new updates." : "Përditësimi i serverit nuk mund të arrihej deri sa %dtë kontrollohen për përditësime të reja.",
"Please check the Nextcloud and server log files for errors." : "Ju lutemi kontrolloni dosjet e Nextcloud dhe te server log-ut per gabimet",
diff --git a/apps/updatenotification/l10n/sq.json b/apps/updatenotification/l10n/sq.json
index 80dc656c35f..04903e7d794 100644
--- a/apps/updatenotification/l10n/sq.json
+++ b/apps/updatenotification/l10n/sq.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Njoftime përditësimesh",
"Could not start updater, please try the manual update" : "Nuk mundi të filloj përditësuesi, ju lutemi të provoni përditësimin manual",
"{version} is available. Get more information on how to update." : "Është gati {version}. Merrni më tepër informacion se si ta përditësoni.",
+ "Update notifications" : "Njoftime përditësimesh",
"Channel updated" : "Kanali u përditësua",
"The update server could not be reached since %d days to check for new updates." : "Përditësimi i serverit nuk mund të arrihej deri sa %dtë kontrollohen për përditësime të reja.",
"Please check the Nextcloud and server log files for errors." : "Ju lutemi kontrolloni dosjet e Nextcloud dhe te server log-ut per gabimet",
diff --git a/apps/updatenotification/l10n/sr.js b/apps/updatenotification/l10n/sr.js
index e47b86840bb..55604fd94b9 100644
--- a/apps/updatenotification/l10n/sr.js
+++ b/apps/updatenotification/l10n/sr.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Обавештења о ажурирању",
"Could not start updater, please try the manual update" : "Не могу да покренем програм за ажурирање, покушајте ручно ажурирање",
"{version} is available. Get more information on how to update." : "Верзија {version} је доступна. Сазнајте како да ажурирате.",
+ "Update notifications" : "Обавештења о ажурирању",
"Channel updated" : "Канал ажуриран",
"The update server could not be reached since %d days to check for new updates." : "Сервер за ажурирања није доступан пошто је прошло %d дана од последње провере ажурирања.",
"Please check the Nextcloud and server log files for errors." : "Проверите логове од сервера и од Некстклауда за грешке.",
diff --git a/apps/updatenotification/l10n/sr.json b/apps/updatenotification/l10n/sr.json
index 70d2143eec5..68f4ef78df3 100644
--- a/apps/updatenotification/l10n/sr.json
+++ b/apps/updatenotification/l10n/sr.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Обавештења о ажурирању",
"Could not start updater, please try the manual update" : "Не могу да покренем програм за ажурирање, покушајте ручно ажурирање",
"{version} is available. Get more information on how to update." : "Верзија {version} је доступна. Сазнајте како да ажурирате.",
+ "Update notifications" : "Обавештења о ажурирању",
"Channel updated" : "Канал ажуриран",
"The update server could not be reached since %d days to check for new updates." : "Сервер за ажурирања није доступан пошто је прошло %d дана од последње провере ажурирања.",
"Please check the Nextcloud and server log files for errors." : "Проверите логове од сервера и од Некстклауда за грешке.",
diff --git a/apps/updatenotification/l10n/sv.js b/apps/updatenotification/l10n/sv.js
index eefcbfcc687..a360615d947 100644
--- a/apps/updatenotification/l10n/sv.js
+++ b/apps/updatenotification/l10n/sv.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Uppdateringsnotifikationer",
"Could not start updater, please try the manual update" : "Kunde inte starta uppdateraren, vänligen försök uppdatera manuellt",
"{version} is available. Get more information on how to update." : "{version} är tillgänglig. Få mer information om hur du uppdaterar.",
+ "Update notifications" : "Uppdateringsnotifikationer",
"Channel updated" : "Uppdateringskanal uppdaterad",
"The update server could not be reached since %d days to check for new updates." : "Uppdateringsservern kunde inte nås. Senaste kontakt för %d dagar sedan.",
"Please check the Nextcloud and server log files for errors." : "Vänligen kontrollera ditt moln och dess serverloggar för felmeddelanden.",
diff --git a/apps/updatenotification/l10n/sv.json b/apps/updatenotification/l10n/sv.json
index da091ee1787..62451abf15e 100644
--- a/apps/updatenotification/l10n/sv.json
+++ b/apps/updatenotification/l10n/sv.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Uppdateringsnotifikationer",
"Could not start updater, please try the manual update" : "Kunde inte starta uppdateraren, vänligen försök uppdatera manuellt",
"{version} is available. Get more information on how to update." : "{version} är tillgänglig. Få mer information om hur du uppdaterar.",
+ "Update notifications" : "Uppdateringsnotifikationer",
"Channel updated" : "Uppdateringskanal uppdaterad",
"The update server could not be reached since %d days to check for new updates." : "Uppdateringsservern kunde inte nås. Senaste kontakt för %d dagar sedan.",
"Please check the Nextcloud and server log files for errors." : "Vänligen kontrollera ditt moln och dess serverloggar för felmeddelanden.",
diff --git a/apps/updatenotification/l10n/tr.js b/apps/updatenotification/l10n/tr.js
index 0cc86d74fae..0cce3065913 100644
--- a/apps/updatenotification/l10n/tr.js
+++ b/apps/updatenotification/l10n/tr.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "Güncelleme bildirimleri",
"Could not start updater, please try the manual update" : "Güncelleyici başlatılamadı lütfen el ile güncellemeyi deneyin",
"{version} is available. Get more information on how to update." : "{version} sürümü yayınlanmış. Güncelleme hakkında ayrıntılı bilgi alın.",
+ "Update notifications" : "Güncelleme bildirimleri",
"Channel updated" : "Kanal güncellendi",
"The update server could not be reached since %d days to check for new updates." : "%d gündür güncellemeleri denetlemek için güncelleme sunucusuna bağlanılamadı.",
"Please check the Nextcloud and server log files for errors." : "Lütfen sorunu bulmak için Nextcloud ve sunucu günlük dosyalarına bakın.",
diff --git a/apps/updatenotification/l10n/tr.json b/apps/updatenotification/l10n/tr.json
index d6f4661bbaf..ccdde196b30 100644
--- a/apps/updatenotification/l10n/tr.json
+++ b/apps/updatenotification/l10n/tr.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "Güncelleme bildirimleri",
"Could not start updater, please try the manual update" : "Güncelleyici başlatılamadı lütfen el ile güncellemeyi deneyin",
"{version} is available. Get more information on how to update." : "{version} sürümü yayınlanmış. Güncelleme hakkında ayrıntılı bilgi alın.",
+ "Update notifications" : "Güncelleme bildirimleri",
"Channel updated" : "Kanal güncellendi",
"The update server could not be reached since %d days to check for new updates." : "%d gündür güncellemeleri denetlemek için güncelleme sunucusuna bağlanılamadı.",
"Please check the Nextcloud and server log files for errors." : "Lütfen sorunu bulmak için Nextcloud ve sunucu günlük dosyalarına bakın.",
diff --git a/apps/updatenotification/l10n/zh_CN.js b/apps/updatenotification/l10n/zh_CN.js
index e0762940661..ab2bd4b41d0 100644
--- a/apps/updatenotification/l10n/zh_CN.js
+++ b/apps/updatenotification/l10n/zh_CN.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "升级通知",
"Could not start updater, please try the manual update" : "无法启动自动更新,请尝试手动更新",
"{version} is available. Get more information on how to update." : "新版本 {version} 已可以使用。获取更多升级相关信息。",
+ "Update notifications" : "升级通知",
"Channel updated" : "更新通道",
"The update server could not be reached since %d days to check for new updates." : "更新服务器自 1%d 天前起无法访问以检查更新。",
"Please check the Nextcloud and server log files for errors." : "请检查 nextcloud 和服务器的日志中的错误。",
diff --git a/apps/updatenotification/l10n/zh_CN.json b/apps/updatenotification/l10n/zh_CN.json
index b539187d1ee..7ee71f79ad0 100644
--- a/apps/updatenotification/l10n/zh_CN.json
+++ b/apps/updatenotification/l10n/zh_CN.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "升级通知",
"Could not start updater, please try the manual update" : "无法启动自动更新,请尝试手动更新",
"{version} is available. Get more information on how to update." : "新版本 {version} 已可以使用。获取更多升级相关信息。",
+ "Update notifications" : "升级通知",
"Channel updated" : "更新通道",
"The update server could not be reached since %d days to check for new updates." : "更新服务器自 1%d 天前起无法访问以检查更新。",
"Please check the Nextcloud and server log files for errors." : "请检查 nextcloud 和服务器的日志中的错误。",
diff --git a/apps/updatenotification/l10n/zh_TW.js b/apps/updatenotification/l10n/zh_TW.js
index e0e73802e22..d7fcea446e2 100644
--- a/apps/updatenotification/l10n/zh_TW.js
+++ b/apps/updatenotification/l10n/zh_TW.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"updatenotification",
{
- "Update notifications" : "更新通知",
"Could not start updater, please try the manual update" : "無法啟動更新程式,請嘗試手動更新",
"{version} is available. Get more information on how to update." : "{version} 釋出了,可以更新",
+ "Update notifications" : "更新通知",
"Channel updated" : "頻道已更新",
"The update server could not be reached since %d days to check for new updates." : "更新伺服器在%d天前已經無法連線檢查更新",
"Please check the Nextcloud and server log files for errors." : "請確認伺服器log檔以查看錯誤。",
diff --git a/apps/updatenotification/l10n/zh_TW.json b/apps/updatenotification/l10n/zh_TW.json
index c0a0a8ff8c7..e60e8ace77f 100644
--- a/apps/updatenotification/l10n/zh_TW.json
+++ b/apps/updatenotification/l10n/zh_TW.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Update notifications" : "更新通知",
"Could not start updater, please try the manual update" : "無法啟動更新程式,請嘗試手動更新",
"{version} is available. Get more information on how to update." : "{version} 釋出了,可以更新",
+ "Update notifications" : "更新通知",
"Channel updated" : "頻道已更新",
"The update server could not be reached since %d days to check for new updates." : "更新伺服器在%d天前已經無法連線檢查更新",
"Please check the Nextcloud and server log files for errors." : "請確認伺服器log檔以查看錯誤。",
diff --git a/apps/updatenotification/lib/AppInfo/Application.php b/apps/updatenotification/lib/AppInfo/Application.php
index 5eba176f312..d79f14764de 100644
--- a/apps/updatenotification/lib/AppInfo/Application.php
+++ b/apps/updatenotification/lib/AppInfo/Application.php
@@ -1,56 +1,84 @@
<?php
+declare(strict_types=1);
/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @copyright Copyright (c) 2018, Joas Schilling <coding@schilljs.com>
*
- * @author Lukas Reschke <lukas@statuscode.ch>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
+ * @author Joas Schilling <coding@schilljs.com>
*
- * @license AGPL-3.0
+ * @license GNU AGPL version 3 or any later version
*
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
+ * 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
+ * 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, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
+ * 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 OCA\UpdateNotification\AppInfo;
-use OC\AppFramework\Utility\TimeFactory;
-use OCA\UpdateNotification\Controller\AdminController;
+use OCA\UpdateNotification\Notification\Notifier;
use OCA\UpdateNotification\UpdateChecker;
use OCP\AppFramework\App;
-use OCP\AppFramework\IAppContainer;
+use OCP\AppFramework\QueryException;
+use OCP\IUser;
+use OCP\Util;
class Application extends App {
- public function __construct (array $urlParams = array()) {
- parent::__construct('updatenotification', $urlParams);
- $container = $this->getContainer();
-
- $container->registerService('AdminController', function(IAppContainer $c) {
- $updater = new \OC\Updater\VersionCheck(
- \OC::$server->getHTTPClientService(),
- \OC::$server->getConfig()
- );
- return new AdminController(
- $c->query('AppName'),
- $c->query('Request'),
- $c->getServer()->getJobList(),
- $c->getServer()->getSecureRandom(),
- $c->getServer()->getConfig(),
- new TimeFactory(),
- $c->getServer()->getL10N($c->query('AppName')),
- new UpdateChecker($updater),
- $c->getServer()->getDateTimeFormatter()
- );
- });
+ public function __construct() {
+ parent::__construct('updatenotification', []);
}
+ public function register() {
+ $server = $this->getContainer()->getServer();
+
+ if ($server->getConfig()->getSystemValue('updatechecker', true) !== true) {
+ // Updater check is disabled
+ return;
+ }
+
+ $user = $server->getUserSession()->getUser();
+ if (!$user instanceof IUser) {
+ // Nothing to do for guests
+ return;
+ }
+
+ if ($server->getAppManager()->isEnabledForUser('notifications')) {
+ // Notifications app is available, so we register.
+ // Since notifications also work for non-admins we don't check this here.
+ $this->registerNotifier();
+ } else if ($server->getGroupManager()->isAdmin($user->getUID())) {
+ try {
+ $updateChecker = $this->getContainer()->query(UpdateChecker::class);
+ } catch (QueryException $e) {
+ $server->getLogger()->logException($e);
+ return;
+ }
+
+ if ($updateChecker->getUpdateState() !== []) {
+ Util::addScript('updatenotification', 'notification');
+ \OC_Hook::connect('\OCP\Config', 'js', $updateChecker, 'populateJavaScriptVariables');
+ }
+ }
+ }
+
+ public function registerNotifier() {
+ $notificationsManager = $this->getContainer()->getServer()->getNotificationManager();
+ $notificationsManager->registerNotifier(function() {
+ return $this->getContainer()->query(Notifier::class);
+ }, function() {
+ $l = $this->getContainer()->getServer()->getL10N('updatenotification');
+ return [
+ 'id' => 'updatenotification',
+ 'name' => $l->t('Update notifications'),
+ ];
+ });
+ }
}
diff --git a/apps/updatenotification/lib/Controller/AdminController.php b/apps/updatenotification/lib/Controller/AdminController.php
index 9d2a5074a4a..57f89969db4 100644
--- a/apps/updatenotification/lib/Controller/AdminController.php
+++ b/apps/updatenotification/lib/Controller/AdminController.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -25,20 +26,18 @@
namespace OCA\UpdateNotification\Controller;
-use OCA\UpdateNotification\UpdateChecker;
+use OCA\UpdateNotification\ResetTokenBackgroundJob;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\DataResponse;
-use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\IJobList;
use OCP\IConfig;
-use OCP\IDateTimeFormatter;
use OCP\IL10N;
use OCP\IRequest;
use OCP\Security\ISecureRandom;
-use OCP\Settings\ISettings;
+use OCP\Util;
-class AdminController extends Controller implements ISettings {
+class AdminController extends Controller {
/** @var IJobList */
private $jobList;
/** @var ISecureRandom */
@@ -47,12 +46,8 @@ class AdminController extends Controller implements ISettings {
private $config;
/** @var ITimeFactory */
private $timeFactory;
- /** @var UpdateChecker */
- private $updateChecker;
/** @var IL10N */
private $l10n;
- /** @var IDateTimeFormatter */
- private $dateTimeFormatter;
/**
* @param string $appName
@@ -62,8 +57,6 @@ class AdminController extends Controller implements ISettings {
* @param IConfig $config
* @param ITimeFactory $timeFactory
* @param IL10N $l10n
- * @param UpdateChecker $updateChecker
- * @param IDateTimeFormatter $dateTimeFormatter
*/
public function __construct($appName,
IRequest $request,
@@ -71,70 +64,21 @@ class AdminController extends Controller implements ISettings {
ISecureRandom $secureRandom,
IConfig $config,
ITimeFactory $timeFactory,
- IL10N $l10n,
- UpdateChecker $updateChecker,
- IDateTimeFormatter $dateTimeFormatter) {
+ IL10N $l10n) {
parent::__construct($appName, $request);
$this->jobList = $jobList;
$this->secureRandom = $secureRandom;
$this->config = $config;
$this->timeFactory = $timeFactory;
$this->l10n = $l10n;
- $this->updateChecker = $updateChecker;
- $this->dateTimeFormatter = $dateTimeFormatter;
}
/**
- * @return TemplateResponse
- */
- public function displayPanel() {
- $lastUpdateCheckTimestamp = $this->config->getAppValue('core', 'lastupdatedat');
- $lastUpdateCheck = $this->dateTimeFormatter->formatDateTime($lastUpdateCheckTimestamp);
-
- $channels = [
- 'daily',
- 'beta',
- 'stable',
- 'production',
- ];
- $currentChannel = \OCP\Util::getChannel();
-
- // Remove the currently used channel from the channels list
- if(($key = array_search($currentChannel, $channels)) !== false) {
- unset($channels[$key]);
- }
- $updateState = $this->updateChecker->getUpdateState();
-
- $notifyGroups = json_decode($this->config->getAppValue('updatenotification', 'notify_groups', '["admin"]'), true);
-
- $defaultUpdateServerURL = 'https://updates.nextcloud.com/server/';
- $updateServerURL = $this->config->getSystemValue('updater.server.url', $defaultUpdateServerURL);
-
- $params = [
- 'isNewVersionAvailable' => !empty($updateState['updateAvailable']),
- 'isUpdateChecked' => $lastUpdateCheckTimestamp > 0,
- 'lastChecked' => $lastUpdateCheck,
- 'currentChannel' => $currentChannel,
- 'channels' => $channels,
- 'newVersionString' => (empty($updateState['updateVersion'])) ? '' : $updateState['updateVersion'],
- 'downloadLink' => (empty($updateState['downloadLink'])) ? '' : $updateState['downloadLink'],
- 'updaterEnabled' => (empty($updateState['updaterEnabled'])) ? false : $updateState['updaterEnabled'],
- 'isDefaultUpdateServerURL' => $updateServerURL === $defaultUpdateServerURL,
- 'updateServerURL' => $updateServerURL,
- 'notify_groups' => implode('|', $notifyGroups),
- ];
-
- return new TemplateResponse($this->appName, 'admin', $params, '');
- }
-
- /**
- * @UseSession
- *
* @param string $channel
* @return DataResponse
*/
- public function setChannel($channel) {
- \OCP\Util::setChannel($channel);
+ public function setChannel(string $channel): DataResponse {
+ Util::setChannel($channel);
$this->config->setAppValue('core', 'lastupdatedat', 0);
return new DataResponse(['status' => 'success', 'data' => ['message' => $this->l10n->t('Channel updated')]]);
}
@@ -142,9 +86,9 @@ class AdminController extends Controller implements ISettings {
/**
* @return DataResponse
*/
- public function createCredentials() {
+ public function createCredentials(): DataResponse {
// Create a new job and store the creation date
- $this->jobList->add('OCA\UpdateNotification\ResetTokenBackgroundJob');
+ $this->jobList->add(ResetTokenBackgroundJob::class);
$this->config->setAppValue('core', 'updater.secret.created', $this->timeFactory->getTime());
// Create a new token
@@ -153,29 +97,4 @@ class AdminController extends Controller implements ISettings {
return new DataResponse($newToken);
}
-
- /**
- * @return TemplateResponse returns the instance with all parameters set, ready to be rendered
- */
- public function getForm() {
- return $this->displayPanel();
- }
-
- /**
- * @return string the section ID, e.g. 'sharing'
- */
- public function getSection() {
- return 'server';
- }
-
- /**
- * @return int whether the form should be rather on the top or bottom of
- * the admin section. The forms are arranged in ascending order of the
- * priority values. It is required to return a value between 0 and 100.
- *
- * E.g.: 70
- */
- public function getPriority() {
- return 1;
- }
}
diff --git a/apps/updatenotification/lib/Notification/BackgroundJob.php b/apps/updatenotification/lib/Notification/BackgroundJob.php
index 3c0cac60cde..c010ccc89e5 100644
--- a/apps/updatenotification/lib/Notification/BackgroundJob.php
+++ b/apps/updatenotification/lib/Notification/BackgroundJob.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -90,7 +91,7 @@ class BackgroundJob extends TimedJob {
* Check for ownCloud update
*/
protected function checkCoreUpdate() {
- if (in_array($this->getChannel(), ['daily', 'git'], true)) {
+ if (\in_array($this->getChannel(), ['daily', 'git'], true)) {
// "These aren't the update channels you're looking for." - Ben Obi-Wan Kenobi
return;
}
@@ -102,10 +103,10 @@ class BackgroundJob extends TimedJob {
$errors = 1 + (int) $this->config->getAppValue('updatenotification', 'update_check_errors', 0);
$this->config->setAppValue('updatenotification', 'update_check_errors', $errors);
- if (in_array($errors, $this->connectionNotifications, true)) {
+ if (\in_array($errors, $this->connectionNotifications, true)) {
$this->sendErrorNotifications($errors);
}
- } else if (is_array($status)) {
+ } else if (\is_array($status)) {
$this->config->setAppValue('updatenotification', 'update_check_errors', 0);
$this->clearErrorNotifications();
@@ -178,26 +179,31 @@ class BackgroundJob extends TimedJob {
if ($lastNotification === $version) {
// We already notified about this update
return;
- } else if ($lastNotification !== false) {
+ }
+
+ if ($lastNotification !== false) {
// Delete old updates
$this->deleteOutdatedNotifications($app, $lastNotification);
}
-
$notification = $this->notificationManager->createNotification();
- $notification->setApp('updatenotification')
- ->setDateTime(new \DateTime())
- ->setObject($app, $version);
-
- if ($visibleVersion !== '') {
- $notification->setSubject('update_available', ['version' => $visibleVersion]);
- } else {
- $notification->setSubject('update_available');
- }
+ try {
+ $notification->setApp('updatenotification')
+ ->setDateTime(new \DateTime())
+ ->setObject($app, $version);
- foreach ($this->getUsersToNotify() as $uid) {
- $notification->setUser($uid);
- $this->notificationManager->notify($notification);
+ if ($visibleVersion !== '') {
+ $notification->setSubject('update_available', ['version' => $visibleVersion]);
+ } else {
+ $notification->setSubject('update_available');
+ }
+
+ foreach ($this->getUsersToNotify() as $uid) {
+ $notification->setUser($uid);
+ $this->notificationManager->notify($notification);
+ }
+ } catch (\InvalidArgumentException $e) {
+ return;
}
$this->config->setAppValue('updatenotification', $app, $version);
@@ -206,12 +212,12 @@ class BackgroundJob extends TimedJob {
/**
* @return string[]
*/
- protected function getUsersToNotify() {
+ protected function getUsersToNotify(): array {
if ($this->users !== null) {
return $this->users;
}
- $notifyGroups = json_decode($this->config->getAppValue('updatenotification', 'notify_groups', '["admin"]'), true);
+ $notifyGroups = (array) json_decode($this->config->getAppValue('updatenotification', 'notify_groups', '["admin"]'), true);
$this->users = [];
foreach ($notifyGroups as $group) {
$groupToNotify = $this->groupManager->get($group);
@@ -235,15 +241,19 @@ class BackgroundJob extends TimedJob {
*/
protected function deleteOutdatedNotifications($app, $version) {
$notification = $this->notificationManager->createNotification();
- $notification->setApp('updatenotification')
- ->setObject($app, $version);
+ try {
+ $notification->setApp('updatenotification')
+ ->setObject($app, $version);
+ } catch (\InvalidArgumentException $e) {
+ return;
+ }
$this->notificationManager->markProcessed($notification);
}
/**
* @return VersionCheck
*/
- protected function createVersionCheck() {
+ protected function createVersionCheck(): VersionCheck {
return new VersionCheck(
$this->client,
$this->config
@@ -253,7 +263,7 @@ class BackgroundJob extends TimedJob {
/**
* @return string
*/
- protected function getChannel() {
+ protected function getChannel(): string {
return \OC_Util::getChannel();
}
diff --git a/apps/updatenotification/lib/Notification/Notifier.php b/apps/updatenotification/lib/Notification/Notifier.php
index d18a2663702..c88937f0dff 100644
--- a/apps/updatenotification/lib/Notification/Notifier.php
+++ b/apps/updatenotification/lib/Notification/Notifier.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -33,6 +34,7 @@ use OCP\L10N\IFactory;
use OCP\Notification\IManager;
use OCP\Notification\INotification;
use OCP\Notification\INotifier;
+use OCP\Util;
class Notifier implements INotifier {
@@ -84,9 +86,9 @@ class Notifier implements INotifier {
* @throws \InvalidArgumentException When the notification was not prepared by a notifier
* @since 9.0.0
*/
- public function prepare(INotification $notification, $languageCode) {
+ public function prepare(INotification $notification, $languageCode): INotification {
if ($notification->getApp() !== 'updatenotification') {
- throw new \InvalidArgumentException();
+ throw new \InvalidArgumentException('Unknown app id');
}
$l = $this->l10NFactory->get('updatenotification', $languageCode);
@@ -94,7 +96,7 @@ class Notifier implements INotifier {
$errors = (int) $this->config->getAppValue('updatenotification', 'update_check_errors', 0);
if ($errors === 0) {
$this->notificationManager->markProcessed($notification);
- throw new \InvalidArgumentException();
+ throw new \InvalidArgumentException('Update checked worked again');
}
$notification->setParsedSubject($l->t('The update server could not be reached since %d days to check for new updates.', [$errors]))
@@ -145,14 +147,14 @@ class Notifier implements INotifier {
protected function updateAlreadyInstalledCheck(INotification $notification, $installedVersion) {
if (version_compare($notification->getObjectId(), $installedVersion, '<=')) {
$this->notificationManager->markProcessed($notification);
- throw new \InvalidArgumentException();
+ throw new \InvalidArgumentException('Update already installed');
}
}
/**
* @return bool
*/
- protected function isAdmin() {
+ protected function isAdmin(): bool {
$user = $this->userSession->getUser();
if ($user instanceof IUser) {
@@ -162,11 +164,11 @@ class Notifier implements INotifier {
return false;
}
- protected function getCoreVersions() {
- return implode('.', \OCP\Util::getVersion());
+ protected function getCoreVersions(): string {
+ return implode('.', Util::getVersion());
}
- protected function getAppVersions() {
+ protected function getAppVersions(): array {
return \OC_App::getAppVersions();
}
diff --git a/apps/updatenotification/lib/ResetTokenBackgroundJob.php b/apps/updatenotification/lib/ResetTokenBackgroundJob.php
index 93b5a750789..87cca466ec7 100644
--- a/apps/updatenotification/lib/ResetTokenBackgroundJob.php
+++ b/apps/updatenotification/lib/ResetTokenBackgroundJob.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -22,7 +23,6 @@
namespace OCA\UpdateNotification;
-use OC\AppFramework\Utility\TimeFactory;
use OC\BackgroundJob\TimedJob;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\IConfig;
@@ -40,28 +40,15 @@ class ResetTokenBackgroundJob extends TimedJob {
private $timeFactory;
/**
- * @param IConfig|null $config
- * @param ITimeFactory|null $timeFactory
+ * @param IConfig $config
+ * @param ITimeFactory $timeFactory
*/
- public function __construct(IConfig $config = null,
- ITimeFactory $timeFactory = null) {
+ public function __construct(IConfig $config,
+ ITimeFactory $timeFactory) {
// Run all 10 minutes
$this->setInterval(60 * 10);
-
- if ($config instanceof IConfig && $timeFactory instanceof ITimeFactory) {
- $this->config = $config;
- $this->timeFactory = $timeFactory;
- } else {
- $this->fixDIForJobs();
- }
- }
-
- /**
- * DI for jobs
- */
- private function fixDIForJobs() {
- $this->config = \OC::$server->getConfig();
- $this->timeFactory = new TimeFactory();
+ $this->config = $config;
+ $this->timeFactory = $timeFactory;
}
/**
diff --git a/apps/updatenotification/lib/Settings/Admin.php b/apps/updatenotification/lib/Settings/Admin.php
new file mode 100644
index 00000000000..7fb6cc99dea
--- /dev/null
+++ b/apps/updatenotification/lib/Settings/Admin.php
@@ -0,0 +1,117 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Joas Schilling <coding@schilljs.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ *
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * 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, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\UpdateNotification\Settings;
+
+use OCA\UpdateNotification\UpdateChecker;
+use OCP\AppFramework\Http\TemplateResponse;
+use OCP\IConfig;
+use OCP\IDateTimeFormatter;
+use OCP\Settings\ISettings;
+use OCP\Util;
+
+class Admin implements ISettings {
+ /** @var IConfig */
+ private $config;
+ /** @var UpdateChecker */
+ private $updateChecker;
+ /** @var IDateTimeFormatter */
+ private $dateTimeFormatter;
+
+ /**
+ * @param IConfig $config
+ * @param UpdateChecker $updateChecker
+ * @param IDateTimeFormatter $dateTimeFormatter
+ */
+ public function __construct(IConfig $config,
+ UpdateChecker $updateChecker,
+ IDateTimeFormatter $dateTimeFormatter) {
+ $this->config = $config;
+ $this->updateChecker = $updateChecker;
+ $this->dateTimeFormatter = $dateTimeFormatter;
+ }
+
+ /**
+ * @return TemplateResponse
+ */
+ public function getForm(): TemplateResponse {
+ $lastUpdateCheckTimestamp = $this->config->getAppValue('core', 'lastupdatedat');
+ $lastUpdateCheck = $this->dateTimeFormatter->formatDateTime($lastUpdateCheckTimestamp);
+
+ $channels = [
+ 'daily',
+ 'beta',
+ 'stable',
+ 'production',
+ ];
+ $currentChannel = Util::getChannel();
+
+ // Remove the currently used channel from the channels list
+ if(($key = array_search($currentChannel, $channels, true)) !== false) {
+ unset($channels[$key]);
+ }
+ $updateState = $this->updateChecker->getUpdateState();
+
+ $notifyGroups = json_decode($this->config->getAppValue('updatenotification', 'notify_groups', '["admin"]'), true);
+
+ $defaultUpdateServerURL = 'https://updates.nextcloud.com/server/';
+ $updateServerURL = $this->config->getSystemValue('updater.server.url', $defaultUpdateServerURL);
+
+ $params = [
+ 'isNewVersionAvailable' => !empty($updateState['updateAvailable']),
+ 'isUpdateChecked' => $lastUpdateCheckTimestamp > 0,
+ 'lastChecked' => $lastUpdateCheck,
+ 'currentChannel' => $currentChannel,
+ 'channels' => $channels,
+ 'newVersionString' => empty($updateState['updateVersion']) ? '' : $updateState['updateVersion'],
+ 'downloadLink' => empty($updateState['downloadLink']) ? '' : $updateState['downloadLink'],
+ 'updaterEnabled' => empty($updateState['updaterEnabled']) ? false : $updateState['updaterEnabled'],
+ 'isDefaultUpdateServerURL' => $updateServerURL === $defaultUpdateServerURL,
+ 'updateServerURL' => $updateServerURL,
+ 'notify_groups' => implode('|', $notifyGroups),
+ ];
+
+ return new TemplateResponse('updatenotification', 'admin', $params, '');
+ }
+
+ /**
+ * @return string the section ID, e.g. 'sharing'
+ */
+ public function getSection(): string {
+ return 'server';
+ }
+
+ /**
+ * @return int whether the form should be rather on the top or bottom of
+ * the admin section. The forms are arranged in ascending order of the
+ * priority values. It is required to return a value between 0 and 100.
+ *
+ * E.g.: 70
+ */
+ public function getPriority(): int {
+ return 1;
+ }
+}
diff --git a/apps/updatenotification/lib/UpdateChecker.php b/apps/updatenotification/lib/UpdateChecker.php
index ad76de56953..5f2712423d2 100644
--- a/apps/updatenotification/lib/UpdateChecker.php
+++ b/apps/updatenotification/lib/UpdateChecker.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -40,18 +41,18 @@ class UpdateChecker {
/**
* @return array
*/
- public function getUpdateState() {
+ public function getUpdateState(): array {
$data = $this->updater->check();
$result = [];
- if(isset($data['version']) && $data['version'] !== '' && $data['version'] !== []) {
+ if (isset($data['version']) && $data['version'] !== '' && $data['version'] !== []) {
$result['updateAvailable'] = true;
$result['updateVersion'] = $data['versionstring'];
$result['updaterEnabled'] = $data['autoupdater'] === '1';
- if(substr($data['web'], 0, 8) === 'https://') {
+ if (strpos($data['web'], 'https://') === 0) {
$result['updateLink'] = $data['web'];
}
- if(substr($data['url'], 0, 8) === 'https://') {
+ if (strpos($data['url'], 'https://') === 0) {
$result['downloadLink'] = $data['url'];
}
@@ -64,11 +65,11 @@ class UpdateChecker {
/**
* @param array $data
*/
- public function getJavaScript(array $data) {
+ public function populateJavaScriptVariables(array $data) {
$data['array']['oc_updateState'] = json_encode([
'updateAvailable' => true,
'updateVersion' => $this->getUpdateState()['updateVersion'],
- 'updateLink' => isset($this->getUpdateState()['updateLink']) ? $this->getUpdateState()['updateLink'] : '',
+ 'updateLink' => $this->getUpdateState()['updateLink'] ?? '',
]);
}
}
diff --git a/apps/updatenotification/templates/admin.php b/apps/updatenotification/templates/admin.php
index e09d19848e7..19bbec769d0 100644
--- a/apps/updatenotification/templates/admin.php
+++ b/apps/updatenotification/templates/admin.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
script('updatenotification', 'admin');
style('updatenotification', 'admin');
@@ -40,7 +41,7 @@
<?php if (!$isDefaultUpdateServerURL) { ?>
<br />
<em>
- <?php p($l->t("A non-default update server is in use to be checked for updates:")); ?>
+ <?php p($l->t('A non-default update server is in use to be checked for updates:')); ?>
<code><?php p($updateServerURL); ?></code>
</em>
<?php } ?>
@@ -65,10 +66,10 @@
<p id="oca_updatenotification_groups">
<?php p($l->t('Notify members of the following groups about available updates:')); ?>
<input name="oca_updatenotification_groups_list" type="hidden" id="oca_updatenotification_groups_list" value="<?php p($_['notify_groups']) ?>" style="width: 400px"><br />
- <em class="<?php if (!in_array($currentChannel, ['daily', 'git'])) p('hidden'); ?>">
+ <em class="<?php if (!\in_array($currentChannel, ['daily', 'git'], true)) { p('hidden'); } ?>">
<?php p($l->t('Only notification for app updates are available.')); ?>
- <?php if ($currentChannel === 'daily') p($l->t('The selected update channel makes dedicated notifications for the server obsolete.')); ?>
- <?php if ($currentChannel === 'git') p($l->t('The selected update channel does not support updates of the server.')); ?>
+ <?php if ($currentChannel === 'daily') { p($l->t('The selected update channel makes dedicated notifications for the server obsolete.')); } ?>
+ <?php if ($currentChannel === 'git') { p($l->t('The selected update channel does not support updates of the server.')); } ?>
</em>
</p>
</form>
diff --git a/apps/updatenotification/tests/Controller/AdminControllerTest.php b/apps/updatenotification/tests/Controller/AdminControllerTest.php
index 75588a1aec5..98b08e633bb 100644
--- a/apps/updatenotification/tests/Controller/AdminControllerTest.php
+++ b/apps/updatenotification/tests/Controller/AdminControllerTest.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -25,50 +26,41 @@
namespace OCA\UpdateNotification\Tests\Controller;
use OCA\UpdateNotification\Controller\AdminController;
-use OCA\UpdateNotification\UpdateChecker;
+use OCA\UpdateNotification\ResetTokenBackgroundJob;
use OCP\AppFramework\Http\DataResponse;
-use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\IJobList;
use OCP\IConfig;
-use OCP\IDateTimeFormatter;
use OCP\IL10N;
use OCP\IRequest;
use OCP\Security\ISecureRandom;
use Test\TestCase;
class AdminControllerTest extends TestCase {
- /** @var IRequest */
+ /** @var IRequest|\PHPUnit_Framework_MockObject_MockObject */
private $request;
- /** @var IJobList */
+ /** @var IJobList|\PHPUnit_Framework_MockObject_MockObject */
private $jobList;
- /** @var ISecureRandom */
+ /** @var ISecureRandom|\PHPUnit_Framework_MockObject_MockObject */
private $secureRandom;
- /** @var IConfig */
+ /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */
private $config;
/** @var AdminController */
private $adminController;
- /** @var ITimeFactory */
+ /** @var ITimeFactory|\PHPUnit_Framework_MockObject_MockObject */
private $timeFactory;
- /** @var IL10N */
+ /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */
private $l10n;
- /** @var UpdateChecker */
- private $updateChecker;
- /** @var IDateTimeFormatter */
- private $dateTimeFormatter;
public function setUp() {
parent::setUp();
- $this->request = $this->getMockBuilder('\\OCP\\IRequest')->getMock();
- $this->jobList = $this->getMockBuilder('\\OCP\\BackgroundJob\\IJobList')->getMock();
- $this->secureRandom = $this->getMockBuilder('\\OCP\\Security\\ISecureRandom')->getMock();
- $this->config = $this->getMockBuilder('\\OCP\\IConfig')->getMock();
- $this->timeFactory = $this->getMockBuilder('\\OCP\\AppFramework\\Utility\\ITimeFactory')->getMock();
- $this->l10n = $this->getMockBuilder('\\OCP\\IL10N')->getMock();
- $this->updateChecker = $this->getMockBuilder('\\OCA\\UpdateNotification\\UpdateChecker')
- ->disableOriginalConstructor()->getMock();
- $this->dateTimeFormatter = $this->getMockBuilder('\\OCP\\IDateTimeFormatter')->getMock();
+ $this->request = $this->createMock(IRequest::class);
+ $this->jobList = $this->createMock(IJobList::class);
+ $this->secureRandom = $this->createMock(ISecureRandom::class);
+ $this->config = $this->createMock(IConfig::class);
+ $this->timeFactory = $this->createMock(ITimeFactory::class);
+ $this->l10n = $this->createMock(IL10N::class);
$this->adminController = new AdminController(
'updatenotification',
@@ -77,131 +69,15 @@ class AdminControllerTest extends TestCase {
$this->secureRandom,
$this->config,
$this->timeFactory,
- $this->l10n,
- $this->updateChecker,
- $this->dateTimeFormatter
+ $this->l10n
);
}
- public function testDisplayPanelWithUpdate() {
- $channels = [
- 'daily',
- 'beta',
- 'stable',
- 'production',
- ];
- $currentChannel = \OCP\Util::getChannel();
-
- // Remove the currently used channel from the channels list
- if(($key = array_search($currentChannel, $channels)) !== false) {
- unset($channels[$key]);
- }
-
- $this->config
- ->expects($this->exactly(2))
- ->method('getAppValue')
- ->willReturnMap([
- ['core', 'lastupdatedat', '', '12345'],
- ['updatenotification', 'notify_groups', '["admin"]', '["admin"]'],
- ]);
- $this->config
- ->expects($this->once())
- ->method('getSystemValue')
- ->with('updater.server.url', 'https://updates.nextcloud.com/server/')
- ->willReturn('https://updates.nextcloud.com/server/');
- $this->dateTimeFormatter
- ->expects($this->once())
- ->method('formatDateTime')
- ->with('12345')
- ->willReturn('LastCheckedReturnValue');
- $this->updateChecker
- ->expects($this->once())
- ->method('getUpdateState')
- ->willReturn([
- 'updateAvailable' => true,
- 'updateVersion' => '8.1.2',
- 'downloadLink' => 'https://downloads.nextcloud.org/server',
- 'updaterEnabled' => true,
- ]);
-
- $params = [
- 'isNewVersionAvailable' => true,
- 'isUpdateChecked' => true,
- 'lastChecked' => 'LastCheckedReturnValue',
- 'currentChannel' => \OCP\Util::getChannel(),
- 'channels' => $channels,
- 'newVersionString' => '8.1.2',
- 'downloadLink' => 'https://downloads.nextcloud.org/server',
- 'updaterEnabled' => true,
- 'isDefaultUpdateServerURL' => true,
- 'updateServerURL' => 'https://updates.nextcloud.com/server/',
- 'notify_groups' => 'admin',
- ];
-
- $expected = new TemplateResponse('updatenotification', 'admin', $params, '');
- $this->assertEquals($expected, $this->adminController->displayPanel());
- }
-
- public function testDisplayPanelWithoutUpdate() {
- $channels = [
- 'daily',
- 'beta',
- 'stable',
- 'production',
- ];
- $currentChannel = \OCP\Util::getChannel();
-
- // Remove the currently used channel from the channels list
- if(($key = array_search($currentChannel, $channels)) !== false) {
- unset($channels[$key]);
- }
-
- $this->config
- ->expects($this->exactly(2))
- ->method('getAppValue')
- ->willReturnMap([
- ['core', 'lastupdatedat', '', '12345'],
- ['updatenotification', 'notify_groups', '["admin"]', '["admin"]'],
- ]);
- $this->config
- ->expects($this->once())
- ->method('getSystemValue')
- ->with('updater.server.url', 'https://updates.nextcloud.com/server/')
- ->willReturn('https://updates.nextcloud.com/server/');
- $this->dateTimeFormatter
- ->expects($this->once())
- ->method('formatDateTime')
- ->with('12345')
- ->willReturn('LastCheckedReturnValue');
- $this->updateChecker
- ->expects($this->once())
- ->method('getUpdateState')
- ->willReturn([]);
-
- $params = [
- 'isNewVersionAvailable' => false,
- 'isUpdateChecked' => true,
- 'lastChecked' => 'LastCheckedReturnValue',
- 'currentChannel' => \OCP\Util::getChannel(),
- 'channels' => $channels,
- 'newVersionString' => '',
- 'downloadLink' => '',
- 'updaterEnabled' => 0,
- 'isDefaultUpdateServerURL' => true,
- 'updateServerURL' => 'https://updates.nextcloud.com/server/',
- 'notify_groups' => 'admin',
- ];
-
- $expected = new TemplateResponse('updatenotification', 'admin', $params, '');
- $this->assertEquals($expected, $this->adminController->displayPanel());
- }
-
-
public function testCreateCredentials() {
$this->jobList
->expects($this->once())
->method('add')
- ->with('OCA\UpdateNotification\ResetTokenBackgroundJob');
+ ->with(ResetTokenBackgroundJob::class);
$this->secureRandom
->expects($this->once())
->method('generate')
@@ -224,11 +100,4 @@ class AdminControllerTest extends TestCase {
$this->assertEquals($expected, $this->adminController->createCredentials());
}
- public function testGetSection() {
- $this->assertSame('server', $this->adminController->getSection());
- }
-
- public function testGetPriority() {
- $this->assertSame(1, $this->adminController->getPriority());
- }
}
diff --git a/apps/updatenotification/tests/Notification/BackgroundJobTest.php b/apps/updatenotification/tests/Notification/BackgroundJobTest.php
index 0355b10a09c..4ed1c350674 100644
--- a/apps/updatenotification/tests/Notification/BackgroundJobTest.php
+++ b/apps/updatenotification/tests/Notification/BackgroundJobTest.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -105,7 +106,7 @@ class BackgroundJobTest extends TestCase {
self::invokePrivate($job, 'run', [null]);
}
- public function dataCheckCoreUpdate() {
+ public function dataCheckCoreUpdate(): array {
return [
['daily', null, null, null, null],
['git', null, null, null, null],
@@ -142,7 +143,7 @@ class BackgroundJobTest extends TestCase {
* @param null|string $readableVersion
* @param null|int $errorDays
*/
- public function testCheckCoreUpdate($channel, $versionCheck, $version, $readableVersion, $errorDays) {
+ public function testCheckCoreUpdate(string $channel, $versionCheck, $version, $readableVersion, $errorDays) {
$job = $this->getJob([
'getChannel',
'createVersionCheck',
@@ -197,13 +198,13 @@ class BackgroundJobTest extends TestCase {
->method('clearErrorNotifications');
$job->expects($this->once())
->method('createNotifications')
- ->willReturn('core', $version, $readableVersion);
+ ->with('core', $version, $readableVersion);
}
self::invokePrivate($job, 'checkCoreUpdate');
}
- public function dataCheckAppUpdates() {
+ public function dataCheckAppUpdates(): array {
return [
[
['app1', 'app2'],
@@ -235,18 +236,18 @@ class BackgroundJobTest extends TestCase {
->method('getInstalledApps')
->willReturn($apps);
- $job->expects($this->exactly(count($apps)))
+ $job->expects($this->exactly(\count($apps)))
->method('isUpdateAvailable')
->willReturnMap($isUpdateAvailable);
- $mockedMethod = $job->expects($this->exactly(count($notifications)))
+ $mockedMethod = $job->expects($this->exactly(\count($notifications)))
->method('createNotifications');
- call_user_func_array([$mockedMethod, 'withConsecutive'], $notifications);
+ \call_user_func_array([$mockedMethod, 'withConsecutive'], $notifications);
self::invokePrivate($job, 'checkAppUpdates');
}
- public function dataCreateNotifications() {
+ public function dataCreateNotifications(): array {
return [
['app1', '1.0.0', '1.0.0', false, false, null, null],
['app2', '1.0.1', '1.0.0', '1.0.0', true, ['user1'], [['user1']]],
@@ -265,7 +266,7 @@ class BackgroundJobTest extends TestCase {
* @param string[]|null $users
* @param array|null $userNotifications
*/
- public function testCreateNotifications($app, $version, $lastNotification, $callDelete, $createNotification, $users, $userNotifications) {
+ public function testCreateNotifications(string $app, string $version, $lastNotification, $callDelete, $createNotification, $users, $userNotifications) {
$job = $this->getJob([
'deleteOutdatedNotifications',
'getUsersToNotify',
@@ -319,12 +320,12 @@ class BackgroundJobTest extends TestCase {
->willReturnSelf();
if ($userNotifications !== null) {
- $mockedMethod = $notification->expects($this->exactly(count($userNotifications)))
+ $mockedMethod = $notification->expects($this->exactly(\count($userNotifications)))
->method('setUser')
->willReturnSelf();
- call_user_func_array([$mockedMethod, 'withConsecutive'], $userNotifications);
+ \call_user_func_array([$mockedMethod, 'withConsecutive'], $userNotifications);
- $this->notificationManager->expects($this->exactly(count($userNotifications)))
+ $this->notificationManager->expects($this->exactly(\count($userNotifications)))
->method('notify')
->willReturn($notification);
}
@@ -340,7 +341,7 @@ class BackgroundJobTest extends TestCase {
self::invokePrivate($job, 'createNotifications', [$app, $version]);
}
- public function dataGetUsersToNotify() {
+ public function dataGetUsersToNotify(): array {
return [
[['g1', 'g2'], ['g1' => null, 'g2' => ['u1', 'u2']], ['u1', 'u2']],
[['g3', 'g4'], ['g3' => ['u1', 'u2'], 'g4' => ['u2', 'u3']], ['u1', 'u2', 'u3']],
@@ -353,7 +354,7 @@ class BackgroundJobTest extends TestCase {
* @param array $groupUsers
* @param string[] $expected
*/
- public function testGetUsersToNotify($groups, array $groupUsers, array $expected) {
+ public function testGetUsersToNotify(array $groups, array $groupUsers, array $expected) {
$job = $this->getJob();
$this->config->expects($this->once())
@@ -373,7 +374,7 @@ class BackgroundJobTest extends TestCase {
}
$groupMap[] = [$gid, $group];
}
- $this->groupManager->expects($this->exactly(count($groups)))
+ $this->groupManager->expects($this->exactly(\count($groups)))
->method('get')
->willReturnMap($groupMap);
@@ -385,7 +386,7 @@ class BackgroundJobTest extends TestCase {
$this->assertEquals($expected, $result);
}
- public function dataDeleteOutdatedNotifications() {
+ public function dataDeleteOutdatedNotifications(): array {
return [
['app1', '1.1.0'],
['app2', '1.2.0'],
@@ -397,7 +398,7 @@ class BackgroundJobTest extends TestCase {
* @param string $app
* @param string $version
*/
- public function testDeleteOutdatedNotifications($app, $version) {
+ public function testDeleteOutdatedNotifications(string $app, string $version) {
$notification = $this->createMock(INotification::class);
$notification->expects($this->once())
->method('setApp')
@@ -423,7 +424,7 @@ class BackgroundJobTest extends TestCase {
* @param string[] $userIds
* @return IUser[]|\PHPUnit_Framework_MockObject_MockObject[]
*/
- protected function getUsers(array $userIds) {
+ protected function getUsers(array $userIds): array {
$users = [];
foreach ($userIds as $uid) {
$user = $this->createMock(IUser::class);
@@ -436,10 +437,10 @@ class BackgroundJobTest extends TestCase {
}
/**
- * @param $gid
+ * @param string $gid
* @return \OCP\IGroup|\PHPUnit_Framework_MockObject_MockObject
*/
- protected function getGroup($gid) {
+ protected function getGroup(string $gid) {
$group = $this->createMock(IGroup::class);
$group->expects($this->any())
->method('getGID')
diff --git a/apps/updatenotification/tests/Notification/NotifierTest.php b/apps/updatenotification/tests/Notification/NotifierTest.php
index 34486bf5ba5..b1ddf7b478d 100644
--- a/apps/updatenotification/tests/Notification/NotifierTest.php
+++ b/apps/updatenotification/tests/Notification/NotifierTest.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -88,7 +89,7 @@ class NotifierTest extends TestCase {
}
}
- public function dataUpdateAlreadyInstalledCheck() {
+ public function dataUpdateAlreadyInstalledCheck(): array {
return [
['1.1.0', '1.0.0', false],
['1.1.0', '1.1.0', true],
@@ -103,7 +104,7 @@ class NotifierTest extends TestCase {
* @param string $versionInstalled
* @param bool $exception
*/
- public function testUpdateAlreadyInstalledCheck($versionNotification, $versionInstalled, $exception) {
+ public function testUpdateAlreadyInstalledCheck(string $versionNotification, string $versionInstalled, bool $exception) {
$notifier = $this->getNotifier();
$notification = $this->createMock(INotification::class);
@@ -121,7 +122,7 @@ class NotifierTest extends TestCase {
}
try {
- $this->invokePrivate($notifier, 'updateAlreadyInstalledCheck', [$notification, $versionInstalled]);
+ self::invokePrivate($notifier, 'updateAlreadyInstalledCheck', [$notification, $versionInstalled]);
$this->assertFalse($exception);
} catch (\Exception $e) {
$this->assertTrue($exception);
diff --git a/apps/updatenotification/tests/ResetTokenBackgroundJobTest.php b/apps/updatenotification/tests/ResetTokenBackgroundJobTest.php
index 4309aed84bf..d78a5ed94cc 100644
--- a/apps/updatenotification/tests/ResetTokenBackgroundJobTest.php
+++ b/apps/updatenotification/tests/ResetTokenBackgroundJobTest.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -29,23 +30,23 @@ use OCP\IConfig;
use Test\TestCase;
class ResetTokenBackgroundJobTest extends TestCase {
- /** @var IConfig */
+ /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */
private $config;
+ /** @var ITimeFactory|\PHPUnit_Framework_MockObject_MockObject */
+ private $timeFactory;
/** @var ResetTokenBackgroundJob */
private $resetTokenBackgroundJob;
- /** @var ITimeFactory */
- private $timeFactory;
public function setUp() {
parent::setUp();
- $this->config = $this->getMockBuilder('\\OCP\\IConfig')->getMock();
- $this->timeFactory = $this->getMockBuilder('\\OCP\\AppFramework\\Utility\\ITimeFactory')->getMock();
+ $this->config = $this->createMock(IConfig::class);
+ $this->timeFactory = $this->createMock(ITimeFactory::class);
$this->resetTokenBackgroundJob = new ResetTokenBackgroundJob($this->config, $this->timeFactory);
}
public function testRunWithNotExpiredToken() {
$this->timeFactory
- ->expects($this->any())
+ ->expects($this->atLeastOnce())
->method('getTime')
->willReturn(123);
$this->config
@@ -54,10 +55,9 @@ class ResetTokenBackgroundJobTest extends TestCase {
->with('core', 'updater.secret.created', 123);
$this->config
->expects($this->never())
- ->method('deleteSystemValue')
- ->with('updater.secret');
+ ->method('deleteSystemValue');
- $this->invokePrivate($this->resetTokenBackgroundJob, 'run', ['']);
+ static::invokePrivate($this->resetTokenBackgroundJob, 'run', [null]);
}
public function testRunWithExpiredToken() {
@@ -78,6 +78,6 @@ class ResetTokenBackgroundJobTest extends TestCase {
->method('deleteSystemValue')
->with('updater.secret');
- $this->invokePrivate($this->resetTokenBackgroundJob, 'run', ['']);
+ static::invokePrivate($this->resetTokenBackgroundJob, 'run', [null]);
}
}
diff --git a/apps/updatenotification/tests/Settings/AdminTest.php b/apps/updatenotification/tests/Settings/AdminTest.php
new file mode 100644
index 00000000000..12734b808c0
--- /dev/null
+++ b/apps/updatenotification/tests/Settings/AdminTest.php
@@ -0,0 +1,127 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ *
+ * @author Joas Schilling <coding@schilljs.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
+ * @author Morris Jobke <hey@morrisjobke.de>
+ *
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * 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, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\UpdateNotification\Tests\Settings;
+
+use OCA\UpdateNotification\Settings\Admin;
+use OCA\UpdateNotification\UpdateChecker;
+use OCP\AppFramework\Http\TemplateResponse;
+use OCP\IConfig;
+use OCP\IDateTimeFormatter;
+use OCP\Util;
+use Test\TestCase;
+
+class AdminTest extends TestCase {
+ /** @var Admin */
+ private $admin;
+ /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */
+ private $config;
+ /** @var UpdateChecker|\PHPUnit_Framework_MockObject_MockObject */
+ private $updateChecker;
+ /** @var IDateTimeFormatter|\PHPUnit_Framework_MockObject_MockObject */
+ private $dateTimeFormatter;
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->config = $this->createMock(IConfig::class);
+ $this->updateChecker = $this->createMock(UpdateChecker::class);
+ $this->dateTimeFormatter = $this->createMock(IDateTimeFormatter::class);
+
+ $this->admin = new Admin(
+ $this->config,
+ $this->updateChecker,
+ $this->dateTimeFormatter
+ );
+ }
+
+ public function testGetFormWithUpdate() {
+ $channels = [
+ 'daily',
+ 'beta',
+ 'stable',
+ 'production',
+ ];
+ $currentChannel = Util::getChannel();
+
+ // Remove the currently used channel from the channels list
+ if(($key = array_search($currentChannel, $channels, true)) !== false) {
+ unset($channels[$key]);
+ }
+
+ $this->config
+ ->expects($this->exactly(2))
+ ->method('getAppValue')
+ ->willReturnMap([
+ ['core', 'lastupdatedat', '', '12345'],
+ ['updatenotification', 'notify_groups', '["admin"]', '["admin"]'],
+ ]);
+ $this->config
+ ->expects($this->once())
+ ->method('getSystemValue')
+ ->with('updater.server.url', 'https://updates.nextcloud.com/server/')
+ ->willReturn('https://updates.nextcloud.com/server/');
+ $this->dateTimeFormatter
+ ->expects($this->once())
+ ->method('formatDateTime')
+ ->with('12345')
+ ->willReturn('LastCheckedReturnValue');
+ $this->updateChecker
+ ->expects($this->once())
+ ->method('getUpdateState')
+ ->willReturn([
+ 'updateAvailable' => true,
+ 'updateVersion' => '8.1.2',
+ 'downloadLink' => 'https://downloads.nextcloud.org/server',
+ 'updaterEnabled' => true,
+ ]);
+
+ $params = [
+ 'isNewVersionAvailable' => true,
+ 'isUpdateChecked' => true,
+ 'lastChecked' => 'LastCheckedReturnValue',
+ 'currentChannel' => Util::getChannel(),
+ 'channels' => $channels,
+ 'newVersionString' => '8.1.2',
+ 'downloadLink' => 'https://downloads.nextcloud.org/server',
+ 'updaterEnabled' => true,
+ 'isDefaultUpdateServerURL' => true,
+ 'updateServerURL' => 'https://updates.nextcloud.com/server/',
+ 'notify_groups' => 'admin',
+ ];
+
+ $expected = new TemplateResponse('updatenotification', 'admin', $params, '');
+ $this->assertEquals($expected, $this->admin->getForm());
+ }
+
+
+ public function testGetSection() {
+ $this->assertSame('server', $this->admin->getSection());
+ }
+
+ public function testGetPriority() {
+ $this->assertSame(1, $this->admin->getPriority());
+ }
+}
diff --git a/apps/updatenotification/tests/UpdateCheckerTest.php b/apps/updatenotification/tests/UpdateCheckerTest.php
index f7ed83047a6..5502e1ce8ac 100644
--- a/apps/updatenotification/tests/UpdateCheckerTest.php
+++ b/apps/updatenotification/tests/UpdateCheckerTest.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -24,12 +25,12 @@
namespace OCA\UpdateNotification\Tests;
-use OC\Updater;
+use OC\Updater\VersionCheck;
use OCA\UpdateNotification\UpdateChecker;
use Test\TestCase;
class UpdateCheckerTest extends TestCase {
- /** @var Updater */
+ /** @var VersionCheck|\PHPUnit_Framework_MockObject_MockObject */
private $updater;
/** @var UpdateChecker */
private $updateChecker;
@@ -37,8 +38,7 @@ class UpdateCheckerTest extends TestCase {
public function setUp() {
parent::setUp();
- $this->updater = $this->getMockBuilder('\OC\Updater\VersionCheck')
- ->disableOriginalConstructor()->getMock();
+ $this->updater = $this->createMock(VersionCheck::class);
$this->updateChecker = new UpdateChecker($this->updater);
}
diff --git a/apps/user_ldap/lib/Access.php b/apps/user_ldap/lib/Access.php
index b84f5a38b31..43feeb4c1f0 100644
--- a/apps/user_ldap/lib/Access.php
+++ b/apps/user_ldap/lib/Access.php
@@ -588,7 +588,7 @@ class Access extends LDAPUtility implements IUserTools {
// outside of core user management will still cache the user as non-existing.
$originalTTL = $this->connection->ldapCacheTTL;
$this->connection->setConfiguration(array('ldapCacheTTL' => 0));
- if(($isUser && $intName !== '' && !\OCP\User::userExists($intName))
+ if(($isUser && $intName !== '' && !\OC::$server->getUserManager()->userExists($intName))
|| (!$isUser && !\OC::$server->getGroupManager()->groupExists($intName))) {
if($mapper->map($fdn, $intName, $uuid)) {
$this->connection->setConfiguration(array('ldapCacheTTL' => $originalTTL));
@@ -721,7 +721,7 @@ class Access extends LDAPUtility implements IUserTools {
//20 attempts, something else is very wrong. Avoids infinite loop.
while($attempts < 20){
$altName = $name . '_' . rand(1000,9999);
- if(!\OCP\User::userExists($altName)) {
+ if(!\OC::$server->getUserManager()->userExists($altName)) {
return $altName;
}
$attempts++;
diff --git a/apps/user_ldap/tests/User_LDAPTest.php b/apps/user_ldap/tests/User_LDAPTest.php
index 3262a2360ad..9911aa37e37 100644
--- a/apps/user_ldap/tests/User_LDAPTest.php
+++ b/apps/user_ldap/tests/User_LDAPTest.php
@@ -275,7 +275,11 @@ class User_LDAPTest extends TestCase {
$backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class), $this->getDefaultPluginManagerMock());
\OC_User::useBackend($backend);
- $result = \OCP\User::checkPassword('roland', 'dt19');
+ $user = \OC::$server->getUserManager()->checkPassword('roland', 'dt19');
+ $result = false;
+ if ($user !== false) {
+ $result = $user->getUID();
+ }
$this->assertEquals('gunslinger', $result);
}
@@ -285,7 +289,11 @@ class User_LDAPTest extends TestCase {
$backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class), $this->getDefaultPluginManagerMock());
\OC_User::useBackend($backend);
- $result = \OCP\User::checkPassword('roland', 'wrong');
+ $user = \OC::$server->getUserManager()->checkPassword('roland', 'wrong');
+ $result = false;
+ if ($user !== false) {
+ $result = $user->getUID();
+ }
$this->assertFalse($result);
}
@@ -295,7 +303,11 @@ class User_LDAPTest extends TestCase {
$backend = new UserLDAP($access, $this->createMock(IConfig::class), $this->createMock(INotificationManager::class), $this->createMock(Session::class), $this->getDefaultPluginManagerMock());
\OC_User::useBackend($backend);
- $result = \OCP\User::checkPassword('mallory', 'evil');
+ $user = \OC::$server->getUserManager()->checkPassword('mallory', 'evil');
+ $result = false;
+ if ($user !== false) {
+ $result = $user->getUID();
+ }
$this->assertFalse($result);
}
@@ -629,7 +641,7 @@ class User_LDAPTest extends TestCase {
->willReturn($this->createMock(UserMapping::class));
//test for existing user
- $result = \OCP\User::userExists('gunslinger');
+ $result = \OC::$server->getUserManager()->userExists('gunslinger');
$this->assertTrue($result);
}
@@ -656,7 +668,7 @@ class User_LDAPTest extends TestCase {
->willReturn($this->createMock(User::class));
//test for deleted user
- \OCP\User::userExists('formerUser');
+ \OC::$server->getUserManager()->userExists('formerUser');
}
public function testUserExistsPublicAPIForNeverExisting() {
@@ -675,7 +687,7 @@ class User_LDAPTest extends TestCase {
}));
//test for never-existing user
- $result = \OCP\User::userExists('mallory');
+ $result = \OC::$server->getUserManager()->userExists('mallory');
$this->assertFalse($result);
}
diff --git a/apps/workflowengine/l10n/bg.js b/apps/workflowengine/l10n/bg.js
index 7646f36302c..8e456e5a738 100644
--- a/apps/workflowengine/l10n/bg.js
+++ b/apps/workflowengine/l10n/bg.js
@@ -1,7 +1,9 @@
OC.L10N.register(
"workflowengine",
{
+ "Saved" : "Запазено",
"Saving failed:" : "Запазването се провали:",
+ "File MIME type" : "Тип MIME файл",
"is" : "е",
"is not" : "не е",
"matches" : "съвпадения",
diff --git a/apps/workflowengine/l10n/bg.json b/apps/workflowengine/l10n/bg.json
index 4788e40881d..a5693cea290 100644
--- a/apps/workflowengine/l10n/bg.json
+++ b/apps/workflowengine/l10n/bg.json
@@ -1,5 +1,7 @@
{ "translations": {
+ "Saved" : "Запазено",
"Saving failed:" : "Запазването се провали:",
+ "File MIME type" : "Тип MIME файл",
"is" : "е",
"is not" : "не е",
"matches" : "съвпадения",
diff --git a/apps/workflowengine/lib/Check/FileSize.php b/apps/workflowengine/lib/Check/FileSize.php
index 1744793dec7..7e48f0f6038 100644
--- a/apps/workflowengine/lib/Check/FileSize.php
+++ b/apps/workflowengine/lib/Check/FileSize.php
@@ -103,13 +103,13 @@ class FileSize implements ICheck {
}
$size = $this->request->getHeader('OC-Total-Length');
- if ($size === null) {
+ if ($size === '') {
if (in_array($this->request->getMethod(), ['POST', 'PUT'])) {
$size = $this->request->getHeader('Content-Length');
}
}
- if ($size === null) {
+ if ($size === '') {
$size = false;
}
diff --git a/core/Command/Db/Migrations/GenerateCommand.php b/core/Command/Db/Migrations/GenerateCommand.php
index 8fbc1781d94..e37c51e85fb 100644
--- a/core/Command/Db/Migrations/GenerateCommand.php
+++ b/core/Command/Db/Migrations/GenerateCommand.php
@@ -39,7 +39,7 @@ class GenerateCommand extends Command {
'<?php
namespace {{namespace}};
-use Doctrine\DBAL\Schema\Schema;
+use OCP\DB\ISchemaWrapper;
use OCP\Migration\SimpleMigrationStep;
use OCP\Migration\IOutput;
@@ -50,7 +50,7 @@ class {{classname}} extends SimpleMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
* @since 13.0.0
*/
@@ -59,9 +59,9 @@ class {{classname}} extends SimpleMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
- * @return null|Schema
+ * @return null|ISchemaWrapper
* @since 13.0.0
*/
public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) {
@@ -70,7 +70,7 @@ class {{classname}} extends SimpleMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
* @since 13.0.0
*/
diff --git a/core/Command/Db/Migrations/GenerateFromSchemaFileCommand.php b/core/Command/Db/Migrations/GenerateFromSchemaFileCommand.php
index d8dc2be11a4..3ccaa563e89 100644
--- a/core/Command/Db/Migrations/GenerateFromSchemaFileCommand.php
+++ b/core/Command/Db/Migrations/GenerateFromSchemaFileCommand.php
@@ -91,7 +91,7 @@ class GenerateFromSchemaFileCommand extends GenerateCommand {
*/
protected function schemaToMigration(Schema $schema) {
$content = <<<'EOT'
- /** @var Schema $schema */
+ /** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
EOT;
diff --git a/core/Command/Upgrade.php b/core/Command/Upgrade.php
index 2a502dbe921..1611b121f33 100644
--- a/core/Command/Upgrade.php
+++ b/core/Command/Upgrade.php
@@ -39,6 +39,7 @@ use OC\Installer;
use OC\Updater;
use OCP\IConfig;
use OCP\ILogger;
+use OCP\Util;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Helper\ProgressBar;
use Symfony\Component\Console\Input\InputInterface;
@@ -76,13 +77,7 @@ class Upgrade extends Command {
protected function configure() {
$this
->setName('upgrade')
- ->setDescription('run upgrade routines after installation of a new release. The release has to be installed before.')
- ->addOption(
- '--no-app-disable',
- null,
- InputOption::VALUE_NONE,
- 'skips the disable of third party apps'
- );
+ ->setDescription('run upgrade routines after installation of a new release. The release has to be installed before.');
}
/**
@@ -93,7 +88,7 @@ class Upgrade extends Command {
*/
protected function execute(InputInterface $input, OutputInterface $output) {
- if(\OC::checkUpgrade(false)) {
+ if(Util::needUpgrade()) {
if (OutputInterface::VERBOSITY_NORMAL < $output->getVerbosity()) {
// Prepend each line with a little timestamp
$timestampFormatter = new TimestampFormatter($this->config, $output->getFormatter());
@@ -108,9 +103,6 @@ class Upgrade extends Command {
$this->installer
);
- if ($input->getOption('no-app-disable')) {
- $updater->setSkip3rdPartyAppsDisable(true);
- }
$dispatcher = \OC::$server->getEventDispatcher();
$progress = new ProgressBar($output);
$progress->setFormat(" %message%\n %current%/%max% [%bar%] %percent:3s%%");
@@ -224,9 +216,6 @@ class Upgrade extends Command {
$updater->listen('\OC\Updater', 'incompatibleAppDisabled', function ($app) use($output) {
$output->writeln('<comment>Disabled incompatible app: ' . $app . '</comment>');
});
- $updater->listen('\OC\Updater', 'thirdPartyAppDisabled', function ($app) use ($output) {
- $output->writeln('<comment>Disabled 3rd-party app: ' . $app . '</comment>');
- });
$updater->listen('\OC\Updater', 'checkAppStoreAppBefore', function ($app) use($output) {
$output->writeln('<info>Checking for update of app ' . $app . ' in appstore</info>');
});
diff --git a/core/Controller/AvatarController.php b/core/Controller/AvatarController.php
index c01e81a1790..0d0a0274414 100644
--- a/core/Controller/AvatarController.php
+++ b/core/Controller/AvatarController.php
@@ -285,7 +285,8 @@ class AvatarController extends Controller {
Http::STATUS_NOT_FOUND);
}
- $image = new \OC_Image($tmpAvatar);
+ $image = new \OC_Image();
+ $image->loadFromData($tmpAvatar);
$resp = new DataDisplayResponse($image->data(),
Http::STATUS_OK,
@@ -322,7 +323,8 @@ class AvatarController extends Controller {
Http::STATUS_BAD_REQUEST);
}
- $image = new \OC_Image($tmpAvatar);
+ $image = new \OC_Image();
+ $image->loadFromData($tmpAvatar);
$image->crop($crop['x'], $crop['y'], (int)round($crop['w']), (int)round($crop['h']));
try {
$avatar = $this->avatarManager->getAvatar($this->userId);
diff --git a/core/Controller/ClientFlowLoginController.php b/core/Controller/ClientFlowLoginController.php
index 0e7fbf892b6..23bd42a0f18 100644
--- a/core/Controller/ClientFlowLoginController.php
+++ b/core/Controller/ClientFlowLoginController.php
@@ -115,7 +115,7 @@ class ClientFlowLoginController extends Controller {
*/
private function getClientName() {
$userAgent = $this->request->getHeader('USER_AGENT');
- return $userAgent !== null ? $userAgent : 'unknown';
+ return $userAgent !== '' ? $userAgent : 'unknown';
}
/**
diff --git a/core/Controller/CssController.php b/core/Controller/CssController.php
index 95a41f8dd15..43a4f453b0e 100644
--- a/core/Controller/CssController.php
+++ b/core/Controller/CssController.php
@@ -98,7 +98,7 @@ class CssController extends Controller {
private function getFile(ISimpleFolder $folder, $fileName, &$gzip) {
$encoding = $this->request->getHeader('Accept-Encoding');
- if ($encoding !== null && strpos($encoding, 'gzip') !== false) {
+ if (strpos($encoding, 'gzip') !== false) {
try {
$gzip = true;
return $folder->getFile($fileName . '.gzip'); # Safari doesn't like .gz
diff --git a/core/Controller/JsController.php b/core/Controller/JsController.php
index f02948e47a0..670ca997257 100644
--- a/core/Controller/JsController.php
+++ b/core/Controller/JsController.php
@@ -96,7 +96,7 @@ class JsController extends Controller {
private function getFile(ISimpleFolder $folder, $fileName, &$gzip) {
$encoding = $this->request->getHeader('Accept-Encoding');
- if ($encoding !== null && strpos($encoding, 'gzip') !== false) {
+ if (strpos($encoding, 'gzip') !== false) {
try {
$gzip = true;
return $folder->getFile($fileName . '.gzip'); # Safari doesn't like .gz
diff --git a/core/Controller/LoginController.php b/core/Controller/LoginController.php
index e53095a7de7..d3659a1c48c 100644
--- a/core/Controller/LoginController.php
+++ b/core/Controller/LoginController.php
@@ -34,6 +34,7 @@
namespace OC\Core\Controller;
use OC\Authentication\TwoFactorAuth\Manager;
+use OC\Security\Bruteforce\Throttler;
use OC\User\Session;
use OC_App;
use OC_Util;
@@ -72,6 +73,8 @@ class LoginController extends Controller {
private $twoFactorManager;
/** @var Defaults */
private $defaults;
+ /** @var Throttler */
+ private $throttler;
/**
* @param string $appName
@@ -84,6 +87,7 @@ class LoginController extends Controller {
* @param ILogger $logger
* @param Manager $twoFactorManager
* @param Defaults $defaults
+ * @param Throttler $throttler
*/
public function __construct($appName,
IRequest $request,
@@ -94,7 +98,8 @@ class LoginController extends Controller {
IURLGenerator $urlGenerator,
ILogger $logger,
Manager $twoFactorManager,
- Defaults $defaults) {
+ Defaults $defaults,
+ Throttler $throttler) {
parent::__construct($appName, $request);
$this->userManager = $userManager;
$this->config = $config;
@@ -104,6 +109,7 @@ class LoginController extends Controller {
$this->logger = $logger;
$this->twoFactorManager = $twoFactorManager;
$this->defaults = $defaults;
+ $this->throttler = $throttler;
}
/**
@@ -153,7 +159,7 @@ class LoginController extends Controller {
}
$parameters['messages'] = $messages;
- if (!is_null($user) && $user !== '') {
+ if ($user !== null && $user !== '') {
$parameters['loginName'] = $user;
$parameters['user_autofocus'] = false;
} else {
@@ -167,7 +173,7 @@ class LoginController extends Controller {
$parameters['canResetPassword'] = true;
$parameters['resetPasswordLink'] = $this->config->getSystemValue('lost_password_link', '');
if (!$parameters['resetPasswordLink']) {
- if (!is_null($user) && $user !== '') {
+ if ($user !== null && $user !== '') {
$userObj = $this->userManager->get($user);
if ($userObj instanceof IUser) {
$parameters['canResetPassword'] = $userObj->canChangePassword();
@@ -181,7 +187,7 @@ class LoginController extends Controller {
$parameters['rememberLoginState'] = !empty($remember_login) ? $remember_login : 0;
$parameters['hideRemeberLoginState'] = !empty($redirect_url) && $this->session->exists('client.flow.state.token');
- if (!is_null($user) && $user !== '') {
+ if ($user !== null && $user !== '') {
$parameters['loginName'] = $user;
$parameters['user_autofocus'] = false;
} else {
@@ -189,6 +195,8 @@ class LoginController extends Controller {
$parameters['user_autofocus'] = true;
}
+ $parameters['throttle_delay'] = $this->throttler->getDelay($this->request->getRemoteAddress());
+
// OpenGraph Support: http://ogp.me/
Util::addHeader('meta', ['property' => 'og:title', 'content' => Util::sanitizeHTML($this->defaults->getName())]);
Util::addHeader('meta', ['property' => 'og:description', 'content' => Util::sanitizeHTML($this->defaults->getSlogan())]);
diff --git a/core/Migrations/Version13000Date20170705121758.php b/core/Migrations/Version13000Date20170705121758.php
index 6f9c2d243f8..9d8b373b6b9 100644
--- a/core/Migrations/Version13000Date20170705121758.php
+++ b/core/Migrations/Version13000Date20170705121758.php
@@ -23,21 +23,21 @@
namespace OC\Core\Migrations;
-use Doctrine\DBAL\Schema\Schema;
use Doctrine\DBAL\Types\Type;
+use OCP\DB\ISchemaWrapper;
use OCP\Migration\SimpleMigrationStep;
use OCP\Migration\IOutput;
class Version13000Date20170705121758 extends SimpleMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
- * @return null|Schema
+ * @return null|ISchemaWrapper
* @since 13.0.0
*/
public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) {
- /** @var Schema $schema */
+ /** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
if (!$schema->hasTable('personal_sections')) {
diff --git a/core/Migrations/Version13000Date20170718121200.php b/core/Migrations/Version13000Date20170718121200.php
index e71debfcb4b..139129eb600 100644
--- a/core/Migrations/Version13000Date20170718121200.php
+++ b/core/Migrations/Version13000Date20170718121200.php
@@ -23,8 +23,8 @@
namespace OC\Core\Migrations;
-use Doctrine\DBAL\Schema\Schema;
use Doctrine\DBAL\Types\Type;
+use OCP\DB\ISchemaWrapper;
use OCP\Migration\SimpleMigrationStep;
use OCP\Migration\IOutput;
@@ -32,13 +32,13 @@ class Version13000Date20170718121200 extends SimpleMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
- * @return null|Schema
+ * @return null|ISchemaWrapper
* @since 13.0.0
*/
public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) {
- /** @var Schema $schema */
+ /** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
if (!$schema->hasTable('appconfig')) {
diff --git a/core/Migrations/Version13000Date20170814074715.php b/core/Migrations/Version13000Date20170814074715.php
index 097db51984e..0eae4167fb6 100644
--- a/core/Migrations/Version13000Date20170814074715.php
+++ b/core/Migrations/Version13000Date20170814074715.php
@@ -23,7 +23,7 @@
namespace OC\Core\Migrations;
-use Doctrine\DBAL\Schema\Schema;
+use OCP\DB\ISchemaWrapper;
use OCP\Migration\SimpleMigrationStep;
use OCP\Migration\IOutput;
@@ -31,7 +31,7 @@ class Version13000Date20170814074715 extends SimpleMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
* @since 13.0.0
*/
@@ -40,13 +40,13 @@ class Version13000Date20170814074715 extends SimpleMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
- * @return null|Schema
+ * @return null|ISchemaWrapper
* @since 13.0.0
*/
public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) {
- /** @var Schema $schema */
+ /** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
@@ -69,7 +69,7 @@ class Version13000Date20170814074715 extends SimpleMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
* @since 13.0.0
*/
diff --git a/core/Migrations/Version13000Date20170919121250.php b/core/Migrations/Version13000Date20170919121250.php
index 0857d6d5ceb..6bdd79cf672 100644
--- a/core/Migrations/Version13000Date20170919121250.php
+++ b/core/Migrations/Version13000Date20170919121250.php
@@ -23,7 +23,7 @@
*/
namespace OC\Core\Migrations;
-use Doctrine\DBAL\Schema\Schema;
+use OCP\DB\ISchemaWrapper;
use OCP\Migration\SimpleMigrationStep;
use OCP\Migration\IOutput;
@@ -34,7 +34,7 @@ class Version13000Date20170919121250 extends SimpleMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
* @since 13.0.0
*/
@@ -43,13 +43,13 @@ class Version13000Date20170919121250 extends SimpleMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
- * @return null|Schema
+ * @return null|ISchemaWrapper
* @since 13.0.0
*/
public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) {
- /** @var Schema $schema */
+ /** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
$table = $schema->getTable('jobs');
@@ -115,7 +115,7 @@ class Version13000Date20170919121250 extends SimpleMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
* @since 13.0.0
*/
diff --git a/core/Migrations/Version13000Date20170926101637.php b/core/Migrations/Version13000Date20170926101637.php
index f51828e7a33..088de988020 100644
--- a/core/Migrations/Version13000Date20170926101637.php
+++ b/core/Migrations/Version13000Date20170926101637.php
@@ -23,10 +23,7 @@
*/
namespace OC\Core\Migrations;
-use Doctrine\DBAL\Schema\Schema;
use OCP\Migration\BigIntMigration;
-use OCP\Migration\SimpleMigrationStep;
-use OCP\Migration\IOutput;
/**
* Auto-generated migration step: Please modify to your needs!
diff --git a/core/ajax/update.php b/core/ajax/update.php
index 2a29d1e536c..af604299169 100644
--- a/core/ajax/update.php
+++ b/core/ajax/update.php
@@ -98,7 +98,7 @@ class FeedBackHandler {
}
}
-if (OC::checkUpgrade(false)) {
+if (\OCP\Util::needUpgrade()) {
$config = \OC::$server->getSystemConfig();
if ($config->getValue('upgrade.disable-web', false)) {
@@ -120,7 +120,6 @@ if (OC::checkUpgrade(false)) {
\OC::$server->query(\OC\Installer::class)
);
$incompatibleApps = [];
- $disabledThirdPartyApps = [];
$dispatcher = \OC::$server->getEventDispatcher();
$dispatcher->addListener('\OC\DB\Migrator::executeSql', function($event) use ($eventSource, $l) {
@@ -187,9 +186,6 @@ if (OC::checkUpgrade(false)) {
$updater->listen('\OC\Updater', 'incompatibleAppDisabled', function ($app) use (&$incompatibleApps) {
$incompatibleApps[]= $app;
});
- $updater->listen('\OC\Updater', 'thirdPartyAppDisabled', function ($app) use (&$disabledThirdPartyApps) {
- $disabledThirdPartyApps[]= $app;
- });
$updater->listen('\OC\Updater', 'failure', function ($message) use ($eventSource, $config) {
$eventSource->send('failure', $message);
$eventSource->close();
@@ -217,9 +213,6 @@ if (OC::checkUpgrade(false)) {
}
$disabledApps = [];
- foreach ($disabledThirdPartyApps as $app) {
- $disabledApps[$app] = (string) $l->t('%s (3rdparty)', [$app]);
- }
foreach ($incompatibleApps as $app) {
$disabledApps[$app] = (string) $l->t('%s (incompatible)', [$app]);
}
diff --git a/core/l10n/bg.js b/core/l10n/bg.js
index 78d5cc84e4f..f22e892cb2f 100644
--- a/core/l10n/bg.js
+++ b/core/l10n/bg.js
@@ -14,10 +14,14 @@ OC.L10N.register(
"No crop data provided" : "Липсват данни за изрязването",
"No valid crop data provided" : "Липсват данни за изрязването",
"Crop is not square" : "Областта не е квадратна",
+ "Password reset is disabled" : "Възстановяването на парола е изключено",
"Couldn't reset password because the token is invalid" : "Нулирането на паролата е невъзможно, защото връзката за удостоверение е невалидна",
"Couldn't reset password because the token is expired" : "Нулирането на паролата е невъзможно, защото връзката за удостоверение е изтекла",
"Could not send reset email because there is no email address for this username. Please contact your administrator." : "Имейлът за възстановяване на паролата не може да бъде изпратен защо потребителят няма имейл адрес. Свържете се с администратора.",
"%s password reset" : "Паролата на %s е променена",
+ "Password reset" : "Възстановяване на парола",
+ "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Кликнете върху следния бутон, за да възстановите паролата си. Ако не сте поискали възстановяване на паролата, игнорирайте този имейл.",
+ "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Кликнете върху следната връзка, за да възстановите паролата си. Ако не сте поискали възстановяване на паролата, игнорирайте този имейл.",
"Couldn't send reset email. Please contact your administrator." : "Неуспешно изпращане на имейл за възстановяване на паролата. Моля, свържете се с вашия администратор.",
"Couldn't send reset email. Please make sure your username is correct." : "Неуспешно изпращане на имейл за възстановяване на паролата. Моля, уверете се, че потребителското име е правилно.",
"Preparing update" : "Подготовка за актуализиране",
@@ -41,10 +45,14 @@ OC.L10N.register(
"Reset log level" : "Възстанови ниво на лог",
"Starting code integrity check" : "Стартиране на проверка за цялостта на кода",
"Finished code integrity check" : "Приключена проверка за цялостта на кода",
- "%s (3rdparty)" : "%s (3-ти лица)",
"%s (incompatible)" : "%s (несъвместим)",
"Following apps have been disabled: %s" : "Следната добавка беше изключена: %s",
"Already up to date" : "Вече е актуална",
+ "Search contacts …" : "Търсене на контакти ...",
+ "No contacts found" : "Няма намерени контакти",
+ "Show all contacts …" : "Покажи всички контакти ...",
+ "There was an error loading your contacts" : "Възникна грешка по време на зареждането на вашите контакти",
+ "Loading your contacts …" : "Зареждане на вашите контакти ...",
"<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Има проблем с проверката за цялостта на кода. Повече информация…</a>",
"Settings" : "Настройки",
"Connection to server lost" : "Връзката със сървъра е загубена",
@@ -63,12 +71,15 @@ OC.L10N.register(
"I know what I'm doing" : "Знам какво правя",
"Password can not be changed. Please contact your administrator." : "Паролата не може да бъде промена. Моля, свържете се с администратора.",
"Reset password" : "Възстановяване на паролата",
+ "Sending email …" : "Изпращане на имейл ...",
"No" : "Не",
"Yes" : "Да",
"No files in here" : "Тук няма файлове",
"Choose" : "Избиране",
"Copy" : "Копиране",
+ "Move" : "Преместване",
"Error loading file picker template: {error}" : "Грешка при зареждането на шаблон за избор на файл: {error}",
+ "OK" : "ОК",
"Error loading message template: {error}" : "Грешка при зареждането на шаблон за съобщения: {error}",
"read-only" : "Само за четене",
"_{count} file conflict_::_{count} file conflicts_" : ["{count} файлов конфликт","{count} файлови кофликта"],
@@ -82,6 +93,8 @@ OC.L10N.register(
"({count} selected)" : "({count} избрани)",
"Error loading file exists template" : "Грешка при зареждането на шаблон за вече съществуващ файл",
"Pending" : "Чакащо",
+ "Copy to {folder}" : "Копирай в {folder}",
+ "Move to {folder}" : "Премести в {folder}",
"Very weak password" : "Много слаба парола",
"Weak password" : "Слаба парола",
"So-so password" : "Не особено добра парола",
@@ -89,6 +102,8 @@ OC.L10N.register(
"Strong password" : "Сигурна парола",
"Error occurred while checking server setup" : "Възникна грешка при проверката на настройките на сървъра.",
"Shared" : "Споделено",
+ "Shared with" : "Споделено с",
+ "Shared by" : "Споделено от",
"Error setting expiration date" : "Грешка при настройване на датата за изтичане",
"The public link will expire no later than {days} days after it is created" : "Общодостъпната връзка ще изтече не по-късно от {days} дни след създаването ѝ.",
"Set expiration date" : "Задаване на дата на изтичане",
@@ -114,6 +129,7 @@ OC.L10N.register(
"group" : "група",
"remote" : "отдалечен",
"email" : "имейл",
+ "shared by {sharer}" : "споделено от {sharer}",
"Unshare" : "Прекратяване на споделяне",
"Could not unshare" : "Споделянето не е прекратено",
"Error while sharing" : "Грешка при споделяне",
@@ -205,7 +221,9 @@ OC.L10N.register(
"Log in" : "Вписване",
"Wrong password." : "Грешна парола",
"Stay logged in" : "Остани вписан",
+ "Forgot password?" : "Забравена парола?",
"Alternative Logins" : "Алтернативни методи на вписване",
+ "Redirecting …" : "Пренасочване ...",
"New password" : "Нова парола",
"New Password" : "Нова парола",
"Two-factor authentication" : "Двуфакторно удостоверяване",
@@ -213,6 +231,8 @@ OC.L10N.register(
"Cancel log in" : "Откажи вписване",
"Use backup code" : "Използвай код за възстановяване",
"Error while validating your second factor" : "Грешка при валидиране на втория ви фактор",
+ "Access through untrusted domain" : "Достъп чрез ненадежден домейн",
+ "Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Моля, свържете се с администратора. Ако сте администратор на текущата инстанция, конфигурирайте \"trusted_domains\" настройките в config/config.php. Примерна конфигурация е предоставена в config/config.sample.php.",
"Add \"%s\" as trusted domain" : "Добави \"%s\" като сигурен домейн",
"App update required" : "Изисква се обновяване на добавката",
"%s will be updated to version %s" : "%s ще бъде обновен до версия %s",
@@ -224,10 +244,13 @@ OC.L10N.register(
"To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "За да избегнеш таймаутове при по-големи инсталации, можеш да изпълниш следните команди в инсталанционната директория:",
"Detailed logs" : "Подробни логове",
"Update needed" : "Нужно е обновяване",
+ "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "За помощ, вижте <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">документацията</a>.",
+ "Upgrade via web on my own risk" : "Актуализиране чрез интернет на собствен риск",
"This %s instance is currently in maintenance mode, which may take a while." : "В момента този %s се обновява, а това може да отнеме време.",
"This page will refresh itself when the %s instance is available again." : "Страницата ще се зареди автоматично, когато %s е отново на линия.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Свържете се със системния администратор ако това съобщение се задържи твърде дълго или се е появило неочаквано.",
"Thank you for your patience." : "Благодарим за търпението.",
+ "%s (3rdparty)" : "%s (3-ти лица)",
"Problem loading page, reloading in 5 seconds" : "Проблем при зареждане на страницата, презареждане след 5 секунди",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Файловете Ви са криптирани. Ако не сте настроили ключ за възстановяване, няма да можете да възстановите данните си след смяна на паролата.<br />Ако не сте сигурни какво да направите, моля, свържете се с Вашия администратор преди да продължите. <br/>Наистина ли желаете да продължите?",
"Ok" : "Добре",
@@ -285,6 +308,9 @@ OC.L10N.register(
"Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Моля, свържете се с администратора. Ако сте администратор на текущата инстанция, конфигурирайте \"trusted_domains\" настройките в config/config.php. Примерна конфигурация е предоставена в config/config.sample.php.",
"Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "В зависимост от конфигурацията, като администратор натискайки долния бутон можете да маркирате домейна като сигурен.",
"Please use the command line updater because you have a big instance." : "Моля използвайте съветникът за обновяване в команден ред, защото инстанцията ви е голяма.",
- "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "За помощ, вижте <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">документацията</a>."
+ "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "За помощ, вижте <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">документацията</a>.",
+ "The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend</a> to use following settings in the <code>php.ini</code>:" : "PHP OPcache не е правилно конфигуриран. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">За по-добри резултати препоръчваме</a> да използвате следните настройки в <code>php.ini</code>:",
+ "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Най-вероятно вашите данни и файлове са достъпни от интернет. .htaccess файлът не функционира. Силно препоръчваме да настроите уеб сървъра по такъв начин, че директорията за данни да не бъде достъпна или я преместете извън директорията на уеб сървъра.",
+ "Your PHP does not have freetype support. This will result in broken profile pictures and settings interface." : "PHP не поддържа FreeType. Това ще доведе до неправилното показване на профилните снимки и настройките на интерфейса"
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/bg.json b/core/l10n/bg.json
index 81414f57ed2..bd38c76cf56 100644
--- a/core/l10n/bg.json
+++ b/core/l10n/bg.json
@@ -12,10 +12,14 @@
"No crop data provided" : "Липсват данни за изрязването",
"No valid crop data provided" : "Липсват данни за изрязването",
"Crop is not square" : "Областта не е квадратна",
+ "Password reset is disabled" : "Възстановяването на парола е изключено",
"Couldn't reset password because the token is invalid" : "Нулирането на паролата е невъзможно, защото връзката за удостоверение е невалидна",
"Couldn't reset password because the token is expired" : "Нулирането на паролата е невъзможно, защото връзката за удостоверение е изтекла",
"Could not send reset email because there is no email address for this username. Please contact your administrator." : "Имейлът за възстановяване на паролата не може да бъде изпратен защо потребителят няма имейл адрес. Свържете се с администратора.",
"%s password reset" : "Паролата на %s е променена",
+ "Password reset" : "Възстановяване на парола",
+ "Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Кликнете върху следния бутон, за да възстановите паролата си. Ако не сте поискали възстановяване на паролата, игнорирайте този имейл.",
+ "Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Кликнете върху следната връзка, за да възстановите паролата си. Ако не сте поискали възстановяване на паролата, игнорирайте този имейл.",
"Couldn't send reset email. Please contact your administrator." : "Неуспешно изпращане на имейл за възстановяване на паролата. Моля, свържете се с вашия администратор.",
"Couldn't send reset email. Please make sure your username is correct." : "Неуспешно изпращане на имейл за възстановяване на паролата. Моля, уверете се, че потребителското име е правилно.",
"Preparing update" : "Подготовка за актуализиране",
@@ -39,10 +43,14 @@
"Reset log level" : "Възстанови ниво на лог",
"Starting code integrity check" : "Стартиране на проверка за цялостта на кода",
"Finished code integrity check" : "Приключена проверка за цялостта на кода",
- "%s (3rdparty)" : "%s (3-ти лица)",
"%s (incompatible)" : "%s (несъвместим)",
"Following apps have been disabled: %s" : "Следната добавка беше изключена: %s",
"Already up to date" : "Вече е актуална",
+ "Search contacts …" : "Търсене на контакти ...",
+ "No contacts found" : "Няма намерени контакти",
+ "Show all contacts …" : "Покажи всички контакти ...",
+ "There was an error loading your contacts" : "Възникна грешка по време на зареждането на вашите контакти",
+ "Loading your contacts …" : "Зареждане на вашите контакти ...",
"<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Има проблем с проверката за цялостта на кода. Повече информация…</a>",
"Settings" : "Настройки",
"Connection to server lost" : "Връзката със сървъра е загубена",
@@ -61,12 +69,15 @@
"I know what I'm doing" : "Знам какво правя",
"Password can not be changed. Please contact your administrator." : "Паролата не може да бъде промена. Моля, свържете се с администратора.",
"Reset password" : "Възстановяване на паролата",
+ "Sending email …" : "Изпращане на имейл ...",
"No" : "Не",
"Yes" : "Да",
"No files in here" : "Тук няма файлове",
"Choose" : "Избиране",
"Copy" : "Копиране",
+ "Move" : "Преместване",
"Error loading file picker template: {error}" : "Грешка при зареждането на шаблон за избор на файл: {error}",
+ "OK" : "ОК",
"Error loading message template: {error}" : "Грешка при зареждането на шаблон за съобщения: {error}",
"read-only" : "Само за четене",
"_{count} file conflict_::_{count} file conflicts_" : ["{count} файлов конфликт","{count} файлови кофликта"],
@@ -80,6 +91,8 @@
"({count} selected)" : "({count} избрани)",
"Error loading file exists template" : "Грешка при зареждането на шаблон за вече съществуващ файл",
"Pending" : "Чакащо",
+ "Copy to {folder}" : "Копирай в {folder}",
+ "Move to {folder}" : "Премести в {folder}",
"Very weak password" : "Много слаба парола",
"Weak password" : "Слаба парола",
"So-so password" : "Не особено добра парола",
@@ -87,6 +100,8 @@
"Strong password" : "Сигурна парола",
"Error occurred while checking server setup" : "Възникна грешка при проверката на настройките на сървъра.",
"Shared" : "Споделено",
+ "Shared with" : "Споделено с",
+ "Shared by" : "Споделено от",
"Error setting expiration date" : "Грешка при настройване на датата за изтичане",
"The public link will expire no later than {days} days after it is created" : "Общодостъпната връзка ще изтече не по-късно от {days} дни след създаването ѝ.",
"Set expiration date" : "Задаване на дата на изтичане",
@@ -112,6 +127,7 @@
"group" : "група",
"remote" : "отдалечен",
"email" : "имейл",
+ "shared by {sharer}" : "споделено от {sharer}",
"Unshare" : "Прекратяване на споделяне",
"Could not unshare" : "Споделянето не е прекратено",
"Error while sharing" : "Грешка при споделяне",
@@ -203,7 +219,9 @@
"Log in" : "Вписване",
"Wrong password." : "Грешна парола",
"Stay logged in" : "Остани вписан",
+ "Forgot password?" : "Забравена парола?",
"Alternative Logins" : "Алтернативни методи на вписване",
+ "Redirecting …" : "Пренасочване ...",
"New password" : "Нова парола",
"New Password" : "Нова парола",
"Two-factor authentication" : "Двуфакторно удостоверяване",
@@ -211,6 +229,8 @@
"Cancel log in" : "Откажи вписване",
"Use backup code" : "Използвай код за възстановяване",
"Error while validating your second factor" : "Грешка при валидиране на втория ви фактор",
+ "Access through untrusted domain" : "Достъп чрез ненадежден домейн",
+ "Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Моля, свържете се с администратора. Ако сте администратор на текущата инстанция, конфигурирайте \"trusted_domains\" настройките в config/config.php. Примерна конфигурация е предоставена в config/config.sample.php.",
"Add \"%s\" as trusted domain" : "Добави \"%s\" като сигурен домейн",
"App update required" : "Изисква се обновяване на добавката",
"%s will be updated to version %s" : "%s ще бъде обновен до версия %s",
@@ -222,10 +242,13 @@
"To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "За да избегнеш таймаутове при по-големи инсталации, можеш да изпълниш следните команди в инсталанционната директория:",
"Detailed logs" : "Подробни логове",
"Update needed" : "Нужно е обновяване",
+ "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "За помощ, вижте <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">документацията</a>.",
+ "Upgrade via web on my own risk" : "Актуализиране чрез интернет на собствен риск",
"This %s instance is currently in maintenance mode, which may take a while." : "В момента този %s се обновява, а това може да отнеме време.",
"This page will refresh itself when the %s instance is available again." : "Страницата ще се зареди автоматично, когато %s е отново на линия.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Свържете се със системния администратор ако това съобщение се задържи твърде дълго или се е появило неочаквано.",
"Thank you for your patience." : "Благодарим за търпението.",
+ "%s (3rdparty)" : "%s (3-ти лица)",
"Problem loading page, reloading in 5 seconds" : "Проблем при зареждане на страницата, презареждане след 5 секунди",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Файловете Ви са криптирани. Ако не сте настроили ключ за възстановяване, няма да можете да възстановите данните си след смяна на паролата.<br />Ако не сте сигурни какво да направите, моля, свържете се с Вашия администратор преди да продължите. <br/>Наистина ли желаете да продължите?",
"Ok" : "Добре",
@@ -283,6 +306,9 @@
"Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Моля, свържете се с администратора. Ако сте администратор на текущата инстанция, конфигурирайте \"trusted_domains\" настройките в config/config.php. Примерна конфигурация е предоставена в config/config.sample.php.",
"Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "В зависимост от конфигурацията, като администратор натискайки долния бутон можете да маркирате домейна като сигурен.",
"Please use the command line updater because you have a big instance." : "Моля използвайте съветникът за обновяване в команден ред, защото инстанцията ви е голяма.",
- "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "За помощ, вижте <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">документацията</a>."
+ "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "За помощ, вижте <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">документацията</a>.",
+ "The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend</a> to use following settings in the <code>php.ini</code>:" : "PHP OPcache не е правилно конфигуриран. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">За по-добри резултати препоръчваме</a> да използвате следните настройки в <code>php.ini</code>:",
+ "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Най-вероятно вашите данни и файлове са достъпни от интернет. .htaccess файлът не функционира. Силно препоръчваме да настроите уеб сървъра по такъв начин, че директорията за данни да не бъде достъпна или я преместете извън директорията на уеб сървъра.",
+ "Your PHP does not have freetype support. This will result in broken profile pictures and settings interface." : "PHP не поддържа FreeType. Това ще доведе до неправилното показване на профилните снимки и настройките на интерфейса"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/ca.js b/core/l10n/ca.js
index 8024cc213d1..d4d036f9b4a 100644
--- a/core/l10n/ca.js
+++ b/core/l10n/ca.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Reinicia el nivell de registre",
"Starting code integrity check" : "Inicia el test d'integrigtat del codi",
"Finished code integrity check" : "Finalitzat el test d'integritat del codi",
- "%s (3rdparty)" : "%s (de tercers)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Les aplicacions següents s'han deshabilitat: %s",
"Already up to date" : "Ja actualitzat",
@@ -289,6 +288,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Aquesta pàgina s'actualitzarà automàticament quan la instància %s estigui disponible de nou.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacteu amb l'administrador del sistema si aquest missatge persisteix o apareix inesperadament.",
"Thank you for your patience." : "Gràcies per la paciència.",
+ "%s (3rdparty)" : "%s (de tercers)",
"Problem loading page, reloading in 5 seconds" : "Problemes carregant la pagina, recarregant en 5 segons",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Els vostres fitxers estan encriptats. Si no heu habilitat la clau de recuperació no hi haurà manera de recuperar les dades després que reestabliu la contrasenya. <br />Si sabeu què fer, contacteu amb l'administrador abans de continuar.<br />Voleu continuar?",
"Ok" : "D'acord",
diff --git a/core/l10n/ca.json b/core/l10n/ca.json
index 1173d9ac41b..fb7fde67187 100644
--- a/core/l10n/ca.json
+++ b/core/l10n/ca.json
@@ -48,7 +48,6 @@
"Reset log level" : "Reinicia el nivell de registre",
"Starting code integrity check" : "Inicia el test d'integrigtat del codi",
"Finished code integrity check" : "Finalitzat el test d'integritat del codi",
- "%s (3rdparty)" : "%s (de tercers)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Les aplicacions següents s'han deshabilitat: %s",
"Already up to date" : "Ja actualitzat",
@@ -287,6 +286,7 @@
"This page will refresh itself when the %s instance is available again." : "Aquesta pàgina s'actualitzarà automàticament quan la instància %s estigui disponible de nou.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacteu amb l'administrador del sistema si aquest missatge persisteix o apareix inesperadament.",
"Thank you for your patience." : "Gràcies per la paciència.",
+ "%s (3rdparty)" : "%s (de tercers)",
"Problem loading page, reloading in 5 seconds" : "Problemes carregant la pagina, recarregant en 5 segons",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Els vostres fitxers estan encriptats. Si no heu habilitat la clau de recuperació no hi haurà manera de recuperar les dades després que reestabliu la contrasenya. <br />Si sabeu què fer, contacteu amb l'administrador abans de continuar.<br />Voleu continuar?",
"Ok" : "D'acord",
diff --git a/core/l10n/cs.js b/core/l10n/cs.js
index 043a4e425e6..2e0873a7134 100644
--- a/core/l10n/cs.js
+++ b/core/l10n/cs.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Resetovat úroveň logování",
"Starting code integrity check" : "Spouští se kontrola integrity kódu",
"Finished code integrity check" : "Kontrola integrity kódu dokončena",
- "%s (3rdparty)" : "%s (3. strana)",
"%s (incompatible)" : "%s (nekompatibilní)",
"Following apps have been disabled: %s" : "Následující aplikace byly vypnuty: %s",
"Already up to date" : "Je již aktuální",
@@ -293,6 +292,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Tato stránka se automaticky načte poté, co bude opět dostupná instance %s.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Kontaktujte prosím správce systému, pokud se tato zpráva objevuje opakovaně nebo nečekaně.",
"Thank you for your patience." : "Děkujeme za vaši trpělivost.",
+ "%s (3rdparty)" : "%s (3. strana)",
"Problem loading page, reloading in 5 seconds" : "Problém s načítáním stránky, stránka se obnoví za 5 sekund",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Vaše soubory jsou šifrovány. Pokud jste nepovolili klíč pro obnovení, neexistuje způsob jak získat po změně hesla vaše data zpět.<br />Pokud si nejste jisti co dělat, kontaktujte nejprve svého správce systému, než budete pokračovat. <br />Opravdu si přejete pokračovat?",
"Ok" : "Ok",
diff --git a/core/l10n/cs.json b/core/l10n/cs.json
index 7adf6c4a5ac..9f979550b18 100644
--- a/core/l10n/cs.json
+++ b/core/l10n/cs.json
@@ -48,7 +48,6 @@
"Reset log level" : "Resetovat úroveň logování",
"Starting code integrity check" : "Spouští se kontrola integrity kódu",
"Finished code integrity check" : "Kontrola integrity kódu dokončena",
- "%s (3rdparty)" : "%s (3. strana)",
"%s (incompatible)" : "%s (nekompatibilní)",
"Following apps have been disabled: %s" : "Následující aplikace byly vypnuty: %s",
"Already up to date" : "Je již aktuální",
@@ -291,6 +290,7 @@
"This page will refresh itself when the %s instance is available again." : "Tato stránka se automaticky načte poté, co bude opět dostupná instance %s.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Kontaktujte prosím správce systému, pokud se tato zpráva objevuje opakovaně nebo nečekaně.",
"Thank you for your patience." : "Děkujeme za vaši trpělivost.",
+ "%s (3rdparty)" : "%s (3. strana)",
"Problem loading page, reloading in 5 seconds" : "Problém s načítáním stránky, stránka se obnoví za 5 sekund",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Vaše soubory jsou šifrovány. Pokud jste nepovolili klíč pro obnovení, neexistuje způsob jak získat po změně hesla vaše data zpět.<br />Pokud si nejste jisti co dělat, kontaktujte nejprve svého správce systému, než budete pokračovat. <br />Opravdu si přejete pokračovat?",
"Ok" : "Ok",
diff --git a/core/l10n/da.js b/core/l10n/da.js
index 455d991fd15..285a5aa13f3 100644
--- a/core/l10n/da.js
+++ b/core/l10n/da.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Nulstil logningsniveau",
"Starting code integrity check" : "Begynder tjek af kodeintegritet",
"Finished code integrity check" : "Fuldførte tjek af kodeintegritet",
- "%s (3rdparty)" : "%s (3rdparty)",
"%s (incompatible)" : "%s (inkombatible)",
"Following apps have been disabled: %s" : "Følgende apps er blevet deaktiveret: %s",
"Already up to date" : "Allerede opdateret",
@@ -297,6 +296,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Denne side vil genopfriske sig selv, når %s-instancen er tilgængelig igen.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Kontakt systemadministratoren, hvis denne meddelelse fortsætter eller optrådte uventet.",
"Thank you for your patience." : "Tak for din tålmodighed.",
+ "%s (3rdparty)" : "%s (3rdparty)",
"Problem loading page, reloading in 5 seconds" : "Problem med indlæsning af side, genindlæser om 5 sekunder",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Dine filer er krypterede. Hvis du ikke har aktiveret gendannelsesnøglen kan du ikke få dine data tilbage efter at du har ændret adgangskode.<br />Hvis du ikke er sikker på, hvad du skal gøre så kontakt din administrator før du fortsætter.<br />Vil du fortsætte?",
"Ok" : "OK",
diff --git a/core/l10n/da.json b/core/l10n/da.json
index c0bd92220dc..ff46d6061c6 100644
--- a/core/l10n/da.json
+++ b/core/l10n/da.json
@@ -48,7 +48,6 @@
"Reset log level" : "Nulstil logningsniveau",
"Starting code integrity check" : "Begynder tjek af kodeintegritet",
"Finished code integrity check" : "Fuldførte tjek af kodeintegritet",
- "%s (3rdparty)" : "%s (3rdparty)",
"%s (incompatible)" : "%s (inkombatible)",
"Following apps have been disabled: %s" : "Følgende apps er blevet deaktiveret: %s",
"Already up to date" : "Allerede opdateret",
@@ -295,6 +294,7 @@
"This page will refresh itself when the %s instance is available again." : "Denne side vil genopfriske sig selv, når %s-instancen er tilgængelig igen.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Kontakt systemadministratoren, hvis denne meddelelse fortsætter eller optrådte uventet.",
"Thank you for your patience." : "Tak for din tålmodighed.",
+ "%s (3rdparty)" : "%s (3rdparty)",
"Problem loading page, reloading in 5 seconds" : "Problem med indlæsning af side, genindlæser om 5 sekunder",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Dine filer er krypterede. Hvis du ikke har aktiveret gendannelsesnøglen kan du ikke få dine data tilbage efter at du har ændret adgangskode.<br />Hvis du ikke er sikker på, hvad du skal gøre så kontakt din administrator før du fortsætter.<br />Vil du fortsætte?",
"Ok" : "OK",
diff --git a/core/l10n/de.js b/core/l10n/de.js
index ad2ea230210..c37588a6ace 100644
--- a/core/l10n/de.js
+++ b/core/l10n/de.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Ursprüngliches Log-Level wiederhergestellt",
"Starting code integrity check" : "Code-Integrität wird überprüft",
"Finished code integrity check" : "Code-Integritätsprüfung abgeschlossen",
- "%s (3rdparty)" : "%s (Drittanbieter)",
"%s (incompatible)" : "%s (inkompatibel)",
"Following apps have been disabled: %s" : "Die folgenden Apps wurden deaktiviert: %s",
"Already up to date" : "Bereits aktuell",
@@ -122,6 +121,7 @@ OC.L10N.register(
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Einige Dateien haben die Integritätsprüfung nicht bestanden. Weiterführende Informationen befinden sich in unserer <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Dokumentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste der ungültigen Dateien…</a> / <a href=\"{rescanEndpoint}\">Erneut analysieren…</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "Der PHP-OPcache ist nicht richtig konfiguriert. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Für eine bessere Leistung empfiehlt es sich</a> folgende Einstellungen in der <code>php.ini</code> vorzunehmen:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "Die PHP-Funktion \"set_time_limit\" ist nicht verfügbar. Dies kann in angehaltenen Scripten oder einer fehlerhaften Installation resultieren. Es wird dringend empfohlen, diese Funktion zu aktivieren.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Dein PHP unterstützt Freetype nicht. Dies wird defekte Profilbilder und eine defekte Anzeige der Einstellungen verursachen.",
"Error occurred while checking server setup" : "Fehler beim Überprüfen der Servereinrichtung",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Dein Datenverzeichnis und deine Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, deinen Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass du es aus dem Dokument-Root-Verzeichnis des Webservers bewegst.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.",
@@ -276,6 +276,7 @@ OC.L10N.register(
"Username or email" : "Benutzername oder E-Mail",
"Log in" : "Anmelden",
"Wrong password." : "Falsches Passwort.",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "Es wurden mehrere ungültige Anmeldeversuche von Deiner IP-Adresse festgestellt. Daher wird die nächste Anmeldung um 30 Sekunden verzögert.",
"Stay logged in" : "Angemeldet bleiben",
"Forgot password?" : "Passwort vergessen?",
"Back to log in" : "Zur Anmeldung wechseln",
@@ -315,6 +316,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Diese Seite aktualisiert sich automatisch, wenn die %s-Instanz wieder verfügbar ist.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Kontaktiere den Systemadministrator, wenn diese Meldung dauerhaft oder unerwartet erscheint.",
"Thank you for your patience." : "Vielen Dank für deine Geduld.",
+ "%s (3rdparty)" : "%s (Drittanbieter)",
"Problem loading page, reloading in 5 seconds" : "Problem beim Laden der Seite, Seite wird in 5 Sekunden nochmals geladen",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Deine Dateien sind verschlüsselt. Solltest du den Wiederherstellungsschlüssel nicht aktiviert haben, gibt es keine Möglichkeit, deine Daten zurückzuerlangen, nachdem dein Passwort zurückgesetzt wurde.<br />Falls du dir nicht sicher bist, was zu tun ist, kontaktiere bitte deinen Administrator, bevor du fortfährst<br />Möchtest du wirklich fortfahren?",
"Ok" : "OK",
diff --git a/core/l10n/de.json b/core/l10n/de.json
index 4f644a088dd..fd056062397 100644
--- a/core/l10n/de.json
+++ b/core/l10n/de.json
@@ -48,7 +48,6 @@
"Reset log level" : "Ursprüngliches Log-Level wiederhergestellt",
"Starting code integrity check" : "Code-Integrität wird überprüft",
"Finished code integrity check" : "Code-Integritätsprüfung abgeschlossen",
- "%s (3rdparty)" : "%s (Drittanbieter)",
"%s (incompatible)" : "%s (inkompatibel)",
"Following apps have been disabled: %s" : "Die folgenden Apps wurden deaktiviert: %s",
"Already up to date" : "Bereits aktuell",
@@ -120,6 +119,7 @@
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Einige Dateien haben die Integritätsprüfung nicht bestanden. Weiterführende Informationen befinden sich in unserer <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Dokumentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste der ungültigen Dateien…</a> / <a href=\"{rescanEndpoint}\">Erneut analysieren…</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "Der PHP-OPcache ist nicht richtig konfiguriert. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Für eine bessere Leistung empfiehlt es sich</a> folgende Einstellungen in der <code>php.ini</code> vorzunehmen:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "Die PHP-Funktion \"set_time_limit\" ist nicht verfügbar. Dies kann in angehaltenen Scripten oder einer fehlerhaften Installation resultieren. Es wird dringend empfohlen, diese Funktion zu aktivieren.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Dein PHP unterstützt Freetype nicht. Dies wird defekte Profilbilder und eine defekte Anzeige der Einstellungen verursachen.",
"Error occurred while checking server setup" : "Fehler beim Überprüfen der Servereinrichtung",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Dein Datenverzeichnis und deine Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, deinen Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass du es aus dem Dokument-Root-Verzeichnis des Webservers bewegst.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.",
@@ -274,6 +274,7 @@
"Username or email" : "Benutzername oder E-Mail",
"Log in" : "Anmelden",
"Wrong password." : "Falsches Passwort.",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "Es wurden mehrere ungültige Anmeldeversuche von Deiner IP-Adresse festgestellt. Daher wird die nächste Anmeldung um 30 Sekunden verzögert.",
"Stay logged in" : "Angemeldet bleiben",
"Forgot password?" : "Passwort vergessen?",
"Back to log in" : "Zur Anmeldung wechseln",
@@ -313,6 +314,7 @@
"This page will refresh itself when the %s instance is available again." : "Diese Seite aktualisiert sich automatisch, wenn die %s-Instanz wieder verfügbar ist.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Kontaktiere den Systemadministrator, wenn diese Meldung dauerhaft oder unerwartet erscheint.",
"Thank you for your patience." : "Vielen Dank für deine Geduld.",
+ "%s (3rdparty)" : "%s (Drittanbieter)",
"Problem loading page, reloading in 5 seconds" : "Problem beim Laden der Seite, Seite wird in 5 Sekunden nochmals geladen",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Deine Dateien sind verschlüsselt. Solltest du den Wiederherstellungsschlüssel nicht aktiviert haben, gibt es keine Möglichkeit, deine Daten zurückzuerlangen, nachdem dein Passwort zurückgesetzt wurde.<br />Falls du dir nicht sicher bist, was zu tun ist, kontaktiere bitte deinen Administrator, bevor du fortfährst<br />Möchtest du wirklich fortfahren?",
"Ok" : "OK",
diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js
index ca4a47fea23..dd6449ad556 100644
--- a/core/l10n/de_DE.js
+++ b/core/l10n/de_DE.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Ursprüngliches Log-Level wiederhergestellt",
"Starting code integrity check" : "Code-Integrität wird überprüft",
"Finished code integrity check" : "Code-Integritätsprüfung abgeschlossen",
- "%s (3rdparty)" : "%s (Drittanbieter)",
"%s (incompatible)" : "%s (inkompatibel)",
"Following apps have been disabled: %s" : "Die folgenden Apps wurden deaktiviert: %s",
"Already up to date" : "Bereits aktuell",
@@ -122,6 +121,7 @@ OC.L10N.register(
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Einige Dateien haben die Integritätsprüfung nicht bestanden. Weiterführende Informationen befinden sich in unserer <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Dokumentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste der ungültigen Dateien …</a> / <a href=\"{rescanEndpoint}\">Erneut analysieren…</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "Der PHP-OPcache ist nicht richtig konfiguriert. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Für eine bessere Leistung empfiehlt es sich</a> folgende Einstellungen in der <code>php.ini</code> vorzunehmen:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "Die PHP-Funktion \"set_time_limit\" ist nicht verfügbar. Dies kann in angehaltenen Scripten oder einer fehlerhaften Installation resultieren. Es wird dringend empfohlen, diese Funktion zu aktivieren.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Ihr PHP unterstützt Freetype nicht. Dies wird defekte Profilbilder und eine defekte Anzeige der Einstellungen verursachen.",
"Error occurred while checking server setup" : "Fehler beim Überprüfen der Servereinrichtung",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, Ihren Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass Sie es aus dem Document-Root-Verzeichnis des Webservers herausverschieben.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.",
@@ -276,6 +276,7 @@ OC.L10N.register(
"Username or email" : "Benutzername oder E-Mail",
"Log in" : "Anmelden",
"Wrong password." : "Falsches Passwort.",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "Es wurden mehrere ungültige Anmeldeversuche von Ihrer IP-Adresse festgestellt. Daher wird die nächste Anmeldung um 30 Sekunden verzögert.",
"Stay logged in" : "Angemeldet bleiben",
"Forgot password?" : "Passwort vergessen?",
"Back to log in" : "Zur Anmeldung wechseln",
@@ -315,6 +316,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Diese Seite aktualisiert sich automatisch, wenn die %s-Instanz wieder verfügbar ist.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Kontaktieren Sie Ihren Systemadministrator, wenn diese Meldung dauerhaft oder unerwartet erscheint.",
"Thank you for your patience." : "Vielen Dank für Ihre Geduld.",
+ "%s (3rdparty)" : "%s (Drittanbieter)",
"Problem loading page, reloading in 5 seconds" : "Problem beim Laden der Seite, Seite wird in 5 Sekunden nochmals geladen",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Ihre Dateien sind verschlüsselt. Wenn Sie den Wiederherstellungsschlüssel nicht aktiviert haben, wird es keine Möglichkeit geben, um Ihre Daten wieder zu erhalten, nachdem Ihr Passwort zurückgesetzt wurde.<br />Wenn Sie sich nicht sicher sind, was Sie tun sollen, wenden Sie sich bitte an Ihren Administrator, bevor Sie fortfahren.<br />Wollen Sie wirklich fortfahren?",
"Ok" : "OK",
diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json
index fee04ccc583..d00cb8b58b3 100644
--- a/core/l10n/de_DE.json
+++ b/core/l10n/de_DE.json
@@ -48,7 +48,6 @@
"Reset log level" : "Ursprüngliches Log-Level wiederhergestellt",
"Starting code integrity check" : "Code-Integrität wird überprüft",
"Finished code integrity check" : "Code-Integritätsprüfung abgeschlossen",
- "%s (3rdparty)" : "%s (Drittanbieter)",
"%s (incompatible)" : "%s (inkompatibel)",
"Following apps have been disabled: %s" : "Die folgenden Apps wurden deaktiviert: %s",
"Already up to date" : "Bereits aktuell",
@@ -120,6 +119,7 @@
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Einige Dateien haben die Integritätsprüfung nicht bestanden. Weiterführende Informationen befinden sich in unserer <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Dokumentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste der ungültigen Dateien …</a> / <a href=\"{rescanEndpoint}\">Erneut analysieren…</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "Der PHP-OPcache ist nicht richtig konfiguriert. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Für eine bessere Leistung empfiehlt es sich</a> folgende Einstellungen in der <code>php.ini</code> vorzunehmen:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "Die PHP-Funktion \"set_time_limit\" ist nicht verfügbar. Dies kann in angehaltenen Scripten oder einer fehlerhaften Installation resultieren. Es wird dringend empfohlen, diese Funktion zu aktivieren.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Ihr PHP unterstützt Freetype nicht. Dies wird defekte Profilbilder und eine defekte Anzeige der Einstellungen verursachen.",
"Error occurred while checking server setup" : "Fehler beim Überprüfen der Servereinrichtung",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, Ihren Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass Sie es aus dem Document-Root-Verzeichnis des Webservers herausverschieben.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.",
@@ -274,6 +274,7 @@
"Username or email" : "Benutzername oder E-Mail",
"Log in" : "Anmelden",
"Wrong password." : "Falsches Passwort.",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "Es wurden mehrere ungültige Anmeldeversuche von Ihrer IP-Adresse festgestellt. Daher wird die nächste Anmeldung um 30 Sekunden verzögert.",
"Stay logged in" : "Angemeldet bleiben",
"Forgot password?" : "Passwort vergessen?",
"Back to log in" : "Zur Anmeldung wechseln",
@@ -313,6 +314,7 @@
"This page will refresh itself when the %s instance is available again." : "Diese Seite aktualisiert sich automatisch, wenn die %s-Instanz wieder verfügbar ist.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Kontaktieren Sie Ihren Systemadministrator, wenn diese Meldung dauerhaft oder unerwartet erscheint.",
"Thank you for your patience." : "Vielen Dank für Ihre Geduld.",
+ "%s (3rdparty)" : "%s (Drittanbieter)",
"Problem loading page, reloading in 5 seconds" : "Problem beim Laden der Seite, Seite wird in 5 Sekunden nochmals geladen",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Ihre Dateien sind verschlüsselt. Wenn Sie den Wiederherstellungsschlüssel nicht aktiviert haben, wird es keine Möglichkeit geben, um Ihre Daten wieder zu erhalten, nachdem Ihr Passwort zurückgesetzt wurde.<br />Wenn Sie sich nicht sicher sind, was Sie tun sollen, wenden Sie sich bitte an Ihren Administrator, bevor Sie fortfahren.<br />Wollen Sie wirklich fortfahren?",
"Ok" : "OK",
diff --git a/core/l10n/el.js b/core/l10n/el.js
index 55c9db6b269..f852dcace11 100644
--- a/core/l10n/el.js
+++ b/core/l10n/el.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Επαναφορά επιπέδου ιστορικού",
"Starting code integrity check" : "Εκκίνηση ελέγχου ακεραιότητας του κώδικα",
"Finished code integrity check" : "Ολοκληρώθηκε ο έλεγχος ακεραιότητας του κώδικα",
- "%s (3rdparty)" : "%s (3ων παρόχων)",
"%s (incompatible)" : "%s (ασύμβατη)",
"Following apps have been disabled: %s" : "Οι ακόλουθες εφαρμογές έχουν απενεργοποιηθεί: %s",
"Already up to date" : "Ήδη ενημερωμένο",
@@ -287,6 +286,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Αυτή η σελίδα θα ανανεωθεί από μόνη της όταν η %s εγκατάσταση είναι διαθέσιμη ξανά.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Επικοινωνήστε με το διαχειριστή του συστήματος αν αυτό το μήνυμα συνεχίζει να εμφανίζεται ή εμφανίστηκε απρόσμενα.",
"Thank you for your patience." : "Σας ευχαριστούμε για την υπομονή σας.",
+ "%s (3rdparty)" : "%s (3ων παρόχων)",
"Problem loading page, reloading in 5 seconds" : "Πρόβλημα φόρτωσης σελίδας, φόρτωση ξανά σε 5 λεπτά",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Τα αρχεία σας είναι κρυπτογραφημένα. Εάν δεν έχετε ενεργοποιήσει το κλειδί επαναφοράς, δεν θα υπάρχει τρόπος να ανακτήσετε τα δεδομένα σας μετά την επαναφορά του συνθηματικού σας.<br />Εάν δεν είστε σίγουροι για το τι θα θέλατε να κάνετε, παρακαλώ επικοινωνήστε με το διαχειριστή σας πριν συνεχίσετε. <br />Θέλετε να συνεχίσετε;",
"Ok" : "ΟΚ",
diff --git a/core/l10n/el.json b/core/l10n/el.json
index 466dede6bf1..a96587e84fe 100644
--- a/core/l10n/el.json
+++ b/core/l10n/el.json
@@ -48,7 +48,6 @@
"Reset log level" : "Επαναφορά επιπέδου ιστορικού",
"Starting code integrity check" : "Εκκίνηση ελέγχου ακεραιότητας του κώδικα",
"Finished code integrity check" : "Ολοκληρώθηκε ο έλεγχος ακεραιότητας του κώδικα",
- "%s (3rdparty)" : "%s (3ων παρόχων)",
"%s (incompatible)" : "%s (ασύμβατη)",
"Following apps have been disabled: %s" : "Οι ακόλουθες εφαρμογές έχουν απενεργοποιηθεί: %s",
"Already up to date" : "Ήδη ενημερωμένο",
@@ -285,6 +284,7 @@
"This page will refresh itself when the %s instance is available again." : "Αυτή η σελίδα θα ανανεωθεί από μόνη της όταν η %s εγκατάσταση είναι διαθέσιμη ξανά.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Επικοινωνήστε με το διαχειριστή του συστήματος αν αυτό το μήνυμα συνεχίζει να εμφανίζεται ή εμφανίστηκε απρόσμενα.",
"Thank you for your patience." : "Σας ευχαριστούμε για την υπομονή σας.",
+ "%s (3rdparty)" : "%s (3ων παρόχων)",
"Problem loading page, reloading in 5 seconds" : "Πρόβλημα φόρτωσης σελίδας, φόρτωση ξανά σε 5 λεπτά",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Τα αρχεία σας είναι κρυπτογραφημένα. Εάν δεν έχετε ενεργοποιήσει το κλειδί επαναφοράς, δεν θα υπάρχει τρόπος να ανακτήσετε τα δεδομένα σας μετά την επαναφορά του συνθηματικού σας.<br />Εάν δεν είστε σίγουροι για το τι θα θέλατε να κάνετε, παρακαλώ επικοινωνήστε με το διαχειριστή σας πριν συνεχίσετε. <br />Θέλετε να συνεχίσετε;",
"Ok" : "ΟΚ",
diff --git a/core/l10n/en_GB.js b/core/l10n/en_GB.js
index 82e2f5b9dd8..ea561576010 100644
--- a/core/l10n/en_GB.js
+++ b/core/l10n/en_GB.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Reset log level",
"Starting code integrity check" : "Starting code integrity check",
"Finished code integrity check" : "Finished code integrity check",
- "%s (3rdparty)" : "%s (3rdparty)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Following apps have been disabled: %s",
"Already up to date" : "Already up to date",
@@ -122,6 +121,7 @@ OC.L10N.register(
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface.",
"Error occurred while checking server setup" : "Error occurred whilst checking server setup",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly.",
@@ -276,6 +276,7 @@ OC.L10N.register(
"Username or email" : "Username or email",
"Log in" : "Log in",
"Wrong password." : "Wrong password.",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.",
"Stay logged in" : "Stay logged in",
"Forgot password?" : "Forgot password?",
"Back to log in" : "Back to log in",
@@ -315,6 +316,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "This page will refresh itself when the %s instance is available again.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contact your system administrator if this message persists or appeared unexpectedly.",
"Thank you for your patience." : "Thank you for your patience.",
+ "%s (3rdparty)" : "%s (3rdparty)",
"Problem loading page, reloading in 5 seconds" : "Problem loading page, reloading in 5 seconds",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?",
"Ok" : "OK",
diff --git a/core/l10n/en_GB.json b/core/l10n/en_GB.json
index 4e5a43402cd..d709ca05862 100644
--- a/core/l10n/en_GB.json
+++ b/core/l10n/en_GB.json
@@ -48,7 +48,6 @@
"Reset log level" : "Reset log level",
"Starting code integrity check" : "Starting code integrity check",
"Finished code integrity check" : "Finished code integrity check",
- "%s (3rdparty)" : "%s (3rdparty)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Following apps have been disabled: %s",
"Already up to date" : "Already up to date",
@@ -120,6 +119,7 @@
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface.",
"Error occurred while checking server setup" : "Error occurred whilst checking server setup",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly.",
@@ -274,6 +274,7 @@
"Username or email" : "Username or email",
"Log in" : "Log in",
"Wrong password." : "Wrong password.",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.",
"Stay logged in" : "Stay logged in",
"Forgot password?" : "Forgot password?",
"Back to log in" : "Back to log in",
@@ -313,6 +314,7 @@
"This page will refresh itself when the %s instance is available again." : "This page will refresh itself when the %s instance is available again.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contact your system administrator if this message persists or appeared unexpectedly.",
"Thank you for your patience." : "Thank you for your patience.",
+ "%s (3rdparty)" : "%s (3rdparty)",
"Problem loading page, reloading in 5 seconds" : "Problem loading page, reloading in 5 seconds",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?",
"Ok" : "OK",
diff --git a/core/l10n/es.js b/core/l10n/es.js
index e2331f8cb07..6667a0dd91a 100644
--- a/core/l10n/es.js
+++ b/core/l10n/es.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Restablecer el nivel de registro",
"Starting code integrity check" : "Comenzando comprobación de integridad de código",
"Finished code integrity check" : "Terminando comprobación de integridad de código",
- "%s (3rdparty)" : "%s (tercero)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya actualizado",
@@ -122,6 +121,7 @@ OC.L10N.register(
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Algunos archivos no han pasado la comprobación de integridad. Se puede encontrar más información sobre cómo resolver este problema en la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentación</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lista de archivos inválidos...</a> / <a href=\"{rescanEndpoint}\">Reescanear</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "La OPcache de PHP no está bien configurada. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Para mejorar el rendimiento se recomienda</a> usar las siguientes configuraciones en el <code>php.ini</code>:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "La función PHP \"set_time_limit\" no está disponible. Esto podría resultar en scripts detenidos a mitad de ejecución, rompiendo tu instalación. Activar esta función está fuertemente recomendado.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Tu PHP no tiene soporte FreeType, lo que provoca una rotura en las imágenes de perfil y en la interfaz de los ajustes.",
"Error occurred while checking server setup" : "Ha ocurrido un error al revisar la configuración del servidor",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Tu directorio de datos y tus archivos son probablemente accesibles desde internet. El archivo .htaccess no funciona. Se recomienda encarecidamente que configures tu servidor web de tal manera que el directorio de datos no sea accesible, o que lo muevas fuera de la raíz de documentos del servidor web.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "La cabecera HTTP \"{header}\" no está configurada como \"{expected}\". Esto es un riesgo potencial de seguridad o privacidad, y se recomienda ajustar esta configuración de forma adecuada.",
@@ -276,6 +276,7 @@ OC.L10N.register(
"Username or email" : "Nombre de usuario o email",
"Log in" : "Iniciar sesión",
"Wrong password." : "Contraseña incorrecta.",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "Hemos detectado múltiples intentos inválidos desde tu IP. Por tanto, tu próximo intento se retrasará 30 segundos.",
"Stay logged in" : "Permanecer autenticado",
"Forgot password?" : "¿Contraseña olvidada?",
"Back to log in" : "Volver al registro",
@@ -315,6 +316,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "La página se refrescará cuando la instalación %s vuelva a estar disponible.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacte con su administrador de sistemas si este mensaje persiste o aparece de forma inesperada.",
"Thank you for your patience." : "Gracias por su paciencia.",
+ "%s (3rdparty)" : "%s (tercero)",
"Problem loading page, reloading in 5 seconds" : "Problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Sus archivos están cifrados. Si no ha activado la clave de recuperación, no habrá manera de recuperar los datos una vez su contraseña sea restablecida.<br /> Si no está seguro de lo que debe hacer, por favor contacte con su administrador antes de continuar.<br />¿Realmente desea continuar?",
"Ok" : "Aceptar",
diff --git a/core/l10n/es.json b/core/l10n/es.json
index 77d72a25b53..a69eac985b0 100644
--- a/core/l10n/es.json
+++ b/core/l10n/es.json
@@ -48,7 +48,6 @@
"Reset log level" : "Restablecer el nivel de registro",
"Starting code integrity check" : "Comenzando comprobación de integridad de código",
"Finished code integrity check" : "Terminando comprobación de integridad de código",
- "%s (3rdparty)" : "%s (tercero)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya actualizado",
@@ -120,6 +119,7 @@
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Algunos archivos no han pasado la comprobación de integridad. Se puede encontrar más información sobre cómo resolver este problema en la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentación</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lista de archivos inválidos...</a> / <a href=\"{rescanEndpoint}\">Reescanear</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "La OPcache de PHP no está bien configurada. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Para mejorar el rendimiento se recomienda</a> usar las siguientes configuraciones en el <code>php.ini</code>:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "La función PHP \"set_time_limit\" no está disponible. Esto podría resultar en scripts detenidos a mitad de ejecución, rompiendo tu instalación. Activar esta función está fuertemente recomendado.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Tu PHP no tiene soporte FreeType, lo que provoca una rotura en las imágenes de perfil y en la interfaz de los ajustes.",
"Error occurred while checking server setup" : "Ha ocurrido un error al revisar la configuración del servidor",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Tu directorio de datos y tus archivos son probablemente accesibles desde internet. El archivo .htaccess no funciona. Se recomienda encarecidamente que configures tu servidor web de tal manera que el directorio de datos no sea accesible, o que lo muevas fuera de la raíz de documentos del servidor web.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "La cabecera HTTP \"{header}\" no está configurada como \"{expected}\". Esto es un riesgo potencial de seguridad o privacidad, y se recomienda ajustar esta configuración de forma adecuada.",
@@ -274,6 +274,7 @@
"Username or email" : "Nombre de usuario o email",
"Log in" : "Iniciar sesión",
"Wrong password." : "Contraseña incorrecta.",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "Hemos detectado múltiples intentos inválidos desde tu IP. Por tanto, tu próximo intento se retrasará 30 segundos.",
"Stay logged in" : "Permanecer autenticado",
"Forgot password?" : "¿Contraseña olvidada?",
"Back to log in" : "Volver al registro",
@@ -313,6 +314,7 @@
"This page will refresh itself when the %s instance is available again." : "La página se refrescará cuando la instalación %s vuelva a estar disponible.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacte con su administrador de sistemas si este mensaje persiste o aparece de forma inesperada.",
"Thank you for your patience." : "Gracias por su paciencia.",
+ "%s (3rdparty)" : "%s (tercero)",
"Problem loading page, reloading in 5 seconds" : "Problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Sus archivos están cifrados. Si no ha activado la clave de recuperación, no habrá manera de recuperar los datos una vez su contraseña sea restablecida.<br /> Si no está seguro de lo que debe hacer, por favor contacte con su administrador antes de continuar.<br />¿Realmente desea continuar?",
"Ok" : "Aceptar",
diff --git a/core/l10n/es_419.js b/core/l10n/es_419.js
index 93e2871d2c2..90fe230c60d 100644
--- a/core/l10n/es_419.js
+++ b/core/l10n/es_419.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -315,6 +314,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_419.json b/core/l10n/es_419.json
index d6acd263efa..5c08874223b 100644
--- a/core/l10n/es_419.json
+++ b/core/l10n/es_419.json
@@ -48,7 +48,6 @@
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -313,6 +312,7 @@
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_AR.js b/core/l10n/es_AR.js
index 7f1fd78612c..db24f1d0573 100644
--- a/core/l10n/es_AR.js
+++ b/core/l10n/es_AR.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Verificación de integridad del código terminó",
- "%s (3rdparty)" : "%s (de3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -281,6 +280,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacte a su administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por su paciencia.",
+ "%s (3rdparty)" : "%s (de3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Sus archivos están encriptados. Si no ha habilitado la llave de recuperación, no habrá manera de que pueda recuperar sus datos una vez que restablezca su contraseña.<br />Si no está seguro de lo que está haciendo, favor de contactar a su adminstrador antes de continuar. <br />¿Realmente desea continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_AR.json b/core/l10n/es_AR.json
index 61ade5ed941..1a1e353d297 100644
--- a/core/l10n/es_AR.json
+++ b/core/l10n/es_AR.json
@@ -48,7 +48,6 @@
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Verificación de integridad del código terminó",
- "%s (3rdparty)" : "%s (de3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -279,6 +278,7 @@
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacte a su administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por su paciencia.",
+ "%s (3rdparty)" : "%s (de3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Sus archivos están encriptados. Si no ha habilitado la llave de recuperación, no habrá manera de que pueda recuperar sus datos una vez que restablezca su contraseña.<br />Si no está seguro de lo que está haciendo, favor de contactar a su adminstrador antes de continuar. <br />¿Realmente desea continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_CL.js b/core/l10n/es_CL.js
index 93e2871d2c2..90fe230c60d 100644
--- a/core/l10n/es_CL.js
+++ b/core/l10n/es_CL.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -315,6 +314,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_CL.json b/core/l10n/es_CL.json
index d6acd263efa..5c08874223b 100644
--- a/core/l10n/es_CL.json
+++ b/core/l10n/es_CL.json
@@ -48,7 +48,6 @@
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -313,6 +312,7 @@
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_CO.js b/core/l10n/es_CO.js
index 93e2871d2c2..90fe230c60d 100644
--- a/core/l10n/es_CO.js
+++ b/core/l10n/es_CO.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -315,6 +314,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_CO.json b/core/l10n/es_CO.json
index d6acd263efa..5c08874223b 100644
--- a/core/l10n/es_CO.json
+++ b/core/l10n/es_CO.json
@@ -48,7 +48,6 @@
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -313,6 +312,7 @@
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_CR.js b/core/l10n/es_CR.js
index 93e2871d2c2..90fe230c60d 100644
--- a/core/l10n/es_CR.js
+++ b/core/l10n/es_CR.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -315,6 +314,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_CR.json b/core/l10n/es_CR.json
index d6acd263efa..5c08874223b 100644
--- a/core/l10n/es_CR.json
+++ b/core/l10n/es_CR.json
@@ -48,7 +48,6 @@
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -313,6 +312,7 @@
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_DO.js b/core/l10n/es_DO.js
index 93e2871d2c2..90fe230c60d 100644
--- a/core/l10n/es_DO.js
+++ b/core/l10n/es_DO.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -315,6 +314,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_DO.json b/core/l10n/es_DO.json
index d6acd263efa..5c08874223b 100644
--- a/core/l10n/es_DO.json
+++ b/core/l10n/es_DO.json
@@ -48,7 +48,6 @@
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -313,6 +312,7 @@
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_EC.js b/core/l10n/es_EC.js
index 93e2871d2c2..90fe230c60d 100644
--- a/core/l10n/es_EC.js
+++ b/core/l10n/es_EC.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -315,6 +314,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_EC.json b/core/l10n/es_EC.json
index d6acd263efa..5c08874223b 100644
--- a/core/l10n/es_EC.json
+++ b/core/l10n/es_EC.json
@@ -48,7 +48,6 @@
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -313,6 +312,7 @@
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_GT.js b/core/l10n/es_GT.js
index 93e2871d2c2..90fe230c60d 100644
--- a/core/l10n/es_GT.js
+++ b/core/l10n/es_GT.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -315,6 +314,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_GT.json b/core/l10n/es_GT.json
index d6acd263efa..5c08874223b 100644
--- a/core/l10n/es_GT.json
+++ b/core/l10n/es_GT.json
@@ -48,7 +48,6 @@
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -313,6 +312,7 @@
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_HN.js b/core/l10n/es_HN.js
index 93e2871d2c2..90fe230c60d 100644
--- a/core/l10n/es_HN.js
+++ b/core/l10n/es_HN.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -315,6 +314,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_HN.json b/core/l10n/es_HN.json
index d6acd263efa..5c08874223b 100644
--- a/core/l10n/es_HN.json
+++ b/core/l10n/es_HN.json
@@ -48,7 +48,6 @@
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -313,6 +312,7 @@
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_MX.js b/core/l10n/es_MX.js
index 93e2871d2c2..90fe230c60d 100644
--- a/core/l10n/es_MX.js
+++ b/core/l10n/es_MX.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -315,6 +314,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_MX.json b/core/l10n/es_MX.json
index d6acd263efa..5c08874223b 100644
--- a/core/l10n/es_MX.json
+++ b/core/l10n/es_MX.json
@@ -48,7 +48,6 @@
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -313,6 +312,7 @@
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_NI.js b/core/l10n/es_NI.js
index 93e2871d2c2..90fe230c60d 100644
--- a/core/l10n/es_NI.js
+++ b/core/l10n/es_NI.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -315,6 +314,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_NI.json b/core/l10n/es_NI.json
index d6acd263efa..5c08874223b 100644
--- a/core/l10n/es_NI.json
+++ b/core/l10n/es_NI.json
@@ -48,7 +48,6 @@
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -313,6 +312,7 @@
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_PA.js b/core/l10n/es_PA.js
index 93e2871d2c2..90fe230c60d 100644
--- a/core/l10n/es_PA.js
+++ b/core/l10n/es_PA.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -315,6 +314,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_PA.json b/core/l10n/es_PA.json
index d6acd263efa..5c08874223b 100644
--- a/core/l10n/es_PA.json
+++ b/core/l10n/es_PA.json
@@ -48,7 +48,6 @@
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -313,6 +312,7 @@
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_PE.js b/core/l10n/es_PE.js
index 93e2871d2c2..90fe230c60d 100644
--- a/core/l10n/es_PE.js
+++ b/core/l10n/es_PE.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -315,6 +314,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_PE.json b/core/l10n/es_PE.json
index d6acd263efa..5c08874223b 100644
--- a/core/l10n/es_PE.json
+++ b/core/l10n/es_PE.json
@@ -48,7 +48,6 @@
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -313,6 +312,7 @@
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_PR.js b/core/l10n/es_PR.js
index 93e2871d2c2..90fe230c60d 100644
--- a/core/l10n/es_PR.js
+++ b/core/l10n/es_PR.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -315,6 +314,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_PR.json b/core/l10n/es_PR.json
index d6acd263efa..5c08874223b 100644
--- a/core/l10n/es_PR.json
+++ b/core/l10n/es_PR.json
@@ -48,7 +48,6 @@
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -313,6 +312,7 @@
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_PY.js b/core/l10n/es_PY.js
index 93e2871d2c2..90fe230c60d 100644
--- a/core/l10n/es_PY.js
+++ b/core/l10n/es_PY.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -315,6 +314,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_PY.json b/core/l10n/es_PY.json
index d6acd263efa..5c08874223b 100644
--- a/core/l10n/es_PY.json
+++ b/core/l10n/es_PY.json
@@ -48,7 +48,6 @@
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -313,6 +312,7 @@
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_SV.js b/core/l10n/es_SV.js
index 93e2871d2c2..90fe230c60d 100644
--- a/core/l10n/es_SV.js
+++ b/core/l10n/es_SV.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -315,6 +314,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_SV.json b/core/l10n/es_SV.json
index d6acd263efa..5c08874223b 100644
--- a/core/l10n/es_SV.json
+++ b/core/l10n/es_SV.json
@@ -48,7 +48,6 @@
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -313,6 +312,7 @@
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_UY.js b/core/l10n/es_UY.js
index 93e2871d2c2..90fe230c60d 100644
--- a/core/l10n/es_UY.js
+++ b/core/l10n/es_UY.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -315,6 +314,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/es_UY.json b/core/l10n/es_UY.json
index d6acd263efa..5c08874223b 100644
--- a/core/l10n/es_UY.json
+++ b/core/l10n/es_UY.json
@@ -48,7 +48,6 @@
"Reset log level" : "Restablecer nivel de bitácora",
"Starting code integrity check" : "Comenzando verificación de integridad del código",
"Finished code integrity check" : "Terminó la verificación de integridad del código ",
- "%s (3rdparty)" : "%s (de 3ros)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s",
"Already up to date" : "Ya está actualizado",
@@ -313,6 +312,7 @@
"This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacta a tu administrador del sistema si este mensaje persiste o se presentó de manera inesperada.",
"Thank you for your patience." : "Gracias por tu paciencia.",
+ "%s (3rdparty)" : "%s (de 3ros)",
"Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tus archivos están encriptados. Si no has habilitado la llave de recuperación, no habrá manera de que puedas recuperar tus datos una vez que restablezcas tu contraseña.<br />Si no estás seguro de lo que estás haciendo, por favor contacta a tu adminstrador antes de continuar. <br />¿Realmente deseas continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/et_EE.js b/core/l10n/et_EE.js
index fc2ee6e084d..6de41aa6428 100644
--- a/core/l10n/et_EE.js
+++ b/core/l10n/et_EE.js
@@ -48,7 +48,6 @@ OC.L10N.register(
"Reset log level" : "Lähtesta logi tase",
"Starting code integrity check" : "Koodi terviklikkuse kontrolli alustamine",
"Finished code integrity check" : "Koodi terviklikkuse kontrolli lõpp",
- "%s (3rdparty)" : "%s (3nda osapoole arendaja)",
"%s (incompatible)" : "%s (pole ühilduv)",
"Following apps have been disabled: %s" : "Järgnevad rakendused on välja lülitatud: %s",
"Already up to date" : "On juba ajakohane",
@@ -288,6 +287,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Se leht laetakse uuesti, kui %s instantsi on uuesti saadaval.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Kontakteeru oma süsteemihalduriga, kui see teade püsib või on tekkinud ootamatult.",
"Thank you for your patience." : "Täname kannatlikkuse eest.",
+ "%s (3rdparty)" : "%s (3nda osapoole arendaja)",
"Problem loading page, reloading in 5 seconds" : "Tõrge lehe laadimisel, ümberlaadimine 5 sekundi pärast",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Sinu failid on krüpteeritud. Kui sa pole taastamise võtit veel määranud, siis pole präast parooli taastamist mingit võimalust sinu andmeid tagasi saada. <br />Kui sa pole kindel, mida teha, siis palun väta enne jätkamist ühendust oma administaatoriga. <br />Oled sa kindel, et sa soovid jätkata?",
"Ok" : "Ok",
diff --git a/core/l10n/et_EE.json b/core/l10n/et_EE.json
index e2e6a6f3387..de4de4bbaa2 100644
--- a/core/l10n/et_EE.json
+++ b/core/l10n/et_EE.json
@@ -46,7 +46,6 @@
"Reset log level" : "Lähtesta logi tase",
"Starting code integrity check" : "Koodi terviklikkuse kontrolli alustamine",
"Finished code integrity check" : "Koodi terviklikkuse kontrolli lõpp",
- "%s (3rdparty)" : "%s (3nda osapoole arendaja)",
"%s (incompatible)" : "%s (pole ühilduv)",
"Following apps have been disabled: %s" : "Järgnevad rakendused on välja lülitatud: %s",
"Already up to date" : "On juba ajakohane",
@@ -286,6 +285,7 @@
"This page will refresh itself when the %s instance is available again." : "Se leht laetakse uuesti, kui %s instantsi on uuesti saadaval.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Kontakteeru oma süsteemihalduriga, kui see teade püsib või on tekkinud ootamatult.",
"Thank you for your patience." : "Täname kannatlikkuse eest.",
+ "%s (3rdparty)" : "%s (3nda osapoole arendaja)",
"Problem loading page, reloading in 5 seconds" : "Tõrge lehe laadimisel, ümberlaadimine 5 sekundi pärast",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Sinu failid on krüpteeritud. Kui sa pole taastamise võtit veel määranud, siis pole präast parooli taastamist mingit võimalust sinu andmeid tagasi saada. <br />Kui sa pole kindel, mida teha, siis palun väta enne jätkamist ühendust oma administaatoriga. <br />Oled sa kindel, et sa soovid jätkata?",
"Ok" : "Ok",
diff --git a/core/l10n/eu.js b/core/l10n/eu.js
index d4dfee052ae..c3accbfe225 100644
--- a/core/l10n/eu.js
+++ b/core/l10n/eu.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Log maila berrezarri",
"Starting code integrity check" : "Kodearen integritate egiaztapena hasten",
"Finished code integrity check" : "Kodearen integritate egiaztapena bukatuta",
- "%s (3rdparty)" : "%s (hirugarrenekoa)",
"%s (incompatible)" : "%s (bateraezina)",
"Following apps have been disabled: %s" : "Hurrengo aplikazioak desgaitu egin dira: %s",
"Already up to date" : "Dagoeneko eguneratuta",
@@ -290,6 +289,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Orri honek bere burua eguneratuko du %s instantzia berriz prest dagoenean.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Jarri harremanetan zure sistema administratzailearekin mezu hau irauten badu edo bat-batean agertu bada.",
"Thank you for your patience." : "Milesker zure patzientziagatik.",
+ "%s (3rdparty)" : "%s (hirugarrenekoa)",
"Problem loading page, reloading in 5 seconds" : "Arazoa orria kargatzerakoan, 5 segundotan birkargatzen",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Zure fitxategiak enkriptaturik daude. Ez baduzu berreskuratze gakoa gaitzen pasahitza berrabiaraztean ez da zure fitxategiak berreskuratzeko modurik egongo. <br />Zer egin ziur ez bazaude kudeatzailearekin harremanetan ipini jarraitu aurretik.<br /> Ziur zaude aurrera jarraitu nahi duzula?",
"Ok" : "Ados",
diff --git a/core/l10n/eu.json b/core/l10n/eu.json
index b679c5b3386..cd7b9325847 100644
--- a/core/l10n/eu.json
+++ b/core/l10n/eu.json
@@ -48,7 +48,6 @@
"Reset log level" : "Log maila berrezarri",
"Starting code integrity check" : "Kodearen integritate egiaztapena hasten",
"Finished code integrity check" : "Kodearen integritate egiaztapena bukatuta",
- "%s (3rdparty)" : "%s (hirugarrenekoa)",
"%s (incompatible)" : "%s (bateraezina)",
"Following apps have been disabled: %s" : "Hurrengo aplikazioak desgaitu egin dira: %s",
"Already up to date" : "Dagoeneko eguneratuta",
@@ -288,6 +287,7 @@
"This page will refresh itself when the %s instance is available again." : "Orri honek bere burua eguneratuko du %s instantzia berriz prest dagoenean.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Jarri harremanetan zure sistema administratzailearekin mezu hau irauten badu edo bat-batean agertu bada.",
"Thank you for your patience." : "Milesker zure patzientziagatik.",
+ "%s (3rdparty)" : "%s (hirugarrenekoa)",
"Problem loading page, reloading in 5 seconds" : "Arazoa orria kargatzerakoan, 5 segundotan birkargatzen",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Zure fitxategiak enkriptaturik daude. Ez baduzu berreskuratze gakoa gaitzen pasahitza berrabiaraztean ez da zure fitxategiak berreskuratzeko modurik egongo. <br />Zer egin ziur ez bazaude kudeatzailearekin harremanetan ipini jarraitu aurretik.<br /> Ziur zaude aurrera jarraitu nahi duzula?",
"Ok" : "Ados",
diff --git a/core/l10n/fa.js b/core/l10n/fa.js
index 7c3155de252..e01bfacd654 100644
--- a/core/l10n/fa.js
+++ b/core/l10n/fa.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Reset log level",
"Starting code integrity check" : "Starting code integrity check",
"Finished code integrity check" : "Finished code integrity check",
- "%s (3rdparty)" : "%s (3rdparty)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "برنامه های زیر غیر فعال شده اند %s",
"Already up to date" : "در حال حاضر بروز است",
@@ -269,6 +268,7 @@ OC.L10N.register(
"Detailed logs" : "Detailed logs",
"Update needed" : "نیاز به روز رسانی دارد",
"Thank you for your patience." : "از صبر شما متشکریم",
+ "%s (3rdparty)" : "%s (3rdparty)",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "فایل های شما رمزگذاری شده اند. اگر شما کلید بازیابی را فعال نکرده اید، پس از راه اندازی مجدد رمزعبور هیچ راهی برای بازگشت اطلاعاتتان وجود نخواهد داشت.در صورت عدم اطمینان به انجام کار، لطفا ابتدا با مدیر خود تماس بگیرید. آیا واقعا میخواهید ادامه دهید ؟",
"Ok" : "قبول",
"Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "وب سرور شما هنوز به درستی برای هماهنگ سازی فایل تنظیم نشده است WebDAV به نظر می رسد خراب است.",
diff --git a/core/l10n/fa.json b/core/l10n/fa.json
index 7e14c2a1a2f..fa87cb808f4 100644
--- a/core/l10n/fa.json
+++ b/core/l10n/fa.json
@@ -48,7 +48,6 @@
"Reset log level" : "Reset log level",
"Starting code integrity check" : "Starting code integrity check",
"Finished code integrity check" : "Finished code integrity check",
- "%s (3rdparty)" : "%s (3rdparty)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "برنامه های زیر غیر فعال شده اند %s",
"Already up to date" : "در حال حاضر بروز است",
@@ -267,6 +266,7 @@
"Detailed logs" : "Detailed logs",
"Update needed" : "نیاز به روز رسانی دارد",
"Thank you for your patience." : "از صبر شما متشکریم",
+ "%s (3rdparty)" : "%s (3rdparty)",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "فایل های شما رمزگذاری شده اند. اگر شما کلید بازیابی را فعال نکرده اید، پس از راه اندازی مجدد رمزعبور هیچ راهی برای بازگشت اطلاعاتتان وجود نخواهد داشت.در صورت عدم اطمینان به انجام کار، لطفا ابتدا با مدیر خود تماس بگیرید. آیا واقعا میخواهید ادامه دهید ؟",
"Ok" : "قبول",
"Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "وب سرور شما هنوز به درستی برای هماهنگ سازی فایل تنظیم نشده است WebDAV به نظر می رسد خراب است.",
diff --git a/core/l10n/fi.js b/core/l10n/fi.js
index 3e25a12d36b..763b3918290 100644
--- a/core/l10n/fi.js
+++ b/core/l10n/fi.js
@@ -49,7 +49,6 @@ OC.L10N.register(
"Reset log level" : "Nollattu lokitaso",
"Starting code integrity check" : "Aloitetaan koodin eheystarkistus",
"Finished code integrity check" : "Koodin eheystarkistus suoritettu",
- "%s (3rdparty)" : "%s (kolmannen osapuolen)",
"%s (incompatible)" : "%s (ei yhteensopiva)",
"Following apps have been disabled: %s" : "Seuraavat sovellukset on poistettu käytöstä: %s",
"Already up to date" : "Kaikki on jo ajan tasalla",
@@ -290,6 +289,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Tämä sivu päivittää itsensä, kun %s on jälleen käytettävissä.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Ota yhteys järjestelmän ylläpitäjään, jos tämä viesti ilmenee uudelleen tai odottamatta.",
"Thank you for your patience." : "Kiitos kärsivällisyydestäsi.",
+ "%s (3rdparty)" : "%s (kolmannen osapuolen)",
"Problem loading page, reloading in 5 seconds" : "Ongelma sivun lataamisessa, päivitetään 5 sekunnin kuluttua",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tiedostosi on salattu. Jos et ole ottanut käyttöön palautusavainta, tietojasi ei ole mahdollista palauttaa salasanan nollaamisen jälkeen.<br />Jos et ole varma mitä tehdä, ota yhteys ylläpitäjään.<br />Haluatko varmasti jatkaa?",
"Ok" : "Ok",
diff --git a/core/l10n/fi.json b/core/l10n/fi.json
index 7da9715ab0b..f719fb600b9 100644
--- a/core/l10n/fi.json
+++ b/core/l10n/fi.json
@@ -47,7 +47,6 @@
"Reset log level" : "Nollattu lokitaso",
"Starting code integrity check" : "Aloitetaan koodin eheystarkistus",
"Finished code integrity check" : "Koodin eheystarkistus suoritettu",
- "%s (3rdparty)" : "%s (kolmannen osapuolen)",
"%s (incompatible)" : "%s (ei yhteensopiva)",
"Following apps have been disabled: %s" : "Seuraavat sovellukset on poistettu käytöstä: %s",
"Already up to date" : "Kaikki on jo ajan tasalla",
@@ -288,6 +287,7 @@
"This page will refresh itself when the %s instance is available again." : "Tämä sivu päivittää itsensä, kun %s on jälleen käytettävissä.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Ota yhteys järjestelmän ylläpitäjään, jos tämä viesti ilmenee uudelleen tai odottamatta.",
"Thank you for your patience." : "Kiitos kärsivällisyydestäsi.",
+ "%s (3rdparty)" : "%s (kolmannen osapuolen)",
"Problem loading page, reloading in 5 seconds" : "Ongelma sivun lataamisessa, päivitetään 5 sekunnin kuluttua",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tiedostosi on salattu. Jos et ole ottanut käyttöön palautusavainta, tietojasi ei ole mahdollista palauttaa salasanan nollaamisen jälkeen.<br />Jos et ole varma mitä tehdä, ota yhteys ylläpitäjään.<br />Haluatko varmasti jatkaa?",
"Ok" : "Ok",
diff --git a/core/l10n/fr.js b/core/l10n/fr.js
index c840f17ffd8..167d65781e5 100644
--- a/core/l10n/fr.js
+++ b/core/l10n/fr.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Réinitialisation du niveau de journalisation",
"Starting code integrity check" : "Lancement de la vérification d'intégrité du code",
"Finished code integrity check" : "Fin de la vérification d’intégrité du code",
- "%s (3rdparty)" : "%s (origine tierce)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Les applications suivantes ont été désactivées : %s",
"Already up to date" : "Déjà à jour",
@@ -122,6 +121,7 @@ OC.L10N.register(
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Des fichiers n'ont pas passé la vérification d’intégrité. Vous trouverez plus d'information sur comment résoudre ce problème dans notre <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste des fichiers invalides…</a> / <a href=\"{rescanEndpoint}\">Rescanner…</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "Le PHP OPcache n'est pas correctement configuré. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Pour de meilleure performance nous recommandons </a> d'utiliser les paramètres suivant dans le <code>php.ini</code> :",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "La fonction PHP \"set_time_limit\" n'est pas disponible. Cela pourrait entraîner l'arrêt des scripts à mi-exécution en bloquant votre installation. Nous vous recommandons vivement d'activer cette fonction.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Votre PHP ne prend pas en charge FreeType, provoquant la casse des images de profil et de l'interface des paramètres.",
"Error occurred while checking server setup" : "Une erreur s'est produite lors de la vérification de la configuration du serveur",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Votre dossier de données et vos fichiers sont probablement accessibles depuis internet. Le fichier .htaccess ne fonctionne pas. Nous vous recommandons vivement de configurer votre serveur web de façon à ce que ce dossier de données ne soit plus accessible, ou de le déplacer hors de la racine du serveur web.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "L'en-tête HTTP \"{header}\" n'est pas configurée pour être égale à \"{expected}\". Ceci constitue un risque potentiel relatif à la sécurité et à la vie privée étant donné qu'il est recommandé d'ajuster ce paramètre.",
@@ -276,6 +276,7 @@ OC.L10N.register(
"Username or email" : "Nom d'utilisateur ou adresse de courriel",
"Log in" : "Se connecter",
"Wrong password." : "Mot de passe incorrect.",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "Nous avons détecté plusieurs tentatives de connexion invalide depuis votre adresse IP. C'est pourquoi votre prochaine connexion sera retardée de 30 secondes.",
"Stay logged in" : "Rester connecté",
"Forgot password?" : "Mot de passe oublié ?",
"Back to log in" : "Retour à la page de connexion",
@@ -315,6 +316,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Cette page se rafraîchira d'elle-même lorsque l'instance %s sera à nouveau disponible.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Veuillez contacter votre administrateur système si ce message persiste ou apparaît de façon inattendue.",
"Thank you for your patience." : "Merci de votre patience.",
+ "%s (3rdparty)" : "%s (origine tierce)",
"Problem loading page, reloading in 5 seconds" : "Problème de chargement de la page, actualisation dans 5 secondes",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Vos fichiers sont chiffrés. Si vous n'avez pas activé la clé de récupération, il n'y aura aucun moyen de récupérer vos données une fois le mot de passe réinitialisé.<br />Si vous n'êtes pas sûr de ce que vous faites, veuillez contacter votre administrateur avant de continuer. <br />Voulez-vous vraiment continuer ?",
"Ok" : "Ok",
diff --git a/core/l10n/fr.json b/core/l10n/fr.json
index 00b91b4d820..4ab798721b9 100644
--- a/core/l10n/fr.json
+++ b/core/l10n/fr.json
@@ -48,7 +48,6 @@
"Reset log level" : "Réinitialisation du niveau de journalisation",
"Starting code integrity check" : "Lancement de la vérification d'intégrité du code",
"Finished code integrity check" : "Fin de la vérification d’intégrité du code",
- "%s (3rdparty)" : "%s (origine tierce)",
"%s (incompatible)" : "%s (incompatible)",
"Following apps have been disabled: %s" : "Les applications suivantes ont été désactivées : %s",
"Already up to date" : "Déjà à jour",
@@ -120,6 +119,7 @@
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Des fichiers n'ont pas passé la vérification d’intégrité. Vous trouverez plus d'information sur comment résoudre ce problème dans notre <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste des fichiers invalides…</a> / <a href=\"{rescanEndpoint}\">Rescanner…</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "Le PHP OPcache n'est pas correctement configuré. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Pour de meilleure performance nous recommandons </a> d'utiliser les paramètres suivant dans le <code>php.ini</code> :",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "La fonction PHP \"set_time_limit\" n'est pas disponible. Cela pourrait entraîner l'arrêt des scripts à mi-exécution en bloquant votre installation. Nous vous recommandons vivement d'activer cette fonction.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Votre PHP ne prend pas en charge FreeType, provoquant la casse des images de profil et de l'interface des paramètres.",
"Error occurred while checking server setup" : "Une erreur s'est produite lors de la vérification de la configuration du serveur",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Votre dossier de données et vos fichiers sont probablement accessibles depuis internet. Le fichier .htaccess ne fonctionne pas. Nous vous recommandons vivement de configurer votre serveur web de façon à ce que ce dossier de données ne soit plus accessible, ou de le déplacer hors de la racine du serveur web.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "L'en-tête HTTP \"{header}\" n'est pas configurée pour être égale à \"{expected}\". Ceci constitue un risque potentiel relatif à la sécurité et à la vie privée étant donné qu'il est recommandé d'ajuster ce paramètre.",
@@ -274,6 +274,7 @@
"Username or email" : "Nom d'utilisateur ou adresse de courriel",
"Log in" : "Se connecter",
"Wrong password." : "Mot de passe incorrect.",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "Nous avons détecté plusieurs tentatives de connexion invalide depuis votre adresse IP. C'est pourquoi votre prochaine connexion sera retardée de 30 secondes.",
"Stay logged in" : "Rester connecté",
"Forgot password?" : "Mot de passe oublié ?",
"Back to log in" : "Retour à la page de connexion",
@@ -313,6 +314,7 @@
"This page will refresh itself when the %s instance is available again." : "Cette page se rafraîchira d'elle-même lorsque l'instance %s sera à nouveau disponible.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Veuillez contacter votre administrateur système si ce message persiste ou apparaît de façon inattendue.",
"Thank you for your patience." : "Merci de votre patience.",
+ "%s (3rdparty)" : "%s (origine tierce)",
"Problem loading page, reloading in 5 seconds" : "Problème de chargement de la page, actualisation dans 5 secondes",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Vos fichiers sont chiffrés. Si vous n'avez pas activé la clé de récupération, il n'y aura aucun moyen de récupérer vos données une fois le mot de passe réinitialisé.<br />Si vous n'êtes pas sûr de ce que vous faites, veuillez contacter votre administrateur avant de continuer. <br />Voulez-vous vraiment continuer ?",
"Ok" : "Ok",
diff --git a/core/l10n/hu.js b/core/l10n/hu.js
index 73670cb2525..358089010e3 100644
--- a/core/l10n/hu.js
+++ b/core/l10n/hu.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Naplózási szint visszaállítása",
"Starting code integrity check" : "Kódintegritás ellenőrzés elindítása",
"Finished code integrity check" : "Kódintegritás ellenőrzés befejezve!",
- "%s (3rdparty)" : "%s (harmadik fél által)",
"%s (incompatible)" : "%s (nem kompatibilis)",
"Following apps have been disabled: %s" : "A következő alkalmazások le lettek tiltva: %s",
"Already up to date" : "Már a legfrissebb változat",
@@ -122,6 +121,7 @@ OC.L10N.register(
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Pár fájl nem ment át az integritás ellenőrzésen. További információk a helyzet megoldására a <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentációban </a> található. (<a href=\"{codeIntegrityDownloadEndpoint}\">Érvénytelen fájlok listája…</a> / <a href=\"{rescanEndpoint}\">Újraellenőrzés…</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "A PHP OPcache nincs megfelelően beállítva. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">A jobb teljesítményért</a> használd az alábbi beállításokat a <code>php.ini</code>-ben:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "A \"set_time_limit\" beállítás nem elérhető. Így egy script megszakadhat futás kötzben, a telepítésed megbénítását okozhatva. Erősen javasoljuk a beállítás engedélyezését.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "A PHP-ból hiányzik a FreeType-támogatás. Ez a beállítási felület és a profilképek hibás megjelenítését okozhatja.",
"Error occurred while checking server setup" : "Hiba történt a szerver beállítások ellenőrzése közben",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Az adatmappád és fájljaid elérhetők az interneten. A .htaccess fájlod nem működik. Erősen javasolt, hogy a webszerveredet úgy állítsd be, hogy a mappa tartalma ne legyen közvetlenül elérhető, vagy mozgasd át a mappát a kiszolgálási területen kívülre.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "A \"{header}\" HTTP fejléc nincs beállítva, hogy megegyezzen az elvárttal \"{expected}\". Ez egy potenciális biztonsági és adatvédelmi kockázat. Kérjük, hogy változtassa meg a beállításokat.",
@@ -315,6 +315,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Ez az oldal frissíteni fogja magát amint a(z) %s példány ismét elérhető.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Ha ez az üzenet ismételten vagy indokolatlanul megjelenik, akkor keresse fel a rendszergazdáját!",
"Thank you for your patience." : "Köszönjük a türelmét!",
+ "%s (3rdparty)" : "%s (harmadik fél által)",
"Problem loading page, reloading in 5 seconds" : "Probléma adódott az oldal betöltése közben, újratöltés 5 másodpercen belül",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Az Ön fájljai titkosítva vannak. Ha nem engedélyezte korábban az adatok visszanyeréséhez szükséges kulcs használatát, akkor a jelszó megváltoztatását követően nem fog hozzáférni az adataihoz. Ha nem biztos abban, hogy mit kellene tennie, akkor kérdezze meg a rendszergazdát, mielőtt továbbmenne.<br />Biztos, hogy folytatni kívánja?",
"Ok" : "Ok",
diff --git a/core/l10n/hu.json b/core/l10n/hu.json
index b4782dfea3f..3cb81e03643 100644
--- a/core/l10n/hu.json
+++ b/core/l10n/hu.json
@@ -48,7 +48,6 @@
"Reset log level" : "Naplózási szint visszaállítása",
"Starting code integrity check" : "Kódintegritás ellenőrzés elindítása",
"Finished code integrity check" : "Kódintegritás ellenőrzés befejezve!",
- "%s (3rdparty)" : "%s (harmadik fél által)",
"%s (incompatible)" : "%s (nem kompatibilis)",
"Following apps have been disabled: %s" : "A következő alkalmazások le lettek tiltva: %s",
"Already up to date" : "Már a legfrissebb változat",
@@ -120,6 +119,7 @@
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Pár fájl nem ment át az integritás ellenőrzésen. További információk a helyzet megoldására a <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentációban </a> található. (<a href=\"{codeIntegrityDownloadEndpoint}\">Érvénytelen fájlok listája…</a> / <a href=\"{rescanEndpoint}\">Újraellenőrzés…</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "A PHP OPcache nincs megfelelően beállítva. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">A jobb teljesítményért</a> használd az alábbi beállításokat a <code>php.ini</code>-ben:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "A \"set_time_limit\" beállítás nem elérhető. Így egy script megszakadhat futás kötzben, a telepítésed megbénítását okozhatva. Erősen javasoljuk a beállítás engedélyezését.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "A PHP-ból hiányzik a FreeType-támogatás. Ez a beállítási felület és a profilképek hibás megjelenítését okozhatja.",
"Error occurred while checking server setup" : "Hiba történt a szerver beállítások ellenőrzése közben",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Az adatmappád és fájljaid elérhetők az interneten. A .htaccess fájlod nem működik. Erősen javasolt, hogy a webszerveredet úgy állítsd be, hogy a mappa tartalma ne legyen közvetlenül elérhető, vagy mozgasd át a mappát a kiszolgálási területen kívülre.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "A \"{header}\" HTTP fejléc nincs beállítva, hogy megegyezzen az elvárttal \"{expected}\". Ez egy potenciális biztonsági és adatvédelmi kockázat. Kérjük, hogy változtassa meg a beállításokat.",
@@ -313,6 +313,7 @@
"This page will refresh itself when the %s instance is available again." : "Ez az oldal frissíteni fogja magát amint a(z) %s példány ismét elérhető.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Ha ez az üzenet ismételten vagy indokolatlanul megjelenik, akkor keresse fel a rendszergazdáját!",
"Thank you for your patience." : "Köszönjük a türelmét!",
+ "%s (3rdparty)" : "%s (harmadik fél által)",
"Problem loading page, reloading in 5 seconds" : "Probléma adódott az oldal betöltése közben, újratöltés 5 másodpercen belül",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Az Ön fájljai titkosítva vannak. Ha nem engedélyezte korábban az adatok visszanyeréséhez szükséges kulcs használatát, akkor a jelszó megváltoztatását követően nem fog hozzáférni az adataihoz. Ha nem biztos abban, hogy mit kellene tennie, akkor kérdezze meg a rendszergazdát, mielőtt továbbmenne.<br />Biztos, hogy folytatni kívánja?",
"Ok" : "Ok",
diff --git a/core/l10n/id.js b/core/l10n/id.js
index e5e9f59ca62..942d9c486ff 100644
--- a/core/l10n/id.js
+++ b/core/l10n/id.js
@@ -41,7 +41,6 @@ OC.L10N.register(
"Reset log level" : "Atur ulang log level",
"Starting code integrity check" : "Memulai pengecekan integritas kode",
"Finished code integrity check" : "Pengecekan integritas kode selesai",
- "%s (3rdparty)" : "%s (pihak ke-3)",
"%s (incompatible)" : "%s (tidak kompatibel)",
"Following apps have been disabled: %s" : "Aplikasi berikut telah dinonaktifkan: %s",
"Already up to date" : "Sudah yang terbaru",
@@ -232,6 +231,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Halaman ini akan disegarkan dengan sendiri saat instansi %s tersebut tersedia kembali.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Hubungi administrator sistem anda jika pesan ini terus muncul atau muncul tiba-tiba.",
"Thank you for your patience." : "Terima kasih atas kesabaran anda.",
+ "%s (3rdparty)" : "%s (pihak ke-3)",
"Problem loading page, reloading in 5 seconds" : "Terjadi masalah dalam memuat laman, mencoba lagi dalam 5 detik",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Berkas-berkas Anda terenkripsi. Jika Anda tidak mengaktifkan kunci pemulihan, tidak ada cara lain untuk mendapatkan data Anda kembali setelah sandi di setel ulang.<br />Jika Anda tidak yakin dengan apa yang akan Anda dilakukan, mohon hubungi administrator Anda sebelum melanjutkan. <br />Apakah Anda yakin ingin melanjutkan?",
"Ok" : "Oke",
diff --git a/core/l10n/id.json b/core/l10n/id.json
index bc2e45f3922..d4ebc26d05e 100644
--- a/core/l10n/id.json
+++ b/core/l10n/id.json
@@ -39,7 +39,6 @@
"Reset log level" : "Atur ulang log level",
"Starting code integrity check" : "Memulai pengecekan integritas kode",
"Finished code integrity check" : "Pengecekan integritas kode selesai",
- "%s (3rdparty)" : "%s (pihak ke-3)",
"%s (incompatible)" : "%s (tidak kompatibel)",
"Following apps have been disabled: %s" : "Aplikasi berikut telah dinonaktifkan: %s",
"Already up to date" : "Sudah yang terbaru",
@@ -230,6 +229,7 @@
"This page will refresh itself when the %s instance is available again." : "Halaman ini akan disegarkan dengan sendiri saat instansi %s tersebut tersedia kembali.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Hubungi administrator sistem anda jika pesan ini terus muncul atau muncul tiba-tiba.",
"Thank you for your patience." : "Terima kasih atas kesabaran anda.",
+ "%s (3rdparty)" : "%s (pihak ke-3)",
"Problem loading page, reloading in 5 seconds" : "Terjadi masalah dalam memuat laman, mencoba lagi dalam 5 detik",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Berkas-berkas Anda terenkripsi. Jika Anda tidak mengaktifkan kunci pemulihan, tidak ada cara lain untuk mendapatkan data Anda kembali setelah sandi di setel ulang.<br />Jika Anda tidak yakin dengan apa yang akan Anda dilakukan, mohon hubungi administrator Anda sebelum melanjutkan. <br />Apakah Anda yakin ingin melanjutkan?",
"Ok" : "Oke",
diff --git a/core/l10n/is.js b/core/l10n/is.js
index 333dbff6eb5..4b15e2e8f6e 100644
--- a/core/l10n/is.js
+++ b/core/l10n/is.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Frumstilla annálsstig",
"Starting code integrity check" : "Ræsi athugun á áreiðanleika kóða",
"Finished code integrity check" : "Lauk athugun á áreiðanleika kóða",
- "%s (3rdparty)" : "%s (frá 3. aðila)",
"%s (incompatible)" : "%s (ósamhæft)",
"Following apps have been disabled: %s" : "Eftirfarandi forrit hafa verið gerð óvirk: %s",
"Already up to date" : "Allt uppfært nú þegar",
@@ -297,6 +296,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Þessi síða mun uppfæra sig þegar %s er í boði á ný.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Hafðu samband við kerfisstjóra ef þessi skilaboð eru viðvarandi eða birtust óvænt.",
"Thank you for your patience." : "Þakka þér fyrir biðlundina.",
+ "%s (3rdparty)" : "%s (frá 3. aðila)",
"Problem loading page, reloading in 5 seconds" : "Vandamál við að hlaða inn síðu, endurhleð eftir 5 sekúndur",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Skrárnar þínar eru dulritaðar. Ef þú hefur ekki virkjað endurheimtingarlykilinn, þá verður engin leið til að fá gögnin þín til baka eftir lykilorðið þitt er endurstillt.<br />Ef þú ert ekki viss hvað eigi að gera, skaltu hafa samband við kerfisstjórann áður en þú heldur áfram. <br />Viltu halda áfram?",
"Ok" : "Í lagi",
diff --git a/core/l10n/is.json b/core/l10n/is.json
index 2c9595439b9..1e19e51b81b 100644
--- a/core/l10n/is.json
+++ b/core/l10n/is.json
@@ -48,7 +48,6 @@
"Reset log level" : "Frumstilla annálsstig",
"Starting code integrity check" : "Ræsi athugun á áreiðanleika kóða",
"Finished code integrity check" : "Lauk athugun á áreiðanleika kóða",
- "%s (3rdparty)" : "%s (frá 3. aðila)",
"%s (incompatible)" : "%s (ósamhæft)",
"Following apps have been disabled: %s" : "Eftirfarandi forrit hafa verið gerð óvirk: %s",
"Already up to date" : "Allt uppfært nú þegar",
@@ -295,6 +294,7 @@
"This page will refresh itself when the %s instance is available again." : "Þessi síða mun uppfæra sig þegar %s er í boði á ný.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Hafðu samband við kerfisstjóra ef þessi skilaboð eru viðvarandi eða birtust óvænt.",
"Thank you for your patience." : "Þakka þér fyrir biðlundina.",
+ "%s (3rdparty)" : "%s (frá 3. aðila)",
"Problem loading page, reloading in 5 seconds" : "Vandamál við að hlaða inn síðu, endurhleð eftir 5 sekúndur",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Skrárnar þínar eru dulritaðar. Ef þú hefur ekki virkjað endurheimtingarlykilinn, þá verður engin leið til að fá gögnin þín til baka eftir lykilorðið þitt er endurstillt.<br />Ef þú ert ekki viss hvað eigi að gera, skaltu hafa samband við kerfisstjórann áður en þú heldur áfram. <br />Viltu halda áfram?",
"Ok" : "Í lagi",
diff --git a/core/l10n/it.js b/core/l10n/it.js
index d6613225981..7875e40504b 100644
--- a/core/l10n/it.js
+++ b/core/l10n/it.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Ripristina il livello del log",
"Starting code integrity check" : "Avvio del controllo di integrità del codice",
"Finished code integrity check" : "Controllo di integrità del codice terminato",
- "%s (3rdparty)" : "%s (terze parti)",
"%s (incompatible)" : "%s (incompatibile)",
"Following apps have been disabled: %s" : "Le seguenti applicazioni sono state disabilitate: %s",
"Already up to date" : "Già aggiornato",
@@ -122,6 +121,7 @@ OC.L10N.register(
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alcuni file non hanno superato il controllo di integrità. Ulteriori informazioni su come risolvere questo problema sono disponibili nella <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentazione</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Elenco dei file non validi…</a> / <a href=\"{rescanEndpoint}\">Nuova scansione…</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "PHP OpCache non è configurata correttamente. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Per prestazioni migliori consigliamo</a> di utilizzare le impostazioni seguenti in <code>php.ini</code>:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "La funzione PHP \"set_time_limit\" non è disponibile. Ciò potrebbe comportare l'interruzione di script durante l'esecuzione, compromettendo la tua installazione. Ti consigliamo vivamente di abilitare questa funzione.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "La tua versione di PHP non supporta FreeType. Ciò causerà problemi con le immagini dei profili e con l'interfaccia delle impostazioni.",
"Error occurred while checking server setup" : "Si è verificato un errore durante il controllo della configurazione del server",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "La cartella dei dati e i tuoi file sono probabilmente accessibili da Internet. Il file .htaccess non funziona. Ti consigliamo vivamente di configurare il server web in modo che la cartella dei dati non sia più accessibile o di spostare la cartella fuori dalla radice del server web.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "L'intestazione HTTP \"{header}\" non è configurata come \"{expected}\". \nQuesto è un potenziale rischio di sicurezza o di riservatezza, e noi consigliamo di modificare questa impostazione.",
@@ -276,6 +276,7 @@ OC.L10N.register(
"Username or email" : "Nome utente o email",
"Log in" : "Accedi",
"Wrong password." : "Password errata.",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "Abbiamo rilevato molti tentativi di autenticazione falliti dal tuo indirizzo IP. Di conseguenza il prossimo tentativo è ritardato di 30 secondi.",
"Stay logged in" : "Rimani collegato",
"Forgot password?" : "Hai dimenticato la password?",
"Back to log in" : "Torna alla schermata di accesso",
@@ -315,6 +316,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Questa pagina si aggiornerà quando l'istanza di %s sarà nuovamente disponibile.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contatta il tuo amministratore di sistema se questo messaggio persiste o appare inaspettatamente.",
"Thank you for your patience." : "Grazie per la pazienza.",
+ "%s (3rdparty)" : "%s (terze parti)",
"Problem loading page, reloading in 5 seconds" : "Problema durante il caricamento della pagina, aggiornamento tra 5 secondi",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "I tuoi file sono cifrati. Se non hai precedentemente abilitato la chiave di ripristino, non sarà più possibile ritrovare i tuoi dati una volta che la password sarà reimpostata.<br />Se non sei sicuro, contatta l'amministratore prima di proseguire.<br />Vuoi davvero continuare?",
"Ok" : "Ok",
diff --git a/core/l10n/it.json b/core/l10n/it.json
index 887aec4ad4f..2002e12bb7e 100644
--- a/core/l10n/it.json
+++ b/core/l10n/it.json
@@ -48,7 +48,6 @@
"Reset log level" : "Ripristina il livello del log",
"Starting code integrity check" : "Avvio del controllo di integrità del codice",
"Finished code integrity check" : "Controllo di integrità del codice terminato",
- "%s (3rdparty)" : "%s (terze parti)",
"%s (incompatible)" : "%s (incompatibile)",
"Following apps have been disabled: %s" : "Le seguenti applicazioni sono state disabilitate: %s",
"Already up to date" : "Già aggiornato",
@@ -120,6 +119,7 @@
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alcuni file non hanno superato il controllo di integrità. Ulteriori informazioni su come risolvere questo problema sono disponibili nella <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentazione</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Elenco dei file non validi…</a> / <a href=\"{rescanEndpoint}\">Nuova scansione…</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "PHP OpCache non è configurata correttamente. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Per prestazioni migliori consigliamo</a> di utilizzare le impostazioni seguenti in <code>php.ini</code>:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "La funzione PHP \"set_time_limit\" non è disponibile. Ciò potrebbe comportare l'interruzione di script durante l'esecuzione, compromettendo la tua installazione. Ti consigliamo vivamente di abilitare questa funzione.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "La tua versione di PHP non supporta FreeType. Ciò causerà problemi con le immagini dei profili e con l'interfaccia delle impostazioni.",
"Error occurred while checking server setup" : "Si è verificato un errore durante il controllo della configurazione del server",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "La cartella dei dati e i tuoi file sono probabilmente accessibili da Internet. Il file .htaccess non funziona. Ti consigliamo vivamente di configurare il server web in modo che la cartella dei dati non sia più accessibile o di spostare la cartella fuori dalla radice del server web.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "L'intestazione HTTP \"{header}\" non è configurata come \"{expected}\". \nQuesto è un potenziale rischio di sicurezza o di riservatezza, e noi consigliamo di modificare questa impostazione.",
@@ -274,6 +274,7 @@
"Username or email" : "Nome utente o email",
"Log in" : "Accedi",
"Wrong password." : "Password errata.",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "Abbiamo rilevato molti tentativi di autenticazione falliti dal tuo indirizzo IP. Di conseguenza il prossimo tentativo è ritardato di 30 secondi.",
"Stay logged in" : "Rimani collegato",
"Forgot password?" : "Hai dimenticato la password?",
"Back to log in" : "Torna alla schermata di accesso",
@@ -313,6 +314,7 @@
"This page will refresh itself when the %s instance is available again." : "Questa pagina si aggiornerà quando l'istanza di %s sarà nuovamente disponibile.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contatta il tuo amministratore di sistema se questo messaggio persiste o appare inaspettatamente.",
"Thank you for your patience." : "Grazie per la pazienza.",
+ "%s (3rdparty)" : "%s (terze parti)",
"Problem loading page, reloading in 5 seconds" : "Problema durante il caricamento della pagina, aggiornamento tra 5 secondi",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "I tuoi file sono cifrati. Se non hai precedentemente abilitato la chiave di ripristino, non sarà più possibile ritrovare i tuoi dati una volta che la password sarà reimpostata.<br />Se non sei sicuro, contatta l'amministratore prima di proseguire.<br />Vuoi davvero continuare?",
"Ok" : "Ok",
diff --git a/core/l10n/ja.js b/core/l10n/ja.js
index 74bc2a53808..4a92eaf07c2 100644
--- a/core/l10n/ja.js
+++ b/core/l10n/ja.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "ログレベルをリセット",
"Starting code integrity check" : "コード整合性の確認を開始",
"Finished code integrity check" : "コード整合性の確認が終了",
- "%s (3rdparty)" : "%s (サードパーティー)",
"%s (incompatible)" : "%s (非互換)",
"Following apps have been disabled: %s" : "以下のアプリが無効にされています: %s",
"Already up to date" : "すべて更新済",
@@ -286,6 +285,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "この画面は、サーバー %s の再起動後に自動的に更新されます。",
"Contact your system administrator if this message persists or appeared unexpectedly." : "このメッセージが引き続きもしくは予期せず現れる場合は、システム管理者に問い合わせてください。",
"Thank you for your patience." : "しばらくお待ちください。",
+ "%s (3rdparty)" : "%s (サードパーティー)",
"Problem loading page, reloading in 5 seconds" : "ページ読込に問題がありました。5秒後に再読込します",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "ファイルが暗号化されています。リカバリーキーが有効でない場合は、パスワードをリセットした後にあなたのデータを元に戻す方法はありません。<br />どういうことか分からない場合は、操作を継続する前に管理者に問い合わせてください。<br />続けてよろしいでしょうか?",
"Ok" : "OK",
diff --git a/core/l10n/ja.json b/core/l10n/ja.json
index 057fbbdc143..4e09f6c72aa 100644
--- a/core/l10n/ja.json
+++ b/core/l10n/ja.json
@@ -48,7 +48,6 @@
"Reset log level" : "ログレベルをリセット",
"Starting code integrity check" : "コード整合性の確認を開始",
"Finished code integrity check" : "コード整合性の確認が終了",
- "%s (3rdparty)" : "%s (サードパーティー)",
"%s (incompatible)" : "%s (非互換)",
"Following apps have been disabled: %s" : "以下のアプリが無効にされています: %s",
"Already up to date" : "すべて更新済",
@@ -284,6 +283,7 @@
"This page will refresh itself when the %s instance is available again." : "この画面は、サーバー %s の再起動後に自動的に更新されます。",
"Contact your system administrator if this message persists or appeared unexpectedly." : "このメッセージが引き続きもしくは予期せず現れる場合は、システム管理者に問い合わせてください。",
"Thank you for your patience." : "しばらくお待ちください。",
+ "%s (3rdparty)" : "%s (サードパーティー)",
"Problem loading page, reloading in 5 seconds" : "ページ読込に問題がありました。5秒後に再読込します",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "ファイルが暗号化されています。リカバリーキーが有効でない場合は、パスワードをリセットした後にあなたのデータを元に戻す方法はありません。<br />どういうことか分からない場合は、操作を継続する前に管理者に問い合わせてください。<br />続けてよろしいでしょうか?",
"Ok" : "OK",
diff --git a/core/l10n/ka_GE.js b/core/l10n/ka_GE.js
index 2736c219b71..80000fc1948 100644
--- a/core/l10n/ka_GE.js
+++ b/core/l10n/ka_GE.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "ლოგის დონის დაყენება საწყის პარამეტრზე",
"Starting code integrity check" : "კოდის ერთიანობის შემოწმების დაწყება",
"Finished code integrity check" : "დასრულდა კოდის ერთიანობის შემოწმება",
- "%s (3rdparty)" : "%s (მესამე მხარე)",
"%s (incompatible)" : "%s (არაა თავსებადი)",
"Following apps have been disabled: %s" : "შემდეგი აპლიკაციები გაითიშა: %s",
"Already up to date" : "უკვე განახლებულია",
@@ -122,6 +121,7 @@ OC.L10N.register(
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "გარკვეულმა ფაილება ვერ გაიარეს ერთიანობის შემოწმება. ინფორმაცია თუ როგორ აღმოფხრათ ეს პრობლემა შეგიძლიათ მოიძიოთ <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">დოკუმენტაციაში</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">არასწორი ფაილების სია...</a> / <a href=\"{rescanEndpoint}\">ხელახალი სკანირება...</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "PHP OPcache არაა სწორად კონფიგურირებული. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">უკეთესი მოქმედებისთვის რეკომენდირებულია</a> <code>php.ini</code>-ში გამოიყენოთ შემდეგი პარამეტრები:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "PHP-ს ფუნქცია \"set_time_limit\" არაა ხელმისაწვდომი. ამან შეიძლება ქმედებისას გამოიწვიოს სკრიპტების შეჩერება, ინსტალაციის შეწყვეტა. რეკომენდირებულია ამ ფუნქციის ჩართვა.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "თქვენს PHP-ს არ აქვს FreeType-ის მხარდაჭერა, რაც გამოწვევს დარღვეულ პროფილის სურათებს და პარამეტრების ინტერფეისს.",
"Error occurred while checking server setup" : "შეცდომა სერვერის მოწყობის შემოწმებისას",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "თქვენი data დირექტორია და ფაილები ალბათ წვდომადია ინტერნეტიდან. .htaccess ფაილი არ მუშაობს. მკაცრად რეკომენდირებულია ისე გაუწიოთ თქვენს ვებ-სერვერს კონფიგურაცია, რომ data დირექტორია აღარ იყოს წვდომადი, ან გაიტანოთ ის ვებ-სერვერის root დირექტორიიდან.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP დასათაურება \"{header}\" არაა კონფიგურირებული უტოლდებოდეს \"{expected}\"-ს. ეს პოტენციური უსაფრთხოების და კონფიდენციალურობის რისკია, რეკომენდირებულია ამ პარამეტრის გამოსწორება.",
@@ -276,6 +276,7 @@ OC.L10N.register(
"Username or email" : "მომხმარებლის სახელი ან ელ-ფოსტა",
"Log in" : "შესვლა",
"Wrong password." : "არასწორი პაროლი.",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "თქვენი IP მისამართით შევნიშნეთ არაერთი წარუმატებელი ავტორიზაციის მცდელობა. აქედან გამომდინარე თქვენი შემდეგი ავტორიზაციის მცდელობა შეიზღუდება დაახლოებით 30 წამით.",
"Stay logged in" : "ავტორიზებულად დარჩენა",
"Forgot password?" : "დაგავიწყდათ პაროლი?",
"Back to log in" : "უკან ავტორიზაციისკენ",
@@ -315,6 +316,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "გვერდი ავტომატურად განახლდება, როდესაც %s ინსტანცია იქნება ხელმისაწვდომელი.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "თუ ეს წერილი გამოჩნდა მოულოდნელად ან მისი გამოჩენა გრძელდება, დაუკავშირდით სისტემის ადმინისტრატორს.",
"Thank you for your patience." : "მადლობთ მოთმინებისთვის.",
+ "%s (3rdparty)" : "%s (მესამე მხარე)",
"Problem loading page, reloading in 5 seconds" : "პრობლემა გვერდის ჩატვირთვისას, ახლიდან ჩაიტვირთება 5 წამში",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "ფაილები კოდირებულია. თუ არ ჩაგირთავთ აღდგენის გასაღები, არ იქნება არანაირი გზა აღადგინოთ თვენი მონაცემები პაროლის ცვლილების შემდეგ.<br />თუ არ იცით რა გააკეთოთ, გაგრძელებამდე მიმართეთ თქვენს ადმინისტრატორს.<br />დარწმუნებული ხართ რომ გსურთ გაგრძელება?",
"Ok" : "დიახ",
diff --git a/core/l10n/ka_GE.json b/core/l10n/ka_GE.json
index 3fcea871113..23815b1865d 100644
--- a/core/l10n/ka_GE.json
+++ b/core/l10n/ka_GE.json
@@ -48,7 +48,6 @@
"Reset log level" : "ლოგის დონის დაყენება საწყის პარამეტრზე",
"Starting code integrity check" : "კოდის ერთიანობის შემოწმების დაწყება",
"Finished code integrity check" : "დასრულდა კოდის ერთიანობის შემოწმება",
- "%s (3rdparty)" : "%s (მესამე მხარე)",
"%s (incompatible)" : "%s (არაა თავსებადი)",
"Following apps have been disabled: %s" : "შემდეგი აპლიკაციები გაითიშა: %s",
"Already up to date" : "უკვე განახლებულია",
@@ -120,6 +119,7 @@
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "გარკვეულმა ფაილება ვერ გაიარეს ერთიანობის შემოწმება. ინფორმაცია თუ როგორ აღმოფხრათ ეს პრობლემა შეგიძლიათ მოიძიოთ <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">დოკუმენტაციაში</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">არასწორი ფაილების სია...</a> / <a href=\"{rescanEndpoint}\">ხელახალი სკანირება...</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "PHP OPcache არაა სწორად კონფიგურირებული. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">უკეთესი მოქმედებისთვის რეკომენდირებულია</a> <code>php.ini</code>-ში გამოიყენოთ შემდეგი პარამეტრები:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "PHP-ს ფუნქცია \"set_time_limit\" არაა ხელმისაწვდომი. ამან შეიძლება ქმედებისას გამოიწვიოს სკრიპტების შეჩერება, ინსტალაციის შეწყვეტა. რეკომენდირებულია ამ ფუნქციის ჩართვა.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "თქვენს PHP-ს არ აქვს FreeType-ის მხარდაჭერა, რაც გამოწვევს დარღვეულ პროფილის სურათებს და პარამეტრების ინტერფეისს.",
"Error occurred while checking server setup" : "შეცდომა სერვერის მოწყობის შემოწმებისას",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "თქვენი data დირექტორია და ფაილები ალბათ წვდომადია ინტერნეტიდან. .htaccess ფაილი არ მუშაობს. მკაცრად რეკომენდირებულია ისე გაუწიოთ თქვენს ვებ-სერვერს კონფიგურაცია, რომ data დირექტორია აღარ იყოს წვდომადი, ან გაიტანოთ ის ვებ-სერვერის root დირექტორიიდან.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP დასათაურება \"{header}\" არაა კონფიგურირებული უტოლდებოდეს \"{expected}\"-ს. ეს პოტენციური უსაფრთხოების და კონფიდენციალურობის რისკია, რეკომენდირებულია ამ პარამეტრის გამოსწორება.",
@@ -274,6 +274,7 @@
"Username or email" : "მომხმარებლის სახელი ან ელ-ფოსტა",
"Log in" : "შესვლა",
"Wrong password." : "არასწორი პაროლი.",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "თქვენი IP მისამართით შევნიშნეთ არაერთი წარუმატებელი ავტორიზაციის მცდელობა. აქედან გამომდინარე თქვენი შემდეგი ავტორიზაციის მცდელობა შეიზღუდება დაახლოებით 30 წამით.",
"Stay logged in" : "ავტორიზებულად დარჩენა",
"Forgot password?" : "დაგავიწყდათ პაროლი?",
"Back to log in" : "უკან ავტორიზაციისკენ",
@@ -313,6 +314,7 @@
"This page will refresh itself when the %s instance is available again." : "გვერდი ავტომატურად განახლდება, როდესაც %s ინსტანცია იქნება ხელმისაწვდომელი.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "თუ ეს წერილი გამოჩნდა მოულოდნელად ან მისი გამოჩენა გრძელდება, დაუკავშირდით სისტემის ადმინისტრატორს.",
"Thank you for your patience." : "მადლობთ მოთმინებისთვის.",
+ "%s (3rdparty)" : "%s (მესამე მხარე)",
"Problem loading page, reloading in 5 seconds" : "პრობლემა გვერდის ჩატვირთვისას, ახლიდან ჩაიტვირთება 5 წამში",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "ფაილები კოდირებულია. თუ არ ჩაგირთავთ აღდგენის გასაღები, არ იქნება არანაირი გზა აღადგინოთ თვენი მონაცემები პაროლის ცვლილების შემდეგ.<br />თუ არ იცით რა გააკეთოთ, გაგრძელებამდე მიმართეთ თქვენს ადმინისტრატორს.<br />დარწმუნებული ხართ რომ გსურთ გაგრძელება?",
"Ok" : "დიახ",
diff --git a/core/l10n/ko.js b/core/l10n/ko.js
index ad15a25ec8e..325164b0254 100644
--- a/core/l10n/ko.js
+++ b/core/l10n/ko.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "로그 단계 초기화",
"Starting code integrity check" : "코드 무결성 검사 시작 중",
"Finished code integrity check" : "코드 무결성 검사 완료됨",
- "%s (3rdparty)" : "%s(제 3사)",
"%s (incompatible)" : "%s(호환 불가)",
"Following apps have been disabled: %s" : "다음 앱이 비활성화되었습니다: %s",
"Already up to date" : "최신 상태임",
@@ -315,6 +314,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "%s 인스턴스를 다시 사용할 수 있으면 자동으로 새로 고칩니다.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "이 메시지가 계속 표시되거나, 예상하지 못하였을 때 표시된다면 시스템 관리자에게 연락하십시오.",
"Thank you for your patience." : "기다려 주셔서 감사합니다.",
+ "%s (3rdparty)" : "%s(제 3사)",
"Problem loading page, reloading in 5 seconds" : "페이지 불러오기 오류, 5초 후 새로 고침",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "내 파일이 암호화되어 있습니다. 복구 키를 활성화하지 않았다면 암호를 초기화한 후 데이터를 복구할 수 없습니다.<br />무엇을 해야 할 지 잘 모르겠으면 계속하기 전에 관리자에게 연락하십시오.<br />그래도 계속 진행하시겠습니까?",
"Ok" : "확인",
diff --git a/core/l10n/ko.json b/core/l10n/ko.json
index a09328cf600..3968ea2b8ae 100644
--- a/core/l10n/ko.json
+++ b/core/l10n/ko.json
@@ -48,7 +48,6 @@
"Reset log level" : "로그 단계 초기화",
"Starting code integrity check" : "코드 무결성 검사 시작 중",
"Finished code integrity check" : "코드 무결성 검사 완료됨",
- "%s (3rdparty)" : "%s(제 3사)",
"%s (incompatible)" : "%s(호환 불가)",
"Following apps have been disabled: %s" : "다음 앱이 비활성화되었습니다: %s",
"Already up to date" : "최신 상태임",
@@ -313,6 +312,7 @@
"This page will refresh itself when the %s instance is available again." : "%s 인스턴스를 다시 사용할 수 있으면 자동으로 새로 고칩니다.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "이 메시지가 계속 표시되거나, 예상하지 못하였을 때 표시된다면 시스템 관리자에게 연락하십시오.",
"Thank you for your patience." : "기다려 주셔서 감사합니다.",
+ "%s (3rdparty)" : "%s(제 3사)",
"Problem loading page, reloading in 5 seconds" : "페이지 불러오기 오류, 5초 후 새로 고침",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "내 파일이 암호화되어 있습니다. 복구 키를 활성화하지 않았다면 암호를 초기화한 후 데이터를 복구할 수 없습니다.<br />무엇을 해야 할 지 잘 모르겠으면 계속하기 전에 관리자에게 연락하십시오.<br />그래도 계속 진행하시겠습니까?",
"Ok" : "확인",
diff --git a/core/l10n/lt_LT.js b/core/l10n/lt_LT.js
index de8ed3bc467..703ce8a8c26 100644
--- a/core/l10n/lt_LT.js
+++ b/core/l10n/lt_LT.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Atstatyti numatytąjį žurnalo išvesties lygį",
"Starting code integrity check" : "Pradedama kodo vientisumo patikra",
"Finished code integrity check" : "Kodo vientisumo patikra užbaigta",
- "%s (3rdparty)" : "%s (trečiųjų asmenų programinė įranga)",
"%s (incompatible)" : "%s (nesuderinama programinė įranga)",
"Following apps have been disabled: %s" : "Šie įskiepiai buvo išjungti: %s",
"Already up to date" : "Naudojama naujausia versija",
@@ -297,6 +296,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Šis puslapis bus įkeltas iš naujo, kai %s egzempliorius bus ir vėl prieinamas.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Susisiekite su savo sistemos administratoriumi jei šis pranešimas nedingsta arba jei jis pasirodė netikėtai.",
"Thank you for your patience." : "Dėkojame už jūsų kantrumą.",
+ "%s (3rdparty)" : "%s (trečiųjų asmenų programinė įranga)",
"Problem loading page, reloading in 5 seconds" : "Problemos įkeliant puslapį. Įkeliama iš naujo po 5 sekundžių",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Jūsų duomenys yra šifruoti. Jei neturite atstatymo rakto, duomenų naudojimas bus nebeįmanomas po slaptažodžio atstatymo. <br />Jei nesate tikras dėl to, ką norite padaryti, susisiekite su sistemos administratoriumi. <br />Ar norite tęsti?",
"Ok" : "Gerai",
diff --git a/core/l10n/lt_LT.json b/core/l10n/lt_LT.json
index d807e7aa143..26e60cd36a5 100644
--- a/core/l10n/lt_LT.json
+++ b/core/l10n/lt_LT.json
@@ -48,7 +48,6 @@
"Reset log level" : "Atstatyti numatytąjį žurnalo išvesties lygį",
"Starting code integrity check" : "Pradedama kodo vientisumo patikra",
"Finished code integrity check" : "Kodo vientisumo patikra užbaigta",
- "%s (3rdparty)" : "%s (trečiųjų asmenų programinė įranga)",
"%s (incompatible)" : "%s (nesuderinama programinė įranga)",
"Following apps have been disabled: %s" : "Šie įskiepiai buvo išjungti: %s",
"Already up to date" : "Naudojama naujausia versija",
@@ -295,6 +294,7 @@
"This page will refresh itself when the %s instance is available again." : "Šis puslapis bus įkeltas iš naujo, kai %s egzempliorius bus ir vėl prieinamas.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Susisiekite su savo sistemos administratoriumi jei šis pranešimas nedingsta arba jei jis pasirodė netikėtai.",
"Thank you for your patience." : "Dėkojame už jūsų kantrumą.",
+ "%s (3rdparty)" : "%s (trečiųjų asmenų programinė įranga)",
"Problem loading page, reloading in 5 seconds" : "Problemos įkeliant puslapį. Įkeliama iš naujo po 5 sekundžių",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Jūsų duomenys yra šifruoti. Jei neturite atstatymo rakto, duomenų naudojimas bus nebeįmanomas po slaptažodžio atstatymo. <br />Jei nesate tikras dėl to, ką norite padaryti, susisiekite su sistemos administratoriumi. <br />Ar norite tęsti?",
"Ok" : "Gerai",
diff --git a/core/l10n/lv.js b/core/l10n/lv.js
index 764b03f8f5d..fb8e65cdc1a 100644
--- a/core/l10n/lv.js
+++ b/core/l10n/lv.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Atiestatīt žurnāla rakstīšanas režīmu",
"Starting code integrity check" : "Uzsākta koda integritātes pārbaude",
"Finished code integrity check" : "Pabeigta koda integritātes pārbaude",
- "%s (3rdparty)" : "%s (citu izstrādātāju)",
"%s (incompatible)" : "%s (nesaderīgs)",
"Following apps have been disabled: %s" : "Sekojošas programmas tika atslēgtas: %s",
"Already up to date" : "Jau ir jaunākā",
@@ -270,6 +269,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Lapa tiks atsvaidzināta kad %s instance atkal ir pieejama.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Sazinieties ar sistēmas administratoru, ja šis ziņojums tiek rādīts.. vai parādījās negaidīti",
"Thank you for your patience." : "Paldies par jūsu pacietību.",
+ "%s (3rdparty)" : "%s (citu izstrādātāju)",
"Problem loading page, reloading in 5 seconds" : "Problēma ielādējot lapu, pārlādēšana pēc 5 sekundēm",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Jūsu faili ir šifrēti. Ja neesat iespējojis atkopšanas atslēgu, nevarēsiet atgūt datus atpakaļ, pēc jūsu paroles atiestatīšanas.<br />Ja neesat pārliecināts par to, ko darīt, lūdzu, pirms turpināt, sazinieties ar administratoru. <br />Vai tiešām vēlaties turpināt?",
"Ok" : "Labi",
diff --git a/core/l10n/lv.json b/core/l10n/lv.json
index baa005a39c4..bd8afeed8ca 100644
--- a/core/l10n/lv.json
+++ b/core/l10n/lv.json
@@ -48,7 +48,6 @@
"Reset log level" : "Atiestatīt žurnāla rakstīšanas režīmu",
"Starting code integrity check" : "Uzsākta koda integritātes pārbaude",
"Finished code integrity check" : "Pabeigta koda integritātes pārbaude",
- "%s (3rdparty)" : "%s (citu izstrādātāju)",
"%s (incompatible)" : "%s (nesaderīgs)",
"Following apps have been disabled: %s" : "Sekojošas programmas tika atslēgtas: %s",
"Already up to date" : "Jau ir jaunākā",
@@ -268,6 +267,7 @@
"This page will refresh itself when the %s instance is available again." : "Lapa tiks atsvaidzināta kad %s instance atkal ir pieejama.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Sazinieties ar sistēmas administratoru, ja šis ziņojums tiek rādīts.. vai parādījās negaidīti",
"Thank you for your patience." : "Paldies par jūsu pacietību.",
+ "%s (3rdparty)" : "%s (citu izstrādātāju)",
"Problem loading page, reloading in 5 seconds" : "Problēma ielādējot lapu, pārlādēšana pēc 5 sekundēm",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Jūsu faili ir šifrēti. Ja neesat iespējojis atkopšanas atslēgu, nevarēsiet atgūt datus atpakaļ, pēc jūsu paroles atiestatīšanas.<br />Ja neesat pārliecināts par to, ko darīt, lūdzu, pirms turpināt, sazinieties ar administratoru. <br />Vai tiešām vēlaties turpināt?",
"Ok" : "Labi",
diff --git a/core/l10n/nb.js b/core/l10n/nb.js
index b9a6029a04f..036912797ca 100644
--- a/core/l10n/nb.js
+++ b/core/l10n/nb.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Nullstill loggnivå",
"Starting code integrity check" : "Starter sjekk av kode-integritet",
"Finished code integrity check" : "Fullførte sjekk av kodeintegritet",
- "%s (3rdparty)" : "%s (3dje-part)",
"%s (incompatible)" : "%s (ikke kompatibel)",
"Following apps have been disabled: %s" : "Følgende programmer har blitt avskrudd: %s",
"Already up to date" : "Allerede oppdatert",
@@ -111,11 +110,23 @@ OC.L10N.register(
"Good password" : "Bra passord",
"Strong password" : "Sterkt passord",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Vev-tjeneren din er ikke satt opp til å tillate synkronisering av filer ennå, fordi WebDAV-grensesnittet ikke ser ut til å virke.",
+ "Your web server is not properly set up to resolve \"{url}\". Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Din vevtjener er ikke satt opp korrekt for å hente \"{url}\". Mer informasjon finner du i <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentasjonen</a>.",
+ "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the Internet to enjoy all features." : "Denne tjeneren har ingen fungerende internett-forbindelse. Dette betyr at noen funksjoner, som tilknytning av eksterne lagre, varslinger om oppdateringer eller installering av tredjepartsprogrammer ikke vil virke. Fjerntilgang til filer og utsending av varsler på e-post vil kanskje ikke virke heller. Det anbefales å aktivere en internett-forbindelse for denne tjeneren hvis du vil ha full funksjonalitet.",
+ "No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Inget hurtigminne har blitt satt opp. For å øke ytelsen bør du sette opp et hurtigminne hvis det er tilgjengelig. Mer informasjon finnes i <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentasjonen</a>.",
+ "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "/dev/urandom er ikke lesbar for PHP, noe som frarådes av sikkerhetsgrunner. Mer informasjon finnes i <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentasjonen</a>.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Du bruker PHP-{version}. Oppgrader PHP-versjonen for å utnytte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">ytelsen og sikkerhetsoppdateringene som tilbys av PHP Group</a, så fort din distribusjon støtter det.",
"You are currently running PHP 5.6. The current major version of Nextcloud is the last that is supported on PHP 5.6. It is recommended to upgrade the PHP version to 7.0+ to be able to upgrade to Nextcloud 14." : "Du kjører nå PHP 5.6. Den nåværende hovedversjonen er den siste som støtter PHP 5.6. Det anbefales å oppgradere PHP-versjonen til 7.0+, for å kunne oppgradere til Nextcloud 14.",
+ "The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Det omvendte mellomtjener-hodet er ikke satt opp rett, eller du kobler til Nextcloud fra en betrodd mellomtjener. Hvis ikke, er dette et sikkerhetsproblem, og kan tillate en angriper å forfalske deres IP-adresse slik den er synlig for Nextcloud. Ytterligere informasjon er å finne i <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentasjonen</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached er satt opp som distribuert hurtiglager, men feil PHP-modul \"memcache\" er installert. \\OC\\Memcache\\Memcached støtter bare \"memcached\" og ikke \"memcache\". Se <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{wikiLink}\">memcached-wikien om begge modulene</a>.",
+ "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Noen filer besto ikke gyldighetssjekken. Ytterligere informasjon om hvordan dette problemet kan løses finnes i <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentasjonen</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste over ugyldige filer…</a> / <a href=\"{rescanEndpoint}\">Skann på ny…</a>)",
+ "The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "PHP OPcache er ikke satt opp rett. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For bedre ytelse anbefales det å bruke følgende innstillinger i <code>php.ini</code>:",
+ "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "PHP-funksjonen \"set_time_limit\" er ikke tilgjengelig. Dette kan resultere i at skript blir stoppet midt i kjøring, noe som knekker installasjonen din. Det anbefales sterkt å skru på denne funksjonen.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Din PHP-installasjon har ikke FreeType-støtte. Dette fører til knekte profilbilder og skadelidende innstillingsgrensesnitt.",
"Error occurred while checking server setup" : "Feil oppstod ved sjekking av tjener-oppsett",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Datamappen og filene dine er sannsynligvis tilgjengelige fra Internett. .htaccess-filen fungerer ikke. Det anbefales sterkt at du setter opp vev-tjeneren slik at datamappen ikke kan nås eller at du flytter datamappen ut av vev-tjenerens dokumentrot.",
+ "The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP-hodet \"{header}\" er ikke satt opp likt \"{expected}\". Dette kan være en sikkerhet- eller personvernsrisiko og det anbefales at denne innstillingen endres.",
+ "The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "HTTP-hodet \"{header}\" er ikke satt opp til å være likt \"{expected}\". Det kan hende noen funksjoner ikke fungerer rett, og det anbefales å justere denne innstillingen henholdsvis.",
+ "The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips</a>." : "\"Strict-Transport-Security\"- (Streng transportsikkerhet) HTTP-hodet er ikke satt opp til minst \"{seconds}\" sekunder. For bedret sikkerhet anbefales det å skru på HSTS som beskrevet i <a href=\"{docUrl}\" rel=\"noreferrer noopener\">sikkerhetstipsene</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips</a>." : "Du besøker denne nettsiden via HTTP. Det anbefales sterkt at du setter opp tjeneren til å kreve HTTPS i stedet, som beskrevet i <a href=\"{docUrl}\">sikkerhetstipsene</a>.",
"Shared" : "Delt",
"Shared with" : "Delt med",
@@ -304,6 +315,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Denne siden vil bli lastet på nytt når %s-instansen er tilgjengelig igjen.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Kontakt systemadministratoren hvis denne meldingen var uventet eller ikke forsvinner.",
"Thank you for your patience." : "Takk for din tålmodighet.",
+ "%s (3rdparty)" : "%s (3dje-part)",
"Problem loading page, reloading in 5 seconds" : "Det oppstod et problem ved lasting av side, laster på nytt om 5 sekunder",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Filene dine er kryptert. Hvis du ikke har aktivert gjenopprettingsnøkkelen, vil det være helt umulig å få tilbake dataene dine etter at pasordet ditt er tilbakestilt.<br />Hvis du er usikker på hva du skal gjøre, kontakt administratoren din før du fortsetter. <br />Vil du virkelig fortsette?",
"Ok" : "OK",
diff --git a/core/l10n/nb.json b/core/l10n/nb.json
index e68df762d04..e18ea6b7dfb 100644
--- a/core/l10n/nb.json
+++ b/core/l10n/nb.json
@@ -48,7 +48,6 @@
"Reset log level" : "Nullstill loggnivå",
"Starting code integrity check" : "Starter sjekk av kode-integritet",
"Finished code integrity check" : "Fullførte sjekk av kodeintegritet",
- "%s (3rdparty)" : "%s (3dje-part)",
"%s (incompatible)" : "%s (ikke kompatibel)",
"Following apps have been disabled: %s" : "Følgende programmer har blitt avskrudd: %s",
"Already up to date" : "Allerede oppdatert",
@@ -109,11 +108,23 @@
"Good password" : "Bra passord",
"Strong password" : "Sterkt passord",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Vev-tjeneren din er ikke satt opp til å tillate synkronisering av filer ennå, fordi WebDAV-grensesnittet ikke ser ut til å virke.",
+ "Your web server is not properly set up to resolve \"{url}\". Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Din vevtjener er ikke satt opp korrekt for å hente \"{url}\". Mer informasjon finner du i <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentasjonen</a>.",
+ "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the Internet to enjoy all features." : "Denne tjeneren har ingen fungerende internett-forbindelse. Dette betyr at noen funksjoner, som tilknytning av eksterne lagre, varslinger om oppdateringer eller installering av tredjepartsprogrammer ikke vil virke. Fjerntilgang til filer og utsending av varsler på e-post vil kanskje ikke virke heller. Det anbefales å aktivere en internett-forbindelse for denne tjeneren hvis du vil ha full funksjonalitet.",
+ "No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Inget hurtigminne har blitt satt opp. For å øke ytelsen bør du sette opp et hurtigminne hvis det er tilgjengelig. Mer informasjon finnes i <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentasjonen</a>.",
+ "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "/dev/urandom er ikke lesbar for PHP, noe som frarådes av sikkerhetsgrunner. Mer informasjon finnes i <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentasjonen</a>.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Du bruker PHP-{version}. Oppgrader PHP-versjonen for å utnytte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{phpLink}\">ytelsen og sikkerhetsoppdateringene som tilbys av PHP Group</a, så fort din distribusjon støtter det.",
"You are currently running PHP 5.6. The current major version of Nextcloud is the last that is supported on PHP 5.6. It is recommended to upgrade the PHP version to 7.0+ to be able to upgrade to Nextcloud 14." : "Du kjører nå PHP 5.6. Den nåværende hovedversjonen er den siste som støtter PHP 5.6. Det anbefales å oppgradere PHP-versjonen til 7.0+, for å kunne oppgradere til Nextcloud 14.",
+ "The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Det omvendte mellomtjener-hodet er ikke satt opp rett, eller du kobler til Nextcloud fra en betrodd mellomtjener. Hvis ikke, er dette et sikkerhetsproblem, og kan tillate en angriper å forfalske deres IP-adresse slik den er synlig for Nextcloud. Ytterligere informasjon er å finne i <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentasjonen</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached er satt opp som distribuert hurtiglager, men feil PHP-modul \"memcache\" er installert. \\OC\\Memcache\\Memcached støtter bare \"memcached\" og ikke \"memcache\". Se <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{wikiLink}\">memcached-wikien om begge modulene</a>.",
+ "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Noen filer besto ikke gyldighetssjekken. Ytterligere informasjon om hvordan dette problemet kan løses finnes i <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentasjonen</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste over ugyldige filer…</a> / <a href=\"{rescanEndpoint}\">Skann på ny…</a>)",
+ "The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "PHP OPcache er ikke satt opp rett. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For bedre ytelse anbefales det å bruke følgende innstillinger i <code>php.ini</code>:",
+ "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "PHP-funksjonen \"set_time_limit\" er ikke tilgjengelig. Dette kan resultere i at skript blir stoppet midt i kjøring, noe som knekker installasjonen din. Det anbefales sterkt å skru på denne funksjonen.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Din PHP-installasjon har ikke FreeType-støtte. Dette fører til knekte profilbilder og skadelidende innstillingsgrensesnitt.",
"Error occurred while checking server setup" : "Feil oppstod ved sjekking av tjener-oppsett",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Datamappen og filene dine er sannsynligvis tilgjengelige fra Internett. .htaccess-filen fungerer ikke. Det anbefales sterkt at du setter opp vev-tjeneren slik at datamappen ikke kan nås eller at du flytter datamappen ut av vev-tjenerens dokumentrot.",
+ "The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP-hodet \"{header}\" er ikke satt opp likt \"{expected}\". Dette kan være en sikkerhet- eller personvernsrisiko og det anbefales at denne innstillingen endres.",
+ "The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "HTTP-hodet \"{header}\" er ikke satt opp til å være likt \"{expected}\". Det kan hende noen funksjoner ikke fungerer rett, og det anbefales å justere denne innstillingen henholdsvis.",
+ "The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips</a>." : "\"Strict-Transport-Security\"- (Streng transportsikkerhet) HTTP-hodet er ikke satt opp til minst \"{seconds}\" sekunder. For bedret sikkerhet anbefales det å skru på HSTS som beskrevet i <a href=\"{docUrl}\" rel=\"noreferrer noopener\">sikkerhetstipsene</a>.",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips</a>." : "Du besøker denne nettsiden via HTTP. Det anbefales sterkt at du setter opp tjeneren til å kreve HTTPS i stedet, som beskrevet i <a href=\"{docUrl}\">sikkerhetstipsene</a>.",
"Shared" : "Delt",
"Shared with" : "Delt med",
@@ -302,6 +313,7 @@
"This page will refresh itself when the %s instance is available again." : "Denne siden vil bli lastet på nytt når %s-instansen er tilgjengelig igjen.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Kontakt systemadministratoren hvis denne meldingen var uventet eller ikke forsvinner.",
"Thank you for your patience." : "Takk for din tålmodighet.",
+ "%s (3rdparty)" : "%s (3dje-part)",
"Problem loading page, reloading in 5 seconds" : "Det oppstod et problem ved lasting av side, laster på nytt om 5 sekunder",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Filene dine er kryptert. Hvis du ikke har aktivert gjenopprettingsnøkkelen, vil det være helt umulig å få tilbake dataene dine etter at pasordet ditt er tilbakestilt.<br />Hvis du er usikker på hva du skal gjøre, kontakt administratoren din før du fortsetter. <br />Vil du virkelig fortsette?",
"Ok" : "OK",
diff --git a/core/l10n/nl.js b/core/l10n/nl.js
index ca04471895f..23c0271dd12 100644
--- a/core/l10n/nl.js
+++ b/core/l10n/nl.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Terugzetten logniveau",
"Starting code integrity check" : "Starten code betrouwbaarheidscontrole",
"Finished code integrity check" : "Code betrouwbaarheidscontrole beeindigd",
- "%s (3rdparty)" : "%s (3rdparty)",
"%s (incompatible)" : "%s (incompatibel)",
"Following apps have been disabled: %s" : "De volgende apps zijn uitgeschakeld: %s",
"Already up to date" : "Al bijgewerkt",
@@ -122,6 +121,7 @@ OC.L10N.register(
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Sommige bestanden kwamen niet door de betrouwbaarheidscontrole. Meer informatie over het oplossen van dit probleem kan worden gevonden in onze <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentatie</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lijst met ongeldige bestanden…</a> / <a href=\"{rescanEndpoint}\">Opnieuw…</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "De PHP OPcache is niet correct geconfigureerd. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Voor betere prestaties adviseren we</a> de volgende <code>php.ini instellingen</code> te gebruiken:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "De PHP functie \"set_time_limit\" is niet beschikbaar. Dit kan erin resulteren dat de scripts halverwege stoppen, waardoor de installatie ontregeld raakt. We adviseren sterk om deze functie in te schakelen.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Je PHP heeft geen FreeType ondersteuning. Dit zal leiden tot verminkte profielafbeeldingen en instellingeninterface.",
"Error occurred while checking server setup" : "Een fout trad op bij checken serverconfiguratie",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Je datamap en je bestanden zijn waarschijnlijk vanaf het internet bereikbaar. Het .htaccess-bestand werkt niet. We raden ten zeerste aan aan om je webserver zodanig te configureren, dat de datadirectory niet bereikbaar is vanaf het internet of om je datadirectory te verplaatsen naar een locatie buiten de document-root van de webserver.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "De \"{header}\" HTTP header is niet ingesteld als \"{expected}\". Dit is een potentieel security of privacy risico en we adviseren om deze instelling te wijzigen.",
@@ -276,6 +276,7 @@ OC.L10N.register(
"Username or email" : "Gebruikersnaam of email",
"Log in" : "Inloggen",
"Wrong password." : "Onjuist wachtwoord.",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "We hebben meerdere foutieve inlogverzoeken van jouw IP gedetecteerd. Hierdoor wordt je volgende inlogverzoek 30 seconden uitgesteld.",
"Stay logged in" : "Ingelogd blijven",
"Forgot password?" : "Wachtwoord vergeten?",
"Back to log in" : "Terug naar inloggen",
@@ -315,6 +316,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Deze pagina wordt ververst als de %s-installatie weer beschikbaar is.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Neem contact op met je systeembeheerder als deze melding aanhoudt of onverwacht verscheen.",
"Thank you for your patience." : "Bedankt voor je geduld.",
+ "%s (3rdparty)" : "%s (3rdparty)",
"Problem loading page, reloading in 5 seconds" : "Kan de pagina niet laden, verversen in 5 seconden",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Je bestanden zijn versleuteld. Als je de herstelsleutel niet hebt ingeschakeld, is het niet mogelijk om je gegevens terug te krijgen nadat je wachtwoord is hersteld. <br>Als je niet weet wat je moet doen, neem dan eerst contact op met je beheerder. <br>Wil je echt verder gaan?",
"Ok" : "Ok",
diff --git a/core/l10n/nl.json b/core/l10n/nl.json
index 301d7e0d6c3..176145eca3a 100644
--- a/core/l10n/nl.json
+++ b/core/l10n/nl.json
@@ -48,7 +48,6 @@
"Reset log level" : "Terugzetten logniveau",
"Starting code integrity check" : "Starten code betrouwbaarheidscontrole",
"Finished code integrity check" : "Code betrouwbaarheidscontrole beeindigd",
- "%s (3rdparty)" : "%s (3rdparty)",
"%s (incompatible)" : "%s (incompatibel)",
"Following apps have been disabled: %s" : "De volgende apps zijn uitgeschakeld: %s",
"Already up to date" : "Al bijgewerkt",
@@ -120,6 +119,7 @@
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Sommige bestanden kwamen niet door de betrouwbaarheidscontrole. Meer informatie over het oplossen van dit probleem kan worden gevonden in onze <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentatie</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lijst met ongeldige bestanden…</a> / <a href=\"{rescanEndpoint}\">Opnieuw…</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "De PHP OPcache is niet correct geconfigureerd. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Voor betere prestaties adviseren we</a> de volgende <code>php.ini instellingen</code> te gebruiken:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "De PHP functie \"set_time_limit\" is niet beschikbaar. Dit kan erin resulteren dat de scripts halverwege stoppen, waardoor de installatie ontregeld raakt. We adviseren sterk om deze functie in te schakelen.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Je PHP heeft geen FreeType ondersteuning. Dit zal leiden tot verminkte profielafbeeldingen en instellingeninterface.",
"Error occurred while checking server setup" : "Een fout trad op bij checken serverconfiguratie",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Je datamap en je bestanden zijn waarschijnlijk vanaf het internet bereikbaar. Het .htaccess-bestand werkt niet. We raden ten zeerste aan aan om je webserver zodanig te configureren, dat de datadirectory niet bereikbaar is vanaf het internet of om je datadirectory te verplaatsen naar een locatie buiten de document-root van de webserver.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "De \"{header}\" HTTP header is niet ingesteld als \"{expected}\". Dit is een potentieel security of privacy risico en we adviseren om deze instelling te wijzigen.",
@@ -274,6 +274,7 @@
"Username or email" : "Gebruikersnaam of email",
"Log in" : "Inloggen",
"Wrong password." : "Onjuist wachtwoord.",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "We hebben meerdere foutieve inlogverzoeken van jouw IP gedetecteerd. Hierdoor wordt je volgende inlogverzoek 30 seconden uitgesteld.",
"Stay logged in" : "Ingelogd blijven",
"Forgot password?" : "Wachtwoord vergeten?",
"Back to log in" : "Terug naar inloggen",
@@ -313,6 +314,7 @@
"This page will refresh itself when the %s instance is available again." : "Deze pagina wordt ververst als de %s-installatie weer beschikbaar is.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Neem contact op met je systeembeheerder als deze melding aanhoudt of onverwacht verscheen.",
"Thank you for your patience." : "Bedankt voor je geduld.",
+ "%s (3rdparty)" : "%s (3rdparty)",
"Problem loading page, reloading in 5 seconds" : "Kan de pagina niet laden, verversen in 5 seconden",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Je bestanden zijn versleuteld. Als je de herstelsleutel niet hebt ingeschakeld, is het niet mogelijk om je gegevens terug te krijgen nadat je wachtwoord is hersteld. <br>Als je niet weet wat je moet doen, neem dan eerst contact op met je beheerder. <br>Wil je echt verder gaan?",
"Ok" : "Ok",
diff --git a/core/l10n/pl.js b/core/l10n/pl.js
index c867c91fa32..a9326055ff5 100644
--- a/core/l10n/pl.js
+++ b/core/l10n/pl.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Zresetuj poziom logowania",
"Starting code integrity check" : "Rozpoczynam sprawdzanie spójności kodu",
"Finished code integrity check" : "Zakończono sprawdzanie spójności kodu",
- "%s (3rdparty)" : "%s (od innych)",
"%s (incompatible)" : "%s (niekompatybilne)",
"Following apps have been disabled: %s" : "Poniższe aplikacje zostały wyłączone: %s",
"Already up to date" : "Już zaktualizowano",
@@ -314,6 +313,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Strona odświeży się gdy instancja %s będzie ponownie dostępna.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Skontaktuj się z administratorem, jeśli ten komunikat pojawił się nieoczekiwanie lub wyświetla się ciągle.",
"Thank you for your patience." : "Dziękuję za cierpliwość.",
+ "%s (3rdparty)" : "%s (od innych)",
"Problem loading page, reloading in 5 seconds" : "Błąd podczas ładowania strony, odświeżanie w ciągu 5 sekund.",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Twoje pliki są zaszyfrowane. Jeśli nie włączyłeś klucza odzyskiwania, nie będzie możliwości odszyfrowania tych plików po zresetowaniu hasła.<br>Jeśli nie jesteś pewien co zrobić, skontaktuj się ze swoim administratorem, zanim bedziesz kontynuował. <br/> Czy chcesz kontynuować?\n ",
"Ok" : "OK",
diff --git a/core/l10n/pl.json b/core/l10n/pl.json
index b54e30d01ee..274b5e1e1d0 100644
--- a/core/l10n/pl.json
+++ b/core/l10n/pl.json
@@ -48,7 +48,6 @@
"Reset log level" : "Zresetuj poziom logowania",
"Starting code integrity check" : "Rozpoczynam sprawdzanie spójności kodu",
"Finished code integrity check" : "Zakończono sprawdzanie spójności kodu",
- "%s (3rdparty)" : "%s (od innych)",
"%s (incompatible)" : "%s (niekompatybilne)",
"Following apps have been disabled: %s" : "Poniższe aplikacje zostały wyłączone: %s",
"Already up to date" : "Już zaktualizowano",
@@ -312,6 +311,7 @@
"This page will refresh itself when the %s instance is available again." : "Strona odświeży się gdy instancja %s będzie ponownie dostępna.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Skontaktuj się z administratorem, jeśli ten komunikat pojawił się nieoczekiwanie lub wyświetla się ciągle.",
"Thank you for your patience." : "Dziękuję za cierpliwość.",
+ "%s (3rdparty)" : "%s (od innych)",
"Problem loading page, reloading in 5 seconds" : "Błąd podczas ładowania strony, odświeżanie w ciągu 5 sekund.",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Twoje pliki są zaszyfrowane. Jeśli nie włączyłeś klucza odzyskiwania, nie będzie możliwości odszyfrowania tych plików po zresetowaniu hasła.<br>Jeśli nie jesteś pewien co zrobić, skontaktuj się ze swoim administratorem, zanim bedziesz kontynuował. <br/> Czy chcesz kontynuować?\n ",
"Ok" : "OK",
diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js
index 18eb2f0943b..dcf862fb2d1 100644
--- a/core/l10n/pt_BR.js
+++ b/core/l10n/pt_BR.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Redefinir o nível do log",
"Starting code integrity check" : "Inicializando a verificação da integridade do código",
"Finished code integrity check" : "Finalizada a verificação de integridade do código",
- "%s (3rdparty)" : "%s (parceiros)",
"%s (incompatible)" : "%s (incompatível)",
"Following apps have been disabled: %s" : "Os seguintes aplicativos foram desabilitados: %s",
"Already up to date" : "Já está atualizado",
@@ -122,6 +121,7 @@ OC.L10N.register(
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alguns arquivos não passaram na verificação de integridade. Mais informações sobre como resolver esse problema podem ser encontradas na <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentação</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lista de arquivos inválidos…</a> / <a href=\"{rescanEndpoint}\">Verificar novamente…</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "O PHP OPcache não está configurado corretamente.<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Para um melhor desempenho é recomendado</a> usar as seguintes configurações no <code>php.ini</code>:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "A função PHP \"set_time_limit\" não está disponível. Isso pode resultar em travamento de scripts, quebrando sua instalação. A ativação desta função é altamente recomendada.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Seu PHP não possui suporte à FreeType, resultando em problemas nas fotos de perfil e interface de configurações.",
"Error occurred while checking server setup" : "Erro ao verificar a configuração do servidor",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Seu diretório de dados e arquivos provavelmente podem ser acessados pela Internet. O arquivo .htaccess não está funcionando. É altamente recomendado que você configure seu servidor web para que o diretório de dados não seja mais acessível ou mova o diretório de dados fora da raiz de documentos do servidor web.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "O cabeçalho HTTP \"{header}\" não está definido para \"{expected}\". Este é um potencial risco de segurança ou privacidade e é recomendado ajustar esta configuração de acordo.",
@@ -276,6 +276,7 @@ OC.L10N.register(
"Username or email" : "Nome de usuário ou e-mail",
"Log in" : "Entrar",
"Wrong password." : "Senha errada",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "Detectamos várias tentativas de login inválidas de seu IP. Portanto, seu próximo login será desacelerado em até 30 segundos.",
"Stay logged in" : "Permaneça logado",
"Forgot password?" : "Esqueceu a senha?",
"Back to log in" : "Voltar ao login",
@@ -315,6 +316,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Esta página será atualizada automaticamente quando o %s estiver disponível novamente.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacte o administrador do sistema se esta mensagem persistir ou aparecer inesperadamente.",
"Thank you for your patience." : "Obrigado pela sua paciência.",
+ "%s (3rdparty)" : "%s (parceiros)",
"Problem loading page, reloading in 5 seconds" : "Problema no carregamento da página, recarregando em 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Seus arquivos estão criptografados. Se você não ativou a chave de recuperação, não haverá maneira de obter seus dados de volta após a sua senha ser redefinida.<br />Se não tiver certeza do que deve fazer, contate o administrador antes de continuar. <br />Deseja realmente continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json
index 24feb12738b..da057e70021 100644
--- a/core/l10n/pt_BR.json
+++ b/core/l10n/pt_BR.json
@@ -48,7 +48,6 @@
"Reset log level" : "Redefinir o nível do log",
"Starting code integrity check" : "Inicializando a verificação da integridade do código",
"Finished code integrity check" : "Finalizada a verificação de integridade do código",
- "%s (3rdparty)" : "%s (parceiros)",
"%s (incompatible)" : "%s (incompatível)",
"Following apps have been disabled: %s" : "Os seguintes aplicativos foram desabilitados: %s",
"Already up to date" : "Já está atualizado",
@@ -120,6 +119,7 @@
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alguns arquivos não passaram na verificação de integridade. Mais informações sobre como resolver esse problema podem ser encontradas na <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentação</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lista de arquivos inválidos…</a> / <a href=\"{rescanEndpoint}\">Verificar novamente…</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "O PHP OPcache não está configurado corretamente.<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Para um melhor desempenho é recomendado</a> usar as seguintes configurações no <code>php.ini</code>:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "A função PHP \"set_time_limit\" não está disponível. Isso pode resultar em travamento de scripts, quebrando sua instalação. A ativação desta função é altamente recomendada.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Seu PHP não possui suporte à FreeType, resultando em problemas nas fotos de perfil e interface de configurações.",
"Error occurred while checking server setup" : "Erro ao verificar a configuração do servidor",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Seu diretório de dados e arquivos provavelmente podem ser acessados pela Internet. O arquivo .htaccess não está funcionando. É altamente recomendado que você configure seu servidor web para que o diretório de dados não seja mais acessível ou mova o diretório de dados fora da raiz de documentos do servidor web.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "O cabeçalho HTTP \"{header}\" não está definido para \"{expected}\". Este é um potencial risco de segurança ou privacidade e é recomendado ajustar esta configuração de acordo.",
@@ -274,6 +274,7 @@
"Username or email" : "Nome de usuário ou e-mail",
"Log in" : "Entrar",
"Wrong password." : "Senha errada",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "Detectamos várias tentativas de login inválidas de seu IP. Portanto, seu próximo login será desacelerado em até 30 segundos.",
"Stay logged in" : "Permaneça logado",
"Forgot password?" : "Esqueceu a senha?",
"Back to log in" : "Voltar ao login",
@@ -313,6 +314,7 @@
"This page will refresh itself when the %s instance is available again." : "Esta página será atualizada automaticamente quando o %s estiver disponível novamente.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacte o administrador do sistema se esta mensagem persistir ou aparecer inesperadamente.",
"Thank you for your patience." : "Obrigado pela sua paciência.",
+ "%s (3rdparty)" : "%s (parceiros)",
"Problem loading page, reloading in 5 seconds" : "Problema no carregamento da página, recarregando em 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Seus arquivos estão criptografados. Se você não ativou a chave de recuperação, não haverá maneira de obter seus dados de volta após a sua senha ser redefinida.<br />Se não tiver certeza do que deve fazer, contate o administrador antes de continuar. <br />Deseja realmente continuar?",
"Ok" : "Ok",
diff --git a/core/l10n/pt_PT.js b/core/l10n/pt_PT.js
index 6d874789abd..ce4dcb40ddf 100644
--- a/core/l10n/pt_PT.js
+++ b/core/l10n/pt_PT.js
@@ -48,7 +48,6 @@ OC.L10N.register(
"Reset log level" : "Reiniciar nível de registo",
"Starting code integrity check" : "A iniciar a verificação da integridade do código",
"Finished code integrity check" : "Terminada a verificação da integridade do código",
- "%s (3rdparty)" : "%s (terceiros)",
"%s (incompatible)" : "%s (incompatível)",
"Following apps have been disabled: %s" : "Foram desativadas as seguintes aplicações: %s",
"Already up to date" : "Já está atualizado",
@@ -278,6 +277,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Esta página irá ser atualizada quando a instância %s ficar novamente disponível.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacte o seu administrador do sistema se esta mensagem persistir ou apareceu inesperadamente.",
"Thank you for your patience." : "Obrigado pela sua paciência.",
+ "%s (3rdparty)" : "%s (terceiros)",
"Problem loading page, reloading in 5 seconds" : "Problema a carregar a página, a recarregar em 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Os seus ficheiros estão encriptados. Se não ativou a chave de recuperação, não terá nenhum modo para voltar obter os seus dados depois de reiniciar a sua senha. <br />Se não tem a certeza do que fazer, por favor, contacte o seu administrador antes de continuar.<br /> Tem a certeza que quer continuar?",
"Ok" : "CONFIRMAR",
diff --git a/core/l10n/pt_PT.json b/core/l10n/pt_PT.json
index 952f669ca7f..98cd5e8b19b 100644
--- a/core/l10n/pt_PT.json
+++ b/core/l10n/pt_PT.json
@@ -46,7 +46,6 @@
"Reset log level" : "Reiniciar nível de registo",
"Starting code integrity check" : "A iniciar a verificação da integridade do código",
"Finished code integrity check" : "Terminada a verificação da integridade do código",
- "%s (3rdparty)" : "%s (terceiros)",
"%s (incompatible)" : "%s (incompatível)",
"Following apps have been disabled: %s" : "Foram desativadas as seguintes aplicações: %s",
"Already up to date" : "Já está atualizado",
@@ -276,6 +275,7 @@
"This page will refresh itself when the %s instance is available again." : "Esta página irá ser atualizada quando a instância %s ficar novamente disponível.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contacte o seu administrador do sistema se esta mensagem persistir ou apareceu inesperadamente.",
"Thank you for your patience." : "Obrigado pela sua paciência.",
+ "%s (3rdparty)" : "%s (terceiros)",
"Problem loading page, reloading in 5 seconds" : "Problema a carregar a página, a recarregar em 5 segundos",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Os seus ficheiros estão encriptados. Se não ativou a chave de recuperação, não terá nenhum modo para voltar obter os seus dados depois de reiniciar a sua senha. <br />Se não tem a certeza do que fazer, por favor, contacte o seu administrador antes de continuar.<br /> Tem a certeza que quer continuar?",
"Ok" : "CONFIRMAR",
diff --git a/core/l10n/ro.js b/core/l10n/ro.js
index 37e7c42b8e3..fdcede3b305 100644
--- a/core/l10n/ro.js
+++ b/core/l10n/ro.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Resetează nivelul de logare",
"Starting code integrity check" : "Începe verificarea integrității codului",
"Finished code integrity check" : "Verificarea integrității codului a fost finalizată",
- "%s (3rdparty)" : "%s (terță parte)",
"%s (incompatible)" : "%s (incompatibil)",
"Following apps have been disabled: %s" : "Următoarele aplicații au fost dezactivate: %s",
"Already up to date" : "Deja actualizat",
@@ -288,6 +287,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Această pagină se va reîmprospăta atunci când %s instance e disponibil din nou.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contactează-ți administratorul de sistem dacă acest mesaj persistă sau a apărut neașteptat.",
"Thank you for your patience." : "Îți mulțumim pentru răbdare.",
+ "%s (3rdparty)" : "%s (terță parte)",
"Problem loading page, reloading in 5 seconds" : "A apărut o problemă la încărcarea paginii, se reîncearcă în 5 secunde",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Fișierele tale sunt criptate. Dacă nu ai activat o cheie de restabilire, e posibil să nu mai poți accesa informațiile tale după o resetare a parolei.<br />Dacă nu ești sigur ce trebuie să faci, contactează administratorul înainte de a continua. <br /> Sigur vrei să continui?",
"Ok" : "Ok",
diff --git a/core/l10n/ro.json b/core/l10n/ro.json
index 2a99b79ba43..5a117d12e06 100644
--- a/core/l10n/ro.json
+++ b/core/l10n/ro.json
@@ -48,7 +48,6 @@
"Reset log level" : "Resetează nivelul de logare",
"Starting code integrity check" : "Începe verificarea integrității codului",
"Finished code integrity check" : "Verificarea integrității codului a fost finalizată",
- "%s (3rdparty)" : "%s (terță parte)",
"%s (incompatible)" : "%s (incompatibil)",
"Following apps have been disabled: %s" : "Următoarele aplicații au fost dezactivate: %s",
"Already up to date" : "Deja actualizat",
@@ -286,6 +285,7 @@
"This page will refresh itself when the %s instance is available again." : "Această pagină se va reîmprospăta atunci când %s instance e disponibil din nou.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contactează-ți administratorul de sistem dacă acest mesaj persistă sau a apărut neașteptat.",
"Thank you for your patience." : "Îți mulțumim pentru răbdare.",
+ "%s (3rdparty)" : "%s (terță parte)",
"Problem loading page, reloading in 5 seconds" : "A apărut o problemă la încărcarea paginii, se reîncearcă în 5 secunde",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Fișierele tale sunt criptate. Dacă nu ai activat o cheie de restabilire, e posibil să nu mai poți accesa informațiile tale după o resetare a parolei.<br />Dacă nu ești sigur ce trebuie să faci, contactează administratorul înainte de a continua. <br /> Sigur vrei să continui?",
"Ok" : "Ok",
diff --git a/core/l10n/ru.js b/core/l10n/ru.js
index e7c4bc4ea65..495a5419158 100644
--- a/core/l10n/ru.js
+++ b/core/l10n/ru.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Сброс уровня протоколирования",
"Starting code integrity check" : "Начинается проверка целостности кода",
"Finished code integrity check" : "Проверка целостности кода завершена",
- "%s (3rdparty)" : "%s (стороннее)",
"%s (incompatible)" : "%s (несовместимое)",
"Following apps have been disabled: %s" : "Были отключены следующие приложения: %s",
"Already up to date" : "Не нуждается в обновлении",
@@ -122,6 +121,7 @@ OC.L10N.register(
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Некоторые файлы не прошли проверку целостности. Дополнительная информация о способах решения этой проблемы содержится в <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документации</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Список проблемных файлов…</a> / <a href=\"{rescanEndpoint}\">Выполнить повторное сканирование…</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "PHP OPcache не настроен правильно. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Для обеспечения лучшей производительности рекомендуется </a> задать в файле <code>php.ini</code> следующие параметры настроек:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "Функция PHP «set_time_limit» недоступна. В случае остановки скриптов во время работы это может привести к повреждению установки сервера Nextcloud. Настоятельно рекомендуется включить эту функцию. ",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Установленная версия PHP не поддерживает библиотеку FreeType, что приводит к неверному отображению изображений профиля и интерфейса настроек.",
"Error occurred while checking server setup" : "Произошла ошибка при проверке настроек сервера",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Каталог данных и файлы, возможно, доступны из Интернета. Файл .htaccess не работает. Настоятельно рекомендуется настроить веб сервер таким образом, чтобы каталог данных не был доступен из внешней сети, либо переместить каталог данных за пределы корневого каталога веб-сервера.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Заголовок HTTP «{header}» не настроен на значение «{expected}». Это потенциальная проблема безопасности для устранения которой рекомендуется задать этот параметр.",
@@ -276,6 +276,7 @@ OC.L10N.register(
"Username or email" : "Имя пользователя или Email",
"Log in" : "Войти",
"Wrong password." : "Неправильный пароль.",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "С этого IP адреса было выполнено множество неудачных попыток входа. Следующую попытку входа в систему можно будет выполнить через 30 секунд.",
"Stay logged in" : "Оставаться в системе",
"Forgot password?" : "Забыли пароль?",
"Back to log in" : "Авторизоваться повторно",
@@ -315,6 +316,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Эта страница обновится автоматически когда сервер %s снова станет доступен.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Обратитесь к вашему системному администратору если это сообщение не исчезает или появляется неожиданно.",
"Thank you for your patience." : "Спасибо за терпение.",
+ "%s (3rdparty)" : "%s (стороннее)",
"Problem loading page, reloading in 5 seconds" : "Возникла проблема при загрузке страницы, повторная попытка через 5 секунд",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Ваши файлы зашифрованы. Если вы не включили ключ восстановления, то ваши данные будут недоступны после сброса пароля.<br />Если вы не уверены что делать дальше - обратитесь к вашему администратору.<br />Вы действительно хотите продолжить?",
"Ok" : "Ок",
diff --git a/core/l10n/ru.json b/core/l10n/ru.json
index 0e6c8086dcf..e72f4f0c7eb 100644
--- a/core/l10n/ru.json
+++ b/core/l10n/ru.json
@@ -48,7 +48,6 @@
"Reset log level" : "Сброс уровня протоколирования",
"Starting code integrity check" : "Начинается проверка целостности кода",
"Finished code integrity check" : "Проверка целостности кода завершена",
- "%s (3rdparty)" : "%s (стороннее)",
"%s (incompatible)" : "%s (несовместимое)",
"Following apps have been disabled: %s" : "Были отключены следующие приложения: %s",
"Already up to date" : "Не нуждается в обновлении",
@@ -120,6 +119,7 @@
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Некоторые файлы не прошли проверку целостности. Дополнительная информация о способах решения этой проблемы содержится в <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документации</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Список проблемных файлов…</a> / <a href=\"{rescanEndpoint}\">Выполнить повторное сканирование…</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "PHP OPcache не настроен правильно. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Для обеспечения лучшей производительности рекомендуется </a> задать в файле <code>php.ini</code> следующие параметры настроек:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "Функция PHP «set_time_limit» недоступна. В случае остановки скриптов во время работы это может привести к повреждению установки сервера Nextcloud. Настоятельно рекомендуется включить эту функцию. ",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Установленная версия PHP не поддерживает библиотеку FreeType, что приводит к неверному отображению изображений профиля и интерфейса настроек.",
"Error occurred while checking server setup" : "Произошла ошибка при проверке настроек сервера",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Каталог данных и файлы, возможно, доступны из Интернета. Файл .htaccess не работает. Настоятельно рекомендуется настроить веб сервер таким образом, чтобы каталог данных не был доступен из внешней сети, либо переместить каталог данных за пределы корневого каталога веб-сервера.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Заголовок HTTP «{header}» не настроен на значение «{expected}». Это потенциальная проблема безопасности для устранения которой рекомендуется задать этот параметр.",
@@ -274,6 +274,7 @@
"Username or email" : "Имя пользователя или Email",
"Log in" : "Войти",
"Wrong password." : "Неправильный пароль.",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "С этого IP адреса было выполнено множество неудачных попыток входа. Следующую попытку входа в систему можно будет выполнить через 30 секунд.",
"Stay logged in" : "Оставаться в системе",
"Forgot password?" : "Забыли пароль?",
"Back to log in" : "Авторизоваться повторно",
@@ -313,6 +314,7 @@
"This page will refresh itself when the %s instance is available again." : "Эта страница обновится автоматически когда сервер %s снова станет доступен.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Обратитесь к вашему системному администратору если это сообщение не исчезает или появляется неожиданно.",
"Thank you for your patience." : "Спасибо за терпение.",
+ "%s (3rdparty)" : "%s (стороннее)",
"Problem loading page, reloading in 5 seconds" : "Возникла проблема при загрузке страницы, повторная попытка через 5 секунд",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Ваши файлы зашифрованы. Если вы не включили ключ восстановления, то ваши данные будут недоступны после сброса пароля.<br />Если вы не уверены что делать дальше - обратитесь к вашему администратору.<br />Вы действительно хотите продолжить?",
"Ok" : "Ок",
diff --git a/core/l10n/sk.js b/core/l10n/sk.js
index f152095eae6..d2d165e4643 100644
--- a/core/l10n/sk.js
+++ b/core/l10n/sk.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Obnoviť úroveň záznamu",
"Starting code integrity check" : "Začína kontrola integrity kódu",
"Finished code integrity check" : "Kontrola integrity kódu ukončená",
- "%s (3rdparty)" : "%s (od tretej strany)",
"%s (incompatible)" : "%s (nekompatibilná)",
"Following apps have been disabled: %s" : "Nasledovné aplikácie boli zakázané: %s",
"Already up to date" : "Už aktuálne",
@@ -298,6 +297,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Táto stránka sa obnoví sama hneď ako bude %s inštancia znovu dostupná.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Kontaktujte prosím správcu systému, ak sa táto správa objavuje opakovane alebo neočakávane.",
"Thank you for your patience." : "Ďakujeme za Vašu trpezlivosť.",
+ "%s (3rdparty)" : "%s (od tretej strany)",
"Problem loading page, reloading in 5 seconds" : "Nastal problém pri načítaní stránky, pokus sa zopakuje o 5 sekúnd",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Súbory sú zašifrované. Ak ste nepovolili kľúč pre obnovenie, neexistuje žiadny spôsob, ako obnoviť vaše dáta po obnovení vášho hesla. <br /> Ak si nie ste istí čo urobiť, prosím skôr než budete pokračovať, obráťte sa na administrátora. <br /> Naozaj chcete pokračovať?",
"Ok" : "Ok",
diff --git a/core/l10n/sk.json b/core/l10n/sk.json
index eb530cb4830..7905a4b2988 100644
--- a/core/l10n/sk.json
+++ b/core/l10n/sk.json
@@ -48,7 +48,6 @@
"Reset log level" : "Obnoviť úroveň záznamu",
"Starting code integrity check" : "Začína kontrola integrity kódu",
"Finished code integrity check" : "Kontrola integrity kódu ukončená",
- "%s (3rdparty)" : "%s (od tretej strany)",
"%s (incompatible)" : "%s (nekompatibilná)",
"Following apps have been disabled: %s" : "Nasledovné aplikácie boli zakázané: %s",
"Already up to date" : "Už aktuálne",
@@ -296,6 +295,7 @@
"This page will refresh itself when the %s instance is available again." : "Táto stránka sa obnoví sama hneď ako bude %s inštancia znovu dostupná.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Kontaktujte prosím správcu systému, ak sa táto správa objavuje opakovane alebo neočakávane.",
"Thank you for your patience." : "Ďakujeme za Vašu trpezlivosť.",
+ "%s (3rdparty)" : "%s (od tretej strany)",
"Problem loading page, reloading in 5 seconds" : "Nastal problém pri načítaní stránky, pokus sa zopakuje o 5 sekúnd",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Súbory sú zašifrované. Ak ste nepovolili kľúč pre obnovenie, neexistuje žiadny spôsob, ako obnoviť vaše dáta po obnovení vášho hesla. <br /> Ak si nie ste istí čo urobiť, prosím skôr než budete pokračovať, obráťte sa na administrátora. <br /> Naozaj chcete pokračovať?",
"Ok" : "Ok",
diff --git a/core/l10n/sl.js b/core/l10n/sl.js
index 2d656926184..f515fdc1e1f 100644
--- a/core/l10n/sl.js
+++ b/core/l10n/sl.js
@@ -47,7 +47,6 @@ OC.L10N.register(
"Reset log level" : "Počisti raven beleženja",
"Starting code integrity check" : "Začenjanje preverjanja stanja kode",
"Finished code integrity check" : "Končano preverjanje stanja kode",
- "%s (3rdparty)" : "%s (zunanje)",
"%s (incompatible)" : "%s (neskladno)",
"Following apps have been disabled: %s" : "Navedeni programi so onemogočeni: %s",
"Already up to date" : "Sistem je že posodobljen",
@@ -264,6 +263,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Stran bo osvežena ko bo %s spet na voljo.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Stopite v stik s skrbnikom sistema, če se bo sporočilo še naprej nepričakovano prikazovalo.",
"Thank you for your patience." : "Hvala za potrpežljivost!",
+ "%s (3rdparty)" : "%s (zunanje)",
"Problem loading page, reloading in 5 seconds" : "Napaka nalaganja strani! Poskus ponovnega nalaganja bo izveden čez 5 sekund.",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Datoteke so šifrirane. Če niste omogočili obnovitvenega ključa, po ponastavitvi gesla ne bo mogoč dostop do datotek.<br />V primeru, da niste prepričani, kaj storiti, stopite v stik s skrbnikom sistema.<br />Ali ste prepričani, da želite nadaljevati?",
"Ok" : "V redu",
diff --git a/core/l10n/sl.json b/core/l10n/sl.json
index 70d29984ab6..f0bff847f67 100644
--- a/core/l10n/sl.json
+++ b/core/l10n/sl.json
@@ -45,7 +45,6 @@
"Reset log level" : "Počisti raven beleženja",
"Starting code integrity check" : "Začenjanje preverjanja stanja kode",
"Finished code integrity check" : "Končano preverjanje stanja kode",
- "%s (3rdparty)" : "%s (zunanje)",
"%s (incompatible)" : "%s (neskladno)",
"Following apps have been disabled: %s" : "Navedeni programi so onemogočeni: %s",
"Already up to date" : "Sistem je že posodobljen",
@@ -262,6 +261,7 @@
"This page will refresh itself when the %s instance is available again." : "Stran bo osvežena ko bo %s spet na voljo.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Stopite v stik s skrbnikom sistema, če se bo sporočilo še naprej nepričakovano prikazovalo.",
"Thank you for your patience." : "Hvala za potrpežljivost!",
+ "%s (3rdparty)" : "%s (zunanje)",
"Problem loading page, reloading in 5 seconds" : "Napaka nalaganja strani! Poskus ponovnega nalaganja bo izveden čez 5 sekund.",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Datoteke so šifrirane. Če niste omogočili obnovitvenega ključa, po ponastavitvi gesla ne bo mogoč dostop do datotek.<br />V primeru, da niste prepričani, kaj storiti, stopite v stik s skrbnikom sistema.<br />Ali ste prepričani, da želite nadaljevati?",
"Ok" : "V redu",
diff --git a/core/l10n/sq.js b/core/l10n/sq.js
index c853f1b9ff3..ebd22894464 100644
--- a/core/l10n/sq.js
+++ b/core/l10n/sq.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Rikthe te parazgjedhja shkallën e regjistrimit",
"Starting code integrity check" : "Po fillohet kontroll integriteti për kodin",
"Finished code integrity check" : "Përfundoi kontrolli i integritetit për kodin",
- "%s (3rdparty)" : "%s (prej palësh të treta)",
"%s (incompatible)" : "%s (e papërputhshme)",
"Following apps have been disabled: %s" : "Janë çaktivizuar aplikacionet vijuese : %s",
"Already up to date" : "Tashmë e përditësuar",
@@ -279,6 +278,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Kjo faqe do të rifreskohet vetiu, sapo instanca %s të jetë sërish gati.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Nëse ky mesazh shfaqet vazhdimisht ose u shfaq papritmas, lidhuni me përgjegjësin e sistemit.",
"Thank you for your patience." : "Ju faleminderit për durimin.",
+ "%s (3rdparty)" : "%s (prej palësh të treta)",
"Problem loading page, reloading in 5 seconds" : "Gabim në ngarkimin e faqes, do të ringarkohet pas 5 sekondash",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Kartelat tuaja janë të fshehtëzuara. Nëse s’keni aktivizuar kyçin e rimarrjeve, nuk do të ketë ndonjë rrugë për të marrë sërish të dhënat tuaja pasi të jetë ricaktuar fjalëkalimi juaj.<br />Nëse s’jeni i sigurt se ç’duhet bërë, ju lutemi, përpara se të vazhdoni, lidhuni me përgjegjësin tuaj. <br />Doni vërtet të vazhdoni?",
"Ok" : "Në rregull",
diff --git a/core/l10n/sq.json b/core/l10n/sq.json
index 60eecdb2931..01ca43b6bc4 100644
--- a/core/l10n/sq.json
+++ b/core/l10n/sq.json
@@ -48,7 +48,6 @@
"Reset log level" : "Rikthe te parazgjedhja shkallën e regjistrimit",
"Starting code integrity check" : "Po fillohet kontroll integriteti për kodin",
"Finished code integrity check" : "Përfundoi kontrolli i integritetit për kodin",
- "%s (3rdparty)" : "%s (prej palësh të treta)",
"%s (incompatible)" : "%s (e papërputhshme)",
"Following apps have been disabled: %s" : "Janë çaktivizuar aplikacionet vijuese : %s",
"Already up to date" : "Tashmë e përditësuar",
@@ -277,6 +276,7 @@
"This page will refresh itself when the %s instance is available again." : "Kjo faqe do të rifreskohet vetiu, sapo instanca %s të jetë sërish gati.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Nëse ky mesazh shfaqet vazhdimisht ose u shfaq papritmas, lidhuni me përgjegjësin e sistemit.",
"Thank you for your patience." : "Ju faleminderit për durimin.",
+ "%s (3rdparty)" : "%s (prej palësh të treta)",
"Problem loading page, reloading in 5 seconds" : "Gabim në ngarkimin e faqes, do të ringarkohet pas 5 sekondash",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Kartelat tuaja janë të fshehtëzuara. Nëse s’keni aktivizuar kyçin e rimarrjeve, nuk do të ketë ndonjë rrugë për të marrë sërish të dhënat tuaja pasi të jetë ricaktuar fjalëkalimi juaj.<br />Nëse s’jeni i sigurt se ç’duhet bërë, ju lutemi, përpara se të vazhdoni, lidhuni me përgjegjësin tuaj. <br />Doni vërtet të vazhdoni?",
"Ok" : "Në rregull",
diff --git a/core/l10n/sr.js b/core/l10n/sr.js
index 03f25d6f98b..64353db5a96 100644
--- a/core/l10n/sr.js
+++ b/core/l10n/sr.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Поништи ниво уписа у дневник",
"Starting code integrity check" : "Почиње провера интегритета кода",
"Finished code integrity check" : "Завршена провера интегритета кода",
- "%s (3rdparty)" : "%s (од 3. лица)",
"%s (incompatible)" : "%s (некомпатибилан)",
"Following apps have been disabled: %s" : "Следеће апликације су онемогућене: %s",
"Already up to date" : "Већ има последњу верзију",
@@ -122,6 +121,7 @@ OC.L10N.register(
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Неки фајлови нису прошли проверу интегритета. Даљње информације о томе како да решите овај проблем се могу наћи у <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документацији</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Списак неисправних фајлова</a>/<a href=\"{rescanEndpoint}\">Скенирај поново…</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "PHP OPcache није подешен исправно. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">За боље перформансе предлаже се</a> да користите следећа подешавања у <code>php.ini</code> фајлу:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "PHP функција \"set_time_limit\" није доступна. Ово може да узрокује да се скрипте закоче у сред извршавања, и тако покваре инсталацију. Препоручује се да омогућите ову функцију.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Ваша PHP инсталација нема подршку за FreeType. Ово ће довести до неисправних профилних слика и неисправног интерфејса за подешавања.",
"Error occurred while checking server setup" : "Дошло је до грешке при провери поставки сервера",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Ваша фасцикла са подацима и фајлови су вероватно доступни са интернета. .htaccess фајл не ради. Препоручујемо да подесите Ваш веб сервер тако да је фасцикла са подацима ван фасцикле кореног документа веб сервера.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP заглавље „{header}“ није подешено као „{expected}“. Ово потенцијално угрожава безбедност и приватност и препоручује се да подесите ову поставку.",
@@ -276,6 +276,7 @@ OC.L10N.register(
"Username or email" : "Корисничко име или адреса е-поште",
"Log in" : "Пријава",
"Wrong password." : "Погрешна лозинка.",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "Приметили смо више неисправних покушаја пријава са Ваше IP адресе. Следећа пријава ће бити могућа тек за 30 секунди.",
"Stay logged in" : "Останите пријављени",
"Forgot password?" : "Заборавили сте лозинку?",
"Back to log in" : "Назад на пријаву",
@@ -315,6 +316,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Ова страница ће се сама освежити када %s постане поново доступан.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Контактирајте администратора ако се порука понавља или се неочекивано појавила.",
"Thank you for your patience." : "Хвала Вам на стрпљењу.",
+ "%s (3rdparty)" : "%s (од 3. лица)",
"Problem loading page, reloading in 5 seconds" : "Грешка приликом учитавања стране, покушавам поново за 5 секунди",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Ваши фајлови су шифровани. Ако нисте укључили кључ за опоравак, нећете моћи да повратите податке након ресетовања лозинке.<br />Ако нисте сигурни шта да радите, контактирајте администратора пре него што наставите.<br />Да ли желите да наставите?",
"Ok" : "У реду",
diff --git a/core/l10n/sr.json b/core/l10n/sr.json
index a6b1ff6c98f..3b208f967ab 100644
--- a/core/l10n/sr.json
+++ b/core/l10n/sr.json
@@ -48,7 +48,6 @@
"Reset log level" : "Поништи ниво уписа у дневник",
"Starting code integrity check" : "Почиње провера интегритета кода",
"Finished code integrity check" : "Завршена провера интегритета кода",
- "%s (3rdparty)" : "%s (од 3. лица)",
"%s (incompatible)" : "%s (некомпатибилан)",
"Following apps have been disabled: %s" : "Следеће апликације су онемогућене: %s",
"Already up to date" : "Већ има последњу верзију",
@@ -120,6 +119,7 @@
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Неки фајлови нису прошли проверу интегритета. Даљње информације о томе како да решите овај проблем се могу наћи у <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">документацији</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Списак неисправних фајлова</a>/<a href=\"{rescanEndpoint}\">Скенирај поново…</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "PHP OPcache није подешен исправно. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">За боље перформансе предлаже се</a> да користите следећа подешавања у <code>php.ini</code> фајлу:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "PHP функција \"set_time_limit\" није доступна. Ово може да узрокује да се скрипте закоче у сред извршавања, и тако покваре инсталацију. Препоручује се да омогућите ову функцију.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Ваша PHP инсталација нема подршку за FreeType. Ово ће довести до неисправних профилних слика и неисправног интерфејса за подешавања.",
"Error occurred while checking server setup" : "Дошло је до грешке при провери поставки сервера",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Ваша фасцикла са подацима и фајлови су вероватно доступни са интернета. .htaccess фајл не ради. Препоручујемо да подесите Ваш веб сервер тако да је фасцикла са подацима ван фасцикле кореног документа веб сервера.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP заглавље „{header}“ није подешено као „{expected}“. Ово потенцијално угрожава безбедност и приватност и препоручује се да подесите ову поставку.",
@@ -274,6 +274,7 @@
"Username or email" : "Корисничко име или адреса е-поште",
"Log in" : "Пријава",
"Wrong password." : "Погрешна лозинка.",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "Приметили смо више неисправних покушаја пријава са Ваше IP адресе. Следећа пријава ће бити могућа тек за 30 секунди.",
"Stay logged in" : "Останите пријављени",
"Forgot password?" : "Заборавили сте лозинку?",
"Back to log in" : "Назад на пријаву",
@@ -313,6 +314,7 @@
"This page will refresh itself when the %s instance is available again." : "Ова страница ће се сама освежити када %s постане поново доступан.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Контактирајте администратора ако се порука понавља или се неочекивано појавила.",
"Thank you for your patience." : "Хвала Вам на стрпљењу.",
+ "%s (3rdparty)" : "%s (од 3. лица)",
"Problem loading page, reloading in 5 seconds" : "Грешка приликом учитавања стране, покушавам поново за 5 секунди",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Ваши фајлови су шифровани. Ако нисте укључили кључ за опоравак, нећете моћи да повратите податке након ресетовања лозинке.<br />Ако нисте сигурни шта да радите, контактирајте администратора пре него што наставите.<br />Да ли желите да наставите?",
"Ok" : "У реду",
diff --git a/core/l10n/sv.js b/core/l10n/sv.js
index b8a46d40d91..ca1457af15e 100644
--- a/core/l10n/sv.js
+++ b/core/l10n/sv.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Återställer loggningsnivå",
"Starting code integrity check" : "Startar integritetskontroll av kod",
"Finished code integrity check" : "Slutförde integritetskontroll av kod",
- "%s (3rdparty)" : "%s (3rdparty)",
"%s (incompatible)" : "%s (inkompatibel)",
"Following apps have been disabled: %s" : "Följande appar har inaktiverats: %s",
"Already up to date" : "Redan uppdaterad",
@@ -298,6 +297,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Denna sida uppdaterar sig själv när %s-instansen är tillgänglig igen.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Hör av dig till din systemadministratör om detta meddelande fortsätter eller visas oväntat.",
"Thank you for your patience." : "Tack för ditt tålamod.",
+ "%s (3rdparty)" : "%s (3rdparty)",
"Problem loading page, reloading in 5 seconds" : "Problem med att ladda sidan, försöker igen om 5 sekunder",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Dina filer är krypterade. Om du inte angett någon återställningsnyckel, kommer det att vara omöjligt att få tillbaka dina data efter att lösenordet är återställt..<br />Om du är osäker på vad du ska göra, vänligen kontakta din administratör innan du fortsätter.<br />Är du verkligen helt säker på att du vill fortsätta?",
"Ok" : "Ok",
diff --git a/core/l10n/sv.json b/core/l10n/sv.json
index c9dddaa033f..4e5faf4704a 100644
--- a/core/l10n/sv.json
+++ b/core/l10n/sv.json
@@ -48,7 +48,6 @@
"Reset log level" : "Återställer loggningsnivå",
"Starting code integrity check" : "Startar integritetskontroll av kod",
"Finished code integrity check" : "Slutförde integritetskontroll av kod",
- "%s (3rdparty)" : "%s (3rdparty)",
"%s (incompatible)" : "%s (inkompatibel)",
"Following apps have been disabled: %s" : "Följande appar har inaktiverats: %s",
"Already up to date" : "Redan uppdaterad",
@@ -296,6 +295,7 @@
"This page will refresh itself when the %s instance is available again." : "Denna sida uppdaterar sig själv när %s-instansen är tillgänglig igen.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Hör av dig till din systemadministratör om detta meddelande fortsätter eller visas oväntat.",
"Thank you for your patience." : "Tack för ditt tålamod.",
+ "%s (3rdparty)" : "%s (3rdparty)",
"Problem loading page, reloading in 5 seconds" : "Problem med att ladda sidan, försöker igen om 5 sekunder",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Dina filer är krypterade. Om du inte angett någon återställningsnyckel, kommer det att vara omöjligt att få tillbaka dina data efter att lösenordet är återställt..<br />Om du är osäker på vad du ska göra, vänligen kontakta din administratör innan du fortsätter.<br />Är du verkligen helt säker på att du vill fortsätta?",
"Ok" : "Ok",
diff --git a/core/l10n/tr.js b/core/l10n/tr.js
index a09b9f2a553..f723fe293d7 100644
--- a/core/l10n/tr.js
+++ b/core/l10n/tr.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Günlükleme düzeyini sıfırla",
"Starting code integrity check" : "Kod bütünlük sınaması başlatılıyor",
"Finished code integrity check" : "Kod bütünlük sınaması bitti",
- "%s (3rdparty)" : "%s (3. taraf)",
"%s (incompatible)" : "%s (uyumsuz)",
"Following apps have been disabled: %s" : "Aşağıdaki uygulamalar devre dışı bırakıldı: %s",
"Already up to date" : "Zaten güncel",
@@ -122,6 +121,7 @@ OC.L10N.register(
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Bazı dosyalar bütünlük denetiminden geçemedi. Bu sorunun çözümü ile ilgili bilgi almak için <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">belgelere</a> bakabilirsiniz. (<a href=\"{codeIntegrityDownloadEndpoint}\">Geçersiz dosyaların listesi…</a> / <a href=\"{rescanEndpoint}\">Yeniden Tara…</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "PHP OPcache doğru şekilde ayarlanmamış. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Daha iyi sonuç almak için</a> <code>php.ini</code> dosyasında şu ayarların kullanılması önerilir:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "\"set_time_limit\" PHP işlevi kullanılamıyor. Bu durum betiklerin yürütme sırasında durmasına, ve kurulumunuzun çalışmamasına neden olabilir. Bu işlevin etkinleştirilmesi önemle önerilir.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "PHP kurulumunuzda FreeType desteği yok. Bu durum profil görsellerinin ve ayarlar bölümünün bozuk görüntülenmesine neden olur.",
"Error occurred while checking server setup" : "Sunucu ayarları denetlenirken sorun çıktı",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Veri klasörünüz ve dosyalarınız İnternet üzerinden erişime açık olabilir. .htaccess dosyası çalışmıyor. Web sunucunuzu yapılandırarak veri klasörüne erişimi engellemeniz ya da veri klasörünü web sunucu kök klasörü dışına taşımanız önemle önerilir.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "\"{header}\" HTTP üst bilgisi \"{expected}\" şeklinde ayarlanmamış. Bu durum olası bir güvenlik ya da gizlilik riski oluşturduğundan bu ayarın belirtildiği gibi yapılması önerilir.",
@@ -276,6 +276,7 @@ OC.L10N.register(
"Username or email" : "Kullanıcı adı ya da e-posta",
"Log in" : "Oturum Aç",
"Wrong password." : "Parola yanlış.",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "IP adresinizden yapılan birden çok geçersiz oturum açma girişimi algılandı. Bu nedenle oturum açmanız 30 saniye süreyle engellendi.",
"Stay logged in" : "Bağlı kal",
"Forgot password?" : "Parolamı unuttum",
"Back to log in" : "Oturum açmaya geri dön",
@@ -315,6 +316,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Bu sayfa, %s kopyası yeniden kullanılabilir olduğunda kendini yenileyecek.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Bu ileti görüntülenmeye devam ediyor ya da beklenmedik şekilde ortaya çıkıyorsa sistem yöneticinizle görüşün.",
"Thank you for your patience." : "Anlayışınız için teşekkür ederiz.",
+ "%s (3rdparty)" : "%s (3. taraf)",
"Problem loading page, reloading in 5 seconds" : "Sayfa yüklenirken sorun çıktı, Sayfa 5 saniye içinde yeniden yüklenecek",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Dosyalarınız şifrelenmiş. Kurtarma anahtarını etkinleştirmediyseniz, parola sıfırlama işleminden sonra verilerinize erişemeyeceksiniz.<br />Ne yapacağınızdan emin değilseniz, ilerlemeden önce sistem yöneticiniz ile görüşün.<br />Gerçekten devam etmek istiyor musunuz?",
"Ok" : "Tamam",
diff --git a/core/l10n/tr.json b/core/l10n/tr.json
index 923d782732b..2d0e61452d4 100644
--- a/core/l10n/tr.json
+++ b/core/l10n/tr.json
@@ -48,7 +48,6 @@
"Reset log level" : "Günlükleme düzeyini sıfırla",
"Starting code integrity check" : "Kod bütünlük sınaması başlatılıyor",
"Finished code integrity check" : "Kod bütünlük sınaması bitti",
- "%s (3rdparty)" : "%s (3. taraf)",
"%s (incompatible)" : "%s (uyumsuz)",
"Following apps have been disabled: %s" : "Aşağıdaki uygulamalar devre dışı bırakıldı: %s",
"Already up to date" : "Zaten güncel",
@@ -120,6 +119,7 @@
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Bazı dosyalar bütünlük denetiminden geçemedi. Bu sorunun çözümü ile ilgili bilgi almak için <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">belgelere</a> bakabilirsiniz. (<a href=\"{codeIntegrityDownloadEndpoint}\">Geçersiz dosyaların listesi…</a> / <a href=\"{rescanEndpoint}\">Yeniden Tara…</a>)",
"The PHP OPcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">For better performance it is recommended</a> to use the following settings in the <code>php.ini</code>:" : "PHP OPcache doğru şekilde ayarlanmamış. <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">Daha iyi sonuç almak için</a> <code>php.ini</code> dosyasında şu ayarların kullanılması önerilir:",
"The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "\"set_time_limit\" PHP işlevi kullanılamıyor. Bu durum betiklerin yürütme sırasında durmasına, ve kurulumunuzun çalışmamasına neden olabilir. Bu işlevin etkinleştirilmesi önemle önerilir.",
+ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "PHP kurulumunuzda FreeType desteği yok. Bu durum profil görsellerinin ve ayarlar bölümünün bozuk görüntülenmesine neden olur.",
"Error occurred while checking server setup" : "Sunucu ayarları denetlenirken sorun çıktı",
"Your data directory and files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Veri klasörünüz ve dosyalarınız İnternet üzerinden erişime açık olabilir. .htaccess dosyası çalışmıyor. Web sunucunuzu yapılandırarak veri klasörüne erişimi engellemeniz ya da veri klasörünü web sunucu kök klasörü dışına taşımanız önemle önerilir.",
"The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "\"{header}\" HTTP üst bilgisi \"{expected}\" şeklinde ayarlanmamış. Bu durum olası bir güvenlik ya da gizlilik riski oluşturduğundan bu ayarın belirtildiği gibi yapılması önerilir.",
@@ -274,6 +274,7 @@
"Username or email" : "Kullanıcı adı ya da e-posta",
"Log in" : "Oturum Aç",
"Wrong password." : "Parola yanlış.",
+ "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "IP adresinizden yapılan birden çok geçersiz oturum açma girişimi algılandı. Bu nedenle oturum açmanız 30 saniye süreyle engellendi.",
"Stay logged in" : "Bağlı kal",
"Forgot password?" : "Parolamı unuttum",
"Back to log in" : "Oturum açmaya geri dön",
@@ -313,6 +314,7 @@
"This page will refresh itself when the %s instance is available again." : "Bu sayfa, %s kopyası yeniden kullanılabilir olduğunda kendini yenileyecek.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Bu ileti görüntülenmeye devam ediyor ya da beklenmedik şekilde ortaya çıkıyorsa sistem yöneticinizle görüşün.",
"Thank you for your patience." : "Anlayışınız için teşekkür ederiz.",
+ "%s (3rdparty)" : "%s (3. taraf)",
"Problem loading page, reloading in 5 seconds" : "Sayfa yüklenirken sorun çıktı, Sayfa 5 saniye içinde yeniden yüklenecek",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Dosyalarınız şifrelenmiş. Kurtarma anahtarını etkinleştirmediyseniz, parola sıfırlama işleminden sonra verilerinize erişemeyeceksiniz.<br />Ne yapacağınızdan emin değilseniz, ilerlemeden önce sistem yöneticiniz ile görüşün.<br />Gerçekten devam etmek istiyor musunuz?",
"Ok" : "Tamam",
diff --git a/core/l10n/uk.js b/core/l10n/uk.js
index 0d3ce7f3933..c8ae6e9d49f 100644
--- a/core/l10n/uk.js
+++ b/core/l10n/uk.js
@@ -49,7 +49,6 @@ OC.L10N.register(
"Reset log level" : "Скинути налаштування детальності журналу",
"Starting code integrity check" : "Початок перевірки цілісності коду",
"Finished code integrity check" : "Завершено перевірку цілісності коду",
- "%s (3rdparty)" : "%s (стороннє)",
"%s (incompatible)" : "%s (несумісне)",
"Following apps have been disabled: %s" : "Наступні додатки були вимкнені: %s",
"Already up to date" : "Вже актуально",
@@ -256,6 +255,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Ця сторінка автоматично перезавантажиться коли екземпляр %s стане знову доступний.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Зверніться до вашого системного адміністратора якщо це повідомлення не зникає або з'являється несподівано.",
"Thank you for your patience." : "Дякуємо за ваше терпіння.",
+ "%s (3rdparty)" : "%s (стороннє)",
"Problem loading page, reloading in 5 seconds" : "Проблема під час завантаження сторінки, повторне завантаження за 5 сек.",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Ваші файли зашифровані. Якщо ви не зробили ключ відновлення, після скидання паролю відновити ваші дані буде неможливо.<br /> Якщо ви не знаєте, що робити, будь ласка, зверніться до адміністратора перед продовженням.<br /> Ви дійсно хочете продовжити?",
"Ok" : "Гаразд",
diff --git a/core/l10n/uk.json b/core/l10n/uk.json
index 6de2357f962..82b8a81ba4d 100644
--- a/core/l10n/uk.json
+++ b/core/l10n/uk.json
@@ -47,7 +47,6 @@
"Reset log level" : "Скинути налаштування детальності журналу",
"Starting code integrity check" : "Початок перевірки цілісності коду",
"Finished code integrity check" : "Завершено перевірку цілісності коду",
- "%s (3rdparty)" : "%s (стороннє)",
"%s (incompatible)" : "%s (несумісне)",
"Following apps have been disabled: %s" : "Наступні додатки були вимкнені: %s",
"Already up to date" : "Вже актуально",
@@ -254,6 +253,7 @@
"This page will refresh itself when the %s instance is available again." : "Ця сторінка автоматично перезавантажиться коли екземпляр %s стане знову доступний.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Зверніться до вашого системного адміністратора якщо це повідомлення не зникає або з'являється несподівано.",
"Thank you for your patience." : "Дякуємо за ваше терпіння.",
+ "%s (3rdparty)" : "%s (стороннє)",
"Problem loading page, reloading in 5 seconds" : "Проблема під час завантаження сторінки, повторне завантаження за 5 сек.",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Ваші файли зашифровані. Якщо ви не зробили ключ відновлення, після скидання паролю відновити ваші дані буде неможливо.<br /> Якщо ви не знаєте, що робити, будь ласка, зверніться до адміністратора перед продовженням.<br /> Ви дійсно хочете продовжити?",
"Ok" : "Гаразд",
diff --git a/core/l10n/vi.js b/core/l10n/vi.js
index a8bc78ed6ac..75bbd20d665 100644
--- a/core/l10n/vi.js
+++ b/core/l10n/vi.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "Thiế lập lại cấp độ ghi nhật ký hệ thống",
"Starting code integrity check" : "Bắt đầu mã kiểm tra sự toàn vẹn",
"Finished code integrity check" : "Kết thúc mã kiểm tra sự toàn vẹn",
- "%s (3rdparty)" : "%s ( hãng thứ 3)",
"%s (incompatible)" : "%s (không tương thích)",
"Following apps have been disabled: %s" : "Các ứng dụng sau bị vô hiệu hóa: %s",
"Already up to date" : "Đã được cập nhật bản mới nhất",
@@ -290,6 +289,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Trang này sẽ tự động được làm tươi khi bản cài đặt %s được sẵn sàng.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Liên hệ với người quản trị nếu lỗi này vẫn tồn tại hoặc xuất hiện bất ngờ.",
"Thank you for your patience." : "Cảm ơn sự kiên nhẫn của bạn.",
+ "%s (3rdparty)" : "%s ( hãng thứ 3)",
"Problem loading page, reloading in 5 seconds" : "Có vấn đề khi nạp trang, nạp lại trang trong vòng 5 giây",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Các tệp tin của bạn đang bị mã hóa. Nếu bạn chưa bật khóa khôi phục, sẽ không có cách nào lấy lại dữ liệu của bạn khi mật khẩu của bạn bị thiết lập lại.<br />Nếu bạn không chắc điều gì mình sẽ làm, xin vui lòng liên hệ với quản trị hệ thống để tham vấn trước khi bạn tiếp tục. <br />Bạn có thực sự muốn làm điều này?",
"Ok" : "Đồng ý",
diff --git a/core/l10n/vi.json b/core/l10n/vi.json
index b6a0c478644..8f45a04e704 100644
--- a/core/l10n/vi.json
+++ b/core/l10n/vi.json
@@ -48,7 +48,6 @@
"Reset log level" : "Thiế lập lại cấp độ ghi nhật ký hệ thống",
"Starting code integrity check" : "Bắt đầu mã kiểm tra sự toàn vẹn",
"Finished code integrity check" : "Kết thúc mã kiểm tra sự toàn vẹn",
- "%s (3rdparty)" : "%s ( hãng thứ 3)",
"%s (incompatible)" : "%s (không tương thích)",
"Following apps have been disabled: %s" : "Các ứng dụng sau bị vô hiệu hóa: %s",
"Already up to date" : "Đã được cập nhật bản mới nhất",
@@ -288,6 +287,7 @@
"This page will refresh itself when the %s instance is available again." : "Trang này sẽ tự động được làm tươi khi bản cài đặt %s được sẵn sàng.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Liên hệ với người quản trị nếu lỗi này vẫn tồn tại hoặc xuất hiện bất ngờ.",
"Thank you for your patience." : "Cảm ơn sự kiên nhẫn của bạn.",
+ "%s (3rdparty)" : "%s ( hãng thứ 3)",
"Problem loading page, reloading in 5 seconds" : "Có vấn đề khi nạp trang, nạp lại trang trong vòng 5 giây",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Các tệp tin của bạn đang bị mã hóa. Nếu bạn chưa bật khóa khôi phục, sẽ không có cách nào lấy lại dữ liệu của bạn khi mật khẩu của bạn bị thiết lập lại.<br />Nếu bạn không chắc điều gì mình sẽ làm, xin vui lòng liên hệ với quản trị hệ thống để tham vấn trước khi bạn tiếp tục. <br />Bạn có thực sự muốn làm điều này?",
"Ok" : "Đồng ý",
diff --git a/core/l10n/zh_CN.js b/core/l10n/zh_CN.js
index c480ef9efe3..b8c10d07471 100644
--- a/core/l10n/zh_CN.js
+++ b/core/l10n/zh_CN.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "重设日志级别",
"Starting code integrity check" : "开始代码完整性检查",
"Finished code integrity check" : "代码完整性检查完成",
- "%s (3rdparty)" : "%s (第三方)",
"%s (incompatible)" : "%s (不兼容)",
"Following apps have been disabled: %s" : "下列应用已经被禁用: %s",
"Already up to date" : "已经是最新",
@@ -301,6 +300,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "当实例 %s 再次可用时此页面将刷新.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "如果这个消息一直存在或不停出现, 请联系你的系统管理员.",
"Thank you for your patience." : "感谢您久等了.",
+ "%s (3rdparty)" : "%s (第三方)",
"Problem loading page, reloading in 5 seconds" : "加载页面出现问题, 在 5 秒内重新加载",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "您的文件已经加密. 如果您没有启用恢复密钥, 当您的密码重置后没有任何方式能恢复您的数据. <br />如果您不确定, 请在继续前联系您的管理员.<br/>您是否真的要继续?",
"Ok" : "确定",
diff --git a/core/l10n/zh_CN.json b/core/l10n/zh_CN.json
index 85e66073442..250cc2be6ba 100644
--- a/core/l10n/zh_CN.json
+++ b/core/l10n/zh_CN.json
@@ -48,7 +48,6 @@
"Reset log level" : "重设日志级别",
"Starting code integrity check" : "开始代码完整性检查",
"Finished code integrity check" : "代码完整性检查完成",
- "%s (3rdparty)" : "%s (第三方)",
"%s (incompatible)" : "%s (不兼容)",
"Following apps have been disabled: %s" : "下列应用已经被禁用: %s",
"Already up to date" : "已经是最新",
@@ -299,6 +298,7 @@
"This page will refresh itself when the %s instance is available again." : "当实例 %s 再次可用时此页面将刷新.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "如果这个消息一直存在或不停出现, 请联系你的系统管理员.",
"Thank you for your patience." : "感谢您久等了.",
+ "%s (3rdparty)" : "%s (第三方)",
"Problem loading page, reloading in 5 seconds" : "加载页面出现问题, 在 5 秒内重新加载",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "您的文件已经加密. 如果您没有启用恢复密钥, 当您的密码重置后没有任何方式能恢复您的数据. <br />如果您不确定, 请在继续前联系您的管理员.<br/>您是否真的要继续?",
"Ok" : "确定",
diff --git a/core/l10n/zh_TW.js b/core/l10n/zh_TW.js
index 3f583d49999..588ada16eca 100644
--- a/core/l10n/zh_TW.js
+++ b/core/l10n/zh_TW.js
@@ -50,7 +50,6 @@ OC.L10N.register(
"Reset log level" : "重設記錄層級",
"Starting code integrity check" : "開始檢查程式碼完整性",
"Finished code integrity check" : "完成程式碼完整性檢查",
- "%s (3rdparty)" : "%s (第三方)",
"%s (incompatible)" : "%s (不相容的)",
"Following apps have been disabled: %s" : "以下應用程式已經被停用:%s",
"Already up to date" : "已經是最新版",
@@ -310,6 +309,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "%s 安裝恢復可用之後,本頁會自動重新整理",
"Contact your system administrator if this message persists or appeared unexpectedly." : "若這個訊息持續出現,請聯絡系統管理員",
"Thank you for your patience." : "感謝您的耐心",
+ "%s (3rdparty)" : "%s (第三方)",
"Problem loading page, reloading in 5 seconds" : "載入頁面出錯,5 秒後重新整理",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "您的檔案是加密的,如果您沒有啟用救援金鑰,當您重設密碼之後將無法存取您的資料。<br/>如果不確定該怎麼做,請聯絡您的系統管理員。<br/>您確定要繼續嗎?",
"Ok" : "好",
diff --git a/core/l10n/zh_TW.json b/core/l10n/zh_TW.json
index 7e7f475e72e..a7fe7ed66bc 100644
--- a/core/l10n/zh_TW.json
+++ b/core/l10n/zh_TW.json
@@ -48,7 +48,6 @@
"Reset log level" : "重設記錄層級",
"Starting code integrity check" : "開始檢查程式碼完整性",
"Finished code integrity check" : "完成程式碼完整性檢查",
- "%s (3rdparty)" : "%s (第三方)",
"%s (incompatible)" : "%s (不相容的)",
"Following apps have been disabled: %s" : "以下應用程式已經被停用:%s",
"Already up to date" : "已經是最新版",
@@ -308,6 +307,7 @@
"This page will refresh itself when the %s instance is available again." : "%s 安裝恢復可用之後,本頁會自動重新整理",
"Contact your system administrator if this message persists or appeared unexpectedly." : "若這個訊息持續出現,請聯絡系統管理員",
"Thank you for your patience." : "感謝您的耐心",
+ "%s (3rdparty)" : "%s (第三方)",
"Problem loading page, reloading in 5 seconds" : "載入頁面出錯,5 秒後重新整理",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "您的檔案是加密的,如果您沒有啟用救援金鑰,當您重設密碼之後將無法存取您的資料。<br/>如果不確定該怎麼做,請聯絡您的系統管理員。<br/>您確定要繼續嗎?",
"Ok" : "好",
diff --git a/core/templates/login.php b/core/templates/login.php
index de991e08d97..82594481d87 100644
--- a/core/templates/login.php
+++ b/core/templates/login.php
@@ -62,6 +62,12 @@ script('core', 'merged-login');
</p>
<?php } ?>
+ <?php if ($_['throttle_delay'] > 5000) { ?>
+ <p class="warning throttledMsg">
+ <?php p($l->t('We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.')); ?>
+ </p>
+ <?php } ?>
+
<?php if (!empty($_['canResetPassword'])) { ?>
<div id="reset-password-wrapper" style="display: none;">
<input type="submit" id="reset-password-submit" class="login primary" title="" value="<?php p($l->t('Reset password')); ?>" disabled="disabled" />
diff --git a/lib/base.php b/lib/base.php
index f763ee634f3..99651479dfa 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -236,7 +236,7 @@ class OC {
// Check if config is writable
$configFileWritable = is_writable($configFilePath);
if (!$configFileWritable && !OC_Helper::isReadOnlyConfigEnabled()
- || !$configFileWritable && self::checkUpgrade(false)) {
+ || !$configFileWritable && \OCP\Util::needUpgrade()) {
$urlGenerator = \OC::$server->getURLGenerator();
@@ -290,37 +290,15 @@ class OC {
}
/**
- * Checks if the version requires an update and shows
- * @param bool $showTemplate Whether an update screen should get shown
- * @return bool|void
- */
- public static function checkUpgrade($showTemplate = true) {
- if (\OCP\Util::needUpgrade()) {
- if (function_exists('opcache_reset')) {
- opcache_reset();
- }
- $systemConfig = \OC::$server->getSystemConfig();
- if ($showTemplate && !$systemConfig->getValue('maintenance', false)) {
- self::printUpgradePage();
- exit();
- } else {
- return true;
- }
- }
- return false;
- }
-
- /**
* Prints the upgrade page
+ *
+ * @param \OC\SystemConfig $systemConfig
*/
- private static function printUpgradePage() {
- $systemConfig = \OC::$server->getSystemConfig();
-
+ private static function printUpgradePage(\OC\SystemConfig $systemConfig) {
$disableWebUpdater = $systemConfig->getValue('upgrade.disable-web', false);
$tooBig = false;
if (!$disableWebUpdater) {
$apps = \OC::$server->getAppManager();
- $tooBig = false;
if ($apps->isInstalled('user_ldap')) {
$qb = \OC::$server->getDatabaseConnection()->getQueryBuilder();
@@ -724,7 +702,7 @@ class OC {
);
//setup extra user backends
- if (!self::checkUpgrade(false)) {
+ if (!\OCP\Util::needUpgrade()) {
OC_User::setupBackends();
} else {
// Run upgrades in incognito mode
@@ -807,7 +785,7 @@ class OC {
*/
public static function registerCleanupHooks() {
//don't try to do this before we are properly setup
- if (\OC::$server->getSystemConfig()->getValue('installed', false) && !self::checkUpgrade(false)) {
+ if (\OC::$server->getSystemConfig()->getValue('installed', false) && !\OCP\Util::needUpgrade()) {
// NOTE: This will be replaced to use OCP
$userSession = self::$server->getUserSession();
@@ -925,7 +903,7 @@ class OC {
if (!$systemConfig->getValue('installed', false)) {
\OC::$server->getSession()->clear();
$setupHelper = new OC\Setup(
- \OC::$server->getSystemConfig(),
+ $systemConfig,
\OC::$server->getIniWrapper(),
\OC::$server->getL10N('lib'),
\OC::$server->query(\OCP\Defaults::class),
@@ -945,7 +923,16 @@ class OC {
}
if (substr($requestPath, -3) !== '.js') { // we need these files during the upgrade
self::checkMaintenanceMode();
- self::checkUpgrade();
+
+ if (\OCP\Util::needUpgrade()) {
+ if (function_exists('opcache_reset')) {
+ opcache_reset();
+ }
+ if (!$systemConfig->getValue('maintenance', false)) {
+ self::printUpgradePage($systemConfig);
+ exit();
+ }
+ }
}
// emergency app disabling
@@ -968,7 +955,7 @@ class OC {
OC_App::loadApps(['authentication']);
// Load minimum set of apps
- if (!self::checkUpgrade(false)
+ if (!\OCP\Util::needUpgrade()
&& !$systemConfig->getValue('maintenance', false)) {
// For logged-in users: Load everything
if(\OC::$server->getUserSession()->isLoggedIn()) {
@@ -982,7 +969,7 @@ class OC {
if (!self::$CLI) {
try {
- if (!$systemConfig->getValue('maintenance', false) && !self::checkUpgrade(false)) {
+ if (!$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 ad42e6ca02f..f29b9334fca 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -97,6 +97,7 @@ return array(
'OCP\\Contacts\\ContactsMenu\\IProvider' => $baseDir . '/lib/public/Contacts/ContactsMenu/IProvider.php',
'OCP\\Contacts\\IManager' => $baseDir . '/lib/public/Contacts/IManager.php',
'OCP\\DB' => $baseDir . '/lib/public/DB.php',
+ 'OCP\\DB\\ISchemaWrapper' => $baseDir . '/lib/public/DB/ISchemaWrapper.php',
'OCP\\DB\\QueryBuilder\\ICompositeExpression' => $baseDir . '/lib/public/DB/QueryBuilder/ICompositeExpression.php',
'OCP\\DB\\QueryBuilder\\IExpressionBuilder' => $baseDir . '/lib/public/DB/QueryBuilder/IExpressionBuilder.php',
'OCP\\DB\\QueryBuilder\\IFunctionBuilder' => $baseDir . '/lib/public/DB/QueryBuilder/IFunctionBuilder.php',
@@ -802,14 +803,7 @@ return array(
'OC\\Repair\\CleanTags' => $baseDir . '/lib/private/Repair/CleanTags.php',
'OC\\Repair\\Collation' => $baseDir . '/lib/private/Repair/Collation.php',
'OC\\Repair\\MoveUpdaterStepFile' => $baseDir . '/lib/private/Repair/MoveUpdaterStepFile.php',
- 'OC\\Repair\\NC11\\CleanPreviews' => $baseDir . '/lib/private/Repair/NC11/CleanPreviews.php',
- 'OC\\Repair\\NC11\\CleanPreviewsBackgroundJob' => $baseDir . '/lib/private/Repair/NC11/CleanPreviewsBackgroundJob.php',
'OC\\Repair\\NC11\\FixMountStorages' => $baseDir . '/lib/private/Repair/NC11/FixMountStorages.php',
- 'OC\\Repair\\NC11\\MoveAvatars' => $baseDir . '/lib/private/Repair/NC11/MoveAvatars.php',
- 'OC\\Repair\\NC11\\MoveAvatarsBackgroundJob' => $baseDir . '/lib/private/Repair/NC11/MoveAvatarsBackgroundJob.php',
- 'OC\\Repair\\NC12\\InstallCoreBundle' => $baseDir . '/lib/private/Repair/NC12/InstallCoreBundle.php',
- 'OC\\Repair\\NC12\\RepairIdentityProofKeyFolders' => $baseDir . '/lib/private/Repair/NC12/RepairIdentityProofKeyFolders.php',
- 'OC\\Repair\\NC12\\UpdateLanguageCodes' => $baseDir . '/lib/private/Repair/NC12/UpdateLanguageCodes.php',
'OC\\Repair\\NC13\\AddLogRotateJob' => $baseDir . '/lib/private/Repair/NC13/AddLogRotateJob.php',
'OC\\Repair\\NC13\\RepairInvalidPaths' => $baseDir . '/lib/private/Repair/NC13/RepairInvalidPaths.php',
'OC\\Repair\\OldGroupMembershipShares' => $baseDir . '/lib/private/Repair/OldGroupMembershipShares.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index 8adb289e626..def8abd8c55 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -127,6 +127,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\Contacts\\ContactsMenu\\IProvider' => __DIR__ . '/../../..' . '/lib/public/Contacts/ContactsMenu/IProvider.php',
'OCP\\Contacts\\IManager' => __DIR__ . '/../../..' . '/lib/public/Contacts/IManager.php',
'OCP\\DB' => __DIR__ . '/../../..' . '/lib/public/DB.php',
+ 'OCP\\DB\\ISchemaWrapper' => __DIR__ . '/../../..' . '/lib/public/DB/ISchemaWrapper.php',
'OCP\\DB\\QueryBuilder\\ICompositeExpression' => __DIR__ . '/../../..' . '/lib/public/DB/QueryBuilder/ICompositeExpression.php',
'OCP\\DB\\QueryBuilder\\IExpressionBuilder' => __DIR__ . '/../../..' . '/lib/public/DB/QueryBuilder/IExpressionBuilder.php',
'OCP\\DB\\QueryBuilder\\IFunctionBuilder' => __DIR__ . '/../../..' . '/lib/public/DB/QueryBuilder/IFunctionBuilder.php',
@@ -832,14 +833,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Repair\\CleanTags' => __DIR__ . '/../../..' . '/lib/private/Repair/CleanTags.php',
'OC\\Repair\\Collation' => __DIR__ . '/../../..' . '/lib/private/Repair/Collation.php',
'OC\\Repair\\MoveUpdaterStepFile' => __DIR__ . '/../../..' . '/lib/private/Repair/MoveUpdaterStepFile.php',
- 'OC\\Repair\\NC11\\CleanPreviews' => __DIR__ . '/../../..' . '/lib/private/Repair/NC11/CleanPreviews.php',
- 'OC\\Repair\\NC11\\CleanPreviewsBackgroundJob' => __DIR__ . '/../../..' . '/lib/private/Repair/NC11/CleanPreviewsBackgroundJob.php',
'OC\\Repair\\NC11\\FixMountStorages' => __DIR__ . '/../../..' . '/lib/private/Repair/NC11/FixMountStorages.php',
- 'OC\\Repair\\NC11\\MoveAvatars' => __DIR__ . '/../../..' . '/lib/private/Repair/NC11/MoveAvatars.php',
- 'OC\\Repair\\NC11\\MoveAvatarsBackgroundJob' => __DIR__ . '/../../..' . '/lib/private/Repair/NC11/MoveAvatarsBackgroundJob.php',
- 'OC\\Repair\\NC12\\InstallCoreBundle' => __DIR__ . '/../../..' . '/lib/private/Repair/NC12/InstallCoreBundle.php',
- 'OC\\Repair\\NC12\\RepairIdentityProofKeyFolders' => __DIR__ . '/../../..' . '/lib/private/Repair/NC12/RepairIdentityProofKeyFolders.php',
- 'OC\\Repair\\NC12\\UpdateLanguageCodes' => __DIR__ . '/../../..' . '/lib/private/Repair/NC12/UpdateLanguageCodes.php',
'OC\\Repair\\NC13\\AddLogRotateJob' => __DIR__ . '/../../..' . '/lib/private/Repair/NC13/AddLogRotateJob.php',
'OC\\Repair\\NC13\\RepairInvalidPaths' => __DIR__ . '/../../..' . '/lib/private/Repair/NC13/RepairInvalidPaths.php',
'OC\\Repair\\OldGroupMembershipShares' => __DIR__ . '/../../..' . '/lib/private/Repair/OldGroupMembershipShares.php',
diff --git a/lib/l10n/es_419.js b/lib/l10n/es_419.js
index c3504fda2e4..e411731e983 100644
--- a/lib/l10n/es_419.js
+++ b/lib/l10n/es_419.js
@@ -75,7 +75,7 @@ OC.L10N.register(
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Latin America)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_419.json b/lib/l10n/es_419.json
index 6d906b69458..99efb0dd215 100644
--- a/lib/l10n/es_419.json
+++ b/lib/l10n/es_419.json
@@ -73,7 +73,7 @@
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Latin America)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_AR.js b/lib/l10n/es_AR.js
index 476786a647f..ffb3ebe977e 100644
--- a/lib/l10n/es_AR.js
+++ b/lib/l10n/es_AR.js
@@ -61,6 +61,7 @@ OC.L10N.register(
"Encryption" : "Encripción",
"Additional settings" : "Configuraciones adicionales",
"Tips & tricks" : "Consejos y trucos",
+ "__language_name__" : "Español (Argentina)",
"%s enter the database username and name." : "%s ingrese el nombre del usuario y nombre de la base de datos",
"%s enter the database username." : "%s ingresar el nombre de usuario de la base de datos.",
"%s enter the database name." : "%s ingresar el nombre de la base de datos",
diff --git a/lib/l10n/es_AR.json b/lib/l10n/es_AR.json
index 76d5dad0332..03eb5ad4770 100644
--- a/lib/l10n/es_AR.json
+++ b/lib/l10n/es_AR.json
@@ -59,6 +59,7 @@
"Encryption" : "Encripción",
"Additional settings" : "Configuraciones adicionales",
"Tips & tricks" : "Consejos y trucos",
+ "__language_name__" : "Español (Argentina)",
"%s enter the database username and name." : "%s ingrese el nombre del usuario y nombre de la base de datos",
"%s enter the database username." : "%s ingresar el nombre de usuario de la base de datos.",
"%s enter the database name." : "%s ingresar el nombre de la base de datos",
diff --git a/lib/l10n/es_CL.js b/lib/l10n/es_CL.js
index c3504fda2e4..5feb169790e 100644
--- a/lib/l10n/es_CL.js
+++ b/lib/l10n/es_CL.js
@@ -75,7 +75,7 @@ OC.L10N.register(
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Chile)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_CL.json b/lib/l10n/es_CL.json
index 6d906b69458..51e3014cf1d 100644
--- a/lib/l10n/es_CL.json
+++ b/lib/l10n/es_CL.json
@@ -73,7 +73,7 @@
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Chile)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_CO.js b/lib/l10n/es_CO.js
index c3504fda2e4..1d08eb3dfca 100644
--- a/lib/l10n/es_CO.js
+++ b/lib/l10n/es_CO.js
@@ -75,7 +75,7 @@ OC.L10N.register(
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Colombia)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_CO.json b/lib/l10n/es_CO.json
index 6d906b69458..e65bf00def9 100644
--- a/lib/l10n/es_CO.json
+++ b/lib/l10n/es_CO.json
@@ -73,7 +73,7 @@
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Colombia)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_CR.js b/lib/l10n/es_CR.js
index c3504fda2e4..e7beef5b863 100644
--- a/lib/l10n/es_CR.js
+++ b/lib/l10n/es_CR.js
@@ -75,7 +75,7 @@ OC.L10N.register(
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Costa Rica)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_CR.json b/lib/l10n/es_CR.json
index 6d906b69458..2ee98c7ff3e 100644
--- a/lib/l10n/es_CR.json
+++ b/lib/l10n/es_CR.json
@@ -73,7 +73,7 @@
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Costa Rica)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_DO.js b/lib/l10n/es_DO.js
index c3504fda2e4..3f4a41410d9 100644
--- a/lib/l10n/es_DO.js
+++ b/lib/l10n/es_DO.js
@@ -75,7 +75,7 @@ OC.L10N.register(
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Dominican Republic)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_DO.json b/lib/l10n/es_DO.json
index 6d906b69458..6344dea931a 100644
--- a/lib/l10n/es_DO.json
+++ b/lib/l10n/es_DO.json
@@ -73,7 +73,7 @@
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Dominican Republic)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_EC.js b/lib/l10n/es_EC.js
index c3504fda2e4..5743caacee5 100644
--- a/lib/l10n/es_EC.js
+++ b/lib/l10n/es_EC.js
@@ -75,7 +75,7 @@ OC.L10N.register(
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Ecuador)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_EC.json b/lib/l10n/es_EC.json
index 6d906b69458..b8c002dd6d7 100644
--- a/lib/l10n/es_EC.json
+++ b/lib/l10n/es_EC.json
@@ -73,7 +73,7 @@
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Ecuador)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_GT.js b/lib/l10n/es_GT.js
index c3504fda2e4..645b677e6e8 100644
--- a/lib/l10n/es_GT.js
+++ b/lib/l10n/es_GT.js
@@ -75,7 +75,7 @@ OC.L10N.register(
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Guatemala)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_GT.json b/lib/l10n/es_GT.json
index 6d906b69458..7f993a6d4ed 100644
--- a/lib/l10n/es_GT.json
+++ b/lib/l10n/es_GT.json
@@ -73,7 +73,7 @@
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Guatemala)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_HN.js b/lib/l10n/es_HN.js
index c3504fda2e4..4c3d0ec62ba 100644
--- a/lib/l10n/es_HN.js
+++ b/lib/l10n/es_HN.js
@@ -75,7 +75,7 @@ OC.L10N.register(
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Honduras)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_HN.json b/lib/l10n/es_HN.json
index 6d906b69458..979a4d26ebf 100644
--- a/lib/l10n/es_HN.json
+++ b/lib/l10n/es_HN.json
@@ -73,7 +73,7 @@
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Honduras)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_NI.js b/lib/l10n/es_NI.js
index c3504fda2e4..55fdbf10030 100644
--- a/lib/l10n/es_NI.js
+++ b/lib/l10n/es_NI.js
@@ -75,7 +75,7 @@ OC.L10N.register(
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Nicaragua)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_NI.json b/lib/l10n/es_NI.json
index 6d906b69458..b32c358cbcf 100644
--- a/lib/l10n/es_NI.json
+++ b/lib/l10n/es_NI.json
@@ -73,7 +73,7 @@
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Nicaragua)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_PA.js b/lib/l10n/es_PA.js
index c3504fda2e4..ab5766d018e 100644
--- a/lib/l10n/es_PA.js
+++ b/lib/l10n/es_PA.js
@@ -75,7 +75,7 @@ OC.L10N.register(
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Panama)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_PA.json b/lib/l10n/es_PA.json
index 6d906b69458..5cf43264fd8 100644
--- a/lib/l10n/es_PA.json
+++ b/lib/l10n/es_PA.json
@@ -73,7 +73,7 @@
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Panama)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_PE.js b/lib/l10n/es_PE.js
index c3504fda2e4..47c19e43ba1 100644
--- a/lib/l10n/es_PE.js
+++ b/lib/l10n/es_PE.js
@@ -75,7 +75,7 @@ OC.L10N.register(
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Peru)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_PE.json b/lib/l10n/es_PE.json
index 6d906b69458..642f0ba1321 100644
--- a/lib/l10n/es_PE.json
+++ b/lib/l10n/es_PE.json
@@ -73,7 +73,7 @@
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Peru)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_PR.js b/lib/l10n/es_PR.js
index c3504fda2e4..c1b1e804373 100644
--- a/lib/l10n/es_PR.js
+++ b/lib/l10n/es_PR.js
@@ -75,7 +75,7 @@ OC.L10N.register(
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Puerto Rico)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_PR.json b/lib/l10n/es_PR.json
index 6d906b69458..9b06e739966 100644
--- a/lib/l10n/es_PR.json
+++ b/lib/l10n/es_PR.json
@@ -73,7 +73,7 @@
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Puerto Rico)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_PY.js b/lib/l10n/es_PY.js
index c3504fda2e4..5ed54944e3b 100644
--- a/lib/l10n/es_PY.js
+++ b/lib/l10n/es_PY.js
@@ -75,7 +75,7 @@ OC.L10N.register(
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Paraguay)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_PY.json b/lib/l10n/es_PY.json
index 6d906b69458..33878723759 100644
--- a/lib/l10n/es_PY.json
+++ b/lib/l10n/es_PY.json
@@ -73,7 +73,7 @@
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Paraguay)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_SV.js b/lib/l10n/es_SV.js
index c3504fda2e4..bccb8a1aac1 100644
--- a/lib/l10n/es_SV.js
+++ b/lib/l10n/es_SV.js
@@ -75,7 +75,7 @@ OC.L10N.register(
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (El Salvador)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_SV.json b/lib/l10n/es_SV.json
index 6d906b69458..e4f28af7fb4 100644
--- a/lib/l10n/es_SV.json
+++ b/lib/l10n/es_SV.json
@@ -73,7 +73,7 @@
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (El Salvador)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_UY.js b/lib/l10n/es_UY.js
index c3504fda2e4..c0535ba322b 100644
--- a/lib/l10n/es_UY.js
+++ b/lib/l10n/es_UY.js
@@ -75,7 +75,7 @@ OC.L10N.register(
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Uruguay)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/l10n/es_UY.json b/lib/l10n/es_UY.json
index 6d906b69458..c298c7ed8d3 100644
--- a/lib/l10n/es_UY.json
+++ b/lib/l10n/es_UY.json
@@ -73,7 +73,7 @@
"Personal info" : "Información personal",
"Sync clients" : "Sincronizar clientes",
"Unlimited" : "Ilimitado",
- "__language_name__" : "Español (México)",
+ "__language_name__" : "Español (Uruguay)",
"Verifying" : "Verficando",
"Verifying …" : "Verficando ...",
"Verify" : "Verificar",
diff --git a/lib/private/AllConfig.php b/lib/private/AllConfig.php
index f74a2f943d5..745bab367d3 100644
--- a/lib/private/AllConfig.php
+++ b/lib/private/AllConfig.php
@@ -152,7 +152,7 @@ class AllConfig implements \OCP\IConfig {
* @return string[] the keys stored for the app
*/
public function getAppKeys($appName) {
- return \OC::$server->getAppConfig()->getKeys($appName);
+ return \OC::$server->query(\OC\AppConfig::class)->getKeys($appName);
}
/**
@@ -163,7 +163,7 @@ class AllConfig implements \OCP\IConfig {
* @param string|float|int $value the value that should be stored
*/
public function setAppValue($appName, $key, $value) {
- \OC::$server->getAppConfig()->setValue($appName, $key, $value);
+ \OC::$server->query(\OC\AppConfig::class)->setValue($appName, $key, $value);
}
/**
@@ -175,7 +175,7 @@ class AllConfig implements \OCP\IConfig {
* @return string the saved value
*/
public function getAppValue($appName, $key, $default = '') {
- return \OC::$server->getAppConfig()->getValue($appName, $key, $default);
+ return \OC::$server->query(\OC\AppConfig::class)->getValue($appName, $key, $default);
}
/**
@@ -185,7 +185,7 @@ class AllConfig implements \OCP\IConfig {
* @param string $key the key of the value, under which it was saved
*/
public function deleteAppValue($appName, $key) {
- \OC::$server->getAppConfig()->deleteKey($appName, $key);
+ \OC::$server->query(\OC\AppConfig::class)->deleteKey($appName, $key);
}
/**
@@ -194,7 +194,7 @@ class AllConfig implements \OCP\IConfig {
* @param string $appName the appName the configs are stored under
*/
public function deleteAppValues($appName) {
- \OC::$server->getAppConfig()->deleteApp($appName);
+ \OC::$server->query(\OC\AppConfig::class)->deleteApp($appName);
}
diff --git a/lib/private/App/AppManager.php b/lib/private/App/AppManager.php
index e7d4668931c..f2b396b29d0 100644
--- a/lib/private/App/AppManager.php
+++ b/lib/private/App/AppManager.php
@@ -32,10 +32,10 @@
namespace OC\App;
+use OC\AppConfig;
use OCP\App\AppPathNotFoundException;
use OCP\App\IAppManager;
use OCP\App\ManagerEvent;
-use OCP\IAppConfig;
use OCP\ICacheFactory;
use OCP\IGroupManager;
use OCP\IUser;
@@ -59,7 +59,7 @@ class AppManager implements IAppManager {
/** @var IUserSession */
private $userSession;
- /** @var IAppConfig */
+ /** @var AppConfig */
private $appConfig;
/** @var IGroupManager */
@@ -82,13 +82,13 @@ class AppManager implements IAppManager {
/**
* @param IUserSession $userSession
- * @param IAppConfig $appConfig
+ * @param AppConfig $appConfig
* @param IGroupManager $groupManager
* @param ICacheFactory $memCacheFactory
* @param EventDispatcherInterface $dispatcher
*/
public function __construct(IUserSession $userSession,
- IAppConfig $appConfig,
+ AppConfig $appConfig,
IGroupManager $groupManager,
ICacheFactory $memCacheFactory,
EventDispatcherInterface $dispatcher) {
diff --git a/lib/private/App/CodeChecker/DeprecationCheck.php b/lib/private/App/CodeChecker/DeprecationCheck.php
index c8b8d639f46..95d0762e093 100644
--- a/lib/private/App/CodeChecker/DeprecationCheck.php
+++ b/lib/private/App/CodeChecker/DeprecationCheck.php
@@ -44,6 +44,7 @@ class DeprecationCheck extends AbstractCheck implements ICheck {
'OCP\JSON' => '8.1.0',
'OCP\Response' => '8.1.0',
'OCP\AppFramework\IApi' => '8.0.0',
+ 'OCP\User' => '13.0.0',
];
}
@@ -141,6 +142,9 @@ class DeprecationCheck extends AbstractCheck implements ICheck {
'OCP\User::userExists' => '8.1.0',
'OCP\User::logout' => '8.1.0',
'OCP\User::checkPassword' => '8.1.0',
+ 'OCP\User::isLoggedIn' => '13.0.0',
+ 'OCP\User::checkAdminUser' => '13.0.0',
+ 'OCP\User::checkLoggedIn' => '13.0.0',
'OCP\Util::encryptedFiles' => '8.1.0',
'OCP\Util::formatDate' => '8.0.0',
diff --git a/lib/private/AppConfig.php b/lib/private/AppConfig.php
index 4e102522550..59a340cb491 100644
--- a/lib/private/AppConfig.php
+++ b/lib/private/AppConfig.php
@@ -101,7 +101,6 @@ class AppConfig implements IAppConfig {
*
* @param string $app the app we are looking for
* @return array an array of key names
- * @deprecated 8.0.0 use method getAppKeys of \OCP\IConfig
*
* This function gets all keys of an app. Please note that the values are
* not returned.
@@ -129,7 +128,6 @@ class AppConfig implements IAppConfig {
* @param string $key key
* @param string $default = null, default value if the key does not exist
* @return string the value or $default
- * @deprecated 8.0.0 use method getAppValue of \OCP\IConfig
*
* This function gets a value from the appconfig table. If the key does
* not exist the default value will be returned
@@ -164,7 +162,6 @@ class AppConfig implements IAppConfig {
* @param string $key key
* @param string|float|int $value value
* @return bool True if the value was inserted or updated, false if the value was the same
- * @deprecated 8.0.0 use method setAppValue of \OCP\IConfig
*/
public function setValue($app, $key, $value) {
if (!$this->hasKey($app, $key)) {
@@ -220,7 +217,6 @@ class AppConfig implements IAppConfig {
* @param string $app app
* @param string $key key
* @return boolean
- * @deprecated 8.0.0 use method deleteAppValue of \OCP\IConfig
*/
public function deleteKey($app, $key) {
$this->loadConfigValues();
@@ -242,7 +238,6 @@ class AppConfig implements IAppConfig {
*
* @param string $app app
* @return boolean
- * @deprecated 8.0.0 use method deleteAppValue of \OCP\IConfig
*
* Removes all keys in appconfig belonging to the app.
*/
diff --git a/lib/private/AppFramework/Http/Request.php b/lib/private/AppFramework/Http/Request.php
index 77ecb02165b..975c4255d5a 100644
--- a/lib/private/AppFramework/Http/Request.php
+++ b/lib/private/AppFramework/Http/Request.php
@@ -324,7 +324,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
}
- return null;
+ return '';
}
/**
@@ -404,8 +404,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
protected function getContent() {
// If the content can't be parsed into an array then return a stream resource.
if ($this->method === 'PUT'
- && $this->getHeader('Content-Length') !== 0
- && $this->getHeader('Content-Length') !== null
+ && $this->getHeader('Content-Length') !== '0'
&& $this->getHeader('Content-Length') !== ''
&& strpos($this->getHeader('Content-Type'), 'application/x-www-form-urlencoded') === false
&& strpos($this->getHeader('Content-Type'), 'application/json') === false
diff --git a/lib/private/Avatar.php b/lib/private/Avatar.php
index afa9118c509..ce3fcff396e 100644
--- a/lib/private/Avatar.php
+++ b/lib/private/Avatar.php
@@ -117,7 +117,24 @@ class Avatar implements IAvatar {
$img = $data;
$data = $img->data();
} else {
- $img = new OC_Image($data);
+ $img = new OC_Image();
+ if (is_resource($data) && get_resource_type($data) === "gd") {
+ $img->setResource($data);
+ } elseif(is_resource($data)) {
+ $img->loadFromFileHandle($data);
+ } else {
+ try {
+ // detect if it is a path or maybe the images as string
+ $result = @realpath($data);
+ if ($result === false || $result === null) {
+ $img->loadFromData($data);
+ } else {
+ $img->loadFromFile($data);
+ }
+ } catch (\Error $e) {
+ $img->loadFromData($data);
+ }
+ }
}
$type = substr($img->mimeType(), -3);
if ($type === 'peg') {
diff --git a/lib/private/AvatarManager.php b/lib/private/AvatarManager.php
index b8c6c2a1eb6..eb455642101 100644
--- a/lib/private/AvatarManager.php
+++ b/lib/private/AvatarManager.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -27,12 +28,13 @@
namespace OC;
+use OC\User\Manager;
use OCP\Files\IAppData;
use OCP\Files\NotFoundException;
+use OCP\IAvatar;
use OCP\IAvatarManager;
use OCP\IConfig;
use OCP\ILogger;
-use OCP\IUserManager;
use OCP\IL10N;
/**
@@ -40,7 +42,7 @@ use OCP\IL10N;
*/
class AvatarManager implements IAvatarManager {
- /** @var IUserManager */
+ /** @var Manager */
private $userManager;
/** @var IAppData */
@@ -58,14 +60,14 @@ class AvatarManager implements IAvatarManager {
/**
* AvatarManager constructor.
*
- * @param IUserManager $userManager
+ * @param Manager $userManager
* @param IAppData $appData
* @param IL10N $l
* @param ILogger $logger
* @param IConfig $config
*/
public function __construct(
- IUserManager $userManager,
+ Manager $userManager,
IAppData $appData,
IL10N $l,
ILogger $logger,
@@ -85,9 +87,9 @@ class AvatarManager implements IAvatarManager {
* @throws \Exception In case the username is potentially dangerous
* @throws NotFoundException In case there is no user folder yet
*/
- public function getAvatar($userId) {
+ public function getAvatar(string $userId) : IAvatar {
$user = $this->userManager->get($userId);
- if (is_null($user)) {
+ if ($user === null) {
throw new \Exception('user does not exist');
}
diff --git a/lib/private/Collaboration/Collaborators/Search.php b/lib/private/Collaboration/Collaborators/Search.php
index e9b15dd1201..bb1bd6d1711 100644
--- a/lib/private/Collaboration/Collaborators/Search.php
+++ b/lib/private/Collaboration/Collaborators/Search.php
@@ -40,6 +40,15 @@ class Search implements ISearch {
$this->c = $c;
}
+ /**
+ * @param string $search
+ * @param array $shareTypes
+ * @param bool $lookup
+ * @param int|null $limit
+ * @param int|null $offset
+ * @return array
+ * @throws \OCP\AppFramework\QueryException
+ */
public function search($search, array $shareTypes, $lookup, $limit, $offset) {
$hasMoreResults = false;
diff --git a/lib/private/Collaboration/Collaborators/UserPlugin.php b/lib/private/Collaboration/Collaborators/UserPlugin.php
index 86a55aa428f..ad677703547 100644
--- a/lib/private/Collaboration/Collaborators/UserPlugin.php
+++ b/lib/private/Collaboration/Collaborators/UserPlugin.php
@@ -83,6 +83,8 @@ class UserPlugin implements ISearchPlugin {
}
}
+ $this->takeOutCurrentUser($users);
+
if (!$this->shareeEnumeration || sizeof($users) < $limit) {
$hasMoreResults = true;
}
@@ -146,4 +148,13 @@ class UserPlugin implements ISearchPlugin {
return $hasMoreResults;
}
+
+ public function takeOutCurrentUser(array &$users) {
+ $currentUser = $this->userSession->getUser();
+ if(!is_null($currentUser)) {
+ if (isset($users[$currentUser->getUID()])) {
+ unset($users[$currentUser->getUID()]);
+ }
+ }
+ }
}
diff --git a/lib/private/Comments/Comment.php b/lib/private/Comments/Comment.php
index acfebd32028..dd790c2e50a 100644
--- a/lib/private/Comments/Comment.php
+++ b/lib/private/Comments/Comment.php
@@ -232,10 +232,6 @@ class Comment implements IComment {
$uids = array_unique($mentions[0]);
$result = [];
foreach ($uids as $uid) {
- // exclude author, no self-mentioning
- if($uid === '@' . $this->getActorId()) {
- continue;
- }
$result[] = ['type' => 'user', 'id' => substr($uid, 1)];
}
return $result;
diff --git a/lib/private/Console/Application.php b/lib/private/Console/Application.php
index 0a05b2ac0f3..c85b67217b4 100644
--- a/lib/private/Console/Application.php
+++ b/lib/private/Console/Application.php
@@ -127,7 +127,7 @@ class Application {
}
}
}
- } else if ($input->getArgument('command') !== '_completion') {
+ } else if ($input->getArgument('command') !== '_completion' && $input->getArgument('command') !== 'maintenance:install') {
$output->writeln("Nextcloud is not installed - only a limited number of commands are available");
}
} catch(NeedsUpdateException $e) {
diff --git a/lib/private/DB/MigrationService.php b/lib/private/DB/MigrationService.php
index cbe5bd9b957..89a8d42f08a 100644
--- a/lib/private/DB/MigrationService.php
+++ b/lib/private/DB/MigrationService.php
@@ -129,7 +129,7 @@ class MigrationService {
}
// Drop the table, when it didn't match our expectations.
- $this->connection->dropTable($this->connection->getPrefix() . 'migrations');
+ $this->connection->dropTable('migrations');
} catch (SchemaException $e) {
// Table not found, no need to panic, we will create it.
}
@@ -423,7 +423,7 @@ class MigrationService {
}
$instance->preSchemaChange($this->output, function() {
- return $this->connection->createSchema();
+ return new SchemaWrapper($this->connection);
}, ['tablePrefix' => $this->connection->getPrefix()]);
$toSchema = $instance->changeSchema($this->output, function() {
@@ -436,7 +436,7 @@ class MigrationService {
}
$instance->postSchemaChange($this->output, function() {
- return $this->connection->createSchema();
+ return new SchemaWrapper($this->connection);
}, ['tablePrefix' => $this->connection->getPrefix()]);
$this->markAsExecuted($version);
diff --git a/lib/private/DB/SchemaWrapper.php b/lib/private/DB/SchemaWrapper.php
index 2a0660b2a88..4f05b7b00ef 100644
--- a/lib/private/DB/SchemaWrapper.php
+++ b/lib/private/DB/SchemaWrapper.php
@@ -25,9 +25,10 @@ namespace OC\DB;
use Doctrine\DBAL\DBALException;
use Doctrine\DBAL\Schema\Schema;
+use OCP\DB\ISchemaWrapper;
use OCP\IDBConnection;
-class SchemaWrapper {
+class SchemaWrapper implements ISchemaWrapper {
/** @var IDBConnection|Connection */
protected $connection;
@@ -76,6 +77,13 @@ class SchemaWrapper {
// Overwritten methods
/**
+ * @return array
+ */
+ public function getTableNames() {
+ return $this->schema->getTableNames();
+ }
+
+ /**
* @param string $tableName
*
* @return \Doctrine\DBAL\Schema\Table
@@ -107,19 +115,6 @@ class SchemaWrapper {
}
/**
- * Renames a table.
- *
- * @param string $oldTableName
- * @param string $newTableName
- *
- * @return \Doctrine\DBAL\Schema\Schema
- * @throws DBALException
- */
- public function renameTable($oldTableName, $newTableName) {
- throw new DBALException('Renaming tables is not supported. Please create and drop the tables manually.');
- }
-
- /**
* Drops a table from the schema.
*
* @param string $tableName
@@ -131,11 +126,11 @@ class SchemaWrapper {
}
/**
- * @param string $name
- * @param array $arguments
- * @return mixed
+ * Gets all tables of this schema.
+ *
+ * @return \Doctrine\DBAL\Schema\Table[]
*/
- public function __call($name, $arguments) {
- return call_user_func_array([$this->schema, $name], $arguments);
+ public function getTables() {
+ return $this->schema->getTables();
}
}
diff --git a/lib/private/Federation/CloudId.php b/lib/private/Federation/CloudId.php
index f1d08f0687d..4c93650e0fc 100644
--- a/lib/private/Federation/CloudId.php
+++ b/lib/private/Federation/CloudId.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2017, Robin Appelman <robin@icewind.nl>
*
@@ -40,7 +41,7 @@ class CloudId implements ICloudId {
* @param string $user
* @param string $remote
*/
- public function __construct($id, $user, $remote) {
+ public function __construct(string $id, string $user, string $remote) {
$this->id = $id;
$this->user = $user;
$this->remote = $remote;
@@ -51,11 +52,11 @@ class CloudId implements ICloudId {
*
* @return string
*/
- public function getId() {
+ public function getId(): string {
return $this->id;
}
- public function getDisplayId() {
+ public function getDisplayId(): string {
return str_replace('https://', '', str_replace('http://', '', $this->getId()));
}
@@ -64,7 +65,7 @@ class CloudId implements ICloudId {
*
* @return string
*/
- public function getUser() {
+ public function getUser(): string {
return $this->user;
}
@@ -73,7 +74,7 @@ class CloudId implements ICloudId {
*
* @return string
*/
- public function getRemote() {
+ public function getRemote(): string {
return $this->remote;
}
}
diff --git a/lib/private/Federation/CloudIdManager.php b/lib/private/Federation/CloudIdManager.php
index 3b7aaae5392..0beb6cf6d29 100644
--- a/lib/private/Federation/CloudIdManager.php
+++ b/lib/private/Federation/CloudIdManager.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2017, Robin Appelman <robin@icewind.nl>
*
@@ -33,7 +34,7 @@ class CloudIdManager implements ICloudIdManager {
* @return ICloudId
* @throws \InvalidArgumentException
*/
- public function resolveCloudId($cloudId) {
+ public function resolveCloudId(string $cloudId): ICloudId {
// TODO magic here to get the url and user instead of just splitting on @
if (!$this->isValidCloudId($cloudId)) {
@@ -46,7 +47,7 @@ class CloudIdManager implements ICloudIdManager {
$posColon = strpos($id, ':');
if ($posSlash === false && $posColon === false) {
- $invalidPos = strlen($id);
+ $invalidPos = \strlen($id);
} else if ($posSlash === false) {
$invalidPos = $posColon;
} else if ($posColon === false) {
@@ -77,7 +78,7 @@ class CloudIdManager implements ICloudIdManager {
* @param string $remote
* @return CloudId
*/
- public function getCloudId($user, $remote) {
+ public function getCloudId(string $user, string $remote): ICloudId {
// TODO check what the correct url is for remote (asking the remote)
return new CloudId($user. '@' . $remote, $user, $remote);
}
@@ -94,7 +95,7 @@ class CloudIdManager implements ICloudIdManager {
* @param string $remote
* @return string
*/
- protected function fixRemoteURL($remote) {
+ protected function fixRemoteURL(string $remote): string {
$remote = str_replace('\\', '/', $remote);
if ($fileNamePosition = strpos($remote, '/index.php')) {
$remote = substr($remote, 0, $fileNamePosition);
@@ -108,7 +109,7 @@ class CloudIdManager implements ICloudIdManager {
* @param string $cloudId
* @return bool
*/
- public function isValidCloudId($cloudId) {
+ public function isValidCloudId(string $cloudId): bool {
return strpos($cloudId, '@') !== false;
}
}
diff --git a/lib/private/Files/Cache/QuerySearchHelper.php b/lib/private/Files/Cache/QuerySearchHelper.php
index 51ecb12a06a..ac64ba5c592 100644
--- a/lib/private/Files/Cache/QuerySearchHelper.php
+++ b/lib/private/Files/Cache/QuerySearchHelper.php
@@ -83,6 +83,16 @@ class QuerySearchHelper {
return false;
}
+ /**
+ * @param IQueryBuilder $builder
+ * @param ISearchOperator $operator
+ */
+ public function searchOperatorArrayToDBExprArray(IQueryBuilder $builder, array $operators) {
+ return array_map(function ($operator) use ($builder) {
+ return $this->searchOperatorToDBExpr($builder, $operator);
+ }, $operators);
+ }
+
public function searchOperatorToDBExpr(IQueryBuilder $builder, ISearchOperator $operator) {
$expr = $builder->expr();
if ($operator instanceof ISearchBinaryOperator) {
@@ -95,9 +105,9 @@ class QuerySearchHelper {
throw new \InvalidArgumentException('Binary operators inside "not" is not supported');
}
case ISearchBinaryOperator::OPERATOR_AND:
- return $expr->andX($this->searchOperatorToDBExpr($builder, $operator->getArguments()[0]), $this->searchOperatorToDBExpr($builder, $operator->getArguments()[1]));
+ return call_user_func_array([$expr, 'andX'], $this->searchOperatorArrayToDBExprArray($builder, $operator->getArguments()));
case ISearchBinaryOperator::OPERATOR_OR:
- return $expr->orX($this->searchOperatorToDBExpr($builder, $operator->getArguments()[0]), $this->searchOperatorToDBExpr($builder, $operator->getArguments()[1]));
+ return call_user_func_array([$expr, 'orX'], $this->searchOperatorArrayToDBExprArray($builder, $operator->getArguments()));
default:
throw new \InvalidArgumentException('Invalid operator type: ' . $operator->getType());
}
diff --git a/lib/private/Http/Client/Client.php b/lib/private/Http/Client/Client.php
index 4697f2e038c..4e6843d7b9f 100644
--- a/lib/private/Http/Client/Client.php
+++ b/lib/private/Http/Client/Client.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -25,6 +26,7 @@ namespace OC\Http\Client;
use GuzzleHttp\Client as GuzzleClient;
use OCP\Http\Client\IClient;
+use OCP\Http\Client\IResponse;
use OCP\ICertificateManager;
use OCP\IConfig;
@@ -89,7 +91,7 @@ class Client implements IClient {
*
* @return string
*/
- private function getProxyUri() {
+ private function getProxyUri(): string {
$proxyHost = $this->config->getSystemValue('proxy', null);
$proxyUserPwd = $this->config->getSystemValue('proxyuserpwd', null);
$proxyUri = '';
@@ -130,10 +132,10 @@ class Client implements IClient {
* 'verify' => true, // bool or string to CA file
* 'debug' => true,
* 'timeout' => 5,
- * @return Response
+ * @return IResponse
* @throws \Exception If the request could not get completed
*/
- public function get($uri, array $options = []) {
+ public function get(string $uri, array $options = []): IResponse {
$this->setDefaultOptions();
$response = $this->client->get($uri, $options);
$isStream = isset($options['stream']) && $options['stream'];
@@ -161,10 +163,10 @@ class Client implements IClient {
* 'verify' => true, // bool or string to CA file
* 'debug' => true,
* 'timeout' => 5,
- * @return Response
+ * @return IResponse
* @throws \Exception If the request could not get completed
*/
- public function head($uri, $options = []) {
+ public function head(string $uri, array $options = []): IResponse {
$this->setDefaultOptions();
$response = $this->client->head($uri, $options);
return new Response($response);
@@ -196,10 +198,10 @@ class Client implements IClient {
* 'verify' => true, // bool or string to CA file
* 'debug' => true,
* 'timeout' => 5,
- * @return Response
+ * @return IResponse
* @throws \Exception If the request could not get completed
*/
- public function post($uri, array $options = []) {
+ public function post(string $uri, array $options = []): IResponse {
$this->setDefaultOptions();
$response = $this->client->post($uri, $options);
return new Response($response);
@@ -231,10 +233,10 @@ class Client implements IClient {
* 'verify' => true, // bool or string to CA file
* 'debug' => true,
* 'timeout' => 5,
- * @return Response
+ * @return IResponse
* @throws \Exception If the request could not get completed
*/
- public function put($uri, array $options = []) {
+ public function put(string $uri, array $options = []): IResponse {
$this->setDefaultOptions();
$response = $this->client->put($uri, $options);
return new Response($response);
@@ -266,10 +268,10 @@ class Client implements IClient {
* 'verify' => true, // bool or string to CA file
* 'debug' => true,
* 'timeout' => 5,
- * @return Response
+ * @return IResponse
* @throws \Exception If the request could not get completed
*/
- public function delete($uri, array $options = []) {
+ public function delete(string $uri, array $options = []): IResponse {
$this->setDefaultOptions();
$response = $this->client->delete($uri, $options);
return new Response($response);
@@ -302,10 +304,10 @@ class Client implements IClient {
* 'verify' => true, // bool or string to CA file
* 'debug' => true,
* 'timeout' => 5,
- * @return Response
+ * @return IResponse
* @throws \Exception If the request could not get completed
*/
- public function options($uri, array $options = []) {
+ public function options(string $uri, array $options = []): IResponse {
$this->setDefaultOptions();
$response = $this->client->options($uri, $options);
return new Response($response);
diff --git a/lib/private/Http/Client/ClientService.php b/lib/private/Http/Client/ClientService.php
index 108ffa709cf..1df54010a2d 100644
--- a/lib/private/Http/Client/ClientService.php
+++ b/lib/private/Http/Client/ClientService.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -23,6 +24,7 @@
namespace OC\Http\Client;
use GuzzleHttp\Client as GuzzleClient;
+use OCP\Http\Client\IClient;
use OCP\Http\Client\IClientService;
use OCP\ICertificateManager;
use OCP\IConfig;
@@ -51,7 +53,7 @@ class ClientService implements IClientService {
/**
* @return Client
*/
- public function newClient() {
+ public function newClient(): IClient {
return new Client($this->config, $this->certificateManager, new GuzzleClient());
}
}
diff --git a/lib/private/Http/Client/Response.php b/lib/private/Http/Client/Response.php
index 48885de9f3a..0ce6cc98e0d 100644
--- a/lib/private/Http/Client/Response.php
+++ b/lib/private/Http/Client/Response.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -24,7 +25,7 @@
namespace OC\Http\Client;
use OCP\Http\Client\IResponse;
-use GuzzleHttp\Message\Response as GuzzleResponse;
+use GuzzleHttp\Message\ResponseInterface as GuzzleResponse;
/**
* Class Response
@@ -61,22 +62,22 @@ class Response implements IResponse {
/**
* @return int
*/
- public function getStatusCode() {
+ public function getStatusCode(): int {
return $this->response->getStatusCode();
}
/**
- * @param $key
+ * @param string $key
* @return string
*/
- public function getHeader($key) {
+ public function getHeader(string $key): string {
return $this->response->getHeader($key);
}
/**
* @return array
*/
- public function getHeaders() {
+ public function getHeaders(): array {
return $this->response->getHeaders();
}
}
diff --git a/lib/private/Installer.php b/lib/private/Installer.php
index 4dcf5a8dad9..1c6c3915b41 100644
--- a/lib/private/Installer.php
+++ b/lib/private/Installer.php
@@ -133,7 +133,7 @@ class Installer {
//install the database
if(is_file($basedir.'/appinfo/database.xml')) {
- if (\OC::$server->getAppConfig()->getValue($info['id'], 'installed_version') === null) {
+ if (\OC::$server->getConfig()->getAppValue($info['id'], 'installed_version') === null) {
OC_DB::createDbFromStructure($basedir.'/appinfo/database.xml');
} else {
OC_DB::updateDbFromStructure($basedir.'/appinfo/database.xml');
diff --git a/lib/private/L10N/Factory.php b/lib/private/L10N/Factory.php
index e277a00e653..8268be05d4b 100644
--- a/lib/private/L10N/Factory.php
+++ b/lib/private/L10N/Factory.php
@@ -247,7 +247,7 @@ class Factory implements IFactory {
*/
private function getLanguageFromRequest($app) {
$header = $this->request->getHeader('ACCEPT_LANGUAGE');
- if ($header) {
+ if ($header !== '') {
$available = $this->findAvailableLanguages($app);
// E.g. make sure that 'de' is before 'de_DE'.
diff --git a/lib/private/Lock/AbstractLockingProvider.php b/lib/private/Lock/AbstractLockingProvider.php
index 6ad1dd7ca1b..f7f0ee34a12 100644
--- a/lib/private/Lock/AbstractLockingProvider.php
+++ b/lib/private/Lock/AbstractLockingProvider.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -29,6 +30,7 @@ use OCP\Lock\ILockingProvider;
* to release any left over locks at the end of the request
*/
abstract class AbstractLockingProvider implements ILockingProvider {
+ /** @var int $ttl */
protected $ttl; // how long until we clear stray locks in seconds
protected $acquiredLocks = [
@@ -43,7 +45,7 @@ abstract class AbstractLockingProvider implements ILockingProvider {
* @param int $type
* @return bool
*/
- protected function hasAcquiredLock($path, $type) {
+ protected function hasAcquiredLock(string $path, int $type): bool {
if ($type === self::LOCK_SHARED) {
return isset($this->acquiredLocks['shared'][$path]) && $this->acquiredLocks['shared'][$path] > 0;
} else {
@@ -57,7 +59,7 @@ abstract class AbstractLockingProvider implements ILockingProvider {
* @param string $path
* @param int $type self::LOCK_SHARED or self::LOCK_EXCLUSIVE
*/
- protected function markAcquire($path, $type) {
+ protected function markAcquire(string $path, int $type) {
if ($type === self::LOCK_SHARED) {
if (!isset($this->acquiredLocks['shared'][$path])) {
$this->acquiredLocks['shared'][$path] = 0;
@@ -74,7 +76,7 @@ abstract class AbstractLockingProvider implements ILockingProvider {
* @param string $path
* @param int $type self::LOCK_SHARED or self::LOCK_EXCLUSIVE
*/
- protected function markRelease($path, $type) {
+ protected function markRelease(string $path, int $type) {
if ($type === self::LOCK_SHARED) {
if (isset($this->acquiredLocks['shared'][$path]) and $this->acquiredLocks['shared'][$path] > 0) {
$this->acquiredLocks['shared'][$path]--;
@@ -93,7 +95,7 @@ abstract class AbstractLockingProvider implements ILockingProvider {
* @param string $path
* @param int $targetType self::LOCK_SHARED or self::LOCK_EXCLUSIVE
*/
- protected function markChange($path, $targetType) {
+ protected function markChange(string $path, int $targetType) {
if ($targetType === self::LOCK_SHARED) {
unset($this->acquiredLocks['exclusive'][$path]);
if (!isset($this->acquiredLocks['shared'][$path])) {
@@ -121,7 +123,7 @@ abstract class AbstractLockingProvider implements ILockingProvider {
}
}
- protected function getOwnSharedLockCount($path) {
+ protected function getOwnSharedLockCount(string $path) {
return isset($this->acquiredLocks['shared'][$path]) ? $this->acquiredLocks['shared'][$path] : 0;
}
}
diff --git a/lib/private/Lock/DBLockingProvider.php b/lib/private/Lock/DBLockingProvider.php
index 9de1098a466..016be64c097 100644
--- a/lib/private/Lock/DBLockingProvider.php
+++ b/lib/private/Lock/DBLockingProvider.php
@@ -61,7 +61,7 @@ class DBLockingProvider extends AbstractLockingProvider {
* @param string $path
* @return bool
*/
- protected function isLocallyLocked($path) {
+ protected function isLocallyLocked(string $path): bool {
return isset($this->sharedLocks[$path]) && $this->sharedLocks[$path];
}
@@ -71,7 +71,7 @@ class DBLockingProvider extends AbstractLockingProvider {
* @param string $path
* @param int $type self::LOCK_SHARED or self::LOCK_EXCLUSIVE
*/
- protected function markAcquire($path, $type) {
+ protected function markAcquire(string $path, int $type) {
parent::markAcquire($path, $type);
if ($type === self::LOCK_SHARED) {
$this->sharedLocks[$path] = true;
@@ -84,7 +84,7 @@ class DBLockingProvider extends AbstractLockingProvider {
* @param string $path
* @param int $targetType self::LOCK_SHARED or self::LOCK_EXCLUSIVE
*/
- protected function markChange($path, $targetType) {
+ protected function markChange(string $path, int $targetType) {
parent::markChange($path, $targetType);
if ($targetType === self::LOCK_SHARED) {
$this->sharedLocks[$path] = true;
@@ -99,7 +99,7 @@ class DBLockingProvider extends AbstractLockingProvider {
* @param \OCP\AppFramework\Utility\ITimeFactory $timeFactory
* @param int $ttl
*/
- public function __construct(IDBConnection $connection, ILogger $logger, ITimeFactory $timeFactory, $ttl = 3600) {
+ public function __construct(IDBConnection $connection, ILogger $logger, ITimeFactory $timeFactory, int $ttl = 3600) {
$this->connection = $connection;
$this->logger = $logger;
$this->timeFactory = $timeFactory;
@@ -114,7 +114,7 @@ class DBLockingProvider extends AbstractLockingProvider {
* @return int number of inserted rows
*/
- protected function initLockField($path, $lock = 0) {
+ protected function initLockField(string $path, int $lock = 0): int {
$expire = $this->getExpireTime();
return $this->connection->insertIfNotExist('*PREFIX*file_locks', ['key' => $path, 'lock' => $lock, 'ttl' => $expire], ['key']);
}
@@ -122,7 +122,7 @@ class DBLockingProvider extends AbstractLockingProvider {
/**
* @return int
*/
- protected function getExpireTime() {
+ protected function getExpireTime(): int {
return $this->timeFactory->getTime() + $this->ttl;
}
@@ -131,7 +131,7 @@ class DBLockingProvider extends AbstractLockingProvider {
* @param int $type self::LOCK_SHARED or self::LOCK_EXCLUSIVE
* @return bool
*/
- public function isLocked($path, $type) {
+ public function isLocked(string $path, int $type): bool {
if ($this->hasAcquiredLock($path, $type)) {
return true;
}
@@ -157,7 +157,7 @@ class DBLockingProvider extends AbstractLockingProvider {
* @param int $type self::LOCK_SHARED or self::LOCK_EXCLUSIVE
* @throws \OCP\Lock\LockedException
*/
- public function acquireLock($path, $type) {
+ public function acquireLock(string $path, int $type) {
$expire = $this->getExpireTime();
if ($type === self::LOCK_SHARED) {
if (!$this->isLocallyLocked($path)) {
@@ -194,7 +194,7 @@ class DBLockingProvider extends AbstractLockingProvider {
* @param string $path
* @param int $type self::LOCK_SHARED or self::LOCK_EXCLUSIVE
*/
- public function releaseLock($path, $type) {
+ public function releaseLock(string $path, int $type) {
$this->markRelease($path, $type);
// we keep shared locks till the end of the request so we can re-use them
@@ -213,7 +213,7 @@ class DBLockingProvider extends AbstractLockingProvider {
* @param int $targetType self::LOCK_SHARED or self::LOCK_EXCLUSIVE
* @throws \OCP\Lock\LockedException
*/
- public function changeLock($path, $targetType) {
+ public function changeLock(string $path, int $targetType) {
$expire = $this->getExpireTime();
if ($targetType === self::LOCK_SHARED) {
$result = $this->connection->executeUpdate(
diff --git a/lib/private/Lock/MemcacheLockingProvider.php b/lib/private/Lock/MemcacheLockingProvider.php
index c4b1469b50f..70ad972b46d 100644
--- a/lib/private/Lock/MemcacheLockingProvider.php
+++ b/lib/private/Lock/MemcacheLockingProvider.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -36,12 +37,12 @@ class MemcacheLockingProvider extends AbstractLockingProvider {
* @param \OCP\IMemcache $memcache
* @param int $ttl
*/
- public function __construct(IMemcache $memcache, $ttl = 3600) {
+ public function __construct(IMemcache $memcache, int $ttl = 3600) {
$this->memcache = $memcache;
$this->ttl = $ttl;
}
- private function setTTL($path) {
+ private function setTTL(string $path) {
if ($this->memcache instanceof IMemcacheTTL) {
$this->memcache->setTTL($path, $this->ttl);
}
@@ -52,7 +53,7 @@ class MemcacheLockingProvider extends AbstractLockingProvider {
* @param int $type self::LOCK_SHARED or self::LOCK_EXCLUSIVE
* @return bool
*/
- public function isLocked($path, $type) {
+ public function isLocked(string $path, int $type): bool {
$lockValue = $this->memcache->get($path);
if ($type === self::LOCK_SHARED) {
return $lockValue > 0;
@@ -68,7 +69,7 @@ class MemcacheLockingProvider extends AbstractLockingProvider {
* @param int $type self::LOCK_SHARED or self::LOCK_EXCLUSIVE
* @throws \OCP\Lock\LockedException
*/
- public function acquireLock($path, $type) {
+ public function acquireLock(string $path, int $type) {
if ($type === self::LOCK_SHARED) {
if (!$this->memcache->inc($path)) {
throw new LockedException($path);
@@ -87,7 +88,7 @@ class MemcacheLockingProvider extends AbstractLockingProvider {
* @param string $path
* @param int $type self::LOCK_SHARED or self::LOCK_EXCLUSIVE
*/
- public function releaseLock($path, $type) {
+ public function releaseLock(string $path, int $type) {
if ($type === self::LOCK_SHARED) {
if ($this->getOwnSharedLockCount($path) === 1) {
$removed = $this->memcache->cad($path, 1); // if we're the only one having a shared lock we can remove it in one go
@@ -111,7 +112,7 @@ class MemcacheLockingProvider extends AbstractLockingProvider {
* @param int $targetType self::LOCK_SHARED or self::LOCK_EXCLUSIVE
* @throws \OCP\Lock\LockedException
*/
- public function changeLock($path, $targetType) {
+ public function changeLock(string $path, int $targetType) {
if ($targetType === self::LOCK_SHARED) {
if (!$this->memcache->cas($path, 'exclusive', 1)) {
throw new LockedException($path);
diff --git a/lib/private/Lock/NoopLockingProvider.php b/lib/private/Lock/NoopLockingProvider.php
index 6dfbd8ccb44..9133f818033 100644
--- a/lib/private/Lock/NoopLockingProvider.php
+++ b/lib/private/Lock/NoopLockingProvider.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -32,24 +33,24 @@ use OCP\Lock\ILockingProvider;
*/
class NoopLockingProvider implements ILockingProvider {
- /**
- * {@inheritdoc}
- */
- public function isLocked($path, $type) {
+ /**
+ * {@inheritdoc}
+ */
+ public function isLocked(string $path, int $type): bool {
return false;
}
- /**
- * {@inheritdoc}
- */
- public function acquireLock($path, $type) {
+ /**
+ * {@inheritdoc}
+ */
+ public function acquireLock(string $path, int $type) {
// do nothing
}
/**
- * {@inheritdoc}
+ * {@inheritdoc}
*/
- public function releaseLock($path, $type) {
+ public function releaseLock(string $path, int $type) {
// do nothing
}
@@ -63,7 +64,7 @@ class NoopLockingProvider implements ILockingProvider {
/**
* {@inheritdoc}
*/
- public function changeLock($path, $targetType) {
+ public function changeLock(string $path, int $targetType) {
// do nothing
}
}
diff --git a/lib/private/Log/File.php b/lib/private/Log/File.php
index b6a208ad68a..290f7897c9d 100644
--- a/lib/private/Log/File.php
+++ b/lib/private/Log/File.php
@@ -105,7 +105,10 @@ class File {
} else {
$user = '--';
}
- $userAgent = $request->getHeader('User-Agent') ?: '--';
+ $userAgent = $request->getHeader('User-Agent');
+ if ($userAgent === '') {
+ $userAgent = '--';
+ }
$version = $config->getValue('version', '');
$entry = compact(
'reqId',
diff --git a/lib/private/Memcache/APCu.php b/lib/private/Memcache/APCu.php
index 70f0d73d2d4..3e96acdecb7 100644
--- a/lib/private/Memcache/APCu.php
+++ b/lib/private/Memcache/APCu.php
@@ -158,8 +158,8 @@ class APCu extends Cache implements IMemcache {
} elseif (!\OC::$server->getIniWrapper()->getBool('apc.enable_cli') && \OC::$CLI) {
return false;
} elseif (
- version_compare(phpversion('apc'), '4.0.6') === -1 &&
- version_compare(phpversion('apcu'), '5.1.0') === -1
+ version_compare(phpversion('apc') ?: '0.0.0', '4.0.6') === -1 &&
+ version_compare(phpversion('apcu') ?: '0.0.0', '5.1.0') === -1
) {
return false;
} else {
diff --git a/lib/private/Memcache/Factory.php b/lib/private/Memcache/Factory.php
index ff539e55420..b79f17ba8ea 100644
--- a/lib/private/Memcache/Factory.php
+++ b/lib/private/Memcache/Factory.php
@@ -31,8 +31,10 @@
namespace OC\Memcache;
-use \OCP\ICacheFactory;
-use \OCP\ILogger;
+use OCP\ICache;
+use OCP\ICacheFactory;
+use OCP\ILogger;
+use OCP\IMemcache;
class Factory implements ICacheFactory {
const NULL_CACHE = '\\OC\\Memcache\\NullCache';
@@ -69,7 +71,7 @@ class Factory implements ICacheFactory {
* @param string|null $distributedCacheClass
* @param string|null $lockingCacheClass
*/
- public function __construct($globalPrefix, ILogger $logger,
+ public function __construct(string $globalPrefix, ILogger $logger,
$localCacheClass = null, $distributedCacheClass = null, $lockingCacheClass = null)
{
$this->logger = $logger;
@@ -128,9 +130,9 @@ class Factory implements ICacheFactory {
* create a cache instance for storing locks
*
* @param string $prefix
- * @return \OCP\IMemcache
+ * @return IMemcache
*/
- public function createLocking($prefix = '') {
+ public function createLocking(string $prefix = ''): IMemcache {
return new $this->lockingCacheClass($this->globalPrefix . '/' . $prefix);
}
@@ -138,9 +140,9 @@ class Factory implements ICacheFactory {
* create a distributed cache instance
*
* @param string $prefix
- * @return \OC\Memcache\Cache
+ * @return ICache
*/
- public function createDistributed($prefix = '') {
+ public function createDistributed(string $prefix = ''): ICache {
return new $this->distributedCacheClass($this->globalPrefix . '/' . $prefix);
}
@@ -148,18 +150,19 @@ class Factory implements ICacheFactory {
* create a local cache instance
*
* @param string $prefix
- * @return \OC\Memcache\Cache
+ * @return ICache
*/
- public function createLocal($prefix = '') {
+ public function createLocal(string $prefix = ''): ICache {
return new $this->localCacheClass($this->globalPrefix . '/' . $prefix);
}
/**
* @see \OC\Memcache\Factory::createDistributed()
* @param string $prefix
- * @return \OC\Memcache\Cache
+ * @return ICache
+ * @deprecated 13.0.0 Use either createLocking, createDistributed or createLocal
*/
- public function create($prefix = '') {
+ public function create(string $prefix = ''): ICache {
return $this->createDistributed($prefix);
}
@@ -168,16 +171,16 @@ class Factory implements ICacheFactory {
*
* @return bool
*/
- public function isAvailable() {
+ public function isAvailable(): bool {
return ($this->distributedCacheClass !== self::NULL_CACHE);
}
/**
* @see \OC\Memcache\Factory::createLocal()
* @param string $prefix
- * @return Cache
+ * @return ICache
*/
- public function createLowLatency($prefix = '') {
+ public function createLowLatency(string $prefix = ''): ICache {
return $this->createLocal($prefix);
}
@@ -186,7 +189,7 @@ class Factory implements ICacheFactory {
*
* @return bool
*/
- public function isAvailableLowLatency() {
+ public function isAvailableLowLatency(): bool {
return ($this->localCacheClass !== self::NULL_CACHE);
}
}
diff --git a/lib/private/OCS/DiscoveryService.php b/lib/private/OCS/DiscoveryService.php
index 4425947c55d..016331e908f 100644
--- a/lib/private/OCS/DiscoveryService.php
+++ b/lib/private/OCS/DiscoveryService.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2017 Bjoern Schiessle <bjoern@schiessle.org>
*
@@ -60,11 +61,14 @@ class DiscoveryService implements IDiscoveryService {
* @param string $service the service you want to discover
* @return array
*/
- public function discover($remote, $service) {
+ public function discover(string $remote, string $service): array {
// Check the cache first
$cacheData = $this->cache->get($remote . '#' . $service);
if($cacheData) {
- return json_decode($cacheData, true);
+ $data = json_decode($cacheData, true);
+ if (\is_array($data)) {
+ return $data;
+ }
}
$discoveredServices = [];
@@ -77,7 +81,9 @@ class DiscoveryService implements IDiscoveryService {
]);
if($response->getStatusCode() === Http::STATUS_OK) {
$decodedServices = json_decode($response->getBody(), true);
- $discoveredServices = $this->getEndpoints($decodedServices, $service);
+ if (\is_array($decodedServices)) {
+ $discoveredServices = $this->getEndpoints($decodedServices, $service);
+ }
}
} catch (\Exception $e) {
// if we couldn't discover the service or any end-points we return a empty array
@@ -91,17 +97,15 @@ class DiscoveryService implements IDiscoveryService {
/**
* get requested end-points from the requested service
*
- * @param $decodedServices
- * @param $service
+ * @param array $decodedServices
+ * @param string $service
* @return array
*/
- protected function getEndpoints($decodedServices, $service) {
+ protected function getEndpoints(array $decodedServices, string $service): array {
$discoveredServices = [];
- if(is_array($decodedServices) &&
- isset($decodedServices['services'][$service]['endpoints'])
- ) {
+ if(isset($decodedServices['services'][$service]['endpoints'])) {
foreach ($decodedServices['services'][$service]['endpoints'] as $endpoint => $url) {
if($this->isSafeUrl($url)) {
$discoveredServices[$endpoint] = $url;
@@ -119,7 +123,7 @@ class DiscoveryService implements IDiscoveryService {
* @param string $url
* @return bool
*/
- protected function isSafeUrl($url) {
+ protected function isSafeUrl(string $url): bool {
return (bool)preg_match('/^[\/\.\-A-Za-z0-9]+$/', $url);
}
diff --git a/lib/private/Preview/Generator.php b/lib/private/Preview/Generator.php
index 448a7a57580..08f6b604eca 100644
--- a/lib/private/Preview/Generator.php
+++ b/lib/private/Preview/Generator.php
@@ -110,6 +110,11 @@ class Generator {
// Get the max preview and infer the max preview sizes from that
$maxPreview = $this->getMaxPreview($previewFolder, $file, $mimeType);
+ if ($maxPreview->getSize() === 0) {
+ $maxPreview->delete();
+ throw new NotFoundException('Max preview size 0, invalid!');
+ }
+
list($maxWidth, $maxHeight) = $this->getPreviewSize($maxPreview);
// If both width and heigth are -1 we just want the max preview
@@ -129,15 +134,20 @@ class Generator {
// Try to get a cached preview. Else generate (and store) one
try {
try {
- $file = $this->getCachedPreview($previewFolder, $width, $height, $crop, $maxPreview->getMimeType());
+ $preview = $this->getCachedPreview($previewFolder, $width, $height, $crop, $maxPreview->getMimeType());
} catch (NotFoundException $e) {
- $file = $this->generatePreview($previewFolder, $maxPreview, $width, $height, $crop, $maxWidth, $maxHeight);
+ $preview = $this->generatePreview($previewFolder, $maxPreview, $width, $height, $crop, $maxWidth, $maxHeight);
}
} catch (\InvalidArgumentException $e) {
throw new NotFoundException();
}
- return $file;
+ if ($preview->getSize() === 0) {
+ $preview->delete();
+ throw new NotFoundException('Cached preview size 0, invalid!');
+ }
+
+ return $preview;
}
/**
@@ -345,9 +355,9 @@ class Generator {
$scaleH = $maxHeight / $widthR;
$scaleW = $width;
}
- $preview->preciseResize(round($scaleW), round($scaleH));
+ $preview->preciseResize((int)round($scaleW), (int)round($scaleH));
}
- $cropX = floor(abs($width - $preview->width()) * 0.5);
+ $cropX = (int)floor(abs($width - $preview->width()) * 0.5);
$cropY = 0;
$preview->crop($cropX, $cropY, $width, $height);
} else {
diff --git a/lib/private/Preview/GeneratorHelper.php b/lib/private/Preview/GeneratorHelper.php
index 6535fde058b..587f8174b02 100644
--- a/lib/private/Preview/GeneratorHelper.php
+++ b/lib/private/Preview/GeneratorHelper.php
@@ -27,7 +27,7 @@ use OCP\Files\File;
use OCP\Files\IRootFolder;
use OCP\Files\SimpleFS\ISimpleFile;
use OCP\IImage;
-use OCP\Image as img;
+use OCP\Image as OCPImage;
use OCP\Preview\IProvider;
/**
@@ -79,7 +79,9 @@ class GeneratorHelper {
* @return IImage
*/
public function getImage(ISimpleFile $maxPreview) {
- return new img($maxPreview->getContent());
+ $image = new OCPImage();
+ $image->loadFromData($maxPreview->getContent());
+ return $image;
}
/**
diff --git a/lib/private/Preview/TXT.php b/lib/private/Preview/TXT.php
index a4b7ec769c0..88c6e87f38e 100644
--- a/lib/private/Preview/TXT.php
+++ b/lib/private/Preview/TXT.php
@@ -91,8 +91,9 @@ class TXT extends Provider {
}
}
- $image = new \OC_Image($image);
+ $imageObject = new \OC_Image();
+ $imageObject->setResource($image);
- return $image->valid() ? $image : false;
+ return $imageObject->valid() ? $imageObject : false;
}
}
diff --git a/lib/private/PreviewManager.php b/lib/private/PreviewManager.php
index db575a8cbe0..46ef8862e6b 100644
--- a/lib/private/PreviewManager.php
+++ b/lib/private/PreviewManager.php
@@ -166,7 +166,9 @@ class PreviewManager implements IPreview {
return new \OC_Image();
}
- return new \OC_Image($preview->getContent());
+ $previewImage = new \OC_Image();
+ $previewImage->loadFromData($preview->getContent());
+ return $previewImage;
}
/**
diff --git a/lib/private/Repair.php b/lib/private/Repair.php
index 8562465aad3..2b671662f99 100644
--- a/lib/private/Repair.php
+++ b/lib/private/Repair.php
@@ -35,12 +35,7 @@ use OC\Files\AppData\Factory;
use OC\Repair\CleanTags;
use OC\Repair\Collation;
use OC\Repair\MoveUpdaterStepFile;
-use OC\Repair\NC11\CleanPreviews;
use OC\Repair\NC11\FixMountStorages;
-use OC\Repair\NC11\MoveAvatars;
-use OC\Repair\NC12\InstallCoreBundle;
-use OC\Repair\NC12\UpdateLanguageCodes;
-use OC\Repair\NC12\RepairIdentityProofKeyFolders;
use OC\Repair\NC13\AddLogRotateJob;
use OC\Repair\OldGroupMembershipShares;
use OC\Repair\Owncloud\DropAccountTermsTable;
@@ -133,24 +128,8 @@ class Repair implements IOutput{
new RepairInvalidShares(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()),
new RemoveRootShares(\OC::$server->getDatabaseConnection(), \OC::$server->getUserManager(), \OC::$server->getLazyRootFolder()),
new MoveUpdaterStepFile(\OC::$server->getConfig()),
- new MoveAvatars(
- \OC::$server->getJobList(),
- \OC::$server->getConfig()
- ),
- new CleanPreviews(
- \OC::$server->getJobList(),
- \OC::$server->getUserManager(),
- \OC::$server->getConfig()
- ),
new FixMountStorages(\OC::$server->getDatabaseConnection()),
- new UpdateLanguageCodes(\OC::$server->getDatabaseConnection(), \OC::$server->getConfig()),
- new InstallCoreBundle(
- \OC::$server->query(BundleFetcher::class),
- \OC::$server->getConfig(),
- \OC::$server->query(Installer::class)
- ),
new RepairInvalidPaths(\OC::$server->getDatabaseConnection(), \OC::$server->getConfig()),
- new RepairIdentityProofKeyFolders(\OC::$server->getConfig(), \OC::$server->query(Factory::class), \OC::$server->getRootFolder()),
new AddLogRotateJob(\OC::$server->getJobList()),
];
}
diff --git a/lib/private/Repair/NC11/CleanPreviews.php b/lib/private/Repair/NC11/CleanPreviews.php
deleted file mode 100644
index 94f5d19b795..00000000000
--- a/lib/private/Repair/NC11/CleanPreviews.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/**
- * @copyright 2016 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\NC11;
-
-use OCP\BackgroundJob\IJobList;
-use OCP\IConfig;
-use OCP\IUser;
-use OCP\IUserManager;
-use OCP\Migration\IOutput;
-use OCP\Migration\IRepairStep;
-
-class CleanPreviews implements IRepairStep {
-
- /** @var IJobList */
- private $jobList;
-
- /** @var IUserManager */
- private $userManager;
-
- /** @var IConfig */
- private $config;
-
- /**
- * MoveAvatars constructor.
- *
- * @param IJobList $jobList
- * @param IUserManager $userManager
- * @param IConfig $config
- */
- public function __construct(IJobList $jobList,
- IUserManager $userManager,
- IConfig $config) {
- $this->jobList = $jobList;
- $this->userManager = $userManager;
- $this->config = $config;
- }
-
- /**
- * @return string
- */
- public function getName() {
- return 'Add preview cleanup background jobs';
- }
-
- public function run(IOutput $output) {
- if (!$this->config->getAppValue('core', 'previewsCleanedUp', false)) {
- $this->userManager->callForSeenUsers(function (IUser $user) {
- $this->jobList->add(CleanPreviewsBackgroundJob::class, ['uid' => $user->getUID()]);
- });
- $this->config->setAppValue('core', 'previewsCleanedUp', 1);
- }
- }
-}
diff --git a/lib/private/Repair/NC11/CleanPreviewsBackgroundJob.php b/lib/private/Repair/NC11/CleanPreviewsBackgroundJob.php
deleted file mode 100644
index e713f4dc63a..00000000000
--- a/lib/private/Repair/NC11/CleanPreviewsBackgroundJob.php
+++ /dev/null
@@ -1,132 +0,0 @@
-<?php
-/**
- * @copyright 2016 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\NC11;
-
-use OC\BackgroundJob\QueuedJob;
-use OCP\AppFramework\Utility\ITimeFactory;
-use OCP\BackgroundJob\IJobList;
-use OCP\Files\Folder;
-use OCP\Files\IRootFolder;
-use OCP\Files\NotFoundException;
-use OCP\Files\NotPermittedException;
-use OCP\ILogger;
-use OCP\IUserManager;
-
-class CleanPreviewsBackgroundJob extends QueuedJob {
- /** @var IRootFolder */
- private $rootFolder;
-
- /** @var ILogger */
- private $logger;
-
- /** @var IJobList */
- private $jobList;
-
- /** @var ITimeFactory */
- private $timeFactory;
-
- /** @var IUserManager */
- private $userManager;
-
- /**
- * CleanPreviewsBackgroundJob constructor.
- *
- * @param IRootFolder $rootFolder
- * @param ILogger $logger
- * @param IJobList $jobList
- * @param ITimeFactory $timeFactory
- * @param IUserManager $userManager
- */
- public function __construct(IRootFolder $rootFolder,
- ILogger $logger,
- IJobList $jobList,
- ITimeFactory $timeFactory,
- IUserManager $userManager) {
- $this->rootFolder = $rootFolder;
- $this->logger = $logger;
- $this->jobList = $jobList;
- $this->timeFactory = $timeFactory;
- $this->userManager = $userManager;
- }
-
- public function run($arguments) {
- $uid = $arguments['uid'];
- if (!$this->userManager->userExists($uid)) {
- $this->logger->info('User no longer exists, skip user ' . $uid);
- return;
- }
- $this->logger->info('Started preview cleanup for ' . $uid);
- $empty = $this->cleanupPreviews($uid);
-
- if (!$empty) {
- $this->jobList->add(self::class, ['uid' => $uid]);
- $this->logger->info('New preview cleanup scheduled for ' . $uid);
- } else {
- $this->logger->info('Preview cleanup done for ' . $uid);
- }
- }
-
- /**
- * @param $uid
- * @return bool
- */
- private function cleanupPreviews($uid) {
- try {
- $userFolder = $this->rootFolder->getUserFolder($uid);
- } catch (NotFoundException $e) {
- return true;
- }
-
- $userRoot = $userFolder->getParent();
-
- try {
- /** @var Folder $thumbnailFolder */
- $thumbnailFolder = $userRoot->get('thumbnails');
- } catch (NotFoundException $e) {
- return true;
- }
-
- $thumbnails = $thumbnailFolder->getDirectoryListing();
-
- $start = $this->timeFactory->getTime();
- foreach ($thumbnails as $thumbnail) {
- try {
- $thumbnail->delete();
- } catch (NotPermittedException $e) {
- // Ignore
- }
-
- if (($this->timeFactory->getTime() - $start) > 15) {
- return false;
- }
- }
-
- try {
- $thumbnailFolder->delete();
- } catch (NotPermittedException $e) {
- // Ignore
- }
-
- return true;
- }
-}
diff --git a/lib/private/Repair/NC11/MoveAvatars.php b/lib/private/Repair/NC11/MoveAvatars.php
deleted file mode 100644
index cff591904f1..00000000000
--- a/lib/private/Repair/NC11/MoveAvatars.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/**
- * @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
- *
- * @author Morris Jobke <hey@morrisjobke.de>
- * @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\NC11;
-
-use OCP\BackgroundJob\IJobList;
-use OCP\IConfig;
-use OCP\Migration\IOutput;
-use OCP\Migration\IRepairStep;
-
-class MoveAvatars implements IRepairStep {
-
- /** @var IJobList */
- private $jobList;
-
- /** @var IConfig */
- private $config;
-
- /**
- * MoveAvatars constructor.
- *
- * @param IJobList $jobList
- * @param IConfig $config
- */
- public function __construct(IJobList $jobList,
- IConfig $config) {
- $this->jobList = $jobList;
- $this->config = $config;
- }
-
- /**
- * @return string
- */
- public function getName() {
- return 'Add move avatar background job';
- }
-
- public function run(IOutput $output) {
- // only run once
- if ($this->config->getAppValue('core', 'moveavatarsdone') === 'yes') {
- $output->info('Repair step already executed');
- return;
- }
- if ($this->config->getSystemValue('enable_avatars', true) === false) {
- $output->info('Avatars are disabled');
- } else {
- $output->info('Add background job');
- $this->jobList->add(MoveAvatarsBackgroundJob::class);
- // if all were done, no need to redo the repair during next upgrade
- $this->config->setAppValue('core', 'moveavatarsdone', 'yes');
- }
- }
-}
diff --git a/lib/private/Repair/NC11/MoveAvatarsBackgroundJob.php b/lib/private/Repair/NC11/MoveAvatarsBackgroundJob.php
deleted file mode 100644
index 81f375e1b41..00000000000
--- a/lib/private/Repair/NC11/MoveAvatarsBackgroundJob.php
+++ /dev/null
@@ -1,146 +0,0 @@
-<?php
-/**
- * @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
- *
- * @author Joas Schilling <coding@schilljs.com>
- * @author Morris Jobke <hey@morrisjobke.de>
- * @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\NC11;
-
-use OC\BackgroundJob\QueuedJob;
-use OCP\Files\File;
-use OCP\Files\Folder;
-use OCP\Files\IAppData;
-use OCP\Files\IRootFolder;
-use OCP\Files\NotFoundException;
-use OCP\Files\SimpleFS\ISimpleFolder;
-use OCP\ILogger;
-use OCP\IUser;
-use OCP\IUserManager;
-
-class MoveAvatarsBackgroundJob extends QueuedJob {
-
- /** @var IUserManager */
- private $userManager;
-
- /** @var IRootFolder */
- private $rootFolder;
-
- /** @var IAppData */
- private $appData;
-
- /** @var ILogger */
- private $logger;
-
- /**
- * MoveAvatars constructor.
- */
- public function __construct() {
- $this->userManager = \OC::$server->getUserManager();
- $this->rootFolder = \OC::$server->getRootFolder();
- $this->logger = \OC::$server->getLogger();
- $this->appData = \OC::$server->getAppDataDir('avatar');
- }
-
- public function run($arguments) {
- $this->logger->info('Started migrating avatars to AppData folder');
- $this->moveAvatars();
- $this->logger->info('All avatars migrated to AppData folder');
- }
-
- private function moveAvatars() {
- try {
- $ownCloudAvatars = $this->rootFolder->get('avatars');
- } catch (NotFoundException $e) {
- $ownCloudAvatars = null;
- }
-
- $counter = 0;
- $this->userManager->callForSeenUsers(function (IUser $user) use ($counter, $ownCloudAvatars) {
- $uid = $user->getUID();
-
- \OC\Files\Filesystem::initMountPoints($uid);
- /** @var Folder $userFolder */
- $userFolder = $this->rootFolder->get($uid);
-
- try {
- $userData = $this->appData->getFolder($uid);
- } catch (NotFoundException $e) {
- $userData = $this->appData->newFolder($uid);
- }
-
- $foundAvatars = $this->copyAvatarsFromFolder($userFolder, $userData);
-
- // ownCloud migration?
- if ($foundAvatars === 0 && $ownCloudAvatars instanceof Folder) {
- $parts = $this->buildOwnCloudAvatarPath($uid);
- $userOwnCloudAvatar = $ownCloudAvatars;
- foreach ($parts as $part) {
- try {
- $userOwnCloudAvatar = $userOwnCloudAvatar->get($part);
- } catch (NotFoundException $e) {
- return;
- }
- }
-
- $this->copyAvatarsFromFolder($userOwnCloudAvatar, $userData);
- }
-
- $counter++;
- if ($counter % 100 === 0) {
- $this->logger->info('{amount} avatars migrated', ['amount' => $counter]);
- }
- });
- }
-
- /**
- * @param Folder $source
- * @param ISimpleFolder $target
- * @return int
- * @throws \OCP\Files\NotPermittedException
- * @throws NotFoundException
- */
- protected function copyAvatarsFromFolder(Folder $source, ISimpleFolder $target) {
- $foundAvatars = 0;
- $avatars = $source->getDirectoryListing();
- $regex = '/^avatar\.([0-9]+\.)?(jpg|png)$/';
-
- foreach ($avatars as $avatar) {
- /** @var File $avatar */
- if (preg_match($regex, $avatar->getName())) {
- /*
- * This is not the most effective but it is the most abstract way
- * to handle this. Avatars should be small anyways.
- */
- $newAvatar = $target->newFile($avatar->getName());
- $newAvatar->putContent($avatar->getContent());
- $avatar->delete();
- $foundAvatars++;
- }
- }
-
- return $foundAvatars;
- }
-
- protected function buildOwnCloudAvatarPath($userId) {
- $avatar = substr_replace(substr_replace(md5($userId), '/', 4, 0), '/', 2, 0);
- return explode('/', $avatar);
- }
-}
diff --git a/lib/private/Repair/NC12/InstallCoreBundle.php b/lib/private/Repair/NC12/InstallCoreBundle.php
deleted file mode 100644
index f7a2b07dec0..00000000000
--- a/lib/private/Repair/NC12/InstallCoreBundle.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
- *
- * @author Lukas Reschke <lukas@statuscode.ch>
- *
- * @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\NC12;
-
-use OC\App\AppStore\Bundles\BundleFetcher;
-use OC\Installer;
-use OCP\IConfig;
-use OCP\Migration\IOutput;
-use OCP\Migration\IRepairStep;
-
-class InstallCoreBundle implements IRepairStep {
- /** @var BundleFetcher */
- private $bundleFetcher;
- /** @var IConfig */
- private $config;
- /** @var Installer */
- private $installer;
-
- /**
- * @param BundleFetcher $bundleFetcher
- * @param IConfig $config
- * @param Installer $installer
- */
- public function __construct(BundleFetcher $bundleFetcher,
- IConfig $config,
- Installer $installer) {
- $this->bundleFetcher = $bundleFetcher;
- $this->config = $config;
- $this->installer = $installer;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName() {
- return 'Install new core bundle components';
- }
-
- /**
- * {@inheritdoc}
- */
- public function run(IOutput $output) {
- $versionFromBeforeUpdate = $this->config->getSystemValue('version', '0.0.0');
-
- if (version_compare($versionFromBeforeUpdate, '12.0.0.14', '>')) {
- return;
- }
-
- $defaultBundle = $this->bundleFetcher->getDefaultInstallationBundle();
- foreach($defaultBundle as $bundle) {
- try {
- $this->installer->installAppBundle($bundle);
- $output->info('Successfully installed core app bundle.');
- } catch (\Exception $e) {
- $output->warning('Could not install core app bundle: ' . $e->getMessage());
- }
- }
- }
-}
diff --git a/lib/private/Repair/NC12/RepairIdentityProofKeyFolders.php b/lib/private/Repair/NC12/RepairIdentityProofKeyFolders.php
deleted file mode 100644
index f8b8b8bdc28..00000000000
--- a/lib/private/Repair/NC12/RepairIdentityProofKeyFolders.php
+++ /dev/null
@@ -1,112 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2017 Bjoern Schiessle <bjoern@schiessle.org>
- *
- * @author Bjoern Schiessle <bjoern@schiessle.org>
- *
- * @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\NC12;
-
-
-use OC\Files\AppData\Factory;
-use OCP\Files\IRootFolder;
-use OCP\Files\SimpleFS\ISimpleFolder;
-use OCP\IConfig;
-use OCP\Migration\IOutput;
-use OCP\Migration\IRepairStep;
-
-class RepairIdentityProofKeyFolders implements IRepairStep {
-
- /** @var IConfig */
- private $config;
-
- /** @var \OC\Files\AppData\AppData */
- private $appDataIdentityProof;
-
- /** @var IRootFolder */
- private $rootFolder;
-
- /** @var string */
- private $identityProofDir;
-
- /**
- * RepairIdentityProofKeyFolders constructor.
- *
- * @param IConfig $config
- * @param Factory $appDataFactory
- * @param IRootFolder $rootFolder
- */
- public function __construct(IConfig $config, Factory $appDataFactory, IRootFolder $rootFolder) {
- $this->config = $config;
- $this->appDataIdentityProof = $appDataFactory->get('identityproof');
- $this->rootFolder = $rootFolder;
-
- $instanceId = $this->config->getSystemValue('instanceid', null);
- if ($instanceId === null) {
- throw new \RuntimeException('no instance id!');
- }
- $this->identityProofDir = 'appdata_' . $instanceId . '/identityproof/';
- }
-
- /**
- * Returns the step's name
- *
- * @return string
- * @since 9.1.0
- */
- public function getName() {
- return "Rename folder with user specific keys";
- }
-
- /**
- * Run repair step.
- * Must throw exception on error.
- *
- * @param IOutput $output
- * @throws \Exception in case of failure
- * @since 9.1.0
- */
- public function run(IOutput $output) {
- $versionFromBeforeUpdate = $this->config->getSystemValue('version', '0.0.0');
- if (version_compare($versionFromBeforeUpdate, '12.0.1.5', '<=')) {
- $count = $this->repair();
- $output->info('Repaired ' . $count . ' folders');
- }
- }
-
- /**
- * rename all dirs with user specific keys to 'user-uid'
- *
- * @return int
- */
- private function repair() {
- $count = 0;
- $dirListing = $this->appDataIdentityProof->getDirectoryListing();
- /** @var ISimpleFolder $folder */
- foreach ($dirListing as $folder) {
- $name = $folder->getName();
- $node = $this->rootFolder->get($this->identityProofDir . $name);
- $node->move($this->identityProofDir . 'user-' . $name);
- $count++;
- }
-
- return $count;
- }
-}
diff --git a/lib/private/Repair/NC12/UpdateLanguageCodes.php b/lib/private/Repair/NC12/UpdateLanguageCodes.php
deleted file mode 100644
index a8522449d56..00000000000
--- a/lib/private/Repair/NC12/UpdateLanguageCodes.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016 Morris Jobke <hey@morrisjobke.de>
- *
- * @author Joas Schilling <coding@schilljs.com>
- * @author Morris Jobke <hey@morrisjobke.de>
- *
- * @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\NC12;
-
-use OCP\DB\QueryBuilder\IQueryBuilder;
-use OCP\IConfig;
-use OCP\IDBConnection;
-use OCP\Migration\IOutput;
-use OCP\Migration\IRepairStep;
-
-class UpdateLanguageCodes implements IRepairStep {
- /** @var IDBConnection */
- private $connection;
-
- /** @var IConfig */
- private $config;
-
- /**
- * @param IDBConnection $connection
- * @param IConfig $config
- */
- public function __construct(IDBConnection $connection,
- IConfig $config) {
- $this->connection = $connection;
- $this->config = $config;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName() {
- return 'Repair language codes';
- }
-
- /**
- * {@inheritdoc}
- */
- public function run(IOutput $output) {
-
- $versionFromBeforeUpdate = $this->config->getSystemValue('version', '0.0.0');
-
- if (version_compare($versionFromBeforeUpdate, '12.0.0.13', '>')) {
- return;
- }
-
- $languages = [
- 'bg_BG' => 'bg',
- 'cs_CZ' => 'cs',
- 'fi_FI' => 'fi',
- 'hu_HU' => 'hu',
- 'nb_NO' => 'nb',
- 'sk_SK' => 'sk',
- 'th_TH' => 'th',
- ];
-
- foreach ($languages as $oldCode => $newCode) {
- $qb = $this->connection->getQueryBuilder();
-
- $affectedRows = $qb->update('preferences')
- ->set('configvalue', $qb->createNamedParameter($newCode))
- ->where($qb->expr()->eq('appid', $qb->createNamedParameter('core')))
- ->andWhere($qb->expr()->eq('configkey', $qb->createNamedParameter('lang')))
- ->andWhere($qb->expr()->eq('configvalue', $qb->createNamedParameter($oldCode), IQueryBuilder::PARAM_STR))
- ->execute();
-
- $output->info('Changed ' . $affectedRows . ' setting(s) from "' . $oldCode . '" to "' . $newCode . '" in preferences table.');
- }
- }
-}
diff --git a/lib/private/Security/Crypto.php b/lib/private/Security/Crypto.php
index d2be1484279..04d618bf373 100644
--- a/lib/private/Security/Crypto.php
+++ b/lib/private/Security/Crypto.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -67,7 +68,7 @@ class Crypto implements ICrypto {
* @param string $password Password to use (defaults to `secret` in config.php)
* @return string Calculated HMAC
*/
- public function calculateHMAC($message, $password = '') {
+ public function calculateHMAC(string $message, string $password = ''): string {
if($password === '') {
$password = $this->config->getSystemValue('secret');
}
@@ -86,7 +87,7 @@ class Crypto implements ICrypto {
* @param string $password Password to encrypt, if not specified the secret from config.php will be taken
* @return string Authenticated ciphertext
*/
- public function encrypt($plaintext, $password = '') {
+ public function encrypt(string $plaintext, string $password = ''): string {
if($password === '') {
$password = $this->config->getSystemValue('secret');
}
@@ -115,7 +116,7 @@ class Crypto implements ICrypto {
$this->cipher->setPassword($password);
$parts = explode('|', $authenticatedCiphertext);
- if(count($parts) !== 3) {
+ if(\count($parts) !== 3) {
throw new \Exception('Authenticated ciphertext could not be decoded.');
}
diff --git a/lib/private/Security/Hasher.php b/lib/private/Security/Hasher.php
index 1ba6d7059eb..c6c9109b336 100644
--- a/lib/private/Security/Hasher.php
+++ b/lib/private/Security/Hasher.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -63,7 +64,7 @@ class Hasher implements IHasher {
$this->config = $config;
$hashingCost = $this->config->getSystemValue('hashingCost', null);
- if(!is_null($hashingCost)) {
+ if(!\is_null($hashingCost)) {
$this->options['cost'] = $hashingCost;
}
}
@@ -76,7 +77,7 @@ class Hasher implements IHasher {
* @param string $message Message to generate hash from
* @return string Hash of the message with appended version parameter
*/
- public function hash($message) {
+ public function hash(string $message): string {
return $this->currentVersion . '|' . password_hash($message, PASSWORD_DEFAULT, $this->options);
}
@@ -85,9 +86,9 @@ class Hasher implements IHasher {
* @param string $prefixedHash
* @return null|array Null if the hash is not prefixed, otherwise array('version' => 1, 'hash' => 'foo')
*/
- protected function splitHash($prefixedHash) {
+ protected function splitHash(string $prefixedHash) {
$explodedString = explode('|', $prefixedHash, 2);
- if(count($explodedString) === 2) {
+ if(\count($explodedString) === 2) {
if((int)$explodedString[0] > 0) {
return array('version' => (int)$explodedString[0], 'hash' => $explodedString[1]);
}
@@ -103,13 +104,13 @@ class Hasher implements IHasher {
* @param null|string &$newHash Reference will contain the updated hash
* @return bool Whether $hash is a valid hash of $message
*/
- protected function legacyHashVerify($message, $hash, &$newHash = null) {
+ protected function legacyHashVerify($message, $hash, &$newHash = null): bool {
if(empty($this->legacySalt)) {
$this->legacySalt = $this->config->getSystemValue('passwordsalt', '');
}
// Verify whether it matches a legacy PHPass or SHA1 string
- $hashLength = strlen($hash);
+ $hashLength = \strlen($hash);
if($hashLength === 60 && password_verify($message.$this->legacySalt, $hash) ||
$hashLength === 40 && hash_equals($hash, sha1($message))) {
$newHash = $this->hash($message);
@@ -126,7 +127,7 @@ class Hasher implements IHasher {
* @param null|string &$newHash Reference will contain the updated hash if necessary. Update the existing hash with this one.
* @return bool Whether $hash is a valid hash of $message
*/
- protected function verifyHashV1($message, $hash, &$newHash = null) {
+ protected function verifyHashV1(string $message, string $hash, &$newHash = null): bool {
if(password_verify($message, $hash)) {
if(password_needs_rehash($hash, PASSWORD_DEFAULT, $this->options)) {
$newHash = $this->hash($message);
@@ -143,7 +144,7 @@ class Hasher implements IHasher {
* @param null|string &$newHash Reference will contain the updated hash if necessary. Update the existing hash with this one.
* @return bool Whether $hash is a valid hash of $message
*/
- public function verify($message, $hash, &$newHash = null) {
+ public function verify(string $message, string $hash, &$newHash = null): bool {
$splittedHash = $this->splitHash($hash);
if(isset($splittedHash['version'])) {
diff --git a/lib/private/Server.php b/lib/private/Server.php
index 4a851d67226..90072f8b63b 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -92,7 +92,6 @@ use OC\Notification\Manager;
use OC\OCS\DiscoveryService;
use OC\Remote\Api\ApiFactory;
use OC\Remote\InstanceFactory;
-use OC\Repair\NC11\CleanPreviewsBackgroundJob;
use OC\RichObjectStrings\Validator;
use OC\Security\Bruteforce\Throttler;
use OC\Security\CertificateManager;
@@ -284,11 +283,12 @@ class Server extends ServerContainer implements IServerContainer {
});
$this->registerAlias('LazyRootFolder', \OCP\Files\IRootFolder::class);
- $this->registerService(\OCP\IUserManager::class, function (Server $c) {
+ $this->registerService(\OC\User\Manager::class, function (Server $c) {
$config = $c->getConfig();
return new \OC\User\Manager($config);
});
- $this->registerAlias('UserManager', \OCP\IUserManager::class);
+ $this->registerAlias('UserManager', \OC\User\Manager::class);
+ $this->registerAlias(\OCP\IUserManager::class, \OC\User\Manager::class);
$this->registerService(\OCP\IGroupManager::class, function (Server $c) {
$groupManager = new \OC\Group\Manager($this->getUserManager(), $this->getLogger());
@@ -523,7 +523,7 @@ class Server extends ServerContainer implements IServerContainer {
$this->registerService(\OCP\IAvatarManager::class, function (Server $c) {
return new AvatarManager(
- $c->getUserManager(),
+ $c->query(\OC\User\Manager::class),
$c->getAppDataDir('avatar'),
$c->getL10N('lib'),
$c->getLogger(),
@@ -676,7 +676,7 @@ class Server extends ServerContainer implements IServerContainer {
$this->registerService(AppManager::class, function (Server $c) {
return new \OC\App\AppManager(
$c->getUserSession(),
- $c->getAppConfig(),
+ $c->query(\OC\AppConfig::class),
$c->getGroupManager(),
$c->getMemCacheFactory(),
$c->getEventDispatcher()
diff --git a/lib/private/Share/Share.php b/lib/private/Share/Share.php
index 193e0c1a27e..8812399c812 100644
--- a/lib/private/Share/Share.php
+++ b/lib/private/Share/Share.php
@@ -81,7 +81,7 @@ class Share extends Constants {
* @return boolean true if backend is registered or false if error
*/
public static function registerBackend($itemType, $class, $collectionOf = null, $supportedFileExtensions = null) {
- if (\OC::$server->getAppConfig()->getValue('core', 'shareapi_enabled', 'yes') == 'yes') {
+ if (\OC::$server->getConfig()->getAppValue('core', 'shareapi_enabled', 'yes') == 'yes') {
if (!isset(self::$backendTypes[$itemType])) {
self::$backendTypes[$itemType] = array(
'class' => $class,
@@ -439,7 +439,7 @@ class Share extends Constants {
\OCP\Util::writeLog('OCP\Share', sprintf($message, $itemSourceName), \OCP\Util::DEBUG);
throw new \Exception($message_t);
}
- if (!\OC_User::userExists($shareWith)) {
+ if (!\OC::$server->getUserManager()->userExists($shareWith)) {
$message = 'Sharing %s failed, because the user %s does not exist';
$message_t = $l->t('Sharing %s failed, because the user %s does not exist', array($itemSourceName, $shareWith));
\OCP\Util::writeLog('OCP\Share', sprintf($message, $itemSourceName, $shareWith), \OCP\Util::DEBUG);
@@ -540,7 +540,7 @@ class Share extends Constants {
$shareWith['users'] = array_diff($userIds, array($uidOwner));
} else if ($shareType === self::SHARE_TYPE_LINK) {
$updateExistingShare = false;
- if (\OC::$server->getAppConfig()->getValue('core', 'shareapi_allow_links', 'yes') == 'yes') {
+ if (\OC::$server->getConfig()->getAppValue('core', 'shareapi_allow_links', 'yes') == 'yes') {
// IF the password is changed via the old ajax endpoint verify it before deleting the old share
if ($passwordChanged === true) {
@@ -784,81 +784,6 @@ class Share extends Constants {
}
/**
- * Retrieve the owner of a connection
- *
- * @param IDBConnection $connection
- * @param int $shareId
- * @throws \Exception
- * @return string uid of share owner
- */
- private static function getShareOwner(IDBConnection $connection, $shareId) {
- $qb = $connection->getQueryBuilder();
-
- $qb->select('uid_owner')
- ->from('share')
- ->where($qb->expr()->eq('id', $qb->createParameter('shareId')))
- ->setParameter(':shareId', $shareId);
- $dbResult = $qb->execute();
- $result = $dbResult->fetch();
- $dbResult->closeCursor();
-
- if (empty($result)) {
- throw new \Exception('Share not found');
- }
-
- return $result['uid_owner'];
- }
-
- /**
- * Set password for a public link share
- *
- * @param IUserSession $userSession
- * @param IDBConnection $connection
- * @param IConfig $config
- * @param int $shareId
- * @param string $password
- * @throws \Exception
- * @return boolean
- */
- public static function setPassword(IUserSession $userSession,
- IDBConnection $connection,
- IConfig $config,
- $shareId, $password) {
- $user = $userSession->getUser();
- if (is_null($user)) {
- throw new \Exception("User not logged in");
- }
-
- $uid = self::getShareOwner($connection, $shareId);
-
- if ($uid !== $user->getUID()) {
- throw new \Exception('Cannot update share of a different user');
- }
-
- if ($password === '') {
- $password = null;
- }
-
- //If passwords are enforced the password can't be null
- if (self::enforcePassword($config) && is_null($password)) {
- throw new \Exception('Cannot remove password');
- }
-
- self::verifyPassword($password);
-
- $qb = $connection->getQueryBuilder();
- $qb->update('share')
- ->set('share_with', $qb->createParameter('pass'))
- ->where($qb->expr()->eq('id', $qb->createParameter('shareId')))
- ->setParameter(':pass', is_null($password) ? null : \OC::$server->getHasher()->hash($password))
- ->setParameter(':shareId', $shareId);
-
- $qb->execute();
-
- return true;
- }
-
- /**
* Checks whether a share has expired, calls unshareItem() if yes.
* @param array $item Share data (usually database row)
* @return boolean True if item was expired, false otherwise.
@@ -977,7 +902,7 @@ class Share extends Constants {
*/
public static function isResharingAllowed() {
if (!isset(self::$isResharingAllowed)) {
- if (\OC::$server->getAppConfig()->getValue('core', 'shareapi_allow_resharing', 'yes') == 'yes') {
+ if (\OC::$server->getConfig()->getAppValue('core', 'shareapi_allow_resharing', 'yes') == 'yes') {
self::$isResharingAllowed = true;
} else {
self::$isResharingAllowed = false;
@@ -1082,7 +1007,7 @@ class Share extends Constants {
public static function getItems($itemType, $item = null, $shareType = null, $shareWith = null,
$uidOwner = null, $format = self::FORMAT_NONE, $parameters = null, $limit = -1,
$includeCollections = false, $itemShareWithBySource = false, $checkExpireDate = true) {
- if (\OC::$server->getAppConfig()->getValue('core', 'shareapi_enabled', 'yes') != 'yes') {
+ if (\OC::$server->getConfig()->getAppValue('core', 'shareapi_enabled', 'yes') != 'yes') {
return array();
}
$backend = self::getBackend($itemType);
@@ -1121,7 +1046,7 @@ class Share extends Constants {
$queryArgs = array($itemType);
}
}
- if (\OC::$server->getAppConfig()->getValue('core', 'shareapi_allow_links', 'yes') !== 'yes') {
+ if (\OC::$server->getConfig()->getAppValue('core', 'shareapi_allow_links', 'yes') !== 'yes') {
$where .= ' AND `share_type` != ?';
$queryArgs[] = self::SHARE_TYPE_LINK;
}
@@ -2144,7 +2069,7 @@ class Share extends Constants {
* @return bool
*/
public static function shareWithGroupMembersOnly() {
- $value = \OC::$server->getAppConfig()->getValue('core', 'shareapi_only_share_with_group_members', 'no');
+ $value = \OC::$server->getConfig()->getAppValue('core', 'shareapi_only_share_with_group_members', 'no');
return ($value === 'yes') ? true : false;
}
@@ -2157,14 +2082,6 @@ class Share extends Constants {
}
/**
- * @return bool
- */
- public static function enforceDefaultExpireDate() {
- $enforceDefaultExpireDate = \OC::$server->getConfig()->getAppValue('core', 'shareapi_enforce_expire_date', 'no');
- return ($enforceDefaultExpireDate === "yes") ? true : false;
- }
-
- /**
* @return int
*/
public static function getExpireInterval() {
@@ -2206,30 +2123,6 @@ class Share extends Constants {
}
/**
- * Get all share entries, including non-unique group items
- *
- * @param string $owner
- * @return array
- */
- public static function getAllSharesForOwner($owner) {
- $query = 'SELECT * FROM `*PREFIX*share` WHERE `uid_owner` = ?';
- $result = \OC::$server->getDatabaseConnection()->executeQuery($query, [$owner]);
- return $result->fetchAll();
- }
-
- /**
- * Get all share entries, including non-unique group items for a file
- *
- * @param int $id
- * @return array
- */
- public static function getAllSharesForFileId($id) {
- $query = 'SELECT * FROM `*PREFIX*share` WHERE `file_source` = ?';
- $result = \OC::$server->getDatabaseConnection()->executeQuery($query, [$id]);
- return $result->fetchAll();
- }
-
- /**
* @param string $password
* @throws \Exception
*/
diff --git a/lib/private/Updater.php b/lib/private/Updater.php
index 996163daacc..43096e7c1f8 100644
--- a/lib/private/Updater.php
+++ b/lib/private/Updater.php
@@ -66,9 +66,6 @@ class Updater extends BasicEmitter {
/** @var Installer */
private $installer;
- /** @var bool */
- private $skip3rdPartyAppsDisable;
-
private $logLevelNames = [
0 => 'Debug',
1 => 'Info',
@@ -91,22 +88,6 @@ class Updater extends BasicEmitter {
$this->config = $config;
$this->checker = $checker;
$this->installer = $installer;
-
- // If at least PHP 7.0.0 is used we don't need to disable apps as we catch
- // fatal errors and exceptions and disable the app just instead.
- if(version_compare(phpversion(), '7.0.0', '>=')) {
- $this->skip3rdPartyAppsDisable = true;
- }
- }
-
- /**
- * Sets whether the update disables 3rd party apps.
- * This can be set to true to skip the disable.
- *
- * @param bool $flag false to not disable, true otherwise
- */
- public function setSkip3rdPartyAppsDisable($flag) {
- $this->skip3rdPartyAppsDisable = $flag;
}
/**
@@ -201,16 +182,8 @@ class Updater extends BasicEmitter {
$currentVendor = $this->config->getAppValue('core', 'vendor', '');
// Vendor was not set correctly on install, so we have to white-list known versions
- if ($currentVendor === '') {
- if (in_array($oldVersion, [
- '11.0.2.7',
- '11.0.1.2',
- '11.0.0.10',
- ], true)) {
- $currentVendor = 'nextcloud';
- } else if (isset($allowedPreviousVersions['owncloud'][$oldVersion])) {
- $currentVendor = 'owncloud';
- }
+ if ($currentVendor === '' && isset($allowedPreviousVersions['owncloud'][$oldVersion])) {
+ $currentVendor = 'owncloud';
}
if ($currentVendor === 'nextcloud') {
@@ -437,13 +410,6 @@ class Updater extends BasicEmitter {
if (OC_App::isType($app, ['session', 'authentication'])) {
continue;
}
-
- // disable any other 3rd party apps if not overriden
- if(!$this->skip3rdPartyAppsDisable) {
- \OC_App::disable($app);
- $disabledApps[]= $app;
- $this->emit('\OC\Updater', 'thirdPartyAppDisabled', array($app));
- };
}
return $disabledApps;
}
@@ -597,9 +563,6 @@ class Updater extends BasicEmitter {
$this->listen('\OC\Updater', 'incompatibleAppDisabled', function ($app) use($log) {
$log->info('\OC\Updater::incompatibleAppDisabled: Disabled incompatible app: ' . $app, ['app' => 'updater']);
});
- $this->listen('\OC\Updater', 'thirdPartyAppDisabled', function ($app) use ($log) {
- $log->info('\OC\Updater::thirdPartyAppDisabled: Disabled 3rd-party app: ' . $app, ['app' => 'updater']);
- });
$this->listen('\OC\Updater', 'checkAppStoreAppBefore', function ($app) use($log) {
$log->info('\OC\Updater::checkAppStoreAppBefore: Checking for update of app "' . $app . '" in appstore', ['app' => 'updater']);
});
diff --git a/lib/private/legacy/app.php b/lib/private/legacy/app.php
index 8114895416b..ea44ac8a144 100644
--- a/lib/private/legacy/app.php
+++ b/lib/private/legacy/app.php
@@ -236,8 +236,8 @@ class OC_App {
require_once $app . '/appinfo/app.php';
} catch (Error $ex) {
\OC::$server->getLogger()->logException($ex);
- $blacklist = \OC::$server->getAppManager()->getAlwaysEnabledApps();
- if (!in_array($app, $blacklist)) {
+ if (!\OC::$server->getAppManager()->isShipped($app)) {
+ // Only disable apps which are not shipped
self::disable($app);
}
}
@@ -298,12 +298,12 @@ class OC_App {
$appData['types'] = [];
}
- \OC::$server->getAppConfig()->setValue($app, 'types', $appTypes);
+ \OC::$server->getConfig()->setAppValue($app, 'types', $appTypes);
if (\OC::$server->getAppManager()->hasProtectedAppType($appData['types'])) {
- $enabled = \OC::$server->getAppConfig()->getValue($app, 'enabled', 'yes');
+ $enabled = \OC::$server->getConfig()->getAppValue($app, 'enabled', 'yes');
if ($enabled !== 'yes' && $enabled !== 'no') {
- \OC::$server->getAppConfig()->setValue($app, 'enabled', 'yes');
+ \OC::$server->getConfig()->setAppValue($app, 'enabled', 'yes');
}
}
}
@@ -803,7 +803,7 @@ class OC_App {
continue;
}
- $enabled = \OC::$server->getAppConfig()->getValue($app, 'enabled', 'no');
+ $enabled = \OC::$server->getConfig()->getAppValue($app, 'enabled', 'no');
$info['groups'] = null;
if ($enabled === 'yes') {
$active = true;
@@ -1075,7 +1075,7 @@ class OC_App {
self::setAppTypes($appId);
$version = \OC_App::getAppVersion($appId);
- \OC::$server->getAppConfig()->setValue($appId, 'installed_version', $version);
+ \OC::$server->getConfig()->setAppValue($appId, 'installed_version', $version);
\OC::$server->getEventDispatcher()->dispatch(ManagerEvent::EVENT_APP_UPDATE, new ManagerEvent(
ManagerEvent::EVENT_APP_UPDATE, $appId
diff --git a/lib/private/legacy/image.php b/lib/private/legacy/image.php
index a0159b927f9..6ad9426a717 100644
--- a/lib/private/legacy/image.php
+++ b/lib/private/legacy/image.php
@@ -69,6 +69,7 @@ class OC_Image implements \OCP\IImage {
* an imagecreate* function.
* @param \OCP\ILogger $logger
* @param \OCP\IConfig $config
+ * @throws \InvalidArgumentException in case the $imageRef parameter is not null
*/
public function __construct($imageRef = null, \OCP\ILogger $logger = null, \OCP\IConfig $config = null) {
$this->logger = $logger;
@@ -85,7 +86,7 @@ class OC_Image implements \OCP\IImage {
}
if ($imageRef !== null) {
- $this->load($imageRef);
+ throw new \InvalidArgumentException('The first parameter in the constructor is not supported anymore. Please use any of the load* methods of the image object to load an image.');
}
}
@@ -298,6 +299,18 @@ class OC_Image implements \OCP\IImage {
}
/**
+ * @param resource Returns the image resource in any.
+ * @throws \InvalidArgumentException in case the supplied resource does not have the type "gd"
+ */
+ public function setResource($resource) {
+ if (get_resource_type($resource) === 'gd') {
+ $this->resource = $resource;
+ return;
+ }
+ throw new \InvalidArgumentException('Supplied resource is not of type "gd".');
+ }
+
+ /**
* @return resource Returns the image resource in any.
*/
public function resource() {
@@ -504,31 +517,6 @@ class OC_Image implements \OCP\IImage {
}
/**
- * Loads an image from a local file, a base64 encoded string or a resource created by an imagecreate* function.
- *
- * @param resource|string $imageRef The path to a local file, a base64 encoded string or a resource created by an imagecreate* function or a file resource (file handle ).
- * @return resource|false An image resource or false on error
- */
- public function load($imageRef) {
- if (is_resource($imageRef)) {
- if (get_resource_type($imageRef) === 'gd') {
- $this->resource = $imageRef;
- return $this->resource;
- } elseif (in_array(get_resource_type($imageRef), array('file', 'stream'))) {
- return $this->loadFromFileHandle($imageRef);
- }
- } elseif ($this->loadFromBase64($imageRef) !== false) {
- return $this->resource;
- } elseif ($this->loadFromFile($imageRef) !== false) {
- return $this->resource;
- } elseif ($this->loadFromData($imageRef) !== false) {
- return $this->resource;
- }
- $this->logger->debug(__METHOD__ . '(): could not load anything. Giving up!', array('app' => 'core'));
- return false;
- }
-
- /**
* Loads an image from an open file handle.
* It is the responsibility of the caller to position the pointer at the correct place and to close the handle again.
*
@@ -873,7 +861,7 @@ class OC_Image implements \OCP\IImage {
$newHeight = $maxSize;
}
- $this->preciseResize(round($newWidth), round($newHeight));
+ $this->preciseResize((int)round($newWidth), (int)round($newHeight));
return true;
}
@@ -882,7 +870,7 @@ class OC_Image implements \OCP\IImage {
* @param int $height
* @return bool
*/
- public function preciseResize($width, $height) {
+ public function preciseResize(int $width, int $height): bool {
if (!$this->valid()) {
$this->logger->error(__METHOD__ . '(): No image loaded', array('app' => 'core'));
return false;
@@ -982,7 +970,7 @@ class OC_Image implements \OCP\IImage {
* @param int $h Height
* @return bool for success or failure
*/
- public function crop($x, $y, $w, $h) {
+ public function crop(int $x, int $y, int $w, int $h): bool {
if (!$this->valid()) {
$this->logger->error(__METHOD__ . '(): No image loaded', array('app' => 'core'));
return false;
@@ -1033,7 +1021,7 @@ class OC_Image implements \OCP\IImage {
$newWidth = min($maxWidth, $ratio * $maxHeight);
$newHeight = min($maxHeight, $maxWidth / $ratio);
- $this->preciseResize(round($newWidth), round($newHeight));
+ $this->preciseResize((int)round($newWidth), (int)round($newHeight));
return true;
}
diff --git a/lib/private/legacy/json.php b/lib/private/legacy/json.php
index 7b3a1b6d9cd..7bfc815ab24 100644
--- a/lib/private/legacy/json.php
+++ b/lib/private/legacy/json.php
@@ -118,7 +118,7 @@ class OC_JSON{
* @suppress PhanDeprecatedFunction
*/
public static function checkUserExists($user) {
- if (!OCP\User::userExists($user)) {
+ if (!\OC::$server->getUserManager()->userExists($user)) {
$l = \OC::$server->getL10N('lib');
OCP\JSON::error(array('data' => array('message' => $l->t('Unknown user'), 'error' => 'unknown_user' )));
exit;
diff --git a/lib/private/legacy/user.php b/lib/private/legacy/user.php
index 52ed1369c47..8f342281adb 100644
--- a/lib/private/legacy/user.php
+++ b/lib/private/legacy/user.php
@@ -58,13 +58,6 @@
*/
class OC_User {
- /**
- * @return \OC\User\Session
- */
- public static function getUserSession() {
- return OC::$server->getUserSession();
- }
-
private static $_usedBackends = array();
private static $_setupedBackends = array();
@@ -176,7 +169,7 @@ class OC_User {
if ($uid) {
if (self::getUser() !== $uid) {
self::setUserId($uid);
- $userSession = self::getUserSession();
+ $userSession = \OC::$server->getUserSession();
$userSession->setLoginName($uid);
$request = OC::$server->getRequest();
$userSession->createSessionToken($request, $uid, $uid);
@@ -210,7 +203,7 @@ class OC_User {
//setup extra user backends
self::setupBackends();
- self::getUserSession()->unsetMagicInCookie();
+ \OC::$server->getUserSession()->unsetMagicInCookie();
return self::loginWithApache($backend);
}
@@ -235,25 +228,6 @@ class OC_User {
}
/**
- * Sets user display name for session
- *
- * @param string $uid
- * @param string $displayName
- * @return bool Whether the display name could get set
- */
- public static function setDisplayName($uid, $displayName = null) {
- if (is_null($displayName)) {
- $displayName = $uid;
- }
- $user = \OC::$server->getUserManager()->get($uid);
- if ($user) {
- return $user->setDisplayName($displayName);
- } else {
- return false;
- }
- }
-
- /**
* Check if the user is logged in, considers also the HTTP basic credentials
*
* @deprecated use \OC::$server->getUserSession()->isLoggedIn()
@@ -348,7 +322,7 @@ class OC_User {
return $uid;
}
} else {
- $user = self::getUserSession()->getUser();
+ $user = \OC::$server->getUserSession()->getUser();
if ($user) {
return $user->getDisplayName();
} else {
@@ -377,25 +351,6 @@ class OC_User {
}
/**
- * Check if the password is correct
- *
- * @param string $uid The username
- * @param string $password The password
- * @return string|false user id a string on success, false otherwise
- *
- * Check if the password is correct without logging in the user
- * returns the user id or false
- */
- public static function checkPassword($uid, $password) {
- $manager = \OC::$server->getUserManager();
- $username = $manager->checkPassword($uid, $password);
- if ($username !== false) {
- return $username->getUID();
- }
- return false;
- }
-
- /**
* @param string $uid The username
* @return string
*
@@ -451,31 +406,6 @@ class OC_User {
}
/**
- * check if a user exists
- *
- * @param string $uid the username
- * @return boolean
- */
- public static function userExists($uid) {
- return \OC::$server->getUserManager()->userExists($uid);
- }
-
- /**
- * checks if a user is enabled
- *
- * @param string $uid
- * @return bool
- */
- public static function isEnabled($uid) {
- $user = \OC::$server->getUserManager()->get($uid);
- if ($user) {
- return $user->isEnabled();
- } else {
- return false;
- }
- }
-
- /**
* Returns the first active backend from self::$_usedBackends.
*
* @return OCP\Authentication\IApacheBackend|null if no backend active, otherwise OCP\Authentication\IApacheBackend
diff --git a/lib/private/legacy/util.php b/lib/private/legacy/util.php
index aaedd88a7ff..776a879e731 100644
--- a/lib/private/legacy/util.php
+++ b/lib/private/legacy/util.php
@@ -274,7 +274,7 @@ class OC_Util {
self::initLocalStorageRootFS();
}
- if ($user != '' && !OCP\User::userExists($user)) {
+ if ($user != '' && !\OC::$server->getUserManager()->userExists($user)) {
\OC::$server->getEventLogger()->end('setup_fs');
return false;
}
@@ -300,8 +300,7 @@ class OC_Util {
* @suppress PhanDeprecatedFunction
*/
public static function isPublicLinkPasswordRequired() {
- $appConfig = \OC::$server->getAppConfig();
- $enforcePassword = $appConfig->getValue('core', 'shareapi_enforce_links_password', 'no');
+ $enforcePassword = \OC::$server->getConfig()->getAppValue('core', 'shareapi_enforce_links_password', 'no');
return ($enforcePassword === 'yes') ? true : false;
}
@@ -1116,7 +1115,7 @@ class OC_Util {
if (isset($_REQUEST['redirect_url']) && strpos($_REQUEST['redirect_url'], '@') === false) {
$location = $urlGenerator->getAbsoluteURL(urldecode($_REQUEST['redirect_url']));
} else {
- $defaultPage = \OC::$server->getAppConfig()->getValue('core', 'defaultpage');
+ $defaultPage = \OC::$server->getConfig()->getAppValue('core', 'defaultpage');
if ($defaultPage) {
$location = $urlGenerator->getAbsoluteURL($defaultPage);
} else {
diff --git a/lib/public/DB/ISchemaWrapper.php b/lib/public/DB/ISchemaWrapper.php
new file mode 100644
index 00000000000..b29831dbc2e
--- /dev/null
+++ b/lib/public/DB/ISchemaWrapper.php
@@ -0,0 +1,92 @@
+<?php
+/**
+ * @copyright Copyright (c) 2018 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\DB;
+
+/**
+ * Interface ISchemaWrapper
+ *
+ * @package OCP\DB
+ * @since 13.0.0
+ */
+interface ISchemaWrapper {
+
+ /**
+ * @param string $tableName
+ *
+ * @return \Doctrine\DBAL\Schema\Table
+ * @throws \Doctrine\DBAL\Schema\SchemaException
+ * @since 13.0.0
+ */
+ public function getTable($tableName);
+
+ /**
+ * Does this schema have a table with the given name?
+ *
+ * @param string $tableName Prefix is automatically prepended
+ *
+ * @return boolean
+ * @since 13.0.0
+ */
+ public function hasTable($tableName);
+
+ /**
+ * Creates a new table.
+ *
+ * @param string $tableName Prefix is automatically prepended
+ * @return \Doctrine\DBAL\Schema\Table
+ * @since 13.0.0
+ */
+ public function createTable($tableName);
+
+ /**
+ * Drops a table from the schema.
+ *
+ * @param string $tableName Prefix is automatically prepended
+ * @return \Doctrine\DBAL\Schema\Schema
+ * @since 13.0.0
+ */
+ public function dropTable($tableName);
+
+ /**
+ * Gets all tables of this schema.
+ *
+ * @return \Doctrine\DBAL\Schema\Table[]
+ * @since 13.0.0
+ */
+ public function getTables();
+
+ /**
+ * Gets all table names, prefixed with table prefix
+ *
+ * @return array
+ * @since 13.0.0
+ */
+ public function getTableNames();
+
+ /**
+ * Gets all table names
+ *
+ * @return array
+ * @since 13.0.0
+ */
+ public function getTableNamesWithoutPrefix();
+}
diff --git a/lib/public/Federation/ICloudId.php b/lib/public/Federation/ICloudId.php
index b03acb4f5f2..6cc17984f96 100644
--- a/lib/public/Federation/ICloudId.php
+++ b/lib/public/Federation/ICloudId.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2017, Robin Appelman <robin@icewind.nl>
*
@@ -35,7 +36,7 @@ interface ICloudId {
* @return string
* @since 12.0.0
*/
- public function getId();
+ public function getId(): string;
/**
* Get a clean representation of the cloud id for display
@@ -43,7 +44,7 @@ interface ICloudId {
* @return string
* @since 12.0.0
*/
- public function getDisplayId();
+ public function getDisplayId(): string;
/**
* The username on the remote server
@@ -51,7 +52,7 @@ interface ICloudId {
* @return string
* @since 12.0.0
*/
- public function getUser();
+ public function getUser(): string;
/**
* The base address of the remote server
@@ -59,5 +60,5 @@ interface ICloudId {
* @return string
* @since 12.0.0
*/
- public function getRemote();
+ public function getRemote(): string;
}
diff --git a/lib/public/Federation/ICloudIdManager.php b/lib/public/Federation/ICloudIdManager.php
index b5b3436e6fc..c139cfda6cd 100644
--- a/lib/public/Federation/ICloudIdManager.php
+++ b/lib/public/Federation/ICloudIdManager.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2017, Robin Appelman <robin@icewind.nl>
*
@@ -37,7 +38,7 @@ interface ICloudIdManager {
*
* @since 12.0.0
*/
- public function resolveCloudId($cloudId);
+ public function resolveCloudId(string $cloudId): ICloudId;
/**
* Get the cloud id for a remote user
@@ -48,7 +49,7 @@ interface ICloudIdManager {
*
* @since 12.0.0
*/
- public function getCloudId($user, $remote);
+ public function getCloudId(string $user, string $remote): ICloudId;
/**
* Check if the input is a correctly formatted cloud id
@@ -58,5 +59,5 @@ interface ICloudIdManager {
*
* @since 12.0.0
*/
- public function isValidCloudId($cloudId);
+ public function isValidCloudId(string $cloudId): bool;
}
diff --git a/lib/public/Http/Client/IClient.php b/lib/public/Http/Client/IClient.php
index 49e679a7ade..50addc230eb 100644
--- a/lib/public/Http/Client/IClient.php
+++ b/lib/public/Http/Client/IClient.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -59,7 +60,7 @@ interface IClient {
* @throws \Exception If the request could not get completed
* @since 8.1.0
*/
- public function get($uri, array $options = []);
+ public function get(string $uri, array $options = []): IResponse;
/**
* Sends a HEAD request
@@ -84,7 +85,7 @@ interface IClient {
* @throws \Exception If the request could not get completed
* @since 8.1.0
*/
- public function head($uri, $options = []);
+ public function head(string $uri, array $options = []): IResponse;
/**
* Sends a POST request
@@ -114,7 +115,7 @@ interface IClient {
* @throws \Exception If the request could not get completed
* @since 8.1.0
*/
- public function post($uri, array $options = []);
+ public function post(string $uri, array $options = []): IResponse;
/**
* Sends a PUT request
@@ -144,7 +145,7 @@ interface IClient {
* @throws \Exception If the request could not get completed
* @since 8.1.0
*/
- public function put($uri, array $options = []);
+ public function put(string $uri, array $options = []): IResponse;
/**
* Sends a DELETE request
@@ -174,7 +175,7 @@ interface IClient {
* @throws \Exception If the request could not get completed
* @since 8.1.0
*/
- public function delete($uri, array $options = []);
+ public function delete(string $uri, array $options = []): IResponse;
/**
* Sends a options request
@@ -204,5 +205,5 @@ interface IClient {
* @throws \Exception If the request could not get completed
* @since 8.1.0
*/
- public function options($uri, array $options = []);
+ public function options(string $uri, array $options = []): IResponse;
}
diff --git a/lib/public/Http/Client/IClientService.php b/lib/public/Http/Client/IClientService.php
index 09a1f1f7b40..d34302744e1 100644
--- a/lib/public/Http/Client/IClientService.php
+++ b/lib/public/Http/Client/IClientService.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -34,5 +35,5 @@ interface IClientService {
* @return IClient
* @since 8.1.0
*/
- public function newClient();
+ public function newClient(): IClient;
}
diff --git a/lib/public/Http/Client/IResponse.php b/lib/public/Http/Client/IResponse.php
index 94817f012b3..e935067d8c2 100644
--- a/lib/public/Http/Client/IResponse.php
+++ b/lib/public/Http/Client/IResponse.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -41,18 +42,18 @@ interface IResponse {
* @return int
* @since 8.1.0
*/
- public function getStatusCode();
+ public function getStatusCode(): int;
/**
- * @param $key
+ * @param string $key
* @return string
* @since 8.1.0
*/
- public function getHeader($key);
+ public function getHeader(string $key): string;
/**
* @return array
* @since 8.1.0
*/
- public function getHeaders();
+ public function getHeaders(): array;
}
diff --git a/lib/public/IAppConfig.php b/lib/public/IAppConfig.php
index 4a92a224840..2f268185e62 100644
--- a/lib/public/IAppConfig.php
+++ b/lib/public/IAppConfig.php
@@ -41,42 +41,6 @@ interface IAppConfig {
public function hasKey($app, $key);
/**
- * Gets the config value
- * @param string $app app
- * @param string $key key
- * @param string $default = null, default value if the key does not exist
- * @return string the value or $default
- * @deprecated 8.0.0 use method getAppValue of \OCP\IConfig
- *
- * This function gets a value from the appconfig table. If the key does
- * not exist the default value will be returned
- * @since 7.0.0
- */
- public function getValue($app, $key, $default = null);
-
- /**
- * Deletes a key
- * @param string $app app
- * @param string $key key
- * @return bool
- * @deprecated 8.0.0 use method deleteAppValue of \OCP\IConfig
- * @since 7.0.0
- */
- public function deleteKey($app, $key);
-
- /**
- * Get the available keys for an app
- * @param string $app the app we are looking for
- * @return array an array of key names
- * @deprecated 8.0.0 use method getAppKeys of \OCP\IConfig
- *
- * This function gets all keys of an app. Please note that the values are
- * not returned.
- * @since 7.0.0
- */
- public function getKeys($app);
-
- /**
* get multiply values, either the app or key can be used as wildcard by setting it to false
*
* @param string|false $key
@@ -96,19 +60,6 @@ interface IAppConfig {
public function getFilteredValues($app);
/**
- * sets a value in the appconfig
- * @param string $app app
- * @param string $key key
- * @param string|float|int $value value
- * @deprecated 8.0.0 use method setAppValue of \OCP\IConfig
- *
- * Sets a value. If the key did not exist before it will be created.
- * @return void
- * @since 7.0.0
- */
- public function setValue($app, $key, $value);
-
- /**
* Get all apps using the config
* @return array an array of app ids
*
@@ -117,15 +68,4 @@ interface IAppConfig {
* @since 7.0.0
*/
public function getApps();
-
- /**
- * Remove app from appconfig
- * @param string $app app
- * @return bool
- * @deprecated 8.0.0 use method deleteAppValue of \OCP\IConfig
- *
- * Removes all keys in appconfig belonging to the app.
- * @since 7.0.0
- */
- public function deleteApp($app);
}
diff --git a/lib/public/IAvatarManager.php b/lib/public/IAvatarManager.php
index 04f4cd00d0d..19e4b93503a 100644
--- a/lib/public/IAvatarManager.php
+++ b/lib/public/IAvatarManager.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -35,12 +36,12 @@ interface IAvatarManager {
/**
* return a user specific instance of \OCP\IAvatar
- * @see \OCP\IAvatar
+ * @see IAvatar
* @param string $user the ownCloud user id
- * @return \OCP\IAvatar
+ * @return IAvatar
* @throws \Exception In case the username is potentially dangerous
* @throws \OCP\Files\NotFoundException In case there is no user folder yet
* @since 6.0.0
*/
- public function getAvatar($user);
+ public function getAvatar(string $user) : IAvatar;
}
diff --git a/lib/public/ICacheFactory.php b/lib/public/ICacheFactory.php
index cc4d8fa3ec3..76145fe1f78 100644
--- a/lib/public/ICacheFactory.php
+++ b/lib/public/ICacheFactory.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -36,11 +37,11 @@ interface ICacheFactory{
* All entries added trough the cache instance will be namespaced by $prefix to prevent collisions between apps
*
* @param string $prefix
- * @return \OCP\ICache
+ * @return ICache
* @since 7.0.0
* @deprecated 13.0.0 Use either createLocking, createDistributed or createLocal
*/
- public function create($prefix = '');
+ public function create(string $prefix = ''): ICache;
/**
* Check if any memory cache backend is available
@@ -48,32 +49,32 @@ interface ICacheFactory{
* @return bool
* @since 7.0.0
*/
- public function isAvailable();
+ public function isAvailable(): bool;
/**
* create a cache instance for storing locks
*
* @param string $prefix
- * @return \OCP\IMemcache
+ * @return IMemcache
* @since 13.0.0
*/
- public function createLocking($prefix = '');
+ public function createLocking(string $prefix = ''): IMemcache;
/**
* create a distributed cache instance
*
* @param string $prefix
- * @return \OCP\ICache
+ * @return ICache
* @since 13.0.0
*/
- public function createDistributed($prefix = '');
+ public function createDistributed(string $prefix = ''): ICache;
/**
* create a local cache instance
*
* @param string $prefix
- * @return \OCP\ICache
+ * @return ICache
* @since 13.0.0
*/
- public function createLocal($prefix = '');
+ public function createLocal(string $prefix = ''): ICache;
}
diff --git a/lib/public/IImage.php b/lib/public/IImage.php
index 70e8b3cff75..4311f44f1bc 100644
--- a/lib/public/IImage.php
+++ b/lib/public/IImage.php
@@ -147,7 +147,7 @@ interface IImage {
* @return bool
* @since 8.1.0
*/
- public function preciseResize($width, $height);
+ public function preciseResize(int $width, int $height): bool;
/**
* Crops the image to the middle square. If the image is already square it just returns.
@@ -168,7 +168,7 @@ interface IImage {
* @return bool for success or failure
* @since 8.1.0
*/
- public function crop($x, $y, $w, $h);
+ public function crop(int $x, int $y, int $w, int $h): bool;
/**
* Resizes the image to fit within a boundary while preserving ratio.
diff --git a/lib/public/Lock/ILockingProvider.php b/lib/public/Lock/ILockingProvider.php
index 6fe9894b7b5..32e76c72531 100644
--- a/lib/public/Lock/ILockingProvider.php
+++ b/lib/public/Lock/ILockingProvider.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -45,7 +46,7 @@ interface ILockingProvider {
* @return bool
* @since 8.1.0
*/
- public function isLocked($path, $type);
+ public function isLocked(string $path, int $type): bool;
/**
* @param string $path
@@ -53,14 +54,14 @@ interface ILockingProvider {
* @throws \OCP\Lock\LockedException
* @since 8.1.0
*/
- public function acquireLock($path, $type);
+ public function acquireLock(string $path, int $type);
/**
* @param string $path
* @param int $type self::LOCK_SHARED or self::LOCK_EXCLUSIVE
* @since 8.1.0
*/
- public function releaseLock($path, $type);
+ public function releaseLock(string $path, int $type);
/**
* Change the type of an existing lock
@@ -70,7 +71,7 @@ interface ILockingProvider {
* @throws \OCP\Lock\LockedException
* @since 8.1.0
*/
- public function changeLock($path, $targetType);
+ public function changeLock(string $path, int $targetType);
/**
* release all lock acquired by this instance
diff --git a/lib/public/Lock/LockedException.php b/lib/public/Lock/LockedException.php
index 5b5d88c18ca..1378f437c3a 100644
--- a/lib/public/Lock/LockedException.php
+++ b/lib/public/Lock/LockedException.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -48,7 +49,7 @@ class LockedException extends \Exception {
*
* @since 8.1.0
*/
- public function __construct($path, \Exception $previous = null) {
+ public function __construct(string $path, \Exception $previous = null) {
parent::__construct('"' . $path . '" is locked', 0, $previous);
$this->path = $path;
}
@@ -57,7 +58,7 @@ class LockedException extends \Exception {
* @return string
* @since 8.1.0
*/
- public function getPath() {
+ public function getPath(): string {
return $this->path;
}
}
diff --git a/lib/public/Migration/BigIntMigration.php b/lib/public/Migration/BigIntMigration.php
index 9e6003714e5..41c48f2181a 100644
--- a/lib/public/Migration/BigIntMigration.php
+++ b/lib/public/Migration/BigIntMigration.php
@@ -23,8 +23,8 @@
namespace OCP\Migration;
-use Doctrine\DBAL\Schema\Schema;
use Doctrine\DBAL\Types\Type;
+use OCP\DB\ISchemaWrapper;
/**
* @since 13.0.0
@@ -40,13 +40,13 @@ abstract class BigIntMigration extends SimpleMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
- * @return null|Schema
+ * @return null|ISchemaWrapper
* @since 13.0.0
*/
public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) {
- /** @var Schema $schema */
+ /** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
$tables = $this->getColumnsByTable();
diff --git a/lib/public/Migration/IMigrationStep.php b/lib/public/Migration/IMigrationStep.php
index 11b92ecf0cf..e12d962683e 100644
--- a/lib/public/Migration/IMigrationStep.php
+++ b/lib/public/Migration/IMigrationStep.php
@@ -23,7 +23,7 @@
namespace OCP\Migration;
-use Doctrine\DBAL\Schema\Schema;
+use OCP\DB\ISchemaWrapper;
/**
* @since 13.0.0
@@ -32,7 +32,7 @@ interface IMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
* @since 13.0.0
*/
@@ -40,16 +40,16 @@ interface IMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
- * @return null|Schema
+ * @return null|ISchemaWrapper
* @since 13.0.0
*/
public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options);
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
* @since 13.0.0
*/
diff --git a/lib/public/Migration/SimpleMigrationStep.php b/lib/public/Migration/SimpleMigrationStep.php
index 58c68064484..da46c687644 100644
--- a/lib/public/Migration/SimpleMigrationStep.php
+++ b/lib/public/Migration/SimpleMigrationStep.php
@@ -23,7 +23,7 @@
namespace OCP\Migration;
-use Doctrine\DBAL\Schema\Schema;
+use OCP\DB\ISchemaWrapper;
/**
* @since 13.0.0
@@ -32,7 +32,7 @@ abstract class SimpleMigrationStep implements IMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
* @since 13.0.0
*/
@@ -41,9 +41,9 @@ abstract class SimpleMigrationStep implements IMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
- * @return null|Schema
+ * @return null|ISchemaWrapper
* @since 13.0.0
*/
public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) {
@@ -52,7 +52,7 @@ abstract class SimpleMigrationStep implements IMigrationStep {
/**
* @param IOutput $output
- * @param \Closure $schemaClosure The `\Closure` returns a `Schema`
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
* @since 13.0.0
*/
diff --git a/lib/public/OCS/IDiscoveryService.php b/lib/public/OCS/IDiscoveryService.php
index c9e67c3acab..9a86e2a4410 100644
--- a/lib/public/OCS/IDiscoveryService.php
+++ b/lib/public/OCS/IDiscoveryService.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2017 Bjoern Schiessle <bjoern@schiessle.org>
*
@@ -45,6 +46,6 @@ interface IDiscoveryService {
* @param string $service the service you want to discover
* @return array
*/
- public function discover($remote, $service);
+ public function discover(string $remote, string $service): array;
}
diff --git a/lib/public/Security/ICrypto.php b/lib/public/Security/ICrypto.php
index aa2b9eed2c0..ef5bd2bf7c9 100644
--- a/lib/public/Security/ICrypto.php
+++ b/lib/public/Security/ICrypto.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -42,7 +43,7 @@ interface ICrypto {
* @return string Calculated HMAC
* @since 8.0.0
*/
- public function calculateHMAC($message, $password = '');
+ public function calculateHMAC(string $message, string $password = ''): string;
/**
* Encrypts a value and adds an HMAC (Encrypt-Then-MAC)
@@ -51,7 +52,7 @@ interface ICrypto {
* @return string Authenticated ciphertext
* @since 8.0.0
*/
- public function encrypt($plaintext, $password = '');
+ public function encrypt(string $plaintext, string $password = ''): string;
/**
* Decrypts a value and verifies the HMAC (Encrypt-Then-Mac)
diff --git a/lib/public/Security/IHasher.php b/lib/public/Security/IHasher.php
index 11159cbc010..5942814802a 100644
--- a/lib/public/Security/IHasher.php
+++ b/lib/public/Security/IHasher.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -53,7 +54,7 @@ interface IHasher {
* @return string Hash of the message with appended version parameter
* @since 8.0.0
*/
- public function hash($message);
+ public function hash(string $message): string;
/**
* @param string $message Message to verify
@@ -62,5 +63,5 @@ interface IHasher {
* @return bool Whether $hash is a valid hash of $message
* @since 8.0.0
*/
- public function verify($message, $hash, &$newHash = null);
+ public function verify(string $message, string $hash, &$newHash = null): bool ;
}
diff --git a/lib/public/Security/StringUtils.php b/lib/public/Security/StringUtils.php
index 04b5028cbd2..4ee1f47e836 100644
--- a/lib/public/Security/StringUtils.php
+++ b/lib/public/Security/StringUtils.php
@@ -1,4 +1,5 @@
<?php
+declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@@ -42,7 +43,7 @@ class StringUtils {
* @since 8.0.0
* @deprecated 9.0.0 Use hash_equals
*/
- public static function equals($expected, $input) {
+ public static function equals(string $expected, string $input): bool {
return hash_equals($expected, $input);
}
}
diff --git a/lib/public/User.php b/lib/public/User.php
index 40be50dd19c..2fdf540b958 100644
--- a/lib/public/User.php
+++ b/lib/public/User.php
@@ -44,6 +44,7 @@ namespace OCP;
* This class provides access to the user management. You can get information
* about the currently logged in user and the permissions for example
* @since 5.0.0
+ * @deprecated 13.0.0
*/
class User {
/**
@@ -99,6 +100,7 @@ class User {
* Check if the user is logged in
* @return boolean
* @since 5.0.0
+ * @deprecated 13.0.0 Use annotation based ACLs from the AppFramework instead
*/
public static function isLoggedIn() {
return \OC::$server->getUserSession()->isLoggedIn();
@@ -113,35 +115,13 @@ class User {
* @since 5.0.0
*/
public static function userExists($uid, $excludingBackend = null) {
- return \OC_User::userExists($uid);
- }
- /**
- * Logs the user out including all the session data
- * Logout, destroys session
- * @deprecated 8.0.0 Use \OC::$server->getUserSession()->logout();
- * @since 5.0.0
- */
- public static function logout() {
- \OC::$server->getUserSession()->logout();
- }
-
- /**
- * Check if the password is correct
- * @param string $uid The username
- * @param string $password The password
- * @return string|false username on success, false otherwise
- *
- * Check if the password is correct without logging in the user
- * @deprecated 8.0.0 Use \OC::$server->getUserManager()->checkPassword();
- * @since 5.0.0
- */
- public static function checkPassword( $uid, $password ) {
- return \OC_User::checkPassword( $uid, $password );
+ return \OC::$server->getUserManager()->userExists($uid);
}
/**
* Check if the user is a admin, redirects to home if not
* @since 5.0.0
+ * @deprecated 13.0.0 Use annotation based ACLs from the AppFramework instead
*/
public static function checkAdminUser() {
\OC_Util::checkAdminUser();
@@ -151,6 +131,7 @@ class User {
* Check if the user is logged in, redirects to home if not. With
* redirect URL parameter to the request URI.
* @since 5.0.0
+ * @deprecated 13.0.0 Use annotation based ACLs from the AppFramework instead
*/
public static function checkLoggedIn() {
\OC_Util::checkLoggedIn();
diff --git a/settings/ajax/setquota.php b/settings/ajax/setquota.php
index 481f0853f96..c3fde409c00 100644
--- a/settings/ajax/setquota.php
+++ b/settings/ajax/setquota.php
@@ -71,7 +71,7 @@ if($username) {
if($quota === 'default') {//'default' as default quota makes no sense
$quota='none';
}
- \OC::$server->getAppConfig()->setValue('files', 'default_quota', $quota);
+ \OC::$server->getConfig()->setAppValue('files', 'default_quota', $quota);
}
OC_JSON::success(array("data" => array( "username" => $username , 'quota' => $quota)));
diff --git a/settings/l10n/cs.js b/settings/l10n/cs.js
index 2c40ca98fb9..0ba03596075 100644
--- a/settings/l10n/cs.js
+++ b/settings/l10n/cs.js
@@ -104,9 +104,15 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Chyba: tuto aplikaci nelze zapnout, protože způsobuje nestabilitu serveru",
"Error: Could not disable broken app" : "Chyba: nezdařilo se vypnout rozbitou aplikaci",
"Error while disabling broken app" : "Chyba při vypínání rozbité aplikace",
+ "App up to date" : "Aplikace je aktuální",
+ "Upgrading …" : "Aktualizuji ...",
+ "Could not upgrade app" : "Aplikaci nelze aktualizovat",
"Updated" : "Aktualizováno",
"Removing …" : "Odstraňování …",
+ "Could not remove app" : "Nepodařilo se odebrat aplikaci",
"Remove" : "Odstranit",
+ "The app has been enabled but needs to be upgraded. You will be redirected to the upgrade page in 5 seconds." : "Aplikace byla povolena ale je třeba ji aktualizovat. Za 5 sekund budete přesměrování na stránku pro aktualizaci.",
+ "App upgrade" : "Aktualizace aplikace",
"Approved" : "Potvrzeno",
"Experimental" : "Experimentální",
"No apps found for {query}" : "Nebyly nalezeny žádné aplikace pro {query}",
diff --git a/settings/l10n/cs.json b/settings/l10n/cs.json
index 23e52575d45..7f22602f58c 100644
--- a/settings/l10n/cs.json
+++ b/settings/l10n/cs.json
@@ -102,9 +102,15 @@
"Error: This app can not be enabled because it makes the server unstable" : "Chyba: tuto aplikaci nelze zapnout, protože způsobuje nestabilitu serveru",
"Error: Could not disable broken app" : "Chyba: nezdařilo se vypnout rozbitou aplikaci",
"Error while disabling broken app" : "Chyba při vypínání rozbité aplikace",
+ "App up to date" : "Aplikace je aktuální",
+ "Upgrading …" : "Aktualizuji ...",
+ "Could not upgrade app" : "Aplikaci nelze aktualizovat",
"Updated" : "Aktualizováno",
"Removing …" : "Odstraňování …",
+ "Could not remove app" : "Nepodařilo se odebrat aplikaci",
"Remove" : "Odstranit",
+ "The app has been enabled but needs to be upgraded. You will be redirected to the upgrade page in 5 seconds." : "Aplikace byla povolena ale je třeba ji aktualizovat. Za 5 sekund budete přesměrování na stránku pro aktualizaci.",
+ "App upgrade" : "Aktualizace aplikace",
"Approved" : "Potvrzeno",
"Experimental" : "Experimentální",
"No apps found for {query}" : "Nebyly nalezeny žádné aplikace pro {query}",
diff --git a/settings/l10n/zh_CN.js b/settings/l10n/zh_CN.js
index 5c0f2bd392d..ad35e90389e 100644
--- a/settings/l10n/zh_CN.js
+++ b/settings/l10n/zh_CN.js
@@ -103,9 +103,15 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "错误: 无法启用应用因为它会导致服务器不稳定",
"Error: Could not disable broken app" : "错误: 无法禁用损坏的应用",
"Error while disabling broken app" : "禁用损坏的应用时出错",
+ "App up to date" : "已是最新应用",
+ "Upgrading …" : "正在更新。。。",
+ "Could not upgrade app" : "无法更新应用",
"Updated" : "已更新",
"Removing …" : "正在移除...",
+ "Could not remove app" : "无法移除应用",
"Remove" : "移除",
+ "The app has been enabled but needs to be upgraded. You will be redirected to the upgrade page in 5 seconds." : "已启用该应用,但需要升级。 您将在5秒内跳转到升级页面。",
+ "App upgrade" : "应用更新",
"Approved" : "已认证",
"Experimental" : "实验",
"No apps found for {query}" : "找不到符合 {query} 的应用",
@@ -256,6 +262,7 @@ OC.L10N.register(
"It is strongly proposed to install the required packages on your system to support one of the following locales: %s." : "我们强烈建议在您的系统中安装需要的包以支持下列区域: %s.",
"If your installation is not installed at the root of the domain and uses system Cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "如果您不是安装在域名的根目录, 并且使用系统 cron 服务时, 可能导致 URL 生成问题. 为了避免这些问题, 请在您的 config.php 文件中设置 \"overwrite.cli.url\" 选项为您的安装根目录路径 (建议: \"%s\")",
"It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "由于下列的技术错误, 无法通过 CLI 执行计划任务:",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "请仔细检查<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">安装指南</a>,并检查<a href=\"%s\">日志</a>中是否有错误或警告。",
"All checks passed." : "所有检查已通过.",
"Background jobs" : "后台任务",
"Last job ran %s." : "上次定时任务执行于: %s.",
diff --git a/settings/l10n/zh_CN.json b/settings/l10n/zh_CN.json
index 81ea2021786..173f4e0a17c 100644
--- a/settings/l10n/zh_CN.json
+++ b/settings/l10n/zh_CN.json
@@ -101,9 +101,15 @@
"Error: This app can not be enabled because it makes the server unstable" : "错误: 无法启用应用因为它会导致服务器不稳定",
"Error: Could not disable broken app" : "错误: 无法禁用损坏的应用",
"Error while disabling broken app" : "禁用损坏的应用时出错",
+ "App up to date" : "已是最新应用",
+ "Upgrading …" : "正在更新。。。",
+ "Could not upgrade app" : "无法更新应用",
"Updated" : "已更新",
"Removing …" : "正在移除...",
+ "Could not remove app" : "无法移除应用",
"Remove" : "移除",
+ "The app has been enabled but needs to be upgraded. You will be redirected to the upgrade page in 5 seconds." : "已启用该应用,但需要升级。 您将在5秒内跳转到升级页面。",
+ "App upgrade" : "应用更新",
"Approved" : "已认证",
"Experimental" : "实验",
"No apps found for {query}" : "找不到符合 {query} 的应用",
@@ -254,6 +260,7 @@
"It is strongly proposed to install the required packages on your system to support one of the following locales: %s." : "我们强烈建议在您的系统中安装需要的包以支持下列区域: %s.",
"If your installation is not installed at the root of the domain and uses system Cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "如果您不是安装在域名的根目录, 并且使用系统 cron 服务时, 可能导致 URL 生成问题. 为了避免这些问题, 请在您的 config.php 文件中设置 \"overwrite.cli.url\" 选项为您的安装根目录路径 (建议: \"%s\")",
"It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "由于下列的技术错误, 无法通过 CLI 执行计划任务:",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "请仔细检查<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">安装指南</a>,并检查<a href=\"%s\">日志</a>中是否有错误或警告。",
"All checks passed." : "所有检查已通过.",
"Background jobs" : "后台任务",
"Last job ran %s." : "上次定时任务执行于: %s.",
diff --git a/settings/users.php b/settings/users.php
index 20b9e21d58e..03523fc5305 100644
--- a/settings/users.php
+++ b/settings/users.php
@@ -62,12 +62,17 @@ if ($config->getSystemValue('sort_groups_by_name', false)) {
}
}
-$isAdmin = OC_User::isAdminUser(OC_User::getUser());
+$uid = \OC_User::getUser();
+$isAdmin = OC_User::isAdminUser($uid);
-$isDisabled = !OC_User::isEnabled(OC_User::getUser());
+$isDisabled = true;
+$user = $userManager->get($uid);
+if ($user) {
+ $isDisabled = !$user->isEnabled();
+}
$groupsInfo = new \OC\Group\MetaData(
- OC_User::getUser(),
+ $uid,
$isAdmin,
$groupManager,
\OC::$server->getUserSession()
diff --git a/tests/Core/Controller/ClientFlowLoginControllerTest.php b/tests/Core/Controller/ClientFlowLoginControllerTest.php
index 0e048538223..7fe87df026f 100644
--- a/tests/Core/Controller/ClientFlowLoginControllerTest.php
+++ b/tests/Core/Controller/ClientFlowLoginControllerTest.php
@@ -431,6 +431,10 @@ class ClientFlowLoginControllerTest extends TestCase {
->expects($this->once())
->method('getServerHost')
->willReturn('example.com');
+ $this->request
+ ->expects($this->any())
+ ->method('getHeader')
+ ->willReturn('');
$expected = new Http\RedirectResponse('nc://login/server:http://example.com&user:MyLoginName&password:MyGeneratedToken');
$this->assertEquals($expected, $this->clientFlowLoginController->generateAppPassword('MyStateToken'));
@@ -583,6 +587,10 @@ class ClientFlowLoginControllerTest extends TestCase {
->expects($this->once())
->method('getServerHost')
->willReturn('example.com');
+ $this->request
+ ->expects($this->any())
+ ->method('getHeader')
+ ->willReturn('');
$expected = new Http\RedirectResponse('nc://login/server:http://example.com&user:MyLoginName&password:MyGeneratedToken');
$this->assertEquals($expected, $this->clientFlowLoginController->generateAppPassword('MyStateToken'));
@@ -594,6 +602,7 @@ class ClientFlowLoginControllerTest extends TestCase {
[
['X-Forwarded-Proto', 'http'],
['X-Forwarded-Ssl', 'off'],
+ ['USER_AGENT', ''],
],
'http',
'http',
@@ -602,6 +611,7 @@ class ClientFlowLoginControllerTest extends TestCase {
[
['X-Forwarded-Proto', 'http'],
['X-Forwarded-Ssl', 'off'],
+ ['USER_AGENT', ''],
],
'https',
'https',
@@ -610,6 +620,7 @@ class ClientFlowLoginControllerTest extends TestCase {
[
['X-Forwarded-Proto', 'https'],
['X-Forwarded-Ssl', 'off'],
+ ['USER_AGENT', ''],
],
'http',
'https',
@@ -618,6 +629,7 @@ class ClientFlowLoginControllerTest extends TestCase {
[
['X-Forwarded-Proto', 'https'],
['X-Forwarded-Ssl', 'on'],
+ ['USER_AGENT', ''],
],
'http',
'https',
@@ -626,6 +638,7 @@ class ClientFlowLoginControllerTest extends TestCase {
[
['X-Forwarded-Proto', 'http'],
['X-Forwarded-Ssl', 'on'],
+ ['USER_AGENT', ''],
],
'http',
'https',
diff --git a/tests/Core/Controller/LoginControllerTest.php b/tests/Core/Controller/LoginControllerTest.php
index ddf7a865d66..c0de180abba 100644
--- a/tests/Core/Controller/LoginControllerTest.php
+++ b/tests/Core/Controller/LoginControllerTest.php
@@ -23,6 +23,7 @@ namespace Tests\Core\Controller;
use OC\Authentication\TwoFactorAuth\Manager;
use OC\Core\Controller\LoginController;
+use OC\Security\Bruteforce\Throttler;
use OC\User\Session;
use OCP\AppFramework\Http\RedirectResponse;
use OCP\AppFramework\Http\TemplateResponse;
@@ -57,6 +58,8 @@ class LoginControllerTest extends TestCase {
private $twoFactorManager;
/** @var Defaults|\PHPUnit_Framework_MockObject_MockObject */
private $defaults;
+ /** @var Throttler|\PHPUnit_Framework_MockObject_MockObject */
+ private $throttler;
public function setUp() {
parent::setUp();
@@ -69,6 +72,15 @@ class LoginControllerTest extends TestCase {
$this->logger = $this->createMock(ILogger::class);
$this->twoFactorManager = $this->createMock(Manager::class);
$this->defaults = $this->createMock(Defaults::class);
+ $this->throttler = $this->createMock(Throttler::class);
+
+ $this->request->method('getRemoteAddress')
+ ->willReturn('1.2.3.4');
+ $this->throttler->method('getDelay')
+ ->with(
+ $this->equalTo('1.2.3.4'),
+ $this->equalTo('')
+ )->willReturn(1000);
$this->loginController = new LoginController(
'core',
@@ -80,7 +92,8 @@ class LoginControllerTest extends TestCase {
$this->urlGenerator,
$this->logger,
$this->twoFactorManager,
- $this->defaults
+ $this->defaults,
+ $this->throttler
);
}
@@ -183,6 +196,7 @@ class LoginControllerTest extends TestCase {
'rememberLoginState' => 0,
'resetPasswordLink' => null,
'hideRemeberLoginState' => false,
+ 'throttle_delay' => 1000,
],
'guest'
);
@@ -213,6 +227,7 @@ class LoginControllerTest extends TestCase {
'rememberLoginState' => 0,
'resetPasswordLink' => null,
'hideRemeberLoginState' => true,
+ 'throttle_delay' => 1000,
],
'guest'
);
@@ -272,6 +287,7 @@ class LoginControllerTest extends TestCase {
'rememberLoginState' => 0,
'resetPasswordLink' => false,
'hideRemeberLoginState' => false,
+ 'throttle_delay' => 1000,
],
'guest'
);
@@ -311,6 +327,7 @@ class LoginControllerTest extends TestCase {
'rememberLoginState' => 0,
'resetPasswordLink' => false,
'hideRemeberLoginState' => false,
+ 'throttle_delay' => 1000,
],
'guest'
);
diff --git a/tests/lib/App/AppManagerTest.php b/tests/lib/App/AppManagerTest.php
index c361db7b76b..35650054105 100644
--- a/tests/lib/App/AppManagerTest.php
+++ b/tests/lib/App/AppManagerTest.php
@@ -10,6 +10,7 @@
namespace Test\App;
use OC\App\AppManager;
+use OC\AppConfig;
use OC\Group\Group;
use OC\User\User;
use OCP\App\AppPathNotFoundException;
@@ -31,11 +32,11 @@ use Test\TestCase;
*/
class AppManagerTest extends TestCase {
/**
- * @return IAppConfig|\PHPUnit_Framework_MockObject_MockObject
+ * @return AppConfig|\PHPUnit_Framework_MockObject_MockObject
*/
protected function getAppConfig() {
$appConfig = array();
- $config = $this->createMock(IAppConfig::class);
+ $config = $this->createMock(AppConfig::class);
$config->expects($this->any())
->method('getValue')
@@ -75,7 +76,7 @@ class AppManagerTest extends TestCase {
/** @var IGroupManager|\PHPUnit_Framework_MockObject_MockObject */
protected $groupManager;
- /** @var IAppConfig|\PHPUnit_Framework_MockObject_MockObject */
+ /** @var AppConfig|\PHPUnit_Framework_MockObject_MockObject */
protected $appConfig;
/** @var ICache|\PHPUnit_Framework_MockObject_MockObject */
diff --git a/tests/lib/AppFramework/Http/JSONResponseTest.php b/tests/lib/AppFramework/Http/JSONResponseTest.php
index 23a55e7eee8..3c3a273a97e 100644
--- a/tests/lib/AppFramework/Http/JSONResponseTest.php
+++ b/tests/lib/AppFramework/Http/JSONResponseTest.php
@@ -93,7 +93,6 @@ class JSONResponseTest extends \Test\TestCase {
/**
* @expectedException \Exception
* @expectedExceptionMessage Could not json_encode due to invalid non UTF-8 characters in the array: array (
- * @requires PHP 5.5
*/
public function testRenderWithNonUtf8Encoding() {
$params = ['test' => hex2bin('e9')];
diff --git a/tests/lib/AppTest.php b/tests/lib/AppTest.php
index 620e9344c43..d10ad387599 100644
--- a/tests/lib/AppTest.php
+++ b/tests/lib/AppTest.php
@@ -542,7 +542,7 @@ class AppTest extends \Test\TestCase {
*
* @param IAppConfig $appConfig app config mock
*/
- private function registerAppConfig(IAppConfig $appConfig) {
+ private function registerAppConfig(AppConfig $appConfig) {
$this->overwriteService('AppConfig', $appConfig);
$this->overwriteService('AppManager', new \OC\App\AppManager(
\OC::$server->getUserSession(),
diff --git a/tests/lib/AvatarManagerTest.php b/tests/lib/AvatarManagerTest.php
index 83a5cfd9b30..9f2a4f4f337 100644
--- a/tests/lib/AvatarManagerTest.php
+++ b/tests/lib/AvatarManagerTest.php
@@ -27,6 +27,7 @@ namespace Test;
use OC\Avatar;
use OC\AvatarManager;
use OC\Files\AppData\AppData;
+use OC\User\Manager;
use OCP\Files\IAppData;
use OCP\Files\SimpleFS\ISimpleFolder;
use OCP\IConfig;
@@ -39,7 +40,7 @@ use OCP\IUserManager;
* Class AvatarManagerTest
*/
class AvatarManagerTest extends \Test\TestCase {
- /** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
+ /** @var Manager|\PHPUnit_Framework_MockObject_MockObject */
private $userManager;
/** @var IAppData|\PHPUnit_Framework_MockObject_MockObject */
private $appData;
@@ -55,7 +56,7 @@ class AvatarManagerTest extends \Test\TestCase {
public function setUp() {
parent::setUp();
- $this->userManager = $this->createMock(IUserManager::class);
+ $this->userManager = $this->createMock(Manager::class);
$this->appData = $this->createMock(IAppData::class);
$this->l10n = $this->createMock(IL10N::class);
$this->logger = $this->createMock(ILogger::class);
diff --git a/tests/lib/AvatarTest.php b/tests/lib/AvatarTest.php
index 9da719c26de..4914c02bd14 100644
--- a/tests/lib/AvatarTest.php
+++ b/tests/lib/AvatarTest.php
@@ -89,7 +89,8 @@ class AvatarTest extends \Test\TestCase {
['avatar.128.jpg', true],
]));
- $expected = new \OC_Image(\OC::$SERVERROOT . '/tests/data/testavatar.png');
+ $expected = new \OC_Image();
+ $expected->loadFromFile(\OC::$SERVERROOT . '/tests/data/testavatar.png');
$file = $this->createMock(File::class);
$file->method('getContent')->willReturn($expected->data());
@@ -104,7 +105,8 @@ class AvatarTest extends \Test\TestCase {
['avatar.jpg', true],
]));
- $expected = new \OC_Image(\OC::$SERVERROOT . '/tests/data/testavatar.png');
+ $expected = new \OC_Image();
+ $expected->loadFromFile(\OC::$SERVERROOT . '/tests/data/testavatar.png');
$file = $this->createMock(File::class);
$file->method('getContent')->willReturn($expected->data());
@@ -120,8 +122,10 @@ class AvatarTest extends \Test\TestCase {
['avatar.32.png', false],
]));
- $expected = new \OC_Image(\OC::$SERVERROOT . '/tests/data/testavatar.png');
- $expected2 = new \OC_Image(\OC::$SERVERROOT . '/tests/data/testavatar.png');
+ $expected = new \OC_Image();
+ $expected->loadFromFile(\OC::$SERVERROOT . '/tests/data/testavatar.png');
+ $expected2 = new \OC_Image();
+ $expected2->loadFromFile(\OC::$SERVERROOT . '/tests/data/testavatar.png');
$expected2->resize(32);
$file = $this->createMock(File::class);
@@ -205,7 +209,8 @@ class AvatarTest extends \Test\TestCase {
->with('avatar.png')
->willReturn($newFile);
- $image = new \OC_Image(\OC::$SERVERROOT . '/tests/data/testavatar.png');
+ $image = new \OC_Image();
+ $image->loadFromFile(\OC::$SERVERROOT . '/tests/data/testavatar.png');
$newFile->expects($this->once())
->method('putContent')
->with($image->data());
diff --git a/tests/lib/Collaboration/Collaborators/UserPluginTest.php b/tests/lib/Collaboration/Collaborators/UserPluginTest.php
index 7d6d9c645a0..cfb97de8676 100644
--- a/tests/lib/Collaboration/Collaborators/UserPluginTest.php
+++ b/tests/lib/Collaboration/Collaborators/UserPluginTest.php
@@ -442,4 +442,51 @@ class UserPluginTest extends TestCase {
$this->assertEquals($expected, $result['users']);
$this->assertSame($reachedEnd, $moreResults);
}
+
+ public function takeOutCurrentUserProvider() {
+ $inputUsers = [
+ 'alice' => 'Alice',
+ 'bob' => 'Bob',
+ 'carol' => 'Carol'
+ ];
+ return [
+ [
+ $inputUsers,
+ ['alice', 'carol'],
+ 'bob'
+ ],
+ [
+ $inputUsers,
+ ['alice', 'bob', 'carol'],
+ 'dave'
+ ],
+ [
+ $inputUsers,
+ ['alice', 'bob', 'carol'],
+ null
+ ]
+ ];
+ }
+
+ /**
+ * @dataProvider takeOutCurrentUserProvider
+ * @param array $users
+ * @param array $expectedUIDs
+ * @param $currentUserId
+ */
+ public function testTakeOutCurrentUser(array $users, array $expectedUIDs, $currentUserId) {
+ $this->instantiatePlugin();
+
+ $this->session->expects($this->once())
+ ->method('getUser')
+ ->willReturnCallback(function() use ($currentUserId) {
+ if($currentUserId !== null) {
+ return $this->getUserMock($currentUserId, $currentUserId);
+ }
+ return null;
+ });
+
+ $this->plugin->takeOutCurrentUser($users);
+ $this->assertSame($expectedUIDs, array_keys($users));
+ }
}
diff --git a/tests/lib/Comments/CommentTest.php b/tests/lib/Comments/CommentTest.php
index 10ec4bae7d5..6f67356ccae 100644
--- a/tests/lib/Comments/CommentTest.php
+++ b/tests/lib/Comments/CommentTest.php
@@ -8,6 +8,9 @@ use Test\TestCase;
class CommentTest extends TestCase {
+ /**
+ * @throws \OCP\Comments\IllegalIDChangeException
+ */
public function testSettersValidInput() {
$comment = new Comment();
@@ -58,6 +61,9 @@ class CommentTest extends TestCase {
$comment->setId('c17');
}
+ /**
+ * @throws \OCP\Comments\IllegalIDChangeException
+ */
public function testResetId() {
$comment = new Comment();
$comment->setId('c23');
@@ -133,7 +139,7 @@ class CommentTest extends TestCase {
'@alice @bob look look, a duplication @alice test @bob!', ['alice', 'bob']
],
[
- '@alice is the author, but notify @bob!', ['bob'], 'alice'
+ '@alice is the author, notify @bob, nevertheless mention her!', ['alice', 'bob'], 'alice'
],
[
'@foobar and @barfoo you should know, @foo@bar.com is valid' .
@@ -159,7 +165,6 @@ class CommentTest extends TestCase {
$uid = array_shift($expectedUids);
$this->assertSame('user', $mention['type']);
$this->assertSame($uid, $mention['id']);
- $this->assertNotSame($author, $mention['id']);
}
$this->assertEmpty($mentions);
$this->assertEmpty($expectedUids);
diff --git a/tests/lib/DB/MigrationsTest.php b/tests/lib/DB/MigrationsTest.php
index 9c06fe4cec5..191164c7eed 100644
--- a/tests/lib/DB/MigrationsTest.php
+++ b/tests/lib/DB/MigrationsTest.php
@@ -16,8 +16,6 @@ use OC\DB\MigrationService;
use OC\DB\SchemaWrapper;
use OCP\IDBConnection;
use OCP\Migration\IMigrationStep;
-use OCP\Migration\ISchemaMigration;
-use OCP\Migration\ISqlMigration;
/**
* Class MigrationsTest
diff --git a/tests/lib/Files/Cache/QuerySearchHelperTest.php b/tests/lib/Files/Cache/QuerySearchHelperTest.php
index 850cee066a1..addeac71350 100644
--- a/tests/lib/Files/Cache/QuerySearchHelperTest.php
+++ b/tests/lib/Files/Cache/QuerySearchHelperTest.php
@@ -151,8 +151,13 @@ class QuerySearchHelperTest extends TestCase {
[new SearchComparison(ISearchComparison::COMPARE_LIKE, 'mimetype', 'image/%'), [0, 1]],
[new SearchBinaryOperator(ISearchBinaryOperator::OPERATOR_AND, [
new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'size', 50),
- new SearchComparison(ISearchComparison::COMPARE_LESS_THAN, 'mtime', 125), [0]
+ new SearchComparison(ISearchComparison::COMPARE_LESS_THAN, 'mtime', 125)
]), [0]],
+ [new SearchBinaryOperator(ISearchBinaryOperator::OPERATOR_AND, [
+ new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'size', 50),
+ new SearchComparison(ISearchComparison::COMPARE_LESS_THAN, 'mtime', 125),
+ new SearchComparison(ISearchComparison::COMPARE_LIKE, 'mimetype', 'text/%')
+ ]), []],
[new SearchBinaryOperator(ISearchBinaryOperator::OPERATOR_OR, [
new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'mtime', 100),
new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'mtime', 150),
diff --git a/tests/lib/Files/ViewTest.php b/tests/lib/Files/ViewTest.php
index 33d5cc0a8a6..627eb71d6bf 100644
--- a/tests/lib/Files/ViewTest.php
+++ b/tests/lib/Files/ViewTest.php
@@ -284,11 +284,11 @@ class ViewTest extends \Test\TestCase {
// Reset sharing disabled for users cache
self::invokePrivate(\OC::$server->getShareManager(), 'sharingDisabledForUsersCache', [new CappedMemoryCache()]);
- $appConfig = \OC::$server->getAppConfig();
- $oldExcludeGroupsFlag = $appConfig->getValue('core', 'shareapi_exclude_groups', 'no');
- $oldExcludeGroupsList = $appConfig->getValue('core', 'shareapi_exclude_groups_list', '');
- $appConfig->setValue('core', 'shareapi_exclude_groups', $excludeGroups);
- $appConfig->setValue('core', 'shareapi_exclude_groups_list', $excludeGroupsList);
+ $config = \OC::$server->getConfig();
+ $oldExcludeGroupsFlag = $config->getAppValue('core', 'shareapi_exclude_groups', 'no');
+ $oldExcludeGroupsList = $config->getAppValue('core', 'shareapi_exclude_groups_list', '');
+ $config->setAppValue('core', 'shareapi_exclude_groups', $excludeGroups);
+ $config->setAppValue('core', 'shareapi_exclude_groups_list', $excludeGroupsList);
$storage1 = $this->getTestStorage();
$storage2 = $this->getTestStorage();
@@ -303,8 +303,8 @@ class ViewTest extends \Test\TestCase {
$folderContent = $view->getDirectoryContent('mount');
$this->assertEquals($expectedShareable, $folderContent[0]->isShareable());
- $appConfig->setValue('core', 'shareapi_exclude_groups', $oldExcludeGroupsFlag);
- $appConfig->setValue('core', 'shareapi_exclude_groups_list', $oldExcludeGroupsList);
+ $config->setAppValue('core', 'shareapi_exclude_groups', $oldExcludeGroupsFlag);
+ $config->setAppValue('core', 'shareapi_exclude_groups_list', $oldExcludeGroupsList);
// Reset sharing disabled for users cache
self::invokePrivate(\OC::$server->getShareManager(), 'sharingDisabledForUsersCache', [new CappedMemoryCache()]);
diff --git a/tests/lib/ImageTest.php b/tests/lib/ImageTest.php
index b4cb57f3787..8f37d9814f0 100644
--- a/tests/lib/ImageTest.php
+++ b/tests/lib/ImageTest.php
@@ -20,97 +20,114 @@ class ImageTest extends \Test\TestCase {
}
public function testConstructDestruct() {
- $img = new \OC_Image(OC::$SERVERROOT.'/tests/data/testimage.png');
+ $img = new \OC_Image();
+ $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png');
$this->assertInstanceOf('\OC_Image', $img);
$this->assertInstanceOf('\OCP\IImage', $img);
unset($img);
$imgcreate = imagecreatefromjpeg(OC::$SERVERROOT.'/tests/data/testimage.jpg');
- $img = new \OC_Image($imgcreate);
+ $img = new \OC_Image();
+ $img->setResource($imgcreate);
$this->assertInstanceOf('\OC_Image', $img);
$this->assertInstanceOf('\OCP\IImage', $img);
unset($img);
$base64 = base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif'));
- $img = new \OC_Image($base64);
+ $img = new \OC_Image();
+ $img->loadFromBase64($base64);
$this->assertInstanceOf('\OC_Image', $img);
$this->assertInstanceOf('\OCP\IImage', $img);
unset($img);
- $img = new \OC_Image(null);
+ $img = new \OC_Image();
$this->assertInstanceOf('\OC_Image', $img);
$this->assertInstanceOf('\OCP\IImage', $img);
unset($img);
}
public function testValid() {
- $img = new \OC_Image(OC::$SERVERROOT.'/tests/data/testimage.png');
+ $img = new \OC_Image();
+ $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png');
$this->assertTrue($img->valid());
$text = base64_encode("Lorem ipsum dolor sir amet …");
- $img = new \OC_Image($text);
+ $img = new \OC_Image();
+ $img->loadFromBase64($text);
$this->assertFalse($img->valid());
- $img = new \OC_Image(null);
+ $img = new \OC_Image();
$this->assertFalse($img->valid());
}
public function testMimeType() {
- $img = new \OC_Image(OC::$SERVERROOT.'/tests/data/testimage.png');
+ $img = new \OC_Image();
+ $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png');
$this->assertEquals('image/png', $img->mimeType());
- $img = new \OC_Image(null);
+ $img = new \OC_Image();
$this->assertEquals('', $img->mimeType());
- $img = new \OC_Image(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg'));
+ $img = new \OC_Image();
+ $img->loadFromData(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg'));
$this->assertEquals('image/jpeg', $img->mimeType());
- $img = new \OC_Image(base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif')));
+ $img = new \OC_Image();
+ $img->loadFromBase64(base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif')));
$this->assertEquals('image/gif', $img->mimeType());
}
public function testWidth() {
- $img = new \OC_Image(OC::$SERVERROOT.'/tests/data/testimage.png');
+ $img = new \OC_Image();
+ $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png');
$this->assertEquals(128, $img->width());
- $img = new \OC_Image(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg'));
+ $img = new \OC_Image();
+ $img->loadFromData(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg'));
$this->assertEquals(1680, $img->width());
- $img = new \OC_Image(base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif')));
+ $img = new \OC_Image();
+ $img->loadFromBase64(base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif')));
$this->assertEquals(64, $img->width());
- $img = new \OC_Image(null);
+ $img = new \OC_Image();
$this->assertEquals(-1, $img->width());
}
public function testHeight() {
- $img = new \OC_Image(OC::$SERVERROOT.'/tests/data/testimage.png');
+ $img = new \OC_Image();
+ $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png');
$this->assertEquals(128, $img->height());
- $img = new \OC_Image(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg'));
+ $img = new \OC_Image();
+ $img->loadFromData(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg'));
$this->assertEquals(1050, $img->height());
- $img = new \OC_Image(base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif')));
+ $img = new \OC_Image();
+ $img->loadFromBase64(base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif')));
$this->assertEquals(64, $img->height());
- $img = new \OC_Image(null);
+ $img = new \OC_Image();
$this->assertEquals(-1, $img->height());
}
public function testSave() {
- $img = new \OC_Image(OC::$SERVERROOT.'/tests/data/testimage.png');
+ $img = new \OC_Image();
+ $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png');
$img->resize(16);
$img->save(OC::$SERVERROOT.'/tests/data/testimage2.png');
$this->assertEquals(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage2.png'), $img->data());
- $img = new \OC_Image(OC::$SERVERROOT.'/tests/data/testimage.jpg');
+ $img = new \OC_Image();
+ $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.jpg');
$img->resize(128);
$img->save(OC::$SERVERROOT.'/tests/data/testimage2.jpg');
$this->assertEquals(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage2.jpg'), $img->data());
}
public function testData() {
- $img = new \OC_Image(OC::$SERVERROOT.'/tests/data/testimage.png');
+ $img = new \OC_Image();
+ $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png');
$raw = imagecreatefromstring(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.png'));
// Preserve transparency
imagealphablending($raw, true);
@@ -125,14 +142,16 @@ class ImageTest extends \Test\TestCase {
->method('getAppValue')
->with('preview', 'jpeg_quality', 90)
->willReturn(null);
- $img = new \OC_Image(OC::$SERVERROOT.'/tests/data/testimage.jpg', null, $config);
+ $img = new \OC_Image(null, null, $config);
+ $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.jpg');
$raw = imagecreatefromstring(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg'));
ob_start();
imagejpeg($raw);
$expected = ob_get_clean();
$this->assertEquals($expected, $img->data());
- $img = new \OC_Image(OC::$SERVERROOT.'/tests/data/testimage.gif');
+ $img = new \OC_Image();
+ $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.gif');
$raw = imagecreatefromstring(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif'));
ob_start();
imagegif($raw);
@@ -149,82 +168,97 @@ class ImageTest extends \Test\TestCase {
* @depends testData
*/
public function testToString() {
- $img = new \OC_Image(OC::$SERVERROOT.'/tests/data/testimage.png');
+ $img = new \OC_Image();
+ $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png');
$expected = base64_encode($img->data());
$this->assertEquals($expected, (string)$img);
- $img = new \OC_Image(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg'));
+ $img = new \OC_Image();
+ $img->loadFromData(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg'));
$expected = base64_encode($img->data());
$this->assertEquals($expected, (string)$img);
- $img = new \OC_Image(OC::$SERVERROOT.'/tests/data/testimage.gif');
+ $img = new \OC_Image();
+ $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.gif');
$expected = base64_encode($img->data());
$this->assertEquals($expected, (string)$img);
}
public function testResize() {
- $img = new \OC_Image(OC::$SERVERROOT.'/tests/data/testimage.png');
+ $img = new \OC_Image();
+ $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png');
$this->assertTrue($img->resize(32));
$this->assertEquals(32, $img->width());
$this->assertEquals(32, $img->height());
- $img = new \OC_Image(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg'));
+ $img = new \OC_Image();
+ $img->loadFromData(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg'));
$this->assertTrue($img->resize(840));
$this->assertEquals(840, $img->width());
$this->assertEquals(525, $img->height());
- $img = new \OC_Image(base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif')));
+ $img = new \OC_Image();
+ $img->loadFromBase64(base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif')));
$this->assertTrue($img->resize(100));
$this->assertEquals(100, $img->width());
$this->assertEquals(100, $img->height());
}
public function testPreciseResize() {
- $img = new \OC_Image(OC::$SERVERROOT.'/tests/data/testimage.png');
+ $img = new \OC_Image();
+ $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png');
$this->assertTrue($img->preciseResize(128, 512));
$this->assertEquals(128, $img->width());
$this->assertEquals(512, $img->height());
- $img = new \OC_Image(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg'));
+ $img = new \OC_Image();
+ $img->loadFromData(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg'));
$this->assertTrue($img->preciseResize(64, 840));
$this->assertEquals(64, $img->width());
$this->assertEquals(840, $img->height());
- $img = new \OC_Image(base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif')));
+ $img = new \OC_Image();
+ $img->loadFromBase64(base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif')));
$this->assertTrue($img->preciseResize(1000, 1337));
$this->assertEquals(1000, $img->width());
$this->assertEquals(1337, $img->height());
}
public function testCenterCrop() {
- $img = new \OC_Image(OC::$SERVERROOT.'/tests/data/testimage.png');
+ $img = new \OC_Image();
+ $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png');
$img->centerCrop();
$this->assertEquals(128, $img->width());
$this->assertEquals(128, $img->height());
- $img = new \OC_Image(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg'));
+ $img = new \OC_Image();
+ $img->loadFromData(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg'));
$img->centerCrop();
$this->assertEquals(1050, $img->width());
$this->assertEquals(1050, $img->height());
- $img = new \OC_Image(base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif')));
+ $img = new \OC_Image();
+ $img->loadFromBase64(base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif')));
$img->centerCrop(512);
$this->assertEquals(512, $img->width());
$this->assertEquals(512, $img->height());
}
public function testCrop() {
- $img = new \OC_Image(OC::$SERVERROOT.'/tests/data/testimage.png');
+ $img = new \OC_Image();
+ $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png');
$this->assertTrue($img->crop(0, 0, 50, 20));
$this->assertEquals(50, $img->width());
$this->assertEquals(20, $img->height());
- $img = new \OC_Image(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg'));
+ $img = new \OC_Image();
+ $img->loadFromData(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg'));
$this->assertTrue($img->crop(500, 700, 550, 300));
$this->assertEquals(550, $img->width());
$this->assertEquals(300, $img->height());
- $img = new \OC_Image(base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif')));
+ $img = new \OC_Image();
+ $img->loadFromBase64(base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif')));
$this->assertTrue($img->crop(10, 10, 15, 15));
$this->assertEquals(15, $img->width());
$this->assertEquals(15, $img->height());
@@ -246,7 +280,8 @@ class ImageTest extends \Test\TestCase {
* @param int[] $expected
*/
public function testFitIn($filename, $asked, $expected) {
- $img = new \OC_Image(OC::$SERVERROOT . '/tests/data/' . $filename);
+ $img = new \OC_Image();
+ $img->loadFromFile(OC::$SERVERROOT . '/tests/data/' . $filename);
$this->assertTrue($img->fitIn($asked[0], $asked[1]));
$this->assertEquals($expected[0], $img->width());
$this->assertEquals($expected[1], $img->height());
@@ -268,7 +303,8 @@ class ImageTest extends \Test\TestCase {
* @param string $filename
*/
public function testScaleDownToFitWhenSmallerAlready($filename) {
- $img = new \OC_Image(OC::$SERVERROOT . '/tests/data/' . $filename);
+ $img = new \OC_Image();
+ $img->loadFromFile(OC::$SERVERROOT.'/tests/data/' . $filename);
$currentWidth = $img->width();
$currentHeight = $img->height();
// We pick something larger than the image we want to scale down
@@ -300,7 +336,8 @@ class ImageTest extends \Test\TestCase {
* @param int[] $expected
*/
public function testScaleDownWhenBigger($filename, $asked, $expected) {
- $img = new \OC_Image(OC::$SERVERROOT . '/tests/data/' . $filename);
+ $img = new \OC_Image();
+ $img->loadFromFile(OC::$SERVERROOT.'/tests/data/' . $filename);
//$this->assertTrue($img->scaleDownToFit($asked[0], $asked[1]));
$img->scaleDownToFit($asked[0], $asked[1]);
$this->assertEquals($expected[0], $img->width());
@@ -319,7 +356,8 @@ class ImageTest extends \Test\TestCase {
* @dataProvider convertDataProvider
*/
public function testConvert($mimeType) {
- $img = new \OC_Image(OC::$SERVERROOT.'/tests/data/testimage.png');
+ $img = new \OC_Image();
+ $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png');
$tempFile = tempnam(sys_get_temp_dir(), 'img-test');
$img->save($tempFile, $mimeType);
diff --git a/tests/lib/L10N/FactoryTest.php b/tests/lib/L10N/FactoryTest.php
index 602967b1626..4f31784337a 100644
--- a/tests/lib/L10N/FactoryTest.php
+++ b/tests/lib/L10N/FactoryTest.php
@@ -55,9 +55,16 @@ class FactoryTest extends TestCase {
/**
* @param array $methods
+ * @param bool $mockRequestGetHeaderMethod
* @return Factory|\PHPUnit_Framework_MockObject_MockObject
*/
- protected function getFactory(array $methods = []) {
+ protected function getFactory(array $methods = [], $mockRequestGetHeaderMethod = false) {
+ if ($mockRequestGetHeaderMethod) {
+ $this->request->expects($this->any())
+ ->method('getHeader')
+ ->willReturn('');
+ }
+
if (!empty($methods)) {
return $this->getMockBuilder(Factory::class)
->setConstructorArgs([
@@ -137,7 +144,7 @@ class FactoryTest extends TestCase {
}
public function testFindLanguageWithNotExistingRequestLanguageAndNotExistingStoredUserLanguage() {
- $factory = $this->getFactory(['languageExists']);
+ $factory = $this->getFactory(['languageExists'], true);
$this->invokePrivate($factory, 'requestLanguage', ['de']);
$factory->expects($this->at(0))
->method('languageExists')
@@ -180,7 +187,7 @@ class FactoryTest extends TestCase {
}
public function testFindLanguageWithNotExistingRequestLanguageAndNotExistingStoredUserLanguageAndNotExistingDefault() {
- $factory = $this->getFactory(['languageExists']);
+ $factory = $this->getFactory(['languageExists'], true);
$this->invokePrivate($factory, 'requestLanguage', ['de']);
$factory->expects($this->at(0))
->method('languageExists')
@@ -226,7 +233,7 @@ class FactoryTest extends TestCase {
}
public function testFindLanguageWithNotExistingRequestLanguageAndNotExistingStoredUserLanguageAndNotExistingDefaultAndNoAppInScope() {
- $factory = $this->getFactory(['languageExists']);
+ $factory = $this->getFactory(['languageExists'], true);
$this->invokePrivate($factory, 'requestLanguage', ['de']);
$factory->expects($this->at(0))
->method('languageExists')
diff --git a/tests/lib/Memcache/FactoryTest.php b/tests/lib/Memcache/FactoryTest.php
index ce6c25cd87f..1944b1bd35d 100644
--- a/tests/lib/Memcache/FactoryTest.php
+++ b/tests/lib/Memcache/FactoryTest.php
@@ -20,9 +20,10 @@
*/
namespace Test\Memcache;
+use OC\Memcache\NullCache;
use OCP\ILogger;
-class Test_Factory_Available_Cache1 {
+class Test_Factory_Available_Cache1 extends NullCache {
public function __construct($prefix = '') {
}
@@ -31,7 +32,7 @@ class Test_Factory_Available_Cache1 {
}
}
-class Test_Factory_Available_Cache2 {
+class Test_Factory_Available_Cache2 extends NullCache {
public function __construct($prefix = '') {
}
@@ -40,7 +41,7 @@ class Test_Factory_Available_Cache2 {
}
}
-class Test_Factory_Unavailable_Cache1 {
+class Test_Factory_Unavailable_Cache1 extends NullCache {
public function __construct($prefix = '') {
}
@@ -49,7 +50,7 @@ class Test_Factory_Unavailable_Cache1 {
}
}
-class Test_Factory_Unavailable_Cache2 {
+class Test_Factory_Unavailable_Cache2 extends NullCache {
public function __construct($prefix = '') {
}
diff --git a/tests/lib/Repair/NC11/CleanPreviewsBackgroundJobTest.php b/tests/lib/Repair/NC11/CleanPreviewsBackgroundJobTest.php
deleted file mode 100644
index c0e2f0ce1b5..00000000000
--- a/tests/lib/Repair/NC11/CleanPreviewsBackgroundJobTest.php
+++ /dev/null
@@ -1,245 +0,0 @@
-<?php
-/**
- * @copyright 2016, 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 Test\Repair\NC11;
-
-use OC\Repair\NC11\CleanPreviewsBackgroundJob;
-use OCP\AppFramework\Utility\ITimeFactory;
-use OCP\BackgroundJob\IJobList;
-use OCP\Files\Folder;
-use OCP\Files\IRootFolder;
-use OCP\Files\NotFoundException;
-use OCP\Files\NotPermittedException;
-use OCP\ILogger;
-use OCP\IUserManager;
-use Test\TestCase;
-
-class CleanPreviewsBackgroundJobTest extends TestCase {
- /** @var IRootFolder|\PHPUnit_Framework_MockObject_MockObject */
- private $rootFolder;
-
- /** @var ILogger|\PHPUnit_Framework_MockObject_MockObject */
- private $logger;
-
- /** @var IJobList|\PHPUnit_Framework_MockObject_MockObject */
- private $jobList;
-
- /** @var ITimeFactory|\PHPUnit_Framework_MockObject_MockObject */
- private $timeFactory;
-
- /** @var CleanPreviewsBackgroundJob */
- private $job;
-
- /** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
- private $userManager;
-
- public function setUp() {
- parent::setUp();
-
- $this->rootFolder = $this->createMock(IRootFolder::class);
- $this->logger = $this->createMock(ILogger::class);
- $this->jobList = $this->createMock(IJobList::class);
- $this->timeFactory = $this->createMock(ITimeFactory::class);
- $this->userManager = $this->createMock(IUserManager::class);
-
- $this->userManager->expects($this->any())->method('userExists')->willReturn(true);
-
- $this->job = new CleanPreviewsBackgroundJob(
- $this->rootFolder,
- $this->logger,
- $this->jobList,
- $this->timeFactory,
- $this->userManager
- );
- }
-
- public function testCleanupPreviewsUnfinished() {
- $userFolder = $this->createMock(Folder::class);
- $userRoot = $this->createMock(Folder::class);
- $thumbnailFolder = $this->createMock(Folder::class);
-
- $this->rootFolder->method('getUserFolder')
- ->with($this->equalTo('myuid'))
- ->willReturn($userFolder);
-
- $userFolder->method('getParent')->willReturn($userRoot);
-
- $userRoot->method('get')
- ->with($this->equalTo('thumbnails'))
- ->willReturn($thumbnailFolder);
-
- $previewFolder1 = $this->createMock(Folder::class);
-
- $previewFolder1->expects($this->once())
- ->method('delete');
-
- $thumbnailFolder->method('getDirectoryListing')
- ->willReturn([$previewFolder1]);
- $thumbnailFolder->expects($this->never())
- ->method('delete');
-
- $this->timeFactory->method('getTime')
- ->will($this->onConsecutiveCalls(100, 200));
-
- $this->jobList->expects($this->once())
- ->method('add')
- ->with(
- $this->equalTo(CleanPreviewsBackgroundJob::class),
- $this->equalTo(['uid' => 'myuid'])
- );
-
- $this->logger->expects($this->at(0))
- ->method('info')
- ->with($this->equalTo('Started preview cleanup for myuid'));
- $this->logger->expects($this->at(1))
- ->method('info')
- ->with($this->equalTo('New preview cleanup scheduled for myuid'));
-
- $this->job->run(['uid' => 'myuid']);
- }
-
- public function testCleanupPreviewsFinished() {
- $userFolder = $this->createMock(Folder::class);
- $userRoot = $this->createMock(Folder::class);
- $thumbnailFolder = $this->createMock(Folder::class);
-
- $this->rootFolder->method('getUserFolder')
- ->with($this->equalTo('myuid'))
- ->willReturn($userFolder);
-
- $userFolder->method('getParent')->willReturn($userRoot);
-
- $userRoot->method('get')
- ->with($this->equalTo('thumbnails'))
- ->willReturn($thumbnailFolder);
-
- $previewFolder1 = $this->createMock(Folder::class);
-
- $previewFolder1->expects($this->once())
- ->method('delete');
-
- $thumbnailFolder->method('getDirectoryListing')
- ->willReturn([$previewFolder1]);
-
- $this->timeFactory->method('getTime')
- ->will($this->onConsecutiveCalls(100, 101));
-
- $this->jobList->expects($this->never())
- ->method('add');
-
- $this->logger->expects($this->at(0))
- ->method('info')
- ->with($this->equalTo('Started preview cleanup for myuid'));
- $this->logger->expects($this->at(1))
- ->method('info')
- ->with($this->equalTo('Preview cleanup done for myuid'));
-
- $thumbnailFolder->expects($this->once())
- ->method('delete');
-
- $this->job->run(['uid' => 'myuid']);
- }
-
-
- public function testNoUserFolder() {
- $this->rootFolder->method('getUserFolder')
- ->with($this->equalTo('myuid'))
- ->willThrowException(new NotFoundException());
-
- $this->logger->expects($this->at(0))
- ->method('info')
- ->with($this->equalTo('Started preview cleanup for myuid'));
- $this->logger->expects($this->at(1))
- ->method('info')
- ->with($this->equalTo('Preview cleanup done for myuid'));
-
- $this->job->run(['uid' => 'myuid']);
- }
-
- public function testNoThumbnailFolder() {
- $userFolder = $this->createMock(Folder::class);
- $userRoot = $this->createMock(Folder::class);
-
- $this->rootFolder->method('getUserFolder')
- ->with($this->equalTo('myuid'))
- ->willReturn($userFolder);
-
- $userFolder->method('getParent')->willReturn($userRoot);
-
- $userRoot->method('get')
- ->with($this->equalTo('thumbnails'))
- ->willThrowException(new NotFoundException());
-
- $this->logger->expects($this->at(0))
- ->method('info')
- ->with($this->equalTo('Started preview cleanup for myuid'));
- $this->logger->expects($this->at(1))
- ->method('info')
- ->with($this->equalTo('Preview cleanup done for myuid'));
-
- $this->job->run(['uid' => 'myuid']);
- }
-
- public function testNotPermittedToDelete() {
- $userFolder = $this->createMock(Folder::class);
- $userRoot = $this->createMock(Folder::class);
- $thumbnailFolder = $this->createMock(Folder::class);
-
- $this->rootFolder->method('getUserFolder')
- ->with($this->equalTo('myuid'))
- ->willReturn($userFolder);
-
- $userFolder->method('getParent')->willReturn($userRoot);
-
- $userRoot->method('get')
- ->with($this->equalTo('thumbnails'))
- ->willReturn($thumbnailFolder);
-
- $previewFolder1 = $this->createMock(Folder::class);
-
- $previewFolder1->expects($this->once())
- ->method('delete')
- ->willThrowException(new NotPermittedException());
-
- $thumbnailFolder->method('getDirectoryListing')
- ->willReturn([$previewFolder1]);
-
- $this->timeFactory->method('getTime')
- ->will($this->onConsecutiveCalls(100, 101));
-
- $this->jobList->expects($this->never())
- ->method('add');
-
- $this->logger->expects($this->at(0))
- ->method('info')
- ->with($this->equalTo('Started preview cleanup for myuid'));
- $this->logger->expects($this->at(1))
- ->method('info')
- ->with($this->equalTo('Preview cleanup done for myuid'));
-
- $thumbnailFolder->expects($this->once())
- ->method('delete')
- ->willThrowException(new NotPermittedException());
-
- $this->job->run(['uid' => 'myuid']);
- }
-}
diff --git a/tests/lib/Repair/NC11/CleanPreviewsTest.php b/tests/lib/Repair/NC11/CleanPreviewsTest.php
deleted file mode 100644
index 8abc6b7bab9..00000000000
--- a/tests/lib/Repair/NC11/CleanPreviewsTest.php
+++ /dev/null
@@ -1,135 +0,0 @@
-<?php
-/**
- * @copyright 2016, 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 Test\Repair\NC11;
-
-use OC\Repair\NC11\CleanPreviews;
-use OC\Repair\NC11\CleanPreviewsBackgroundJob;
-use OCP\BackgroundJob\IJobList;
-use OCP\IConfig;
-use OCP\IUser;
-use OCP\IUserManager;
-use OCP\Migration\IOutput;
-use Test\TestCase;
-
-class CleanPreviewsTest extends TestCase {
-
-
- /** @var IJobList|\PHPUnit_Framework_MockObject_MockObject */
- private $jobList;
-
- /** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
- private $userManager;
-
- /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */
- private $config;
-
- /** @var CleanPreviews */
- private $repair;
-
- public function setUp() {
- parent::setUp();
-
- $this->jobList = $this->createMock(IJobList::class);
- $this->userManager = $this->createMock(IUserManager::class);
- $this->config = $this->createMock(IConfig::class);
-
- $this->repair = new CleanPreviews(
- $this->jobList,
- $this->userManager,
- $this->config
- );
- }
-
- public function testGetName() {
- $this->assertSame('Add preview cleanup background jobs', $this->repair->getName());
- }
-
- public function testRun() {
- $user1 = $this->createMock(IUser::class);
- $user1->method('getUID')
- ->willReturn('user1');
- $user2 = $this->createMock(IUser::class);
- $user2->method('getUID')
- ->willReturn('user2');
-
- $this->userManager->expects($this->once())
- ->method('callForSeenUsers')
- ->will($this->returnCallback(function (\Closure $function) use ($user1, $user2) {
- $function($user1);
- $function($user2);
- }));
-
- $this->jobList->expects($this->at(0))
- ->method('add')
- ->with(
- $this->equalTo(CleanPreviewsBackgroundJob::class),
- $this->equalTo(['uid' => 'user1'])
- );
-
- $this->jobList->expects($this->at(1))
- ->method('add')
- ->with(
- $this->equalTo(CleanPreviewsBackgroundJob::class),
- $this->equalTo(['uid' => 'user2'])
- );
-
- $this->config->expects($this->once())
- ->method('getAppValue')
- ->with(
- $this->equalTo('core'),
- $this->equalTo('previewsCleanedUp'),
- $this->equalTo(false)
- )->willReturn(false);
- $this->config->expects($this->once())
- ->method('setAppValue')
- ->with(
- $this->equalTo('core'),
- $this->equalTo('previewsCleanedUp'),
- $this->equalTo(1)
- );
-
- $this->repair->run($this->createMock(IOutput::class));
- }
-
-
- public function testRunAlreadyDoone() {
- $this->userManager->expects($this->never())
- ->method($this->anything());
-
- $this->jobList->expects($this->never())
- ->method($this->anything());
-
- $this->config->expects($this->once())
- ->method('getAppValue')
- ->with(
- $this->equalTo('core'),
- $this->equalTo('previewsCleanedUp'),
- $this->equalTo(false)
- )->willReturn('1');
- $this->config->expects($this->never())
- ->method('setAppValue');
-
- $this->repair->run($this->createMock(IOutput::class));
- }
-
-}
diff --git a/tests/lib/Repair/NC12/InstallCoreBundleTest.php b/tests/lib/Repair/NC12/InstallCoreBundleTest.php
deleted file mode 100644
index 3a72934df86..00000000000
--- a/tests/lib/Repair/NC12/InstallCoreBundleTest.php
+++ /dev/null
@@ -1,144 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
- *
- * @author Lukas Reschke <lukas@statuscode.ch>
- *
- * @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 Test\Repair\NC12;
-
-use OC\App\AppStore\Bundles\Bundle;
-use OC\App\AppStore\Bundles\BundleFetcher;
-use OC\Installer;
-use OC\Repair\NC12\InstallCoreBundle;
-use OCP\IConfig;
-use OCP\Migration\IOutput;
-use Test\TestCase;
-
-
-class InstallCoreBundleTest extends TestCase {
- /** @var BundleFetcher|\PHPUnit_Framework_MockObject_MockObject */
- private $bundleFetcher;
- /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */
- private $config;
- /** @var Installer|\PHPUnit_Framework_MockObject_MockObject */
- private $installer;
- /** @var InstallCoreBundle */
- private $installCoreBundle;
-
- public function setUp() {
- parent::setUp();
- $this->bundleFetcher = $this->createMock(BundleFetcher::class);
- $this->config = $this->createMock(IConfig::class);
- $this->installer = $this->createMock(Installer::class);
-
- $this->installCoreBundle = new InstallCoreBundle(
- $this->bundleFetcher,
- $this->config,
- $this->installer
- );
- }
-
- public function testGetName() {
- $this->assertSame('Install new core bundle components', $this->installCoreBundle->getName());
- }
-
- public function testRunOlder() {
- $this->config
- ->expects($this->once())
- ->method('getSystemValue')
- ->with('version', '0.0.0')
- ->willReturn('12.0.0.15');
- $this->bundleFetcher
- ->expects($this->never())
- ->method('getDefaultInstallationBundle');
- /** @var IOutput|\PHPUnit_Framework_MockObject_MockObject $output */
- $output = $this->createMock(IOutput::class);
- $output
- ->expects($this->never())
- ->method('info');
- $output
- ->expects($this->never())
- ->method('warning');
-
- $this->installCoreBundle->run($output);
- }
-
- public function testRunWithException() {
- $this->config
- ->expects($this->once())
- ->method('getSystemValue')
- ->with('version', '0.0.0')
- ->willReturn('12.0.0.14');
- $bundle = $this->createMock(Bundle::class);
- $this->bundleFetcher
- ->expects($this->once())
- ->method('getDefaultInstallationBundle')
- ->willReturn([
- $bundle,
- ]);
- $this->installer
- ->expects($this->once())
- ->method('installAppBundle')
- ->with($bundle)
- ->willThrowException(new \Exception('ExceptionText'));
- /** @var IOutput|\PHPUnit_Framework_MockObject_MockObject $output */
- $output = $this->createMock(IOutput::class);
- $output
- ->expects($this->never())
- ->method('info');
- $output
- ->expects($this->once())
- ->method('warning')
- ->with('Could not install core app bundle: ExceptionText');
-
- $this->installCoreBundle->run($output);
- }
-
- public function testRun() {
- $this->config
- ->expects($this->once())
- ->method('getSystemValue')
- ->with('version', '0.0.0')
- ->willReturn('12.0.0.14');
- $bundle = $this->createMock(Bundle::class);
- $this->bundleFetcher
- ->expects($this->once())
- ->method('getDefaultInstallationBundle')
- ->willReturn([
- $bundle,
- ]);
- $this->installer
- ->expects($this->once())
- ->method('installAppBundle')
- ->with($bundle);
- /** @var IOutput|\PHPUnit_Framework_MockObject_MockObject $output */
- $output = $this->createMock(IOutput::class);
- $output
- ->expects($this->once())
- ->method('info')
- ->with('Successfully installed core app bundle.');
- $output
- ->expects($this->never())
- ->method('warning');
-
- $this->installCoreBundle->run($output);
- }
-
-}
diff --git a/tests/lib/Repair/NC12/UpdateLanguageCodesTest.php b/tests/lib/Repair/NC12/UpdateLanguageCodesTest.php
deleted file mode 100644
index 46422589541..00000000000
--- a/tests/lib/Repair/NC12/UpdateLanguageCodesTest.php
+++ /dev/null
@@ -1,177 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016 Morris Jobke <hey@morrisjobke.de>
- *
- * @author Morris Jobke <hey@morrisjobke.de>
- *
- * @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 Test\Repair\NC12;
-
-use OC\Repair\NC12\UpdateLanguageCodes;
-use OCP\DB\QueryBuilder\IQueryBuilder;
-use OCP\IConfig;
-use OCP\Migration\IOutput;
-use Test\TestCase;
-
-/**
- * Class UpdateLanguageCodesTest
- *
- * @group DB
- *
- * @package Test\Repair
- */
-class UpdateLanguageCodesTest extends TestCase {
- /** @var \OCP\IDBConnection */
- protected $connection;
-
- /** @var IConfig | \PHPUnit_Framework_MockObject_MockObject */
- private $config;
-
- protected function setUp() {
- parent::setUp();
-
- $this->connection = \OC::$server->getDatabaseConnection();
- $this->config = $this->createMock(IConfig::class);
- }
-
- public function testRun() {
-
- $users = [
- ['userid' => 'user1', 'configvalue' => 'fi_FI'],
- ['userid' => 'user2', 'configvalue' => 'de'],
- ['userid' => 'user3', 'configvalue' => 'fi'],
- ['userid' => 'user4', 'configvalue' => 'ja'],
- ['userid' => 'user5', 'configvalue' => 'bg_BG'],
- ['userid' => 'user6', 'configvalue' => 'ja'],
- ['userid' => 'user7', 'configvalue' => 'th_TH'],
- ['userid' => 'user8', 'configvalue' => 'th_TH'],
- ];
-
- // insert test data
- $qb = $this->connection->getQueryBuilder();
- $qb->insert('preferences')
- ->values([
- 'userid' => $qb->createParameter('userid'),
- 'appid' => $qb->createParameter('appid'),
- 'configkey' => $qb->createParameter('configkey'),
- 'configvalue' => $qb->createParameter('configvalue'),
- ]);
- foreach ($users as $user) {
- $qb->setParameters([
- 'userid' => $user['userid'],
- 'appid' => 'core',
- 'configkey' => 'lang',
- 'configvalue' => $user['configvalue'],
- ])->execute();
- }
-
- // check if test data is written to DB
- $qb = $this->connection->getQueryBuilder();
- $result = $qb->select(['userid', 'configvalue'])
- ->from('preferences')
- ->where($qb->expr()->eq('appid', $qb->createNamedParameter('core')))
- ->andWhere($qb->expr()->eq('configkey', $qb->createNamedParameter('lang')))
- ->execute();
-
- $rows = $result->fetchAll();
- $result->closeCursor();
-
- $this->assertSame($users, $rows, 'Asserts that the entries are the ones from the test data set');
-
- /** @var IOutput|\PHPUnit_Framework_MockObject_MockObject $outputMock */
- $outputMock = $this->createMock(IOutput::class);
- $outputMock->expects($this->at(0))
- ->method('info')
- ->with('Changed 1 setting(s) from "bg_BG" to "bg" in preferences table.');
- $outputMock->expects($this->at(1))
- ->method('info')
- ->with('Changed 0 setting(s) from "cs_CZ" to "cs" in preferences table.');
- $outputMock->expects($this->at(2))
- ->method('info')
- ->with('Changed 1 setting(s) from "fi_FI" to "fi" in preferences table.');
- $outputMock->expects($this->at(3))
- ->method('info')
- ->with('Changed 0 setting(s) from "hu_HU" to "hu" in preferences table.');
- $outputMock->expects($this->at(4))
- ->method('info')
- ->with('Changed 0 setting(s) from "nb_NO" to "nb" in preferences table.');
- $outputMock->expects($this->at(5))
- ->method('info')
- ->with('Changed 0 setting(s) from "sk_SK" to "sk" in preferences table.');
- $outputMock->expects($this->at(6))
- ->method('info')
- ->with('Changed 2 setting(s) from "th_TH" to "th" in preferences table.');
-
- $this->config->expects($this->once())
- ->method('getSystemValue')
- ->with('version', '0.0.0')
- ->willReturn('12.0.0.13');
-
- // run repair step
- $repair = new UpdateLanguageCodes($this->connection, $this->config);
- $repair->run($outputMock);
-
- // check if test data is correctly modified in DB
- $qb = $this->connection->getQueryBuilder();
- $result = $qb->select(['userid', 'configvalue'])
- ->from('preferences')
- ->where($qb->expr()->eq('appid', $qb->createNamedParameter('core')))
- ->andWhere($qb->expr()->eq('configkey', $qb->createNamedParameter('lang')))
- ->orderBy('userid')
- ->execute();
-
- $rows = $result->fetchAll();
- $result->closeCursor();
-
- // value has changed for one user
- $users[0]['configvalue'] = 'fi';
- $users[4]['configvalue'] = 'bg';
- $users[6]['configvalue'] = 'th';
- $users[7]['configvalue'] = 'th';
- $this->assertSame($users, $rows, 'Asserts that the entries are updated correctly.');
-
- // remove test data
- foreach ($users as $user) {
- $qb = $this->connection->getQueryBuilder();
- $qb->delete('preferences')
- ->where($qb->expr()->eq('userid', $qb->createNamedParameter($user['userid'])))
- ->andWhere($qb->expr()->eq('appid', $qb->createNamedParameter('core')))
- ->andWhere($qb->expr()->eq('configkey', $qb->createNamedParameter('lang')))
- ->andWhere($qb->expr()->eq('configvalue', $qb->createNamedParameter($user['configvalue']), IQueryBuilder::PARAM_STR))
- ->execute();
- }
- }
-
- public function testSecondRun() {
- /** @var IOutput|\PHPUnit_Framework_MockObject_MockObject $outputMock */
- $outputMock = $this->createMock(IOutput::class);
- $outputMock->expects($this->never())
- ->method('info');
-
- $this->config->expects($this->once())
- ->method('getSystemValue')
- ->with('version', '0.0.0')
- ->willReturn('12.0.0.14');
-
- // run repair step
- $repair = new UpdateLanguageCodes($this->connection, $this->config);
- $repair->run($outputMock);
- }
-
-}
diff --git a/tests/lib/Security/HasherTest.php b/tests/lib/Security/HasherTest.php
index 5f7613a823d..86d4ef6ca01 100644
--- a/tests/lib/Security/HasherTest.php
+++ b/tests/lib/Security/HasherTest.php
@@ -35,10 +35,6 @@ class HasherTest extends \Test\TestCase {
public function allHashProviders()
{
return array(
- // Bogus values
- array(null, 'asf32äà$$a.|3', false),
- array(null, false, false),
-
// Valid SHA1 strings
array('password', '5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8', true),
array('owncloud.com', '27a4643e43046c3569e33b68c1a4b15d31306d29', true),
diff --git a/tests/lib/Share/ShareTest.php b/tests/lib/Share/ShareTest.php
index e93b0f553cd..18d1944f193 100644
--- a/tests/lib/Share/ShareTest.php
+++ b/tests/lib/Share/ShareTest.php
@@ -103,8 +103,8 @@ class ShareTest extends \Test\TestCase {
\OC\Share\Share::registerBackend('test', 'Test\Share\Backend');
\OC_Hook::clear('OCP\\Share');
\OC::registerShareHooks();
- $this->resharing = \OC::$server->getAppConfig()->getValue('core', 'shareapi_allow_resharing', 'yes');
- \OC::$server->getAppConfig()->setValue('core', 'shareapi_allow_resharing', 'yes');
+ $this->resharing = \OC::$server->getConfig()->getAppValue('core', 'shareapi_allow_resharing', 'yes');
+ \OC::$server->getConfig()->setAppValue('core', 'shareapi_allow_resharing', 'yes');
// 20 Minutes in the past, 20 minutes in the future.
$now = time();
@@ -116,7 +116,7 @@ class ShareTest extends \Test\TestCase {
protected function tearDown() {
$query = \OC_DB::prepare('DELETE FROM `*PREFIX*share` WHERE `item_type` = ?');
$query->execute(array('test'));
- \OC::$server->getAppConfig()->setValue('core', 'shareapi_allow_resharing', $this->resharing);
+ \OC::$server->getConfig()->setAppValue('core', 'shareapi_allow_resharing', $this->resharing);
$this->user1->delete();
$this->user2->delete();
diff --git a/tests/lib/TestCase.php b/tests/lib/TestCase.php
index 64036084dc2..345b2a68e6f 100644
--- a/tests/lib/TestCase.php
+++ b/tests/lib/TestCase.php
@@ -385,7 +385,7 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase {
$userObject->updateLastLoginTimestamp();
}
\OC_Util::setupFS($user);
- if (\OC_User::userExists($user)) {
+ if (\OC::$server->getUserManager()->userExists($user)) {
\OC::$server->getUserFolder($user);
}
}
diff --git a/tests/lib/Traits/EncryptionTrait.php b/tests/lib/Traits/EncryptionTrait.php
index 8a06d37fa7f..ba759a51a28 100644
--- a/tests/lib/Traits/EncryptionTrait.php
+++ b/tests/lib/Traits/EncryptionTrait.php
@@ -50,7 +50,7 @@ trait EncryptionTrait {
\OC_User::setUserId($user);
$this->postLogin();
\OC_Util::setupFS($user);
- if (\OC_User::userExists($user)) {
+ if (\OC::$server->getUserManager()->userExists($user)) {
\OC::$server->getUserFolder($user);
}
}
diff --git a/tests/lib/UpdaterTest.php b/tests/lib/UpdaterTest.php
index a6a8224ac34..afc9f9b1f86 100644
--- a/tests/lib/UpdaterTest.php
+++ b/tests/lib/UpdaterTest.php
@@ -115,11 +115,4 @@ class UpdaterTest extends TestCase {
$this->assertSame($result, $this->updater->isUpgradePossible($oldVersion, $newVersion, $allowedVersions));
}
- public function testSetSkip3rdPartyAppsDisable() {
- $this->updater->setSkip3rdPartyAppsDisable(true);
- $this->assertSame(true, $this->invokePrivate($this->updater, 'skip3rdPartyAppsDisable'));
- $this->updater->setSkip3rdPartyAppsDisable(false);
- $this->assertSame(false, $this->invokePrivate($this->updater, 'skip3rdPartyAppsDisable'));
- }
-
}
diff --git a/tests/lib/UserTest.php b/tests/lib/UserTest.php
deleted file mode 100644
index 2a477522dea..00000000000
--- a/tests/lib/UserTest.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/**
- * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-
-namespace Test;
-
-/**
- * Class User
- *
- * @group DB
- *
- * @package Test
- */
-class UserTest extends TestCase {
- /**
- * @var \OC\User\Backend | \PHPUnit_Framework_MockObject_MockObject $backend
- */
- private $backend;
-
- protected function setUp(){
- parent::setUp();
-
- $this->backend = $this->createMock(\Test\Util\User\Dummy::class);
- $manager = \OC::$server->getUserManager();
- $manager->registerBackend($this->backend);
- }
-
- public function testCheckPassword() {
-
- $this->backend->expects($this->once())
- ->method('checkPassword')
- ->with($this->equalTo('foo'), $this->equalTo('bar'))
- ->will($this->returnValue('foo'))
- ;
-
- $this->backend->expects($this->any())
- ->method('implementsActions')
- ->will($this->returnCallback(function ($actions) {
- if ($actions === \OC\USER\BACKEND::CHECK_PASSWORD) {
- return true;
- } else {
- return false;
- }
- }));
-
- $uid = \OC_User::checkPassword('foo', 'bar');
- $this->assertEquals($uid, 'foo');
- }
-
-}