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

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/autoloader.php5
-rw-r--r--lib/base.php93
-rw-r--r--lib/composer/composer/autoload_classmap.php63
-rw-r--r--lib/composer/composer/autoload_namespaces.php1
-rw-r--r--lib/composer/composer/autoload_psr4.php1
-rw-r--r--lib/composer/composer/autoload_static.php67
-rw-r--r--lib/l10n/af.js6
-rw-r--r--lib/l10n/af.json6
-rw-r--r--lib/l10n/ar.js14
-rw-r--r--lib/l10n/ar.json14
-rw-r--r--lib/l10n/ast.js27
-rw-r--r--lib/l10n/ast.json27
-rw-r--r--lib/l10n/az.js7
-rw-r--r--lib/l10n/az.json7
-rw-r--r--lib/l10n/be.js4
-rw-r--r--lib/l10n/be.json4
-rw-r--r--lib/l10n/bg.js23
-rw-r--r--lib/l10n/bg.json23
-rw-r--r--lib/l10n/bn_BD.js7
-rw-r--r--lib/l10n/bn_BD.json7
-rw-r--r--lib/l10n/br.js3
-rw-r--r--lib/l10n/br.json3
-rw-r--r--lib/l10n/bs.js6
-rw-r--r--lib/l10n/bs.json6
-rw-r--r--lib/l10n/ca.js39
-rw-r--r--lib/l10n/ca.json39
-rw-r--r--lib/l10n/cs.js47
-rw-r--r--lib/l10n/cs.json47
-rw-r--r--lib/l10n/cy_GB.js5
-rw-r--r--lib/l10n/cy_GB.json5
-rw-r--r--lib/l10n/da.js27
-rw-r--r--lib/l10n/da.json27
-rw-r--r--lib/l10n/de.js47
-rw-r--r--lib/l10n/de.json47
-rw-r--r--lib/l10n/de_DE.js47
-rw-r--r--lib/l10n/de_DE.json47
-rw-r--r--lib/l10n/el.js43
-rw-r--r--lib/l10n/el.json43
-rw-r--r--lib/l10n/en_GB.js27
-rw-r--r--lib/l10n/en_GB.json27
-rw-r--r--lib/l10n/eo.js39
-rw-r--r--lib/l10n/eo.json39
-rw-r--r--lib/l10n/es.js89
-rw-r--r--lib/l10n/es.json89
-rw-r--r--lib/l10n/es_419.js27
-rw-r--r--lib/l10n/es_419.json27
-rw-r--r--lib/l10n/es_AR.js27
-rw-r--r--lib/l10n/es_AR.json27
-rw-r--r--lib/l10n/es_CL.js27
-rw-r--r--lib/l10n/es_CL.json27
-rw-r--r--lib/l10n/es_CO.js27
-rw-r--r--lib/l10n/es_CO.json27
-rw-r--r--lib/l10n/es_CR.js27
-rw-r--r--lib/l10n/es_CR.json27
-rw-r--r--lib/l10n/es_DO.js27
-rw-r--r--lib/l10n/es_DO.json27
-rw-r--r--lib/l10n/es_EC.js27
-rw-r--r--lib/l10n/es_EC.json27
-rw-r--r--lib/l10n/es_GT.js27
-rw-r--r--lib/l10n/es_GT.json27
-rw-r--r--lib/l10n/es_HN.js27
-rw-r--r--lib/l10n/es_HN.json27
-rw-r--r--lib/l10n/es_MX.js27
-rw-r--r--lib/l10n/es_MX.json27
-rw-r--r--lib/l10n/es_NI.js27
-rw-r--r--lib/l10n/es_NI.json27
-rw-r--r--lib/l10n/es_PA.js27
-rw-r--r--lib/l10n/es_PA.json27
-rw-r--r--lib/l10n/es_PE.js27
-rw-r--r--lib/l10n/es_PE.json27
-rw-r--r--lib/l10n/es_PR.js27
-rw-r--r--lib/l10n/es_PR.json27
-rw-r--r--lib/l10n/es_PY.js27
-rw-r--r--lib/l10n/es_PY.json27
-rw-r--r--lib/l10n/es_SV.js27
-rw-r--r--lib/l10n/es_SV.json27
-rw-r--r--lib/l10n/es_UY.js27
-rw-r--r--lib/l10n/es_UY.json27
-rw-r--r--lib/l10n/et_EE.js24
-rw-r--r--lib/l10n/et_EE.json24
-rw-r--r--lib/l10n/eu.js61
-rw-r--r--lib/l10n/eu.json61
-rw-r--r--lib/l10n/fa.js39
-rw-r--r--lib/l10n/fa.json39
-rw-r--r--lib/l10n/fi.js25
-rw-r--r--lib/l10n/fi.json25
-rw-r--r--lib/l10n/fo.js4
-rw-r--r--lib/l10n/fo.json4
-rw-r--r--lib/l10n/fr.js43
-rw-r--r--lib/l10n/fr.json43
-rw-r--r--lib/l10n/gl.js49
-rw-r--r--lib/l10n/gl.json49
-rw-r--r--lib/l10n/he.js36
-rw-r--r--lib/l10n/he.json36
-rw-r--r--lib/l10n/hr.js43
-rw-r--r--lib/l10n/hr.json43
-rw-r--r--lib/l10n/hu.js41
-rw-r--r--lib/l10n/hu.json41
-rw-r--r--lib/l10n/hy.js5
-rw-r--r--lib/l10n/hy.json5
-rw-r--r--lib/l10n/ia.js7
-rw-r--r--lib/l10n/ia.json7
-rw-r--r--lib/l10n/id.js23
-rw-r--r--lib/l10n/id.json23
-rw-r--r--lib/l10n/is.js39
-rw-r--r--lib/l10n/is.json39
-rw-r--r--lib/l10n/it.js43
-rw-r--r--lib/l10n/it.json43
-rw-r--r--lib/l10n/ja.js39
-rw-r--r--lib/l10n/ja.json39
-rw-r--r--lib/l10n/ka_GE.js27
-rw-r--r--lib/l10n/ka_GE.json27
-rw-r--r--lib/l10n/km.js6
-rw-r--r--lib/l10n/km.json6
-rw-r--r--lib/l10n/kn.js3
-rw-r--r--lib/l10n/kn.json3
-rw-r--r--lib/l10n/ko.js30
-rw-r--r--lib/l10n/ko.json30
-rw-r--r--lib/l10n/lb.js5
-rw-r--r--lib/l10n/lb.json5
-rw-r--r--lib/l10n/lt_LT.js37
-rw-r--r--lib/l10n/lt_LT.json37
-rw-r--r--lib/l10n/lv.js12
-rw-r--r--lib/l10n/lv.json12
-rw-r--r--lib/l10n/mk.js24
-rw-r--r--lib/l10n/mk.json24
-rw-r--r--lib/l10n/mn.js6
-rw-r--r--lib/l10n/mn.json6
-rw-r--r--lib/l10n/ms_MY.js5
-rw-r--r--lib/l10n/ms_MY.json5
-rw-r--r--lib/l10n/nb.js27
-rw-r--r--lib/l10n/nb.json27
-rw-r--r--lib/l10n/nl.js43
-rw-r--r--lib/l10n/nl.json43
-rw-r--r--lib/l10n/nn_NO.js6
-rw-r--r--lib/l10n/nn_NO.json6
-rw-r--r--lib/l10n/oc.js3
-rw-r--r--lib/l10n/oc.json3
-rw-r--r--lib/l10n/pl.js43
-rw-r--r--lib/l10n/pl.json43
-rw-r--r--lib/l10n/ps.js5
-rw-r--r--lib/l10n/ps.json5
-rw-r--r--lib/l10n/pt_BR.js49
-rw-r--r--lib/l10n/pt_BR.json49
-rw-r--r--lib/l10n/pt_PT.js27
-rw-r--r--lib/l10n/pt_PT.json27
-rw-r--r--lib/l10n/ro.js16
-rw-r--r--lib/l10n/ro.json16
-rw-r--r--lib/l10n/ru.js43
-rw-r--r--lib/l10n/ru.json43
-rw-r--r--lib/l10n/si_LK.js3
-rw-r--r--lib/l10n/si_LK.json3
-rw-r--r--lib/l10n/sk.js61
-rw-r--r--lib/l10n/sk.json61
-rw-r--r--lib/l10n/sl.js27
-rw-r--r--lib/l10n/sl.json27
-rw-r--r--lib/l10n/sq.js27
-rw-r--r--lib/l10n/sq.json27
-rw-r--r--lib/l10n/sr.js41
-rw-r--r--lib/l10n/sr.json41
-rw-r--r--lib/l10n/sr@latin.js3
-rw-r--r--lib/l10n/sr@latin.json3
-rw-r--r--lib/l10n/sv.js51
-rw-r--r--lib/l10n/sv.json51
-rw-r--r--lib/l10n/ta_LK.js5
-rw-r--r--lib/l10n/ta_LK.json5
-rw-r--r--lib/l10n/th.js21
-rw-r--r--lib/l10n/th.json21
-rw-r--r--lib/l10n/tk.js6
-rw-r--r--lib/l10n/tk.json4
-rw-r--r--lib/l10n/tr.js51
-rw-r--r--lib/l10n/tr.json51
-rw-r--r--lib/l10n/ug.js6
-rw-r--r--lib/l10n/ug.json6
-rw-r--r--lib/l10n/uk.js27
-rw-r--r--lib/l10n/uk.json27
-rw-r--r--lib/l10n/ur_PK.js4
-rw-r--r--lib/l10n/ur_PK.json4
-rw-r--r--lib/l10n/uz.js4
-rw-r--r--lib/l10n/uz.json4
-rw-r--r--lib/l10n/vi.js11
-rw-r--r--lib/l10n/vi.json11
-rw-r--r--lib/l10n/zh_CN.js43
-rw-r--r--lib/l10n/zh_CN.json43
-rw-r--r--lib/l10n/zh_HK.js6
-rw-r--r--lib/l10n/zh_HK.json6
-rw-r--r--lib/l10n/zh_TW.js29
-rw-r--r--lib/l10n/zh_TW.json29
-rw-r--r--lib/private/Accounts/Account.php3
-rw-r--r--lib/private/Accounts/AccountManager.php19
-rw-r--r--lib/private/Accounts/Hooks.php3
-rw-r--r--lib/private/Activity/Event.php9
-rw-r--r--lib/private/Activity/EventMerger.php3
-rw-r--r--lib/private/Activity/Manager.php9
-rw-r--r--lib/private/AllConfig.php46
-rw-r--r--lib/private/App/AppManager.php16
-rw-r--r--lib/private/App/AppStore/Bundles/Bundle.php7
-rw-r--r--lib/private/App/AppStore/Bundles/BundleFetcher.php6
-rw-r--r--lib/private/App/AppStore/Bundles/CoreBundle.php1
-rw-r--r--lib/private/App/AppStore/Bundles/EducationBundle.php4
-rw-r--r--lib/private/App/AppStore/Bundles/EnterpriseBundle.php1
-rw-r--r--lib/private/App/AppStore/Bundles/GroupwareBundle.php1
-rw-r--r--lib/private/App/AppStore/Bundles/HubBundle.php5
-rw-r--r--lib/private/App/AppStore/Bundles/SocialSharingBundle.php1
-rw-r--r--lib/private/App/AppStore/Fetcher/AppFetcher.php10
-rw-r--r--lib/private/App/AppStore/Fetcher/CategoryFetcher.php1
-rw-r--r--lib/private/App/AppStore/Fetcher/Fetcher.php6
-rw-r--r--lib/private/App/AppStore/Version/VersionParser.php11
-rw-r--r--lib/private/App/CodeChecker/CodeChecker.php24
-rw-r--r--lib/private/App/CodeChecker/InfoChecker.php2
-rw-r--r--lib/private/App/CodeChecker/MigrationSchemaChecker.php30
-rw-r--r--lib/private/App/CompareVersion.php15
-rw-r--r--lib/private/App/DependencyAnalyzer.php14
-rw-r--r--lib/private/App/InfoParser.php2
-rw-r--r--lib/private/App/Platform.php3
-rw-r--r--lib/private/App/PlatformRepository.php5
-rw-r--r--lib/private/AppConfig.php3
-rw-r--r--lib/private/AppFramework/App.php20
-rw-r--r--lib/private/AppFramework/DependencyInjection/DIContainer.php45
-rw-r--r--lib/private/AppFramework/Http.php34
-rw-r--r--lib/private/AppFramework/Http/Dispatcher.php20
-rw-r--r--lib/private/AppFramework/Http/Output.php1
-rw-r--r--lib/private/AppFramework/Http/Request.php164
-rw-r--r--lib/private/AppFramework/Middleware/AdditionalScriptsMiddleware.php1
-rw-r--r--lib/private/AppFramework/Middleware/CompressionMiddleware.php90
-rw-r--r--lib/private/AppFramework/Middleware/MiddlewareDispatcher.php18
-rw-r--r--lib/private/AppFramework/Middleware/NotModifiedMiddleware.php56
-rw-r--r--lib/private/AppFramework/Middleware/OCSMiddleware.php6
-rw-r--r--lib/private/AppFramework/Middleware/PublicShare/Exceptions/NeedAuthenticationException.php1
-rw-r--r--lib/private/AppFramework/Middleware/PublicShare/PublicShareMiddleware.php4
-rw-r--r--lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php5
-rw-r--r--lib/private/AppFramework/Middleware/Security/CORSMiddleware.php19
-rw-r--r--lib/private/AppFramework/Middleware/Security/CSPMiddleware.php3
-rw-r--r--lib/private/AppFramework/Middleware/Security/Exceptions/ReloadExecutionException.php1
-rw-r--r--lib/private/AppFramework/Middleware/Security/Exceptions/SecurityException.php4
-rw-r--r--lib/private/AppFramework/Middleware/Security/FeaturePolicyMiddleware.php5
-rw-r--r--lib/private/AppFramework/Middleware/Security/RateLimitingMiddleware.php9
-rw-r--r--lib/private/AppFramework/Middleware/Security/ReloadExecutionMiddleware.php2
-rw-r--r--lib/private/AppFramework/Middleware/Security/SameSiteCookieMiddleware.php5
-rw-r--r--lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php25
-rw-r--r--lib/private/AppFramework/Middleware/SessionMiddleware.php5
-rw-r--r--lib/private/AppFramework/OCS/BaseResponse.php6
-rw-r--r--lib/private/AppFramework/OCS/V2Response.php8
-rw-r--r--lib/private/AppFramework/Routing/RouteConfig.php213
-rw-r--r--lib/private/AppFramework/Services/AppConfig.php75
-rw-r--r--lib/private/AppFramework/Services/InitialState.php50
-rw-r--r--lib/private/AppFramework/Utility/ControllerMethodReflector.php9
-rw-r--r--lib/private/AppFramework/Utility/SimpleContainer.php9
-rw-r--r--lib/private/AppFramework/Utility/TimeFactory.php1
-rw-r--r--lib/private/Archive/Archive.php38
-rw-r--r--lib/private/Archive/TAR.php30
-rw-r--r--lib/private/Archive/ZIP.php41
-rw-r--r--lib/private/Authentication/Events/ARemoteWipeEvent.php2
-rw-r--r--lib/private/Authentication/Events/LoginFailed.php45
-rw-r--r--lib/private/Authentication/Events/RemoteWipeFinished.php1
-rw-r--r--lib/private/Authentication/Events/RemoteWipeStarted.php1
-rw-r--r--lib/private/Authentication/Exceptions/InvalidProviderException.php2
-rw-r--r--lib/private/Authentication/Exceptions/InvalidTokenException.php1
-rw-r--r--lib/private/Authentication/Exceptions/LoginRequiredException.php1
-rw-r--r--lib/private/Authentication/Exceptions/PasswordLoginForbiddenException.php1
-rw-r--r--lib/private/Authentication/Exceptions/PasswordlessTokenException.php1
-rw-r--r--lib/private/Authentication/Exceptions/TokenPasswordExpiredException.php1
-rw-r--r--lib/private/Authentication/Exceptions/TwoFactorAuthRequiredException.php1
-rw-r--r--lib/private/Authentication/Exceptions/UserAlreadyLoggedInException.php1
-rw-r--r--lib/private/Authentication/Listeners/LoginFailedListener.php66
-rw-r--r--lib/private/Authentication/Listeners/RemoteWipeActivityListener.php4
-rw-r--r--lib/private/Authentication/Listeners/RemoteWipeEmailListener.php3
-rw-r--r--lib/private/Authentication/Listeners/RemoteWipeNotificationsListener.php4
-rw-r--r--lib/private/Authentication/Listeners/UserDeletedStoreCleanupListener.php1
-rw-r--r--lib/private/Authentication/Login/ALoginCommand.php3
-rw-r--r--lib/private/Authentication/Login/Chain.php1
-rw-r--r--lib/private/Authentication/Login/ClearLostPasswordTokensCommand.php1
-rw-r--r--lib/private/Authentication/Login/CompleteLoginCommand.php1
-rw-r--r--lib/private/Authentication/Login/CreateSessionTokenCommand.php36
-rw-r--r--lib/private/Authentication/Login/EmailLoginCommand.php1
-rw-r--r--lib/private/Authentication/Login/FinishRememberedLoginCommand.php10
-rw-r--r--lib/private/Authentication/Login/LoggedInCheckCommand.php18
-rw-r--r--lib/private/Authentication/Login/LoginData.php6
-rw-r--r--lib/private/Authentication/Login/LoginResult.php1
-rw-r--r--lib/private/Authentication/Login/SetUserTimezoneCommand.php1
-rw-r--r--lib/private/Authentication/Login/TwoFactorCommand.php3
-rw-r--r--lib/private/Authentication/Login/UidLoginCommand.php1
-rw-r--r--lib/private/Authentication/Login/UpdateLastPasswordConfirmCommand.php1
-rw-r--r--lib/private/Authentication/Login/UserDisabledCheckCommand.php1
-rw-r--r--lib/private/Authentication/Login/WebAuthnChain.php98
-rw-r--r--lib/private/Authentication/Login/WebAuthnLoginCommand.php49
-rw-r--r--lib/private/Authentication/LoginCredentials/Credentials.php1
-rw-r--r--lib/private/Authentication/LoginCredentials/Store.php1
-rw-r--r--lib/private/Authentication/Token/DefaultToken.php3
-rw-r--r--lib/private/Authentication/Token/DefaultTokenCleanupJob.php2
-rw-r--r--lib/private/Authentication/Token/DefaultTokenMapper.php2
-rw-r--r--lib/private/Authentication/Token/DefaultTokenProvider.php1
-rw-r--r--lib/private/Authentication/Token/INamedToken.php1
-rw-r--r--lib/private/Authentication/Token/IToken.php11
-rw-r--r--lib/private/Authentication/Token/IWipeableToken.php1
-rw-r--r--lib/private/Authentication/Token/Manager.php4
-rw-r--r--lib/private/Authentication/Token/PublicKeyToken.php4
-rw-r--r--lib/private/Authentication/Token/PublicKeyTokenMapper.php1
-rw-r--r--lib/private/Authentication/Token/RemoteWipe.php13
-rw-r--r--lib/private/Authentication/TwoFactorAuth/Db/ProviderUserAssignmentDao.php5
-rw-r--r--lib/private/Authentication/TwoFactorAuth/EnforcementState.php1
-rw-r--r--lib/private/Authentication/TwoFactorAuth/Manager.php19
-rw-r--r--lib/private/Authentication/TwoFactorAuth/MandatoryTwoFactor.php2
-rw-r--r--lib/private/Authentication/TwoFactorAuth/ProviderLoader.php4
-rw-r--r--lib/private/Authentication/TwoFactorAuth/ProviderManager.php2
-rw-r--r--lib/private/Authentication/TwoFactorAuth/ProviderSet.php3
-rw-r--r--lib/private/Authentication/WebAuthn/CredentialRepository.php95
-rw-r--r--lib/private/Authentication/WebAuthn/Db/PublicKeyCredentialEntity.php93
-rw-r--r--lib/private/Authentication/WebAuthn/Db/PublicKeyCredentialMapper.php84
-rw-r--r--lib/private/Authentication/WebAuthn/Manager.php270
-rw-r--r--lib/private/Avatar/Avatar.php13
-rw-r--r--lib/private/Avatar/AvatarManager.php20
-rw-r--r--lib/private/Avatar/UserAvatar.php7
-rw-r--r--lib/private/BackgroundJob/Job.php1
-rw-r--r--lib/private/BackgroundJob/JobList.php1
-rw-r--r--lib/private/BackgroundJob/Legacy/QueuedJob.php5
-rw-r--r--lib/private/BackgroundJob/QueuedJob.php2
-rw-r--r--lib/private/BackgroundJob/TimedJob.php2
-rw-r--r--lib/private/Broadcast/Events/BroadcastEvent.php1
-rw-r--r--lib/private/Cache/CappedMemoryCache.php1
-rw-r--r--lib/private/Cache/File.php7
-rw-r--r--lib/private/Calendar/Manager.php7
-rw-r--r--lib/private/Calendar/Resource/Manager.php5
-rw-r--r--lib/private/Calendar/Room/Manager.php5
-rw-r--r--lib/private/CapabilitiesManager.php9
-rw-r--r--lib/private/Collaboration/AutoComplete/Manager.php11
-rw-r--r--lib/private/Collaboration/Collaborators/GroupPlugin.php16
-rw-r--r--lib/private/Collaboration/Collaborators/LookupPlugin.php3
-rw-r--r--lib/private/Collaboration/Collaborators/MailPlugin.php25
-rw-r--r--lib/private/Collaboration/Collaborators/RemoteGroupPlugin.php2
-rw-r--r--lib/private/Collaboration/Collaborators/RemotePlugin.php7
-rw-r--r--lib/private/Collaboration/Collaborators/Search.php15
-rw-r--r--lib/private/Collaboration/Collaborators/SearchResult.php13
-rw-r--r--lib/private/Collaboration/Collaborators/UserPlugin.php70
-rw-r--r--lib/private/Collaboration/Resources/Collection.php7
-rw-r--r--lib/private/Collaboration/Resources/Listener.php10
-rw-r--r--lib/private/Collaboration/Resources/Manager.php3
-rw-r--r--lib/private/Collaboration/Resources/Resource.php1
-rw-r--r--lib/private/Color.php5
-rw-r--r--lib/private/Command/CronBus.php7
-rw-r--r--lib/private/Command/FileAccess.php3
-rw-r--r--lib/private/Command/QueueBus.php3
-rw-r--r--lib/private/Comments/Comment.php71
-rw-r--r--lib/private/Comments/Manager.php83
-rw-r--r--lib/private/Config.php28
-rw-r--r--lib/private/Console/Application.php5
-rw-r--r--lib/private/Console/TimestampFormatter.php2
-rw-r--r--lib/private/Contacts/ContactsMenu/ActionFactory.php1
-rw-r--r--lib/private/Contacts/ContactsMenu/ActionProviderStore.php5
-rw-r--r--lib/private/Contacts/ContactsMenu/Actions/LinkAction.php1
-rw-r--r--lib/private/Contacts/ContactsMenu/ContactsStore.php27
-rw-r--r--lib/private/Contacts/ContactsMenu/Entry.php5
-rw-r--r--lib/private/Contacts/ContactsMenu/Manager.php3
-rw-r--r--lib/private/Contacts/ContactsMenu/Providers/EMailProvider.php1
-rw-r--r--lib/private/ContactsManager.php45
-rw-r--r--lib/private/DB/Adapter.php7
-rw-r--r--lib/private/DB/AdapterOCI8.php3
-rw-r--r--lib/private/DB/AdapterPgSql.php13
-rw-r--r--lib/private/DB/AdapterSqlite.php9
-rw-r--r--lib/private/DB/Connection.php26
-rw-r--r--lib/private/DB/ConnectionFactory.php9
-rw-r--r--lib/private/DB/MDB2SchemaManager.php7
-rw-r--r--lib/private/DB/MDB2SchemaReader.php11
-rw-r--r--lib/private/DB/MDB2SchemaWriter.php22
-rw-r--r--lib/private/DB/MigrationException.php1
-rw-r--r--lib/private/DB/MigrationService.php16
-rw-r--r--lib/private/DB/Migrator.php10
-rw-r--r--lib/private/DB/MissingColumnInformation.php42
-rw-r--r--lib/private/DB/MissingIndexInformation.php1
-rw-r--r--lib/private/DB/MySQLMigrator.php40
-rw-r--r--lib/private/DB/MySqlTools.php5
-rw-r--r--lib/private/DB/OCSqlitePlatform.php1
-rw-r--r--lib/private/DB/OracleConnection.php15
-rw-r--r--lib/private/DB/OracleMigrator.php38
-rw-r--r--lib/private/DB/PgSqlTools.php20
-rw-r--r--lib/private/DB/QueryBuilder/CompositeExpression.php6
-rw-r--r--lib/private/DB/QueryBuilder/ExpressionBuilder/MySqlExpressionBuilder.php2
-rw-r--r--lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php1
-rw-r--r--lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php2
-rw-r--r--lib/private/DB/QueryBuilder/ExpressionBuilder/SqliteExpressionBuilder.php1
-rw-r--r--lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php1
-rw-r--r--lib/private/DB/QueryBuilder/Literal.php3
-rw-r--r--lib/private/DB/QueryBuilder/QueryBuilder.php15
-rw-r--r--lib/private/DB/ReconnectWrapper.php3
-rw-r--r--lib/private/DB/SQLiteMigrator.php5
-rw-r--r--lib/private/DB/SQLiteSessionInit.php3
-rw-r--r--lib/private/DB/SchemaWrapper.php3
-rw-r--r--lib/private/DB/SetTransactionIsolationLevel.php2
-rw-r--r--lib/private/Dashboard/DashboardManager.php2
-rw-r--r--lib/private/DateTimeFormatter.php19
-rw-r--r--lib/private/DateTimeZone.php4
-rw-r--r--lib/private/Diagnostics/EventLogger.php3
-rw-r--r--lib/private/DirectEditing/Manager.php6
-rw-r--r--lib/private/DirectEditing/Token.php2
-rw-r--r--lib/private/Encryption/DecryptAll.php12
-rw-r--r--lib/private/Encryption/EncryptionWrapper.php3
-rw-r--r--lib/private/Encryption/Exceptions/DecryptionFailedException.php1
-rw-r--r--lib/private/Encryption/Exceptions/EmptyEncryptionDataException.php4
-rw-r--r--lib/private/Encryption/Exceptions/EncryptionFailedException.php4
-rw-r--r--lib/private/Encryption/Exceptions/EncryptionHeaderToLargeException.php2
-rw-r--r--lib/private/Encryption/Exceptions/ModuleAlreadyExistsException.php1
-rw-r--r--lib/private/Encryption/Exceptions/ModuleDoesNotExistsException.php1
-rw-r--r--lib/private/Encryption/Exceptions/UnknownCipherException.php1
-rw-r--r--lib/private/Encryption/File.php8
-rw-r--r--lib/private/Encryption/Keys/Storage.php9
-rw-r--r--lib/private/Encryption/Manager.php14
-rw-r--r--lib/private/Encryption/Update.php18
-rw-r--r--lib/private/Encryption/Util.php32
-rw-r--r--lib/private/EventDispatcher/EventDispatcher.php2
-rw-r--r--lib/private/EventDispatcher/ServiceEventListener.php1
-rw-r--r--lib/private/EventDispatcher/SymfonyAdapter.php1
-rw-r--r--lib/private/Federation/CloudFederationNotification.php2
-rw-r--r--lib/private/Federation/CloudFederationProviderManager.php6
-rw-r--r--lib/private/Federation/CloudFederationShare.php2
-rw-r--r--lib/private/Federation/CloudIdManager.php5
-rw-r--r--lib/private/Files/AppData/AppData.php1
-rw-r--r--lib/private/Files/AppData/Factory.php1
-rw-r--r--lib/private/Files/Cache/AbstractCacheEvent.php1
-rw-r--r--lib/private/Files/Cache/Cache.php29
-rw-r--r--lib/private/Files/Cache/HomeCache.php5
-rw-r--r--lib/private/Files/Cache/Propagator.php2
-rw-r--r--lib/private/Files/Cache/QuerySearchHelper.php22
-rw-r--r--lib/private/Files/Cache/Scanner.php88
-rw-r--r--lib/private/Files/Cache/Storage.php8
-rw-r--r--lib/private/Files/Cache/Updater.php4
-rw-r--r--lib/private/Files/Cache/Watcher.php5
-rw-r--r--lib/private/Files/Cache/Wrapper/CacheJail.php12
-rw-r--r--lib/private/Files/Cache/Wrapper/CacheWrapper.php11
-rw-r--r--lib/private/Files/Cache/Wrapper/JailPropagator.php1
-rw-r--r--lib/private/Files/Config/CachedMountFileInfo.php1
-rw-r--r--lib/private/Files/Config/MountProviderCollection.php5
-rw-r--r--lib/private/Files/FileInfo.php7
-rw-r--r--lib/private/Files/Filesystem.php165
-rw-r--r--lib/private/Files/Mount/MountPoint.php7
-rw-r--r--lib/private/Files/Mount/ObjectHomeMountProvider.php1
-rw-r--r--lib/private/Files/Node/File.php11
-rw-r--r--lib/private/Files/Node/Folder.php21
-rw-r--r--lib/private/Files/Node/HookConnector.php1
-rw-r--r--lib/private/Files/Node/LazyFolder.php496
-rw-r--r--lib/private/Files/Node/LazyRoot.php458
-rw-r--r--lib/private/Files/Node/Node.php6
-rw-r--r--lib/private/Files/Node/Root.php11
-rw-r--r--lib/private/Files/ObjectStore/HomeObjectStoreStorage.php7
-rw-r--r--lib/private/Files/ObjectStore/NoopScanner.php9
-rw-r--r--lib/private/Files/ObjectStore/ObjectStoreStorage.php12
-rw-r--r--lib/private/Files/ObjectStore/S3ConnectionTrait.php3
-rw-r--r--lib/private/Files/ObjectStore/S3ObjectTrait.php52
-rw-r--r--lib/private/Files/ObjectStore/S3Signature.php15
-rw-r--r--lib/private/Files/ObjectStore/StorageObjectStore.php9
-rw-r--r--lib/private/Files/ObjectStore/Swift.php51
-rw-r--r--lib/private/Files/ObjectStore/SwiftFactory.php43
-rw-r--r--lib/private/Files/ObjectStore/SwiftV2CachingAuthService.php1
-rw-r--r--lib/private/Files/Search/SearchOrder.php1
-rw-r--r--lib/private/Files/SimpleFS/NewSimpleFile.php9
-rw-r--r--lib/private/Files/SimpleFS/SimpleFile.php4
-rw-r--r--lib/private/Files/SimpleFS/SimpleFolder.php6
-rw-r--r--lib/private/Files/Storage/Common.php41
-rw-r--r--lib/private/Files/Storage/CommonTest.php5
-rw-r--r--lib/private/Files/Storage/DAV.php36
-rw-r--r--lib/private/Files/Storage/Flysystem.php2
-rw-r--r--lib/private/Files/Storage/Local.php75
-rw-r--r--lib/private/Files/Storage/Storage.php20
-rw-r--r--lib/private/Files/Storage/Temporary.php5
-rw-r--r--lib/private/Files/Storage/Wrapper/Availability.php16
-rw-r--r--lib/private/Files/Storage/Wrapper/Encoding.php5
-rw-r--r--lib/private/Files/Storage/Wrapper/Encryption.php102
-rw-r--r--lib/private/Files/Storage/Wrapper/Jail.php4
-rw-r--r--lib/private/Files/Storage/Wrapper/PermissionsMask.php9
-rw-r--r--lib/private/Files/Storage/Wrapper/Quota.php28
-rw-r--r--lib/private/Files/Storage/Wrapper/Wrapper.php7
-rw-r--r--lib/private/Files/Stream/Encryption.php29
-rw-r--r--lib/private/Files/Stream/HashWrapper.php77
-rw-r--r--lib/private/Files/Stream/Quota.php18
-rw-r--r--lib/private/Files/Stream/SeekableHttpStream.php194
-rw-r--r--lib/private/Files/Type/Detection.php5
-rw-r--r--lib/private/Files/Type/Loader.php3
-rw-r--r--lib/private/Files/Type/TemplateManager.php3
-rw-r--r--lib/private/Files/Utils/Scanner.php11
-rw-r--r--lib/private/Files/View.php115
-rw-r--r--lib/private/FullTextSearch/FullTextSearchManager.php3
-rw-r--r--lib/private/FullTextSearch/Model/DocumentAccess.php1
-rw-r--r--lib/private/FullTextSearch/Model/IndexDocument.php3
-rw-r--r--lib/private/FullTextSearch/Model/SearchOption.php1
-rw-r--r--lib/private/FullTextSearch/Model/SearchRequestSimpleQuery.php2
-rw-r--r--lib/private/FullTextSearch/Model/SearchTemplate.php1
-rw-r--r--lib/private/GlobalScale/Config.php2
-rw-r--r--lib/private/Group/Backend.php39
-rw-r--r--lib/private/Group/Database.php60
-rw-r--r--lib/private/Group/Group.php35
-rw-r--r--lib/private/Group/Manager.php58
-rw-r--r--lib/private/Group/MetaData.php48
-rw-r--r--lib/private/HintException.php1
-rw-r--r--lib/private/Hooks/EmitterTrait.php11
-rw-r--r--lib/private/Hooks/ForwardingEmitter.php3
-rw-r--r--lib/private/Hooks/LegacyEmitter.php3
-rw-r--r--lib/private/Hooks/PublicEmitter.php2
-rw-r--r--lib/private/Http/Client/Client.php113
-rw-r--r--lib/private/Http/Client/ClientService.php13
-rw-r--r--lib/private/Http/CookieHelper.php10
-rw-r--r--lib/private/InitialStateService.php1
-rw-r--r--lib/private/Installer.php75
-rw-r--r--lib/private/IntegrityCheck/Checker.php86
-rw-r--r--lib/private/IntegrityCheck/Exceptions/InvalidSignatureException.php4
-rw-r--r--lib/private/IntegrityCheck/Helpers/AppLocator.php4
-rw-r--r--lib/private/IntegrityCheck/Helpers/FileAccessHelper.php3
-rw-r--r--lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php5
-rw-r--r--lib/private/L10N/Factory.php62
-rw-r--r--lib/private/L10N/L10N.php9
-rw-r--r--lib/private/L10N/L10NString.php8
-rw-r--r--lib/private/L10N/LanguageIterator.php20
-rw-r--r--lib/private/L10N/LanguageNotFoundException.php1
-rw-r--r--lib/private/L10N/LazyL10N.php1
-rwxr-xr-xlib/private/LargeFileHelper.php119
-rw-r--r--lib/private/Lock/AbstractLockingProvider.php5
-rw-r--r--lib/private/Lock/DBLockingProvider.php8
-rw-r--r--lib/private/Lock/MemcacheLockingProvider.php9
-rw-r--r--lib/private/Lockdown/Filesystem/NullCache.php1
-rw-r--r--lib/private/Log.php2
-rw-r--r--lib/private/Log/ErrorHandler.php22
-rw-r--r--lib/private/Log/ExceptionSerializer.php9
-rw-r--r--lib/private/Log/File.php6
-rw-r--r--lib/private/Log/LogDetails.php12
-rw-r--r--lib/private/Log/LogFactory.php3
-rw-r--r--lib/private/Log/PsrLoggerAdapter.php166
-rw-r--r--lib/private/Log/Rotate.php4
-rw-r--r--lib/private/Log/Systemdlog.php5
-rw-r--r--lib/private/Mail/Attachment.php1
-rw-r--r--lib/private/Mail/EMailTemplate.php138
-rw-r--r--lib/private/Mail/Mailer.php29
-rw-r--r--lib/private/Mail/Message.php22
-rw-r--r--lib/private/Memcache/APCu.php5
-rw-r--r--lib/private/Memcache/ArrayCache.php5
-rw-r--r--lib/private/Memcache/Factory.php6
-rw-r--r--lib/private/Memcache/Memcached.php5
-rw-r--r--lib/private/Memcache/NullCache.php3
-rw-r--r--lib/private/Memcache/Redis.php3
-rw-r--r--lib/private/MemoryInfo.php10
-rw-r--r--lib/private/Migration/ConsoleOutput.php1
-rw-r--r--lib/private/Migration/SimpleOutput.php1
-rw-r--r--lib/private/NaturalSort.php8
-rw-r--r--lib/private/NavigationManager.php17
-rw-r--r--lib/private/Notification/Action.php1
-rw-r--r--lib/private/Notification/Manager.php1
-rw-r--r--lib/private/Notification/Notification.php1
-rw-r--r--lib/private/OCS/DiscoveryService.php9
-rw-r--r--lib/private/OCS/Exception.php1
-rw-r--r--lib/private/OCS/Provider.php7
-rw-r--r--lib/private/OCS/Result.php15
-rw-r--r--lib/private/Preview/BackgroundCleanupJob.php94
-rw-r--r--lib/private/Preview/Bitmap.php2
-rw-r--r--lib/private/Preview/Bundled.php54
-rw-r--r--lib/private/Preview/Generator.php123
-rw-r--r--lib/private/Preview/GeneratorHelper.php2
-rw-r--r--lib/private/Preview/HEIC.php1
-rw-r--r--lib/private/Preview/Image.php1
-rw-r--r--lib/private/Preview/Krita.php52
-rw-r--r--lib/private/Preview/MP3.php5
-rw-r--r--lib/private/Preview/MarkDown.php1
-rw-r--r--lib/private/Preview/Office.php1
-rw-r--r--lib/private/Preview/OpenDocument.php18
-rw-r--r--lib/private/Preview/ProviderV1Adapter.php1
-rw-r--r--lib/private/Preview/Storage/Root.php72
-rw-r--r--lib/private/Preview/TXT.php7
-rw-r--r--lib/private/PreviewManager.php54
-rw-r--r--lib/private/RedisFactory.php4
-rw-r--r--lib/private/Remote/Api/ApiCollection.php1
-rw-r--r--lib/private/Remote/Api/ApiFactory.php1
-rw-r--r--lib/private/Remote/Api/NotFoundException.php2
-rw-r--r--lib/private/Remote/Api/OCS.php4
-rw-r--r--lib/private/Remote/Credentials.php1
-rw-r--r--lib/private/Remote/InstanceFactory.php1
-rw-r--r--lib/private/Remote/User.php4
-rw-r--r--lib/private/Repair.php9
-rw-r--r--lib/private/Repair/CleanTags.php3
-rw-r--r--lib/private/Repair/ClearGeneratedAvatarCache.php1
-rw-r--r--lib/private/Repair/Collation.php3
-rw-r--r--lib/private/Repair/MoveUpdaterStepFile.php12
-rw-r--r--lib/private/Repair/NC13/AddLogRotateJob.php1
-rw-r--r--lib/private/Repair/NC14/AddPreviewBackgroundCleanupJob.php1
-rw-r--r--lib/private/Repair/NC16/AddClenupLoginFlowV2BackgroundJob.php1
-rw-r--r--lib/private/Repair/NC17/SetEnterpriseLogo.php121
-rw-r--r--lib/private/Repair/NC17/SwitchUpdateChannel.php66
-rw-r--r--lib/private/Repair/Owncloud/SaveAccountsTableData.php7
-rw-r--r--lib/private/Repair/RemoveLinkShares.php3
-rw-r--r--lib/private/Repair/RepairInvalidShares.php4
-rw-r--r--lib/private/Repair/RepairMimeTypes.php20
-rw-r--r--lib/private/RichObjectStrings/Validator.php1
-rw-r--r--lib/private/Route/CachingRouter.php3
-rw-r--r--lib/private/Route/Route.php5
-rw-r--r--lib/private/Route/Router.php43
-rw-r--r--lib/private/Search.php34
-rw-r--r--lib/private/Search/Provider/File.php13
-rw-r--r--lib/private/Search/Result/Audio.php3
-rw-r--r--lib/private/Search/Result/File.php14
-rw-r--r--lib/private/Search/Result/Folder.php4
-rw-r--r--lib/private/Search/Result/Image.php3
-rw-r--r--lib/private/Security/Bruteforce/Throttler.php18
-rw-r--r--lib/private/Security/CSP/ContentSecurityPolicy.php3
-rw-r--r--lib/private/Security/CSP/ContentSecurityPolicyManager.php7
-rw-r--r--lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php6
-rw-r--r--lib/private/Security/CSRF/CsrfToken.php3
-rw-r--r--lib/private/Security/CSRF/CsrfTokenManager.php7
-rw-r--r--lib/private/Security/CSRF/TokenStorage/SessionStorage.php3
-rw-r--r--lib/private/Security/Certificate.php5
-rw-r--r--lib/private/Security/CertificateManager.php12
-rw-r--r--lib/private/Security/CredentialsManager.php18
-rw-r--r--lib/private/Security/Crypto.php26
-rw-r--r--lib/private/Security/FeaturePolicy/FeaturePolicy.php1
-rw-r--r--lib/private/Security/Hasher.php34
-rw-r--r--lib/private/Security/IdentityProof/Manager.php6
-rw-r--r--lib/private/Security/IdentityProof/Signer.php5
-rw-r--r--lib/private/Security/Normalizer/IpAddress.php2
-rw-r--r--lib/private/Security/RateLimiting/Backend/MemoryCache.php7
-rw-r--r--lib/private/Security/SecureRandom.php3
-rw-r--r--lib/private/Security/TrustedDomainHelper.php15
-rw-r--r--lib/private/Server.php88
-rw-r--r--lib/private/ServerContainer.php3
-rw-r--r--lib/private/ServerNotAvailableException.php2
-rw-r--r--lib/private/Session/CryptoSessionData.php8
-rw-r--r--lib/private/Session/CryptoWrapper.php5
-rw-r--r--lib/private/Session/Internal.php6
-rw-r--r--lib/private/Session/Memory.php3
-rw-r--r--lib/private/Settings/Manager.php4
-rw-r--r--lib/private/Setup.php14
-rw-r--r--lib/private/Setup/AbstractDatabase.php26
-rw-r--r--lib/private/Setup/MySQL.php8
-rw-r--r--lib/private/Setup/OCI.php16
-rw-r--r--lib/private/Setup/Sqlite.php3
-rw-r--r--lib/private/Share/Constants.php38
-rw-r--r--lib/private/Share/Helper.php30
-rw-r--r--lib/private/Share/SearchResultSorter.php9
-rw-r--r--lib/private/Share/Share.php149
-rw-r--r--lib/private/Share20/DefaultShareProvider.php86
-rw-r--r--lib/private/Share20/Exception/BackendError.php1
-rw-r--r--lib/private/Share20/Exception/InvalidShare.php1
-rw-r--r--lib/private/Share20/Exception/ProviderException.php2
-rw-r--r--lib/private/Share20/LegacyHooks.php3
-rw-r--r--lib/private/Share20/Manager.php116
-rw-r--r--lib/private/Share20/ProviderFactory.php20
-rw-r--r--lib/private/Share20/Share.php8
-rw-r--r--lib/private/Streamer.php17
-rw-r--r--lib/private/SubAdmin.php61
-rw-r--r--lib/private/Support/CrashReport/Registry.php1
-rw-r--r--lib/private/SystemConfig.php1
-rw-r--r--lib/private/SystemTag/SystemTagManager.php6
-rw-r--r--lib/private/SystemTag/SystemTagObjectMapper.php20
-rw-r--r--lib/private/TagManager.php35
-rw-r--r--lib/private/Tagging/Tag.php30
-rw-r--r--lib/private/Tagging/TagMapper.php39
-rw-r--r--lib/private/Tags.php460
-rw-r--r--lib/private/TempManager.php8
-rw-r--r--lib/private/Template/Base.php28
-rw-r--r--lib/private/Template/CSSResourceLocator.php10
-rw-r--r--lib/private/Template/IconsCacher.php6
-rw-r--r--lib/private/Template/JSCombiner.php15
-rw-r--r--lib/private/Template/JSConfigHelper.php68
-rw-r--r--lib/private/Template/JSResourceLocator.php3
-rwxr-xr-xlib/private/Template/ResourceLocator.php6
-rw-r--r--lib/private/Template/SCSSCacher.php1
-rw-r--r--lib/private/Template/TemplateFileLocator.php7
-rw-r--r--lib/private/TemplateLayout.php90
-rw-r--r--lib/private/URLGenerator.php20
-rw-r--r--lib/private/Updater.php75
-rw-r--r--lib/private/Updater/ChangesCheck.php26
-rw-r--r--lib/private/Updater/ChangesMapper.php3
-rw-r--r--lib/private/User/Backend.php77
-rw-r--r--lib/private/User/Database.php20
-rw-r--r--lib/private/User/Manager.php30
-rw-r--r--lib/private/User/NoUserException.php5
-rw-r--r--lib/private/User/Session.php33
-rw-r--r--lib/private/User/User.php35
-rw-r--r--lib/private/legacy/OC_API.php (renamed from lib/private/legacy/api.php)25
-rw-r--r--lib/private/legacy/OC_App.php (renamed from lib/private/legacy/app.php)80
-rw-r--r--lib/private/legacy/OC_DB.php (renamed from lib/private/legacy/db.php)19
-rw-r--r--lib/private/legacy/OC_DB_StatementWrapper.php (renamed from lib/private/legacy/db/statementwrapper.php)7
-rw-r--r--lib/private/legacy/OC_Defaults.php (renamed from lib/private/legacy/defaults.php)15
-rw-r--r--lib/private/legacy/OC_EventSource.php (renamed from lib/private/legacy/eventsource.php)3
-rw-r--r--lib/private/legacy/OC_FileChunking.php (renamed from lib/private/legacy/filechunking.php)7
-rw-r--r--lib/private/legacy/OC_Files.php (renamed from lib/private/legacy/files.php)113
-rw-r--r--lib/private/legacy/OC_Helper.php (renamed from lib/private/legacy/helper.php)47
-rw-r--r--lib/private/legacy/OC_Hook.php (renamed from lib/private/legacy/hook.php)51
-rw-r--r--lib/private/legacy/OC_Image.php (renamed from lib/private/legacy/image.php)211
-rw-r--r--lib/private/legacy/OC_JSON.php (renamed from lib/private/legacy/json.php)31
-rw-r--r--lib/private/legacy/OC_Response.php (renamed from lib/private/legacy/response.php)14
-rw-r--r--lib/private/legacy/OC_Template.php (renamed from lib/private/legacy/template.php)73
-rw-r--r--lib/private/legacy/OC_User.php (renamed from lib/private/legacy/user.php)15
-rw-r--r--lib/private/legacy/OC_Util.php (renamed from lib/private/legacy/util.php)153
-rw-r--r--lib/private/legacy/template/functions.php71
-rw-r--r--lib/public/API.php9
-rw-r--r--lib/public/Accounts/IAccount.php1
-rw-r--r--lib/public/Accounts/IAccountManager.php28
-rw-r--r--lib/public/Accounts/IAccountProperty.php1
-rw-r--r--lib/public/Accounts/PropertyDoesNotExistException.php4
-rw-r--r--lib/public/Activity/IEventMerger.php2
-rw-r--r--lib/public/Activity/IExtension.php16
-rw-r--r--lib/public/App.php23
-rw-r--r--lib/public/App/AppPathNotFoundException.php5
-rw-r--r--lib/public/App/ManagerEvent.php10
-rw-r--r--lib/public/AppFramework/ApiController.php102
-rw-r--r--lib/public/AppFramework/App.php9
-rw-r--r--lib/public/AppFramework/AuthPublicShareController.php7
-rw-r--r--lib/public/AppFramework/Controller.php20
-rw-r--r--lib/public/AppFramework/Db/DoesNotExistException.php5
-rw-r--r--lib/public/AppFramework/Db/Entity.php49
-rw-r--r--lib/public/AppFramework/Db/IMapperException.php4
-rw-r--r--lib/public/AppFramework/Db/Mapper.php42
-rw-r--r--lib/public/AppFramework/Db/MultipleObjectsReturnedException.php5
-rw-r--r--lib/public/AppFramework/Db/QBMapper.php26
-rw-r--r--lib/public/AppFramework/Http.php120
-rw-r--r--lib/public/AppFramework/Http/ContentSecurityPolicy.php2
-rw-r--r--lib/public/AppFramework/Http/DataDisplayResponse.php8
-rw-r--r--lib/public/AppFramework/Http/DataResponse.php11
-rw-r--r--lib/public/AppFramework/Http/DownloadResponse.php4
-rw-r--r--lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php38
-rw-r--r--lib/public/AppFramework/Http/ICallbackResponse.php2
-rw-r--r--lib/public/AppFramework/Http/IOutput.php2
-rw-r--r--lib/public/AppFramework/Http/JSONResponse.php10
-rw-r--r--lib/public/AppFramework/Http/OCSResponse.php3
-rw-r--r--lib/public/AppFramework/Http/RedirectResponse.php3
-rw-r--r--lib/public/AppFramework/Http/RedirectToDefaultAppResponse.php2
-rw-r--r--lib/public/AppFramework/Http/Response.php31
-rw-r--r--lib/public/AppFramework/Http/StandaloneTemplateResponse.php1
-rw-r--r--lib/public/AppFramework/Http/StreamResponse.php6
-rw-r--r--lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php1
-rw-r--r--lib/public/AppFramework/Http/Template/IMenuAction.php1
-rw-r--r--lib/public/AppFramework/Http/Template/LinkMenuAction.php1
-rw-r--r--lib/public/AppFramework/Http/Template/PublicTemplateResponse.php7
-rw-r--r--lib/public/AppFramework/Http/Template/SimpleMenuAction.php1
-rw-r--r--lib/public/AppFramework/Http/TemplateResponse.php26
-rw-r--r--lib/public/AppFramework/IAppContainer.php3
-rw-r--r--lib/public/AppFramework/Middleware.php12
-rw-r--r--lib/public/AppFramework/OCS/OCSBadRequestException.php1
-rw-r--r--lib/public/AppFramework/OCS/OCSException.php4
-rw-r--r--lib/public/AppFramework/OCSController.php4
-rw-r--r--lib/public/AppFramework/PublicShareController.php1
-rw-r--r--lib/public/AppFramework/QueryException.php4
-rw-r--r--lib/public/AppFramework/Services/IAppConfig.php111
-rw-r--r--lib/public/AppFramework/Services/IInitialState.php58
-rw-r--r--lib/public/AppFramework/Utility/IControllerMethodReflector.php1
-rw-r--r--lib/public/AppFramework/Utility/ITimeFactory.php2
-rw-r--r--lib/public/Authentication/Events/LoginFailedEvent.php60
-rw-r--r--lib/public/Authentication/Exceptions/CredentialsUnavailableException.php1
-rw-r--r--lib/public/Authentication/Exceptions/PasswordUnavailableException.php1
-rw-r--r--lib/public/Authentication/IApacheBackend.php1
-rw-r--r--lib/public/Authentication/LoginCredentials/IStore.php1
-rw-r--r--lib/public/Authentication/TwoFactorAuth/ALoginSetupController.php1
-rw-r--r--lib/public/Authentication/TwoFactorAuth/IActivatableAtLogin.php1
-rw-r--r--lib/public/Authentication/TwoFactorAuth/IActivatableByAdmin.php1
-rw-r--r--lib/public/Authentication/TwoFactorAuth/IDeactivatableByAdmin.php1
-rw-r--r--lib/public/Authentication/TwoFactorAuth/ILoginSetupProvider.php1
-rw-r--r--lib/public/Authentication/TwoFactorAuth/IPersonalProviderSettings.php1
-rw-r--r--lib/public/Authentication/TwoFactorAuth/IProvider.php4
-rw-r--r--lib/public/Authentication/TwoFactorAuth/IProvidesIcons.php1
-rw-r--r--lib/public/Authentication/TwoFactorAuth/IProvidesPersonalSettings.php1
-rw-r--r--lib/public/Authentication/TwoFactorAuth/IRegistry.php9
-rw-r--r--lib/public/Authentication/TwoFactorAuth/TwoFactorException.php1
-rw-r--r--lib/public/BackgroundJob/IJob.php2
-rw-r--r--lib/public/BackgroundJob/Job.php3
-rw-r--r--lib/public/Broadcast/Events/IBroadcastEvent.php1
-rw-r--r--lib/public/Calendar/BackendTemporarilyUnavailableException.php4
-rw-r--r--lib/public/Calendar/Resource/IBackend.php2
-rw-r--r--lib/public/Calendar/Room/IBackend.php2
-rw-r--r--lib/public/Capabilities/IPublicCapability.php4
-rw-r--r--lib/public/Collaboration/AutoComplete/AutoCompleteEvent.php2
-rw-r--r--lib/public/Collaboration/Collaborators/SearchResultType.php5
-rw-r--r--lib/public/Collaboration/Resources/CollectionException.php1
-rw-r--r--lib/public/Collaboration/Resources/IProvider.php1
-rw-r--r--lib/public/Collaboration/Resources/ResourceException.php2
-rw-r--r--lib/public/Comments/CommentsEntityEvent.php4
-rw-r--r--lib/public/Comments/CommentsEvent.php10
-rw-r--r--lib/public/Comments/IComment.php19
-rw-r--r--lib/public/Comments/ICommentsManager.php4
-rw-r--r--lib/public/Comments/IllegalIDChangeException.php4
-rw-r--r--lib/public/Comments/MessageTooLongException.php4
-rw-r--r--lib/public/Comments/NotFoundException.php4
-rw-r--r--lib/public/Console/ConsoleEvent.php4
-rw-r--r--lib/public/Constants.php15
-rw-r--r--lib/public/Contacts/ContactsMenu/IContactsStore.php1
-rw-r--r--lib/public/Contacts/Events/ContactInteractedWithEvent.php136
-rw-r--r--lib/public/Contacts/IManager.php12
-rw-r--r--lib/public/DB/QueryBuilder/ICompositeExpression.php3
-rw-r--r--lib/public/DB/QueryBuilder/IExpressionBuilder.php14
-rw-r--r--lib/public/DB/QueryBuilder/IQueryBuilder.php20
-rw-r--r--lib/public/Dashboard/IDashboardManager.php2
-rw-r--r--lib/public/Dashboard/IDashboardWidget.php2
-rw-r--r--lib/public/Dashboard/Model/IWidgetConfig.php3
-rw-r--r--lib/public/Dashboard/Model/IWidgetRequest.php2
-rw-r--r--lib/public/Dashboard/Model/WidgetSetting.php10
-rw-r--r--lib/public/Dashboard/Model/WidgetSetup.php10
-rw-r--r--lib/public/Dashboard/Model/WidgetTemplate.php3
-rw-r--r--lib/public/Dashboard/Service/IEventsService.php3
-rw-r--r--lib/public/Dashboard/Service/IWidgetsService.php2
-rw-r--r--lib/public/Defaults.php4
-rw-r--r--lib/public/Diagnostics/IQueryLogger.php17
-rw-r--r--lib/public/DirectEditing/ACreateEmpty.php2
-rw-r--r--lib/public/DirectEditing/ACreateFromTemplate.php1
-rw-r--r--lib/public/DirectEditing/IEditor.php1
-rw-r--r--lib/public/DirectEditing/IManager.php2
-rw-r--r--lib/public/DirectEditing/IToken.php2
-rw-r--r--lib/public/DirectEditing/RegisterDirectEditorEvent.php1
-rw-r--r--lib/public/Encryption/Exceptions/GenericEncryptionException.php3
-rw-r--r--lib/public/Encryption/IEncryptionModule.php3
-rw-r--r--lib/public/Encryption/IFile.php1
-rw-r--r--lib/public/Encryption/IManager.php1
-rw-r--r--lib/public/EventDispatcher/ABroadcastedEvent.php1
-rw-r--r--lib/public/EventDispatcher/Event.php1
-rw-r--r--lib/public/EventDispatcher/IEventDispatcher.php2
-rw-r--r--lib/public/EventDispatcher/IEventListener.php1
-rw-r--r--lib/public/Federation/Exceptions/ActionNotSupportedException.php1
-rw-r--r--lib/public/Federation/Exceptions/AuthenticationFailedException.php1
-rw-r--r--lib/public/Federation/Exceptions/BadRequestException.php2
-rw-r--r--lib/public/Federation/Exceptions/ProviderAlreadyExistsException.php1
-rw-r--r--lib/public/Federation/Exceptions/ProviderCouldNotAddShareException.php2
-rw-r--r--lib/public/Federation/Exceptions/ProviderDoesNotExistsException.php1
-rw-r--r--lib/public/Federation/ICloudFederationProvider.php1
-rw-r--r--lib/public/Federation/ICloudFederationProviderManager.php2
-rw-r--r--lib/public/Federation/ICloudFederationShare.php1
-rw-r--r--lib/public/Files.php15
-rw-r--r--lib/public/Files/AlreadyExistsException.php4
-rw-r--r--lib/public/Files/Cache/ICache.php10
-rw-r--r--lib/public/Files/Cache/ICacheEntry.php3
-rw-r--r--lib/public/Files/Cache/ICacheEvent.php1
-rw-r--r--lib/public/Files/Cache/IScanner.php13
-rw-r--r--lib/public/Files/Cache/IWatcher.php7
-rw-r--r--lib/public/Files/EntityTooLargeException.php4
-rw-r--r--lib/public/Files/Events/BeforeFileScannedEvent.php1
-rw-r--r--lib/public/Files/Events/BeforeFolderScannedEvent.php1
-rw-r--r--lib/public/Files/Events/FileCacheUpdated.php1
-rw-r--r--lib/public/Files/Events/FileScannedEvent.php1
-rw-r--r--lib/public/Files/Events/FolderScannedEvent.php1
-rw-r--r--lib/public/Files/Events/NodeAddedToCache.php1
-rw-r--r--lib/public/Files/Events/NodeRemovedFromCache.php1
-rw-r--r--lib/public/Files/FileInfo.php15
-rw-r--r--lib/public/Files/Folder.php2
-rw-r--r--lib/public/Files/GenericFileException.php1
-rw-r--r--lib/public/Files/IAppData.php4
-rw-r--r--lib/public/Files/IHomeStorage.php1
-rw-r--r--lib/public/Files/IMimeTypeDetector.php1
-rw-r--r--lib/public/Files/IRootFolder.php5
-rw-r--r--lib/public/Files/InvalidCharacterInPathException.php1
-rw-r--r--lib/public/Files/InvalidContentException.php4
-rw-r--r--lib/public/Files/InvalidPathException.php4
-rw-r--r--lib/public/Files/LockNotAcquiredException.php3
-rw-r--r--lib/public/Files/NotEnoughSpaceException.php4
-rw-r--r--lib/public/Files/NotFoundException.php4
-rw-r--r--lib/public/Files/NotPermittedException.php4
-rw-r--r--lib/public/Files/Notify/IChange.php9
-rw-r--r--lib/public/Files/ReservedWordException.php1
-rw-r--r--lib/public/Files/Search/ISearchBinaryOperator.php7
-rw-r--r--lib/public/Files/Search/ISearchComparison.php13
-rw-r--r--lib/public/Files/Search/ISearchOperator.php1
-rw-r--r--lib/public/Files/Search/ISearchOrder.php5
-rw-r--r--lib/public/Files/SimpleFS/ISimpleFolder.php1
-rw-r--r--lib/public/Files/Storage/IDisableEncryptionStorage.php1
-rw-r--r--lib/public/Files/Storage/INotifyStorage.php9
-rw-r--r--lib/public/Files/Storage/IStorageFactory.php2
-rw-r--r--lib/public/Files/StorageBadConfigException.php1
-rw-r--r--lib/public/Files/StorageNotAvailableException.php17
-rw-r--r--lib/public/Files/UnseekableException.php4
-rw-r--r--lib/public/Files_FullTextSearch/Model/AFilesDocument.php2
-rw-r--r--lib/public/FullTextSearch/IFullTextSearchManager.php3
-rw-r--r--lib/public/FullTextSearch/IFullTextSearchPlatform.php3
-rw-r--r--lib/public/FullTextSearch/IFullTextSearchProvider.php2
-rw-r--r--lib/public/FullTextSearch/Model/IDocumentAccess.php2
-rw-r--r--lib/public/FullTextSearch/Model/IIndex.php38
-rw-r--r--lib/public/FullTextSearch/Model/IIndexDocument.php107
-rw-r--r--lib/public/FullTextSearch/Model/IIndexOptions.php2
-rw-r--r--lib/public/FullTextSearch/Model/IRunner.php12
-rw-r--r--lib/public/FullTextSearch/Model/ISearchOption.php9
-rw-r--r--lib/public/FullTextSearch/Model/ISearchRequest.php2
-rw-r--r--lib/public/FullTextSearch/Model/ISearchRequestSimpleQuery.php27
-rw-r--r--lib/public/FullTextSearch/Model/ISearchResult.php2
-rw-r--r--lib/public/FullTextSearch/Model/ISearchTemplate.php2
-rw-r--r--lib/public/FullTextSearch/Service/IIndexService.php2
-rw-r--r--lib/public/FullTextSearch/Service/IProviderService.php3
-rw-r--r--lib/public/FullTextSearch/Service/ISearchService.php2
-rw-r--r--lib/public/GlobalScale/IConfig.php1
-rw-r--r--lib/public/Group/Backend/IGetDisplayNameBackend.php1
-rw-r--r--lib/public/Group/Backend/ISetDisplayNameBackend.php1
-rw-r--r--lib/public/Group/Events/BeforeGroupCreatedEvent.php2
-rw-r--r--lib/public/Group/Events/BeforeGroupDeletedEvent.php1
-rw-r--r--lib/public/Group/Events/BeforeUserAddedEvent.php1
-rw-r--r--lib/public/Group/Events/BeforeUserRemovedEvent.php1
-rw-r--r--lib/public/Group/Events/GroupCreatedEvent.php1
-rw-r--r--lib/public/Group/Events/GroupDeletedEvent.php1
-rw-r--r--lib/public/Group/Events/UserAddedEvent.php1
-rw-r--r--lib/public/Group/Events/UserRemovedEvent.php1
-rw-r--r--lib/public/GroupInterface.php18
-rw-r--r--lib/public/Http/Client/LocalServerException.php33
-rw-r--r--lib/public/IAddressBook.php2
-rw-r--r--lib/public/IAvatarManager.php1
-rw-r--r--lib/public/ICacheFactory.php3
-rw-r--r--lib/public/IConfig.php3
-rw-r--r--lib/public/IDBConnection.php13
-rw-r--r--lib/public/IImage.php40
-rw-r--r--lib/public/IL10N.php2
-rw-r--r--lib/public/ILogger.php11
-rw-r--r--lib/public/INavigationManager.php7
-rw-r--r--lib/public/IPreview.php20
-rw-r--r--lib/public/IRequest.php15
-rw-r--r--lib/public/ISearch.php8
-rw-r--r--lib/public/IServerContainer.php1
-rw-r--r--lib/public/ITagManager.php6
-rw-r--r--lib/public/ITags.php2
-rw-r--r--lib/public/IURLGenerator.php7
-rw-r--r--lib/public/IUser.php2
-rw-r--r--lib/public/IUserBackend.php1
-rw-r--r--lib/public/IUserManager.php3
-rw-r--r--lib/public/L10N/IFactory.php2
-rw-r--r--lib/public/LDAP/ILDAPProvider.php4
-rw-r--r--lib/public/Lock/ILockingProvider.php5
-rw-r--r--lib/public/Lock/ManuallyLockedException.php2
-rw-r--r--lib/public/Log/IDataLogger.php5
-rw-r--r--lib/public/Log/RotationTrait.php1
-rw-r--r--lib/public/Mail/Events/BeforeMessageSent.php56
-rw-r--r--lib/public/Mail/IAttachment.php1
-rw-r--r--lib/public/Mail/IEMailTemplate.php3
-rw-r--r--lib/public/Migration/IOutput.php1
-rw-r--r--lib/public/Migration/IRepairStep.php1
-rw-r--r--lib/public/Notification/AlreadyProcessedException.php2
-rw-r--r--lib/public/OCS/IDiscoveryService.php1
-rw-r--r--lib/public/PreConditionNotMetException.php4
-rw-r--r--lib/public/RichObjectStrings/Definitions.php13
-rw-r--r--lib/public/Route/IRouter.php6
-rw-r--r--lib/public/SabrePluginEvent.php1
-rw-r--r--lib/public/SabrePluginException.php1
-rw-r--r--lib/public/Search/PagedProvider.php3
-rw-r--r--lib/public/Search/Provider.php7
-rw-r--r--lib/public/Search/Result.php3
-rw-r--r--lib/public/Security/Events/GenerateSecurePasswordEvent.php1
-rw-r--r--lib/public/Security/Events/ValidatePasswordPolicyEvent.php1
-rw-r--r--lib/public/Security/IContentSecurityPolicyManager.php2
-rw-r--r--lib/public/Security/ICredentialsManager.php8
-rw-r--r--lib/public/Security/ISecureRandom.php14
-rw-r--r--lib/public/Session/Exceptions/SessionNotAvailableException.php1
-rw-r--r--lib/public/Settings/IManager.php8
-rw-r--r--lib/public/Settings/ISubAdminSettings.php1
-rw-r--r--lib/public/Share.php4
-rw-r--r--lib/public/Share/Events/VerifyMountPointEvent.php2
-rw-r--r--lib/public/Share/Exceptions/GenericShareException.php3
-rw-r--r--lib/public/Share/Exceptions/IllegalIDChangeException.php4
-rw-r--r--lib/public/Share/Exceptions/ShareNotFound.php1
-rw-r--r--lib/public/Share/IManager.php18
-rw-r--r--lib/public/Share/IProviderFactory.php1
-rw-r--r--lib/public/Share_Backend.php1
-rw-r--r--lib/public/Share_Backend_File_Dependent.php1
-rw-r--r--lib/public/Support/CrashReport/ICollectBreadcrumbs.php1
-rw-r--r--lib/public/Support/CrashReport/IMessageReporter.php1
-rw-r--r--lib/public/SystemTag/ISystemTag.php1
-rw-r--r--lib/public/SystemTag/ISystemTagObjectMapper.php1
-rw-r--r--lib/public/SystemTag/ManagerEvent.php8
-rw-r--r--lib/public/SystemTag/MapperEvent.php6
-rw-r--r--lib/public/SystemTag/SystemTagsEntityEvent.php4
-rw-r--r--lib/public/SystemTag/TagAlreadyExistsException.php4
-rw-r--r--lib/public/Template.php3
-rw-r--r--lib/public/User/Backend/ABackend.php2
-rw-r--r--lib/public/User/Events/BeforePasswordUpdatedEvent.php1
-rw-r--r--lib/public/User/Events/BeforeUserCreatedEvent.php1
-rw-r--r--lib/public/User/Events/BeforeUserDeletedEvent.php1
-rw-r--r--lib/public/User/Events/BeforeUserLoggedInEvent.php9
-rw-r--r--lib/public/User/Events/BeforeUserLoggedInWithCookieEvent.php2
-rw-r--r--lib/public/User/Events/BeforeUserLoggedOutEvent.php1
-rw-r--r--lib/public/User/Events/CreateUserEvent.php1
-rw-r--r--lib/public/User/Events/PasswordUpdatedEvent.php1
-rw-r--r--lib/public/User/Events/UserChangedEvent.php2
-rw-r--r--lib/public/User/Events/UserCreatedEvent.php1
-rw-r--r--lib/public/User/Events/UserDeletedEvent.php1
-rw-r--r--lib/public/User/Events/UserLoggedInWithCookieEvent.php1
-rw-r--r--lib/public/User/Events/UserLoggedOutEvent.php1
-rw-r--r--lib/public/UserInterface.php1
-rw-r--r--lib/public/Util.php36
-rw-r--r--lib/public/WorkflowEngine/GenericEntityEvent.php5
-rw-r--r--lib/public/WorkflowEngine/IComplexOperation.php1
-rw-r--r--lib/public/WorkflowEngine/IEntity.php1
-rw-r--r--lib/public/WorkflowEngine/IEntityCheck.php1
-rw-r--r--lib/public/WorkflowEngine/IFileCheck.php2
-rw-r--r--lib/public/WorkflowEngine/IManager.php12
977 files changed, 9000 insertions, 9110 deletions
diff --git a/lib/autoloader.php b/lib/autoloader.php
index 5a62cd5c7c0..f1bd613b52d 100644
--- a/lib/autoloader.php
+++ b/lib/autoloader.php
@@ -7,6 +7,7 @@ declare(strict_types=1);
*
* @author Andreas Fischer <bantu@owncloud.com>
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
@@ -152,13 +153,13 @@ class Autoloader {
$pathsToRequire = $this->memoryCache->get($class);
}
- if(class_exists($class, false)) {
+ if (class_exists($class, false)) {
return false;
}
if (!is_array($pathsToRequire)) {
// No cache or cache miss
- $pathsToRequire = array();
+ $pathsToRequire = [];
foreach ($this->findClass($class) as $path) {
$fullPath = stream_resolve_include_path($path);
if ($fullPath && $this->isValidPath($fullPath)) {
diff --git a/lib/base.php b/lib/base.php
index c0feee3d1e7..b1f9569926f 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -11,6 +11,7 @@
* @author Björn Schießle <bjoern@schiessle.org>
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Damjan Georgievski <gdamjan@gmail.com>
+ * @author Daniel Kesselberg <mail@danielkesselberg.de>
* @author davidgumberg <davidnoizgumberg@gmail.com>
* @author Eric Masseran <rico.masseran@gmail.com>
* @author Florin Peter <github@florin-peter.de>
@@ -22,6 +23,7 @@
* @author Joas Schilling <coding@schilljs.com>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
+ * @author Jose Quinteiro <github@quinteiro.org>
* @author Juan Pablo Villafáñez <jvillafanez@solidgear.es>
* @author Julius Härtl <jus@bitgrid.net>
* @author Ko- <k.stoffelen@cs.ru.nl>
@@ -76,7 +78,7 @@ class OC {
/**
* Associative array for autoloading. classname => filename
*/
- public static $CLASSPATH = array();
+ public static $CLASSPATH = [];
/**
* The installation path for Nextcloud on the server (e.g. /srv/http/nextcloud)
*/
@@ -93,7 +95,7 @@ class OC {
* The installation path array of the apps folder on the server (e.g. /srv/http/nextcloud) 'path' and
* web path in 'url'
*/
- public static $APPSROOTS = array();
+ public static $APPSROOTS = [];
/**
* @var string
@@ -133,11 +135,11 @@ class OC {
* the app path list is empty or contains an invalid path
*/
public static function initPaths() {
- if(defined('PHPUNIT_CONFIG_DIR')) {
+ if (defined('PHPUNIT_CONFIG_DIR')) {
self::$configDir = OC::$SERVERROOT . '/' . PHPUNIT_CONFIG_DIR . '/';
- } elseif(defined('PHPUNIT_RUN') and PHPUNIT_RUN and is_dir(OC::$SERVERROOT . '/tests/config/')) {
+ } elseif (defined('PHPUNIT_RUN') and PHPUNIT_RUN and is_dir(OC::$SERVERROOT . '/tests/config/')) {
self::$configDir = OC::$SERVERROOT . '/tests/config/';
- } elseif($dir = getenv('NEXTCLOUD_CONFIG_DIR')) {
+ } elseif ($dir = getenv('NEXTCLOUD_CONFIG_DIR')) {
self::$configDir = rtrim($dir, '/') . '/';
} else {
self::$configDir = OC::$SERVERROOT . '/config/';
@@ -196,7 +198,7 @@ class OC {
}
// search the apps folder
- $config_paths = self::$config->getValue('apps_paths', array());
+ $config_paths = self::$config->getValue('apps_paths', []);
if (!empty($config_paths)) {
foreach ($config_paths as $paths) {
if (isset($paths['url']) && isset($paths['path'])) {
@@ -206,20 +208,20 @@ class OC {
}
}
} elseif (file_exists(OC::$SERVERROOT . '/apps')) {
- OC::$APPSROOTS[] = array('path' => OC::$SERVERROOT . '/apps', 'url' => '/apps', 'writable' => true);
+ OC::$APPSROOTS[] = ['path' => OC::$SERVERROOT . '/apps', 'url' => '/apps', 'writable' => true];
} elseif (file_exists(OC::$SERVERROOT . '/../apps')) {
- OC::$APPSROOTS[] = array(
+ OC::$APPSROOTS[] = [
'path' => rtrim(dirname(OC::$SERVERROOT), '/') . '/apps',
'url' => '/apps',
'writable' => true
- );
+ ];
}
if (empty(OC::$APPSROOTS)) {
throw new \RuntimeException('apps directory not found! Please put the Nextcloud apps folder in the Nextcloud folder'
. ' or the folder above. You can also configure the location in the config.php file.');
}
- $paths = array();
+ $paths = [];
foreach (OC::$APPSROOTS as $path) {
$paths[] = $path['path'];
if (!is_dir($path['path'])) {
@@ -240,7 +242,7 @@ class OC {
// Create config if it does not already exist
$configFilePath = self::$configDir .'/config.php';
- if(!file_exists($configFilePath)) {
+ if (!file_exists($configFilePath)) {
@touch($configFilePath);
}
@@ -248,13 +250,11 @@ class OC {
$configFileWritable = is_writable($configFilePath);
if (!$configFileWritable && !OC_Helper::isReadOnlyConfigEnabled()
|| !$configFileWritable && \OCP\Util::needUpgrade()) {
-
$urlGenerator = \OC::$server->getURLGenerator();
if (self::$CLI) {
echo $l->t('Cannot write into "config" directory!')."\n";
echo $l->t('This can usually be fixed by giving the webserver write access to the config directory')."\n";
- echo $l->t('See %s', [ $urlGenerator->linkToDocs('admin-dir_permissions') ])."\n";
echo "\n";
echo $l->t('Or, if you prefer to keep config.php file read only, set the option "config_is_read_only" to true in it.')."\n";
echo $l->t('See %s', [ $urlGenerator->linkToDocs('admin-config') ])."\n";
@@ -262,10 +262,9 @@ class OC {
} else {
OC_Template::printErrorPage(
$l->t('Cannot write into "config" directory!'),
- $l->t('This can usually be fixed by giving the webserver write access to the config directory. See %s',
- [ $urlGenerator->linkToDocs('admin-dir_permissions') ]) . '. '
+ $l->t('This can usually be fixed by giving the webserver write access to the config directory.') . '. '
. $l->t('Or, if you prefer to keep config.php file read only, set the option "config_is_read_only" to true in it. See %s',
- [ $urlGenerator->linkToDocs('admin-config') ] ),
+ [ $urlGenerator->linkToDocs('admin-config') ]),
503
);
}
@@ -405,7 +404,7 @@ class OC {
}
public static function initSession() {
- if(self::$server->getRequest()->getServerProtocol() === 'https') {
+ if (self::$server->getRequest()->getServerProtocol() === 'https') {
ini_set('session.cookie_secure', true);
}
@@ -423,7 +422,7 @@ class OC {
// Allow session apps to create a custom session object
$useCustomSession = false;
$session = self::$server->getSession();
- OC_Hook::emit('OC', 'initSession', array('session' => &$session, 'sessionName' => &$sessionName, 'useCustomSession' => &$useCustomSession));
+ OC_Hook::emit('OC', 'initSession', ['session' => &$session, 'sessionName' => &$sessionName, 'useCustomSession' => &$useCustomSession]);
if (!$useCustomSession) {
// set the session name to the instance id - which is unique
$session = new \OC\Session\Internal($sessionName);
@@ -482,11 +481,11 @@ class OC {
// Append __Host to the cookie if it meets the requirements
$cookiePrefix = '';
- if($cookieParams['secure'] === true && $cookieParams['path'] === '/') {
+ if ($cookieParams['secure'] === true && $cookieParams['path'] === '/') {
$cookiePrefix = '__Host-';
}
- foreach($policies as $policy) {
+ foreach ($policies as $policy) {
header(
sprintf(
'Set-Cookie: %snc_sameSiteCookie%s=true; path=%s; httponly;' . $secureCookie . 'expires=Fri, 31-Dec-2100 23:59:59 GMT; SameSite=%s',
@@ -528,31 +527,31 @@ class OC {
];
}
- if($request->isUserAgent($incompatibleUserAgents)) {
+ if ($request->isUserAgent($incompatibleUserAgents)) {
return;
}
- if(count($_COOKIE) > 0) {
+ if (count($_COOKIE) > 0) {
$requestUri = $request->getScriptName();
$processingScript = explode('/', $requestUri);
$processingScript = $processingScript[count($processingScript)-1];
// index.php routes are handled in the middleware
- if($processingScript === 'index.php') {
+ if ($processingScript === 'index.php') {
return;
}
// All other endpoints require the lax and the strict cookie
- if(!$request->passesStrictCookieCheck()) {
+ if (!$request->passesStrictCookieCheck()) {
self::sendSameSiteCookies();
// Debug mode gets access to the resources without strict cookie
// due to the fact that the SabreDAV browser also lives there.
- if(!\OC::$server->getConfig()->getSystemValue('debug', false)) {
+ if (!\OC::$server->getConfig()->getSystemValue('debug', false)) {
http_response_code(\OCP\AppFramework\Http::STATUS_SERVICE_UNAVAILABLE);
exit();
}
}
- } elseif(!isset($_COOKIE['nc_sameSiteCookielax']) || !isset($_COOKIE['nc_sameSiteCookiestrict'])) {
+ } elseif (!isset($_COOKIE['nc_sameSiteCookielax']) || !isset($_COOKIE['nc_sameSiteCookiestrict'])) {
self::sendSameSiteCookies();
}
}
@@ -570,7 +569,7 @@ class OC {
if (defined('PHPUNIT_RUN')) {
self::$loader->addValidRoot(OC::$SERVERROOT . '/tests');
}
- spl_autoload_register(array(self::$loader, 'load'));
+ spl_autoload_register([self::$loader, 'load']);
$loaderEnd = microtime(true);
self::$CLI = (php_sapi_name() == 'cli');
@@ -586,7 +585,6 @@ class OC {
throw new \RuntimeException('Composer autoloader not found, unable to continue. Check the folder "3rdparty". Running "git submodule update --init" will initialize the git submodule that handles the subfolder "3rdparty".');
}
require_once $vendorAutoLoad;
-
} catch (\RuntimeException $e) {
if (!self::$CLI) {
http_response_code(503);
@@ -611,7 +609,7 @@ class OC {
@ini_set('display_errors', '0');
@ini_set('log_errors', '1');
- if(!date_default_timezone_set('UTC')) {
+ if (!date_default_timezone_set('UTC')) {
throw new \RuntimeException('Could not set timezone to UTC');
}
@@ -646,7 +644,7 @@ class OC {
}
\OC::$server->getEventLogger()->start('init_session', 'Initialize session');
- OC_App::loadApps(array('session'));
+ OC_App::loadApps(['session']);
if (!self::$CLI) {
self::initSession();
}
@@ -665,7 +663,7 @@ class OC {
http_response_code(503);
OC_Util::addStyle('guest');
try {
- OC_Template::printGuestPage('', 'error', array('errors' => $errors));
+ OC_Template::printGuestPage('', 'error', ['errors' => $errors]);
exit;
} catch (\Exception $e) {
// In case any error happens when showing the error page, we simply fall back to posting the text.
@@ -742,12 +740,12 @@ class OC {
//make sure temporary files are cleaned up
$tmpManager = \OC::$server->getTempManager();
- register_shutdown_function(array($tmpManager, 'clean'));
+ register_shutdown_function([$tmpManager, 'clean']);
$lockProvider = \OC::$server->getLockingProvider();
- register_shutdown_function(array($lockProvider, 'releaseAll'));
+ register_shutdown_function([$lockProvider, 'releaseAll']);
// Check whether the sample configuration has been copied
- if($systemConfig->getValue('copied_sample_config', false)) {
+ if ($systemConfig->getValue('copied_sample_config', false)) {
$l = \OC::$server->getL10N('lib');
OC_Template::printErrorPage(
$l->t('Sample configuration detected'),
@@ -769,11 +767,11 @@ class OC {
) {
// Allow access to CSS resources
$isScssRequest = false;
- if(strpos($request->getPathInfo(), '/css/') === 0) {
+ if (strpos($request->getPathInfo(), '/css/') === 0) {
$isScssRequest = true;
}
- if(substr($request->getRequestUri(), -11) === '/status.php') {
+ if (substr($request->getRequestUri(), -11) === '/status.php') {
http_response_code(400);
header('Content-Type: application/json');
echo '{"error": "Trusted domain error.", "code": 15}';
@@ -812,7 +810,7 @@ class OC {
// NOTE: This will be replaced to use OCP
$userSession = self::$server->getUserSession();
$userSession->listen('\OC\User', 'postLogin', function () use ($userSession) {
- if (!defined('PHPUNIT_RUN')) {
+ if (!defined('PHPUNIT_RUN') && $userSession->isLoggedIn()) {
// reset brute force delay for this IP address and username
$uid = \OC::$server->getUserSession()->getUser()->getUID();
$request = \OC::$server->getRequest();
@@ -863,7 +861,7 @@ class OC {
private static function registerAppRestrictionsHooks() {
$groupManager = self::$server->query(\OCP\IGroupManager::class);
- $groupManager->listen ('\OC\Group', 'postDelete', function (\OCP\IGroup $group) {
+ $groupManager->listen('\OC\Group', 'postDelete', function (\OCP\IGroup $group) {
$appManager = self::$server->getAppManager();
$apps = $appManager->getEnabledAppsForGroup($group);
foreach ($apps as $appId) {
@@ -876,11 +874,9 @@ class OC {
$restrictions = array_values($restrictions);
if (empty($restrictions)) {
$appManager->disableApp($appId);
- }
- else{
+ } else {
$appManager->enableAppForGroups($appId, $restrictions);
}
-
}
});
}
@@ -930,7 +926,6 @@ class OC {
* Handle the request
*/
public static function handleRequest() {
-
\OC::$server->getEventLogger()->start('handle_request', 'Handle request');
$systemConfig = \OC::$server->getSystemConfig();
@@ -978,7 +973,7 @@ class OC {
\OC_JSON::callCheck();
\OC_JSON::checkAdminUser();
$appIds = (array)$request->getParam('appid');
- foreach($appIds as $appId) {
+ foreach ($appIds as $appId) {
$appId = \OC_App::cleanAppId($appId);
\OC::$server->getAppManager()->disableApp($appId);
}
@@ -993,11 +988,11 @@ class OC {
if (!\OCP\Util::needUpgrade()
&& !((bool) $systemConfig->getValue('maintenance', false))) {
// For logged-in users: Load everything
- if(\OC::$server->getUserSession()->isLoggedIn()) {
+ if (\OC::$server->getUserSession()->isLoggedIn()) {
OC_App::loadApps();
} else {
// For guests: Load only filesystem and logging
- OC_App::loadApps(array('filesystem', 'logging'));
+ OC_App::loadApps(['filesystem', 'logging']);
self::handleLogin($request);
}
}
@@ -1005,7 +1000,7 @@ class OC {
if (!self::$CLI) {
try {
if (!((bool) $systemConfig->getValue('maintenance', false)) && !\OCP\Util::needUpgrade()) {
- OC_App::loadApps(array('filesystem', 'logging'));
+ OC_App::loadApps(['filesystem', 'logging']);
OC_App::loadApps();
}
OC_Util::setupFS();
@@ -1048,7 +1043,7 @@ class OC {
* @param OCP\IRequest $request
* @return boolean
*/
- static function handleLogin(OCP\IRequest $request) {
+ public static function handleLogin(OCP\IRequest $request) {
$userSession = self::$server->getUserSession();
if (OC_User::handleApacheAuth()) {
return true;
@@ -1075,10 +1070,10 @@ class OC {
}
// Extract PHP_AUTH_USER/PHP_AUTH_PW from other headers if necessary.
- $vars = array(
+ $vars = [
'HTTP_AUTHORIZATION', // apache+php-cgi work around
'REDIRECT_HTTP_AUTHORIZATION', // apache+php-cgi alternative
- );
+ ];
foreach ($vars as $var) {
if (isset($_SERVER[$var]) && preg_match('/Basic\s+(.*)$/i', $_SERVER[$var], $matches)) {
$credentials = explode(':', base64_decode($matches[1]), 2);
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index 303b3fba89b..2c701643c17 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -69,11 +69,14 @@ return array(
'OCP\\AppFramework\\OCS\\OCSNotFoundException' => $baseDir . '/lib/public/AppFramework/OCS/OCSNotFoundException.php',
'OCP\\AppFramework\\PublicShareController' => $baseDir . '/lib/public/AppFramework/PublicShareController.php',
'OCP\\AppFramework\\QueryException' => $baseDir . '/lib/public/AppFramework/QueryException.php',
+ 'OCP\\AppFramework\\Services\\IAppConfig' => $baseDir . '/lib/public/AppFramework/Services/IAppConfig.php',
+ 'OCP\\AppFramework\\Services\\IInitialState' => $baseDir . '/lib/public/AppFramework/Services/IInitialState.php',
'OCP\\AppFramework\\Utility\\IControllerMethodReflector' => $baseDir . '/lib/public/AppFramework/Utility/IControllerMethodReflector.php',
'OCP\\AppFramework\\Utility\\ITimeFactory' => $baseDir . '/lib/public/AppFramework/Utility/ITimeFactory.php',
'OCP\\App\\AppPathNotFoundException' => $baseDir . '/lib/public/App/AppPathNotFoundException.php',
'OCP\\App\\IAppManager' => $baseDir . '/lib/public/App/IAppManager.php',
'OCP\\App\\ManagerEvent' => $baseDir . '/lib/public/App/ManagerEvent.php',
+ 'OCP\\Authentication\\Events\\LoginFailedEvent' => $baseDir . '/lib/public/Authentication/Events/LoginFailedEvent.php',
'OCP\\Authentication\\Exceptions\\CredentialsUnavailableException' => $baseDir . '/lib/public/Authentication/Exceptions/CredentialsUnavailableException.php',
'OCP\\Authentication\\Exceptions\\PasswordUnavailableException' => $baseDir . '/lib/public/Authentication/Exceptions/PasswordUnavailableException.php',
'OCP\\Authentication\\IApacheBackend' => $baseDir . '/lib/public/Authentication/IApacheBackend.php',
@@ -147,6 +150,7 @@ return array(
'OCP\\Contacts\\ContactsMenu\\IEntry' => $baseDir . '/lib/public/Contacts/ContactsMenu/IEntry.php',
'OCP\\Contacts\\ContactsMenu\\ILinkAction' => $baseDir . '/lib/public/Contacts/ContactsMenu/ILinkAction.php',
'OCP\\Contacts\\ContactsMenu\\IProvider' => $baseDir . '/lib/public/Contacts/ContactsMenu/IProvider.php',
+ 'OCP\\Contacts\\Events\\ContactInteractedWithEvent' => $baseDir . '/lib/public/Contacts/Events/ContactInteractedWithEvent.php',
'OCP\\Contacts\\IManager' => $baseDir . '/lib/public/Contacts/IManager.php',
'OCP\\DB\\ISchemaWrapper' => $baseDir . '/lib/public/DB/ISchemaWrapper.php',
'OCP\\DB\\QueryBuilder\\ICompositeExpression' => $baseDir . '/lib/public/DB/QueryBuilder/ICompositeExpression.php',
@@ -321,6 +325,7 @@ return array(
'OCP\\Http\\Client\\IClient' => $baseDir . '/lib/public/Http/Client/IClient.php',
'OCP\\Http\\Client\\IClientService' => $baseDir . '/lib/public/Http/Client/IClientService.php',
'OCP\\Http\\Client\\IResponse' => $baseDir . '/lib/public/Http/Client/IResponse.php',
+ 'OCP\\Http\\Client\\LocalServerException' => $baseDir . '/lib/public/Http/Client/LocalServerException.php',
'OCP\\IAddressBook' => $baseDir . '/lib/public/IAddressBook.php',
'OCP\\IAppConfig' => $baseDir . '/lib/public/IAppConfig.php',
'OCP\\IAvatar' => $baseDir . '/lib/public/IAvatar.php',
@@ -372,6 +377,7 @@ return array(
'OCP\\Log\\ILogFactory' => $baseDir . '/lib/public/Log/ILogFactory.php',
'OCP\\Log\\IWriter' => $baseDir . '/lib/public/Log/IWriter.php',
'OCP\\Log\\RotationTrait' => $baseDir . '/lib/public/Log/RotationTrait.php',
+ 'OCP\\Mail\\Events\\BeforeMessageSent' => $baseDir . '/lib/public/Mail/Events/BeforeMessageSent.php',
'OCP\\Mail\\IAttachment' => $baseDir . '/lib/public/Mail/IAttachment.php',
'OCP\\Mail\\IEMailTemplate' => $baseDir . '/lib/public/Mail/IEMailTemplate.php',
'OCP\\Mail\\IMailer' => $baseDir . '/lib/public/Mail/IMailer.php',
@@ -524,7 +530,9 @@ return array(
'OC\\AppFramework\\Http\\Request' => $baseDir . '/lib/private/AppFramework/Http/Request.php',
'OC\\AppFramework\\Logger' => $baseDir . '/lib/private/AppFramework/Logger.php',
'OC\\AppFramework\\Middleware\\AdditionalScriptsMiddleware' => $baseDir . '/lib/private/AppFramework/Middleware/AdditionalScriptsMiddleware.php',
+ 'OC\\AppFramework\\Middleware\\CompressionMiddleware' => $baseDir . '/lib/private/AppFramework/Middleware/CompressionMiddleware.php',
'OC\\AppFramework\\Middleware\\MiddlewareDispatcher' => $baseDir . '/lib/private/AppFramework/Middleware/MiddlewareDispatcher.php',
+ 'OC\\AppFramework\\Middleware\\NotModifiedMiddleware' => $baseDir . '/lib/private/AppFramework/Middleware/NotModifiedMiddleware.php',
'OC\\AppFramework\\Middleware\\OCSMiddleware' => $baseDir . '/lib/private/AppFramework/Middleware/OCSMiddleware.php',
'OC\\AppFramework\\Middleware\\PublicShare\\Exceptions\\NeedAuthenticationException' => $baseDir . '/lib/private/AppFramework/Middleware/PublicShare/Exceptions/NeedAuthenticationException.php',
'OC\\AppFramework\\Middleware\\PublicShare\\PublicShareMiddleware' => $baseDir . '/lib/private/AppFramework/Middleware/PublicShare/PublicShareMiddleware.php',
@@ -552,6 +560,8 @@ return array(
'OC\\AppFramework\\OCS\\V2Response' => $baseDir . '/lib/private/AppFramework/OCS/V2Response.php',
'OC\\AppFramework\\Routing\\RouteActionHandler' => $baseDir . '/lib/private/AppFramework/Routing/RouteActionHandler.php',
'OC\\AppFramework\\Routing\\RouteConfig' => $baseDir . '/lib/private/AppFramework/Routing/RouteConfig.php',
+ 'OC\\AppFramework\\Services\\AppConfig' => $baseDir . '/lib/private/AppFramework/Services/AppConfig.php',
+ 'OC\\AppFramework\\Services\\InitialState' => $baseDir . '/lib/private/AppFramework/Services/InitialState.php',
'OC\\AppFramework\\Utility\\ControllerMethodReflector' => $baseDir . '/lib/private/AppFramework/Utility/ControllerMethodReflector.php',
'OC\\AppFramework\\Utility\\SimpleContainer' => $baseDir . '/lib/private/AppFramework/Utility/SimpleContainer.php',
'OC\\AppFramework\\Utility\\TimeFactory' => $baseDir . '/lib/private/AppFramework/Utility/TimeFactory.php',
@@ -590,6 +600,7 @@ return array(
'OC\\Archive\\TAR' => $baseDir . '/lib/private/Archive/TAR.php',
'OC\\Archive\\ZIP' => $baseDir . '/lib/private/Archive/ZIP.php',
'OC\\Authentication\\Events\\ARemoteWipeEvent' => $baseDir . '/lib/private/Authentication/Events/ARemoteWipeEvent.php',
+ 'OC\\Authentication\\Events\\LoginFailed' => $baseDir . '/lib/private/Authentication/Events/LoginFailed.php',
'OC\\Authentication\\Events\\RemoteWipeFinished' => $baseDir . '/lib/private/Authentication/Events/RemoteWipeFinished.php',
'OC\\Authentication\\Events\\RemoteWipeStarted' => $baseDir . '/lib/private/Authentication/Events/RemoteWipeStarted.php',
'OC\\Authentication\\Exceptions\\ExpiredTokenException' => $baseDir . '/lib/private/Authentication/Exceptions/ExpiredTokenException.php',
@@ -602,6 +613,7 @@ return array(
'OC\\Authentication\\Exceptions\\TwoFactorAuthRequiredException' => $baseDir . '/lib/private/Authentication/Exceptions/TwoFactorAuthRequiredException.php',
'OC\\Authentication\\Exceptions\\UserAlreadyLoggedInException' => $baseDir . '/lib/private/Authentication/Exceptions/UserAlreadyLoggedInException.php',
'OC\\Authentication\\Exceptions\\WipeTokenException' => $baseDir . '/lib/private/Authentication/Exceptions/WipeTokenException.php',
+ 'OC\\Authentication\\Listeners\\LoginFailedListener' => $baseDir . '/lib/private/Authentication/Listeners/LoginFailedListener.php',
'OC\\Authentication\\Listeners\\RemoteWipeActivityListener' => $baseDir . '/lib/private/Authentication/Listeners/RemoteWipeActivityListener.php',
'OC\\Authentication\\Listeners\\RemoteWipeEmailListener' => $baseDir . '/lib/private/Authentication/Listeners/RemoteWipeEmailListener.php',
'OC\\Authentication\\Listeners\\RemoteWipeNotificationsListener' => $baseDir . '/lib/private/Authentication/Listeners/RemoteWipeNotificationsListener.php',
@@ -624,6 +636,8 @@ return array(
'OC\\Authentication\\Login\\UidLoginCommand' => $baseDir . '/lib/private/Authentication/Login/UidLoginCommand.php',
'OC\\Authentication\\Login\\UpdateLastPasswordConfirmCommand' => $baseDir . '/lib/private/Authentication/Login/UpdateLastPasswordConfirmCommand.php',
'OC\\Authentication\\Login\\UserDisabledCheckCommand' => $baseDir . '/lib/private/Authentication/Login/UserDisabledCheckCommand.php',
+ 'OC\\Authentication\\Login\\WebAuthnChain' => $baseDir . '/lib/private/Authentication/Login/WebAuthnChain.php',
+ 'OC\\Authentication\\Login\\WebAuthnLoginCommand' => $baseDir . '/lib/private/Authentication/Login/WebAuthnLoginCommand.php',
'OC\\Authentication\\Notifications\\Notifier' => $baseDir . '/lib/private/Authentication/Notifications/Notifier.php',
'OC\\Authentication\\Token\\DefaultToken' => $baseDir . '/lib/private/Authentication/Token/DefaultToken.php',
'OC\\Authentication\\Token\\DefaultTokenCleanupJob' => $baseDir . '/lib/private/Authentication/Token/DefaultTokenCleanupJob.php',
@@ -646,6 +660,10 @@ return array(
'OC\\Authentication\\TwoFactorAuth\\ProviderManager' => $baseDir . '/lib/private/Authentication/TwoFactorAuth/ProviderManager.php',
'OC\\Authentication\\TwoFactorAuth\\ProviderSet' => $baseDir . '/lib/private/Authentication/TwoFactorAuth/ProviderSet.php',
'OC\\Authentication\\TwoFactorAuth\\Registry' => $baseDir . '/lib/private/Authentication/TwoFactorAuth/Registry.php',
+ 'OC\\Authentication\\WebAuthn\\CredentialRepository' => $baseDir . '/lib/private/Authentication/WebAuthn/CredentialRepository.php',
+ 'OC\\Authentication\\WebAuthn\\Db\\PublicKeyCredentialEntity' => $baseDir . '/lib/private/Authentication/WebAuthn/Db/PublicKeyCredentialEntity.php',
+ 'OC\\Authentication\\WebAuthn\\Db\\PublicKeyCredentialMapper' => $baseDir . '/lib/private/Authentication/WebAuthn/Db/PublicKeyCredentialMapper.php',
+ 'OC\\Authentication\\WebAuthn\\Manager' => $baseDir . '/lib/private/Authentication/WebAuthn/Manager.php',
'OC\\Avatar\\Avatar' => $baseDir . '/lib/private/Avatar/Avatar.php',
'OC\\Avatar\\AvatarManager' => $baseDir . '/lib/private/Avatar/AvatarManager.php',
'OC\\Avatar\\GuestAvatar' => $baseDir . '/lib/private/Avatar/GuestAvatar.php',
@@ -727,6 +745,7 @@ return array(
'OC\\Core\\Command\\Config\\System\\DeleteConfig' => $baseDir . '/core/Command/Config/System/DeleteConfig.php',
'OC\\Core\\Command\\Config\\System\\GetConfig' => $baseDir . '/core/Command/Config/System/GetConfig.php',
'OC\\Core\\Command\\Config\\System\\SetConfig' => $baseDir . '/core/Command/Config/System/SetConfig.php',
+ 'OC\\Core\\Command\\Db\\AddMissingColumns' => $baseDir . '/core/Command/Db/AddMissingColumns.php',
'OC\\Core\\Command\\Db\\AddMissingIndices' => $baseDir . '/core/Command/Db/AddMissingIndices.php',
'OC\\Core\\Command\\Db\\ConvertFilecacheBigInt' => $baseDir . '/core/Command/Db/ConvertFilecacheBigInt.php',
'OC\\Core\\Command\\Db\\ConvertMysqlToMB4' => $baseDir . '/core/Command/Db/ConvertMysqlToMB4.php',
@@ -813,6 +832,7 @@ return array(
'OC\\Core\\Controller\\TwoFactorChallengeController' => $baseDir . '/core/Controller/TwoFactorChallengeController.php',
'OC\\Core\\Controller\\UserController' => $baseDir . '/core/Controller/UserController.php',
'OC\\Core\\Controller\\WalledGardenController' => $baseDir . '/core/Controller/WalledGardenController.php',
+ 'OC\\Core\\Controller\\WebAuthnController' => $baseDir . '/core/Controller/WebAuthnController.php',
'OC\\Core\\Controller\\WhatsNewController' => $baseDir . '/core/Controller/WhatsNewController.php',
'OC\\Core\\Controller\\WipeController' => $baseDir . '/core/Controller/WipeController.php',
'OC\\Core\\Data\\LoginFlowV2Credentials' => $baseDir . '/core/Data/LoginFlowV2Credentials.php',
@@ -846,6 +866,7 @@ return array(
'OC\\Core\\Migrations\\Version18000Date20190920085628' => $baseDir . '/core/Migrations/Version18000Date20190920085628.php',
'OC\\Core\\Migrations\\Version18000Date20191014105105' => $baseDir . '/core/Migrations/Version18000Date20191014105105.php',
'OC\\Core\\Migrations\\Version18000Date20191204114856' => $baseDir . '/core/Migrations/Version18000Date20191204114856.php',
+ 'OC\\Core\\Migrations\\Version19000Date20200211083441' => $baseDir . '/core/Migrations/Version19000Date20200211083441.php',
'OC\\Core\\Notification\\RemoveLinkSharesNotifier' => $baseDir . '/core/Notification/RemoveLinkSharesNotifier.php',
'OC\\Core\\Service\\LoginFlowV2Service' => $baseDir . '/core/Service/LoginFlowV2Service.php',
'OC\\DB\\Adapter' => $baseDir . '/lib/private/DB/Adapter.php',
@@ -861,6 +882,7 @@ return array(
'OC\\DB\\MigrationException' => $baseDir . '/lib/private/DB/MigrationException.php',
'OC\\DB\\MigrationService' => $baseDir . '/lib/private/DB/MigrationService.php',
'OC\\DB\\Migrator' => $baseDir . '/lib/private/DB/Migrator.php',
+ 'OC\\DB\\MissingColumnInformation' => $baseDir . '/lib/private/DB/MissingColumnInformation.php',
'OC\\DB\\MissingIndexInformation' => $baseDir . '/lib/private/DB/MissingIndexInformation.php',
'OC\\DB\\MySQLMigrator' => $baseDir . '/lib/private/DB/MySQLMigrator.php',
'OC\\DB\\MySqlTools' => $baseDir . '/lib/private/DB/MySqlTools.php',
@@ -963,6 +985,7 @@ return array(
'OC\\Files\\Node\\File' => $baseDir . '/lib/private/Files/Node/File.php',
'OC\\Files\\Node\\Folder' => $baseDir . '/lib/private/Files/Node/Folder.php',
'OC\\Files\\Node\\HookConnector' => $baseDir . '/lib/private/Files/Node/HookConnector.php',
+ 'OC\\Files\\Node\\LazyFolder' => $baseDir . '/lib/private/Files/Node/LazyFolder.php',
'OC\\Files\\Node\\LazyRoot' => $baseDir . '/lib/private/Files/Node/LazyRoot.php',
'OC\\Files\\Node\\Node' => $baseDir . '/lib/private/Files/Node/Node.php',
'OC\\Files\\Node\\NonExistingFile' => $baseDir . '/lib/private/Files/Node/NonExistingFile.php',
@@ -1010,7 +1033,9 @@ return array(
'OC\\Files\\Storage\\Wrapper\\Quota' => $baseDir . '/lib/private/Files/Storage/Wrapper/Quota.php',
'OC\\Files\\Storage\\Wrapper\\Wrapper' => $baseDir . '/lib/private/Files/Storage/Wrapper/Wrapper.php',
'OC\\Files\\Stream\\Encryption' => $baseDir . '/lib/private/Files/Stream/Encryption.php',
+ 'OC\\Files\\Stream\\HashWrapper' => $baseDir . '/lib/private/Files/Stream/HashWrapper.php',
'OC\\Files\\Stream\\Quota' => $baseDir . '/lib/private/Files/Stream/Quota.php',
+ 'OC\\Files\\Stream\\SeekableHttpStream' => $baseDir . '/lib/private/Files/Stream/SeekableHttpStream.php',
'OC\\Files\\Type\\Detection' => $baseDir . '/lib/private/Files/Type/Detection.php',
'OC\\Files\\Type\\Loader' => $baseDir . '/lib/private/Files/Type/Loader.php',
'OC\\Files\\Type\\TemplateManager' => $baseDir . '/lib/private/Files/Type/TemplateManager.php',
@@ -1070,6 +1095,7 @@ return array(
'OC\\Log\\File' => $baseDir . '/lib/private/Log/File.php',
'OC\\Log\\LogDetails' => $baseDir . '/lib/private/Log/LogDetails.php',
'OC\\Log\\LogFactory' => $baseDir . '/lib/private/Log/LogFactory.php',
+ 'OC\\Log\\PsrLoggerAdapter' => $baseDir . '/lib/private/Log/PsrLoggerAdapter.php',
'OC\\Log\\Rotate' => $baseDir . '/lib/private/Log/Rotate.php',
'OC\\Log\\Syslog' => $baseDir . '/lib/private/Log/Syslog.php',
'OC\\Log\\Systemdlog' => $baseDir . '/lib/private/Log/Systemdlog.php',
@@ -1108,6 +1134,7 @@ return array(
'OC\\Preview\\BMP' => $baseDir . '/lib/private/Preview/BMP.php',
'OC\\Preview\\BackgroundCleanupJob' => $baseDir . '/lib/private/Preview/BackgroundCleanupJob.php',
'OC\\Preview\\Bitmap' => $baseDir . '/lib/private/Preview/Bitmap.php',
+ 'OC\\Preview\\Bundled' => $baseDir . '/lib/private/Preview/Bundled.php',
'OC\\Preview\\Font' => $baseDir . '/lib/private/Preview/Font.php',
'OC\\Preview\\GIF' => $baseDir . '/lib/private/Preview/GIF.php',
'OC\\Preview\\Generator' => $baseDir . '/lib/private/Preview/Generator.php',
@@ -1116,6 +1143,7 @@ return array(
'OC\\Preview\\Illustrator' => $baseDir . '/lib/private/Preview/Illustrator.php',
'OC\\Preview\\Image' => $baseDir . '/lib/private/Preview/Image.php',
'OC\\Preview\\JPEG' => $baseDir . '/lib/private/Preview/JPEG.php',
+ 'OC\\Preview\\Krita' => $baseDir . '/lib/private/Preview/Krita.php',
'OC\\Preview\\MP3' => $baseDir . '/lib/private/Preview/MP3.php',
'OC\\Preview\\MSOffice2003' => $baseDir . '/lib/private/Preview/MSOffice2003.php',
'OC\\Preview\\MSOffice2007' => $baseDir . '/lib/private/Preview/MSOffice2007.php',
@@ -1133,6 +1161,7 @@ return array(
'OC\\Preview\\ProviderV2' => $baseDir . '/lib/private/Preview/ProviderV2.php',
'OC\\Preview\\SVG' => $baseDir . '/lib/private/Preview/SVG.php',
'OC\\Preview\\StarOffice' => $baseDir . '/lib/private/Preview/StarOffice.php',
+ 'OC\\Preview\\Storage\\Root' => $baseDir . '/lib/private/Preview/Storage/Root.php',
'OC\\Preview\\TIFF' => $baseDir . '/lib/private/Preview/TIFF.php',
'OC\\Preview\\TXT' => $baseDir . '/lib/private/Preview/TXT.php',
'OC\\Preview\\Watcher' => $baseDir . '/lib/private/Preview/Watcher.php',
@@ -1162,8 +1191,6 @@ return array(
'OC\\Repair\\NC16\\AddClenupLoginFlowV2BackgroundJob' => $baseDir . '/lib/private/Repair/NC16/AddClenupLoginFlowV2BackgroundJob.php',
'OC\\Repair\\NC16\\CleanupCardDAVPhotoCache' => $baseDir . '/lib/private/Repair/NC16/CleanupCardDAVPhotoCache.php',
'OC\\Repair\\NC16\\ClearCollectionsAccessCache' => $baseDir . '/lib/private/Repair/NC16/ClearCollectionsAccessCache.php',
- 'OC\\Repair\\NC17\\SetEnterpriseLogo' => $baseDir . '/lib/private/Repair/NC17/SetEnterpriseLogo.php',
- 'OC\\Repair\\NC17\\SwitchUpdateChannel' => $baseDir . '/lib/private/Repair/NC17/SwitchUpdateChannel.php',
'OC\\Repair\\NC18\\ResetGeneratedAvatarFlag' => $baseDir . '/lib/private/Repair/NC18/ResetGeneratedAvatarFlag.php',
'OC\\Repair\\OldGroupMembershipShares' => $baseDir . '/lib/private/Repair/OldGroupMembershipShares.php',
'OC\\Repair\\Owncloud\\DropAccountTermsTable' => $baseDir . '/lib/private/Repair/Owncloud/DropAccountTermsTable.php',
@@ -1277,20 +1304,20 @@ return array(
'OC\\User\\NoUserException' => $baseDir . '/lib/private/User/NoUserException.php',
'OC\\User\\Session' => $baseDir . '/lib/private/User/Session.php',
'OC\\User\\User' => $baseDir . '/lib/private/User/User.php',
- 'OC_API' => $baseDir . '/lib/private/legacy/api.php',
- 'OC_App' => $baseDir . '/lib/private/legacy/app.php',
- 'OC_DB' => $baseDir . '/lib/private/legacy/db.php',
- 'OC_DB_StatementWrapper' => $baseDir . '/lib/private/legacy/db/statementwrapper.php',
- 'OC_Defaults' => $baseDir . '/lib/private/legacy/defaults.php',
- 'OC_EventSource' => $baseDir . '/lib/private/legacy/eventsource.php',
- 'OC_FileChunking' => $baseDir . '/lib/private/legacy/filechunking.php',
- 'OC_Files' => $baseDir . '/lib/private/legacy/files.php',
- 'OC_Helper' => $baseDir . '/lib/private/legacy/helper.php',
- 'OC_Hook' => $baseDir . '/lib/private/legacy/hook.php',
- 'OC_Image' => $baseDir . '/lib/private/legacy/image.php',
- 'OC_JSON' => $baseDir . '/lib/private/legacy/json.php',
- 'OC_Response' => $baseDir . '/lib/private/legacy/response.php',
- 'OC_Template' => $baseDir . '/lib/private/legacy/template.php',
- 'OC_User' => $baseDir . '/lib/private/legacy/user.php',
- 'OC_Util' => $baseDir . '/lib/private/legacy/util.php',
+ 'OC_API' => $baseDir . '/lib/private/legacy/OC_API.php',
+ 'OC_App' => $baseDir . '/lib/private/legacy/OC_App.php',
+ 'OC_DB' => $baseDir . '/lib/private/legacy/OC_DB.php',
+ 'OC_DB_StatementWrapper' => $baseDir . '/lib/private/legacy/OC_DB_StatementWrapper.php',
+ 'OC_Defaults' => $baseDir . '/lib/private/legacy/OC_Defaults.php',
+ 'OC_EventSource' => $baseDir . '/lib/private/legacy/OC_EventSource.php',
+ 'OC_FileChunking' => $baseDir . '/lib/private/legacy/OC_FileChunking.php',
+ 'OC_Files' => $baseDir . '/lib/private/legacy/OC_Files.php',
+ 'OC_Helper' => $baseDir . '/lib/private/legacy/OC_Helper.php',
+ 'OC_Hook' => $baseDir . '/lib/private/legacy/OC_Hook.php',
+ 'OC_Image' => $baseDir . '/lib/private/legacy/OC_Image.php',
+ 'OC_JSON' => $baseDir . '/lib/private/legacy/OC_JSON.php',
+ 'OC_Response' => $baseDir . '/lib/private/legacy/OC_Response.php',
+ 'OC_Template' => $baseDir . '/lib/private/legacy/OC_Template.php',
+ 'OC_User' => $baseDir . '/lib/private/legacy/OC_User.php',
+ 'OC_Util' => $baseDir . '/lib/private/legacy/OC_Util.php',
);
diff --git a/lib/composer/composer/autoload_namespaces.php b/lib/composer/composer/autoload_namespaces.php
index ca3a13a84f6..4a9c20beed0 100644
--- a/lib/composer/composer/autoload_namespaces.php
+++ b/lib/composer/composer/autoload_namespaces.php
@@ -6,5 +6,4 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname(dirname($vendorDir));
return array(
- '' => array($baseDir . '/lib/private/legacy'),
);
diff --git a/lib/composer/composer/autoload_psr4.php b/lib/composer/composer/autoload_psr4.php
index 31c762759e3..b641d9c6a03 100644
--- a/lib/composer/composer/autoload_psr4.php
+++ b/lib/composer/composer/autoload_psr4.php
@@ -9,4 +9,5 @@ return array(
'OC\\Core\\' => array($baseDir . '/core'),
'OC\\' => array($baseDir . '/lib/private'),
'OCP\\' => array($baseDir . '/lib/public'),
+ '' => array($baseDir . '/lib/private/legacy'),
);
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index b4a36679ccb..3046aea4a95 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -30,7 +30,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
),
);
- public static $fallbackDirsPsr0 = array (
+ public static $fallbackDirsPsr4 = array (
0 => __DIR__ . '/../../..' . '/lib/private/legacy',
);
@@ -98,11 +98,14 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\AppFramework\\OCS\\OCSNotFoundException' => __DIR__ . '/../../..' . '/lib/public/AppFramework/OCS/OCSNotFoundException.php',
'OCP\\AppFramework\\PublicShareController' => __DIR__ . '/../../..' . '/lib/public/AppFramework/PublicShareController.php',
'OCP\\AppFramework\\QueryException' => __DIR__ . '/../../..' . '/lib/public/AppFramework/QueryException.php',
+ 'OCP\\AppFramework\\Services\\IAppConfig' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Services/IAppConfig.php',
+ 'OCP\\AppFramework\\Services\\IInitialState' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Services/IInitialState.php',
'OCP\\AppFramework\\Utility\\IControllerMethodReflector' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Utility/IControllerMethodReflector.php',
'OCP\\AppFramework\\Utility\\ITimeFactory' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Utility/ITimeFactory.php',
'OCP\\App\\AppPathNotFoundException' => __DIR__ . '/../../..' . '/lib/public/App/AppPathNotFoundException.php',
'OCP\\App\\IAppManager' => __DIR__ . '/../../..' . '/lib/public/App/IAppManager.php',
'OCP\\App\\ManagerEvent' => __DIR__ . '/../../..' . '/lib/public/App/ManagerEvent.php',
+ 'OCP\\Authentication\\Events\\LoginFailedEvent' => __DIR__ . '/../../..' . '/lib/public/Authentication/Events/LoginFailedEvent.php',
'OCP\\Authentication\\Exceptions\\CredentialsUnavailableException' => __DIR__ . '/../../..' . '/lib/public/Authentication/Exceptions/CredentialsUnavailableException.php',
'OCP\\Authentication\\Exceptions\\PasswordUnavailableException' => __DIR__ . '/../../..' . '/lib/public/Authentication/Exceptions/PasswordUnavailableException.php',
'OCP\\Authentication\\IApacheBackend' => __DIR__ . '/../../..' . '/lib/public/Authentication/IApacheBackend.php',
@@ -176,6 +179,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\Contacts\\ContactsMenu\\IEntry' => __DIR__ . '/../../..' . '/lib/public/Contacts/ContactsMenu/IEntry.php',
'OCP\\Contacts\\ContactsMenu\\ILinkAction' => __DIR__ . '/../../..' . '/lib/public/Contacts/ContactsMenu/ILinkAction.php',
'OCP\\Contacts\\ContactsMenu\\IProvider' => __DIR__ . '/../../..' . '/lib/public/Contacts/ContactsMenu/IProvider.php',
+ 'OCP\\Contacts\\Events\\ContactInteractedWithEvent' => __DIR__ . '/../../..' . '/lib/public/Contacts/Events/ContactInteractedWithEvent.php',
'OCP\\Contacts\\IManager' => __DIR__ . '/../../..' . '/lib/public/Contacts/IManager.php',
'OCP\\DB\\ISchemaWrapper' => __DIR__ . '/../../..' . '/lib/public/DB/ISchemaWrapper.php',
'OCP\\DB\\QueryBuilder\\ICompositeExpression' => __DIR__ . '/../../..' . '/lib/public/DB/QueryBuilder/ICompositeExpression.php',
@@ -350,6 +354,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\Http\\Client\\IClient' => __DIR__ . '/../../..' . '/lib/public/Http/Client/IClient.php',
'OCP\\Http\\Client\\IClientService' => __DIR__ . '/../../..' . '/lib/public/Http/Client/IClientService.php',
'OCP\\Http\\Client\\IResponse' => __DIR__ . '/../../..' . '/lib/public/Http/Client/IResponse.php',
+ 'OCP\\Http\\Client\\LocalServerException' => __DIR__ . '/../../..' . '/lib/public/Http/Client/LocalServerException.php',
'OCP\\IAddressBook' => __DIR__ . '/../../..' . '/lib/public/IAddressBook.php',
'OCP\\IAppConfig' => __DIR__ . '/../../..' . '/lib/public/IAppConfig.php',
'OCP\\IAvatar' => __DIR__ . '/../../..' . '/lib/public/IAvatar.php',
@@ -401,6 +406,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\Log\\ILogFactory' => __DIR__ . '/../../..' . '/lib/public/Log/ILogFactory.php',
'OCP\\Log\\IWriter' => __DIR__ . '/../../..' . '/lib/public/Log/IWriter.php',
'OCP\\Log\\RotationTrait' => __DIR__ . '/../../..' . '/lib/public/Log/RotationTrait.php',
+ 'OCP\\Mail\\Events\\BeforeMessageSent' => __DIR__ . '/../../..' . '/lib/public/Mail/Events/BeforeMessageSent.php',
'OCP\\Mail\\IAttachment' => __DIR__ . '/../../..' . '/lib/public/Mail/IAttachment.php',
'OCP\\Mail\\IEMailTemplate' => __DIR__ . '/../../..' . '/lib/public/Mail/IEMailTemplate.php',
'OCP\\Mail\\IMailer' => __DIR__ . '/../../..' . '/lib/public/Mail/IMailer.php',
@@ -553,7 +559,9 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\AppFramework\\Http\\Request' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Http/Request.php',
'OC\\AppFramework\\Logger' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Logger.php',
'OC\\AppFramework\\Middleware\\AdditionalScriptsMiddleware' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/AdditionalScriptsMiddleware.php',
+ 'OC\\AppFramework\\Middleware\\CompressionMiddleware' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/CompressionMiddleware.php',
'OC\\AppFramework\\Middleware\\MiddlewareDispatcher' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/MiddlewareDispatcher.php',
+ 'OC\\AppFramework\\Middleware\\NotModifiedMiddleware' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/NotModifiedMiddleware.php',
'OC\\AppFramework\\Middleware\\OCSMiddleware' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/OCSMiddleware.php',
'OC\\AppFramework\\Middleware\\PublicShare\\Exceptions\\NeedAuthenticationException' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/PublicShare/Exceptions/NeedAuthenticationException.php',
'OC\\AppFramework\\Middleware\\PublicShare\\PublicShareMiddleware' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/PublicShare/PublicShareMiddleware.php',
@@ -581,6 +589,8 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\AppFramework\\OCS\\V2Response' => __DIR__ . '/../../..' . '/lib/private/AppFramework/OCS/V2Response.php',
'OC\\AppFramework\\Routing\\RouteActionHandler' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Routing/RouteActionHandler.php',
'OC\\AppFramework\\Routing\\RouteConfig' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Routing/RouteConfig.php',
+ 'OC\\AppFramework\\Services\\AppConfig' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Services/AppConfig.php',
+ 'OC\\AppFramework\\Services\\InitialState' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Services/InitialState.php',
'OC\\AppFramework\\Utility\\ControllerMethodReflector' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Utility/ControllerMethodReflector.php',
'OC\\AppFramework\\Utility\\SimpleContainer' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Utility/SimpleContainer.php',
'OC\\AppFramework\\Utility\\TimeFactory' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Utility/TimeFactory.php',
@@ -619,6 +629,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Archive\\TAR' => __DIR__ . '/../../..' . '/lib/private/Archive/TAR.php',
'OC\\Archive\\ZIP' => __DIR__ . '/../../..' . '/lib/private/Archive/ZIP.php',
'OC\\Authentication\\Events\\ARemoteWipeEvent' => __DIR__ . '/../../..' . '/lib/private/Authentication/Events/ARemoteWipeEvent.php',
+ 'OC\\Authentication\\Events\\LoginFailed' => __DIR__ . '/../../..' . '/lib/private/Authentication/Events/LoginFailed.php',
'OC\\Authentication\\Events\\RemoteWipeFinished' => __DIR__ . '/../../..' . '/lib/private/Authentication/Events/RemoteWipeFinished.php',
'OC\\Authentication\\Events\\RemoteWipeStarted' => __DIR__ . '/../../..' . '/lib/private/Authentication/Events/RemoteWipeStarted.php',
'OC\\Authentication\\Exceptions\\ExpiredTokenException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/ExpiredTokenException.php',
@@ -631,6 +642,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Authentication\\Exceptions\\TwoFactorAuthRequiredException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/TwoFactorAuthRequiredException.php',
'OC\\Authentication\\Exceptions\\UserAlreadyLoggedInException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/UserAlreadyLoggedInException.php',
'OC\\Authentication\\Exceptions\\WipeTokenException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/WipeTokenException.php',
+ 'OC\\Authentication\\Listeners\\LoginFailedListener' => __DIR__ . '/../../..' . '/lib/private/Authentication/Listeners/LoginFailedListener.php',
'OC\\Authentication\\Listeners\\RemoteWipeActivityListener' => __DIR__ . '/../../..' . '/lib/private/Authentication/Listeners/RemoteWipeActivityListener.php',
'OC\\Authentication\\Listeners\\RemoteWipeEmailListener' => __DIR__ . '/../../..' . '/lib/private/Authentication/Listeners/RemoteWipeEmailListener.php',
'OC\\Authentication\\Listeners\\RemoteWipeNotificationsListener' => __DIR__ . '/../../..' . '/lib/private/Authentication/Listeners/RemoteWipeNotificationsListener.php',
@@ -653,6 +665,8 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Authentication\\Login\\UidLoginCommand' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/UidLoginCommand.php',
'OC\\Authentication\\Login\\UpdateLastPasswordConfirmCommand' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/UpdateLastPasswordConfirmCommand.php',
'OC\\Authentication\\Login\\UserDisabledCheckCommand' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/UserDisabledCheckCommand.php',
+ 'OC\\Authentication\\Login\\WebAuthnChain' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/WebAuthnChain.php',
+ 'OC\\Authentication\\Login\\WebAuthnLoginCommand' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/WebAuthnLoginCommand.php',
'OC\\Authentication\\Notifications\\Notifier' => __DIR__ . '/../../..' . '/lib/private/Authentication/Notifications/Notifier.php',
'OC\\Authentication\\Token\\DefaultToken' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/DefaultToken.php',
'OC\\Authentication\\Token\\DefaultTokenCleanupJob' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/DefaultTokenCleanupJob.php',
@@ -675,6 +689,10 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Authentication\\TwoFactorAuth\\ProviderManager' => __DIR__ . '/../../..' . '/lib/private/Authentication/TwoFactorAuth/ProviderManager.php',
'OC\\Authentication\\TwoFactorAuth\\ProviderSet' => __DIR__ . '/../../..' . '/lib/private/Authentication/TwoFactorAuth/ProviderSet.php',
'OC\\Authentication\\TwoFactorAuth\\Registry' => __DIR__ . '/../../..' . '/lib/private/Authentication/TwoFactorAuth/Registry.php',
+ 'OC\\Authentication\\WebAuthn\\CredentialRepository' => __DIR__ . '/../../..' . '/lib/private/Authentication/WebAuthn/CredentialRepository.php',
+ 'OC\\Authentication\\WebAuthn\\Db\\PublicKeyCredentialEntity' => __DIR__ . '/../../..' . '/lib/private/Authentication/WebAuthn/Db/PublicKeyCredentialEntity.php',
+ 'OC\\Authentication\\WebAuthn\\Db\\PublicKeyCredentialMapper' => __DIR__ . '/../../..' . '/lib/private/Authentication/WebAuthn/Db/PublicKeyCredentialMapper.php',
+ 'OC\\Authentication\\WebAuthn\\Manager' => __DIR__ . '/../../..' . '/lib/private/Authentication/WebAuthn/Manager.php',
'OC\\Avatar\\Avatar' => __DIR__ . '/../../..' . '/lib/private/Avatar/Avatar.php',
'OC\\Avatar\\AvatarManager' => __DIR__ . '/../../..' . '/lib/private/Avatar/AvatarManager.php',
'OC\\Avatar\\GuestAvatar' => __DIR__ . '/../../..' . '/lib/private/Avatar/GuestAvatar.php',
@@ -756,6 +774,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Core\\Command\\Config\\System\\DeleteConfig' => __DIR__ . '/../../..' . '/core/Command/Config/System/DeleteConfig.php',
'OC\\Core\\Command\\Config\\System\\GetConfig' => __DIR__ . '/../../..' . '/core/Command/Config/System/GetConfig.php',
'OC\\Core\\Command\\Config\\System\\SetConfig' => __DIR__ . '/../../..' . '/core/Command/Config/System/SetConfig.php',
+ 'OC\\Core\\Command\\Db\\AddMissingColumns' => __DIR__ . '/../../..' . '/core/Command/Db/AddMissingColumns.php',
'OC\\Core\\Command\\Db\\AddMissingIndices' => __DIR__ . '/../../..' . '/core/Command/Db/AddMissingIndices.php',
'OC\\Core\\Command\\Db\\ConvertFilecacheBigInt' => __DIR__ . '/../../..' . '/core/Command/Db/ConvertFilecacheBigInt.php',
'OC\\Core\\Command\\Db\\ConvertMysqlToMB4' => __DIR__ . '/../../..' . '/core/Command/Db/ConvertMysqlToMB4.php',
@@ -842,6 +861,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Core\\Controller\\TwoFactorChallengeController' => __DIR__ . '/../../..' . '/core/Controller/TwoFactorChallengeController.php',
'OC\\Core\\Controller\\UserController' => __DIR__ . '/../../..' . '/core/Controller/UserController.php',
'OC\\Core\\Controller\\WalledGardenController' => __DIR__ . '/../../..' . '/core/Controller/WalledGardenController.php',
+ 'OC\\Core\\Controller\\WebAuthnController' => __DIR__ . '/../../..' . '/core/Controller/WebAuthnController.php',
'OC\\Core\\Controller\\WhatsNewController' => __DIR__ . '/../../..' . '/core/Controller/WhatsNewController.php',
'OC\\Core\\Controller\\WipeController' => __DIR__ . '/../../..' . '/core/Controller/WipeController.php',
'OC\\Core\\Data\\LoginFlowV2Credentials' => __DIR__ . '/../../..' . '/core/Data/LoginFlowV2Credentials.php',
@@ -875,6 +895,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Core\\Migrations\\Version18000Date20190920085628' => __DIR__ . '/../../..' . '/core/Migrations/Version18000Date20190920085628.php',
'OC\\Core\\Migrations\\Version18000Date20191014105105' => __DIR__ . '/../../..' . '/core/Migrations/Version18000Date20191014105105.php',
'OC\\Core\\Migrations\\Version18000Date20191204114856' => __DIR__ . '/../../..' . '/core/Migrations/Version18000Date20191204114856.php',
+ 'OC\\Core\\Migrations\\Version19000Date20200211083441' => __DIR__ . '/../../..' . '/core/Migrations/Version19000Date20200211083441.php',
'OC\\Core\\Notification\\RemoveLinkSharesNotifier' => __DIR__ . '/../../..' . '/core/Notification/RemoveLinkSharesNotifier.php',
'OC\\Core\\Service\\LoginFlowV2Service' => __DIR__ . '/../../..' . '/core/Service/LoginFlowV2Service.php',
'OC\\DB\\Adapter' => __DIR__ . '/../../..' . '/lib/private/DB/Adapter.php',
@@ -890,6 +911,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\DB\\MigrationException' => __DIR__ . '/../../..' . '/lib/private/DB/MigrationException.php',
'OC\\DB\\MigrationService' => __DIR__ . '/../../..' . '/lib/private/DB/MigrationService.php',
'OC\\DB\\Migrator' => __DIR__ . '/../../..' . '/lib/private/DB/Migrator.php',
+ 'OC\\DB\\MissingColumnInformation' => __DIR__ . '/../../..' . '/lib/private/DB/MissingColumnInformation.php',
'OC\\DB\\MissingIndexInformation' => __DIR__ . '/../../..' . '/lib/private/DB/MissingIndexInformation.php',
'OC\\DB\\MySQLMigrator' => __DIR__ . '/../../..' . '/lib/private/DB/MySQLMigrator.php',
'OC\\DB\\MySqlTools' => __DIR__ . '/../../..' . '/lib/private/DB/MySqlTools.php',
@@ -992,6 +1014,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Files\\Node\\File' => __DIR__ . '/../../..' . '/lib/private/Files/Node/File.php',
'OC\\Files\\Node\\Folder' => __DIR__ . '/../../..' . '/lib/private/Files/Node/Folder.php',
'OC\\Files\\Node\\HookConnector' => __DIR__ . '/../../..' . '/lib/private/Files/Node/HookConnector.php',
+ 'OC\\Files\\Node\\LazyFolder' => __DIR__ . '/../../..' . '/lib/private/Files/Node/LazyFolder.php',
'OC\\Files\\Node\\LazyRoot' => __DIR__ . '/../../..' . '/lib/private/Files/Node/LazyRoot.php',
'OC\\Files\\Node\\Node' => __DIR__ . '/../../..' . '/lib/private/Files/Node/Node.php',
'OC\\Files\\Node\\NonExistingFile' => __DIR__ . '/../../..' . '/lib/private/Files/Node/NonExistingFile.php',
@@ -1039,7 +1062,9 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Files\\Storage\\Wrapper\\Quota' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/Quota.php',
'OC\\Files\\Storage\\Wrapper\\Wrapper' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/Wrapper.php',
'OC\\Files\\Stream\\Encryption' => __DIR__ . '/../../..' . '/lib/private/Files/Stream/Encryption.php',
+ 'OC\\Files\\Stream\\HashWrapper' => __DIR__ . '/../../..' . '/lib/private/Files/Stream/HashWrapper.php',
'OC\\Files\\Stream\\Quota' => __DIR__ . '/../../..' . '/lib/private/Files/Stream/Quota.php',
+ 'OC\\Files\\Stream\\SeekableHttpStream' => __DIR__ . '/../../..' . '/lib/private/Files/Stream/SeekableHttpStream.php',
'OC\\Files\\Type\\Detection' => __DIR__ . '/../../..' . '/lib/private/Files/Type/Detection.php',
'OC\\Files\\Type\\Loader' => __DIR__ . '/../../..' . '/lib/private/Files/Type/Loader.php',
'OC\\Files\\Type\\TemplateManager' => __DIR__ . '/../../..' . '/lib/private/Files/Type/TemplateManager.php',
@@ -1099,6 +1124,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Log\\File' => __DIR__ . '/../../..' . '/lib/private/Log/File.php',
'OC\\Log\\LogDetails' => __DIR__ . '/../../..' . '/lib/private/Log/LogDetails.php',
'OC\\Log\\LogFactory' => __DIR__ . '/../../..' . '/lib/private/Log/LogFactory.php',
+ 'OC\\Log\\PsrLoggerAdapter' => __DIR__ . '/../../..' . '/lib/private/Log/PsrLoggerAdapter.php',
'OC\\Log\\Rotate' => __DIR__ . '/../../..' . '/lib/private/Log/Rotate.php',
'OC\\Log\\Syslog' => __DIR__ . '/../../..' . '/lib/private/Log/Syslog.php',
'OC\\Log\\Systemdlog' => __DIR__ . '/../../..' . '/lib/private/Log/Systemdlog.php',
@@ -1137,6 +1163,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Preview\\BMP' => __DIR__ . '/../../..' . '/lib/private/Preview/BMP.php',
'OC\\Preview\\BackgroundCleanupJob' => __DIR__ . '/../../..' . '/lib/private/Preview/BackgroundCleanupJob.php',
'OC\\Preview\\Bitmap' => __DIR__ . '/../../..' . '/lib/private/Preview/Bitmap.php',
+ 'OC\\Preview\\Bundled' => __DIR__ . '/../../..' . '/lib/private/Preview/Bundled.php',
'OC\\Preview\\Font' => __DIR__ . '/../../..' . '/lib/private/Preview/Font.php',
'OC\\Preview\\GIF' => __DIR__ . '/../../..' . '/lib/private/Preview/GIF.php',
'OC\\Preview\\Generator' => __DIR__ . '/../../..' . '/lib/private/Preview/Generator.php',
@@ -1145,6 +1172,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Preview\\Illustrator' => __DIR__ . '/../../..' . '/lib/private/Preview/Illustrator.php',
'OC\\Preview\\Image' => __DIR__ . '/../../..' . '/lib/private/Preview/Image.php',
'OC\\Preview\\JPEG' => __DIR__ . '/../../..' . '/lib/private/Preview/JPEG.php',
+ 'OC\\Preview\\Krita' => __DIR__ . '/../../..' . '/lib/private/Preview/Krita.php',
'OC\\Preview\\MP3' => __DIR__ . '/../../..' . '/lib/private/Preview/MP3.php',
'OC\\Preview\\MSOffice2003' => __DIR__ . '/../../..' . '/lib/private/Preview/MSOffice2003.php',
'OC\\Preview\\MSOffice2007' => __DIR__ . '/../../..' . '/lib/private/Preview/MSOffice2007.php',
@@ -1162,6 +1190,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Preview\\ProviderV2' => __DIR__ . '/../../..' . '/lib/private/Preview/ProviderV2.php',
'OC\\Preview\\SVG' => __DIR__ . '/../../..' . '/lib/private/Preview/SVG.php',
'OC\\Preview\\StarOffice' => __DIR__ . '/../../..' . '/lib/private/Preview/StarOffice.php',
+ 'OC\\Preview\\Storage\\Root' => __DIR__ . '/../../..' . '/lib/private/Preview/Storage/Root.php',
'OC\\Preview\\TIFF' => __DIR__ . '/../../..' . '/lib/private/Preview/TIFF.php',
'OC\\Preview\\TXT' => __DIR__ . '/../../..' . '/lib/private/Preview/TXT.php',
'OC\\Preview\\Watcher' => __DIR__ . '/../../..' . '/lib/private/Preview/Watcher.php',
@@ -1191,8 +1220,6 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Repair\\NC16\\AddClenupLoginFlowV2BackgroundJob' => __DIR__ . '/../../..' . '/lib/private/Repair/NC16/AddClenupLoginFlowV2BackgroundJob.php',
'OC\\Repair\\NC16\\CleanupCardDAVPhotoCache' => __DIR__ . '/../../..' . '/lib/private/Repair/NC16/CleanupCardDAVPhotoCache.php',
'OC\\Repair\\NC16\\ClearCollectionsAccessCache' => __DIR__ . '/../../..' . '/lib/private/Repair/NC16/ClearCollectionsAccessCache.php',
- 'OC\\Repair\\NC17\\SetEnterpriseLogo' => __DIR__ . '/../../..' . '/lib/private/Repair/NC17/SetEnterpriseLogo.php',
- 'OC\\Repair\\NC17\\SwitchUpdateChannel' => __DIR__ . '/../../..' . '/lib/private/Repair/NC17/SwitchUpdateChannel.php',
'OC\\Repair\\NC18\\ResetGeneratedAvatarFlag' => __DIR__ . '/../../..' . '/lib/private/Repair/NC18/ResetGeneratedAvatarFlag.php',
'OC\\Repair\\OldGroupMembershipShares' => __DIR__ . '/../../..' . '/lib/private/Repair/OldGroupMembershipShares.php',
'OC\\Repair\\Owncloud\\DropAccountTermsTable' => __DIR__ . '/../../..' . '/lib/private/Repair/Owncloud/DropAccountTermsTable.php',
@@ -1306,22 +1333,22 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\User\\NoUserException' => __DIR__ . '/../../..' . '/lib/private/User/NoUserException.php',
'OC\\User\\Session' => __DIR__ . '/../../..' . '/lib/private/User/Session.php',
'OC\\User\\User' => __DIR__ . '/../../..' . '/lib/private/User/User.php',
- 'OC_API' => __DIR__ . '/../../..' . '/lib/private/legacy/api.php',
- 'OC_App' => __DIR__ . '/../../..' . '/lib/private/legacy/app.php',
- 'OC_DB' => __DIR__ . '/../../..' . '/lib/private/legacy/db.php',
- 'OC_DB_StatementWrapper' => __DIR__ . '/../../..' . '/lib/private/legacy/db/statementwrapper.php',
- 'OC_Defaults' => __DIR__ . '/../../..' . '/lib/private/legacy/defaults.php',
- 'OC_EventSource' => __DIR__ . '/../../..' . '/lib/private/legacy/eventsource.php',
- 'OC_FileChunking' => __DIR__ . '/../../..' . '/lib/private/legacy/filechunking.php',
- 'OC_Files' => __DIR__ . '/../../..' . '/lib/private/legacy/files.php',
- 'OC_Helper' => __DIR__ . '/../../..' . '/lib/private/legacy/helper.php',
- 'OC_Hook' => __DIR__ . '/../../..' . '/lib/private/legacy/hook.php',
- 'OC_Image' => __DIR__ . '/../../..' . '/lib/private/legacy/image.php',
- 'OC_JSON' => __DIR__ . '/../../..' . '/lib/private/legacy/json.php',
- 'OC_Response' => __DIR__ . '/../../..' . '/lib/private/legacy/response.php',
- 'OC_Template' => __DIR__ . '/../../..' . '/lib/private/legacy/template.php',
- 'OC_User' => __DIR__ . '/../../..' . '/lib/private/legacy/user.php',
- 'OC_Util' => __DIR__ . '/../../..' . '/lib/private/legacy/util.php',
+ 'OC_API' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_API.php',
+ 'OC_App' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_App.php',
+ 'OC_DB' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_DB.php',
+ 'OC_DB_StatementWrapper' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_DB_StatementWrapper.php',
+ 'OC_Defaults' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_Defaults.php',
+ 'OC_EventSource' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_EventSource.php',
+ 'OC_FileChunking' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_FileChunking.php',
+ 'OC_Files' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_Files.php',
+ 'OC_Helper' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_Helper.php',
+ 'OC_Hook' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_Hook.php',
+ 'OC_Image' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_Image.php',
+ 'OC_JSON' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_JSON.php',
+ 'OC_Response' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_Response.php',
+ 'OC_Template' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_Template.php',
+ 'OC_User' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_User.php',
+ 'OC_Util' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_Util.php',
);
public static function getInitializer(ClassLoader $loader)
@@ -1329,7 +1356,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c::$prefixDirsPsr4;
- $loader->fallbackDirsPsr0 = ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c::$fallbackDirsPsr0;
+ $loader->fallbackDirsPsr4 = ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c::$fallbackDirsPsr4;
$loader->classMap = ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c::$classMap;
}, null, ClassLoader::class);
diff --git a/lib/l10n/af.js b/lib/l10n/af.js
index 0cc9f27b464..f0bb7a74f99 100644
--- a/lib/l10n/af.js
+++ b/lib/l10n/af.js
@@ -21,11 +21,7 @@ OC.L10N.register(
"Saturday" : "Saterdag",
"a safe home for all your data" : "’n veilige tuiste vir al u data",
"Storage is temporarily not available" : "Berging is tydelik nie beskikbaar nie",
- "Create" : "Skep",
- "Delete" : "Skrap",
- "Share" : "Deel",
"Security" : "Sekuriteit",
- "Personal info" : "Persoonlike inligting",
- "Unlimited" : "Onbeperkte"
+ "Personal info" : "Persoonlike inligting"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/af.json b/lib/l10n/af.json
index 1f01eaee1a9..efc6a26dd7a 100644
--- a/lib/l10n/af.json
+++ b/lib/l10n/af.json
@@ -19,11 +19,7 @@
"Saturday" : "Saterdag",
"a safe home for all your data" : "’n veilige tuiste vir al u data",
"Storage is temporarily not available" : "Berging is tydelik nie beskikbaar nie",
- "Create" : "Skep",
- "Delete" : "Skrap",
- "Share" : "Deel",
"Security" : "Sekuriteit",
- "Personal info" : "Persoonlike inligting",
- "Unlimited" : "Onbeperkte"
+ "Personal info" : "Persoonlike inligting"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/ar.js b/lib/l10n/ar.js
index b4f5bb6b7c8..b5fd998ca7b 100644
--- a/lib/l10n/ar.js
+++ b/lib/l10n/ar.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "الكتابة في مجلد \"config\" غير ممكنة!",
"This can usually be fixed by giving the webserver write access to the config directory" : "يمكن حل هذا عادة بإعطاء خادم الوب صلاحية الكتابة في مجلد config",
"See %s" : "أنظر %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "يمكن إصلاح هذا الخطا بإعطاء مخدّم الموقع صلاحيات التعديل على مجلد الإعدادات. أنظر %s",
"Sample configuration detected" : "تم اكتشاف إعدادات عيّنة",
"%1$s and %2$s" : "%1$s و %2$s",
"%1$s, %2$s and %3$s" : "%1$s، %2$s و %3$s",
@@ -15,7 +14,6 @@ OC.L10N.register(
"PHP %s or higher is required." : "إصدار PHP %s أو أحدث منه مطلوب.",
"PHP with a version lower than %s is required." : "PHP الإصدار %s أو أقل مطلوب.",
"%sbit or higher PHP required." : "مكتبات PHP ذات %s بت أو أعلى مطلوبة.",
- "Following databases are supported: %s" : "قواعد البيانات التالية مدعومة: %s",
"The command line tool %s could not be found" : "لم يتم العثور على أداة سطر الأوامر %s",
"The library %s is not available." : "مكتبة %s غير متوفرة.",
"Authentication" : "المصادقة",
@@ -119,20 +117,14 @@ OC.L10N.register(
"Application is not enabled" : "التطبيق غير مفعّل",
"Authentication error" : "لم يتم التأكد من الشخصية بنجاح",
"Token expired. Please reload page." : "انتهت صلاحية الكلمة , يرجى اعادة تحميل الصفحة",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "يمكن إصلاح هذا الخطا بإعطاء مخدّم الموقع صلاحيات التعديل على مجلد الإعدادات. أنظر %s",
"Storage is temporarily not available" : "وحدة التخزين غير متوفرة",
- "Create" : "إنشاء",
- "Delete" : "حذف",
- "Share" : "شارك",
+ "Following databases are supported: %s" : "قواعد البيانات التالية مدعومة: %s",
"Overview" : "نظرة شاملة",
"Basic settings" : "الإعدادات الأساسية",
"Sharing" : "المشاركة",
"Security" : "الأمان",
"Personal info" : "المعلومات الشخصية",
- "Unlimited" : "غير محدود",
- "Verifying" : "التحقق",
- "Verifying …" : "عملية التحقق جارية …",
- "Verify" : "التحقق",
- "Sharing %s failed, because the file does not exist" : "فشلت مشاركة %s فالملف غير موجود",
- "Sharing %s failed, because you can not share with yourself" : "فشلت مشاركة %s لأنك لايمكنك المشاركة مع نفسك"
+ "Mobile & desktop" : "الجوال وسطح المكتب"
},
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
diff --git a/lib/l10n/ar.json b/lib/l10n/ar.json
index 1516d483a3b..3a8358cbc68 100644
--- a/lib/l10n/ar.json
+++ b/lib/l10n/ar.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "الكتابة في مجلد \"config\" غير ممكنة!",
"This can usually be fixed by giving the webserver write access to the config directory" : "يمكن حل هذا عادة بإعطاء خادم الوب صلاحية الكتابة في مجلد config",
"See %s" : "أنظر %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "يمكن إصلاح هذا الخطا بإعطاء مخدّم الموقع صلاحيات التعديل على مجلد الإعدادات. أنظر %s",
"Sample configuration detected" : "تم اكتشاف إعدادات عيّنة",
"%1$s and %2$s" : "%1$s و %2$s",
"%1$s, %2$s and %3$s" : "%1$s، %2$s و %3$s",
@@ -13,7 +12,6 @@
"PHP %s or higher is required." : "إصدار PHP %s أو أحدث منه مطلوب.",
"PHP with a version lower than %s is required." : "PHP الإصدار %s أو أقل مطلوب.",
"%sbit or higher PHP required." : "مكتبات PHP ذات %s بت أو أعلى مطلوبة.",
- "Following databases are supported: %s" : "قواعد البيانات التالية مدعومة: %s",
"The command line tool %s could not be found" : "لم يتم العثور على أداة سطر الأوامر %s",
"The library %s is not available." : "مكتبة %s غير متوفرة.",
"Authentication" : "المصادقة",
@@ -117,20 +115,14 @@
"Application is not enabled" : "التطبيق غير مفعّل",
"Authentication error" : "لم يتم التأكد من الشخصية بنجاح",
"Token expired. Please reload page." : "انتهت صلاحية الكلمة , يرجى اعادة تحميل الصفحة",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "يمكن إصلاح هذا الخطا بإعطاء مخدّم الموقع صلاحيات التعديل على مجلد الإعدادات. أنظر %s",
"Storage is temporarily not available" : "وحدة التخزين غير متوفرة",
- "Create" : "إنشاء",
- "Delete" : "حذف",
- "Share" : "شارك",
+ "Following databases are supported: %s" : "قواعد البيانات التالية مدعومة: %s",
"Overview" : "نظرة شاملة",
"Basic settings" : "الإعدادات الأساسية",
"Sharing" : "المشاركة",
"Security" : "الأمان",
"Personal info" : "المعلومات الشخصية",
- "Unlimited" : "غير محدود",
- "Verifying" : "التحقق",
- "Verifying …" : "عملية التحقق جارية …",
- "Verify" : "التحقق",
- "Sharing %s failed, because the file does not exist" : "فشلت مشاركة %s فالملف غير موجود",
- "Sharing %s failed, because you can not share with yourself" : "فشلت مشاركة %s لأنك لايمكنك المشاركة مع نفسك"
+ "Mobile & desktop" : "الجوال وسطح المكتب"
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
} \ No newline at end of file
diff --git a/lib/l10n/ast.js b/lib/l10n/ast.js
index 50c53d25561..a1180b42f20 100644
--- a/lib/l10n/ast.js
+++ b/lib/l10n/ast.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "¡Nun pue escribise nel direutoriu «config»!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Davezu esto pue iguase dándo-y al sirvidor web accesu d'escritura al direutoriu de configuración",
"See %s" : "Mira %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Esto davezu íguase dando'l permisu d'escritura nel direutoriu de configuración al sirvidor web. Mira %s",
"Sample configuration detected" : "Configuración d'amuesa detectada",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Detectose que la configuración d'amuesa copiose. Esto pue encaboxar la instalación y dexala ensín soporte. Llee la documentación enantes de facer cambéos en config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -15,10 +14,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Necesítase PHP %s o superior",
"PHP with a version lower than %s is required." : "Necesítase una versión PHP anterior a %s",
"%sbit or higher PHP required." : "Necesítase PHP %sbit o superior",
- "Following databases are supported: %s" : "Les siguientes bases de datos tan sofitaes: %s",
"The command line tool %s could not be found" : "La ferramienta línea de comandu %s nun pudo alcontrase",
"The library %s is not available." : "La librería %s nun ta disponible",
- "Following platforms are supported: %s" : "Les siguientes plataformes tan sofitaes: %s",
"Authentication" : "Autenticación",
"Unknown filetype" : "Triba de ficheru desconocida",
"Invalid image" : "Imaxe inválida",
@@ -136,6 +133,7 @@ OC.L10N.register(
"Token expired. Please reload page." : "Token caducáu. Recarga la páxina.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Nun hai controladores de bases de datos (sqlite, mysql, o postgresql)",
"Cannot write into \"config\" directory" : "Nun pue escribise nel direutoriu \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Esto davezu íguase dando'l permisu d'escritura nel direutoriu de configuración al sirvidor web. Mira %s",
"Cannot write into \"apps\" directory" : "Nun pue escribise nel direutoriu \"apps\"",
"Cannot create \"data\" directory" : "Nun pue crease'l direutoriu «datos»",
"Setting locale to %s failed" : "Falló l'activación del idioma %s",
@@ -162,28 +160,11 @@ OC.L10N.register(
"Storage connection error. %s" : "Fallu de conexón al almacenamientu. %s",
"Storage is temporarily not available" : "L'almacenamientu ta temporalmente non disponible",
"Storage connection timeout. %s" : "Tiempu escosao de conexón al almacenamientu. %s",
- "Create" : "Crear",
- "Change" : "Camudar",
- "Delete" : "Desaniciar",
- "Share" : "Share",
+ "Following databases are supported: %s" : "Les siguientes bases de datos tan sofitaes: %s",
+ "Following platforms are supported: %s" : "Les siguientes plataformes tan sofitaes: %s",
"Basic settings" : "Axustes básicos",
"Sharing" : "Compartiendo",
"Security" : "Seguranza",
- "Personal info" : "Información personal",
- "Unlimited" : "Non llendáu",
- "Verifying" : "Verificando",
- "Verifying …" : "Verificando...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Compartir %s falló, por cuenta qu'el backend nun dexa acciones de tipu %i",
- "Sharing %s failed, because the file does not exist" : "Compartir %s falló, porque'l ficheru nun esiste",
- "Sharing %s failed, because you can not share with yourself" : "Compartir %s falló, porque nun puede compartise contigo mesmu",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesites apurrir una contraseña pa crear un enllaz públicu, namái tan permitíos los enllaces protexíos",
- "Sharing %s failed, because sharing with links is not allowed" : "Compartir %s falló, porque nun se permite compartir con enllaces",
- "Not allowed to create a federated share with the same user" : "Nun s'almite crear un recursu compartíu federáu col mesmu usuariu",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nun pue afitase la data de caducidá. Ficheros compartíos nun puen caducar dempués de %s de compartise",
- "Cannot set expiration date. Expiration date is in the past" : "Nun pue afitase la data d'espiración. La data d'espiración ta nel pasáu",
- "Sharing failed, because the user %s is the original sharer" : "Compartir falló, porque l'usuariu %s ye'l compartidor orixinal",
- "Sharing %s failed, because resharing is not allowed" : "Compartir %s falló, porque nun se permite la re-compartición",
- "Sharing %s failed, because the file could not be found in the file cache" : "Compartir %s falló, yá que'l ficheru nun pudo atopase na caché de ficheru"
+ "Personal info" : "Información personal"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/ast.json b/lib/l10n/ast.json
index 59ba0d84e3a..c71991159c5 100644
--- a/lib/l10n/ast.json
+++ b/lib/l10n/ast.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "¡Nun pue escribise nel direutoriu «config»!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Davezu esto pue iguase dándo-y al sirvidor web accesu d'escritura al direutoriu de configuración",
"See %s" : "Mira %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Esto davezu íguase dando'l permisu d'escritura nel direutoriu de configuración al sirvidor web. Mira %s",
"Sample configuration detected" : "Configuración d'amuesa detectada",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Detectose que la configuración d'amuesa copiose. Esto pue encaboxar la instalación y dexala ensín soporte. Llee la documentación enantes de facer cambéos en config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -13,10 +12,8 @@
"PHP %s or higher is required." : "Necesítase PHP %s o superior",
"PHP with a version lower than %s is required." : "Necesítase una versión PHP anterior a %s",
"%sbit or higher PHP required." : "Necesítase PHP %sbit o superior",
- "Following databases are supported: %s" : "Les siguientes bases de datos tan sofitaes: %s",
"The command line tool %s could not be found" : "La ferramienta línea de comandu %s nun pudo alcontrase",
"The library %s is not available." : "La librería %s nun ta disponible",
- "Following platforms are supported: %s" : "Les siguientes plataformes tan sofitaes: %s",
"Authentication" : "Autenticación",
"Unknown filetype" : "Triba de ficheru desconocida",
"Invalid image" : "Imaxe inválida",
@@ -134,6 +131,7 @@
"Token expired. Please reload page." : "Token caducáu. Recarga la páxina.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Nun hai controladores de bases de datos (sqlite, mysql, o postgresql)",
"Cannot write into \"config\" directory" : "Nun pue escribise nel direutoriu \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Esto davezu íguase dando'l permisu d'escritura nel direutoriu de configuración al sirvidor web. Mira %s",
"Cannot write into \"apps\" directory" : "Nun pue escribise nel direutoriu \"apps\"",
"Cannot create \"data\" directory" : "Nun pue crease'l direutoriu «datos»",
"Setting locale to %s failed" : "Falló l'activación del idioma %s",
@@ -160,28 +158,11 @@
"Storage connection error. %s" : "Fallu de conexón al almacenamientu. %s",
"Storage is temporarily not available" : "L'almacenamientu ta temporalmente non disponible",
"Storage connection timeout. %s" : "Tiempu escosao de conexón al almacenamientu. %s",
- "Create" : "Crear",
- "Change" : "Camudar",
- "Delete" : "Desaniciar",
- "Share" : "Share",
+ "Following databases are supported: %s" : "Les siguientes bases de datos tan sofitaes: %s",
+ "Following platforms are supported: %s" : "Les siguientes plataformes tan sofitaes: %s",
"Basic settings" : "Axustes básicos",
"Sharing" : "Compartiendo",
"Security" : "Seguranza",
- "Personal info" : "Información personal",
- "Unlimited" : "Non llendáu",
- "Verifying" : "Verificando",
- "Verifying …" : "Verificando...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Compartir %s falló, por cuenta qu'el backend nun dexa acciones de tipu %i",
- "Sharing %s failed, because the file does not exist" : "Compartir %s falló, porque'l ficheru nun esiste",
- "Sharing %s failed, because you can not share with yourself" : "Compartir %s falló, porque nun puede compartise contigo mesmu",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesites apurrir una contraseña pa crear un enllaz públicu, namái tan permitíos los enllaces protexíos",
- "Sharing %s failed, because sharing with links is not allowed" : "Compartir %s falló, porque nun se permite compartir con enllaces",
- "Not allowed to create a federated share with the same user" : "Nun s'almite crear un recursu compartíu federáu col mesmu usuariu",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nun pue afitase la data de caducidá. Ficheros compartíos nun puen caducar dempués de %s de compartise",
- "Cannot set expiration date. Expiration date is in the past" : "Nun pue afitase la data d'espiración. La data d'espiración ta nel pasáu",
- "Sharing failed, because the user %s is the original sharer" : "Compartir falló, porque l'usuariu %s ye'l compartidor orixinal",
- "Sharing %s failed, because resharing is not allowed" : "Compartir %s falló, porque nun se permite la re-compartición",
- "Sharing %s failed, because the file could not be found in the file cache" : "Compartir %s falló, yá que'l ficheru nun pudo atopase na caché de ficheru"
+ "Personal info" : "Información personal"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/az.js b/lib/l10n/az.js
index 0288fb1e1a7..4a063839ea1 100644
--- a/lib/l10n/az.js
+++ b/lib/l10n/az.js
@@ -65,12 +65,7 @@ OC.L10N.register(
"Authentication error" : "Təyinat metodikası",
"Token expired. Please reload page." : "Token vaxtı bitib. Xahiş olunur səhifəni yenidən yükləyəsiniz.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Bu ola bilər ki, cache/accelerator such tərəfindən cağırılıb hansi ki, Zend OPcache və eAccelerator-da olduğu kimidir.",
- "Create" : "Yarat",
- "Delete" : "Sil",
- "Share" : "Paylaş",
"Sharing" : "Paylaşılır",
- "Personal info" : "Şəxsi məlumat",
- "Unlimited" : "Limitsiz",
- "Sharing %s failed, because the file does not exist" : "%s yayımlanmasında səhv baş verdi ona görə ki, fayl mövcud deyil."
+ "Personal info" : "Şəxsi məlumat"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/az.json b/lib/l10n/az.json
index 8c795c5fb5d..f2ff587e0ab 100644
--- a/lib/l10n/az.json
+++ b/lib/l10n/az.json
@@ -63,12 +63,7 @@
"Authentication error" : "Təyinat metodikası",
"Token expired. Please reload page." : "Token vaxtı bitib. Xahiş olunur səhifəni yenidən yükləyəsiniz.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Bu ola bilər ki, cache/accelerator such tərəfindən cağırılıb hansi ki, Zend OPcache və eAccelerator-da olduğu kimidir.",
- "Create" : "Yarat",
- "Delete" : "Sil",
- "Share" : "Paylaş",
"Sharing" : "Paylaşılır",
- "Personal info" : "Şəxsi məlumat",
- "Unlimited" : "Limitsiz",
- "Sharing %s failed, because the file does not exist" : "%s yayımlanmasında səhv baş verdi ona görə ki, fayl mövcud deyil."
+ "Personal info" : "Şəxsi məlumat"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/be.js b/lib/l10n/be.js
index 631dfdcefa5..edc5bb72a31 100644
--- a/lib/l10n/be.js
+++ b/lib/l10n/be.js
@@ -29,8 +29,6 @@ OC.L10N.register(
"September" : "Верасень",
"October" : "Кастрычнік",
"November" : "Лістапад",
- "December" : "Снежань",
- "Delete" : "Delete",
- "Share" : "Падзяліцца"
+ "December" : "Снежань"
},
"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/lib/l10n/be.json b/lib/l10n/be.json
index 8ee8f63e2f4..160322896bf 100644
--- a/lib/l10n/be.json
+++ b/lib/l10n/be.json
@@ -27,8 +27,6 @@
"September" : "Верасень",
"October" : "Кастрычнік",
"November" : "Лістапад",
- "December" : "Снежань",
- "Delete" : "Delete",
- "Share" : "Падзяліцца"
+ "December" : "Снежань"
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/lib/l10n/bg.js b/lib/l10n/bg.js
index 2c17c7d9e3e..41244214ed9 100644
--- a/lib/l10n/bg.js
+++ b/lib/l10n/bg.js
@@ -12,10 +12,8 @@ OC.L10N.register(
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s и %5$s",
"PHP %s or higher is required." : "Изисква се PHP %s или по-нова.",
"PHP with a version lower than %s is required." : "Необходим е PHP с версия по-ниска от %s.",
- "Following databases are supported: %s" : "Следните бази данни са поддържани: %s",
"The command line tool %s could not be found" : "Конзолната команда %s не може да бъде намерена",
"The library %s is not available." : "Библиотеката %s не е налична",
- "Following platforms are supported: %s" : "Поддържани са следните платформи: %s",
"Authentication" : "Удостоверяване",
"Unknown filetype" : "Непознат тип файл",
"Invalid image" : "Невалидно изображение.",
@@ -136,26 +134,11 @@ OC.L10N.register(
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Моля, променете правата за достъп на 0770, за да не може директорията да бъде видяна от други потребители.",
"Could not obtain lock type %d on \"%s\"." : "Неуспешен опит за ексклузивен достъп от типa %d върху \"%s\".",
"Storage is temporarily not available" : "Временно хранилището не е налично",
- "Create" : "Създай",
- "Change" : "Промени",
- "Delete" : "Изтриване",
- "Share" : "Споделяне",
+ "Following databases are supported: %s" : "Следните бази данни са поддържани: %s",
+ "Following platforms are supported: %s" : "Поддържани са следните платформи: %s",
"Basic settings" : "Основни настройки",
"Sharing" : "Споделяне",
"Security" : "Сигурност",
- "Personal info" : "Лични данни",
- "Unlimited" : "Неограничено",
- "Verifying" : "Потвърждаване",
- "Verifying …" : "Потвърждаване...",
- "Verify" : "Потвърждаване",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Неуспешно споделяне на %s , защото сървъра не позволява споделяне от тип $i.",
- "Sharing %s failed, because the file does not exist" : "Неуспешно споделяне на %s, защото файлът не съществува.",
- "You need to provide a password to create a public link, only protected links are allowed" : "Трябва да зададеш парола, за да създадеш общодостъпен линк за споделяне, само защитени с пароли линкове са разрешени.",
- "Sharing %s failed, because sharing with links is not allowed" : "Неуспешно споделяне на %s, защото споделянето посредством връзки не е разрешено.",
- "Not allowed to create a federated share with the same user" : "Не е позволено създаване на федерално споделяне със същият потребител",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Неуспешно задаване на срок на валидност. Споделянията не могат да изтичат по-късно от %s след като са били споделени",
- "Cannot set expiration date. Expiration date is in the past" : "Неуспешно задаване на срок на валидност. Датата на изтичане е в миналото",
- "Sharing %s failed, because resharing is not allowed" : "Неуспешно споделяне на %s, защото повторното споделяне е забранено",
- "Sharing %s failed, because the file could not be found in the file cache" : "Неуспешно споделяне на %s, защото файлът не може да бъде намерен в кеша."
+ "Personal info" : "Лични данни"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/bg.json b/lib/l10n/bg.json
index b0207caada2..43ec9e937f9 100644
--- a/lib/l10n/bg.json
+++ b/lib/l10n/bg.json
@@ -10,10 +10,8 @@
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s и %5$s",
"PHP %s or higher is required." : "Изисква се PHP %s или по-нова.",
"PHP with a version lower than %s is required." : "Необходим е PHP с версия по-ниска от %s.",
- "Following databases are supported: %s" : "Следните бази данни са поддържани: %s",
"The command line tool %s could not be found" : "Конзолната команда %s не може да бъде намерена",
"The library %s is not available." : "Библиотеката %s не е налична",
- "Following platforms are supported: %s" : "Поддържани са следните платформи: %s",
"Authentication" : "Удостоверяване",
"Unknown filetype" : "Непознат тип файл",
"Invalid image" : "Невалидно изображение.",
@@ -134,26 +132,11 @@
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Моля, променете правата за достъп на 0770, за да не може директорията да бъде видяна от други потребители.",
"Could not obtain lock type %d on \"%s\"." : "Неуспешен опит за ексклузивен достъп от типa %d върху \"%s\".",
"Storage is temporarily not available" : "Временно хранилището не е налично",
- "Create" : "Създай",
- "Change" : "Промени",
- "Delete" : "Изтриване",
- "Share" : "Споделяне",
+ "Following databases are supported: %s" : "Следните бази данни са поддържани: %s",
+ "Following platforms are supported: %s" : "Поддържани са следните платформи: %s",
"Basic settings" : "Основни настройки",
"Sharing" : "Споделяне",
"Security" : "Сигурност",
- "Personal info" : "Лични данни",
- "Unlimited" : "Неограничено",
- "Verifying" : "Потвърждаване",
- "Verifying …" : "Потвърждаване...",
- "Verify" : "Потвърждаване",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Неуспешно споделяне на %s , защото сървъра не позволява споделяне от тип $i.",
- "Sharing %s failed, because the file does not exist" : "Неуспешно споделяне на %s, защото файлът не съществува.",
- "You need to provide a password to create a public link, only protected links are allowed" : "Трябва да зададеш парола, за да създадеш общодостъпен линк за споделяне, само защитени с пароли линкове са разрешени.",
- "Sharing %s failed, because sharing with links is not allowed" : "Неуспешно споделяне на %s, защото споделянето посредством връзки не е разрешено.",
- "Not allowed to create a federated share with the same user" : "Не е позволено създаване на федерално споделяне със същият потребител",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Неуспешно задаване на срок на валидност. Споделянията не могат да изтичат по-късно от %s след като са били споделени",
- "Cannot set expiration date. Expiration date is in the past" : "Неуспешно задаване на срок на валидност. Датата на изтичане е в миналото",
- "Sharing %s failed, because resharing is not allowed" : "Неуспешно споделяне на %s, защото повторното споделяне е забранено",
- "Sharing %s failed, because the file could not be found in the file cache" : "Неуспешно споделяне на %s, защото файлът не може да бъде намерен в кеша."
+ "Personal info" : "Лични данни"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/bn_BD.js b/lib/l10n/bn_BD.js
index f326a67246a..2008107f566 100644
--- a/lib/l10n/bn_BD.js
+++ b/lib/l10n/bn_BD.js
@@ -61,11 +61,6 @@ OC.L10N.register(
"Application is not enabled" : "অ্যাপ্লিকেসনটি সক্রিয় নয়",
"Authentication error" : "অনুমোদন ঘটিত সমস্যা",
"Token expired. Please reload page." : "টোকেন মেয়াদোত্তীর্ণ। দয়া করে পৃষ্ঠাটি পূনরায় লোড করুন।",
- "Create" : "তৈরী কর",
- "Delete" : "মুছে",
- "Share" : "ভাগাভাগি কর",
- "Sharing" : "ভাগাভাগিরত",
- "Unlimited" : "অসীম",
- "Sharing %s failed, because the file does not exist" : "%s ভাগাভাগি ব্যার্থ, কারণ ফাইলটি নেই"
+ "Sharing" : "ভাগাভাগিরত"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/bn_BD.json b/lib/l10n/bn_BD.json
index 1b8772df9e2..209cdc57a37 100644
--- a/lib/l10n/bn_BD.json
+++ b/lib/l10n/bn_BD.json
@@ -59,11 +59,6 @@
"Application is not enabled" : "অ্যাপ্লিকেসনটি সক্রিয় নয়",
"Authentication error" : "অনুমোদন ঘটিত সমস্যা",
"Token expired. Please reload page." : "টোকেন মেয়াদোত্তীর্ণ। দয়া করে পৃষ্ঠাটি পূনরায় লোড করুন।",
- "Create" : "তৈরী কর",
- "Delete" : "মুছে",
- "Share" : "ভাগাভাগি কর",
- "Sharing" : "ভাগাভাগিরত",
- "Unlimited" : "অসীম",
- "Sharing %s failed, because the file does not exist" : "%s ভাগাভাগি ব্যার্থ, কারণ ফাইলটি নেই"
+ "Sharing" : "ভাগাভাগিরত"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/br.js b/lib/l10n/br.js
index aaa5ec2deb0..e1c8413ffcb 100644
--- a/lib/l10n/br.js
+++ b/lib/l10n/br.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"__language_name__" : "Brezhoneg",
"Help" : "Skoazell",
"Settings" : "Arventennoù",
- "Open »%s«" : "Digeriñ »%s«",
- "Delete" : "Dilemel"
+ "Open »%s«" : "Digeriñ »%s«"
},
"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);");
diff --git a/lib/l10n/br.json b/lib/l10n/br.json
index 1a0f35c3cfc..b89ab8c9b5e 100644
--- a/lib/l10n/br.json
+++ b/lib/l10n/br.json
@@ -2,7 +2,6 @@
"__language_name__" : "Brezhoneg",
"Help" : "Skoazell",
"Settings" : "Arventennoù",
- "Open »%s«" : "Digeriñ »%s«",
- "Delete" : "Dilemel"
+ "Open »%s«" : "Digeriñ »%s«"
},"pluralForm" :"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);"
} \ No newline at end of file
diff --git a/lib/l10n/bs.js b/lib/l10n/bs.js
index 72ec900cb06..8427184ef27 100644
--- a/lib/l10n/bs.js
+++ b/lib/l10n/bs.js
@@ -53,10 +53,6 @@ OC.L10N.register(
"A valid password must be provided" : "Nužno je navesti valjanu lozinku",
"Authentication error" : "Grešna autentifikacije",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Uzrok tome je vjerojatno neki ubrzivač predmemorisanja kao što je Zend OPcache ili eAccelerator.",
- "Create" : "Ustvari",
- "Delete" : "Obriši",
- "Share" : "Podjeli",
- "Sharing" : "Dijeljenje",
- "Unlimited" : "Neograničeno"
+ "Sharing" : "Dijeljenje"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/lib/l10n/bs.json b/lib/l10n/bs.json
index 9a730c39dbc..8873de7f595 100644
--- a/lib/l10n/bs.json
+++ b/lib/l10n/bs.json
@@ -51,10 +51,6 @@
"A valid password must be provided" : "Nužno je navesti valjanu lozinku",
"Authentication error" : "Grešna autentifikacije",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Uzrok tome je vjerojatno neki ubrzivač predmemorisanja kao što je Zend OPcache ili eAccelerator.",
- "Create" : "Ustvari",
- "Delete" : "Obriši",
- "Share" : "Podjeli",
- "Sharing" : "Dijeljenje",
- "Unlimited" : "Neograničeno"
+ "Sharing" : "Dijeljenje"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/lib/l10n/ca.js b/lib/l10n/ca.js
index c39e225ab61..766863bc0b1 100644
--- a/lib/l10n/ca.js
+++ b/lib/l10n/ca.js
@@ -3,9 +3,8 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "No es pot escriure al directori \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Això normalment es pot solucionar donant al servidor web permís d'escriptura al directori de configuració",
- "See %s" : "Vegeu %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "O, si preferiu mantenir el fitxer config.php només de lectura, establiu-hi l’opció \"config_is_read_only\" com a certa (true).",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Això normalment es pot solucionar donant al servidor web permís d'escriptura al directori de configuració. Vegeu %s",
+ "See %s" : "Vegeu %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "O, si preferiu mantenir el fitxer config.php només de lectura, establiu-hi l’opció \"config_is_read_only\" com a certa (true). Vegeu %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Els fitxers de l’aplicació %1$s no s’han substituït correctament. Assegureu-vos que és una versió compatible amb el servidor.",
"Sample configuration detected" : "S'ha detectat una configuració d'exemple",
@@ -21,12 +20,10 @@ OC.L10N.register(
"PHP %s or higher is required." : "Es requereix PHP %s o superior.",
"PHP with a version lower than %s is required." : "Es requereix PHP amb versió inferior a %s.",
"%sbit or higher PHP required." : "Es requereix PHP de %s bits o superior.",
- "Following databases are supported: %s" : "S'admeten les següents bases de dades: %s",
"The command line tool %s could not be found" : "No s’ha trobat l’eina de línia d’ordres %s",
"The library %s is not available." : "La llibreria %s no està disponible.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Es requereix la llibreria %1$s amb una versió superior a %2$s - la versió disponible és %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Es requereix la llibreria %1$s amb una versió inferior a %2$s - la versió disponible és %3$s.",
- "Following platforms are supported: %s" : "S'admeten les següents plataformes: %s",
"Server version %s or higher is required." : "Es requereix una versió de servidor %s o superior.",
"Server version %s or lower is required." : "Es requereix una versió de servidor %s o inferior.",
"Logged in user must be an admin or sub admin" : "L'usuari que ha iniciat la sessió ha de ser un administrador o un subadministrador",
@@ -181,8 +178,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "El testimoni ha expirat. Torneu a carregar la pàgina.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No hi ha instal·lats controladors de bases de dades (sqlite, mysql o postgresql).",
"Cannot write into \"config\" directory" : "No es pot escriure al directori \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Això normalment es pot solucionar donant al servidor web permís d'escriptura al directori de configuració. Vegeu %s",
"Cannot write into \"apps\" directory" : "No es pot escriure al directori \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Això normalment es pot solucionar donant al servidor web permís d'escriptura al directori d'aplicacions o desactivant el programa d’aplicació al fitxer de configuració. Vegeu %s",
"Cannot create \"data\" directory" : "No es pot crear el directori \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Això normalment es pot solucionar donant al servidor web permís d'escriptura al directori arrel. Vegeu %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Els permisos generalment es poden solucionar donant al servidor web accés d’escriptura al directori arrel. Vegeu %s.",
@@ -219,10 +216,8 @@ OC.L10N.register(
"Storage connection error. %s" : "Error de connexió d’emmagatzematge. %s",
"Storage is temporarily not available" : "Emmagatzematge temporalment no disponible",
"Storage connection timeout. %s" : "Temps d’espera exhaurit en la connexió d’emmagatzematge. %s",
- "Create" : "Crea",
- "Change" : "Canvia",
- "Delete" : "Suprimeix",
- "Share" : "Comparteix",
+ "Following databases are supported: %s" : "S'admeten les següents bases de dades: %s",
+ "Following platforms are supported: %s" : "S'admeten les següents plataformes: %s",
"Overview" : "Resum",
"Basic settings" : "Configuració bàsica",
"Sharing" : "Compartició",
@@ -230,30 +225,6 @@ OC.L10N.register(
"Groupware" : "Treball en grup",
"Personal info" : "Informació personal",
"Mobile & desktop" : "Mòbil i escriptori",
- "Unlimited" : "Il·limitat",
- "Verifying" : "S'està verificant",
- "Verifying …" : "S'està verificant ...",
- "Verify" : "Verifica",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "No s'ha pogut compartir %s perquè l'aplicació de fons no permet comparticions del tipus %i",
- "Sharing %s failed, because the file does not exist" : "No s'ha pogut compartir %s, perquè el fitxer no existeix",
- "Sharing %s failed, because you can not share with yourself" : "No s'ha pogut compartir %s, perquè no us podeu auto-compartir.",
- "Sharing %1$s failed, because the user %2$s does not exist" : "No s'ha pogut compartir %1$s, perquè l'usuari %2$s no existeix",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "No s'ha pogut compartir %1$s, perquè l'usuari %2$s no és membre de cap grup dels que %3$s n'és membre",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "No s'ha pogut compartir %1$s, perquè aquest element ja està compartit amb %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "No s'ha pogut compartir %1$s, perquè l'element ja està compartit amb l'usuari %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "No s'ha pogut compartir %1$s, perquè el grup %2$s no existeix",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "No s'ha pogut compartir %1$s, perquè %2$s no és membre del grup %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Heu de proporcionar una contrasenya per crear un enllaç públic. Només es permeten els enllaços protegits",
- "Sharing %s failed, because sharing with links is not allowed" : "No s'ha pogut compartir %s, perquè no es permet compartir amb enllaços",
- "Not allowed to create a federated share with the same user" : "No està permés crear una compartició federada amb el mateix usuari",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "La compartició de %1$s ha fallat, no es pot trobar %2$s, potser el servidor és inaccessible actualment.",
- "Share type %1$s is not valid for %2$s" : "La compartició tipus %1$s no és vàlida per %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No es pot establir la data de caducitat. Els fitxers o carpetes compartits no poden caducar més tard de %s després d'haver-se compartit.",
- "Cannot set expiration date. Expiration date is in the past" : "No es pot establir la data de caducitat. La data de caducitat és del passat.",
- "Sharing failed, because the user %s is the original sharer" : "No s'ha pogut compartir, perquè l'usuari %s el l'autor original de la compartició",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "No s'ha pogut compartir %1$s perquè els permisos excedeixen els permesos per a %2$s",
- "Sharing %s failed, because resharing is not allowed" : "No s'ha pogut compartir %s, perquè no es permet compartir de nou",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "No s'ha pogut compartir %1$s, perquè el rerefons de compartir per %2$s no pot trobar la seva font",
- "Sharing %s failed, because the file could not be found in the file cache" : "No s'ha pogut compartir %s, perquè el fitxer no s'ha trobat en el fitxer de memòria cau"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Això normalment es pot solucionar donant al servidor web permís d'escriptura al directori d'aplicacions o desactivant el programa d’aplicació al fitxer de configuració. Vegeu %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/ca.json b/lib/l10n/ca.json
index 79ca5b56439..44ddfded1ee 100644
--- a/lib/l10n/ca.json
+++ b/lib/l10n/ca.json
@@ -1,9 +1,8 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "No es pot escriure al directori \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Això normalment es pot solucionar donant al servidor web permís d'escriptura al directori de configuració",
- "See %s" : "Vegeu %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "O, si preferiu mantenir el fitxer config.php només de lectura, establiu-hi l’opció \"config_is_read_only\" com a certa (true).",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Això normalment es pot solucionar donant al servidor web permís d'escriptura al directori de configuració. Vegeu %s",
+ "See %s" : "Vegeu %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "O, si preferiu mantenir el fitxer config.php només de lectura, establiu-hi l’opció \"config_is_read_only\" com a certa (true). Vegeu %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Els fitxers de l’aplicació %1$s no s’han substituït correctament. Assegureu-vos que és una versió compatible amb el servidor.",
"Sample configuration detected" : "S'ha detectat una configuració d'exemple",
@@ -19,12 +18,10 @@
"PHP %s or higher is required." : "Es requereix PHP %s o superior.",
"PHP with a version lower than %s is required." : "Es requereix PHP amb versió inferior a %s.",
"%sbit or higher PHP required." : "Es requereix PHP de %s bits o superior.",
- "Following databases are supported: %s" : "S'admeten les següents bases de dades: %s",
"The command line tool %s could not be found" : "No s’ha trobat l’eina de línia d’ordres %s",
"The library %s is not available." : "La llibreria %s no està disponible.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Es requereix la llibreria %1$s amb una versió superior a %2$s - la versió disponible és %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Es requereix la llibreria %1$s amb una versió inferior a %2$s - la versió disponible és %3$s.",
- "Following platforms are supported: %s" : "S'admeten les següents plataformes: %s",
"Server version %s or higher is required." : "Es requereix una versió de servidor %s o superior.",
"Server version %s or lower is required." : "Es requereix una versió de servidor %s o inferior.",
"Logged in user must be an admin or sub admin" : "L'usuari que ha iniciat la sessió ha de ser un administrador o un subadministrador",
@@ -179,8 +176,8 @@
"Token expired. Please reload page." : "El testimoni ha expirat. Torneu a carregar la pàgina.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No hi ha instal·lats controladors de bases de dades (sqlite, mysql o postgresql).",
"Cannot write into \"config\" directory" : "No es pot escriure al directori \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Això normalment es pot solucionar donant al servidor web permís d'escriptura al directori de configuració. Vegeu %s",
"Cannot write into \"apps\" directory" : "No es pot escriure al directori \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Això normalment es pot solucionar donant al servidor web permís d'escriptura al directori d'aplicacions o desactivant el programa d’aplicació al fitxer de configuració. Vegeu %s",
"Cannot create \"data\" directory" : "No es pot crear el directori \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Això normalment es pot solucionar donant al servidor web permís d'escriptura al directori arrel. Vegeu %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Els permisos generalment es poden solucionar donant al servidor web accés d’escriptura al directori arrel. Vegeu %s.",
@@ -217,10 +214,8 @@
"Storage connection error. %s" : "Error de connexió d’emmagatzematge. %s",
"Storage is temporarily not available" : "Emmagatzematge temporalment no disponible",
"Storage connection timeout. %s" : "Temps d’espera exhaurit en la connexió d’emmagatzematge. %s",
- "Create" : "Crea",
- "Change" : "Canvia",
- "Delete" : "Suprimeix",
- "Share" : "Comparteix",
+ "Following databases are supported: %s" : "S'admeten les següents bases de dades: %s",
+ "Following platforms are supported: %s" : "S'admeten les següents plataformes: %s",
"Overview" : "Resum",
"Basic settings" : "Configuració bàsica",
"Sharing" : "Compartició",
@@ -228,30 +223,6 @@
"Groupware" : "Treball en grup",
"Personal info" : "Informació personal",
"Mobile & desktop" : "Mòbil i escriptori",
- "Unlimited" : "Il·limitat",
- "Verifying" : "S'està verificant",
- "Verifying …" : "S'està verificant ...",
- "Verify" : "Verifica",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "No s'ha pogut compartir %s perquè l'aplicació de fons no permet comparticions del tipus %i",
- "Sharing %s failed, because the file does not exist" : "No s'ha pogut compartir %s, perquè el fitxer no existeix",
- "Sharing %s failed, because you can not share with yourself" : "No s'ha pogut compartir %s, perquè no us podeu auto-compartir.",
- "Sharing %1$s failed, because the user %2$s does not exist" : "No s'ha pogut compartir %1$s, perquè l'usuari %2$s no existeix",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "No s'ha pogut compartir %1$s, perquè l'usuari %2$s no és membre de cap grup dels que %3$s n'és membre",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "No s'ha pogut compartir %1$s, perquè aquest element ja està compartit amb %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "No s'ha pogut compartir %1$s, perquè l'element ja està compartit amb l'usuari %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "No s'ha pogut compartir %1$s, perquè el grup %2$s no existeix",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "No s'ha pogut compartir %1$s, perquè %2$s no és membre del grup %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Heu de proporcionar una contrasenya per crear un enllaç públic. Només es permeten els enllaços protegits",
- "Sharing %s failed, because sharing with links is not allowed" : "No s'ha pogut compartir %s, perquè no es permet compartir amb enllaços",
- "Not allowed to create a federated share with the same user" : "No està permés crear una compartició federada amb el mateix usuari",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "La compartició de %1$s ha fallat, no es pot trobar %2$s, potser el servidor és inaccessible actualment.",
- "Share type %1$s is not valid for %2$s" : "La compartició tipus %1$s no és vàlida per %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No es pot establir la data de caducitat. Els fitxers o carpetes compartits no poden caducar més tard de %s després d'haver-se compartit.",
- "Cannot set expiration date. Expiration date is in the past" : "No es pot establir la data de caducitat. La data de caducitat és del passat.",
- "Sharing failed, because the user %s is the original sharer" : "No s'ha pogut compartir, perquè l'usuari %s el l'autor original de la compartició",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "No s'ha pogut compartir %1$s perquè els permisos excedeixen els permesos per a %2$s",
- "Sharing %s failed, because resharing is not allowed" : "No s'ha pogut compartir %s, perquè no es permet compartir de nou",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "No s'ha pogut compartir %1$s, perquè el rerefons de compartir per %2$s no pot trobar la seva font",
- "Sharing %s failed, because the file could not be found in the file cache" : "No s'ha pogut compartir %s, perquè el fitxer no s'ha trobat en el fitxer de memòria cau"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Això normalment es pot solucionar donant al servidor web permís d'escriptura al directori d'aplicacions o desactivant el programa d’aplicació al fitxer de configuració. Vegeu %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/cs.js b/lib/l10n/cs.js
index b859758a1c9..ba42e8589e7 100644
--- a/lib/l10n/cs.js
+++ b/lib/l10n/cs.js
@@ -3,9 +3,9 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "Nedaří se zapisovat do adresáře „config“!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Toto obvykle lze vyřešit udělením oprávnění k zápisu do adresáře s nastaveními pro účet, pod kterým je provozován webový server",
- "See %s" : "Viz %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Nebo, pokud chcete mít soubor config.php pouze pro čtení, nastavte v něm volbu „config_is_read_only“ na hodnotu true.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Toto obvykle lze vyřešit udělením oprávnění k zápisu do kořenové složky webu pro účet, pod kterým je provozován webový server. Viz %s",
+ "See %s" : "Viz %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Toto je obvykle možné vyřešit udělením webovému serveru oprávnění k zápisu do adresáře s nastaveními.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Nebo, pokud chcete mít soubor config.php pouze pro čtení, nastavte v něm volbu „config_is_read_only“ na hodnotu true. Viz %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Soubory aplikace %1$s nebyly nahrazeny řádně. Ověřte, že se jedná o verzi, která je kompatibilní se serverem.",
"Sample configuration detected" : "Bylo zjištěno setrvání u předváděcího nastavení",
@@ -18,16 +18,16 @@ OC.L10N.register(
"Enterprise bundle" : "Sada pro organizace",
"Groupware bundle" : "Sada pro podporu spolupráce",
"Hub bundle" : "Sada pro centrum aktivity (hub)",
- "Social sharing bundle" : "Balíček sociálního sdílení",
+ "Social sharing bundle" : "Balíček pro sdílení na sociálních sítích",
"PHP %s or higher is required." : "Je vyžadováno PHP %s nebo novější.",
"PHP with a version lower than %s is required." : "Je vyžadováno PHP ve verzi nižší než %s.",
"%sbit or higher PHP required." : "Je vyžadováno PHP %sbit nebo vyšší.",
- "Following databases are supported: %s" : "Jsou podporovány následující databáze: %s",
+ "The following databases are supported: %s" : "Jsou podporovány následující databáze: %s",
"The command line tool %s could not be found" : "Nástroj příkazového řádku %s nebyl nalezen",
"The library %s is not available." : "Knihovna %s není dostupná.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Je vyžadována knihovna %1$s novější verze než %2$s – verze k dispozici je %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Je vyžadována knihovna %1$s verzi nižší než %2$s – dostupná verze %3$s.",
- "Following platforms are supported: %s" : "Jsou podporovány následující systémy: %s",
+ "The following platforms are supported: %s" : "Jsou podporovány následující systémy: %s",
"Server version %s or higher is required." : "Je potřeba verze serveru %s nebo novější.",
"Server version %s or lower is required." : "Je potřeba verze serveru %s nebo starší.",
"Logged in user must be an admin or sub admin" : "Je třeba, aby přihlášený uživatel byl správcem či správcem pro dílčí oblast",
@@ -94,7 +94,7 @@ OC.L10N.register(
"Oracle connection could not be established" : "Spojení s Oracle nemohlo být navázáno",
"Oracle username and/or password not valid" : "Neplatné uživatelské jméno a/nebo heslo do Oracle",
"PostgreSQL username and/or password not valid" : "Neplatné uživatelské jméno a/nebo heslo do PostgreSQL",
- "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X není podporován a %s nebude na této platformě správně fungovat. Používejte pouze na vlastní nebezpečí!",
+ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "macOS není podporován a %s nebude na této platformě správně fungovat. Používejte pouze na vlastní nebezpečí!",
"For the best results, please consider using a GNU/Linux server instead." : "Místo toho zvažte pro nejlepší funkčnost použití GNU/Linux serveru.",
"It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Zdá se, že tato instance %s je provozována v 32-bitovém PHP prostředí a v php.ini je nastavena volba open_basedir. Toto povede k problémům se soubory většími než 4 GB a silně není doporučováno.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Odstraňte z php.ini nastavení volby open_basedir nebo přejděte na 64-bitové PHP.",
@@ -185,8 +185,9 @@ OC.L10N.register(
"Token expired. Please reload page." : "Platnost tokenu skončila. Načtěte stránku znovu.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Nejsou instalovány ovladače databází (sqlite, mysql nebo postresql).",
"Cannot write into \"config\" directory" : "Nelze zapisovat do adresáře „config“",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Toto obvykle lze vyřešit udělením oprávnění k zápisu do kořenové složky webu pro účet, pod kterým je provozován webový server. Viz %s",
"Cannot write into \"apps\" directory" : "Nedaří se zapisovat do adresáře „apps“",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "To lze obvykle vyřešit povolením zápisu webovému serveru do adresáře apps nebo zakázáním appstore v souboru s nastaveními. Viz %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Toto je obvykle možné napravit udělením přístupu ke čtení adresáře s aplikací pro webový server nebo vypnutím katalogu s aplikacemi v souboru s nastaveními.",
"Cannot create \"data\" directory" : "Nedaří se vytvořit adresář „data“",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Toto obvykle lze vyřešit udělením oprávnění k zápisu do kořenové složky webu pro účet, pod kterým je provozován webový server. Viz %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Oprávnění lze obvykle napravit umožněním zápisu do kořene webu pro účet, pod kterým je provozován webový server. Viz %s.",
@@ -223,10 +224,8 @@ OC.L10N.register(
"Storage connection error. %s" : "Chyba připojení úložiště. %s",
"Storage is temporarily not available" : "Úložiště je dočasně nedostupné",
"Storage connection timeout. %s" : "Překročen časový limit připojování k úložišti. %s",
- "Create" : "Vytvořit",
- "Change" : "Změnit",
- "Delete" : "Smazat",
- "Share" : "Sdílet",
+ "Following databases are supported: %s" : "Jsou podporovány následující databáze: %s",
+ "Following platforms are supported: %s" : "Jsou podporovány následující systémy: %s",
"Overview" : "Přehled",
"Basic settings" : "Základní nastavení",
"Sharing" : "Sdílení",
@@ -234,30 +233,6 @@ OC.L10N.register(
"Groupware" : "Software pro podporu spolupráce",
"Personal info" : "Osobní údaje",
"Mobile & desktop" : "Mobilní a desktop",
- "Unlimited" : "Neomezeně",
- "Verifying" : "Ověřuje se",
- "Verifying …" : "Ověřování…",
- "Verify" : "Ověřit",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Sdílení %s se nezdařilo, podpůrná vrstva nepodporuje typ sdílení %i",
- "Sharing %s failed, because the file does not exist" : "Sdílení %s se nezdařilo, protože soubor neexistuje",
- "Sharing %s failed, because you can not share with yourself" : "Sdílení %s se nezdařilo, protože nemůžete sdílet sami se sebou",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Sdílení %1$s se nezdařilo, protože uživatel %2$s neexistuje",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Sdílení položky %1$s se nezdařilo, protože uživatel %2$s není členem žádné skupiny společné s uživatelem %3$s",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Sdílení %1$s se nezdařilo, protože tato položka už je sdílena s %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Sdílení položky %1$s se nezdařilo, protože ta je už s uživatelem %2$s sdílena",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Sdílení %1$s se nezdařilo, protože skupina %2$s neexistuje",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Sdílení %1$s se nezdařilo, protože %2$s není členem skupiny %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Pro vytvoření veřejného odkazu je nutné zadat heslo, jsou povoleny pouze chráněné odkazy",
- "Sharing %s failed, because sharing with links is not allowed" : "Sdílení položky %s se nezdařilo, protože sdílení pomocí odkazů není povoleno",
- "Not allowed to create a federated share with the same user" : "Není povoleno vytvořit propojené sdílení s tím samým uživatelem",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Sdílení %1$s se nezdařilo, %2$s se nedaří nalézt, možná je server v tuto chvíli nedostupný.",
- "Share type %1$s is not valid for %2$s" : "Typ sdílení %1$s není platné pro %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nedaří se nastavit datum skončení platnosti. Sdílení nemůže vypršet později než za %s po zveřejnění",
- "Cannot set expiration date. Expiration date is in the past" : "Takové datum skončení platnosti nelze nastavit – je třeba, aby bylo v budoucnosti a ne minulosti…",
- "Sharing failed, because the user %s is the original sharer" : "Sdílení položky se nezdařilo, protože uživatel %s je původním vlastníkem",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Sdílení položky %1$s se nezdařilo, protože jsou k tomu nutná vyšší oprávnění, než jaká byla %2$s povolena.",
- "Sharing %s failed, because resharing is not allowed" : "%s nejde sdílet, protože vám bylo nasdíleno s tím, že není umožněno sdílet dále dalším",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Sdílení položky %1$s se nezdařilo, protože úložiště sdílení %2$s nenalezla zdroj",
- "Sharing %s failed, because the file could not be found in the file cache" : "Sdílení položky %s selhalo, protože soubor nebyl nalezen ve vyrovnávací paměti"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "To lze obvykle vyřešit povolením zápisu webovému serveru do adresáře apps nebo zakázáním appstore v souboru s nastaveními. Viz %s"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
diff --git a/lib/l10n/cs.json b/lib/l10n/cs.json
index 1892c65d5ac..66b4b812264 100644
--- a/lib/l10n/cs.json
+++ b/lib/l10n/cs.json
@@ -1,9 +1,9 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "Nedaří se zapisovat do adresáře „config“!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Toto obvykle lze vyřešit udělením oprávnění k zápisu do adresáře s nastaveními pro účet, pod kterým je provozován webový server",
- "See %s" : "Viz %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Nebo, pokud chcete mít soubor config.php pouze pro čtení, nastavte v něm volbu „config_is_read_only“ na hodnotu true.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Toto obvykle lze vyřešit udělením oprávnění k zápisu do kořenové složky webu pro účet, pod kterým je provozován webový server. Viz %s",
+ "See %s" : "Viz %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Toto je obvykle možné vyřešit udělením webovému serveru oprávnění k zápisu do adresáře s nastaveními.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Nebo, pokud chcete mít soubor config.php pouze pro čtení, nastavte v něm volbu „config_is_read_only“ na hodnotu true. Viz %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Soubory aplikace %1$s nebyly nahrazeny řádně. Ověřte, že se jedná o verzi, která je kompatibilní se serverem.",
"Sample configuration detected" : "Bylo zjištěno setrvání u předváděcího nastavení",
@@ -16,16 +16,16 @@
"Enterprise bundle" : "Sada pro organizace",
"Groupware bundle" : "Sada pro podporu spolupráce",
"Hub bundle" : "Sada pro centrum aktivity (hub)",
- "Social sharing bundle" : "Balíček sociálního sdílení",
+ "Social sharing bundle" : "Balíček pro sdílení na sociálních sítích",
"PHP %s or higher is required." : "Je vyžadováno PHP %s nebo novější.",
"PHP with a version lower than %s is required." : "Je vyžadováno PHP ve verzi nižší než %s.",
"%sbit or higher PHP required." : "Je vyžadováno PHP %sbit nebo vyšší.",
- "Following databases are supported: %s" : "Jsou podporovány následující databáze: %s",
+ "The following databases are supported: %s" : "Jsou podporovány následující databáze: %s",
"The command line tool %s could not be found" : "Nástroj příkazového řádku %s nebyl nalezen",
"The library %s is not available." : "Knihovna %s není dostupná.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Je vyžadována knihovna %1$s novější verze než %2$s – verze k dispozici je %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Je vyžadována knihovna %1$s verzi nižší než %2$s – dostupná verze %3$s.",
- "Following platforms are supported: %s" : "Jsou podporovány následující systémy: %s",
+ "The following platforms are supported: %s" : "Jsou podporovány následující systémy: %s",
"Server version %s or higher is required." : "Je potřeba verze serveru %s nebo novější.",
"Server version %s or lower is required." : "Je potřeba verze serveru %s nebo starší.",
"Logged in user must be an admin or sub admin" : "Je třeba, aby přihlášený uživatel byl správcem či správcem pro dílčí oblast",
@@ -92,7 +92,7 @@
"Oracle connection could not be established" : "Spojení s Oracle nemohlo být navázáno",
"Oracle username and/or password not valid" : "Neplatné uživatelské jméno a/nebo heslo do Oracle",
"PostgreSQL username and/or password not valid" : "Neplatné uživatelské jméno a/nebo heslo do PostgreSQL",
- "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X není podporován a %s nebude na této platformě správně fungovat. Používejte pouze na vlastní nebezpečí!",
+ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "macOS není podporován a %s nebude na této platformě správně fungovat. Používejte pouze na vlastní nebezpečí!",
"For the best results, please consider using a GNU/Linux server instead." : "Místo toho zvažte pro nejlepší funkčnost použití GNU/Linux serveru.",
"It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Zdá se, že tato instance %s je provozována v 32-bitovém PHP prostředí a v php.ini je nastavena volba open_basedir. Toto povede k problémům se soubory většími než 4 GB a silně není doporučováno.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Odstraňte z php.ini nastavení volby open_basedir nebo přejděte na 64-bitové PHP.",
@@ -183,8 +183,9 @@
"Token expired. Please reload page." : "Platnost tokenu skončila. Načtěte stránku znovu.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Nejsou instalovány ovladače databází (sqlite, mysql nebo postresql).",
"Cannot write into \"config\" directory" : "Nelze zapisovat do adresáře „config“",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Toto obvykle lze vyřešit udělením oprávnění k zápisu do kořenové složky webu pro účet, pod kterým je provozován webový server. Viz %s",
"Cannot write into \"apps\" directory" : "Nedaří se zapisovat do adresáře „apps“",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "To lze obvykle vyřešit povolením zápisu webovému serveru do adresáře apps nebo zakázáním appstore v souboru s nastaveními. Viz %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Toto je obvykle možné napravit udělením přístupu ke čtení adresáře s aplikací pro webový server nebo vypnutím katalogu s aplikacemi v souboru s nastaveními.",
"Cannot create \"data\" directory" : "Nedaří se vytvořit adresář „data“",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Toto obvykle lze vyřešit udělením oprávnění k zápisu do kořenové složky webu pro účet, pod kterým je provozován webový server. Viz %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Oprávnění lze obvykle napravit umožněním zápisu do kořene webu pro účet, pod kterým je provozován webový server. Viz %s.",
@@ -221,10 +222,8 @@
"Storage connection error. %s" : "Chyba připojení úložiště. %s",
"Storage is temporarily not available" : "Úložiště je dočasně nedostupné",
"Storage connection timeout. %s" : "Překročen časový limit připojování k úložišti. %s",
- "Create" : "Vytvořit",
- "Change" : "Změnit",
- "Delete" : "Smazat",
- "Share" : "Sdílet",
+ "Following databases are supported: %s" : "Jsou podporovány následující databáze: %s",
+ "Following platforms are supported: %s" : "Jsou podporovány následující systémy: %s",
"Overview" : "Přehled",
"Basic settings" : "Základní nastavení",
"Sharing" : "Sdílení",
@@ -232,30 +231,6 @@
"Groupware" : "Software pro podporu spolupráce",
"Personal info" : "Osobní údaje",
"Mobile & desktop" : "Mobilní a desktop",
- "Unlimited" : "Neomezeně",
- "Verifying" : "Ověřuje se",
- "Verifying …" : "Ověřování…",
- "Verify" : "Ověřit",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Sdílení %s se nezdařilo, podpůrná vrstva nepodporuje typ sdílení %i",
- "Sharing %s failed, because the file does not exist" : "Sdílení %s se nezdařilo, protože soubor neexistuje",
- "Sharing %s failed, because you can not share with yourself" : "Sdílení %s se nezdařilo, protože nemůžete sdílet sami se sebou",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Sdílení %1$s se nezdařilo, protože uživatel %2$s neexistuje",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Sdílení položky %1$s se nezdařilo, protože uživatel %2$s není členem žádné skupiny společné s uživatelem %3$s",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Sdílení %1$s se nezdařilo, protože tato položka už je sdílena s %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Sdílení položky %1$s se nezdařilo, protože ta je už s uživatelem %2$s sdílena",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Sdílení %1$s se nezdařilo, protože skupina %2$s neexistuje",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Sdílení %1$s se nezdařilo, protože %2$s není členem skupiny %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Pro vytvoření veřejného odkazu je nutné zadat heslo, jsou povoleny pouze chráněné odkazy",
- "Sharing %s failed, because sharing with links is not allowed" : "Sdílení položky %s se nezdařilo, protože sdílení pomocí odkazů není povoleno",
- "Not allowed to create a federated share with the same user" : "Není povoleno vytvořit propojené sdílení s tím samým uživatelem",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Sdílení %1$s se nezdařilo, %2$s se nedaří nalézt, možná je server v tuto chvíli nedostupný.",
- "Share type %1$s is not valid for %2$s" : "Typ sdílení %1$s není platné pro %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nedaří se nastavit datum skončení platnosti. Sdílení nemůže vypršet později než za %s po zveřejnění",
- "Cannot set expiration date. Expiration date is in the past" : "Takové datum skončení platnosti nelze nastavit – je třeba, aby bylo v budoucnosti a ne minulosti…",
- "Sharing failed, because the user %s is the original sharer" : "Sdílení položky se nezdařilo, protože uživatel %s je původním vlastníkem",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Sdílení položky %1$s se nezdařilo, protože jsou k tomu nutná vyšší oprávnění, než jaká byla %2$s povolena.",
- "Sharing %s failed, because resharing is not allowed" : "%s nejde sdílet, protože vám bylo nasdíleno s tím, že není umožněno sdílet dále dalším",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Sdílení položky %1$s se nezdařilo, protože úložiště sdílení %2$s nenalezla zdroj",
- "Sharing %s failed, because the file could not be found in the file cache" : "Sdílení položky %s selhalo, protože soubor nebyl nalezen ve vyrovnávací paměti"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "To lze obvykle vyřešit povolením zápisu webovému serveru do adresáře apps nebo zakázáním appstore v souboru s nastaveními. Viz %s"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
} \ No newline at end of file
diff --git a/lib/l10n/cy_GB.js b/lib/l10n/cy_GB.js
index ca745e8f427..00cd3733c19 100644
--- a/lib/l10n/cy_GB.js
+++ b/lib/l10n/cy_GB.js
@@ -60,9 +60,6 @@ OC.L10N.register(
"Dec." : "Rhag.",
"Application is not enabled" : "Nid yw'r pecyn wedi'i alluogi",
"Authentication error" : "Gwall dilysu",
- "Token expired. Please reload page." : "Tocyn wedi dod i ben. Ail-lwythwch y dudalen.",
- "Create" : "Creu",
- "Delete" : "Dileu",
- "Share" : "Rhannu"
+ "Token expired. Please reload page." : "Tocyn wedi dod i ben. Ail-lwythwch y dudalen."
},
"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;");
diff --git a/lib/l10n/cy_GB.json b/lib/l10n/cy_GB.json
index 98ef08ef8a1..02902e0ea73 100644
--- a/lib/l10n/cy_GB.json
+++ b/lib/l10n/cy_GB.json
@@ -58,9 +58,6 @@
"Dec." : "Rhag.",
"Application is not enabled" : "Nid yw'r pecyn wedi'i alluogi",
"Authentication error" : "Gwall dilysu",
- "Token expired. Please reload page." : "Tocyn wedi dod i ben. Ail-lwythwch y dudalen.",
- "Create" : "Creu",
- "Delete" : "Dileu",
- "Share" : "Rhannu"
+ "Token expired. Please reload page." : "Tocyn wedi dod i ben. Ail-lwythwch y dudalen."
},"pluralForm" :"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;"
} \ No newline at end of file
diff --git a/lib/l10n/da.js b/lib/l10n/da.js
index 347d346f8d2..6c9fd2e58c0 100644
--- a/lib/l10n/da.js
+++ b/lib/l10n/da.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "Kan ikke skrive til mappen \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Dette kan som regel ordnes ved at give webserveren skrive adgang til config mappen",
"See %s" : "Se %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dette kan som regel ordnes ved at give webserveren skrive adgang til config mappen. Se %s",
"Sample configuration detected" : "Eksempel for konfiguration registreret",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Der er registreret at eksempel for konfiguration er blevet kopieret. Dette kan ødelægge din installation og understøttes ikke. Læs venligst dokumentationen før der foretages ændringer i config.php",
"%1$s and %2$s" : "%1$s og %2$s",
@@ -13,10 +12,8 @@ OC.L10N.register(
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s og %5$s",
"PHP %s or higher is required." : "Der kræves PHP %s eller nyere.",
"PHP with a version lower than %s is required." : "Der kræves PHP %s eller ældre.",
- "Following databases are supported: %s" : "Følgende databaser understøttes: %s",
"The command line tool %s could not be found" : "Kommandolinjeværktøjet %s blev ikke fundet",
"The library %s is not available." : "Biblioteket %s er ikke tilgængeligt.",
- "Following platforms are supported: %s" : "Følgende platforme understøttes: %s",
"Server version %s or higher is required." : "Du skal have server version %s eller nyere.",
"Server version %s or lower is required." : "Du skal have server version %s eller ældre.",
"Authentication" : "Godkendelse",
@@ -139,6 +136,7 @@ OC.L10N.register(
"Token expired. Please reload page." : "Adgang er udløbet. Genindlæs siden.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Ingen database driver (sqlite, mysql eller postgresql) er installeret.",
"Cannot write into \"config\" directory" : "Kan ikke skrive til mappen \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dette kan som regel ordnes ved at give webserveren skrive adgang til config mappen. Se %s",
"Cannot write into \"apps\" directory" : "Kan ikke skrive til mappen \"apps\"",
"Setting locale to %s failed" : "Angivelse af %s for lokalitet mislykkedes",
"Please install one of these locales on your system and restart your webserver." : "Installér venligst én af disse lokaliteter på dit system, og genstart din webserver.",
@@ -159,30 +157,13 @@ OC.L10N.register(
"Check the value of \"datadirectory\" in your configuration" : "Tjek værdien for \"databibliotek\" i din konfiguration",
"Could not obtain lock type %d on \"%s\"." : "Kunne ikke opnå en låsetype %d på \"%s\".",
"Storage is temporarily not available" : "Lagerplads er midlertidigt ikke tilgængeligt",
- "Create" : "Opret",
- "Change" : "Ændr",
- "Delete" : "Slet",
- "Share" : "Del",
+ "Following databases are supported: %s" : "Følgende databaser understøttes: %s",
+ "Following platforms are supported: %s" : "Følgende platforme understøttes: %s",
"Overview" : "Overblik",
"Basic settings" : "Grundlæggende Indstillinger",
"Sharing" : "Deling",
"Security" : "Sikkerhed",
"Personal info" : "Personlige oplysninger",
- "Mobile & desktop" : "Mobil & desktop",
- "Unlimited" : "Ubegrænset",
- "Verifying" : "Bekræfter",
- "Verifying …" : "Bekræfter…",
- "Verify" : "Bekræft",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Deling af %s mislykkedes, fordi backenden ikke tillader delinger fra typen %i",
- "Sharing %s failed, because the file does not exist" : "Deling af %s mislykkedes, fordi filen ikke eksisterer",
- "Sharing %s failed, because you can not share with yourself" : "Deling af %s mislykkedes, fordi du ikke kan dele med dig selv",
- "You need to provide a password to create a public link, only protected links are allowed" : "Du skal angive et kodeord for at oprette et offentligt link - kun beskyttede links er tilladt",
- "Sharing %s failed, because sharing with links is not allowed" : "Der skete en fejl ved deling af %s, det er ikke tilladt at dele links",
- "Not allowed to create a federated share with the same user" : "Det er ikke tilladt at danne et datafællesskab med samme bruger",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Kan ikke angive udløbsdato. Delinger kan ikke udløbe senere end %s efter at de er blevet delt",
- "Cannot set expiration date. Expiration date is in the past" : "Kan ikke angive udløbsdato. Udløbsdato er allerede passeret",
- "Sharing failed, because the user %s is the original sharer" : "Deling mislykkedes, fordi brugeren %s er den som delte oprindeligt",
- "Sharing %s failed, because resharing is not allowed" : "Deling af %s mislykkedes, fordi videredeling ikke er tilladt",
- "Sharing %s failed, because the file could not be found in the file cache" : "Deling af %s mislykkedes, fordi filen ikke kunne findes i fil-cachen"
+ "Mobile & desktop" : "Mobil & desktop"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/da.json b/lib/l10n/da.json
index 64eb4f5ce39..a2558d58cfe 100644
--- a/lib/l10n/da.json
+++ b/lib/l10n/da.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "Kan ikke skrive til mappen \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Dette kan som regel ordnes ved at give webserveren skrive adgang til config mappen",
"See %s" : "Se %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dette kan som regel ordnes ved at give webserveren skrive adgang til config mappen. Se %s",
"Sample configuration detected" : "Eksempel for konfiguration registreret",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Der er registreret at eksempel for konfiguration er blevet kopieret. Dette kan ødelægge din installation og understøttes ikke. Læs venligst dokumentationen før der foretages ændringer i config.php",
"%1$s and %2$s" : "%1$s og %2$s",
@@ -11,10 +10,8 @@
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s og %5$s",
"PHP %s or higher is required." : "Der kræves PHP %s eller nyere.",
"PHP with a version lower than %s is required." : "Der kræves PHP %s eller ældre.",
- "Following databases are supported: %s" : "Følgende databaser understøttes: %s",
"The command line tool %s could not be found" : "Kommandolinjeværktøjet %s blev ikke fundet",
"The library %s is not available." : "Biblioteket %s er ikke tilgængeligt.",
- "Following platforms are supported: %s" : "Følgende platforme understøttes: %s",
"Server version %s or higher is required." : "Du skal have server version %s eller nyere.",
"Server version %s or lower is required." : "Du skal have server version %s eller ældre.",
"Authentication" : "Godkendelse",
@@ -137,6 +134,7 @@
"Token expired. Please reload page." : "Adgang er udløbet. Genindlæs siden.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Ingen database driver (sqlite, mysql eller postgresql) er installeret.",
"Cannot write into \"config\" directory" : "Kan ikke skrive til mappen \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dette kan som regel ordnes ved at give webserveren skrive adgang til config mappen. Se %s",
"Cannot write into \"apps\" directory" : "Kan ikke skrive til mappen \"apps\"",
"Setting locale to %s failed" : "Angivelse af %s for lokalitet mislykkedes",
"Please install one of these locales on your system and restart your webserver." : "Installér venligst én af disse lokaliteter på dit system, og genstart din webserver.",
@@ -157,30 +155,13 @@
"Check the value of \"datadirectory\" in your configuration" : "Tjek værdien for \"databibliotek\" i din konfiguration",
"Could not obtain lock type %d on \"%s\"." : "Kunne ikke opnå en låsetype %d på \"%s\".",
"Storage is temporarily not available" : "Lagerplads er midlertidigt ikke tilgængeligt",
- "Create" : "Opret",
- "Change" : "Ændr",
- "Delete" : "Slet",
- "Share" : "Del",
+ "Following databases are supported: %s" : "Følgende databaser understøttes: %s",
+ "Following platforms are supported: %s" : "Følgende platforme understøttes: %s",
"Overview" : "Overblik",
"Basic settings" : "Grundlæggende Indstillinger",
"Sharing" : "Deling",
"Security" : "Sikkerhed",
"Personal info" : "Personlige oplysninger",
- "Mobile & desktop" : "Mobil & desktop",
- "Unlimited" : "Ubegrænset",
- "Verifying" : "Bekræfter",
- "Verifying …" : "Bekræfter…",
- "Verify" : "Bekræft",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Deling af %s mislykkedes, fordi backenden ikke tillader delinger fra typen %i",
- "Sharing %s failed, because the file does not exist" : "Deling af %s mislykkedes, fordi filen ikke eksisterer",
- "Sharing %s failed, because you can not share with yourself" : "Deling af %s mislykkedes, fordi du ikke kan dele med dig selv",
- "You need to provide a password to create a public link, only protected links are allowed" : "Du skal angive et kodeord for at oprette et offentligt link - kun beskyttede links er tilladt",
- "Sharing %s failed, because sharing with links is not allowed" : "Der skete en fejl ved deling af %s, det er ikke tilladt at dele links",
- "Not allowed to create a federated share with the same user" : "Det er ikke tilladt at danne et datafællesskab med samme bruger",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Kan ikke angive udløbsdato. Delinger kan ikke udløbe senere end %s efter at de er blevet delt",
- "Cannot set expiration date. Expiration date is in the past" : "Kan ikke angive udløbsdato. Udløbsdato er allerede passeret",
- "Sharing failed, because the user %s is the original sharer" : "Deling mislykkedes, fordi brugeren %s er den som delte oprindeligt",
- "Sharing %s failed, because resharing is not allowed" : "Deling af %s mislykkedes, fordi videredeling ikke er tilladt",
- "Sharing %s failed, because the file could not be found in the file cache" : "Deling af %s mislykkedes, fordi filen ikke kunne findes i fil-cachen"
+ "Mobile & desktop" : "Mobil & desktop"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/de.js b/lib/l10n/de.js
index 38f996573bc..3e4e874bc6f 100644
--- a/lib/l10n/de.js
+++ b/lib/l10n/de.js
@@ -3,9 +3,9 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "Das Schreiben in das „config“-Verzeichnis ist nicht möglich!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Dies kann normalerweise repariert werden, indem dem Webserver Schreibzugriff auf das config-Verzeichnis gegeben wird",
- "See %s" : "Siehe %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Oder wenn Du lieber möchtest, dass die Datei config.php schreibgeschützt bleiben soll, dann setze die Option \"config_is_read_only\" in der Datei auf true.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dies kann zumeist behoben werden, indem dem Web-Server Schreibzugriff auf das Konfigurationsverzeichnis eingeräumt wird. Siehe auch %s",
+ "See %s" : "Siehe %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Dies kann normalerweise behoben werden, indem dem Webserver Schreibzugriff auf das config-Verzeichnis gegeben wird.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Oder wenn Du lieber möchtest, dass die Datei config.php schreibgeschützt bleiben soll, dann setze die Option \"config_is_read_only\" in der Datei auf true. Siehe %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Die Dateien der App %1$swurden nicht korrekt ersetzt. Stelle sicher, dass es sich um eine mit dem Server kompatible Version handelt.",
"Sample configuration detected" : "Beispielkonfiguration gefunden",
@@ -22,12 +22,12 @@ OC.L10N.register(
"PHP %s or higher is required." : "PHP %s oder höher wird benötigt.",
"PHP with a version lower than %s is required." : "PHP wird in einer früheren Version als %s benötigt.",
"%sbit or higher PHP required." : "%sbit oder höheres PHP wird benötigt.",
- "Following databases are supported: %s" : "Die folgenden Datenbanken werden unterstützt: %s",
+ "The following databases are supported: %s" : "Die folgenden Datenbanken werden unterstützt: %s",
"The command line tool %s could not be found" : "Das Kommandozeilenwerkzeug %s konnte nicht gefunden werden",
"The library %s is not available." : "Die Bibliothek %s ist nicht verfügbar.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Die Bibliothek %1$s wird in einer neueren Version als %2$s benötigt - verfügbare Version ist %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Die Bibliothek %1$s wird in einer früheren Version als %2$s benötigt - verfügbare Version ist %3$s.",
- "Following platforms are supported: %s" : "Die folgenden Plattformen werden unterstützt: %s",
+ "The following platforms are supported: %s" : "Die folgenden Plattformen werden unterstützt: %s",
"Server version %s or higher is required." : "Server Version %s oder höher wird benötigt.",
"Server version %s or lower is required." : "Server Version %s oder niedriger wird benötigt.",
"Logged in user must be an admin or sub admin" : "Der angemeldete Benutzer muss ein (Sub-)Administrator sein",
@@ -174,7 +174,7 @@ OC.L10N.register(
"A valid password must be provided" : "Es muss ein gültiges Passwort eingegeben werden",
"The username is already being used" : "Dieser Benutzername existiert bereits",
"Could not create user" : "Benutzer konnte nicht erstellt werden",
- "User disabled" : "Nutzer deaktiviert",
+ "User disabled" : "Benutzer deaktiviert",
"Login canceled by app" : "Anmeldung durch die App abgebrochen",
"App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Die App „%1$s“ kann nicht installiert werden, da die folgenden Abhängigkeiten nicht erfüllt sind: %2$s",
"a safe home for all your data" : "ein sicherer Ort für all Deine Daten",
@@ -185,8 +185,9 @@ OC.L10N.register(
"Token expired. Please reload page." : "Token abgelaufen. Bitte lade die Seite neu.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Keine Datenbanktreiber (SQLite, MySQL oder PostgreSQL) installiert.",
"Cannot write into \"config\" directory" : "Schreiben in das „config“-Verzeichnis ist nicht möglich",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dies kann zumeist behoben werden, indem dem Web-Server Schreibzugriff auf das Konfigurationsverzeichnis eingeräumt wird. Siehe auch %s",
"Cannot write into \"apps\" directory" : "Schreiben in das „apps“-Verzeichnis ist nicht möglich",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Dies kann zumeist behoben werden, indem dem Web-Server Schreibzugriff auf das App-Verzeichnis eingeräumt wird. Siehe auch %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Dies kann normalerweise behoben werden, indem dem Webserver Schreibzugriff auf das App-Verzeichnis gegeben wird oder der App Store in der Konfigurationsdatei deaktiviert wird.",
"Cannot create \"data\" directory" : "Kann das \"Daten\"-Verzeichnis nicht erstellen",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Dies kann zumeist behoben werden, indem dem Web-Server Schreibzugriff auf das Wurzel-Verzeichnis eingeräumt wird. Siehe auch %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Berechtigungen können zumeist korrigiert werden indem dem Web-Server Schreibzugriff auf das Wurzel-Verzeichnis eingeräumt wird. Siehe auch %s.",
@@ -218,15 +219,13 @@ OC.L10N.register(
"ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "ID \"%1$s\" wird bereits von Cloud-Federation-Provider \"%2$s\" verwendet",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Cloud-Federation-Provider mit ID: \"%s\" ist nicht vorhanden.",
"Could not obtain lock type %d on \"%s\"." : "Sperrtyp %d auf „%s“ konnte nicht ermittelt werden.",
- "Storage unauthorized. %s" : "Speicher nicht authorisiert. %s",
+ "Storage unauthorized. %s" : "Speicher nicht autorisiert. %s",
"Storage incomplete configuration. %s" : "Speicher-Konfiguration unvollständig. %s",
"Storage connection error. %s" : "Verbindungsfehler zum Speicherplatz. %s",
"Storage is temporarily not available" : "Speicher ist vorübergehend nicht verfügbar",
"Storage connection timeout. %s" : "Zeitüberschreitung der Verbindung zum Speicherplatz. %s",
- "Create" : "Anlegen",
- "Change" : "Ändern",
- "Delete" : "Löschen",
- "Share" : "Teilen",
+ "Following databases are supported: %s" : "Die folgenden Datenbanken werden unterstützt: %s",
+ "Following platforms are supported: %s" : "Die folgenden Plattformen werden unterstützt: %s",
"Overview" : "Übersicht",
"Basic settings" : "Grundeinstellungen",
"Sharing" : "Teilen",
@@ -234,30 +233,6 @@ OC.L10N.register(
"Groupware" : "Groupware",
"Personal info" : "Persönliche Informationen ",
"Mobile & desktop" : "Mobil & Desktop",
- "Unlimited" : "Unbegrenzt",
- "Verifying" : "Überprüfe",
- "Verifying …" : " Überprüfe… ",
- "Verify" : "Überprüfen",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Freigabe von %s fehlgeschlagen, da das Backend die Freigabe vom Typ %i nicht erlaubt.",
- "Sharing %s failed, because the file does not exist" : "Freigabe von %s fehlgeschlagen, da die Datei nicht existiert",
- "Sharing %s failed, because you can not share with yourself" : "Freigabe von %s fehlgeschlagen, da Du nichts mit Dir selbst teilen kannst",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s nicht existiert",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s kein Mitglied einer der Gruppen von %3$s ist",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Objekt schon mit %2$s geteilt wird",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element schon mit dem Benutzer %2$s geteilt wird",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da die Gruppe %2$s nicht existiert",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Freigabe von %1$s fehlgeschlagen, da %2$s kein Mitglied der Gruppe %3$s ist",
- "You need to provide a password to create a public link, only protected links are allowed" : "Es sind nur geschützte Links zulässig, daher musst Du ein Passwort angeben, um einen öffentlichen Link zu generieren",
- "Sharing %s failed, because sharing with links is not allowed" : "Freigabe von %s fehlgeschlagen, da das Teilen von Verknüpfungen nicht erlaubt ist",
- "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated-Cloud-Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Die Freigabe von %1$s ist fehlgeschlagen, da %2$s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar.",
- "Share type %1$s is not valid for %2$s" : "Freigabetyp %1$s ist nicht gültig für %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ablaufdatum kann nicht gesetzt werden. Freigaben können nach dem Teilen, nicht länger als %s gültig sein.",
- "Cannot set expiration date. Expiration date is in the past" : "Ablaufdatum kann nicht gesetzt werden. Ablaufdatum liegt in der Vergangenheit.",
- "Sharing failed, because the user %s is the original sharer" : "Freigabe fehlgeschlagen, da der Benutzer %s der ursprünglich Teilende ist",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Freigabe von %1$s fehlgeschlagen, da die Berechtigungen die erteilten Berechtigungen %2$s überschreiten",
- "Sharing %s failed, because resharing is not allowed" : "Freigabe von %s fehlgeschlagen, da das nochmalige Freigeben einer Freigabe nicht erlaubt ist",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Freigabe von %1$s fehlgeschlagen, da das Freigabe-Backend für %2$s nicht in dieser Quelle gefunden werden konnte",
- "Sharing %s failed, because the file could not be found in the file cache" : "Freigabe von %s fehlgeschlagen, da die Datei im Datei-Cache nicht gefunden werden konnte"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Dies kann zumeist behoben werden, indem dem Web-Server Schreibzugriff auf das App-Verzeichnis eingeräumt wird. Siehe auch %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/de.json b/lib/l10n/de.json
index a7e3dcad698..f97b0d7f815 100644
--- a/lib/l10n/de.json
+++ b/lib/l10n/de.json
@@ -1,9 +1,9 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "Das Schreiben in das „config“-Verzeichnis ist nicht möglich!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Dies kann normalerweise repariert werden, indem dem Webserver Schreibzugriff auf das config-Verzeichnis gegeben wird",
- "See %s" : "Siehe %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Oder wenn Du lieber möchtest, dass die Datei config.php schreibgeschützt bleiben soll, dann setze die Option \"config_is_read_only\" in der Datei auf true.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dies kann zumeist behoben werden, indem dem Web-Server Schreibzugriff auf das Konfigurationsverzeichnis eingeräumt wird. Siehe auch %s",
+ "See %s" : "Siehe %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Dies kann normalerweise behoben werden, indem dem Webserver Schreibzugriff auf das config-Verzeichnis gegeben wird.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Oder wenn Du lieber möchtest, dass die Datei config.php schreibgeschützt bleiben soll, dann setze die Option \"config_is_read_only\" in der Datei auf true. Siehe %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Die Dateien der App %1$swurden nicht korrekt ersetzt. Stelle sicher, dass es sich um eine mit dem Server kompatible Version handelt.",
"Sample configuration detected" : "Beispielkonfiguration gefunden",
@@ -20,12 +20,12 @@
"PHP %s or higher is required." : "PHP %s oder höher wird benötigt.",
"PHP with a version lower than %s is required." : "PHP wird in einer früheren Version als %s benötigt.",
"%sbit or higher PHP required." : "%sbit oder höheres PHP wird benötigt.",
- "Following databases are supported: %s" : "Die folgenden Datenbanken werden unterstützt: %s",
+ "The following databases are supported: %s" : "Die folgenden Datenbanken werden unterstützt: %s",
"The command line tool %s could not be found" : "Das Kommandozeilenwerkzeug %s konnte nicht gefunden werden",
"The library %s is not available." : "Die Bibliothek %s ist nicht verfügbar.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Die Bibliothek %1$s wird in einer neueren Version als %2$s benötigt - verfügbare Version ist %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Die Bibliothek %1$s wird in einer früheren Version als %2$s benötigt - verfügbare Version ist %3$s.",
- "Following platforms are supported: %s" : "Die folgenden Plattformen werden unterstützt: %s",
+ "The following platforms are supported: %s" : "Die folgenden Plattformen werden unterstützt: %s",
"Server version %s or higher is required." : "Server Version %s oder höher wird benötigt.",
"Server version %s or lower is required." : "Server Version %s oder niedriger wird benötigt.",
"Logged in user must be an admin or sub admin" : "Der angemeldete Benutzer muss ein (Sub-)Administrator sein",
@@ -172,7 +172,7 @@
"A valid password must be provided" : "Es muss ein gültiges Passwort eingegeben werden",
"The username is already being used" : "Dieser Benutzername existiert bereits",
"Could not create user" : "Benutzer konnte nicht erstellt werden",
- "User disabled" : "Nutzer deaktiviert",
+ "User disabled" : "Benutzer deaktiviert",
"Login canceled by app" : "Anmeldung durch die App abgebrochen",
"App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Die App „%1$s“ kann nicht installiert werden, da die folgenden Abhängigkeiten nicht erfüllt sind: %2$s",
"a safe home for all your data" : "ein sicherer Ort für all Deine Daten",
@@ -183,8 +183,9 @@
"Token expired. Please reload page." : "Token abgelaufen. Bitte lade die Seite neu.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Keine Datenbanktreiber (SQLite, MySQL oder PostgreSQL) installiert.",
"Cannot write into \"config\" directory" : "Schreiben in das „config“-Verzeichnis ist nicht möglich",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dies kann zumeist behoben werden, indem dem Web-Server Schreibzugriff auf das Konfigurationsverzeichnis eingeräumt wird. Siehe auch %s",
"Cannot write into \"apps\" directory" : "Schreiben in das „apps“-Verzeichnis ist nicht möglich",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Dies kann zumeist behoben werden, indem dem Web-Server Schreibzugriff auf das App-Verzeichnis eingeräumt wird. Siehe auch %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Dies kann normalerweise behoben werden, indem dem Webserver Schreibzugriff auf das App-Verzeichnis gegeben wird oder der App Store in der Konfigurationsdatei deaktiviert wird.",
"Cannot create \"data\" directory" : "Kann das \"Daten\"-Verzeichnis nicht erstellen",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Dies kann zumeist behoben werden, indem dem Web-Server Schreibzugriff auf das Wurzel-Verzeichnis eingeräumt wird. Siehe auch %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Berechtigungen können zumeist korrigiert werden indem dem Web-Server Schreibzugriff auf das Wurzel-Verzeichnis eingeräumt wird. Siehe auch %s.",
@@ -216,15 +217,13 @@
"ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "ID \"%1$s\" wird bereits von Cloud-Federation-Provider \"%2$s\" verwendet",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Cloud-Federation-Provider mit ID: \"%s\" ist nicht vorhanden.",
"Could not obtain lock type %d on \"%s\"." : "Sperrtyp %d auf „%s“ konnte nicht ermittelt werden.",
- "Storage unauthorized. %s" : "Speicher nicht authorisiert. %s",
+ "Storage unauthorized. %s" : "Speicher nicht autorisiert. %s",
"Storage incomplete configuration. %s" : "Speicher-Konfiguration unvollständig. %s",
"Storage connection error. %s" : "Verbindungsfehler zum Speicherplatz. %s",
"Storage is temporarily not available" : "Speicher ist vorübergehend nicht verfügbar",
"Storage connection timeout. %s" : "Zeitüberschreitung der Verbindung zum Speicherplatz. %s",
- "Create" : "Anlegen",
- "Change" : "Ändern",
- "Delete" : "Löschen",
- "Share" : "Teilen",
+ "Following databases are supported: %s" : "Die folgenden Datenbanken werden unterstützt: %s",
+ "Following platforms are supported: %s" : "Die folgenden Plattformen werden unterstützt: %s",
"Overview" : "Übersicht",
"Basic settings" : "Grundeinstellungen",
"Sharing" : "Teilen",
@@ -232,30 +231,6 @@
"Groupware" : "Groupware",
"Personal info" : "Persönliche Informationen ",
"Mobile & desktop" : "Mobil & Desktop",
- "Unlimited" : "Unbegrenzt",
- "Verifying" : "Überprüfe",
- "Verifying …" : " Überprüfe… ",
- "Verify" : "Überprüfen",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Freigabe von %s fehlgeschlagen, da das Backend die Freigabe vom Typ %i nicht erlaubt.",
- "Sharing %s failed, because the file does not exist" : "Freigabe von %s fehlgeschlagen, da die Datei nicht existiert",
- "Sharing %s failed, because you can not share with yourself" : "Freigabe von %s fehlgeschlagen, da Du nichts mit Dir selbst teilen kannst",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s nicht existiert",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s kein Mitglied einer der Gruppen von %3$s ist",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Objekt schon mit %2$s geteilt wird",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element schon mit dem Benutzer %2$s geteilt wird",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da die Gruppe %2$s nicht existiert",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Freigabe von %1$s fehlgeschlagen, da %2$s kein Mitglied der Gruppe %3$s ist",
- "You need to provide a password to create a public link, only protected links are allowed" : "Es sind nur geschützte Links zulässig, daher musst Du ein Passwort angeben, um einen öffentlichen Link zu generieren",
- "Sharing %s failed, because sharing with links is not allowed" : "Freigabe von %s fehlgeschlagen, da das Teilen von Verknüpfungen nicht erlaubt ist",
- "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated-Cloud-Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Die Freigabe von %1$s ist fehlgeschlagen, da %2$s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar.",
- "Share type %1$s is not valid for %2$s" : "Freigabetyp %1$s ist nicht gültig für %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ablaufdatum kann nicht gesetzt werden. Freigaben können nach dem Teilen, nicht länger als %s gültig sein.",
- "Cannot set expiration date. Expiration date is in the past" : "Ablaufdatum kann nicht gesetzt werden. Ablaufdatum liegt in der Vergangenheit.",
- "Sharing failed, because the user %s is the original sharer" : "Freigabe fehlgeschlagen, da der Benutzer %s der ursprünglich Teilende ist",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Freigabe von %1$s fehlgeschlagen, da die Berechtigungen die erteilten Berechtigungen %2$s überschreiten",
- "Sharing %s failed, because resharing is not allowed" : "Freigabe von %s fehlgeschlagen, da das nochmalige Freigeben einer Freigabe nicht erlaubt ist",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Freigabe von %1$s fehlgeschlagen, da das Freigabe-Backend für %2$s nicht in dieser Quelle gefunden werden konnte",
- "Sharing %s failed, because the file could not be found in the file cache" : "Freigabe von %s fehlgeschlagen, da die Datei im Datei-Cache nicht gefunden werden konnte"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Dies kann zumeist behoben werden, indem dem Web-Server Schreibzugriff auf das App-Verzeichnis eingeräumt wird. Siehe auch %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/de_DE.js b/lib/l10n/de_DE.js
index 3556666cbae..5e743448e61 100644
--- a/lib/l10n/de_DE.js
+++ b/lib/l10n/de_DE.js
@@ -3,9 +3,9 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "Das Schreiben in das „config“-Verzeichnis ist nicht möglich!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Dies kann normalerweise repariert werden, indem dem Webserver Schreibzugriff auf das config-Verzeichnis gegeben wird",
- "See %s" : "Siehe %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Oder wenn Sie möchten, dass die Datei config.php schreibgeschützt bleiben soll, dann setzen Sie die Option \"config_is_read_only\" in der Datei auf True.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dies kann zumeist behoben werden, indem dem Web-Server Schreibzugriff auf das Konfigurationsverzeichnis eingeräumt wird. Siehe auch %s",
+ "See %s" : "Siehe %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Dies kann normalerweise behoben werden, indem dem Webserver Schreibzugriff auf das config-Verzeichnis gegeben wird.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Oder wenn Sie möchten, dass die Datei config.php schreibgeschützt bleiben soll, dann setzen Sie die Option \"config_is_read_only\" in der Datei auf True. Siehe %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Die Dateien der App %1$s wurden nicht korrekt ersetzt. Stellen Sie sicher, dass es sich um eine mit dem Server kompatible Version handelt.",
"Sample configuration detected" : "Beispielkonfiguration gefunden",
@@ -22,12 +22,12 @@ OC.L10N.register(
"PHP %s or higher is required." : "PHP %s oder höher wird benötigt.",
"PHP with a version lower than %s is required." : "PHP wird in einer früheren Version als %s benötigt.",
"%sbit or higher PHP required." : "%sbit oder höheres PHP wird benötigt.",
- "Following databases are supported: %s" : "Die folgenden Datenbanken werden unterstützt: %s",
+ "The following databases are supported: %s" : "Folgende Datenbanken werden unterstützt: %s",
"The command line tool %s could not be found" : "Das Kommandozeilenwerkzeug %s konnte nicht gefunden werden",
"The library %s is not available." : "Die Bibliothek %s ist nicht verfügbar.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Die Bibliothek %1$s wird in einer neueren Version als %2$s benötigt - verfügbare Version ist %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Die Bibliothek %1$s wird in einer früheren Version als %2$s benötigt - verfügbare Version ist %3$s.",
- "Following platforms are supported: %s" : "Die folgenden Plattformen werden unterstützt: %s",
+ "The following platforms are supported: %s" : "Folgende Plattformen werden unterstützt: %s",
"Server version %s or higher is required." : "Server Version %s oder höher wird benötigt.",
"Server version %s or lower is required." : "Server Version %s oder niedriger wird benötigt.",
"Logged in user must be an admin or sub admin" : "Der angemeldete Benutzer muss ein (Sub-)Administrator sein",
@@ -174,7 +174,7 @@ OC.L10N.register(
"A valid password must be provided" : "Es muss ein gültiges Passwort eingegeben werden",
"The username is already being used" : "Dieser Benutzername existiert bereits",
"Could not create user" : "Benutzer konnte nicht erstellt werden",
- "User disabled" : "Nutzer deaktiviert",
+ "User disabled" : "Benutzer deaktiviert",
"Login canceled by app" : "Anmeldung durch die App abgebrochen",
"App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Die App „%1$s“ kann nicht installiert werden, da die folgenden Abhängigkeiten nicht erfüllt sind: %2$s",
"a safe home for all your data" : "ein sicherer Ort für all Ihre Daten",
@@ -185,8 +185,9 @@ OC.L10N.register(
"Token expired. Please reload page." : "Token abgelaufen. Bitte laden Sie die Seite neu.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Keine Datenbanktreiber (SQLite, MySQL oder PostgreSQL) installiert.",
"Cannot write into \"config\" directory" : "Schreiben in das „config“-Verzeichnis ist nicht möglich",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dies kann zumeist behoben werden, indem dem Web-Server Schreibzugriff auf das Konfigurationsverzeichnis eingeräumt wird. Siehe auch %s",
"Cannot write into \"apps\" directory" : "Schreiben in das „apps“-Verzeichnis ist nicht möglich",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Dies kann zumeist behoben werden, indem dem Web-Server Schreibzugriff auf das App-Verzeichnis eingeräumt wird. Siehe auch %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Dies kann normalerweise behoben werden, indem dem Webserver Schreibzugriff auf das App-Verzeichnis gegeben wird oder der App Store in der Konfigurationsdatei deaktiviert wird.",
"Cannot create \"data\" directory" : "Kann das \"Daten\"-Verzeichnis nicht erstellen",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Dies kann zumeist behoben werden, indem dem Web-Server Schreibzugriff auf das Wurzel-Verzeichnis eingeräumt wird. Siehe auch %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Berechtigungen können zumeist korrigiert werden indem dem Web-Server Schreibzugriff auf das Wurzel-Verzeichnis eingeräumt wird. Siehe auch %s. ",
@@ -218,15 +219,13 @@ OC.L10N.register(
"ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "ID \"%1$s\" wird bereits von Cloud-Federation-Provider \"%2$s\" verwendet.",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Cloud-Federation-Provider mit ID: \"%s\" ist nicht vorhanden.",
"Could not obtain lock type %d on \"%s\"." : "Sperrtyp %d auf „%s“ konnte nicht ermittelt werden.",
- "Storage unauthorized. %s" : "Speicher nicht authorisiert. %s",
+ "Storage unauthorized. %s" : "Speicher nicht autorisiert. %s",
"Storage incomplete configuration. %s" : "Speicher-Konfiguration unvollständig. %s",
"Storage connection error. %s" : "Verbindungsfehler zum Speicherplatz. %s",
"Storage is temporarily not available" : "Speicher ist vorübergehend nicht verfügbar",
"Storage connection timeout. %s" : "Zeitüberschreitung der Verbindung zum Speicherplatz. %s",
- "Create" : "Erstellen",
- "Change" : "Ändern",
- "Delete" : "Löschen",
- "Share" : "Teilen",
+ "Following databases are supported: %s" : "Die folgenden Datenbanken werden unterstützt: %s",
+ "Following platforms are supported: %s" : "Die folgenden Plattformen werden unterstützt: %s",
"Overview" : "Übersicht",
"Basic settings" : "Grundeinstellungen",
"Sharing" : "Teilen",
@@ -234,30 +233,6 @@ OC.L10N.register(
"Groupware" : "Groupware",
"Personal info" : "Persönliche Informationen ",
"Mobile & desktop" : "Mobil & Desktop",
- "Unlimited" : "Unbegrenzt",
- "Verifying" : "Überprüfe",
- "Verifying …" : " Überprüfe… ",
- "Verify" : "Überprüfen",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Freigabe von %s fehlgeschlagen, da das Backend die Freigabe vom Typ %i nicht erlaubt.",
- "Sharing %s failed, because the file does not exist" : "Freigabe von %s fehlgeschlagen, da die Datei nicht existiert",
- "Sharing %s failed, because you can not share with yourself" : "Freigabe von %s fehlgeschlagen, da das Teilen mit sich selbst nicht möglich ist",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s nicht existiert",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s kein Mitglied einer der Gruppen von %3$s ist",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element schon mit %2$s geteilt wird",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element schon mit dem Benutzer %2$s geteilt wird",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da die Gruppe %2$s nicht existiert",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Freigabe von %1$s fehlgeschlagen, da %2$s kein Mitglied der Gruppe %3$s ist",
- "You need to provide a password to create a public link, only protected links are allowed" : "Es sind nur geschützte Links zulässig, daher müssen Sie ein Passwort angeben, um einen öffentlichen Link zu generieren",
- "Sharing %s failed, because sharing with links is not allowed" : "Freigabe von %s fehlgeschlagen, da das Teilen von Verknüpfungen nicht erlaubt ist",
- "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated-Cloud-Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Die Freigabe von %1$s ist fehlgeschlagen, da %2$s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar.",
- "Share type %1$s is not valid for %2$s" : "Freigabetyp %1$s ist nicht gültig für %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ablaufdatum kann nicht gesetzt werden. Freigaben können nach dem Teilen, nicht länger als %s gültig sein.",
- "Cannot set expiration date. Expiration date is in the past" : "Ablaufdatum kann nicht gesetzt werden. Ablaufdatum liegt in der Vergangenheit.",
- "Sharing failed, because the user %s is the original sharer" : "Freigabe fehlgeschlagen, da der Benutzer %s der ursprünglich Teilende ist",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Freigabe von %1$s fehlgeschlagen, da die Berechtigungen die erteilten Berechtigungen von %2$s überschreiten",
- "Sharing %s failed, because resharing is not allowed" : "Freigabe von %s fehlgeschlagen, da das nochmalige Freigeben einer Freigabe nicht erlaubt ist",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Freigabe von %1$s fehlgeschlagen, da das Freigabe-Backend für %2$s nicht in dieser Quelle gefunden werden konnte",
- "Sharing %s failed, because the file could not be found in the file cache" : "Freigabe von %s fehlgeschlagen, da die Datei im Datei-Cache nicht gefunden werden konnte"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Dies kann zumeist behoben werden, indem dem Web-Server Schreibzugriff auf das App-Verzeichnis eingeräumt wird. Siehe auch %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/de_DE.json b/lib/l10n/de_DE.json
index afa7cc8bfe0..a9abfdca42f 100644
--- a/lib/l10n/de_DE.json
+++ b/lib/l10n/de_DE.json
@@ -1,9 +1,9 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "Das Schreiben in das „config“-Verzeichnis ist nicht möglich!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Dies kann normalerweise repariert werden, indem dem Webserver Schreibzugriff auf das config-Verzeichnis gegeben wird",
- "See %s" : "Siehe %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Oder wenn Sie möchten, dass die Datei config.php schreibgeschützt bleiben soll, dann setzen Sie die Option \"config_is_read_only\" in der Datei auf True.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dies kann zumeist behoben werden, indem dem Web-Server Schreibzugriff auf das Konfigurationsverzeichnis eingeräumt wird. Siehe auch %s",
+ "See %s" : "Siehe %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Dies kann normalerweise behoben werden, indem dem Webserver Schreibzugriff auf das config-Verzeichnis gegeben wird.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Oder wenn Sie möchten, dass die Datei config.php schreibgeschützt bleiben soll, dann setzen Sie die Option \"config_is_read_only\" in der Datei auf True. Siehe %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Die Dateien der App %1$s wurden nicht korrekt ersetzt. Stellen Sie sicher, dass es sich um eine mit dem Server kompatible Version handelt.",
"Sample configuration detected" : "Beispielkonfiguration gefunden",
@@ -20,12 +20,12 @@
"PHP %s or higher is required." : "PHP %s oder höher wird benötigt.",
"PHP with a version lower than %s is required." : "PHP wird in einer früheren Version als %s benötigt.",
"%sbit or higher PHP required." : "%sbit oder höheres PHP wird benötigt.",
- "Following databases are supported: %s" : "Die folgenden Datenbanken werden unterstützt: %s",
+ "The following databases are supported: %s" : "Folgende Datenbanken werden unterstützt: %s",
"The command line tool %s could not be found" : "Das Kommandozeilenwerkzeug %s konnte nicht gefunden werden",
"The library %s is not available." : "Die Bibliothek %s ist nicht verfügbar.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Die Bibliothek %1$s wird in einer neueren Version als %2$s benötigt - verfügbare Version ist %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Die Bibliothek %1$s wird in einer früheren Version als %2$s benötigt - verfügbare Version ist %3$s.",
- "Following platforms are supported: %s" : "Die folgenden Plattformen werden unterstützt: %s",
+ "The following platforms are supported: %s" : "Folgende Plattformen werden unterstützt: %s",
"Server version %s or higher is required." : "Server Version %s oder höher wird benötigt.",
"Server version %s or lower is required." : "Server Version %s oder niedriger wird benötigt.",
"Logged in user must be an admin or sub admin" : "Der angemeldete Benutzer muss ein (Sub-)Administrator sein",
@@ -172,7 +172,7 @@
"A valid password must be provided" : "Es muss ein gültiges Passwort eingegeben werden",
"The username is already being used" : "Dieser Benutzername existiert bereits",
"Could not create user" : "Benutzer konnte nicht erstellt werden",
- "User disabled" : "Nutzer deaktiviert",
+ "User disabled" : "Benutzer deaktiviert",
"Login canceled by app" : "Anmeldung durch die App abgebrochen",
"App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Die App „%1$s“ kann nicht installiert werden, da die folgenden Abhängigkeiten nicht erfüllt sind: %2$s",
"a safe home for all your data" : "ein sicherer Ort für all Ihre Daten",
@@ -183,8 +183,9 @@
"Token expired. Please reload page." : "Token abgelaufen. Bitte laden Sie die Seite neu.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Keine Datenbanktreiber (SQLite, MySQL oder PostgreSQL) installiert.",
"Cannot write into \"config\" directory" : "Schreiben in das „config“-Verzeichnis ist nicht möglich",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dies kann zumeist behoben werden, indem dem Web-Server Schreibzugriff auf das Konfigurationsverzeichnis eingeräumt wird. Siehe auch %s",
"Cannot write into \"apps\" directory" : "Schreiben in das „apps“-Verzeichnis ist nicht möglich",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Dies kann zumeist behoben werden, indem dem Web-Server Schreibzugriff auf das App-Verzeichnis eingeräumt wird. Siehe auch %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Dies kann normalerweise behoben werden, indem dem Webserver Schreibzugriff auf das App-Verzeichnis gegeben wird oder der App Store in der Konfigurationsdatei deaktiviert wird.",
"Cannot create \"data\" directory" : "Kann das \"Daten\"-Verzeichnis nicht erstellen",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Dies kann zumeist behoben werden, indem dem Web-Server Schreibzugriff auf das Wurzel-Verzeichnis eingeräumt wird. Siehe auch %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Berechtigungen können zumeist korrigiert werden indem dem Web-Server Schreibzugriff auf das Wurzel-Verzeichnis eingeräumt wird. Siehe auch %s. ",
@@ -216,15 +217,13 @@
"ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "ID \"%1$s\" wird bereits von Cloud-Federation-Provider \"%2$s\" verwendet.",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "Cloud-Federation-Provider mit ID: \"%s\" ist nicht vorhanden.",
"Could not obtain lock type %d on \"%s\"." : "Sperrtyp %d auf „%s“ konnte nicht ermittelt werden.",
- "Storage unauthorized. %s" : "Speicher nicht authorisiert. %s",
+ "Storage unauthorized. %s" : "Speicher nicht autorisiert. %s",
"Storage incomplete configuration. %s" : "Speicher-Konfiguration unvollständig. %s",
"Storage connection error. %s" : "Verbindungsfehler zum Speicherplatz. %s",
"Storage is temporarily not available" : "Speicher ist vorübergehend nicht verfügbar",
"Storage connection timeout. %s" : "Zeitüberschreitung der Verbindung zum Speicherplatz. %s",
- "Create" : "Erstellen",
- "Change" : "Ändern",
- "Delete" : "Löschen",
- "Share" : "Teilen",
+ "Following databases are supported: %s" : "Die folgenden Datenbanken werden unterstützt: %s",
+ "Following platforms are supported: %s" : "Die folgenden Plattformen werden unterstützt: %s",
"Overview" : "Übersicht",
"Basic settings" : "Grundeinstellungen",
"Sharing" : "Teilen",
@@ -232,30 +231,6 @@
"Groupware" : "Groupware",
"Personal info" : "Persönliche Informationen ",
"Mobile & desktop" : "Mobil & Desktop",
- "Unlimited" : "Unbegrenzt",
- "Verifying" : "Überprüfe",
- "Verifying …" : " Überprüfe… ",
- "Verify" : "Überprüfen",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Freigabe von %s fehlgeschlagen, da das Backend die Freigabe vom Typ %i nicht erlaubt.",
- "Sharing %s failed, because the file does not exist" : "Freigabe von %s fehlgeschlagen, da die Datei nicht existiert",
- "Sharing %s failed, because you can not share with yourself" : "Freigabe von %s fehlgeschlagen, da das Teilen mit sich selbst nicht möglich ist",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s nicht existiert",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Freigabe von %1$s fehlgeschlagen, da der Benutzer %2$s kein Mitglied einer der Gruppen von %3$s ist",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element schon mit %2$s geteilt wird",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element schon mit dem Benutzer %2$s geteilt wird",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Freigabe von %1$s fehlgeschlagen, da die Gruppe %2$s nicht existiert",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Freigabe von %1$s fehlgeschlagen, da %2$s kein Mitglied der Gruppe %3$s ist",
- "You need to provide a password to create a public link, only protected links are allowed" : "Es sind nur geschützte Links zulässig, daher müssen Sie ein Passwort angeben, um einen öffentlichen Link zu generieren",
- "Sharing %s failed, because sharing with links is not allowed" : "Freigabe von %s fehlgeschlagen, da das Teilen von Verknüpfungen nicht erlaubt ist",
- "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated-Cloud-Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Die Freigabe von %1$s ist fehlgeschlagen, da %2$s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar.",
- "Share type %1$s is not valid for %2$s" : "Freigabetyp %1$s ist nicht gültig für %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ablaufdatum kann nicht gesetzt werden. Freigaben können nach dem Teilen, nicht länger als %s gültig sein.",
- "Cannot set expiration date. Expiration date is in the past" : "Ablaufdatum kann nicht gesetzt werden. Ablaufdatum liegt in der Vergangenheit.",
- "Sharing failed, because the user %s is the original sharer" : "Freigabe fehlgeschlagen, da der Benutzer %s der ursprünglich Teilende ist",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Freigabe von %1$s fehlgeschlagen, da die Berechtigungen die erteilten Berechtigungen von %2$s überschreiten",
- "Sharing %s failed, because resharing is not allowed" : "Freigabe von %s fehlgeschlagen, da das nochmalige Freigeben einer Freigabe nicht erlaubt ist",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Freigabe von %1$s fehlgeschlagen, da das Freigabe-Backend für %2$s nicht in dieser Quelle gefunden werden konnte",
- "Sharing %s failed, because the file could not be found in the file cache" : "Freigabe von %s fehlgeschlagen, da die Datei im Datei-Cache nicht gefunden werden konnte"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Dies kann zumeist behoben werden, indem dem Web-Server Schreibzugriff auf das App-Verzeichnis eingeräumt wird. Siehe auch %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/el.js b/lib/l10n/el.js
index 4aeb3586207..9967dc8e929 100644
--- a/lib/l10n/el.js
+++ b/lib/l10n/el.js
@@ -3,9 +3,9 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "Αδυναμία εγγραφής στον κατάλογο \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Αυτό μπορεί συνήθως να διορθωθεί παρέχοντας δικαιώματα εγγραφής για το φάκελο config στο διακομιστή δικτύου",
- "See %s" : "Δείτε %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Ή εάν επιθυμείτε να διατηρήσετε το config.php σε κατάσταση ανάγνωσης μόνο, καθορίστετο από τις επιλογές του σε true του \"config_is_read_only\".",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Αυτό μπορεί συνήθως να διορθωθεί δίνοντας στον διακομιστή γραπτή πρόσβαση στον κατάλογο εκχώρησης. Βλέπε%s",
+ "See %s" : "Δείτε %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Αυτό μπορεί συνήθως να διορθωθεί παρέχοντας δικαιώματα εγγραφής για το φάκελο config στον διακομιστή ιστού.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Ή εάν επιθυμείτε να διατηρήσετε το config.php σε κατάσταση ανάγνωσης μόνο, καθορίστετο από τις επιλογές του σε true του \"config_is_read_only\". Δείτε %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Τα αρχεία της εφαρμογής %1$s δεν αντικαταστάθηκαν σωστά. Βεβαιωθείτε ότι πρόκειται για συμβατή έκδοση με το διακομιστή.",
"Sample configuration detected" : "Ανιχνεύθηκε δείγμα εγκατάστασης",
@@ -22,12 +22,12 @@ OC.L10N.register(
"PHP %s or higher is required." : "PHP %s ή νεώτερη απαιτείται.",
"PHP with a version lower than %s is required." : "Απαιτείται PHP παλαιότερη από την έκδοση %s.",
"%sbit or higher PHP required." : "%sbit απαιτείται νεώτερη έκδοση PHP.",
- "Following databases are supported: %s" : " Υποστηρίζονται οι ακόλουθες βάσεις δεδομένων: %s",
+ "The following databases are supported: %s" : " Υποστηρίζονται οι ακόλουθες βάσεις δεδομένων: %s",
"The command line tool %s could not be found" : "Το εργαλείο γραμμής εντολών %s δεν μπορεί να βρεθεί",
"The library %s is not available." : "Το %s της βιβλιοθήκης δεν είναι διαθέσιμο.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Απαιτείται βιβλιοθήκη %1$s νεότερη από την έκδοση %2$s - διαθέσιμη έκδοση %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Απαιτείται βιβλιοθήκη %1$s παλαιότερη από την έκδοση %2$s - διαθέσιμη έκδοση %3$s.",
- "Following platforms are supported: %s" : "Οι ακόλουθες πλατφόρμες υποστηρίζονται: %s",
+ "The following platforms are supported: %s" : "Υποστηρίζονται οι ακόλουθες πλατφόρμες: %s",
"Server version %s or higher is required." : "Απαιτείται έκδοση διακομιστή %s ή νεότερη.",
"Server version %s or lower is required." : "Απαιτείται έκδοση διακομιστή %s ή παλαιότερη.",
"Logged in user must be an admin or sub admin" : "Ο συνδεδεμένος χρήστης πρέπει να είναι admin ή subadmin",
@@ -185,8 +185,9 @@ OC.L10N.register(
"Token expired. Please reload page." : "Το αναγνωριστικό έληξε. Παρακαλώ φορτώστε ξανά την σελίδα.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Δεν βρέθηκαν εγκατεστημένοι οδηγοί βάσεων δεδομένων (sqlite, mysql, or postgresql).",
"Cannot write into \"config\" directory" : "Αδυναμία εγγραφής στον κατάλογο \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Αυτό μπορεί συνήθως να διορθωθεί δίνοντας στον διακομιστή γραπτή πρόσβαση στον κατάλογο εκχώρησης. Βλέπε%s",
"Cannot write into \"apps\" directory" : "Αδυναμία εγγραφής στον κατάλογο \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Αυτό συνήθως μπορεί να διορθωθεί δίνοντας δικαιώματα εγγραφής στον κατάλογο apps στον διακομιστή ιστού ή απενεργοποιώντας το appstore στο αρχείο διαμόρφωσης. Δείτε το %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Αυτό μπορεί συνήθως να διορθωθεί δίνοντας δικαιώματα εγγραφής για τον κατάλογο εφαρμογών στον διακομιστή ιστού ή απενεργοποιώντας το κέντρο εφαρμογών στο αρχείο config.",
"Cannot create \"data\" directory" : "Αδυναμία δημιουργίας του καταλόγου \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Αυτό μπορεί συνήθως να διορθωθεί δίνοντας στον διακομιστή ιστού δικαιώματα εγγραφής στον βασικό κατάλογο. Δείτε το%s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Τα δικαιώματα πρόσβασης μπορούν συνήθως να διορθωθούν δίνοντας δικαιώματα εγγραφής στον βασικό κατάλογο στον διακομιστή ιστού. Δείτε το%s.",
@@ -223,10 +224,8 @@ OC.L10N.register(
"Storage connection error. %s" : "Σφάλμα σύνδεσης με αποθηκευτικό χώρο. %s",
"Storage is temporarily not available" : "Μη διαθέσιμος χώρος αποθήκευσης προσωρινά",
"Storage connection timeout. %s" : "Λήξη χρονικού ορίου σύνδεσης με αποθηκευτικό χώρο.%s",
- "Create" : "Δημιουργία",
- "Change" : "Αλλαγή",
- "Delete" : "Διαγραφή",
- "Share" : "Κοινή χρήση",
+ "Following databases are supported: %s" : " Υποστηρίζονται οι ακόλουθες βάσεις δεδομένων: %s",
+ "Following platforms are supported: %s" : "Οι ακόλουθες πλατφόρμες υποστηρίζονται: %s",
"Overview" : "Επισκόπηση",
"Basic settings" : "Βασικές ρυθμίσεις",
"Sharing" : "Διαμοιρασμός",
@@ -234,30 +233,6 @@ OC.L10N.register(
"Groupware" : "Ομαδικό",
"Personal info" : "Προσωπικές πληροφορίες",
"Mobile & desktop" : "Κινητό & σταθερό",
- "Unlimited" : "Απεριόριστα",
- "Verifying" : "Γίνεται επαλήθευση",
- "Verifying …" : "Γίνεται επαλήθευση ...",
- "Verify" : "Επαλήθευση",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Αποτυχία διαμοιρασμού %s, γιατί το σύστημα υποστήριξης δεν επιτρέπει κοινόχρηστα τύπου %i",
- "Sharing %s failed, because the file does not exist" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αρχείο δεν υπάρχει",
- "Sharing %s failed, because you can not share with yourself" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν μπορείτε να διαμοιραστείτε με τον εαυτό σας.",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Ο διαμοιρασμός του %1$s απέτυχε, επειδή ο χρήστης %2$s δεν υπάρχει",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Ο διαμοιρασμός του %1$s απέτυχε, επειδή ο χρήστης %2$s δεν είναι μέλος καμίας ομάδας στην οποία ο χρήστης %3$s είναι μέλος",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Ο διαμοιρασμός του %1$s απέτυχε, γιατί το αντικείμενο είναι διαμοιρασμένο ήδη με τον χρήστη %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Αποτυχία διαμοιρασμού του %1$s, διότι το αντικείμενο διαμοιράζεται ήδη με τον χρήστη %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Ο διαμοιρασμός του %1$s απέτυχε, επειδή η ομάδα χρηστών %2$s δεν υπάρχει",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Ο διαμοιρασμός του %1$s απέτυχε, επειδή ο χρήστης %2$s δεν είναι μέλος της ομάδας %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Πρέπει να εισάγετε έναν κωδικό για να δημιουργήσετε έναν δημόσιο σύνδεσμο. Μόνο προστατευμένοι σύνδεσμοι επιτρέπονται",
- "Sharing %s failed, because sharing with links is not allowed" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν επιτρέπεται ο διαμοιρασμός με συνδέσμους",
- "Not allowed to create a federated share with the same user" : "Δεν επιτρέπεται η δημιουργία federated διαμοιρασμού με τον ίδιο χρήστη",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Αποτυχία διαμοιρασμού %1$s, δεν βρέθηκε το %2$s, μπορεί ο διακομιστής να είναι προσωρινά απροσπέλαστος.",
- "Share type %1$s is not valid for %2$s" : "Ο τύπος διαμοιρασμού %1$s δεν είναι έγκυρος για το %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Δεν μπορεί να οριστεί ημερομηνία λήξης. Οι κοινοποιήσεις δεν μπορεί να λήγουν αργότερα από %s αφού έχουν διαμοιραστεί.",
- "Cannot set expiration date. Expiration date is in the past" : "Δεν μπορεί να οριστεί ημερομηνία λήξης. Η ημερομηνία λήξης είναι στο παρελθόν",
- "Sharing failed, because the user %s is the original sharer" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αντικείμενο είναι διαμοιρασμένο αρχικά από τον ίδιο χρήστη.",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Ο διαμοιρασμός του %1$s απέτυχε, γιατί τα δικαιώματα υπερτερούν αυτά που είναι ορισμένα για το %2$s",
- "Sharing %s failed, because resharing is not allowed" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν επιτρέπεται ο επαναδιαμοιρασμός",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Ο διαμοιρασμός του %1$s απέτυχε, γιατί δεν ήταν δυνατό να εντοπίσει την πηγή το σύστημα διαμοιρασμού για το %2$s ",
- "Sharing %s failed, because the file could not be found in the file cache" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αρχείο δεν βρέθηκε στην προσωρινή αποθήκευση αρχείων"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Αυτό συνήθως μπορεί να διορθωθεί δίνοντας δικαιώματα εγγραφής στον κατάλογο apps στον διακομιστή ιστού ή απενεργοποιώντας το appstore στο αρχείο διαμόρφωσης. Δείτε το %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/el.json b/lib/l10n/el.json
index 1eada0d5f70..8335f765ef8 100644
--- a/lib/l10n/el.json
+++ b/lib/l10n/el.json
@@ -1,9 +1,9 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "Αδυναμία εγγραφής στον κατάλογο \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Αυτό μπορεί συνήθως να διορθωθεί παρέχοντας δικαιώματα εγγραφής για το φάκελο config στο διακομιστή δικτύου",
- "See %s" : "Δείτε %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Ή εάν επιθυμείτε να διατηρήσετε το config.php σε κατάσταση ανάγνωσης μόνο, καθορίστετο από τις επιλογές του σε true του \"config_is_read_only\".",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Αυτό μπορεί συνήθως να διορθωθεί δίνοντας στον διακομιστή γραπτή πρόσβαση στον κατάλογο εκχώρησης. Βλέπε%s",
+ "See %s" : "Δείτε %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Αυτό μπορεί συνήθως να διορθωθεί παρέχοντας δικαιώματα εγγραφής για το φάκελο config στον διακομιστή ιστού.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Ή εάν επιθυμείτε να διατηρήσετε το config.php σε κατάσταση ανάγνωσης μόνο, καθορίστετο από τις επιλογές του σε true του \"config_is_read_only\". Δείτε %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Τα αρχεία της εφαρμογής %1$s δεν αντικαταστάθηκαν σωστά. Βεβαιωθείτε ότι πρόκειται για συμβατή έκδοση με το διακομιστή.",
"Sample configuration detected" : "Ανιχνεύθηκε δείγμα εγκατάστασης",
@@ -20,12 +20,12 @@
"PHP %s or higher is required." : "PHP %s ή νεώτερη απαιτείται.",
"PHP with a version lower than %s is required." : "Απαιτείται PHP παλαιότερη από την έκδοση %s.",
"%sbit or higher PHP required." : "%sbit απαιτείται νεώτερη έκδοση PHP.",
- "Following databases are supported: %s" : " Υποστηρίζονται οι ακόλουθες βάσεις δεδομένων: %s",
+ "The following databases are supported: %s" : " Υποστηρίζονται οι ακόλουθες βάσεις δεδομένων: %s",
"The command line tool %s could not be found" : "Το εργαλείο γραμμής εντολών %s δεν μπορεί να βρεθεί",
"The library %s is not available." : "Το %s της βιβλιοθήκης δεν είναι διαθέσιμο.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Απαιτείται βιβλιοθήκη %1$s νεότερη από την έκδοση %2$s - διαθέσιμη έκδοση %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Απαιτείται βιβλιοθήκη %1$s παλαιότερη από την έκδοση %2$s - διαθέσιμη έκδοση %3$s.",
- "Following platforms are supported: %s" : "Οι ακόλουθες πλατφόρμες υποστηρίζονται: %s",
+ "The following platforms are supported: %s" : "Υποστηρίζονται οι ακόλουθες πλατφόρμες: %s",
"Server version %s or higher is required." : "Απαιτείται έκδοση διακομιστή %s ή νεότερη.",
"Server version %s or lower is required." : "Απαιτείται έκδοση διακομιστή %s ή παλαιότερη.",
"Logged in user must be an admin or sub admin" : "Ο συνδεδεμένος χρήστης πρέπει να είναι admin ή subadmin",
@@ -183,8 +183,9 @@
"Token expired. Please reload page." : "Το αναγνωριστικό έληξε. Παρακαλώ φορτώστε ξανά την σελίδα.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Δεν βρέθηκαν εγκατεστημένοι οδηγοί βάσεων δεδομένων (sqlite, mysql, or postgresql).",
"Cannot write into \"config\" directory" : "Αδυναμία εγγραφής στον κατάλογο \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Αυτό μπορεί συνήθως να διορθωθεί δίνοντας στον διακομιστή γραπτή πρόσβαση στον κατάλογο εκχώρησης. Βλέπε%s",
"Cannot write into \"apps\" directory" : "Αδυναμία εγγραφής στον κατάλογο \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Αυτό συνήθως μπορεί να διορθωθεί δίνοντας δικαιώματα εγγραφής στον κατάλογο apps στον διακομιστή ιστού ή απενεργοποιώντας το appstore στο αρχείο διαμόρφωσης. Δείτε το %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Αυτό μπορεί συνήθως να διορθωθεί δίνοντας δικαιώματα εγγραφής για τον κατάλογο εφαρμογών στον διακομιστή ιστού ή απενεργοποιώντας το κέντρο εφαρμογών στο αρχείο config.",
"Cannot create \"data\" directory" : "Αδυναμία δημιουργίας του καταλόγου \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Αυτό μπορεί συνήθως να διορθωθεί δίνοντας στον διακομιστή ιστού δικαιώματα εγγραφής στον βασικό κατάλογο. Δείτε το%s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Τα δικαιώματα πρόσβασης μπορούν συνήθως να διορθωθούν δίνοντας δικαιώματα εγγραφής στον βασικό κατάλογο στον διακομιστή ιστού. Δείτε το%s.",
@@ -221,10 +222,8 @@
"Storage connection error. %s" : "Σφάλμα σύνδεσης με αποθηκευτικό χώρο. %s",
"Storage is temporarily not available" : "Μη διαθέσιμος χώρος αποθήκευσης προσωρινά",
"Storage connection timeout. %s" : "Λήξη χρονικού ορίου σύνδεσης με αποθηκευτικό χώρο.%s",
- "Create" : "Δημιουργία",
- "Change" : "Αλλαγή",
- "Delete" : "Διαγραφή",
- "Share" : "Κοινή χρήση",
+ "Following databases are supported: %s" : " Υποστηρίζονται οι ακόλουθες βάσεις δεδομένων: %s",
+ "Following platforms are supported: %s" : "Οι ακόλουθες πλατφόρμες υποστηρίζονται: %s",
"Overview" : "Επισκόπηση",
"Basic settings" : "Βασικές ρυθμίσεις",
"Sharing" : "Διαμοιρασμός",
@@ -232,30 +231,6 @@
"Groupware" : "Ομαδικό",
"Personal info" : "Προσωπικές πληροφορίες",
"Mobile & desktop" : "Κινητό & σταθερό",
- "Unlimited" : "Απεριόριστα",
- "Verifying" : "Γίνεται επαλήθευση",
- "Verifying …" : "Γίνεται επαλήθευση ...",
- "Verify" : "Επαλήθευση",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Αποτυχία διαμοιρασμού %s, γιατί το σύστημα υποστήριξης δεν επιτρέπει κοινόχρηστα τύπου %i",
- "Sharing %s failed, because the file does not exist" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αρχείο δεν υπάρχει",
- "Sharing %s failed, because you can not share with yourself" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν μπορείτε να διαμοιραστείτε με τον εαυτό σας.",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Ο διαμοιρασμός του %1$s απέτυχε, επειδή ο χρήστης %2$s δεν υπάρχει",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Ο διαμοιρασμός του %1$s απέτυχε, επειδή ο χρήστης %2$s δεν είναι μέλος καμίας ομάδας στην οποία ο χρήστης %3$s είναι μέλος",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Ο διαμοιρασμός του %1$s απέτυχε, γιατί το αντικείμενο είναι διαμοιρασμένο ήδη με τον χρήστη %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Αποτυχία διαμοιρασμού του %1$s, διότι το αντικείμενο διαμοιράζεται ήδη με τον χρήστη %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Ο διαμοιρασμός του %1$s απέτυχε, επειδή η ομάδα χρηστών %2$s δεν υπάρχει",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Ο διαμοιρασμός του %1$s απέτυχε, επειδή ο χρήστης %2$s δεν είναι μέλος της ομάδας %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Πρέπει να εισάγετε έναν κωδικό για να δημιουργήσετε έναν δημόσιο σύνδεσμο. Μόνο προστατευμένοι σύνδεσμοι επιτρέπονται",
- "Sharing %s failed, because sharing with links is not allowed" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν επιτρέπεται ο διαμοιρασμός με συνδέσμους",
- "Not allowed to create a federated share with the same user" : "Δεν επιτρέπεται η δημιουργία federated διαμοιρασμού με τον ίδιο χρήστη",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Αποτυχία διαμοιρασμού %1$s, δεν βρέθηκε το %2$s, μπορεί ο διακομιστής να είναι προσωρινά απροσπέλαστος.",
- "Share type %1$s is not valid for %2$s" : "Ο τύπος διαμοιρασμού %1$s δεν είναι έγκυρος για το %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Δεν μπορεί να οριστεί ημερομηνία λήξης. Οι κοινοποιήσεις δεν μπορεί να λήγουν αργότερα από %s αφού έχουν διαμοιραστεί.",
- "Cannot set expiration date. Expiration date is in the past" : "Δεν μπορεί να οριστεί ημερομηνία λήξης. Η ημερομηνία λήξης είναι στο παρελθόν",
- "Sharing failed, because the user %s is the original sharer" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αντικείμενο είναι διαμοιρασμένο αρχικά από τον ίδιο χρήστη.",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Ο διαμοιρασμός του %1$s απέτυχε, γιατί τα δικαιώματα υπερτερούν αυτά που είναι ορισμένα για το %2$s",
- "Sharing %s failed, because resharing is not allowed" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν επιτρέπεται ο επαναδιαμοιρασμός",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Ο διαμοιρασμός του %1$s απέτυχε, γιατί δεν ήταν δυνατό να εντοπίσει την πηγή το σύστημα διαμοιρασμού για το %2$s ",
- "Sharing %s failed, because the file could not be found in the file cache" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αρχείο δεν βρέθηκε στην προσωρινή αποθήκευση αρχείων"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Αυτό συνήθως μπορεί να διορθωθεί δίνοντας δικαιώματα εγγραφής στον κατάλογο apps στον διακομιστή ιστού ή απενεργοποιώντας το appstore στο αρχείο διαμόρφωσης. Δείτε το %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/en_GB.js b/lib/l10n/en_GB.js
index 7605a97c7ab..4b0b691e5f6 100644
--- a/lib/l10n/en_GB.js
+++ b/lib/l10n/en_GB.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "Cannot write into \"config\" directory!",
"This can usually be fixed by giving the webserver write access to the config directory" : "This can usually be fixed by giving the webserver write access to the config directory",
"See %s" : "See %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "This can usually be fixed by giving the webserver write access to the config directory. See %s",
"Sample configuration detected" : "Sample configuration detected",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php",
"%1$s and %2$s" : "%1$s and %2$s",
@@ -18,10 +17,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "PHP %s or higher is required.",
"PHP with a version lower than %s is required." : "PHP with a version lower than %s is required.",
"%sbit or higher PHP required." : "%sbit or higher PHP required.",
- "Following databases are supported: %s" : "Following databases are supported: %s",
"The command line tool %s could not be found" : "The command line tool %s could not be found",
"The library %s is not available." : "The library %s is not available.",
- "Following platforms are supported: %s" : "Following platforms are supported: %s",
"Server version %s or higher is required." : "Server version %s or higher is required.",
"Server version %s or lower is required." : "Server version %s or lower is required.",
"Logged in user must be an admin" : "Logged in user must be an admin",
@@ -156,8 +153,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "Token expired. Please reload page.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No database drivers (sqlite, mysql, or postgresql) installed.",
"Cannot write into \"config\" directory" : "Cannot write into \"config\" directory",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "This can usually be fixed by giving the webserver write access to the config directory. See %s",
"Cannot write into \"apps\" directory" : "Cannot write into \"apps\" directory",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s",
"Cannot create \"data\" directory" : "Cannot create \"data\" directory",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "This can usually be fixed by giving the webserver write access to the root directory. See %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s.",
@@ -189,30 +186,14 @@ OC.L10N.register(
"Storage connection error. %s" : "Storage connection error. %s",
"Storage is temporarily not available" : "Storage is temporarily not available",
"Storage connection timeout. %s" : "Storage connection timeout. %s",
- "Create" : "Create",
- "Change" : "Change",
- "Delete" : "Delete",
- "Share" : "Share",
+ "Following databases are supported: %s" : "Following databases are supported: %s",
+ "Following platforms are supported: %s" : "Following platforms are supported: %s",
"Overview" : "Overview",
"Basic settings" : "Basic settings",
"Sharing" : "Sharing",
"Security" : "Security",
"Personal info" : "Personal info",
"Mobile & desktop" : "Mobile & desktop",
- "Unlimited" : "Unlimited",
- "Verifying" : "Verifying",
- "Verifying …" : "Verifying …",
- "Verify" : "Verify",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Sharing %s failed, because the backend does not allow shares from type %i",
- "Sharing %s failed, because the file does not exist" : "Sharing %s failed, because the file does not exist",
- "Sharing %s failed, because you can not share with yourself" : "Sharing %s failed, because you can not share with yourself",
- "You need to provide a password to create a public link, only protected links are allowed" : "You need to provide a password to create a public link, only protected links are allowed",
- "Sharing %s failed, because sharing with links is not allowed" : "Sharing %s failed, because sharing with links is not allowed",
- "Not allowed to create a federated share with the same user" : "Not allowed to create a federated share with the same user",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Cannot set expiry date. Shares cannot expire later than %s after they have been shared",
- "Cannot set expiration date. Expiration date is in the past" : "Cannot set expiry date. Expiry date is in the past",
- "Sharing failed, because the user %s is the original sharer" : "Sharing failed, because the user %s is the original sharer",
- "Sharing %s failed, because resharing is not allowed" : "Sharing %s failed, because resharing is not allowed",
- "Sharing %s failed, because the file could not be found in the file cache" : "Sharing %s failed, because the file could not be found in the file cache"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/en_GB.json b/lib/l10n/en_GB.json
index 1b2a594e360..281cc473169 100644
--- a/lib/l10n/en_GB.json
+++ b/lib/l10n/en_GB.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "Cannot write into \"config\" directory!",
"This can usually be fixed by giving the webserver write access to the config directory" : "This can usually be fixed by giving the webserver write access to the config directory",
"See %s" : "See %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "This can usually be fixed by giving the webserver write access to the config directory. See %s",
"Sample configuration detected" : "Sample configuration detected",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php",
"%1$s and %2$s" : "%1$s and %2$s",
@@ -16,10 +15,8 @@
"PHP %s or higher is required." : "PHP %s or higher is required.",
"PHP with a version lower than %s is required." : "PHP with a version lower than %s is required.",
"%sbit or higher PHP required." : "%sbit or higher PHP required.",
- "Following databases are supported: %s" : "Following databases are supported: %s",
"The command line tool %s could not be found" : "The command line tool %s could not be found",
"The library %s is not available." : "The library %s is not available.",
- "Following platforms are supported: %s" : "Following platforms are supported: %s",
"Server version %s or higher is required." : "Server version %s or higher is required.",
"Server version %s or lower is required." : "Server version %s or lower is required.",
"Logged in user must be an admin" : "Logged in user must be an admin",
@@ -154,8 +151,8 @@
"Token expired. Please reload page." : "Token expired. Please reload page.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No database drivers (sqlite, mysql, or postgresql) installed.",
"Cannot write into \"config\" directory" : "Cannot write into \"config\" directory",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "This can usually be fixed by giving the webserver write access to the config directory. See %s",
"Cannot write into \"apps\" directory" : "Cannot write into \"apps\" directory",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s",
"Cannot create \"data\" directory" : "Cannot create \"data\" directory",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "This can usually be fixed by giving the webserver write access to the root directory. See %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s.",
@@ -187,30 +184,14 @@
"Storage connection error. %s" : "Storage connection error. %s",
"Storage is temporarily not available" : "Storage is temporarily not available",
"Storage connection timeout. %s" : "Storage connection timeout. %s",
- "Create" : "Create",
- "Change" : "Change",
- "Delete" : "Delete",
- "Share" : "Share",
+ "Following databases are supported: %s" : "Following databases are supported: %s",
+ "Following platforms are supported: %s" : "Following platforms are supported: %s",
"Overview" : "Overview",
"Basic settings" : "Basic settings",
"Sharing" : "Sharing",
"Security" : "Security",
"Personal info" : "Personal info",
"Mobile & desktop" : "Mobile & desktop",
- "Unlimited" : "Unlimited",
- "Verifying" : "Verifying",
- "Verifying …" : "Verifying …",
- "Verify" : "Verify",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Sharing %s failed, because the backend does not allow shares from type %i",
- "Sharing %s failed, because the file does not exist" : "Sharing %s failed, because the file does not exist",
- "Sharing %s failed, because you can not share with yourself" : "Sharing %s failed, because you can not share with yourself",
- "You need to provide a password to create a public link, only protected links are allowed" : "You need to provide a password to create a public link, only protected links are allowed",
- "Sharing %s failed, because sharing with links is not allowed" : "Sharing %s failed, because sharing with links is not allowed",
- "Not allowed to create a federated share with the same user" : "Not allowed to create a federated share with the same user",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Cannot set expiry date. Shares cannot expire later than %s after they have been shared",
- "Cannot set expiration date. Expiration date is in the past" : "Cannot set expiry date. Expiry date is in the past",
- "Sharing failed, because the user %s is the original sharer" : "Sharing failed, because the user %s is the original sharer",
- "Sharing %s failed, because resharing is not allowed" : "Sharing %s failed, because resharing is not allowed",
- "Sharing %s failed, because the file could not be found in the file cache" : "Sharing %s failed, because the file could not be found in the file cache"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/eo.js b/lib/l10n/eo.js
index 2002e476ef5..6ad276dd656 100644
--- a/lib/l10n/eo.js
+++ b/lib/l10n/eo.js
@@ -3,9 +3,8 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "Ne skribeblas la dosierujo „config“!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Igi la agordodosierujon alirebla de la servilo kutime solvas tiun problemon.",
- "See %s" : "Vidi %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Aŭ, se vi preferas lasi la dosieron config.php nurlega, metu la opcion „config_is_read_only“ al vera („true“) ene de ĝi.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Igi la agordodosierujon alirebla de la servilo kutime solvas tiun problemon. Vidu %s",
+ "See %s" : "Vidi %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Aŭ, se vi preferas lasi la dosieron config.php nurlega, metu la opcion „config_is_read_only“ al vera („true“) ene de ĝi. Vidu %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "La dosieroj de la aplikaĵo %1$s ne estis bone anstataŭigitaj. Certigu, ke tiu aplikaĵa versio kongruas kun la servilo.",
"Sample configuration detected" : "Ekzempla agordo trovita",
@@ -21,12 +20,10 @@ OC.L10N.register(
"PHP %s or higher is required." : "PHP %s aŭ pli alta necesas.",
"PHP with a version lower than %s is required." : "Necesas pli malalta eldono de PHP ol %s.",
"%sbit or higher PHP required." : "PHP je %sbitoj aŭ pli alta necesas.",
- "Following databases are supported: %s" : "La jenaj datumbazoj estas subtenataj: %s",
"The command line tool %s could not be found" : "La komandlinia ilo %s ne troviĝis",
"The library %s is not available." : "La biblioteko %s ne haveblas.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Biblioteko %1$s kun versio pli ol %2$s bezoniĝas. Nuna versio estas %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Biblioteko %1$s kun versio malpli ol %2$s bezoniĝas. Nuna versio estas %3$s.",
- "Following platforms are supported: %s" : "La jenaj platformoj estas subtenataj: %s",
"Server version %s or higher is required." : "Servilo kun versio %s aŭ pli bezoniĝas.",
"Server version %s or lower is required." : "Servilo kun versio %s aŭ malpli bezoniĝas.",
"Logged in user must be an admin or sub admin" : "La ensalutanta uzanto estu administranto aŭ subadministranto",
@@ -181,8 +178,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "Ĵetono eksvalidiĝis. Bonvolu reŝargi la paĝon.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Neniu datumbaza pelilo (sqlite, mysql, or postgresql) instalita.",
"Cannot write into \"config\" directory" : "Ne skribeblas la dosierujo „config“",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Igi la agordodosierujon alirebla de la servilo kutime solvas tiun problemon. Vidu %s",
"Cannot write into \"apps\" directory" : "Ne skribeblas la dosierujo „apps“",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Igi la „apps“ dosierujon alirebla de la servilo aŭ malŝalti la aplikaĵejon en la agordodosiero kutime solvas tiun problemon. Vidu %s",
"Cannot create \"data\" directory" : "Ne kreeblas la dosierujo „data“",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Igi la radikan dosierujon alirebla de la servilo kutime solvas tiun problemon. Vidu %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Igi la radikan dosierujon skribebla de la servilo kutime solvas tiun problemon. Vidu %s.",
@@ -219,10 +216,8 @@ OC.L10N.register(
"Storage connection error. %s" : "Konekta eraro al konservejo. %s",
"Storage is temporarily not available" : "Konservejo provizore ne disponeblas",
"Storage connection timeout. %s" : "Konekto al konservejo eltempiĝis. %s",
- "Create" : "Krei",
- "Change" : "Ŝanĝi",
- "Delete" : "Forigi",
- "Share" : "Kunhavigi",
+ "Following databases are supported: %s" : "La jenaj datumbazoj estas subtenataj: %s",
+ "Following platforms are supported: %s" : "La jenaj platformoj estas subtenataj: %s",
"Overview" : "Superrigardo",
"Basic settings" : "Bazaj agordoj",
"Sharing" : "Kunhavigo",
@@ -230,30 +225,6 @@ OC.L10N.register(
"Groupware" : "Grupa kunlaborado",
"Personal info" : "Persona informo",
"Mobile & desktop" : "Porteblaj kaj labortablaj aplikaĵoj",
- "Unlimited" : "Senlima",
- "Verifying" : "Kontrolado",
- "Verifying …" : "Kontrolado...",
- "Verify" : "Kontroli",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Kunhavigo de %s malsukcesis, ĉar la interna servo ne permesas kunhavon de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Kunhavigo de %s malsukcesis, ĉar la dosiero ne ekzistas",
- "Sharing %s failed, because you can not share with yourself" : "Kunhavigo de %s malsukcesis, ĉar vi ne povas kunhavigi kun vi mem",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Kunhavigo de %1$s malsukcesis, ĉar la uzanto %2$s ne ekzistas",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Kunhavigo de %1$s malsukcesis, ĉar la uzanto %2$s estas ano de neniu grupo, de kiu %3$s estas ano",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Kunhavigo de %1$s malsukcesis, ĉar tiu elemento jam kunhaviĝas kun %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Kunhavigo de %1$s malsukcesis, ĉar la ero jam kunhaviĝis kun uzanto %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Kunhavigo de %1$s malsukcesis, ĉar la grupo %2$s ne ekzistas",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Kunhavigo de %1$s malsukcesis, ĉar %2$s ne estas ano de la grupo %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Vi bezonas doni pasvorton por krei publikan ligilon, ĉar nur protektitaj ligiloj estas permesataj",
- "Sharing %s failed, because sharing with links is not allowed" : "Kunhavo de %s malsukcesis, ĉar kunhavo per ligiloj ne permesatas",
- "Not allowed to create a federated share with the same user" : "Vi ne permesas krei federan kunhavon kun la sama uzanto",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Kunhavigo de %1$s malsukcesis, ne eblis trovi %2$s; eble la servilo estas provizore neatingebla.",
- "Share type %1$s is not valid for %2$s" : "Kunhava tipo %1$s ne validas por %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ne eblis agordi limdaton. Kunhavoj ne povas senvalidiĝi pli ol %s post sia kreado.",
- "Cannot set expiration date. Expiration date is in the past" : "Ne eblis agordi limdaton: ĝi troviĝas en la estinteco.",
- "Sharing failed, because the user %s is the original sharer" : "Kunhavigo malsukcesis, ĉar la uzanto %s estas la origina kunhavanto",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Kunhavigo de %1$s malsukcesis, ĉar la permesoj transpasas tiujn de %2$s",
- "Sharing %s failed, because resharing is not allowed" : "Kunhavigo de %s malsukcesis, ĉar rekunhavigo ne permesatas",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Kunhavigo de %1$s malsukcesis, ĉar la kunhava interna servo por %2$s ne povis trovi ĝian fonton",
- "Sharing %s failed, because the file could not be found in the file cache" : "Kunhavigo de %s malsukcesis, ĉar la dosiero ne troveblis en la dosiera kaŝmemoro"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Igi la „apps“ dosierujon alirebla de la servilo aŭ malŝalti la aplikaĵejon en la agordodosiero kutime solvas tiun problemon. Vidu %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/eo.json b/lib/l10n/eo.json
index d66dcbeb969..2dc8e15b1b5 100644
--- a/lib/l10n/eo.json
+++ b/lib/l10n/eo.json
@@ -1,9 +1,8 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "Ne skribeblas la dosierujo „config“!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Igi la agordodosierujon alirebla de la servilo kutime solvas tiun problemon.",
- "See %s" : "Vidi %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Aŭ, se vi preferas lasi la dosieron config.php nurlega, metu la opcion „config_is_read_only“ al vera („true“) ene de ĝi.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Igi la agordodosierujon alirebla de la servilo kutime solvas tiun problemon. Vidu %s",
+ "See %s" : "Vidi %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Aŭ, se vi preferas lasi la dosieron config.php nurlega, metu la opcion „config_is_read_only“ al vera („true“) ene de ĝi. Vidu %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "La dosieroj de la aplikaĵo %1$s ne estis bone anstataŭigitaj. Certigu, ke tiu aplikaĵa versio kongruas kun la servilo.",
"Sample configuration detected" : "Ekzempla agordo trovita",
@@ -19,12 +18,10 @@
"PHP %s or higher is required." : "PHP %s aŭ pli alta necesas.",
"PHP with a version lower than %s is required." : "Necesas pli malalta eldono de PHP ol %s.",
"%sbit or higher PHP required." : "PHP je %sbitoj aŭ pli alta necesas.",
- "Following databases are supported: %s" : "La jenaj datumbazoj estas subtenataj: %s",
"The command line tool %s could not be found" : "La komandlinia ilo %s ne troviĝis",
"The library %s is not available." : "La biblioteko %s ne haveblas.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Biblioteko %1$s kun versio pli ol %2$s bezoniĝas. Nuna versio estas %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Biblioteko %1$s kun versio malpli ol %2$s bezoniĝas. Nuna versio estas %3$s.",
- "Following platforms are supported: %s" : "La jenaj platformoj estas subtenataj: %s",
"Server version %s or higher is required." : "Servilo kun versio %s aŭ pli bezoniĝas.",
"Server version %s or lower is required." : "Servilo kun versio %s aŭ malpli bezoniĝas.",
"Logged in user must be an admin or sub admin" : "La ensalutanta uzanto estu administranto aŭ subadministranto",
@@ -179,8 +176,8 @@
"Token expired. Please reload page." : "Ĵetono eksvalidiĝis. Bonvolu reŝargi la paĝon.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Neniu datumbaza pelilo (sqlite, mysql, or postgresql) instalita.",
"Cannot write into \"config\" directory" : "Ne skribeblas la dosierujo „config“",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Igi la agordodosierujon alirebla de la servilo kutime solvas tiun problemon. Vidu %s",
"Cannot write into \"apps\" directory" : "Ne skribeblas la dosierujo „apps“",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Igi la „apps“ dosierujon alirebla de la servilo aŭ malŝalti la aplikaĵejon en la agordodosiero kutime solvas tiun problemon. Vidu %s",
"Cannot create \"data\" directory" : "Ne kreeblas la dosierujo „data“",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Igi la radikan dosierujon alirebla de la servilo kutime solvas tiun problemon. Vidu %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Igi la radikan dosierujon skribebla de la servilo kutime solvas tiun problemon. Vidu %s.",
@@ -217,10 +214,8 @@
"Storage connection error. %s" : "Konekta eraro al konservejo. %s",
"Storage is temporarily not available" : "Konservejo provizore ne disponeblas",
"Storage connection timeout. %s" : "Konekto al konservejo eltempiĝis. %s",
- "Create" : "Krei",
- "Change" : "Ŝanĝi",
- "Delete" : "Forigi",
- "Share" : "Kunhavigi",
+ "Following databases are supported: %s" : "La jenaj datumbazoj estas subtenataj: %s",
+ "Following platforms are supported: %s" : "La jenaj platformoj estas subtenataj: %s",
"Overview" : "Superrigardo",
"Basic settings" : "Bazaj agordoj",
"Sharing" : "Kunhavigo",
@@ -228,30 +223,6 @@
"Groupware" : "Grupa kunlaborado",
"Personal info" : "Persona informo",
"Mobile & desktop" : "Porteblaj kaj labortablaj aplikaĵoj",
- "Unlimited" : "Senlima",
- "Verifying" : "Kontrolado",
- "Verifying …" : "Kontrolado...",
- "Verify" : "Kontroli",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Kunhavigo de %s malsukcesis, ĉar la interna servo ne permesas kunhavon de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Kunhavigo de %s malsukcesis, ĉar la dosiero ne ekzistas",
- "Sharing %s failed, because you can not share with yourself" : "Kunhavigo de %s malsukcesis, ĉar vi ne povas kunhavigi kun vi mem",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Kunhavigo de %1$s malsukcesis, ĉar la uzanto %2$s ne ekzistas",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Kunhavigo de %1$s malsukcesis, ĉar la uzanto %2$s estas ano de neniu grupo, de kiu %3$s estas ano",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Kunhavigo de %1$s malsukcesis, ĉar tiu elemento jam kunhaviĝas kun %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Kunhavigo de %1$s malsukcesis, ĉar la ero jam kunhaviĝis kun uzanto %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Kunhavigo de %1$s malsukcesis, ĉar la grupo %2$s ne ekzistas",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Kunhavigo de %1$s malsukcesis, ĉar %2$s ne estas ano de la grupo %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Vi bezonas doni pasvorton por krei publikan ligilon, ĉar nur protektitaj ligiloj estas permesataj",
- "Sharing %s failed, because sharing with links is not allowed" : "Kunhavo de %s malsukcesis, ĉar kunhavo per ligiloj ne permesatas",
- "Not allowed to create a federated share with the same user" : "Vi ne permesas krei federan kunhavon kun la sama uzanto",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Kunhavigo de %1$s malsukcesis, ne eblis trovi %2$s; eble la servilo estas provizore neatingebla.",
- "Share type %1$s is not valid for %2$s" : "Kunhava tipo %1$s ne validas por %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ne eblis agordi limdaton. Kunhavoj ne povas senvalidiĝi pli ol %s post sia kreado.",
- "Cannot set expiration date. Expiration date is in the past" : "Ne eblis agordi limdaton: ĝi troviĝas en la estinteco.",
- "Sharing failed, because the user %s is the original sharer" : "Kunhavigo malsukcesis, ĉar la uzanto %s estas la origina kunhavanto",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Kunhavigo de %1$s malsukcesis, ĉar la permesoj transpasas tiujn de %2$s",
- "Sharing %s failed, because resharing is not allowed" : "Kunhavigo de %s malsukcesis, ĉar rekunhavigo ne permesatas",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Kunhavigo de %1$s malsukcesis, ĉar la kunhava interna servo por %2$s ne povis trovi ĝian fonton",
- "Sharing %s failed, because the file could not be found in the file cache" : "Kunhavigo de %s malsukcesis, ĉar la dosiero ne troveblis en la dosiera kaŝmemoro"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Igi la „apps“ dosierujon alirebla de la servilo aŭ malŝalti la aplikaĵejon en la agordodosiero kutime solvas tiun problemon. Vidu %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es.js b/lib/l10n/es.js
index cf5297cc41e..579d825719d 100644
--- a/lib/l10n/es.js
+++ b/lib/l10n/es.js
@@ -1,11 +1,11 @@
OC.L10N.register(
"lib",
{
- "Cannot write into \"config\" directory!" : "No se puede escribir en la carpeta \"config\"",
+ "Cannot write into \"config\" directory!" : "No se puede escribir en la carpeta \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Se podría solucionar esto dándole al servidor permisos de escritura del directorio de configuración",
- "See %s" : "Ver %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "O, si prefieres mantener el archivo config.php como de solo lectura, marca la opción \"config_is_read_only\" a 'true' en él.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Se podría solucionar esto dándole al servidor permisos de escritura del directorio de configuración. Ver %s",
+ "See %s" : "Ver %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Se podría solucionar esto dándole al servidor permisos de escritura del directorio de configuración.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "O, si prefieres mantener el archivo config.php como de solo lectura, marca la opción \"config_is_read_only\" a 'true' en él. Ver %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Los archivos de la app %1$s no se han reemplazado correctamente. Asegúrate de que es una versión compatible con el servidor.",
"Sample configuration detected" : "Configuración de ejemplo detectada",
@@ -17,36 +17,36 @@ OC.L10N.register(
"Education Edition" : "Edición Educación",
"Enterprise bundle" : "Pack para empresas",
"Groupware bundle" : "Pack groupware",
- "Hub bundle" : "Conjunto de Hub",
- "Social sharing bundle" : "Conjunto para compartir en redes",
+ "Hub bundle" : "Pack para Hub",
+ "Social sharing bundle" : "Pack para compartir en redes",
"PHP %s or higher is required." : "Se requiere PHP %s o superior.",
"PHP with a version lower than %s is required." : "Se necesita una versión de PHP inferior a %s",
"%sbit or higher PHP required." : "Se requiere PHP %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "The following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No se encontró la herramienta %s de línea de comandos",
"The library %s is not available." : "La biblioteca %s no está disponible",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Se requiere la biblioteca %1$s con una versión mayor que %2$s. Está disponible la versión %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Se requiera la biblioteca %1$s con una versión menor que %2$s. Está disponible la versión %3$s.",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
+ "The following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se necesita la versión %s o superior del servidor.",
"Server version %s or lower is required." : "Se necesita la versión %s o inferior del servidor. ",
"Logged in user must be an admin or sub admin" : "El usuario activo debe ser un administrador o subadministrador",
"Logged in user must be an admin" : "El usuario registrado debe ser un administrador",
- "Wiping of device %s has started" : "La limpieza del dispositivo %s ha empezado",
- "Wiping of device »%s« has started" : "La limpieza del dispositivo »%s« ha empezado",
- "»%s« started remote wipe" : "»%s« ha empezado la limpieza a distancia",
- "Device or application »%s« has started the remote wipe process. You will receive another email once the process has finished" : "El dispositivo o la aplicación »%s« ha empezado el proceso de limpieza a distancia. Vas a recibir otro mensaje por correo una vez que el proceso haya concluido.",
- "Wiping of device %s has finished" : "La limpieza del dispositivo %s ha concluido",
- "Wiping of device »%s« has finished" : "La limpieza del dispositivo »%s« ha concluido",
- "»%s« finished remote wipe" : "»%s« ha acabado la limpieza a distancia",
- "Device or application »%s« has finished the remote wipe process." : "El dispositivo o la aplicación »%s« ha concluido el proceso de limpieza a distancia.",
- "Remote wipe started" : "Barrido remoto comenzado.",
- "A remote wipe was started on device %s" : "Se ha iniciado un barrido remoto en el dispositivo %s.",
- "Remote wipe finished" : "Barrido remoto finalizado",
- "The remote wipe on %s has finished" : "El barrido remoto en %s ha finalizado",
+ "Wiping of device %s has started" : "El borrado del dispositivo %s ha empezado",
+ "Wiping of device »%s« has started" : "El borrado del dispositivo »%s« ha empezado",
+ "»%s« started remote wipe" : "»%s« ha empezado el borrado a distancia",
+ "Device or application »%s« has started the remote wipe process. You will receive another email once the process has finished" : "El dispositivo o la aplicación »%s« ha empezado el proceso de borrado a distancia. Vas a recibir otro mensaje por correo una vez que el proceso haya concluido.",
+ "Wiping of device %s has finished" : "El borrado del dispositivo %s ha concluido",
+ "Wiping of device »%s« has finished" : "El borrado del dispositivo »%s« ha concluido",
+ "»%s« finished remote wipe" : "»%s« ha acabado el borrado a distancia",
+ "Device or application »%s« has finished the remote wipe process." : "El dispositivo o la aplicación »%s« ha concluido el proceso de borrado a distancia.",
+ "Remote wipe started" : "Borrado remoto comenzado.",
+ "A remote wipe was started on device %s" : "Se ha iniciado un borrado remoto en el dispositivo %s.",
+ "Remote wipe finished" : "Borrado remoto finalizado",
+ "The remote wipe on %s has finished" : "El borrado remoto en %s ha finalizado",
"Authentication" : "Autentificación",
"Unknown filetype" : "Tipo de archivo desconocido",
- "Invalid image" : "Imagen inválida",
+ "Invalid image" : "Imagen no válida",
"Avatar image is not square" : "La imagen de avatar no es cuadrada",
"today" : "hoy",
"tomorrow" : "mañana",
@@ -56,15 +56,15 @@ OC.L10N.register(
"next month" : "mes siguiente",
"last month" : "mes pasado",
"_in %n month_::_in %n months_" : ["dentro de %n mes","dentro de %n meses"],
- "_%n month ago_::_%n months ago_" : ["Hace %n mes","Hace %n meses"],
+ "_%n month ago_::_%n months ago_" : ["Hace %n mes","hace %n meses"],
"next year" : "año que viene",
"last year" : "año pasado",
"_in %n year_::_in %n years_" : ["dentro de %n año","dentro de %n años"],
"_%n year ago_::_%n years ago_" : ["Hace %n año","hace %n años"],
"_in %n hour_::_in %n hours_" : ["dentro de %n hora","dentro de %n horas"],
- "_%n hour ago_::_%n hours ago_" : ["Hace %n hora","Hace %n horas"],
+ "_%n hour ago_::_%n hours ago_" : ["Hace %n hora","hace %n horas"],
"_in %n minute_::_in %n minutes_" : ["dentro de %n minuto","dentro de %n minutos"],
- "_%n minute ago_::_%n minutes ago_" : ["Hace %n minuto","Hace %n minutos"],
+ "_%n minute ago_::_%n minutes ago_" : ["Hace %n minuto","hace %n minutos"],
"in a few seconds" : "en unos segundos",
"seconds ago" : "hace segundos",
"Empty file" : "Archivo vacío",
@@ -96,12 +96,12 @@ OC.L10N.register(
"PostgreSQL username and/or password not valid" : "Usuario y/o contraseña de PostgreSQL no válidos",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X no está soportado y %s no funcionará bien en esta plataforma. ¡Úsala bajo tu propio riesgo! ",
"For the best results, please consider using a GNU/Linux server instead." : "Para obtener los mejores resultados, considera utilizar un servidor GNU/Linux.",
- "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Parece que esta instancia %s está funcionando en un entorno PHP de 32-bits y el open_basedir se ha configurado en php.ini. Esto acarreará problemas con arhivos de tamaño superior a 4GB y resulta totalmente desaconsejado.",
+ "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Parece que esta instancia %s está funcionando en un entorno PHP de 32-bits y el open_basedir se ha configurado en php.ini. Esto acarreará problemas con archivos de tamaño superior a 4GB y resulta totalmente desaconsejado.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Por favor, quite el ajuste de open_basedir —dentro de su php.ini— o pásese a PHP de 64 bits.",
"Set an admin username." : "Configurar un nombre de usuario del administrador",
"Set an admin password." : "Configurar la contraseña del administrador.",
"Can't create or write into the data directory %s" : "No es posible crear o escribir en el directorio de datos %s",
- "Invalid Federated Cloud ID" : "ID de Nube federada inválida",
+ "Invalid Federated Cloud ID" : "ID de Nube federada no válida",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "El motor compartido %s debe implementar la interfaz OCP\\Share_Backend",
"Sharing backend %s not found" : "El motor compartido %s no se ha encontrado",
"Sharing backend for %s not found" : "Motor compartido para %s no encontrado",
@@ -185,13 +185,14 @@ OC.L10N.register(
"Token expired. Please reload page." : "Token expirado. Por favor, recarge la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No están instalados los drivers de BBDD (sqlite, mysql, o postgresql)",
"Cannot write into \"config\" directory" : "No se puede escribir el el directorio de configuración",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Se podría solucionar esto dándole al servidor permisos de escritura del directorio de configuración. Ver %s",
"Cannot write into \"apps\" directory" : "No se puede escribir en el directorio de \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Habitualmente, esto puede arreglarse dando al servidor web acceso de escritura al directorio de apps o desactivando la tienda de apps en el archivo de configuración. Véase %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Se podría solucionar esto dando al servidor web acceso de escritura al directorio de apps o desactivando la tienda de apps en el archivo de configuración.",
"Cannot create \"data\" directory" : "No se puede crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Habitualmente, esto puede arreglarse dando al servidor web acceso de escritura al directorio raíz. Véase %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Habitualmente, los permisos pueden arreglarse dando al servidor web acceso de escritura al directorio raíz. Véase %s",
"Setting locale to %s failed" : "Ha fallado la activación de la localización %s ",
- "Please install one of these locales on your system and restart your webserver." : "Instale uno de estas localización en su sistema y reinicie su servidor web.",
+ "Please install one of these locales on your system and restart your webserver." : "Instale uno de estos idiomas en su sistema y reinicie su servidor web.",
"Please ask your server administrator to install the module." : "Consulte al administrador de su servidor para instalar el módulo.",
"PHP module %s not installed." : "El módulo PHP %s no está instalado.",
"PHP setting \"%s\" is not set to \"%s\"." : "La opción PHP \"%s\" no es \"%s\".",
@@ -213,7 +214,7 @@ OC.L10N.register(
"Your data directory is invalid" : "Tu directorio de datos es inválido",
"Ensure there is a file called \".ocdata\" in the root of the data directory." : "Asegúrate de que existe un archivo llamado \".ocdata\" en la raíz del directorio de datos.",
"Action \"%s\" not supported or implemented." : "La acción \"%s\" no está soportada o implementada.",
- "Authentication failed, wrong token or provider ID given" : "La autenticación ha fallado. Se ha dado un token o una ID de proveedor erróneos.",
+ "Authentication failed, wrong token or provider ID given" : "La autentificación ha fallado. Se ha dado un token o una ID de proveedor erróneos.",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Faltan parámetros para completar la petición. Parámetros que faltan: \"%s\"",
"ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "La ID «%1$s» ya está siendo usada por el proveedor de federación en la nube «%2$s»",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "El proveedor de nube federada con ID \"%s\" no existe.",
@@ -223,10 +224,8 @@ OC.L10N.register(
"Storage connection error. %s" : "Error de conexión de almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamiento no esta disponible temporalmente",
"Storage connection timeout. %s" : "Tiempo de conexión de almacenamiento agotado. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Eliminar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Overview" : "Vista general",
"Basic settings" : "Ajustes básicos",
"Sharing" : "Compartir",
@@ -234,30 +233,6 @@ OC.L10N.register(
"Groupware" : "Groupware",
"Personal info" : "Información personal",
"Mobile & desktop" : "Móvil y escritorio",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verificando",
- "Verifying …" : "Verificando...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "No se pudo compartir %s porque el repositorio no permite recursos compartidos del tipo %i",
- "Sharing %s failed, because the file does not exist" : "No se pudo compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Fallo al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Fallo al compartir %1$s porque el usuario %2$s no existe.",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Fallo al compartir %1$s porque el usuario %2$s no es miembro de ninguno de los grupos de los que %3$s es miembro",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Fallo al compartir %1$s porque este objeto ya está compartido con %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Fallo al compartir %1$s porque este objeto ya está compartido con el usuario %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Fallo al compartir %1$s porque el grupo %2$s no existe",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Fallo al compartir %1$s porque %2$s no es miembro del grupo %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Es necesario definir una contraseña para crear un enlace publico. Solo los enlaces protegidos están permitidos",
- "Sharing %s failed, because sharing with links is not allowed" : "Fallo al compartir %s, ya que no se permite compartir con enlaces",
- "Not allowed to create a federated share with the same user" : "No se permite crear un recurso compartido federado con el mismo usuario",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Fallo al compartir %1$s, no se ha podido encontrar %2$s, quizás no se puede alcanzar ahora el servidor.",
- "Share type %1$s is not valid for %2$s" : "El tipo de recurso compartido %1$s no es válido para %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No se puede fijar fecha de caducidad. Los archivos compartidos no pueden caducar más tarde de %s de ser compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No se puede fijar la fecha de caducidad. La fecha de caducidad está en el pasado.",
- "Sharing failed, because the user %s is the original sharer" : "Se ha fallado al compartir, ya que el usuario %s es el compartidor original",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Fallo al compartir %1$s porque los permisos exceden los permisos concedidos a %2$s",
- "Sharing %s failed, because resharing is not allowed" : "Fallo al compartir %s, ya que no está permitido volverlo a compartir",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Fallo al compartir %1$s porque el motor de para compartir %2$s no ha podido encontrar su origen",
- "Sharing %s failed, because the file could not be found in the file cache" : "Fallo al compartir %s, ya que el archivo no se ha encontrado en el caché de archivo"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Habitualmente, esto puede arreglarse dando al servidor web permisos de escritura al directorio de apps o desactivando la tienda de apps en el archivo de configuración. Véase %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es.json b/lib/l10n/es.json
index 494eec9d978..4be46b4164e 100644
--- a/lib/l10n/es.json
+++ b/lib/l10n/es.json
@@ -1,9 +1,9 @@
{ "translations": {
- "Cannot write into \"config\" directory!" : "No se puede escribir en la carpeta \"config\"",
+ "Cannot write into \"config\" directory!" : "No se puede escribir en la carpeta \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Se podría solucionar esto dándole al servidor permisos de escritura del directorio de configuración",
- "See %s" : "Ver %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "O, si prefieres mantener el archivo config.php como de solo lectura, marca la opción \"config_is_read_only\" a 'true' en él.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Se podría solucionar esto dándole al servidor permisos de escritura del directorio de configuración. Ver %s",
+ "See %s" : "Ver %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Se podría solucionar esto dándole al servidor permisos de escritura del directorio de configuración.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "O, si prefieres mantener el archivo config.php como de solo lectura, marca la opción \"config_is_read_only\" a 'true' en él. Ver %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Los archivos de la app %1$s no se han reemplazado correctamente. Asegúrate de que es una versión compatible con el servidor.",
"Sample configuration detected" : "Configuración de ejemplo detectada",
@@ -15,36 +15,36 @@
"Education Edition" : "Edición Educación",
"Enterprise bundle" : "Pack para empresas",
"Groupware bundle" : "Pack groupware",
- "Hub bundle" : "Conjunto de Hub",
- "Social sharing bundle" : "Conjunto para compartir en redes",
+ "Hub bundle" : "Pack para Hub",
+ "Social sharing bundle" : "Pack para compartir en redes",
"PHP %s or higher is required." : "Se requiere PHP %s o superior.",
"PHP with a version lower than %s is required." : "Se necesita una versión de PHP inferior a %s",
"%sbit or higher PHP required." : "Se requiere PHP %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "The following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No se encontró la herramienta %s de línea de comandos",
"The library %s is not available." : "La biblioteca %s no está disponible",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Se requiere la biblioteca %1$s con una versión mayor que %2$s. Está disponible la versión %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Se requiera la biblioteca %1$s con una versión menor que %2$s. Está disponible la versión %3$s.",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
+ "The following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se necesita la versión %s o superior del servidor.",
"Server version %s or lower is required." : "Se necesita la versión %s o inferior del servidor. ",
"Logged in user must be an admin or sub admin" : "El usuario activo debe ser un administrador o subadministrador",
"Logged in user must be an admin" : "El usuario registrado debe ser un administrador",
- "Wiping of device %s has started" : "La limpieza del dispositivo %s ha empezado",
- "Wiping of device »%s« has started" : "La limpieza del dispositivo »%s« ha empezado",
- "»%s« started remote wipe" : "»%s« ha empezado la limpieza a distancia",
- "Device or application »%s« has started the remote wipe process. You will receive another email once the process has finished" : "El dispositivo o la aplicación »%s« ha empezado el proceso de limpieza a distancia. Vas a recibir otro mensaje por correo una vez que el proceso haya concluido.",
- "Wiping of device %s has finished" : "La limpieza del dispositivo %s ha concluido",
- "Wiping of device »%s« has finished" : "La limpieza del dispositivo »%s« ha concluido",
- "»%s« finished remote wipe" : "»%s« ha acabado la limpieza a distancia",
- "Device or application »%s« has finished the remote wipe process." : "El dispositivo o la aplicación »%s« ha concluido el proceso de limpieza a distancia.",
- "Remote wipe started" : "Barrido remoto comenzado.",
- "A remote wipe was started on device %s" : "Se ha iniciado un barrido remoto en el dispositivo %s.",
- "Remote wipe finished" : "Barrido remoto finalizado",
- "The remote wipe on %s has finished" : "El barrido remoto en %s ha finalizado",
+ "Wiping of device %s has started" : "El borrado del dispositivo %s ha empezado",
+ "Wiping of device »%s« has started" : "El borrado del dispositivo »%s« ha empezado",
+ "»%s« started remote wipe" : "»%s« ha empezado el borrado a distancia",
+ "Device or application »%s« has started the remote wipe process. You will receive another email once the process has finished" : "El dispositivo o la aplicación »%s« ha empezado el proceso de borrado a distancia. Vas a recibir otro mensaje por correo una vez que el proceso haya concluido.",
+ "Wiping of device %s has finished" : "El borrado del dispositivo %s ha concluido",
+ "Wiping of device »%s« has finished" : "El borrado del dispositivo »%s« ha concluido",
+ "»%s« finished remote wipe" : "»%s« ha acabado el borrado a distancia",
+ "Device or application »%s« has finished the remote wipe process." : "El dispositivo o la aplicación »%s« ha concluido el proceso de borrado a distancia.",
+ "Remote wipe started" : "Borrado remoto comenzado.",
+ "A remote wipe was started on device %s" : "Se ha iniciado un borrado remoto en el dispositivo %s.",
+ "Remote wipe finished" : "Borrado remoto finalizado",
+ "The remote wipe on %s has finished" : "El borrado remoto en %s ha finalizado",
"Authentication" : "Autentificación",
"Unknown filetype" : "Tipo de archivo desconocido",
- "Invalid image" : "Imagen inválida",
+ "Invalid image" : "Imagen no válida",
"Avatar image is not square" : "La imagen de avatar no es cuadrada",
"today" : "hoy",
"tomorrow" : "mañana",
@@ -54,15 +54,15 @@
"next month" : "mes siguiente",
"last month" : "mes pasado",
"_in %n month_::_in %n months_" : ["dentro de %n mes","dentro de %n meses"],
- "_%n month ago_::_%n months ago_" : ["Hace %n mes","Hace %n meses"],
+ "_%n month ago_::_%n months ago_" : ["Hace %n mes","hace %n meses"],
"next year" : "año que viene",
"last year" : "año pasado",
"_in %n year_::_in %n years_" : ["dentro de %n año","dentro de %n años"],
"_%n year ago_::_%n years ago_" : ["Hace %n año","hace %n años"],
"_in %n hour_::_in %n hours_" : ["dentro de %n hora","dentro de %n horas"],
- "_%n hour ago_::_%n hours ago_" : ["Hace %n hora","Hace %n horas"],
+ "_%n hour ago_::_%n hours ago_" : ["Hace %n hora","hace %n horas"],
"_in %n minute_::_in %n minutes_" : ["dentro de %n minuto","dentro de %n minutos"],
- "_%n minute ago_::_%n minutes ago_" : ["Hace %n minuto","Hace %n minutos"],
+ "_%n minute ago_::_%n minutes ago_" : ["Hace %n minuto","hace %n minutos"],
"in a few seconds" : "en unos segundos",
"seconds ago" : "hace segundos",
"Empty file" : "Archivo vacío",
@@ -94,12 +94,12 @@
"PostgreSQL username and/or password not valid" : "Usuario y/o contraseña de PostgreSQL no válidos",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X no está soportado y %s no funcionará bien en esta plataforma. ¡Úsala bajo tu propio riesgo! ",
"For the best results, please consider using a GNU/Linux server instead." : "Para obtener los mejores resultados, considera utilizar un servidor GNU/Linux.",
- "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Parece que esta instancia %s está funcionando en un entorno PHP de 32-bits y el open_basedir se ha configurado en php.ini. Esto acarreará problemas con arhivos de tamaño superior a 4GB y resulta totalmente desaconsejado.",
+ "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Parece que esta instancia %s está funcionando en un entorno PHP de 32-bits y el open_basedir se ha configurado en php.ini. Esto acarreará problemas con archivos de tamaño superior a 4GB y resulta totalmente desaconsejado.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Por favor, quite el ajuste de open_basedir —dentro de su php.ini— o pásese a PHP de 64 bits.",
"Set an admin username." : "Configurar un nombre de usuario del administrador",
"Set an admin password." : "Configurar la contraseña del administrador.",
"Can't create or write into the data directory %s" : "No es posible crear o escribir en el directorio de datos %s",
- "Invalid Federated Cloud ID" : "ID de Nube federada inválida",
+ "Invalid Federated Cloud ID" : "ID de Nube federada no válida",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "El motor compartido %s debe implementar la interfaz OCP\\Share_Backend",
"Sharing backend %s not found" : "El motor compartido %s no se ha encontrado",
"Sharing backend for %s not found" : "Motor compartido para %s no encontrado",
@@ -183,13 +183,14 @@
"Token expired. Please reload page." : "Token expirado. Por favor, recarge la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No están instalados los drivers de BBDD (sqlite, mysql, o postgresql)",
"Cannot write into \"config\" directory" : "No se puede escribir el el directorio de configuración",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Se podría solucionar esto dándole al servidor permisos de escritura del directorio de configuración. Ver %s",
"Cannot write into \"apps\" directory" : "No se puede escribir en el directorio de \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Habitualmente, esto puede arreglarse dando al servidor web acceso de escritura al directorio de apps o desactivando la tienda de apps en el archivo de configuración. Véase %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Se podría solucionar esto dando al servidor web acceso de escritura al directorio de apps o desactivando la tienda de apps en el archivo de configuración.",
"Cannot create \"data\" directory" : "No se puede crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Habitualmente, esto puede arreglarse dando al servidor web acceso de escritura al directorio raíz. Véase %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Habitualmente, los permisos pueden arreglarse dando al servidor web acceso de escritura al directorio raíz. Véase %s",
"Setting locale to %s failed" : "Ha fallado la activación de la localización %s ",
- "Please install one of these locales on your system and restart your webserver." : "Instale uno de estas localización en su sistema y reinicie su servidor web.",
+ "Please install one of these locales on your system and restart your webserver." : "Instale uno de estos idiomas en su sistema y reinicie su servidor web.",
"Please ask your server administrator to install the module." : "Consulte al administrador de su servidor para instalar el módulo.",
"PHP module %s not installed." : "El módulo PHP %s no está instalado.",
"PHP setting \"%s\" is not set to \"%s\"." : "La opción PHP \"%s\" no es \"%s\".",
@@ -211,7 +212,7 @@
"Your data directory is invalid" : "Tu directorio de datos es inválido",
"Ensure there is a file called \".ocdata\" in the root of the data directory." : "Asegúrate de que existe un archivo llamado \".ocdata\" en la raíz del directorio de datos.",
"Action \"%s\" not supported or implemented." : "La acción \"%s\" no está soportada o implementada.",
- "Authentication failed, wrong token or provider ID given" : "La autenticación ha fallado. Se ha dado un token o una ID de proveedor erróneos.",
+ "Authentication failed, wrong token or provider ID given" : "La autentificación ha fallado. Se ha dado un token o una ID de proveedor erróneos.",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Faltan parámetros para completar la petición. Parámetros que faltan: \"%s\"",
"ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "La ID «%1$s» ya está siendo usada por el proveedor de federación en la nube «%2$s»",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "El proveedor de nube federada con ID \"%s\" no existe.",
@@ -221,10 +222,8 @@
"Storage connection error. %s" : "Error de conexión de almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamiento no esta disponible temporalmente",
"Storage connection timeout. %s" : "Tiempo de conexión de almacenamiento agotado. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Eliminar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Overview" : "Vista general",
"Basic settings" : "Ajustes básicos",
"Sharing" : "Compartir",
@@ -232,30 +231,6 @@
"Groupware" : "Groupware",
"Personal info" : "Información personal",
"Mobile & desktop" : "Móvil y escritorio",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verificando",
- "Verifying …" : "Verificando...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "No se pudo compartir %s porque el repositorio no permite recursos compartidos del tipo %i",
- "Sharing %s failed, because the file does not exist" : "No se pudo compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Fallo al compartir %s, porque no puedes compartir contigo mismo",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Fallo al compartir %1$s porque el usuario %2$s no existe.",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Fallo al compartir %1$s porque el usuario %2$s no es miembro de ninguno de los grupos de los que %3$s es miembro",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Fallo al compartir %1$s porque este objeto ya está compartido con %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Fallo al compartir %1$s porque este objeto ya está compartido con el usuario %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Fallo al compartir %1$s porque el grupo %2$s no existe",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Fallo al compartir %1$s porque %2$s no es miembro del grupo %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Es necesario definir una contraseña para crear un enlace publico. Solo los enlaces protegidos están permitidos",
- "Sharing %s failed, because sharing with links is not allowed" : "Fallo al compartir %s, ya que no se permite compartir con enlaces",
- "Not allowed to create a federated share with the same user" : "No se permite crear un recurso compartido federado con el mismo usuario",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Fallo al compartir %1$s, no se ha podido encontrar %2$s, quizás no se puede alcanzar ahora el servidor.",
- "Share type %1$s is not valid for %2$s" : "El tipo de recurso compartido %1$s no es válido para %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No se puede fijar fecha de caducidad. Los archivos compartidos no pueden caducar más tarde de %s de ser compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No se puede fijar la fecha de caducidad. La fecha de caducidad está en el pasado.",
- "Sharing failed, because the user %s is the original sharer" : "Se ha fallado al compartir, ya que el usuario %s es el compartidor original",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Fallo al compartir %1$s porque los permisos exceden los permisos concedidos a %2$s",
- "Sharing %s failed, because resharing is not allowed" : "Fallo al compartir %s, ya que no está permitido volverlo a compartir",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Fallo al compartir %1$s porque el motor de para compartir %2$s no ha podido encontrar su origen",
- "Sharing %s failed, because the file could not be found in the file cache" : "Fallo al compartir %s, ya que el archivo no se ha encontrado en el caché de archivo"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Habitualmente, esto puede arreglarse dando al servidor web permisos de escritura al directorio de apps o desactivando la tienda de apps en el archivo de configuración. Véase %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_419.js b/lib/l10n/es_419.js
index 0573ea8446a..3b669306d58 100644
--- a/lib/l10n/es_419.js
+++ b/lib/l10n/es_419.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -18,10 +17,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Authentication" : "Autenticación",
@@ -155,8 +152,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -188,29 +185,13 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Overview" : "Resumen",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_419.json b/lib/l10n/es_419.json
index 3e3f5b28107..52dc7fee723 100644
--- a/lib/l10n/es_419.json
+++ b/lib/l10n/es_419.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -16,10 +15,8 @@
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Authentication" : "Autenticación",
@@ -153,8 +150,8 @@
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -186,29 +183,13 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Overview" : "Resumen",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_AR.js b/lib/l10n/es_AR.js
index 803feec08f8..53e58a25975 100644
--- a/lib/l10n/es_AR.js
+++ b/lib/l10n/es_AR.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se soluciona dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Favor de ver %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede descomponer su instalacón y no está soportado. Favor de leer la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -17,10 +16,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Se requiere de PHPH %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Authentication" : "Autenticación",
@@ -139,8 +136,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "La ficha ha expirado. Favor de recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuenta con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Favor de ver %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Favor de ver %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Favor de ver %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Favor de ver %s.",
@@ -171,28 +168,12 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "Se agotó el tiempo de conexión del almacenamiento. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Eliminar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información Personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verificando",
- "Verifying …" : "Verificando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presento una falla al compartir %s, porque no puede compartir con usted mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Usted necesita proporcionar una contraseña para crear un link público, sólo los links protegidos están permitidos. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con links",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido federado con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presento una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Favor de ver %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_AR.json b/lib/l10n/es_AR.json
index 171802c17db..48da6c77d0c 100644
--- a/lib/l10n/es_AR.json
+++ b/lib/l10n/es_AR.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se soluciona dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Favor de ver %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede descomponer su instalacón y no está soportado. Favor de leer la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -15,10 +14,8 @@
"PHP %s or higher is required." : "Se requiere de PHPH %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Authentication" : "Autenticación",
@@ -137,8 +134,8 @@
"Token expired. Please reload page." : "La ficha ha expirado. Favor de recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuenta con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Favor de ver %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Favor de ver %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Favor de ver %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Favor de ver %s.",
@@ -169,28 +166,12 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "Se agotó el tiempo de conexión del almacenamiento. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Eliminar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información Personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verificando",
- "Verifying …" : "Verificando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presento una falla al compartir %s, porque no puede compartir con usted mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Usted necesita proporcionar una contraseña para crear un link público, sólo los links protegidos están permitidos. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con links",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido federado con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presento una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Favor de ver %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_CL.js b/lib/l10n/es_CL.js
index 99126fe5257..944edb66a2a 100644
--- a/lib/l10n/es_CL.js
+++ b/lib/l10n/es_CL.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -18,10 +17,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Logged in user must be an admin" : "El usuario firmado debe ser un administrador",
@@ -156,8 +153,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -189,29 +186,13 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_CL.json b/lib/l10n/es_CL.json
index 28e90ee97a8..1daee84de6b 100644
--- a/lib/l10n/es_CL.json
+++ b/lib/l10n/es_CL.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -16,10 +15,8 @@
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Logged in user must be an admin" : "El usuario firmado debe ser un administrador",
@@ -154,8 +151,8 @@
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -187,29 +184,13 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_CO.js b/lib/l10n/es_CO.js
index 3593d0be3a2..5e81c7d27d0 100644
--- a/lib/l10n/es_CO.js
+++ b/lib/l10n/es_CO.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -18,10 +17,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Logged in user must be an admin" : "El usuario firmado debe ser un administrador",
@@ -156,8 +153,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -189,29 +186,13 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_CO.json b/lib/l10n/es_CO.json
index 2a3baac4845..d0eab710e3b 100644
--- a/lib/l10n/es_CO.json
+++ b/lib/l10n/es_CO.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -16,10 +15,8 @@
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Logged in user must be an admin" : "El usuario firmado debe ser un administrador",
@@ -154,8 +151,8 @@
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -187,29 +184,13 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_CR.js b/lib/l10n/es_CR.js
index 7decc4026e5..7b54218a03d 100644
--- a/lib/l10n/es_CR.js
+++ b/lib/l10n/es_CR.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -18,10 +17,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Logged in user must be an admin" : "El usuario firmado debe ser un administrador",
@@ -156,8 +153,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -189,29 +186,13 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_CR.json b/lib/l10n/es_CR.json
index e018a478d34..5be891517fe 100644
--- a/lib/l10n/es_CR.json
+++ b/lib/l10n/es_CR.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -16,10 +15,8 @@
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Logged in user must be an admin" : "El usuario firmado debe ser un administrador",
@@ -154,8 +151,8 @@
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -187,29 +184,13 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_DO.js b/lib/l10n/es_DO.js
index 69ed62b2d09..598b4c0e0f8 100644
--- a/lib/l10n/es_DO.js
+++ b/lib/l10n/es_DO.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -18,10 +17,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Logged in user must be an admin" : "El usuario firmado debe ser un administrador",
@@ -156,8 +153,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -189,29 +186,13 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_DO.json b/lib/l10n/es_DO.json
index 879849f6dfd..02c1133a624 100644
--- a/lib/l10n/es_DO.json
+++ b/lib/l10n/es_DO.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -16,10 +15,8 @@
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Logged in user must be an admin" : "El usuario firmado debe ser un administrador",
@@ -154,8 +151,8 @@
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -187,29 +184,13 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_EC.js b/lib/l10n/es_EC.js
index 4214d187baf..14032f23fbe 100644
--- a/lib/l10n/es_EC.js
+++ b/lib/l10n/es_EC.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -18,10 +17,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Logged in user must be an admin" : "El usuario firmado debe ser un administrador",
@@ -156,8 +153,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -189,29 +186,13 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_EC.json b/lib/l10n/es_EC.json
index e264243d5d8..4abc2997dfb 100644
--- a/lib/l10n/es_EC.json
+++ b/lib/l10n/es_EC.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -16,10 +15,8 @@
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Logged in user must be an admin" : "El usuario firmado debe ser un administrador",
@@ -154,8 +151,8 @@
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -187,29 +184,13 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_GT.js b/lib/l10n/es_GT.js
index 089cbe889b3..ab8431502f8 100644
--- a/lib/l10n/es_GT.js
+++ b/lib/l10n/es_GT.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -18,10 +17,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Logged in user must be an admin" : "El usuario firmado debe ser un administrador",
@@ -156,8 +153,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -189,29 +186,13 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_GT.json b/lib/l10n/es_GT.json
index ca38fe59f0c..433ba1a9a43 100644
--- a/lib/l10n/es_GT.json
+++ b/lib/l10n/es_GT.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -16,10 +15,8 @@
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Logged in user must be an admin" : "El usuario firmado debe ser un administrador",
@@ -154,8 +151,8 @@
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -187,29 +184,13 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_HN.js b/lib/l10n/es_HN.js
index bf897766a41..8d6c673d777 100644
--- a/lib/l10n/es_HN.js
+++ b/lib/l10n/es_HN.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -18,10 +17,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Authentication" : "Autenticación",
@@ -155,8 +152,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -188,28 +185,12 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_HN.json b/lib/l10n/es_HN.json
index 72eb8bfbd01..b18af7e2a15 100644
--- a/lib/l10n/es_HN.json
+++ b/lib/l10n/es_HN.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -16,10 +15,8 @@
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Authentication" : "Autenticación",
@@ -153,8 +150,8 @@
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -186,28 +183,12 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_MX.js b/lib/l10n/es_MX.js
index f755f854ff1..7d41fc5c087 100644
--- a/lib/l10n/es_MX.js
+++ b/lib/l10n/es_MX.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -18,10 +17,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Logged in user must be an admin" : "El usuario firmado debe ser un administrador",
@@ -156,8 +153,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -189,30 +186,14 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
"Mobile & desktop" : "Móvil & escritorio",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_MX.json b/lib/l10n/es_MX.json
index b55c0024c2a..c9a603279b1 100644
--- a/lib/l10n/es_MX.json
+++ b/lib/l10n/es_MX.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -16,10 +15,8 @@
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Logged in user must be an admin" : "El usuario firmado debe ser un administrador",
@@ -154,8 +151,8 @@
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -187,30 +184,14 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
"Mobile & desktop" : "Móvil & escritorio",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_NI.js b/lib/l10n/es_NI.js
index 5d923f105bb..792b8e10e5c 100644
--- a/lib/l10n/es_NI.js
+++ b/lib/l10n/es_NI.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -18,10 +17,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Authentication" : "Autenticación",
@@ -155,8 +152,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -188,28 +185,12 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_NI.json b/lib/l10n/es_NI.json
index a0d05f9419c..bea0528370c 100644
--- a/lib/l10n/es_NI.json
+++ b/lib/l10n/es_NI.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -16,10 +15,8 @@
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Authentication" : "Autenticación",
@@ -153,8 +150,8 @@
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -186,28 +183,12 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_PA.js b/lib/l10n/es_PA.js
index 802cc781d3e..08d123b1c3f 100644
--- a/lib/l10n/es_PA.js
+++ b/lib/l10n/es_PA.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -18,10 +17,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Authentication" : "Autenticación",
@@ -155,8 +152,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -188,28 +185,12 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_PA.json b/lib/l10n/es_PA.json
index f22c04de329..f2879f3d759 100644
--- a/lib/l10n/es_PA.json
+++ b/lib/l10n/es_PA.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -16,10 +15,8 @@
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Authentication" : "Autenticación",
@@ -153,8 +150,8 @@
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -186,28 +183,12 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_PE.js b/lib/l10n/es_PE.js
index 45a406ba21e..c2b4f78250a 100644
--- a/lib/l10n/es_PE.js
+++ b/lib/l10n/es_PE.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -18,10 +17,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Authentication" : "Autenticación",
@@ -155,8 +152,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -188,28 +185,12 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_PE.json b/lib/l10n/es_PE.json
index 9e8fee7a7d3..f5bacabeaba 100644
--- a/lib/l10n/es_PE.json
+++ b/lib/l10n/es_PE.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -16,10 +15,8 @@
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Authentication" : "Autenticación",
@@ -153,8 +150,8 @@
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -186,28 +183,12 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_PR.js b/lib/l10n/es_PR.js
index d2eb269f096..ed3ece63d3b 100644
--- a/lib/l10n/es_PR.js
+++ b/lib/l10n/es_PR.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -18,10 +17,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Authentication" : "Autenticación",
@@ -155,8 +152,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -188,28 +185,12 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_PR.json b/lib/l10n/es_PR.json
index f64a8da9130..39dabed7fad 100644
--- a/lib/l10n/es_PR.json
+++ b/lib/l10n/es_PR.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -16,10 +15,8 @@
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Authentication" : "Autenticación",
@@ -153,8 +150,8 @@
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -186,28 +183,12 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_PY.js b/lib/l10n/es_PY.js
index b52c9665263..dd7977342f8 100644
--- a/lib/l10n/es_PY.js
+++ b/lib/l10n/es_PY.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -18,10 +17,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Authentication" : "Autenticación",
@@ -155,8 +152,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -188,28 +185,12 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_PY.json b/lib/l10n/es_PY.json
index 7d541b55d4f..91acf44379f 100644
--- a/lib/l10n/es_PY.json
+++ b/lib/l10n/es_PY.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -16,10 +15,8 @@
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Authentication" : "Autenticación",
@@ -153,8 +150,8 @@
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -186,28 +183,12 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_SV.js b/lib/l10n/es_SV.js
index c4d551ac011..bc9305c04fc 100644
--- a/lib/l10n/es_SV.js
+++ b/lib/l10n/es_SV.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -18,10 +17,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Logged in user must be an admin" : "El usuario firmado debe ser un administrador",
@@ -156,8 +153,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -189,29 +186,13 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_SV.json b/lib/l10n/es_SV.json
index 87ff50d487b..a6cd804575b 100644
--- a/lib/l10n/es_SV.json
+++ b/lib/l10n/es_SV.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -16,10 +15,8 @@
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Logged in user must be an admin" : "El usuario firmado debe ser un administrador",
@@ -154,8 +151,8 @@
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -187,29 +184,13 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es_UY.js b/lib/l10n/es_UY.js
index 09d2b0d6040..36515d11c13 100644
--- a/lib/l10n/es_UY.js
+++ b/lib/l10n/es_UY.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -18,10 +17,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Authentication" : "Autenticación",
@@ -155,8 +152,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -188,28 +185,12 @@ OC.L10N.register(
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_UY.json b/lib/l10n/es_UY.json
index 354aeebfa1e..8990c7f54b6 100644
--- a/lib/l10n/es_UY.json
+++ b/lib/l10n/es_UY.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Sample configuration detected" : "Se ha detectado la configuración de muestra",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
"%1$s and %2$s" : "%1$s y %2$s",
@@ -16,10 +15,8 @@
"PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
"PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
"%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
- "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
"The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
"The library %s is not available." : "La biblioteca %s no está disponible. ",
- "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
"Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
"Authentication" : "Autenticación",
@@ -153,8 +150,8 @@
"Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
"Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
"Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
"Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
@@ -186,28 +183,12 @@
"Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
"Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
"Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Borrar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
"Security" : "Seguridad",
"Personal info" : "Información personal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verficando",
- "Verifying …" : "Verficando ...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
- "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
- "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
- "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
- "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
- "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
- "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
- "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/et_EE.js b/lib/l10n/et_EE.js
index a2610cc7d39..2ab6ad456ec 100644
--- a/lib/l10n/et_EE.js
+++ b/lib/l10n/et_EE.js
@@ -12,10 +12,8 @@ OC.L10N.register(
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s ja %5$s",
"PHP %s or higher is required." : "PHP %s või uuem on nõutav.",
"PHP with a version lower than %s is required." : "Nõutud on PHP madalama versiooniga kui %s.",
- "Following databases are supported: %s" : "Toetatud on järgnevad andmebaasid: %s",
"The command line tool %s could not be found" : "Käsurea töövahendit %s ei leitud",
"The library %s is not available." : "Teek %s pole saadaval.",
- "Following platforms are supported: %s" : "Toetatud on järgnevad platformid: %s",
"Server version %s or higher is required." : "Serveri versioon %s või kõrgem on nõutav.",
"Server version %s or lower is required." : "Serveri versioon %s või madalam on nõutav.",
"Authentication" : "Autentimine",
@@ -149,27 +147,11 @@ OC.L10N.register(
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Palun muuda kataloogi õigused 0770-ks, et kataloogi sisu poleks teistele kasutajatele nähtav",
"Could not obtain lock type %d on \"%s\"." : "Ei suutnud hankida %d tüüpi lukustust \"%s\".",
"Storage is temporarily not available" : "Salvestusruum pole ajutiselt kättesaadav",
- "Create" : "Loo",
- "Delete" : "Kustuta",
- "Share" : "Jaga",
+ "Following databases are supported: %s" : "Toetatud on järgnevad andmebaasid: %s",
+ "Following platforms are supported: %s" : "Toetatud on järgnevad platformid: %s",
"Basic settings" : "Põhiseaded",
"Sharing" : "Jagamine",
"Security" : "Turvalisus",
- "Personal info" : "Isiklik info",
- "Unlimited" : "Piiramatult",
- "Verifying" : "Kontrollin",
- "Verifying …" : "Kontrollin ...",
- "Verify" : "Kontrolli",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "%s jagamine ebaõnnestus sest server ei luba %i tüüpi jagamisi",
- "Sharing %s failed, because the file does not exist" : "%s jagamine ebaõnnestus, kuna faili pole olemas",
- "Sharing %s failed, because you can not share with yourself" : "%s jagamine ebaõnnestus, kuna sa ei saa jagada iseendaga",
- "You need to provide a password to create a public link, only protected links are allowed" : "Avaliku viite tekitamiseks pead sisestama parooli, ainult kaitstud viited on lubatud",
- "Sharing %s failed, because sharing with links is not allowed" : "%s jagamine ebaõnnestus, kuna linkidega jagamine pole lubatud",
- "Not allowed to create a federated share with the same user" : "Liitjagamise loomine sama kasutajaga ei ole lubatud.",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Aegumise kuupäeva ei saa määrata. Jagamised ei saa aeguda hiljem kui %s peale jagamist.",
- "Cannot set expiration date. Expiration date is in the past" : "Aegumiskuupäeva ei saa määrata. Aegumise kuupäev on minevikus",
- "Sharing failed, because the user %s is the original sharer" : "Jagamine ebaõnnestus kuna kasutaja %s on algne jagaja",
- "Sharing %s failed, because resharing is not allowed" : "%s jagamine ebaõnnestus, kuna edasijagamine pole lubatud",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s jagamine ebaõnnestus, kuna faili ei suudetud leida failide puhvrist"
+ "Personal info" : "Isiklik info"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/et_EE.json b/lib/l10n/et_EE.json
index d1e8a5ea239..d8b1f93e8cf 100644
--- a/lib/l10n/et_EE.json
+++ b/lib/l10n/et_EE.json
@@ -10,10 +10,8 @@
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s ja %5$s",
"PHP %s or higher is required." : "PHP %s või uuem on nõutav.",
"PHP with a version lower than %s is required." : "Nõutud on PHP madalama versiooniga kui %s.",
- "Following databases are supported: %s" : "Toetatud on järgnevad andmebaasid: %s",
"The command line tool %s could not be found" : "Käsurea töövahendit %s ei leitud",
"The library %s is not available." : "Teek %s pole saadaval.",
- "Following platforms are supported: %s" : "Toetatud on järgnevad platformid: %s",
"Server version %s or higher is required." : "Serveri versioon %s või kõrgem on nõutav.",
"Server version %s or lower is required." : "Serveri versioon %s või madalam on nõutav.",
"Authentication" : "Autentimine",
@@ -147,27 +145,11 @@
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Palun muuda kataloogi õigused 0770-ks, et kataloogi sisu poleks teistele kasutajatele nähtav",
"Could not obtain lock type %d on \"%s\"." : "Ei suutnud hankida %d tüüpi lukustust \"%s\".",
"Storage is temporarily not available" : "Salvestusruum pole ajutiselt kättesaadav",
- "Create" : "Loo",
- "Delete" : "Kustuta",
- "Share" : "Jaga",
+ "Following databases are supported: %s" : "Toetatud on järgnevad andmebaasid: %s",
+ "Following platforms are supported: %s" : "Toetatud on järgnevad platformid: %s",
"Basic settings" : "Põhiseaded",
"Sharing" : "Jagamine",
"Security" : "Turvalisus",
- "Personal info" : "Isiklik info",
- "Unlimited" : "Piiramatult",
- "Verifying" : "Kontrollin",
- "Verifying …" : "Kontrollin ...",
- "Verify" : "Kontrolli",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "%s jagamine ebaõnnestus sest server ei luba %i tüüpi jagamisi",
- "Sharing %s failed, because the file does not exist" : "%s jagamine ebaõnnestus, kuna faili pole olemas",
- "Sharing %s failed, because you can not share with yourself" : "%s jagamine ebaõnnestus, kuna sa ei saa jagada iseendaga",
- "You need to provide a password to create a public link, only protected links are allowed" : "Avaliku viite tekitamiseks pead sisestama parooli, ainult kaitstud viited on lubatud",
- "Sharing %s failed, because sharing with links is not allowed" : "%s jagamine ebaõnnestus, kuna linkidega jagamine pole lubatud",
- "Not allowed to create a federated share with the same user" : "Liitjagamise loomine sama kasutajaga ei ole lubatud.",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Aegumise kuupäeva ei saa määrata. Jagamised ei saa aeguda hiljem kui %s peale jagamist.",
- "Cannot set expiration date. Expiration date is in the past" : "Aegumiskuupäeva ei saa määrata. Aegumise kuupäev on minevikus",
- "Sharing failed, because the user %s is the original sharer" : "Jagamine ebaõnnestus kuna kasutaja %s on algne jagaja",
- "Sharing %s failed, because resharing is not allowed" : "%s jagamine ebaõnnestus, kuna edasijagamine pole lubatud",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s jagamine ebaõnnestus, kuna faili ei suudetud leida failide puhvrist"
+ "Personal info" : "Isiklik info"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/eu.js b/lib/l10n/eu.js
index 4a31db8673b..273a2b6ad77 100644
--- a/lib/l10n/eu.js
+++ b/lib/l10n/eu.js
@@ -10,14 +10,18 @@ OC.L10N.register(
"%1$s, %2$s and %3$s" : "%1$s, %2$s eta %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s eta %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s eta %5$s",
+ "Education Edition" : "Hezkuntza edizioa",
+ "Enterprise bundle" : "Enpresa multzoa",
+ "Groupware bundle" : "Talderanerako multzoa",
+ "Social sharing bundle" : "Partekatze sozial multzoa",
"PHP %s or higher is required." : "PHP %s edo berriagoa behar da.",
"PHP with a version lower than %s is required." : "PHPren bertsioa %s baino txikiagoa izan behar da.",
- "Following databases are supported: %s" : "Hurrengo datubaseak onartzen dira: %s",
+ "%sbit or higher PHP required." : "%sbiteko edo PHP bertsio berriagoa behar da. ",
"The command line tool %s could not be found" : "Komando lerroko %s tresna ezin da aurkitu",
"The library %s is not available." : "%s liburutegia ez dago eskuragarri.",
- "Following platforms are supported: %s" : "Hurrengo plataformak onartzen dira: %s",
"Server version %s or higher is required." : "Zerbitzariaren %s bertsioa edo berriagoa behar da.",
"Server version %s or lower is required." : "Zerbitzariaren %s bertsioa edo zaharragoa behar da.",
+ "Logged in user must be an admin" : "Saioa hasitako erabiltzailea administratzailea izan behar da",
"Authentication" : "Autentifikazioa",
"Unknown filetype" : "Fitxategi mota ezezaguna",
"Invalid image" : "Baliogabeko irudia",
@@ -41,12 +45,16 @@ OC.L10N.register(
"_%n minute ago_::_%n minutes ago_" : ["orain dela minutu %n","orain dela %n minutu"],
"in a few seconds" : "segundo gutxitan",
"seconds ago" : "duela segundu batzuk",
+ "Empty file" : "Fitxategi hutsa",
"File name is a reserved word" : "Fitxategi izena hitz erreserbatua da",
- "File name contains at least one invalid character" : "Fitxategi izenak behintzat baliogabeko karaktere bat du",
+ "File name contains at least one invalid character" : "Fitxategi izenak karaktere baliogabe bat du gutxienez ",
"File name is too long" : "Fitxategi-izena luzeegia da",
"Dot files are not allowed" : "Dot fitxategiak ez dira onartzen",
"Empty filename is not allowed" : "Fitxategiaren izena izin da hutsa izan",
+ "App \"%s\" cannot be installed because appinfo file cannot be read." : "«%s» aplikazioa ezin da instalatu appinfo fitxategia ezin delako irakurri.",
+ "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "\"%s\" aplikazioa ezin da instalatu ez delako zerbitzariaren bertsio honekin bateragarria.",
"__language_name__" : "Euskara",
+ "This is an automatically sent email, please do not reply." : "Hau automatikoki bidalitako e-posta bat da, ez erantzun mesedez.",
"Help" : "Laguntza",
"Apps" : "Aplikazioak",
"Settings" : "Ezarpenak",
@@ -58,11 +66,14 @@ OC.L10N.register(
"%s enter the database username." : "%s sartu datu basearen erabiltzaile izena.",
"%s enter the database name." : "%s sartu datu basearen izena.",
"%s you may not use dots in the database name" : "%s ezin duzu punturik erabili datu basearen izenean.",
+ "MySQL username and/or password not valid" : "MySQL erabiltzaile-izen edota pasahitza baliogabea",
+ "You need to enter details of an existing account." : "Existitzen den kontu baten xehetasunak sartu behar dituzu.",
"Oracle connection could not be established" : "Ezin da Oracle konexioa sortu",
"Oracle username and/or password not valid" : "Oracle erabiltzaile edota pasahitza ez dira egokiak.",
"PostgreSQL username and/or password not valid" : "PostgreSQL erabiltzaile edota pasahitza ez dira egokiak.",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X-ek ez du sostengurik eta %s gaizki ibili daiteke plataforma honetan. Erabiltzekotan, zure ardurapean.",
"For the best results, please consider using a GNU/Linux server instead." : "Emaitza hobeak izateko, mesedez gogoan hartu GNU/Linux zerbitzari bat erabiltzea.",
+ "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Badirudi %s instantzia hau 32 biteko PHP ingurune bat exekutatzen ari dela eta open_basedir aldagaia php.ini fitxategian konfiguratu dela. Honek arazoak sortuko ditu 4 GB baino gehiagoko fitxategiekin eta ez da gomendatzen.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Mesedez kendu open_basedir ezarpena zure php.ini-tik edo aldatu 64-biteko PHPra.",
"Set an admin username." : "Ezarri administraziorako erabiltzaile izena.",
"Set an admin password." : "Ezarri administraziorako pasahitza.",
@@ -72,9 +83,16 @@ OC.L10N.register(
"Sharing backend %s not found" : "Ez da %s elkarbanaketa motorra aurkitu",
"Sharing backend for %s not found" : "Ez da %srako elkarbanaketa motorrik aurkitu",
"Open »%s«" : "Ireki »%s«",
+ "%1$s via %2$s" : "%2$s bidez, %1$s",
"You are not allowed to share %s" : "Ez zadue %s elkarbanatzeko baimendua",
+ "Can’t increase permissions of %s" : "Ezin dira %s(r)en baimenak handitu",
+ "Files can’t be shared with delete permissions" : "Fitxategiak ezin dira ezabatze baimenarekin partekatu",
"Expiration date is in the past" : "Iraungitze-data iraganean dago",
+ "Can’t set expiration date more than %s days in the future" : "Ezin da iraungitze-data etorkizunean %s egun baino gehiagora jarri",
+ "%1$s shared »%2$s« with you" : "%1$serabiltzaileak »%2$s« partekatu du zurekin",
+ "%1$s shared »%2$s« with you." : "%1$serabiltzaileak »%2$s« partekatu du zurekin",
"Click the button below to open it." : "Egin klik beheko botoian hura irekitzeko",
+ "The requested share does not exist anymore" : "Eskatutako partekatzea ez da existitzen dagoeneko",
"Could not find category \"%s\"" : "Ezin da \"%s\" kategoria aurkitu",
"Sunday" : "Igandea",
"Monday" : "Astelehena",
@@ -121,8 +139,11 @@ OC.L10N.register(
"Oct." : "Urr.",
"Nov." : "Aza.",
"Dec." : "Abe.",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Erabiltzaile-izenean karaktere hauek soilik erabili daitezke: \"a-z\", \"A-Z\", \"0-9\", eta \"_.@-'\"",
"A valid username must be provided" : "Baliozko erabiltzaile izena eman behar da",
"Username contains whitespace at the beginning or at the end" : "Erabiltzaile-izenak zuriuneren bat du hasieran edo amaieran",
+ "Username must not consist of dots only" : "Erabiltzaile-izena ezin da puntuz osatuta soilik egon",
+ "Username is invalid because files already exist for this user" : "Erabiltzaile-izena ez da baliozkoa fitxategiak erabiltzaile honentzat existitzen direlako dagoeneko",
"A valid password must be provided" : "Baliozko pasahitza eman behar da",
"The username is already being used" : "Erabiltzaile izena dagoeneko erabiltzen ari da",
"Could not create user" : "Ezin izan da erabiltzailea sortu",
@@ -137,12 +158,15 @@ OC.L10N.register(
"No database drivers (sqlite, mysql, or postgresql) installed." : "Ez dago datubaseen (sqlite, mysql edo postgresql) driverrik instalatuta.",
"Cannot write into \"config\" directory" : "Ezin da idatzi \"config\" karpetan",
"Cannot write into \"apps\" directory" : "Ezin da idatzi \"apps\" karpetan",
+ "Cannot create \"data\" directory" : "Ezin da \"data\" karpeta sortu",
"Setting locale to %s failed" : "Lokala %sra ezartzeak huts egin du",
"Please install one of these locales on your system and restart your webserver." : "Instalatu hauetako lokal bat zure sisteman eta berrabiarazi zure web zerbitzaria.",
"Please ask your server administrator to install the module." : "Mesedez eskatu zure zerbitzariaren kudeatzaileari modulua instala dezan.",
"PHP module %s not installed." : "PHPren %s modulua ez dago instalaturik.",
"PHP setting \"%s\" is not set to \"%s\"." : "\"%s\" PHP ezarpena ez dago \"%s\" gisa jarrita.",
"Adjusting this setting in php.ini will make Nextcloud run again" : "Ezarpen hau php.ini fitxategian doitzen bada, Nextcloud berriro exekutatuko da",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload \"%s\"-(e)ra ezarrita dago \"0\" itxarondako balioaren ordez",
+ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Arazo hau konpontzeko ezarri <code>mbstring.func_overload</code> <code>0</code>-ra zure php.ini fitxategian",
"libxml2 2.7.0 is at least required. Currently %s is installed." : "libxml2 2.7.0 bertsioa edo berriagoa behar da. Orain %s dago instalatuta.",
"To fix this issue update your libxml2 version and restart your web server." : "Arazo hori konpontzeko, eguneratu zure libxml2 bertsioa eta berrabiarazi web zerbitzaria.",
"PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP lerro bakarreko blokeak mozteko konfiguratua dagoela dirudi. Oinarrizko app batzuk eskuraezin bihurtuko dira.",
@@ -152,31 +176,24 @@ OC.L10N.register(
"PostgreSQL >= 9 required" : "PostgreSQL >= 9 behar da",
"Please upgrade your database version" : "Mesedez eguneratu zure datu basearen bertsioa",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Mesedez aldatu baimenak 0770ra beste erabiltzaileek karpetan sartu ezin izateko.",
+ "Your data directory is readable by other users" : "Zure datuen karpeta beste erabiltzaileek irakur dezakete",
+ "Your data directory must be an absolute path" : "Zure datuen karpeta bide-izen absolutua izan behar da",
+ "Check the value of \"datadirectory\" in your configuration" : "Egiaztatu «datadirectory» aldagaiaren balioa zure konfigurazioan",
+ "Your data directory is invalid" : "Zure datuen karpeta baliogabea da",
"Could not obtain lock type %d on \"%s\"." : "Ezin da lortu sarraia mota %d \"%s\"-an.",
+ "Storage unauthorized. %s" : "Biltegiratzea ez dago baimenduta. %s",
+ "Storage incomplete configuration. %s" : "Biltegiratzea ez da osorik konfiguratu. %s",
"Storage connection error. %s" : "Biltegiratze-konexioaren errorea. %s",
"Storage is temporarily not available" : "Biltegia ez dago erabilgarri aldi baterako",
- "Create" : "Sortu",
- "Change" : "Aldatu",
- "Delete" : "Ezabatu",
- "Share" : "Partekatu",
+ "Storage connection timeout. %s" : "Biltegiratze-konexioa denboraz kanpo geratu da. %s",
+ "Following databases are supported: %s" : "Hurrengo datubaseak onartzen dira: %s",
+ "Following platforms are supported: %s" : "Hurrengo plataformak onartzen dira: %s",
+ "Overview" : "Ikuspegi orokorra",
"Basic settings" : "Oinarrizko ezarpenak",
"Sharing" : "Partekatze",
"Security" : "Segurtasuna",
+ "Groupware" : "Taldelanerako tresnak",
"Personal info" : "Informazio pertsonala",
- "Mobile & desktop" : "Mugikorra eta mahaigaina",
- "Unlimited" : "Mugagabea",
- "Verifying" : "Egiaztatzen",
- "Verifying …" : "Egiaztatzen...",
- "Verify" : "Egiaztatu",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "%s partekatzeak huts egin du, motorrak %i motako partekatzeak baimentzen ez dituelako",
- "Sharing %s failed, because the file does not exist" : "%s elkarbanatzeak huts egin du, fitxategia ez delako existitzen",
- "Sharing %s failed, because you can not share with yourself" : "Ezin izan da %s partekatu, zure buruarekin ezin baituzu partekatu.",
- "You need to provide a password to create a public link, only protected links are allowed" : "Lotura publiko bat sortzeko pasahitza idatzi behar duzu, bakarrik babestutako loturak baimenduta daude",
- "Sharing %s failed, because sharing with links is not allowed" : "%s elkarbanatzeak huts egin du, lotura bidezko elkarbanatzea baimendua ez dagoelako",
- "Not allowed to create a federated share with the same user" : "Ezin da erabiltzaile berdinarekin federatutako partekatzea sortu.",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ezin izan da iraungitze-data ezarri. Partekatzeak ezin dira partekatu eta %s baino beranduago iraungi.",
- "Cannot set expiration date. Expiration date is in the past" : "Ezin izan da iraungitze data ezarri. Iraungitze data iraganean dago.",
- "Sharing %s failed, because resharing is not allowed" : "%s elkarbanatzeak huts egin du, ber-elkarbanatzea baimenduta ez dagoelako",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s elkarbanatzeak huts egin du, fitxategia katxean aurkitu ez delako"
+ "Mobile & desktop" : "Mugikorra eta mahaigaina"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/eu.json b/lib/l10n/eu.json
index b50a8b11140..513687431a3 100644
--- a/lib/l10n/eu.json
+++ b/lib/l10n/eu.json
@@ -8,14 +8,18 @@
"%1$s, %2$s and %3$s" : "%1$s, %2$s eta %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s eta %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s eta %5$s",
+ "Education Edition" : "Hezkuntza edizioa",
+ "Enterprise bundle" : "Enpresa multzoa",
+ "Groupware bundle" : "Talderanerako multzoa",
+ "Social sharing bundle" : "Partekatze sozial multzoa",
"PHP %s or higher is required." : "PHP %s edo berriagoa behar da.",
"PHP with a version lower than %s is required." : "PHPren bertsioa %s baino txikiagoa izan behar da.",
- "Following databases are supported: %s" : "Hurrengo datubaseak onartzen dira: %s",
+ "%sbit or higher PHP required." : "%sbiteko edo PHP bertsio berriagoa behar da. ",
"The command line tool %s could not be found" : "Komando lerroko %s tresna ezin da aurkitu",
"The library %s is not available." : "%s liburutegia ez dago eskuragarri.",
- "Following platforms are supported: %s" : "Hurrengo plataformak onartzen dira: %s",
"Server version %s or higher is required." : "Zerbitzariaren %s bertsioa edo berriagoa behar da.",
"Server version %s or lower is required." : "Zerbitzariaren %s bertsioa edo zaharragoa behar da.",
+ "Logged in user must be an admin" : "Saioa hasitako erabiltzailea administratzailea izan behar da",
"Authentication" : "Autentifikazioa",
"Unknown filetype" : "Fitxategi mota ezezaguna",
"Invalid image" : "Baliogabeko irudia",
@@ -39,12 +43,16 @@
"_%n minute ago_::_%n minutes ago_" : ["orain dela minutu %n","orain dela %n minutu"],
"in a few seconds" : "segundo gutxitan",
"seconds ago" : "duela segundu batzuk",
+ "Empty file" : "Fitxategi hutsa",
"File name is a reserved word" : "Fitxategi izena hitz erreserbatua da",
- "File name contains at least one invalid character" : "Fitxategi izenak behintzat baliogabeko karaktere bat du",
+ "File name contains at least one invalid character" : "Fitxategi izenak karaktere baliogabe bat du gutxienez ",
"File name is too long" : "Fitxategi-izena luzeegia da",
"Dot files are not allowed" : "Dot fitxategiak ez dira onartzen",
"Empty filename is not allowed" : "Fitxategiaren izena izin da hutsa izan",
+ "App \"%s\" cannot be installed because appinfo file cannot be read." : "«%s» aplikazioa ezin da instalatu appinfo fitxategia ezin delako irakurri.",
+ "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "\"%s\" aplikazioa ezin da instalatu ez delako zerbitzariaren bertsio honekin bateragarria.",
"__language_name__" : "Euskara",
+ "This is an automatically sent email, please do not reply." : "Hau automatikoki bidalitako e-posta bat da, ez erantzun mesedez.",
"Help" : "Laguntza",
"Apps" : "Aplikazioak",
"Settings" : "Ezarpenak",
@@ -56,11 +64,14 @@
"%s enter the database username." : "%s sartu datu basearen erabiltzaile izena.",
"%s enter the database name." : "%s sartu datu basearen izena.",
"%s you may not use dots in the database name" : "%s ezin duzu punturik erabili datu basearen izenean.",
+ "MySQL username and/or password not valid" : "MySQL erabiltzaile-izen edota pasahitza baliogabea",
+ "You need to enter details of an existing account." : "Existitzen den kontu baten xehetasunak sartu behar dituzu.",
"Oracle connection could not be established" : "Ezin da Oracle konexioa sortu",
"Oracle username and/or password not valid" : "Oracle erabiltzaile edota pasahitza ez dira egokiak.",
"PostgreSQL username and/or password not valid" : "PostgreSQL erabiltzaile edota pasahitza ez dira egokiak.",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X-ek ez du sostengurik eta %s gaizki ibili daiteke plataforma honetan. Erabiltzekotan, zure ardurapean.",
"For the best results, please consider using a GNU/Linux server instead." : "Emaitza hobeak izateko, mesedez gogoan hartu GNU/Linux zerbitzari bat erabiltzea.",
+ "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Badirudi %s instantzia hau 32 biteko PHP ingurune bat exekutatzen ari dela eta open_basedir aldagaia php.ini fitxategian konfiguratu dela. Honek arazoak sortuko ditu 4 GB baino gehiagoko fitxategiekin eta ez da gomendatzen.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Mesedez kendu open_basedir ezarpena zure php.ini-tik edo aldatu 64-biteko PHPra.",
"Set an admin username." : "Ezarri administraziorako erabiltzaile izena.",
"Set an admin password." : "Ezarri administraziorako pasahitza.",
@@ -70,9 +81,16 @@
"Sharing backend %s not found" : "Ez da %s elkarbanaketa motorra aurkitu",
"Sharing backend for %s not found" : "Ez da %srako elkarbanaketa motorrik aurkitu",
"Open »%s«" : "Ireki »%s«",
+ "%1$s via %2$s" : "%2$s bidez, %1$s",
"You are not allowed to share %s" : "Ez zadue %s elkarbanatzeko baimendua",
+ "Can’t increase permissions of %s" : "Ezin dira %s(r)en baimenak handitu",
+ "Files can’t be shared with delete permissions" : "Fitxategiak ezin dira ezabatze baimenarekin partekatu",
"Expiration date is in the past" : "Iraungitze-data iraganean dago",
+ "Can’t set expiration date more than %s days in the future" : "Ezin da iraungitze-data etorkizunean %s egun baino gehiagora jarri",
+ "%1$s shared »%2$s« with you" : "%1$serabiltzaileak »%2$s« partekatu du zurekin",
+ "%1$s shared »%2$s« with you." : "%1$serabiltzaileak »%2$s« partekatu du zurekin",
"Click the button below to open it." : "Egin klik beheko botoian hura irekitzeko",
+ "The requested share does not exist anymore" : "Eskatutako partekatzea ez da existitzen dagoeneko",
"Could not find category \"%s\"" : "Ezin da \"%s\" kategoria aurkitu",
"Sunday" : "Igandea",
"Monday" : "Astelehena",
@@ -119,8 +137,11 @@
"Oct." : "Urr.",
"Nov." : "Aza.",
"Dec." : "Abe.",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Erabiltzaile-izenean karaktere hauek soilik erabili daitezke: \"a-z\", \"A-Z\", \"0-9\", eta \"_.@-'\"",
"A valid username must be provided" : "Baliozko erabiltzaile izena eman behar da",
"Username contains whitespace at the beginning or at the end" : "Erabiltzaile-izenak zuriuneren bat du hasieran edo amaieran",
+ "Username must not consist of dots only" : "Erabiltzaile-izena ezin da puntuz osatuta soilik egon",
+ "Username is invalid because files already exist for this user" : "Erabiltzaile-izena ez da baliozkoa fitxategiak erabiltzaile honentzat existitzen direlako dagoeneko",
"A valid password must be provided" : "Baliozko pasahitza eman behar da",
"The username is already being used" : "Erabiltzaile izena dagoeneko erabiltzen ari da",
"Could not create user" : "Ezin izan da erabiltzailea sortu",
@@ -135,12 +156,15 @@
"No database drivers (sqlite, mysql, or postgresql) installed." : "Ez dago datubaseen (sqlite, mysql edo postgresql) driverrik instalatuta.",
"Cannot write into \"config\" directory" : "Ezin da idatzi \"config\" karpetan",
"Cannot write into \"apps\" directory" : "Ezin da idatzi \"apps\" karpetan",
+ "Cannot create \"data\" directory" : "Ezin da \"data\" karpeta sortu",
"Setting locale to %s failed" : "Lokala %sra ezartzeak huts egin du",
"Please install one of these locales on your system and restart your webserver." : "Instalatu hauetako lokal bat zure sisteman eta berrabiarazi zure web zerbitzaria.",
"Please ask your server administrator to install the module." : "Mesedez eskatu zure zerbitzariaren kudeatzaileari modulua instala dezan.",
"PHP module %s not installed." : "PHPren %s modulua ez dago instalaturik.",
"PHP setting \"%s\" is not set to \"%s\"." : "\"%s\" PHP ezarpena ez dago \"%s\" gisa jarrita.",
"Adjusting this setting in php.ini will make Nextcloud run again" : "Ezarpen hau php.ini fitxategian doitzen bada, Nextcloud berriro exekutatuko da",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload \"%s\"-(e)ra ezarrita dago \"0\" itxarondako balioaren ordez",
+ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Arazo hau konpontzeko ezarri <code>mbstring.func_overload</code> <code>0</code>-ra zure php.ini fitxategian",
"libxml2 2.7.0 is at least required. Currently %s is installed." : "libxml2 2.7.0 bertsioa edo berriagoa behar da. Orain %s dago instalatuta.",
"To fix this issue update your libxml2 version and restart your web server." : "Arazo hori konpontzeko, eguneratu zure libxml2 bertsioa eta berrabiarazi web zerbitzaria.",
"PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP lerro bakarreko blokeak mozteko konfiguratua dagoela dirudi. Oinarrizko app batzuk eskuraezin bihurtuko dira.",
@@ -150,31 +174,24 @@
"PostgreSQL >= 9 required" : "PostgreSQL >= 9 behar da",
"Please upgrade your database version" : "Mesedez eguneratu zure datu basearen bertsioa",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Mesedez aldatu baimenak 0770ra beste erabiltzaileek karpetan sartu ezin izateko.",
+ "Your data directory is readable by other users" : "Zure datuen karpeta beste erabiltzaileek irakur dezakete",
+ "Your data directory must be an absolute path" : "Zure datuen karpeta bide-izen absolutua izan behar da",
+ "Check the value of \"datadirectory\" in your configuration" : "Egiaztatu «datadirectory» aldagaiaren balioa zure konfigurazioan",
+ "Your data directory is invalid" : "Zure datuen karpeta baliogabea da",
"Could not obtain lock type %d on \"%s\"." : "Ezin da lortu sarraia mota %d \"%s\"-an.",
+ "Storage unauthorized. %s" : "Biltegiratzea ez dago baimenduta. %s",
+ "Storage incomplete configuration. %s" : "Biltegiratzea ez da osorik konfiguratu. %s",
"Storage connection error. %s" : "Biltegiratze-konexioaren errorea. %s",
"Storage is temporarily not available" : "Biltegia ez dago erabilgarri aldi baterako",
- "Create" : "Sortu",
- "Change" : "Aldatu",
- "Delete" : "Ezabatu",
- "Share" : "Partekatu",
+ "Storage connection timeout. %s" : "Biltegiratze-konexioa denboraz kanpo geratu da. %s",
+ "Following databases are supported: %s" : "Hurrengo datubaseak onartzen dira: %s",
+ "Following platforms are supported: %s" : "Hurrengo plataformak onartzen dira: %s",
+ "Overview" : "Ikuspegi orokorra",
"Basic settings" : "Oinarrizko ezarpenak",
"Sharing" : "Partekatze",
"Security" : "Segurtasuna",
+ "Groupware" : "Taldelanerako tresnak",
"Personal info" : "Informazio pertsonala",
- "Mobile & desktop" : "Mugikorra eta mahaigaina",
- "Unlimited" : "Mugagabea",
- "Verifying" : "Egiaztatzen",
- "Verifying …" : "Egiaztatzen...",
- "Verify" : "Egiaztatu",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "%s partekatzeak huts egin du, motorrak %i motako partekatzeak baimentzen ez dituelako",
- "Sharing %s failed, because the file does not exist" : "%s elkarbanatzeak huts egin du, fitxategia ez delako existitzen",
- "Sharing %s failed, because you can not share with yourself" : "Ezin izan da %s partekatu, zure buruarekin ezin baituzu partekatu.",
- "You need to provide a password to create a public link, only protected links are allowed" : "Lotura publiko bat sortzeko pasahitza idatzi behar duzu, bakarrik babestutako loturak baimenduta daude",
- "Sharing %s failed, because sharing with links is not allowed" : "%s elkarbanatzeak huts egin du, lotura bidezko elkarbanatzea baimendua ez dagoelako",
- "Not allowed to create a federated share with the same user" : "Ezin da erabiltzaile berdinarekin federatutako partekatzea sortu.",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ezin izan da iraungitze-data ezarri. Partekatzeak ezin dira partekatu eta %s baino beranduago iraungi.",
- "Cannot set expiration date. Expiration date is in the past" : "Ezin izan da iraungitze data ezarri. Iraungitze data iraganean dago.",
- "Sharing %s failed, because resharing is not allowed" : "%s elkarbanatzeak huts egin du, ber-elkarbanatzea baimenduta ez dagoelako",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s elkarbanatzeak huts egin du, fitxategia katxean aurkitu ez delako"
+ "Mobile & desktop" : "Mugikorra eta mahaigaina"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/fa.js b/lib/l10n/fa.js
index 28e373212c0..4e4202de261 100644
--- a/lib/l10n/fa.js
+++ b/lib/l10n/fa.js
@@ -3,9 +3,8 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "نمیتوانید داخل دایرکتوری \"config\" تغییراتی ایجاد کنید",
"This can usually be fixed by giving the webserver write access to the config directory" : "این امر معمولاً با دسترسی به نوشتن وب سرور به فهرست تنظیمات قابل حل است",
- "See %s" : "مشاهده %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "یا اگر ترجیح می دهید پرونده config.php را فقط بخوانید ، گزینه \"config_is_read_only\" را در آن تنظیم کنید.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "%sاین امر معمولاً با دسترسی به نوشتن وب سرور به فهرست تنظیمات قابل حل است. دیدن",
+ "See %s" : "مشاهده %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "یا اگر ترجیح می دهید پرونده config.php را فقط بخوانید ، گزینه \"config_is_read_only\" را در آن تنظیم کنید. دیدن%s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "فایل های برنامه %1$sبه درستی تعویض نشد. اطمینان حاصل کنید که این یک نسخه سازگار با سرور است.",
"Sample configuration detected" : "فایل پیکربندی نمونه پیدا شد",
@@ -22,12 +21,10 @@ OC.L10N.register(
"PHP %s or higher is required." : "PHP نسخه‌ی %s یا بالاتر نیاز است.",
"PHP with a version lower than %s is required." : "PHP با نسخه پایین تر از مورد نیاز%s است.",
"%sbit or higher PHP required." : "%sکمی یا بالاتر PHP لازم است.",
- "Following databases are supported: %s" : "پایگاه‌داده‌ های ذکر شده مورد نیاز است: %s",
"The command line tool %s could not be found" : "ابزار کامندلاین %s پیدا نشد",
"The library %s is not available." : "کتابخانه‌ی %s در دسترس نیست.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "%3$sکتابخانه با%1$s نسخه بالاتر از حد مورد%2$s نیاز - نسخه موجود",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "%3$sکتابخانه %1$sبا نسخه پایین تر از حد مورد%2$s نیاز - نسخه موجود",
- "Following platforms are supported: %s" : "سیستم عامل های زیر پشتیبانی می شوند%s",
"Server version %s or higher is required." : "نسخه سرور%s یا بالاتر مورد نیاز است.",
"Server version %s or lower is required." : "نسخه سرور%sیا پایین مورد نیاز است.",
"Logged in user must be an admin or sub admin" : "ورود به سیستم کاربر باید یک مدیر یا مدیر فرعی باشد",
@@ -178,8 +175,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "Token منقضی شده است. لطفا دوباره صفحه را بارگذاری نمایید.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "هیچ درایور پایگاه داده (sqlite ، mysql یا postgresql) نصب نشده است.",
"Cannot write into \"config\" directory" : "امکان نوشتن درون شاخه‌ی \"config\" وجود ندارد",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "%sاین امر معمولاً با دسترسی به نوشتن وب سرور به فهرست تنظیمات قابل حل است. دیدن",
"Cannot write into \"apps\" directory" : "نمی توان در فهرست \"برنامه ها\" نوشت",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "این امر معمولاً با دسترسی به وب سرور دسترسی به فهرست برنامه ها یا غیرفعال کردن برنامه در پرونده پیکربندی قابل رفع است. دیدن%s",
"Cannot create \"data\" directory" : "دایرکتوری \"داده\" ایجاد نمی شود",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "این امر معمولاً با دسترسی به نوشتن وب سرور به فهرست اصلی قابل حل است. دیدن%s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "معمولاً مجوزها می توانند با دسترسی به نوشتن وب سرور به فهرست اصلی ، ثابت شوند. دیدن%s",
@@ -216,10 +213,8 @@ OC.L10N.register(
"Storage connection error. %s" : "خطای اتصال ذخیره سازی%s",
"Storage is temporarily not available" : "ذخیره سازی به طور موقت در دسترس نیست",
"Storage connection timeout. %s" : "مدت زمان اتصال ذخیره سازی%s",
- "Create" : "ایجاد کردن",
- "Change" : "تغییر",
- "Delete" : "حذف",
- "Share" : "هم‌رسانی",
+ "Following databases are supported: %s" : "پایگاه‌داده‌ های ذکر شده مورد نیاز است: %s",
+ "Following platforms are supported: %s" : "سیستم عامل های زیر پشتیبانی می شوند%s",
"Overview" : "بررسی اجمالی",
"Basic settings" : "تنظیمات پایه",
"Sharing" : "اشتراک گذاری",
@@ -227,30 +222,6 @@ OC.L10N.register(
"Groupware" : "گروه های نرم افزاری",
"Personal info" : "مشخصات شخصی",
"Mobile & desktop" : "موبایل و دسک تاپ",
- "Unlimited" : "نامحدود",
- "Verifying" : "تایید شدن",
- "Verifying …" : "در حال تایید شدن...",
- "Verify" : "تأیید کنید",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "اشتراک گذاری%s انجام نشد ، زیرا باقیمانده سهام را از نوع مجاز نمی کند%i",
- "Sharing %s failed, because the file does not exist" : "اشتراک گذاری%s انجام نشد ، زیرا پرونده وجود ندارد",
- "Sharing %s failed, because you can not share with yourself" : "اشتراک گذاری%s انجام نشد ، زیرا شما نمی توانید با خود به اشتراک بگذارید",
- "Sharing %1$s failed, because the user %2$s does not exist" : "اشتراک گذاری%1$s انجام نشد زیرا کاربر %2$sوجود ندارد",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "اشتراک گذاری%1$s انجام نشد ، زیرا کاربر%2$s عضو هیچ گروهی نیست%3$s که عضو آن باشد",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "اشتراک گذاری%1$s انجام نشد ، زیرا این مورد قبلاً با آنها به اشتراک%2$s گذاشته شده است",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "اشتراک گذاری %1$sانجام نشد ، زیرا این مورد قبلاً با کاربر%2$s به اشتراک گذاشته شده است",
- "Sharing %1$s failed, because the group %2$s does not exist" : "اشتراک گذاری%1$s انجام نشد ، زیرا این گروه%2$s وجود ندارد",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "اشتراک گذاری%1$s ناموفق %2$sبود ، زیرا عضو%3$s این گروه نیست",
- "You need to provide a password to create a public link, only protected links are allowed" : "برای ایجاد یک لینک عمومی باید یک رمزعبور تهیه کنید ، فقط پیوندهای محافظت شده مجاز هستند",
- "Sharing %s failed, because sharing with links is not allowed" : "اشتراک گذاری%s انجام نشد ، زیرا اشتراک گذاری با پیوندها مجاز نیست",
- "Not allowed to create a federated share with the same user" : "مجاز به ایجاد یک اشتراک فدرال با همان کاربر نیست",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "اشتراک گذاری%1$s انجام نشد ، یافت نشد%2$s ، شاید سرور در حال حاضر غیرقابل دسترسی باشد.",
- "Share type %1$s is not valid for %2$s" : "%2$sنوع اشتراک%1$s برای آن معتبر نیست",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "تاریخ انقضا امکان پذیر نیست. سهام نمی توانند دیرتر از بعد از%s اشتراک آنها منقضی شوند",
- "Cannot set expiration date. Expiration date is in the past" : "تاریخ انقضا امکان پذیر نیست. تاریخ انقضا در گذشته است",
- "Sharing failed, because the user %s is the original sharer" : "اشتراک گذاری انجام نشد زیرا کاربر%s اصلی ترین اشتراک است",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "%2$sاشتراک گذاری%1$s ناموفق بود ، زیرا مجوزها از مجوزهای مجاز به آن فراتر می روند",
- "Sharing %s failed, because resharing is not allowed" : "اشتراک گذاری %sانجام نشد ، زیرا اشتراک مجدد مجاز نیست",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "اشتراک گذاری%1$s انجام نشد ، زیرا قسمت پشتیبان اشتراک گذاری نتوانست%2$s منبع آن را پیدا کند",
- "Sharing %s failed, because the file could not be found in the file cache" : "اشتراک گذاری %sانجام نشد ، زیرا پرونده در حافظه نهان فایل یافت نمی شود"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "این امر معمولاً با دسترسی به وب سرور دسترسی به فهرست برنامه ها یا غیرفعال کردن برنامه در پرونده پیکربندی قابل رفع است. دیدن%s"
},
"nplurals=2; plural=(n > 1);");
diff --git a/lib/l10n/fa.json b/lib/l10n/fa.json
index a99f59575c4..fe33bc25a5f 100644
--- a/lib/l10n/fa.json
+++ b/lib/l10n/fa.json
@@ -1,9 +1,8 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "نمیتوانید داخل دایرکتوری \"config\" تغییراتی ایجاد کنید",
"This can usually be fixed by giving the webserver write access to the config directory" : "این امر معمولاً با دسترسی به نوشتن وب سرور به فهرست تنظیمات قابل حل است",
- "See %s" : "مشاهده %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "یا اگر ترجیح می دهید پرونده config.php را فقط بخوانید ، گزینه \"config_is_read_only\" را در آن تنظیم کنید.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "%sاین امر معمولاً با دسترسی به نوشتن وب سرور به فهرست تنظیمات قابل حل است. دیدن",
+ "See %s" : "مشاهده %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "یا اگر ترجیح می دهید پرونده config.php را فقط بخوانید ، گزینه \"config_is_read_only\" را در آن تنظیم کنید. دیدن%s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "فایل های برنامه %1$sبه درستی تعویض نشد. اطمینان حاصل کنید که این یک نسخه سازگار با سرور است.",
"Sample configuration detected" : "فایل پیکربندی نمونه پیدا شد",
@@ -20,12 +19,10 @@
"PHP %s or higher is required." : "PHP نسخه‌ی %s یا بالاتر نیاز است.",
"PHP with a version lower than %s is required." : "PHP با نسخه پایین تر از مورد نیاز%s است.",
"%sbit or higher PHP required." : "%sکمی یا بالاتر PHP لازم است.",
- "Following databases are supported: %s" : "پایگاه‌داده‌ های ذکر شده مورد نیاز است: %s",
"The command line tool %s could not be found" : "ابزار کامندلاین %s پیدا نشد",
"The library %s is not available." : "کتابخانه‌ی %s در دسترس نیست.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "%3$sکتابخانه با%1$s نسخه بالاتر از حد مورد%2$s نیاز - نسخه موجود",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "%3$sکتابخانه %1$sبا نسخه پایین تر از حد مورد%2$s نیاز - نسخه موجود",
- "Following platforms are supported: %s" : "سیستم عامل های زیر پشتیبانی می شوند%s",
"Server version %s or higher is required." : "نسخه سرور%s یا بالاتر مورد نیاز است.",
"Server version %s or lower is required." : "نسخه سرور%sیا پایین مورد نیاز است.",
"Logged in user must be an admin or sub admin" : "ورود به سیستم کاربر باید یک مدیر یا مدیر فرعی باشد",
@@ -176,8 +173,8 @@
"Token expired. Please reload page." : "Token منقضی شده است. لطفا دوباره صفحه را بارگذاری نمایید.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "هیچ درایور پایگاه داده (sqlite ، mysql یا postgresql) نصب نشده است.",
"Cannot write into \"config\" directory" : "امکان نوشتن درون شاخه‌ی \"config\" وجود ندارد",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "%sاین امر معمولاً با دسترسی به نوشتن وب سرور به فهرست تنظیمات قابل حل است. دیدن",
"Cannot write into \"apps\" directory" : "نمی توان در فهرست \"برنامه ها\" نوشت",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "این امر معمولاً با دسترسی به وب سرور دسترسی به فهرست برنامه ها یا غیرفعال کردن برنامه در پرونده پیکربندی قابل رفع است. دیدن%s",
"Cannot create \"data\" directory" : "دایرکتوری \"داده\" ایجاد نمی شود",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "این امر معمولاً با دسترسی به نوشتن وب سرور به فهرست اصلی قابل حل است. دیدن%s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "معمولاً مجوزها می توانند با دسترسی به نوشتن وب سرور به فهرست اصلی ، ثابت شوند. دیدن%s",
@@ -214,10 +211,8 @@
"Storage connection error. %s" : "خطای اتصال ذخیره سازی%s",
"Storage is temporarily not available" : "ذخیره سازی به طور موقت در دسترس نیست",
"Storage connection timeout. %s" : "مدت زمان اتصال ذخیره سازی%s",
- "Create" : "ایجاد کردن",
- "Change" : "تغییر",
- "Delete" : "حذف",
- "Share" : "هم‌رسانی",
+ "Following databases are supported: %s" : "پایگاه‌داده‌ های ذکر شده مورد نیاز است: %s",
+ "Following platforms are supported: %s" : "سیستم عامل های زیر پشتیبانی می شوند%s",
"Overview" : "بررسی اجمالی",
"Basic settings" : "تنظیمات پایه",
"Sharing" : "اشتراک گذاری",
@@ -225,30 +220,6 @@
"Groupware" : "گروه های نرم افزاری",
"Personal info" : "مشخصات شخصی",
"Mobile & desktop" : "موبایل و دسک تاپ",
- "Unlimited" : "نامحدود",
- "Verifying" : "تایید شدن",
- "Verifying …" : "در حال تایید شدن...",
- "Verify" : "تأیید کنید",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "اشتراک گذاری%s انجام نشد ، زیرا باقیمانده سهام را از نوع مجاز نمی کند%i",
- "Sharing %s failed, because the file does not exist" : "اشتراک گذاری%s انجام نشد ، زیرا پرونده وجود ندارد",
- "Sharing %s failed, because you can not share with yourself" : "اشتراک گذاری%s انجام نشد ، زیرا شما نمی توانید با خود به اشتراک بگذارید",
- "Sharing %1$s failed, because the user %2$s does not exist" : "اشتراک گذاری%1$s انجام نشد زیرا کاربر %2$sوجود ندارد",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "اشتراک گذاری%1$s انجام نشد ، زیرا کاربر%2$s عضو هیچ گروهی نیست%3$s که عضو آن باشد",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "اشتراک گذاری%1$s انجام نشد ، زیرا این مورد قبلاً با آنها به اشتراک%2$s گذاشته شده است",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "اشتراک گذاری %1$sانجام نشد ، زیرا این مورد قبلاً با کاربر%2$s به اشتراک گذاشته شده است",
- "Sharing %1$s failed, because the group %2$s does not exist" : "اشتراک گذاری%1$s انجام نشد ، زیرا این گروه%2$s وجود ندارد",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "اشتراک گذاری%1$s ناموفق %2$sبود ، زیرا عضو%3$s این گروه نیست",
- "You need to provide a password to create a public link, only protected links are allowed" : "برای ایجاد یک لینک عمومی باید یک رمزعبور تهیه کنید ، فقط پیوندهای محافظت شده مجاز هستند",
- "Sharing %s failed, because sharing with links is not allowed" : "اشتراک گذاری%s انجام نشد ، زیرا اشتراک گذاری با پیوندها مجاز نیست",
- "Not allowed to create a federated share with the same user" : "مجاز به ایجاد یک اشتراک فدرال با همان کاربر نیست",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "اشتراک گذاری%1$s انجام نشد ، یافت نشد%2$s ، شاید سرور در حال حاضر غیرقابل دسترسی باشد.",
- "Share type %1$s is not valid for %2$s" : "%2$sنوع اشتراک%1$s برای آن معتبر نیست",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "تاریخ انقضا امکان پذیر نیست. سهام نمی توانند دیرتر از بعد از%s اشتراک آنها منقضی شوند",
- "Cannot set expiration date. Expiration date is in the past" : "تاریخ انقضا امکان پذیر نیست. تاریخ انقضا در گذشته است",
- "Sharing failed, because the user %s is the original sharer" : "اشتراک گذاری انجام نشد زیرا کاربر%s اصلی ترین اشتراک است",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "%2$sاشتراک گذاری%1$s ناموفق بود ، زیرا مجوزها از مجوزهای مجاز به آن فراتر می روند",
- "Sharing %s failed, because resharing is not allowed" : "اشتراک گذاری %sانجام نشد ، زیرا اشتراک مجدد مجاز نیست",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "اشتراک گذاری%1$s انجام نشد ، زیرا قسمت پشتیبان اشتراک گذاری نتوانست%2$s منبع آن را پیدا کند",
- "Sharing %s failed, because the file could not be found in the file cache" : "اشتراک گذاری %sانجام نشد ، زیرا پرونده در حافظه نهان فایل یافت نمی شود"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "این امر معمولاً با دسترسی به وب سرور دسترسی به فهرست برنامه ها یا غیرفعال کردن برنامه در پرونده پیکربندی قابل رفع است. دیدن%s"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/lib/l10n/fi.js b/lib/l10n/fi.js
index c153a9dd27f..23985362fdc 100644
--- a/lib/l10n/fi.js
+++ b/lib/l10n/fi.js
@@ -13,10 +13,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "PHP %s tai sitä uudempi vaaditaan.",
"PHP with a version lower than %s is required." : "PHP versiota %s alempi tarvitaan.",
"%sbit or higher PHP required." : "%s-bit tai korkeampi PHP vaaditaan.",
- "Following databases are supported: %s" : "Seuraavat tietokannat ovat tuettuja: %s",
"The command line tool %s could not be found" : "Komentorivityökalua %s ei löytynyt",
"The library %s is not available." : "Kirjastoa %s ei ole käytettävissä.",
- "Following platforms are supported: %s" : "Seuraavat alustat ovat tuettuja: %s",
"Server version %s or higher is required." : "Palvelinversio %s tai sitä uudempi vaaditaan.",
"Server version %s or lower is required." : "Palvelinversio %s tai alhaisempi vaaditaan.",
"Logged in user must be an admin" : "Sisäänkirjautuneen käyttäjän tulee olla ylläpitäjä",
@@ -185,29 +183,12 @@ OC.L10N.register(
"Storage connection error. %s" : "Tallennustilan yhteysvirhe. %s",
"Storage is temporarily not available" : "Tallennustila on tilapäisesti pois käytöstä",
"Storage connection timeout. %s" : "Tallennustilan yhteyden aikakatkaisu. %s",
- "Create" : "Luo",
- "Change" : "Muuta",
- "Delete" : "Poista",
- "Share" : "Jaa",
+ "Following databases are supported: %s" : "Seuraavat tietokannat ovat tuettuja: %s",
+ "Following platforms are supported: %s" : "Seuraavat alustat ovat tuettuja: %s",
"Basic settings" : "Perusasetukset",
"Sharing" : "Jakaminen",
"Security" : "Turvallisuus",
"Personal info" : "Henkilökohtaiset tiedot",
- "Mobile & desktop" : "Mobiili ja työpöytä",
- "Unlimited" : "Rajoittamaton",
- "Verifying" : "Vahvistetaan",
- "Verifying …" : "Vahvistetaan…",
- "Verify" : "Vahvista",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Kohteen %s jakaminen epäonnistui, koska tietovarasto ei salli %i tyyppisiä jakoja",
- "Sharing %s failed, because the file does not exist" : "Kohteen %s jakaminen epäonnistui, koska tiedostoa ei ole olemassa",
- "Sharing %s failed, because you can not share with yourself" : "Kohteen %s jakaminen epäonnistui, koska et voi jakaa itsesi kanssa",
- "You need to provide a password to create a public link, only protected links are allowed" : "Anna salasana luodaksesi julkisen linkin. Vain suojatut linkit ovat sallittuja",
- "Sharing %s failed, because sharing with links is not allowed" : "Kohteen %s jakaminen epäonnistui, koska jakaminen linkkejä käyttäen ei ole sallittu",
- "Not allowed to create a federated share with the same user" : "Saman käyttäjän kanssa ei ole sallittua luoda federoitua jakoa",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Vanhenemispäivää ei voi asettaa. Jako ei voi vanhentua myöhemmin kuin %s päivää sen jälkeen kun se on jaettu",
- "Cannot set expiration date. Expiration date is in the past" : "Vanhenemispäivää ei voi asettaa. Vanhenemispäivä on jo mennyt",
- "Sharing failed, because the user %s is the original sharer" : "Jakaminen epäonnistui, koska käyttäjä %s ei ole alkuperäinen jakaja",
- "Sharing %s failed, because resharing is not allowed" : "Kohteen %s jakaminen epäonnistui, koska jakaminen uudelleen ei ole sallittu",
- "Sharing %s failed, because the file could not be found in the file cache" : "Kohteen %s jakaminen epäonnistui, koska tiedostoa ei löytynyt tiedostovälimuistista"
+ "Mobile & desktop" : "Mobiili ja työpöytä"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/fi.json b/lib/l10n/fi.json
index e179f37005d..0cc75623d94 100644
--- a/lib/l10n/fi.json
+++ b/lib/l10n/fi.json
@@ -11,10 +11,8 @@
"PHP %s or higher is required." : "PHP %s tai sitä uudempi vaaditaan.",
"PHP with a version lower than %s is required." : "PHP versiota %s alempi tarvitaan.",
"%sbit or higher PHP required." : "%s-bit tai korkeampi PHP vaaditaan.",
- "Following databases are supported: %s" : "Seuraavat tietokannat ovat tuettuja: %s",
"The command line tool %s could not be found" : "Komentorivityökalua %s ei löytynyt",
"The library %s is not available." : "Kirjastoa %s ei ole käytettävissä.",
- "Following platforms are supported: %s" : "Seuraavat alustat ovat tuettuja: %s",
"Server version %s or higher is required." : "Palvelinversio %s tai sitä uudempi vaaditaan.",
"Server version %s or lower is required." : "Palvelinversio %s tai alhaisempi vaaditaan.",
"Logged in user must be an admin" : "Sisäänkirjautuneen käyttäjän tulee olla ylläpitäjä",
@@ -183,29 +181,12 @@
"Storage connection error. %s" : "Tallennustilan yhteysvirhe. %s",
"Storage is temporarily not available" : "Tallennustila on tilapäisesti pois käytöstä",
"Storage connection timeout. %s" : "Tallennustilan yhteyden aikakatkaisu. %s",
- "Create" : "Luo",
- "Change" : "Muuta",
- "Delete" : "Poista",
- "Share" : "Jaa",
+ "Following databases are supported: %s" : "Seuraavat tietokannat ovat tuettuja: %s",
+ "Following platforms are supported: %s" : "Seuraavat alustat ovat tuettuja: %s",
"Basic settings" : "Perusasetukset",
"Sharing" : "Jakaminen",
"Security" : "Turvallisuus",
"Personal info" : "Henkilökohtaiset tiedot",
- "Mobile & desktop" : "Mobiili ja työpöytä",
- "Unlimited" : "Rajoittamaton",
- "Verifying" : "Vahvistetaan",
- "Verifying …" : "Vahvistetaan…",
- "Verify" : "Vahvista",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Kohteen %s jakaminen epäonnistui, koska tietovarasto ei salli %i tyyppisiä jakoja",
- "Sharing %s failed, because the file does not exist" : "Kohteen %s jakaminen epäonnistui, koska tiedostoa ei ole olemassa",
- "Sharing %s failed, because you can not share with yourself" : "Kohteen %s jakaminen epäonnistui, koska et voi jakaa itsesi kanssa",
- "You need to provide a password to create a public link, only protected links are allowed" : "Anna salasana luodaksesi julkisen linkin. Vain suojatut linkit ovat sallittuja",
- "Sharing %s failed, because sharing with links is not allowed" : "Kohteen %s jakaminen epäonnistui, koska jakaminen linkkejä käyttäen ei ole sallittu",
- "Not allowed to create a federated share with the same user" : "Saman käyttäjän kanssa ei ole sallittua luoda federoitua jakoa",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Vanhenemispäivää ei voi asettaa. Jako ei voi vanhentua myöhemmin kuin %s päivää sen jälkeen kun se on jaettu",
- "Cannot set expiration date. Expiration date is in the past" : "Vanhenemispäivää ei voi asettaa. Vanhenemispäivä on jo mennyt",
- "Sharing failed, because the user %s is the original sharer" : "Jakaminen epäonnistui, koska käyttäjä %s ei ole alkuperäinen jakaja",
- "Sharing %s failed, because resharing is not allowed" : "Kohteen %s jakaminen epäonnistui, koska jakaminen uudelleen ei ole sallittu",
- "Sharing %s failed, because the file could not be found in the file cache" : "Kohteen %s jakaminen epäonnistui, koska tiedostoa ei löytynyt tiedostovälimuistista"
+ "Mobile & desktop" : "Mobiili ja työpöytä"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/fo.js b/lib/l10n/fo.js
index 4d9f331e1af..9705dec6c77 100644
--- a/lib/l10n/fo.js
+++ b/lib/l10n/fo.js
@@ -2,8 +2,6 @@ OC.L10N.register(
"lib",
{
"Authentication error" : "Samgildis feilur",
- "Delete" : "Strika",
- "Security" : "Trygd",
- "Unlimited" : "Óavmarkað"
+ "Security" : "Trygd"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/fo.json b/lib/l10n/fo.json
index c25b2f7be63..0d2d989e63d 100644
--- a/lib/l10n/fo.json
+++ b/lib/l10n/fo.json
@@ -1,7 +1,5 @@
{ "translations": {
"Authentication error" : "Samgildis feilur",
- "Delete" : "Strika",
- "Security" : "Trygd",
- "Unlimited" : "Óavmarkað"
+ "Security" : "Trygd"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js
index 25a680723b7..58aa6a9c6de 100644
--- a/lib/l10n/fr.js
+++ b/lib/l10n/fr.js
@@ -3,9 +3,9 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "Impossible d’écrire dans le répertoire « config » !",
"This can usually be fixed by giving the webserver write access to the config directory" : "Ce problème est généralement résolu en donnant au serveur web un accès en écriture au répertoire \"config\"",
- "See %s" : "Voir %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Ou, si vous préférez conserver le fichier config.php en lecture seule, définissez l'option \"config_is_read_only\" sur true.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Ce problème est généralement résolu en donnant au serveur web un accès en écriture au répertoire \"config\". Voir %s",
+ "See %s" : "Voir %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Ce problème est généralement résolu en donnant au serveur web un accès en écriture au répertoire de configuration.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Ou, si vous préférez conserver le fichier config.php en lecture seule, définissez l'option \"config_is_read_only\" sur true. Voir %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Les fichiers de l'application %1$s n'ont pas été remplacés correctement. Veuillez vérifier que c'est une version compatible avec le serveur.",
"Sample configuration detected" : "Configuration d'exemple détectée",
@@ -22,12 +22,12 @@ OC.L10N.register(
"PHP %s or higher is required." : "PHP %s ou supérieur est requis.",
"PHP with a version lower than %s is required." : "PHP avec une version antérieure à %s est requis.",
"%sbit or higher PHP required." : "PHP %sbits ou supérieur est requis.",
- "Following databases are supported: %s" : "Les bases de données suivantes sont supportées : %s",
+ "The following databases are supported: %s" : "Les bases de données suivantes sont prises en charge : %s",
"The command line tool %s could not be found" : "La commande %s est introuvable",
"The library %s is not available." : "La librairie %s n'est pas disponible.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "La librairie %1$s doit être au moins à la version %2$s. Version disponible : %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "La librairie %1$s doit avoir une version antérieure à %2$s. Version disponible : %3$s.",
- "Following platforms are supported: %s" : "Les plateformes suivantes sont prises en charge : %s",
+ "The following platforms are supported: %s" : "Les plateformes suivantes sont prises en charge : %s",
"Server version %s or higher is required." : "Un serveur de version %s ou supérieure est requis.",
"Server version %s or lower is required." : "Un serveur de version %s ou inférieure est requis.",
"Logged in user must be an admin or sub admin" : "L'utilisateur connecté doit être administrateur ou sous-administrateur",
@@ -185,8 +185,9 @@ OC.L10N.register(
"Token expired. Please reload page." : "La session a expiré. Veuillez recharger la page.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Aucun pilote de base de données n’est installé (sqlite, mysql ou postgresql).",
"Cannot write into \"config\" directory" : "Impossible d’écrire dans le répertoire \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Ce problème est généralement résolu en donnant au serveur web un accès en écriture au répertoire \"config\". Voir %s",
"Cannot write into \"apps\" directory" : "Impossible d’écrire dans le répertoire \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Ce problème est généralement résolu en donnant au serveur web un accès en écriture au répertoire \"apps\" ou en désactivant l'appstore dans le fichier de configuration. Voir %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Ce problème est généralement résolu en donnant au serveur web un accès en écriture au répertoire des applications ou en désactivant l'appstore dans le fichier de configuration.",
"Cannot create \"data\" directory" : "Impossible de créer le dossier \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Ce problème est généralement résolu en donnant au serveur web un accès en écriture au répertoire racine. Voir %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Le problème de permissions peut généralement être résolu en donnant au serveur web un accès en écriture au répertoire racine. Voir %s.",
@@ -223,10 +224,8 @@ OC.L10N.register(
"Storage connection error. %s" : "Erreur de connexion à l'espace stockage. %s",
"Storage is temporarily not available" : "Le support de stockage est temporairement indisponible",
"Storage connection timeout. %s" : "Le délai d'attente pour la connexion à l'espace de stockage a été dépassé. %s",
- "Create" : "Créer",
- "Change" : "Modifier",
- "Delete" : "Supprimer",
- "Share" : "Partager",
+ "Following databases are supported: %s" : "Les bases de données suivantes sont supportées : %s",
+ "Following platforms are supported: %s" : "Les plateformes suivantes sont prises en charge : %s",
"Overview" : "Vue d'ensemble",
"Basic settings" : "Paramètres de base",
"Sharing" : "Partage",
@@ -234,30 +233,6 @@ OC.L10N.register(
"Groupware" : "Travail collaboratif",
"Personal info" : "Informations personnelles",
"Mobile & desktop" : "Mobile & bureau",
- "Unlimited" : "Illimité",
- "Verifying" : "Vérification en cours",
- "Verifying …" : "Vérification en cours...",
- "Verify" : "Vérifié",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Le partage de %s a échoué car l’infrastructure n'autorise pas les partages de type %i",
- "Sharing %s failed, because the file does not exist" : "Le partage de %s a échoué car le fichier n'existe pas",
- "Sharing %s failed, because you can not share with yourself" : "Le partage de %s a échoué car vous ne pouvez pas partager avec vous-même",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Le partage de %1$s a échoué car l'utilisateur %2$s n'existe pas",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Le partage de %1$s a échoué car l'utilisateur %2$s n'est membre d'aucun groupe auquel %3$s appartient",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Le partage de %1$s a échoué car cet élément est déjà partagé avec %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Le partage de %1$s a échoué car cet élément est déjà partagé avec l'utilisateur %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Le partage de %1$s a échoué car le groupe %2$s n'existe pas",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Le partage de %1$s a échoué car %2$s n'est pas membre du groupe %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Vous devez fournir un mot de passe pour créer un lien public, seuls les liens protégés sont autorisées.",
- "Sharing %s failed, because sharing with links is not allowed" : "Le partage de %s a échoué car le partage par lien n'est pas permis",
- "Not allowed to create a federated share with the same user" : "Non autorisé à créer un partage fédéré avec le même utilisateur",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Le partage de %1$s a échoué : impossible de trouver %2$s. Le serveur est peut-être momentanément injoignable.",
- "Share type %1$s is not valid for %2$s" : "Le type de partage %1$s n'est pas valide pour %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Impossible de configurer la date d'expiration. Un partage ne peut expirer plus de %s après sa création",
- "Cannot set expiration date. Expiration date is in the past" : "Impossible de configurer la date d'expiration : elle est dans le passé.",
- "Sharing failed, because the user %s is the original sharer" : "Le partage a échoué car l'utilisateur %s est le propriétaire original",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Le partage de %1$s a échoué car les permissions dépassent celles accordées à %2$s",
- "Sharing %s failed, because resharing is not allowed" : "Le partage de %s a échoué car le repartage n'est pas autorisé",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Le partage de %1$s a échoué car le service %2$s n'a pas trouvé sa source..",
- "Sharing %s failed, because the file could not be found in the file cache" : "Le partage de %s a échoué car le fichier n'a pas été trouvé dans les fichiers mis en cache."
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Ce problème est généralement résolu en donnant au serveur web un accès en écriture au répertoire \"apps\" ou en désactivant l'appstore dans le fichier de configuration. Voir %s"
},
"nplurals=2; plural=(n > 1);");
diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json
index 75bce78eaae..37f068ca808 100644
--- a/lib/l10n/fr.json
+++ b/lib/l10n/fr.json
@@ -1,9 +1,9 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "Impossible d’écrire dans le répertoire « config » !",
"This can usually be fixed by giving the webserver write access to the config directory" : "Ce problème est généralement résolu en donnant au serveur web un accès en écriture au répertoire \"config\"",
- "See %s" : "Voir %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Ou, si vous préférez conserver le fichier config.php en lecture seule, définissez l'option \"config_is_read_only\" sur true.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Ce problème est généralement résolu en donnant au serveur web un accès en écriture au répertoire \"config\". Voir %s",
+ "See %s" : "Voir %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Ce problème est généralement résolu en donnant au serveur web un accès en écriture au répertoire de configuration.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Ou, si vous préférez conserver le fichier config.php en lecture seule, définissez l'option \"config_is_read_only\" sur true. Voir %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Les fichiers de l'application %1$s n'ont pas été remplacés correctement. Veuillez vérifier que c'est une version compatible avec le serveur.",
"Sample configuration detected" : "Configuration d'exemple détectée",
@@ -20,12 +20,12 @@
"PHP %s or higher is required." : "PHP %s ou supérieur est requis.",
"PHP with a version lower than %s is required." : "PHP avec une version antérieure à %s est requis.",
"%sbit or higher PHP required." : "PHP %sbits ou supérieur est requis.",
- "Following databases are supported: %s" : "Les bases de données suivantes sont supportées : %s",
+ "The following databases are supported: %s" : "Les bases de données suivantes sont prises en charge : %s",
"The command line tool %s could not be found" : "La commande %s est introuvable",
"The library %s is not available." : "La librairie %s n'est pas disponible.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "La librairie %1$s doit être au moins à la version %2$s. Version disponible : %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "La librairie %1$s doit avoir une version antérieure à %2$s. Version disponible : %3$s.",
- "Following platforms are supported: %s" : "Les plateformes suivantes sont prises en charge : %s",
+ "The following platforms are supported: %s" : "Les plateformes suivantes sont prises en charge : %s",
"Server version %s or higher is required." : "Un serveur de version %s ou supérieure est requis.",
"Server version %s or lower is required." : "Un serveur de version %s ou inférieure est requis.",
"Logged in user must be an admin or sub admin" : "L'utilisateur connecté doit être administrateur ou sous-administrateur",
@@ -183,8 +183,9 @@
"Token expired. Please reload page." : "La session a expiré. Veuillez recharger la page.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Aucun pilote de base de données n’est installé (sqlite, mysql ou postgresql).",
"Cannot write into \"config\" directory" : "Impossible d’écrire dans le répertoire \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Ce problème est généralement résolu en donnant au serveur web un accès en écriture au répertoire \"config\". Voir %s",
"Cannot write into \"apps\" directory" : "Impossible d’écrire dans le répertoire \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Ce problème est généralement résolu en donnant au serveur web un accès en écriture au répertoire \"apps\" ou en désactivant l'appstore dans le fichier de configuration. Voir %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Ce problème est généralement résolu en donnant au serveur web un accès en écriture au répertoire des applications ou en désactivant l'appstore dans le fichier de configuration.",
"Cannot create \"data\" directory" : "Impossible de créer le dossier \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Ce problème est généralement résolu en donnant au serveur web un accès en écriture au répertoire racine. Voir %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Le problème de permissions peut généralement être résolu en donnant au serveur web un accès en écriture au répertoire racine. Voir %s.",
@@ -221,10 +222,8 @@
"Storage connection error. %s" : "Erreur de connexion à l'espace stockage. %s",
"Storage is temporarily not available" : "Le support de stockage est temporairement indisponible",
"Storage connection timeout. %s" : "Le délai d'attente pour la connexion à l'espace de stockage a été dépassé. %s",
- "Create" : "Créer",
- "Change" : "Modifier",
- "Delete" : "Supprimer",
- "Share" : "Partager",
+ "Following databases are supported: %s" : "Les bases de données suivantes sont supportées : %s",
+ "Following platforms are supported: %s" : "Les plateformes suivantes sont prises en charge : %s",
"Overview" : "Vue d'ensemble",
"Basic settings" : "Paramètres de base",
"Sharing" : "Partage",
@@ -232,30 +231,6 @@
"Groupware" : "Travail collaboratif",
"Personal info" : "Informations personnelles",
"Mobile & desktop" : "Mobile & bureau",
- "Unlimited" : "Illimité",
- "Verifying" : "Vérification en cours",
- "Verifying …" : "Vérification en cours...",
- "Verify" : "Vérifié",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Le partage de %s a échoué car l’infrastructure n'autorise pas les partages de type %i",
- "Sharing %s failed, because the file does not exist" : "Le partage de %s a échoué car le fichier n'existe pas",
- "Sharing %s failed, because you can not share with yourself" : "Le partage de %s a échoué car vous ne pouvez pas partager avec vous-même",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Le partage de %1$s a échoué car l'utilisateur %2$s n'existe pas",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Le partage de %1$s a échoué car l'utilisateur %2$s n'est membre d'aucun groupe auquel %3$s appartient",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Le partage de %1$s a échoué car cet élément est déjà partagé avec %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Le partage de %1$s a échoué car cet élément est déjà partagé avec l'utilisateur %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Le partage de %1$s a échoué car le groupe %2$s n'existe pas",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Le partage de %1$s a échoué car %2$s n'est pas membre du groupe %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Vous devez fournir un mot de passe pour créer un lien public, seuls les liens protégés sont autorisées.",
- "Sharing %s failed, because sharing with links is not allowed" : "Le partage de %s a échoué car le partage par lien n'est pas permis",
- "Not allowed to create a federated share with the same user" : "Non autorisé à créer un partage fédéré avec le même utilisateur",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Le partage de %1$s a échoué : impossible de trouver %2$s. Le serveur est peut-être momentanément injoignable.",
- "Share type %1$s is not valid for %2$s" : "Le type de partage %1$s n'est pas valide pour %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Impossible de configurer la date d'expiration. Un partage ne peut expirer plus de %s après sa création",
- "Cannot set expiration date. Expiration date is in the past" : "Impossible de configurer la date d'expiration : elle est dans le passé.",
- "Sharing failed, because the user %s is the original sharer" : "Le partage a échoué car l'utilisateur %s est le propriétaire original",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Le partage de %1$s a échoué car les permissions dépassent celles accordées à %2$s",
- "Sharing %s failed, because resharing is not allowed" : "Le partage de %s a échoué car le repartage n'est pas autorisé",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Le partage de %1$s a échoué car le service %2$s n'a pas trouvé sa source..",
- "Sharing %s failed, because the file could not be found in the file cache" : "Le partage de %s a échoué car le fichier n'a pas été trouvé dans les fichiers mis en cache."
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Ce problème est généralement résolu en donnant au serveur web un accès en écriture au répertoire \"apps\" ou en désactivant l'appstore dans le fichier de configuration. Voir %s"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/lib/l10n/gl.js b/lib/l10n/gl.js
index e9805990ee0..c418b157b01 100644
--- a/lib/l10n/gl.js
+++ b/lib/l10n/gl.js
@@ -3,9 +3,9 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "Non é posíbel escribir no directorio «config»!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Polo xeral, isto pode ser fixado para permitirlle ao servidor web acceso de escritura ao directorio «config»",
- "See %s" : "Vexa %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Ou, se prefire manter o ficheiro «config.php» como de só lectura, marque a opción «config_is_read_only» como «true» nel.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Polo xeral, isto pode ser fixado para permitirlle ao servidor web acceso de escritura ao directorio «config». Vexa %s",
+ "See %s" : "Vexa %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Polo xeral, isto pode ser fixado para permitirlle ao servidor web acceso de escritura ao directorio «config».",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Ou, se prefire manter o ficheiro «config.php» como de só lectura, marque a opción «config_is_read_only» como «true» nel. Vexa %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Os ficheiros da aplicación %1$s non foron substituídos correctamente. Asegúrese que é unha versión compatíbel co servidor.",
"Sample configuration detected" : "Detectouse a configuración de exemplo",
@@ -22,12 +22,12 @@ OC.L10N.register(
"PHP %s or higher is required." : "Requirese PHP %s ou superior.",
"PHP with a version lower than %s is required." : "Requírese PHP cunha versión inferior a %s.",
"%sbit or higher PHP required." : "Requirese PHP para %sbit ou superior.",
- "Following databases are supported: %s" : "Admítense as seguintes bases de datos: %s",
+ "The following databases are supported: %s" : "Admítense as seguintes bases de datos: %s",
"The command line tool %s could not be found" : "Non foi posíbel atopar a ferramenta de liña de ordes %s",
"The library %s is not available." : "Non está dispoñíbel a biblioteca %s.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Requírese a biblioteca %1$s cunha versión superior a %2$s - dispoñíbel a versión %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Requírese a biblioteca %1$s cunha versión inferior a %2$s - dispoñíbel a versión %3$s.",
- "Following platforms are supported: %s" : "Admítense as seguintes plataformas: %s",
+ "The following platforms are supported: %s" : "Admítense as seguintes plataformas: %s",
"Server version %s or higher is required." : "Requírese a versión %s ou superior do servidor.",
"Server version %s or lower is required." : "Requírese a versión %s ou inferior do servidor.",
"Logged in user must be an admin or sub admin" : "O usuario rexistrado debe ser un administrador ou subadministrador",
@@ -90,7 +90,7 @@ OC.L10N.register(
"%s enter the database name." : "%s introduza o nome da base de datos",
"%s you may not use dots in the database name" : "%s non se poden empregar puntos na base de datos",
"MySQL username and/or password not valid" : "Nome de usuario e/ou contrasinal de MySQL incorrecto",
- "You need to enter details of an existing account." : "Debe inserir os detalles dunha conta existente.",
+ "You need to enter details of an existing account." : "Debe introducir os detalles dunha conta existente.",
"Oracle connection could not be established" : "Non foi posíbel estabelecer a conexión con Oracle",
"Oracle username and/or password not valid" : "O nome de usuario e/ou contrasinal de Oracle é incorrecto",
"PostgreSQL username and/or password not valid" : "Nome de usuario e/ou contrasinal de PostgreSQL incorrecto",
@@ -182,11 +182,12 @@ OC.L10N.register(
"Can't read file" : "Non é posíbel ler o ficheiro",
"Application is not enabled" : "A aplicación non está activada",
"Authentication error" : "Produciuse un erro de autenticación",
- "Token expired. Please reload page." : "Marca caducada. Recargue a páxina.",
+ "Token expired. Please reload page." : "Testemuña caducada. Recargue a páxina.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Non hai controladores de base de datos (sqlite, mysql, ou postgresql) instalados.",
"Cannot write into \"config\" directory" : "Non é posíbel escribir no directorio «config»",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Polo xeral, isto pode ser fixado para permitirlle ao servidor web acceso de escritura ao directorio «config». Vexa %s",
"Cannot write into \"apps\" directory" : "Non é posíbel escribir no directorio «apps»",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Polo xeral, isto pódese solucionar dándolle ao servidor web acceso de escritura ao directorio das aplicacións ou desactivando a tenda de aplicacións no ficheiro de configuración. Vexa %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Polo xeral, isto pódese solucionar dándolle ao servidor web acceso de escritura ao directorio de aplicacións ou desactivando a appstore no ficheiro de configuración.",
"Cannot create \"data\" directory" : "Non é posíbel crear o directorio «data»",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Polo xeral, isto pódese solucionar dándolle ao servidor web acceso de escritura ao directorio raíz. Vexa %s.",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Polo xeral, pódense corrixir os permisos dándolle ao servidor web acceso de escritura ao directorio raíz. Vexa %s.",
@@ -213,7 +214,7 @@ OC.L10N.register(
"Your data directory is invalid" : "O seu directorio de datos non é correcto",
"Ensure there is a file called \".ocdata\" in the root of the data directory." : "Asegúrese de que existe un ficheiro chamado «.ocdata» na raíz do directorio de datos.",
"Action \"%s\" not supported or implemented." : "A acción «%s» non está admitida ou implementada.",
- "Authentication failed, wrong token or provider ID given" : "Produciuse un fallo de autenticación. Deuse unha marca ou un ID de provedor erróneos.",
+ "Authentication failed, wrong token or provider ID given" : "Produciuse un fallo de autenticación. Deuse unha testemuña ou un ID de provedor erróneos.",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Faltan parámetros para completar a solicitude. Parámetros que faltan: «%s»",
"ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "O ID «%1$s» xa está a ser usado polo provedor da nube federada «%2$s»",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "O provedor de nube federada co ID «%s» non existe.",
@@ -223,10 +224,8 @@ OC.L10N.register(
"Storage connection error. %s" : "Produciuse un erro na conexión ao almacenamento. %s",
"Storage is temporarily not available" : "O almacenamento non está dispoñíbel temporalmente",
"Storage connection timeout. %s" : "Esgotouse o tempo de conexión co almacenamento. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Eliminar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Admítense as seguintes bases de datos: %s",
+ "Following platforms are supported: %s" : "Admítense as seguintes plataformas: %s",
"Overview" : "Vista xeral",
"Basic settings" : "Axustes básicos",
"Sharing" : "Compartindo",
@@ -234,30 +233,6 @@ OC.L10N.register(
"Groupware" : "Software colaborativo",
"Personal info" : "Información persoal",
"Mobile & desktop" : "Móbil e escritorio",
- "Unlimited" : "Sen límites",
- "Verifying" : "Verificando",
- "Verifying …" : "Verificando…",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Fallou a compartición de %s, xa que a infraestrutura non permite accións do tipo %i",
- "Sharing %s failed, because the file does not exist" : "Fallou a compartición de %s, o ficheiro non existe",
- "Sharing %s failed, because you can not share with yourself" : "Fallou a compartición de %s por mor de que non pode compartir con vostede mesmo",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Fallou a compartición de %1$s, o usuario %2$s non existe",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Fallou a compartición de %1$s, o usuario %2$s non é membro en ningún grupo no que sexa membro %3$s",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Produciuse un fallou na compartición de %1$s, este elemento xa está compartido con %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Fallou a compartición de %1$s por mor de que este elemento xa foi compartido co usuario %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Fallou a compartición de %1$s, o grupo %2$s non existe",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Fallou a compartición de %1$s, %2$s non é membro do grupo %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Ten que fornecer un contrasinal para a ligazón pública, só se permiten ligazóns protexidas",
- "Sharing %s failed, because sharing with links is not allowed" : "Fallou a compartición de %s, non está permitido compartir con ligazóns",
- "Not allowed to create a federated share with the same user" : "Non está permitido crear un compartido federado co mesmo usuario",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Fallou a compartición de %1$s, non foi posíbel atopar %2$s,é probábel que o servidor non estea accesíbel.",
- "Share type %1$s is not valid for %2$s" : "Non se admite a compartición do tipo %1$s para %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Non é posíbel estabelecer a data de caducidade. As comparticións non poden caducar máis aló de %s após de seren compartidas",
- "Cannot set expiration date. Expiration date is in the past" : "Non é posíbel estabelecer a data de caducidade. A data de caducidade está no pasado.",
- "Sharing failed, because the user %s is the original sharer" : "Fallou a compartición, por mor de que o usuario %s é o compartidor orixinal",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Fallou a compartición de %1$s, os permisos superan os permisos concedidos a %2$s",
- "Sharing %s failed, because resharing is not allowed" : "Fallou a compartición de %s, non está permitido repetir a compartción",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Fallou a compartición de %1$s, a infraestrutura de compartición para %2$s non foi quen de atopar a orixe",
- "Sharing %s failed, because the file could not be found in the file cache" : "Fallou a compartición de %s, non foi posíbel atopar o ficheiro na caché de ficheiros"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Polo xeral, isto pódese solucionar dándolle ao servidor web acceso de escritura ao directorio das aplicacións ou desactivando a tenda de aplicacións no ficheiro de configuración. Vexa %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/gl.json b/lib/l10n/gl.json
index f31e3bcee53..188662b197f 100644
--- a/lib/l10n/gl.json
+++ b/lib/l10n/gl.json
@@ -1,9 +1,9 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "Non é posíbel escribir no directorio «config»!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Polo xeral, isto pode ser fixado para permitirlle ao servidor web acceso de escritura ao directorio «config»",
- "See %s" : "Vexa %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Ou, se prefire manter o ficheiro «config.php» como de só lectura, marque a opción «config_is_read_only» como «true» nel.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Polo xeral, isto pode ser fixado para permitirlle ao servidor web acceso de escritura ao directorio «config». Vexa %s",
+ "See %s" : "Vexa %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Polo xeral, isto pode ser fixado para permitirlle ao servidor web acceso de escritura ao directorio «config».",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Ou, se prefire manter o ficheiro «config.php» como de só lectura, marque a opción «config_is_read_only» como «true» nel. Vexa %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Os ficheiros da aplicación %1$s non foron substituídos correctamente. Asegúrese que é unha versión compatíbel co servidor.",
"Sample configuration detected" : "Detectouse a configuración de exemplo",
@@ -20,12 +20,12 @@
"PHP %s or higher is required." : "Requirese PHP %s ou superior.",
"PHP with a version lower than %s is required." : "Requírese PHP cunha versión inferior a %s.",
"%sbit or higher PHP required." : "Requirese PHP para %sbit ou superior.",
- "Following databases are supported: %s" : "Admítense as seguintes bases de datos: %s",
+ "The following databases are supported: %s" : "Admítense as seguintes bases de datos: %s",
"The command line tool %s could not be found" : "Non foi posíbel atopar a ferramenta de liña de ordes %s",
"The library %s is not available." : "Non está dispoñíbel a biblioteca %s.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Requírese a biblioteca %1$s cunha versión superior a %2$s - dispoñíbel a versión %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Requírese a biblioteca %1$s cunha versión inferior a %2$s - dispoñíbel a versión %3$s.",
- "Following platforms are supported: %s" : "Admítense as seguintes plataformas: %s",
+ "The following platforms are supported: %s" : "Admítense as seguintes plataformas: %s",
"Server version %s or higher is required." : "Requírese a versión %s ou superior do servidor.",
"Server version %s or lower is required." : "Requírese a versión %s ou inferior do servidor.",
"Logged in user must be an admin or sub admin" : "O usuario rexistrado debe ser un administrador ou subadministrador",
@@ -88,7 +88,7 @@
"%s enter the database name." : "%s introduza o nome da base de datos",
"%s you may not use dots in the database name" : "%s non se poden empregar puntos na base de datos",
"MySQL username and/or password not valid" : "Nome de usuario e/ou contrasinal de MySQL incorrecto",
- "You need to enter details of an existing account." : "Debe inserir os detalles dunha conta existente.",
+ "You need to enter details of an existing account." : "Debe introducir os detalles dunha conta existente.",
"Oracle connection could not be established" : "Non foi posíbel estabelecer a conexión con Oracle",
"Oracle username and/or password not valid" : "O nome de usuario e/ou contrasinal de Oracle é incorrecto",
"PostgreSQL username and/or password not valid" : "Nome de usuario e/ou contrasinal de PostgreSQL incorrecto",
@@ -180,11 +180,12 @@
"Can't read file" : "Non é posíbel ler o ficheiro",
"Application is not enabled" : "A aplicación non está activada",
"Authentication error" : "Produciuse un erro de autenticación",
- "Token expired. Please reload page." : "Marca caducada. Recargue a páxina.",
+ "Token expired. Please reload page." : "Testemuña caducada. Recargue a páxina.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Non hai controladores de base de datos (sqlite, mysql, ou postgresql) instalados.",
"Cannot write into \"config\" directory" : "Non é posíbel escribir no directorio «config»",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Polo xeral, isto pode ser fixado para permitirlle ao servidor web acceso de escritura ao directorio «config». Vexa %s",
"Cannot write into \"apps\" directory" : "Non é posíbel escribir no directorio «apps»",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Polo xeral, isto pódese solucionar dándolle ao servidor web acceso de escritura ao directorio das aplicacións ou desactivando a tenda de aplicacións no ficheiro de configuración. Vexa %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Polo xeral, isto pódese solucionar dándolle ao servidor web acceso de escritura ao directorio de aplicacións ou desactivando a appstore no ficheiro de configuración.",
"Cannot create \"data\" directory" : "Non é posíbel crear o directorio «data»",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Polo xeral, isto pódese solucionar dándolle ao servidor web acceso de escritura ao directorio raíz. Vexa %s.",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Polo xeral, pódense corrixir os permisos dándolle ao servidor web acceso de escritura ao directorio raíz. Vexa %s.",
@@ -211,7 +212,7 @@
"Your data directory is invalid" : "O seu directorio de datos non é correcto",
"Ensure there is a file called \".ocdata\" in the root of the data directory." : "Asegúrese de que existe un ficheiro chamado «.ocdata» na raíz do directorio de datos.",
"Action \"%s\" not supported or implemented." : "A acción «%s» non está admitida ou implementada.",
- "Authentication failed, wrong token or provider ID given" : "Produciuse un fallo de autenticación. Deuse unha marca ou un ID de provedor erróneos.",
+ "Authentication failed, wrong token or provider ID given" : "Produciuse un fallo de autenticación. Deuse unha testemuña ou un ID de provedor erróneos.",
"Parameters missing in order to complete the request. Missing Parameters: \"%s\"" : "Faltan parámetros para completar a solicitude. Parámetros que faltan: «%s»",
"ID \"%1$s\" already used by cloud federation provider \"%2$s\"" : "O ID «%1$s» xa está a ser usado polo provedor da nube federada «%2$s»",
"Cloud Federation Provider with ID: \"%s\" does not exist." : "O provedor de nube federada co ID «%s» non existe.",
@@ -221,10 +222,8 @@
"Storage connection error. %s" : "Produciuse un erro na conexión ao almacenamento. %s",
"Storage is temporarily not available" : "O almacenamento non está dispoñíbel temporalmente",
"Storage connection timeout. %s" : "Esgotouse o tempo de conexión co almacenamento. %s",
- "Create" : "Crear",
- "Change" : "Cambiar",
- "Delete" : "Eliminar",
- "Share" : "Compartir",
+ "Following databases are supported: %s" : "Admítense as seguintes bases de datos: %s",
+ "Following platforms are supported: %s" : "Admítense as seguintes plataformas: %s",
"Overview" : "Vista xeral",
"Basic settings" : "Axustes básicos",
"Sharing" : "Compartindo",
@@ -232,30 +231,6 @@
"Groupware" : "Software colaborativo",
"Personal info" : "Información persoal",
"Mobile & desktop" : "Móbil e escritorio",
- "Unlimited" : "Sen límites",
- "Verifying" : "Verificando",
- "Verifying …" : "Verificando…",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Fallou a compartición de %s, xa que a infraestrutura non permite accións do tipo %i",
- "Sharing %s failed, because the file does not exist" : "Fallou a compartición de %s, o ficheiro non existe",
- "Sharing %s failed, because you can not share with yourself" : "Fallou a compartición de %s por mor de que non pode compartir con vostede mesmo",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Fallou a compartición de %1$s, o usuario %2$s non existe",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Fallou a compartición de %1$s, o usuario %2$s non é membro en ningún grupo no que sexa membro %3$s",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Produciuse un fallou na compartición de %1$s, este elemento xa está compartido con %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Fallou a compartición de %1$s por mor de que este elemento xa foi compartido co usuario %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Fallou a compartición de %1$s, o grupo %2$s non existe",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Fallou a compartición de %1$s, %2$s non é membro do grupo %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Ten que fornecer un contrasinal para a ligazón pública, só se permiten ligazóns protexidas",
- "Sharing %s failed, because sharing with links is not allowed" : "Fallou a compartición de %s, non está permitido compartir con ligazóns",
- "Not allowed to create a federated share with the same user" : "Non está permitido crear un compartido federado co mesmo usuario",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Fallou a compartición de %1$s, non foi posíbel atopar %2$s,é probábel que o servidor non estea accesíbel.",
- "Share type %1$s is not valid for %2$s" : "Non se admite a compartición do tipo %1$s para %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Non é posíbel estabelecer a data de caducidade. As comparticións non poden caducar máis aló de %s após de seren compartidas",
- "Cannot set expiration date. Expiration date is in the past" : "Non é posíbel estabelecer a data de caducidade. A data de caducidade está no pasado.",
- "Sharing failed, because the user %s is the original sharer" : "Fallou a compartición, por mor de que o usuario %s é o compartidor orixinal",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Fallou a compartición de %1$s, os permisos superan os permisos concedidos a %2$s",
- "Sharing %s failed, because resharing is not allowed" : "Fallou a compartición de %s, non está permitido repetir a compartción",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Fallou a compartición de %1$s, a infraestrutura de compartición para %2$s non foi quen de atopar a orixe",
- "Sharing %s failed, because the file could not be found in the file cache" : "Fallou a compartición de %s, non foi posíbel atopar o ficheiro na caché de ficheiros"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Polo xeral, isto pódese solucionar dándolle ao servidor web acceso de escritura ao directorio das aplicacións ou desactivando a tenda de aplicacións no ficheiro de configuración. Vexa %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/he.js b/lib/l10n/he.js
index 0cc6fdda3f4..b42247d0cfe 100644
--- a/lib/l10n/he.js
+++ b/lib/l10n/he.js
@@ -3,9 +3,9 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "לא ניתן לכתוב לתיקיית „config”!",
"This can usually be fixed by giving the webserver write access to the config directory" : "בדרך כלל ניתן לפתור את הבעיה על ידי כך שנותנים לתכנית השרת הרשאות כתיבה לתיקיית config",
- "See %s" : "יש לעיין ב־%s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "או, אם עדיף לך לשמור על config.php לקריאה בלבד, ניתן להגדיר את האפשרות „config_is_read_only” לערך true.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "בדרך כלל ניתן לתקן זאת על ידי הענקת גישה לשרת לכתוב לתיקיית ההגדרות. נא לעיין ב־%s",
+ "See %s" : "יש לעיין ב־%s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "בדרך כלל ניתן לתקן זאת על ידי מתן גישת כתיבה לשרת לתיקיית ההגדרות (config).",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "או, אם עדיף לך לשמור על config.php לקריאה בלבד, ניתן להגדיר את האפשרות „config_is_read_only” לערך true. נא לעיין ב־%s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "הקבצים של היישומון %1$s לא מוקמו במקום הנכון. נא לוודא שזו גרסה שהשרת תומך בה.",
"Sample configuration detected" : "התגלתה דוגמת תצורה",
@@ -17,11 +17,10 @@ OC.L10N.register(
"PHP %s or higher is required." : "נדרש PHP בגרסת %s ומעלה.",
"PHP with a version lower than %s is required." : "נדרש PHP בגרסה נמוכה מ- %s.",
"%sbit or higher PHP required." : "נדרש PHP בגרסת %s ומעלה.",
- "Following databases are supported: %s" : "מסדי הנתונים הבאים נתמכים: %s",
+ "The following databases are supported: %s" : "יש תמיכה במסדי הנתונים הבאים: %s",
"The command line tool %s could not be found" : "כלי שורת הפקודה %s לא אותר",
"The library %s is not available." : "הספריה %s אינה זמינה.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "נדרשת ספרייה %1$s עם גרסה מתחת ל־%2$s - הגרסה הזמינה היא %3$s.",
- "Following platforms are supported: %s" : "הפלטפורמות הבאות נתמכות: %s",
"Server version %s or higher is required." : "נדרשת גרסה שרת %s ומעלה.",
"Server version %s or lower is required." : "נדרשת גרסה שרת %s ומטה.",
"Logged in user must be an admin" : "על המשתמש שנכנס להיות מנהל",
@@ -84,6 +83,7 @@ OC.L10N.register(
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "צד אחורי לשיתוף %s חייב ליישם את ממשק OCP\\Share_Backend",
"Sharing backend %s not found" : "צד אחורי לשיתוף %s לא נמצא",
"Sharing backend for %s not found" : "צד אחורי לשיתוף של %s לא נמצא",
+ "»%s« added a note to a file shared with you" : "התווספה הערה על קובץ ששותף את על ידי „%s”",
"Open »%s«" : "פתיחת „%s”",
"%1$s via %2$s" : "%1$s דרך %2$s",
"You are not allowed to share %s" : "אינך רשאי/ת לשתף %s",
@@ -92,6 +92,8 @@ OC.L10N.register(
"Files can’t be shared with create permissions" : "לא ניתן לשתף קבצים עם הרשאות יצירה",
"Expiration date is in the past" : "תאריך תפוגה הנו בעבר",
"Can’t set expiration date more than %s days in the future" : "לא ניתן להגדיר את תאריך התפוגה מעל %s ימים בעתיד",
+ "%1$s shared »%2$s« with you" : "%2$s שותף אתך על ידי %1$s",
+ "%1$s shared »%2$s« with you." : "„%2$s” שותף אתך על ידי %1$s.",
"Click the button below to open it." : "יש ללחוץ על הכפתור להלן כדי לפתוח אותו.",
"The requested share does not exist anymore" : "השיתוף המבוקש אינו קיים עוד",
"Could not find category \"%s\"" : "לא ניתן למצוא את הקטגוריה „%s“",
@@ -157,8 +159,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "פג תוקף. נא לטעון שוב את הדף.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "לא מותקנים דרייברים למסד הנתונים (sqlite, mysql, או postgresql).",
"Cannot write into \"config\" directory" : "לא ניתן לכתוב לתיקיית \"config\"!",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "בדרך כלל ניתן לתקן זאת על ידי הענקת גישה לשרת לכתוב לתיקיית ההגדרות. נא לעיין ב־%s",
"Cannot write into \"apps\" directory" : "לא ניתן לכתוב לתיקיית \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "בדרך כלל ניתן לתקן זאת על ידי הענקת גישה לשרת לכתוב לתיקיית היישומונים או להשבית את חנות היישומונים בקובץ ההגדרות. נא לעיין ב־%s",
"Cannot create \"data\" directory" : "לא ניתן ליצור תיקיית „data”",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "בדרך כלל ניתן לתקן זאת על ידי הענקת גישה לשרת לכתוב לתיקיית הבסיס. נא לעיין ב־%s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "בדרך כלל ניתן לתקן הרשאות על ידי מתן גישה לשרת שלך אל תיקיית העל. נא לעיין ב־%s.",
@@ -193,10 +195,8 @@ OC.L10N.register(
"Storage connection error. %s" : "שגיאת חיבור אחסון. %s",
"Storage is temporarily not available" : "האחסון אינו זמין כרגע",
"Storage connection timeout. %s" : "פסק זמן חיבור אחסון. %s",
- "Create" : "יצירה",
- "Change" : "שינוי",
- "Delete" : "מחיקה",
- "Share" : "שיתוף",
+ "Following databases are supported: %s" : "מסדי הנתונים הבאים נתמכים: %s",
+ "Following platforms are supported: %s" : "הפלטפורמות הבאות נתמכות: %s",
"Overview" : "סקירה",
"Basic settings" : "הגדרות בסיסיות",
"Sharing" : "שיתוף",
@@ -204,22 +204,6 @@ OC.L10N.register(
"Groupware" : "קבוצתי",
"Personal info" : "פרטים אישיים",
"Mobile & desktop" : "נייד ושולחן עבודה",
- "Unlimited" : "ללא הגבלה",
- "Verifying" : "מתבצע אימות",
- "Verifying …" : "מתבצע אימות…",
- "Verify" : "אימות",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "השיתוף %s נכשל, כיוון שהצד האחורי אינו מאפשר שיתופים מסוג %i",
- "Sharing %s failed, because the file does not exist" : "השיתוף %s נכשל, כיוון שהקובץ אינו קיים",
- "Sharing %s failed, because you can not share with yourself" : "השיתוף %s נכשל, כיוון שלא ניתן לשתף עם עצמך",
- "Sharing %1$s failed, because the user %2$s does not exist" : "השיתוף של %1$s נכשל כיוון שהמשתמש %2$s אינו קיים",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "השיתוף של %1$s נכשל, כיוון שהמשתמש %2$s אינו חבר בקבוצות באף קבוצה בה יש ל־%3$s חברות בה",
- "You need to provide a password to create a public link, only protected links are allowed" : "יש לספק סיסמא ליצירת קישור ציבורי, רק קישורים מוגנים מותרים",
- "Sharing %s failed, because sharing with links is not allowed" : "השיתוף %s נכשל, כיוון ששיתוף עם קישור אינו מותר",
- "Not allowed to create a federated share with the same user" : "אסור ליצור שיתוף מאוגד עם אותו משתמש",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "לא ניתן לקבוע תאריך תפוגה. שיתופים אינם יכולים לפוג תוקף מאוחר יותר מ- %s לאחר ששותפו",
- "Cannot set expiration date. Expiration date is in the past" : "לא ניתן לקבוע תאריך תפוגה. תאריך התפוגה הנו בעבר",
- "Sharing failed, because the user %s is the original sharer" : "שיתוף נכשל, כיוון שמשתמש %s הנו המשתף המקורי",
- "Sharing %s failed, because resharing is not allowed" : "השיתוף %s נכשל, כיוון ששיתוף מחודש אסור",
- "Sharing %s failed, because the file could not be found in the file cache" : "השיתוף %s נכשל, כייון שלא ניתן היה למצוא את הקובץ בזכרון המטמון"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "בדרך כלל ניתן לתקן זאת על ידי הענקת גישה לשרת לכתוב לתיקיית היישומונים או להשבית את חנות היישומונים בקובץ ההגדרות. נא לעיין ב־%s"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;");
diff --git a/lib/l10n/he.json b/lib/l10n/he.json
index 65709c7d55b..1f137b46688 100644
--- a/lib/l10n/he.json
+++ b/lib/l10n/he.json
@@ -1,9 +1,9 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "לא ניתן לכתוב לתיקיית „config”!",
"This can usually be fixed by giving the webserver write access to the config directory" : "בדרך כלל ניתן לפתור את הבעיה על ידי כך שנותנים לתכנית השרת הרשאות כתיבה לתיקיית config",
- "See %s" : "יש לעיין ב־%s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "או, אם עדיף לך לשמור על config.php לקריאה בלבד, ניתן להגדיר את האפשרות „config_is_read_only” לערך true.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "בדרך כלל ניתן לתקן זאת על ידי הענקת גישה לשרת לכתוב לתיקיית ההגדרות. נא לעיין ב־%s",
+ "See %s" : "יש לעיין ב־%s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "בדרך כלל ניתן לתקן זאת על ידי מתן גישת כתיבה לשרת לתיקיית ההגדרות (config).",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "או, אם עדיף לך לשמור על config.php לקריאה בלבד, ניתן להגדיר את האפשרות „config_is_read_only” לערך true. נא לעיין ב־%s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "הקבצים של היישומון %1$s לא מוקמו במקום הנכון. נא לוודא שזו גרסה שהשרת תומך בה.",
"Sample configuration detected" : "התגלתה דוגמת תצורה",
@@ -15,11 +15,10 @@
"PHP %s or higher is required." : "נדרש PHP בגרסת %s ומעלה.",
"PHP with a version lower than %s is required." : "נדרש PHP בגרסה נמוכה מ- %s.",
"%sbit or higher PHP required." : "נדרש PHP בגרסת %s ומעלה.",
- "Following databases are supported: %s" : "מסדי הנתונים הבאים נתמכים: %s",
+ "The following databases are supported: %s" : "יש תמיכה במסדי הנתונים הבאים: %s",
"The command line tool %s could not be found" : "כלי שורת הפקודה %s לא אותר",
"The library %s is not available." : "הספריה %s אינה זמינה.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "נדרשת ספרייה %1$s עם גרסה מתחת ל־%2$s - הגרסה הזמינה היא %3$s.",
- "Following platforms are supported: %s" : "הפלטפורמות הבאות נתמכות: %s",
"Server version %s or higher is required." : "נדרשת גרסה שרת %s ומעלה.",
"Server version %s or lower is required." : "נדרשת גרסה שרת %s ומטה.",
"Logged in user must be an admin" : "על המשתמש שנכנס להיות מנהל",
@@ -82,6 +81,7 @@
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "צד אחורי לשיתוף %s חייב ליישם את ממשק OCP\\Share_Backend",
"Sharing backend %s not found" : "צד אחורי לשיתוף %s לא נמצא",
"Sharing backend for %s not found" : "צד אחורי לשיתוף של %s לא נמצא",
+ "»%s« added a note to a file shared with you" : "התווספה הערה על קובץ ששותף את על ידי „%s”",
"Open »%s«" : "פתיחת „%s”",
"%1$s via %2$s" : "%1$s דרך %2$s",
"You are not allowed to share %s" : "אינך רשאי/ת לשתף %s",
@@ -90,6 +90,8 @@
"Files can’t be shared with create permissions" : "לא ניתן לשתף קבצים עם הרשאות יצירה",
"Expiration date is in the past" : "תאריך תפוגה הנו בעבר",
"Can’t set expiration date more than %s days in the future" : "לא ניתן להגדיר את תאריך התפוגה מעל %s ימים בעתיד",
+ "%1$s shared »%2$s« with you" : "%2$s שותף אתך על ידי %1$s",
+ "%1$s shared »%2$s« with you." : "„%2$s” שותף אתך על ידי %1$s.",
"Click the button below to open it." : "יש ללחוץ על הכפתור להלן כדי לפתוח אותו.",
"The requested share does not exist anymore" : "השיתוף המבוקש אינו קיים עוד",
"Could not find category \"%s\"" : "לא ניתן למצוא את הקטגוריה „%s“",
@@ -155,8 +157,8 @@
"Token expired. Please reload page." : "פג תוקף. נא לטעון שוב את הדף.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "לא מותקנים דרייברים למסד הנתונים (sqlite, mysql, או postgresql).",
"Cannot write into \"config\" directory" : "לא ניתן לכתוב לתיקיית \"config\"!",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "בדרך כלל ניתן לתקן זאת על ידי הענקת גישה לשרת לכתוב לתיקיית ההגדרות. נא לעיין ב־%s",
"Cannot write into \"apps\" directory" : "לא ניתן לכתוב לתיקיית \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "בדרך כלל ניתן לתקן זאת על ידי הענקת גישה לשרת לכתוב לתיקיית היישומונים או להשבית את חנות היישומונים בקובץ ההגדרות. נא לעיין ב־%s",
"Cannot create \"data\" directory" : "לא ניתן ליצור תיקיית „data”",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "בדרך כלל ניתן לתקן זאת על ידי הענקת גישה לשרת לכתוב לתיקיית הבסיס. נא לעיין ב־%s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "בדרך כלל ניתן לתקן הרשאות על ידי מתן גישה לשרת שלך אל תיקיית העל. נא לעיין ב־%s.",
@@ -191,10 +193,8 @@
"Storage connection error. %s" : "שגיאת חיבור אחסון. %s",
"Storage is temporarily not available" : "האחסון אינו זמין כרגע",
"Storage connection timeout. %s" : "פסק זמן חיבור אחסון. %s",
- "Create" : "יצירה",
- "Change" : "שינוי",
- "Delete" : "מחיקה",
- "Share" : "שיתוף",
+ "Following databases are supported: %s" : "מסדי הנתונים הבאים נתמכים: %s",
+ "Following platforms are supported: %s" : "הפלטפורמות הבאות נתמכות: %s",
"Overview" : "סקירה",
"Basic settings" : "הגדרות בסיסיות",
"Sharing" : "שיתוף",
@@ -202,22 +202,6 @@
"Groupware" : "קבוצתי",
"Personal info" : "פרטים אישיים",
"Mobile & desktop" : "נייד ושולחן עבודה",
- "Unlimited" : "ללא הגבלה",
- "Verifying" : "מתבצע אימות",
- "Verifying …" : "מתבצע אימות…",
- "Verify" : "אימות",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "השיתוף %s נכשל, כיוון שהצד האחורי אינו מאפשר שיתופים מסוג %i",
- "Sharing %s failed, because the file does not exist" : "השיתוף %s נכשל, כיוון שהקובץ אינו קיים",
- "Sharing %s failed, because you can not share with yourself" : "השיתוף %s נכשל, כיוון שלא ניתן לשתף עם עצמך",
- "Sharing %1$s failed, because the user %2$s does not exist" : "השיתוף של %1$s נכשל כיוון שהמשתמש %2$s אינו קיים",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "השיתוף של %1$s נכשל, כיוון שהמשתמש %2$s אינו חבר בקבוצות באף קבוצה בה יש ל־%3$s חברות בה",
- "You need to provide a password to create a public link, only protected links are allowed" : "יש לספק סיסמא ליצירת קישור ציבורי, רק קישורים מוגנים מותרים",
- "Sharing %s failed, because sharing with links is not allowed" : "השיתוף %s נכשל, כיוון ששיתוף עם קישור אינו מותר",
- "Not allowed to create a federated share with the same user" : "אסור ליצור שיתוף מאוגד עם אותו משתמש",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "לא ניתן לקבוע תאריך תפוגה. שיתופים אינם יכולים לפוג תוקף מאוחר יותר מ- %s לאחר ששותפו",
- "Cannot set expiration date. Expiration date is in the past" : "לא ניתן לקבוע תאריך תפוגה. תאריך התפוגה הנו בעבר",
- "Sharing failed, because the user %s is the original sharer" : "שיתוף נכשל, כיוון שמשתמש %s הנו המשתף המקורי",
- "Sharing %s failed, because resharing is not allowed" : "השיתוף %s נכשל, כיוון ששיתוף מחודש אסור",
- "Sharing %s failed, because the file could not be found in the file cache" : "השיתוף %s נכשל, כייון שלא ניתן היה למצוא את הקובץ בזכרון המטמון"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "בדרך כלל ניתן לתקן זאת על ידי הענקת גישה לשרת לכתוב לתיקיית היישומונים או להשבית את חנות היישומונים בקובץ ההגדרות. נא לעיין ב־%s"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"
} \ No newline at end of file
diff --git a/lib/l10n/hr.js b/lib/l10n/hr.js
index 4a0475a2041..dcc14a53f24 100644
--- a/lib/l10n/hr.js
+++ b/lib/l10n/hr.js
@@ -3,9 +3,9 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "Pisanje u direktorij „config” nije moguće!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Ovo se obično može ispraviti tako da se web poslužitelju dopusti pristup za pisanje u direktoriju config",
- "See %s" : "Pogledajte %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Ako želite da datoteku config.php ostane samo za čitanje, postavite opciju „config_is_read_only” na „true”.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Ovo se obično može popraviti tako da se web poslužitelju dopusti pristup za pisanje u konfiguracijski direktorij. Pogledajte %s",
+ "See %s" : "Pogledajte %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Ovo se obično može ispraviti tako da se web-poslužitelju dopusti pristup za pisanje u direktoriju config.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Ako želite da datoteku config.php ostane samo za čitanje, postavite opciju „config_is_read_only” na „true”. Pogledajte %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Datoteke aplikacije %1$s nisu ispravno zamijenjene. Provjerite je li inačica kompatibilna s poslužiteljem.",
"Sample configuration detected" : "Pronađena ogledna konfiguracija",
@@ -17,16 +17,15 @@ OC.L10N.register(
"Education Edition" : "Obrazovno izdanje",
"Enterprise bundle" : "Enterprise paket",
"Groupware bundle" : "Paket grupnog softvera",
+ "Hub bundle" : "Paket alata",
"Social sharing bundle" : "Paket dijeljenja na društvenim mrežama",
"PHP %s or higher is required." : "PHP inačica treba biti %s ili viša.",
"PHP with a version lower than %s is required." : "Potreban je PHP inačice manje od %s.",
"%sbit or higher PHP required." : "Potreban je %s-bitni ili viši PHP.",
- "Following databases are supported: %s" : "Podržane su sljedeće baze podataka: %s",
"The command line tool %s could not be found" : "Alat naredbenog retka %s nije pronađen",
"The library %s is not available." : "Biblioteka %s nije dostupna.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Potrebna je biblioteka %1$s inačice veće od %2$s – dostupna je inačica %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Potrebna je biblioteka %1$s inačice manje od %2$s – dostupna je inačica %3$s.",
- "Following platforms are supported: %s" : "Podržane su sljedeće platforme: %s",
"Server version %s or higher is required." : "Inačica poslužitelja treba biti %s ili viša.",
"Server version %s or lower is required." : "Potrebna je inačica poslužitelja %s ili niža.",
"Logged in user must be an admin or sub admin" : "Prijavljeni korisnik mora biti administrator ili podadministrator",
@@ -88,6 +87,7 @@ OC.L10N.register(
"%s enter the database username." : "%s unesite korisničko ime baze podataka.",
"%s enter the database name." : "%s unesite naziv baze podataka.",
"%s you may not use dots in the database name" : "%s ne smijete koristiti točke u nazivu baze podataka",
+ "MySQL username and/or password not valid" : "Neispravno korisničko ime i/ili zaporka baze podataka MySQL",
"You need to enter details of an existing account." : "Trebate unijeti informacije o postojećem računu.",
"Oracle connection could not be established" : "Nije moguće uspostaviti vezu s bazom podataka Oracle",
"Oracle username and/or password not valid" : "Neispravno korisničko ime i/ili zaporka baze podataka Oracle",
@@ -183,8 +183,9 @@ OC.L10N.register(
"Token expired. Please reload page." : "Token je istekao. Ponovno učitajte stranicu.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Nisu instalirani upravljački programi baze podataka (sqlite, mysql ili postgresql).",
"Cannot write into \"config\" directory" : "Pisanje u direktorij „config” nije moguće",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Ovo se obično može popraviti tako da se web poslužitelju dopusti pristup za pisanje u konfiguracijski direktorij. Pogledajte %s",
"Cannot write into \"apps\" directory" : "Nije moguće pisati u direktorij „apps”",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Ovo se obično može popraviti tako da se web poslužitelju dopusti pristup za pisanje u aplikacijski direktorij ili onemogućivanjem appstorea u konfiguracijskoj datoteci. Pogledajte %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Ovo se obično može popraviti tako da se web-poslužitelju dopusti pristup za pisanje u aplikacijski direktorij ili onemogućivanjem trgovine aplikacijama (App Store) u konfiguracijskoj datoteci.",
"Cannot create \"data\" directory" : "Nije moguće stvoriti direktorij „data”",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Ovo se obično može popraviti tako da se web poslužitelju dopusti pristup za pisanje u korijenski direktorij. Pogledajte %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Dopuštenja se obično mogu popraviti tako da se web poslužitelju dopusti pristup za pisanje u korijenski direktorij. Pogledajte %s.",
@@ -221,10 +222,8 @@ OC.L10N.register(
"Storage connection error. %s" : "Pogreška veze pohrane. %s",
"Storage is temporarily not available" : "Pohrana privremeno nije dostupna",
"Storage connection timeout. %s" : "Istek veze pohrane. %s",
- "Create" : "Stvori",
- "Change" : "Promijeni",
- "Delete" : "Izbriši",
- "Share" : "Dijeli",
+ "Following databases are supported: %s" : "Podržane su sljedeće baze podataka: %s",
+ "Following platforms are supported: %s" : "Podržane su sljedeće platforme: %s",
"Overview" : "Pregled",
"Basic settings" : "Osnovne postavke",
"Sharing" : "Dijeljenje",
@@ -232,30 +231,6 @@ OC.L10N.register(
"Groupware" : "Groupware",
"Personal info" : "Osobne informacije",
"Mobile & desktop" : "Mobilni uređaji i osobna računala",
- "Unlimited" : "Neograničeno",
- "Verifying" : "Provjeravanje",
- "Verifying …" : "Provjeravanje…",
- "Verify" : "Provjeri",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Dijeljenje %s nije uspjelo jer pozadina ne dopušta dijeljenja iz vrste %i",
- "Sharing %s failed, because the file does not exist" : "Dijeljenje %s nije uspjelo jer ta datoteka ne postoji",
- "Sharing %s failed, because you can not share with yourself" : "Dijeljenje %s nije uspjelo jer ne možete dijeliti sa sobom",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Dijeljenje %1$s nije uspjelo jer korisnik %2$s ne postoji",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Dijeljenje %1$s nije uspjelo jer korisnik %2$s nije član niti jedne grupe u kojoj je %3$s član",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Dijeljenje %1$s nije uspjelo jer je ova stavka već podijeljena s %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Dijeljenje %1$s nije uspjelo jer je ova stavka već podijeljena s korisnikom %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Dijeljenje %1$s nije uspjelo jer grupa %2$s ne postoji",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Dijeljenje %1$s nije uspjelo jer %2$s nije član grupe %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Kako biste stvorili javnu poveznicu prvo morate navesti zaporku, dopuštene su samo zaštićene poveznice",
- "Sharing %s failed, because sharing with links is not allowed" : "Dijeljenje %s nije uspjelo jer dijeljenje putem poveznica nije dopušteno",
- "Not allowed to create a federated share with the same user" : "Nije dopušteno stvaranje udruženog dijeljenja s istim korisnikom",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Dijeljenje %1$s nije uspjelo, nije bilo moguće pronaći %2$s, možda je poslužitelj trenutno nedostupan.",
- "Share type %1$s is not valid for %2$s" : "Vrsta dijeljenja %1$s ne vrijedi za %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nije moguće postaviti datum isteka. Nakon što su dijeljeni, ne mogu isteći kasnije od %s",
- "Cannot set expiration date. Expiration date is in the past" : "Nije moguće postaviti datum isteka. Datum isteka je u prošlosti",
- "Sharing failed, because the user %s is the original sharer" : "Dijeljenje nije uspjelo jer je korisnik %s izvorni dionik",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Dijeljenje %1$s nije uspjelo jer dopuštenja premašuju dopuštenja za koje %2$s ima odobrenje",
- "Sharing %s failed, because resharing is not allowed" : "Dijeljenje %s nije uspjelo jer ponovno dijeljenje nije dopušteno",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Dijeljenje %1$s nije uspjelo jer pozadina za %2$s nije mogla pronaći svoj izvor",
- "Sharing %s failed, because the file could not be found in the file cache" : "Dijeljenje %s nije uspjelo jer u predmemoriji datoteke nije nađena datoteka"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Ovo se obično može popraviti tako da se web poslužitelju dopusti pristup za pisanje u aplikacijski direktorij ili onemogućivanjem appstorea u konfiguracijskoj datoteci. Pogledajte %s"
},
"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;");
diff --git a/lib/l10n/hr.json b/lib/l10n/hr.json
index 266f89faab2..b7fec0fe2d6 100644
--- a/lib/l10n/hr.json
+++ b/lib/l10n/hr.json
@@ -1,9 +1,9 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "Pisanje u direktorij „config” nije moguće!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Ovo se obično može ispraviti tako da se web poslužitelju dopusti pristup za pisanje u direktoriju config",
- "See %s" : "Pogledajte %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Ako želite da datoteku config.php ostane samo za čitanje, postavite opciju „config_is_read_only” na „true”.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Ovo se obično može popraviti tako da se web poslužitelju dopusti pristup za pisanje u konfiguracijski direktorij. Pogledajte %s",
+ "See %s" : "Pogledajte %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Ovo se obično može ispraviti tako da se web-poslužitelju dopusti pristup za pisanje u direktoriju config.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Ako želite da datoteku config.php ostane samo za čitanje, postavite opciju „config_is_read_only” na „true”. Pogledajte %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Datoteke aplikacije %1$s nisu ispravno zamijenjene. Provjerite je li inačica kompatibilna s poslužiteljem.",
"Sample configuration detected" : "Pronađena ogledna konfiguracija",
@@ -15,16 +15,15 @@
"Education Edition" : "Obrazovno izdanje",
"Enterprise bundle" : "Enterprise paket",
"Groupware bundle" : "Paket grupnog softvera",
+ "Hub bundle" : "Paket alata",
"Social sharing bundle" : "Paket dijeljenja na društvenim mrežama",
"PHP %s or higher is required." : "PHP inačica treba biti %s ili viša.",
"PHP with a version lower than %s is required." : "Potreban je PHP inačice manje od %s.",
"%sbit or higher PHP required." : "Potreban je %s-bitni ili viši PHP.",
- "Following databases are supported: %s" : "Podržane su sljedeće baze podataka: %s",
"The command line tool %s could not be found" : "Alat naredbenog retka %s nije pronađen",
"The library %s is not available." : "Biblioteka %s nije dostupna.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Potrebna je biblioteka %1$s inačice veće od %2$s – dostupna je inačica %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Potrebna je biblioteka %1$s inačice manje od %2$s – dostupna je inačica %3$s.",
- "Following platforms are supported: %s" : "Podržane su sljedeće platforme: %s",
"Server version %s or higher is required." : "Inačica poslužitelja treba biti %s ili viša.",
"Server version %s or lower is required." : "Potrebna je inačica poslužitelja %s ili niža.",
"Logged in user must be an admin or sub admin" : "Prijavljeni korisnik mora biti administrator ili podadministrator",
@@ -86,6 +85,7 @@
"%s enter the database username." : "%s unesite korisničko ime baze podataka.",
"%s enter the database name." : "%s unesite naziv baze podataka.",
"%s you may not use dots in the database name" : "%s ne smijete koristiti točke u nazivu baze podataka",
+ "MySQL username and/or password not valid" : "Neispravno korisničko ime i/ili zaporka baze podataka MySQL",
"You need to enter details of an existing account." : "Trebate unijeti informacije o postojećem računu.",
"Oracle connection could not be established" : "Nije moguće uspostaviti vezu s bazom podataka Oracle",
"Oracle username and/or password not valid" : "Neispravno korisničko ime i/ili zaporka baze podataka Oracle",
@@ -181,8 +181,9 @@
"Token expired. Please reload page." : "Token je istekao. Ponovno učitajte stranicu.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Nisu instalirani upravljački programi baze podataka (sqlite, mysql ili postgresql).",
"Cannot write into \"config\" directory" : "Pisanje u direktorij „config” nije moguće",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Ovo se obično može popraviti tako da se web poslužitelju dopusti pristup za pisanje u konfiguracijski direktorij. Pogledajte %s",
"Cannot write into \"apps\" directory" : "Nije moguće pisati u direktorij „apps”",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Ovo se obično može popraviti tako da se web poslužitelju dopusti pristup za pisanje u aplikacijski direktorij ili onemogućivanjem appstorea u konfiguracijskoj datoteci. Pogledajte %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Ovo se obično može popraviti tako da se web-poslužitelju dopusti pristup za pisanje u aplikacijski direktorij ili onemogućivanjem trgovine aplikacijama (App Store) u konfiguracijskoj datoteci.",
"Cannot create \"data\" directory" : "Nije moguće stvoriti direktorij „data”",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Ovo se obično može popraviti tako da se web poslužitelju dopusti pristup za pisanje u korijenski direktorij. Pogledajte %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Dopuštenja se obično mogu popraviti tako da se web poslužitelju dopusti pristup za pisanje u korijenski direktorij. Pogledajte %s.",
@@ -219,10 +220,8 @@
"Storage connection error. %s" : "Pogreška veze pohrane. %s",
"Storage is temporarily not available" : "Pohrana privremeno nije dostupna",
"Storage connection timeout. %s" : "Istek veze pohrane. %s",
- "Create" : "Stvori",
- "Change" : "Promijeni",
- "Delete" : "Izbriši",
- "Share" : "Dijeli",
+ "Following databases are supported: %s" : "Podržane su sljedeće baze podataka: %s",
+ "Following platforms are supported: %s" : "Podržane su sljedeće platforme: %s",
"Overview" : "Pregled",
"Basic settings" : "Osnovne postavke",
"Sharing" : "Dijeljenje",
@@ -230,30 +229,6 @@
"Groupware" : "Groupware",
"Personal info" : "Osobne informacije",
"Mobile & desktop" : "Mobilni uređaji i osobna računala",
- "Unlimited" : "Neograničeno",
- "Verifying" : "Provjeravanje",
- "Verifying …" : "Provjeravanje…",
- "Verify" : "Provjeri",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Dijeljenje %s nije uspjelo jer pozadina ne dopušta dijeljenja iz vrste %i",
- "Sharing %s failed, because the file does not exist" : "Dijeljenje %s nije uspjelo jer ta datoteka ne postoji",
- "Sharing %s failed, because you can not share with yourself" : "Dijeljenje %s nije uspjelo jer ne možete dijeliti sa sobom",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Dijeljenje %1$s nije uspjelo jer korisnik %2$s ne postoji",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Dijeljenje %1$s nije uspjelo jer korisnik %2$s nije član niti jedne grupe u kojoj je %3$s član",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Dijeljenje %1$s nije uspjelo jer je ova stavka već podijeljena s %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Dijeljenje %1$s nije uspjelo jer je ova stavka već podijeljena s korisnikom %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Dijeljenje %1$s nije uspjelo jer grupa %2$s ne postoji",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Dijeljenje %1$s nije uspjelo jer %2$s nije član grupe %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Kako biste stvorili javnu poveznicu prvo morate navesti zaporku, dopuštene su samo zaštićene poveznice",
- "Sharing %s failed, because sharing with links is not allowed" : "Dijeljenje %s nije uspjelo jer dijeljenje putem poveznica nije dopušteno",
- "Not allowed to create a federated share with the same user" : "Nije dopušteno stvaranje udruženog dijeljenja s istim korisnikom",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Dijeljenje %1$s nije uspjelo, nije bilo moguće pronaći %2$s, možda je poslužitelj trenutno nedostupan.",
- "Share type %1$s is not valid for %2$s" : "Vrsta dijeljenja %1$s ne vrijedi za %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nije moguće postaviti datum isteka. Nakon što su dijeljeni, ne mogu isteći kasnije od %s",
- "Cannot set expiration date. Expiration date is in the past" : "Nije moguće postaviti datum isteka. Datum isteka je u prošlosti",
- "Sharing failed, because the user %s is the original sharer" : "Dijeljenje nije uspjelo jer je korisnik %s izvorni dionik",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Dijeljenje %1$s nije uspjelo jer dopuštenja premašuju dopuštenja za koje %2$s ima odobrenje",
- "Sharing %s failed, because resharing is not allowed" : "Dijeljenje %s nije uspjelo jer ponovno dijeljenje nije dopušteno",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Dijeljenje %1$s nije uspjelo jer pozadina za %2$s nije mogla pronaći svoj izvor",
- "Sharing %s failed, because the file could not be found in the file cache" : "Dijeljenje %s nije uspjelo jer u predmemoriji datoteke nije nađena datoteka"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Ovo se obično može popraviti tako da se web poslužitelju dopusti pristup za pisanje u aplikacijski direktorij ili onemogućivanjem appstorea u konfiguracijskoj datoteci. Pogledajte %s"
},"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"
} \ No newline at end of file
diff --git a/lib/l10n/hu.js b/lib/l10n/hu.js
index 32ec32e971b..aeb115480b0 100644
--- a/lib/l10n/hu.js
+++ b/lib/l10n/hu.js
@@ -3,9 +3,8 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "Nem írható a \"config\" könyvtár!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Ez rendszerint úgy oldható meg, hogy írási jogot adunk a webszervernek a config könyvtárra.",
- "See %s" : "Lásd %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Avagy, ha jobbnak tűnik tarthatod a config.php fájlt olvashatónak, csak engedélyezd a \"config_is_read_only\" kapcsolót.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Ez rendszerint úgy oldható meg, hogy írási jogot adunk a webszervernek a config könyvtárra. Lásd: %s",
+ "See %s" : "Lásd %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Avagy, ha jobbnak tűnik tarthatod a config.php fájlt olvashatónak, csak engedélyezd a \"config_is_read_only\" kapcsolót. Továbbiak itt:%s",
"Sample configuration detected" : "A példabeállítások vannak beállítva",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Úgy tűnik a példakonfigurációt próbálja ténylegesen használni. Ez nem támogatott, és működésképtelenné teheti a telepítést. Kérlek olvasd el a dokumentációt és azt követően változtas a config.php-n!",
@@ -20,12 +19,10 @@ OC.L10N.register(
"PHP %s or higher is required." : "PHP %s vagy ennél újabb szükséges.",
"PHP with a version lower than %s is required." : "Ennél régebbi PHP szükséges: %s.",
"%sbit or higher PHP required." : "%sbites vagy újabb PHP szükséges.",
- "Following databases are supported: %s" : "A következő adatbázisok támogatottak: %s",
"The command line tool %s could not be found" : "A parancssori eszköz nem található: %s",
"The library %s is not available." : "A könyvtár %s nem áll rendelkezésre.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "%1$s könyvtár %2$s vagy újabb verziója szükséges - elérhető verzió: %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "%1$s könyvtár %2$s vagy régebbi verziója szükséges - elérhető verzió: %3$s.",
- "Following platforms are supported: %s" : "Ezek a platformok támogatottak: %s",
"Server version %s or higher is required." : "%s vagy újabb szerver verzió szükséges.",
"Server version %s or lower is required." : "%s vagy régebbi szerver verzió szükséges.",
"Logged in user must be an admin" : "A bejelentkezett felhasználónak rendszergazdának kell lennie",
@@ -167,8 +164,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "A token lejárt. Frissítse az oldalt.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Nincs telepítve adatbázis-meghajtóprogram (sqlite, mysql vagy postgresql).",
"Cannot write into \"config\" directory" : "Nem írható a \"config\" könyvtár",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Ez rendszerint úgy oldható meg, hogy írási jogot adunk a webszervernek a config könyvtárra. Lásd: %s",
"Cannot write into \"apps\" directory" : "Nem írható az \"apps\" könyvtár",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Ez legtöbbször megoldható az app mappára a webszervernek adott írási joggal, vagy a config fájlban az alkalmazástár letiltásával. Lásd: %s",
"Cannot create \"data\" directory" : "\"data\" mappa nem hozható létre",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Ez legtöbbször megoldható a gyökér mappára a webszervernek adott írási joggal. Lásd: %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Ez legtöbbször megoldható a gyökér mappára a webszervernek adott írási joggal. Lásd: %s.",
@@ -189,7 +186,7 @@ OC.L10N.register(
"PostgreSQL >= 9 required" : "PostgreSQL >= 9 szükséges",
"Please upgrade your database version" : "Kérem frissítse az adatbázis-szoftvert!",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Kérjük módosítsa a könyvtár elérhetőségi engedélybeállítását 0770-re, hogy a tartalmát más felhasználó ne listázhassa!",
- "Your data directory is readable by other users" : "Az adatkönyvtárad mások által olvasható",
+ "Your data directory is readable by other users" : "Az adatkönyvtára mások által olvasható",
"Your data directory must be an absolute path" : "Az adatkönyvtára abszolút útvonal kell legyen",
"Check the value of \"datadirectory\" in your configuration" : "Ellenőrizd a \"datadirectory\" értékét a konfigurációban",
"Your data directory is invalid" : "Az adatkönyvtárad érvénytelen",
@@ -205,10 +202,8 @@ OC.L10N.register(
"Storage connection error. %s" : "Tároló kapcsolódási hiba. %s",
"Storage is temporarily not available" : "A tároló átmenetileg nem érthető el",
"Storage connection timeout. %s" : "Tároló kapcsolat időtúllépés. %s",
- "Create" : "Létrehozás",
- "Change" : "Változtatás",
- "Delete" : "Törlés",
- "Share" : "Megosztás",
+ "Following databases are supported: %s" : "A következő adatbázisok támogatottak: %s",
+ "Following platforms are supported: %s" : "Ezek a platformok támogatottak: %s",
"Overview" : "Áttekintés",
"Basic settings" : "Alapvető beállítások",
"Sharing" : "Megosztás",
@@ -216,30 +211,6 @@ OC.L10N.register(
"Groupware" : "Csoportmunka",
"Personal info" : "Személyes információk",
"Mobile & desktop" : "Mobil és deszktop",
- "Unlimited" : "Korlátlan",
- "Verifying" : "Ellenőrzés",
- "Verifying …" : "Ellenőrzés...",
- "Verify" : "Ellenőrzés",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "%s megosztása sikertelen, mert a megosztási alrendszer nem engedi a %l típus megosztását",
- "Sharing %s failed, because the file does not exist" : "%s megosztása sikertelen, mert a fájl nem létezik",
- "Sharing %s failed, because you can not share with yourself" : "%s megosztása sikertelen, mert magaddal nem oszthatod meg",
- "Sharing %1$s failed, because the user %2$s does not exist" : "%1$s megosztása nem sikerült, mert %2$s felhasználó nem létezik",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "%1$s megosztása nem sikerült, mert %2$s felhasználó nem tagja egyik olyan csoportnak sem, aminek %3$s tagja",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "%1$s megosztása nem sikerült, mert ez már meg van osztva vele: %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "%1$s megosztása sikertelen, mert már meg van osztva %2$s felhasználóval",
- "Sharing %1$s failed, because the group %2$s does not exist" : "%1$s megosztása nem sikerült, mert %2$s csoport nem létezik",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "%1$s megosztása nem sikerült, mert %2$s felhasználó nem tagja a %3$s csoportnak",
- "You need to provide a password to create a public link, only protected links are allowed" : "Meg kell adnia egy jelszót is, mert a nyilvános hivatkozások csak jelszóval védetten használhatók",
- "Sharing %s failed, because sharing with links is not allowed" : "%s megosztása nem sikerült, mert a hivatkozással történő megosztás nincs engedélyezve",
- "Not allowed to create a federated share with the same user" : "Azonos felhasználóval nem lehet létrehozni egyesített megosztást.",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "%1$s megosztása sikertelen, mert %2$s nem található; talán a szerver jelenleg nem elérhető.",
- "Share type %1$s is not valid for %2$s" : "A %1$s megosztási típus nem érvényes %2$s-re",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nem lehet beállítani a lejárati időt. A megosztások legfeljebb ennyi idővel járhatnak le a létrehozásukat követően: %s",
- "Cannot set expiration date. Expiration date is in the past" : "Nem lehet beállítani a lejárati időt, mivel a megadott lejárati időpont már elmúlt.",
- "Sharing failed, because the user %s is the original sharer" : "Megosztás sikertelen, mert %s felhasználó az eredeti megosztó",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "%1$s megosztása nem sikerült, mert a jogosultságok túllépik azt, ami %2$s rendelkezésére áll",
- "Sharing %s failed, because resharing is not allowed" : "%s megosztása nem sikerült, mert a megosztás továbbadása nincs engedélyezve",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "%1$s megosztása nem sikerült, mert %2$s megosztási alrendszere nem találja",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s megosztása nem sikerült, mert a fájl nem található a gyorsítótárban"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Ez legtöbbször megoldható az app mappára a webszervernek adott írási joggal, vagy a config fájlban az alkalmazástár letiltásával. Lásd: %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/hu.json b/lib/l10n/hu.json
index 09fd7f82fc0..385fdf84dc6 100644
--- a/lib/l10n/hu.json
+++ b/lib/l10n/hu.json
@@ -1,9 +1,8 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "Nem írható a \"config\" könyvtár!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Ez rendszerint úgy oldható meg, hogy írási jogot adunk a webszervernek a config könyvtárra.",
- "See %s" : "Lásd %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Avagy, ha jobbnak tűnik tarthatod a config.php fájlt olvashatónak, csak engedélyezd a \"config_is_read_only\" kapcsolót.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Ez rendszerint úgy oldható meg, hogy írási jogot adunk a webszervernek a config könyvtárra. Lásd: %s",
+ "See %s" : "Lásd %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Avagy, ha jobbnak tűnik tarthatod a config.php fájlt olvashatónak, csak engedélyezd a \"config_is_read_only\" kapcsolót. Továbbiak itt:%s",
"Sample configuration detected" : "A példabeállítások vannak beállítva",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Úgy tűnik a példakonfigurációt próbálja ténylegesen használni. Ez nem támogatott, és működésképtelenné teheti a telepítést. Kérlek olvasd el a dokumentációt és azt követően változtas a config.php-n!",
@@ -18,12 +17,10 @@
"PHP %s or higher is required." : "PHP %s vagy ennél újabb szükséges.",
"PHP with a version lower than %s is required." : "Ennél régebbi PHP szükséges: %s.",
"%sbit or higher PHP required." : "%sbites vagy újabb PHP szükséges.",
- "Following databases are supported: %s" : "A következő adatbázisok támogatottak: %s",
"The command line tool %s could not be found" : "A parancssori eszköz nem található: %s",
"The library %s is not available." : "A könyvtár %s nem áll rendelkezésre.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "%1$s könyvtár %2$s vagy újabb verziója szükséges - elérhető verzió: %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "%1$s könyvtár %2$s vagy régebbi verziója szükséges - elérhető verzió: %3$s.",
- "Following platforms are supported: %s" : "Ezek a platformok támogatottak: %s",
"Server version %s or higher is required." : "%s vagy újabb szerver verzió szükséges.",
"Server version %s or lower is required." : "%s vagy régebbi szerver verzió szükséges.",
"Logged in user must be an admin" : "A bejelentkezett felhasználónak rendszergazdának kell lennie",
@@ -165,8 +162,8 @@
"Token expired. Please reload page." : "A token lejárt. Frissítse az oldalt.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Nincs telepítve adatbázis-meghajtóprogram (sqlite, mysql vagy postgresql).",
"Cannot write into \"config\" directory" : "Nem írható a \"config\" könyvtár",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Ez rendszerint úgy oldható meg, hogy írási jogot adunk a webszervernek a config könyvtárra. Lásd: %s",
"Cannot write into \"apps\" directory" : "Nem írható az \"apps\" könyvtár",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Ez legtöbbször megoldható az app mappára a webszervernek adott írási joggal, vagy a config fájlban az alkalmazástár letiltásával. Lásd: %s",
"Cannot create \"data\" directory" : "\"data\" mappa nem hozható létre",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Ez legtöbbször megoldható a gyökér mappára a webszervernek adott írási joggal. Lásd: %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Ez legtöbbször megoldható a gyökér mappára a webszervernek adott írási joggal. Lásd: %s.",
@@ -187,7 +184,7 @@
"PostgreSQL >= 9 required" : "PostgreSQL >= 9 szükséges",
"Please upgrade your database version" : "Kérem frissítse az adatbázis-szoftvert!",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Kérjük módosítsa a könyvtár elérhetőségi engedélybeállítását 0770-re, hogy a tartalmát más felhasználó ne listázhassa!",
- "Your data directory is readable by other users" : "Az adatkönyvtárad mások által olvasható",
+ "Your data directory is readable by other users" : "Az adatkönyvtára mások által olvasható",
"Your data directory must be an absolute path" : "Az adatkönyvtára abszolút útvonal kell legyen",
"Check the value of \"datadirectory\" in your configuration" : "Ellenőrizd a \"datadirectory\" értékét a konfigurációban",
"Your data directory is invalid" : "Az adatkönyvtárad érvénytelen",
@@ -203,10 +200,8 @@
"Storage connection error. %s" : "Tároló kapcsolódási hiba. %s",
"Storage is temporarily not available" : "A tároló átmenetileg nem érthető el",
"Storage connection timeout. %s" : "Tároló kapcsolat időtúllépés. %s",
- "Create" : "Létrehozás",
- "Change" : "Változtatás",
- "Delete" : "Törlés",
- "Share" : "Megosztás",
+ "Following databases are supported: %s" : "A következő adatbázisok támogatottak: %s",
+ "Following platforms are supported: %s" : "Ezek a platformok támogatottak: %s",
"Overview" : "Áttekintés",
"Basic settings" : "Alapvető beállítások",
"Sharing" : "Megosztás",
@@ -214,30 +209,6 @@
"Groupware" : "Csoportmunka",
"Personal info" : "Személyes információk",
"Mobile & desktop" : "Mobil és deszktop",
- "Unlimited" : "Korlátlan",
- "Verifying" : "Ellenőrzés",
- "Verifying …" : "Ellenőrzés...",
- "Verify" : "Ellenőrzés",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "%s megosztása sikertelen, mert a megosztási alrendszer nem engedi a %l típus megosztását",
- "Sharing %s failed, because the file does not exist" : "%s megosztása sikertelen, mert a fájl nem létezik",
- "Sharing %s failed, because you can not share with yourself" : "%s megosztása sikertelen, mert magaddal nem oszthatod meg",
- "Sharing %1$s failed, because the user %2$s does not exist" : "%1$s megosztása nem sikerült, mert %2$s felhasználó nem létezik",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "%1$s megosztása nem sikerült, mert %2$s felhasználó nem tagja egyik olyan csoportnak sem, aminek %3$s tagja",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "%1$s megosztása nem sikerült, mert ez már meg van osztva vele: %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "%1$s megosztása sikertelen, mert már meg van osztva %2$s felhasználóval",
- "Sharing %1$s failed, because the group %2$s does not exist" : "%1$s megosztása nem sikerült, mert %2$s csoport nem létezik",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "%1$s megosztása nem sikerült, mert %2$s felhasználó nem tagja a %3$s csoportnak",
- "You need to provide a password to create a public link, only protected links are allowed" : "Meg kell adnia egy jelszót is, mert a nyilvános hivatkozások csak jelszóval védetten használhatók",
- "Sharing %s failed, because sharing with links is not allowed" : "%s megosztása nem sikerült, mert a hivatkozással történő megosztás nincs engedélyezve",
- "Not allowed to create a federated share with the same user" : "Azonos felhasználóval nem lehet létrehozni egyesített megosztást.",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "%1$s megosztása sikertelen, mert %2$s nem található; talán a szerver jelenleg nem elérhető.",
- "Share type %1$s is not valid for %2$s" : "A %1$s megosztási típus nem érvényes %2$s-re",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nem lehet beállítani a lejárati időt. A megosztások legfeljebb ennyi idővel járhatnak le a létrehozásukat követően: %s",
- "Cannot set expiration date. Expiration date is in the past" : "Nem lehet beállítani a lejárati időt, mivel a megadott lejárati időpont már elmúlt.",
- "Sharing failed, because the user %s is the original sharer" : "Megosztás sikertelen, mert %s felhasználó az eredeti megosztó",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "%1$s megosztása nem sikerült, mert a jogosultságok túllépik azt, ami %2$s rendelkezésére áll",
- "Sharing %s failed, because resharing is not allowed" : "%s megosztása nem sikerült, mert a megosztás továbbadása nincs engedélyezve",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "%1$s megosztása nem sikerült, mert %2$s megosztási alrendszere nem találja",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s megosztása nem sikerült, mert a fájl nem található a gyorsítótárban"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Ez legtöbbször megoldható az app mappára a webszervernek adott írási joggal, vagy a config fájlban az alkalmazástár letiltásával. Lásd: %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/hy.js b/lib/l10n/hy.js
index 2f1bfb4b0db..87f9e65bda1 100644
--- a/lib/l10n/hy.js
+++ b/lib/l10n/hy.js
@@ -52,9 +52,6 @@ OC.L10N.register(
"Sep." : "Սեպ.",
"Oct." : "Հոկ.",
"Nov." : "Նոյ.",
- "Dec." : "Դեկ.",
- "Create" : "Ստեղծել",
- "Delete" : "հեռացնել",
- "Share" : "Կիսվել"
+ "Dec." : "Դեկ."
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/hy.json b/lib/l10n/hy.json
index 8e096128ff6..592eb6b7b90 100644
--- a/lib/l10n/hy.json
+++ b/lib/l10n/hy.json
@@ -50,9 +50,6 @@
"Sep." : "Սեպ.",
"Oct." : "Հոկ.",
"Nov." : "Նոյ.",
- "Dec." : "Դեկ.",
- "Create" : "Ստեղծել",
- "Delete" : "հեռացնել",
- "Share" : "Կիսվել"
+ "Dec." : "Դեկ."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/ia.js b/lib/l10n/ia.js
index 4b16c21844f..eccb308d1c8 100644
--- a/lib/l10n/ia.js
+++ b/lib/l10n/ia.js
@@ -61,12 +61,7 @@ OC.L10N.register(
"A valid password must be provided" : "Un contrasigno valide debe esser providite",
"Authentication error" : "Error in authentication",
"Storage is temporarily not available" : "Immagazinage es provisorimente non disponibile",
- "Create" : "Crear",
- "Delete" : "Deler",
- "Share" : "Compartir",
"Sharing" : "Compartente",
- "Personal info" : "Information personal",
- "Unlimited" : "Ilimitate",
- "Not allowed to create a federated share with the same user" : "Il non es permittite crear le Compartir Federate con le mesme usator."
+ "Personal info" : "Information personal"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/ia.json b/lib/l10n/ia.json
index 9e48d5ad515..7774ea17663 100644
--- a/lib/l10n/ia.json
+++ b/lib/l10n/ia.json
@@ -59,12 +59,7 @@
"A valid password must be provided" : "Un contrasigno valide debe esser providite",
"Authentication error" : "Error in authentication",
"Storage is temporarily not available" : "Immagazinage es provisorimente non disponibile",
- "Create" : "Crear",
- "Delete" : "Deler",
- "Share" : "Compartir",
"Sharing" : "Compartente",
- "Personal info" : "Information personal",
- "Unlimited" : "Ilimitate",
- "Not allowed to create a federated share with the same user" : "Il non es permittite crear le Compartir Federate con le mesme usator."
+ "Personal info" : "Information personal"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/id.js b/lib/l10n/id.js
index b20ff1d53f4..12c21b92eed 100644
--- a/lib/l10n/id.js
+++ b/lib/l10n/id.js
@@ -9,10 +9,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Diperlukan PHP %s atau yang lebih tinggi.",
"PHP with a version lower than %s is required." : "Diperlukan PHP dengan versi yang lebh rendah dari %s.",
"%sbit or higher PHP required." : "PHP %sbit atau yang lebih tinggi diperlukan.",
- "Following databases are supported: %s" : "Berikut adalah basis data yang didukung: %s",
"The command line tool %s could not be found" : "Alat baris perintah %s tidak ditemukan",
"The library %s is not available." : "Pustaka %s tidak tersedia.",
- "Following platforms are supported: %s" : "Berikut adalah platform yang didukung: %s",
"Server version %s or higher is required." : "Server versi %s atau yang lebih tinggi diperlukan.",
"Server version %s or lower is required." : "Server versi %s atau yang lebih rendah diperlukan.",
"Authentication" : "Otentikasi",
@@ -148,25 +146,10 @@ OC.L10N.register(
"Storage incomplete configuration. %s" : "Konfigurasi penyimpanan tidak terselesaikan. %s",
"Storage connection error. %s" : "Koneksi penyimpanan bermasalah. %s",
"Storage connection timeout. %s" : "Koneksi penyimpanan waktu-habis. %s",
- "Create" : "Buat",
- "Delete" : "Hapus",
- "Share" : "Bagikan",
+ "Following databases are supported: %s" : "Berikut adalah basis data yang didukung: %s",
+ "Following platforms are supported: %s" : "Berikut adalah platform yang didukung: %s",
"Sharing" : "Berbagi",
"Security" : "Keamanan",
- "Personal info" : "Info pribadi",
- "Unlimited" : "Tak terbatas",
- "Verifying …" : "Sedang memferivikasi …",
- "Verify" : "Verifikasi",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Gagal berbagi %s, karena backend tidak mengizinkan berbagi dengan tipe %i",
- "Sharing %s failed, because the file does not exist" : "Gagal membagikan %s, karena berkas tidak ada",
- "Sharing %s failed, because you can not share with yourself" : "Berbagi %s gagal, karena Anda tidak dapat berbagi dengan diri sendiri",
- "You need to provide a password to create a public link, only protected links are allowed" : "Anda perlu memberikan kata sandi untuk membuat tautan publik, hanya tautan yang terlindungi yang diizinkan",
- "Sharing %s failed, because sharing with links is not allowed" : "Gagal membagikan %s, karena berbag dengan tautan tidak diizinkan",
- "Not allowed to create a federated share with the same user" : "Tidak diizinkan membuat pembagian terfederasi dengan pengguna yang sama",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Tidak dapat menyetel tanggal kadaluarsa. Pembagian tidak dapat kadaluarsa lebih lambat dari %s setelah mereka dibagikan.",
- "Cannot set expiration date. Expiration date is in the past" : "Tidak dapat menyetel tanggal kadaluarsa. Tanggal kadaluarsa dimasa lalu",
- "Sharing failed, because the user %s is the original sharer" : "Berbagi gagal, karena pengguna %s adalah pembagi awal",
- "Sharing %s failed, because resharing is not allowed" : "Gagal berbagi %s, karena membagikan ulang tidak diizinkan",
- "Sharing %s failed, because the file could not be found in the file cache" : "Gagal berbagi %s, karena berkas tidak ditemukan di berkas cache"
+ "Personal info" : "Info pribadi"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/id.json b/lib/l10n/id.json
index aa134bb4f27..ec5b658be57 100644
--- a/lib/l10n/id.json
+++ b/lib/l10n/id.json
@@ -7,10 +7,8 @@
"PHP %s or higher is required." : "Diperlukan PHP %s atau yang lebih tinggi.",
"PHP with a version lower than %s is required." : "Diperlukan PHP dengan versi yang lebh rendah dari %s.",
"%sbit or higher PHP required." : "PHP %sbit atau yang lebih tinggi diperlukan.",
- "Following databases are supported: %s" : "Berikut adalah basis data yang didukung: %s",
"The command line tool %s could not be found" : "Alat baris perintah %s tidak ditemukan",
"The library %s is not available." : "Pustaka %s tidak tersedia.",
- "Following platforms are supported: %s" : "Berikut adalah platform yang didukung: %s",
"Server version %s or higher is required." : "Server versi %s atau yang lebih tinggi diperlukan.",
"Server version %s or lower is required." : "Server versi %s atau yang lebih rendah diperlukan.",
"Authentication" : "Otentikasi",
@@ -146,25 +144,10 @@
"Storage incomplete configuration. %s" : "Konfigurasi penyimpanan tidak terselesaikan. %s",
"Storage connection error. %s" : "Koneksi penyimpanan bermasalah. %s",
"Storage connection timeout. %s" : "Koneksi penyimpanan waktu-habis. %s",
- "Create" : "Buat",
- "Delete" : "Hapus",
- "Share" : "Bagikan",
+ "Following databases are supported: %s" : "Berikut adalah basis data yang didukung: %s",
+ "Following platforms are supported: %s" : "Berikut adalah platform yang didukung: %s",
"Sharing" : "Berbagi",
"Security" : "Keamanan",
- "Personal info" : "Info pribadi",
- "Unlimited" : "Tak terbatas",
- "Verifying …" : "Sedang memferivikasi …",
- "Verify" : "Verifikasi",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Gagal berbagi %s, karena backend tidak mengizinkan berbagi dengan tipe %i",
- "Sharing %s failed, because the file does not exist" : "Gagal membagikan %s, karena berkas tidak ada",
- "Sharing %s failed, because you can not share with yourself" : "Berbagi %s gagal, karena Anda tidak dapat berbagi dengan diri sendiri",
- "You need to provide a password to create a public link, only protected links are allowed" : "Anda perlu memberikan kata sandi untuk membuat tautan publik, hanya tautan yang terlindungi yang diizinkan",
- "Sharing %s failed, because sharing with links is not allowed" : "Gagal membagikan %s, karena berbag dengan tautan tidak diizinkan",
- "Not allowed to create a federated share with the same user" : "Tidak diizinkan membuat pembagian terfederasi dengan pengguna yang sama",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Tidak dapat menyetel tanggal kadaluarsa. Pembagian tidak dapat kadaluarsa lebih lambat dari %s setelah mereka dibagikan.",
- "Cannot set expiration date. Expiration date is in the past" : "Tidak dapat menyetel tanggal kadaluarsa. Tanggal kadaluarsa dimasa lalu",
- "Sharing failed, because the user %s is the original sharer" : "Berbagi gagal, karena pengguna %s adalah pembagi awal",
- "Sharing %s failed, because resharing is not allowed" : "Gagal berbagi %s, karena membagikan ulang tidak diizinkan",
- "Sharing %s failed, because the file could not be found in the file cache" : "Gagal berbagi %s, karena berkas tidak ditemukan di berkas cache"
+ "Personal info" : "Info pribadi"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/is.js b/lib/l10n/is.js
index ed0e95d30ea..bd952d12ef1 100644
--- a/lib/l10n/is.js
+++ b/lib/l10n/is.js
@@ -3,9 +3,8 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "Get ekki skrifað í \"config\" möppuna!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Þetta er venjulega hægt að laga með því að gefa vefþjóninum skrifréttindi í stillingamöppuna",
- "See %s" : "Skoðaðu %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Eða, ef þú vilt halda config.php skránni aðeins til lestrar, settu valkostinn \"config_is_read_only\" á 'true' í henni.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Þetta er venjulega hægt að laga með því að gefa vefþjóninum skrifréttindi í stillingamöppuna. Sjá %s",
+ "See %s" : "Skoðaðu %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Eða, ef þú vilt halda config.php skránni aðeins til lestrar, settu valkostinn \"config_is_read_only\" á 'true' í henni. Skoðaðu %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Skrám forritsins %$1s var ekki rétt skipt út. Gakktu úr skugga um að þetta sé útgáfa sem sé samhæfð útgáfu vefþjónsins.",
"Sample configuration detected" : "Fann sýnisuppsetningu",
@@ -21,12 +20,10 @@ OC.L10N.register(
"PHP %s or higher is required." : "Krafist er PHP %s eða hærra.",
"PHP with a version lower than %s is required." : "Krafist er PHP útgáfu %s eða lægri.",
"%sbit or higher PHP required." : "Krafist er PHP %sbita eða hærra.",
- "Following databases are supported: %s" : "Eftirfarandi gagnagrunnar eru studdir: %s",
"The command line tool %s could not be found" : "Skipanalínutólið \"%s\" fannst ekki",
"The library %s is not available." : "Aðgerðasafnið %s er ekki tiltækt.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Krafist er aðgerðasafns %1$s með útgáfu hærri en %2$s - tiltæk útgáfa er %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Krafist er aðgerðasafns %1$s með útgáfu lægri en %2$s - tiltæk útgáfa er %3$s.",
- "Following platforms are supported: %s" : "Eftirfarandi stýrikerfi eru studd: %s",
"Server version %s or higher is required." : "Krafist er þjóns af útgáfu %s eða hærra.",
"Server version %s or lower is required." : "Krafist er þjóns af útgáfu %s eða lægri.",
"Logged in user must be an admin or sub admin" : "Innskráður notandi verður að vera kerfisstjóri eða undirstjórnandi",
@@ -182,8 +179,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "Kenniteikn er útrunnið. Þú ættir að hlaða síðunni aftur inn.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Engir reklar fyrir gagnagrunn eru uppsettir (sqlite, mysql eða postgresql).",
"Cannot write into \"config\" directory" : "Get ekki skrifað í \"config\" möppuna",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Þetta er venjulega hægt að laga með því að gefa vefþjóninum skrifréttindi í stillingamöppuna. Sjá %s",
"Cannot write into \"apps\" directory" : "Get ekki skrifað í \"apps\" möppuna",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Þetta er venjulega hægt að laga með því að gefa vefþjóninum skrifréttindi í forritamöppuna með því að gera forritabúðina óvirka í stillingaskránni. Sjá %s",
"Cannot create \"data\" directory" : "Get ekki búið til \"data\" möppu",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Þetta er venjulega hægt að laga með því að gefa vefþjóninum skrifréttindi í rótarmöppuna. Sjá %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Heimildir er venjulega hægt að laga með því að gefa vefþjóninum skrifréttindi í rótarmöppuna. Sjá %s",
@@ -220,10 +217,8 @@ OC.L10N.register(
"Storage connection error. %s" : "Villa í tengingu við gagnageymslu. %s",
"Storage is temporarily not available" : "Gagnageymsla ekki tiltæk í augnablikinu",
"Storage connection timeout. %s" : "Gagnageymsla féll á tíma. %s",
- "Create" : "Búa til",
- "Change" : "Breyta",
- "Delete" : "Eyða",
- "Share" : "Deila",
+ "Following databases are supported: %s" : "Eftirfarandi gagnagrunnar eru studdir: %s",
+ "Following platforms are supported: %s" : "Eftirfarandi stýrikerfi eru studd: %s",
"Overview" : "Yfirlit",
"Basic settings" : "Grunnstillingar",
"Sharing" : "Deiling",
@@ -231,30 +226,6 @@ OC.L10N.register(
"Groupware" : "Hópvinnukerfi",
"Personal info" : "Persónulegar upplýsingar",
"Mobile & desktop" : "Farsímar og borðtölvur",
- "Unlimited" : "Ótakmarkað",
- "Verifying" : "Sannreyni",
- "Verifying …" : "Sannreyni …",
- "Verify" : "Sannreyna",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Deiling %s mistókst, því bakvinnslukerfið leyfir ekki sameignir af gerðinni %i",
- "Sharing %s failed, because the file does not exist" : "Deiling %s mistókst, því skráin er ekki til",
- "Sharing %s failed, because you can not share with yourself" : "Deiling %s mistókst, því þú getur ekki deilt með sjálfum þér",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Deiling %1$s mistókst, því notandinn %2$s er ekki til",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Deiling %1$s mistókst, því notandinn %2$s er ekki meðlimur í neinum hópi sem %3$s er meðlimur í",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Deiling %1$s mistókst, því þessu atriði er þegar deilt með %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Deiling %1$s mistókst, því þessu atriði er þegar deilt með notandanum %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Deiling %1$s mistókst, því hópurinn %2$s er ekki til",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Deiling %1$s mistókst, því %2$s er ekki meðlimur í hópnum %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Þú verður að setja inn lykilorð til að útbúa opinberan tengil, aðeins verndaðir tenglar eru leyfðir",
- "Sharing %s failed, because sharing with links is not allowed" : "Deiling %s mistókst, því deiling með tenglum er ekki leyfð",
- "Not allowed to create a federated share with the same user" : "Ekki er heimilt að búa til skýjasambandssameign með sama notanda",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Deiling %1s mistókst, gat ekki fundið %2$s, hugsanlega er þjónninn ekki tiltækur í augnablikinu.",
- "Share type %1$s is not valid for %2$s" : "Deiling af gerðinni %1$s er ekki gild fyrir %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Get ekki stillt gildistímann. Sameignir geta ekki runnið út síðar en %s eftir að þeim hefur verið deilt",
- "Cannot set expiration date. Expiration date is in the past" : "Get ekki stillt gildistímann. Gildistíminn er þegar runninn út",
- "Sharing failed, because the user %s is the original sharer" : "Deiling mistókst, því notandinn %s er upprunalegur deilandi",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Deiling %1$s mistókst, því heimildirnar eru rétthærri en heimildir til handa %2$s",
- "Sharing %s failed, because resharing is not allowed" : "Deiling %s mistókst, því endurdeiling er ekki leyfð",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Deiling %1$s mistókst, því bakvinnslukerfið fyrir %2$s fann ekki upptök þess",
- "Sharing %s failed, because the file could not be found in the file cache" : "Deiling %s mistókst, því skráin fannst ekki í skyndiminni skráa"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Þetta er venjulega hægt að laga með því að gefa vefþjóninum skrifréttindi í forritamöppuna með því að gera forritabúðina óvirka í stillingaskránni. Sjá %s"
},
"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");
diff --git a/lib/l10n/is.json b/lib/l10n/is.json
index 95d287c9083..887f1d2e0fa 100644
--- a/lib/l10n/is.json
+++ b/lib/l10n/is.json
@@ -1,9 +1,8 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "Get ekki skrifað í \"config\" möppuna!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Þetta er venjulega hægt að laga með því að gefa vefþjóninum skrifréttindi í stillingamöppuna",
- "See %s" : "Skoðaðu %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Eða, ef þú vilt halda config.php skránni aðeins til lestrar, settu valkostinn \"config_is_read_only\" á 'true' í henni.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Þetta er venjulega hægt að laga með því að gefa vefþjóninum skrifréttindi í stillingamöppuna. Sjá %s",
+ "See %s" : "Skoðaðu %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Eða, ef þú vilt halda config.php skránni aðeins til lestrar, settu valkostinn \"config_is_read_only\" á 'true' í henni. Skoðaðu %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Skrám forritsins %$1s var ekki rétt skipt út. Gakktu úr skugga um að þetta sé útgáfa sem sé samhæfð útgáfu vefþjónsins.",
"Sample configuration detected" : "Fann sýnisuppsetningu",
@@ -19,12 +18,10 @@
"PHP %s or higher is required." : "Krafist er PHP %s eða hærra.",
"PHP with a version lower than %s is required." : "Krafist er PHP útgáfu %s eða lægri.",
"%sbit or higher PHP required." : "Krafist er PHP %sbita eða hærra.",
- "Following databases are supported: %s" : "Eftirfarandi gagnagrunnar eru studdir: %s",
"The command line tool %s could not be found" : "Skipanalínutólið \"%s\" fannst ekki",
"The library %s is not available." : "Aðgerðasafnið %s er ekki tiltækt.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Krafist er aðgerðasafns %1$s með útgáfu hærri en %2$s - tiltæk útgáfa er %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Krafist er aðgerðasafns %1$s með útgáfu lægri en %2$s - tiltæk útgáfa er %3$s.",
- "Following platforms are supported: %s" : "Eftirfarandi stýrikerfi eru studd: %s",
"Server version %s or higher is required." : "Krafist er þjóns af útgáfu %s eða hærra.",
"Server version %s or lower is required." : "Krafist er þjóns af útgáfu %s eða lægri.",
"Logged in user must be an admin or sub admin" : "Innskráður notandi verður að vera kerfisstjóri eða undirstjórnandi",
@@ -180,8 +177,8 @@
"Token expired. Please reload page." : "Kenniteikn er útrunnið. Þú ættir að hlaða síðunni aftur inn.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Engir reklar fyrir gagnagrunn eru uppsettir (sqlite, mysql eða postgresql).",
"Cannot write into \"config\" directory" : "Get ekki skrifað í \"config\" möppuna",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Þetta er venjulega hægt að laga með því að gefa vefþjóninum skrifréttindi í stillingamöppuna. Sjá %s",
"Cannot write into \"apps\" directory" : "Get ekki skrifað í \"apps\" möppuna",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Þetta er venjulega hægt að laga með því að gefa vefþjóninum skrifréttindi í forritamöppuna með því að gera forritabúðina óvirka í stillingaskránni. Sjá %s",
"Cannot create \"data\" directory" : "Get ekki búið til \"data\" möppu",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Þetta er venjulega hægt að laga með því að gefa vefþjóninum skrifréttindi í rótarmöppuna. Sjá %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Heimildir er venjulega hægt að laga með því að gefa vefþjóninum skrifréttindi í rótarmöppuna. Sjá %s",
@@ -218,10 +215,8 @@
"Storage connection error. %s" : "Villa í tengingu við gagnageymslu. %s",
"Storage is temporarily not available" : "Gagnageymsla ekki tiltæk í augnablikinu",
"Storage connection timeout. %s" : "Gagnageymsla féll á tíma. %s",
- "Create" : "Búa til",
- "Change" : "Breyta",
- "Delete" : "Eyða",
- "Share" : "Deila",
+ "Following databases are supported: %s" : "Eftirfarandi gagnagrunnar eru studdir: %s",
+ "Following platforms are supported: %s" : "Eftirfarandi stýrikerfi eru studd: %s",
"Overview" : "Yfirlit",
"Basic settings" : "Grunnstillingar",
"Sharing" : "Deiling",
@@ -229,30 +224,6 @@
"Groupware" : "Hópvinnukerfi",
"Personal info" : "Persónulegar upplýsingar",
"Mobile & desktop" : "Farsímar og borðtölvur",
- "Unlimited" : "Ótakmarkað",
- "Verifying" : "Sannreyni",
- "Verifying …" : "Sannreyni …",
- "Verify" : "Sannreyna",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Deiling %s mistókst, því bakvinnslukerfið leyfir ekki sameignir af gerðinni %i",
- "Sharing %s failed, because the file does not exist" : "Deiling %s mistókst, því skráin er ekki til",
- "Sharing %s failed, because you can not share with yourself" : "Deiling %s mistókst, því þú getur ekki deilt með sjálfum þér",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Deiling %1$s mistókst, því notandinn %2$s er ekki til",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Deiling %1$s mistókst, því notandinn %2$s er ekki meðlimur í neinum hópi sem %3$s er meðlimur í",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Deiling %1$s mistókst, því þessu atriði er þegar deilt með %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Deiling %1$s mistókst, því þessu atriði er þegar deilt með notandanum %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Deiling %1$s mistókst, því hópurinn %2$s er ekki til",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Deiling %1$s mistókst, því %2$s er ekki meðlimur í hópnum %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Þú verður að setja inn lykilorð til að útbúa opinberan tengil, aðeins verndaðir tenglar eru leyfðir",
- "Sharing %s failed, because sharing with links is not allowed" : "Deiling %s mistókst, því deiling með tenglum er ekki leyfð",
- "Not allowed to create a federated share with the same user" : "Ekki er heimilt að búa til skýjasambandssameign með sama notanda",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Deiling %1s mistókst, gat ekki fundið %2$s, hugsanlega er þjónninn ekki tiltækur í augnablikinu.",
- "Share type %1$s is not valid for %2$s" : "Deiling af gerðinni %1$s er ekki gild fyrir %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Get ekki stillt gildistímann. Sameignir geta ekki runnið út síðar en %s eftir að þeim hefur verið deilt",
- "Cannot set expiration date. Expiration date is in the past" : "Get ekki stillt gildistímann. Gildistíminn er þegar runninn út",
- "Sharing failed, because the user %s is the original sharer" : "Deiling mistókst, því notandinn %s er upprunalegur deilandi",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Deiling %1$s mistókst, því heimildirnar eru rétthærri en heimildir til handa %2$s",
- "Sharing %s failed, because resharing is not allowed" : "Deiling %s mistókst, því endurdeiling er ekki leyfð",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Deiling %1$s mistókst, því bakvinnslukerfið fyrir %2$s fann ekki upptök þess",
- "Sharing %s failed, because the file could not be found in the file cache" : "Deiling %s mistókst, því skráin fannst ekki í skyndiminni skráa"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Þetta er venjulega hægt að laga með því að gefa vefþjóninum skrifréttindi í forritamöppuna með því að gera forritabúðina óvirka í stillingaskránni. Sjá %s"
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
} \ No newline at end of file
diff --git a/lib/l10n/it.js b/lib/l10n/it.js
index 66ac0187b5d..138d74f5058 100644
--- a/lib/l10n/it.js
+++ b/lib/l10n/it.js
@@ -3,9 +3,9 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "Impossibile scrivere nella cartella \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Ciò può essere normalmente corretto fornendo al server web accesso in scrittura alla cartella \"config\"",
- "See %s" : "Vedi %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "O, se preferisci mantenere il file config.php in sola lettura, imposta l'opzione \"config_is_read_only\" a true.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Ciò può essere normalmente corretto fornendo al server web accesso in scrittura alla cartella di configurazione. Vedi %s",
+ "See %s" : "Vedi %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Ciò può essere normalmente corretto fornendo al server web accesso in scrittura alla cartella \"config\".",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "O, se preferisci mantenere il file config.php in sola lettura, imposta l'opzione \"config_is_read_only\" a true. Vedi %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "I file dell'applicazione %1$s non sono stati sostituiti correttamente. Assicurati che sia una versione compatibile con il server.",
"Sample configuration detected" : "Configurazione di esempio rilevata",
@@ -22,12 +22,12 @@ OC.L10N.register(
"PHP %s or higher is required." : "Richiesto PHP %s o superiore",
"PHP with a version lower than %s is required." : "Richiesta una versione di PHP minore di %s.",
"%sbit or higher PHP required." : "Richiesto PHP %sbit o superiore.",
- "Following databases are supported: %s" : "I seguenti database sono supportati: %s",
+ "The following databases are supported: %s" : "I seguenti database sono supportati: %s",
"The command line tool %s could not be found" : "Lo strumento da riga di comando %s non è stato trovato",
"The library %s is not available." : "La libreria %s non è disponibile.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Richiesta una versione della libreria %1$s maggiore di %2$s - versione disponibile %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Richiesta una versione della libreria %1$s minore di %2$s - versione disponibile %3$s.",
- "Following platforms are supported: %s" : "Sono supportate le seguenti piattaforme: %s",
+ "The following platforms are supported: %s" : "Le seguenti piattaforme sono supportate: %s",
"Server version %s or higher is required." : "È richiesta la versione %s o successiva.",
"Server version %s or lower is required." : "È richiesta la versione %s o precedente.",
"Logged in user must be an admin or sub admin" : "L'utente che ha eseguito l'accesso deve essere un amministratore o sub-amministratore",
@@ -185,8 +185,9 @@ OC.L10N.register(
"Token expired. Please reload page." : "Token scaduto. Ricarica la pagina.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Nessun driver di database (sqlite, mysql o postgresql) installato",
"Cannot write into \"config\" directory" : "Impossibile scrivere nella cartella \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Ciò può essere normalmente corretto fornendo al server web accesso in scrittura alla cartella di configurazione. Vedi %s",
"Cannot write into \"apps\" directory" : "Impossibile scrivere nella cartella \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Ciò può essere normalmente corretto fornendo al server web accesso in scrittura alla cartella delle applicazioni o disabilitando il negozio di applicazioni nel file di configurazione. Vedi %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Questo può essere normalmente corretto fornendo al server web accesso in scrittura alla cartella \"apps\" o disabilitando il negozio di applicazioni nel file di configurazione.",
"Cannot create \"data\" directory" : "Impossibile creare la cartella \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Ciò può essere normalmente corretto fornendo al server web accesso in scrittura alla cartella radice. Vedi %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "I permessi possono essere normalmente corretti fornendo al server web accesso in scrittura alla cartella radice. Vedi %s.",
@@ -223,10 +224,8 @@ OC.L10N.register(
"Storage connection error. %s" : "Errore di connessione all'archiviazione. %s",
"Storage is temporarily not available" : "L'archiviazione è temporaneamente non disponibile",
"Storage connection timeout. %s" : "Timeout di connessione all'archiviazione. %s",
- "Create" : "Crea",
- "Change" : "Modifica",
- "Delete" : "Elimina",
- "Share" : "Condividi",
+ "Following databases are supported: %s" : "I seguenti database sono supportati: %s",
+ "Following platforms are supported: %s" : "Sono supportate le seguenti piattaforme: %s",
"Overview" : "Riepilogo",
"Basic settings" : "Impostazioni di base",
"Sharing" : "Condivisione",
@@ -234,30 +233,6 @@ OC.L10N.register(
"Groupware" : "Groupware",
"Personal info" : "Informazioni personali",
"Mobile & desktop" : "Mobile e desktop",
- "Unlimited" : "Illimitato",
- "Verifying" : "Verifica",
- "Verifying …" : "Verifica in corso...",
- "Verify" : "Verifica",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Condivisione di %s non riuscita, poiché il motore non consente condivisioni del tipo %i",
- "Sharing %s failed, because the file does not exist" : "Condivisione di %s non riuscita, poiché il file non esiste",
- "Sharing %s failed, because you can not share with yourself" : "Condivisione di %s non riuscita, poiché non puoi condividere con te stesso",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Condivisione di %1$s non riuscita, poiché l'utente %2$s non esiste",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Condivisione di %1$s non riuscita, poiché l'utente %2$s non appartiene ad alcun gruppo di cui %3$s è membro",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Condivisione di %1$s non riuscita, poiché l'oggetto è già condiviso con %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Condivisione di %1$s non riuscita, poiché l'oggetto è già condiviso con l'utente %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Condivisione di %1$s non riuscita, poiché il gruppo %2$s non esiste",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Condivisione di %1$s non riuscita, poiché %2$s non appartiene al gruppo %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Devi fornire una password per creare un collegamento pubblico, sono consentiti solo i collegamenti protetti",
- "Sharing %s failed, because sharing with links is not allowed" : "Condivisione di %s non riuscita, poiché i collegamenti non sono consentiti",
- "Not allowed to create a federated share with the same user" : "Non è consentito creare una condivisione federata con lo stesso utente",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "La condivisione di %1$s non è riuscita, impossibile trovare %2$s, è probabile che il server non sia al momento raggiungibile.",
- "Share type %1$s is not valid for %2$s" : "Il tipo di condivisione %1$s non è valido per %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Impossibile impostare la data di scadenza. Le condivisioni non possono scadere più tardi di %s dalla loro attivazione",
- "Cannot set expiration date. Expiration date is in the past" : "Impossibile impostare la data di scadenza. La data di scadenza è nel passato.",
- "Sharing failed, because the user %s is the original sharer" : "Condivisione non riuscita, poiché l'utente %s ha condiviso in origine",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Condivisione di %1$s non riuscita, poiché i permessi superano quelli accordati a %2$s",
- "Sharing %s failed, because resharing is not allowed" : "Condivisione di %s non riuscita, poiché la ri-condivisione non è consentita",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Condivisione di %1$s non riuscita, poiché il motore di condivisione per %2$s non riesce a trovare la sua fonte",
- "Sharing %s failed, because the file could not be found in the file cache" : "Condivisione di %s non riuscita, poiché il file non è stato trovato nella cache"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Ciò può essere normalmente corretto fornendo al server web accesso in scrittura alla cartella delle applicazioni o disabilitando il negozio di applicazioni nel file di configurazione. Vedi %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/it.json b/lib/l10n/it.json
index 988da392dfe..ab8614a5bc2 100644
--- a/lib/l10n/it.json
+++ b/lib/l10n/it.json
@@ -1,9 +1,9 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "Impossibile scrivere nella cartella \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Ciò può essere normalmente corretto fornendo al server web accesso in scrittura alla cartella \"config\"",
- "See %s" : "Vedi %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "O, se preferisci mantenere il file config.php in sola lettura, imposta l'opzione \"config_is_read_only\" a true.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Ciò può essere normalmente corretto fornendo al server web accesso in scrittura alla cartella di configurazione. Vedi %s",
+ "See %s" : "Vedi %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Ciò può essere normalmente corretto fornendo al server web accesso in scrittura alla cartella \"config\".",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "O, se preferisci mantenere il file config.php in sola lettura, imposta l'opzione \"config_is_read_only\" a true. Vedi %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "I file dell'applicazione %1$s non sono stati sostituiti correttamente. Assicurati che sia una versione compatibile con il server.",
"Sample configuration detected" : "Configurazione di esempio rilevata",
@@ -20,12 +20,12 @@
"PHP %s or higher is required." : "Richiesto PHP %s o superiore",
"PHP with a version lower than %s is required." : "Richiesta una versione di PHP minore di %s.",
"%sbit or higher PHP required." : "Richiesto PHP %sbit o superiore.",
- "Following databases are supported: %s" : "I seguenti database sono supportati: %s",
+ "The following databases are supported: %s" : "I seguenti database sono supportati: %s",
"The command line tool %s could not be found" : "Lo strumento da riga di comando %s non è stato trovato",
"The library %s is not available." : "La libreria %s non è disponibile.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Richiesta una versione della libreria %1$s maggiore di %2$s - versione disponibile %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Richiesta una versione della libreria %1$s minore di %2$s - versione disponibile %3$s.",
- "Following platforms are supported: %s" : "Sono supportate le seguenti piattaforme: %s",
+ "The following platforms are supported: %s" : "Le seguenti piattaforme sono supportate: %s",
"Server version %s or higher is required." : "È richiesta la versione %s o successiva.",
"Server version %s or lower is required." : "È richiesta la versione %s o precedente.",
"Logged in user must be an admin or sub admin" : "L'utente che ha eseguito l'accesso deve essere un amministratore o sub-amministratore",
@@ -183,8 +183,9 @@
"Token expired. Please reload page." : "Token scaduto. Ricarica la pagina.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Nessun driver di database (sqlite, mysql o postgresql) installato",
"Cannot write into \"config\" directory" : "Impossibile scrivere nella cartella \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Ciò può essere normalmente corretto fornendo al server web accesso in scrittura alla cartella di configurazione. Vedi %s",
"Cannot write into \"apps\" directory" : "Impossibile scrivere nella cartella \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Ciò può essere normalmente corretto fornendo al server web accesso in scrittura alla cartella delle applicazioni o disabilitando il negozio di applicazioni nel file di configurazione. Vedi %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Questo può essere normalmente corretto fornendo al server web accesso in scrittura alla cartella \"apps\" o disabilitando il negozio di applicazioni nel file di configurazione.",
"Cannot create \"data\" directory" : "Impossibile creare la cartella \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Ciò può essere normalmente corretto fornendo al server web accesso in scrittura alla cartella radice. Vedi %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "I permessi possono essere normalmente corretti fornendo al server web accesso in scrittura alla cartella radice. Vedi %s.",
@@ -221,10 +222,8 @@
"Storage connection error. %s" : "Errore di connessione all'archiviazione. %s",
"Storage is temporarily not available" : "L'archiviazione è temporaneamente non disponibile",
"Storage connection timeout. %s" : "Timeout di connessione all'archiviazione. %s",
- "Create" : "Crea",
- "Change" : "Modifica",
- "Delete" : "Elimina",
- "Share" : "Condividi",
+ "Following databases are supported: %s" : "I seguenti database sono supportati: %s",
+ "Following platforms are supported: %s" : "Sono supportate le seguenti piattaforme: %s",
"Overview" : "Riepilogo",
"Basic settings" : "Impostazioni di base",
"Sharing" : "Condivisione",
@@ -232,30 +231,6 @@
"Groupware" : "Groupware",
"Personal info" : "Informazioni personali",
"Mobile & desktop" : "Mobile e desktop",
- "Unlimited" : "Illimitato",
- "Verifying" : "Verifica",
- "Verifying …" : "Verifica in corso...",
- "Verify" : "Verifica",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Condivisione di %s non riuscita, poiché il motore non consente condivisioni del tipo %i",
- "Sharing %s failed, because the file does not exist" : "Condivisione di %s non riuscita, poiché il file non esiste",
- "Sharing %s failed, because you can not share with yourself" : "Condivisione di %s non riuscita, poiché non puoi condividere con te stesso",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Condivisione di %1$s non riuscita, poiché l'utente %2$s non esiste",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Condivisione di %1$s non riuscita, poiché l'utente %2$s non appartiene ad alcun gruppo di cui %3$s è membro",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Condivisione di %1$s non riuscita, poiché l'oggetto è già condiviso con %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Condivisione di %1$s non riuscita, poiché l'oggetto è già condiviso con l'utente %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Condivisione di %1$s non riuscita, poiché il gruppo %2$s non esiste",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Condivisione di %1$s non riuscita, poiché %2$s non appartiene al gruppo %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Devi fornire una password per creare un collegamento pubblico, sono consentiti solo i collegamenti protetti",
- "Sharing %s failed, because sharing with links is not allowed" : "Condivisione di %s non riuscita, poiché i collegamenti non sono consentiti",
- "Not allowed to create a federated share with the same user" : "Non è consentito creare una condivisione federata con lo stesso utente",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "La condivisione di %1$s non è riuscita, impossibile trovare %2$s, è probabile che il server non sia al momento raggiungibile.",
- "Share type %1$s is not valid for %2$s" : "Il tipo di condivisione %1$s non è valido per %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Impossibile impostare la data di scadenza. Le condivisioni non possono scadere più tardi di %s dalla loro attivazione",
- "Cannot set expiration date. Expiration date is in the past" : "Impossibile impostare la data di scadenza. La data di scadenza è nel passato.",
- "Sharing failed, because the user %s is the original sharer" : "Condivisione non riuscita, poiché l'utente %s ha condiviso in origine",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Condivisione di %1$s non riuscita, poiché i permessi superano quelli accordati a %2$s",
- "Sharing %s failed, because resharing is not allowed" : "Condivisione di %s non riuscita, poiché la ri-condivisione non è consentita",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Condivisione di %1$s non riuscita, poiché il motore di condivisione per %2$s non riesce a trovare la sua fonte",
- "Sharing %s failed, because the file could not be found in the file cache" : "Condivisione di %s non riuscita, poiché il file non è stato trovato nella cache"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Ciò può essere normalmente corretto fornendo al server web accesso in scrittura alla cartella delle applicazioni o disabilitando il negozio di applicazioni nel file di configurazione. Vedi %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/ja.js b/lib/l10n/ja.js
index df74294373b..d7110c58ad2 100644
--- a/lib/l10n/ja.js
+++ b/lib/l10n/ja.js
@@ -3,9 +3,8 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "\"config\"ディレクトリに書き込めません!",
"This can usually be fixed by giving the webserver write access to the config directory" : "多くの場合、これはWebサーバーにconfigディレクトリへの書き込み権限を与えることで解決できます。",
- "See %s" : "%s を閲覧",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "またはconfig.phpファイルを読み取り専用にしたい場合は、オプション \"config_is_read_only\"をtrueに設定してください。",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "多くの場合、Webサーバーの configディレクトリ に書き込み権限を与えることで直ります。%s を見てください",
+ "See %s" : "%s を閲覧",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "またはconfig.phpファイルを読み取り専用にしたい場合は、オプション \"config_is_read_only\"をtrueに設定してください。 %sを参照してください",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "アプリ %1$s のファイルが正しく置き換えられませんでした。サーバーと互換性のあるバージョンであることを確認してください。",
"Sample configuration detected" : "サンプル設定が見つかりました。",
@@ -22,12 +21,10 @@ OC.L10N.register(
"PHP %s or higher is required." : "PHP %s 以上が必要です。",
"PHP with a version lower than %s is required." : "%s 以前のバージョンのPHPが必要です。",
"%sbit or higher PHP required." : "%sbit 以上の新しいバージョンのPHPが必要です。",
- "Following databases are supported: %s" : "次のデータベースをサポートしています: %s",
"The command line tool %s could not be found" : "コマンド '%s' は見つかりませんでした。",
"The library %s is not available." : " %s ライブラリーが利用できません。",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "%1$sライブラリーは、%2$sよりも新しいバージョンが必要です。利用可能なバージョンは、 %3$sです。",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "%1$s ライブラリーは、%2$s よりも古いバージョンが必要です。利用可能なバージョンは、%3$s です。",
- "Following platforms are supported: %s" : "次のプラットフォームをサポートしています: %s",
"Server version %s or higher is required." : "サーバーの %s よりも高いバージョンが必要です。",
"Server version %s or lower is required." : "サーバーの %s よりも低いバージョンが必要です。",
"Logged in user must be an admin or sub admin" : "ログインユーザーは管理者またはサブ管理者である必要があります",
@@ -185,8 +182,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "トークンが無効になりました。ページを再読込してください。",
"No database drivers (sqlite, mysql, or postgresql) installed." : "データベースドライバー (sqlite, mysql, postgresql) がインストールされていません。",
"Cannot write into \"config\" directory" : "\"config\" ディレクトリに書き込みができません",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "多くの場合、Webサーバーの configディレクトリ に書き込み権限を与えることで直ります。%s を見てください",
"Cannot write into \"apps\" directory" : "\"apps\" ディレクトリに書き込みができません",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "多くの場合、これは Webサーバーにappsディレクトリへの書き込み権限を与えるか、設定ファイルでアプリストアを無効化することで直ります。%s を見てください。",
"Cannot create \"data\" directory" : "\"data\" ディレクトリを作成できません",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "多くの場合、Webサーバーのルートディレクトリに書き込み権限を与えることで直ります。%s を見てください。",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Webサーバーのルートディレクトリに書き込み権限パーミッションが必要です。%s を見てください。",
@@ -223,10 +220,8 @@ OC.L10N.register(
"Storage connection error. %s" : "ストレージへの接続エラー。 %s",
"Storage is temporarily not available" : "ストレージは一時的に利用できません",
"Storage connection timeout. %s" : "ストレージへの接続がタイムアウト。 %s",
- "Create" : "作成",
- "Change" : "変更",
- "Delete" : "削除",
- "Share" : "共有",
+ "Following databases are supported: %s" : "次のデータベースをサポートしています: %s",
+ "Following platforms are supported: %s" : "次のプラットフォームをサポートしています: %s",
"Overview" : "概要",
"Basic settings" : "基本設定",
"Sharing" : "共有",
@@ -234,30 +229,6 @@ OC.L10N.register(
"Groupware" : "グループウェア",
"Personal info" : "個人情報",
"Mobile & desktop" : "モバイル & デスクトップ",
- "Unlimited" : "無制限",
- "Verifying" : "検証中",
- "Verifying …" : "検証中",
- "Verify" : "検証",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "%s を共有できませんでした。%i タイプからの共有は許可されていません。",
- "Sharing %s failed, because the file does not exist" : "%s を共有できませんでした。そのファイルは存在しません。",
- "Sharing %s failed, because you can not share with yourself" : "%s を共有できませんでした。自分自身に共有することはできません。",
- "Sharing %1$s failed, because the user %2$s does not exist" : "ユーザー%2$sが存在しないため、%1$sの共有できませんでした",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "ユーザー%2$sは、%3$sがメンバーになっているグループのメンバーでないため、%1$sを共有できませんでした",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "このアイテムはすでに %2$s と共有されているため、%1$s を共有できませんでした",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "ユーザー%2$sによりすでに共有されているため%1$s を共有できませんでした。",
- "Sharing %1$s failed, because the group %2$s does not exist" : "グループ%2$s が存在しないため、%1$s を共有できませんでした",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "%2$s は、グループ %3$sのメンバーではないため%1$sを共有できませんでした。",
- "You need to provide a password to create a public link, only protected links are allowed" : "公開用リンクの作成にはパスワードの設定が必要です",
- "Sharing %s failed, because sharing with links is not allowed" : "%s を共有できませんでした。リンクでの共有は許可されていません。",
- "Not allowed to create a federated share with the same user" : "同じユーザーでフェデレーション共有は作成できません。",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "%1$s を共有できませんでした。%2$s が見つかりませんでした。現在サーバーに接続できないようです。",
- "Share type %1$s is not valid for %2$s" : "共有方法%1$s は、%2$s には適用できません。",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "有効期限を設定できません。共有開始から %s 以降に有効期限を設定することはできません。",
- "Cannot set expiration date. Expiration date is in the past" : "有効期限を設定できません。有効期限が過去を示しています。",
- "Sharing failed, because the user %s is the original sharer" : "共有できませんでした。ユーザー %sは元々の共有者です。",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "アクセス権が%2$sに付与されたアクセス権を超えているため、%1$sを共有できませんでした",
- "Sharing %s failed, because resharing is not allowed" : "%s を共有できませんでした。再共有は許可されていません。",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "%2$sの共有バックエンドで元データが見つからなかったため、%1$sを共有できませんでした",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s を共有できませんでした。ファイルキャッシュにファイルがありませんでした"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "多くの場合、これは Webサーバーにappsディレクトリへの書き込み権限を与えるか、設定ファイルでアプリストアを無効化することで直ります。%s を見てください。"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/ja.json b/lib/l10n/ja.json
index b029885b9e7..266ec687756 100644
--- a/lib/l10n/ja.json
+++ b/lib/l10n/ja.json
@@ -1,9 +1,8 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "\"config\"ディレクトリに書き込めません!",
"This can usually be fixed by giving the webserver write access to the config directory" : "多くの場合、これはWebサーバーにconfigディレクトリへの書き込み権限を与えることで解決できます。",
- "See %s" : "%s を閲覧",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "またはconfig.phpファイルを読み取り専用にしたい場合は、オプション \"config_is_read_only\"をtrueに設定してください。",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "多くの場合、Webサーバーの configディレクトリ に書き込み権限を与えることで直ります。%s を見てください",
+ "See %s" : "%s を閲覧",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "またはconfig.phpファイルを読み取り専用にしたい場合は、オプション \"config_is_read_only\"をtrueに設定してください。 %sを参照してください",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "アプリ %1$s のファイルが正しく置き換えられませんでした。サーバーと互換性のあるバージョンであることを確認してください。",
"Sample configuration detected" : "サンプル設定が見つかりました。",
@@ -20,12 +19,10 @@
"PHP %s or higher is required." : "PHP %s 以上が必要です。",
"PHP with a version lower than %s is required." : "%s 以前のバージョンのPHPが必要です。",
"%sbit or higher PHP required." : "%sbit 以上の新しいバージョンのPHPが必要です。",
- "Following databases are supported: %s" : "次のデータベースをサポートしています: %s",
"The command line tool %s could not be found" : "コマンド '%s' は見つかりませんでした。",
"The library %s is not available." : " %s ライブラリーが利用できません。",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "%1$sライブラリーは、%2$sよりも新しいバージョンが必要です。利用可能なバージョンは、 %3$sです。",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "%1$s ライブラリーは、%2$s よりも古いバージョンが必要です。利用可能なバージョンは、%3$s です。",
- "Following platforms are supported: %s" : "次のプラットフォームをサポートしています: %s",
"Server version %s or higher is required." : "サーバーの %s よりも高いバージョンが必要です。",
"Server version %s or lower is required." : "サーバーの %s よりも低いバージョンが必要です。",
"Logged in user must be an admin or sub admin" : "ログインユーザーは管理者またはサブ管理者である必要があります",
@@ -183,8 +180,8 @@
"Token expired. Please reload page." : "トークンが無効になりました。ページを再読込してください。",
"No database drivers (sqlite, mysql, or postgresql) installed." : "データベースドライバー (sqlite, mysql, postgresql) がインストールされていません。",
"Cannot write into \"config\" directory" : "\"config\" ディレクトリに書き込みができません",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "多くの場合、Webサーバーの configディレクトリ に書き込み権限を与えることで直ります。%s を見てください",
"Cannot write into \"apps\" directory" : "\"apps\" ディレクトリに書き込みができません",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "多くの場合、これは Webサーバーにappsディレクトリへの書き込み権限を与えるか、設定ファイルでアプリストアを無効化することで直ります。%s を見てください。",
"Cannot create \"data\" directory" : "\"data\" ディレクトリを作成できません",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "多くの場合、Webサーバーのルートディレクトリに書き込み権限を与えることで直ります。%s を見てください。",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Webサーバーのルートディレクトリに書き込み権限パーミッションが必要です。%s を見てください。",
@@ -221,10 +218,8 @@
"Storage connection error. %s" : "ストレージへの接続エラー。 %s",
"Storage is temporarily not available" : "ストレージは一時的に利用できません",
"Storage connection timeout. %s" : "ストレージへの接続がタイムアウト。 %s",
- "Create" : "作成",
- "Change" : "変更",
- "Delete" : "削除",
- "Share" : "共有",
+ "Following databases are supported: %s" : "次のデータベースをサポートしています: %s",
+ "Following platforms are supported: %s" : "次のプラットフォームをサポートしています: %s",
"Overview" : "概要",
"Basic settings" : "基本設定",
"Sharing" : "共有",
@@ -232,30 +227,6 @@
"Groupware" : "グループウェア",
"Personal info" : "個人情報",
"Mobile & desktop" : "モバイル & デスクトップ",
- "Unlimited" : "無制限",
- "Verifying" : "検証中",
- "Verifying …" : "検証中",
- "Verify" : "検証",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "%s を共有できませんでした。%i タイプからの共有は許可されていません。",
- "Sharing %s failed, because the file does not exist" : "%s を共有できませんでした。そのファイルは存在しません。",
- "Sharing %s failed, because you can not share with yourself" : "%s を共有できませんでした。自分自身に共有することはできません。",
- "Sharing %1$s failed, because the user %2$s does not exist" : "ユーザー%2$sが存在しないため、%1$sの共有できませんでした",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "ユーザー%2$sは、%3$sがメンバーになっているグループのメンバーでないため、%1$sを共有できませんでした",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "このアイテムはすでに %2$s と共有されているため、%1$s を共有できませんでした",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "ユーザー%2$sによりすでに共有されているため%1$s を共有できませんでした。",
- "Sharing %1$s failed, because the group %2$s does not exist" : "グループ%2$s が存在しないため、%1$s を共有できませんでした",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "%2$s は、グループ %3$sのメンバーではないため%1$sを共有できませんでした。",
- "You need to provide a password to create a public link, only protected links are allowed" : "公開用リンクの作成にはパスワードの設定が必要です",
- "Sharing %s failed, because sharing with links is not allowed" : "%s を共有できませんでした。リンクでの共有は許可されていません。",
- "Not allowed to create a federated share with the same user" : "同じユーザーでフェデレーション共有は作成できません。",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "%1$s を共有できませんでした。%2$s が見つかりませんでした。現在サーバーに接続できないようです。",
- "Share type %1$s is not valid for %2$s" : "共有方法%1$s は、%2$s には適用できません。",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "有効期限を設定できません。共有開始から %s 以降に有効期限を設定することはできません。",
- "Cannot set expiration date. Expiration date is in the past" : "有効期限を設定できません。有効期限が過去を示しています。",
- "Sharing failed, because the user %s is the original sharer" : "共有できませんでした。ユーザー %sは元々の共有者です。",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "アクセス権が%2$sに付与されたアクセス権を超えているため、%1$sを共有できませんでした",
- "Sharing %s failed, because resharing is not allowed" : "%s を共有できませんでした。再共有は許可されていません。",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "%2$sの共有バックエンドで元データが見つからなかったため、%1$sを共有できませんでした",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s を共有できませんでした。ファイルキャッシュにファイルがありませんでした"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "多くの場合、これは Webサーバーにappsディレクトリへの書き込み権限を与えるか、設定ファイルでアプリストアを無効化することで直ります。%s を見てください。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/ka_GE.js b/lib/l10n/ka_GE.js
index 3d19c5c82d3..3745b2dba7e 100644
--- a/lib/l10n/ka_GE.js
+++ b/lib/l10n/ka_GE.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "\"config\" დირექტორიაში ჩაწერა ვერ ხერხდება!",
"This can usually be fixed by giving the webserver write access to the config directory" : "ეს ჩვეულებრივ გამოსწორებადია ვებსერვერისთვის კონფიგურაციის დირექტორიაზე წერის უფლებების მინიჭებით",
"See %s" : "იხილეთ %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "ეს ჩვეულებრივ გამოსწორებადია ვებსერვერისთვის კონფიგურაციის დირექტორიაზე წერის უფლებების მინიჭებით. იხილეთ %s",
"Sample configuration detected" : "სანიმუშო კონფუგარცია აღმოჩენილია",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "დადგენილია რომ მოხდა სანიმუშო კონფიგურაციის დაკოპირება. ამან შეიძლება გააფუჭოს თქვენი ინსტალაცია და არაა მხარდაჭერილი. გთხოვთ config.php-ში ცვლილებების შეტანამდე გაეცნოთ დოკუმენტაციას.",
"%1$s and %2$s" : "%1$s და %2$s",
@@ -18,10 +17,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "PHP %s ან უფრო მაღალია საჭირო.",
"PHP with a version lower than %s is required." : "საჭიროა PHP-ს %s-ზე მცირე ვერსია.",
"%sbit or higher PHP required." : "საჭიროა PHP %s ბიტით ან მეტით.",
- "Following databases are supported: %s" : "მხარდაჭერილია შემდეგი მონაცემთა ბაზები: %s",
"The command line tool %s could not be found" : "command-line ხელსაწყო %s ვერ იქნა ნაპოვნი",
"The library %s is not available." : "ბიბლიოთეკა %s ვერ იქნა ნაპოვნი.",
- "Following platforms are supported: %s" : "მხარდაჭერია შემდეგი პლატფორმები: %s",
"Server version %s or higher is required." : "საჭიროა სერვერი ვერსიით %s ან მეტი.",
"Server version %s or lower is required." : "საჭიროა სერვერი ვერსიით %s ან ნაკლები.",
"Logged in user must be an admin" : "ავტორიზირებული მომხმარებელი უნდა იყოს ადმინისტრატორი",
@@ -156,8 +153,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "ტოკენს ვადა გაუვიდა. გთხოვთ განაახლოთ გვერდი.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "მონაცემთა ბაზის დრაივერები (sqlite, mysql, ან postgresql) დაყენებული არაა.",
"Cannot write into \"config\" directory" : "კონფიგურაციის \"config\" დირექტორიაში ჩაწერა ვერ მოხერხდა",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "ეს ჩვეულებრივ გამოსწორებადია ვებსერვერისთვის კონფიგურაციის დირექტორიაზე წერის უფლებების მინიჭებით. იხილეთ %s",
"Cannot write into \"apps\" directory" : "აპლიკაციების \"apps\" დირექტორიაში ჩაწერა ვერ მოხერხდა",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "ეს ჩვეულებრივ გამოსწორებადია ვებსერვერისთვის აპლიკაციების დირექტორიაზე წერის უფლების მინიჭებით ან appstore-ის კონფიგურაციის ფაილით გათიშვით. იხილეთ %s",
"Cannot create \"data\" directory" : "\"data\" დირექორია ვერ შეიქმნა",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "ეს ჩვეულებრივ გამოსწორებადია ვებსერვერისთვის root დირექტორიაზე წერის უფლებების მინიჭებით. იხილეთ %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "უფლებები ჩვეულებრივ გამოსწორებადია ვებსერვერისთვის root დირექტორიაზე წერის უფლებების მინიჭებით. იხილეთ %s",
@@ -189,28 +186,12 @@ OC.L10N.register(
"Storage connection error. %s" : "საცავის კავშირის შეცდომა. %s",
"Storage is temporarily not available" : "საცავი დროებით ხელმიუწვდომელია",
"Storage connection timeout. %s" : "საცავის კავშირის დროის ამოწურვა. %s",
- "Create" : "შექმნა",
- "Change" : "შეცვლა",
- "Delete" : "გაუქმება",
- "Share" : "გაზიარება",
+ "Following databases are supported: %s" : "მხარდაჭერილია შემდეგი მონაცემთა ბაზები: %s",
+ "Following platforms are supported: %s" : "მხარდაჭერია შემდეგი პლატფორმები: %s",
"Basic settings" : "ძირითადი პარამეტრები",
"Sharing" : "გაზიარება",
"Security" : "უსაფრთხოება",
"Personal info" : "პირადი ინფორმაცია",
- "Unlimited" : "ულიმიტო",
- "Verifying" : "მოწმდება",
- "Verifying …" : "მოწმდება …",
- "Verify" : "დამოწმება",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "%s-ის გაზიარება არ მოხერხდა, რადგანაც ბექენდი არ იღებს გაზიარებებს სახეობით %s",
- "Sharing %s failed, because the file does not exist" : "%s-ის გაზიარება არ მოხერხდა, რადგან ფაილი არ არსებობს",
- "Sharing %s failed, because you can not share with yourself" : "%s-ის გაზიარება ვერ მოხერხდა, რადგან საკუთარ თავთან ვერ გააზიარებთ",
- "You need to provide a password to create a public link, only protected links are allowed" : "საზოგადო ბმულის შექმნისთვის აუცილებელია პაროლის მითთება, მხადაჭერილია მხოლოდ დაცული ბმულები",
- "Sharing %s failed, because sharing with links is not allowed" : "%s-ის გაზიარება არ მოხერხდა, ბმულებით გაზიარება არაა ნებადართული",
- "Not allowed to create a federated share with the same user" : "იმავე მომხმარებელთან ფედერალური გაზიარება ვერ შეიქმნება",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "ვადის ამოწურვის დროის მითთება ვერ ხერხდება. გაზიარებები გაზიარების შემდეგ %s-ზე ადრე ვერ გაუქმდებიან",
- "Cannot set expiration date. Expiration date is in the past" : "ვადის ამოწურვის დროის მითითება ვერ ხერხდება. ვადის გასვლის დრო წარსულია",
- "Sharing failed, because the user %s is the original sharer" : "გაზიარება ვერ მოხერხდა, რადგან მომხმარებელი %s თავდაპირველი გამზიარებელია",
- "Sharing %s failed, because resharing is not allowed" : "%s-გაზიარება ვერ მოხერხდა, რადგან ხელახალი გაზიარება ნებადართული არაა",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s-ის გაზიარება ვერ მოხერხდა, რადგან ფაილი კეშში ვერ მოიძებნა"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "ეს ჩვეულებრივ გამოსწორებადია ვებსერვერისთვის აპლიკაციების დირექტორიაზე წერის უფლების მინიჭებით ან appstore-ის კონფიგურაციის ფაილით გათიშვით. იხილეთ %s"
},
"nplurals=2; plural=(n!=1);");
diff --git a/lib/l10n/ka_GE.json b/lib/l10n/ka_GE.json
index 18370df65a0..5acd41c8769 100644
--- a/lib/l10n/ka_GE.json
+++ b/lib/l10n/ka_GE.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "\"config\" დირექტორიაში ჩაწერა ვერ ხერხდება!",
"This can usually be fixed by giving the webserver write access to the config directory" : "ეს ჩვეულებრივ გამოსწორებადია ვებსერვერისთვის კონფიგურაციის დირექტორიაზე წერის უფლებების მინიჭებით",
"See %s" : "იხილეთ %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "ეს ჩვეულებრივ გამოსწორებადია ვებსერვერისთვის კონფიგურაციის დირექტორიაზე წერის უფლებების მინიჭებით. იხილეთ %s",
"Sample configuration detected" : "სანიმუშო კონფუგარცია აღმოჩენილია",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "დადგენილია რომ მოხდა სანიმუშო კონფიგურაციის დაკოპირება. ამან შეიძლება გააფუჭოს თქვენი ინსტალაცია და არაა მხარდაჭერილი. გთხოვთ config.php-ში ცვლილებების შეტანამდე გაეცნოთ დოკუმენტაციას.",
"%1$s and %2$s" : "%1$s და %2$s",
@@ -16,10 +15,8 @@
"PHP %s or higher is required." : "PHP %s ან უფრო მაღალია საჭირო.",
"PHP with a version lower than %s is required." : "საჭიროა PHP-ს %s-ზე მცირე ვერსია.",
"%sbit or higher PHP required." : "საჭიროა PHP %s ბიტით ან მეტით.",
- "Following databases are supported: %s" : "მხარდაჭერილია შემდეგი მონაცემთა ბაზები: %s",
"The command line tool %s could not be found" : "command-line ხელსაწყო %s ვერ იქნა ნაპოვნი",
"The library %s is not available." : "ბიბლიოთეკა %s ვერ იქნა ნაპოვნი.",
- "Following platforms are supported: %s" : "მხარდაჭერია შემდეგი პლატფორმები: %s",
"Server version %s or higher is required." : "საჭიროა სერვერი ვერსიით %s ან მეტი.",
"Server version %s or lower is required." : "საჭიროა სერვერი ვერსიით %s ან ნაკლები.",
"Logged in user must be an admin" : "ავტორიზირებული მომხმარებელი უნდა იყოს ადმინისტრატორი",
@@ -154,8 +151,8 @@
"Token expired. Please reload page." : "ტოკენს ვადა გაუვიდა. გთხოვთ განაახლოთ გვერდი.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "მონაცემთა ბაზის დრაივერები (sqlite, mysql, ან postgresql) დაყენებული არაა.",
"Cannot write into \"config\" directory" : "კონფიგურაციის \"config\" დირექტორიაში ჩაწერა ვერ მოხერხდა",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "ეს ჩვეულებრივ გამოსწორებადია ვებსერვერისთვის კონფიგურაციის დირექტორიაზე წერის უფლებების მინიჭებით. იხილეთ %s",
"Cannot write into \"apps\" directory" : "აპლიკაციების \"apps\" დირექტორიაში ჩაწერა ვერ მოხერხდა",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "ეს ჩვეულებრივ გამოსწორებადია ვებსერვერისთვის აპლიკაციების დირექტორიაზე წერის უფლების მინიჭებით ან appstore-ის კონფიგურაციის ფაილით გათიშვით. იხილეთ %s",
"Cannot create \"data\" directory" : "\"data\" დირექორია ვერ შეიქმნა",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "ეს ჩვეულებრივ გამოსწორებადია ვებსერვერისთვის root დირექტორიაზე წერის უფლებების მინიჭებით. იხილეთ %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "უფლებები ჩვეულებრივ გამოსწორებადია ვებსერვერისთვის root დირექტორიაზე წერის უფლებების მინიჭებით. იხილეთ %s",
@@ -187,28 +184,12 @@
"Storage connection error. %s" : "საცავის კავშირის შეცდომა. %s",
"Storage is temporarily not available" : "საცავი დროებით ხელმიუწვდომელია",
"Storage connection timeout. %s" : "საცავის კავშირის დროის ამოწურვა. %s",
- "Create" : "შექმნა",
- "Change" : "შეცვლა",
- "Delete" : "გაუქმება",
- "Share" : "გაზიარება",
+ "Following databases are supported: %s" : "მხარდაჭერილია შემდეგი მონაცემთა ბაზები: %s",
+ "Following platforms are supported: %s" : "მხარდაჭერია შემდეგი პლატფორმები: %s",
"Basic settings" : "ძირითადი პარამეტრები",
"Sharing" : "გაზიარება",
"Security" : "უსაფრთხოება",
"Personal info" : "პირადი ინფორმაცია",
- "Unlimited" : "ულიმიტო",
- "Verifying" : "მოწმდება",
- "Verifying …" : "მოწმდება …",
- "Verify" : "დამოწმება",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "%s-ის გაზიარება არ მოხერხდა, რადგანაც ბექენდი არ იღებს გაზიარებებს სახეობით %s",
- "Sharing %s failed, because the file does not exist" : "%s-ის გაზიარება არ მოხერხდა, რადგან ფაილი არ არსებობს",
- "Sharing %s failed, because you can not share with yourself" : "%s-ის გაზიარება ვერ მოხერხდა, რადგან საკუთარ თავთან ვერ გააზიარებთ",
- "You need to provide a password to create a public link, only protected links are allowed" : "საზოგადო ბმულის შექმნისთვის აუცილებელია პაროლის მითთება, მხადაჭერილია მხოლოდ დაცული ბმულები",
- "Sharing %s failed, because sharing with links is not allowed" : "%s-ის გაზიარება არ მოხერხდა, ბმულებით გაზიარება არაა ნებადართული",
- "Not allowed to create a federated share with the same user" : "იმავე მომხმარებელთან ფედერალური გაზიარება ვერ შეიქმნება",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "ვადის ამოწურვის დროის მითთება ვერ ხერხდება. გაზიარებები გაზიარების შემდეგ %s-ზე ადრე ვერ გაუქმდებიან",
- "Cannot set expiration date. Expiration date is in the past" : "ვადის ამოწურვის დროის მითითება ვერ ხერხდება. ვადის გასვლის დრო წარსულია",
- "Sharing failed, because the user %s is the original sharer" : "გაზიარება ვერ მოხერხდა, რადგან მომხმარებელი %s თავდაპირველი გამზიარებელია",
- "Sharing %s failed, because resharing is not allowed" : "%s-გაზიარება ვერ მოხერხდა, რადგან ხელახალი გაზიარება ნებადართული არაა",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s-ის გაზიარება ვერ მოხერხდა, რადგან ფაილი კეშში ვერ მოიძებნა"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "ეს ჩვეულებრივ გამოსწორებადია ვებსერვერისთვის აპლიკაციების დირექტორიაზე წერის უფლების მინიჭებით ან appstore-ის კონფიგურაციის ფაილით გათიშვით. იხილეთ %s"
},"pluralForm" :"nplurals=2; plural=(n!=1);"
} \ No newline at end of file
diff --git a/lib/l10n/km.js b/lib/l10n/km.js
index 9875331de83..5dda6a7fb17 100644
--- a/lib/l10n/km.js
+++ b/lib/l10n/km.js
@@ -68,10 +68,6 @@ OC.L10N.register(
"A valid password must be provided" : "ត្រូវ​ផ្ដល់​ពាក្យ​សម្ងាត់​ឲ្យ​បាន​ត្រឹម​ត្រូវ",
"Application is not enabled" : "មិន​បាន​បើក​កម្មវិធី",
"Authentication error" : "កំហុស​ការ​ផ្ទៀង​ផ្ទាត់​ភាព​ត្រឹម​ត្រូវ",
- "Create" : "បង្កើត",
- "Delete" : "លុប",
- "Share" : "ចែក​រំលែក",
- "Sharing" : "ការ​ចែក​រំលែក",
- "Unlimited" : "មិន​កំណត់"
+ "Sharing" : "ការ​ចែក​រំលែក"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/km.json b/lib/l10n/km.json
index b16a4bd109a..585993965cb 100644
--- a/lib/l10n/km.json
+++ b/lib/l10n/km.json
@@ -66,10 +66,6 @@
"A valid password must be provided" : "ត្រូវ​ផ្ដល់​ពាក្យ​សម្ងាត់​ឲ្យ​បាន​ត្រឹម​ត្រូវ",
"Application is not enabled" : "មិន​បាន​បើក​កម្មវិធី",
"Authentication error" : "កំហុស​ការ​ផ្ទៀង​ផ្ទាត់​ភាព​ត្រឹម​ត្រូវ",
- "Create" : "បង្កើត",
- "Delete" : "លុប",
- "Share" : "ចែក​រំលែក",
- "Sharing" : "ការ​ចែក​រំលែក",
- "Unlimited" : "មិន​កំណត់"
+ "Sharing" : "ការ​ចែក​រំលែក"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/kn.js b/lib/l10n/kn.js
index d9a38a5f411..e0e54983b0f 100644
--- a/lib/l10n/kn.js
+++ b/lib/l10n/kn.js
@@ -31,9 +31,6 @@ OC.L10N.register(
"A valid username must be provided" : "ಮಾನ್ಯ ಬಳಕೆದಾರ ಹೆಸರು ಒದಗಿಸಬೇಕಾಗುತ್ತದೆ",
"A valid password must be provided" : "ಸರಿಯಾದ ಬಳಕೆದಾರ ಗುಪ್ತಪದ ಒದಗಿಸಬೇಕಾಗಿದೆ",
"Authentication error" : "ದೃಢೀಕರಣ ದೋಷ",
- "Create" : "ಸೃಷ್ಟಿಸಿ",
- "Delete" : "ಅಳಿಸಿ",
- "Share" : "ಹಂಚಿಕೊಳ್ಳಿ",
"Sharing" : "ಹಂಚಿಕೆ"
},
"nplurals=2; plural=(n > 1);");
diff --git a/lib/l10n/kn.json b/lib/l10n/kn.json
index 35e94504256..22cb4e1c91e 100644
--- a/lib/l10n/kn.json
+++ b/lib/l10n/kn.json
@@ -29,9 +29,6 @@
"A valid username must be provided" : "ಮಾನ್ಯ ಬಳಕೆದಾರ ಹೆಸರು ಒದಗಿಸಬೇಕಾಗುತ್ತದೆ",
"A valid password must be provided" : "ಸರಿಯಾದ ಬಳಕೆದಾರ ಗುಪ್ತಪದ ಒದಗಿಸಬೇಕಾಗಿದೆ",
"Authentication error" : "ದೃಢೀಕರಣ ದೋಷ",
- "Create" : "ಸೃಷ್ಟಿಸಿ",
- "Delete" : "ಅಳಿಸಿ",
- "Share" : "ಹಂಚಿಕೊಳ್ಳಿ",
"Sharing" : "ಹಂಚಿಕೆ"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/lib/l10n/ko.js b/lib/l10n/ko.js
index df406644144..1a4a575d983 100644
--- a/lib/l10n/ko.js
+++ b/lib/l10n/ko.js
@@ -3,9 +3,8 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "\"config\" 디렉터리에 기록할 수 없습니다!",
"This can usually be fixed by giving the webserver write access to the config directory" : "config 디렉터리에 웹 서버 쓰기 권한을 부여해서 해결할 수 있습니다",
- "See %s" : "%s 보기",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "config.php 파일을 읽기 전용으로 하시려는 경우, 설정의 \"config_is_read_only\"를 true로 하십시오.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "config 디렉터리에 웹 서버의 쓰기 권한을 부여해서 해결할 수 있습니다. %s 문서를 참조하십시오",
+ "See %s" : "%s 보기",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "config.php 파일을 읽기 전용으로 하시려는 경우, 설정의 \"config_is_read_only\"를 true로 하십시오. %s를 참조하십시오.",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "앱 %1$s의 파일이 올바르게 교체되지 않았습니다. 서버와 호환되는 버전인지 확인하십시오.",
"Sample configuration detected" : "예제 설정 감지됨",
@@ -21,12 +20,10 @@ OC.L10N.register(
"PHP %s or higher is required." : "PHP 버전 %s 이상이 필요합니다.",
"PHP with a version lower than %s is required." : "PHP 버전 %s 미만이 필요합니다.",
"%sbit or higher PHP required." : "%s비트 이상의 PHP가 필요합니다.",
- "Following databases are supported: %s" : "다음 데이터베이스를 지원합니다: %s",
"The command line tool %s could not be found" : "명령행 도구 %s을(를) 찾을 수 없습니다",
"The library %s is not available." : "%s 라이브러리를 사용할 수 없습니다.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "%1$s 라이브러리의 버전 %2$s 이상이 필요합니다. 사용 가능한 버전은 %3$s입니다.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "%1$s 라이브러리의 버전 %2$s 이상이 필요합니다. 사용 가능한 버전은 %3$s입니다.",
- "Following platforms are supported: %s" : "다음 플랫폼을 지원합니다: %s",
"Server version %s or higher is required." : "서버 버전 %s 이상이 필요합니다.",
"Server version %s or lower is required." : "서버 버전 %s 미만이 필요합니다.",
"Logged in user must be an admin or sub admin" : "로그인한 사용자는 관리자 또는 부 관리자여야 합니다.",
@@ -165,8 +162,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "토큰이 만료되었습니다. 페이지를 새로 고치십시오.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "데이터베이스 드라이버(sqlite, mysql, postgresql)가 설치되지 않았습니다.",
"Cannot write into \"config\" directory" : "\"config\" 디렉터리에 기록할 수 없습니다",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "config 디렉터리에 웹 서버의 쓰기 권한을 부여해서 해결할 수 있습니다. %s 문서를 참조하십시오",
"Cannot write into \"apps\" directory" : "\"apps\" 디렉터리에 기록할 수 없습니다",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "apps 디렉터리에 웹 서버의 쓰기 권한을 부여하거나 설정에서 앱 스토어를 비활성화해서 해결할 수 있습니다. %s 문서를 참조하십시오",
"Cannot create \"data\" directory" : "\"data\" 디렉터리를 만들 수 없음",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "루트 디렉터리에 웹 서버의 쓰기 권한을 부여해서 해결할 수 있습니다. %s 문서를 참조하십시오",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "루트 디렉터리에 웹 서버의 쓰기 권한을 부여해서 해결할 수 있습니다. %s 문서를 참조하십시오.",
@@ -199,10 +196,8 @@ OC.L10N.register(
"Storage connection error. %s" : "저장소 연결 오류입니다. %s",
"Storage is temporarily not available" : "저장소를 임시로 사용할 수 없음",
"Storage connection timeout. %s" : "저장소 연결 시간이 초과되었습니다. %s",
- "Create" : "생성",
- "Change" : "변경",
- "Delete" : "삭제",
- "Share" : "공유",
+ "Following databases are supported: %s" : "다음 데이터베이스를 지원합니다: %s",
+ "Following platforms are supported: %s" : "다음 플랫폼을 지원합니다: %s",
"Overview" : "개요",
"Basic settings" : "기본 설정",
"Sharing" : "공유",
@@ -210,21 +205,6 @@ OC.L10N.register(
"Groupware" : "그룹웨어",
"Personal info" : "개인 정보",
"Mobile & desktop" : "모바일 & 데스크톱",
- "Unlimited" : "무제한",
- "Verifying" : "검사 중",
- "Verifying …" : "검사 중…",
- "Verify" : "검사",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "%s을(를) 공유할 수 없습니다. 백엔드에서 %i 형식의 공유를 허용하지 않습니다",
- "Sharing %s failed, because the file does not exist" : "%s을(를) 공유할 수 없습니다. 파일이 존재하지 않습니다",
- "Sharing %s failed, because you can not share with yourself" : "%s을(를) 공유할 수 없습니다. 자기 자신과 공유할 수 없습니다",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "%1$s 공유 실패. %2$s와(과) 이미 공유되어 있습니다",
- "You need to provide a password to create a public link, only protected links are allowed" : "공개 링크를 만들려면 암호를 입력해야 합니다. 보호된 링크만 사용 가능합니다",
- "Sharing %s failed, because sharing with links is not allowed" : "%s을(를) 공유할 수 없습니다. 링크 공유가 허용되지 않았습니다",
- "Not allowed to create a federated share with the same user" : "같은 사용자와 연합 공유를 만들 수 없음",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "만료 날짜를 설정할 수 없습니다. 최대 공유 허용 기한이 %s입니다.",
- "Cannot set expiration date. Expiration date is in the past" : "만료 날짜를 설정할 수 없습니다. 만료 날짜가 과거입니다",
- "Sharing failed, because the user %s is the original sharer" : "공유할 수 없습니다. 사용자 %s이(가) 원 공유자입니다",
- "Sharing %s failed, because resharing is not allowed" : "%s을(를) 공유할 수 없습니다. 다시 공유할 수 없습니다",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s을(를) 공유할 수 없습니다. 파일 캐시에서 찾을 수 없습니다"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "apps 디렉터리에 웹 서버의 쓰기 권한을 부여하거나 설정에서 앱 스토어를 비활성화해서 해결할 수 있습니다. %s 문서를 참조하십시오"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/ko.json b/lib/l10n/ko.json
index 6b5e4d51b67..8f2ad7d8839 100644
--- a/lib/l10n/ko.json
+++ b/lib/l10n/ko.json
@@ -1,9 +1,8 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "\"config\" 디렉터리에 기록할 수 없습니다!",
"This can usually be fixed by giving the webserver write access to the config directory" : "config 디렉터리에 웹 서버 쓰기 권한을 부여해서 해결할 수 있습니다",
- "See %s" : "%s 보기",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "config.php 파일을 읽기 전용으로 하시려는 경우, 설정의 \"config_is_read_only\"를 true로 하십시오.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "config 디렉터리에 웹 서버의 쓰기 권한을 부여해서 해결할 수 있습니다. %s 문서를 참조하십시오",
+ "See %s" : "%s 보기",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "config.php 파일을 읽기 전용으로 하시려는 경우, 설정의 \"config_is_read_only\"를 true로 하십시오. %s를 참조하십시오.",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "앱 %1$s의 파일이 올바르게 교체되지 않았습니다. 서버와 호환되는 버전인지 확인하십시오.",
"Sample configuration detected" : "예제 설정 감지됨",
@@ -19,12 +18,10 @@
"PHP %s or higher is required." : "PHP 버전 %s 이상이 필요합니다.",
"PHP with a version lower than %s is required." : "PHP 버전 %s 미만이 필요합니다.",
"%sbit or higher PHP required." : "%s비트 이상의 PHP가 필요합니다.",
- "Following databases are supported: %s" : "다음 데이터베이스를 지원합니다: %s",
"The command line tool %s could not be found" : "명령행 도구 %s을(를) 찾을 수 없습니다",
"The library %s is not available." : "%s 라이브러리를 사용할 수 없습니다.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "%1$s 라이브러리의 버전 %2$s 이상이 필요합니다. 사용 가능한 버전은 %3$s입니다.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "%1$s 라이브러리의 버전 %2$s 이상이 필요합니다. 사용 가능한 버전은 %3$s입니다.",
- "Following platforms are supported: %s" : "다음 플랫폼을 지원합니다: %s",
"Server version %s or higher is required." : "서버 버전 %s 이상이 필요합니다.",
"Server version %s or lower is required." : "서버 버전 %s 미만이 필요합니다.",
"Logged in user must be an admin or sub admin" : "로그인한 사용자는 관리자 또는 부 관리자여야 합니다.",
@@ -163,8 +160,8 @@
"Token expired. Please reload page." : "토큰이 만료되었습니다. 페이지를 새로 고치십시오.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "데이터베이스 드라이버(sqlite, mysql, postgresql)가 설치되지 않았습니다.",
"Cannot write into \"config\" directory" : "\"config\" 디렉터리에 기록할 수 없습니다",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "config 디렉터리에 웹 서버의 쓰기 권한을 부여해서 해결할 수 있습니다. %s 문서를 참조하십시오",
"Cannot write into \"apps\" directory" : "\"apps\" 디렉터리에 기록할 수 없습니다",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "apps 디렉터리에 웹 서버의 쓰기 권한을 부여하거나 설정에서 앱 스토어를 비활성화해서 해결할 수 있습니다. %s 문서를 참조하십시오",
"Cannot create \"data\" directory" : "\"data\" 디렉터리를 만들 수 없음",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "루트 디렉터리에 웹 서버의 쓰기 권한을 부여해서 해결할 수 있습니다. %s 문서를 참조하십시오",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "루트 디렉터리에 웹 서버의 쓰기 권한을 부여해서 해결할 수 있습니다. %s 문서를 참조하십시오.",
@@ -197,10 +194,8 @@
"Storage connection error. %s" : "저장소 연결 오류입니다. %s",
"Storage is temporarily not available" : "저장소를 임시로 사용할 수 없음",
"Storage connection timeout. %s" : "저장소 연결 시간이 초과되었습니다. %s",
- "Create" : "생성",
- "Change" : "변경",
- "Delete" : "삭제",
- "Share" : "공유",
+ "Following databases are supported: %s" : "다음 데이터베이스를 지원합니다: %s",
+ "Following platforms are supported: %s" : "다음 플랫폼을 지원합니다: %s",
"Overview" : "개요",
"Basic settings" : "기본 설정",
"Sharing" : "공유",
@@ -208,21 +203,6 @@
"Groupware" : "그룹웨어",
"Personal info" : "개인 정보",
"Mobile & desktop" : "모바일 & 데스크톱",
- "Unlimited" : "무제한",
- "Verifying" : "검사 중",
- "Verifying …" : "검사 중…",
- "Verify" : "검사",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "%s을(를) 공유할 수 없습니다. 백엔드에서 %i 형식의 공유를 허용하지 않습니다",
- "Sharing %s failed, because the file does not exist" : "%s을(를) 공유할 수 없습니다. 파일이 존재하지 않습니다",
- "Sharing %s failed, because you can not share with yourself" : "%s을(를) 공유할 수 없습니다. 자기 자신과 공유할 수 없습니다",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "%1$s 공유 실패. %2$s와(과) 이미 공유되어 있습니다",
- "You need to provide a password to create a public link, only protected links are allowed" : "공개 링크를 만들려면 암호를 입력해야 합니다. 보호된 링크만 사용 가능합니다",
- "Sharing %s failed, because sharing with links is not allowed" : "%s을(를) 공유할 수 없습니다. 링크 공유가 허용되지 않았습니다",
- "Not allowed to create a federated share with the same user" : "같은 사용자와 연합 공유를 만들 수 없음",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "만료 날짜를 설정할 수 없습니다. 최대 공유 허용 기한이 %s입니다.",
- "Cannot set expiration date. Expiration date is in the past" : "만료 날짜를 설정할 수 없습니다. 만료 날짜가 과거입니다",
- "Sharing failed, because the user %s is the original sharer" : "공유할 수 없습니다. 사용자 %s이(가) 원 공유자입니다",
- "Sharing %s failed, because resharing is not allowed" : "%s을(를) 공유할 수 없습니다. 다시 공유할 수 없습니다",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s을(를) 공유할 수 없습니다. 파일 캐시에서 찾을 수 없습니다"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "apps 디렉터리에 웹 서버의 쓰기 권한을 부여하거나 설정에서 앱 스토어를 비활성화해서 해결할 수 있습니다. %s 문서를 참조하십시오"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/lb.js b/lib/l10n/lb.js
index 8f73c34fb8a..0c9bcc2f30a 100644
--- a/lib/l10n/lb.js
+++ b/lib/l10n/lb.js
@@ -6,7 +6,6 @@ OC.L10N.register(
"Sample configuration detected" : "Beispill-Konfiguratioun erkannt",
"PHP %s or higher is required." : "PHP %s oder méi nei ass néideg.",
"PHP with a version lower than %s is required." : "PHP mat enger Versioun %s oder méi kleng ass néideg.",
- "Following databases are supported: %s" : "Dës Datebanke ginn ënnerstëtzt: %s",
"Unknown filetype" : "Onbekannten Fichier Typ",
"Invalid image" : "Ongülteg d'Bild",
"today" : "haut",
@@ -65,9 +64,7 @@ OC.L10N.register(
"Dec." : "Dez.",
"Authentication error" : "Authentifikatioun's Fehler",
"Storage is temporarily not available" : "Späicherplaatz temporär net erreeschbar",
- "Create" : "Erstellen",
- "Delete" : "Läschen",
- "Share" : "Deelen",
+ "Following databases are supported: %s" : "Dës Datebanke ginn ënnerstëtzt: %s",
"Sharing" : "Gedeelt"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/lb.json b/lib/l10n/lb.json
index b83056736dc..d8981f258a1 100644
--- a/lib/l10n/lb.json
+++ b/lib/l10n/lb.json
@@ -4,7 +4,6 @@
"Sample configuration detected" : "Beispill-Konfiguratioun erkannt",
"PHP %s or higher is required." : "PHP %s oder méi nei ass néideg.",
"PHP with a version lower than %s is required." : "PHP mat enger Versioun %s oder méi kleng ass néideg.",
- "Following databases are supported: %s" : "Dës Datebanke ginn ënnerstëtzt: %s",
"Unknown filetype" : "Onbekannten Fichier Typ",
"Invalid image" : "Ongülteg d'Bild",
"today" : "haut",
@@ -63,9 +62,7 @@
"Dec." : "Dez.",
"Authentication error" : "Authentifikatioun's Fehler",
"Storage is temporarily not available" : "Späicherplaatz temporär net erreeschbar",
- "Create" : "Erstellen",
- "Delete" : "Läschen",
- "Share" : "Deelen",
+ "Following databases are supported: %s" : "Dës Datebanke ginn ënnerstëtzt: %s",
"Sharing" : "Gedeelt"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/lt_LT.js b/lib/l10n/lt_LT.js
index 76b9cd71950..7887960e852 100644
--- a/lib/l10n/lt_LT.js
+++ b/lib/l10n/lt_LT.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "Nepavyksta rašyti į \"config\" katalogą!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Tai, dažniausiai, gali būti ištaisyta suteikiant saityno serveriui rašymo prieigą prie konfigūracijos katalogo",
"See %s" : "Žiūrėkite %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Tai, dažniausiai, gali būti pataisyta, suteikiant saityno serveriui rašymo prieigą prie konfigūracijos katalogo. Žiūrėkite %s",
"Sample configuration detected" : "Aptiktas konfigūracijos pavyzdys",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Pastebėta, kad nukopijuota pavyzdinė konfigūracija. Tai gali pažeisti jūsų diegimą ir yra nepalaikoma. Prieš atliekant pakeitimus config.php faile, prašome perskaityti dokumentaciją.",
"%1$s and %2$s" : "%1$s ir %2$s",
@@ -14,10 +13,8 @@ OC.L10N.register(
"Groupware bundle" : "Grupinio darbo įrangos rinkinys",
"PHP %s or higher is required." : "Reikalinga PHP %s arba aukštesnė.",
"PHP with a version lower than %s is required." : "Reikalinga žemesnė nei %s PHP versija. ",
- "Following databases are supported: %s" : "Yra palaikomos šios duomenų bazės: %s",
"The command line tool %s could not be found" : "Nepavyko rasti komandų eilutės įrankio %s",
"The library %s is not available." : "Biblioteka %s nėra prieinama.",
- "Following platforms are supported: %s" : "Yra palaikomos šios platformos: %s",
"Server version %s or higher is required." : "Reikalinga %s arba aukštesnė serverio versija ",
"Server version %s or lower is required." : "Reikalinga %s arba žemesnė serverio versija. ",
"Logged in user must be an admin" : "Prisijungęs naudotojas privalo būti administratoriumi",
@@ -148,7 +145,7 @@ OC.L10N.register(
"Oct." : "Spl.",
"Nov." : "Lap.",
"Dec." : "Grd.",
- "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Naudotojo varde galima naudoti tik sekančius simbolius: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Naudotojo varde leidžiama naudoti tik šiuos simbolius: \"a-z\", \"A-Z\", \"0-9\", ir \"_.@-'\"",
"A valid username must be provided" : "Privalo būti pateiktas tinkamas naudotojo vardas",
"Username contains whitespace at the beginning or at the end" : "Naudotojo varde pradžioje ar pabaigoje yra tarpas",
"Username must not consist of dots only" : "Naudotojo vardas negali būti sudarytas tik iš taškų.",
@@ -166,8 +163,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "Pasibaigė prieigos rakto galiojimas. Prašome įkelti puslapį iš naujo.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Nėra įdiegtos duomenų bazių tvarkyklės (sqlite, mysql, or postgresql)",
"Cannot write into \"config\" directory" : "Nepavyksta rašyti į \"config\" katalogą!",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Tai, dažniausiai, gali būti pataisyta, suteikiant saityno serveriui rašymo prieigą prie konfigūracijos katalogo. Žiūrėkite %s",
"Cannot write into \"apps\" directory" : "Nepavyksta įrašyti į \"apps\" katalogą",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Tai, dažniausiai, gali būti ištaisyta, suteikiant saityno serveriui rašymo prieigą prie programų katalogo arba uždraudžiant appstore konfigūraciniame kataloge. Žiūrėkite %s",
"Cannot create \"data\" directory" : "Nepavyksta sukurti katalogo \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Tai, dažniausiai, gali būti ištaisyta, suteikiant saityno serveriui rašymo prieigą prie šakninio katalogo. Žiūrėkite %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Teisės gali būti pataisytos, suteikiant saityno serveriui rašymo prieigą prie šakninio katalogo. Žiūrėkite %s",
@@ -192,16 +189,15 @@ OC.L10N.register(
"Your data directory is invalid" : "Neteisingas duomenų katalogas",
"Ensure there is a file called \".ocdata\" in the root of the data directory." : "Įsitikinkite, kad šakniniame duomenų kataloge yra yra \".ocdata\" failas.",
"Action \"%s\" not supported or implemented." : "Veiksmas \"%s\" nepalaikomas ar neįgyvendintas.",
+ "Authentication failed, wrong token or provider ID given" : "Tapatybės nustatymas nepavyko, nurodytas neteisingas prieigos raktas arba teikėjo ID",
"Could not obtain lock type %d on \"%s\"." : "Nepavyko gauti užrakto tipo %d ties \"%s\".",
"Storage unauthorized. %s" : "Saugykla nesankcionuota. %s",
"Storage incomplete configuration. %s" : "Nepilna saugyklos konfigūracija. %s",
"Storage connection error. %s" : "Saugyklos sujungimo ryšio klaida. %s",
"Storage is temporarily not available" : "Saugykla yra laikinai neprieinama",
"Storage connection timeout. %s" : "Sujungimo su saugykla laikas baigėsi. %s",
- "Create" : "Sukurti",
- "Change" : "Keisti",
- "Delete" : "Ištrinti",
- "Share" : "Bendrinti",
+ "Following databases are supported: %s" : "Yra palaikomos šios duomenų bazės: %s",
+ "Following platforms are supported: %s" : "Yra palaikomos šios platformos: %s",
"Overview" : "Apžvalga",
"Basic settings" : "Pagrindiniai nustatymai",
"Sharing" : "Bendrinimas",
@@ -209,27 +205,6 @@ OC.L10N.register(
"Groupware" : "Grupinio darbo įranga",
"Personal info" : "Asmeninė informacija",
"Mobile & desktop" : "Mobilieji ir darbalaukiai",
- "Unlimited" : "Neribota",
- "Verifying" : "Tikrinimas",
- "Verifying …" : "Tikrinama...",
- "Verify" : "Patikrinti",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "%s dalinimasis nepavyko, nes sistema nepalaiko šio duomenų tipo %i",
- "Sharing %s failed, because the file does not exist" : "%s dalinimasis nepavyko, nes failas neegzistuoja. ",
- "Sharing %s failed, because you can not share with yourself" : "%s bendrinimas nepavyko, jūs negalite bendrinti su savimi pačiu.",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Nepavyko bendrinti %1$s, nes naudotojo %2$s nėra",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Nepavyko bendrinti %1$s, nes šis elementas jau yra bendrinamas su %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Nepavyko bendrinti %1$s, nes šis elementas jau yra bendrinamas su naudotoju %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Nepavyko bendrinti %1$s, nes grupės %2$s nėra",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Nepavyko bendrinti %1$s, nes %2$s nėra grupės %3$s narys",
- "You need to provide a password to create a public link, only protected links are allowed" : "Viešoms nuorodoms būtinas slaptažodis, leidžiamos tik apsaugotos nuorodos.",
- "Sharing %s failed, because sharing with links is not allowed" : "Bendrinimas %s nepavyko, kadangi bendrinimas su nuorodomis yra neleidžiamas.",
- "Not allowed to create a federated share with the same user" : "Negalima sukurti federacinį viešinį su tuo pačiu naudotoju",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Nepavyko bendrinti %1$s, nepavyko rasti %2$s, galbūt, šiuo metu serveris yra nepasiekiamas.",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Negalima nustatyti galiojimo pabaigos datos. Bendrinimas negali pasibaigti vėliau nei %s po jo pasidalinimo",
- "Cannot set expiration date. Expiration date is in the past" : "Nepavyko nustatyti galiojimo datos. Galiojimo data yra praėjęs laikas.",
- "Sharing failed, because the user %s is the original sharer" : "Bendrinimas nepavyko, nes naudotojas %s yra bendrintojas.",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "%1$s bendrinimas nepavyko, nes leidimai viršijo %2$s suteiktus leidimus",
- "Sharing %s failed, because resharing is not allowed" : "%s bendrinimas nepavyko, nes perskirstymas yra neleidžiamas.",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s dalinimasis nepavyko, nes failo nepavyko rasti podelyje. "
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Tai, dažniausiai, gali būti ištaisyta, suteikiant saityno serveriui rašymo prieigą prie programų katalogo arba uždraudžiant appstore konfigūraciniame kataloge. Žiūrėkite %s"
},
"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/lib/l10n/lt_LT.json b/lib/l10n/lt_LT.json
index 2bc92932213..e8cfc19211f 100644
--- a/lib/l10n/lt_LT.json
+++ b/lib/l10n/lt_LT.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "Nepavyksta rašyti į \"config\" katalogą!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Tai, dažniausiai, gali būti ištaisyta suteikiant saityno serveriui rašymo prieigą prie konfigūracijos katalogo",
"See %s" : "Žiūrėkite %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Tai, dažniausiai, gali būti pataisyta, suteikiant saityno serveriui rašymo prieigą prie konfigūracijos katalogo. Žiūrėkite %s",
"Sample configuration detected" : "Aptiktas konfigūracijos pavyzdys",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Pastebėta, kad nukopijuota pavyzdinė konfigūracija. Tai gali pažeisti jūsų diegimą ir yra nepalaikoma. Prieš atliekant pakeitimus config.php faile, prašome perskaityti dokumentaciją.",
"%1$s and %2$s" : "%1$s ir %2$s",
@@ -12,10 +11,8 @@
"Groupware bundle" : "Grupinio darbo įrangos rinkinys",
"PHP %s or higher is required." : "Reikalinga PHP %s arba aukštesnė.",
"PHP with a version lower than %s is required." : "Reikalinga žemesnė nei %s PHP versija. ",
- "Following databases are supported: %s" : "Yra palaikomos šios duomenų bazės: %s",
"The command line tool %s could not be found" : "Nepavyko rasti komandų eilutės įrankio %s",
"The library %s is not available." : "Biblioteka %s nėra prieinama.",
- "Following platforms are supported: %s" : "Yra palaikomos šios platformos: %s",
"Server version %s or higher is required." : "Reikalinga %s arba aukštesnė serverio versija ",
"Server version %s or lower is required." : "Reikalinga %s arba žemesnė serverio versija. ",
"Logged in user must be an admin" : "Prisijungęs naudotojas privalo būti administratoriumi",
@@ -146,7 +143,7 @@
"Oct." : "Spl.",
"Nov." : "Lap.",
"Dec." : "Grd.",
- "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Naudotojo varde galima naudoti tik sekančius simbolius: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Naudotojo varde leidžiama naudoti tik šiuos simbolius: \"a-z\", \"A-Z\", \"0-9\", ir \"_.@-'\"",
"A valid username must be provided" : "Privalo būti pateiktas tinkamas naudotojo vardas",
"Username contains whitespace at the beginning or at the end" : "Naudotojo varde pradžioje ar pabaigoje yra tarpas",
"Username must not consist of dots only" : "Naudotojo vardas negali būti sudarytas tik iš taškų.",
@@ -164,8 +161,8 @@
"Token expired. Please reload page." : "Pasibaigė prieigos rakto galiojimas. Prašome įkelti puslapį iš naujo.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Nėra įdiegtos duomenų bazių tvarkyklės (sqlite, mysql, or postgresql)",
"Cannot write into \"config\" directory" : "Nepavyksta rašyti į \"config\" katalogą!",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Tai, dažniausiai, gali būti pataisyta, suteikiant saityno serveriui rašymo prieigą prie konfigūracijos katalogo. Žiūrėkite %s",
"Cannot write into \"apps\" directory" : "Nepavyksta įrašyti į \"apps\" katalogą",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Tai, dažniausiai, gali būti ištaisyta, suteikiant saityno serveriui rašymo prieigą prie programų katalogo arba uždraudžiant appstore konfigūraciniame kataloge. Žiūrėkite %s",
"Cannot create \"data\" directory" : "Nepavyksta sukurti katalogo \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Tai, dažniausiai, gali būti ištaisyta, suteikiant saityno serveriui rašymo prieigą prie šakninio katalogo. Žiūrėkite %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Teisės gali būti pataisytos, suteikiant saityno serveriui rašymo prieigą prie šakninio katalogo. Žiūrėkite %s",
@@ -190,16 +187,15 @@
"Your data directory is invalid" : "Neteisingas duomenų katalogas",
"Ensure there is a file called \".ocdata\" in the root of the data directory." : "Įsitikinkite, kad šakniniame duomenų kataloge yra yra \".ocdata\" failas.",
"Action \"%s\" not supported or implemented." : "Veiksmas \"%s\" nepalaikomas ar neįgyvendintas.",
+ "Authentication failed, wrong token or provider ID given" : "Tapatybės nustatymas nepavyko, nurodytas neteisingas prieigos raktas arba teikėjo ID",
"Could not obtain lock type %d on \"%s\"." : "Nepavyko gauti užrakto tipo %d ties \"%s\".",
"Storage unauthorized. %s" : "Saugykla nesankcionuota. %s",
"Storage incomplete configuration. %s" : "Nepilna saugyklos konfigūracija. %s",
"Storage connection error. %s" : "Saugyklos sujungimo ryšio klaida. %s",
"Storage is temporarily not available" : "Saugykla yra laikinai neprieinama",
"Storage connection timeout. %s" : "Sujungimo su saugykla laikas baigėsi. %s",
- "Create" : "Sukurti",
- "Change" : "Keisti",
- "Delete" : "Ištrinti",
- "Share" : "Bendrinti",
+ "Following databases are supported: %s" : "Yra palaikomos šios duomenų bazės: %s",
+ "Following platforms are supported: %s" : "Yra palaikomos šios platformos: %s",
"Overview" : "Apžvalga",
"Basic settings" : "Pagrindiniai nustatymai",
"Sharing" : "Bendrinimas",
@@ -207,27 +203,6 @@
"Groupware" : "Grupinio darbo įranga",
"Personal info" : "Asmeninė informacija",
"Mobile & desktop" : "Mobilieji ir darbalaukiai",
- "Unlimited" : "Neribota",
- "Verifying" : "Tikrinimas",
- "Verifying …" : "Tikrinama...",
- "Verify" : "Patikrinti",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "%s dalinimasis nepavyko, nes sistema nepalaiko šio duomenų tipo %i",
- "Sharing %s failed, because the file does not exist" : "%s dalinimasis nepavyko, nes failas neegzistuoja. ",
- "Sharing %s failed, because you can not share with yourself" : "%s bendrinimas nepavyko, jūs negalite bendrinti su savimi pačiu.",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Nepavyko bendrinti %1$s, nes naudotojo %2$s nėra",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Nepavyko bendrinti %1$s, nes šis elementas jau yra bendrinamas su %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Nepavyko bendrinti %1$s, nes šis elementas jau yra bendrinamas su naudotoju %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Nepavyko bendrinti %1$s, nes grupės %2$s nėra",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Nepavyko bendrinti %1$s, nes %2$s nėra grupės %3$s narys",
- "You need to provide a password to create a public link, only protected links are allowed" : "Viešoms nuorodoms būtinas slaptažodis, leidžiamos tik apsaugotos nuorodos.",
- "Sharing %s failed, because sharing with links is not allowed" : "Bendrinimas %s nepavyko, kadangi bendrinimas su nuorodomis yra neleidžiamas.",
- "Not allowed to create a federated share with the same user" : "Negalima sukurti federacinį viešinį su tuo pačiu naudotoju",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Nepavyko bendrinti %1$s, nepavyko rasti %2$s, galbūt, šiuo metu serveris yra nepasiekiamas.",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Negalima nustatyti galiojimo pabaigos datos. Bendrinimas negali pasibaigti vėliau nei %s po jo pasidalinimo",
- "Cannot set expiration date. Expiration date is in the past" : "Nepavyko nustatyti galiojimo datos. Galiojimo data yra praėjęs laikas.",
- "Sharing failed, because the user %s is the original sharer" : "Bendrinimas nepavyko, nes naudotojas %s yra bendrintojas.",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "%1$s bendrinimas nepavyko, nes leidimai viršijo %2$s suteiktus leidimus",
- "Sharing %s failed, because resharing is not allowed" : "%s bendrinimas nepavyko, nes perskirstymas yra neleidžiamas.",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s dalinimasis nepavyko, nes failo nepavyko rasti podelyje. "
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Tai, dažniausiai, gali būti ištaisyta, suteikiant saityno serveriui rašymo prieigą prie programų katalogo arba uždraudžiant appstore konfigūraciniame kataloge. Žiūrėkite %s"
},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/lib/l10n/lv.js b/lib/l10n/lv.js
index 15018872228..06eceff72e2 100644
--- a/lib/l10n/lv.js
+++ b/lib/l10n/lv.js
@@ -13,10 +13,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Ir nepieciešams PHP %s vai jaunāks.",
"PHP with a version lower than %s is required." : "Ir nepieciešams PHP vecāks kā %s.",
"%sbit or higher PHP required." : "Nepieciešams %sbit vai jaunāks PHP.",
- "Following databases are supported: %s" : "Tiek atbalstītas šādas datu bāzes: %s",
"The command line tool %s could not be found" : "Komandrindas rīku %s nevarēja atrast",
"The library %s is not available." : "Bibliotēka %s nav pieejama.",
- "Following platforms are supported: %s" : "Tiek atbalstītas šādas platformas: %s",
"Server version %s or higher is required." : "Ir vajadzīga servera versija %s vai jaunāka.",
"Server version %s or lower is required." : "Ir vajadzīga servera versija %s vai vecāka.",
"Authentication" : "Autentifikācija",
@@ -122,13 +120,9 @@ OC.L10N.register(
"Storage connection error. %s" : "Datu savienojuma kļūda. %s",
"Storage is temporarily not available" : "Glabātuve īslaicīgi nav pieejama",
"Storage connection timeout. %s" : "Datu savienojuma taimauts. %s",
- "Create" : "Izveidot",
- "Change" : "Mainīt",
- "Delete" : "Dzēst",
- "Share" : "Koplietot",
+ "Following databases are supported: %s" : "Tiek atbalstītas šādas datu bāzes: %s",
+ "Following platforms are supported: %s" : "Tiek atbalstītas šādas platformas: %s",
"Sharing" : "Koplietošana",
- "Personal info" : "Personiskā informācija",
- "Unlimited" : "Neierobežota",
- "Verify" : "Verificēt"
+ "Personal info" : "Personiskā informācija"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
diff --git a/lib/l10n/lv.json b/lib/l10n/lv.json
index 3a335509a8b..a60a89d24a5 100644
--- a/lib/l10n/lv.json
+++ b/lib/l10n/lv.json
@@ -11,10 +11,8 @@
"PHP %s or higher is required." : "Ir nepieciešams PHP %s vai jaunāks.",
"PHP with a version lower than %s is required." : "Ir nepieciešams PHP vecāks kā %s.",
"%sbit or higher PHP required." : "Nepieciešams %sbit vai jaunāks PHP.",
- "Following databases are supported: %s" : "Tiek atbalstītas šādas datu bāzes: %s",
"The command line tool %s could not be found" : "Komandrindas rīku %s nevarēja atrast",
"The library %s is not available." : "Bibliotēka %s nav pieejama.",
- "Following platforms are supported: %s" : "Tiek atbalstītas šādas platformas: %s",
"Server version %s or higher is required." : "Ir vajadzīga servera versija %s vai jaunāka.",
"Server version %s or lower is required." : "Ir vajadzīga servera versija %s vai vecāka.",
"Authentication" : "Autentifikācija",
@@ -120,13 +118,9 @@
"Storage connection error. %s" : "Datu savienojuma kļūda. %s",
"Storage is temporarily not available" : "Glabātuve īslaicīgi nav pieejama",
"Storage connection timeout. %s" : "Datu savienojuma taimauts. %s",
- "Create" : "Izveidot",
- "Change" : "Mainīt",
- "Delete" : "Dzēst",
- "Share" : "Koplietot",
+ "Following databases are supported: %s" : "Tiek atbalstītas šādas datu bāzes: %s",
+ "Following platforms are supported: %s" : "Tiek atbalstītas šādas platformas: %s",
"Sharing" : "Koplietošana",
- "Personal info" : "Personiskā informācija",
- "Unlimited" : "Neierobežota",
- "Verify" : "Verificēt"
+ "Personal info" : "Personiskā informācija"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
} \ No newline at end of file
diff --git a/lib/l10n/mk.js b/lib/l10n/mk.js
index 37b087a84fe..334ba229eba 100644
--- a/lib/l10n/mk.js
+++ b/lib/l10n/mk.js
@@ -14,11 +14,9 @@ OC.L10N.register(
"Social sharing bundle" : "Пакет за споделување на социјални мрежи",
"PHP %s or higher is required." : "Потребно е PHP верзија %s или повисока.",
"PHP with a version lower than %s is required." : "Потебна е PHP верзија пониска од %s.",
- "Following databases are supported: %s" : "Следниве бази со податоци се поддржани: %s",
"The library %s is not available." : "Библиотеката %s не е достапна.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Потребна е библиотека %1$s со повисока верзија од %2$s - достапна верзија %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Потебна е библиотека %1$s со пониска верзија од %2$s - достапна верзија %3$s.",
- "Following platforms are supported: %s" : "Следниве платформи се поддржани: %s",
"Server version %s or higher is required." : "Потребна е верзија %s или поголема на серверот.",
"Server version %s or lower is required." : "Потербна е верзија %s или помала на серверот.",
"Logged in user must be an admin or sub admin" : "Најавениот корисник мора да биде администратор или заменик администратор",
@@ -46,6 +44,8 @@ OC.L10N.register(
"in a few seconds" : "за неколку секунди",
"seconds ago" : "пред неколку секунди",
"Empty file" : "Празна датотека",
+ "File name is a reserved word" : "Името на датотеката е резервиран збор",
+ "File name contains at least one invalid character" : "Името на датотеката соджи невалиден карактер",
"File name is too long" : "Името на датотеката е премногу долго",
"Empty filename is not allowed" : "Датотеки без име не се дозболени",
"App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Апликацијата \"%s\" неможе да се инсталира бидејќи не е компатибилна со верзијата на серверот.",
@@ -130,6 +130,7 @@ OC.L10N.register(
"Username contains whitespace at the beginning or at the end" : "Корисничкото име содржи празно место на почетокот или на крајот",
"A valid password must be provided" : "Мора да се обезбеди валидна лозинка",
"The username is already being used" : "Корисничкото име е веќе во употреба",
+ "Could not create user" : "Неможе да се креира корисник",
"User disabled" : "Оневозможен корисник",
"a safe home for all your data" : "безбеден дом за сите ваши податоци",
"File is currently busy, please try again later" : "Датотеката моментално е зафатена, обидете се повторно",
@@ -137,8 +138,10 @@ OC.L10N.register(
"Application is not enabled" : "Апликацијата не е овозможена",
"Authentication error" : "Грешка во автентикација",
"Token expired. Please reload page." : "Жетонот е истечен. Ве молам превчитајте ја страницата.",
+ "No database drivers (sqlite, mysql, or postgresql) installed." : "Нема инсталирано додаток за (sqlite, mysql, или postgresql) база на податоци.",
"Cannot write into \"config\" directory" : "Не може да зе запишува во \"config\" директориумот",
"Cannot write into \"apps\" directory" : "Не може да зе запишува во \"apps\" директориумот",
+ "Cannot create \"data\" directory" : "Неможе да се креира директориум \"data\"",
"Setting locale to %s failed" : "Неуспешно поставување на локацијата %s ",
"Please ask your server administrator to install the module." : "Замолете го сервер администраторот да го инсталира додатокот.",
"PHP module %s not installed." : "PHP модулот %s не е инсталиран.",
@@ -150,25 +153,14 @@ OC.L10N.register(
"Storage incomplete configuration. %s" : "Конфигурацијата на складиштето не е комплетна. %s",
"Storage connection error. %s" : "Грешка во конекција до складиштето. %s",
"Storage is temporarily not available" : "Складиштето моментално не е достапно",
- "Create" : "Креирај",
- "Change" : "Измени",
- "Delete" : "Избриши",
- "Share" : "Сподели",
+ "Following databases are supported: %s" : "Следниве бази со податоци се поддржани: %s",
+ "Following platforms are supported: %s" : "Следниве платформи се поддржани: %s",
"Overview" : "Преглед",
"Basic settings" : "Основни параметри",
"Sharing" : "Споделување",
"Security" : "Безбедност",
"Groupware" : "Групни производи",
"Personal info" : "Лични податоци",
- "Mobile & desktop" : "Мобилен & компјутер",
- "Unlimited" : "Неограничено",
- "Verifying" : "Потврдување",
- "Verifying …" : "Потврдување …",
- "Verify" : "Потврди",
- "Sharing %s failed, because you can not share with yourself" : "Споделувањето на %s е неуспешно, бидејќи неможете да го споделите сами со себе",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Споделувањето на %1$s е неуспешно, бидејќи истото веќе е споделено со %2$s",
- "Not allowed to create a federated share with the same user" : "Не е овозможено да креирате федерално споделување со ист корисник",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Споделувањето на %1$s е неуспешно, неможе да се пронајде %2$s, можеби серверот моментално не е достапен.",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Споделувањето на %1$s е неуспешно, бидејќи серверот на %2$s неможе да го пронајде споделувањето"
+ "Mobile & desktop" : "Мобилен & компјутер"
},
"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;");
diff --git a/lib/l10n/mk.json b/lib/l10n/mk.json
index 2b85faef77c..1433d4e5073 100644
--- a/lib/l10n/mk.json
+++ b/lib/l10n/mk.json
@@ -12,11 +12,9 @@
"Social sharing bundle" : "Пакет за споделување на социјални мрежи",
"PHP %s or higher is required." : "Потребно е PHP верзија %s или повисока.",
"PHP with a version lower than %s is required." : "Потебна е PHP верзија пониска од %s.",
- "Following databases are supported: %s" : "Следниве бази со податоци се поддржани: %s",
"The library %s is not available." : "Библиотеката %s не е достапна.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Потребна е библиотека %1$s со повисока верзија од %2$s - достапна верзија %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Потебна е библиотека %1$s со пониска верзија од %2$s - достапна верзија %3$s.",
- "Following platforms are supported: %s" : "Следниве платформи се поддржани: %s",
"Server version %s or higher is required." : "Потребна е верзија %s или поголема на серверот.",
"Server version %s or lower is required." : "Потербна е верзија %s или помала на серверот.",
"Logged in user must be an admin or sub admin" : "Најавениот корисник мора да биде администратор или заменик администратор",
@@ -44,6 +42,8 @@
"in a few seconds" : "за неколку секунди",
"seconds ago" : "пред неколку секунди",
"Empty file" : "Празна датотека",
+ "File name is a reserved word" : "Името на датотеката е резервиран збор",
+ "File name contains at least one invalid character" : "Името на датотеката соджи невалиден карактер",
"File name is too long" : "Името на датотеката е премногу долго",
"Empty filename is not allowed" : "Датотеки без име не се дозболени",
"App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Апликацијата \"%s\" неможе да се инсталира бидејќи не е компатибилна со верзијата на серверот.",
@@ -128,6 +128,7 @@
"Username contains whitespace at the beginning or at the end" : "Корисничкото име содржи празно место на почетокот или на крајот",
"A valid password must be provided" : "Мора да се обезбеди валидна лозинка",
"The username is already being used" : "Корисничкото име е веќе во употреба",
+ "Could not create user" : "Неможе да се креира корисник",
"User disabled" : "Оневозможен корисник",
"a safe home for all your data" : "безбеден дом за сите ваши податоци",
"File is currently busy, please try again later" : "Датотеката моментално е зафатена, обидете се повторно",
@@ -135,8 +136,10 @@
"Application is not enabled" : "Апликацијата не е овозможена",
"Authentication error" : "Грешка во автентикација",
"Token expired. Please reload page." : "Жетонот е истечен. Ве молам превчитајте ја страницата.",
+ "No database drivers (sqlite, mysql, or postgresql) installed." : "Нема инсталирано додаток за (sqlite, mysql, или postgresql) база на податоци.",
"Cannot write into \"config\" directory" : "Не може да зе запишува во \"config\" директориумот",
"Cannot write into \"apps\" directory" : "Не може да зе запишува во \"apps\" директориумот",
+ "Cannot create \"data\" directory" : "Неможе да се креира директориум \"data\"",
"Setting locale to %s failed" : "Неуспешно поставување на локацијата %s ",
"Please ask your server administrator to install the module." : "Замолете го сервер администраторот да го инсталира додатокот.",
"PHP module %s not installed." : "PHP модулот %s не е инсталиран.",
@@ -148,25 +151,14 @@
"Storage incomplete configuration. %s" : "Конфигурацијата на складиштето не е комплетна. %s",
"Storage connection error. %s" : "Грешка во конекција до складиштето. %s",
"Storage is temporarily not available" : "Складиштето моментално не е достапно",
- "Create" : "Креирај",
- "Change" : "Измени",
- "Delete" : "Избриши",
- "Share" : "Сподели",
+ "Following databases are supported: %s" : "Следниве бази со податоци се поддржани: %s",
+ "Following platforms are supported: %s" : "Следниве платформи се поддржани: %s",
"Overview" : "Преглед",
"Basic settings" : "Основни параметри",
"Sharing" : "Споделување",
"Security" : "Безбедност",
"Groupware" : "Групни производи",
"Personal info" : "Лични податоци",
- "Mobile & desktop" : "Мобилен & компјутер",
- "Unlimited" : "Неограничено",
- "Verifying" : "Потврдување",
- "Verifying …" : "Потврдување …",
- "Verify" : "Потврди",
- "Sharing %s failed, because you can not share with yourself" : "Споделувањето на %s е неуспешно, бидејќи неможете да го споделите сами со себе",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Споделувањето на %1$s е неуспешно, бидејќи истото веќе е споделено со %2$s",
- "Not allowed to create a federated share with the same user" : "Не е овозможено да креирате федерално споделување со ист корисник",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Споделувањето на %1$s е неуспешно, неможе да се пронајде %2$s, можеби серверот моментално не е достапен.",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Споделувањето на %1$s е неуспешно, бидејќи серверот на %2$s неможе да го пронајде споделувањето"
+ "Mobile & desktop" : "Мобилен & компјутер"
},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"
} \ No newline at end of file
diff --git a/lib/l10n/mn.js b/lib/l10n/mn.js
index cf24205dbcc..f8a91863487 100644
--- a/lib/l10n/mn.js
+++ b/lib/l10n/mn.js
@@ -34,12 +34,8 @@ OC.L10N.register(
"a safe home for all your data" : "Таны өгөгдлүүдийн аюулгүй гэр",
"Authentication error" : "Нотолгооны алдаа",
"Storage is temporarily not available" : "Хадгалах төхөөрөмж нь түр хугацаанд ашиглах боломжгүй байна",
- "Create" : "Үүсгэх",
- "Delete" : "Устгах",
- "Share" : "Түгээх",
"Sharing" : "Түгээх",
"Security" : "Хамгаалалт",
- "Personal info" : "Хувийн мэдээлэл",
- "Verify" : "Шалнгах"
+ "Personal info" : "Хувийн мэдээлэл"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/mn.json b/lib/l10n/mn.json
index 7f44ac1244d..86ea54afbd4 100644
--- a/lib/l10n/mn.json
+++ b/lib/l10n/mn.json
@@ -32,12 +32,8 @@
"a safe home for all your data" : "Таны өгөгдлүүдийн аюулгүй гэр",
"Authentication error" : "Нотолгооны алдаа",
"Storage is temporarily not available" : "Хадгалах төхөөрөмж нь түр хугацаанд ашиглах боломжгүй байна",
- "Create" : "Үүсгэх",
- "Delete" : "Устгах",
- "Share" : "Түгээх",
"Sharing" : "Түгээх",
"Security" : "Хамгаалалт",
- "Personal info" : "Хувийн мэдээлэл",
- "Verify" : "Шалнгах"
+ "Personal info" : "Хувийн мэдээлэл"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/ms_MY.js b/lib/l10n/ms_MY.js
index f79843a68fd..27e63a555bb 100644
--- a/lib/l10n/ms_MY.js
+++ b/lib/l10n/ms_MY.js
@@ -45,9 +45,6 @@ OC.L10N.register(
"Oct." : "Okt.",
"Nov." : "Nov.",
"Dec." : "Dis.",
- "Authentication error" : "Ralat pengesahan",
- "Create" : "Buat",
- "Delete" : "Padam",
- "Share" : "Kongsi"
+ "Authentication error" : "Ralat pengesahan"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/ms_MY.json b/lib/l10n/ms_MY.json
index d5df808c3ce..48bac0f4e88 100644
--- a/lib/l10n/ms_MY.json
+++ b/lib/l10n/ms_MY.json
@@ -43,9 +43,6 @@
"Oct." : "Okt.",
"Nov." : "Nov.",
"Dec." : "Dis.",
- "Authentication error" : "Ralat pengesahan",
- "Create" : "Buat",
- "Delete" : "Padam",
- "Share" : "Kongsi"
+ "Authentication error" : "Ralat pengesahan"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/nb.js b/lib/l10n/nb.js
index 877b400e652..1961eaa5eeb 100644
--- a/lib/l10n/nb.js
+++ b/lib/l10n/nb.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "Kan ikke skrive til «config»-mappen!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Dette kan vanligvis ordnes ved å gi webserveren skrivetilgang til config-mappen",
"See %s" : "Se %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dette kan vanligvis ordnes ved å gi webserveren skrivetilgang til config-mappen. Se %s",
"Sample configuration detected" : "Eksempeloppsett oppdaget",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Det ble oppdaget at eksempeloppsettet er blitt kopiert. Dette kan ødelegge installasjonen din og støttes ikke. Les dokumentasjonen før du gjør endringer i config.php",
"%1$s and %2$s" : "%1$s og %2$s",
@@ -18,10 +17,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "PHP %s eller nyere kreves.",
"PHP with a version lower than %s is required." : "PHP med en versjon lavere enn %s kreves.",
"%sbit or higher PHP required." : "%sbit eller høyere PHP kreves",
- "Following databases are supported: %s" : "Følgende databaser støttes: %s",
"The command line tool %s could not be found" : "Kommandolinjeverktøyet %s ble ikke funnet",
"The library %s is not available." : "Biblioteket %s er ikke tilgjengelig.",
- "Following platforms are supported: %s" : "Følgende plattformer støttes: %s",
"Server version %s or higher is required." : "Serverversjon %s eller høyere kreves.",
"Server version %s or lower is required." : "Serverversjon %s eller lavere kreves.",
"Logged in user must be an admin" : "Innlogget bruker må være administrator",
@@ -162,8 +159,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "Symbol utløpt. Last inn siden på nytt.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Ingen databasedrivere (sqlite, mysql, or postgresql) installert.",
"Cannot write into \"config\" directory" : "Kan ikke skrive i \"config\"-mappen",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dette kan vanligvis ordnes ved å gi webserveren skrivetilgang til config-mappen. Se %s",
"Cannot write into \"apps\" directory" : "Kan ikke skrive i \"apps\"-mappen",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Dette kan vanligvis ordnes ved å gi webserveren skrivetilgang til apps-mappen eller ved å skru av app-butikken i config-filen. Se %s",
"Cannot create \"data\" directory" : "Kan ikke opprette \"data\"-mappe",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Dette kan vanligvis ordnes ved å gi webserveren skrivetilgang til rotmappen. Se %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Tillatelser kan vanligvis ordnes ved å gi webserveren skrivetilgang til rotmappen. Se %s.",
@@ -195,30 +192,14 @@ OC.L10N.register(
"Storage connection error. %s" : "Tilkoblingsfeil for lager. %s",
"Storage is temporarily not available" : "Lagring er midlertidig utilgjengelig",
"Storage connection timeout. %s" : "Tidsavbrudd ved tilkobling av lager: %s",
- "Create" : "Opprett",
- "Change" : "Endre",
- "Delete" : "Slett",
- "Share" : "Del",
+ "Following databases are supported: %s" : "Følgende databaser støttes: %s",
+ "Following platforms are supported: %s" : "Følgende plattformer støttes: %s",
"Overview" : "Oversikt",
"Basic settings" : "Grunninnstillinger",
"Sharing" : "Deling",
"Security" : "Sikkerhet",
"Groupware" : "Gruppevare",
"Personal info" : "Personlig informasjon",
- "Unlimited" : "Ubegrenset",
- "Verifying" : "Bekrefter",
- "Verifying …" : "Bekrefter…",
- "Verify" : "Bekreft",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Deling av %s mislyktes, fordi serveren ikke tillater delinger fra type %i",
- "Sharing %s failed, because the file does not exist" : "Deling av %s mislyktes, fordi filen ikke eksisterer",
- "Sharing %s failed, because you can not share with yourself" : "Deling av %s mislyktes fordi du ikke kan dele med deg selv",
- "You need to provide a password to create a public link, only protected links are allowed" : "Du må oppgi et passord for å lage en offentlig lenke. Bare beskyttede lenker er tillatt",
- "Sharing %s failed, because sharing with links is not allowed" : "Deling av %s mislyktes, fordi deling med lenker ikke er tillatt",
- "Not allowed to create a federated share with the same user" : "Ikke tillatt å opprette en sammenknyttet sky-deling med den samme brukeren",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Kan ikke sette utøpsdato. Delinger kan ikke utløpe senere enn %s etter at de har blitt delt",
- "Cannot set expiration date. Expiration date is in the past" : "Kan ikke sette utløpsdato. Utløpsdato er tilbake i tid",
- "Sharing failed, because the user %s is the original sharer" : "Deling mislyktes fordi brukeren %s er den som delte opprinnelig",
- "Sharing %s failed, because resharing is not allowed" : "Deling av %s mislyktes, fordi videre-deling ikke er tillatt",
- "Sharing %s failed, because the file could not be found in the file cache" : "Deling av %s mislyktes, fordi filen ikke ble funnet i fil-hurtiglageret"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Dette kan vanligvis ordnes ved å gi webserveren skrivetilgang til apps-mappen eller ved å skru av app-butikken i config-filen. Se %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/nb.json b/lib/l10n/nb.json
index 68807192699..cbab2268af9 100644
--- a/lib/l10n/nb.json
+++ b/lib/l10n/nb.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "Kan ikke skrive til «config»-mappen!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Dette kan vanligvis ordnes ved å gi webserveren skrivetilgang til config-mappen",
"See %s" : "Se %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dette kan vanligvis ordnes ved å gi webserveren skrivetilgang til config-mappen. Se %s",
"Sample configuration detected" : "Eksempeloppsett oppdaget",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Det ble oppdaget at eksempeloppsettet er blitt kopiert. Dette kan ødelegge installasjonen din og støttes ikke. Les dokumentasjonen før du gjør endringer i config.php",
"%1$s and %2$s" : "%1$s og %2$s",
@@ -16,10 +15,8 @@
"PHP %s or higher is required." : "PHP %s eller nyere kreves.",
"PHP with a version lower than %s is required." : "PHP med en versjon lavere enn %s kreves.",
"%sbit or higher PHP required." : "%sbit eller høyere PHP kreves",
- "Following databases are supported: %s" : "Følgende databaser støttes: %s",
"The command line tool %s could not be found" : "Kommandolinjeverktøyet %s ble ikke funnet",
"The library %s is not available." : "Biblioteket %s er ikke tilgjengelig.",
- "Following platforms are supported: %s" : "Følgende plattformer støttes: %s",
"Server version %s or higher is required." : "Serverversjon %s eller høyere kreves.",
"Server version %s or lower is required." : "Serverversjon %s eller lavere kreves.",
"Logged in user must be an admin" : "Innlogget bruker må være administrator",
@@ -160,8 +157,8 @@
"Token expired. Please reload page." : "Symbol utløpt. Last inn siden på nytt.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Ingen databasedrivere (sqlite, mysql, or postgresql) installert.",
"Cannot write into \"config\" directory" : "Kan ikke skrive i \"config\"-mappen",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dette kan vanligvis ordnes ved å gi webserveren skrivetilgang til config-mappen. Se %s",
"Cannot write into \"apps\" directory" : "Kan ikke skrive i \"apps\"-mappen",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Dette kan vanligvis ordnes ved å gi webserveren skrivetilgang til apps-mappen eller ved å skru av app-butikken i config-filen. Se %s",
"Cannot create \"data\" directory" : "Kan ikke opprette \"data\"-mappe",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Dette kan vanligvis ordnes ved å gi webserveren skrivetilgang til rotmappen. Se %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Tillatelser kan vanligvis ordnes ved å gi webserveren skrivetilgang til rotmappen. Se %s.",
@@ -193,30 +190,14 @@
"Storage connection error. %s" : "Tilkoblingsfeil for lager. %s",
"Storage is temporarily not available" : "Lagring er midlertidig utilgjengelig",
"Storage connection timeout. %s" : "Tidsavbrudd ved tilkobling av lager: %s",
- "Create" : "Opprett",
- "Change" : "Endre",
- "Delete" : "Slett",
- "Share" : "Del",
+ "Following databases are supported: %s" : "Følgende databaser støttes: %s",
+ "Following platforms are supported: %s" : "Følgende plattformer støttes: %s",
"Overview" : "Oversikt",
"Basic settings" : "Grunninnstillinger",
"Sharing" : "Deling",
"Security" : "Sikkerhet",
"Groupware" : "Gruppevare",
"Personal info" : "Personlig informasjon",
- "Unlimited" : "Ubegrenset",
- "Verifying" : "Bekrefter",
- "Verifying …" : "Bekrefter…",
- "Verify" : "Bekreft",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Deling av %s mislyktes, fordi serveren ikke tillater delinger fra type %i",
- "Sharing %s failed, because the file does not exist" : "Deling av %s mislyktes, fordi filen ikke eksisterer",
- "Sharing %s failed, because you can not share with yourself" : "Deling av %s mislyktes fordi du ikke kan dele med deg selv",
- "You need to provide a password to create a public link, only protected links are allowed" : "Du må oppgi et passord for å lage en offentlig lenke. Bare beskyttede lenker er tillatt",
- "Sharing %s failed, because sharing with links is not allowed" : "Deling av %s mislyktes, fordi deling med lenker ikke er tillatt",
- "Not allowed to create a federated share with the same user" : "Ikke tillatt å opprette en sammenknyttet sky-deling med den samme brukeren",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Kan ikke sette utøpsdato. Delinger kan ikke utløpe senere enn %s etter at de har blitt delt",
- "Cannot set expiration date. Expiration date is in the past" : "Kan ikke sette utløpsdato. Utløpsdato er tilbake i tid",
- "Sharing failed, because the user %s is the original sharer" : "Deling mislyktes fordi brukeren %s er den som delte opprinnelig",
- "Sharing %s failed, because resharing is not allowed" : "Deling av %s mislyktes, fordi videre-deling ikke er tillatt",
- "Sharing %s failed, because the file could not be found in the file cache" : "Deling av %s mislyktes, fordi filen ikke ble funnet i fil-hurtiglageret"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Dette kan vanligvis ordnes ved å gi webserveren skrivetilgang til apps-mappen eller ved å skru av app-butikken i config-filen. Se %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/nl.js b/lib/l10n/nl.js
index 18866603348..3ed04035206 100644
--- a/lib/l10n/nl.js
+++ b/lib/l10n/nl.js
@@ -3,9 +3,9 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "Kan niet schrijven naar de \"config\" directory!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Dit kan opgelost worden door de config map op de webserver schrijfrechten te geven",
- "See %s" : "Zie %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Of, als je liever config.php alleen-lezen wilt houden, stel de optie \"config_is_read_only\" in op true.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dit kan opgelost worden door de config map op de webserver schrijf rechten te geven. See %s",
+ "See %s" : "Zie %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Dit kan opgelost worden door de config map op de webserver schrijfrechten te geven.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Of, als je liever config.php Alleen-lezen houdt, stel de optie \"config_is_read_only\" in op true. Zie %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "De bestanden van app %1$szijn niet correct vervangen. Zorg ervoor dat de versie compatible is met de server.",
"Sample configuration detected" : "Voorbeeld configuratie gevonden",
@@ -22,12 +22,12 @@ OC.L10N.register(
"PHP %s or higher is required." : "PHP %s of hoger vereist.",
"PHP with a version lower than %s is required." : "PHP met een versie lager dan %s is vereist.",
"%sbit or higher PHP required." : "%sbit of hogere PHP versie vereist.",
- "Following databases are supported: %s" : "De volgende databases worden ondersteund: %s",
+ "The following databases are supported: %s" : "De volgende databases worden ondersteund: %s",
"The command line tool %s could not be found" : "Commandoregel tool %s is niet gevonden",
"The library %s is not available." : "Library %s is niet beschikbaar.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Library %1$s met een versienummer hoger dan %2$s is vereist - beschikbare versie %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Library %1$s met een versienummer lager dan %2$s is vereist - beschikbare versie %3$s.",
- "Following platforms are supported: %s" : "De volgende platformen worden ondersteund: %s",
+ "The following platforms are supported: %s" : "De volgende platforms worden ondersteund: %s",
"Server version %s or higher is required." : "Serverversie %s of hoger vereist.",
"Server version %s or lower is required." : "Serverversie %s of lager vereist.",
"Logged in user must be an admin or sub admin" : "Ingelogde gebruiker moet een beheerder of subbeheerder zijn",
@@ -185,8 +185,9 @@ OC.L10N.register(
"Token expired. Please reload page." : "Token verlopen. Herlaad de pagina.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Geen database drivers (sqlite, mysql of postgres) geïnstalleerd.",
"Cannot write into \"config\" directory" : "Kan niet schrijven naar de \"config\" directory",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dit kan opgelost worden door de config map op de webserver schrijf rechten te geven. See %s",
"Cannot write into \"apps\" directory" : "Kan niet schrijven naar de \"apps\" directory",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Dit kan hersteld worden door de app map schrijf rechten te geven iin de webserver of schakel de appstore uit bij het config bestand. Zie %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Dit kan hersteld worden door de webserver schrijfrechten te geven op de appsdirectory of door de appstore te deactiveren in het configuratie bestand.",
"Cannot create \"data\" directory" : "\"data\" map kan niet worden aangemaakt",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Dit kan hersteld worden door de root map schrijf rechten te geven op de webserver. Zie %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Rechten kunnen worden hersteld door de root map op de webserver schrijf toegang te geven. Zie %s.",
@@ -223,10 +224,8 @@ OC.L10N.register(
"Storage connection error. %s" : "Opslag verbindingsfout. %s",
"Storage is temporarily not available" : "Opslag is tijdelijk niet beschikbaar",
"Storage connection timeout. %s" : "Opslag verbinding time-out. %s",
- "Create" : "Aanmaken",
- "Change" : "Wijzigen",
- "Delete" : "Verwijderen",
- "Share" : "Delen",
+ "Following databases are supported: %s" : "De volgende databases worden ondersteund: %s",
+ "Following platforms are supported: %s" : "De volgende platformen worden ondersteund: %s",
"Overview" : "Overzicht",
"Basic settings" : "Basis-instellingen",
"Sharing" : "Delen",
@@ -234,30 +233,6 @@ OC.L10N.register(
"Groupware" : "Groupware",
"Personal info" : "Persoonlijke informatie",
"Mobile & desktop" : "Mobiel & desktop",
- "Unlimited" : "Ongelimiteerd",
- "Verifying" : "Verifiëren",
- "Verifying …" : "Verifiëren...",
- "Verify" : "Verifieer",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Delen van %s is mislukt, omdat de share-backend het niet toestaat om type %i te delen",
- "Sharing %s failed, because the file does not exist" : "Delen van %s is mislukt, omdat het bestand niet bestaat",
- "Sharing %s failed, because you can not share with yourself" : "Delen van %s is mislukt, omdat je niet met jezelf kan delen",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Delen van %1$s is mislukt, omdat gebruiker %2$s niet bestaat",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Delen van %1$s is mislukt, omdat gebruiker %2$s geen lid is van een groep waar %3$s lid van is",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Delen van %1$s is mislukt, omdat het object al wordt gedeeld met %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Delen van %1$s is mislukt, omdat het object al wordt gedeeld met gebruiker %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Delen van %1$s is mislukt, omdat groep %2$s niet bestaat",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Delen van %1$s is mislukt, omdat %2$s geen lid is van groep %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Je moet een wachtwoord opgeven om een openbare koppeling te maken, alleen wachtwoord beveiligde links zijn toegestaan",
- "Sharing %s failed, because sharing with links is not allowed" : "Delen van %s is mislukt, omdat het delen doormiddel van een een link niet is toegestaan",
- "Not allowed to create a federated share with the same user" : "Het is niet toegestaan om een gefedereerd gedeelde folder te maken met dezelfde gebruiker.",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Delen van %1$s mislukt, kon %2$s niet vinden, misschien is de server niet bereikbaar.",
- "Share type %1$s is not valid for %2$s" : "Delen van type %1$s is niet geldig voor %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Een vervaldatum kan niet worden ingesteld. Gedeelde folders kunnen niet vervallen na %s ",
- "Cannot set expiration date. Expiration date is in the past" : "Kon vervaldatum niet instellen. De vervaldatum ligt in het verleden",
- "Sharing failed, because the user %s is the original sharer" : "Delen mislukt, omdat gebruiker %s de originele deler is",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Delen van %1$s is mislukt, omdat de rechten toegekend aan %2$s overschreden zijn.",
- "Sharing %s failed, because resharing is not allowed" : "Delen van %s is mislukt, omdat her-delen niet is toegestaan",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Delen van %1$s is mislukt, omdat de delende backend voor %2$s de bron niet kon vinden",
- "Sharing %s failed, because the file could not be found in the file cache" : "Delen van %s is mislukt, omdat het bestand niet in de bestand cache kon worden gevonden"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Dit kan hersteld worden door de app map schrijf rechten te geven iin de webserver of schakel de appstore uit bij het config bestand. Zie %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/nl.json b/lib/l10n/nl.json
index 85d3d2a2137..304034a26b6 100644
--- a/lib/l10n/nl.json
+++ b/lib/l10n/nl.json
@@ -1,9 +1,9 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "Kan niet schrijven naar de \"config\" directory!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Dit kan opgelost worden door de config map op de webserver schrijfrechten te geven",
- "See %s" : "Zie %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Of, als je liever config.php alleen-lezen wilt houden, stel de optie \"config_is_read_only\" in op true.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dit kan opgelost worden door de config map op de webserver schrijf rechten te geven. See %s",
+ "See %s" : "Zie %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Dit kan opgelost worden door de config map op de webserver schrijfrechten te geven.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Of, als je liever config.php Alleen-lezen houdt, stel de optie \"config_is_read_only\" in op true. Zie %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "De bestanden van app %1$szijn niet correct vervangen. Zorg ervoor dat de versie compatible is met de server.",
"Sample configuration detected" : "Voorbeeld configuratie gevonden",
@@ -20,12 +20,12 @@
"PHP %s or higher is required." : "PHP %s of hoger vereist.",
"PHP with a version lower than %s is required." : "PHP met een versie lager dan %s is vereist.",
"%sbit or higher PHP required." : "%sbit of hogere PHP versie vereist.",
- "Following databases are supported: %s" : "De volgende databases worden ondersteund: %s",
+ "The following databases are supported: %s" : "De volgende databases worden ondersteund: %s",
"The command line tool %s could not be found" : "Commandoregel tool %s is niet gevonden",
"The library %s is not available." : "Library %s is niet beschikbaar.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Library %1$s met een versienummer hoger dan %2$s is vereist - beschikbare versie %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Library %1$s met een versienummer lager dan %2$s is vereist - beschikbare versie %3$s.",
- "Following platforms are supported: %s" : "De volgende platformen worden ondersteund: %s",
+ "The following platforms are supported: %s" : "De volgende platforms worden ondersteund: %s",
"Server version %s or higher is required." : "Serverversie %s of hoger vereist.",
"Server version %s or lower is required." : "Serverversie %s of lager vereist.",
"Logged in user must be an admin or sub admin" : "Ingelogde gebruiker moet een beheerder of subbeheerder zijn",
@@ -183,8 +183,9 @@
"Token expired. Please reload page." : "Token verlopen. Herlaad de pagina.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Geen database drivers (sqlite, mysql of postgres) geïnstalleerd.",
"Cannot write into \"config\" directory" : "Kan niet schrijven naar de \"config\" directory",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Dit kan opgelost worden door de config map op de webserver schrijf rechten te geven. See %s",
"Cannot write into \"apps\" directory" : "Kan niet schrijven naar de \"apps\" directory",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Dit kan hersteld worden door de app map schrijf rechten te geven iin de webserver of schakel de appstore uit bij het config bestand. Zie %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Dit kan hersteld worden door de webserver schrijfrechten te geven op de appsdirectory of door de appstore te deactiveren in het configuratie bestand.",
"Cannot create \"data\" directory" : "\"data\" map kan niet worden aangemaakt",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Dit kan hersteld worden door de root map schrijf rechten te geven op de webserver. Zie %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Rechten kunnen worden hersteld door de root map op de webserver schrijf toegang te geven. Zie %s.",
@@ -221,10 +222,8 @@
"Storage connection error. %s" : "Opslag verbindingsfout. %s",
"Storage is temporarily not available" : "Opslag is tijdelijk niet beschikbaar",
"Storage connection timeout. %s" : "Opslag verbinding time-out. %s",
- "Create" : "Aanmaken",
- "Change" : "Wijzigen",
- "Delete" : "Verwijderen",
- "Share" : "Delen",
+ "Following databases are supported: %s" : "De volgende databases worden ondersteund: %s",
+ "Following platforms are supported: %s" : "De volgende platformen worden ondersteund: %s",
"Overview" : "Overzicht",
"Basic settings" : "Basis-instellingen",
"Sharing" : "Delen",
@@ -232,30 +231,6 @@
"Groupware" : "Groupware",
"Personal info" : "Persoonlijke informatie",
"Mobile & desktop" : "Mobiel & desktop",
- "Unlimited" : "Ongelimiteerd",
- "Verifying" : "Verifiëren",
- "Verifying …" : "Verifiëren...",
- "Verify" : "Verifieer",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Delen van %s is mislukt, omdat de share-backend het niet toestaat om type %i te delen",
- "Sharing %s failed, because the file does not exist" : "Delen van %s is mislukt, omdat het bestand niet bestaat",
- "Sharing %s failed, because you can not share with yourself" : "Delen van %s is mislukt, omdat je niet met jezelf kan delen",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Delen van %1$s is mislukt, omdat gebruiker %2$s niet bestaat",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Delen van %1$s is mislukt, omdat gebruiker %2$s geen lid is van een groep waar %3$s lid van is",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Delen van %1$s is mislukt, omdat het object al wordt gedeeld met %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Delen van %1$s is mislukt, omdat het object al wordt gedeeld met gebruiker %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Delen van %1$s is mislukt, omdat groep %2$s niet bestaat",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Delen van %1$s is mislukt, omdat %2$s geen lid is van groep %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Je moet een wachtwoord opgeven om een openbare koppeling te maken, alleen wachtwoord beveiligde links zijn toegestaan",
- "Sharing %s failed, because sharing with links is not allowed" : "Delen van %s is mislukt, omdat het delen doormiddel van een een link niet is toegestaan",
- "Not allowed to create a federated share with the same user" : "Het is niet toegestaan om een gefedereerd gedeelde folder te maken met dezelfde gebruiker.",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Delen van %1$s mislukt, kon %2$s niet vinden, misschien is de server niet bereikbaar.",
- "Share type %1$s is not valid for %2$s" : "Delen van type %1$s is niet geldig voor %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Een vervaldatum kan niet worden ingesteld. Gedeelde folders kunnen niet vervallen na %s ",
- "Cannot set expiration date. Expiration date is in the past" : "Kon vervaldatum niet instellen. De vervaldatum ligt in het verleden",
- "Sharing failed, because the user %s is the original sharer" : "Delen mislukt, omdat gebruiker %s de originele deler is",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Delen van %1$s is mislukt, omdat de rechten toegekend aan %2$s overschreden zijn.",
- "Sharing %s failed, because resharing is not allowed" : "Delen van %s is mislukt, omdat her-delen niet is toegestaan",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Delen van %1$s is mislukt, omdat de delende backend voor %2$s de bron niet kon vinden",
- "Sharing %s failed, because the file could not be found in the file cache" : "Delen van %s is mislukt, omdat het bestand niet in de bestand cache kon worden gevonden"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Dit kan hersteld worden door de app map schrijf rechten te geven iin de webserver of schakel de appstore uit bij het config bestand. Zie %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/nn_NO.js b/lib/l10n/nn_NO.js
index 77614fcbdc9..874d98f8aa1 100644
--- a/lib/l10n/nn_NO.js
+++ b/lib/l10n/nn_NO.js
@@ -63,10 +63,6 @@ OC.L10N.register(
"A valid username must be provided" : "Du må oppgje eit gyldig brukarnamn",
"A valid password must be provided" : "Du må oppgje eit gyldig passord",
"Authentication error" : "Feil i autentisering",
- "Create" : "Lag",
- "Delete" : "Ta bort",
- "Share" : "Del",
- "Sharing" : "Deling",
- "Unlimited" : "Ubegrensa"
+ "Sharing" : "Deling"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/nn_NO.json b/lib/l10n/nn_NO.json
index 5309f211df3..64d9ea2374c 100644
--- a/lib/l10n/nn_NO.json
+++ b/lib/l10n/nn_NO.json
@@ -61,10 +61,6 @@
"A valid username must be provided" : "Du må oppgje eit gyldig brukarnamn",
"A valid password must be provided" : "Du må oppgje eit gyldig passord",
"Authentication error" : "Feil i autentisering",
- "Create" : "Lag",
- "Delete" : "Ta bort",
- "Share" : "Del",
- "Sharing" : "Deling",
- "Unlimited" : "Ubegrensa"
+ "Sharing" : "Deling"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/oc.js b/lib/l10n/oc.js
index d05fa50c8a1..4ff2d892005 100644
--- a/lib/l10n/oc.js
+++ b/lib/l10n/oc.js
@@ -11,9 +11,6 @@ OC.L10N.register(
"Thursday" : "Dijòus",
"Friday" : "Divendres",
"Saturday" : "Dissabte",
- "Create" : "Crear",
- "Delete" : "Suprimir",
- "Share" : "Partejar",
"Sharing" : "Partiment"
},
"nplurals=2; plural=(n > 1);");
diff --git a/lib/l10n/oc.json b/lib/l10n/oc.json
index 021655d854f..a05e867604b 100644
--- a/lib/l10n/oc.json
+++ b/lib/l10n/oc.json
@@ -9,9 +9,6 @@
"Thursday" : "Dijòus",
"Friday" : "Divendres",
"Saturday" : "Dissabte",
- "Create" : "Crear",
- "Delete" : "Suprimir",
- "Share" : "Partejar",
"Sharing" : "Partiment"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/lib/l10n/pl.js b/lib/l10n/pl.js
index 3b4d78bba07..a57b89d9f9a 100644
--- a/lib/l10n/pl.js
+++ b/lib/l10n/pl.js
@@ -3,9 +3,9 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "Nie można zapisać do katalogu \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Zwykle można to naprawić, nadając serwerowi WWW dostęp do zapisu do katalogu config.",
- "See %s" : "Zobacz %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Jeśli, albo wolisz zachować plik config.php tylko do odczytu, ustaw w nim opcję \"config_is_read_only\" na true.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Zwykle można to naprawić, nadając serwerowi WWW dostęp do zapisu do katalogu config. Zobacz %s",
+ "See %s" : "Zobacz %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Zwykle można to naprawić, nadając serwerowi WWW dostęp do zapisu do katalogu config.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Jeśli, albo wolisz zachować plik config.php tylko do odczytu, ustaw w nim opcję \"config_is_read_only\" na true. Zobacz %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Pliki aplikacji %1$s nie zostały poprawnie zastąpione. Upewnij się, że jest to wersja zgodna z serwerem.",
"Sample configuration detected" : "Wykryto przykładową konfigurację",
@@ -22,12 +22,12 @@ OC.L10N.register(
"PHP %s or higher is required." : "Wymagane jest PHP %s lub wyższe.",
"PHP with a version lower than %s is required." : "Wymagane jest PHP z wersją niższą niż %s.",
"%sbit or higher PHP required." : "%sbit lub wymagane wyższe PHP.",
- "Following databases are supported: %s" : "Obsługiwane są następujące bazy danych: %s",
+ "The following databases are supported: %s" : "Obsługiwane są następujące bazy danych: %s",
"The command line tool %s could not be found" : "Nie można znaleźć narzędzia wiersza poleceń %s",
"The library %s is not available." : "Biblioteka %s nie jest dostępna.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Wymagana jest biblioteka %1$s z wersją wyższą niż %2$s - dostępna wersja %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Wymagana jest biblioteka %1$s w wersji niższej niż %2$s - dostępna wersja %3$s.",
- "Following platforms are supported: %s" : "Obsługiwane są następujące platformy: %s",
+ "The following platforms are supported: %s" : "Obsługiwane są następujące platformy: %s",
"Server version %s or higher is required." : "Wymagana jest wersja serwera %s lub wyższa.",
"Server version %s or lower is required." : "Wymagana jest wersja serwera %s lub niższa.",
"Logged in user must be an admin or sub admin" : "Zalogowany użytkownik musi być administratorem lub współadministratorem",
@@ -185,8 +185,9 @@ OC.L10N.register(
"Token expired. Please reload page." : "Token wygasł. Przeładuj stronę.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Nie zainstalowano sterowników bazy danych (sqlite, mysql lub postgresql).",
"Cannot write into \"config\" directory" : "Nie można zapisać do katalogu \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Zwykle można to naprawić, nadając serwerowi WWW dostęp do zapisu do katalogu config. Zobacz %s",
"Cannot write into \"apps\" directory" : "Nie można zapisać do katalogu \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Zwykle można to naprawić, nadając serwerowi WWW uprawnienia do zapisu do katalogu apps lub wyłączając sklep aplikacji w pliku config. Patrz %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Zwykle można to naprawić, przyznając serwerowi dostęp do zapisu do katalogu aplikacji lub wyłączając aplikację w pliku konfiguracyjnym.",
"Cannot create \"data\" directory" : "Nie mozna utworzyć katalogu \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Zwykle można to naprawić, nadając serwerowi WWW dostęp do zapisu do katalogu głównego. Zobacz %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Uprawnienia można zazwyczaj naprawić, nadając serwerowi WWW dostęp do zapisu do katalogu głównego. Zobacz %s.",
@@ -223,10 +224,8 @@ OC.L10N.register(
"Storage connection error. %s" : "Błąd połączenia z magazynem. %s",
"Storage is temporarily not available" : "Magazyn jest tymczasowo niedostępny",
"Storage connection timeout. %s" : "Limit czasu połączenia do magazynu. %s",
- "Create" : "Utwórz",
- "Change" : "Zmień",
- "Delete" : "Usuń",
- "Share" : "Udostępnij",
+ "Following databases are supported: %s" : "Obsługiwane są następujące bazy danych: %s",
+ "Following platforms are supported: %s" : "Obsługiwane są następujące platformy: %s",
"Overview" : "Przegląd",
"Basic settings" : "Ustawienia podstawowe",
"Sharing" : "Udostępnianie",
@@ -234,30 +233,6 @@ OC.L10N.register(
"Groupware" : "Praca grupowa",
"Personal info" : "Informacje osobiste",
"Mobile & desktop" : "Mobilne i stacjonarne",
- "Unlimited" : "Nieograniczony",
- "Verifying" : "Weryfikacja",
- "Verifying …" : "Weryfikacja…",
- "Verify" : "Zweryfikuj",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Udostępnianie %s nie udało się, ponieważ zaplecze nie pozwala na współdzielenie takiego typu jak %i",
- "Sharing %s failed, because the file does not exist" : "Udostępnianie %s nie powiodło się. ponieważ plik nie istnieje",
- "Sharing %s failed, because you can not share with yourself" : "Udostępnianie %s nie powiodło się, ponieważ nie możesz współdzielić z samym sobą",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Udostępnianie %1$s nie powiodło się, ponieważ użytkownik %2$s nie istnieje",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Udostępnianie %1$s nie powiodło się, ponieważ użytkownik %2$s nie jest członkiem żadnej grupy, której członkiem jest %3$s",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Udostępnianie %1$s nie powiodło się, ponieważ ten element jest już współdzielony z %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Udostępnianie %1$s nie powiodło się, ponieważ ten element jest już udostępniony użytkownikowi %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Udostępnianie %1$s nie powiodło się, ponieważ grupa %2$s nie istnieje",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Udostępnianie %1$s nie powiodło się, ponieważ %2$s nie jest członkiem grupy %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Aby utworzyć link publiczny, musisz podać hasło, ponieważ dozwolone są tylko linki chronione",
- "Sharing %s failed, because sharing with links is not allowed" : "Udostępnianie %s nie powiodło się, ponieważ współdzielenie za pomocą linków jest niedozwolone",
- "Not allowed to create a federated share with the same user" : "Nie jest dozwolone tworzenie współdzielenia federacyjnego z tym samym użytkownikiem",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Udostępnianie %1$s nie powiodło się, ponieważ nie udało się znaleźć %2$s, być może serwer jest obecnie nieosiągalny.",
- "Share type %1$s is not valid for %2$s" : "Typ udostępnienia %1$s jest nieprawidłowy dla %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nie można ustawić daty wygaśnięcia. Współdzielenie nie może wygasać później niż %s od momentu udostępnienia",
- "Cannot set expiration date. Expiration date is in the past" : "Nie można ustawić daty wygaśnięcia. Data wygaśnięcia jest w przeszłości.",
- "Sharing failed, because the user %s is the original sharer" : "Udostępnianie nie powiodło się, ponieważ użytkownik %s jest właścicielem współdzielenia",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Udostępnianie %1$s nie powiodło się, ponieważ uprawnienia przekraczają uprawnieniom przyznanym %2$s",
- "Sharing %s failed, because resharing is not allowed" : "Udostępnianie %s nie powiodło się, ponieważ ponowne współdzielenie nie jest dozwolone",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Udostępnianie %1$s nie powiodło się, ponieważ zaplecze współdzielenia dla %2$s nie mogło znaleźć swojego źródła",
- "Sharing %s failed, because the file could not be found in the file cache" : "Udostępnianie %s nie powiodło się, ponieważ nie można znaleźć pliku w pamięci podręcznej plików"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Zwykle można to naprawić, nadając serwerowi WWW uprawnienia do zapisu do katalogu apps lub wyłączając sklep aplikacji w pliku config. Patrz %s"
},
"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);");
diff --git a/lib/l10n/pl.json b/lib/l10n/pl.json
index b53cceddc23..b1b07d4f14b 100644
--- a/lib/l10n/pl.json
+++ b/lib/l10n/pl.json
@@ -1,9 +1,9 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "Nie można zapisać do katalogu \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Zwykle można to naprawić, nadając serwerowi WWW dostęp do zapisu do katalogu config.",
- "See %s" : "Zobacz %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Jeśli, albo wolisz zachować plik config.php tylko do odczytu, ustaw w nim opcję \"config_is_read_only\" na true.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Zwykle można to naprawić, nadając serwerowi WWW dostęp do zapisu do katalogu config. Zobacz %s",
+ "See %s" : "Zobacz %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Zwykle można to naprawić, nadając serwerowi WWW dostęp do zapisu do katalogu config.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Jeśli, albo wolisz zachować plik config.php tylko do odczytu, ustaw w nim opcję \"config_is_read_only\" na true. Zobacz %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Pliki aplikacji %1$s nie zostały poprawnie zastąpione. Upewnij się, że jest to wersja zgodna z serwerem.",
"Sample configuration detected" : "Wykryto przykładową konfigurację",
@@ -20,12 +20,12 @@
"PHP %s or higher is required." : "Wymagane jest PHP %s lub wyższe.",
"PHP with a version lower than %s is required." : "Wymagane jest PHP z wersją niższą niż %s.",
"%sbit or higher PHP required." : "%sbit lub wymagane wyższe PHP.",
- "Following databases are supported: %s" : "Obsługiwane są następujące bazy danych: %s",
+ "The following databases are supported: %s" : "Obsługiwane są następujące bazy danych: %s",
"The command line tool %s could not be found" : "Nie można znaleźć narzędzia wiersza poleceń %s",
"The library %s is not available." : "Biblioteka %s nie jest dostępna.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Wymagana jest biblioteka %1$s z wersją wyższą niż %2$s - dostępna wersja %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Wymagana jest biblioteka %1$s w wersji niższej niż %2$s - dostępna wersja %3$s.",
- "Following platforms are supported: %s" : "Obsługiwane są następujące platformy: %s",
+ "The following platforms are supported: %s" : "Obsługiwane są następujące platformy: %s",
"Server version %s or higher is required." : "Wymagana jest wersja serwera %s lub wyższa.",
"Server version %s or lower is required." : "Wymagana jest wersja serwera %s lub niższa.",
"Logged in user must be an admin or sub admin" : "Zalogowany użytkownik musi być administratorem lub współadministratorem",
@@ -183,8 +183,9 @@
"Token expired. Please reload page." : "Token wygasł. Przeładuj stronę.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Nie zainstalowano sterowników bazy danych (sqlite, mysql lub postgresql).",
"Cannot write into \"config\" directory" : "Nie można zapisać do katalogu \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Zwykle można to naprawić, nadając serwerowi WWW dostęp do zapisu do katalogu config. Zobacz %s",
"Cannot write into \"apps\" directory" : "Nie można zapisać do katalogu \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Zwykle można to naprawić, nadając serwerowi WWW uprawnienia do zapisu do katalogu apps lub wyłączając sklep aplikacji w pliku config. Patrz %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Zwykle można to naprawić, przyznając serwerowi dostęp do zapisu do katalogu aplikacji lub wyłączając aplikację w pliku konfiguracyjnym.",
"Cannot create \"data\" directory" : "Nie mozna utworzyć katalogu \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Zwykle można to naprawić, nadając serwerowi WWW dostęp do zapisu do katalogu głównego. Zobacz %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Uprawnienia można zazwyczaj naprawić, nadając serwerowi WWW dostęp do zapisu do katalogu głównego. Zobacz %s.",
@@ -221,10 +222,8 @@
"Storage connection error. %s" : "Błąd połączenia z magazynem. %s",
"Storage is temporarily not available" : "Magazyn jest tymczasowo niedostępny",
"Storage connection timeout. %s" : "Limit czasu połączenia do magazynu. %s",
- "Create" : "Utwórz",
- "Change" : "Zmień",
- "Delete" : "Usuń",
- "Share" : "Udostępnij",
+ "Following databases are supported: %s" : "Obsługiwane są następujące bazy danych: %s",
+ "Following platforms are supported: %s" : "Obsługiwane są następujące platformy: %s",
"Overview" : "Przegląd",
"Basic settings" : "Ustawienia podstawowe",
"Sharing" : "Udostępnianie",
@@ -232,30 +231,6 @@
"Groupware" : "Praca grupowa",
"Personal info" : "Informacje osobiste",
"Mobile & desktop" : "Mobilne i stacjonarne",
- "Unlimited" : "Nieograniczony",
- "Verifying" : "Weryfikacja",
- "Verifying …" : "Weryfikacja…",
- "Verify" : "Zweryfikuj",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Udostępnianie %s nie udało się, ponieważ zaplecze nie pozwala na współdzielenie takiego typu jak %i",
- "Sharing %s failed, because the file does not exist" : "Udostępnianie %s nie powiodło się. ponieważ plik nie istnieje",
- "Sharing %s failed, because you can not share with yourself" : "Udostępnianie %s nie powiodło się, ponieważ nie możesz współdzielić z samym sobą",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Udostępnianie %1$s nie powiodło się, ponieważ użytkownik %2$s nie istnieje",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Udostępnianie %1$s nie powiodło się, ponieważ użytkownik %2$s nie jest członkiem żadnej grupy, której członkiem jest %3$s",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Udostępnianie %1$s nie powiodło się, ponieważ ten element jest już współdzielony z %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Udostępnianie %1$s nie powiodło się, ponieważ ten element jest już udostępniony użytkownikowi %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Udostępnianie %1$s nie powiodło się, ponieważ grupa %2$s nie istnieje",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Udostępnianie %1$s nie powiodło się, ponieważ %2$s nie jest członkiem grupy %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Aby utworzyć link publiczny, musisz podać hasło, ponieważ dozwolone są tylko linki chronione",
- "Sharing %s failed, because sharing with links is not allowed" : "Udostępnianie %s nie powiodło się, ponieważ współdzielenie za pomocą linków jest niedozwolone",
- "Not allowed to create a federated share with the same user" : "Nie jest dozwolone tworzenie współdzielenia federacyjnego z tym samym użytkownikiem",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Udostępnianie %1$s nie powiodło się, ponieważ nie udało się znaleźć %2$s, być może serwer jest obecnie nieosiągalny.",
- "Share type %1$s is not valid for %2$s" : "Typ udostępnienia %1$s jest nieprawidłowy dla %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nie można ustawić daty wygaśnięcia. Współdzielenie nie może wygasać później niż %s od momentu udostępnienia",
- "Cannot set expiration date. Expiration date is in the past" : "Nie można ustawić daty wygaśnięcia. Data wygaśnięcia jest w przeszłości.",
- "Sharing failed, because the user %s is the original sharer" : "Udostępnianie nie powiodło się, ponieważ użytkownik %s jest właścicielem współdzielenia",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Udostępnianie %1$s nie powiodło się, ponieważ uprawnienia przekraczają uprawnieniom przyznanym %2$s",
- "Sharing %s failed, because resharing is not allowed" : "Udostępnianie %s nie powiodło się, ponieważ ponowne współdzielenie nie jest dozwolone",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Udostępnianie %1$s nie powiodło się, ponieważ zaplecze współdzielenia dla %2$s nie mogło znaleźć swojego źródła",
- "Sharing %s failed, because the file could not be found in the file cache" : "Udostępnianie %s nie powiodło się, ponieważ nie można znaleźć pliku w pamięci podręcznej plików"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Zwykle można to naprawić, nadając serwerowi WWW uprawnienia do zapisu do katalogu apps lub wyłączając sklep aplikacji w pliku config. Patrz %s"
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
} \ No newline at end of file
diff --git a/lib/l10n/ps.js b/lib/l10n/ps.js
index 5ff71608b97..429e3a30f00 100644
--- a/lib/l10n/ps.js
+++ b/lib/l10n/ps.js
@@ -10,9 +10,6 @@ OC.L10N.register(
"Apps" : "اپلېکشنونه",
"Settings" : "سمونې",
"Users" : "کارنان",
- "Storage is temporarily not available" : "ذخیره د لنډې مودې لپاره نشته",
- "Delete" : "ړنګول",
- "Share" : "شریکول",
- "Unlimited" : "نامحدود"
+ "Storage is temporarily not available" : "ذخیره د لنډې مودې لپاره نشته"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/ps.json b/lib/l10n/ps.json
index 462c4c3a69b..45ca4c2c610 100644
--- a/lib/l10n/ps.json
+++ b/lib/l10n/ps.json
@@ -8,9 +8,6 @@
"Apps" : "اپلېکشنونه",
"Settings" : "سمونې",
"Users" : "کارنان",
- "Storage is temporarily not available" : "ذخیره د لنډې مودې لپاره نشته",
- "Delete" : "ړنګول",
- "Share" : "شریکول",
- "Unlimited" : "نامحدود"
+ "Storage is temporarily not available" : "ذخیره د لنډې مودې لپاره نشته"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js
index ed5a2d3cd03..4e7ad19a163 100644
--- a/lib/l10n/pt_BR.js
+++ b/lib/l10n/pt_BR.js
@@ -3,9 +3,9 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "Não é possível gravar no diretório \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Isso geralmente pode ser corrigido dando o acesso de escritura ao webserver para o diretório de configuração",
- "See %s" : "Ver %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Ou, se você preferir manter o arquivo config.php somente para leitura, defina a opção \"config_is_read_only\" como true.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Normalmente isso pode ser resolvido dando ao webserver permissão de escritura no diretório config. Veja %s",
+ "See %s" : "Ver %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Geralmente, isso pode ser corrigido concedendo ao servidor web acesso de gravação ao diretório de configuração.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Ou, se você preferir manter o arquivo config.php somente para leitura, defina a opção \"config_is_read_only\" como true. Veja %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Os arquivos do aplicativo %1$s não foram instalados corretamente. Certifique-se que é uma versão compatível com seu servidor.",
"Sample configuration detected" : "Configuração de exemplo detectada",
@@ -22,12 +22,12 @@ OC.L10N.register(
"PHP %s or higher is required." : "PHP %s ou superior é requerido.",
"PHP with a version lower than %s is required." : "É requerida uma versão PHP mais antiga que a %s .",
"%sbit or higher PHP required." : "%sbit ou PHP maior é requerido.",
- "Following databases are supported: %s" : "Os seguintes bancos de dados são suportados: %s",
+ "The following databases are supported: %s" : "Os seguintes bancos de dados são suportados: %s",
"The command line tool %s could not be found" : "A ferramenta de linha de comando %s não pôde ser encontrada",
"The library %s is not available." : "A biblioteca %s não está disponível.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Uma biblioteca %1$s com uma versão maior que %2$s é requerida - versão disponível %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Uma biblioteca %1$s com uma versão abaixo de%2$s é requerida - versão disponível %3$s.",
- "Following platforms are supported: %s" : "As seguintes plataformas são suportadas: %s",
+ "The following platforms are supported: %s" : "As seguintes plataformas são suportadas: %s",
"Server version %s or higher is required." : "É requerido um servidor da versão %s ou superior.",
"Server version %s or lower is required." : "É requerido um servidor da versão %s ou abaixo.",
"Logged in user must be an admin or sub admin" : "O usuário conectado deve ser um administrador ou subadministrador",
@@ -56,15 +56,15 @@ OC.L10N.register(
"next month" : "Mês que vem",
"last month" : "último mês",
"_in %n month_::_in %n months_" : ["em %n mês","em %n meses"],
- "_%n month ago_::_%n months ago_" : ["há %n mês atrás","há %n meses atrás"],
+ "_%n month ago_::_%n months ago_" : ["há %n mês atrás","há %n meses"],
"next year" : "ano que vem",
"last year" : "último ano",
"_in %n year_::_in %n years_" : ["em %n ano","em %n anos"],
"_%n year ago_::_%n years ago_" : ["%n ano atrás","%n anos atrás"],
"_in %n hour_::_in %n hours_" : ["em %n hora","em %n horas"],
- "_%n hour ago_::_%n hours ago_" : ["há %n hora atrás","há %n horas atrás"],
+ "_%n hour ago_::_%n hours ago_" : ["há %n hora atrás","há %n horas"],
"_in %n minute_::_in %n minutes_" : ["em %n minuto","em %n minutos"],
- "_%n minute ago_::_%n minutes ago_" : ["há %n minuto atrás","há %n minutos atrás"],
+ "_%n minute ago_::_%n minutes ago_" : ["há %n minuto atrás","há %n minutos"],
"in a few seconds" : "Em alguns segundos",
"seconds ago" : "segundos atrás",
"Empty file" : "Arquivo vazio",
@@ -185,8 +185,9 @@ OC.L10N.register(
"Token expired. Please reload page." : "O token expirou. Por favor recarregue a página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Nenhum driver de banco de dados (sqlite, mysql ou postgresql) instalado.",
"Cannot write into \"config\" directory" : "Não foi possível gravar no diretório \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Normalmente isso pode ser resolvido dando ao webserver permissão de escritura no diretório config. Veja %s",
"Cannot write into \"apps\" directory" : "Não foi possível gravar no diretório \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Normalmente isso pode ser resolvido dando ao webserver permissão de escrita no diretório apps ou desabilitando a appstore no arquivo de configuração. Veja %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Geralmente, isso pode ser corrigido concedendo ao servidor web acesso de gravação ao diretório de aplicativos ou desativando a loja de aplicativos no arquivo de configuração.",
"Cannot create \"data\" directory" : "Não foi possível criar o diretório \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Normalmente isso pode ser resolvido dando ao webserver permissão de escrita no diretório raiz. Veja %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "As permissões normalmente podem ser corrigidas dando permissão de escrita do diretório raiz para o servidor web. Veja %s.",
@@ -223,10 +224,8 @@ OC.L10N.register(
"Storage connection error. %s" : "Erro na conexão de armazenamento. %s",
"Storage is temporarily not available" : "Armazenamento temporariamente indisponível",
"Storage connection timeout. %s" : "Atingido o tempo limite de conexão ao armazenamento. %s",
- "Create" : "Criar",
- "Change" : "Mudar",
- "Delete" : "Excluir",
- "Share" : "Compartilhar",
+ "Following databases are supported: %s" : "Os seguintes bancos de dados são suportados: %s",
+ "Following platforms are supported: %s" : "As seguintes plataformas são suportadas: %s",
"Overview" : "Visão geral",
"Basic settings" : "Configurações básicas",
"Sharing" : "Compartilhamento",
@@ -234,30 +233,6 @@ OC.L10N.register(
"Groupware" : "Groupware",
"Personal info" : "Informação pessoal",
"Mobile & desktop" : "Móvel & desktop",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verificando",
- "Verifying …" : "Verificando...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "O compartilhamento %s falhou pois a plataforma de serviço não permite ações de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Compartilhamento %s falhou pois o arquivo não existe",
- "Sharing %s failed, because you can not share with yourself" : "O compartilhamento %s falhou pois você não pode compartilhar com você mesmo",
- "Sharing %1$s failed, because the user %2$s does not exist" : "O compartilhamento %1$s falhou, porque o usuário %2$s não existe",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "O compartilhamento %1$s falhou, porque o usuário %2$s não é membro de nenhum grupo que %3$s é",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "O compartilhamento %1$s falhou, porque o item já está compartilhado com %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "O compartilhamento %1$s falhou, porque este item já está compartilhando com o usuário %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "O compartilhamento %1$s falhou, porque o grupo %2$s não existe",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "O compartilhamento %1$s falhou, porque %2$s não é membro do grupo %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Você precisa fornecer uma senha para criar um link público, apenas links protegidos são permitidos",
- "Sharing %s failed, because sharing with links is not allowed" : "O compartilhamento %s falhou pois compartilhamento com links não é permitido",
- "Not allowed to create a federated share with the same user" : "Não é permitido criar um compartilhamento associado com o mesmo usuário",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "O compartilhamento%1$s falhou, não pude encontrar %2$s, talvez o servidor esteja inacessível.",
- "Share type %1$s is not valid for %2$s" : "O tipo de compartilhamento %1$s é inválido para %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Não foi possível definir a data de expiração. Os compartilhamentos não podem expirar mais tarde que %s depois de terem sido compartilhados",
- "Cannot set expiration date. Expiration date is in the past" : "Não foi possível definir a data de expiração pois ela está no passado",
- "Sharing failed, because the user %s is the original sharer" : "O compartilhamento falhou pois o usuário %s é o compartilhador original",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "O compartilhamento %1$s falhou, porque as permissões excedem aquelas concedidas à %2$s",
- "Sharing %s failed, because resharing is not allowed" : "O compartilhamento %s falhou pois recompartilhamentos não são permitidos",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "O compartilhamento %1$s falhou, Talvez a infraestrutura de compartilhamento para %2$s não pode encontrar sua fonte",
- "Sharing %s failed, because the file could not be found in the file cache" : "O compartilhamento %s falhou pois o arquivo não pôde ser encontrado no cache de arquivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Normalmente isso pode ser resolvido dando ao webserver permissão de escrita no diretório apps ou desabilitando a appstore no arquivo de configuração. Veja %s"
},
"nplurals=2; plural=(n > 1);");
diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json
index 2aed553df17..9f5520aa0ee 100644
--- a/lib/l10n/pt_BR.json
+++ b/lib/l10n/pt_BR.json
@@ -1,9 +1,9 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "Não é possível gravar no diretório \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Isso geralmente pode ser corrigido dando o acesso de escritura ao webserver para o diretório de configuração",
- "See %s" : "Ver %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Ou, se você preferir manter o arquivo config.php somente para leitura, defina a opção \"config_is_read_only\" como true.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Normalmente isso pode ser resolvido dando ao webserver permissão de escritura no diretório config. Veja %s",
+ "See %s" : "Ver %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Geralmente, isso pode ser corrigido concedendo ao servidor web acesso de gravação ao diretório de configuração.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Ou, se você preferir manter o arquivo config.php somente para leitura, defina a opção \"config_is_read_only\" como true. Veja %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Os arquivos do aplicativo %1$s não foram instalados corretamente. Certifique-se que é uma versão compatível com seu servidor.",
"Sample configuration detected" : "Configuração de exemplo detectada",
@@ -20,12 +20,12 @@
"PHP %s or higher is required." : "PHP %s ou superior é requerido.",
"PHP with a version lower than %s is required." : "É requerida uma versão PHP mais antiga que a %s .",
"%sbit or higher PHP required." : "%sbit ou PHP maior é requerido.",
- "Following databases are supported: %s" : "Os seguintes bancos de dados são suportados: %s",
+ "The following databases are supported: %s" : "Os seguintes bancos de dados são suportados: %s",
"The command line tool %s could not be found" : "A ferramenta de linha de comando %s não pôde ser encontrada",
"The library %s is not available." : "A biblioteca %s não está disponível.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Uma biblioteca %1$s com uma versão maior que %2$s é requerida - versão disponível %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Uma biblioteca %1$s com uma versão abaixo de%2$s é requerida - versão disponível %3$s.",
- "Following platforms are supported: %s" : "As seguintes plataformas são suportadas: %s",
+ "The following platforms are supported: %s" : "As seguintes plataformas são suportadas: %s",
"Server version %s or higher is required." : "É requerido um servidor da versão %s ou superior.",
"Server version %s or lower is required." : "É requerido um servidor da versão %s ou abaixo.",
"Logged in user must be an admin or sub admin" : "O usuário conectado deve ser um administrador ou subadministrador",
@@ -54,15 +54,15 @@
"next month" : "Mês que vem",
"last month" : "último mês",
"_in %n month_::_in %n months_" : ["em %n mês","em %n meses"],
- "_%n month ago_::_%n months ago_" : ["há %n mês atrás","há %n meses atrás"],
+ "_%n month ago_::_%n months ago_" : ["há %n mês atrás","há %n meses"],
"next year" : "ano que vem",
"last year" : "último ano",
"_in %n year_::_in %n years_" : ["em %n ano","em %n anos"],
"_%n year ago_::_%n years ago_" : ["%n ano atrás","%n anos atrás"],
"_in %n hour_::_in %n hours_" : ["em %n hora","em %n horas"],
- "_%n hour ago_::_%n hours ago_" : ["há %n hora atrás","há %n horas atrás"],
+ "_%n hour ago_::_%n hours ago_" : ["há %n hora atrás","há %n horas"],
"_in %n minute_::_in %n minutes_" : ["em %n minuto","em %n minutos"],
- "_%n minute ago_::_%n minutes ago_" : ["há %n minuto atrás","há %n minutos atrás"],
+ "_%n minute ago_::_%n minutes ago_" : ["há %n minuto atrás","há %n minutos"],
"in a few seconds" : "Em alguns segundos",
"seconds ago" : "segundos atrás",
"Empty file" : "Arquivo vazio",
@@ -183,8 +183,9 @@
"Token expired. Please reload page." : "O token expirou. Por favor recarregue a página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Nenhum driver de banco de dados (sqlite, mysql ou postgresql) instalado.",
"Cannot write into \"config\" directory" : "Não foi possível gravar no diretório \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Normalmente isso pode ser resolvido dando ao webserver permissão de escritura no diretório config. Veja %s",
"Cannot write into \"apps\" directory" : "Não foi possível gravar no diretório \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Normalmente isso pode ser resolvido dando ao webserver permissão de escrita no diretório apps ou desabilitando a appstore no arquivo de configuração. Veja %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Geralmente, isso pode ser corrigido concedendo ao servidor web acesso de gravação ao diretório de aplicativos ou desativando a loja de aplicativos no arquivo de configuração.",
"Cannot create \"data\" directory" : "Não foi possível criar o diretório \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Normalmente isso pode ser resolvido dando ao webserver permissão de escrita no diretório raiz. Veja %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "As permissões normalmente podem ser corrigidas dando permissão de escrita do diretório raiz para o servidor web. Veja %s.",
@@ -221,10 +222,8 @@
"Storage connection error. %s" : "Erro na conexão de armazenamento. %s",
"Storage is temporarily not available" : "Armazenamento temporariamente indisponível",
"Storage connection timeout. %s" : "Atingido o tempo limite de conexão ao armazenamento. %s",
- "Create" : "Criar",
- "Change" : "Mudar",
- "Delete" : "Excluir",
- "Share" : "Compartilhar",
+ "Following databases are supported: %s" : "Os seguintes bancos de dados são suportados: %s",
+ "Following platforms are supported: %s" : "As seguintes plataformas são suportadas: %s",
"Overview" : "Visão geral",
"Basic settings" : "Configurações básicas",
"Sharing" : "Compartilhamento",
@@ -232,30 +231,6 @@
"Groupware" : "Groupware",
"Personal info" : "Informação pessoal",
"Mobile & desktop" : "Móvel & desktop",
- "Unlimited" : "Ilimitado",
- "Verifying" : "Verificando",
- "Verifying …" : "Verificando...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "O compartilhamento %s falhou pois a plataforma de serviço não permite ações de tipo %i",
- "Sharing %s failed, because the file does not exist" : "Compartilhamento %s falhou pois o arquivo não existe",
- "Sharing %s failed, because you can not share with yourself" : "O compartilhamento %s falhou pois você não pode compartilhar com você mesmo",
- "Sharing %1$s failed, because the user %2$s does not exist" : "O compartilhamento %1$s falhou, porque o usuário %2$s não existe",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "O compartilhamento %1$s falhou, porque o usuário %2$s não é membro de nenhum grupo que %3$s é",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "O compartilhamento %1$s falhou, porque o item já está compartilhado com %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "O compartilhamento %1$s falhou, porque este item já está compartilhando com o usuário %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "O compartilhamento %1$s falhou, porque o grupo %2$s não existe",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "O compartilhamento %1$s falhou, porque %2$s não é membro do grupo %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Você precisa fornecer uma senha para criar um link público, apenas links protegidos são permitidos",
- "Sharing %s failed, because sharing with links is not allowed" : "O compartilhamento %s falhou pois compartilhamento com links não é permitido",
- "Not allowed to create a federated share with the same user" : "Não é permitido criar um compartilhamento associado com o mesmo usuário",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "O compartilhamento%1$s falhou, não pude encontrar %2$s, talvez o servidor esteja inacessível.",
- "Share type %1$s is not valid for %2$s" : "O tipo de compartilhamento %1$s é inválido para %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Não foi possível definir a data de expiração. Os compartilhamentos não podem expirar mais tarde que %s depois de terem sido compartilhados",
- "Cannot set expiration date. Expiration date is in the past" : "Não foi possível definir a data de expiração pois ela está no passado",
- "Sharing failed, because the user %s is the original sharer" : "O compartilhamento falhou pois o usuário %s é o compartilhador original",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "O compartilhamento %1$s falhou, porque as permissões excedem aquelas concedidas à %2$s",
- "Sharing %s failed, because resharing is not allowed" : "O compartilhamento %s falhou pois recompartilhamentos não são permitidos",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "O compartilhamento %1$s falhou, Talvez a infraestrutura de compartilhamento para %2$s não pode encontrar sua fonte",
- "Sharing %s failed, because the file could not be found in the file cache" : "O compartilhamento %s falhou pois o arquivo não pôde ser encontrado no cache de arquivos"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Normalmente isso pode ser resolvido dando ao webserver permissão de escrita no diretório apps ou desabilitando a appstore no arquivo de configuração. Veja %s"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/lib/l10n/pt_PT.js b/lib/l10n/pt_PT.js
index d3c603a9aa1..00d552d2a8e 100644
--- a/lib/l10n/pt_PT.js
+++ b/lib/l10n/pt_PT.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "Não é possível gravar no directório \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Isto normalmente pode ser resolvido, dando ao servidor da Web direitos de gravação para a diretoria de configuração",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Isto pode geralmente ser corrigido ao adicionar permissões de escrita à pasta de configuração ao servidor web. Ver %s.",
"Sample configuration detected" : "Detetado exemplo de configuração",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Foi detectado que a configuração de amostra foi copiada. Isso pode danificar a sua instalação e não é suportado. Por favor, leia a documentação antes de realizar mudanças no config.php",
"%1$s and %2$s" : "%1$s e %2$s",
@@ -18,10 +17,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Necessário PHP %s ou superior.",
"PHP with a version lower than %s is required." : "É necessário um PHP com uma versão inferir a %s.",
"%sbit or higher PHP required." : "Necessário PHP %sbit ou superior.",
- "Following databases are supported: %s" : "São suportadas as seguintes bases de dados: %s",
"The command line tool %s could not be found" : "Não foi encontrada a ferramenta de linha de comando %s",
"The library %s is not available." : "A biblioteca %s não está disponível.",
- "Following platforms are supported: %s" : "São suportadas as seguintes plataformas: %s",
"Server version %s or higher is required." : "É necessária versão do servidor %s or superior. ",
"Server version %s or lower is required." : "É necessária versão do servidor %s or inferior.",
"Authentication" : "Autenticação",
@@ -161,8 +158,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "O token expirou. Por favor recarregue a página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Nenhuma base de dados de drivers (sqlite, mysql, or postgresql) instaladas.",
"Cannot write into \"config\" directory" : "Não é possível escrever na directoria \"configurar\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Isto pode geralmente ser corrigido ao adicionar permissões de escrita à pasta de configuração ao servidor web. Ver %s.",
"Cannot write into \"apps\" directory" : "Não é possivel escrever na directoria \"aplicações\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Isto pode ser normalmente resolvido dando ao servidor web direito de escrita para o directório de aplicação ou desactivando a loja de aplicações no ficheiro de configuração. Ver %s",
"Cannot create \"data\" directory" : "Não é possivel criar a directoria \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Isto pode geralmente ser corrigido ao adicionar permissões de escrita à pasta de raiz. Ver %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "As permissões podem geralmente ser corrigidas dando ao servidor web permissões de escrita na pasta de raiz. Ver %s.",
@@ -194,27 +191,13 @@ OC.L10N.register(
"Storage connection error. %s" : "Erro de ligação ao armazenamento. %s",
"Storage is temporarily not available" : "Armazenamento temporariamente indisponível",
"Storage connection timeout. %s" : "Tempo de ligação ao armazenamento expirou. %s",
- "Create" : "Criar",
- "Delete" : "Apagar",
- "Share" : "Partilhar",
+ "Following databases are supported: %s" : "São suportadas as seguintes bases de dados: %s",
+ "Following platforms are supported: %s" : "São suportadas as seguintes plataformas: %s",
+ "Overview" : "Visão Geral",
"Basic settings" : "Definições básicas",
"Sharing" : "Partilhar",
"Security" : "Segurança",
"Personal info" : "Informação pessoal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "A verificar",
- "Verifying …" : "A verificar...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "A partilha de %s falhou porque a interface não permite as partilhas do tipo %i",
- "Sharing %s failed, because the file does not exist" : "A partilha de %s falhou, porque o ficheiro não existe",
- "Sharing %s failed, because you can not share with yourself" : "A partilha de %s falhou, porque não é possível partilhar consigo mesmo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Precisa de fornecer uma palavra-passe para criar uma hiperligação publica, só são permitidas hiperligações protegidas",
- "Sharing %s failed, because sharing with links is not allowed" : "A partilha de %s falhou, porque partilhar com links não é permitido",
- "Not allowed to create a federated share with the same user" : "Não é possível criar uma partilha federada com o mesmo utilizador",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Não é possível definir data de expiração. As partilhas não podem expirar mais de %s depois de terem sido partilhadas",
- "Cannot set expiration date. Expiration date is in the past" : "Não é possivel definir data de expiração. A data de expiração está no passado",
- "Sharing failed, because the user %s is the original sharer" : "A partilha falhou, porque o utilizador %s é o distribuidor original",
- "Sharing %s failed, because resharing is not allowed" : "A partilha %s falhou, porque repartilhar não é permitido",
- "Sharing %s failed, because the file could not be found in the file cache" : "A partilha %s falhou, devido ao ficheiro não poder ser encontrado na cache de ficheiros"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Isto pode ser normalmente resolvido dando ao servidor web direito de escrita para o directório de aplicação ou desactivando a loja de aplicações no ficheiro de configuração. Ver %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/pt_PT.json b/lib/l10n/pt_PT.json
index 72247529b52..0d85dc3394a 100644
--- a/lib/l10n/pt_PT.json
+++ b/lib/l10n/pt_PT.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "Não é possível gravar no directório \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Isto normalmente pode ser resolvido, dando ao servidor da Web direitos de gravação para a diretoria de configuração",
"See %s" : "Ver %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Isto pode geralmente ser corrigido ao adicionar permissões de escrita à pasta de configuração ao servidor web. Ver %s.",
"Sample configuration detected" : "Detetado exemplo de configuração",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Foi detectado que a configuração de amostra foi copiada. Isso pode danificar a sua instalação e não é suportado. Por favor, leia a documentação antes de realizar mudanças no config.php",
"%1$s and %2$s" : "%1$s e %2$s",
@@ -16,10 +15,8 @@
"PHP %s or higher is required." : "Necessário PHP %s ou superior.",
"PHP with a version lower than %s is required." : "É necessário um PHP com uma versão inferir a %s.",
"%sbit or higher PHP required." : "Necessário PHP %sbit ou superior.",
- "Following databases are supported: %s" : "São suportadas as seguintes bases de dados: %s",
"The command line tool %s could not be found" : "Não foi encontrada a ferramenta de linha de comando %s",
"The library %s is not available." : "A biblioteca %s não está disponível.",
- "Following platforms are supported: %s" : "São suportadas as seguintes plataformas: %s",
"Server version %s or higher is required." : "É necessária versão do servidor %s or superior. ",
"Server version %s or lower is required." : "É necessária versão do servidor %s or inferior.",
"Authentication" : "Autenticação",
@@ -159,8 +156,8 @@
"Token expired. Please reload page." : "O token expirou. Por favor recarregue a página.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Nenhuma base de dados de drivers (sqlite, mysql, or postgresql) instaladas.",
"Cannot write into \"config\" directory" : "Não é possível escrever na directoria \"configurar\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Isto pode geralmente ser corrigido ao adicionar permissões de escrita à pasta de configuração ao servidor web. Ver %s.",
"Cannot write into \"apps\" directory" : "Não é possivel escrever na directoria \"aplicações\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Isto pode ser normalmente resolvido dando ao servidor web direito de escrita para o directório de aplicação ou desactivando a loja de aplicações no ficheiro de configuração. Ver %s",
"Cannot create \"data\" directory" : "Não é possivel criar a directoria \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Isto pode geralmente ser corrigido ao adicionar permissões de escrita à pasta de raiz. Ver %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "As permissões podem geralmente ser corrigidas dando ao servidor web permissões de escrita na pasta de raiz. Ver %s.",
@@ -192,27 +189,13 @@
"Storage connection error. %s" : "Erro de ligação ao armazenamento. %s",
"Storage is temporarily not available" : "Armazenamento temporariamente indisponível",
"Storage connection timeout. %s" : "Tempo de ligação ao armazenamento expirou. %s",
- "Create" : "Criar",
- "Delete" : "Apagar",
- "Share" : "Partilhar",
+ "Following databases are supported: %s" : "São suportadas as seguintes bases de dados: %s",
+ "Following platforms are supported: %s" : "São suportadas as seguintes plataformas: %s",
+ "Overview" : "Visão Geral",
"Basic settings" : "Definições básicas",
"Sharing" : "Partilhar",
"Security" : "Segurança",
"Personal info" : "Informação pessoal",
- "Unlimited" : "Ilimitado",
- "Verifying" : "A verificar",
- "Verifying …" : "A verificar...",
- "Verify" : "Verificar",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "A partilha de %s falhou porque a interface não permite as partilhas do tipo %i",
- "Sharing %s failed, because the file does not exist" : "A partilha de %s falhou, porque o ficheiro não existe",
- "Sharing %s failed, because you can not share with yourself" : "A partilha de %s falhou, porque não é possível partilhar consigo mesmo",
- "You need to provide a password to create a public link, only protected links are allowed" : "Precisa de fornecer uma palavra-passe para criar uma hiperligação publica, só são permitidas hiperligações protegidas",
- "Sharing %s failed, because sharing with links is not allowed" : "A partilha de %s falhou, porque partilhar com links não é permitido",
- "Not allowed to create a federated share with the same user" : "Não é possível criar uma partilha federada com o mesmo utilizador",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Não é possível definir data de expiração. As partilhas não podem expirar mais de %s depois de terem sido partilhadas",
- "Cannot set expiration date. Expiration date is in the past" : "Não é possivel definir data de expiração. A data de expiração está no passado",
- "Sharing failed, because the user %s is the original sharer" : "A partilha falhou, porque o utilizador %s é o distribuidor original",
- "Sharing %s failed, because resharing is not allowed" : "A partilha %s falhou, porque repartilhar não é permitido",
- "Sharing %s failed, because the file could not be found in the file cache" : "A partilha %s falhou, devido ao ficheiro não poder ser encontrado na cache de ficheiros"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Isto pode ser normalmente resolvido dando ao servidor web direito de escrita para o directório de aplicação ou desactivando a loja de aplicações no ficheiro de configuração. Ver %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/ro.js b/lib/l10n/ro.js
index 425cf8dc0d8..bb370607a54 100644
--- a/lib/l10n/ro.js
+++ b/lib/l10n/ro.js
@@ -13,10 +13,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Versiunea PHP %s sau mai mare este necesară.",
"PHP with a version lower than %s is required." : "Este necesară o versiune PHP mai mică decât %s",
"%sbit or higher PHP required." : "Este necesar PHP %sbit sau mai mare.",
- "Following databases are supported: %s" : "Următoarele baze de date sunt suportate: %s",
"The command line tool %s could not be found" : "Unealta în linie de comandă %s nu a fost găsită",
"The library %s is not available." : "Biblioteca %s nu este disponibilă.",
- "Following platforms are supported: %s" : "Sunt suportate următoarele platforme: %s",
"Authentication" : "Autentificare",
"Unknown filetype" : "Tip fișier necunoscut",
"Invalid image" : "Imagine invalidă",
@@ -128,19 +126,11 @@ OC.L10N.register(
"PostgreSQL >= 9 required" : "Este necesară versiunea 9 sau mai mare a PostgreSQL",
"Please upgrade your database version" : "Actualizați baza de date la o versiune mai nouă",
"Storage is temporarily not available" : "Spațiu de stocare este indisponibil temporar",
- "Create" : "Creează",
- "Delete" : "Șterge",
- "Share" : "Partajează",
+ "Following databases are supported: %s" : "Următoarele baze de date sunt suportate: %s",
+ "Following platforms are supported: %s" : "Sunt suportate următoarele platforme: %s",
"Basic settings" : "Setări de bază",
"Sharing" : "Partajare",
"Security" : "Securitate",
- "Personal info" : "Informații personale",
- "Unlimited" : "Nelimitată",
- "Verifying" : "Se verifică",
- "Verifying …" : "Se verifică ...",
- "Verify" : "Verifică",
- "Sharing %s failed, because the file does not exist" : "Partajarea %s a eșuat deoarece fișierul nu există",
- "Sharing %s failed, because you can not share with yourself" : "Partajarea %s a eșuat deoarece nu-l poți partaja cu tine însuți",
- "Not allowed to create a federated share with the same user" : "Nu este permisă crearea unei partajări federalizate cu acelaşi utilizator"
+ "Personal info" : "Informații personale"
},
"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));");
diff --git a/lib/l10n/ro.json b/lib/l10n/ro.json
index 173950b2ea5..601576dcd34 100644
--- a/lib/l10n/ro.json
+++ b/lib/l10n/ro.json
@@ -11,10 +11,8 @@
"PHP %s or higher is required." : "Versiunea PHP %s sau mai mare este necesară.",
"PHP with a version lower than %s is required." : "Este necesară o versiune PHP mai mică decât %s",
"%sbit or higher PHP required." : "Este necesar PHP %sbit sau mai mare.",
- "Following databases are supported: %s" : "Următoarele baze de date sunt suportate: %s",
"The command line tool %s could not be found" : "Unealta în linie de comandă %s nu a fost găsită",
"The library %s is not available." : "Biblioteca %s nu este disponibilă.",
- "Following platforms are supported: %s" : "Sunt suportate următoarele platforme: %s",
"Authentication" : "Autentificare",
"Unknown filetype" : "Tip fișier necunoscut",
"Invalid image" : "Imagine invalidă",
@@ -126,19 +124,11 @@
"PostgreSQL >= 9 required" : "Este necesară versiunea 9 sau mai mare a PostgreSQL",
"Please upgrade your database version" : "Actualizați baza de date la o versiune mai nouă",
"Storage is temporarily not available" : "Spațiu de stocare este indisponibil temporar",
- "Create" : "Creează",
- "Delete" : "Șterge",
- "Share" : "Partajează",
+ "Following databases are supported: %s" : "Următoarele baze de date sunt suportate: %s",
+ "Following platforms are supported: %s" : "Sunt suportate următoarele platforme: %s",
"Basic settings" : "Setări de bază",
"Sharing" : "Partajare",
"Security" : "Securitate",
- "Personal info" : "Informații personale",
- "Unlimited" : "Nelimitată",
- "Verifying" : "Se verifică",
- "Verifying …" : "Se verifică ...",
- "Verify" : "Verifică",
- "Sharing %s failed, because the file does not exist" : "Partajarea %s a eșuat deoarece fișierul nu există",
- "Sharing %s failed, because you can not share with yourself" : "Partajarea %s a eșuat deoarece nu-l poți partaja cu tine însuți",
- "Not allowed to create a federated share with the same user" : "Nu este permisă crearea unei partajări federalizate cu acelaşi utilizator"
+ "Personal info" : "Informații personale"
},"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"
} \ No newline at end of file
diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js
index 2eac1719aa1..a606f291d5c 100644
--- a/lib/l10n/ru.js
+++ b/lib/l10n/ru.js
@@ -3,9 +3,9 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "Невозможно выполнить запись в каталог «config».",
"This can usually be fixed by giving the webserver write access to the config directory" : "Обычно это можно исправить, предоставив веб-серверу права на запись в каталог конфигурации.",
- "See %s" : "Обратитесь к %s.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Если для файла «config.php» должен быть установлен режим «только чтение», задайте параметру \"config_is_read_only\" значение \"true\".",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Обычно это можно исправить, предоставив веб-серверу права на запись в каталог конфигурации. Изучите %s.",
+ "See %s" : "Обратитесь к %s.",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Обычно это можно исправить, предоставив веб-серверу права на запись в каталог конфигурации.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Если для файла «config.php» должен быть установлен режим «только чтение», задайте параметру \"config_is_read_only\" значение \"true\". Изучите %s.",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Файлы приложения %1$s не были заменены корректно. Удостоверьтесь, что устанавливаемая версия этого приложения совместима с версией сервера.",
"Sample configuration detected" : "Обнаружена конфигурация из примера.",
@@ -22,12 +22,12 @@ OC.L10N.register(
"PHP %s or higher is required." : "Требуется PHP версии %s или выше.",
"PHP with a version lower than %s is required." : "Требуется PHP версии ниже %s.",
"%sbit or higher PHP required." : "Требуется PHP с разрядностью %s бит или более.",
- "Following databases are supported: %s" : "Поддерживаются следующие СУБД: %s",
+ "The following databases are supported: %s" : "Поддерживаются следующие базы данных: %s",
"The command line tool %s could not be found" : "Утилита командной строки %s не найдена",
"The library %s is not available." : "Библиотека «%s» недоступна.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Требуется библиотека «%1$s» версии не меньше %2$s, установлена версия %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Требуется библиотека «%1$s» версии не выше %2$s, установлена версия %3$s.",
- "Following platforms are supported: %s" : "Поддерживаются следующие платформы: %s",
+ "The following platforms are supported: %s" : "Поддерживаются следующие платформы: %s",
"Server version %s or higher is required." : "Требуется сервер версии %s или выше.",
"Server version %s or lower is required." : "Требуется сервер версии %s или ниже.",
"Logged in user must be an admin or sub admin" : "Вошедший в систему пользователь должен обладать правами администратора или суб-администратора",
@@ -185,8 +185,9 @@ OC.L10N.register(
"Token expired. Please reload page." : "Токен просрочен. Перезагрузите страницу.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Не установлены драйвера баз данных (sqlite, mysql или postgresql)",
"Cannot write into \"config\" directory" : "Запись в каталог «config» невозможна",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Обычно это можно исправить, предоставив веб-серверу права на запись в каталог конфигурации. Изучите %s.",
"Cannot write into \"apps\" directory" : "Запись в каталог «app» невозможна",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Обычно это можно исправить, предоставив веб-серверу права на запись в каталог приложений или отключив магазин приложений в файле конфигурации. Смотрите %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Обычно это можно исправить, предоставив веб-серверу права для записи в каталог приложений или отключив магазин приложений в файле конфигурации.",
"Cannot create \"data\" directory" : "Невозможно создать каталог «data»",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Обычно это можно исправить, предоставив веб-серверу права на запись в корневой каталог. Смотрите %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Разрешения обычно можно исправить, предоставив веб-серверу право на запись в корневой каталог. Смотрите %s.",
@@ -223,10 +224,8 @@ OC.L10N.register(
"Storage connection error. %s" : "Ошибка подключения к хранилищу. %s",
"Storage is temporarily not available" : "Хранилище временно недоступно",
"Storage connection timeout. %s" : "Истекло время ожидания подключения к хранилищу. %s",
- "Create" : "Создание",
- "Change" : "Изменение",
- "Delete" : "Удаление",
- "Share" : "Предоставление доступа",
+ "Following databases are supported: %s" : "Поддерживаются следующие СУБД: %s",
+ "Following platforms are supported: %s" : "Поддерживаются следующие платформы: %s",
"Overview" : "Общие сведения",
"Basic settings" : "Основные параметры",
"Sharing" : "Общий доступ",
@@ -234,30 +233,6 @@ OC.L10N.register(
"Groupware" : "ПО совместного использования",
"Personal info" : "Личная информация",
"Mobile & desktop" : "Клиенты для ПК и мобильных устройств",
- "Unlimited" : "Неограничено",
- "Verifying" : "Производится проверка",
- "Verifying …" : "Производится проверка…",
- "Verify" : "Проверить",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Не удалось поделиться %s, так как механизм хранения не допускает публикации из элементов типа %i",
- "Sharing %s failed, because the file does not exist" : "Не удалось поделиться %s, файл не существует",
- "Sharing %s failed, because you can not share with yourself" : "Не удалось поделиться %s. Вы не можете поделиться с самим собой.",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Не удалось предоставить общий доступ к «%1$s», пользователь %2$s не существует.",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Не удалось предоставить доступ к «%1$s» , так как пользователь %2$s не состоит в какой-либо группе, в которой состоит %3$s",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Не удалось предоставить общий доступ к «%1$s» , пользователю %2$s такой доступ уже предоставлен.",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Не удалось предоставить доступ к «%1$s», так как этот ресурс уже доступен пользователю %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Не удалось предоставить доступ к «%1$s», группа %2$s не существует",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Не удалось предоставить доступ к «%1$s», пользователь %2$s не является участником группы %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Вам нужно задать пароль для создания публичной ссылки. Разрешены только защищённые ссылки",
- "Sharing %s failed, because sharing with links is not allowed" : "Не удалось поделиться %s, открытие доступа по ссылке запрещено",
- "Not allowed to create a federated share with the same user" : "Не допускается создание федеративного общего ресурса с тем же пользователем",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Не удалось предоставить доступ к «%1$s», не удалось найти %2$s, возможно, сервер не доступен.",
- "Share type %1$s is not valid for %2$s" : "Тип общего доступа «%1$s» недопустим для «%2$s»",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Невозможно установить дату истечения. Общие ресурсы не могут устареть позже %s с момента их публикации.",
- "Cannot set expiration date. Expiration date is in the past" : "Невозможно установить дату окончания. Дата окончания в прошлом.",
- "Sharing failed, because the user %s is the original sharer" : "Не удалось поделиться, потому что пользователь %s владелец этого элемента",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Не удалось предоставить доступ к «%1$s», прав %2$s недостаточно",
- "Sharing %s failed, because resharing is not allowed" : "Не удалось поделиться %s, повторное открытие доступа запрещено",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Не удалось предоставить доступ к «%1$s», механизм предоставления общего доступа не смог определить путь к «%2$s»",
- "Sharing %s failed, because the file could not be found in the file cache" : "Не удалось поделиться %s, элемент не найден в файловом кеше."
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Обычно это можно исправить, предоставив веб-серверу права на запись в каталог приложений или отключив магазин приложений в файле конфигурации. Смотрите %s"
},
"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/lib/l10n/ru.json b/lib/l10n/ru.json
index d7869020c4b..a5f81baf485 100644
--- a/lib/l10n/ru.json
+++ b/lib/l10n/ru.json
@@ -1,9 +1,9 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "Невозможно выполнить запись в каталог «config».",
"This can usually be fixed by giving the webserver write access to the config directory" : "Обычно это можно исправить, предоставив веб-серверу права на запись в каталог конфигурации.",
- "See %s" : "Обратитесь к %s.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Если для файла «config.php» должен быть установлен режим «только чтение», задайте параметру \"config_is_read_only\" значение \"true\".",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Обычно это можно исправить, предоставив веб-серверу права на запись в каталог конфигурации. Изучите %s.",
+ "See %s" : "Обратитесь к %s.",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Обычно это можно исправить, предоставив веб-серверу права на запись в каталог конфигурации.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Если для файла «config.php» должен быть установлен режим «только чтение», задайте параметру \"config_is_read_only\" значение \"true\". Изучите %s.",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Файлы приложения %1$s не были заменены корректно. Удостоверьтесь, что устанавливаемая версия этого приложения совместима с версией сервера.",
"Sample configuration detected" : "Обнаружена конфигурация из примера.",
@@ -20,12 +20,12 @@
"PHP %s or higher is required." : "Требуется PHP версии %s или выше.",
"PHP with a version lower than %s is required." : "Требуется PHP версии ниже %s.",
"%sbit or higher PHP required." : "Требуется PHP с разрядностью %s бит или более.",
- "Following databases are supported: %s" : "Поддерживаются следующие СУБД: %s",
+ "The following databases are supported: %s" : "Поддерживаются следующие базы данных: %s",
"The command line tool %s could not be found" : "Утилита командной строки %s не найдена",
"The library %s is not available." : "Библиотека «%s» недоступна.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Требуется библиотека «%1$s» версии не меньше %2$s, установлена версия %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Требуется библиотека «%1$s» версии не выше %2$s, установлена версия %3$s.",
- "Following platforms are supported: %s" : "Поддерживаются следующие платформы: %s",
+ "The following platforms are supported: %s" : "Поддерживаются следующие платформы: %s",
"Server version %s or higher is required." : "Требуется сервер версии %s или выше.",
"Server version %s or lower is required." : "Требуется сервер версии %s или ниже.",
"Logged in user must be an admin or sub admin" : "Вошедший в систему пользователь должен обладать правами администратора или суб-администратора",
@@ -183,8 +183,9 @@
"Token expired. Please reload page." : "Токен просрочен. Перезагрузите страницу.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Не установлены драйвера баз данных (sqlite, mysql или postgresql)",
"Cannot write into \"config\" directory" : "Запись в каталог «config» невозможна",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Обычно это можно исправить, предоставив веб-серверу права на запись в каталог конфигурации. Изучите %s.",
"Cannot write into \"apps\" directory" : "Запись в каталог «app» невозможна",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Обычно это можно исправить, предоставив веб-серверу права на запись в каталог приложений или отключив магазин приложений в файле конфигурации. Смотрите %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Обычно это можно исправить, предоставив веб-серверу права для записи в каталог приложений или отключив магазин приложений в файле конфигурации.",
"Cannot create \"data\" directory" : "Невозможно создать каталог «data»",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Обычно это можно исправить, предоставив веб-серверу права на запись в корневой каталог. Смотрите %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Разрешения обычно можно исправить, предоставив веб-серверу право на запись в корневой каталог. Смотрите %s.",
@@ -221,10 +222,8 @@
"Storage connection error. %s" : "Ошибка подключения к хранилищу. %s",
"Storage is temporarily not available" : "Хранилище временно недоступно",
"Storage connection timeout. %s" : "Истекло время ожидания подключения к хранилищу. %s",
- "Create" : "Создание",
- "Change" : "Изменение",
- "Delete" : "Удаление",
- "Share" : "Предоставление доступа",
+ "Following databases are supported: %s" : "Поддерживаются следующие СУБД: %s",
+ "Following platforms are supported: %s" : "Поддерживаются следующие платформы: %s",
"Overview" : "Общие сведения",
"Basic settings" : "Основные параметры",
"Sharing" : "Общий доступ",
@@ -232,30 +231,6 @@
"Groupware" : "ПО совместного использования",
"Personal info" : "Личная информация",
"Mobile & desktop" : "Клиенты для ПК и мобильных устройств",
- "Unlimited" : "Неограничено",
- "Verifying" : "Производится проверка",
- "Verifying …" : "Производится проверка…",
- "Verify" : "Проверить",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Не удалось поделиться %s, так как механизм хранения не допускает публикации из элементов типа %i",
- "Sharing %s failed, because the file does not exist" : "Не удалось поделиться %s, файл не существует",
- "Sharing %s failed, because you can not share with yourself" : "Не удалось поделиться %s. Вы не можете поделиться с самим собой.",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Не удалось предоставить общий доступ к «%1$s», пользователь %2$s не существует.",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Не удалось предоставить доступ к «%1$s» , так как пользователь %2$s не состоит в какой-либо группе, в которой состоит %3$s",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Не удалось предоставить общий доступ к «%1$s» , пользователю %2$s такой доступ уже предоставлен.",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Не удалось предоставить доступ к «%1$s», так как этот ресурс уже доступен пользователю %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Не удалось предоставить доступ к «%1$s», группа %2$s не существует",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Не удалось предоставить доступ к «%1$s», пользователь %2$s не является участником группы %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Вам нужно задать пароль для создания публичной ссылки. Разрешены только защищённые ссылки",
- "Sharing %s failed, because sharing with links is not allowed" : "Не удалось поделиться %s, открытие доступа по ссылке запрещено",
- "Not allowed to create a federated share with the same user" : "Не допускается создание федеративного общего ресурса с тем же пользователем",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Не удалось предоставить доступ к «%1$s», не удалось найти %2$s, возможно, сервер не доступен.",
- "Share type %1$s is not valid for %2$s" : "Тип общего доступа «%1$s» недопустим для «%2$s»",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Невозможно установить дату истечения. Общие ресурсы не могут устареть позже %s с момента их публикации.",
- "Cannot set expiration date. Expiration date is in the past" : "Невозможно установить дату окончания. Дата окончания в прошлом.",
- "Sharing failed, because the user %s is the original sharer" : "Не удалось поделиться, потому что пользователь %s владелец этого элемента",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Не удалось предоставить доступ к «%1$s», прав %2$s недостаточно",
- "Sharing %s failed, because resharing is not allowed" : "Не удалось поделиться %s, повторное открытие доступа запрещено",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Не удалось предоставить доступ к «%1$s», механизм предоставления общего доступа не смог определить путь к «%2$s»",
- "Sharing %s failed, because the file could not be found in the file cache" : "Не удалось поделиться %s, элемент не найден в файловом кеше."
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Обычно это можно исправить, предоставив веб-серверу права на запись в каталог приложений или отключив магазин приложений в файле конфигурации. Смотрите %s"
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/lib/l10n/si_LK.js b/lib/l10n/si_LK.js
index 724350f7a79..968604f5eed 100644
--- a/lib/l10n/si_LK.js
+++ b/lib/l10n/si_LK.js
@@ -56,9 +56,6 @@ OC.L10N.register(
"Application is not enabled" : "යෙදුම සක්‍රිය කර නොමැත",
"Authentication error" : "සත්‍යාපන දෝෂයක්",
"Token expired. Please reload page." : "ටෝකනය කල් ඉකුත් වී ඇත. පිටුව නැවුම් කරන්න",
- "Create" : "තනන්න",
- "Delete" : "ඉවත් කරන්න",
- "Share" : "බෙදා හදා ගන්න",
"Sharing" : "හුවමාරු කිරීම"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/si_LK.json b/lib/l10n/si_LK.json
index 2a020e20a57..c063d6ecb9b 100644
--- a/lib/l10n/si_LK.json
+++ b/lib/l10n/si_LK.json
@@ -54,9 +54,6 @@
"Application is not enabled" : "යෙදුම සක්‍රිය කර නොමැත",
"Authentication error" : "සත්‍යාපන දෝෂයක්",
"Token expired. Please reload page." : "ටෝකනය කල් ඉකුත් වී ඇත. පිටුව නැවුම් කරන්න",
- "Create" : "තනන්න",
- "Delete" : "ඉවත් කරන්න",
- "Share" : "බෙදා හදා ගන්න",
"Sharing" : "හුවමාරු කිරීම"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/sk.js b/lib/l10n/sk.js
index 9f54f385de4..f3403a656a8 100644
--- a/lib/l10n/sk.js
+++ b/lib/l10n/sk.js
@@ -3,10 +3,11 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "Nie je možné zapisovat do priečinka \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "To je zvyčajne možné opraviť tým, že udelíte webovému serveru oprávnenie na zápis do priečinka s konfiguráciou.",
- "See %s" : "Pozri %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Alebo, ak preferujete ponechať súbor config.php iba na čítanie, nastavte v ňom parameter \"config_is_read_only\" na true.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "To je zvyčajne možné opraviť tým, že udelíte webovému serveru oprávnenie na zápis do adresára s konfiguráciou. Viď %s",
+ "See %s" : "Pozri %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Toto sa zvyčajne dá opraviť poskytnutím práva webového servera na zápis do priečinka s nastaveniami.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Alebo, ak preferujete ponechať súbor config.php iba na čítanie, nastavte v ňom parameter \"config_is_read_only\" na true. Viď %s",
+ "The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Súbory aplikácie %1$s neboli správne nahradené. Uistite sa, že to je verzia kompatibilná so serverom.",
"Sample configuration detected" : "Detekovaná bola vzorová konfigurácia",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Zistilo sa, že konfigurácia bola skopírovaná zo vzorových súborov. Takáto konfigurácia nie je podporovaná a môže poškodiť vašu inštaláciu. Prečítajte si dokumentáciu pred vykonaním zmien v config.php",
"%1$s and %2$s" : "%1$s a %2$s",
@@ -16,19 +17,33 @@ OC.L10N.register(
"Education Edition" : "Edícia pre výuku",
"Enterprise bundle" : "Enterprise balíček",
"Groupware bundle" : "Balíček groupware",
+ "Hub bundle" : "Sada pre centrum aktivity (hub)",
"Social sharing bundle" : "Balíček sociálneho zdieľania",
"PHP %s or higher is required." : "Požadovaná verzia PHP %s alebo vyššia.",
"PHP with a version lower than %s is required." : "PHP je vyžadované vo vyššej verzii ako %s.",
"%sbit or higher PHP required." : "%sbit alebo vyššie PHP je vyžadované.",
- "Following databases are supported: %s" : "Podporované sú tieto databázy: %s",
+ "The following databases are supported: %s" : "Podporované sú nasledujúce databázy: %s",
"The command line tool %s could not be found" : "Nástroj príkazového riadka %s nebol nájdený",
"The library %s is not available." : "Knižnica %s je nedostupná.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Požadovaná je knižnica %1$s vo vyššej verzii ako %2$s - dostupná verzia %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Požadovaná je knižnica %1$s v nižšej verzii ako %2$s - dostupná verzia %3$s.",
- "Following platforms are supported: %s" : "Podporované sú nasledovné systémy: %s",
+ "The following platforms are supported: %s" : "Podporované sú nasledujúce platformy: %s",
"Server version %s or higher is required." : "Je vyžadovaná verzia servera %s alebo vyššia.",
"Server version %s or lower is required." : "Je vyžadovaná verzia servera %s alebo nižšia.",
+ "Logged in user must be an admin or sub admin" : "Prihlásený používateľ musí byť správcom alebo správcom pre čiastkovú oblasť.",
"Logged in user must be an admin" : "Prihlásený používateľ musí byť správca",
+ "Wiping of device %s has started" : "Začalo sa mazanie zariadenia %s",
+ "Wiping of device »%s« has started" : "Začalo sa mazanie zariadenia „%s“",
+ "»%s« started remote wipe" : "„%s“ začalo mazanie na diaľku",
+ "Device or application »%s« has started the remote wipe process. You will receive another email once the process has finished" : "Zariadenie alebo aplikácia „%s“ začal proces mazania na diaľku. Po dokončení procesu dostanete ďalší e-mail",
+ "Wiping of device %s has finished" : "Mazanie zariadenia %s bolo dokončené.",
+ "Wiping of device »%s« has finished" : "Mazanie zariadenia „%s“ bolo dokončené.",
+ "»%s« finished remote wipe" : "„%s“ dokončilo mazanie na diaľku ",
+ "Device or application »%s« has finished the remote wipe process." : "Zariadenie alebo aplikácia „%s“ dokončilo(a) proces mazania na diaľku.",
+ "Remote wipe started" : "Začalo mazanie na diaľku",
+ "A remote wipe was started on device %s" : "Na zariadeni %s začalo mazanie na diaľku",
+ "Remote wipe finished" : "Mazanie na diaľku bolo dokončené",
+ "The remote wipe on %s has finished" : "Mazanie na diaľku na %s bolo dokončené",
"Authentication" : "Autentifikácia",
"Unknown filetype" : "Neznámy typ súboru",
"Invalid image" : "Chybný obrázok",
@@ -52,6 +67,7 @@ OC.L10N.register(
"_%n minute ago_::_%n minutes ago_" : ["pred %n minútou","pred %n minútami","pred %n minútami","pred %n minútami"],
"in a few seconds" : "o pár sekúnd",
"seconds ago" : "pred sekundami",
+ "Empty file" : "Prázdny súbor",
"Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s ID: %s neexistuje. Povoľte ho prosím vo vašom nastavení aplikácií alebo kontaktujte správcu.",
"File name is a reserved word" : "Názov súboru je rezervované slovo.",
"File name contains at least one invalid character" : "Názov súboru obsahuje nepovolené znaky.",
@@ -73,6 +89,7 @@ OC.L10N.register(
"%s enter the database username." : "Zadajte používateľské meno %s databázy.",
"%s enter the database name." : "Zadajte názov databázy pre %s databázy.",
"%s you may not use dots in the database name" : "V názve databázy %s nemôžete používať bodky",
+ "MySQL username and/or password not valid" : "Neplatné užívateľské meno a/alebo heslo do MySQL",
"You need to enter details of an existing account." : "Musíte zadať údaje existujúceho účtu.",
"Oracle connection could not be established" : "Nie je možné pripojiť sa k Oracle",
"Oracle username and/or password not valid" : "Používateľské meno a/alebo heslo pre Oracle databázu je neplatné",
@@ -153,6 +170,7 @@ OC.L10N.register(
"A valid username must be provided" : "Musíte zadať platné používateľské meno",
"Username contains whitespace at the beginning or at the end" : "Meno používateľa obsahuje na začiatku, alebo na konci medzeru",
"Username must not consist of dots only" : "Používateľské meno sa nesmie skladať len z bodiek",
+ "Username is invalid because files already exist for this user" : "Používateľské meno je neplatné, pretože pre tohto používateľa už existujú súbory",
"A valid password must be provided" : "Musíte zadať platné heslo",
"The username is already being used" : "Meno používateľa je už použité",
"Could not create user" : "Nepodarilo sa vytvoriť používateľa",
@@ -167,8 +185,9 @@ OC.L10N.register(
"Token expired. Please reload page." : "Token vypršal. Obnovte, prosím, stránku.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Ovládače databázy (sqlite, mysql, alebo postgresql) nie sú nainštalované.",
"Cannot write into \"config\" directory" : "Nie je možné zapisovať do priečinka \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "To je zvyčajne možné opraviť tým, že udelíte webovému serveru oprávnenie na zápis do adresára s konfiguráciou. Viď %s",
"Cannot write into \"apps\" directory" : "Nie je možné zapisovať do priečinka \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Toto je zvyčajne možné opraviť tým, že udelíte webovému serveru oprávnenie na zápis do priečinka aplikácií alebo vypnete obchod s aplikáciami v konfiguračnom súbore. Viď %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Toto sa zvyčajne dá opraviť poskytnutím práva webového servera na zápis do priečinka s aplikáciami alebo vypnutím katalógu s aplikáciami v súbore s nastaveniami.",
"Cannot create \"data\" directory" : "Nie je možné vytvoriť priečinok \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "To je zvyčajne možné opraviť tým, že udelíte webovému serveru oprávnenie na zápis do koreňového adresára. Viď %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Oprávnenia je zvyčajne možné opraviť tým, že udelíte webovému serveru oprávnenie na zápis do koreňového priečinka. Viď %s.",
@@ -205,10 +224,8 @@ OC.L10N.register(
"Storage connection error. %s" : "Chyba pripojenia k úložisku. %s",
"Storage is temporarily not available" : "Úložisko je dočasne nedostupné",
"Storage connection timeout. %s" : "Vypršanie pripojenia k úložisku. %s",
- "Create" : "Vytvoriť",
- "Change" : "Zmeniť",
- "Delete" : "Zmazať",
- "Share" : "Sprístupniť",
+ "Following databases are supported: %s" : "Podporované sú tieto databázy: %s",
+ "Following platforms are supported: %s" : "Podporované sú nasledovné systémy: %s",
"Overview" : "Prehľad",
"Basic settings" : "Základné nastavenia",
"Sharing" : "Sprístupnenie",
@@ -216,30 +233,6 @@ OC.L10N.register(
"Groupware" : "Groupware",
"Personal info" : "Osobné informácie",
"Mobile & desktop" : "Mobil a počítač",
- "Unlimited" : "Neobmedzené",
- "Verifying" : "Overovanie",
- "Verifying …" : "Overovanie ...",
- "Verify" : "Overiť",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Sprístupnenie %s zlyhalo, backend nepodporuje typ sprístupnenia %i",
- "Sharing %s failed, because the file does not exist" : "Nie je možné sprístupniť %s, súbor neexistuje",
- "Sharing %s failed, because you can not share with yourself" : "Sprístupnenie %s zlyhalo, nieje možné sprístupniť obsah so sebou samým",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Sprístupnenie %1$s zlyhalo, používateľ %2$s neexistuje",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Sprístupnenie %1$s zlyhalo, používateľ %2$s nie je členom žiadnej skupiny spoločnej s používateľom %3$s",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Sprístupnenie %1$s zlyhalo, pretože táto položka už je prístupná pre %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Sprístupnenie %1$s zlyhalo, táto položka už je používateľovi %2$s prístupná",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Sprístupnenie %1$s zlyhalo, skupina %2$s neexistuje",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Sprístupnenie %1$s zlyhalo, %2$s nie je členom skupiny %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Musíte zadať heslo ak chcete vytvoriť verejný odkaz, lebo iba odkazy chránené heslom sú povolené",
- "Sharing %s failed, because sharing with links is not allowed" : "%s nie je možné sprístupniť, sprístupnenie prostredníctvom odkazu nie je povolené",
- "Not allowed to create a federated share with the same user" : "Nie je možné vytvoriť združené sprístupnenie so sebou samým",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Sprístupňovanie %1$s zlyhalo, nepodarilo sa nájsť %2$s, možno je server dočasne nedostupný.",
- "Share type %1$s is not valid for %2$s" : "Typ sprístupnenia %1$s nie je možný pre %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Sprístupnenie nemôže byť ukončené skôr, ako po %s dňoch.",
- "Cannot set expiration date. Expiration date is in the past" : "Nie je možné nastaviť dátum konca platnosti. Dátum konca platnosti je v minulosti.",
- "Sharing failed, because the user %s is the original sharer" : "Sprístupnenie zlyhalo, pretože používateľ %s je pôvodný spoločný používateľ",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Sprístupnenie %1$s zlyhalo, pretože povolenia prekračujú povolenia udelené %2$s",
- "Sharing %s failed, because resharing is not allowed" : "Nie je možné sprístupniť %s ďalším osobám",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Sprístupnenie %1$s zlyhalo, backend nenašiel zdrojový %2$s",
- "Sharing %s failed, because the file could not be found in the file cache" : "Sprístupnenie %s zlyhalo, pretože súbor sa nenachádza vo vyrovnávacej pamäti súborov"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Toto je zvyčajne možné opraviť tým, že udelíte webovému serveru oprávnenie na zápis do priečinka aplikácií alebo vypnete obchod s aplikáciami v konfiguračnom súbore. Viď %s"
},
"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/lib/l10n/sk.json b/lib/l10n/sk.json
index 03870170f85..8e1291f9f1b 100644
--- a/lib/l10n/sk.json
+++ b/lib/l10n/sk.json
@@ -1,10 +1,11 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "Nie je možné zapisovat do priečinka \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "To je zvyčajne možné opraviť tým, že udelíte webovému serveru oprávnenie na zápis do priečinka s konfiguráciou.",
- "See %s" : "Pozri %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Alebo, ak preferujete ponechať súbor config.php iba na čítanie, nastavte v ňom parameter \"config_is_read_only\" na true.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "To je zvyčajne možné opraviť tým, že udelíte webovému serveru oprávnenie na zápis do adresára s konfiguráciou. Viď %s",
+ "See %s" : "Pozri %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Toto sa zvyčajne dá opraviť poskytnutím práva webového servera na zápis do priečinka s nastaveniami.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Alebo, ak preferujete ponechať súbor config.php iba na čítanie, nastavte v ňom parameter \"config_is_read_only\" na true. Viď %s",
+ "The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Súbory aplikácie %1$s neboli správne nahradené. Uistite sa, že to je verzia kompatibilná so serverom.",
"Sample configuration detected" : "Detekovaná bola vzorová konfigurácia",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Zistilo sa, že konfigurácia bola skopírovaná zo vzorových súborov. Takáto konfigurácia nie je podporovaná a môže poškodiť vašu inštaláciu. Prečítajte si dokumentáciu pred vykonaním zmien v config.php",
"%1$s and %2$s" : "%1$s a %2$s",
@@ -14,19 +15,33 @@
"Education Edition" : "Edícia pre výuku",
"Enterprise bundle" : "Enterprise balíček",
"Groupware bundle" : "Balíček groupware",
+ "Hub bundle" : "Sada pre centrum aktivity (hub)",
"Social sharing bundle" : "Balíček sociálneho zdieľania",
"PHP %s or higher is required." : "Požadovaná verzia PHP %s alebo vyššia.",
"PHP with a version lower than %s is required." : "PHP je vyžadované vo vyššej verzii ako %s.",
"%sbit or higher PHP required." : "%sbit alebo vyššie PHP je vyžadované.",
- "Following databases are supported: %s" : "Podporované sú tieto databázy: %s",
+ "The following databases are supported: %s" : "Podporované sú nasledujúce databázy: %s",
"The command line tool %s could not be found" : "Nástroj príkazového riadka %s nebol nájdený",
"The library %s is not available." : "Knižnica %s je nedostupná.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Požadovaná je knižnica %1$s vo vyššej verzii ako %2$s - dostupná verzia %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Požadovaná je knižnica %1$s v nižšej verzii ako %2$s - dostupná verzia %3$s.",
- "Following platforms are supported: %s" : "Podporované sú nasledovné systémy: %s",
+ "The following platforms are supported: %s" : "Podporované sú nasledujúce platformy: %s",
"Server version %s or higher is required." : "Je vyžadovaná verzia servera %s alebo vyššia.",
"Server version %s or lower is required." : "Je vyžadovaná verzia servera %s alebo nižšia.",
+ "Logged in user must be an admin or sub admin" : "Prihlásený používateľ musí byť správcom alebo správcom pre čiastkovú oblasť.",
"Logged in user must be an admin" : "Prihlásený používateľ musí byť správca",
+ "Wiping of device %s has started" : "Začalo sa mazanie zariadenia %s",
+ "Wiping of device »%s« has started" : "Začalo sa mazanie zariadenia „%s“",
+ "»%s« started remote wipe" : "„%s“ začalo mazanie na diaľku",
+ "Device or application »%s« has started the remote wipe process. You will receive another email once the process has finished" : "Zariadenie alebo aplikácia „%s“ začal proces mazania na diaľku. Po dokončení procesu dostanete ďalší e-mail",
+ "Wiping of device %s has finished" : "Mazanie zariadenia %s bolo dokončené.",
+ "Wiping of device »%s« has finished" : "Mazanie zariadenia „%s“ bolo dokončené.",
+ "»%s« finished remote wipe" : "„%s“ dokončilo mazanie na diaľku ",
+ "Device or application »%s« has finished the remote wipe process." : "Zariadenie alebo aplikácia „%s“ dokončilo(a) proces mazania na diaľku.",
+ "Remote wipe started" : "Začalo mazanie na diaľku",
+ "A remote wipe was started on device %s" : "Na zariadeni %s začalo mazanie na diaľku",
+ "Remote wipe finished" : "Mazanie na diaľku bolo dokončené",
+ "The remote wipe on %s has finished" : "Mazanie na diaľku na %s bolo dokončené",
"Authentication" : "Autentifikácia",
"Unknown filetype" : "Neznámy typ súboru",
"Invalid image" : "Chybný obrázok",
@@ -50,6 +65,7 @@
"_%n minute ago_::_%n minutes ago_" : ["pred %n minútou","pred %n minútami","pred %n minútami","pred %n minútami"],
"in a few seconds" : "o pár sekúnd",
"seconds ago" : "pred sekundami",
+ "Empty file" : "Prázdny súbor",
"Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s ID: %s neexistuje. Povoľte ho prosím vo vašom nastavení aplikácií alebo kontaktujte správcu.",
"File name is a reserved word" : "Názov súboru je rezervované slovo.",
"File name contains at least one invalid character" : "Názov súboru obsahuje nepovolené znaky.",
@@ -71,6 +87,7 @@
"%s enter the database username." : "Zadajte používateľské meno %s databázy.",
"%s enter the database name." : "Zadajte názov databázy pre %s databázy.",
"%s you may not use dots in the database name" : "V názve databázy %s nemôžete používať bodky",
+ "MySQL username and/or password not valid" : "Neplatné užívateľské meno a/alebo heslo do MySQL",
"You need to enter details of an existing account." : "Musíte zadať údaje existujúceho účtu.",
"Oracle connection could not be established" : "Nie je možné pripojiť sa k Oracle",
"Oracle username and/or password not valid" : "Používateľské meno a/alebo heslo pre Oracle databázu je neplatné",
@@ -151,6 +168,7 @@
"A valid username must be provided" : "Musíte zadať platné používateľské meno",
"Username contains whitespace at the beginning or at the end" : "Meno používateľa obsahuje na začiatku, alebo na konci medzeru",
"Username must not consist of dots only" : "Používateľské meno sa nesmie skladať len z bodiek",
+ "Username is invalid because files already exist for this user" : "Používateľské meno je neplatné, pretože pre tohto používateľa už existujú súbory",
"A valid password must be provided" : "Musíte zadať platné heslo",
"The username is already being used" : "Meno používateľa je už použité",
"Could not create user" : "Nepodarilo sa vytvoriť používateľa",
@@ -165,8 +183,9 @@
"Token expired. Please reload page." : "Token vypršal. Obnovte, prosím, stránku.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Ovládače databázy (sqlite, mysql, alebo postgresql) nie sú nainštalované.",
"Cannot write into \"config\" directory" : "Nie je možné zapisovať do priečinka \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "To je zvyčajne možné opraviť tým, že udelíte webovému serveru oprávnenie na zápis do adresára s konfiguráciou. Viď %s",
"Cannot write into \"apps\" directory" : "Nie je možné zapisovať do priečinka \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Toto je zvyčajne možné opraviť tým, že udelíte webovému serveru oprávnenie na zápis do priečinka aplikácií alebo vypnete obchod s aplikáciami v konfiguračnom súbore. Viď %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Toto sa zvyčajne dá opraviť poskytnutím práva webového servera na zápis do priečinka s aplikáciami alebo vypnutím katalógu s aplikáciami v súbore s nastaveniami.",
"Cannot create \"data\" directory" : "Nie je možné vytvoriť priečinok \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "To je zvyčajne možné opraviť tým, že udelíte webovému serveru oprávnenie na zápis do koreňového adresára. Viď %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Oprávnenia je zvyčajne možné opraviť tým, že udelíte webovému serveru oprávnenie na zápis do koreňového priečinka. Viď %s.",
@@ -203,10 +222,8 @@
"Storage connection error. %s" : "Chyba pripojenia k úložisku. %s",
"Storage is temporarily not available" : "Úložisko je dočasne nedostupné",
"Storage connection timeout. %s" : "Vypršanie pripojenia k úložisku. %s",
- "Create" : "Vytvoriť",
- "Change" : "Zmeniť",
- "Delete" : "Zmazať",
- "Share" : "Sprístupniť",
+ "Following databases are supported: %s" : "Podporované sú tieto databázy: %s",
+ "Following platforms are supported: %s" : "Podporované sú nasledovné systémy: %s",
"Overview" : "Prehľad",
"Basic settings" : "Základné nastavenia",
"Sharing" : "Sprístupnenie",
@@ -214,30 +231,6 @@
"Groupware" : "Groupware",
"Personal info" : "Osobné informácie",
"Mobile & desktop" : "Mobil a počítač",
- "Unlimited" : "Neobmedzené",
- "Verifying" : "Overovanie",
- "Verifying …" : "Overovanie ...",
- "Verify" : "Overiť",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Sprístupnenie %s zlyhalo, backend nepodporuje typ sprístupnenia %i",
- "Sharing %s failed, because the file does not exist" : "Nie je možné sprístupniť %s, súbor neexistuje",
- "Sharing %s failed, because you can not share with yourself" : "Sprístupnenie %s zlyhalo, nieje možné sprístupniť obsah so sebou samým",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Sprístupnenie %1$s zlyhalo, používateľ %2$s neexistuje",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Sprístupnenie %1$s zlyhalo, používateľ %2$s nie je členom žiadnej skupiny spoločnej s používateľom %3$s",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Sprístupnenie %1$s zlyhalo, pretože táto položka už je prístupná pre %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Sprístupnenie %1$s zlyhalo, táto položka už je používateľovi %2$s prístupná",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Sprístupnenie %1$s zlyhalo, skupina %2$s neexistuje",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Sprístupnenie %1$s zlyhalo, %2$s nie je členom skupiny %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Musíte zadať heslo ak chcete vytvoriť verejný odkaz, lebo iba odkazy chránené heslom sú povolené",
- "Sharing %s failed, because sharing with links is not allowed" : "%s nie je možné sprístupniť, sprístupnenie prostredníctvom odkazu nie je povolené",
- "Not allowed to create a federated share with the same user" : "Nie je možné vytvoriť združené sprístupnenie so sebou samým",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Sprístupňovanie %1$s zlyhalo, nepodarilo sa nájsť %2$s, možno je server dočasne nedostupný.",
- "Share type %1$s is not valid for %2$s" : "Typ sprístupnenia %1$s nie je možný pre %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Sprístupnenie nemôže byť ukončené skôr, ako po %s dňoch.",
- "Cannot set expiration date. Expiration date is in the past" : "Nie je možné nastaviť dátum konca platnosti. Dátum konca platnosti je v minulosti.",
- "Sharing failed, because the user %s is the original sharer" : "Sprístupnenie zlyhalo, pretože používateľ %s je pôvodný spoločný používateľ",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Sprístupnenie %1$s zlyhalo, pretože povolenia prekračujú povolenia udelené %2$s",
- "Sharing %s failed, because resharing is not allowed" : "Nie je možné sprístupniť %s ďalším osobám",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Sprístupnenie %1$s zlyhalo, backend nenašiel zdrojový %2$s",
- "Sharing %s failed, because the file could not be found in the file cache" : "Sprístupnenie %s zlyhalo, pretože súbor sa nenachádza vo vyrovnávacej pamäti súborov"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Toto je zvyčajne možné opraviť tým, že udelíte webovému serveru oprávnenie na zápis do priečinka aplikácií alebo vypnete obchod s aplikáciami v konfiguračnom súbore. Viď %s"
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/lib/l10n/sl.js b/lib/l10n/sl.js
index 91682f09858..d6e15a26113 100644
--- a/lib/l10n/sl.js
+++ b/lib/l10n/sl.js
@@ -17,10 +17,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Zahtevana je različica PHP %s ali višja.",
"PHP with a version lower than %s is required." : "Zahtevana je različica PHP nižja od %s.",
"%sbit or higher PHP required." : "Zahtevana je %s-bitna različica PHP višja.",
- "Following databases are supported: %s" : "Podprte so navedene podatkovne zbirke: %s",
"The command line tool %s could not be found" : "Orodja ukazne vrstice %s ni mogoče najti",
"The library %s is not available." : "Knjižnica %s ni na voljo.",
- "Following platforms are supported: %s" : "Podprta so okolja: %s",
"Server version %s or higher is required." : "Zahtevana je različica strežnika %s ali višja.",
"Server version %s or lower is required." : "Zahtevana je različica strežnika %s ali nižja.",
"Logged in user must be an admin" : "Prijavljen uporabnik mora biti tudi skrbnik",
@@ -87,6 +85,8 @@ OC.L10N.register(
"%1$s via %2$s" : "%1$s prek %2$s",
"You are not allowed to share %s" : "Omogočanje souporabe %s brez ustreznih dovoljenj ni mogoče.",
"Expiration date is in the past" : "Datum preteka je že mimo!",
+ "%1$s shared »%2$s« with you" : "%1$s vam omogoči souporabo »%2$s«",
+ "%1$s shared »%2$s« with you." : "%1$s vam omogoča souporabo »%2$s«.",
"Click the button below to open it." : "Kliknite na gumb za odpiranje.",
"Could not find category \"%s\"" : "Kategorije »%s« ni mogoče najti.",
"Sunday" : "nedelja",
@@ -177,31 +177,14 @@ OC.L10N.register(
"Storage connection error. %s" : "Napaka povezave do shrambe. %s",
"Storage is temporarily not available" : "Shramba trenutno ni na voljo",
"Storage connection timeout. %s" : "Povezava do shrambe je časovno potekla. %s",
- "Create" : "Ustvari",
- "Change" : "Spremeni",
- "Delete" : "Izbriši",
- "Share" : "Souporaba",
+ "Following databases are supported: %s" : "Podprte so navedene podatkovne zbirke: %s",
+ "Following platforms are supported: %s" : "Podprta so okolja: %s",
"Overview" : "Splošni pregled",
"Basic settings" : "Osnovne nastavitve",
"Sharing" : "Souporaba",
"Security" : "Varnost",
"Groupware" : "Skupinsko delo",
"Personal info" : "Osebni podatki",
- "Mobile & desktop" : "Mobilni in namizni dostop",
- "Unlimited" : "Neomejeno",
- "Verifying" : "Overjanje",
- "Verifying …" : "Poteka overjanje ...",
- "Verify" : "Overi",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Omogočanje souporabe %s je spodletelo, ker ozadnji program ne dopušča souporabe vrste %i.",
- "Sharing %s failed, because the file does not exist" : "Souporaba %s je spodletela, ker ta datoteka ne obstaja",
- "Sharing %s failed, because you can not share with yourself" : "Nastavitev %s souporabe je spodletela, ker souporaba s samim seboj ni mogoča.",
- "You need to provide a password to create a public link, only protected links are allowed" : "Navesti je treba geslo za ustvarjanje javne povezave, saj so dovoljene le zaščitene povezave.",
- "Sharing %s failed, because sharing with links is not allowed" : "Nastavljanje souporabe %s je spodletelo, ker souporaba s povezavo ni dovoljena.",
- "Not allowed to create a federated share with the same user" : "Ni dovoljeno ustvariti souporabe zveznega oblaka z istim uporabnikom",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ni mogoče določiti datuma preteka. Ni dovoljeno, da so mape ali datoteke, dodeljene v souporabo, v souporabi po %s.",
- "Cannot set expiration date. Expiration date is in the past" : "Ni mogoče nastaviti datuma preteka. Ta datum je že preteklost.",
- "Sharing failed, because the user %s is the original sharer" : "Nastavitev souporabe je spodletela, ker je uporabnik %s souporabo izvorno omogočil.",
- "Sharing %s failed, because resharing is not allowed" : "Nastavljanje souporabe %s je spodletelo, ker nadaljnje omogočanje souporabe ni dovoljeno.",
- "Sharing %s failed, because the file could not be found in the file cache" : "Nastavljanje souporabe %s je spodletelo, ker v predpomnilniku zahtevane datoteke ni mogoče najti."
+ "Mobile & desktop" : "Mobilni in namizni dostop"
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/lib/l10n/sl.json b/lib/l10n/sl.json
index 015ec15538b..944cae30ed4 100644
--- a/lib/l10n/sl.json
+++ b/lib/l10n/sl.json
@@ -15,10 +15,8 @@
"PHP %s or higher is required." : "Zahtevana je različica PHP %s ali višja.",
"PHP with a version lower than %s is required." : "Zahtevana je različica PHP nižja od %s.",
"%sbit or higher PHP required." : "Zahtevana je %s-bitna različica PHP višja.",
- "Following databases are supported: %s" : "Podprte so navedene podatkovne zbirke: %s",
"The command line tool %s could not be found" : "Orodja ukazne vrstice %s ni mogoče najti",
"The library %s is not available." : "Knjižnica %s ni na voljo.",
- "Following platforms are supported: %s" : "Podprta so okolja: %s",
"Server version %s or higher is required." : "Zahtevana je različica strežnika %s ali višja.",
"Server version %s or lower is required." : "Zahtevana je različica strežnika %s ali nižja.",
"Logged in user must be an admin" : "Prijavljen uporabnik mora biti tudi skrbnik",
@@ -85,6 +83,8 @@
"%1$s via %2$s" : "%1$s prek %2$s",
"You are not allowed to share %s" : "Omogočanje souporabe %s brez ustreznih dovoljenj ni mogoče.",
"Expiration date is in the past" : "Datum preteka je že mimo!",
+ "%1$s shared »%2$s« with you" : "%1$s vam omogoči souporabo »%2$s«",
+ "%1$s shared »%2$s« with you." : "%1$s vam omogoča souporabo »%2$s«.",
"Click the button below to open it." : "Kliknite na gumb za odpiranje.",
"Could not find category \"%s\"" : "Kategorije »%s« ni mogoče najti.",
"Sunday" : "nedelja",
@@ -175,31 +175,14 @@
"Storage connection error. %s" : "Napaka povezave do shrambe. %s",
"Storage is temporarily not available" : "Shramba trenutno ni na voljo",
"Storage connection timeout. %s" : "Povezava do shrambe je časovno potekla. %s",
- "Create" : "Ustvari",
- "Change" : "Spremeni",
- "Delete" : "Izbriši",
- "Share" : "Souporaba",
+ "Following databases are supported: %s" : "Podprte so navedene podatkovne zbirke: %s",
+ "Following platforms are supported: %s" : "Podprta so okolja: %s",
"Overview" : "Splošni pregled",
"Basic settings" : "Osnovne nastavitve",
"Sharing" : "Souporaba",
"Security" : "Varnost",
"Groupware" : "Skupinsko delo",
"Personal info" : "Osebni podatki",
- "Mobile & desktop" : "Mobilni in namizni dostop",
- "Unlimited" : "Neomejeno",
- "Verifying" : "Overjanje",
- "Verifying …" : "Poteka overjanje ...",
- "Verify" : "Overi",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Omogočanje souporabe %s je spodletelo, ker ozadnji program ne dopušča souporabe vrste %i.",
- "Sharing %s failed, because the file does not exist" : "Souporaba %s je spodletela, ker ta datoteka ne obstaja",
- "Sharing %s failed, because you can not share with yourself" : "Nastavitev %s souporabe je spodletela, ker souporaba s samim seboj ni mogoča.",
- "You need to provide a password to create a public link, only protected links are allowed" : "Navesti je treba geslo za ustvarjanje javne povezave, saj so dovoljene le zaščitene povezave.",
- "Sharing %s failed, because sharing with links is not allowed" : "Nastavljanje souporabe %s je spodletelo, ker souporaba s povezavo ni dovoljena.",
- "Not allowed to create a federated share with the same user" : "Ni dovoljeno ustvariti souporabe zveznega oblaka z istim uporabnikom",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Ni mogoče določiti datuma preteka. Ni dovoljeno, da so mape ali datoteke, dodeljene v souporabo, v souporabi po %s.",
- "Cannot set expiration date. Expiration date is in the past" : "Ni mogoče nastaviti datuma preteka. Ta datum je že preteklost.",
- "Sharing failed, because the user %s is the original sharer" : "Nastavitev souporabe je spodletela, ker je uporabnik %s souporabo izvorno omogočil.",
- "Sharing %s failed, because resharing is not allowed" : "Nastavljanje souporabe %s je spodletelo, ker nadaljnje omogočanje souporabe ni dovoljeno.",
- "Sharing %s failed, because the file could not be found in the file cache" : "Nastavljanje souporabe %s je spodletelo, ker v predpomnilniku zahtevane datoteke ni mogoče najti."
+ "Mobile & desktop" : "Mobilni in namizni dostop"
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
} \ No newline at end of file
diff --git a/lib/l10n/sq.js b/lib/l10n/sq.js
index 17fda62cc63..f20d73a13e4 100644
--- a/lib/l10n/sq.js
+++ b/lib/l10n/sq.js
@@ -4,7 +4,6 @@ OC.L10N.register(
"Cannot write into \"config\" directory!" : "Nuk shkruhet dot te drejtoria \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Zakonisht kjo mund të ndreqet duke i akorduar shërbyesit web të drejta shkrimi mbi drejtorinë e formësimeve",
"See %s" : "Shihni %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Kjo zakonisht mund të rregullohet duke i dhënë serverit të web-it akses shkrimi tek direktoria config. Shih %s",
"Sample configuration detected" : "U gjet formësim shembull",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "U pa se është kopjuar shembulli për formësime. Kjo mund të prishë instalimin tuaj dhe nuk mbulohet. Ju lutemi, lexoni dokumentimin, përpara se të kryeni ndryshime te config.php",
"%1$s and %2$s" : "%1$s dhe %2$s",
@@ -18,10 +17,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "Kërkohet PHP %s ose më sipër.",
"PHP with a version lower than %s is required." : "Lypset PHP me një version më të ulët se sa %s.",
"%sbit or higher PHP required." : "Lypset PHP %sbit ose më i ri.",
- "Following databases are supported: %s" : "Mbulohen bazat vijuese të të dhënave: %s",
"The command line tool %s could not be found" : "Mjeti rresht urdhrash %s s’u gjet dot",
"The library %s is not available." : "Libraria %s s’është e passhme.",
- "Following platforms are supported: %s" : "Mbulohen platformat vijuese: %s",
"Server version %s or higher is required." : "Versioni i serverit kërkohet %s ose më lartë",
"Server version %s or lower is required." : "Versioni i serverit kërkohet %s ose më poshtë",
"Authentication" : "Mirëfilltësim",
@@ -145,8 +142,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "Token-i ka skaduar. Ju lutem ringarkoni faqen.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "S’ka baza të dhënash (sqlite, mysql, ose postgresql) të instaluara.",
"Cannot write into \"config\" directory" : "S’shkruhet dot te drejtoria \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Kjo zakonisht mund të rregullohet duke i dhënë serverit të web-it akses shkrimi tek direktoria config. Shih %s",
"Cannot write into \"apps\" directory" : "S’shkruhet dot te drejtoria \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Zakonisht kjo mund të rregullohet duke i dhënë serverit të web-it akses shkrimi tek direktoria e aplikacioneve ose duke çaktivizuar appstore në skedarin config. Shih %s",
"Cannot create \"data\" directory" : "Nuk mund të krijohet direktoria \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Kjo zakonisht mund të rregullohet duke i dhënë serverit të web-it akses shkrimi tek direktoria rrënjë. Shih %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Zakonisht lejet mund të rregullohen duke i dhënë serverit të web-it akses shkrimi tek direktoria rrënjë. Shih %s.",
@@ -178,28 +175,12 @@ OC.L10N.register(
"Storage connection error. %s" : "Gabim lidhje te depozita. %s",
"Storage is temporarily not available" : "Hapsira ruajtëse nuk është në dispozicion përkohësisht",
"Storage connection timeout. %s" : "Mbarim kohe lidhjeje për depozitën. %s",
- "Create" : "Krijo",
- "Change" : "Ndrysho",
- "Delete" : "Delete",
- "Share" : "Shpërndaje",
+ "Following databases are supported: %s" : "Mbulohen bazat vijuese të të dhënave: %s",
+ "Following platforms are supported: %s" : "Mbulohen platformat vijuese: %s",
"Basic settings" : "Konfigurime bazike",
"Sharing" : "Ndarja",
"Security" : "Siguria",
"Personal info" : "Informacion personal",
- "Unlimited" : "E palimituar",
- "Verifying" : "Duke e verifikuar",
- "Verifying …" : "Duke e verifikuar ...",
- "Verify" : "Verifiko",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Ndarja e %s dështoi, ngaqë pjesa përgjegjëse e shërbyesit nuk lejon ndarje prej llojit %i",
- "Sharing %s failed, because the file does not exist" : "Ndarja e %s me të tjerët dështoi, ngaqë kartela s’ekziston",
- "Sharing %s failed, because you can not share with yourself" : "Ndarja e %s dështoi, ngaqë s’mund të ndani gjëra me vetveten",
- "You need to provide a password to create a public link, only protected links are allowed" : "Lypset të jepni një fjalëkalim që të krijoni një lidhje publike, lejohen vetëm lidhje të mbrojtura",
- "Sharing %s failed, because sharing with links is not allowed" : "Ndarja e %s me të tjerët dështoi, ngaqë nuk lejohet ndarja me lidhje",
- "Not allowed to create a federated share with the same user" : "S’i lejohet të krijojë një ndarje të federuar me të njëjtin përdorues",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "S’caktohet dot data e skadimit. Ndarjet s’mund të skadojnë më vonë se %s pasi të jenë ofruar",
- "Cannot set expiration date. Expiration date is in the past" : "S’caktohet dot data e skadimit. Data e skadimit bie në të kaluarën",
- "Sharing failed, because the user %s is the original sharer" : "Ndarja dështoi, ngaqë përdoruesi %s është ai që e ndau fillimisht",
- "Sharing %s failed, because resharing is not allowed" : "Ndarja e %s me të tjerët dështoi, ngaqë nuk lejohen rindarje",
- "Sharing %s failed, because the file could not be found in the file cache" : "Ndarja e %s me të tjerët dështoi, ngaqë kartela s’u gjet dot te fshehtina e kartelave"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Zakonisht kjo mund të rregullohet duke i dhënë serverit të web-it akses shkrimi tek direktoria e aplikacioneve ose duke çaktivizuar appstore në skedarin config. Shih %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/sq.json b/lib/l10n/sq.json
index 84e182fbf60..c7262358892 100644
--- a/lib/l10n/sq.json
+++ b/lib/l10n/sq.json
@@ -2,7 +2,6 @@
"Cannot write into \"config\" directory!" : "Nuk shkruhet dot te drejtoria \"config\"!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Zakonisht kjo mund të ndreqet duke i akorduar shërbyesit web të drejta shkrimi mbi drejtorinë e formësimeve",
"See %s" : "Shihni %s",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Kjo zakonisht mund të rregullohet duke i dhënë serverit të web-it akses shkrimi tek direktoria config. Shih %s",
"Sample configuration detected" : "U gjet formësim shembull",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "U pa se është kopjuar shembulli për formësime. Kjo mund të prishë instalimin tuaj dhe nuk mbulohet. Ju lutemi, lexoni dokumentimin, përpara se të kryeni ndryshime te config.php",
"%1$s and %2$s" : "%1$s dhe %2$s",
@@ -16,10 +15,8 @@
"PHP %s or higher is required." : "Kërkohet PHP %s ose më sipër.",
"PHP with a version lower than %s is required." : "Lypset PHP me një version më të ulët se sa %s.",
"%sbit or higher PHP required." : "Lypset PHP %sbit ose më i ri.",
- "Following databases are supported: %s" : "Mbulohen bazat vijuese të të dhënave: %s",
"The command line tool %s could not be found" : "Mjeti rresht urdhrash %s s’u gjet dot",
"The library %s is not available." : "Libraria %s s’është e passhme.",
- "Following platforms are supported: %s" : "Mbulohen platformat vijuese: %s",
"Server version %s or higher is required." : "Versioni i serverit kërkohet %s ose më lartë",
"Server version %s or lower is required." : "Versioni i serverit kërkohet %s ose më poshtë",
"Authentication" : "Mirëfilltësim",
@@ -143,8 +140,8 @@
"Token expired. Please reload page." : "Token-i ka skaduar. Ju lutem ringarkoni faqen.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "S’ka baza të dhënash (sqlite, mysql, ose postgresql) të instaluara.",
"Cannot write into \"config\" directory" : "S’shkruhet dot te drejtoria \"config\"",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Kjo zakonisht mund të rregullohet duke i dhënë serverit të web-it akses shkrimi tek direktoria config. Shih %s",
"Cannot write into \"apps\" directory" : "S’shkruhet dot te drejtoria \"apps\"",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Zakonisht kjo mund të rregullohet duke i dhënë serverit të web-it akses shkrimi tek direktoria e aplikacioneve ose duke çaktivizuar appstore në skedarin config. Shih %s",
"Cannot create \"data\" directory" : "Nuk mund të krijohet direktoria \"data\"",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Kjo zakonisht mund të rregullohet duke i dhënë serverit të web-it akses shkrimi tek direktoria rrënjë. Shih %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Zakonisht lejet mund të rregullohen duke i dhënë serverit të web-it akses shkrimi tek direktoria rrënjë. Shih %s.",
@@ -176,28 +173,12 @@
"Storage connection error. %s" : "Gabim lidhje te depozita. %s",
"Storage is temporarily not available" : "Hapsira ruajtëse nuk është në dispozicion përkohësisht",
"Storage connection timeout. %s" : "Mbarim kohe lidhjeje për depozitën. %s",
- "Create" : "Krijo",
- "Change" : "Ndrysho",
- "Delete" : "Delete",
- "Share" : "Shpërndaje",
+ "Following databases are supported: %s" : "Mbulohen bazat vijuese të të dhënave: %s",
+ "Following platforms are supported: %s" : "Mbulohen platformat vijuese: %s",
"Basic settings" : "Konfigurime bazike",
"Sharing" : "Ndarja",
"Security" : "Siguria",
"Personal info" : "Informacion personal",
- "Unlimited" : "E palimituar",
- "Verifying" : "Duke e verifikuar",
- "Verifying …" : "Duke e verifikuar ...",
- "Verify" : "Verifiko",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Ndarja e %s dështoi, ngaqë pjesa përgjegjëse e shërbyesit nuk lejon ndarje prej llojit %i",
- "Sharing %s failed, because the file does not exist" : "Ndarja e %s me të tjerët dështoi, ngaqë kartela s’ekziston",
- "Sharing %s failed, because you can not share with yourself" : "Ndarja e %s dështoi, ngaqë s’mund të ndani gjëra me vetveten",
- "You need to provide a password to create a public link, only protected links are allowed" : "Lypset të jepni një fjalëkalim që të krijoni një lidhje publike, lejohen vetëm lidhje të mbrojtura",
- "Sharing %s failed, because sharing with links is not allowed" : "Ndarja e %s me të tjerët dështoi, ngaqë nuk lejohet ndarja me lidhje",
- "Not allowed to create a federated share with the same user" : "S’i lejohet të krijojë një ndarje të federuar me të njëjtin përdorues",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "S’caktohet dot data e skadimit. Ndarjet s’mund të skadojnë më vonë se %s pasi të jenë ofruar",
- "Cannot set expiration date. Expiration date is in the past" : "S’caktohet dot data e skadimit. Data e skadimit bie në të kaluarën",
- "Sharing failed, because the user %s is the original sharer" : "Ndarja dështoi, ngaqë përdoruesi %s është ai që e ndau fillimisht",
- "Sharing %s failed, because resharing is not allowed" : "Ndarja e %s me të tjerët dështoi, ngaqë nuk lejohen rindarje",
- "Sharing %s failed, because the file could not be found in the file cache" : "Ndarja e %s me të tjerët dështoi, ngaqë kartela s’u gjet dot te fshehtina e kartelave"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Zakonisht kjo mund të rregullohet duke i dhënë serverit të web-it akses shkrimi tek direktoria e aplikacioneve ose duke çaktivizuar appstore në skedarin config. Shih %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/sr.js b/lib/l10n/sr.js
index a2dfc76b0d6..c6281f42b3f 100644
--- a/lib/l10n/sr.js
+++ b/lib/l10n/sr.js
@@ -3,9 +3,9 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "Не могу да уписујем у „config“ директоријум!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Ово се обично може средити давањем права веб серверу да пише у директоријум са подешавањима",
- "See %s" : "Погледајте %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Или, ако пре желите да задржите config.php да је само за читање, поставите опцију \"config_is_read_only\" на true у њему самом.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Ово се обично може средити давањем права писања веб серверу за директоријум са подешавањима. Погледајте %s",
+ "See %s" : "Погледајте %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Ово се обично може средити давањем права веб серверу да пише у директоријум са подешавањима.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Или, ако пре желите да задржите config.php да је само за читање, поставите опцију \"config_is_read_only\" на true у њему самом. Погледајте %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Фајлови апликације „%1$s“ нису правилно замењени. Проверите да ли је верзија компатибилна са сервером.",
"Sample configuration detected" : "Откривен је пример подешавања",
@@ -22,12 +22,10 @@ OC.L10N.register(
"PHP %s or higher is required." : "Потребан је PHP %s или новији.",
"PHP with a version lower than %s is required." : "Потребна је PHP верзија старија од верзије %s.",
"%sbit or higher PHP required." : "Потребна је верзија PHP-а једнака или већа од верзије %s.",
- "Following databases are supported: %s" : "Подржане су следеће базе података: %s",
"The command line tool %s could not be found" : "Алатку командне линије „%s“ није могуће пронаћи",
"The library %s is not available." : "Библиотека „%s“ није доступна.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Потребна је библиотека „%1$s“ верзије веће од %2$s - доступна верзија је %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Потребна је библиотека „%1$s“ верзије ниже од %2$s - доступна верзија је %3$s.",
- "Following platforms are supported: %s" : "Подржане су следеће платформе: %s",
"Server version %s or higher is required." : "Потребна је верзија сервера %s или виша.",
"Server version %s or lower is required." : "Потребна је верзија сервера %s или нижа.",
"Logged in user must be an admin or sub admin" : "Пријављени корисник мора бити администратор или подадминистратор",
@@ -185,8 +183,9 @@ OC.L10N.register(
"Token expired. Please reload page." : "Жетон је истекао. Поново учитајте страницу.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Нема драјвера базе података (скулајт, мајскул или постгрескул).",
"Cannot write into \"config\" directory" : "Не могу уписивати у директоријуму „config“",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Ово се обично може средити давањем права писања веб серверу за директоријум са подешавањима. Погледајте %s",
"Cannot write into \"apps\" directory" : "Не могу уписивати у директоријуму „apps“",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Ово се обично може поправити тако што веб серверу дате приступ уписа за директоријум где су апликације или тако што онемогућите продавницу у config фајлу. Видети %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Ово се обично може поправити давањем права уписа веб серверу директоријум апликација или искуључивањем продавнице апликација у фајлу config file.",
"Cannot create \"data\" directory" : "Не могу да направим \"data\" директоријум",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Ово се обично може поправити тако што веб серверу дате право уписа за корени директоријуму. Видети %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Привилегије се обично могу поправити тако што веб серверу дате право уписа за корени директоријуму. Видети %s",
@@ -223,10 +222,8 @@ OC.L10N.register(
"Storage connection error. %s" : "Грешка приликом повезивања на складиште. %s",
"Storage is temporarily not available" : "Складиште привремено није доступно",
"Storage connection timeout. %s" : "Истекло је време за повезивање на складиште. %s",
- "Create" : "Направи",
- "Change" : "Измени",
- "Delete" : "Обриши",
- "Share" : "Подели",
+ "Following databases are supported: %s" : "Подржане су следеће базе података: %s",
+ "Following platforms are supported: %s" : "Подржане су следеће платформе: %s",
"Overview" : "Преглед",
"Basic settings" : "Основне поставке",
"Sharing" : "Дељење",
@@ -234,30 +231,6 @@ OC.L10N.register(
"Groupware" : "Радни тимови",
"Personal info" : "Лични подаци",
"Mobile & desktop" : "Мобилни и десктоп",
- "Unlimited" : "Неограничено",
- "Verifying" : "Проверавам",
- "Verifying …" : "Проверавам ...",
- "Verify" : "Провери",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Дељење %s није успело зато што позадина не дозвољава дељење од типа %i",
- "Sharing %s failed, because the file does not exist" : "Дељење %s није успело зато што фајл не постоји",
- "Sharing %s failed, because you can not share with yourself" : "Дељење %s није успело зато што не можете да делите са самим собом",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Дељење %1$s није успело зато што не постоји корисник %2$s",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Дељење %1$s није успело зато што корисник %2$s није члан ниједне групе чији је %3$s члан",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Дељење %1$s није успело зато што се ова ставка већ дели са %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Дељење %1$s није успело зато што се ова ставка већ дели са корисником %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Дељење %1$s није успело зато што не постоји група %2$s",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Дељење %1$s није успело зато што %2$s није члан групе %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Морате да обезбедите лозинку за креирање јавне везе, дозвољене су само заштићене везе",
- "Sharing %s failed, because sharing with links is not allowed" : "Дељење %s није успело зато што дељење са везама није дозвољено",
- "Not allowed to create a federated share with the same user" : "Није дозвољено да направите здружено дељење са истим корисником",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Дељење %1$s није успело, није могуће пронаћи %2$s, можда сервер тренутно није доступан.",
- "Share type %1$s is not valid for %2$s" : "Тип фајла за дељење %1$s није исправан за %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Не могу поставити датум трајања. Дељења не могу истицати касније од %s пошто су активирана",
- "Cannot set expiration date. Expiration date is in the past" : "Не могу поставити датум трајања. Датум трајања употребе је у прошлости",
- "Sharing failed, because the user %s is the original sharer" : "Дељење није успело, зато што је корисник %s већ оригинални делилац",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Дељење %1$s није успело зато што дозволе превазилазе дозволе гарантоване за %2$s",
- "Sharing %s failed, because resharing is not allowed" : "Дељење %s није успело зато што даље дељење није дозвољено",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Дељење %1$s није успело зато што позадина дељења за %2$s није могла да нађе извор",
- "Sharing %s failed, because the file could not be found in the file cache" : "Дељење %s није успело зато што фајл није нађен у кешу фајлова"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Ово се обично може поправити тако што веб серверу дате приступ уписа за директоријум где су апликације или тако што онемогућите продавницу у config фајлу. Видети %s"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/lib/l10n/sr.json b/lib/l10n/sr.json
index 47959539160..f78f38bf1c7 100644
--- a/lib/l10n/sr.json
+++ b/lib/l10n/sr.json
@@ -1,9 +1,9 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "Не могу да уписујем у „config“ директоријум!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Ово се обично може средити давањем права веб серверу да пише у директоријум са подешавањима",
- "See %s" : "Погледајте %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Или, ако пре желите да задржите config.php да је само за читање, поставите опцију \"config_is_read_only\" на true у њему самом.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Ово се обично може средити давањем права писања веб серверу за директоријум са подешавањима. Погледајте %s",
+ "See %s" : "Погледајте %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Ово се обично може средити давањем права веб серверу да пише у директоријум са подешавањима.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Или, ако пре желите да задржите config.php да је само за читање, поставите опцију \"config_is_read_only\" на true у њему самом. Погледајте %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Фајлови апликације „%1$s“ нису правилно замењени. Проверите да ли је верзија компатибилна са сервером.",
"Sample configuration detected" : "Откривен је пример подешавања",
@@ -20,12 +20,10 @@
"PHP %s or higher is required." : "Потребан је PHP %s или новији.",
"PHP with a version lower than %s is required." : "Потребна је PHP верзија старија од верзије %s.",
"%sbit or higher PHP required." : "Потребна је верзија PHP-а једнака или већа од верзије %s.",
- "Following databases are supported: %s" : "Подржане су следеће базе података: %s",
"The command line tool %s could not be found" : "Алатку командне линије „%s“ није могуће пронаћи",
"The library %s is not available." : "Библиотека „%s“ није доступна.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Потребна је библиотека „%1$s“ верзије веће од %2$s - доступна верзија је %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Потребна је библиотека „%1$s“ верзије ниже од %2$s - доступна верзија је %3$s.",
- "Following platforms are supported: %s" : "Подржане су следеће платформе: %s",
"Server version %s or higher is required." : "Потребна је верзија сервера %s или виша.",
"Server version %s or lower is required." : "Потребна је верзија сервера %s или нижа.",
"Logged in user must be an admin or sub admin" : "Пријављени корисник мора бити администратор или подадминистратор",
@@ -183,8 +181,9 @@
"Token expired. Please reload page." : "Жетон је истекао. Поново учитајте страницу.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Нема драјвера базе података (скулајт, мајскул или постгрескул).",
"Cannot write into \"config\" directory" : "Не могу уписивати у директоријуму „config“",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Ово се обично може средити давањем права писања веб серверу за директоријум са подешавањима. Погледајте %s",
"Cannot write into \"apps\" directory" : "Не могу уписивати у директоријуму „apps“",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Ово се обично може поправити тако што веб серверу дате приступ уписа за директоријум где су апликације или тако што онемогућите продавницу у config фајлу. Видети %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Ово се обично може поправити давањем права уписа веб серверу директоријум апликација или искуључивањем продавнице апликација у фајлу config file.",
"Cannot create \"data\" directory" : "Не могу да направим \"data\" директоријум",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Ово се обично може поправити тако што веб серверу дате право уписа за корени директоријуму. Видети %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Привилегије се обично могу поправити тако што веб серверу дате право уписа за корени директоријуму. Видети %s",
@@ -221,10 +220,8 @@
"Storage connection error. %s" : "Грешка приликом повезивања на складиште. %s",
"Storage is temporarily not available" : "Складиште привремено није доступно",
"Storage connection timeout. %s" : "Истекло је време за повезивање на складиште. %s",
- "Create" : "Направи",
- "Change" : "Измени",
- "Delete" : "Обриши",
- "Share" : "Подели",
+ "Following databases are supported: %s" : "Подржане су следеће базе података: %s",
+ "Following platforms are supported: %s" : "Подржане су следеће платформе: %s",
"Overview" : "Преглед",
"Basic settings" : "Основне поставке",
"Sharing" : "Дељење",
@@ -232,30 +229,6 @@
"Groupware" : "Радни тимови",
"Personal info" : "Лични подаци",
"Mobile & desktop" : "Мобилни и десктоп",
- "Unlimited" : "Неограничено",
- "Verifying" : "Проверавам",
- "Verifying …" : "Проверавам ...",
- "Verify" : "Провери",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Дељење %s није успело зато што позадина не дозвољава дељење од типа %i",
- "Sharing %s failed, because the file does not exist" : "Дељење %s није успело зато што фајл не постоји",
- "Sharing %s failed, because you can not share with yourself" : "Дељење %s није успело зато што не можете да делите са самим собом",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Дељење %1$s није успело зато што не постоји корисник %2$s",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Дељење %1$s није успело зато што корисник %2$s није члан ниједне групе чији је %3$s члан",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Дељење %1$s није успело зато што се ова ставка већ дели са %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Дељење %1$s није успело зато што се ова ставка већ дели са корисником %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Дељење %1$s није успело зато што не постоји група %2$s",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Дељење %1$s није успело зато што %2$s није члан групе %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Морате да обезбедите лозинку за креирање јавне везе, дозвољене су само заштићене везе",
- "Sharing %s failed, because sharing with links is not allowed" : "Дељење %s није успело зато што дељење са везама није дозвољено",
- "Not allowed to create a federated share with the same user" : "Није дозвољено да направите здружено дељење са истим корисником",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Дељење %1$s није успело, није могуће пронаћи %2$s, можда сервер тренутно није доступан.",
- "Share type %1$s is not valid for %2$s" : "Тип фајла за дељење %1$s није исправан за %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Не могу поставити датум трајања. Дељења не могу истицати касније од %s пошто су активирана",
- "Cannot set expiration date. Expiration date is in the past" : "Не могу поставити датум трајања. Датум трајања употребе је у прошлости",
- "Sharing failed, because the user %s is the original sharer" : "Дељење није успело, зато што је корисник %s већ оригинални делилац",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Дељење %1$s није успело зато што дозволе превазилазе дозволе гарантоване за %2$s",
- "Sharing %s failed, because resharing is not allowed" : "Дељење %s није успело зато што даље дељење није дозвољено",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Дељење %1$s није успело зато што позадина дељења за %2$s није могла да нађе извор",
- "Sharing %s failed, because the file could not be found in the file cache" : "Дељење %s није успело зато што фајл није нађен у кешу фајлова"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Ово се обично може поправити тако што веб серверу дате приступ уписа за директоријум где су апликације или тако што онемогућите продавницу у config фајлу. Видети %s"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/lib/l10n/sr@latin.js b/lib/l10n/sr@latin.js
index b0e52b1b82f..8527fe585d9 100644
--- a/lib/l10n/sr@latin.js
+++ b/lib/l10n/sr@latin.js
@@ -13,9 +13,6 @@ OC.L10N.register(
"Thursday" : "Četvrtak",
"Friday" : "Petak",
"Saturday" : "Subota",
- "Create" : "Napravi",
- "Delete" : "Delete",
- "Share" : "Deljenje",
"Sharing" : "Deljenje"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/lib/l10n/sr@latin.json b/lib/l10n/sr@latin.json
index 2e06135de3c..ad8a29cd573 100644
--- a/lib/l10n/sr@latin.json
+++ b/lib/l10n/sr@latin.json
@@ -11,9 +11,6 @@
"Thursday" : "Četvrtak",
"Friday" : "Petak",
"Saturday" : "Subota",
- "Create" : "Napravi",
- "Delete" : "Delete",
- "Share" : "Deljenje",
"Sharing" : "Deljenje"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/lib/l10n/sv.js b/lib/l10n/sv.js
index 0abd837e0ca..1b694852903 100644
--- a/lib/l10n/sv.js
+++ b/lib/l10n/sv.js
@@ -2,10 +2,10 @@ OC.L10N.register(
"lib",
{
"Cannot write into \"config\" directory!" : "Kan inte skriva till \"config\" katalogen!",
- "This can usually be fixed by giving the webserver write access to the config directory" : "Detta kan vanligtvis åtgärdas genom att ge skrivrättigheter till config-katalogen",
- "See %s" : "Se %s",
+ "This can usually be fixed by giving the webserver write access to the config directory" : "Detta kan vanligtvis åtgärdas genom att ge webservern skrivåtkomst till config-katalogen",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Eller, om du föredrar att behålla config.php skrivskyddad, sätt alternativet \"config_is_read_only\" till true i den.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Detta fixas vanligtvis genom att ge webbservern skrivrättigheter till konfigureringsmappen. Se %s",
+ "See %s" : "Se %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Detta kan vanligtvis åtgärdas genom att ge webbservern skrivåtkomst till config-katalogen.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Eller, om du föredrar att behålla config.php skrivskyddad, sätt alternativet \"config_is_read_only\" till true i den. Se %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Filerna i appen %1$s ersattes inte korrekt. Kontrollera att det är en version som är kompatibel med servern.",
"Sample configuration detected" : "Exempel-konfiguration detekterad",
@@ -21,12 +21,12 @@ OC.L10N.register(
"PHP %s or higher is required." : "PHP %s eller högre krävs.",
"PHP with a version lower than %s is required." : "PHP med version lägre än %s krävs.",
"%sbit or higher PHP required." : "%sbit eller nyare PHP-version krävs.",
- "Following databases are supported: %s" : "Följande databastyper stöds: %s",
+ "The following databases are supported: %s" : "Följande databaser stöds: %s",
"The command line tool %s could not be found" : "Kommandoradsverktyget %s hittades inte.",
"The library %s is not available." : "Biblioteket %s är inte tillgängligt.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Bibliotek %1$s med en högre version än %2$s krävs - tillgänglig version %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Bibliotek %1$s med en lägre version än %2$s krävs - tillgänglig version %3$s.",
- "Following platforms are supported: %s" : "Följande plattformar stöds: %s",
+ "The following platforms are supported: %s" : "Följande plattformar stöds: %s",
"Server version %s or higher is required." : "Serverversion %s eller nyare krävs.",
"Server version %s or lower is required." : "Serverversion %s eller äldre krävs.",
"Logged in user must be an admin or sub admin" : "Inloggad användare måste vara administratör eller del-administratör",
@@ -94,7 +94,7 @@ OC.L10N.register(
"Oracle username and/or password not valid" : "Oracle-användarnamnet och/eller lösenordet är felaktigt",
"PostgreSQL username and/or password not valid" : "PostgreSQL-användarnamnet och/eller lösenordet är felaktigt",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X stöds inte och %s kommer inte att fungera korrekt på denna plattform. Använd på egen risk!",
- "For the best results, please consider using a GNU/Linux server instead." : "För bästa resultat, överväg att använda en GNU/Linux-server istället.",
+ "For the best results, please consider using a GNU/Linux server instead." : "För bästa resultat, vänligen överväg att använda en GNU/Linux-server istället.",
"It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Det verkar som om denna %s instans körs på en 32-bitars PHP miljö och open_basedir har konfigurerats i php.ini. Detta kommer att leda till problem med filer över 4 GB och är verkligen inte rekommenderat!",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Vänligen ta bort open_basedir-inställningen i din php.ini eller växla till 64-bitars PHP.",
"Set an admin username." : "Ange ett användarnamn för administratören.",
@@ -184,10 +184,11 @@ OC.L10N.register(
"Token expired. Please reload page." : "Token har löpt ut. Vänligen uppdatera sidan.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Inga databasdrivrutiner (sqlite, mysql, eller postgresql) installerade.",
"Cannot write into \"config\" directory" : "Kan inte skriva till \"config\" katalogen",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Detta kan vanligtvis åtgärda genom att ge webbservern skrivåtkomst till konfigureringsmappen. Se %s",
"Cannot write into \"apps\" directory" : "Kan inte skriva till \"apps\" katalogen!",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Detta kan vanligtvis lösas genom att ge webbservern skrivåtkomst till mappen för appar eller genom att inaktivera appbutiken i konfigurationsfilen. Se %s",
- "Cannot create \"data\" directory" : "Kan inte skapa \"datamapp\"",
- "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Detta kan vanligtvis fixas genom att ge webbservern skrivåtkomst till rotkatalogen. Se %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Detta kan vanligtvis åtgärdas genom att ge webbservern skrivrättigheter till applikationskatalogen eller stänga av app-butiken i konfigurationsfilen.",
+ "Cannot create \"data\" directory" : "Kan inte skapa \"data\"-mapp",
+ "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Detta kan vanligtvis åtgärda genom att ge webbservern skrivåtkomst till rotkatalogen. Se %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Rättigheter kan vanligtvis fixas genom att ge webbservern skrivåtkomst till rotkatalogen. Se %s.",
"Setting locale to %s failed" : "Sätta locale till %s misslyckades",
"Please install one of these locales on your system and restart your webserver." : "Vänligen Installera en av dessa språk på ditt system och starta om webbservern.",
@@ -222,10 +223,8 @@ OC.L10N.register(
"Storage connection error. %s" : "Lagringsutrymme lyckas inte ansluta. %s",
"Storage is temporarily not available" : "Lagringsutrymme är för tillfället inte tillgängligt",
"Storage connection timeout. %s" : "Lagringsutrymme lyckas inte ansluta \"timeout\". %s",
- "Create" : "Skapa",
- "Change" : "Ändra",
- "Delete" : "Radera",
- "Share" : "Dela",
+ "Following databases are supported: %s" : "Följande databastyper stöds: %s",
+ "Following platforms are supported: %s" : "Följande plattformar stöds: %s",
"Overview" : "Översikt",
"Basic settings" : "Generella inställningar",
"Sharing" : "Delning",
@@ -233,30 +232,6 @@ OC.L10N.register(
"Groupware" : "Grupprogram",
"Personal info" : "Personlig information",
"Mobile & desktop" : "Mobil & skrivbord",
- "Unlimited" : "Obegränsad",
- "Verifying" : "Verifierar",
- "Verifying …" : "Verifierar ...",
- "Verify" : "Verifiera",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Misslyckades dela ut %s då backend inte tillåter delningar från typ %i",
- "Sharing %s failed, because the file does not exist" : "Delning av %s misslyckades på grund av att filen inte existerar",
- "Sharing %s failed, because you can not share with yourself" : "Delning %s misslyckades därför att du inte kan dela med dig själv.",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Delning %1$s misslyckades för att användaren %2$s inte finns",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Delning %1$s misslyckades för att användaren %2$s inte är medlem i några grupper som %3$s är medlem i",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Delning %1$s misslyckades, är redan delad med %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Delning %1$s misslyckades, är redan delad med användare %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Delning %1$s misslyckades för att gruppen %2$s finns inte",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Delning %1$s misslyckades för att %2$s är inte medlem i gruppen %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Du måste ange ett lösenord för att skapa en offentlig länk, endast skyddade länkar är tillåtna",
- "Sharing %s failed, because sharing with links is not allowed" : "Delning %s misslyckades därför att delning av länkar inte är tillåtet",
- "Not allowed to create a federated share with the same user" : "Inte tillåtet att skapa en federerad delning med samma användare",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Delning %1$s misslyckades, kan inte hitta %2$s, servern är kanske inte åtkomlig för närvarande.",
- "Share type %1$s is not valid for %2$s" : "Delningstyp %1$s är inte giltig för %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Kan inte sätta utgångsdatum. Utdelningar kan inte utgå senare än %s efter de har delats ut",
- "Cannot set expiration date. Expiration date is in the past" : "Kan inte sätta utgångsdatum. Utgångsdatumet är i det förflutna.",
- "Sharing failed, because the user %s is the original sharer" : "Delning misslyckades eftersom användaren %s redan är den som har delat detta.",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Delning %1$s misslyckades därför att rättigheterna överskrider de rättigheter som tilldelats %2$s",
- "Sharing %s failed, because resharing is not allowed" : "Delning %s misslyckades därför att vidaredelning inte är tillåten",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Delning %1$s misslyckades därför att delningsgränssnittet för %2$s inte kunde hitta sin källa",
- "Sharing %s failed, because the file could not be found in the file cache" : "Delning %s misslyckades därför att filen inte kunde hittas i filcachen"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Detta kan vanligtvis lösas genom att ge webbservern skrivåtkomst till mappen för appar eller genom att inaktivera appbutiken i konfigurationsfilen. Se %s"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/sv.json b/lib/l10n/sv.json
index e75fd47f453..59f4fda3ead 100644
--- a/lib/l10n/sv.json
+++ b/lib/l10n/sv.json
@@ -1,9 +1,9 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "Kan inte skriva till \"config\" katalogen!",
- "This can usually be fixed by giving the webserver write access to the config directory" : "Detta kan vanligtvis åtgärdas genom att ge skrivrättigheter till config-katalogen",
- "See %s" : "Se %s",
+ "This can usually be fixed by giving the webserver write access to the config directory" : "Detta kan vanligtvis åtgärdas genom att ge webservern skrivåtkomst till config-katalogen",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Eller, om du föredrar att behålla config.php skrivskyddad, sätt alternativet \"config_is_read_only\" till true i den.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Detta fixas vanligtvis genom att ge webbservern skrivrättigheter till konfigureringsmappen. Se %s",
+ "See %s" : "Se %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Detta kan vanligtvis åtgärdas genom att ge webbservern skrivåtkomst till config-katalogen.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Eller, om du föredrar att behålla config.php skrivskyddad, sätt alternativet \"config_is_read_only\" till true i den. Se %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Filerna i appen %1$s ersattes inte korrekt. Kontrollera att det är en version som är kompatibel med servern.",
"Sample configuration detected" : "Exempel-konfiguration detekterad",
@@ -19,12 +19,12 @@
"PHP %s or higher is required." : "PHP %s eller högre krävs.",
"PHP with a version lower than %s is required." : "PHP med version lägre än %s krävs.",
"%sbit or higher PHP required." : "%sbit eller nyare PHP-version krävs.",
- "Following databases are supported: %s" : "Följande databastyper stöds: %s",
+ "The following databases are supported: %s" : "Följande databaser stöds: %s",
"The command line tool %s could not be found" : "Kommandoradsverktyget %s hittades inte.",
"The library %s is not available." : "Biblioteket %s är inte tillgängligt.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "Bibliotek %1$s med en högre version än %2$s krävs - tillgänglig version %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "Bibliotek %1$s med en lägre version än %2$s krävs - tillgänglig version %3$s.",
- "Following platforms are supported: %s" : "Följande plattformar stöds: %s",
+ "The following platforms are supported: %s" : "Följande plattformar stöds: %s",
"Server version %s or higher is required." : "Serverversion %s eller nyare krävs.",
"Server version %s or lower is required." : "Serverversion %s eller äldre krävs.",
"Logged in user must be an admin or sub admin" : "Inloggad användare måste vara administratör eller del-administratör",
@@ -92,7 +92,7 @@
"Oracle username and/or password not valid" : "Oracle-användarnamnet och/eller lösenordet är felaktigt",
"PostgreSQL username and/or password not valid" : "PostgreSQL-användarnamnet och/eller lösenordet är felaktigt",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X stöds inte och %s kommer inte att fungera korrekt på denna plattform. Använd på egen risk!",
- "For the best results, please consider using a GNU/Linux server instead." : "För bästa resultat, överväg att använda en GNU/Linux-server istället.",
+ "For the best results, please consider using a GNU/Linux server instead." : "För bästa resultat, vänligen överväg att använda en GNU/Linux-server istället.",
"It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Det verkar som om denna %s instans körs på en 32-bitars PHP miljö och open_basedir har konfigurerats i php.ini. Detta kommer att leda till problem med filer över 4 GB och är verkligen inte rekommenderat!",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Vänligen ta bort open_basedir-inställningen i din php.ini eller växla till 64-bitars PHP.",
"Set an admin username." : "Ange ett användarnamn för administratören.",
@@ -182,10 +182,11 @@
"Token expired. Please reload page." : "Token har löpt ut. Vänligen uppdatera sidan.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Inga databasdrivrutiner (sqlite, mysql, eller postgresql) installerade.",
"Cannot write into \"config\" directory" : "Kan inte skriva till \"config\" katalogen",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Detta kan vanligtvis åtgärda genom att ge webbservern skrivåtkomst till konfigureringsmappen. Se %s",
"Cannot write into \"apps\" directory" : "Kan inte skriva till \"apps\" katalogen!",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Detta kan vanligtvis lösas genom att ge webbservern skrivåtkomst till mappen för appar eller genom att inaktivera appbutiken i konfigurationsfilen. Se %s",
- "Cannot create \"data\" directory" : "Kan inte skapa \"datamapp\"",
- "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Detta kan vanligtvis fixas genom att ge webbservern skrivåtkomst till rotkatalogen. Se %s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Detta kan vanligtvis åtgärdas genom att ge webbservern skrivrättigheter till applikationskatalogen eller stänga av app-butiken i konfigurationsfilen.",
+ "Cannot create \"data\" directory" : "Kan inte skapa \"data\"-mapp",
+ "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Detta kan vanligtvis åtgärda genom att ge webbservern skrivåtkomst till rotkatalogen. Se %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Rättigheter kan vanligtvis fixas genom att ge webbservern skrivåtkomst till rotkatalogen. Se %s.",
"Setting locale to %s failed" : "Sätta locale till %s misslyckades",
"Please install one of these locales on your system and restart your webserver." : "Vänligen Installera en av dessa språk på ditt system och starta om webbservern.",
@@ -220,10 +221,8 @@
"Storage connection error. %s" : "Lagringsutrymme lyckas inte ansluta. %s",
"Storage is temporarily not available" : "Lagringsutrymme är för tillfället inte tillgängligt",
"Storage connection timeout. %s" : "Lagringsutrymme lyckas inte ansluta \"timeout\". %s",
- "Create" : "Skapa",
- "Change" : "Ändra",
- "Delete" : "Radera",
- "Share" : "Dela",
+ "Following databases are supported: %s" : "Följande databastyper stöds: %s",
+ "Following platforms are supported: %s" : "Följande plattformar stöds: %s",
"Overview" : "Översikt",
"Basic settings" : "Generella inställningar",
"Sharing" : "Delning",
@@ -231,30 +230,6 @@
"Groupware" : "Grupprogram",
"Personal info" : "Personlig information",
"Mobile & desktop" : "Mobil & skrivbord",
- "Unlimited" : "Obegränsad",
- "Verifying" : "Verifierar",
- "Verifying …" : "Verifierar ...",
- "Verify" : "Verifiera",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Misslyckades dela ut %s då backend inte tillåter delningar från typ %i",
- "Sharing %s failed, because the file does not exist" : "Delning av %s misslyckades på grund av att filen inte existerar",
- "Sharing %s failed, because you can not share with yourself" : "Delning %s misslyckades därför att du inte kan dela med dig själv.",
- "Sharing %1$s failed, because the user %2$s does not exist" : "Delning %1$s misslyckades för att användaren %2$s inte finns",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "Delning %1$s misslyckades för att användaren %2$s inte är medlem i några grupper som %3$s är medlem i",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "Delning %1$s misslyckades, är redan delad med %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "Delning %1$s misslyckades, är redan delad med användare %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "Delning %1$s misslyckades för att gruppen %2$s finns inte",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "Delning %1$s misslyckades för att %2$s är inte medlem i gruppen %3$s",
- "You need to provide a password to create a public link, only protected links are allowed" : "Du måste ange ett lösenord för att skapa en offentlig länk, endast skyddade länkar är tillåtna",
- "Sharing %s failed, because sharing with links is not allowed" : "Delning %s misslyckades därför att delning av länkar inte är tillåtet",
- "Not allowed to create a federated share with the same user" : "Inte tillåtet att skapa en federerad delning med samma användare",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "Delning %1$s misslyckades, kan inte hitta %2$s, servern är kanske inte åtkomlig för närvarande.",
- "Share type %1$s is not valid for %2$s" : "Delningstyp %1$s är inte giltig för %2$s",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Kan inte sätta utgångsdatum. Utdelningar kan inte utgå senare än %s efter de har delats ut",
- "Cannot set expiration date. Expiration date is in the past" : "Kan inte sätta utgångsdatum. Utgångsdatumet är i det förflutna.",
- "Sharing failed, because the user %s is the original sharer" : "Delning misslyckades eftersom användaren %s redan är den som har delat detta.",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "Delning %1$s misslyckades därför att rättigheterna överskrider de rättigheter som tilldelats %2$s",
- "Sharing %s failed, because resharing is not allowed" : "Delning %s misslyckades därför att vidaredelning inte är tillåten",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "Delning %1$s misslyckades därför att delningsgränssnittet för %2$s inte kunde hitta sin källa",
- "Sharing %s failed, because the file could not be found in the file cache" : "Delning %s misslyckades därför att filen inte kunde hittas i filcachen"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Detta kan vanligtvis lösas genom att ge webbservern skrivåtkomst till mappen för appar eller genom att inaktivera appbutiken i konfigurationsfilen. Se %s"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/ta_LK.js b/lib/l10n/ta_LK.js
index 186a5e120d5..d5006d7ee2d 100644
--- a/lib/l10n/ta_LK.js
+++ b/lib/l10n/ta_LK.js
@@ -53,9 +53,6 @@ OC.L10N.register(
"Dec." : "மார்கழி",
"Application is not enabled" : "செயலி இயலுமைப்படுத்தப்படவில்லை",
"Authentication error" : "அத்தாட்சிப்படுத்தலில் வழு",
- "Token expired. Please reload page." : "அடையாளவில்லை காலாவதியாகிவிட்டது. தயவுசெய்து பக்கத்தை மீள் ஏற்றுக.",
- "Create" : "உருவாக்குக",
- "Delete" : "நீக்குக",
- "Share" : "பகிர்வு"
+ "Token expired. Please reload page." : "அடையாளவில்லை காலாவதியாகிவிட்டது. தயவுசெய்து பக்கத்தை மீள் ஏற்றுக."
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/ta_LK.json b/lib/l10n/ta_LK.json
index 068635497e5..eaf2b0c32fe 100644
--- a/lib/l10n/ta_LK.json
+++ b/lib/l10n/ta_LK.json
@@ -51,9 +51,6 @@
"Dec." : "மார்கழி",
"Application is not enabled" : "செயலி இயலுமைப்படுத்தப்படவில்லை",
"Authentication error" : "அத்தாட்சிப்படுத்தலில் வழு",
- "Token expired. Please reload page." : "அடையாளவில்லை காலாவதியாகிவிட்டது. தயவுசெய்து பக்கத்தை மீள் ஏற்றுக.",
- "Create" : "உருவாக்குக",
- "Delete" : "நீக்குக",
- "Share" : "பகிர்வு"
+ "Token expired. Please reload page." : "அடையாளவில்லை காலாவதியாகிவிட்டது. தயவுசெய்து பக்கத்தை மீள் ஏற்றுக."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/th.js b/lib/l10n/th.js
index 1e11e04148a..dac64f8054d 100644
--- a/lib/l10n/th.js
+++ b/lib/l10n/th.js
@@ -9,10 +9,8 @@ OC.L10N.register(
"PHP %s or higher is required." : "จำเป็นต้องมี PHP รุ่น %s หรือที่สูงกว่า ",
"PHP with a version lower than %s is required." : "รุ่น PHP ของคุณต่ำกว่า %s",
"%sbit or higher PHP required." : "%sบิต หรือ PHP จะต้องเป็นรุ่นสูงกว่าที่กำหนด",
- "Following databases are supported: %s" : "ฐานข้อมูลต่อไปนี้ได้รับการสนับสนุน: %s",
"The command line tool %s could not be found" : "ไม่พบเครื่องมือบรรทัดคำสั่ง %s ",
"The library %s is not available." : "ไลบรารี %s ไม่สามารถใช้ได้",
- "Following platforms are supported: %s" : "แพลตฟอร์มต่อไปนี้ได้รับการสนับสนุน: %s",
"Authentication" : "รับรองความถูกต้อง",
"Unknown filetype" : "ไม่รู้จักชนิดของไฟล์",
"Invalid image" : "รูปภาพไม่ถูกต้อง",
@@ -138,22 +136,9 @@ OC.L10N.register(
"Storage incomplete configuration. %s" : "การตั้งค่าการจัดเก็บข้อมูลไม่สำเร็จ %s",
"Storage connection error. %s" : "ข้อผิดพลาดการเชื่อมต่อพื้นที่จัดเก็บข้อมูล %s",
"Storage connection timeout. %s" : "หมดเวลาการเชื่อมต่อพื้นที่จัดเก็บข้อมูล %s",
- "Create" : "สร้าง",
- "Delete" : "ลบ",
- "Share" : "แชร์",
+ "Following databases are supported: %s" : "ฐานข้อมูลต่อไปนี้ได้รับการสนับสนุน: %s",
+ "Following platforms are supported: %s" : "แพลตฟอร์มต่อไปนี้ได้รับการสนับสนุน: %s",
"Sharing" : "แชร์ข้อมูล",
- "Personal info" : "ข้อมูลส่วนบุคคล",
- "Unlimited" : "ไม่จำกัด",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "การแชร์ %s ล้มเหลวเพราะแบ็กเอนด์ไม่อนุญาตให้แชร์จากไฟล์ประเภท %i",
- "Sharing %s failed, because the file does not exist" : "การแชร์ %s ล้มเหลวเพราะไม่มีไฟล์นี้อยู่",
- "Sharing %s failed, because you can not share with yourself" : "การแขร์ %s ล้มเหลวเพราะคุณไม่สามารถแชร์ให้กับตัวเอง",
- "You need to provide a password to create a public link, only protected links are allowed" : "คุณจำเป็นต้องระบุรหัสผ่านเพื่อสร้างลิงค์สาธารณะ, ลิงค์ที่มีการป้องกันเท่านั้นที่ได้รับอนุญาต",
- "Sharing %s failed, because sharing with links is not allowed" : "การแชร์ %s ล้มเหลวเพราะมีการแชร์ลิงค์ไม่ได้รับอนุญาต",
- "Not allowed to create a federated share with the same user" : "ไม่อนุญาตให้สร้างแชร์สหพันธ์กับผู้ใช้เดียวกัน",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "ไม่สามารถตั้งค่าวันหมดอายุ การแชร์ไม่สามารถหมดอายุน้อยกว่า %s หลังจากที่พวกเขาได้รับการแชร์",
- "Cannot set expiration date. Expiration date is in the past" : "ไม่สามารถตั้งค่าวันหมดอายุ เพราะวันหมดอายุผ่านไปแล้ว",
- "Sharing failed, because the user %s is the original sharer" : "การแชร์ล้มเหลวเพราะผู้ใช้ %s เป็นต้นฉบับการแชร์นี้",
- "Sharing %s failed, because resharing is not allowed" : "การแชร์ %s ล้มเหลวเพราะการแชร์ต่อไม่ได้รับอนุญาต",
- "Sharing %s failed, because the file could not be found in the file cache" : "การแชร์ %s ล้มเหลวเพราะไม่พบไฟล์ในแคชไฟล์"
+ "Personal info" : "ข้อมูลส่วนบุคคล"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/th.json b/lib/l10n/th.json
index cb8cbfd0691..ea196acf3ca 100644
--- a/lib/l10n/th.json
+++ b/lib/l10n/th.json
@@ -7,10 +7,8 @@
"PHP %s or higher is required." : "จำเป็นต้องมี PHP รุ่น %s หรือที่สูงกว่า ",
"PHP with a version lower than %s is required." : "รุ่น PHP ของคุณต่ำกว่า %s",
"%sbit or higher PHP required." : "%sบิต หรือ PHP จะต้องเป็นรุ่นสูงกว่าที่กำหนด",
- "Following databases are supported: %s" : "ฐานข้อมูลต่อไปนี้ได้รับการสนับสนุน: %s",
"The command line tool %s could not be found" : "ไม่พบเครื่องมือบรรทัดคำสั่ง %s ",
"The library %s is not available." : "ไลบรารี %s ไม่สามารถใช้ได้",
- "Following platforms are supported: %s" : "แพลตฟอร์มต่อไปนี้ได้รับการสนับสนุน: %s",
"Authentication" : "รับรองความถูกต้อง",
"Unknown filetype" : "ไม่รู้จักชนิดของไฟล์",
"Invalid image" : "รูปภาพไม่ถูกต้อง",
@@ -136,22 +134,9 @@
"Storage incomplete configuration. %s" : "การตั้งค่าการจัดเก็บข้อมูลไม่สำเร็จ %s",
"Storage connection error. %s" : "ข้อผิดพลาดการเชื่อมต่อพื้นที่จัดเก็บข้อมูล %s",
"Storage connection timeout. %s" : "หมดเวลาการเชื่อมต่อพื้นที่จัดเก็บข้อมูล %s",
- "Create" : "สร้าง",
- "Delete" : "ลบ",
- "Share" : "แชร์",
+ "Following databases are supported: %s" : "ฐานข้อมูลต่อไปนี้ได้รับการสนับสนุน: %s",
+ "Following platforms are supported: %s" : "แพลตฟอร์มต่อไปนี้ได้รับการสนับสนุน: %s",
"Sharing" : "แชร์ข้อมูล",
- "Personal info" : "ข้อมูลส่วนบุคคล",
- "Unlimited" : "ไม่จำกัด",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "การแชร์ %s ล้มเหลวเพราะแบ็กเอนด์ไม่อนุญาตให้แชร์จากไฟล์ประเภท %i",
- "Sharing %s failed, because the file does not exist" : "การแชร์ %s ล้มเหลวเพราะไม่มีไฟล์นี้อยู่",
- "Sharing %s failed, because you can not share with yourself" : "การแขร์ %s ล้มเหลวเพราะคุณไม่สามารถแชร์ให้กับตัวเอง",
- "You need to provide a password to create a public link, only protected links are allowed" : "คุณจำเป็นต้องระบุรหัสผ่านเพื่อสร้างลิงค์สาธารณะ, ลิงค์ที่มีการป้องกันเท่านั้นที่ได้รับอนุญาต",
- "Sharing %s failed, because sharing with links is not allowed" : "การแชร์ %s ล้มเหลวเพราะมีการแชร์ลิงค์ไม่ได้รับอนุญาต",
- "Not allowed to create a federated share with the same user" : "ไม่อนุญาตให้สร้างแชร์สหพันธ์กับผู้ใช้เดียวกัน",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "ไม่สามารถตั้งค่าวันหมดอายุ การแชร์ไม่สามารถหมดอายุน้อยกว่า %s หลังจากที่พวกเขาได้รับการแชร์",
- "Cannot set expiration date. Expiration date is in the past" : "ไม่สามารถตั้งค่าวันหมดอายุ เพราะวันหมดอายุผ่านไปแล้ว",
- "Sharing failed, because the user %s is the original sharer" : "การแชร์ล้มเหลวเพราะผู้ใช้ %s เป็นต้นฉบับการแชร์นี้",
- "Sharing %s failed, because resharing is not allowed" : "การแชร์ %s ล้มเหลวเพราะการแชร์ต่อไม่ได้รับอนุญาต",
- "Sharing %s failed, because the file could not be found in the file cache" : "การแชร์ %s ล้มเหลวเพราะไม่พบไฟล์ในแคชไฟล์"
+ "Personal info" : "ข้อมูลส่วนบุคคล"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/tk.js b/lib/l10n/tk.js
new file mode 100644
index 00000000000..f086adbc213
--- /dev/null
+++ b/lib/l10n/tk.js
@@ -0,0 +1,6 @@
+OC.L10N.register(
+ "lib",
+ {
+ "Settings" : "Sazlamalar"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/tk.json b/lib/l10n/tk.json
new file mode 100644
index 00000000000..55102808e14
--- /dev/null
+++ b/lib/l10n/tk.json
@@ -0,0 +1,4 @@
+{ "translations": {
+ "Settings" : "Sazlamalar"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js
index bc79c992929..0ba56bc6690 100644
--- a/lib/l10n/tr.js
+++ b/lib/l10n/tr.js
@@ -3,9 +3,9 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "\"config\" klasörüne yazılamadı!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Bu sorun genellikle, web sunucusuna config klasörüne yazma izni verilerek çözülebilir",
- "See %s" : "Şuraya bakın: %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Ya da config.php dosyasının salt okunur olarak kalmasını istiyorsanız içindeki \"config_is_read_only\" seçeneğini true olarak ayarlayın.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Bu sorun genellikle, web sunucusuna config klasörüne yazma izni verilerek çözülebilir. %s bölümüne bakın",
+ "See %s" : "Şuraya bakın: %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Bu sorun genellikle, web sunucusuna config klasörüne yazma izni verilerek çözülebilir.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Ya da config.php dosyasının salt okunur olarak kalmasını istiyorsanız içindeki \"config_is_read_only\" seçeneğini true olarak ayarlayın. %s bölümüne bakabilirsiniz",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "%1$s uygulamasının dosyaları doğru şekilde değiştirilmedi. Sunucu ile uyumlu dosyaların yüklü olduğundan emin olun.",
"Sample configuration detected" : "Örnek yapılandırma algılandı",
@@ -22,12 +22,12 @@ OC.L10N.register(
"PHP %s or higher is required." : "PHP %s ya da daha sonraki bir sürümü gerekli.",
"PHP with a version lower than %s is required." : "PHP %s ya da daha önceki bir sürümü gerekli.",
"%sbit or higher PHP required." : "%sbit ya da daha sonraki bir PHP sürümü gerekli.",
- "Following databases are supported: %s" : "Şu veritabanları destekleniyor: %s",
+ "The following databases are supported: %s" : "Şu veritabanları destekleniyor: %s",
"The command line tool %s could not be found" : "%s komut satırı aracı bulunamadı",
"The library %s is not available." : "%s kitaplığı bulunamadı.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "%1$s kitaplığının %2$s sonrası bir sürümü gerekli. Geçerli sürüm: %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "%1$s kitaplığının %2$s öncesi bir sürümü gerekli. Geçerli sürüm: %3$s.",
- "Following platforms are supported: %s" : "Şu platformlar destekleniyor: %s",
+ "The following platforms are supported: %s" : "Şu platformlar destekleniyor: %s",
"Server version %s or higher is required." : "Sunucu %s ya da daha sonraki bir sürüm olmalıdır.",
"Server version %s or lower is required." : "Sunucu %s ya da daha önceki bir sürüm olmalıdır.",
"Logged in user must be an admin or sub admin" : "Oturum açmış kullanıcı bir yönetici ya da alt yönetici olmalıdır",
@@ -68,7 +68,7 @@ OC.L10N.register(
"in a few seconds" : "bir kaç saniye içinde",
"seconds ago" : "saniyeler önce",
"Empty file" : "Dosya boş",
- "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "%s kodlu modül bulunamadı. Lütfen uygulamalarınız içinden modülü etkinleştirin ya da sistem yöneticinizle görüşün.",
+ "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "%s kodlu modül bulunamadı. Lütfen uygulamalarınız içinden modülü etkinleştirin ya da BT yöneticinizle görüşün.",
"File name is a reserved word" : "Bu dosya adı sistem kullanıma ayrılmıştır",
"File name contains at least one invalid character" : "Dosya adında en az bir geçersiz karakter var",
"File name is too long" : "Dosya adı çok uzun",
@@ -91,7 +91,7 @@ OC.L10N.register(
"%s you may not use dots in the database name" : "%s veritabanı adında nokta kullanamayabilirsiniz",
"MySQL username and/or password not valid" : "MySQL kullanıcı adı ya da parolası geçersiz",
"You need to enter details of an existing account." : "Var olan bir hesabın bilgilerini yazmalısınız.",
- "Oracle connection could not be established" : "Oracle bağlantısı kurulamadı",
+ "Oracle connection could not be established" : "Oracle ile bağlantı kurulamadı",
"Oracle username and/or password not valid" : "Oracle kullanıcı adı ya da parolası geçersiz",
"PostgreSQL username and/or password not valid" : "PostgreSQL kullanıcı adı ya da parolası geçersiz",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X desteklenmiyor ve %s bu platformda düzgün çalışmayacak. Kullanmaktan doğacak riskler size aittir!",
@@ -185,14 +185,15 @@ OC.L10N.register(
"Token expired. Please reload page." : "Kodun süresi dolmuş. Lütfen sayfayı yenileyin.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Herhangi bir veritabanı sürücüsü (sqlite, mysql ya da postgresql) kurulmamış.",
"Cannot write into \"config\" directory" : "\"config\" klasörüne yazılamıyor",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Bu sorun genellikle, web sunucusuna config klasörüne yazma izni verilerek çözülebilir. %s bölümüne bakın",
"Cannot write into \"apps\" directory" : "\"apps\" klasörüne yazılamıyor",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Bu sorun genellikle, web sunucusuna apps klasörüne yazma izni verilerek ya da yapılandırma dosyasından uygulama mağazası devre dışı bırakılarak çözülebilir. %s bölümüne bakın",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Bu sorun genellikle, web sunucusuna apps klasörüne yazma izni verilerek ya da yapılandırma dosyasından uygulama mağazasını devre dışı bırakılarak çözülebilir.",
"Cannot create \"data\" directory" : "\"data\" klasörü oluşturulamadı",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Bu sorun genellikle, web sunucusuna kök klasöre yazma izni verilerek çözülebilir. %s bölümüne bakın",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "İzinler genellikle, web sunucusuna kök klasöre yazma izni verilerek düzeltilebilir. %s bölümüne bakın.",
"Setting locale to %s failed" : "Dil %s olarak ayarlanamadı",
"Please install one of these locales on your system and restart your webserver." : "Lütfen bu dillerden birini sisteminize kurun ve web sunucunuzu yeniden başlatın.",
- "Please ask your server administrator to install the module." : "Lütfen modülü kurması için sunucu yöneticinizle görüşün.",
+ "Please ask your server administrator to install the module." : "Lütfen modülü kurması için BT yöneticinizle görüşün.",
"PHP module %s not installed." : "PHP %s modülü kurulmamış.",
"PHP setting \"%s\" is not set to \"%s\"." : "\"%s\" PHP ayarı \"%s\" olarak ayarlanmamış.",
"Adjusting this setting in php.ini will make Nextcloud run again" : "php.ini dosyasında bu ayar yapıldığında Nextcloud yeniden çalışır",
@@ -203,7 +204,7 @@ OC.L10N.register(
"PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP girintili doc bloklarını ayıklamak üzere yapılandırılmış gibi görünüyor. Bu durum bazı çekirdek uygulamalarına erişilmesini engelleyecek.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Bu sorun genellikle Zend OPcache ya da eAccelerator gibi bir ön bellek/hızlandırıcı nedeniyle ortaya çıkar.",
"PHP modules have been installed, but they are still listed as missing?" : "PHP modülleri kurulmuş, ancak hala eksik olarak mı görünüyor?",
- "Please ask your server administrator to restart the web server." : "Lütfen web sunucusunu yeniden başlatması için sunucu yöneticinizle görüşün.",
+ "Please ask your server administrator to restart the web server." : "Lütfen web sunucusunu yeniden başlatması için BT yöneticinizle görüşün.",
"PostgreSQL >= 9 required" : "PostgreSQL >= 9 gerekli",
"Please upgrade your database version" : "Lütfen veritabanı sürümünüzü yükseltin",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Lütfen izinleri 0770 olarak ayarlayarak diğer kullanıcıların klasörü görebilmesini sağlayın.",
@@ -223,10 +224,8 @@ OC.L10N.register(
"Storage connection error. %s" : "Depolama bağlantısı sorunu. %s",
"Storage is temporarily not available" : "Depolama geçici olarak kullanılamıyor",
"Storage connection timeout. %s" : "Depolama bağlantısı zaman aşımı. %s",
- "Create" : "Ekle",
- "Change" : "Düzenle",
- "Delete" : "Sil",
- "Share" : "Paylaş",
+ "Following databases are supported: %s" : "Şu veritabanları destekleniyor: %s",
+ "Following platforms are supported: %s" : "Şu platformlar destekleniyor: %s",
"Overview" : "Özet",
"Basic settings" : "Temel Ayarlar",
"Sharing" : "Paylaşım",
@@ -234,30 +233,6 @@ OC.L10N.register(
"Groupware" : "Grup çalışması",
"Personal info" : "Kişisel Bilgiler",
"Mobile & desktop" : "Mobil ve masaüstü",
- "Unlimited" : "Sınırsız",
- "Verifying" : "Doğrulanıyor",
- "Verifying …" : "Doğrulanıyor …",
- "Verify" : "Doğrula",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Arka uç %s türündeki paylaşımlara izin vermediğinden %s paylaşılamadı",
- "Sharing %s failed, because the file does not exist" : "Dosya bulunamadığından %s paylaşılamadı",
- "Sharing %s failed, because you can not share with yourself" : "%s paylaşılamadı. Ögeyi kendiniz ile paylaşamazsınız",
- "Sharing %1$s failed, because the user %2$s does not exist" : "%1$s paylaşılamadı. %2$s kullanıcısı bulunamadı",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "%1$s paylaşılamadı. %2$s kullanıcısı %3$s ögesinin üyesi olduğu grupların herhangi birinin üyesi değil",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "%1$sögesi %2$s ile zaten paylaşılmış olduğundan paylaşılamadı",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "%1$s ögesi %2$s kullanıcısı ile zaten paylaşılmış olduğundan paylaşılamadı",
- "Sharing %1$s failed, because the group %2$s does not exist" : "%1$s ögesi %2$s grubu bulunamadığından paylaşılamadı",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "%1$s ögesi %2$s kullanıcısı %3$s grubunun üyesi olmadığından paylaşılamadı",
- "You need to provide a password to create a public link, only protected links are allowed" : "Herkese açık bir bağlantı oluşturmak için bir parola belirtmelisiniz. Yalnız korunmuş bağlantılara izin verilir",
- "Sharing %s failed, because sharing with links is not allowed" : "%s paylaşılamadı. Bağlantı üzerinden paylaşım izni verilmiyor",
- "Not allowed to create a federated share with the same user" : "Aynı kullanıcı ile bir birleşik paylaşım oluşturulamaz",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "%1$s ögesi %2$sbulunamadığından paylaşılamadı. Sunucuya şu anda erişilemiyor olabilir.",
- "Share type %1$s is not valid for %2$s" : "%1$s paylaşım türü %2$s için kullanılamaz",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Son kullanma tarihi ayarlanamadı. Paylaşımların kullanım süresi paylaşıldıktan %s sonra dolamaz",
- "Cannot set expiration date. Expiration date is in the past" : "Son kullanma tarihi ayarlanamıyor. Son kullanma tarihi geçmişte",
- "Sharing failed, because the user %s is the original sharer" : "Paylaşılamadı. %s kullanıcısı özgün paylaşan kişi",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "%1$s ögesi %2$s için verilen izin düzeyini aştığından paylaşılamadı",
- "Sharing %s failed, because resharing is not allowed" : "%s paylaşılamadı. Yeniden paylaşıma izin verilmiyor",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "%1$s ögesi paylaşım arka ucu %2$siçin kaynağı bulamadığından paylaşılamadı",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s paylaşılamadı. Dosyanın dosya ön belleğinde bulunamadı"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Bu sorun genellikle, web sunucusuna apps klasörüne yazma izni verilerek ya da yapılandırma dosyasından uygulama mağazası devre dışı bırakılarak çözülebilir. %s bölümüne bakın"
},
"nplurals=2; plural=(n > 1);");
diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json
index 496c2070b0c..3ebe72b7cf0 100644
--- a/lib/l10n/tr.json
+++ b/lib/l10n/tr.json
@@ -1,9 +1,9 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "\"config\" klasörüne yazılamadı!",
"This can usually be fixed by giving the webserver write access to the config directory" : "Bu sorun genellikle, web sunucusuna config klasörüne yazma izni verilerek çözülebilir",
- "See %s" : "Şuraya bakın: %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Ya da config.php dosyasının salt okunur olarak kalmasını istiyorsanız içindeki \"config_is_read_only\" seçeneğini true olarak ayarlayın.",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Bu sorun genellikle, web sunucusuna config klasörüne yazma izni verilerek çözülebilir. %s bölümüne bakın",
+ "See %s" : "Şuraya bakın: %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "Bu sorun genellikle, web sunucusuna config klasörüne yazma izni verilerek çözülebilir.",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "Ya da config.php dosyasının salt okunur olarak kalmasını istiyorsanız içindeki \"config_is_read_only\" seçeneğini true olarak ayarlayın. %s bölümüne bakabilirsiniz",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "%1$s uygulamasının dosyaları doğru şekilde değiştirilmedi. Sunucu ile uyumlu dosyaların yüklü olduğundan emin olun.",
"Sample configuration detected" : "Örnek yapılandırma algılandı",
@@ -20,12 +20,12 @@
"PHP %s or higher is required." : "PHP %s ya da daha sonraki bir sürümü gerekli.",
"PHP with a version lower than %s is required." : "PHP %s ya da daha önceki bir sürümü gerekli.",
"%sbit or higher PHP required." : "%sbit ya da daha sonraki bir PHP sürümü gerekli.",
- "Following databases are supported: %s" : "Şu veritabanları destekleniyor: %s",
+ "The following databases are supported: %s" : "Şu veritabanları destekleniyor: %s",
"The command line tool %s could not be found" : "%s komut satırı aracı bulunamadı",
"The library %s is not available." : "%s kitaplığı bulunamadı.",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "%1$s kitaplığının %2$s sonrası bir sürümü gerekli. Geçerli sürüm: %3$s.",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "%1$s kitaplığının %2$s öncesi bir sürümü gerekli. Geçerli sürüm: %3$s.",
- "Following platforms are supported: %s" : "Şu platformlar destekleniyor: %s",
+ "The following platforms are supported: %s" : "Şu platformlar destekleniyor: %s",
"Server version %s or higher is required." : "Sunucu %s ya da daha sonraki bir sürüm olmalıdır.",
"Server version %s or lower is required." : "Sunucu %s ya da daha önceki bir sürüm olmalıdır.",
"Logged in user must be an admin or sub admin" : "Oturum açmış kullanıcı bir yönetici ya da alt yönetici olmalıdır",
@@ -66,7 +66,7 @@
"in a few seconds" : "bir kaç saniye içinde",
"seconds ago" : "saniyeler önce",
"Empty file" : "Dosya boş",
- "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "%s kodlu modül bulunamadı. Lütfen uygulamalarınız içinden modülü etkinleştirin ya da sistem yöneticinizle görüşün.",
+ "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "%s kodlu modül bulunamadı. Lütfen uygulamalarınız içinden modülü etkinleştirin ya da BT yöneticinizle görüşün.",
"File name is a reserved word" : "Bu dosya adı sistem kullanıma ayrılmıştır",
"File name contains at least one invalid character" : "Dosya adında en az bir geçersiz karakter var",
"File name is too long" : "Dosya adı çok uzun",
@@ -89,7 +89,7 @@
"%s you may not use dots in the database name" : "%s veritabanı adında nokta kullanamayabilirsiniz",
"MySQL username and/or password not valid" : "MySQL kullanıcı adı ya da parolası geçersiz",
"You need to enter details of an existing account." : "Var olan bir hesabın bilgilerini yazmalısınız.",
- "Oracle connection could not be established" : "Oracle bağlantısı kurulamadı",
+ "Oracle connection could not be established" : "Oracle ile bağlantı kurulamadı",
"Oracle username and/or password not valid" : "Oracle kullanıcı adı ya da parolası geçersiz",
"PostgreSQL username and/or password not valid" : "PostgreSQL kullanıcı adı ya da parolası geçersiz",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X desteklenmiyor ve %s bu platformda düzgün çalışmayacak. Kullanmaktan doğacak riskler size aittir!",
@@ -183,14 +183,15 @@
"Token expired. Please reload page." : "Kodun süresi dolmuş. Lütfen sayfayı yenileyin.",
"No database drivers (sqlite, mysql, or postgresql) installed." : "Herhangi bir veritabanı sürücüsü (sqlite, mysql ya da postgresql) kurulmamış.",
"Cannot write into \"config\" directory" : "\"config\" klasörüne yazılamıyor",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Bu sorun genellikle, web sunucusuna config klasörüne yazma izni verilerek çözülebilir. %s bölümüne bakın",
"Cannot write into \"apps\" directory" : "\"apps\" klasörüne yazılamıyor",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Bu sorun genellikle, web sunucusuna apps klasörüne yazma izni verilerek ya da yapılandırma dosyasından uygulama mağazası devre dışı bırakılarak çözülebilir. %s bölümüne bakın",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "Bu sorun genellikle, web sunucusuna apps klasörüne yazma izni verilerek ya da yapılandırma dosyasından uygulama mağazasını devre dışı bırakılarak çözülebilir.",
"Cannot create \"data\" directory" : "\"data\" klasörü oluşturulamadı",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Bu sorun genellikle, web sunucusuna kök klasöre yazma izni verilerek çözülebilir. %s bölümüne bakın",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "İzinler genellikle, web sunucusuna kök klasöre yazma izni verilerek düzeltilebilir. %s bölümüne bakın.",
"Setting locale to %s failed" : "Dil %s olarak ayarlanamadı",
"Please install one of these locales on your system and restart your webserver." : "Lütfen bu dillerden birini sisteminize kurun ve web sunucunuzu yeniden başlatın.",
- "Please ask your server administrator to install the module." : "Lütfen modülü kurması için sunucu yöneticinizle görüşün.",
+ "Please ask your server administrator to install the module." : "Lütfen modülü kurması için BT yöneticinizle görüşün.",
"PHP module %s not installed." : "PHP %s modülü kurulmamış.",
"PHP setting \"%s\" is not set to \"%s\"." : "\"%s\" PHP ayarı \"%s\" olarak ayarlanmamış.",
"Adjusting this setting in php.ini will make Nextcloud run again" : "php.ini dosyasında bu ayar yapıldığında Nextcloud yeniden çalışır",
@@ -201,7 +202,7 @@
"PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP girintili doc bloklarını ayıklamak üzere yapılandırılmış gibi görünüyor. Bu durum bazı çekirdek uygulamalarına erişilmesini engelleyecek.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Bu sorun genellikle Zend OPcache ya da eAccelerator gibi bir ön bellek/hızlandırıcı nedeniyle ortaya çıkar.",
"PHP modules have been installed, but they are still listed as missing?" : "PHP modülleri kurulmuş, ancak hala eksik olarak mı görünüyor?",
- "Please ask your server administrator to restart the web server." : "Lütfen web sunucusunu yeniden başlatması için sunucu yöneticinizle görüşün.",
+ "Please ask your server administrator to restart the web server." : "Lütfen web sunucusunu yeniden başlatması için BT yöneticinizle görüşün.",
"PostgreSQL >= 9 required" : "PostgreSQL >= 9 gerekli",
"Please upgrade your database version" : "Lütfen veritabanı sürümünüzü yükseltin",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Lütfen izinleri 0770 olarak ayarlayarak diğer kullanıcıların klasörü görebilmesini sağlayın.",
@@ -221,10 +222,8 @@
"Storage connection error. %s" : "Depolama bağlantısı sorunu. %s",
"Storage is temporarily not available" : "Depolama geçici olarak kullanılamıyor",
"Storage connection timeout. %s" : "Depolama bağlantısı zaman aşımı. %s",
- "Create" : "Ekle",
- "Change" : "Düzenle",
- "Delete" : "Sil",
- "Share" : "Paylaş",
+ "Following databases are supported: %s" : "Şu veritabanları destekleniyor: %s",
+ "Following platforms are supported: %s" : "Şu platformlar destekleniyor: %s",
"Overview" : "Özet",
"Basic settings" : "Temel Ayarlar",
"Sharing" : "Paylaşım",
@@ -232,30 +231,6 @@
"Groupware" : "Grup çalışması",
"Personal info" : "Kişisel Bilgiler",
"Mobile & desktop" : "Mobil ve masaüstü",
- "Unlimited" : "Sınırsız",
- "Verifying" : "Doğrulanıyor",
- "Verifying …" : "Doğrulanıyor …",
- "Verify" : "Doğrula",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Arka uç %s türündeki paylaşımlara izin vermediğinden %s paylaşılamadı",
- "Sharing %s failed, because the file does not exist" : "Dosya bulunamadığından %s paylaşılamadı",
- "Sharing %s failed, because you can not share with yourself" : "%s paylaşılamadı. Ögeyi kendiniz ile paylaşamazsınız",
- "Sharing %1$s failed, because the user %2$s does not exist" : "%1$s paylaşılamadı. %2$s kullanıcısı bulunamadı",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "%1$s paylaşılamadı. %2$s kullanıcısı %3$s ögesinin üyesi olduğu grupların herhangi birinin üyesi değil",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "%1$sögesi %2$s ile zaten paylaşılmış olduğundan paylaşılamadı",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "%1$s ögesi %2$s kullanıcısı ile zaten paylaşılmış olduğundan paylaşılamadı",
- "Sharing %1$s failed, because the group %2$s does not exist" : "%1$s ögesi %2$s grubu bulunamadığından paylaşılamadı",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "%1$s ögesi %2$s kullanıcısı %3$s grubunun üyesi olmadığından paylaşılamadı",
- "You need to provide a password to create a public link, only protected links are allowed" : "Herkese açık bir bağlantı oluşturmak için bir parola belirtmelisiniz. Yalnız korunmuş bağlantılara izin verilir",
- "Sharing %s failed, because sharing with links is not allowed" : "%s paylaşılamadı. Bağlantı üzerinden paylaşım izni verilmiyor",
- "Not allowed to create a federated share with the same user" : "Aynı kullanıcı ile bir birleşik paylaşım oluşturulamaz",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "%1$s ögesi %2$sbulunamadığından paylaşılamadı. Sunucuya şu anda erişilemiyor olabilir.",
- "Share type %1$s is not valid for %2$s" : "%1$s paylaşım türü %2$s için kullanılamaz",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Son kullanma tarihi ayarlanamadı. Paylaşımların kullanım süresi paylaşıldıktan %s sonra dolamaz",
- "Cannot set expiration date. Expiration date is in the past" : "Son kullanma tarihi ayarlanamıyor. Son kullanma tarihi geçmişte",
- "Sharing failed, because the user %s is the original sharer" : "Paylaşılamadı. %s kullanıcısı özgün paylaşan kişi",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "%1$s ögesi %2$s için verilen izin düzeyini aştığından paylaşılamadı",
- "Sharing %s failed, because resharing is not allowed" : "%s paylaşılamadı. Yeniden paylaşıma izin verilmiyor",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "%1$s ögesi paylaşım arka ucu %2$siçin kaynağı bulamadığından paylaşılamadı",
- "Sharing %s failed, because the file could not be found in the file cache" : "%s paylaşılamadı. Dosyanın dosya ön belleğinde bulunamadı"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Bu sorun genellikle, web sunucusuna apps klasörüne yazma izni verilerek ya da yapılandırma dosyasından uygulama mağazası devre dışı bırakılarak çözülebilir. %s bölümüne bakın"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/lib/l10n/ug.js b/lib/l10n/ug.js
index 416039e8bec..d5231b089cc 100644
--- a/lib/l10n/ug.js
+++ b/lib/l10n/ug.js
@@ -50,10 +50,6 @@ OC.L10N.register(
"A valid username must be provided" : "چوقۇم ئىناۋەتلىك ئىشلەتكۈچى ئىسمىدىن بىرنى تەمىنلەش كېرەك",
"A valid password must be provided" : "چوقۇم ئىناۋەتلىك ئىم تەمىنلەش كېرەك",
"Authentication error" : "سالاھىيەت دەلىللەش خاتالىقى",
- "Create" : "قۇر",
- "Delete" : "ئۆچۈر",
- "Share" : "ھەمبەھىر",
- "Sharing" : "ھەمبەھىر",
- "Unlimited" : "چەكسىز"
+ "Sharing" : "ھەمبەھىر"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/ug.json b/lib/l10n/ug.json
index 7fe66a2ce5c..94c227bfc1a 100644
--- a/lib/l10n/ug.json
+++ b/lib/l10n/ug.json
@@ -48,10 +48,6 @@
"A valid username must be provided" : "چوقۇم ئىناۋەتلىك ئىشلەتكۈچى ئىسمىدىن بىرنى تەمىنلەش كېرەك",
"A valid password must be provided" : "چوقۇم ئىناۋەتلىك ئىم تەمىنلەش كېرەك",
"Authentication error" : "سالاھىيەت دەلىللەش خاتالىقى",
- "Create" : "قۇر",
- "Delete" : "ئۆچۈر",
- "Share" : "ھەمبەھىر",
- "Sharing" : "ھەمبەھىر",
- "Unlimited" : "چەكسىز"
+ "Sharing" : "ھەمبەھىر"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/uk.js b/lib/l10n/uk.js
index 6382216a176..ba034b66c6b 100644
--- a/lib/l10n/uk.js
+++ b/lib/l10n/uk.js
@@ -8,10 +8,8 @@ OC.L10N.register(
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Було виявлено, що приклад конфігурації було скопійовано. Це може нашкодити вашій системі та не підтримується. Будь ласка, зверніться до документації перед внесенням змін в файл config.php",
"PHP %s or higher is required." : "Необхідно PHP %s або вище",
"PHP with a version lower than %s is required." : "Потрібна версія PHP нижче %s ",
- "Following databases are supported: %s" : "Підтримуються наступні сервери баз даних: %s",
"The command line tool %s could not be found" : "Утиліту командного рядка %s не знайдено",
"The library %s is not available." : "Бібліотека %s недоступна.",
- "Following platforms are supported: %s" : "Підтримуються наступні платформи: %s",
"Authentication" : "Автентифікація",
"Unknown filetype" : "Невідомий тип файлу",
"Invalid image" : "Невірне зображення",
@@ -35,6 +33,7 @@ OC.L10N.register(
"Log out" : "Вихід",
"Users" : "Користувачі",
"Unknown user" : "Невідомий користувач",
+ "Additional settings" : "Додаткові налаштування",
"%s enter the database username and name." : "%s введіть назву бази даних та ім'я користувача.",
"%s enter the database username." : "%s введіть ім'я користувача бази даних.",
"%s enter the database name." : "%s введіть назву бази даних.",
@@ -45,7 +44,7 @@ OC.L10N.register(
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X не підтримується і %s не буде коректно працювати на цій платформі. Випробовуєте на свій риск!",
"For the best results, please consider using a GNU/Linux server instead." : "Для кращих результатів розгляньте можливість використання GNU/Linux серверу",
"It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Здається що екземпляр цього %s працює в 32-бітному PHP середовищі і open_basedir повинен бути налаштований в php.ini. Це призведе до проблем з файлами більше 4 ГБ і це дуже не рекомендується.",
- "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Будь ласка, видаліть параметр open_basedir у вашому php.ini або перейдіть на 64-бітний PHP.",
+ "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Будь ласка, вилучіть параметр open_basedir у вашому php.ini або перейдіть на 64-бітний PHP.",
"Set an admin username." : "Встановіть ім'я адміністратора.",
"Set an admin password." : "Встановіть пароль адміністратора.",
"Can't create or write into the data directory %s" : "Неможливо створити або записати каталог даних %s",
@@ -148,24 +147,14 @@ OC.L10N.register(
"Storage connection error. %s" : "Помилка з'єднання зі сховищем. %s",
"Storage is temporarily not available" : "Сховище тимчасово недоступне",
"Storage connection timeout. %s" : "Час під'єднання до сховища вичерпався. %s",
- "Create" : "Створити",
- "Delete" : "Видалити",
- "Share" : "Поділитися",
+ "Following databases are supported: %s" : "Підтримуються наступні сервери баз даних: %s",
+ "Following platforms are supported: %s" : "Підтримуються наступні платформи: %s",
+ "Overview" : "Огляд",
+ "Basic settings" : "Основні налаштування",
"Sharing" : "Поділитись",
"Security" : "Безпека",
+ "Groupware" : "Робочі групи",
"Personal info" : "Особиста інформація",
- "Unlimited" : "Необмежено",
- "Verifying …" : "Перевірка ...",
- "Verify" : "Перевірити",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Не вдалося поділитися %s, загальний доступ не допускає публікації з елементів типу %i",
- "Sharing %s failed, because the file does not exist" : "Не вдалося поділитися %s, оскільки файл не існує",
- "Sharing %s failed, because you can not share with yourself" : "Не вдалося поділитися %s, оскільки ви не можете ділитись самі з собою",
- "You need to provide a password to create a public link, only protected links are allowed" : "Вам необхідно задати пароль для створення публічного посилання. Дозволені лише захищені посилання",
- "Sharing %s failed, because sharing with links is not allowed" : "Не вдалося поділитися %s, оскільки публічний доступ через посилання заборонений",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Неможливо встановити дату закінчення. Загальні ресурси не можуть застаріти пізніше %s з моменту їх публікації.",
- "Cannot set expiration date. Expiration date is in the past" : "Неможливо встановити дату закінчення. Дата закінчення в минулому.",
- "Sharing failed, because the user %s is the original sharer" : "Не вдалося поділитися, оскільки %s є тим хто поділився з самого початку",
- "Sharing %s failed, because resharing is not allowed" : "Не вдалося поділитися %s, перевідкриття доступу заборонено",
- "Sharing %s failed, because the file could not be found in the file cache" : "Не вдалося поділитися %s, елемент не знайдено у файловому кеші."
+ "Mobile & desktop" : "Смартфон та ноутбук"
},
"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);");
diff --git a/lib/l10n/uk.json b/lib/l10n/uk.json
index 3b0afd9d512..0f70682be6e 100644
--- a/lib/l10n/uk.json
+++ b/lib/l10n/uk.json
@@ -6,10 +6,8 @@
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Було виявлено, що приклад конфігурації було скопійовано. Це може нашкодити вашій системі та не підтримується. Будь ласка, зверніться до документації перед внесенням змін в файл config.php",
"PHP %s or higher is required." : "Необхідно PHP %s або вище",
"PHP with a version lower than %s is required." : "Потрібна версія PHP нижче %s ",
- "Following databases are supported: %s" : "Підтримуються наступні сервери баз даних: %s",
"The command line tool %s could not be found" : "Утиліту командного рядка %s не знайдено",
"The library %s is not available." : "Бібліотека %s недоступна.",
- "Following platforms are supported: %s" : "Підтримуються наступні платформи: %s",
"Authentication" : "Автентифікація",
"Unknown filetype" : "Невідомий тип файлу",
"Invalid image" : "Невірне зображення",
@@ -33,6 +31,7 @@
"Log out" : "Вихід",
"Users" : "Користувачі",
"Unknown user" : "Невідомий користувач",
+ "Additional settings" : "Додаткові налаштування",
"%s enter the database username and name." : "%s введіть назву бази даних та ім'я користувача.",
"%s enter the database username." : "%s введіть ім'я користувача бази даних.",
"%s enter the database name." : "%s введіть назву бази даних.",
@@ -43,7 +42,7 @@
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X не підтримується і %s не буде коректно працювати на цій платформі. Випробовуєте на свій риск!",
"For the best results, please consider using a GNU/Linux server instead." : "Для кращих результатів розгляньте можливість використання GNU/Linux серверу",
"It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Здається що екземпляр цього %s працює в 32-бітному PHP середовищі і open_basedir повинен бути налаштований в php.ini. Це призведе до проблем з файлами більше 4 ГБ і це дуже не рекомендується.",
- "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Будь ласка, видаліть параметр open_basedir у вашому php.ini або перейдіть на 64-бітний PHP.",
+ "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Будь ласка, вилучіть параметр open_basedir у вашому php.ini або перейдіть на 64-бітний PHP.",
"Set an admin username." : "Встановіть ім'я адміністратора.",
"Set an admin password." : "Встановіть пароль адміністратора.",
"Can't create or write into the data directory %s" : "Неможливо створити або записати каталог даних %s",
@@ -146,24 +145,14 @@
"Storage connection error. %s" : "Помилка з'єднання зі сховищем. %s",
"Storage is temporarily not available" : "Сховище тимчасово недоступне",
"Storage connection timeout. %s" : "Час під'єднання до сховища вичерпався. %s",
- "Create" : "Створити",
- "Delete" : "Видалити",
- "Share" : "Поділитися",
+ "Following databases are supported: %s" : "Підтримуються наступні сервери баз даних: %s",
+ "Following platforms are supported: %s" : "Підтримуються наступні платформи: %s",
+ "Overview" : "Огляд",
+ "Basic settings" : "Основні налаштування",
"Sharing" : "Поділитись",
"Security" : "Безпека",
+ "Groupware" : "Робочі групи",
"Personal info" : "Особиста інформація",
- "Unlimited" : "Необмежено",
- "Verifying …" : "Перевірка ...",
- "Verify" : "Перевірити",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "Не вдалося поділитися %s, загальний доступ не допускає публікації з елементів типу %i",
- "Sharing %s failed, because the file does not exist" : "Не вдалося поділитися %s, оскільки файл не існує",
- "Sharing %s failed, because you can not share with yourself" : "Не вдалося поділитися %s, оскільки ви не можете ділитись самі з собою",
- "You need to provide a password to create a public link, only protected links are allowed" : "Вам необхідно задати пароль для створення публічного посилання. Дозволені лише захищені посилання",
- "Sharing %s failed, because sharing with links is not allowed" : "Не вдалося поділитися %s, оскільки публічний доступ через посилання заборонений",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Неможливо встановити дату закінчення. Загальні ресурси не можуть застаріти пізніше %s з моменту їх публікації.",
- "Cannot set expiration date. Expiration date is in the past" : "Неможливо встановити дату закінчення. Дата закінчення в минулому.",
- "Sharing failed, because the user %s is the original sharer" : "Не вдалося поділитися, оскільки %s є тим хто поділився з самого початку",
- "Sharing %s failed, because resharing is not allowed" : "Не вдалося поділитися %s, перевідкриття доступу заборонено",
- "Sharing %s failed, because the file could not be found in the file cache" : "Не вдалося поділитися %s, елемент не знайдено у файловому кеші."
+ "Mobile & desktop" : "Смартфон та ноутбук"
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"
} \ No newline at end of file
diff --git a/lib/l10n/ur_PK.js b/lib/l10n/ur_PK.js
index f7136fabd09..9fb8b0d56b9 100644
--- a/lib/l10n/ur_PK.js
+++ b/lib/l10n/ur_PK.js
@@ -32,8 +32,6 @@ OC.L10N.register(
"September" : "ستمبر",
"October" : "اکتوبر",
"November" : "نومبر",
- "December" : "دسمبر",
- "Delete" : "حذف کریں",
- "Share" : "تقسیم"
+ "December" : "دسمبر"
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/ur_PK.json b/lib/l10n/ur_PK.json
index af09a4f8a17..6e040149717 100644
--- a/lib/l10n/ur_PK.json
+++ b/lib/l10n/ur_PK.json
@@ -30,8 +30,6 @@
"September" : "ستمبر",
"October" : "اکتوبر",
"November" : "نومبر",
- "December" : "دسمبر",
- "Delete" : "حذف کریں",
- "Share" : "تقسیم"
+ "December" : "دسمبر"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/uz.js b/lib/l10n/uz.js
index 395f2e8144f..207139aa759 100644
--- a/lib/l10n/uz.js
+++ b/lib/l10n/uz.js
@@ -11,8 +11,6 @@ OC.L10N.register(
"Users" : "Foydalanuvchilar",
"Unknown user" : "Noma'lum foydalanuvchi",
"January" : "Yanvar",
- "Storage is temporarily not available" : "Saqlash vaqti-vaqti bilan mavjud emas",
- "Delete" : "O'chir",
- "Verify" : "Tasdiqlang"
+ "Storage is temporarily not available" : "Saqlash vaqti-vaqti bilan mavjud emas"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/uz.json b/lib/l10n/uz.json
index 7474f62edf6..59f15823d99 100644
--- a/lib/l10n/uz.json
+++ b/lib/l10n/uz.json
@@ -9,8 +9,6 @@
"Users" : "Foydalanuvchilar",
"Unknown user" : "Noma'lum foydalanuvchi",
"January" : "Yanvar",
- "Storage is temporarily not available" : "Saqlash vaqti-vaqti bilan mavjud emas",
- "Delete" : "O'chir",
- "Verify" : "Tasdiqlang"
+ "Storage is temporarily not available" : "Saqlash vaqti-vaqti bilan mavjud emas"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/vi.js b/lib/l10n/vi.js
index e81a9a61e4a..a3c920a982f 100644
--- a/lib/l10n/vi.js
+++ b/lib/l10n/vi.js
@@ -22,6 +22,7 @@ OC.L10N.register(
"Unknown user" : "Người dùng không tồn tại",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Hãy xóa thiết lập open_basedir tại tập tin cấu hình php.ini hoặc chuyển sang dùng PHP 64-bit.",
"Open »%s«" : "Mở »%s«",
+ "%1$s via %2$s" : "%1$s thông qua %2$s",
"Could not find category \"%s\"" : "không thể tìm thấy mục \"%s\"",
"Sunday" : "Chủ nhật",
"Monday" : "Thứ 2",
@@ -67,15 +68,7 @@ OC.L10N.register(
"Authentication error" : "Lỗi xác thực",
"Token expired. Please reload page." : "Mã Token đã hết hạn. Hãy tải lại trang.",
"Storage is temporarily not available" : "Kho lưu trữ tạm thời không khả dụng",
- "Create" : "Tạo mới",
- "Change" : "Chỉnh sửa",
- "Delete" : "Xóa",
- "Share" : "Chia sẻ",
"Sharing" : "Đang chia sẽ",
- "Security" : "Bảo mật",
- "Unlimited" : "Không giới hạn",
- "Verifying" : "Đang xác minh",
- "Verifying …" : "Đang xác minh ...",
- "Verify" : "Xác minh"
+ "Security" : "Bảo mật"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/vi.json b/lib/l10n/vi.json
index 624139af46b..5ec35304c09 100644
--- a/lib/l10n/vi.json
+++ b/lib/l10n/vi.json
@@ -20,6 +20,7 @@
"Unknown user" : "Người dùng không tồn tại",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Hãy xóa thiết lập open_basedir tại tập tin cấu hình php.ini hoặc chuyển sang dùng PHP 64-bit.",
"Open »%s«" : "Mở »%s«",
+ "%1$s via %2$s" : "%1$s thông qua %2$s",
"Could not find category \"%s\"" : "không thể tìm thấy mục \"%s\"",
"Sunday" : "Chủ nhật",
"Monday" : "Thứ 2",
@@ -65,15 +66,7 @@
"Authentication error" : "Lỗi xác thực",
"Token expired. Please reload page." : "Mã Token đã hết hạn. Hãy tải lại trang.",
"Storage is temporarily not available" : "Kho lưu trữ tạm thời không khả dụng",
- "Create" : "Tạo mới",
- "Change" : "Chỉnh sửa",
- "Delete" : "Xóa",
- "Share" : "Chia sẻ",
"Sharing" : "Đang chia sẽ",
- "Security" : "Bảo mật",
- "Unlimited" : "Không giới hạn",
- "Verifying" : "Đang xác minh",
- "Verifying …" : "Đang xác minh ...",
- "Verify" : "Xác minh"
+ "Security" : "Bảo mật"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/zh_CN.js b/lib/l10n/zh_CN.js
index 6614cfc13b0..2cd90974301 100644
--- a/lib/l10n/zh_CN.js
+++ b/lib/l10n/zh_CN.js
@@ -3,9 +3,9 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "无法写入 \"config\" 目录!",
"This can usually be fixed by giving the webserver write access to the config directory" : "您可以设置 Web 服务器对 config 目录的写权限修复这个问题",
- "See %s" : "查看 %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "或者,如果希望保持 config.php 文件的只读权限,请将 \"config_is_read_only\" 设置为 true。",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "这个通常可以通过赋予写入权限到 config 目录来修复。查看:%s",
+ "See %s" : "查看 %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "通常可以通过授予 Web 服务器对 config 目录的写访问权限来解决此问题。",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "或者,如果希望保持 config.php 文件的只读权限,请将 \"config_is_read_only\" 设置为 true。查看 %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "应用%1$s的文件替换不正确。请确认版本与当前服务器兼容。",
"Sample configuration detected" : "示例配置检测",
@@ -22,12 +22,12 @@ OC.L10N.register(
"PHP %s or higher is required." : "要求 PHP 版本 %s 或者更高。",
"PHP with a version lower than %s is required." : "需要版本低于 %s 的PHP。",
"%sbit or higher PHP required." : "需要 %s 或更高版本的 PHP。",
- "Following databases are supported: %s" : "支持以下数据库:%s",
+ "The following databases are supported: %s" : "支持以下数据库:%s",
"The command line tool %s could not be found" : "命令行工具 %s 未找到",
"The library %s is not available." : "库文件 %s 不可用",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "库版本 %1$s 高于需要的版本 %2$s - 可用版本 %3$s。",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "库版本 %1$s 低于需要的版本 %2$s - 可用版本 %3$s。",
- "Following platforms are supported: %s" : "支持以下平台:%s",
+ "The following platforms are supported: %s" : "支持以下平台:%s",
"Server version %s or higher is required." : "需要服务器版本 %s 或更高版本。",
"Server version %s or lower is required." : "需要服务器版本 %s 或更低版本。",
"Logged in user must be an admin or sub admin" : "当前登录用户必须为管理员或子管理员",
@@ -185,8 +185,9 @@ OC.L10N.register(
"Token expired. Please reload page." : "Token 过期,请刷新页面。",
"No database drivers (sqlite, mysql, or postgresql) installed." : "没有安装数据库驱动(SQLite、MySQL 或 PostgreSQL)。",
"Cannot write into \"config\" directory" : "无法写入“config”目录",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "这个通常可以通过赋予写入权限到 config 目录来修复。查看:%s",
"Cannot write into \"apps\" directory" : "无法写入“apps”目录",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "这个通常可以通过赋予 apps 目录写入权限或者在 config 文件中关闭 AppStore 来修复。详情:%s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "通常可以通过授予 Web 服务器对 apps 目录的写访问权限或在配置文件中禁用 appstore 来解决此问题。",
"Cannot create \"data\" directory" : "无法创建“data”目录 ",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "这个通常可以通过赋予根目录写入权限来修复。查看:%s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "权限通常可以通过赋予根目录写入权限来修复。查看:%s。",
@@ -223,10 +224,8 @@ OC.L10N.register(
"Storage connection error. %s" : "存储连接错误。%s",
"Storage is temporarily not available" : "存储暂时不可用",
"Storage connection timeout. %s" : "存储连接超时。%s",
- "Create" : "创建",
- "Change" : "修改",
- "Delete" : "删除",
- "Share" : "共享",
+ "Following databases are supported: %s" : "支持以下数据库:%s",
+ "Following platforms are supported: %s" : "支持以下平台:%s",
"Overview" : "概览",
"Basic settings" : "基本设置",
"Sharing" : "共享",
@@ -234,30 +233,6 @@ OC.L10N.register(
"Groupware" : "组件",
"Personal info" : "个人信息",
"Mobile & desktop" : "手机与电脑",
- "Unlimited" : "无限制",
- "Verifying" : "验证",
- "Verifying …" : "正在验证…",
- "Verify" : "验证",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "共享 %s 失败,因为后端不允许共享 %i 类型",
- "Sharing %s failed, because the file does not exist" : "共享 %s 失败,因为文件不存在",
- "Sharing %s failed, because you can not share with yourself" : "共享 %s 失败,因为您不能共享给自己",
- "Sharing %1$s failed, because the user %2$s does not exist" : "共享 %1$s 失败,因为 %2$s 用户不存在",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "共享 %1$s失败, 因为用户 %2$s 不是%3$s 所属的任何组的用户",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "共享 %1$s 失败,因为该项已经共享给 %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "共享 %1$s 失败, 因为该项已经共享给用户 %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "共享 %1$s 失败,因为 %2$s 分组不存在",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "共享 %1$s 失败,因为 %2$s 不是 %3$s 分组的成员",
- "You need to provide a password to create a public link, only protected links are allowed" : "您需要提供密码以创建公开链接,因为只允许创建受保护的链接",
- "Sharing %s failed, because sharing with links is not allowed" : "共享 %s 失败,因为不允许使用链接共享",
- "Not allowed to create a federated share with the same user" : "不允许创建对相同用户的联合共享",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "共享 %1$s 失败,无法找到 %2$s,该服务当前无法连接。",
- "Share type %1$s is not valid for %2$s" : "%1$s 不是 %2$s 合法的共享类型",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "无法设置过期时间。过期时间不能晚于其共享时间 %s",
- "Cannot set expiration date. Expiration date is in the past" : "无法设置过期时间。过期时间不能为过去",
- "Sharing failed, because the user %s is the original sharer" : "共享失败,因为用户 %s 是原始的共享者",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "共享 %1$s 失败, 因为已经超出了 %2$s 的权限。",
- "Sharing %s failed, because resharing is not allowed" : "共享 %s 失败,因为不允许二次共享",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "共享 %1$s失败,因为无法找到 %2$s 共享后端的来源",
- "Sharing %s failed, because the file could not be found in the file cache" : "共享 %s 失败,因为文件缓存中找不到该文件"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "这个通常可以通过赋予 apps 目录写入权限或者在 config 文件中关闭 AppStore 来修复。详情:%s"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/zh_CN.json b/lib/l10n/zh_CN.json
index 5adce37ac3e..b8a91b435f7 100644
--- a/lib/l10n/zh_CN.json
+++ b/lib/l10n/zh_CN.json
@@ -1,9 +1,9 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "无法写入 \"config\" 目录!",
"This can usually be fixed by giving the webserver write access to the config directory" : "您可以设置 Web 服务器对 config 目录的写权限修复这个问题",
- "See %s" : "查看 %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "或者,如果希望保持 config.php 文件的只读权限,请将 \"config_is_read_only\" 设置为 true。",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "这个通常可以通过赋予写入权限到 config 目录来修复。查看:%s",
+ "See %s" : "查看 %s",
+ "This can usually be fixed by giving the webserver write access to the config directory." : "通常可以通过授予 Web 服务器对 config 目录的写访问权限来解决此问题。",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "或者,如果希望保持 config.php 文件的只读权限,请将 \"config_is_read_only\" 设置为 true。查看 %s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "应用%1$s的文件替换不正确。请确认版本与当前服务器兼容。",
"Sample configuration detected" : "示例配置检测",
@@ -20,12 +20,12 @@
"PHP %s or higher is required." : "要求 PHP 版本 %s 或者更高。",
"PHP with a version lower than %s is required." : "需要版本低于 %s 的PHP。",
"%sbit or higher PHP required." : "需要 %s 或更高版本的 PHP。",
- "Following databases are supported: %s" : "支持以下数据库:%s",
+ "The following databases are supported: %s" : "支持以下数据库:%s",
"The command line tool %s could not be found" : "命令行工具 %s 未找到",
"The library %s is not available." : "库文件 %s 不可用",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "库版本 %1$s 高于需要的版本 %2$s - 可用版本 %3$s。",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "库版本 %1$s 低于需要的版本 %2$s - 可用版本 %3$s。",
- "Following platforms are supported: %s" : "支持以下平台:%s",
+ "The following platforms are supported: %s" : "支持以下平台:%s",
"Server version %s or higher is required." : "需要服务器版本 %s 或更高版本。",
"Server version %s or lower is required." : "需要服务器版本 %s 或更低版本。",
"Logged in user must be an admin or sub admin" : "当前登录用户必须为管理员或子管理员",
@@ -183,8 +183,9 @@
"Token expired. Please reload page." : "Token 过期,请刷新页面。",
"No database drivers (sqlite, mysql, or postgresql) installed." : "没有安装数据库驱动(SQLite、MySQL 或 PostgreSQL)。",
"Cannot write into \"config\" directory" : "无法写入“config”目录",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "这个通常可以通过赋予写入权限到 config 目录来修复。查看:%s",
"Cannot write into \"apps\" directory" : "无法写入“apps”目录",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "这个通常可以通过赋予 apps 目录写入权限或者在 config 文件中关闭 AppStore 来修复。详情:%s",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file." : "通常可以通过授予 Web 服务器对 apps 目录的写访问权限或在配置文件中禁用 appstore 来解决此问题。",
"Cannot create \"data\" directory" : "无法创建“data”目录 ",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "这个通常可以通过赋予根目录写入权限来修复。查看:%s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "权限通常可以通过赋予根目录写入权限来修复。查看:%s。",
@@ -221,10 +222,8 @@
"Storage connection error. %s" : "存储连接错误。%s",
"Storage is temporarily not available" : "存储暂时不可用",
"Storage connection timeout. %s" : "存储连接超时。%s",
- "Create" : "创建",
- "Change" : "修改",
- "Delete" : "删除",
- "Share" : "共享",
+ "Following databases are supported: %s" : "支持以下数据库:%s",
+ "Following platforms are supported: %s" : "支持以下平台:%s",
"Overview" : "概览",
"Basic settings" : "基本设置",
"Sharing" : "共享",
@@ -232,30 +231,6 @@
"Groupware" : "组件",
"Personal info" : "个人信息",
"Mobile & desktop" : "手机与电脑",
- "Unlimited" : "无限制",
- "Verifying" : "验证",
- "Verifying …" : "正在验证…",
- "Verify" : "验证",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "共享 %s 失败,因为后端不允许共享 %i 类型",
- "Sharing %s failed, because the file does not exist" : "共享 %s 失败,因为文件不存在",
- "Sharing %s failed, because you can not share with yourself" : "共享 %s 失败,因为您不能共享给自己",
- "Sharing %1$s failed, because the user %2$s does not exist" : "共享 %1$s 失败,因为 %2$s 用户不存在",
- "Sharing %1$s failed, because the user %2$s is not a member of any groups that %3$s is a member of" : "共享 %1$s失败, 因为用户 %2$s 不是%3$s 所属的任何组的用户",
- "Sharing %1$s failed, because this item is already shared with %2$s" : "共享 %1$s 失败,因为该项已经共享给 %2$s",
- "Sharing %1$s failed, because this item is already shared with user %2$s" : "共享 %1$s 失败, 因为该项已经共享给用户 %2$s",
- "Sharing %1$s failed, because the group %2$s does not exist" : "共享 %1$s 失败,因为 %2$s 分组不存在",
- "Sharing %1$s failed, because %2$s is not a member of the group %3$s" : "共享 %1$s 失败,因为 %2$s 不是 %3$s 分组的成员",
- "You need to provide a password to create a public link, only protected links are allowed" : "您需要提供密码以创建公开链接,因为只允许创建受保护的链接",
- "Sharing %s failed, because sharing with links is not allowed" : "共享 %s 失败,因为不允许使用链接共享",
- "Not allowed to create a federated share with the same user" : "不允许创建对相同用户的联合共享",
- "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable." : "共享 %1$s 失败,无法找到 %2$s,该服务当前无法连接。",
- "Share type %1$s is not valid for %2$s" : "%1$s 不是 %2$s 合法的共享类型",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "无法设置过期时间。过期时间不能晚于其共享时间 %s",
- "Cannot set expiration date. Expiration date is in the past" : "无法设置过期时间。过期时间不能为过去",
- "Sharing failed, because the user %s is the original sharer" : "共享失败,因为用户 %s 是原始的共享者",
- "Sharing %1$s failed, because the permissions exceed permissions granted to %2$s" : "共享 %1$s 失败, 因为已经超出了 %2$s 的权限。",
- "Sharing %s failed, because resharing is not allowed" : "共享 %s 失败,因为不允许二次共享",
- "Sharing %1$s failed, because the sharing backend for %2$s could not find its source" : "共享 %1$s失败,因为无法找到 %2$s 共享后端的来源",
- "Sharing %s failed, because the file could not be found in the file cache" : "共享 %s 失败,因为文件缓存中找不到该文件"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "这个通常可以通过赋予 apps 目录写入权限或者在 config 文件中关闭 AppStore 来修复。详情:%s"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/zh_HK.js b/lib/l10n/zh_HK.js
index cd8d972fafb..b70a038b364 100644
--- a/lib/l10n/zh_HK.js
+++ b/lib/l10n/zh_HK.js
@@ -34,10 +34,6 @@ OC.L10N.register(
"October" : "十月",
"November" : "十一月",
"December" : "十二月",
- "Create" : "新增",
- "Delete" : "刪除",
- "Share" : "分享",
- "Sharing" : "分享",
- "Unlimited" : "無限"
+ "Sharing" : "分享"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/zh_HK.json b/lib/l10n/zh_HK.json
index 71b52ba0b59..a927b65174c 100644
--- a/lib/l10n/zh_HK.json
+++ b/lib/l10n/zh_HK.json
@@ -32,10 +32,6 @@
"October" : "十月",
"November" : "十一月",
"December" : "十二月",
- "Create" : "新增",
- "Delete" : "刪除",
- "Share" : "分享",
- "Sharing" : "分享",
- "Unlimited" : "無限"
+ "Sharing" : "分享"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/zh_TW.js b/lib/l10n/zh_TW.js
index e6437c54c4d..a40fa717b3b 100644
--- a/lib/l10n/zh_TW.js
+++ b/lib/l10n/zh_TW.js
@@ -3,9 +3,8 @@ OC.L10N.register(
{
"Cannot write into \"config\" directory!" : "無法寫入 \"config\" 目錄!",
"This can usually be fixed by giving the webserver write access to the config directory" : "允許網頁伺服器寫入 \"config\" 目錄通常可以解決這個問題",
- "See %s" : "見 %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "或者,如果您比較希望保留 config.php 的唯讀狀態,請在該設定檔中將 \"config_is_read_only\" 設定為 true。",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "允許網頁伺服器寫入 \"config\" 目錄通常可以解決這個問題,詳見 %s",
+ "See %s" : "見 %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "或者,如果您比較希望保留 config.php 的唯讀狀態,請在該設定檔中將 \"config_is_read_only\" 設定為 true。見%s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "應用程式 %1$s 中的檔案沒有被正確取代,請確認它的版本與伺服器相容。",
"Sample configuration detected" : "您目前正在使用範例設定",
@@ -21,12 +20,10 @@ OC.L10N.register(
"PHP %s or higher is required." : "需要 PHP %s 或更高版本",
"PHP with a version lower than %s is required." : "需要 PHP 版本低於 %s ",
"%sbit or higher PHP required." : "%s 或需要更高階版本的php",
- "Following databases are supported: %s" : "支援下列資料庫: %s",
"The command line tool %s could not be found" : "找不到命令列工具指令 %s",
"The library %s is not available." : "套件庫 %s 無法使用",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "需要使用 %2$s 版以上的 %1$s 函式庫,目前可用的版本是 %3$s",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "需要使用 %2$s 版以下的 %1$s 函式庫,目前可用的版本是 %3$s",
- "Following platforms are supported: %s" : "支援下列平台: %s",
"Server version %s or higher is required." : "需要伺服器版本 %s 或更高",
"Server version %s or lower is required." : "需要伺服器版本 %s 或更低",
"Logged in user must be an admin or sub admin" : "登入的使用者必須要是管理員或是子管理員",
@@ -173,8 +170,8 @@ OC.L10N.register(
"Token expired. Please reload page." : "Token 過期,請重新整理頁面。",
"No database drivers (sqlite, mysql, or postgresql) installed." : "沒有安裝資料庫驅動程式 (sqlite, mysql, 或 postgresql)",
"Cannot write into \"config\" directory" : "無法寫入 config 目錄",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "允許網頁伺服器寫入 \"config\" 目錄通常可以解決這個問題,詳見 %s",
"Cannot write into \"apps\" directory" : "無法寫入 apps 目錄",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "開放網頁伺服器存取 apps 目錄,或是在設定檔中關閉 appstore 功能通常就可以修正這個問題,詳見 %s",
"Cannot create \"data\" directory" : "無法建立 \"data\" 目錄",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "開放網頁伺服器存取根目錄通常就可以修正這個問題,詳見 %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "開放網頁伺服器存取根目錄通常就可以修正權限問題,詳見 %s",
@@ -210,10 +207,8 @@ OC.L10N.register(
"Storage connection error. %s" : "儲存空間連線錯誤。%s",
"Storage is temporarily not available" : "儲存空間暫時無法使用",
"Storage connection timeout. %s" : "儲存空間連線逾時。%s",
- "Create" : "建立",
- "Change" : "更改",
- "Delete" : "刪除",
- "Share" : "分享",
+ "Following databases are supported: %s" : "支援下列資料庫: %s",
+ "Following platforms are supported: %s" : "支援下列平台: %s",
"Overview" : "概觀",
"Basic settings" : "基本設定",
"Sharing" : "分享",
@@ -221,20 +216,6 @@ OC.L10N.register(
"Groupware" : "協作應用程式",
"Personal info" : "個人資訊",
"Mobile & desktop" : "行動裝置及桌面",
- "Unlimited" : "無限",
- "Verifying" : "驗證中",
- "Verifying …" : "驗證中…",
- "Verify" : "驗證",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "分享 %s失敗,不允許分享這樣的 %i 類別",
- "Sharing %s failed, because the file does not exist" : "分享 %s 失敗,因為檔案不存在",
- "Sharing %s failed, because you can not share with yourself" : "分享 %s 失敗,不能分享給自己",
- "You need to provide a password to create a public link, only protected links are allowed" : "您必須為公開連結設定一組密碼,我們只允許受密碼保護的連結",
- "Sharing %s failed, because sharing with links is not allowed" : "分享 %s 失敗,因為目前不允許使用連結分享",
- "Not allowed to create a federated share with the same user" : "不允許與同一個使用者建立聯邦分享",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "無法設定到期日,在分享之後,到期日不能設定為 %s 之後",
- "Cannot set expiration date. Expiration date is in the past" : "無法設定過去的日期為到期日",
- "Sharing failed, because the user %s is the original sharer" : "分享失敗,因為使用者 %s 即是原本的分享者",
- "Sharing %s failed, because resharing is not allowed" : "分享 %s 失敗,不允許重複分享",
- "Sharing %s failed, because the file could not be found in the file cache" : "分享 %s 失敗,因為在快取中找不到該檔案"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "開放網頁伺服器存取 apps 目錄,或是在設定檔中關閉 appstore 功能通常就可以修正這個問題,詳見 %s"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/zh_TW.json b/lib/l10n/zh_TW.json
index af6dd8908cd..83ffb833a1a 100644
--- a/lib/l10n/zh_TW.json
+++ b/lib/l10n/zh_TW.json
@@ -1,9 +1,8 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "無法寫入 \"config\" 目錄!",
"This can usually be fixed by giving the webserver write access to the config directory" : "允許網頁伺服器寫入 \"config\" 目錄通常可以解決這個問題",
- "See %s" : "見 %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "或者,如果您比較希望保留 config.php 的唯讀狀態,請在該設定檔中將 \"config_is_read_only\" 設定為 true。",
- "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "允許網頁伺服器寫入 \"config\" 目錄通常可以解決這個問題,詳見 %s",
+ "See %s" : "見 %s",
"Or, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it. See %s" : "或者,如果您比較希望保留 config.php 的唯讀狀態,請在該設定檔中將 \"config_is_read_only\" 設定為 true。見%s",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "應用程式 %1$s 中的檔案沒有被正確取代,請確認它的版本與伺服器相容。",
"Sample configuration detected" : "您目前正在使用範例設定",
@@ -19,12 +18,10 @@
"PHP %s or higher is required." : "需要 PHP %s 或更高版本",
"PHP with a version lower than %s is required." : "需要 PHP 版本低於 %s ",
"%sbit or higher PHP required." : "%s 或需要更高階版本的php",
- "Following databases are supported: %s" : "支援下列資料庫: %s",
"The command line tool %s could not be found" : "找不到命令列工具指令 %s",
"The library %s is not available." : "套件庫 %s 無法使用",
"Library %1$s with a version higher than %2$s is required - available version %3$s." : "需要使用 %2$s 版以上的 %1$s 函式庫,目前可用的版本是 %3$s",
"Library %1$s with a version lower than %2$s is required - available version %3$s." : "需要使用 %2$s 版以下的 %1$s 函式庫,目前可用的版本是 %3$s",
- "Following platforms are supported: %s" : "支援下列平台: %s",
"Server version %s or higher is required." : "需要伺服器版本 %s 或更高",
"Server version %s or lower is required." : "需要伺服器版本 %s 或更低",
"Logged in user must be an admin or sub admin" : "登入的使用者必須要是管理員或是子管理員",
@@ -171,8 +168,8 @@
"Token expired. Please reload page." : "Token 過期,請重新整理頁面。",
"No database drivers (sqlite, mysql, or postgresql) installed." : "沒有安裝資料庫驅動程式 (sqlite, mysql, 或 postgresql)",
"Cannot write into \"config\" directory" : "無法寫入 config 目錄",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "允許網頁伺服器寫入 \"config\" 目錄通常可以解決這個問題,詳見 %s",
"Cannot write into \"apps\" directory" : "無法寫入 apps 目錄",
- "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "開放網頁伺服器存取 apps 目錄,或是在設定檔中關閉 appstore 功能通常就可以修正這個問題,詳見 %s",
"Cannot create \"data\" directory" : "無法建立 \"data\" 目錄",
"This can usually be fixed by giving the webserver write access to the root directory. See %s" : "開放網頁伺服器存取根目錄通常就可以修正這個問題,詳見 %s",
"Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "開放網頁伺服器存取根目錄通常就可以修正權限問題,詳見 %s",
@@ -208,10 +205,8 @@
"Storage connection error. %s" : "儲存空間連線錯誤。%s",
"Storage is temporarily not available" : "儲存空間暫時無法使用",
"Storage connection timeout. %s" : "儲存空間連線逾時。%s",
- "Create" : "建立",
- "Change" : "更改",
- "Delete" : "刪除",
- "Share" : "分享",
+ "Following databases are supported: %s" : "支援下列資料庫: %s",
+ "Following platforms are supported: %s" : "支援下列平台: %s",
"Overview" : "概觀",
"Basic settings" : "基本設定",
"Sharing" : "分享",
@@ -219,20 +214,6 @@
"Groupware" : "協作應用程式",
"Personal info" : "個人資訊",
"Mobile & desktop" : "行動裝置及桌面",
- "Unlimited" : "無限",
- "Verifying" : "驗證中",
- "Verifying …" : "驗證中…",
- "Verify" : "驗證",
- "Sharing %s failed, because the backend does not allow shares from type %i" : "分享 %s失敗,不允許分享這樣的 %i 類別",
- "Sharing %s failed, because the file does not exist" : "分享 %s 失敗,因為檔案不存在",
- "Sharing %s failed, because you can not share with yourself" : "分享 %s 失敗,不能分享給自己",
- "You need to provide a password to create a public link, only protected links are allowed" : "您必須為公開連結設定一組密碼,我們只允許受密碼保護的連結",
- "Sharing %s failed, because sharing with links is not allowed" : "分享 %s 失敗,因為目前不允許使用連結分享",
- "Not allowed to create a federated share with the same user" : "不允許與同一個使用者建立聯邦分享",
- "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "無法設定到期日,在分享之後,到期日不能設定為 %s 之後",
- "Cannot set expiration date. Expiration date is in the past" : "無法設定過去的日期為到期日",
- "Sharing failed, because the user %s is the original sharer" : "分享失敗,因為使用者 %s 即是原本的分享者",
- "Sharing %s failed, because resharing is not allowed" : "分享 %s 失敗,不允許重複分享",
- "Sharing %s failed, because the file could not be found in the file cache" : "分享 %s 失敗,因為在快取中找不到該檔案"
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "開放網頁伺服器存取 apps 目錄,或是在設定檔中關閉 appstore 功能通常就可以修正這個問題,詳見 %s"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/private/Accounts/Account.php b/lib/private/Accounts/Account.php
index 3702458ec6b..e7aeb6fa1e9 100644
--- a/lib/private/Accounts/Account.php
+++ b/lib/private/Accounts/Account.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
@@ -60,7 +61,7 @@ class Account implements IAccount {
}
public function getFilteredProperties(string $scope = null, string $verified = null): array {
- return \array_filter($this->properties, function(IAccountProperty $obj) use ($scope, $verified){
+ return \array_filter($this->properties, function (IAccountProperty $obj) use ($scope, $verified) {
if ($scope !== null && $scope !== $obj->getScope()) {
return false;
}
diff --git a/lib/private/Accounts/AccountManager.php b/lib/private/Accounts/AccountManager.php
index 5f2ea465ed7..7b99fb0a410 100644
--- a/lib/private/Accounts/AccountManager.php
+++ b/lib/private/Accounts/AccountManager.php
@@ -148,7 +148,7 @@ class AccountManager implements IAccountManager {
$userDataArray = json_decode($result[0]['data'], true);
$jsonError = json_last_error();
- if ($userDataArray === null || $jsonError !== JSON_ERROR_NONE) {
+ if ($userDataArray === null || $userDataArray === [] || $jsonError !== JSON_ERROR_NONE) {
$this->logger->critical("User data of $uid contained invalid JSON (error $jsonError), hence falling back to a default user record");
return $this->buildDefaultUserRecord($user);
}
@@ -191,7 +191,6 @@ class AccountManager implements IAccountManager {
* @return array
*/
protected function addMissingDefaultValues(array $userData) {
-
foreach ($userData as $key => $value) {
if (!isset($userData[$key]['verified'])) {
$userData[$key]['verified'] = self::NOT_VERIFIED;
@@ -216,45 +215,44 @@ class AccountManager implements IAccountManager {
$emailVerified = isset($oldData[self::PROPERTY_EMAIL]['verified']) && $oldData[self::PROPERTY_EMAIL]['verified'] === self::VERIFIED;
// keep old verification status if we don't have a new one
- if(!isset($newData[self::PROPERTY_TWITTER]['verified'])) {
+ if (!isset($newData[self::PROPERTY_TWITTER]['verified'])) {
// keep old verification status if value didn't changed and an old value exists
$keepOldStatus = $newData[self::PROPERTY_TWITTER]['value'] === $oldData[self::PROPERTY_TWITTER]['value'] && isset($oldData[self::PROPERTY_TWITTER]['verified']);
$newData[self::PROPERTY_TWITTER]['verified'] = $keepOldStatus ? $oldData[self::PROPERTY_TWITTER]['verified'] : self::NOT_VERIFIED;
}
- if(!isset($newData[self::PROPERTY_WEBSITE]['verified'])) {
+ if (!isset($newData[self::PROPERTY_WEBSITE]['verified'])) {
// keep old verification status if value didn't changed and an old value exists
$keepOldStatus = $newData[self::PROPERTY_WEBSITE]['value'] === $oldData[self::PROPERTY_WEBSITE]['value'] && isset($oldData[self::PROPERTY_WEBSITE]['verified']);
$newData[self::PROPERTY_WEBSITE]['verified'] = $keepOldStatus ? $oldData[self::PROPERTY_WEBSITE]['verified'] : self::NOT_VERIFIED;
}
- if(!isset($newData[self::PROPERTY_EMAIL]['verified'])) {
+ if (!isset($newData[self::PROPERTY_EMAIL]['verified'])) {
// keep old verification status if value didn't changed and an old value exists
$keepOldStatus = $newData[self::PROPERTY_EMAIL]['value'] === $oldData[self::PROPERTY_EMAIL]['value'] && isset($oldData[self::PROPERTY_EMAIL]['verified']);
$newData[self::PROPERTY_EMAIL]['verified'] = $keepOldStatus ? $oldData[self::PROPERTY_EMAIL]['verified'] : self::VERIFICATION_IN_PROGRESS;
}
// reset verification status if a value from a previously verified data was changed
- if($twitterVerified &&
+ if ($twitterVerified &&
$oldData[self::PROPERTY_TWITTER]['value'] !== $newData[self::PROPERTY_TWITTER]['value']
) {
$newData[self::PROPERTY_TWITTER]['verified'] = self::NOT_VERIFIED;
}
- if($websiteVerified &&
+ if ($websiteVerified &&
$oldData[self::PROPERTY_WEBSITE]['value'] !== $newData[self::PROPERTY_WEBSITE]['value']
) {
$newData[self::PROPERTY_WEBSITE]['verified'] = self::NOT_VERIFIED;
}
- if($emailVerified &&
+ if ($emailVerified &&
$oldData[self::PROPERTY_EMAIL]['value'] !== $newData[self::PROPERTY_EMAIL]['value']
) {
$newData[self::PROPERTY_EMAIL]['verified'] = self::NOT_VERIFIED;
}
return $newData;
-
}
/**
@@ -346,7 +344,7 @@ class AccountManager implements IAccountManager {
private function parseAccountData(IUser $user, $data): Account {
$account = new Account($user);
- foreach($data as $property => $accountData) {
+ foreach ($data as $property => $accountData) {
$account->setProperty($property, $accountData['value'] ?? '', $accountData['scope'] ?? self::VISIBILITY_PRIVATE, $accountData['verified'] ?? self::NOT_VERIFIED);
}
return $account;
@@ -355,5 +353,4 @@ class AccountManager implements IAccountManager {
public function getAccount(IUser $user): IAccount {
return $this->parseAccountData($user, $this->getUser($user));
}
-
}
diff --git a/lib/private/Accounts/Hooks.php b/lib/private/Accounts/Hooks.php
index 17eb7a3cf5a..2288b884c5c 100644
--- a/lib/private/Accounts/Hooks.php
+++ b/lib/private/Accounts/Hooks.php
@@ -50,7 +50,6 @@ class Hooks {
* @param array $params
*/
public function changeUserHook($params) {
-
$accountManager = $this->getAccountManager();
/** @var IUser $user */
@@ -79,7 +78,6 @@ class Hooks {
}
break;
}
-
}
/**
@@ -93,5 +91,4 @@ class Hooks {
}
return $this->accountManager;
}
-
}
diff --git a/lib/private/Activity/Event.php b/lib/private/Activity/Event.php
index dcd854b9fe0..4958cdfd46e 100644
--- a/lib/private/Activity/Event.php
+++ b/lib/private/Activity/Event.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Phil Davis <phil.davis@inf.org>
*
@@ -524,10 +525,10 @@ class Event implements IEvent {
$this->getTimestamp() !== 0
/**
* Disabled for BC with old activities
- &&
- $this->getObjectType() !== ''
- &&
- $this->getObjectId() !== 0
+ * &&
+ * $this->getObjectType() !== ''
+ * &&
+ * $this->getObjectId() !== 0
*/
;
}
diff --git a/lib/private/Activity/EventMerger.php b/lib/private/Activity/EventMerger.php
index 35c798afe49..d2caad42fa7 100644
--- a/lib/private/Activity/EventMerger.php
+++ b/lib/private/Activity/EventMerger.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Julius Härtl <jus@bitgrid.net>
*
@@ -248,7 +249,7 @@ class EventMerger implements IEventMerger {
$placeholders[] = '{' . $placeholder . '}';
if ($parameter['type'] === 'file') {
$replacements[] = trim($parameter['path'], '/');
- } else if (isset($parameter['name'])) {
+ } elseif (isset($parameter['name'])) {
$replacements[] = $parameter['name'];
} else {
$replacements[] = $parameter['id'];
diff --git a/lib/private/Activity/Manager.php b/lib/private/Activity/Manager.php
index 8a3c5b81427..ffe6c335b27 100644
--- a/lib/private/Activity/Manager.php
+++ b/lib/private/Activity/Manager.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Kesselberg <mail@danielkesselberg.de>
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -27,7 +28,6 @@
namespace OC\Activity;
-
use OCP\Activity\IConsumer;
use OCP\Activity\IEvent;
use OCP\Activity\IFilter;
@@ -76,10 +76,10 @@ class Manager implements IManager {
}
/** @var \Closure[] */
- private $consumersClosures = array();
+ private $consumersClosures = [];
/** @var IConsumer[] */
- private $consumers = array();
+ private $consumers = [];
/**
* @return \OCP\Activity\IConsumer[]
@@ -90,7 +90,7 @@ class Manager implements IManager {
}
$this->consumers = [];
- foreach($this->consumersClosures as $consumer) {
+ foreach ($this->consumersClosures as $consumer) {
$c = $consumer();
if ($c instanceof IConsumer) {
$this->consumers[] = $c;
@@ -385,5 +385,4 @@ class Manager implements IManager {
// Token found login as that user
return array_shift($users);
}
-
}
diff --git a/lib/private/AllConfig.php b/lib/private/AllConfig.php
index 2eca9d55b28..5218d969b47 100644
--- a/lib/private/AllConfig.php
+++ b/lib/private/AllConfig.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Loki3000 <github@labcms.ru>
@@ -30,6 +31,7 @@
*/
namespace OC;
+
use OC\Cache\CappedMemoryCache;
use OCP\IDBConnection;
use OCP\PreConditionNotMetException;
@@ -88,7 +90,7 @@ class AllConfig implements \OCP\IConfig {
* because the database connection was created with an uninitialized config
*/
private function fixDIInit() {
- if($this->connection === null) {
+ if ($this->connection === null) {
$this->connection = \OC::$server->getDatabaseConnection();
}
}
@@ -128,7 +130,7 @@ class AllConfig implements \OCP\IConfig {
* Looks up a boolean system wide defined value
*
* @param string $key the key of the value, under which it was saved
- * @param mixed $default the default value to be returned if the value isn't set
+ * @param bool $default the default value to be returned if the value isn't set
*
* @return bool
*
@@ -142,7 +144,7 @@ class AllConfig implements \OCP\IConfig {
* Looks up an integer system wide defined value
*
* @param string $key the key of the value, under which it was saved
- * @param mixed $default the default value to be returned if the value isn't set
+ * @param int $default the default value to be returned if the value isn't set
*
* @return int
*
@@ -156,7 +158,7 @@ class AllConfig implements \OCP\IConfig {
* Looks up a string system wide defined value
*
* @param string $key the key of the value, under which it was saved
- * @param mixed $default the default value to be returned if the value isn't set
+ * @param string $default the default value to be returned if the value isn't set
*
* @return string
*
@@ -263,7 +265,7 @@ class AllConfig implements \OCP\IConfig {
if ($prevValue !== null) {
if ($prevValue === (string)$value) {
return;
- } else if ($preCondition !== null && $prevValue !== (string)$preCondition) {
+ } elseif ($preCondition !== null && $prevValue !== (string)$preCondition) {
throw new PreConditionNotMetException();
} else {
$qb = $this->connection->getQueryBuilder();
@@ -297,7 +299,7 @@ class AllConfig implements \OCP\IConfig {
// only add to the cache if we already loaded data for the user
if (isset($this->userCache[$userId])) {
if (!isset($this->userCache[$userId][$appName])) {
- $this->userCache[$userId][$appName] = array();
+ $this->userCache[$userId][$appName] = [];
}
$this->userCache[$userId][$appName][$key] = (string)$value;
}
@@ -333,7 +335,7 @@ class AllConfig implements \OCP\IConfig {
if (isset($data[$appName])) {
return array_keys($data[$appName]);
} else {
- return array();
+ return [];
}
}
@@ -350,7 +352,7 @@ class AllConfig implements \OCP\IConfig {
$sql = 'DELETE FROM `*PREFIX*preferences` '.
'WHERE `userid` = ? AND `appid` = ? AND `configkey` = ?';
- $this->connection->executeUpdate($sql, array($userId, $appName, $key));
+ $this->connection->executeUpdate($sql, [$userId, $appName, $key]);
if (isset($this->userCache[$userId]) and isset($this->userCache[$userId][$appName])) {
unset($this->userCache[$userId][$appName][$key]);
@@ -368,7 +370,7 @@ class AllConfig implements \OCP\IConfig {
$sql = 'DELETE FROM `*PREFIX*preferences` '.
'WHERE `userid` = ?';
- $this->connection->executeUpdate($sql, array($userId));
+ $this->connection->executeUpdate($sql, [$userId]);
unset($this->userCache[$userId]);
}
@@ -384,7 +386,7 @@ class AllConfig implements \OCP\IConfig {
$sql = 'DELETE FROM `*PREFIX*preferences` '.
'WHERE `appid` = ?';
- $this->connection->executeUpdate($sql, array($appName));
+ $this->connection->executeUpdate($sql, [$appName]);
foreach ($this->userCache as &$userCache) {
unset($userCache[$appName]);
@@ -405,20 +407,20 @@ class AllConfig implements \OCP\IConfig {
return $this->userCache[$userId];
}
if ($userId === null || $userId === '') {
- $this->userCache[$userId]=array();
+ $this->userCache[$userId]=[];
return $this->userCache[$userId];
}
// TODO - FIXME
$this->fixDIInit();
- $data = array();
+ $data = [];
$query = 'SELECT `appid`, `configkey`, `configvalue` FROM `*PREFIX*preferences` WHERE `userid` = ?';
- $result = $this->connection->executeQuery($query, array($userId));
+ $result = $this->connection->executeQuery($query, [$userId]);
while ($row = $result->fetch()) {
$appId = $row['appid'];
if (!isset($data[$appId])) {
- $data[$appId] = array();
+ $data[$appId] = [];
}
$data[$appId][$row['configkey']] = $row['configvalue'];
}
@@ -439,13 +441,13 @@ class AllConfig implements \OCP\IConfig {
$this->fixDIInit();
if (empty($userIds) || !is_array($userIds)) {
- return array();
+ return [];
}
$chunkedUsers = array_chunk($userIds, 50, true);
$placeholders50 = implode(',', array_fill(0, 50, '?'));
- $userValues = array();
+ $userValues = [];
foreach ($chunkedUsers as $chunk) {
$queryParams = $chunk;
// create [$app, $key, $chunkedUsers]
@@ -483,16 +485,16 @@ class AllConfig implements \OCP\IConfig {
$sql = 'SELECT `userid` FROM `*PREFIX*preferences` ' .
'WHERE `appid` = ? AND `configkey` = ? ';
- if($this->getSystemValue('dbtype', 'sqlite') === 'oci') {
+ if ($this->getSystemValue('dbtype', 'sqlite') === 'oci') {
//oracle hack: need to explicitly cast CLOB to CHAR for comparison
$sql .= 'AND to_char(`configvalue`) = ?';
} else {
$sql .= 'AND `configvalue` = ?';
}
- $result = $this->connection->executeQuery($sql, array($appName, $key, $value));
+ $result = $this->connection->executeQuery($sql, [$appName, $key, $value]);
- $userIDs = array();
+ $userIDs = [];
while ($row = $result->fetch()) {
$userIDs[] = $row['userid'];
}
@@ -515,16 +517,16 @@ class AllConfig implements \OCP\IConfig {
$sql = 'SELECT `userid` FROM `*PREFIX*preferences` ' .
'WHERE `appid` = ? AND `configkey` = ? ';
- if($this->getSystemValue('dbtype', 'sqlite') === 'oci') {
+ if ($this->getSystemValue('dbtype', 'sqlite') === 'oci') {
//oracle hack: need to explicitly cast CLOB to CHAR for comparison
$sql .= 'AND LOWER(to_char(`configvalue`)) = LOWER(?)';
} else {
$sql .= 'AND LOWER(`configvalue`) = LOWER(?)';
}
- $result = $this->connection->executeQuery($sql, array($appName, $key, $value));
+ $result = $this->connection->executeQuery($sql, [$appName, $key, $value]);
- $userIDs = array();
+ $userIDs = [];
while ($row = $result->fetch()) {
$userIDs[] = $row['userid'];
}
diff --git a/lib/private/App/AppManager.php b/lib/private/App/AppManager.php
index 937cc511985..f756664e457 100644
--- a/lib/private/App/AppManager.php
+++ b/lib/private/App/AppManager.php
@@ -5,6 +5,7 @@
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Christoph Schaefer "christophł@wolkesicher.de"
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Kesselberg <mail@danielkesselberg.de>
* @author Daniel Rudolf <github.com@daniel-rudolf.de>
* @author Greta Doci <gretadoci@gmail.com>
@@ -135,7 +136,7 @@ class AppManager implements IAppManager {
$values = $this->appConfig->getValues(false, 'enabled');
$alwaysEnabledApps = $this->getAlwaysEnabledApps();
- foreach($alwaysEnabledApps as $appId) {
+ foreach ($alwaysEnabledApps as $appId) {
$values[$appId] = 'yes';
}
@@ -240,7 +241,7 @@ class AppManager implements IAppManager {
} elseif ($user === null) {
return false;
} else {
- if(empty($enabled)){
+ if (empty($enabled)) {
return false;
}
@@ -384,7 +385,6 @@ class AppManager implements IAppManager {
ManagerEvent::EVENT_APP_ENABLE_FOR_GROUPS, $appId, $groups
));
$this->clearAppsCache();
-
}
/**
@@ -427,7 +427,7 @@ class AppManager implements IAppManager {
*/
public function getAppPath($appId) {
$appPath = \OC_App::getAppPath($appId);
- if($appPath === false) {
+ if ($appPath === false) {
throw new AppPathNotFoundException('Could not find path for ' . $appId);
}
return $appPath;
@@ -442,7 +442,7 @@ class AppManager implements IAppManager {
*/
public function getAppWebPath(string $appId): string {
$appWebPath = \OC_App::getAppWebPath($appId);
- if($appWebPath === false) {
+ if ($appWebPath === false) {
throw new AppPathNotFoundException('Could not find web path for ' . $appId);
}
return $appWebPath;
@@ -522,7 +522,7 @@ class AppManager implements IAppManager {
}
public function getAppVersion(string $appId, bool $useCache = true): string {
- if(!$useCache || !isset($this->appVersions[$appId])) {
+ if (!$useCache || !isset($this->appVersions[$appId])) {
$appInfo = $this->getAppInfo($appId);
$this->appVersions[$appId] = ($appInfo !== null && isset($appInfo['version'])) ? $appInfo['version'] : '0';
}
@@ -540,12 +540,12 @@ class AppManager implements IAppManager {
*/
public function getIncompatibleApps(string $version): array {
$apps = $this->getInstalledApps();
- $incompatibleApps = array();
+ $incompatibleApps = [];
foreach ($apps as $appId) {
$info = $this->getAppInfo($appId);
if ($info === null) {
$incompatibleApps[] = ['id' => $appId];
- } else if (!\OC_App::isAppCompatible($version, $info)) {
+ } elseif (!\OC_App::isAppCompatible($version, $info)) {
$incompatibleApps[] = $info;
}
}
diff --git a/lib/private/App/AppStore/Bundles/Bundle.php b/lib/private/App/AppStore/Bundles/Bundle.php
index d6b74ff3b6b..1143558d2ef 100644
--- a/lib/private/App/AppStore/Bundles/Bundle.php
+++ b/lib/private/App/AppStore/Bundles/Bundle.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
*
* @license GNU AGPL version 3 or any later version
@@ -41,7 +42,7 @@ abstract class Bundle {
*
* @return string
*/
- public final function getIdentifier() {
+ final public function getIdentifier() {
return substr(strrchr(get_class($this), '\\'), 1);
}
@@ -50,12 +51,12 @@ abstract class Bundle {
*
* @return string
*/
- public abstract function getName();
+ abstract public function getName();
/**
* Get the list of app identifiers in the bundle
*
* @return array
*/
- public abstract function getAppIdentifiers();
+ abstract public function getAppIdentifiers();
}
diff --git a/lib/private/App/AppStore/Bundles/BundleFetcher.php b/lib/private/App/AppStore/Bundles/BundleFetcher.php
index 5a36907094a..3ceb049fda8 100644
--- a/lib/private/App/AppStore/Bundles/BundleFetcher.php
+++ b/lib/private/App/AppStore/Bundles/BundleFetcher.php
@@ -2,6 +2,8 @@
/**
* @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
*
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
*
* @license GNU AGPL version 3 or any later version
@@ -73,8 +75,8 @@ class BundleFetcher {
$this->getBundles(),
$this->getDefaultInstallationBundle()
);
- foreach($bundles as $bundle) {
- if($bundle->getIdentifier() === $identifier) {
+ foreach ($bundles as $bundle) {
+ if ($bundle->getIdentifier() === $identifier) {
return $bundle;
}
}
diff --git a/lib/private/App/AppStore/Bundles/CoreBundle.php b/lib/private/App/AppStore/Bundles/CoreBundle.php
index 6dcaedab3e1..4e28d673883 100644
--- a/lib/private/App/AppStore/Bundles/CoreBundle.php
+++ b/lib/private/App/AppStore/Bundles/CoreBundle.php
@@ -40,5 +40,4 @@ class CoreBundle extends Bundle {
'bruteforcesettings',
];
}
-
}
diff --git a/lib/private/App/AppStore/Bundles/EducationBundle.php b/lib/private/App/AppStore/Bundles/EducationBundle.php
index d848befc562..05d6fbbd9d7 100644
--- a/lib/private/App/AppStore/Bundles/EducationBundle.php
+++ b/lib/private/App/AppStore/Bundles/EducationBundle.php
@@ -37,16 +37,12 @@ class EducationBundle extends Bundle {
*/
public function getAppIdentifiers() {
return [
- 'zenodo',
'dashboard',
'circles',
'groupfolders',
'announcementcenter',
- 'admin_notifications',
'quota_warning',
- 'orcid',
'user_saml',
];
}
-
}
diff --git a/lib/private/App/AppStore/Bundles/EnterpriseBundle.php b/lib/private/App/AppStore/Bundles/EnterpriseBundle.php
index 63faaf8e308..37213fe5a39 100644
--- a/lib/private/App/AppStore/Bundles/EnterpriseBundle.php
+++ b/lib/private/App/AppStore/Bundles/EnterpriseBundle.php
@@ -47,5 +47,4 @@ class EnterpriseBundle extends Bundle {
'terms_of_service',
];
}
-
}
diff --git a/lib/private/App/AppStore/Bundles/GroupwareBundle.php b/lib/private/App/AppStore/Bundles/GroupwareBundle.php
index d1726c7fa5f..49ae1068b10 100644
--- a/lib/private/App/AppStore/Bundles/GroupwareBundle.php
+++ b/lib/private/App/AppStore/Bundles/GroupwareBundle.php
@@ -44,5 +44,4 @@ class GroupwareBundle extends Bundle {
'mail'
];
}
-
}
diff --git a/lib/private/App/AppStore/Bundles/HubBundle.php b/lib/private/App/AppStore/Bundles/HubBundle.php
index cef0c6302e3..18dd9093623 100644
--- a/lib/private/App/AppStore/Bundles/HubBundle.php
+++ b/lib/private/App/AppStore/Bundles/HubBundle.php
@@ -1,5 +1,7 @@
<?php
+
declare(strict_types=1);
+
/**
* @copyright Copyright (c) 2020 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
@@ -18,14 +20,13 @@ declare(strict_types=1);
* 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/>.
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OC\App\AppStore\Bundles;
class HubBundle extends Bundle {
-
public function getName() {
return $this->l10n->t('Hub bundle');
}
diff --git a/lib/private/App/AppStore/Bundles/SocialSharingBundle.php b/lib/private/App/AppStore/Bundles/SocialSharingBundle.php
index 860f983eaa1..8ce4d1080ff 100644
--- a/lib/private/App/AppStore/Bundles/SocialSharingBundle.php
+++ b/lib/private/App/AppStore/Bundles/SocialSharingBundle.php
@@ -43,5 +43,4 @@ class SocialSharingBundle extends Bundle {
'socialsharing_diaspora',
];
}
-
}
diff --git a/lib/private/App/AppStore/Fetcher/AppFetcher.php b/lib/private/App/AppStore/Fetcher/AppFetcher.php
index d6affe4f09b..e4c2ba4e85e 100644
--- a/lib/private/App/AppStore/Fetcher/AppFetcher.php
+++ b/lib/private/App/AppStore/Fetcher/AppFetcher.php
@@ -4,6 +4,7 @@
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @author Georg Ehrke <oc.list@georgehrke.com>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -35,7 +36,6 @@ use OCP\AppFramework\Utility\ITimeFactory;
use OCP\Http\Client\IClientService;
use OCP\IConfig;
use OCP\ILogger;
-use OCP\Util;
class AppFetcher extends Fetcher {
@@ -88,11 +88,11 @@ class AppFetcher extends Fetcher {
$allowPreReleases = $this->getChannel() === 'beta' || $this->getChannel() === 'daily';
$allowNightly = $this->getChannel() === 'daily';
- foreach($response['data'] as $dataKey => $app) {
+ foreach ($response['data'] as $dataKey => $app) {
$releases = [];
// Filter all compatible releases
- foreach($app['releases'] as $release) {
+ foreach ($app['releases'] as $release) {
// Exclude all nightly and pre-releases if required
if (($allowNightly || $release['isNightly'] === false)
&& ($allowPreReleases || strpos($release['version'], '-') === false)) {
@@ -123,12 +123,12 @@ class AppFetcher extends Fetcher {
// Get the highest version
$versions = [];
- foreach($releases as $release) {
+ foreach ($releases as $release) {
$versions[] = $release['version'];
}
usort($versions, 'version_compare');
$versions = array_reverse($versions);
- if(isset($versions[0])) {
+ if (isset($versions[0])) {
$highestVersion = $versions[0];
foreach ($releases as $release) {
if ((string)$release['version'] === (string)$highestVersion) {
diff --git a/lib/private/App/AppStore/Fetcher/CategoryFetcher.php b/lib/private/App/AppStore/Fetcher/CategoryFetcher.php
index 7fd3969cd04..e34fbee8c58 100644
--- a/lib/private/App/AppStore/Fetcher/CategoryFetcher.php
+++ b/lib/private/App/AppStore/Fetcher/CategoryFetcher.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
+ * @author Georg Ehrke <oc.list@georgehrke.com>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
diff --git a/lib/private/App/AppStore/Fetcher/Fetcher.php b/lib/private/App/AppStore/Fetcher/Fetcher.php
index e2876dd28c6..bb39637891f 100644
--- a/lib/private/App/AppStore/Fetcher/Fetcher.php
+++ b/lib/private/App/AppStore/Fetcher/Fetcher.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Kesselberg <mail@danielkesselberg.de>
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Joas Schilling <coding@schilljs.com>
@@ -38,10 +39,9 @@ use OCP\Files\NotFoundException;
use OCP\Http\Client\IClientService;
use OCP\IConfig;
use OCP\ILogger;
-use OCP\Util;
abstract class Fetcher {
- const INVALIDATE_AFTER_SECONDS = 300;
+ public const INVALIDATE_AFTER_SECONDS = 3600;
/** @var IAppData */
protected $appData;
@@ -153,7 +153,7 @@ abstract class Fetcher {
// No caching when the version has been updated
if (isset($jsonBlob['ncversion']) && $jsonBlob['ncversion'] === $this->getVersion()) {
- // If the timestamp is older than 300 seconds request the files new
+ // If the timestamp is older than 3600 seconds request the files new
if ((int)$jsonBlob['timestamp'] > ($this->timeFactory->getTime() - self::INVALIDATE_AFTER_SECONDS)) {
return $jsonBlob['data'];
}
diff --git a/lib/private/App/AppStore/Version/VersionParser.php b/lib/private/App/AppStore/Version/VersionParser.php
index 36bc255175c..b2e2f163ac4 100644
--- a/lib/private/App/AppStore/Version/VersionParser.php
+++ b/lib/private/App/AppStore/Version/VersionParser.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
*
@@ -47,7 +48,7 @@ class VersionParser {
*/
public function getVersion($versionSpec) {
// * indicates that the version is compatible with all versions
- if($versionSpec === '*') {
+ if ($versionSpec === '*') {
return new Version('', '');
}
@@ -59,17 +60,17 @@ class VersionParser {
$secondVersion = isset($versionElements[1]) ? $versionElements[1] : '';
$secondVersionNumber = substr($secondVersion, 2);
- switch(count($versionElements)) {
+ switch (count($versionElements)) {
case 1:
- if(!$this->isValidVersionString($firstVersionNumber)) {
+ if (!$this->isValidVersionString($firstVersionNumber)) {
break;
}
- if(strpos($firstVersion, '>') === 0) {
+ if (strpos($firstVersion, '>') === 0) {
return new Version($firstVersionNumber, '');
}
return new Version('', $firstVersionNumber);
case 2:
- if(!$this->isValidVersionString($firstVersionNumber) || !$this->isValidVersionString($secondVersionNumber)) {
+ if (!$this->isValidVersionString($firstVersionNumber) || !$this->isValidVersionString($secondVersionNumber)) {
break;
}
return new Version($firstVersionNumber, $secondVersionNumber);
diff --git a/lib/private/App/CodeChecker/CodeChecker.php b/lib/private/App/CodeChecker/CodeChecker.php
index 53fee7482ef..13d6ff887f3 100644
--- a/lib/private/App/CodeChecker/CodeChecker.php
+++ b/lib/private/App/CodeChecker/CodeChecker.php
@@ -5,7 +5,6 @@
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
- * @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @license AGPL-3.0
@@ -37,15 +36,14 @@ use RegexIterator;
use SplFileInfo;
class CodeChecker extends BasicEmitter {
-
- const CLASS_EXTENDS_NOT_ALLOWED = 1000;
- const CLASS_IMPLEMENTS_NOT_ALLOWED = 1001;
- const STATIC_CALL_NOT_ALLOWED = 1002;
- const CLASS_CONST_FETCH_NOT_ALLOWED = 1003;
- const CLASS_NEW_NOT_ALLOWED = 1004;
- const OP_OPERATOR_USAGE_DISCOURAGED = 1005;
- const CLASS_USE_NOT_ALLOWED = 1006;
- const CLASS_METHOD_CALL_NOT_ALLOWED = 1007;
+ public const CLASS_EXTENDS_NOT_ALLOWED = 1000;
+ public const CLASS_IMPLEMENTS_NOT_ALLOWED = 1001;
+ public const STATIC_CALL_NOT_ALLOWED = 1002;
+ public const CLASS_CONST_FETCH_NOT_ALLOWED = 1003;
+ public const CLASS_NEW_NOT_ALLOWED = 1004;
+ public const OP_OPERATOR_USAGE_DISCOURAGED = 1005;
+ public const CLASS_USE_NOT_ALLOWED = 1006;
+ public const CLASS_METHOD_CALL_NOT_ALLOWED = 1007;
/** @var Parser */
private $parser;
@@ -89,14 +87,14 @@ class CodeChecker extends BasicEmitter {
$excludedDirectories[] = 'lists';
}
- $excludes = array_map(function($item) use ($folder) {
+ $excludes = array_map(function ($item) use ($folder) {
return $folder . '/' . $item;
}, $excludedDirectories);
$iterator = new RecursiveDirectoryIterator($folder, RecursiveDirectoryIterator::SKIP_DOTS);
- $iterator = new RecursiveCallbackFilterIterator($iterator, function($item) use ($excludes){
+ $iterator = new RecursiveCallbackFilterIterator($iterator, function ($item) use ($excludes) {
/** @var SplFileInfo $item */
- foreach($excludes as $exclude) {
+ foreach ($excludes as $exclude) {
if (substr($item->getPath(), 0, strlen($exclude)) === $exclude) {
return false;
}
diff --git a/lib/private/App/CodeChecker/InfoChecker.php b/lib/private/App/CodeChecker/InfoChecker.php
index 0db9571d48a..038fd34f436 100644
--- a/lib/private/App/CodeChecker/InfoChecker.php
+++ b/lib/private/App/CodeChecker/InfoChecker.php
@@ -24,8 +24,6 @@
namespace OC\App\CodeChecker;
use OC\Hooks\BasicEmitter;
-use OCP\App\AppPathNotFoundException;
-use OCP\App\IAppManager;
class InfoChecker extends BasicEmitter {
diff --git a/lib/private/App/CodeChecker/MigrationSchemaChecker.php b/lib/private/App/CodeChecker/MigrationSchemaChecker.php
index 8434dd72078..859daf25497 100644
--- a/lib/private/App/CodeChecker/MigrationSchemaChecker.php
+++ b/lib/private/App/CodeChecker/MigrationSchemaChecker.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
*
@@ -53,7 +54,6 @@ class MigrationSchemaChecker extends NodeVisitorAbstract {
$node->expr instanceof Node\Expr\MethodCall &&
$node->expr->var instanceof Node\Expr\Variable &&
$node->expr->var->name === $this->schemaVariableName) {
-
if ($node->expr->name === 'createTable') {
if (isset($node->expr->args[0]) && $node->expr->args[0]->value instanceof Node\Scalar\String_) {
if (!$this->checkNameLength($node->expr->args[0]->value->value)) {
@@ -66,16 +66,15 @@ class MigrationSchemaChecker extends NodeVisitorAbstract {
$this->tableVariableNames[$node->var->name] = $node->expr->args[0]->value->value;
}
}
- } else if ($node->expr->name === 'getTable') {
+ } elseif ($node->expr->name === 'getTable') {
if (isset($node->expr->args[0]) && $node->expr->args[0]->value instanceof Node\Scalar\String_) {
$this->tableVariableNames[$node->var->name] = $node->expr->args[0]->value->value;
}
}
- } else if ($this->schemaVariableName !== null &&
+ } elseif ($this->schemaVariableName !== null &&
$node instanceof Node\Expr\MethodCall &&
$node->var instanceof Node\Expr\Variable &&
$node->var->name === $this->schemaVariableName) {
-
if ($node->name === 'renameTable') {
$this->errors[] = [
'line' => $node->getLine(),
@@ -87,14 +86,13 @@ class MigrationSchemaChecker extends NodeVisitorAbstract {
];
}
- /**
- * Check columns and Indexes
- */
- } else if (!empty($this->tableVariableNames) &&
+ /**
+ * Check columns and Indexes
+ */
+ } elseif (!empty($this->tableVariableNames) &&
$node instanceof Node\Expr\MethodCall &&
$node->var instanceof Node\Expr\Variable &&
isset($this->tableVariableNames[$node->var->name])) {
-
if ($node->name === 'addColumn' || $node->name === 'changeColumn') {
if (isset($node->args[0]) && $node->args[0]->value instanceof Node\Scalar\String_) {
if (!$this->checkNameLength($node->args[0]->value->value)) {
@@ -123,7 +121,7 @@ class MigrationSchemaChecker extends NodeVisitorAbstract {
}
}
}
- } else if ($node->name === 'addIndex' ||
+ } elseif ($node->name === 'addIndex' ||
$node->name === 'addUniqueIndex' ||
$node->name === 'renameIndex' ||
$node->name === 'setPrimaryKey') {
@@ -139,7 +137,7 @@ class MigrationSchemaChecker extends NodeVisitorAbstract {
];
}
}
- } else if ($node->name === 'addForeignKeyConstraint') {
+ } elseif ($node->name === 'addForeignKeyConstraint') {
if (isset($node->args[4]) && $node->args[4]->value instanceof Node\Scalar\String_) {
if (!$this->checkNameLength($node->args[4]->value->value)) {
$this->errors[] = [
@@ -152,7 +150,7 @@ class MigrationSchemaChecker extends NodeVisitorAbstract {
];
}
}
- } else if ($node->name === 'renameColumn') {
+ } elseif ($node->name === 'renameColumn') {
$this->errors[] = [
'line' => $node->getLine(),
'disallowedToken' => 'Deprecated method',
@@ -163,10 +161,10 @@ class MigrationSchemaChecker extends NodeVisitorAbstract {
];
}
- /**
- * Find the schema
- */
- } else if ($node instanceof Node\Expr\Assign &&
+ /**
+ * Find the schema
+ */
+ } elseif ($node instanceof Node\Expr\Assign &&
$node->expr instanceof Node\Expr\FuncCall &&
$node->var instanceof Node\Expr\Variable &&
$node->expr->name instanceof Node\Expr\Variable &&
diff --git a/lib/private/App/CompareVersion.php b/lib/private/App/CompareVersion.php
index bf528e3f1b8..5d38d4c358e 100644
--- a/lib/private/App/CompareVersion.php
+++ b/lib/private/App/CompareVersion.php
@@ -26,11 +26,10 @@ namespace OC\App;
use InvalidArgumentException;
class CompareVersion {
-
- const REGEX_MAJOR = '/^\d+$/';
- const REGEX_MAJOR_MINOR = '/^\d+.\d+$/';
- const REGEX_MAJOR_MINOR_PATCH = '/^\d+.\d+.\d+$/';
- const REGEX_SERVER = '/^\d+.\d+.\d+(.\d+)?$/';
+ public const REGEX_MAJOR = '/^\d+$/';
+ public const REGEX_MAJOR_MINOR = '/^\d+.\d+$/';
+ public const REGEX_MAJOR_MINOR_PATCH = '/^\d+.\d+.\d+$/';
+ public const REGEX_SERVER = '/^\d+.\d+.\d+(.\d+)?$/';
/**
* Checks if the given server version fulfills the given (app) version requirements.
@@ -46,16 +45,15 @@ class CompareVersion {
*/
public function isCompatible(string $actual, string $required,
string $comparator = '>='): bool {
-
if (!preg_match(self::REGEX_SERVER, $actual)) {
throw new InvalidArgumentException('server version is invalid');
}
if (preg_match(self::REGEX_MAJOR, $required) === 1) {
return $this->compareMajor($actual, $required, $comparator);
- } else if (preg_match(self::REGEX_MAJOR_MINOR, $required) === 1) {
+ } elseif (preg_match(self::REGEX_MAJOR_MINOR, $required) === 1) {
return $this->compareMajorMinor($actual, $required, $comparator);
- } else if (preg_match(self::REGEX_MAJOR_MINOR_PATCH, $required) === 1) {
+ } elseif (preg_match(self::REGEX_MAJOR_MINOR_PATCH, $required) === 1) {
return $this->compareMajorMinorPatch($actual, $required, $comparator);
} else {
throw new InvalidArgumentException('required version is invalid');
@@ -92,5 +90,4 @@ class CompareVersion {
return version_compare("$actualMajor.$actualMinor.$actualPatch",
"$requiredMajor.$requiredMinor.$requiredPatch", $comparator);
}
-
}
diff --git a/lib/private/App/DependencyAnalyzer.php b/lib/private/App/DependencyAnalyzer.php
index a59e8c21735..63d84cd5a43 100644
--- a/lib/private/App/DependencyAnalyzer.php
+++ b/lib/private/App/DependencyAnalyzer.php
@@ -4,6 +4,7 @@
* @copyright Copyright (c) 2016, Lukas Reschke <lukas@statuscode.ch>
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -29,7 +30,6 @@
namespace OC\App;
-use OCP\IConfig;
use OCP\IL10N;
class DependencyAnalyzer {
@@ -188,14 +188,14 @@ class DependencyAnalyzer {
return $missing;
}
if (!is_array($supportedDatabases)) {
- $supportedDatabases = array($supportedDatabases);
+ $supportedDatabases = [$supportedDatabases];
}
$supportedDatabases = array_map(function ($db) {
return $this->getValue($db);
}, $supportedDatabases);
$currentDatabase = $this->platform->getDatabase();
if (!in_array($currentDatabase, $supportedDatabases)) {
- $missing[] = (string)$this->l->t('Following databases are supported: %s', [implode(', ', $supportedDatabases)]);
+ $missing[] = (string)$this->l->t('The following databases are supported: %s', [implode(', ', $supportedDatabases)]);
}
return $missing;
}
@@ -212,7 +212,7 @@ class DependencyAnalyzer {
$commands = $dependencies['command'];
if (!is_array($commands)) {
- $commands = array($commands);
+ $commands = [$commands];
}
if (isset($commands['@value'])) {
$commands = [$commands];
@@ -242,7 +242,7 @@ class DependencyAnalyzer {
$libs = $dependencies['lib'];
if (!is_array($libs)) {
- $libs = array($libs);
+ $libs = [$libs];
}
if (isset($libs['@value'])) {
$libs = [$libs];
@@ -294,11 +294,11 @@ class DependencyAnalyzer {
return $this->getValue($os);
}, $oss);
} else {
- $oss = array($oss);
+ $oss = [$oss];
}
$currentOS = $this->platform->getOS();
if (!in_array($currentOS, $oss)) {
- $missing[] = (string)$this->l->t('Following platforms are supported: %s', [implode(', ', $oss)]);
+ $missing[] = (string)$this->l->t('The following platforms are supported: %s', [implode(', ', $oss)]);
}
return $missing;
}
diff --git a/lib/private/App/InfoParser.php b/lib/private/App/InfoParser.php
index 3d5bec2e829..6a56259a3f5 100644
--- a/lib/private/App/InfoParser.php
+++ b/lib/private/App/InfoParser.php
@@ -246,7 +246,7 @@ class InfoParser {
$data = [
'@attributes' => [],
];
- if (!count($node->children())){
+ if (!count($node->children())) {
$value = (string)$node;
if (!empty($value)) {
$data['@value'] = (string)$node;
diff --git a/lib/private/App/Platform.php b/lib/private/App/Platform.php
index 45b00c20219..4a64177232f 100644
--- a/lib/private/App/Platform.php
+++ b/lib/private/App/Platform.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
@@ -38,7 +39,7 @@ class Platform {
/**
* @param IConfig $config
*/
- function __construct(IConfig $config) {
+ public function __construct(IConfig $config) {
$this->config = $config;
}
diff --git a/lib/private/App/PlatformRepository.php b/lib/private/App/PlatformRepository.php
index c285554ae1c..816470e1202 100644
--- a/lib/private/App/PlatformRepository.php
+++ b/lib/private/App/PlatformRepository.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
@@ -38,11 +39,11 @@ class PlatformRepository {
protected function initialize() {
$loadedExtensions = get_loaded_extensions();
- $packages = array();
+ $packages = [];
// Extensions scanning
foreach ($loadedExtensions as $name) {
- if (in_array($name, array('standard', 'Core'))) {
+ if (in_array($name, ['standard', 'Core'])) {
continue;
}
diff --git a/lib/private/AppConfig.php b/lib/private/AppConfig.php
index e562870aa7f..97338c1895b 100644
--- a/lib/private/AppConfig.php
+++ b/lib/private/AppConfig.php
@@ -5,6 +5,7 @@
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jakob Sack <mail@jakobsack.de>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
@@ -284,7 +285,7 @@ class AppConfig implements IAppConfig {
return $this->getAppValues($app);
} else {
$appIds = $this->getApps();
- $values = array_map(function($appId) use ($key) {
+ $values = array_map(function ($appId) use ($key) {
return isset($this->cache[$appId][$key]) ? $this->cache[$appId][$key] : null;
}, $appIds);
$result = array_combine($appIds, $values);
diff --git a/lib/private/AppFramework/App.php b/lib/private/AppFramework/App.php
index 2cbe623bb27..e02f372e41c 100644
--- a/lib/private/AppFramework/App.php
+++ b/lib/private/AppFramework/App.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -99,7 +100,7 @@ class App {
public static function main(string $controllerName, string $methodName, DIContainer $container, array $urlParams = null) {
if (!is_null($urlParams)) {
$container->query(IRequest::class)->setUrlParameters($urlParams);
- } else if (isset($container['urlParams']) && !is_null($container['urlParams'])) {
+ } elseif (isset($container['urlParams']) && !is_null($container['urlParams'])) {
$container->query(IRequest::class)->setUrlParameters($container['urlParams']);
}
$appName = $container['AppName'];
@@ -107,7 +108,7 @@ class App {
// first try $controllerName then go for \OCA\AppName\Controller\$controllerName
try {
$controller = $container->query($controllerName);
- } catch(QueryException $e) {
+ } catch (QueryException $e) {
if (strpos($controllerName, '\\Controller\\') !== false) {
// This is from a global registered app route that is not enabled.
[/*OC(A)*/, $app, /* Controller/Name*/] = explode('\\', $controllerName, 3);
@@ -137,17 +138,17 @@ class App {
$io = $container[IOutput::class];
- if(!is_null($httpHeaders)) {
+ if (!is_null($httpHeaders)) {
$io->setHeader($httpHeaders);
}
- foreach($responseHeaders as $name => $value) {
+ foreach ($responseHeaders as $name => $value) {
$io->setHeader($name . ': ' . $value);
}
- foreach($responseCookies as $name => $value) {
+ foreach ($responseCookies as $name => $value) {
$expireDate = null;
- if($value['expireDate'] instanceof \DateTime) {
+ if ($value['expireDate'] instanceof \DateTime) {
$expireDate = $value['expireDate']->getTimestamp();
}
$io->setCookie(
@@ -178,12 +179,11 @@ class App {
if (!$emptyResponse) {
if ($response instanceof ICallbackResponse) {
$response->callback($io);
- } else if (!is_null($output)) {
+ } elseif (!is_null($output)) {
$io->setHeader('Content-Length: ' . strlen($output));
$io->setOutput($output);
}
}
-
}
/**
@@ -199,8 +199,7 @@ class App {
* @param DIContainer $container an instance of a pimple container.
*/
public static function part(string $controllerName, string $methodName, array $urlParams,
- DIContainer $container){
-
+ DIContainer $container) {
$container['urlParams'] = $urlParams;
$controller = $container[$controllerName];
@@ -209,5 +208,4 @@ class App {
list(, , $output) = $dispatcher->dispatch($controller, $methodName);
return $output;
}
-
}
diff --git a/lib/private/AppFramework/DependencyInjection/DIContainer.php b/lib/private/AppFramework/DependencyInjection/DIContainer.php
index 1dbccf7590b..82a2780eb27 100644
--- a/lib/private/AppFramework/DependencyInjection/DIContainer.php
+++ b/lib/private/AppFramework/DependencyInjection/DIContainer.php
@@ -52,11 +52,12 @@ use OCA\WorkflowEngine\Manager;
use OCP\AppFramework\Http\IOutput;
use OCP\AppFramework\IAppContainer;
use OCP\AppFramework\QueryException;
+use OCP\AppFramework\Services\IAppConfig;
+use OCP\AppFramework\Services\IInitialState;
use OCP\AppFramework\Utility\IControllerMethodReflector;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\Files\Folder;
use OCP\Files\IAppData;
-use OCP\GlobalScale\IConfig;
use OCP\Group\ISubAdmin;
use OCP\IL10N;
use OCP\ILogger;
@@ -83,7 +84,7 @@ class DIContainer extends SimpleContainer implements IAppContainer {
* @param array $urlParams
* @param ServerContainer|null $server
*/
- public function __construct($appName, $urlParams = array(), ServerContainer $server = null){
+ public function __construct($appName, $urlParams = [], ServerContainer $server = null) {
parent::__construct();
$this['AppName'] = $appName;
$this['urlParams'] = $urlParams;
@@ -105,11 +106,11 @@ class DIContainer extends SimpleContainer implements IAppContainer {
/**
* Core services
*/
- $this->registerService(IOutput::class, function(){
+ $this->registerService(IOutput::class, function () {
return new Output($this->getServer()->getWebRoot());
});
- $this->registerService(Folder::class, function() {
+ $this->registerService(Folder::class, function () {
return $this->getServer()->getUserFolder();
});
@@ -117,7 +118,7 @@ class DIContainer extends SimpleContainer implements IAppContainer {
return $this->getServer()->getAppDataDir($c->query('AppName'));
});
- $this->registerService(IL10N::class, function($c) {
+ $this->registerService(IL10N::class, function ($c) {
return $this->getServer()->getL10N($c->query('AppName'));
});
@@ -152,18 +153,14 @@ class DIContainer extends SimpleContainer implements IAppContainer {
return $c->getServer()->getThemingDefaults();
});
- $this->registerService(IConfig::class, function ($c) {
- return $c->query(OC\GlobalScale\Config::class);
- });
-
- $this->registerService('Protocol', function($c){
+ $this->registerService('Protocol', function ($c) {
/** @var \OC\Server $server */
$server = $c->query('ServerContainer');
$protocol = $server->getRequest()->getHttpProtocol();
return new Http($_SERVER, $protocol);
});
- $this->registerService('Dispatcher', function($c) {
+ $this->registerService('Dispatcher', function ($c) {
return new Dispatcher(
$c['Protocol'],
$c['MiddlewareDispatcher'],
@@ -182,10 +179,17 @@ class DIContainer extends SimpleContainer implements IAppContainer {
/**
* Middleware
*/
- $this->registerService('MiddlewareDispatcher', function(SimpleContainer $c) {
+ $this->registerService('MiddlewareDispatcher', function (SimpleContainer $c) {
$server = $this->getServer();
$dispatcher = new MiddlewareDispatcher();
+
+ $dispatcher->registerMiddleware(
+ $c->query(OC\AppFramework\Middleware\CompressionMiddleware::class)
+ );
+
+ $dispatcher->registerMiddleware($c->query(OC\AppFramework\Middleware\NotModifiedMiddleware::class));
+
$dispatcher->registerMiddleware(
$c->query(OC\AppFramework\Middleware\Security\ReloadExecutionMiddleware::class)
);
@@ -278,7 +282,7 @@ class DIContainer extends SimpleContainer implements IAppContainer {
$c->query(\OC\AppFramework\Middleware\AdditionalScriptsMiddleware::class)
);
- foreach($this->middleWares as $middleWare) {
+ foreach ($this->middleWares as $middleWare) {
$dispatcher->registerMiddleware($c->query($middleWare));
}
@@ -291,15 +295,14 @@ class DIContainer extends SimpleContainer implements IAppContainer {
return $dispatcher;
});
- $this->registerAlias(\OCP\Collaboration\Resources\IProviderManager::class, OC\Collaboration\Resources\ProviderManager::class);
- $this->registerAlias(\OCP\Collaboration\Resources\IManager::class, OC\Collaboration\Resources\Manager::class);
+ $this->registerAlias(IAppConfig::class, OC\AppFramework\Services\AppConfig::class);
+ $this->registerAlias(IInitialState::class, OC\AppFramework\Services\InitialState::class);
}
/**
* @return \OCP\IServerContainer
*/
- public function getServer()
- {
+ public function getServer() {
return $this->server;
}
@@ -350,7 +353,7 @@ class DIContainer extends SimpleContainer implements IAppContainer {
* @return mixed
*/
public function log($message, $level) {
- switch($level){
+ switch ($level) {
case 'debug':
$level = ILogger::DEBUG;
break;
@@ -376,7 +379,7 @@ class DIContainer extends SimpleContainer implements IAppContainer {
* @param string $serviceName e.g. 'OCA\Files\Capabilities'
*/
public function registerCapability($serviceName) {
- $this->query('OC\CapabilitiesManager')->registerCapability(function() use ($serviceName) {
+ $this->query('OC\CapabilitiesManager')->registerCapability(function () use ($serviceName) {
return $this->query($serviceName);
});
}
@@ -409,9 +412,9 @@ class DIContainer extends SimpleContainer implements IAppContainer {
} else {
if ($this['AppName'] === 'settings' && strpos($name, 'OC\\Settings\\') === 0) {
return parent::query($name);
- } else if ($this['AppName'] === 'core' && strpos($name, 'OC\\Core\\') === 0) {
+ } elseif ($this['AppName'] === 'core' && strpos($name, 'OC\\Core\\') === 0) {
return parent::query($name);
- } else if (strpos($name, \OC\AppFramework\App::buildAppNamespace($this['AppName']) . '\\') === 0) {
+ } elseif (strpos($name, \OC\AppFramework\App::buildAppNamespace($this['AppName']) . '\\') === 0) {
return parent::query($name);
}
}
diff --git a/lib/private/AppFramework/Http.php b/lib/private/AppFramework/Http.php
index 383dffb63d3..88e49816eb9 100644
--- a/lib/private/AppFramework/Http.php
+++ b/lib/private/AppFramework/Http.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Julius Härtl <jus@bitgrid.net>
* @author Lukas Reschke <lukas@statuscode.ch>
@@ -32,7 +33,6 @@ namespace OC\AppFramework;
use OCP\AppFramework\Http as BaseHttp;
class Http extends BaseHttp {
-
private $server;
private $protocolVersion;
protected $headers;
@@ -45,7 +45,7 @@ class Http extends BaseHttp {
$this->server = $server;
$this->protocolVersion = $protocolVersion;
- $this->headers = array(
+ $this->headers = [
self::STATUS_CONTINUE => 'Continue',
self::STATUS_SWITCHING_PROTOCOLS => 'Switching Protocols',
self::STATUS_PROCESSING => 'Processing',
@@ -105,7 +105,7 @@ class Http extends BaseHttp {
self::STATUS_BANDWIDTH_LIMIT_EXCEEDED => 'Bandwidth Limit Exceeded', // non-standard
self::STATUS_NOT_EXTENDED => 'Not extended',
self::STATUS_NETWORK_AUTHENTICATION_REQUIRED => 'Network Authentication Required', // draft-nottingham-http-new-status
- );
+ ];
}
@@ -116,38 +116,16 @@ class Http extends BaseHttp {
* @param string $ETag the etag
* @return string
*/
- public function getStatusHeader($status, \DateTime $lastModified=null,
- $ETag=null) {
-
- if(!is_null($lastModified)) {
- $lastModified = $lastModified->format(\DateTime::RFC2822);
- }
-
- // if etag or lastmodified have not changed, return a not modified
- if ((isset($this->server['HTTP_IF_NONE_MATCH'])
- && trim(trim($this->server['HTTP_IF_NONE_MATCH']), '"') === (string)$ETag)
-
- ||
-
- (isset($this->server['HTTP_IF_MODIFIED_SINCE'])
- && trim($this->server['HTTP_IF_MODIFIED_SINCE']) ===
- $lastModified)) {
-
- $status = self::STATUS_NOT_MODIFIED;
- }
-
+ public function getStatusHeader($status) {
// we have one change currently for the http 1.0 header that differs
// from 1.1: STATUS_TEMPORARY_REDIRECT should be STATUS_FOUND
// if this differs any more, we want to create childclasses for this
- if($status === self::STATUS_TEMPORARY_REDIRECT
+ if ($status === self::STATUS_TEMPORARY_REDIRECT
&& $this->protocolVersion === 'HTTP/1.0') {
-
$status = self::STATUS_FOUND;
}
- return $this->protocolVersion . ' ' . $status . ' ' .
+ return $this->protocolVersion . ' ' . $status . ' ' .
$this->headers[$status];
}
-
-
}
diff --git a/lib/private/AppFramework/Http/Dispatcher.php b/lib/private/AppFramework/Http/Dispatcher.php
index 33ce8741acf..3892bb667f0 100644
--- a/lib/private/AppFramework/Http/Dispatcher.php
+++ b/lib/private/AppFramework/Http/Dispatcher.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Julius Härtl <jus@bitgrid.net>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -102,10 +103,10 @@ class Dispatcher {
// exception and creates a response. If no response is created, it is
// assumed that theres no middleware who can handle it and the error is
// thrown again
- } catch(\Exception $exception){
+ } catch (\Exception $exception) {
$response = $this->middlewareDispatcher->afterException(
$controller, $methodName, $exception);
- } catch(\Throwable $throwable) {
+ } catch (\Throwable $throwable) {
$exception = new \Exception($throwable->getMessage(), $throwable->getCode(), $throwable);
$response = $this->middlewareDispatcher->afterException(
$controller, $methodName, $exception);
@@ -115,8 +116,7 @@ class Dispatcher {
$controller, $methodName, $response);
// depending on the cache object the headers need to be changed
- $out[0] = $this->protocol->getStatusHeader($response->getStatus(),
- $response->getLastModified(), $response->getETag());
+ $out[0] = $this->protocol->getStatusHeader($response->getStatus());
$out[1] = array_merge($response->getHeaders());
$out[2] = $response->getCookies();
$out[3] = $this->middlewareDispatcher->beforeOutput(
@@ -141,7 +141,7 @@ class Dispatcher {
// valid types that will be casted
$types = ['int', 'integer', 'bool', 'boolean', 'float'];
- foreach($this->reflector->getParameters() as $param => $default) {
+ foreach ($this->reflector->getParameters() as $param => $default) {
// try to get the parameter from the request object and cast
// it to the type annotated in the @param annotation
@@ -150,7 +150,7 @@ class Dispatcher {
// if this is submitted using GET or a POST form, 'false' should be
// converted to false
- if(($type === 'bool' || $type === 'boolean') &&
+ if (($type === 'bool' || $type === 'boolean') &&
$value === 'false' &&
(
$this->request->method === 'GET' ||
@@ -159,8 +159,7 @@ class Dispatcher {
)
) {
$value = false;
-
- } elseif($value !== null && \in_array($type, $types, true)) {
+ } elseif ($value !== null && \in_array($type, $types, true)) {
settype($value, $type);
}
@@ -170,13 +169,13 @@ class Dispatcher {
$response = \call_user_func_array([$controller, $methodName], $arguments);
// format response
- if($response instanceof DataResponse || !($response instanceof Response)) {
+ if ($response instanceof DataResponse || !($response instanceof Response)) {
// get format from the url format or request format parameter
$format = $this->request->getParam('format');
// if none is given try the first Accept header
- if($format === null) {
+ if ($format === null) {
$headers = $this->request->getHeader('Accept');
$format = $controller->getResponderByHTTPHeader($headers, null);
}
@@ -190,5 +189,4 @@ class Dispatcher {
return $response;
}
-
}
diff --git a/lib/private/AppFramework/Http/Output.php b/lib/private/AppFramework/Http/Output.php
index d96898b2521..fd95f370360 100644
--- a/lib/private/AppFramework/Http/Output.php
+++ b/lib/private/AppFramework/Http/Output.php
@@ -96,5 +96,4 @@ class Output implements IOutput {
$path = $this->webRoot ? : '/';
setcookie($name, $value, $expire, $path, $domain, $secure, $httpOnly);
}
-
}
diff --git a/lib/private/AppFramework/Http/Request.php b/lib/private/AppFramework/Http/Request.php
index 6554250902d..12748e0dd62 100644
--- a/lib/private/AppFramework/Http/Request.php
+++ b/lib/private/AppFramework/Http/Request.php
@@ -9,10 +9,8 @@ declare(strict_types=1);
* @author Bart Visscher <bartv@thisnet.nl>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
- * @author coderkun <olli@coderkun.de>
* @author Daniel Kesselberg <mail@danielkesselberg.de>
* @author Joas Schilling <coding@schilljs.com>
- * @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Juan Pablo Villafáñez <jvillafanez@solidgear.es>
* @author Julius Härtl <jus@bitgrid.net>
* @author Lukas Reschke <lukas@statuscode.ch>
@@ -64,33 +62,32 @@ use OCP\Security\ISecureRandom;
* @property mixed[] server
*/
class Request implements \ArrayAccess, \Countable, IRequest {
-
- const USER_AGENT_IE = '/(MSIE)|(Trident)/';
+ public const USER_AGENT_IE = '/(MSIE)|(Trident)/';
// Microsoft Edge User Agent from https://msdn.microsoft.com/en-us/library/hh869301(v=vs.85).aspx
- const USER_AGENT_MS_EDGE = '/^Mozilla\/5\.0 \([^)]+\) AppleWebKit\/[0-9.]+ \(KHTML, like Gecko\) Chrome\/[0-9.]+ (Mobile Safari|Safari)\/[0-9.]+ Edge\/[0-9.]+$/';
+ public const USER_AGENT_MS_EDGE = '/^Mozilla\/5\.0 \([^)]+\) AppleWebKit\/[0-9.]+ \(KHTML, like Gecko\) Chrome\/[0-9.]+ (Mobile Safari|Safari)\/[0-9.]+ Edge\/[0-9.]+$/';
// Firefox User Agent from https://developer.mozilla.org/en-US/docs/Web/HTTP/Gecko_user_agent_string_reference
- const USER_AGENT_FIREFOX = '/^Mozilla\/5\.0 \([^)]+\) Gecko\/[0-9.]+ Firefox\/[0-9.]+$/';
+ public const USER_AGENT_FIREFOX = '/^Mozilla\/5\.0 \([^)]+\) Gecko\/[0-9.]+ Firefox\/[0-9.]+$/';
// Chrome User Agent from https://developer.chrome.com/multidevice/user-agent
- const USER_AGENT_CHROME = '/^Mozilla\/5\.0 \([^)]+\) AppleWebKit\/[0-9.]+ \(KHTML, like Gecko\)( Ubuntu Chromium\/[0-9.]+|) Chrome\/[0-9.]+ (Mobile Safari|Safari)\/[0-9.]+( (Vivaldi|Brave|OPR)\/[0-9.]+|)$/';
+ public const USER_AGENT_CHROME = '/^Mozilla\/5\.0 \([^)]+\) AppleWebKit\/[0-9.]+ \(KHTML, like Gecko\)( Ubuntu Chromium\/[0-9.]+|) Chrome\/[0-9.]+ (Mobile Safari|Safari)\/[0-9.]+( (Vivaldi|Brave|OPR)\/[0-9.]+|)$/';
// Safari User Agent from http://www.useragentstring.com/pages/Safari/
- const USER_AGENT_SAFARI = '/^Mozilla\/5\.0 \([^)]+\) AppleWebKit\/[0-9.]+ \(KHTML, like Gecko\) Version\/[0-9.]+ Safari\/[0-9.A-Z]+$/';
+ public const USER_AGENT_SAFARI = '/^Mozilla\/5\.0 \([^)]+\) AppleWebKit\/[0-9.]+ \(KHTML, like Gecko\) Version\/[0-9.]+ Safari\/[0-9.A-Z]+$/';
// Android Chrome user agent: https://developers.google.com/chrome/mobile/docs/user-agent
- const USER_AGENT_ANDROID_MOBILE_CHROME = '#Android.*Chrome/[.0-9]*#';
- const USER_AGENT_FREEBOX = '#^Mozilla/5\.0$#';
- const REGEX_LOCALHOST = '/^(127\.0\.0\.1|localhost|::1)$/';
+ public const USER_AGENT_ANDROID_MOBILE_CHROME = '#Android.*Chrome/[.0-9]*#';
+ public const USER_AGENT_FREEBOX = '#^Mozilla/5\.0$#';
+ public const REGEX_LOCALHOST = '/^(127\.0\.0\.1|localhost|::1)$/';
/**
* @deprecated use \OCP\IRequest::USER_AGENT_CLIENT_IOS instead
*/
- const USER_AGENT_OWNCLOUD_IOS = '/^Mozilla\/5\.0 \(iOS\) (ownCloud|Nextcloud)\-iOS.*$/';
+ public const USER_AGENT_OWNCLOUD_IOS = '/^Mozilla\/5\.0 \(iOS\) (ownCloud|Nextcloud)\-iOS.*$/';
/**
* @deprecated use \OCP\IRequest::USER_AGENT_CLIENT_ANDROID instead
*/
- const USER_AGENT_OWNCLOUD_ANDROID = '/^Mozilla\/5\.0 \(Android\) ownCloud\-android.*$/';
+ public const USER_AGENT_OWNCLOUD_ANDROID = '/^Mozilla\/5\.0 \(Android\) ownCloud\-android.*$/';
/**
* @deprecated use \OCP\IRequest::USER_AGENT_CLIENT_DESKTOP instead
*/
- const USER_AGENT_OWNCLOUD_DESKTOP = '/^Mozilla\/5\.0 \([A-Za-z ]+\) (mirall|csyncoC)\/.*$/';
+ public const USER_AGENT_OWNCLOUD_DESKTOP = '/^Mozilla\/5\.0 \([A-Za-z ]+\) (mirall|csyncoC)\/.*$/';
protected $inputStream;
protected $content;
@@ -149,11 +146,11 @@ class Request implements \ArrayAccess, \Countable, IRequest {
$this->config = $config;
$this->csrfTokenManager = $csrfTokenManager;
- if(!array_key_exists('method', $vars)) {
+ if (!array_key_exists('method', $vars)) {
$vars['method'] = 'GET';
}
- foreach($this->allowedKeys as $name) {
+ foreach ($this->allowedKeys as $name) {
$this->items[$name] = isset($vars[$name])
? $vars[$name]
: [];
@@ -165,7 +162,6 @@ class Request implements \ArrayAccess, \Countable, IRequest {
$this->items['urlParams'],
$this->items['params']
);
-
}
/**
* @param array $parameters
@@ -187,25 +183,25 @@ class Request implements \ArrayAccess, \Countable, IRequest {
}
/**
- * ArrayAccess methods
- *
- * Gives access to the combined GET, POST and urlParams arrays
- *
- * Examples:
- *
- * $var = $request['myvar'];
- *
- * or
- *
- * if(!isset($request['myvar']) {
- * // Do something
- * }
- *
- * $request['myvar'] = 'something'; // This throws an exception.
- *
- * @param string $offset The key to lookup
- * @return boolean
- */
+ * ArrayAccess methods
+ *
+ * Gives access to the combined GET, POST and urlParams arrays
+ *
+ * Examples:
+ *
+ * $var = $request['myvar'];
+ *
+ * or
+ *
+ * if(!isset($request['myvar']) {
+ * // Do something
+ * }
+ *
+ * $request['myvar'] = 'something'; // This throws an exception.
+ *
+ * @param string $offset The key to lookup
+ * @return boolean
+ */
public function offsetExists($offset): bool {
return isset($this->items['parameters'][$offset]);
}
@@ -248,27 +244,27 @@ class Request implements \ArrayAccess, \Countable, IRequest {
}
/**
- * Access request variables by method and name.
- * Examples:
- *
- * $request->post['myvar']; // Only look for POST variables
- * $request->myvar; or $request->{'myvar'}; or $request->{$myvar}
- * Looks in the combined GET, POST and urlParams array.
- *
- * If you access e.g. ->post but the current HTTP request method
- * is GET a \LogicException will be thrown.
- *
- * @param string $name The key to look for.
- * @throws \LogicException
- * @return mixed|null
- */
+ * Access request variables by method and name.
+ * Examples:
+ *
+ * $request->post['myvar']; // Only look for POST variables
+ * $request->myvar; or $request->{'myvar'}; or $request->{$myvar}
+ * Looks in the combined GET, POST and urlParams array.
+ *
+ * If you access e.g. ->post but the current HTTP request method
+ * is GET a \LogicException will be thrown.
+ *
+ * @param string $name The key to look for.
+ * @throws \LogicException
+ * @return mixed|null
+ */
public function __get($name) {
- switch($name) {
+ switch ($name) {
case 'put':
case 'patch':
case 'get':
case 'post':
- if($this->method !== strtoupper($name)) {
+ if ($this->method !== strtoupper($name)) {
throw new \LogicException(sprintf('%s cannot be accessed in a %s request.', $name, $this->method));
}
return $this->getContent();
@@ -284,7 +280,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
case 'parameters':
case 'params':
return $this->getContent();
- default;
+ default:
return isset($this[$name])
? $this[$name]
: null;
@@ -318,7 +314,6 @@ class Request implements \ArrayAccess, \Countable, IRequest {
* @return string
*/
public function getHeader(string $name): string {
-
$name = strtoupper(str_replace('-', '_',$name));
if (isset($this->server['HTTP_' . $name])) {
return $this->server['HTTP_' . $name];
@@ -327,8 +322,8 @@ class Request implements \ArrayAccess, \Countable, IRequest {
// There's a few headers that seem to end up in the top-level
// server array.
switch ($name) {
- case 'CONTENT_TYPE' :
- case 'CONTENT_LENGTH' :
+ case 'CONTENT_TYPE':
+ case 'CONTENT_LENGTH':
case 'REMOTE_ADDR':
if (isset($this->server[$name])) {
return $this->server[$name];
@@ -447,21 +442,20 @@ class Request implements \ArrayAccess, \Countable, IRequest {
// 'application/json' must be decoded manually.
if (strpos($this->getHeader('Content-Type'), 'application/json') !== false) {
$params = json_decode(file_get_contents($this->inputStream), true);
- if($params !== null && \count($params) > 0) {
+ if ($params !== null && \count($params) > 0) {
$this->items['params'] = $params;
- if($this->method === 'POST') {
+ if ($this->method === 'POST') {
$this->items['post'] = $params;
}
}
- // Handle application/x-www-form-urlencoded for methods other than GET
+ // Handle application/x-www-form-urlencoded for methods other than GET
// or post correctly
- } elseif($this->method !== 'GET'
+ } elseif ($this->method !== 'GET'
&& $this->method !== 'POST'
&& strpos($this->getHeader('Content-Type'), 'application/x-www-form-urlencoded') !== false) {
-
parse_str(file_get_contents($this->inputStream), $params);
- if(\is_array($params)) {
+ if (\is_array($params)) {
$this->items['params'] = $params;
}
}
@@ -478,11 +472,11 @@ class Request implements \ArrayAccess, \Countable, IRequest {
* @return bool true if CSRF check passed
*/
public function passesCSRFCheck(): bool {
- if($this->csrfTokenManager === null) {
+ if ($this->csrfTokenManager === null) {
return false;
}
- if(!$this->passesStrictCookieCheck()) {
+ if (!$this->passesStrictCookieCheck()) {
return false;
}
@@ -510,7 +504,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
if ($this->getHeader('OCS-APIREQUEST')) {
return false;
}
- if($this->getCookie(session_name()) === null && $this->getCookie('nc_token') === null) {
+ if ($this->getCookie(session_name()) === null && $this->getCookie('nc_token') === null) {
return false;
}
@@ -535,7 +529,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
protected function getProtectedCookieName(string $name): string {
$cookieParams = $this->getCookieParams();
$prefix = '';
- if($cookieParams['secure'] === true && $cookieParams['path'] === '/') {
+ if ($cookieParams['secure'] === true && $cookieParams['path'] === '/') {
$prefix = '__Host-';
}
@@ -550,12 +544,12 @@ class Request implements \ArrayAccess, \Countable, IRequest {
* @since 9.1.0
*/
public function passesStrictCookieCheck(): bool {
- if(!$this->cookieCheckRequired()) {
+ if (!$this->cookieCheckRequired()) {
return true;
}
$cookieName = $this->getProtectedCookieName('nc_sameSiteCookiestrict');
- if($this->getCookie($cookieName) === 'true'
+ if ($this->getCookie($cookieName) === 'true'
&& $this->passesLaxCookieCheck()) {
return true;
}
@@ -570,12 +564,12 @@ class Request implements \ArrayAccess, \Countable, IRequest {
* @since 9.1.0
*/
public function passesLaxCookieCheck(): bool {
- if(!$this->cookieCheckRequired()) {
+ if (!$this->cookieCheckRequired()) {
return true;
}
$cookieName = $this->getProtectedCookieName('nc_sameSiteCookielax');
- if($this->getCookie($cookieName) === 'true') {
+ if ($this->getCookie($cookieName) === 'true') {
return true;
}
return false;
@@ -588,11 +582,11 @@ class Request implements \ArrayAccess, \Countable, IRequest {
* @return string
*/
public function getId(): string {
- if(isset($this->server['UNIQUE_ID'])) {
+ if (isset($this->server['UNIQUE_ID'])) {
return $this->server['UNIQUE_ID'];
}
- if(empty($this->requestId)) {
+ if (empty($this->requestId)) {
$validChars = ISecureRandom::CHAR_UPPER . ISecureRandom::CHAR_LOWER . ISecureRandom::CHAR_DIGITS;
$this->requestId = $this->secureRandom->generate(20, $validChars);
}
@@ -649,15 +643,15 @@ class Request implements \ArrayAccess, \Countable, IRequest {
$remoteAddress = isset($this->server['REMOTE_ADDR']) ? $this->server['REMOTE_ADDR'] : '';
$trustedProxies = $this->config->getSystemValue('trusted_proxies', []);
- if(\is_array($trustedProxies) && $this->isTrustedProxy($trustedProxies, $remoteAddress)) {
+ if (\is_array($trustedProxies) && $this->isTrustedProxy($trustedProxies, $remoteAddress)) {
$forwardedForHeaders = $this->config->getSystemValue('forwarded_for_headers', [
'HTTP_X_FORWARDED_FOR'
// only have one default, so we cannot ship an insecure product out of the box
]);
- foreach($forwardedForHeaders as $header) {
- if(isset($this->server[$header])) {
- foreach(explode(',', $this->server[$header]) as $IP) {
+ foreach ($forwardedForHeaders as $header) {
+ if (isset($this->server[$header])) {
+ foreach (explode(',', $this->server[$header]) as $IP) {
$IP = trim($IP);
if (filter_var($IP, FILTER_VALIDATE_IP) !== false) {
return $IP;
@@ -688,7 +682,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
* @return string Server protocol (http or https)
*/
public function getServerProtocol(): string {
- if($this->config->getSystemValue('overwriteprotocol') !== ''
+ if ($this->config->getSystemValue('overwriteprotocol') !== ''
&& $this->isOverwriteCondition('protocol')) {
return $this->config->getSystemValue('overwriteprotocol');
}
@@ -734,7 +728,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
'HTTP/2',
];
- if(\in_array($claimedProtocol, $validProtocols, true)) {
+ if (\in_array($claimedProtocol, $validProtocols, true)) {
return $claimedProtocol;
}
@@ -748,7 +742,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
*/
public function getRequestUri(): string {
$uri = isset($this->server['REQUEST_URI']) ? $this->server['REQUEST_URI'] : '';
- if($this->config->getSystemValue('overwritewebroot') !== '' && $this->isOverwriteCondition()) {
+ if ($this->config->getSystemValue('overwritewebroot') !== '' && $this->isOverwriteCondition()) {
$uri = $this->getScriptName() . substr($uri, \strlen($this->server['SCRIPT_NAME']));
}
return $uri;
@@ -776,7 +770,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
// FIXME: Sabre does not really belong here
list($path, $name) = \Sabre\Uri\split($scriptName);
if (!empty($path)) {
- if($path === $pathInfo || strpos($pathInfo, $path.'/') === 0) {
+ if ($path === $pathInfo || strpos($pathInfo, $path.'/') === 0) {
$pathInfo = substr($pathInfo, \strlen($path));
} else {
throw new \Exception("The requested uri($requestUri) cannot be processed by the script '$scriptName')");
@@ -792,7 +786,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
if ($name !== '' && strpos($pathInfo, $name) === 0) {
$pathInfo = substr($pathInfo, \strlen($name));
}
- if($pathInfo === false || $pathInfo === '/'){
+ if ($pathInfo === false || $pathInfo === '/') {
return '';
} else {
return $pathInfo;
@@ -810,8 +804,8 @@ class Request implements \ArrayAccess, \Countable, IRequest {
$pathInfo = rawurldecode($pathInfo);
$encoding = mb_detect_encoding($pathInfo, ['UTF-8', 'ISO-8859-1']);
- switch($encoding) {
- case 'ISO-8859-1' :
+ switch ($encoding) {
+ case 'ISO-8859-1':
$pathInfo = utf8_encode($pathInfo);
}
// end copy
@@ -874,7 +868,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
} else {
if (isset($this->server['HTTP_HOST'])) {
$host = $this->server['HTTP_HOST'];
- } else if (isset($this->server['SERVER_NAME'])) {
+ } elseif (isset($this->server['SERVER_NAME'])) {
$host = $this->server['SERVER_NAME'];
}
}
@@ -921,7 +915,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
* isn't met
*/
private function getOverwriteHost() {
- if($this->config->getSystemValue('overwritehost') !== '' && $this->isOverwriteCondition()) {
+ if ($this->config->getSystemValue('overwritehost') !== '' && $this->isOverwriteCondition()) {
return $this->config->getSystemValue('overwritehost');
}
return null;
diff --git a/lib/private/AppFramework/Middleware/AdditionalScriptsMiddleware.php b/lib/private/AppFramework/Middleware/AdditionalScriptsMiddleware.php
index 605422ffefe..b9f238eecb3 100644
--- a/lib/private/AppFramework/Middleware/AdditionalScriptsMiddleware.php
+++ b/lib/private/AppFramework/Middleware/AdditionalScriptsMiddleware.php
@@ -66,5 +66,4 @@ class AdditionalScriptsMiddleware extends Middleware {
return $response;
}
-
}
diff --git a/lib/private/AppFramework/Middleware/CompressionMiddleware.php b/lib/private/AppFramework/Middleware/CompressionMiddleware.php
new file mode 100644
index 00000000000..6956be76693
--- /dev/null
+++ b/lib/private/AppFramework/Middleware/CompressionMiddleware.php
@@ -0,0 +1,90 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2020, 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\AppFramework\Middleware;
+
+use OC\AppFramework\OCS\BaseResponse;
+use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\JSONResponse;
+use OCP\AppFramework\Http\Response;
+use OCP\AppFramework\Http\TemplateResponse;
+use OCP\AppFramework\Middleware;
+use OCP\IRequest;
+
+class CompressionMiddleware extends Middleware {
+
+ /** @var bool */
+ private $useGZip;
+
+ /** @var IRequest */
+ private $request;
+
+ public function __construct(IRequest $request) {
+ $this->request = $request;
+ $this->useGZip = false;
+ }
+
+ public function afterController($controller, $methodName, Response $response) {
+ // By default we do not gzip
+ $allowGzip = false;
+
+ // Only return gzipped content for 200 responses
+ if ($response->getStatus() !== Http::STATUS_OK) {
+ return $response;
+ }
+
+ // Check if we are even asked for gzip
+ $header = $this->request->getHeader('Accept-Encoding');
+ if (strpos($header, 'gzip') === false) {
+ return $response;
+ }
+
+ // We only allow gzip in some cases
+ if ($response instanceof BaseResponse) {
+ $allowGzip = true;
+ }
+ if ($response instanceof JSONResponse) {
+ $allowGzip = true;
+ }
+ if ($response instanceof TemplateResponse) {
+ $allowGzip = true;
+ }
+
+ if ($allowGzip) {
+ $this->useGZip = true;
+ $response->addHeader('Content-Encoding', 'gzip');
+ }
+
+ return $response;
+ }
+
+ public function beforeOutput($controller, $methodName, $output) {
+ if (!$this->useGZip) {
+ return $output;
+ }
+
+ return gzencode($output);
+ }
+}
diff --git a/lib/private/AppFramework/Middleware/MiddlewareDispatcher.php b/lib/private/AppFramework/Middleware/MiddlewareDispatcher.php
index 10cb9249a51..270058dc554 100644
--- a/lib/private/AppFramework/Middleware/MiddlewareDispatcher.php
+++ b/lib/private/AppFramework/Middleware/MiddlewareDispatcher.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -55,7 +56,7 @@ class MiddlewareDispatcher {
/**
* Constructor
*/
- public function __construct(){
+ public function __construct() {
$this->middlewares = [];
$this->middlewareCounter = 0;
}
@@ -65,7 +66,7 @@ class MiddlewareDispatcher {
* Adds a new middleware
* @param Middleware $middleWare the middleware which will be added
*/
- public function registerMiddleware(Middleware $middleWare){
+ public function registerMiddleware(Middleware $middleWare) {
$this->middlewares[] = $middleWare;
}
@@ -87,11 +88,11 @@ class MiddlewareDispatcher {
* @param string $methodName the name of the method that will be called on
* the controller
*/
- public function beforeController(Controller $controller, string $methodName){
+ public function beforeController(Controller $controller, string $methodName) {
// we need to count so that we know which middlewares we have to ask in
// case there is an exception
$middlewareCount = \count($this->middlewares);
- for($i = 0; $i < $middlewareCount; $i++){
+ for ($i = 0; $i < $middlewareCount; $i++) {
$this->middlewareCounter++;
$middleware = $this->middlewares[$i];
$middleware->beforeController($controller, $methodName);
@@ -115,11 +116,11 @@ class MiddlewareDispatcher {
* @throws \Exception the passed in exception if it can't handle it
*/
public function afterException(Controller $controller, string $methodName, \Exception $exception): Response {
- for($i=$this->middlewareCounter-1; $i>=0; $i--){
+ for ($i=$this->middlewareCounter-1; $i>=0; $i--) {
$middleware = $this->middlewares[$i];
try {
return $middleware->afterException($controller, $methodName, $exception);
- } catch(\Exception $exception){
+ } catch (\Exception $exception) {
continue;
}
}
@@ -138,7 +139,7 @@ class MiddlewareDispatcher {
* @return Response a Response object
*/
public function afterController(Controller $controller, string $methodName, Response $response): Response {
- for($i= \count($this->middlewares)-1; $i>=0; $i--){
+ for ($i= \count($this->middlewares)-1; $i>=0; $i--) {
$middleware = $this->middlewares[$i];
$response = $middleware->afterController($controller, $methodName, $response);
}
@@ -157,11 +158,10 @@ class MiddlewareDispatcher {
* @return string the output that should be printed
*/
public function beforeOutput(Controller $controller, string $methodName, string $output): string {
- for($i= \count($this->middlewares)-1; $i>=0; $i--){
+ for ($i= \count($this->middlewares)-1; $i>=0; $i--) {
$middleware = $this->middlewares[$i];
$output = $middleware->beforeOutput($controller, $methodName, $output);
}
return $output;
}
-
}
diff --git a/lib/private/AppFramework/Middleware/NotModifiedMiddleware.php b/lib/private/AppFramework/Middleware/NotModifiedMiddleware.php
new file mode 100644
index 00000000000..e34310b4116
--- /dev/null
+++ b/lib/private/AppFramework/Middleware/NotModifiedMiddleware.php
@@ -0,0 +1,56 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2020, 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\AppFramework\Middleware;
+
+use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Response;
+use OCP\AppFramework\Middleware;
+use OCP\IRequest;
+
+class NotModifiedMiddleware extends Middleware {
+ /** @var IRequest */
+ private $request;
+
+ public function __construct(IRequest $request) {
+ $this->request = $request;
+ }
+
+ public function afterController($controller, $methodName, Response $response) {
+ $etagHeader = $this->request->getHeader('IF_NONE_MATCH');
+ if ($etagHeader !== '' && $response->getETag() !== null && trim($etagHeader) === '"' . $response->getETag() . '"') {
+ $response->setStatus(Http::STATUS_NOT_MODIFIED);
+ return $response;
+ }
+
+ $modifiedSinceHeader = $this->request->getHeader('IF_MODIFIED_SINCE');
+ if ($modifiedSinceHeader !== '' && $response->getLastModified() !== null && trim($modifiedSinceHeader) === $response->getLastModified()->format(\DateTime::RFC2822)) {
+ $response->setStatus(Http::STATUS_NOT_MODIFIED);
+ return $response;
+ }
+
+ return $response;
+ }
+}
diff --git a/lib/private/AppFramework/Middleware/OCSMiddleware.php b/lib/private/AppFramework/Middleware/OCSMiddleware.php
index d52163246c7..5016fc3eec8 100644
--- a/lib/private/AppFramework/Middleware/OCSMiddleware.php
+++ b/lib/private/AppFramework/Middleware/OCSMiddleware.php
@@ -2,6 +2,7 @@
/**
*
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -101,8 +102,7 @@ class OCSMiddleware extends Middleware {
*/
if ($controller instanceof OCSController && !($response instanceof BaseResponse)) {
if ($response->getStatus() === Http::STATUS_UNAUTHORIZED ||
- $response->getStatus() === Http::STATUS_FORBIDDEN) {
-
+ $response->getStatus() === Http::STATUS_FORBIDDEN) {
$message = '';
if ($response instanceof JSONResponse) {
/** @var DataResponse $response */
@@ -145,7 +145,7 @@ class OCSMiddleware extends Middleware {
$format = $this->request->getParam('format');
// if none is given try the first Accept header
- if($format === null) {
+ if ($format === null) {
$headers = $this->request->getHeader('Accept');
$format = $controller->getResponderByHTTPHeader($headers, 'xml');
}
diff --git a/lib/private/AppFramework/Middleware/PublicShare/Exceptions/NeedAuthenticationException.php b/lib/private/AppFramework/Middleware/PublicShare/Exceptions/NeedAuthenticationException.php
index cd6337470b9..b362a38bc74 100644
--- a/lib/private/AppFramework/Middleware/PublicShare/Exceptions/NeedAuthenticationException.php
+++ b/lib/private/AppFramework/Middleware/PublicShare/Exceptions/NeedAuthenticationException.php
@@ -24,5 +24,4 @@
namespace OC\AppFramework\Middleware\PublicShare\Exceptions;
class NeedAuthenticationException extends \Exception {
-
}
diff --git a/lib/private/AppFramework/Middleware/PublicShare/PublicShareMiddleware.php b/lib/private/AppFramework/Middleware/PublicShare/PublicShareMiddleware.php
index 131612848cb..4b2dd25a257 100644
--- a/lib/private/AppFramework/Middleware/PublicShare/PublicShareMiddleware.php
+++ b/lib/private/AppFramework/Middleware/PublicShare/PublicShareMiddleware.php
@@ -26,7 +26,6 @@ namespace OC\AppFramework\Middleware\PublicShare;
use OC\AppFramework\Middleware\PublicShare\Exceptions\NeedAuthenticationException;
use OCP\AppFramework\AuthPublicShareController;
use OCP\AppFramework\Http\NotFoundResponse;
-use OCP\AppFramework\Http\Response;
use OCP\AppFramework\Middleware;
use OCP\AppFramework\PublicShareController;
use OCP\Files\NotFoundException;
@@ -90,7 +89,6 @@ class PublicShareMiddleware extends Middleware {
}
throw new NotFoundException();
-
}
public function afterException($controller, $methodName, \Exception $exception) {
@@ -124,7 +122,7 @@ class PublicShareMiddleware extends Middleware {
}
// Check whether public sharing is enabled
- if($this->config->getAppValue('core', 'shareapi_allow_links', 'yes') !== 'yes') {
+ if ($this->config->getAppValue('core', 'shareapi_allow_links', 'yes') !== 'yes') {
return false;
}
diff --git a/lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php b/lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php
index 46c33083e42..398c2f3f3a4 100644
--- a/lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php
+++ b/lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
*
* @license GNU AGPL version 3 or any later version
@@ -63,7 +64,7 @@ class BruteForceMiddleware extends Middleware {
public function beforeController($controller, $methodName) {
parent::beforeController($controller, $methodName);
- if($this->reflector->hasAnnotation('BruteForceProtection')) {
+ if ($this->reflector->hasAnnotation('BruteForceProtection')) {
$action = $this->reflector->getAnnotationParameter('BruteForceProtection', 'action');
$this->throttler->sleepDelay($this->request->getRemoteAddress(), $action);
}
@@ -73,7 +74,7 @@ class BruteForceMiddleware extends Middleware {
* {@inheritDoc}
*/
public function afterController($controller, $methodName, Response $response) {
- if($this->reflector->hasAnnotation('BruteForceProtection') && $response->isThrottled()) {
+ if ($this->reflector->hasAnnotation('BruteForceProtection') && $response->isThrottled()) {
$action = $this->reflector->getAnnotationParameter('BruteForceProtection', 'action');
$ip = $this->request->getRemoteAddress();
$this->throttler->sleepDelay($ip, $action);
diff --git a/lib/private/AppFramework/Middleware/Security/CORSMiddleware.php b/lib/private/AppFramework/Middleware/Security/CORSMiddleware.php
index 1883756954b..af6d3de6570 100644
--- a/lib/private/AppFramework/Middleware/Security/CORSMiddleware.php
+++ b/lib/private/AppFramework/Middleware/Security/CORSMiddleware.php
@@ -80,11 +80,11 @@ class CORSMiddleware extends Middleware {
* @throws SecurityException
* @since 6.0.0
*/
- public function beforeController($controller, $methodName){
+ public function beforeController($controller, $methodName) {
// ensure that @CORS annotated API routes are not used in conjunction
// with session authentication since this enables CSRF attack vectors
if ($this->reflector->hasAnnotation('CORS') &&
- !$this->reflector->hasAnnotation('PublicPage')) {
+ !$this->reflector->hasAnnotation('PublicPage')) {
$user = $this->request->server['PHP_AUTH_USER'];
$pass = $this->request->server['PHP_AUTH_PW'];
@@ -110,16 +110,16 @@ class CORSMiddleware extends Middleware {
* @return Response a Response object
* @throws SecurityException
*/
- public function afterController($controller, $methodName, Response $response){
+ public function afterController($controller, $methodName, Response $response) {
// only react if its a CORS request and if the request sends origin and
- if(isset($this->request->server['HTTP_ORIGIN']) &&
+ if (isset($this->request->server['HTTP_ORIGIN']) &&
$this->reflector->hasAnnotation('CORS')) {
// allow credentials headers must not be true or CSRF is possible
// otherwise
- foreach($response->getHeaders() as $header => $value) {
- if(strtolower($header) === 'access-control-allow-credentials' &&
+ foreach ($response->getHeaders() as $header => $value) {
+ if (strtolower($header) === 'access-control-allow-credentials' &&
strtolower(trim($value)) === 'true') {
$msg = 'Access-Control-Allow-Credentials must not be '.
'set to true in order to prevent CSRF';
@@ -143,10 +143,10 @@ class CORSMiddleware extends Middleware {
* @throws \Exception the passed in exception if it can't handle it
* @return Response a Response object or null in case that the exception could not be handled
*/
- public function afterException($controller, $methodName, \Exception $exception){
- if($exception instanceof SecurityException){
+ public function afterException($controller, $methodName, \Exception $exception) {
+ if ($exception instanceof SecurityException) {
$response = new JSONResponse(['message' => $exception->getMessage()]);
- if($exception->getCode() !== 0) {
+ if ($exception->getCode() !== 0) {
$response->setStatus($exception->getCode());
} else {
$response->setStatus(Http::STATUS_INTERNAL_SERVER_ERROR);
@@ -156,5 +156,4 @@ class CORSMiddleware extends Middleware {
throw $exception;
}
-
}
diff --git a/lib/private/AppFramework/Middleware/Security/CSPMiddleware.php b/lib/private/AppFramework/Middleware/Security/CSPMiddleware.php
index 3b9723cb6b9..10768a643a5 100644
--- a/lib/private/AppFramework/Middleware/Security/CSPMiddleware.php
+++ b/lib/private/AppFramework/Middleware/Security/CSPMiddleware.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @license GNU AGPL version 3 or any later version
@@ -71,7 +72,7 @@ class CSPMiddleware extends Middleware {
$defaultPolicy = $this->contentSecurityPolicyManager->getDefaultPolicy();
$defaultPolicy = $this->contentSecurityPolicyManager->mergePolicies($defaultPolicy, $policy);
- if($this->cspNonceManager->browserSupportsCspV3()) {
+ if ($this->cspNonceManager->browserSupportsCspV3()) {
$defaultPolicy->useJsNonce($this->csrfTokenManager->getToken()->getEncryptedValue());
}
diff --git a/lib/private/AppFramework/Middleware/Security/Exceptions/ReloadExecutionException.php b/lib/private/AppFramework/Middleware/Security/Exceptions/ReloadExecutionException.php
index 46673a7e5ee..934cae991b4 100644
--- a/lib/private/AppFramework/Middleware/Security/Exceptions/ReloadExecutionException.php
+++ b/lib/private/AppFramework/Middleware/Security/Exceptions/ReloadExecutionException.php
@@ -27,5 +27,4 @@ declare(strict_types=1);
namespace OC\AppFramework\Middleware\Security\Exceptions;
class ReloadExecutionException extends SecurityException {
-
}
diff --git a/lib/private/AppFramework/Middleware/Security/Exceptions/SecurityException.php b/lib/private/AppFramework/Middleware/Security/Exceptions/SecurityException.php
index e55f8e3f50a..a28e22f5717 100644
--- a/lib/private/AppFramework/Middleware/Security/Exceptions/SecurityException.php
+++ b/lib/private/AppFramework/Middleware/Security/Exceptions/SecurityException.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -30,4 +31,5 @@ namespace OC\AppFramework\Middleware\Security\Exceptions;
*
* @package OC\AppFramework\Middleware\Security\Exceptions
*/
-class SecurityException extends \Exception {}
+class SecurityException extends \Exception {
+}
diff --git a/lib/private/AppFramework/Middleware/Security/FeaturePolicyMiddleware.php b/lib/private/AppFramework/Middleware/Security/FeaturePolicyMiddleware.php
index 67d2480a1f2..63f665f512d 100644
--- a/lib/private/AppFramework/Middleware/Security/FeaturePolicyMiddleware.php
+++ b/lib/private/AppFramework/Middleware/Security/FeaturePolicyMiddleware.php
@@ -26,14 +26,9 @@ declare(strict_types=1);
namespace OC\AppFramework\Middleware\Security;
-use OC\Security\CSP\ContentSecurityPolicyManager;
-use OC\Security\CSP\ContentSecurityPolicyNonceManager;
-use OC\Security\CSRF\CsrfTokenManager;
use OC\Security\FeaturePolicy\FeaturePolicy;
use OC\Security\FeaturePolicy\FeaturePolicyManager;
use OCP\AppFramework\Controller;
-use OCP\AppFramework\Http\ContentSecurityPolicy;
-use OCP\AppFramework\Http\EmptyContentSecurityPolicy;
use OCP\AppFramework\Http\EmptyFeaturePolicy;
use OCP\AppFramework\Http\Response;
use OCP\AppFramework\Middleware;
diff --git a/lib/private/AppFramework/Middleware/Security/RateLimitingMiddleware.php b/lib/private/AppFramework/Middleware/Security/RateLimitingMiddleware.php
index c7bf8e2c947..712becb3be5 100644
--- a/lib/private/AppFramework/Middleware/Security/RateLimitingMiddleware.php
+++ b/lib/private/AppFramework/Middleware/Security/RateLimitingMiddleware.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
*
* @license GNU AGPL version 3 or any later version
@@ -86,7 +87,7 @@ class RateLimitingMiddleware extends Middleware {
$userLimit = $this->reflector->getAnnotationParameter('UserRateThrottle', 'limit');
$userPeriod = $this->reflector->getAnnotationParameter('UserRateThrottle', 'period');
$rateLimitIdentifier = get_class($controller) . '::' . $methodName;
- if($userLimit !== '' && $userPeriod !== '' && $this->userSession->isLoggedIn()) {
+ if ($userLimit !== '' && $userPeriod !== '' && $this->userSession->isLoggedIn()) {
$this->limiter->registerUserRequest(
$rateLimitIdentifier,
$userLimit,
@@ -107,7 +108,7 @@ class RateLimitingMiddleware extends Middleware {
* {@inheritDoc}
*/
public function afterException($controller, $methodName, \Exception $exception) {
- if($exception instanceof RateLimitExceededException) {
+ if ($exception instanceof RateLimitExceededException) {
if (stripos($this->request->getHeader('Accept'),'html') === false) {
$response = new JSONResponse(
[
@@ -116,7 +117,7 @@ class RateLimitingMiddleware extends Middleware {
$exception->getCode()
);
} else {
- $response = new TemplateResponse(
+ $response = new TemplateResponse(
'core',
'403',
[
@@ -124,7 +125,7 @@ class RateLimitingMiddleware extends Middleware {
],
'guest'
);
- $response->setStatus($exception->getCode());
+ $response->setStatus($exception->getCode());
}
return $response;
diff --git a/lib/private/AppFramework/Middleware/Security/ReloadExecutionMiddleware.php b/lib/private/AppFramework/Middleware/Security/ReloadExecutionMiddleware.php
index af34ed57182..12b0ef4e27a 100644
--- a/lib/private/AppFramework/Middleware/Security/ReloadExecutionMiddleware.php
+++ b/lib/private/AppFramework/Middleware/Security/ReloadExecutionMiddleware.php
@@ -65,6 +65,4 @@ class ReloadExecutionMiddleware extends Middleware {
return parent::afterException($controller, $methodName, $exception);
}
-
-
}
diff --git a/lib/private/AppFramework/Middleware/Security/SameSiteCookieMiddleware.php b/lib/private/AppFramework/Middleware/Security/SameSiteCookieMiddleware.php
index 5519b8705d9..7a358f6ebf2 100644
--- a/lib/private/AppFramework/Middleware/Security/SameSiteCookieMiddleware.php
+++ b/lib/private/AppFramework/Middleware/Security/SameSiteCookieMiddleware.php
@@ -2,6 +2,7 @@
/**
* @copyright 2017, Roeland Jago Douma <roeland@famdouma.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @license GNU AGPL version 3 or any later version
@@ -87,11 +88,11 @@ class SameSiteCookieMiddleware extends Middleware {
// Append __Host to the cookie if it meets the requirements
$cookiePrefix = '';
- if($cookieParams['secure'] === true && $cookieParams['path'] === '/') {
+ if ($cookieParams['secure'] === true && $cookieParams['path'] === '/') {
$cookiePrefix = '__Host-';
}
- foreach($policies as $policy) {
+ foreach ($policies as $policy) {
header(
sprintf(
'Set-Cookie: %snc_sameSiteCookie%s=true; path=%s; httponly;' . $secureCookie . 'expires=Fri, 31-Dec-2100 23:59:59 GMT; SameSite=%s',
diff --git a/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php b/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php
index 16f1fb35a82..5eb1d7f30be 100644
--- a/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php
+++ b/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php
@@ -137,17 +137,17 @@ class SecurityMiddleware extends Middleware {
// security checks
$isPublicPage = $this->reflector->hasAnnotation('PublicPage');
- if(!$isPublicPage) {
- if(!$this->isLoggedIn) {
+ if (!$isPublicPage) {
+ if (!$this->isLoggedIn) {
throw new NotLoggedInException();
}
- if($this->reflector->hasAnnotation('SubAdminRequired')
+ if ($this->reflector->hasAnnotation('SubAdminRequired')
&& !$this->isSubAdmin
&& !$this->isAdminUser) {
throw new NotAdminException($this->l10n->t('Logged in user must be an admin or sub admin'));
}
- if(!$this->reflector->hasAnnotation('SubAdminRequired')
+ if (!$this->reflector->hasAnnotation('SubAdminRequired')
&& !$this->reflector->hasAnnotation('NoAdminRequired')
&& !$this->isAdminUser) {
throw new NotAdminException($this->l10n->t('Logged in user must be an admin'));
@@ -155,14 +155,14 @@ class SecurityMiddleware extends Middleware {
}
// Check for strict cookie requirement
- if($this->reflector->hasAnnotation('StrictCookieRequired') || !$this->reflector->hasAnnotation('NoCSRFRequired')) {
- if(!$this->request->passesStrictCookieCheck()) {
+ if ($this->reflector->hasAnnotation('StrictCookieRequired') || !$this->reflector->hasAnnotation('NoCSRFRequired')) {
+ if (!$this->request->passesStrictCookieCheck()) {
throw new StrictCookieMissingException();
}
}
// CSRF check - also registers the CSRF token since the session may be closed later
Util::callRegister();
- if(!$this->reflector->hasAnnotation('NoCSRFRequired')) {
+ if (!$this->reflector->hasAnnotation('NoCSRFRequired')) {
/*
* Only allow the CSRF check to fail on OCS Requests. This kind of
* hacks around that we have no full token auth in place yet and we
@@ -171,7 +171,7 @@ class SecurityMiddleware extends Middleware {
* Additionally we allow Bearer authenticated requests to pass on OCS routes.
* This allows oauth apps (e.g. moodle) to use the OCS endpoints
*/
- if(!$this->request->passesCSRFCheck() && !(
+ if (!$this->request->passesCSRFCheck() && !(
$controller instanceof OCSController && (
$this->request->getHeader('OCS-APIREQUEST') === 'true' ||
strpos($this->request->getHeader('Authorization'), 'Bearer ') === 0
@@ -209,17 +209,17 @@ class SecurityMiddleware extends Middleware {
* @return Response a Response object or null in case that the exception could not be handled
*/
public function afterException($controller, $methodName, \Exception $exception): Response {
- if($exception instanceof SecurityException) {
- if($exception instanceof StrictCookieMissingException) {
+ if ($exception instanceof SecurityException) {
+ if ($exception instanceof StrictCookieMissingException) {
return new RedirectResponse(\OC::$WEBROOT);
- }
+ }
if (stripos($this->request->getHeader('Accept'),'html') === false) {
$response = new JSONResponse(
['message' => $exception->getMessage()],
$exception->getCode()
);
} else {
- if($exception instanceof NotLoggedInException) {
+ if ($exception instanceof NotLoggedInException) {
$params = [];
if (isset($this->request->server['REQUEST_URI'])) {
$params['redirect_url'] = $this->request->server['REQUEST_URI'];
@@ -241,5 +241,4 @@ class SecurityMiddleware extends Middleware {
throw $exception;
}
-
}
diff --git a/lib/private/AppFramework/Middleware/SessionMiddleware.php b/lib/private/AppFramework/Middleware/SessionMiddleware.php
index 00ead5f2476..40b77230368 100644
--- a/lib/private/AppFramework/Middleware/SessionMiddleware.php
+++ b/lib/private/AppFramework/Middleware/SessionMiddleware.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -29,7 +30,6 @@ use OC\AppFramework\Utility\ControllerMethodReflector;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\Response;
use OCP\AppFramework\Middleware;
-use OCP\IRequest;
use OCP\ISession;
class SessionMiddleware extends Middleware {
@@ -63,12 +63,11 @@ class SessionMiddleware extends Middleware {
* @param Response $response
* @return Response
*/
- public function afterController($controller, $methodName, Response $response){
+ public function afterController($controller, $methodName, Response $response) {
$useSession = $this->reflector->hasAnnotation('UseSession');
if ($useSession) {
$this->session->close();
}
return $response;
}
-
}
diff --git a/lib/private/AppFramework/OCS/BaseResponse.php b/lib/private/AppFramework/OCS/BaseResponse.php
index c7aa5ad073b..55410c8910b 100644
--- a/lib/private/AppFramework/OCS/BaseResponse.php
+++ b/lib/private/AppFramework/OCS/BaseResponse.php
@@ -2,6 +2,8 @@
/**
* @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @author Daniel Kesselberg <mail@danielkesselberg.de>
* @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -26,10 +28,9 @@ namespace OC\AppFramework\OCS;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse;
-use OCP\AppFramework\Http\EmptyContentSecurityPolicy;
use OCP\AppFramework\Http\Response;
-abstract class BaseResponse extends Response {
+abstract class BaseResponse extends Response {
/** @var array */
protected $data;
@@ -117,7 +118,6 @@ abstract class BaseResponse extends Response {
$this->toXML($response, $writer);
$writer->endDocument();
return $writer->outputMemory(true);
-
}
/**
diff --git a/lib/private/AppFramework/OCS/V2Response.php b/lib/private/AppFramework/OCS/V2Response.php
index 0859fecb1d9..b6863262d81 100644
--- a/lib/private/AppFramework/OCS/V2Response.php
+++ b/lib/private/AppFramework/OCS/V2Response.php
@@ -2,6 +2,7 @@
/**
* @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @license GNU AGPL version 3 or any later version
@@ -35,15 +36,14 @@ class V2Response extends BaseResponse {
* @return int
*/
public function getStatus() {
-
$status = parent::getStatus();
if ($status === API::RESPOND_UNAUTHORISED) {
return Http::STATUS_UNAUTHORIZED;
- } else if ($status === API::RESPOND_NOT_FOUND) {
+ } elseif ($status === API::RESPOND_NOT_FOUND) {
return Http::STATUS_NOT_FOUND;
- } else if ($status === API::RESPOND_SERVER_ERROR || $status === API::RESPOND_UNKNOWN_ERROR) {
+ } elseif ($status === API::RESPOND_SERVER_ERROR || $status === API::RESPOND_UNKNOWN_ERROR) {
return Http::STATUS_INTERNAL_SERVER_ERROR;
- } else if ($status < 200 || $status > 600) {
+ } elseif ($status < 200 || $status > 600) {
return Http::STATUS_BAD_REQUEST;
}
diff --git a/lib/private/AppFramework/Routing/RouteConfig.php b/lib/private/AppFramework/Routing/RouteConfig.php
index ec6c3971552..c10aafd55f7 100644
--- a/lib/private/AppFramework/Routing/RouteConfig.php
+++ b/lib/private/AppFramework/Routing/RouteConfig.php
@@ -5,10 +5,9 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
- * @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
- * @author Patrick Paysant <ppaysant@linagora.com>
* @author Robin Appelman <robin@icewind.nl>
* @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -33,7 +32,6 @@ declare(strict_types=1);
namespace OC\AppFramework\Routing;
use OC\AppFramework\DependencyInjection\DIContainer;
-use OCP\AppFramework\App;
use OCP\Route\IRouter;
/**
@@ -56,6 +54,15 @@ class RouteConfig {
/** @var string[] */
private $controllerNameCache = [];
+ protected $rootUrlApps = [
+ 'cloud_federation_api',
+ 'core',
+ 'files_sharing',
+ 'files',
+ 'settings',
+ 'spreed',
+ ];
+
/**
* @param \OC\AppFramework\DependencyInjection\DIContainer $container
* @param \OCP\Route\IRouter $router
@@ -75,10 +82,10 @@ class RouteConfig {
public function register() {
// parse simple
- $this->processSimpleRoutes($this->routes);
+ $this->processIndexRoutes($this->routes);
// parse resources
- $this->processResources($this->routes);
+ $this->processIndexResources($this->routes);
/*
* OCS routes go into a different collection
@@ -98,42 +105,7 @@ class RouteConfig {
private function processOCS(array $routes): void {
$ocsRoutes = $routes['ocs'] ?? [];
foreach ($ocsRoutes as $ocsRoute) {
- $name = $ocsRoute['name'];
- $postfix = $ocsRoute['postfix'] ?? '';
- $root = $ocsRoute['root'] ?? '/apps/' . $this->appName;
-
- $url = $root . $ocsRoute['url'];
- $verb = strtoupper($ocsRoute['verb'] ?? 'GET');
-
- $split = explode('#', $name, 2);
- if (count($split) !== 2) {
- throw new \UnexpectedValueException('Invalid route name');
- }
- list($controller, $action) = $split;
-
- $controllerName = $this->buildControllerName($controller);
- $actionName = $this->buildActionName($action);
-
- $routeName = 'ocs.' . $this->appName . '.' . $controller . '.' . $action . $postfix;
-
- // register the route
- $handler = new RouteActionHandler($this->container, $controllerName, $actionName);
-
- $router = $this->router->create($routeName, $url)
- ->method($verb)
- ->action($handler);
-
- // optionally register requirements for route. This is used to
- // tell the route parser how url parameters should be matched
- if(array_key_exists('requirements', $ocsRoute)) {
- $router->requirements($ocsRoute['requirements']);
- }
-
- // optionally register defaults for route. This is used to
- // tell the route parser how url parameters should be default valued
- if(array_key_exists('defaults', $ocsRoute)) {
- $router->defaults($ocsRoute['defaults']);
- }
+ $this->processRoute($ocsRoute, 'ocs.');
}
}
@@ -142,56 +114,49 @@ class RouteConfig {
* @param array $routes
* @throws \UnexpectedValueException
*/
- private function processSimpleRoutes(array $routes): void {
+ private function processIndexRoutes(array $routes): void {
$simpleRoutes = $routes['routes'] ?? [];
foreach ($simpleRoutes as $simpleRoute) {
- $name = $simpleRoute['name'];
- $postfix = $simpleRoute['postfix'] ?? '';
+ $this->processRoute($simpleRoute);
+ }
+ }
- $url = $simpleRoute['url'];
- $verb = strtoupper($simpleRoute['verb'] ?? 'GET');
+ protected function processRoute(array $route, string $routeNamePrefix = ''): void {
+ $name = $route['name'];
+ $postfix = $route['postfix'] ?? '';
+ $root = $this->buildRootPrefix($route, $routeNamePrefix);
- $split = explode('#', $name, 2);
- if (count($split) !== 2) {
- throw new \UnexpectedValueException('Invalid route name');
- }
- list($controller, $action) = $split;
-
- $controllerName = $this->buildControllerName($controller);
- $actionName = $this->buildActionName($action);
- $appName = $simpleRoute['app'] ?? $this->appName;
-
- if (isset($simpleRoute['app'])) {
- // Legacy routes that need to be globally available while they are handled by an app
- // E.g. '/f/{id}', '/s/{token}', '/call/{token}', …
- $controllerName = str_replace('controllerController', 'Controller', $controllerName);
- if ($controllerName === 'PublicpreviewController') {
- $controllerName = 'PublicPreviewController';
- } else if ($controllerName === 'RequesthandlerController') {
- $controllerName = 'RequestHandlerController';
- }
- $controllerName = App::buildAppNamespace($appName) . '\\Controller\\' . $controllerName;
- }
+ $url = $root . '/' . ltrim($route['url'], '/');
+ $verb = strtoupper($route['verb'] ?? 'GET');
- $routeName = $appName . '.' . $controller . '.' . $action . $postfix;
+ $split = explode('#', $name, 2);
+ if (count($split) !== 2) {
+ throw new \UnexpectedValueException('Invalid route name');
+ }
+ list($controller, $action) = $split;
- // register the route
- $handler = new RouteActionHandler($this->container, $controllerName, $actionName);
- $router = $this->router->create($routeName, $url)
- ->method($verb)
- ->action($handler);
+ $controllerName = $this->buildControllerName($controller);
+ $actionName = $this->buildActionName($action);
- // optionally register requirements for route. This is used to
- // tell the route parser how url parameters should be matched
- if(array_key_exists('requirements', $simpleRoute)) {
- $router->requirements($simpleRoute['requirements']);
- }
+ $routeName = $routeNamePrefix . $this->appName . '.' . $controller . '.' . $action . $postfix;
- // optionally register defaults for route. This is used to
- // tell the route parser how url parameters should be default valued
- if(array_key_exists('defaults', $simpleRoute)) {
- $router->defaults($simpleRoute['defaults']);
- }
+ // register the route
+ $handler = new RouteActionHandler($this->container, $controllerName, $actionName);
+
+ $router = $this->router->create($routeName, $url)
+ ->method($verb)
+ ->action($handler);
+
+ // optionally register requirements for route. This is used to
+ // tell the route parser how url parameters should be matched
+ if (array_key_exists('requirements', $route)) {
+ $router->requirements($route['requirements']);
+ }
+
+ // optionally register defaults for route. This is used to
+ // tell the route parser how url parameters should be default valued
+ if (array_key_exists('defaults', $route)) {
+ $router->defaults($route['defaults']);
}
}
@@ -206,44 +171,7 @@ class RouteConfig {
* @param array $routes
*/
private function processOCSResources(array $routes): void {
- // declaration of all restful actions
- $actions = [
- ['name' => 'index', 'verb' => 'GET', 'on-collection' => true],
- ['name' => 'show', 'verb' => 'GET'],
- ['name' => 'create', 'verb' => 'POST', 'on-collection' => true],
- ['name' => 'update', 'verb' => 'PUT'],
- ['name' => 'destroy', 'verb' => 'DELETE'],
- ];
-
- $resources = $routes['ocs-resources'] ?? [];
- foreach ($resources as $resource => $config) {
- $root = $config['root'] ?? '/apps/' . $this->appName;
-
- // the url parameter used as id to the resource
- foreach($actions as $action) {
- $url = $root . $config['url'];
- $method = $action['name'];
- $verb = strtoupper($action['verb'] ?? 'GET');
- $collectionAction = $action['on-collection'] ?? false;
- if (!$collectionAction) {
- $url .= '/{id}';
- }
- if (isset($action['url-postfix'])) {
- $url .= '/' . $action['url-postfix'];
- }
-
- $controller = $resource;
-
- $controllerName = $this->buildControllerName($controller);
- $actionName = $this->buildActionName($method);
-
- $routeName = 'ocs.' . $this->appName . '.' . strtolower($resource) . '.' . strtolower($method);
-
- $this->router->create($routeName, $url)->method($verb)->action(
- new RouteActionHandler($this->container, $controllerName, $actionName)
- );
- }
- }
+ $this->processResources($routes['ocs-resources'] ?? [], 'ocs.');
}
/**
@@ -256,7 +184,22 @@ class RouteConfig {
*
* @param array $routes
*/
- private function processResources(array $routes): void {
+ private function processIndexResources(array $routes): void {
+ $this->processResources($routes['resources'] ?? []);
+ }
+
+ /**
+ * For a given name and url restful routes are created:
+ * - index
+ * - show
+ * - create
+ * - update
+ * - destroy
+ *
+ * @param array $resources
+ * @param string $routeNamePrefix
+ */
+ protected function processResources(array $resources, string $routeNamePrefix = ''): void {
// declaration of all restful actions
$actions = [
['name' => 'index', 'verb' => 'GET', 'on-collection' => true],
@@ -266,13 +209,14 @@ class RouteConfig {
['name' => 'destroy', 'verb' => 'DELETE'],
];
- $resources = $routes['resources'] ?? [];
foreach ($resources as $resource => $config) {
+ $root = $this->buildRootPrefix($config, $routeNamePrefix);
// the url parameter used as id to the resource
- foreach($actions as $action) {
- $url = $config['url'];
+ foreach ($actions as $action) {
+ $url = $root . '/' . ltrim($config['url'], '/');
$method = $action['name'];
+
$verb = strtoupper($action['verb'] ?? 'GET');
$collectionAction = $action['on-collection'] ?? false;
if (!$collectionAction) {
@@ -287,7 +231,7 @@ class RouteConfig {
$controllerName = $this->buildControllerName($controller);
$actionName = $this->buildActionName($method);
- $routeName = $this->appName . '.' . strtolower($resource) . '.' . strtolower($method);
+ $routeName = $routeNamePrefix . $this->appName . '.' . strtolower($resource) . '.' . strtolower($method);
$this->router->create($routeName, $url)->method($verb)->action(
new RouteActionHandler($this->container, $controllerName, $actionName)
@@ -296,6 +240,23 @@ class RouteConfig {
}
}
+ private function buildRootPrefix(array $route, string $routeNamePrefix): string {
+ $defaultRoot = $this->appName === 'core' ? '' : '/apps/' . $this->appName;
+ $root = $route['root'] ?? $defaultRoot;
+
+ if ($routeNamePrefix !== '') {
+ // In OCS all apps are whitelisted
+ return $root;
+ }
+
+ if (!\in_array($this->appName, $this->rootUrlApps, true)) {
+ // Only allow root URLS for some apps
+ return $defaultRoot;
+ }
+
+ return $root;
+ }
+
/**
* Based on a given route name the controller name is generated
* @param string $controller
diff --git a/lib/private/AppFramework/Services/AppConfig.php b/lib/private/AppFramework/Services/AppConfig.php
new file mode 100644
index 00000000000..eaca647f438
--- /dev/null
+++ b/lib/private/AppFramework/Services/AppConfig.php
@@ -0,0 +1,75 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2020, 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\AppFramework\Services;
+
+use OCP\AppFramework\Services\IAppConfig;
+use OCP\IConfig;
+
+class AppConfig implements IAppConfig {
+
+ /** @var IConfig */
+ private $config;
+
+ /** @var string */
+ private $appName;
+
+ public function __construct(IConfig $config, string $appName) {
+ $this->config = $config;
+ $this->appName = $appName;
+ }
+
+ public function getAppKeys(): array {
+ return $this->config->getAppKeys($this->appName);
+ }
+
+ public function setAppValue(string $key, string $value): void {
+ $this->config->setAppValue($this->appName, $key, $value);
+ }
+
+ public function getAppValue(string $key, string $default = ''): string {
+ return $this->config->getAppValue($this->appName, $key, $default);
+ }
+
+ public function deleteAppValue(string $key): void {
+ $this->config->deleteAppValue($this->appName, $key);
+ }
+
+ public function deleteAppValues(): void {
+ $this->config->deleteAppValues($this->appName);
+ }
+
+ public function setUserValue(string $userId, string $key, string $value, ?string $preCondition = null): void {
+ $this->config->setUserValue($userId, $this->appName, $key, $value, $preCondition);
+ }
+
+ public function getUserValue(string $userId, string $key, string $default = ''): string {
+ return $this->config->getUserValue($userId, $this->appName, $key, $default);
+ }
+
+ public function deleteUserValue(string $userId, string $key): void {
+ $this->config->deleteUserValue($userId, $this->appName, $key);
+ }
+}
diff --git a/lib/private/AppFramework/Services/InitialState.php b/lib/private/AppFramework/Services/InitialState.php
new file mode 100644
index 00000000000..fd076bbebf1
--- /dev/null
+++ b/lib/private/AppFramework/Services/InitialState.php
@@ -0,0 +1,50 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2020, 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\AppFramework\Services;
+
+use OCP\AppFramework\Services\IInitialState;
+use OCP\IInitialStateService;
+
+class InitialState implements IInitialState {
+ /** @var IInitialStateService */
+ private $state;
+
+ /** @var string */
+ private $appName;
+
+ public function __construct(IInitialStateService $state, string $appName) {
+ $this->state = $state;
+ $this->appName = $appName;
+ }
+
+ public function provideInitialState(string $key, $data): void {
+ $this->state->provideInitialState($this->appName, $key, $data);
+ }
+
+ public function provideLazyInitialState(string $key, \Closure $closure): void {
+ $this->state->provideLazyInitialState($this->appName, $key, $closure);
+ }
+}
diff --git a/lib/private/AppFramework/Utility/ControllerMethodReflector.php b/lib/private/AppFramework/Utility/ControllerMethodReflector.php
index ac7953e0457..97957fb5733 100644
--- a/lib/private/AppFramework/Utility/ControllerMethodReflector.php
+++ b/lib/private/AppFramework/Utility/ControllerMethodReflector.php
@@ -7,6 +7,7 @@ declare(strict_types=1);
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Bjoern Schiessle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Kesselberg <mail@danielkesselberg.de>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -46,7 +47,7 @@ class ControllerMethodReflector implements IControllerMethodReflector {
* @param object $object an object or classname
* @param string $method the method which we want to inspect
*/
- public function reflect($object, string $method){
+ public function reflect($object, string $method) {
$reflection = new \ReflectionMethod($object, $method);
$docs = $reflection->getDocComment();
@@ -82,7 +83,7 @@ class ControllerMethodReflector implements IControllerMethodReflector {
}
$default = null;
- if($param->isOptional()) {
+ if ($param->isOptional()) {
$default = $param->getDefaultValue();
}
$this->parameters[$param->name] = $default;
@@ -97,7 +98,7 @@ class ControllerMethodReflector implements IControllerMethodReflector {
* would return int or null if not existing
*/
public function getType(string $parameter) {
- if(array_key_exists($parameter, $this->types)) {
+ if (array_key_exists($parameter, $this->types)) {
return $this->types[$parameter];
}
@@ -128,7 +129,7 @@ class ControllerMethodReflector implements IControllerMethodReflector {
* @return string
*/
public function getAnnotationParameter(string $name, string $key): string {
- if(isset($this->annotations[$name][$key])) {
+ if (isset($this->annotations[$name][$key])) {
return $this->annotations[$name][$key];
}
diff --git a/lib/private/AppFramework/Utility/SimpleContainer.php b/lib/private/AppFramework/Utility/SimpleContainer.php
index f2ac4f2d6f2..60f674bbea1 100644
--- a/lib/private/AppFramework/Utility/SimpleContainer.php
+++ b/lib/private/AppFramework/Utility/SimpleContainer.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -72,7 +73,7 @@ class SimpleContainer extends Container implements IContainer {
// Service not found, use the default value when available
if ($parameter->isDefaultValueAvailable()) {
$parameters[] = $parameter->getDefaultValue();
- } else if ($parameterClass !== null) {
+ } elseif ($parameterClass !== null) {
$resolveName = $parameter->getName();
$parameters[] = $this->query($resolveName);
} else {
@@ -102,7 +103,7 @@ class SimpleContainer extends Container implements IContainer {
throw new QueryException($baseMsg .
' Class can not be instantiated');
}
- } catch(ReflectionException $e) {
+ } catch (ReflectionException $e) {
throw new QueryException($baseMsg . ' ' . $e->getMessage());
}
}
@@ -111,7 +112,7 @@ class SimpleContainer extends Container implements IContainer {
$name = $this->sanitizeName($name);
if ($this->offsetExists($name)) {
return $this->offsetGet($name);
- } else if ($autoload) {
+ } elseif ($autoload) {
$object = $this->resolve($name);
$this->registerService($name, function () use ($object) {
return $object;
@@ -140,7 +141,7 @@ class SimpleContainer extends Container implements IContainer {
*/
public function registerService($name, Closure $closure, $shared = true) {
$name = $this->sanitizeName($name);
- if (isset($this[$name])) {
+ if (isset($this[$name])) {
unset($this[$name]);
}
if ($shared) {
diff --git a/lib/private/AppFramework/Utility/TimeFactory.php b/lib/private/AppFramework/Utility/TimeFactory.php
index b3d5ec831d1..30ab9bd3098 100644
--- a/lib/private/AppFramework/Utility/TimeFactory.php
+++ b/lib/private/AppFramework/Utility/TimeFactory.php
@@ -52,5 +52,4 @@ class TimeFactory implements ITimeFactory {
public function getDateTime(string $time = 'now', \DateTimeZone $timezone = null): \DateTime {
return new \DateTime($time, $timezone);
}
-
}
diff --git a/lib/private/Archive/Archive.php b/lib/private/Archive/Archive.php
index 94956561c3e..ee27009ca83 100644
--- a/lib/private/Archive/Archive.php
+++ b/lib/private/Archive/Archive.php
@@ -4,13 +4,13 @@
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Christopher Schäpers <kondou@ts.unde.re>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @license AGPL-3.0
*
@@ -34,88 +34,88 @@ abstract class Archive {
/**
* @param $source
*/
- public abstract function __construct($source);
+ abstract public function __construct($source);
/**
* add an empty folder to the archive
* @param string $path
* @return bool
*/
- public abstract function addFolder($path);
+ abstract public function addFolder($path);
/**
* add a file to the archive
* @param string $path
* @param string $source either a local file or string data
* @return bool
*/
- public abstract function addFile($path, $source='');
+ abstract public function addFile($path, $source='');
/**
* rename a file or folder in the archive
* @param string $source
* @param string $dest
* @return bool
*/
- public abstract function rename($source, $dest);
+ abstract public function rename($source, $dest);
/**
* get the uncompressed size of a file in the archive
* @param string $path
* @return int
*/
- public abstract function filesize($path);
+ abstract public function filesize($path);
/**
* get the last modified time of a file in the archive
* @param string $path
* @return int
*/
- public abstract function mtime($path);
+ abstract public function mtime($path);
/**
* get the files in a folder
* @param string $path
* @return array
*/
- public abstract function getFolder($path);
+ abstract public function getFolder($path);
/**
* get all files in the archive
* @return array
*/
- public abstract function getFiles();
+ abstract public function getFiles();
/**
* get the content of a file
* @param string $path
* @return string
*/
- public abstract function getFile($path);
+ abstract public function getFile($path);
/**
* extract a single file from the archive
* @param string $path
* @param string $dest
* @return bool
*/
- public abstract function extractFile($path, $dest);
+ abstract public function extractFile($path, $dest);
/**
* extract the archive
* @param string $dest
* @return bool
*/
- public abstract function extract($dest);
+ abstract public function extract($dest);
/**
* check if a file or folder exists in the archive
* @param string $path
* @return bool
*/
- public abstract function fileExists($path);
+ abstract public function fileExists($path);
/**
* remove a file or folder from the archive
* @param string $path
* @return bool
*/
- public abstract function remove($path);
+ abstract public function remove($path);
/**
* get a file handler
* @param string $path
* @param string $mode
* @return resource
*/
- public abstract function getStream($path, $mode);
+ abstract public function getStream($path, $mode);
/**
* add a folder and all its content
* @param string $path
@@ -123,15 +123,15 @@ abstract class Archive {
*/
public function addRecursive($path, $source) {
$dh = opendir($source);
- if(is_resource($dh)) {
+ if (is_resource($dh)) {
$this->addFolder($path);
while (($file = readdir($dh)) !== false) {
- if($file === '.' || $file === '..') {
+ if ($file === '.' || $file === '..') {
continue;
}
- if(is_dir($source.'/'.$file)) {
+ if (is_dir($source.'/'.$file)) {
$this->addRecursive($path.'/'.$file, $source.'/'.$file);
- }else{
+ } else {
$this->addFile($path.'/'.$file, $source.'/'.$file);
}
}
diff --git a/lib/private/Archive/TAR.php b/lib/private/Archive/TAR.php
index 20bab49adf8..0d4103299ce 100644
--- a/lib/private/Archive/TAR.php
+++ b/lib/private/Archive/TAR.php
@@ -3,8 +3,8 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Christian Weiske <cweiske@cweiske.de>
* @author Christopher Schäpers <kondou@ts.unde.re>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -35,9 +35,9 @@ namespace OC\Archive;
use Icewind\Streams\CallbackWrapper;
class TAR extends Archive {
- const PLAIN = 0;
- const GZIP = 1;
- const BZIP = 2;
+ public const PLAIN = 0;
+ public const GZIP = 1;
+ public const BZIP = 2;
private $fileList;
private $cachedHeaders;
@@ -52,7 +52,7 @@ class TAR extends Archive {
* @param string $source
*/
public function __construct($source) {
- $types = array(null, 'gz', 'bz2');
+ $types = [null, 'gz', 'bz2'];
$this->path = $source;
$this->tar = new \Archive_Tar($source, $types[self::getTarType($source)]);
}
@@ -63,7 +63,7 @@ class TAR extends Archive {
* @param string $file
* @return integer
*/
- static public function getTarType($file) {
+ public static function getTarType($file) {
if (strpos($file, '.')) {
$extension = substr($file, strrpos($file, '.'));
switch ($extension) {
@@ -103,7 +103,7 @@ class TAR extends Archive {
mkdir($folder);
}
}
- $result = $this->tar->addModify(array($tmpBase . $path), '', $tmpBase);
+ $result = $this->tar->addModify([$tmpBase . $path], '', $tmpBase);
rmdir($tmpBase . $path);
$this->fileList = false;
$this->cachedHeaders = false;
@@ -144,9 +144,9 @@ class TAR extends Archive {
rename($tmp . $source, $tmp . $dest);
$this->tar = null;
unlink($this->path);
- $types = array(null, 'gz', 'bz');
+ $types = [null, 'gz', 'bz'];
$this->tar = new \Archive_Tar($this->path, $types[self::getTarType($this->path)]);
- $this->tar->createModify(array($tmp), '', $tmp . '/');
+ $this->tar->createModify([$tmp], '', $tmp . '/');
$this->fileList = false;
$this->cachedHeaders = false;
return true;
@@ -201,7 +201,7 @@ class TAR extends Archive {
*/
public function getFolder($path) {
$files = $this->getFiles();
- $folderContent = array();
+ $folderContent = [];
$pathLength = strlen($path);
foreach ($files as $file) {
if ($file[0] == '/') {
@@ -232,7 +232,7 @@ class TAR extends Archive {
if (!$this->cachedHeaders) {
$this->cachedHeaders = $this->tar->listContent();
}
- $files = array();
+ $files = [];
foreach ($this->cachedHeaders as $header) {
$files[] = $header['filename'];
}
@@ -263,9 +263,9 @@ class TAR extends Archive {
return false;
}
if ($this->fileExists('/' . $path)) {
- $success = $this->tar->extractList(array('/' . $path), $tmp);
+ $success = $this->tar->extractList(['/' . $path], $tmp);
} else {
- $success = $this->tar->extractList(array($path), $tmp);
+ $success = $this->tar->extractList([$path], $tmp);
}
if ($success) {
rename($tmp . $path, $dest);
@@ -329,7 +329,7 @@ class TAR extends Archive {
$this->tar = null;
unlink($this->path);
$this->reopen();
- $this->tar->createModify(array($tmp), '', $tmp);
+ $this->tar->createModify([$tmp], '', $tmp);
return true;
}
@@ -378,7 +378,7 @@ class TAR extends Archive {
$this->tar->_close();
$this->tar = null;
}
- $types = array(null, 'gz', 'bz');
+ $types = [null, 'gz', 'bz'];
$this->tar = new \Archive_Tar($this->path, $types[self::getTarType($this->path)]);
}
}
diff --git a/lib/private/Archive/ZIP.php b/lib/private/Archive/ZIP.php
index 2c3df550f71..31aea420a3d 100644
--- a/lib/private/Archive/ZIP.php
+++ b/lib/private/Archive/ZIP.php
@@ -5,6 +5,7 @@
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Christopher Schäpers <kondou@ts.unde.re>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -34,7 +35,7 @@ namespace OC\Archive;
use Icewind\Streams\CallbackWrapper;
use OCP\ILogger;
-class ZIP extends Archive{
+class ZIP extends Archive {
/**
* @var \ZipArchive zip
*/
@@ -47,8 +48,8 @@ class ZIP extends Archive{
public function __construct($source) {
$this->path=$source;
$this->zip=new \ZipArchive();
- if($this->zip->open($source, \ZipArchive::CREATE)) {
- }else{
+ if ($this->zip->open($source, \ZipArchive::CREATE)) {
+ } else {
\OCP\Util::writeLog('files_archive', 'Error while opening archive '.$source, ILogger::WARN);
}
}
@@ -67,12 +68,12 @@ class ZIP extends Archive{
* @return bool
*/
public function addFile($path, $source='') {
- if($source and $source[0]=='/' and file_exists($source)) {
+ if ($source and $source[0]=='/' and file_exists($source)) {
$result=$this->zip->addFile($source, $path);
- }else{
+ } else {
$result=$this->zip->addFromString($path, $source);
}
- if($result) {
+ if ($result) {
$this->zip->close();//close and reopen to save the zip
$this->zip->open($this->path);
}
@@ -113,11 +114,11 @@ class ZIP extends Archive{
*/
public function getFolder($path) {
$files=$this->getFiles();
- $folderContent=array();
+ $folderContent=[];
$pathLength=strlen($path);
- foreach($files as $file) {
- if(substr($file, 0, $pathLength)==$path and $file!=$path) {
- if(strrpos(substr($file, 0, -1), '/')<=$pathLength) {
+ foreach ($files as $file) {
+ if (substr($file, 0, $pathLength)==$path and $file!=$path) {
+ if (strrpos(substr($file, 0, -1), '/')<=$pathLength) {
$folderContent[]=substr($file, $pathLength);
}
}
@@ -130,8 +131,8 @@ class ZIP extends Archive{
*/
public function getFiles() {
$fileCount=$this->zip->numFiles;
- $files=array();
- for($i=0;$i<$fileCount;$i++) {
+ $files=[];
+ for ($i=0;$i<$fileCount;$i++) {
$files[]=$this->zip->getNameIndex($i);
}
return $files;
@@ -176,9 +177,9 @@ class ZIP extends Archive{
* @return bool
*/
public function remove($path) {
- if($this->fileExists($path.'/')) {
+ if ($this->fileExists($path.'/')) {
return $this->zip->deleteName($path.'/');
- }else{
+ } else {
return $this->zip->deleteName($path);
}
}
@@ -189,19 +190,19 @@ class ZIP extends Archive{
* @return resource
*/
public function getStream($path, $mode) {
- if($mode=='r' or $mode=='rb') {
+ if ($mode=='r' or $mode=='rb') {
return $this->zip->getStream($path);
} else {
//since we can't directly get a writable stream,
//make a temp copy of the file and put it back
//in the archive when the stream is closed
- if(strrpos($path, '.')!==false) {
+ if (strrpos($path, '.')!==false) {
$ext=substr($path, strrpos($path, '.'));
- }else{
+ } else {
$ext='';
}
$tmpFile = \OC::$server->getTempManager()->getTemporaryFile($ext);
- if($this->fileExists($path)) {
+ if ($this->fileExists($path)) {
$this->extractFile($path, $tmpFile);
}
$handle = fopen($tmpFile, $mode);
@@ -224,9 +225,9 @@ class ZIP extends Archive{
* @return string
*/
private function stripPath($path) {
- if(!$path || $path[0]=='/') {
+ if (!$path || $path[0]=='/') {
return substr($path, 1);
- }else{
+ } else {
return $path;
}
}
diff --git a/lib/private/Authentication/Events/ARemoteWipeEvent.php b/lib/private/Authentication/Events/ARemoteWipeEvent.php
index 9dfd740c220..8d28cc5c783 100644
--- a/lib/private/Authentication/Events/ARemoteWipeEvent.php
+++ b/lib/private/Authentication/Events/ARemoteWipeEvent.php
@@ -28,7 +28,6 @@ namespace OC\Authentication\Events;
use OC\Authentication\Token\IToken;
use OCP\EventDispatcher\Event;
-use Symfony\Component\EventDispatcher\GenericEvent;
abstract class ARemoteWipeEvent extends Event {
@@ -43,5 +42,4 @@ abstract class ARemoteWipeEvent extends Event {
public function getToken(): IToken {
return $this->token;
}
-
}
diff --git a/lib/private/Authentication/Events/LoginFailed.php b/lib/private/Authentication/Events/LoginFailed.php
new file mode 100644
index 00000000000..7b107564e96
--- /dev/null
+++ b/lib/private/Authentication/Events/LoginFailed.php
@@ -0,0 +1,45 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2020, 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\Authentication\Events;
+
+use OCP\EventDispatcher\Event;
+
+class LoginFailed extends Event {
+
+ /** @var string */
+ private $loginName;
+
+ public function __construct(string $loginName) {
+ parent::__construct();
+
+ $this->loginName = $loginName;
+ }
+
+ public function getLoginName(): string {
+ return $this->loginName;
+ }
+}
diff --git a/lib/private/Authentication/Events/RemoteWipeFinished.php b/lib/private/Authentication/Events/RemoteWipeFinished.php
index 0a33ebf635f..d50b7d28077 100644
--- a/lib/private/Authentication/Events/RemoteWipeFinished.php
+++ b/lib/private/Authentication/Events/RemoteWipeFinished.php
@@ -27,5 +27,4 @@ declare(strict_types=1);
namespace OC\Authentication\Events;
class RemoteWipeFinished extends ARemoteWipeEvent {
-
}
diff --git a/lib/private/Authentication/Events/RemoteWipeStarted.php b/lib/private/Authentication/Events/RemoteWipeStarted.php
index 565c9660de6..89b560511a7 100644
--- a/lib/private/Authentication/Events/RemoteWipeStarted.php
+++ b/lib/private/Authentication/Events/RemoteWipeStarted.php
@@ -27,5 +27,4 @@ declare(strict_types=1);
namespace OC\Authentication\Events;
class RemoteWipeStarted extends ARemoteWipeEvent {
-
}
diff --git a/lib/private/Authentication/Exceptions/InvalidProviderException.php b/lib/private/Authentication/Exceptions/InvalidProviderException.php
index 090150e4a33..970096540c4 100644
--- a/lib/private/Authentication/Exceptions/InvalidProviderException.php
+++ b/lib/private/Authentication/Exceptions/InvalidProviderException.php
@@ -30,9 +30,7 @@ use Exception;
use Throwable;
class InvalidProviderException extends Exception {
-
public function __construct(string $providerId, Throwable $previous = null) {
parent::__construct("The provider '$providerId' does not exist'", 0, $previous);
}
-
}
diff --git a/lib/private/Authentication/Exceptions/InvalidTokenException.php b/lib/private/Authentication/Exceptions/InvalidTokenException.php
index badcbba28e2..efc6096da88 100644
--- a/lib/private/Authentication/Exceptions/InvalidTokenException.php
+++ b/lib/private/Authentication/Exceptions/InvalidTokenException.php
@@ -25,5 +25,4 @@ namespace OC\Authentication\Exceptions;
use Exception;
class InvalidTokenException extends Exception {
-
}
diff --git a/lib/private/Authentication/Exceptions/LoginRequiredException.php b/lib/private/Authentication/Exceptions/LoginRequiredException.php
index 1c55e122d01..9d9ce055788 100644
--- a/lib/private/Authentication/Exceptions/LoginRequiredException.php
+++ b/lib/private/Authentication/Exceptions/LoginRequiredException.php
@@ -25,5 +25,4 @@ namespace OC\Authentication\Exceptions;
use Exception;
class LoginRequiredException extends Exception {
-
}
diff --git a/lib/private/Authentication/Exceptions/PasswordLoginForbiddenException.php b/lib/private/Authentication/Exceptions/PasswordLoginForbiddenException.php
index 05815cab9f4..02ddd06020d 100644
--- a/lib/private/Authentication/Exceptions/PasswordLoginForbiddenException.php
+++ b/lib/private/Authentication/Exceptions/PasswordLoginForbiddenException.php
@@ -25,5 +25,4 @@ namespace OC\Authentication\Exceptions;
use Exception;
class PasswordLoginForbiddenException extends Exception {
-
}
diff --git a/lib/private/Authentication/Exceptions/PasswordlessTokenException.php b/lib/private/Authentication/Exceptions/PasswordlessTokenException.php
index e5ba5d87ad5..5c59dd35366 100644
--- a/lib/private/Authentication/Exceptions/PasswordlessTokenException.php
+++ b/lib/private/Authentication/Exceptions/PasswordlessTokenException.php
@@ -25,5 +25,4 @@ namespace OC\Authentication\Exceptions;
use Exception;
class PasswordlessTokenException extends Exception {
-
}
diff --git a/lib/private/Authentication/Exceptions/TokenPasswordExpiredException.php b/lib/private/Authentication/Exceptions/TokenPasswordExpiredException.php
index b4691a7a0c4..2850d3de7e1 100644
--- a/lib/private/Authentication/Exceptions/TokenPasswordExpiredException.php
+++ b/lib/private/Authentication/Exceptions/TokenPasswordExpiredException.php
@@ -27,5 +27,4 @@ declare(strict_types=1);
namespace OC\Authentication\Exceptions;
class TokenPasswordExpiredException extends ExpiredTokenException {
-
}
diff --git a/lib/private/Authentication/Exceptions/TwoFactorAuthRequiredException.php b/lib/private/Authentication/Exceptions/TwoFactorAuthRequiredException.php
index c9c5a03e021..6db87b3516c 100644
--- a/lib/private/Authentication/Exceptions/TwoFactorAuthRequiredException.php
+++ b/lib/private/Authentication/Exceptions/TwoFactorAuthRequiredException.php
@@ -25,5 +25,4 @@ namespace OC\Authentication\Exceptions;
use Exception;
class TwoFactorAuthRequiredException extends Exception {
-
}
diff --git a/lib/private/Authentication/Exceptions/UserAlreadyLoggedInException.php b/lib/private/Authentication/Exceptions/UserAlreadyLoggedInException.php
index 9c1c2a9a441..878bf59e4e9 100644
--- a/lib/private/Authentication/Exceptions/UserAlreadyLoggedInException.php
+++ b/lib/private/Authentication/Exceptions/UserAlreadyLoggedInException.php
@@ -25,5 +25,4 @@ namespace OC\Authentication\Exceptions;
use Exception;
class UserAlreadyLoggedInException extends Exception {
-
}
diff --git a/lib/private/Authentication/Listeners/LoginFailedListener.php b/lib/private/Authentication/Listeners/LoginFailedListener.php
new file mode 100644
index 00000000000..72800ad509c
--- /dev/null
+++ b/lib/private/Authentication/Listeners/LoginFailedListener.php
@@ -0,0 +1,66 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2020, Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @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\Authentication\Listeners;
+
+use OC\Authentication\Events\LoginFailed;
+use OCP\Authentication\Events\LoginFailedEvent;
+use OCP\EventDispatcher\Event;
+use OCP\EventDispatcher\IEventDispatcher;
+use OCP\EventDispatcher\IEventListener;
+use OCP\IUserManager;
+use OCP\Util;
+
+class LoginFailedListener implements IEventListener {
+
+ /** @var IEventDispatcher */
+ private $dispatcher;
+
+ /** @var IUserManager */
+ private $userManager;
+
+ public function __construct(IEventDispatcher $dispatcher, IUserManager $userManager) {
+ $this->dispatcher = $dispatcher;
+ $this->userManager = $userManager;
+ }
+
+ public function handle(Event $event): void {
+ if (!($event instanceof LoginFailed)) {
+ return;
+ }
+
+ $uid = $event->getLoginName();
+ Util::emitHook(
+ '\OCA\Files_Sharing\API\Server2Server',
+ 'preLoginNameUsedAsUserName',
+ ['uid' => &$uid]
+ );
+ if ($this->userManager->userExists($uid)) {
+ $this->dispatcher->dispatchTyped(new LoginFailedEvent($uid));
+ }
+ }
+}
diff --git a/lib/private/Authentication/Listeners/RemoteWipeActivityListener.php b/lib/private/Authentication/Listeners/RemoteWipeActivityListener.php
index 57ea002c6ab..0ab2dcf4837 100644
--- a/lib/private/Authentication/Listeners/RemoteWipeActivityListener.php
+++ b/lib/private/Authentication/Listeners/RemoteWipeActivityListener.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
namespace OC\Authentication\Listeners;
use BadMethodCallException;
-use OC\Authentication\Events\ARemoteWipeEvent;
use OC\Authentication\Events\RemoteWipeFinished;
use OC\Authentication\Events\RemoteWipeStarted;
use OC\Authentication\Token\IToken;
@@ -53,7 +52,7 @@ class RemoteWipeActivityListener implements IEventListener {
public function handle(Event $event): void {
if ($event instanceof RemoteWipeStarted) {
$this->publishActivity('remote_wipe_start', $event->getToken());
- } else if ($event instanceof RemoteWipeFinished) {
+ } elseif ($event instanceof RemoteWipeFinished) {
$this->publishActivity('remote_wipe_finish', $event->getToken());
}
}
@@ -77,5 +76,4 @@ class RemoteWipeActivityListener implements IEventListener {
]);
}
}
-
}
diff --git a/lib/private/Authentication/Listeners/RemoteWipeEmailListener.php b/lib/private/Authentication/Listeners/RemoteWipeEmailListener.php
index 0632d2e6af0..799c4ea4cf5 100644
--- a/lib/private/Authentication/Listeners/RemoteWipeEmailListener.php
+++ b/lib/private/Authentication/Listeners/RemoteWipeEmailListener.php
@@ -90,7 +90,7 @@ class RemoteWipeEmailListener implements IEventListener {
'level' => ILogger::ERROR,
]);
}
- } else if ($event instanceof RemoteWipeFinished) {
+ } elseif ($event instanceof RemoteWipeFinished) {
$uid = $event->getToken()->getUID();
$user = $this->userManager->get($uid);
if ($user === null) {
@@ -170,5 +170,4 @@ class RemoteWipeEmailListener implements IEventListener {
return $message;
}
-
}
diff --git a/lib/private/Authentication/Listeners/RemoteWipeNotificationsListener.php b/lib/private/Authentication/Listeners/RemoteWipeNotificationsListener.php
index f97d8da7351..831107a05cd 100644
--- a/lib/private/Authentication/Listeners/RemoteWipeNotificationsListener.php
+++ b/lib/private/Authentication/Listeners/RemoteWipeNotificationsListener.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
namespace OC\Authentication\Listeners;
-use OC\Authentication\Events\ARemoteWipeEvent;
use OC\Authentication\Events\RemoteWipeFinished;
use OC\Authentication\Events\RemoteWipeStarted;
use OC\Authentication\Token\IToken;
@@ -53,7 +52,7 @@ class RemoteWipeNotificationsListener implements IEventListener {
public function handle(Event $event): void {
if ($event instanceof RemoteWipeStarted) {
$this->sendNotification('remote_wipe_start', $event->getToken());
- } else if ($event instanceof RemoteWipeFinished) {
+ } elseif ($event instanceof RemoteWipeFinished) {
$this->sendNotification('remote_wipe_finish', $event->getToken());
}
}
@@ -69,5 +68,4 @@ class RemoteWipeNotificationsListener implements IEventListener {
]);
$this->notificationManager->notify($notification);
}
-
}
diff --git a/lib/private/Authentication/Listeners/UserDeletedStoreCleanupListener.php b/lib/private/Authentication/Listeners/UserDeletedStoreCleanupListener.php
index dc0be4e2e9b..c8f2da82db6 100644
--- a/lib/private/Authentication/Listeners/UserDeletedStoreCleanupListener.php
+++ b/lib/private/Authentication/Listeners/UserDeletedStoreCleanupListener.php
@@ -47,5 +47,4 @@ class UserDeletedStoreCleanupListener implements IEventListener {
$this->registry->deleteUserData($event->getUser());
}
-
}
diff --git a/lib/private/Authentication/Login/ALoginCommand.php b/lib/private/Authentication/Login/ALoginCommand.php
index e27b0db173e..effc9adf1c0 100644
--- a/lib/private/Authentication/Login/ALoginCommand.php
+++ b/lib/private/Authentication/Login/ALoginCommand.php
@@ -43,6 +43,5 @@ abstract class ALoginCommand {
}
}
- public abstract function process(LoginData $loginData): LoginResult;
-
+ abstract public function process(LoginData $loginData): LoginResult;
}
diff --git a/lib/private/Authentication/Login/Chain.php b/lib/private/Authentication/Login/Chain.php
index c86a932d6b6..1fc94fe9637 100644
--- a/lib/private/Authentication/Login/Chain.php
+++ b/lib/private/Authentication/Login/Chain.php
@@ -107,5 +107,4 @@ class Chain {
return $chain->process($loginData);
}
-
}
diff --git a/lib/private/Authentication/Login/ClearLostPasswordTokensCommand.php b/lib/private/Authentication/Login/ClearLostPasswordTokensCommand.php
index 9f4e970c9cc..f4e1ad11dd0 100644
--- a/lib/private/Authentication/Login/ClearLostPasswordTokensCommand.php
+++ b/lib/private/Authentication/Login/ClearLostPasswordTokensCommand.php
@@ -48,5 +48,4 @@ class ClearLostPasswordTokensCommand extends ALoginCommand {
return $this->processNextOrFinishSuccessfully($loginData);
}
-
}
diff --git a/lib/private/Authentication/Login/CompleteLoginCommand.php b/lib/private/Authentication/Login/CompleteLoginCommand.php
index 210b3ba9a88..d0cddba595c 100644
--- a/lib/private/Authentication/Login/CompleteLoginCommand.php
+++ b/lib/private/Authentication/Login/CompleteLoginCommand.php
@@ -47,5 +47,4 @@ class CompleteLoginCommand extends ALoginCommand {
return $this->processNextOrFinishSuccessfully($loginData);
}
-
}
diff --git a/lib/private/Authentication/Login/CreateSessionTokenCommand.php b/lib/private/Authentication/Login/CreateSessionTokenCommand.php
index fbc8215e67f..05b6c27f565 100644
--- a/lib/private/Authentication/Login/CreateSessionTokenCommand.php
+++ b/lib/private/Authentication/Login/CreateSessionTokenCommand.php
@@ -51,17 +51,31 @@ class CreateSessionTokenCommand extends ALoginCommand {
$tokenType = IToken::DO_NOT_REMEMBER;
}
- $this->userSession->createSessionToken(
- $loginData->getRequest(),
- $loginData->getUser()->getUID(),
- $loginData->getUsername(),
- $loginData->getPassword(),
- $tokenType
- );
- $this->userSession->updateTokens(
- $loginData->getUser()->getUID(),
- $loginData->getPassword()
- );
+ if ($loginData->getPassword() === '') {
+ $this->userSession->createSessionToken(
+ $loginData->getRequest(),
+ $loginData->getUser()->getUID(),
+ $loginData->getUsername(),
+ null,
+ $tokenType
+ );
+ $this->userSession->updateTokens(
+ $loginData->getUser()->getUID(),
+ ''
+ );
+ } else {
+ $this->userSession->createSessionToken(
+ $loginData->getRequest(),
+ $loginData->getUser()->getUID(),
+ $loginData->getUsername(),
+ $loginData->getPassword(),
+ $tokenType
+ );
+ $this->userSession->updateTokens(
+ $loginData->getUser()->getUID(),
+ $loginData->getPassword()
+ );
+ }
return $this->processNextOrFinishSuccessfully($loginData);
}
diff --git a/lib/private/Authentication/Login/EmailLoginCommand.php b/lib/private/Authentication/Login/EmailLoginCommand.php
index c281ddc6737..24b5a00196b 100644
--- a/lib/private/Authentication/Login/EmailLoginCommand.php
+++ b/lib/private/Authentication/Login/EmailLoginCommand.php
@@ -57,5 +57,4 @@ class EmailLoginCommand extends ALoginCommand {
return $this->processNextOrFinishSuccessfully($loginData);
}
-
}
diff --git a/lib/private/Authentication/Login/FinishRememberedLoginCommand.php b/lib/private/Authentication/Login/FinishRememberedLoginCommand.php
index 4c4b37b0801..48d9e51e4b9 100644
--- a/lib/private/Authentication/Login/FinishRememberedLoginCommand.php
+++ b/lib/private/Authentication/Login/FinishRememberedLoginCommand.php
@@ -3,6 +3,7 @@
* @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
*
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
@@ -26,22 +27,25 @@ declare(strict_types=1);
namespace OC\Authentication\Login;
use OC\User\Session;
+use OCP\IConfig;
class FinishRememberedLoginCommand extends ALoginCommand {
/** @var Session */
private $userSession;
+ /** @var IConfig */
+ private $config;
- public function __construct(Session $userSession) {
+ public function __construct(Session $userSession, IConfig $config) {
$this->userSession = $userSession;
+ $this->config = $config;
}
public function process(LoginData $loginData): LoginResult {
- if ($loginData->isRememberLogin()) {
+ if ($loginData->isRememberLogin() && $this->config->getSystemValue('auto_logout', false) === false) {
$this->userSession->createRememberMeToken($loginData->getUser());
}
return $this->processNextOrFinishSuccessfully($loginData);
}
-
}
diff --git a/lib/private/Authentication/Login/LoggedInCheckCommand.php b/lib/private/Authentication/Login/LoggedInCheckCommand.php
index 9c1e45e0db7..d2546a62d16 100644
--- a/lib/private/Authentication/Login/LoggedInCheckCommand.php
+++ b/lib/private/Authentication/Login/LoggedInCheckCommand.php
@@ -3,6 +3,7 @@
* @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
*
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @license GNU AGPL version 3 or any later version
*
@@ -25,29 +26,38 @@ declare(strict_types=1);
namespace OC\Authentication\Login;
+use OC\Authentication\Events\LoginFailed;
use OC\Core\Controller\LoginController;
+use OCP\EventDispatcher\IEventDispatcher;
use OCP\ILogger;
+use OCP\IUserManager;
class LoggedInCheckCommand extends ALoginCommand {
/** @var ILogger */
private $logger;
+ /** @var IEventDispatcher */
+ private $dispatcher;
+ /** @var IUserManager */
+ private $userManager;
- public function __construct(ILogger $logger) {
+ public function __construct(ILogger $logger, IEventDispatcher $dispatcher) {
$this->logger = $logger;
+ $this->dispatcher = $dispatcher;
}
public function process(LoginData $loginData): LoginResult {
if ($loginData->getUser() === false) {
- $username = $loginData->getUsername();
+ $loginName = $loginData->getUsername();
$ip = $loginData->getRequest()->getRemoteAddress();
- $this->logger->warning("Login failed: $username (Remote IP: $ip)");
+ $this->logger->warning("Login failed: $loginName (Remote IP: $ip)");
+
+ $this->dispatcher->dispatchTyped(new LoginFailed($loginName));
return LoginResult::failure($loginData, LoginController::LOGIN_MSG_INVALIDPASSWORD);
}
return $this->processNextOrFinishSuccessfully($loginData);
}
-
}
diff --git a/lib/private/Authentication/Login/LoginData.php b/lib/private/Authentication/Login/LoginData.php
index 3249c44a29a..1da09f1883f 100644
--- a/lib/private/Authentication/Login/LoginData.php
+++ b/lib/private/Authentication/Login/LoginData.php
@@ -3,6 +3,7 @@
* @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
*
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @license GNU AGPL version 3 or any later version
*
@@ -56,7 +57,7 @@ class LoginData {
public function __construct(IRequest $request,
string $username,
- string $password,
+ ?string $password,
string $redirectUrl = null,
string $timeZone = '',
string $timeZoneOffset = '') {
@@ -80,7 +81,7 @@ class LoginData {
return $this->username;
}
- public function getPassword(): string {
+ public function getPassword(): ?string {
return $this->password;
}
@@ -117,5 +118,4 @@ class LoginData {
public function isRememberLogin(): bool {
return $this->rememberLogin;
}
-
}
diff --git a/lib/private/Authentication/Login/LoginResult.php b/lib/private/Authentication/Login/LoginResult.php
index 273e0ee8d5c..60228307135 100644
--- a/lib/private/Authentication/Login/LoginResult.php
+++ b/lib/private/Authentication/Login/LoginResult.php
@@ -79,5 +79,4 @@ class LoginResult {
public function getErrorMessage(): ?string {
return $this->errorMessage;
}
-
}
diff --git a/lib/private/Authentication/Login/SetUserTimezoneCommand.php b/lib/private/Authentication/Login/SetUserTimezoneCommand.php
index d3599880228..0029f2f1677 100644
--- a/lib/private/Authentication/Login/SetUserTimezoneCommand.php
+++ b/lib/private/Authentication/Login/SetUserTimezoneCommand.php
@@ -58,5 +58,4 @@ class SetUserTimezoneCommand extends ALoginCommand {
return $this->processNextOrFinishSuccessfully($loginData);
}
-
}
diff --git a/lib/private/Authentication/Login/TwoFactorCommand.php b/lib/private/Authentication/Login/TwoFactorCommand.php
index 2d889ef8c70..86b85c83fd0 100644
--- a/lib/private/Authentication/Login/TwoFactorCommand.php
+++ b/lib/private/Authentication/Login/TwoFactorCommand.php
@@ -69,7 +69,7 @@ class TwoFactorCommand extends ALoginCommand {
// No providers set up, but 2FA is enforced and setup providers are available
$url = 'core.TwoFactorChallenge.setupProviders';
$urlParams = [];
- } else if (!$providerSet->isProviderMissing() && count($providers) === 1) {
+ } elseif (!$providerSet->isProviderMissing() && count($providers) === 1) {
// Single provider (and no missing ones), hence we can redirect to that provider's challenge page directly
/* @var $provider IProvider */
$provider = array_pop($providers);
@@ -91,5 +91,4 @@ class TwoFactorCommand extends ALoginCommand {
$this->urlGenerator->linkToRoute($url, $urlParams)
);
}
-
}
diff --git a/lib/private/Authentication/Login/UidLoginCommand.php b/lib/private/Authentication/Login/UidLoginCommand.php
index 76e06fb3e4f..8c9a516c735 100644
--- a/lib/private/Authentication/Login/UidLoginCommand.php
+++ b/lib/private/Authentication/Login/UidLoginCommand.php
@@ -53,5 +53,4 @@ class UidLoginCommand extends ALoginCommand {
return $this->processNextOrFinishSuccessfully($loginData);
}
-
}
diff --git a/lib/private/Authentication/Login/UpdateLastPasswordConfirmCommand.php b/lib/private/Authentication/Login/UpdateLastPasswordConfirmCommand.php
index 9e89aa086db..efaf5554c21 100644
--- a/lib/private/Authentication/Login/UpdateLastPasswordConfirmCommand.php
+++ b/lib/private/Authentication/Login/UpdateLastPasswordConfirmCommand.php
@@ -44,5 +44,4 @@ class UpdateLastPasswordConfirmCommand extends ALoginCommand {
return $this->processNextOrFinishSuccessfully($loginData);
}
-
}
diff --git a/lib/private/Authentication/Login/UserDisabledCheckCommand.php b/lib/private/Authentication/Login/UserDisabledCheckCommand.php
index 11f2d5f3a90..e33853ef5bd 100644
--- a/lib/private/Authentication/Login/UserDisabledCheckCommand.php
+++ b/lib/private/Authentication/Login/UserDisabledCheckCommand.php
@@ -56,5 +56,4 @@ class UserDisabledCheckCommand extends ALoginCommand {
return $this->processNextOrFinishSuccessfully($loginData);
}
-
}
diff --git a/lib/private/Authentication/Login/WebAuthnChain.php b/lib/private/Authentication/Login/WebAuthnChain.php
new file mode 100644
index 00000000000..1f737a1674f
--- /dev/null
+++ b/lib/private/Authentication/Login/WebAuthnChain.php
@@ -0,0 +1,98 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2020, 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\Authentication\Login;
+
+class WebAuthnChain {
+ /** @var UserDisabledCheckCommand */
+ private $userDisabledCheckCommand;
+
+ /** @var LoggedInCheckCommand */
+ private $loggedInCheckCommand;
+
+ /** @var CompleteLoginCommand */
+ private $completeLoginCommand;
+
+ /** @var CreateSessionTokenCommand */
+ private $createSessionTokenCommand;
+
+ /** @var ClearLostPasswordTokensCommand */
+ private $clearLostPasswordTokensCommand;
+
+ /** @var UpdateLastPasswordConfirmCommand */
+ private $updateLastPasswordConfirmCommand;
+
+ /** @var SetUserTimezoneCommand */
+ private $setUserTimezoneCommand;
+
+ /** @var TwoFactorCommand */
+ private $twoFactorCommand;
+
+ /** @var FinishRememberedLoginCommand */
+ private $finishRememberedLoginCommand;
+
+ /** @var WebAuthnLoginCommand */
+ private $webAuthnLoginCommand;
+
+ public function __construct(UserDisabledCheckCommand $userDisabledCheckCommand,
+ WebAuthnLoginCommand $webAuthnLoginCommand,
+ LoggedInCheckCommand $loggedInCheckCommand,
+ CompleteLoginCommand $completeLoginCommand,
+ CreateSessionTokenCommand $createSessionTokenCommand,
+ ClearLostPasswordTokensCommand $clearLostPasswordTokensCommand,
+ UpdateLastPasswordConfirmCommand $updateLastPasswordConfirmCommand,
+ SetUserTimezoneCommand $setUserTimezoneCommand,
+ TwoFactorCommand $twoFactorCommand,
+ FinishRememberedLoginCommand $finishRememberedLoginCommand
+ ) {
+ $this->userDisabledCheckCommand = $userDisabledCheckCommand;
+ $this->webAuthnLoginCommand = $webAuthnLoginCommand;
+ $this->loggedInCheckCommand = $loggedInCheckCommand;
+ $this->completeLoginCommand = $completeLoginCommand;
+ $this->createSessionTokenCommand = $createSessionTokenCommand;
+ $this->clearLostPasswordTokensCommand = $clearLostPasswordTokensCommand;
+ $this->updateLastPasswordConfirmCommand = $updateLastPasswordConfirmCommand;
+ $this->setUserTimezoneCommand = $setUserTimezoneCommand;
+ $this->twoFactorCommand = $twoFactorCommand;
+ $this->finishRememberedLoginCommand = $finishRememberedLoginCommand;
+ }
+
+ public function process(LoginData $loginData): LoginResult {
+ $chain = $this->userDisabledCheckCommand;
+ $chain
+ ->setNext($this->webAuthnLoginCommand)
+ ->setNext($this->loggedInCheckCommand)
+ ->setNext($this->completeLoginCommand)
+ ->setNext($this->createSessionTokenCommand)
+ ->setNext($this->clearLostPasswordTokensCommand)
+ ->setNext($this->updateLastPasswordConfirmCommand)
+ ->setNext($this->setUserTimezoneCommand)
+ ->setNext($this->twoFactorCommand)
+ ->setNext($this->finishRememberedLoginCommand);
+
+ return $chain->process($loginData);
+ }
+}
diff --git a/lib/private/Authentication/Login/WebAuthnLoginCommand.php b/lib/private/Authentication/Login/WebAuthnLoginCommand.php
new file mode 100644
index 00000000000..c08108fe9bb
--- /dev/null
+++ b/lib/private/Authentication/Login/WebAuthnLoginCommand.php
@@ -0,0 +1,49 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2020, 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\Authentication\Login;
+
+use OCP\IUserManager;
+
+class WebAuthnLoginCommand extends ALoginCommand {
+
+ /** @var IUserManager */
+ private $userManager;
+
+ public function __construct(IUserManager $userManager) {
+ $this->userManager = $userManager;
+ }
+
+ public function process(LoginData $loginData): LoginResult {
+ $user = $this->userManager->get($loginData->getUsername());
+ $loginData->setUser($user);
+ if ($user === null) {
+ $loginData->setUser(false);
+ }
+
+ return $this->processNextOrFinishSuccessfully($loginData);
+ }
+}
diff --git a/lib/private/Authentication/LoginCredentials/Credentials.php b/lib/private/Authentication/LoginCredentials/Credentials.php
index b9542aed354..e4cbdccec50 100644
--- a/lib/private/Authentication/LoginCredentials/Credentials.php
+++ b/lib/private/Authentication/LoginCredentials/Credentials.php
@@ -67,5 +67,4 @@ class Credentials implements ICredentials {
public function getPassword() {
return $this->password;
}
-
}
diff --git a/lib/private/Authentication/LoginCredentials/Store.php b/lib/private/Authentication/LoginCredentials/Store.php
index a16b291f5f5..f4bedd88a18 100644
--- a/lib/private/Authentication/LoginCredentials/Store.php
+++ b/lib/private/Authentication/LoginCredentials/Store.php
@@ -118,5 +118,4 @@ class Store implements IStore {
// If we reach this line, an exception was thrown.
throw new CredentialsUnavailableException();
}
-
}
diff --git a/lib/private/Authentication/Token/DefaultToken.php b/lib/private/Authentication/Token/DefaultToken.php
index 4af42d07813..9df907dfb4a 100644
--- a/lib/private/Authentication/Token/DefaultToken.php
+++ b/lib/private/Authentication/Token/DefaultToken.php
@@ -43,8 +43,7 @@ use OCP\AppFramework\Db\Entity;
* @method void setVersion(int $version)
*/
class DefaultToken extends Entity implements INamedToken {
-
- const VERSION = 1;
+ public const VERSION = 1;
/** @var string user UID */
protected $uid;
diff --git a/lib/private/Authentication/Token/DefaultTokenCleanupJob.php b/lib/private/Authentication/Token/DefaultTokenCleanupJob.php
index 25b4aa59a92..0686f40e82f 100644
--- a/lib/private/Authentication/Token/DefaultTokenCleanupJob.php
+++ b/lib/private/Authentication/Token/DefaultTokenCleanupJob.php
@@ -27,11 +27,9 @@ use OC;
use OC\BackgroundJob\Job;
class DefaultTokenCleanupJob extends Job {
-
protected function run($argument) {
/* @var $provider IProvider */
$provider = OC::$server->query(IProvider::class);
$provider->invalidateOldTokens();
}
-
}
diff --git a/lib/private/Authentication/Token/DefaultTokenMapper.php b/lib/private/Authentication/Token/DefaultTokenMapper.php
index 3f11e02d5cd..e51033ed1df 100644
--- a/lib/private/Authentication/Token/DefaultTokenMapper.php
+++ b/lib/private/Authentication/Token/DefaultTokenMapper.php
@@ -36,7 +36,6 @@ use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
class DefaultTokenMapper extends QBMapper {
-
public function __construct(IDBConnection $db) {
parent::__construct($db, 'authtoken');
}
@@ -168,5 +167,4 @@ class DefaultTokenMapper extends QBMapper {
->andWhere($qb->expr()->eq('version', $qb->createNamedParameter(DefaultToken::VERSION, IQueryBuilder::PARAM_INT)));
$qb->execute();
}
-
}
diff --git a/lib/private/Authentication/Token/DefaultTokenProvider.php b/lib/private/Authentication/Token/DefaultTokenProvider.php
index 05e601d78a7..3556cfd24b0 100644
--- a/lib/private/Authentication/Token/DefaultTokenProvider.php
+++ b/lib/private/Authentication/Token/DefaultTokenProvider.php
@@ -286,7 +286,6 @@ class DefaultTokenProvider implements IProvider {
$password = $this->getPassword($token, $oldTokenId);
$token->setPassword($this->encryptPassword($password, $newTokenId));
} catch (PasswordlessTokenException $e) {
-
}
$token->setToken($this->hashToken($newTokenId));
diff --git a/lib/private/Authentication/Token/INamedToken.php b/lib/private/Authentication/Token/INamedToken.php
index 99eb338e8d4..30755879963 100644
--- a/lib/private/Authentication/Token/INamedToken.php
+++ b/lib/private/Authentication/Token/INamedToken.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
namespace OC\Authentication\Token;
-
interface INamedToken extends IToken {
/**
* Set token name
diff --git a/lib/private/Authentication/Token/IToken.php b/lib/private/Authentication/Token/IToken.php
index e2de2b5fbbd..326e9554b8e 100644
--- a/lib/private/Authentication/Token/IToken.php
+++ b/lib/private/Authentication/Token/IToken.php
@@ -30,12 +30,11 @@ namespace OC\Authentication\Token;
use JsonSerializable;
interface IToken extends JsonSerializable {
-
- const TEMPORARY_TOKEN = 0;
- const PERMANENT_TOKEN = 1;
- const WIPE_TOKEN = 2;
- const DO_NOT_REMEMBER = 0;
- const REMEMBER = 1;
+ public const TEMPORARY_TOKEN = 0;
+ public const PERMANENT_TOKEN = 1;
+ public const WIPE_TOKEN = 2;
+ public const DO_NOT_REMEMBER = 0;
+ public const REMEMBER = 1;
/**
* Get the token ID
diff --git a/lib/private/Authentication/Token/IWipeableToken.php b/lib/private/Authentication/Token/IWipeableToken.php
index 62293e6933b..efc542faa69 100644
--- a/lib/private/Authentication/Token/IWipeableToken.php
+++ b/lib/private/Authentication/Token/IWipeableToken.php
@@ -33,5 +33,4 @@ interface IWipeableToken extends IToken {
* Mark the token for remote wipe
*/
public function wipe(): void;
-
}
diff --git a/lib/private/Authentication/Token/Manager.php b/lib/private/Authentication/Token/Manager.php
index dddc675a428..073569de0cf 100644
--- a/lib/private/Authentication/Token/Manager.php
+++ b/lib/private/Authentication/Token/Manager.php
@@ -139,7 +139,7 @@ class Manager implements IProvider {
throw $e;
} catch (ExpiredTokenException $e) {
throw $e;
- } catch(InvalidTokenException $e) {
+ } catch (InvalidTokenException $e) {
// No worries we try to convert it to a PublicKey Token
}
@@ -272,6 +272,4 @@ class Manager implements IProvider {
$this->defaultTokenProvider->updatePasswords($uid, $password);
$this->publicKeyTokenProvider->updatePasswords($uid, $password);
}
-
-
}
diff --git a/lib/private/Authentication/Token/PublicKeyToken.php b/lib/private/Authentication/Token/PublicKeyToken.php
index 221f286ae05..320373436f1 100644
--- a/lib/private/Authentication/Token/PublicKeyToken.php
+++ b/lib/private/Authentication/Token/PublicKeyToken.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
*
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Kesselberg <mail@danielkesselberg.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -47,8 +48,7 @@ use OCP\AppFramework\Db\Entity;
* @method bool getPasswordInvalid()
*/
class PublicKeyToken extends Entity implements INamedToken, IWipeableToken {
-
- const VERSION = 2;
+ public const VERSION = 2;
/** @var string user UID */
protected $uid;
diff --git a/lib/private/Authentication/Token/PublicKeyTokenMapper.php b/lib/private/Authentication/Token/PublicKeyTokenMapper.php
index 15a161aef64..e05325fec30 100644
--- a/lib/private/Authentication/Token/PublicKeyTokenMapper.php
+++ b/lib/private/Authentication/Token/PublicKeyTokenMapper.php
@@ -33,7 +33,6 @@ use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
class PublicKeyTokenMapper extends QBMapper {
-
public function __construct(IDBConnection $db) {
parent::__construct($db, 'authtoken');
}
diff --git a/lib/private/Authentication/Token/RemoteWipe.php b/lib/private/Authentication/Token/RemoteWipe.php
index 2285ccd2cd8..cab68357a01 100644
--- a/lib/private/Authentication/Token/RemoteWipe.php
+++ b/lib/private/Authentication/Token/RemoteWipe.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
*
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @license GNU AGPL version 3 or any later version
@@ -30,7 +31,6 @@ namespace OC\Authentication\Token;
use function array_filter;
use OC\Authentication\Events\RemoteWipeFinished;
use OC\Authentication\Events\RemoteWipeStarted;
-use OC\Authentication\Exceptions\ExpiredTokenException;
use OC\Authentication\Exceptions\InvalidTokenException;
use OC\Authentication\Exceptions\WipeTokenException;
use OCP\EventDispatcher\IEventDispatcher;
@@ -57,18 +57,14 @@ class RemoteWipe {
}
/**
- * @param int $id
- *
+ * @param IToken $token
* @return bool
*
* @throws InvalidTokenException
* @throws WipeTokenException
- * @throws ExpiredTokenException
*/
- public function markTokenForWipe(int $id): bool {
- $token = $this->tokenProvider->getTokenById($id);
-
- if (!($token instanceof IWipeableToken)) {
+ public function markTokenForWipe(IToken $token): bool {
+ if (!$token instanceof IWipeableToken) {
return false;
}
@@ -156,5 +152,4 @@ class RemoteWipe {
return true;
}
-
}
diff --git a/lib/private/Authentication/TwoFactorAuth/Db/ProviderUserAssignmentDao.php b/lib/private/Authentication/TwoFactorAuth/Db/ProviderUserAssignmentDao.php
index 4e8f9731d94..02e6863d1c4 100644
--- a/lib/private/Authentication/TwoFactorAuth/Db/ProviderUserAssignmentDao.php
+++ b/lib/private/Authentication/TwoFactorAuth/Db/ProviderUserAssignmentDao.php
@@ -35,8 +35,7 @@ use OCP\IDBConnection;
* 2FA providers
*/
class ProviderUserAssignmentDao {
-
- const TABLE_NAME = 'twofactor_providers';
+ public const TABLE_NAME = 'twofactor_providers';
/** @var IDBConnection */
private $conn;
@@ -90,7 +89,6 @@ class ProviderUserAssignmentDao {
->andWhere($qb->expr()->eq('uid', $qb->createNamedParameter($uid)));
$updateQuery->execute();
}
-
}
public function deleteByUser(string $uid) {
@@ -110,5 +108,4 @@ class ProviderUserAssignmentDao {
$deleteQuery->execute();
}
-
}
diff --git a/lib/private/Authentication/TwoFactorAuth/EnforcementState.php b/lib/private/Authentication/TwoFactorAuth/EnforcementState.php
index abd0ec7f2e7..c244843454b 100644
--- a/lib/private/Authentication/TwoFactorAuth/EnforcementState.php
+++ b/lib/private/Authentication/TwoFactorAuth/EnforcementState.php
@@ -82,5 +82,4 @@ class EnforcementState implements JsonSerializable {
'excludedGroups' => $this->excludedGroups,
];
}
-
}
diff --git a/lib/private/Authentication/TwoFactorAuth/Manager.php b/lib/private/Authentication/TwoFactorAuth/Manager.php
index b048d4e1f3c..07e61175361 100644
--- a/lib/private/Authentication/TwoFactorAuth/Manager.php
+++ b/lib/private/Authentication/TwoFactorAuth/Manager.php
@@ -31,13 +31,11 @@ use function array_diff;
use function array_filter;
use BadMethodCallException;
use Exception;
-use OC\Authentication\Exceptions\ExpiredTokenException;
use OC\Authentication\Exceptions\InvalidTokenException;
use OC\Authentication\Token\IProvider as TokenProvider;
use OCP\Activity\IManager;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\Authentication\TwoFactorAuth\IActivatableAtLogin;
-use OCP\Authentication\TwoFactorAuth\ILoginSetupProvider;
use OCP\Authentication\TwoFactorAuth\IProvider;
use OCP\Authentication\TwoFactorAuth\IRegistry;
use OCP\IConfig;
@@ -48,11 +46,10 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\GenericEvent;
class Manager {
-
- const SESSION_UID_KEY = 'two_factor_auth_uid';
- const SESSION_UID_DONE = 'two_factor_auth_passed';
- const REMEMBER_LOGIN = 'two_factor_remember_login';
- const BACKUP_CODES_PROVIDER_ID = 'backup_codes';
+ public const SESSION_UID_KEY = 'two_factor_auth_uid';
+ public const SESSION_UID_DONE = 'two_factor_auth_passed';
+ public const REMEMBER_LOGIN = 'two_factor_remember_login';
+ public const BACKUP_CODES_PROVIDER_ID = 'backup_codes';
/** @var ProviderLoader */
private $providerLoader;
@@ -142,7 +139,7 @@ class Manager {
*/
public function getLoginSetupProviders(IUser $user): array {
$providers = $this->providerLoader->getProviders($user);
- return array_filter($providers, function(IProvider $provider) {
+ return array_filter($providers, function (IProvider $provider) {
return ($provider instanceof IActivatableAtLogin);
});
}
@@ -160,7 +157,6 @@ class Manager {
*/
private function fixMissingProviderStates(array $providerStates,
array $providers, IUser $user): array {
-
foreach ($providers as $provider) {
if (isset($providerStates[$provider->getId()])) {
// All good
@@ -200,8 +196,8 @@ class Manager {
$missing[] = $providerId;
$this->logger->alert("two-factor auth provider '$providerId' failed to load",
[
- 'app' => 'core',
- ]);
+ 'app' => 'core',
+ ]);
}
}
@@ -386,5 +382,4 @@ class Manager {
$this->tokenProvider->invalidateTokenById($userId, $tokenId);
}
}
-
}
diff --git a/lib/private/Authentication/TwoFactorAuth/MandatoryTwoFactor.php b/lib/private/Authentication/TwoFactorAuth/MandatoryTwoFactor.php
index 42e5def80de..b06a517ef80 100644
--- a/lib/private/Authentication/TwoFactorAuth/MandatoryTwoFactor.php
+++ b/lib/private/Authentication/TwoFactorAuth/MandatoryTwoFactor.php
@@ -110,6 +110,4 @@ class MandatoryTwoFactor {
*/
return true;
}
-
-
}
diff --git a/lib/private/Authentication/TwoFactorAuth/ProviderLoader.php b/lib/private/Authentication/TwoFactorAuth/ProviderLoader.php
index b287072dde3..40385d737ae 100644
--- a/lib/private/Authentication/TwoFactorAuth/ProviderLoader.php
+++ b/lib/private/Authentication/TwoFactorAuth/ProviderLoader.php
@@ -35,8 +35,7 @@ use OCP\Authentication\TwoFactorAuth\IProvider;
use OCP\IUser;
class ProviderLoader {
-
- const BACKUP_CODES_APP_ID = 'twofactor_backupcodes';
+ public const BACKUP_CODES_APP_ID = 'twofactor_backupcodes';
/** @var IAppManager */
private $appManager;
@@ -86,5 +85,4 @@ class ProviderLoader {
OC_App::loadApp($appId);
}
}
-
}
diff --git a/lib/private/Authentication/TwoFactorAuth/ProviderManager.php b/lib/private/Authentication/TwoFactorAuth/ProviderManager.php
index 8c41ac30bfd..4d3171e96f7 100644
--- a/lib/private/Authentication/TwoFactorAuth/ProviderManager.php
+++ b/lib/private/Authentication/TwoFactorAuth/ProviderManager.php
@@ -28,7 +28,6 @@ namespace OC\Authentication\TwoFactorAuth;
use OC\Authentication\Exceptions\InvalidProviderException;
use OCP\Authentication\TwoFactorAuth\IActivatableByAdmin;
-use OCP\Authentication\TwoFactorAuth\IDeactivableByAdmin;
use OCP\Authentication\TwoFactorAuth\IDeactivatableByAdmin;
use OCP\Authentication\TwoFactorAuth\IProvider;
use OCP\Authentication\TwoFactorAuth\IRegistry;
@@ -94,5 +93,4 @@ class ProviderManager {
return false;
}
}
-
}
diff --git a/lib/private/Authentication/TwoFactorAuth/ProviderSet.php b/lib/private/Authentication/TwoFactorAuth/ProviderSet.php
index a1577de7440..c27681c6036 100644
--- a/lib/private/Authentication/TwoFactorAuth/ProviderSet.php
+++ b/lib/private/Authentication/TwoFactorAuth/ProviderSet.php
@@ -72,7 +72,7 @@ class ProviderSet {
* @return IProvider[]
*/
public function getPrimaryProviders(): array {
- return array_filter($this->providers, function(IProvider $provider) {
+ return array_filter($this->providers, function (IProvider $provider) {
return !($provider instanceof BackupCodesProvider);
});
}
@@ -80,5 +80,4 @@ class ProviderSet {
public function isProviderMissing(): bool {
return $this->providerMissing;
}
-
}
diff --git a/lib/private/Authentication/WebAuthn/CredentialRepository.php b/lib/private/Authentication/WebAuthn/CredentialRepository.php
new file mode 100644
index 00000000000..f75b4b5ae46
--- /dev/null
+++ b/lib/private/Authentication/WebAuthn/CredentialRepository.php
@@ -0,0 +1,95 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2020, 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\Authentication\WebAuthn;
+
+use OC\Authentication\WebAuthn\Db\PublicKeyCredentialEntity;
+use OC\Authentication\WebAuthn\Db\PublicKeyCredentialMapper;
+use OCP\AppFramework\Db\IMapperException;
+use Webauthn\PublicKeyCredentialSource;
+use Webauthn\PublicKeyCredentialSourceRepository;
+use Webauthn\PublicKeyCredentialUserEntity;
+
+class CredentialRepository implements PublicKeyCredentialSourceRepository {
+
+ /** @var PublicKeyCredentialMapper */
+ private $credentialMapper;
+
+ public function __construct(PublicKeyCredentialMapper $credentialMapper) {
+ $this->credentialMapper = $credentialMapper;
+ }
+
+ public function findOneByCredentialId(string $publicKeyCredentialId): ?PublicKeyCredentialSource {
+ try {
+ $entity = $this->credentialMapper->findOneByCredentialId($publicKeyCredentialId);
+ return $entity->toPublicKeyCredentialSource();
+ } catch (IMapperException $e) {
+ return null;
+ }
+ }
+
+ /**
+ * @return PublicKeyCredentialSource[]
+ */
+ public function findAllForUserEntity(PublicKeyCredentialUserEntity $publicKeyCredentialUserEntity): array {
+ $uid = $publicKeyCredentialUserEntity->getId();
+ $entities = $this->credentialMapper->findAllForUid($uid);
+
+ return array_map(function (PublicKeyCredentialEntity $entity) {
+ return $entity->toPublicKeyCredentialSource();
+ }, $entities);
+ }
+
+ public function saveAndReturnCredentialSource(PublicKeyCredentialSource $publicKeyCredentialSource, string $name = null): PublicKeyCredentialEntity {
+ $oldEntity = null;
+
+ try {
+ $oldEntity = $this->credentialMapper->findOneByCredentialId($publicKeyCredentialSource->getPublicKeyCredentialId());
+ } catch (IMapperException $e) {
+ }
+
+ $defaultName = false;
+ if ($name === null) {
+ $defaultName = true;
+ $name = 'default';
+ }
+
+ $entity = PublicKeyCredentialEntity::fromPublicKeyCrendentialSource($name, $publicKeyCredentialSource);
+
+ if ($oldEntity) {
+ $entity->setId($oldEntity->getId());
+ if ($defaultName) {
+ $entity->setName($oldEntity->getName());
+ }
+ }
+
+ return $this->credentialMapper->insertOrUpdate($entity);
+ }
+
+ public function saveCredentialSource(PublicKeyCredentialSource $publicKeyCredentialSource, string $name = null): void {
+ $this->saveAndReturnCredentialSource($publicKeyCredentialSource, $name);
+ }
+}
diff --git a/lib/private/Authentication/WebAuthn/Db/PublicKeyCredentialEntity.php b/lib/private/Authentication/WebAuthn/Db/PublicKeyCredentialEntity.php
new file mode 100644
index 00000000000..ae31a2ea772
--- /dev/null
+++ b/lib/private/Authentication/WebAuthn/Db/PublicKeyCredentialEntity.php
@@ -0,0 +1,93 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2020, Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @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\Authentication\WebAuthn\Db;
+
+use JsonSerializable;
+use OCP\AppFramework\Db\Entity;
+use Webauthn\PublicKeyCredentialSource;
+
+/**
+ * @since 19.0.0
+ *
+ * @method string getUid();
+ * @method void setUid(string $uid)
+ * @method string getName();
+ * @method void setName(string $name);
+ * @method string getPublicKeyCredentialId();
+ * @method void setPublicKeyCredentialId(string $id);
+ * @method string getData();
+ * @method void setData(string $data);
+ */
+class PublicKeyCredentialEntity extends Entity implements JsonSerializable {
+
+ /** @var string */
+ protected $name;
+
+ /** @var string */
+ protected $uid;
+
+ /** @var string */
+ protected $publicKeyCredentialId;
+
+ /** @var string */
+ protected $data;
+
+ public function __construct() {
+ $this->addType('name', 'string');
+ $this->addType('uid', 'string');
+ $this->addType('publicKeyCredentialId', 'string');
+ $this->addType('data', 'string');
+ }
+
+ public static function fromPublicKeyCrendentialSource(string $name, PublicKeyCredentialSource $publicKeyCredentialSource): PublicKeyCredentialEntity {
+ $publicKeyCredentialEntity = new self();
+
+ $publicKeyCredentialEntity->setName($name);
+ $publicKeyCredentialEntity->setUid($publicKeyCredentialSource->getUserHandle());
+ $publicKeyCredentialEntity->setPublicKeyCredentialId(base64_encode($publicKeyCredentialSource->getPublicKeyCredentialId()));
+ $publicKeyCredentialEntity->setData(json_encode($publicKeyCredentialSource));
+
+ return $publicKeyCredentialEntity;
+ }
+
+ public function toPublicKeyCredentialSource(): PublicKeyCredentialSource {
+ return PublicKeyCredentialSource::createFromArray(
+ json_decode($this->getData(), true)
+ );
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function jsonSerialize(): array {
+ return [
+ 'id' => $this->getId(),
+ 'name' => $this->getName(),
+ ];
+ }
+}
diff --git a/lib/private/Authentication/WebAuthn/Db/PublicKeyCredentialMapper.php b/lib/private/Authentication/WebAuthn/Db/PublicKeyCredentialMapper.php
new file mode 100644
index 00000000000..9c436b38b5d
--- /dev/null
+++ b/lib/private/Authentication/WebAuthn/Db/PublicKeyCredentialMapper.php
@@ -0,0 +1,84 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2020, 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\Authentication\WebAuthn\Db;
+
+use OCP\AppFramework\Db\DoesNotExistException;
+use OCP\AppFramework\Db\QBMapper;
+use OCP\IDBConnection;
+
+class PublicKeyCredentialMapper extends QBMapper {
+ public function __construct(IDBConnection $db) {
+ parent::__construct($db, 'webauthn', PublicKeyCredentialEntity::class);
+ }
+
+ public function findOneByCredentialId(string $publicKeyCredentialId): PublicKeyCredentialEntity {
+ $qb = $this->db->getQueryBuilder();
+
+ $qb->select('*')
+ ->from($this->getTableName())
+ ->where(
+ $qb->expr()->eq('public_key_credential_id', $qb->createNamedParameter(base64_encode($publicKeyCredentialId)))
+ );
+
+ return $this->findEntity($qb);
+ }
+
+ /**
+ * @return PublicKeyCredentialEntity[]
+ */
+ public function findAllForUid(string $uid): array {
+ $qb = $this->db->getQueryBuilder();
+
+ $qb->select('*')
+ ->from($this->getTableName())
+ ->where(
+ $qb->expr()->eq('uid', $qb->createNamedParameter($uid))
+ );
+
+ return $this->findEntities($qb);
+ }
+
+ /**
+ * @param string $uid
+ * @param int $id
+ *
+ * @return PublicKeyCredentialEntity
+ * @throws DoesNotExistException
+ */
+ public function findById(string $uid, int $id): PublicKeyCredentialEntity {
+ $qb = $this->db->getQueryBuilder();
+
+ $qb->select('*')
+ ->from($this->getTableName())
+ ->where($qb->expr()->andX(
+ $qb->expr()->eq('id', $qb->createNamedParameter($id)),
+ $qb->expr()->eq('uid', $qb->createNamedParameter($uid))
+ ));
+
+ return $this->findEntity($qb);
+ }
+}
diff --git a/lib/private/Authentication/WebAuthn/Manager.php b/lib/private/Authentication/WebAuthn/Manager.php
new file mode 100644
index 00000000000..cc3e9aba1cc
--- /dev/null
+++ b/lib/private/Authentication/WebAuthn/Manager.php
@@ -0,0 +1,270 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2020, Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @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\Authentication\WebAuthn;
+
+use Cose\Algorithm\Signature\ECDSA\ES256;
+use Cose\Algorithm\Signature\RSA\RS256;
+use Cose\Algorithms;
+use GuzzleHttp\Psr7\ServerRequest;
+use OC\Authentication\WebAuthn\Db\PublicKeyCredentialEntity;
+use OC\Authentication\WebAuthn\Db\PublicKeyCredentialMapper;
+use OCP\AppFramework\Db\DoesNotExistException;
+use OCP\IConfig;
+use OCP\ILogger;
+use OCP\IUser;
+use Webauthn\AttestationStatement\AttestationObjectLoader;
+use Webauthn\AttestationStatement\AttestationStatementSupportManager;
+use Webauthn\AttestationStatement\NoneAttestationStatementSupport;
+use Webauthn\AuthenticationExtensions\ExtensionOutputCheckerHandler;
+use Webauthn\AuthenticatorAssertionResponse;
+use Webauthn\AuthenticatorAssertionResponseValidator;
+use Webauthn\AuthenticatorAttestationResponse;
+use Webauthn\AuthenticatorAttestationResponseValidator;
+use Webauthn\AuthenticatorSelectionCriteria;
+use Webauthn\PublicKeyCredentialCreationOptions;
+use Webauthn\PublicKeyCredentialDescriptor;
+use Webauthn\PublicKeyCredentialLoader;
+use Webauthn\PublicKeyCredentialParameters;
+use Webauthn\PublicKeyCredentialRequestOptions;
+use Webauthn\PublicKeyCredentialRpEntity;
+use Webauthn\PublicKeyCredentialUserEntity;
+use Webauthn\TokenBinding\TokenBindingNotSupportedHandler;
+
+class Manager {
+
+ /** @var CredentialRepository */
+ private $repository;
+
+ /** @var PublicKeyCredentialMapper */
+ private $credentialMapper;
+
+ /** @var ILogger */
+ private $logger;
+
+ /** @var IConfig */
+ private $config;
+
+ public function __construct(
+ CredentialRepository $repository,
+ PublicKeyCredentialMapper $credentialMapper,
+ ILogger $logger,
+ IConfig $config
+ ) {
+ $this->repository = $repository;
+ $this->credentialMapper = $credentialMapper;
+ $this->logger = $logger;
+ $this->config = $config;
+ }
+
+ public function startRegistration(IUser $user, string $serverHost): PublicKeyCredentialCreationOptions {
+ $rpEntity = new PublicKeyCredentialRpEntity(
+ 'Nextcloud', //Name
+ $this->stripPort($serverHost), //ID
+ null //Icon
+ );
+
+ $userEntity = new PublicKeyCredentialUserEntity(
+ $user->getUID(), //Name
+ $user->getUID(), //ID
+ $user->getDisplayName() //Display name
+// 'https://foo.example.co/avatar/123e4567-e89b-12d3-a456-426655440000' //Icon
+ );
+
+ $challenge = random_bytes(32);
+
+ $publicKeyCredentialParametersList = [
+ new PublicKeyCredentialParameters('public-key', Algorithms::COSE_ALGORITHM_ES256),
+ new PublicKeyCredentialParameters('public-key', Algorithms::COSE_ALGORITHM_RS256),
+ ];
+
+ $timeout = 60000;
+
+ $excludedPublicKeyDescriptors = [
+ ];
+
+ $authenticatorSelectionCriteria = new AuthenticatorSelectionCriteria();
+
+ return new PublicKeyCredentialCreationOptions(
+ $rpEntity,
+ $userEntity,
+ $challenge,
+ $publicKeyCredentialParametersList,
+ $timeout,
+ $excludedPublicKeyDescriptors,
+ $authenticatorSelectionCriteria,
+ PublicKeyCredentialCreationOptions::ATTESTATION_CONVEYANCE_PREFERENCE_NONE,
+ null
+ );
+ }
+
+ public function finishRegister(PublicKeyCredentialCreationOptions $publicKeyCredentialCreationOptions, string $name, string $data): PublicKeyCredentialEntity {
+ $tokenBindingHandler = new TokenBindingNotSupportedHandler();
+
+ $attestationStatementSupportManager = new AttestationStatementSupportManager();
+ $attestationStatementSupportManager->add(new NoneAttestationStatementSupport());
+
+ $attestationObjectLoader = new AttestationObjectLoader($attestationStatementSupportManager);
+ $publicKeyCredentialLoader = new PublicKeyCredentialLoader($attestationObjectLoader);
+
+ // Extension Output Checker Handler
+ $extensionOutputCheckerHandler = new ExtensionOutputCheckerHandler();
+
+ // Authenticator Attestation Response Validator
+ $authenticatorAttestationResponseValidator = new AuthenticatorAttestationResponseValidator(
+ $attestationStatementSupportManager,
+ $this->repository,
+ $tokenBindingHandler,
+ $extensionOutputCheckerHandler
+ );
+
+ try {
+ // Load the data
+ $publicKeyCredential = $publicKeyCredentialLoader->load($data);
+ $response = $publicKeyCredential->getResponse();
+
+ // Check if the response is an Authenticator Attestation Response
+ if (!$response instanceof AuthenticatorAttestationResponse) {
+ throw new \RuntimeException('Not an authenticator attestation response');
+ }
+
+ // Check the response against the request
+ $request = ServerRequest::fromGlobals();
+
+ $publicKeyCredentialSource = $authenticatorAttestationResponseValidator->check(
+ $response,
+ $publicKeyCredentialCreationOptions,
+ $request);
+ } catch (\Throwable $exception) {
+ throw $exception;
+ }
+
+ // Persist the data
+ return $this->repository->saveAndReturnCredentialSource($publicKeyCredentialSource, $name);
+ }
+
+ private function stripPort(string $serverHost): string {
+ return preg_replace('/(:\d+$)/', '', $serverHost);
+ }
+
+ public function startAuthentication(string $uid, string $serverHost): PublicKeyCredentialRequestOptions {
+ // List of registered PublicKeyCredentialDescriptor classes associated to the user
+ $registeredPublicKeyCredentialDescriptors = array_map(function (PublicKeyCredentialEntity $entity) {
+ $credential = $entity->toPublicKeyCredentialSource();
+ return new PublicKeyCredentialDescriptor(
+ $credential->getType(),
+ $credential->getPublicKeyCredentialId()
+ );
+ }, $this->credentialMapper->findAllForUid($uid));
+
+ // Public Key Credential Request Options
+ return new PublicKeyCredentialRequestOptions(
+ random_bytes(32), // Challenge
+ 60000, // Timeout
+ $this->stripPort($serverHost), // Relying Party ID
+ $registeredPublicKeyCredentialDescriptors // Registered PublicKeyCredentialDescriptor classes
+ );
+ }
+
+ public function finishAuthentication(PublicKeyCredentialRequestOptions $publicKeyCredentialRequestOptions, string $data, string $uid) {
+ $attestationStatementSupportManager = new AttestationStatementSupportManager();
+ $attestationStatementSupportManager->add(new NoneAttestationStatementSupport());
+
+ $attestationObjectLoader = new AttestationObjectLoader($attestationStatementSupportManager);
+ $publicKeyCredentialLoader = new PublicKeyCredentialLoader($attestationObjectLoader);
+
+ $tokenBindingHandler = new TokenBindingNotSupportedHandler();
+ $extensionOutputCheckerHandler = new ExtensionOutputCheckerHandler();
+ $algorithmManager = new \Cose\Algorithm\Manager();
+ $algorithmManager->add(new ES256());
+ $algorithmManager->add(new RS256());
+
+ $authenticatorAssertionResponseValidator = new AuthenticatorAssertionResponseValidator(
+ $this->repository,
+ $tokenBindingHandler,
+ $extensionOutputCheckerHandler,
+ $algorithmManager
+ );
+
+ try {
+ $this->logger->debug('Loading publickey credentials from: ' . $data);
+
+ // Load the data
+ $publicKeyCredential = $publicKeyCredentialLoader->load($data);
+ $response = $publicKeyCredential->getResponse();
+
+ // Check if the response is an Authenticator Attestation Response
+ if (!$response instanceof AuthenticatorAssertionResponse) {
+ throw new \RuntimeException('Not an authenticator attestation response');
+ }
+
+ // Check the response against the request
+ $request = ServerRequest::fromGlobals();
+
+ $publicKeyCredentialSource = $authenticatorAssertionResponseValidator->check(
+ $publicKeyCredential->getRawId(),
+ $response,
+ $publicKeyCredentialRequestOptions,
+ $request,
+ $uid
+ );
+ } catch (\Throwable $e) {
+ throw $e;
+ }
+
+
+
+ return true;
+ }
+
+ public function deleteRegistration(IUser $user, int $id): void {
+ try {
+ $entry = $this->credentialMapper->findById($user->getUID(), $id);
+ } catch (DoesNotExistException $e) {
+ $this->logger->warning("WebAuthn device $id does not exist, can't delete it");
+ return;
+ }
+
+ $this->credentialMapper->delete($entry);
+ }
+
+ public function isWebAuthnAvailable(): bool {
+ if (!extension_loaded('bcmath')) {
+ return false;
+ }
+
+ if (!extension_loaded('gmp')) {
+ return false;
+ }
+
+ if (!$this->config->getSystemValueBool('auth.webauthn.enabled', true)) {
+ return false;
+ }
+
+ return true;
+ }
+}
diff --git a/lib/private/Avatar/Avatar.php b/lib/private/Avatar/Avatar.php
index 8f8e5e449cc..02fc04eae36 100644
--- a/lib/private/Avatar/Avatar.php
+++ b/lib/private/Avatar/Avatar.php
@@ -6,8 +6,8 @@ declare(strict_types=1);
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @copyright 2018 John Molakvoæ <skjnldsv@protonmail.com>
*
- * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Christopher Schäpers <kondou@ts.unde.re>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jan-Christoph Borchardt <hey@jancborchardt.net>
* @author Joas Schilling <coding@schilljs.com>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
@@ -17,6 +17,7 @@ declare(strict_types=1);
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
+ * @author Sergey Shliakhov <husband.sergey@gmail.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @license AGPL-3.0
@@ -232,7 +233,7 @@ abstract class Avatar implements IAvatar {
$x = intval(($xi - $xr) / 2);
$y = intval(($yi + $yr) / 2);
- return array($x, $y);
+ return [$x, $y];
}
/**
@@ -242,7 +243,7 @@ abstract class Avatar implements IAvatar {
* @return array [r,g,b] steps for each color to go from $steps to $ends
*/
private function stepCalc($steps, $ends) {
- $step = array();
+ $step = [];
$step[0] = ($ends[1]->r - $ends[0]->r) / $steps;
$step[1] = ($ends[1]->g - $ends[0]->g) / $steps;
$step[2] = ($ends[1]->b - $ends[0]->b) / $steps;
@@ -256,7 +257,7 @@ abstract class Avatar implements IAvatar {
* @return int[] between 0 and $maximum
*/
private function mixPalette($steps, $color1, $color2) {
- $palette = array($color1);
+ $palette = [$color1];
$step = $this->stepCalc($steps, [$color1, $color2]);
for ($i = 1; $i < $steps; $i++) {
$r = intval($color1->r + ($step[0] * $i));
@@ -275,7 +276,7 @@ abstract class Avatar implements IAvatar {
*/
private function hashToInt($hash, $maximum) {
$final = 0;
- $result = array();
+ $result = [];
// Splitting evenly the string
for ($i = 0; $i < strlen($hash); $i++) {
@@ -299,7 +300,7 @@ abstract class Avatar implements IAvatar {
$hash = strtolower($hash);
// Already a md5 hash?
- if( preg_match('/^([0-9a-f]{4}-?){8}$/', $hash, $matches) !== 1 ) {
+ if (preg_match('/^([0-9a-f]{4}-?){8}$/', $hash, $matches) !== 1) {
$hash = md5($hash);
}
diff --git a/lib/private/Avatar/AvatarManager.php b/lib/private/Avatar/AvatarManager.php
index 2a4f51f0e1c..5102396224d 100644
--- a/lib/private/Avatar/AvatarManager.php
+++ b/lib/private/Avatar/AvatarManager.php
@@ -6,7 +6,9 @@ declare(strict_types=1);
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ * @author Julius Härtl <jus@bitgrid.net>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Michael Weimann <mail@michael-weimann.eu>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -33,8 +35,10 @@ declare(strict_types=1);
namespace OC\Avatar;
use OC\User\Manager;
+use OC\User\NoUserException;
use OCP\Files\IAppData;
use OCP\Files\NotFoundException;
+use OCP\Files\NotPermittedException;
use OCP\IAvatar;
use OCP\IAvatarManager;
use OCP\IConfig;
@@ -114,7 +118,7 @@ class AvatarManager implements IAvatarManager {
*/
public function clearCachedAvatars() {
$users = $this->config->getUsersForUserValue('avatar', 'generated', 'true');
- foreach($users as $userId) {
+ foreach ($users as $userId) {
try {
$folder = $this->appData->getFolder($userId);
$folder->delete();
@@ -125,6 +129,20 @@ class AvatarManager implements IAvatarManager {
}
}
+ public function deleteUserAvatar(string $userId): void {
+ try {
+ $folder = $this->appData->getFolder($userId);
+ $folder->delete();
+ } catch (NotFoundException $e) {
+ $this->logger->debug("No cache for the user $userId. Ignoring avatar deletion");
+ } catch (NotPermittedException $e) {
+ $this->logger->error("Unable to delete user avatars for $userId. gnoring avatar deletion");
+ } catch (NoUserException $e) {
+ $this->logger->debug("User $userId not found. gnoring avatar deletion");
+ }
+ $this->config->deleteUserValue($userId, 'avatar', 'generated');
+ }
+
/**
* Returns a GuestAvatar.
*
diff --git a/lib/private/Avatar/UserAvatar.php b/lib/private/Avatar/UserAvatar.php
index fb434fc6947..f7ace429f7d 100644
--- a/lib/private/Avatar/UserAvatar.php
+++ b/lib/private/Avatar/UserAvatar.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright Copyright (c) 2018, Michael Weimann <mail@michael-weimann.eu>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Michael Weimann <mail@michael-weimann.eu>
*
@@ -208,7 +209,7 @@ class UserAvatar extends Avatar {
$avatar->delete();
}
$this->config->setUserValue($this->user->getUID(), 'avatar', 'generated', 'true');
- if(!$silent) {
+ if (!$silent) {
$this->user->triggerChange('avatar', '');
}
}
@@ -252,7 +253,7 @@ class UserAvatar extends Avatar {
$avatar->putContent($data);
$ext = 'png';
- $this->folder->newFile('generated');
+ $this->folder->newFile('generated', '');
$this->config->setUserValue($this->user->getUID(), 'avatar', 'generated', 'true');
}
@@ -273,7 +274,6 @@ class UserAvatar extends Avatar {
if (!$data = $this->generateAvatarFromSvg($size)) {
$data = $this->generateAvatar($this->getDisplayName(), $size);
}
-
} else {
$avatar = new OC_Image();
$file = $this->folder->getFile('avatar.' . $ext);
@@ -289,7 +289,6 @@ class UserAvatar extends Avatar {
$this->logger->error('Failed to save avatar for ' . $this->user->getUID());
throw new NotFoundException();
}
-
}
if ($this->config->getUserValue($this->user->getUID(), 'avatar', 'generated', null) === null) {
diff --git a/lib/private/BackgroundJob/Job.php b/lib/private/BackgroundJob/Job.php
index 26c69a2486c..f0b780d0c70 100644
--- a/lib/private/BackgroundJob/Job.php
+++ b/lib/private/BackgroundJob/Job.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Daniel Kesselberg <mail@danielkesselberg.de>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Noveen Sachdeva <noveen.sachdeva@research.iiit.ac.in>
diff --git a/lib/private/BackgroundJob/JobList.php b/lib/private/BackgroundJob/JobList.php
index 23695bfbe03..1adecb5b32d 100644
--- a/lib/private/BackgroundJob/JobList.php
+++ b/lib/private/BackgroundJob/JobList.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @author Georg Ehrke <oc.list@georgehrke.com>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@statuscode.ch>
diff --git a/lib/private/BackgroundJob/Legacy/QueuedJob.php b/lib/private/BackgroundJob/Legacy/QueuedJob.php
index ba81041c9de..9adaeff89ec 100644
--- a/lib/private/BackgroundJob/Legacy/QueuedJob.php
+++ b/lib/private/BackgroundJob/Legacy/QueuedJob.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
*
@@ -28,8 +29,8 @@ class QueuedJob extends \OC\BackgroundJob\QueuedJob {
$class = $argument['klass'];
$method = $argument['method'];
$parameters = $argument['parameters'];
- if (is_callable(array($class, $method))) {
- call_user_func(array($class, $method), $parameters);
+ if (is_callable([$class, $method])) {
+ call_user_func([$class, $method], $parameters);
}
}
}
diff --git a/lib/private/BackgroundJob/QueuedJob.php b/lib/private/BackgroundJob/QueuedJob.php
index a01e666eb57..6f10ee4408d 100644
--- a/lib/private/BackgroundJob/QueuedJob.php
+++ b/lib/private/BackgroundJob/QueuedJob.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -23,6 +24,7 @@
*/
namespace OC\BackgroundJob;
+
use OCP\ILogger;
/**
diff --git a/lib/private/BackgroundJob/TimedJob.php b/lib/private/BackgroundJob/TimedJob.php
index 755607bfb6d..e5dfeb96c9c 100644
--- a/lib/private/BackgroundJob/TimedJob.php
+++ b/lib/private/BackgroundJob/TimedJob.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -23,6 +24,7 @@
*/
namespace OC\BackgroundJob;
+
use OCP\ILogger;
/**
diff --git a/lib/private/Broadcast/Events/BroadcastEvent.php b/lib/private/Broadcast/Events/BroadcastEvent.php
index f5aa1d8c4b8..7d4d7017af5 100644
--- a/lib/private/Broadcast/Events/BroadcastEvent.php
+++ b/lib/private/Broadcast/Events/BroadcastEvent.php
@@ -57,5 +57,4 @@ class BroadcastEvent extends Event implements IBroadcastEvent {
public function setBroadcasted(): void {
$this->event->setBroadcasted();
}
-
}
diff --git a/lib/private/Cache/CappedMemoryCache.php b/lib/private/Cache/CappedMemoryCache.php
index 3d843abf5b8..28e08759304 100644
--- a/lib/private/Cache/CappedMemoryCache.php
+++ b/lib/private/Cache/CappedMemoryCache.php
@@ -30,7 +30,6 @@ use OCP\ICache;
* Uses a simple FIFO expiry mechanism
*/
class CappedMemoryCache implements ICache, \ArrayAccess {
-
private $capacity;
private $cache = [];
diff --git a/lib/private/Cache/File.php b/lib/private/Cache/File.php
index 09ddb78d4f3..be6540ff2d2 100644
--- a/lib/private/Cache/File.php
+++ b/lib/private/Cache/File.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Robin Appelman <robin@icewind.nl>
@@ -193,11 +194,11 @@ class File implements ICache {
}
} catch (\OCP\Lock\LockedException $e) {
// ignore locked chunks
- \OC::$server->getLogger()->debug('Could not cleanup locked chunk "' . $file . '"', array('app' => 'core'));
+ \OC::$server->getLogger()->debug('Could not cleanup locked chunk "' . $file . '"', ['app' => 'core']);
} catch (\OCP\Files\ForbiddenException $e) {
- \OC::$server->getLogger()->debug('Could not cleanup forbidden chunk "' . $file . '"', array('app' => 'core'));
+ \OC::$server->getLogger()->debug('Could not cleanup forbidden chunk "' . $file . '"', ['app' => 'core']);
} catch (\OCP\Files\LockNotAcquiredException $e) {
- \OC::$server->getLogger()->debug('Could not cleanup locked chunk "' . $file . '"', array('app' => 'core'));
+ \OC::$server->getLogger()->debug('Could not cleanup locked chunk "' . $file . '"', ['app' => 'core']);
}
}
}
diff --git a/lib/private/Calendar/Manager.php b/lib/private/Calendar/Manager.php
index 3c876c79e9e..ab8af870221 100644
--- a/lib/private/Calendar/Manager.php
+++ b/lib/private/Calendar/Manager.php
@@ -2,6 +2,7 @@
/**
* @copyright 2017, Georg Ehrke <oc.list@georgehrke.com>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Georg Ehrke <oc.list@georgehrke.com>
*
* @license GNU AGPL version 3 or any later version
@@ -53,9 +54,9 @@ class Manager implements \OCP\Calendar\IManager {
public function search($pattern, array $searchProperties=[], array $options=[], $limit=null, $offset=null) {
$this->loadCalendars();
$result = [];
- foreach($this->calendars as $calendar) {
+ foreach ($this->calendars as $calendar) {
$r = $calendar->search($pattern, $searchProperties, $options, $limit, $offset);
- foreach($r as $o) {
+ foreach ($r as $o) {
$o['calendar-key'] = $calendar->getKey();
$result[] = $o;
}
@@ -132,7 +133,7 @@ class Manager implements \OCP\Calendar\IManager {
* loads all calendars
*/
private function loadCalendars() {
- foreach($this->calendarLoaders as $callable) {
+ foreach ($this->calendarLoaders as $callable) {
$callable($this);
}
$this->calendarLoaders = [];
diff --git a/lib/private/Calendar/Resource/Manager.php b/lib/private/Calendar/Resource/Manager.php
index 0a85f271498..2c63ce990fa 100644
--- a/lib/private/Calendar/Resource/Manager.php
+++ b/lib/private/Calendar/Resource/Manager.php
@@ -2,6 +2,7 @@
/**
* @copyright 2018, Georg Ehrke <oc.list@georgehrke.com>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Joas Schilling <coding@schilljs.com>
*
@@ -75,7 +76,7 @@ class Manager implements \OCP\Calendar\Resource\IManager {
* @since 14.0.0
*/
public function getBackends():array {
- foreach($this->backends as $backend) {
+ foreach ($this->backends as $backend) {
if (isset($this->initializedBackends[$backend])) {
continue;
}
@@ -93,7 +94,7 @@ class Manager implements \OCP\Calendar\Resource\IManager {
*/
public function getBackend($backendId) {
$backends = $this->getBackends();
- foreach($backends as $backend) {
+ foreach ($backends as $backend) {
if ($backend->getBackendIdentifier() === $backendId) {
return $backend;
}
diff --git a/lib/private/Calendar/Room/Manager.php b/lib/private/Calendar/Room/Manager.php
index 59406ba0c8c..5001b715cb0 100644
--- a/lib/private/Calendar/Room/Manager.php
+++ b/lib/private/Calendar/Room/Manager.php
@@ -2,6 +2,7 @@
/**
* @copyright 2018, Georg Ehrke <oc.list@georgehrke.com>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Joas Schilling <coding@schilljs.com>
*
@@ -75,7 +76,7 @@ class Manager implements \OCP\Calendar\Room\IManager {
* @since 14.0.0
*/
public function getBackends():array {
- foreach($this->backends as $backend) {
+ foreach ($this->backends as $backend) {
if (isset($this->initializedBackends[$backend])) {
continue;
}
@@ -93,7 +94,7 @@ class Manager implements \OCP\Calendar\Room\IManager {
*/
public function getBackend($backendId) {
$backends = $this->getBackends();
- foreach($backends as $backend) {
+ foreach ($backends as $backend) {
if ($backend->getBackendIdentifier() === $backendId) {
return $backend;
}
diff --git a/lib/private/CapabilitiesManager.php b/lib/private/CapabilitiesManager.php
index 96337627be2..6a4d97ad159 100644
--- a/lib/private/CapabilitiesManager.php
+++ b/lib/private/CapabilitiesManager.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Julius Härtl <jus@bitgrid.net>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -36,7 +37,7 @@ use OCP\ILogger;
class CapabilitiesManager {
/** @var \Closure[] */
- private $capabilities = array();
+ private $capabilities = [];
/** @var ILogger */
private $logger;
@@ -47,14 +48,14 @@ class CapabilitiesManager {
/**
* Get an array of al the capabilities that are registered at this manager
- *
+ *
* @param bool $public get public capabilities only
* @throws \InvalidArgumentException
* @return array
*/
public function getCapabilities(bool $public = false) : array {
$capabilities = [];
- foreach($this->capabilities as $capability) {
+ foreach ($this->capabilities as $capability) {
try {
$c = $capability();
} catch (QueryException $e) {
@@ -67,7 +68,7 @@ class CapabilitiesManager {
}
if ($c instanceof ICapability) {
- if(!$public || $c instanceof IPublicCapability) {
+ if (!$public || $c instanceof IPublicCapability) {
$capabilities = array_replace_recursive($capabilities, $c->getCapabilities());
}
} else {
diff --git a/lib/private/Collaboration/AutoComplete/Manager.php b/lib/private/Collaboration/AutoComplete/Manager.php
index d2b490f73f5..dc3b76f1f4d 100644
--- a/lib/private/Collaboration/AutoComplete/Manager.php
+++ b/lib/private/Collaboration/AutoComplete/Manager.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
*
* @license GNU AGPL version 3 or any later version
*
@@ -42,8 +43,8 @@ class Manager implements IManager {
public function runSorters(array $sorters, array &$sortArray, array $context) {
$sorterInstances = $this->getSorters();
- while($sorter = array_shift($sorters)) {
- if(isset($sorterInstances[$sorter])) {
+ while ($sorter = array_shift($sorters)) {
+ if (isset($sorterInstances[$sorter])) {
$sorterInstances[$sorter]->sort($sortArray, $context);
} else {
$this->c->getLogger()->warning('No sorter for ID "{id}", skipping', [
@@ -58,17 +59,17 @@ class Manager implements IManager {
}
protected function getSorters() {
- if(count($this->sorterInstances) === 0) {
+ if (count($this->sorterInstances) === 0) {
foreach ($this->sorters as $sorter) {
/** @var ISorter $instance */
$instance = $this->c->resolve($sorter);
- if(!$instance instanceof ISorter) {
+ if (!$instance instanceof ISorter) {
$this->c->getLogger()->notice('Skipping sorter which is not an instance of ISorter. Class name: {class}',
['app' => 'core', 'class' => $sorter]);
continue;
}
$sorterId = trim($instance->getId());
- if(trim($sorterId) === '') {
+ if (trim($sorterId) === '') {
$this->c->getLogger()->notice('Skipping sorter with empty ID. Class name: {class}',
['app' => 'core', 'class' => $sorter]);
continue;
diff --git a/lib/private/Collaboration/Collaborators/GroupPlugin.php b/lib/private/Collaboration/Collaborators/GroupPlugin.php
index 874c9693981..4816fdd7c04 100644
--- a/lib/private/Collaboration/Collaborators/GroupPlugin.php
+++ b/lib/private/Collaboration/Collaborators/GroupPlugin.php
@@ -3,6 +3,8 @@
* @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @author Julius Härtl <jus@bitgrid.net>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
*
@@ -52,6 +54,7 @@ class GroupPlugin implements ISearchPlugin {
$this->shareeEnumeration = $this->config->getAppValue('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes') === 'yes';
$this->shareWithGroupOnly = $this->config->getAppValue('core', 'shareapi_only_share_with_group_members', 'no') === 'yes';
+ $this->shareeEnumerationInGroupOnly = $this->shareeEnumeration && $this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_to_group', 'no') === 'yes';
}
public function search($search, $limit, $offset, ISearchResult $searchResult) {
@@ -59,17 +62,21 @@ class GroupPlugin implements ISearchPlugin {
$result = ['wide' => [], 'exact' => []];
$groups = $this->groupManager->search($search, $limit, $offset);
- $groupIds = array_map(function (IGroup $group) { return $group->getGID(); }, $groups);
+ $groupIds = array_map(function (IGroup $group) {
+ return $group->getGID();
+ }, $groups);
if (!$this->shareeEnumeration || count($groups) < $limit) {
$hasMoreResults = true;
}
$userGroups = [];
- if (!empty($groups) && $this->shareWithGroupOnly) {
+ if (!empty($groups) && ($this->shareWithGroupOnly || $this->shareeEnumerationInGroupOnly)) {
// Intersect all the groups that match with the groups this user is a member of
$userGroups = $this->groupManager->getUserGroups($this->userSession->getUser());
- $userGroups = array_map(function (IGroup $group) { return $group->getGID(); }, $userGroups);
+ $userGroups = array_map(function (IGroup $group) {
+ return $group->getGID();
+ }, $userGroups);
$groupIds = array_intersect($groupIds, $userGroups);
}
@@ -93,6 +100,9 @@ class GroupPlugin implements ISearchPlugin {
],
];
} else {
+ if ($this->shareeEnumerationInGroupOnly && !in_array($group->getGID(), $userGroups, true)) {
+ continue;
+ }
$result['wide'][] = [
'label' => $group->getDisplayName(),
'value' => [
diff --git a/lib/private/Collaboration/Collaborators/LookupPlugin.php b/lib/private/Collaboration/Collaborators/LookupPlugin.php
index 79204043bd0..f0d5b92f18a 100644
--- a/lib/private/Collaboration/Collaborators/LookupPlugin.php
+++ b/lib/private/Collaboration/Collaborators/LookupPlugin.php
@@ -26,7 +26,6 @@
namespace OC\Collaboration\Collaborators;
-
use OCP\Collaboration\Collaborators\ISearchPlugin;
use OCP\Collaboration\Collaborators\ISearchResult;
use OCP\Collaboration\Collaborators\SearchResultType;
@@ -74,7 +73,7 @@ class LookupPlugin implements ISearchPlugin {
}
$lookupServerUrl = $this->config->getSystemValue('lookup_server', 'https://lookup.nextcloud.com');
- if(empty($lookupServerUrl)) {
+ if (empty($lookupServerUrl)) {
return false;
}
$lookupServerUrl = rtrim($lookupServerUrl, '/');
diff --git a/lib/private/Collaboration/Collaborators/MailPlugin.php b/lib/private/Collaboration/Collaborators/MailPlugin.php
index f4af4737c1a..f912690cb72 100644
--- a/lib/private/Collaboration/Collaborators/MailPlugin.php
+++ b/lib/private/Collaboration/Collaborators/MailPlugin.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Julius Härtl <jus@bitgrid.net>
* @author Tobia De Koninck <tobia@ledfan.be>
@@ -26,7 +27,6 @@
namespace OC\Collaboration\Collaborators;
-
use OCP\Collaboration\Collaborators\ISearchPlugin;
use OCP\Collaboration\Collaborators\ISearchResult;
use OCP\Collaboration\Collaborators\SearchResultType;
@@ -65,6 +65,7 @@ class MailPlugin implements ISearchPlugin {
$this->shareeEnumeration = $this->config->getAppValue('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes') === 'yes';
$this->shareWithGroupOnly = $this->config->getAppValue('core', 'shareapi_only_share_with_group_members', 'no') === 'yes';
+ $this->shareeEnumerationInGroupOnly = $this->shareeEnumeration && $this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_to_group', 'no') === 'yes';
}
/**
@@ -81,8 +82,7 @@ class MailPlugin implements ISearchPlugin {
$emailType = new SearchResultType('emails');
// Search in contacts
- //@todo Pagination missing
- $addressBookContacts = $this->contactsManager->search($search, ['EMAIL', 'FN']);
+ $addressBookContacts = $this->contactsManager->search($search, ['EMAIL', 'FN'], ['limit' => $limit, 'offset' => $offset]);
$lowerSearch = strtolower($search);
foreach ($addressBookContacts as $contact) {
if (isset($contact['EMAIL'])) {
@@ -98,7 +98,7 @@ class MailPlugin implements ISearchPlugin {
$emailAddress = $emailAddressData['value'];
$emailAddressType = $emailAddressData['type'];
}
- if (isset($contact['FN'])) {
+ if (isset($contact['FN'])) {
$displayName = $contact['FN'] . ' (' . $emailAddress . ')';
}
$exactEmailMatch = strtolower($emailAddress) === $lowerSearch;
@@ -150,7 +150,18 @@ class MailPlugin implements ISearchPlugin {
continue;
}
- if (!$this->isCurrentUser($cloud) && !$searchResult->hasResult($userType, $cloud->getUser())) {
+ $addToWide = !$this->shareeEnumerationInGroupOnly;
+ if ($this->shareeEnumerationInGroupOnly) {
+ $addToWide = false;
+ $userGroups = $this->groupManager->getUserGroupIds($this->userSession->getUser());
+ foreach ($userGroups as $userGroup) {
+ if ($this->groupManager->isInGroup($contact['UID'], $userGroup)) {
+ $addToWide = true;
+ break;
+ }
+ }
+ }
+ if ($addToWide && !$this->isCurrentUser($cloud) && !$searchResult->hasResult($userType, $cloud->getUser())) {
$userResults['wide'][] = [
'label' => $displayName,
'uuid' => $contact['UID'],
@@ -160,14 +171,14 @@ class MailPlugin implements ISearchPlugin {
'shareWith' => $cloud->getUser(),
],
];
+ continue;
}
}
continue;
}
if ($exactEmailMatch
- || isset($contact['FN']) && strtolower($contact['FN']) === $lowerSearch)
- {
+ || isset($contact['FN']) && strtolower($contact['FN']) === $lowerSearch) {
if ($exactEmailMatch) {
$searchResult->markExactIdMatch($emailType);
}
diff --git a/lib/private/Collaboration/Collaborators/RemoteGroupPlugin.php b/lib/private/Collaboration/Collaborators/RemoteGroupPlugin.php
index 2f024119c26..777af6093db 100644
--- a/lib/private/Collaboration/Collaborators/RemoteGroupPlugin.php
+++ b/lib/private/Collaboration/Collaborators/RemoteGroupPlugin.php
@@ -24,7 +24,6 @@
namespace OC\Collaboration\Collaborators;
-
use OCP\Collaboration\Collaborators\ISearchPlugin;
use OCP\Collaboration\Collaborators\ISearchResult;
use OCP\Collaboration\Collaborators\SearchResultType;
@@ -91,5 +90,4 @@ class RemoteGroupPlugin implements ISearchPlugin {
throw new \InvalidArgumentException('Invalid Federated Cloud ID', 0, $e);
}
}
-
}
diff --git a/lib/private/Collaboration/Collaborators/RemotePlugin.php b/lib/private/Collaboration/Collaborators/RemotePlugin.php
index 5173e889b9c..81e05050d2e 100644
--- a/lib/private/Collaboration/Collaborators/RemotePlugin.php
+++ b/lib/private/Collaboration/Collaborators/RemotePlugin.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
* @author Julius Härtl <jus@bitgrid.net>
@@ -26,7 +27,6 @@
namespace OC\Collaboration\Collaborators;
-
use OCP\Collaboration\Collaborators\ISearchPlugin;
use OCP\Collaboration\Collaborators\ISearchResult;
use OCP\Collaboration\Collaborators\SearchResultType;
@@ -68,8 +68,7 @@ class RemotePlugin implements ISearchPlugin {
$resultType = new SearchResultType('remotes');
// Search in contacts
- //@todo Pagination missing
- $addressBookContacts = $this->contactsManager->search($search, ['CLOUD', 'FN']);
+ $addressBookContacts = $this->contactsManager->search($search, ['CLOUD', 'FN'], ['limit' => $limit, 'offset' => $offset]);
foreach ($addressBookContacts as $contact) {
if (isset($contact['isLocalSystemBook'])) {
continue;
@@ -97,7 +96,7 @@ class RemotePlugin implements ISearchPlugin {
/**
* Add local share if remote cloud id matches a local user ones
*/
- if ($localUser !== null && $remoteUser !== $this->userId && $cloudId === $localUser->getCloudId() ) {
+ if ($localUser !== null && $remoteUser !== $this->userId && $cloudId === $localUser->getCloudId()) {
$result['wide'][] = [
'label' => $contact['FN'],
'uuid' => $contact['UID'],
diff --git a/lib/private/Collaboration/Collaborators/Search.php b/lib/private/Collaboration/Collaborators/Search.php
index 7f5c5a1a811..c26d5f5541f 100644
--- a/lib/private/Collaboration/Collaborators/Search.php
+++ b/lib/private/Collaboration/Collaborators/Search.php
@@ -3,6 +3,8 @@
* @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @author Robin Appelman <robin@icewind.nl>
*
* @license GNU AGPL version 3 or any later version
*
@@ -56,7 +58,7 @@ class Search implements ISearch {
$searchResult = $this->c->resolve(SearchResult::class);
foreach ($shareTypes as $type) {
- if(!isset($this->pluginList[$type])) {
+ if (!isset($this->pluginList[$type])) {
continue;
}
foreach ($this->pluginList[$type] as $plugin) {
@@ -79,18 +81,25 @@ class Search implements ISearch {
// that the exact same email address and federated cloud id exists
$emailType = new SearchResultType('emails');
$remoteType = new SearchResultType('remotes');
- if($searchResult->hasExactIdMatch($emailType) && !$searchResult->hasExactIdMatch($remoteType)) {
+ if ($searchResult->hasExactIdMatch($emailType) && !$searchResult->hasExactIdMatch($remoteType)) {
$searchResult->unsetResult($remoteType);
} elseif (!$searchResult->hasExactIdMatch($emailType) && $searchResult->hasExactIdMatch($remoteType)) {
$searchResult->unsetResult($emailType);
}
+ // if we have an exact local user match, there is no need to show the remote and email matches
+ $userType = new SearchResultType('users');
+ if ($searchResult->hasExactIdMatch($userType)) {
+ $searchResult->unsetResult($remoteType);
+ $searchResult->unsetResult($emailType);
+ }
+
return [$searchResult->asArray(), (bool)$hasMoreResults];
}
public function registerPlugin(array $pluginInfo) {
$shareType = constant(Share::class . '::' . $pluginInfo['shareType']);
- if($shareType === null) {
+ if ($shareType === null) {
throw new \InvalidArgumentException('Provided ShareType is invalid');
}
$this->pluginList[$shareType][] = $pluginInfo['class'];
diff --git a/lib/private/Collaboration/Collaborators/SearchResult.php b/lib/private/Collaboration/Collaborators/SearchResult.php
index 768089c909a..8e2c5a1ff39 100644
--- a/lib/private/Collaboration/Collaborators/SearchResult.php
+++ b/lib/private/Collaboration/Collaborators/SearchResult.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
*
* @license GNU AGPL version 3 or any later version
@@ -24,12 +25,10 @@
namespace OC\Collaboration\Collaborators;
-
use OCP\Collaboration\Collaborators\ISearchResult;
use OCP\Collaboration\Collaborators\SearchResultType;
class SearchResult implements ISearchResult {
-
protected $result = [
'exact' => [],
];
@@ -38,13 +37,13 @@ class SearchResult implements ISearchResult {
public function addResultSet(SearchResultType $type, array $matches, array $exactMatches = null) {
$type = $type->getLabel();
- if(!isset($this->result[$type])) {
+ if (!isset($this->result[$type])) {
$this->result[$type] = [];
$this->result['exact'][$type] = [];
}
$this->result[$type] = array_merge($this->result[$type], $matches);
- if(is_array($exactMatches)) {
+ if (is_array($exactMatches)) {
$this->result['exact'][$type] = array_merge($this->result['exact'][$type], $exactMatches);
}
}
@@ -59,12 +58,12 @@ class SearchResult implements ISearchResult {
public function hasResult(SearchResultType $type, $collaboratorId) {
$type = $type->getLabel();
- if(!isset($this->result[$type])) {
+ if (!isset($this->result[$type])) {
return false;
}
$resultArrays = [$this->result['exact'][$type], $this->result[$type]];
- foreach($resultArrays as $resultArray) {
+ foreach ($resultArrays as $resultArray) {
foreach ($resultArray as $result) {
if ($result['value']['shareWith'] === $collaboratorId) {
return true;
@@ -82,7 +81,7 @@ class SearchResult implements ISearchResult {
public function unsetResult(SearchResultType $type) {
$type = $type->getLabel();
$this->result[$type] = [];
- if(isset($this->result['exact'][$type])) {
+ if (isset($this->result['exact'][$type])) {
$this->result['exact'][$type] = [];
}
}
diff --git a/lib/private/Collaboration/Collaborators/UserPlugin.php b/lib/private/Collaboration/Collaborators/UserPlugin.php
index c40aaff4229..4809585dca7 100644
--- a/lib/private/Collaboration/Collaborators/UserPlugin.php
+++ b/lib/private/Collaboration/Collaborators/UserPlugin.php
@@ -3,9 +3,12 @@
* @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
+ * @author Julius Härtl <jus@bitgrid.net>
* @author Morris Jobke <hey@morrisjobke.de>
- * @author Thomas Citharel <tcit@tcit.fr>
+ * @author Robin Appelman <robin@icewind.nl>
+ * @author Thomas Citharel <nextcloud@tcit.fr>
*
* @license GNU AGPL version 3 or any later version
*
@@ -26,21 +29,23 @@
namespace OC\Collaboration\Collaborators;
-
use OCP\Collaboration\Collaborators\ISearchPlugin;
use OCP\Collaboration\Collaborators\ISearchResult;
use OCP\Collaboration\Collaborators\SearchResultType;
use OCP\IConfig;
+use OCP\IGroup;
use OCP\IGroupManager;
use OCP\IUser;
use OCP\IUserManager;
use OCP\IUserSession;
use OCP\Share;
+use OCP\Share\IShare;
class UserPlugin implements ISearchPlugin {
/* @var bool */
protected $shareWithGroupOnly;
protected $shareeEnumeration;
+ protected $shareeEnumerationInGroupOnly;
/** @var IConfig */
private $config;
@@ -60,30 +65,54 @@ class UserPlugin implements ISearchPlugin {
$this->shareWithGroupOnly = $this->config->getAppValue('core', 'shareapi_only_share_with_group_members', 'no') === 'yes';
$this->shareeEnumeration = $this->config->getAppValue('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes') === 'yes';
+ $this->shareeEnumerationInGroupOnly = $this->shareeEnumeration && $this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_to_group', 'no') === 'yes';
}
public function search($search, $limit, $offset, ISearchResult $searchResult) {
$result = ['wide' => [], 'exact' => []];
$users = [];
+ $autoCompleteUsers = [];
$hasMoreResults = false;
$userGroups = [];
if ($this->shareWithGroupOnly) {
// Search in all the groups this user is part of
- $userGroups = $this->groupManager->getUserGroupIds($this->userSession->getUser());
+ $userGroups = $this->groupManager->getUserGroups($this->userSession->getUser());
foreach ($userGroups as $userGroup) {
- $usersTmp = $this->groupManager->displayNamesInGroup($userGroup, $search, $limit, $offset);
- foreach ($usersTmp as $uid => $userDisplayName) {
- $users[(string) $uid] = $userDisplayName;
+ $usersInGroup = $userGroup->searchDisplayName($search, $limit, $offset);
+ foreach ($usersInGroup as $user) {
+ $users[$user->getUID()] = $user;
}
}
} else {
// Search in all users
$usersTmp = $this->userManager->searchDisplayName($search, $limit, $offset);
-
+ $currentUserGroups = $this->groupManager->getUserGroupIds($this->userSession->getUser());
foreach ($usersTmp as $user) {
if ($user->isEnabled()) { // Don't keep deactivated users
- $users[(string) $user->getUID()] = $user->getDisplayName();
+ $users[$user->getUID()] = $user;
+
+ $addToWideResults = false;
+ if ($this->shareeEnumeration && !$this->shareeEnumerationInGroupOnly) {
+ $addToWideResults = true;
+ }
+
+ if ($this->shareeEnumerationInGroupOnly) {
+ $commonGroups = array_intersect($currentUserGroups, $this->groupManager->getUserGroupIds($user));
+ if (!empty($commonGroups)) {
+ $addToWideResults = true;
+ }
+ }
+
+ if ($addToWideResults) {
+ $autoCompleteUsers[] = [
+ 'label' => $user->getDisplayName(),
+ 'value' => [
+ 'shareType' => IShare::TYPE_USER,
+ 'shareWith' => (string)$user->getUID(),
+ ],
+ ];
+ }
}
}
}
@@ -96,9 +125,15 @@ class UserPlugin implements ISearchPlugin {
$foundUserById = false;
$lowerSearch = strtolower($search);
- foreach ($users as $uid => $userDisplayName) {
+ foreach ($users as $uid => $user) {
+ $userDisplayName = $user->getDisplayName();
+ $userEmail = $user->getEMailAddress();
$uid = (string) $uid;
- if (strtolower($uid) === $lowerSearch || strtolower($userDisplayName) === $lowerSearch) {
+ if (
+ strtolower($uid) === $lowerSearch ||
+ strtolower($userDisplayName) === $lowerSearch ||
+ strtolower($userEmail) === $lowerSearch
+ ) {
if (strtolower($uid) === $lowerSearch) {
$foundUserById = true;
}
@@ -129,7 +164,10 @@ class UserPlugin implements ISearchPlugin {
if ($this->shareWithGroupOnly) {
// Only add, if we have a common group
- $commonGroups = array_intersect($userGroups, $this->groupManager->getUserGroupIds($user));
+ $userGroupIds = array_map(function (IGroup $group) {
+ return $group->getGID();
+ }, $userGroups);
+ $commonGroups = array_intersect($userGroupIds, $this->groupManager->getUserGroupIds($user));
$addUser = !empty($commonGroups);
}
@@ -145,19 +183,23 @@ class UserPlugin implements ISearchPlugin {
}
}
- if (!$this->shareeEnumeration) {
- $result['wide'] = [];
+ // overwrite wide matches if they are limited
+ if (!$this->shareeEnumeration || $this->shareeEnumerationInGroupOnly) {
+ $result['wide'] = $autoCompleteUsers;
}
$type = new SearchResultType('users');
$searchResult->addResultSet($type, $result['wide'], $result['exact']);
+ if (count($result['exact'])) {
+ $searchResult->markExactIdMatch($type);
+ }
return $hasMoreResults;
}
public function takeOutCurrentUser(array &$users) {
$currentUser = $this->userSession->getUser();
- if(!is_null($currentUser)) {
+ if (!is_null($currentUser)) {
if (isset($users[$currentUser->getUID()])) {
unset($users[$currentUser->getUID()]);
}
diff --git a/lib/private/Collaboration/Resources/Collection.php b/lib/private/Collaboration/Resources/Collection.php
index b890e52f33a..5bdc1489fb8 100644
--- a/lib/private/Collaboration/Resources/Collection.php
+++ b/lib/private/Collaboration/Resources/Collection.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2018 Joas Schilling <coding@schilljs.com>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -27,7 +28,6 @@ declare(strict_types=1);
namespace OC\Collaboration\Resources;
-
use Doctrine\DBAL\Exception\ConstraintViolationException;
use OCP\Collaboration\Resources\ICollection;
use OCP\Collaboration\Resources\IManager;
@@ -127,7 +127,7 @@ class Collection implements ICollection {
* @since 16.0.0
*/
public function addResource(IResource $resource): void {
- array_map(function(IResource $r) use ($resource) {
+ array_map(function (IResource $r) use ($resource) {
if ($this->isSameResource($r, $resource)) {
throw new ResourceException('Already part of the collection');
}
@@ -159,7 +159,7 @@ class Collection implements ICollection {
* @since 16.0.0
*/
public function removeResource(IResource $resource): void {
- $this->resources = array_filter($this->getResources(), function(IResource $r) use ($resource) {
+ $this->resources = array_filter($this->getResources(), function (IResource $r) use ($resource) {
return !$this->isSameResource($r, $resource);
});
@@ -175,7 +175,6 @@ class Collection implements ICollection {
} else {
$this->manager->invalidateAccessCacheForCollection($this);
}
-
}
/**
diff --git a/lib/private/Collaboration/Resources/Listener.php b/lib/private/Collaboration/Resources/Listener.php
index 41a24960a66..ffb5001e801 100644
--- a/lib/private/Collaboration/Resources/Listener.php
+++ b/lib/private/Collaboration/Resources/Listener.php
@@ -5,8 +5,8 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2019 Joas Schilling <coding@schilljs.com>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
- * @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
@@ -27,7 +27,6 @@ declare(strict_types=1);
namespace OC\Collaboration\Resources;
-
use OCP\Collaboration\Resources\IManager;
use OCP\IGroup;
use OCP\IUser;
@@ -35,9 +34,8 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\GenericEvent;
class Listener {
-
public static function register(EventDispatcherInterface $dispatcher): void {
- $listener = function(GenericEvent $event) {
+ $listener = function (GenericEvent $event) {
/** @var IUser $user */
$user = $event->getArgument('user');
/** @var IManager $resourceManager */
@@ -48,7 +46,7 @@ class Listener {
$dispatcher->addListener(IGroup::class . '::postAddUser', $listener);
$dispatcher->addListener(IGroup::class . '::postRemoveUser', $listener);
- $dispatcher->addListener(IUser::class . '::postDelete', function(GenericEvent $event) {
+ $dispatcher->addListener(IUser::class . '::postDelete', function (GenericEvent $event) {
/** @var IUser $user */
$user = $event->getSubject();
/** @var IManager $resourceManager */
@@ -57,7 +55,7 @@ class Listener {
$resourceManager->invalidateAccessCacheForUser($user);
});
- $dispatcher->addListener(IGroup::class . '::preDelete', function(GenericEvent $event) {
+ $dispatcher->addListener(IGroup::class . '::preDelete', function (GenericEvent $event) {
/** @var IGroup $group */
$group = $event->getSubject();
/** @var IManager $resourceManager */
diff --git a/lib/private/Collaboration/Resources/Manager.php b/lib/private/Collaboration/Resources/Manager.php
index 82731cbdb44..97213c45669 100644
--- a/lib/private/Collaboration/Resources/Manager.php
+++ b/lib/private/Collaboration/Resources/Manager.php
@@ -28,9 +28,7 @@ declare(strict_types=1);
namespace OC\Collaboration\Resources;
-
use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
-use OCP\AppFramework\QueryException;
use OCP\Collaboration\Resources\CollectionException;
use OCP\Collaboration\Resources\ICollection;
use OCP\Collaboration\Resources\IManager;
@@ -44,7 +42,6 @@ use OCP\ILogger;
use OCP\IUser;
class Manager implements IManager {
-
public const TABLE_COLLECTIONS = 'collres_collections';
public const TABLE_RESOURCES = 'collres_resources';
public const TABLE_ACCESS_CACHE = 'collres_accesscache';
diff --git a/lib/private/Collaboration/Resources/Resource.php b/lib/private/Collaboration/Resources/Resource.php
index 19d7f3c0831..702bc2faf46 100644
--- a/lib/private/Collaboration/Resources/Resource.php
+++ b/lib/private/Collaboration/Resources/Resource.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
namespace OC\Collaboration\Resources;
-
use OCP\Collaboration\Resources\ICollection;
use OCP\Collaboration\Resources\IManager;
use OCP\Collaboration\Resources\IResource;
diff --git a/lib/private/Color.php b/lib/private/Color.php
index 11f2c4ada46..34ae487bfa7 100644
--- a/lib/private/Color.php
+++ b/lib/private/Color.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @license GNU AGPL version 3 or any later version
@@ -24,7 +25,9 @@
namespace OC;
class Color {
- public $r, $g, $b;
+ public $r;
+ public $g;
+ public $b;
public function __construct($r, $g, $b) {
$this->r = $r;
$this->g = $g;
diff --git a/lib/private/Command/CronBus.php b/lib/private/Command/CronBus.php
index 94235925096..5bb8e4b0045 100644
--- a/lib/private/Command/CronBus.php
+++ b/lib/private/Command/CronBus.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
*
@@ -52,9 +53,9 @@ class CronBus extends AsyncBus {
private function getJobClass($command) {
if ($command instanceof \Closure) {
return ClosureJob::class;
- } else if (is_callable($command)) {
+ } elseif (is_callable($command)) {
return CallableJob::class;
- } else if ($command instanceof ICommand) {
+ } elseif ($command instanceof ICommand) {
return CommandJob::class;
} else {
throw new \InvalidArgumentException('Invalid command');
@@ -69,7 +70,7 @@ class CronBus extends AsyncBus {
if ($command instanceof \Closure) {
$serializer = new Serializer();
return $serializer->serialize($command);
- } else if (is_callable($command) or $command instanceof ICommand) {
+ } elseif (is_callable($command) or $command instanceof ICommand) {
return serialize($command);
} else {
throw new \InvalidArgumentException('Invalid command');
diff --git a/lib/private/Command/FileAccess.php b/lib/private/Command/FileAccess.php
index 1a2e52c457b..b6bfa47e98b 100644
--- a/lib/private/Command/FileAccess.php
+++ b/lib/private/Command/FileAccess.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Robin Appelman <robin@icewind.nl>
*
* @license AGPL-3.0
@@ -25,7 +26,7 @@ namespace OC\Command;
use OCP\IUser;
trait FileAccess {
- protected function setupFS(IUser $user){
+ protected function setupFS(IUser $user) {
\OC_Util::setupFS($user->getUID());
}
diff --git a/lib/private/Command/QueueBus.php b/lib/private/Command/QueueBus.php
index 275435782be..1955da70fd9 100644
--- a/lib/private/Command/QueueBus.php
+++ b/lib/private/Command/QueueBus.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Julius Härtl <jus@bitgrid.net>
* @author Robin Appelman <robin@icewind.nl>
*
@@ -56,7 +57,7 @@ class QueueBus implements IBus {
if ($command instanceof ICommand) {
// ensure the command can be serialized
$serialized = serialize($command);
- if(strlen($serialized) > 4000) {
+ if (strlen($serialized) > 4000) {
throw new \InvalidArgumentException('Trying to push a command which serialized form can not be stored in the database (>4000 character)');
}
$unserialized = unserialize($serialized);
diff --git a/lib/private/Comments/Comment.php b/lib/private/Comments/Comment.php
index 71687c7a609..7c553c25a1c 100644
--- a/lib/private/Comments/Comment.php
+++ b/lib/private/Comments/Comment.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -30,7 +31,6 @@ use OCP\Comments\IllegalIDChangeException;
use OCP\Comments\MessageTooLongException;
class Comment implements IComment {
-
protected $data = [
'id' => '',
'parentId' => '0',
@@ -42,6 +42,7 @@ class Comment implements IComment {
'actorId' => '',
'objectType' => '',
'objectId' => '',
+ 'referenceId' => null,
'creationDT' => null,
'latestChildDT' => null,
];
@@ -53,7 +54,7 @@ class Comment implements IComment {
* the comments database scheme
*/
public function __construct(array $data = null) {
- if(is_array($data)) {
+ if (is_array($data)) {
$this->fromArray($data);
}
}
@@ -86,12 +87,12 @@ class Comment implements IComment {
* @since 9.0.0
*/
public function setId($id) {
- if(!is_string($id)) {
+ if (!is_string($id)) {
throw new \InvalidArgumentException('String expected.');
}
$id = trim($id);
- if($this->data['id'] === '' || ($this->data['id'] !== '' && $id === '')) {
+ if ($this->data['id'] === '' || ($this->data['id'] !== '' && $id === '')) {
$this->data['id'] = $id;
return $this;
}
@@ -117,7 +118,7 @@ class Comment implements IComment {
* @since 9.0.0
*/
public function setParentId($parentId) {
- if(!is_string($parentId)) {
+ if (!is_string($parentId)) {
throw new \InvalidArgumentException('String expected.');
}
$this->data['parentId'] = trim($parentId);
@@ -143,7 +144,7 @@ class Comment implements IComment {
* @since 9.0.0
*/
public function setTopmostParentId($id) {
- if(!is_string($id)) {
+ if (!is_string($id)) {
throw new \InvalidArgumentException('String expected.');
}
$this->data['topmostParentId'] = trim($id);
@@ -168,7 +169,7 @@ class Comment implements IComment {
* @since 9.0.0
*/
public function setChildrenCount($count) {
- if(!is_int($count)) {
+ if (!is_int($count)) {
throw new \InvalidArgumentException('Integer expected.');
}
$this->data['childrenCount'] = $count;
@@ -195,7 +196,7 @@ class Comment implements IComment {
* @since 9.0.0
*/
public function setMessage($message, $maxLength = self::MAX_MESSAGE_LENGTH) {
- if(!is_string($message)) {
+ if (!is_string($message)) {
throw new \InvalidArgumentException('String expected.');
}
$message = trim($message);
@@ -228,7 +229,7 @@ class Comment implements IComment {
*/
public function getMentions() {
$ok = preg_match_all("/\B(?<![^a-z0-9_\-@\.\'\s])@(\"guest\/[a-f0-9]+\"|\"[a-z0-9_\-@\.\' ]+\"|[a-z0-9_\-@\.\']+)/i", $this->getMessage(), $mentions);
- if(!$ok || !isset($mentions[0]) || !is_array($mentions[0])) {
+ if (!$ok || !isset($mentions[0]) || !is_array($mentions[0])) {
return [];
}
$uids = array_unique($mentions[0]);
@@ -262,7 +263,7 @@ class Comment implements IComment {
* @since 9.0.0
*/
public function setVerb($verb) {
- if(!is_string($verb) || !trim($verb)) {
+ if (!is_string($verb) || !trim($verb)) {
throw new \InvalidArgumentException('Non-empty String expected.');
}
$this->data['verb'] = trim($verb);
@@ -298,9 +299,9 @@ class Comment implements IComment {
* @since 9.0.0
*/
public function setActor($actorType, $actorId) {
- if(
- !is_string($actorType) || !trim($actorType)
- || !is_string($actorId) || $actorId === ''
+ if (
+ !is_string($actorType) || !trim($actorType)
+ || !is_string($actorId) || $actorId === ''
) {
throw new \InvalidArgumentException('String expected.');
}
@@ -384,9 +385,9 @@ class Comment implements IComment {
* @since 9.0.0
*/
public function setObject($objectType, $objectId) {
- if(
- !is_string($objectType) || !trim($objectType)
- || !is_string($objectId) || trim($objectId) === ''
+ if (
+ !is_string($objectType) || !trim($objectType)
+ || !is_string($objectId) || trim($objectId) === ''
) {
throw new \InvalidArgumentException('String expected.');
}
@@ -396,6 +397,36 @@ class Comment implements IComment {
}
/**
+ * returns the reference id of the comment
+ *
+ * @return string|null
+ * @since 19.0.0
+ */
+ public function getReferenceId(): ?string {
+ return $this->data['referenceId'];
+ }
+
+ /**
+ * sets (overwrites) the reference id of the comment
+ *
+ * @param string $referenceId e.g. sha256 hash sum
+ * @return IComment
+ * @since 19.0.0
+ */
+ public function setReferenceId(?string $referenceId): IComment {
+ if ($referenceId === null) {
+ $this->data['referenceId'] = $referenceId;
+ } else {
+ $referenceId = trim($referenceId);
+ if ($referenceId === '') {
+ throw new \InvalidArgumentException('Non empty string expected.');
+ }
+ $this->data['referenceId'] = $referenceId;
+ }
+ return $this;
+ }
+
+ /**
* sets the comment data based on an array with keys as taken from the
* database.
*
@@ -403,18 +434,18 @@ class Comment implements IComment {
* @return IComment
*/
protected function fromArray($data) {
- foreach(array_keys($data) as $key) {
+ foreach (array_keys($data) as $key) {
// translate DB keys to internal setter names
$setter = 'set' . implode('', array_map('ucfirst', explode('_', $key)));
$setter = str_replace('Timestamp', 'DateTime', $setter);
- if(method_exists($this, $setter)) {
+ if (method_exists($this, $setter)) {
$this->$setter($data[$key]);
}
}
- foreach(['actor', 'object'] as $role) {
- if(isset($data[$role . '_type']) && isset($data[$role . '_id'])) {
+ foreach (['actor', 'object'] as $role) {
+ if (isset($data[$role . '_type']) && isset($data[$role . '_id'])) {
$setter = 'set' . ucfirst($role);
$this->$setter($data[$role . '_type'], $data[$role . '_id']);
}
diff --git a/lib/private/Comments/Manager.php b/lib/private/Comments/Manager.php
index f1c72243597..a0a670817f4 100644
--- a/lib/private/Comments/Manager.php
+++ b/lib/private/Comments/Manager.php
@@ -29,6 +29,7 @@
namespace OC\Comments;
use Doctrine\DBAL\Exception\DriverException;
+use Doctrine\DBAL\Exception\InvalidFieldNameException;
use OCP\Comments\CommentsEvent;
use OCP\Comments\IComment;
use OCP\Comments\ICommentsEventHandler;
@@ -96,6 +97,7 @@ class Manager implements ICommentsManager {
$data['latest_child_timestamp'] = new \DateTime($data['latest_child_timestamp']);
}
$data['children_count'] = (int)$data['children_count'];
+ $data['reference_id'] = $data['reference_id'] ?? null;
return $data;
}
@@ -744,23 +746,45 @@ class Manager implements ICommentsManager {
* @param IComment $comment
* @return bool
*/
- protected function insert(IComment &$comment) {
+ protected function insert(IComment $comment): bool {
+ try {
+ $result = $this->insertQuery($comment, true);
+ } catch (InvalidFieldNameException $e) {
+ // The reference id field was only added in Nextcloud 19.
+ // In order to not cause too long waiting times on the update,
+ // it was decided to only add it lazy, as it is also not a critical
+ // feature, but only helps to have a better experience while commenting.
+ // So in case the reference_id field is missing,
+ // we simply save the comment without that field.
+ $result = $this->insertQuery($comment, false);
+ }
+
+ return $result;
+ }
+
+ protected function insertQuery(IComment $comment, bool $tryWritingReferenceId): bool {
$qb = $this->dbConn->getQueryBuilder();
- $affectedRows = $qb
- ->insert('comments')
- ->values([
- 'parent_id' => $qb->createNamedParameter($comment->getParentId()),
- 'topmost_parent_id' => $qb->createNamedParameter($comment->getTopmostParentId()),
- 'children_count' => $qb->createNamedParameter($comment->getChildrenCount()),
- 'actor_type' => $qb->createNamedParameter($comment->getActorType()),
- 'actor_id' => $qb->createNamedParameter($comment->getActorId()),
- 'message' => $qb->createNamedParameter($comment->getMessage()),
- 'verb' => $qb->createNamedParameter($comment->getVerb()),
- 'creation_timestamp' => $qb->createNamedParameter($comment->getCreationDateTime(), 'datetime'),
- 'latest_child_timestamp' => $qb->createNamedParameter($comment->getLatestChildDateTime(), 'datetime'),
- 'object_type' => $qb->createNamedParameter($comment->getObjectType()),
- 'object_id' => $qb->createNamedParameter($comment->getObjectId()),
- ])
+
+ $values = [
+ 'parent_id' => $qb->createNamedParameter($comment->getParentId()),
+ 'topmost_parent_id' => $qb->createNamedParameter($comment->getTopmostParentId()),
+ 'children_count' => $qb->createNamedParameter($comment->getChildrenCount()),
+ 'actor_type' => $qb->createNamedParameter($comment->getActorType()),
+ 'actor_id' => $qb->createNamedParameter($comment->getActorId()),
+ 'message' => $qb->createNamedParameter($comment->getMessage()),
+ 'verb' => $qb->createNamedParameter($comment->getVerb()),
+ 'creation_timestamp' => $qb->createNamedParameter($comment->getCreationDateTime(), 'datetime'),
+ 'latest_child_timestamp' => $qb->createNamedParameter($comment->getLatestChildDateTime(), 'datetime'),
+ 'object_type' => $qb->createNamedParameter($comment->getObjectType()),
+ 'object_id' => $qb->createNamedParameter($comment->getObjectId()),
+ ];
+
+ if ($tryWritingReferenceId) {
+ $values['reference_id'] = $qb->createNamedParameter($comment->getReferenceId());
+ }
+
+ $affectedRows = $qb->insert('comments')
+ ->values($values)
->execute();
if ($affectedRows > 0) {
@@ -785,8 +809,21 @@ class Manager implements ICommentsManager {
$this->sendEvent(CommentsEvent::EVENT_PRE_UPDATE, $this->get($comment->getId()));
$this->uncache($comment->getId());
+ try {
+ $result = $this->updateQuery($comment, true);
+ } catch (InvalidFieldNameException $e) {
+ // See function insert() for explanation
+ $result = $this->updateQuery($comment, false);
+ }
+
+ $this->sendEvent(CommentsEvent::EVENT_UPDATE, $comment);
+
+ return $result;
+ }
+
+ protected function updateQuery(IComment $comment, bool $tryWritingReferenceId): bool {
$qb = $this->dbConn->getQueryBuilder();
- $affectedRows = $qb
+ $qb
->update('comments')
->set('parent_id', $qb->createNamedParameter($comment->getParentId()))
->set('topmost_parent_id', $qb->createNamedParameter($comment->getTopmostParentId()))
@@ -798,17 +835,19 @@ class Manager implements ICommentsManager {
->set('creation_timestamp', $qb->createNamedParameter($comment->getCreationDateTime(), 'datetime'))
->set('latest_child_timestamp', $qb->createNamedParameter($comment->getLatestChildDateTime(), 'datetime'))
->set('object_type', $qb->createNamedParameter($comment->getObjectType()))
- ->set('object_id', $qb->createNamedParameter($comment->getObjectId()))
- ->where($qb->expr()->eq('id', $qb->createParameter('id')))
- ->setParameter('id', $comment->getId())
+ ->set('object_id', $qb->createNamedParameter($comment->getObjectId()));
+
+ if ($tryWritingReferenceId) {
+ $qb->set('reference_id', $qb->createNamedParameter($comment->getReferenceId()));
+ }
+
+ $affectedRows = $qb->where($qb->expr()->eq('id', $qb->createNamedParameter($comment->getId())))
->execute();
if ($affectedRows === 0) {
throw new NotFoundException('Comment to update does ceased to exist');
}
- $this->sendEvent(CommentsEvent::EVENT_UPDATE, $comment);
-
return $affectedRows > 0;
}
diff --git a/lib/private/Config.php b/lib/private/Config.php
index a21c27f1b51..cbdbc5b2e64 100644
--- a/lib/private/Config.php
+++ b/lib/private/Config.php
@@ -6,11 +6,13 @@
* @author Aldo "xoen" Giambelluca <xoen@xoen.org>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Brice Maron <brice@bmaron.net>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Kesselberg <mail@danielkesselberg.de>
* @author Frank Karlitschek <frank@karlitschek.de>
* @author Jakob Sack <mail@jakobsack.de>
* @author Jan-Christoph Borchardt <hey@jancborchardt.net>
* @author Joas Schilling <coding@schilljs.com>
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -41,11 +43,10 @@ namespace OC;
* configuration file of Nextcloud.
*/
class Config {
-
- const ENV_PREFIX = 'NC_';
+ public const ENV_PREFIX = 'NC_';
/** @var array Associative array ($key => $value) */
- protected $cache = array();
+ protected $cache = [];
/** @var string */
protected $configDir;
/** @var string */
@@ -186,7 +187,7 @@ class Config {
*/
private function readData() {
// Default config should always get loaded
- $configFiles = array($this->configFilePath);
+ $configFiles = [$this->configFilePath];
// Add all files in the config dir ending with the same file name
$extra = glob($this->configDir.'*.'.$this->configFileName);
@@ -199,7 +200,7 @@ class Config {
foreach ($configFiles as $file) {
$fileExistsAndIsReadable = file_exists($file) && is_readable($file);
$filePointer = $fileExistsAndIsReadable ? fopen($file, 'r') : false;
- if($file === $this->configFilePath &&
+ if ($file === $this->configFilePath &&
$filePointer === false) {
// Opening the main config might not be possible, e.g. if the wrong
// permissions are set (likely on a new installation)
@@ -207,13 +208,13 @@ class Config {
}
// Try to acquire a file lock
- if(!flock($filePointer, LOCK_SH)) {
+ if (!flock($filePointer, LOCK_SH)) {
throw new \Exception(sprintf('Could not acquire a shared lock on the config file %s', $file));
}
unset($CONFIG);
include $file;
- if(isset($CONFIG) && is_array($CONFIG)) {
+ if (isset($CONFIG) && is_array($CONFIG)) {
$this->cache = array_merge($this->cache, $CONFIG);
}
@@ -238,29 +239,26 @@ class Config {
$content .= var_export($this->cache, true);
$content .= ";\n";
- touch ($this->configFilePath);
+ touch($this->configFilePath);
$filePointer = fopen($this->configFilePath, 'r+');
// Prevent others not to read the config
chmod($this->configFilePath, 0640);
// File does not exist, this can happen when doing a fresh install
- if(!is_resource ($filePointer)) {
- // TODO fix this via DI once it is very clear that this doesn't cause side effects due to initialization order
- // currently this breaks app routes but also could have other side effects especially during setup and exception handling
- $url = \OC::$server->getURLGenerator()->linkToDocs('admin-dir_permissions');
+ if (!is_resource($filePointer)) {
throw new HintException(
"Can't write into config directory!",
- 'This can usually be fixed by giving the webserver write access to the config directory. See ' . $url);
+ 'This can usually be fixed by giving the webserver write access to the config directory.');
}
// Try to acquire a file lock
- if(!flock($filePointer, LOCK_EX)) {
+ if (!flock($filePointer, LOCK_EX)) {
throw new \Exception(sprintf('Could not acquire an exclusive lock on the config file %s', $this->configFilePath));
}
// Write the config and release the lock
- ftruncate ($filePointer, 0);
+ ftruncate($filePointer, 0);
fwrite($filePointer, $content);
fflush($filePointer);
flock($filePointer, LOCK_UN);
diff --git a/lib/private/Console/Application.php b/lib/private/Console/Application.php
index 0688a193693..10c578f41e0 100644
--- a/lib/private/Console/Application.php
+++ b/lib/private/Console/Application.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@statuscode.ch>
@@ -146,10 +147,10 @@ class Application {
}
}
}
- } else if ($input->getArgument('command') !== '_completion' && $input->getArgument('command') !== 'maintenance:install') {
+ } elseif ($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) {
+ } catch (NeedsUpdateException $e) {
if ($input->getArgument('command') !== '_completion') {
$output->writeln("Nextcloud or one of the apps require upgrade - only a limited number of commands are available");
$output->writeln("You may use your browser or the occ upgrade command to do the upgrade");
diff --git a/lib/private/Console/TimestampFormatter.php b/lib/private/Console/TimestampFormatter.php
index 946b864ac62..7f8250a9f3d 100644
--- a/lib/private/Console/TimestampFormatter.php
+++ b/lib/private/Console/TimestampFormatter.php
@@ -23,7 +23,6 @@
namespace OC\Console;
-
use OCP\IConfig;
use Symfony\Component\Console\Formatter\OutputFormatterInterface;
use Symfony\Component\Console\Formatter\OutputFormatterStyleInterface;
@@ -101,7 +100,6 @@ class TimestampFormatter implements OutputFormatterInterface {
* log timezone and dateformat, e.g. "2015-06-23T17:24:37+02:00"
*/
public function format($message) {
-
$timeZone = $this->config->getSystemValue('logtimezone', 'UTC');
$timeZone = $timeZone !== null ? new \DateTimeZone($timeZone) : null;
diff --git a/lib/private/Contacts/ContactsMenu/ActionFactory.php b/lib/private/Contacts/ContactsMenu/ActionFactory.php
index 2c216bf2592..0cdd1245b31 100644
--- a/lib/private/Contacts/ContactsMenu/ActionFactory.php
+++ b/lib/private/Contacts/ContactsMenu/ActionFactory.php
@@ -52,5 +52,4 @@ class ActionFactory implements IActionFactory {
public function newEMailAction($icon, $name, $email) {
return $this->newLinkAction($icon, $name, 'mailto:' . $email);
}
-
}
diff --git a/lib/private/Contacts/ContactsMenu/ActionProviderStore.php b/lib/private/Contacts/ContactsMenu/ActionProviderStore.php
index c737e1ef289..5513dd06362 100644
--- a/lib/private/Contacts/ContactsMenu/ActionProviderStore.php
+++ b/lib/private/Contacts/ContactsMenu/ActionProviderStore.php
@@ -94,7 +94,7 @@ class ActionProviderStore {
* @return string[]
*/
private function getAppProviderClasses(IUser $user) {
- return array_reduce($this->appManager->getEnabledAppsForUser($user), function($all, $appId) {
+ return array_reduce($this->appManager->getEnabledAppsForUser($user), function ($all, $appId) {
$info = $this->appManager->getAppInfo($appId);
if (!isset($info['contactsmenu']) || !isset($info['contactsmenu'])) {
@@ -102,12 +102,11 @@ class ActionProviderStore {
return $all;
}
- $providers = array_reduce($info['contactsmenu'], function($all, $provider) {
+ $providers = array_reduce($info['contactsmenu'], function ($all, $provider) {
return array_merge($all, [$provider]);
}, []);
return array_merge($all, $providers);
}, []);
}
-
}
diff --git a/lib/private/Contacts/ContactsMenu/Actions/LinkAction.php b/lib/private/Contacts/ContactsMenu/Actions/LinkAction.php
index b1fd74e5bf9..eac169afb77 100644
--- a/lib/private/Contacts/ContactsMenu/Actions/LinkAction.php
+++ b/lib/private/Contacts/ContactsMenu/Actions/LinkAction.php
@@ -98,5 +98,4 @@ class LinkAction implements ILinkAction {
'hyperlink' => $this->href,
];
}
-
}
diff --git a/lib/private/Contacts/ContactsMenu/ContactsStore.php b/lib/private/Contacts/ContactsMenu/ContactsStore.php
index b6e401cbe71..b0bd99b844e 100644
--- a/lib/private/Contacts/ContactsMenu/ContactsStore.php
+++ b/lib/private/Contacts/ContactsMenu/ContactsStore.php
@@ -4,7 +4,9 @@
* @copyright 2017 Lukas Reschke <lukas@statuscode.ch>
*
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @author Daniel Calviño Sánchez <danxuliu@gmail.com>
* @author Georg Ehrke <oc.list@georgehrke.com>
+ * @author Julius Härtl <jus@bitgrid.net>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Tobia De Koninck <tobia@ledfan.be>
@@ -77,7 +79,7 @@ class ContactsStore implements IContactsStore {
'EMAIL'
]);
- $entries = array_map(function(array $contact) {
+ $entries = array_map(function (array $contact) {
return $this->contactArrayToEntry($contact);
}, $allContacts);
return $this->filterContacts(
@@ -107,12 +109,13 @@ class ContactsStore implements IContactsStore {
array $entries,
$filter) {
$disallowEnumeration = $this->config->getAppValue('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes') !== 'yes';
+ $restrictEnumeration = $this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_to_group', 'no') === 'yes';
$excludedGroups = $this->config->getAppValue('core', 'shareapi_exclude_groups', 'no') === 'yes';
// whether to filter out local users
$skipLocal = false;
// whether to filter out all users which doesn't have the same group as the current user
- $ownGroupsOnly = $this->config->getAppValue('core', 'shareapi_only_share_with_group_members', 'no') === 'yes';
+ $ownGroupsOnly = $this->config->getAppValue('core', 'shareapi_only_share_with_group_members', 'no') === 'yes' || $restrictEnumeration;
$selfGroups = $this->groupManager->getUserGroupIds($self);
@@ -129,28 +132,28 @@ class ContactsStore implements IContactsStore {
$selfUID = $self->getUID();
- return array_values(array_filter($entries, function(IEntry $entry) use ($self, $skipLocal, $ownGroupsOnly, $selfGroups, $selfUID, $disallowEnumeration, $filter) {
+ return array_values(array_filter($entries, function (IEntry $entry) use ($self, $skipLocal, $ownGroupsOnly, $selfGroups, $selfUID, $disallowEnumeration, $filter) {
if ($skipLocal && $entry->getProperty('isLocalSystemBook') === true) {
return false;
}
// Prevent enumerating local users
- if($disallowEnumeration && $entry->getProperty('isLocalSystemBook')) {
+ if ($disallowEnumeration && $entry->getProperty('isLocalSystemBook')) {
$filterUser = true;
$mailAddresses = $entry->getEMailAddresses();
- foreach($mailAddresses as $mailAddress) {
- if($mailAddress === $filter) {
+ foreach ($mailAddresses as $mailAddress) {
+ if ($mailAddress === $filter) {
$filterUser = false;
break;
}
}
- if($entry->getProperty('UID') && $entry->getProperty('UID') === $filter) {
+ if ($entry->getProperty('UID') && $entry->getProperty('UID') === $filter) {
$filterUser = false;
}
- if($filterUser) {
+ if ($filterUser) {
return false;
}
}
@@ -158,7 +161,7 @@ class ContactsStore implements IContactsStore {
if ($ownGroupsOnly && $entry->getProperty('isLocalSystemBook') === true) {
$uid = $this->userManager->get($entry->getProperty('UID'));
- if ($uid === NULL) {
+ if ($uid === null) {
return false;
}
@@ -180,7 +183,7 @@ class ContactsStore implements IContactsStore {
* @return IEntry|null
*/
public function findOne(IUser $user, $shareType, $shareWith) {
- switch($shareType) {
+ switch ($shareType) {
case 0:
case 6:
$filter = ['UID'];
@@ -194,7 +197,7 @@ class ContactsStore implements IContactsStore {
$userId = $user->getUID();
$allContacts = $this->contactsManager->search($shareWith, $filter);
- $contacts = array_filter($allContacts, function($contact) use ($userId) {
+ $contacts = array_filter($allContacts, function ($contact) use ($userId) {
return $contact['UID'] !== $userId;
});
$match = null;
@@ -222,7 +225,6 @@ class ContactsStore implements IContactsStore {
} else {
$match = null;
}
-
}
return $match;
@@ -260,5 +262,4 @@ class ContactsStore implements IContactsStore {
return $entry;
}
-
}
diff --git a/lib/private/Contacts/ContactsMenu/Entry.php b/lib/private/Contacts/ContactsMenu/Entry.php
index 73ac22ad69c..675d925134b 100644
--- a/lib/private/Contacts/ContactsMenu/Entry.php
+++ b/lib/private/Contacts/ContactsMenu/Entry.php
@@ -114,7 +114,7 @@ class Entry implements IEntry {
* sort the actions by priority and name
*/
private function sortActions() {
- usort($this->actions, function(IAction $action1, IAction $action2) {
+ usort($this->actions, function (IAction $action1, IAction $action2) {
$prio1 = $action1->getPriority();
$prio2 = $action2->getPriority();
@@ -151,7 +151,7 @@ class Entry implements IEntry {
*/
public function jsonSerialize() {
$topAction = !empty($this->actions) ? $this->actions[0]->jsonSerialize() : null;
- $otherActions = array_map(function(IAction $action) {
+ $otherActions = array_map(function (IAction $action) {
return $action->jsonSerialize();
}, array_slice($this->actions, 1));
@@ -164,5 +164,4 @@ class Entry implements IEntry {
'lastMessage' => '',
];
}
-
}
diff --git a/lib/private/Contacts/ContactsMenu/Manager.php b/lib/private/Contacts/ContactsMenu/Manager.php
index 0ebc9648285..293f1366b05 100644
--- a/lib/private/Contacts/ContactsMenu/Manager.php
+++ b/lib/private/Contacts/ContactsMenu/Manager.php
@@ -100,7 +100,7 @@ class Manager {
* @return IEntry[]
*/
private function sortEntries(array $entries) {
- usort($entries, function(IEntry $entryA, IEntry $entryB) {
+ usort($entries, function (IEntry $entryA, IEntry $entryB) {
return strcasecmp($entryA->getFullName(), $entryB->getFullName());
});
return $entries;
@@ -118,5 +118,4 @@ class Manager {
}
}
}
-
}
diff --git a/lib/private/Contacts/ContactsMenu/Providers/EMailProvider.php b/lib/private/Contacts/ContactsMenu/Providers/EMailProvider.php
index adf09065a45..bb5e64d15aa 100644
--- a/lib/private/Contacts/ContactsMenu/Providers/EMailProvider.php
+++ b/lib/private/Contacts/ContactsMenu/Providers/EMailProvider.php
@@ -59,5 +59,4 @@ class EMailProvider implements IProvider {
$entry->addAction($action);
}
}
-
}
diff --git a/lib/private/ContactsManager.php b/lib/private/ContactsManager.php
index ba709baefe5..4084205b06d 100644
--- a/lib/private/ContactsManager.php
+++ b/lib/private/ContactsManager.php
@@ -4,8 +4,10 @@
*
* @author Arne Hamann <kontakt+github@arne.email>
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ * @author Julius Härtl <jus@bitgrid.net>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -39,15 +41,17 @@ namespace OC {
* @param array $searchProperties defines the properties within the query pattern should match
* @param array $options = array() to define the search behavior
* - 'escape_like_param' - If set to false wildcards _ and % are not escaped
+ * - 'limit' - Set a numeric limit for the search results
+ * - 'offset' - Set the offset for the limited search results
* @return array an array of contacts which are arrays of key-value-pairs
*/
- public function search($pattern, $searchProperties = array(), $options = array()) {
+ public function search($pattern, $searchProperties = [], $options = []) {
$this->loadAddressBooks();
- $result = array();
- foreach($this->addressBooks as $addressBook) {
+ $result = [];
+ foreach ($this->addressBooks as $addressBook) {
$r = $addressBook->search($pattern, $searchProperties, $options);
- $contacts = array();
- foreach($r as $c){
+ $contacts = [];
+ foreach ($r as $c) {
$c['addressbook-key'] = $addressBook->getKey();
$contacts[] = $c;
}
@@ -124,15 +128,15 @@ namespace OC {
/**
* Return a list of the user's addressbooks display names
* ! The addressBook displayName are not unique, please use getUserAddressBooks
- *
+ *
* @return array
* @since 6.0.0
* @deprecated 16.0.0 - Use `$this->getUserAddressBooks()` instead
*/
public function getAddressBooks() {
$this->loadAddressBooks();
- $result = array();
- foreach($this->addressBooks as $addressBook) {
+ $result = [];
+ foreach ($this->addressBooks as $addressBook) {
$result[$addressBook->getKey()] = $addressBook->getDisplayName();
}
@@ -141,11 +145,11 @@ namespace OC {
/**
* Return a list of the user's addressbooks
- *
+ *
* @return IAddressBook[]
* @since 16.0.0
*/
- public function getUserAddressBooks(): Array {
+ public function getUserAddressBooks(): array {
$this->loadAddressBooks();
return $this->addressBooks;
}
@@ -154,19 +158,19 @@ namespace OC {
* removes all registered address book instances
*/
public function clear() {
- $this->addressBooks = array();
- $this->addressBookLoaders = array();
+ $this->addressBooks = [];
+ $this->addressBookLoaders = [];
}
/**
* @var \OCP\IAddressBook[] which holds all registered address books
*/
- private $addressBooks = array();
+ private $addressBooks = [];
/**
* @var \Closure[] to call to load/register address books
*/
- private $addressBookLoaders = array();
+ private $addressBookLoaders = [];
/**
* In order to improve lazy loading a closure can be registered which will be called in case
@@ -174,8 +178,7 @@ namespace OC {
*
* @param \Closure $callable
*/
- public function register(\Closure $callable)
- {
+ public function register(\Closure $callable) {
$this->addressBookLoaders[] = $callable;
}
@@ -185,8 +188,7 @@ namespace OC {
* @param string $addressBookKey
* @return \OCP\IAddressBook
*/
- protected function getAddressBook($addressBookKey)
- {
+ protected function getAddressBook($addressBookKey) {
$this->loadAddressBooks();
if (!array_key_exists($addressBookKey, $this->addressBooks)) {
return null;
@@ -198,12 +200,11 @@ namespace OC {
/**
* Load all address books registered with 'register'
*/
- protected function loadAddressBooks()
- {
- foreach($this->addressBookLoaders as $callable) {
+ protected function loadAddressBooks() {
+ foreach ($this->addressBookLoaders as $callable) {
$callable($this);
}
- $this->addressBookLoaders = array();
+ $this->addressBookLoaders = [];
}
}
}
diff --git a/lib/private/DB/Adapter.php b/lib/private/DB/Adapter.php
index f93f5aaf481..f27a90dd690 100644
--- a/lib/private/DB/Adapter.php
+++ b/lib/private/DB/Adapter.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jonny007-MKD <1-23-4-5@web.de>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -106,7 +107,7 @@ class Adapter {
. 'FROM `' . $table . '` WHERE ';
$inserts = array_values($input);
- foreach($compare as $key) {
+ foreach ($compare as $key) {
$query .= '`' . $key . '`';
if (is_null($input[$key])) {
$query .= ' IS NULL AND ';
@@ -136,11 +137,11 @@ class Adapter {
try {
$builder = $this->conn->getQueryBuilder();
$builder->insert($table);
- foreach($values as $key => $value) {
+ foreach ($values as $key => $value) {
$builder->setValue($key, $builder->createNamedParameter($value));
}
return $builder->execute();
- } catch(UniqueConstraintViolationException $e) {
+ } catch (UniqueConstraintViolationException $e) {
return 0;
}
}
diff --git a/lib/private/DB/AdapterOCI8.php b/lib/private/DB/AdapterOCI8.php
index 3eb50916aab..553945691a6 100644
--- a/lib/private/DB/AdapterOCI8.php
+++ b/lib/private/DB/AdapterOCI8.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -37,7 +38,7 @@ class AdapterOCI8 extends Adapter {
return $this->conn->realLastInsertId($table);
}
- const UNIX_TIMESTAMP_REPLACEMENT = "(cast(sys_extract_utc(systimestamp) as date) - date'1970-01-01') * 86400";
+ public const UNIX_TIMESTAMP_REPLACEMENT = "(cast(sys_extract_utc(systimestamp) as date) - date'1970-01-01') * 86400";
public function fixupStatement($statement) {
$statement = preg_replace('/`(\w+)` ILIKE \?/', 'REGEXP_LIKE(`$1`, \'^\' || REPLACE(?, \'%\', \'.*\') || \'$\', \'i\')', $statement);
diff --git a/lib/private/DB/AdapterPgSql.php b/lib/private/DB/AdapterPgSql.php
index 6cfd1d458bc..7f7f5150780 100644
--- a/lib/private/DB/AdapterPgSql.php
+++ b/lib/private/DB/AdapterPgSql.php
@@ -4,6 +4,7 @@
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Ole Ostergaard <ole.c.ostergaard@gmail.com>
* @author Ole Ostergaard <ole.ostergaard@knime.com>
@@ -26,8 +27,6 @@
namespace OC\DB;
-use Doctrine\DBAL\DBALException;
-
class AdapterPgSql extends Adapter {
protected $compatModePre9_5 = null;
@@ -35,10 +34,10 @@ class AdapterPgSql extends Adapter {
return $this->conn->fetchColumn('SELECT lastval()');
}
- const UNIX_TIMESTAMP_REPLACEMENT = 'cast(extract(epoch from current_timestamp) as integer)';
+ public const UNIX_TIMESTAMP_REPLACEMENT = 'cast(extract(epoch from current_timestamp) as integer)';
public function fixupStatement($statement) {
- $statement = str_replace( '`', '"', $statement );
- $statement = str_ireplace( 'UNIX_TIMESTAMP()', self::UNIX_TIMESTAMP_REPLACEMENT, $statement );
+ $statement = str_replace('`', '"', $statement);
+ $statement = str_ireplace('UNIX_TIMESTAMP()', self::UNIX_TIMESTAMP_REPLACEMENT, $statement);
return $statement;
}
@@ -46,7 +45,7 @@ class AdapterPgSql extends Adapter {
* @suppress SqlInjectionChecker
*/
public function insertIgnoreConflict(string $table,array $values) : int {
- if($this->isPre9_5CompatMode() === true) {
+ if ($this->isPre9_5CompatMode() === true) {
return parent::insertIgnoreConflict($table, $values);
}
@@ -62,7 +61,7 @@ class AdapterPgSql extends Adapter {
}
protected function isPre9_5CompatMode(): bool {
- if($this->compatModePre9_5 !== null) {
+ if ($this->compatModePre9_5 !== null) {
return $this->compatModePre9_5;
}
diff --git a/lib/private/DB/AdapterSqlite.php b/lib/private/DB/AdapterSqlite.php
index 20d27732131..43ec4a90c62 100644
--- a/lib/private/DB/AdapterSqlite.php
+++ b/lib/private/DB/AdapterSqlite.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -43,10 +44,10 @@ class AdapterSqlite extends Adapter {
public function fixupStatement($statement) {
$statement = preg_replace('/`(\w+)` ILIKE \?/', 'LOWER($1) LIKE LOWER(?)', $statement);
- $statement = str_replace( '`', '"', $statement );
- $statement = str_ireplace( 'NOW()', 'datetime(\'now\')', $statement );
+ $statement = str_replace('`', '"', $statement);
+ $statement = str_ireplace('NOW()', 'datetime(\'now\')', $statement);
$statement = str_ireplace('GREATEST(', 'MAX(', $statement);
- $statement = str_ireplace( 'UNIX_TIMESTAMP()', 'strftime(\'%s\',\'now\')', $statement );
+ $statement = str_ireplace('UNIX_TIMESTAMP()', 'strftime(\'%s\',\'now\')', $statement);
return $statement;
}
@@ -74,7 +75,7 @@ class AdapterSqlite extends Adapter {
. " WHERE NOT EXISTS (SELECT 1 FROM `$table` WHERE ";
$inserts = array_values($input);
- foreach($compare as $key) {
+ foreach ($compare as $key) {
$query .= '`' . $key . '`';
if (is_null($input[$key])) {
$query .= ' IS NULL AND ';
diff --git a/lib/private/DB/Connection.php b/lib/private/DB/Connection.php
index 8150f08593f..3b24703d434 100644
--- a/lib/private/DB/Connection.php
+++ b/lib/private/DB/Connection.php
@@ -3,7 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Daniel Kesselberg <mail@danielkesselberg.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -41,7 +41,6 @@ use Doctrine\DBAL\Driver;
use Doctrine\DBAL\Exception\ConstraintViolationException;
use Doctrine\DBAL\Platforms\MySqlPlatform;
use Doctrine\DBAL\Schema\Schema;
-use Doctrine\DBAL\TransactionIsolationLevel;
use OC\DB\QueryBuilder\QueryBuilder;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
@@ -140,8 +139,7 @@ class Connection extends ReconnectWrapper implements IDBConnection {
* @throws \Exception
*/
public function __construct(array $params, Driver $driver, Configuration $config = null,
- EventManager $eventManager = null)
- {
+ EventManager $eventManager = null) {
if (!isset($params['adapter'])) {
throw new \Exception('adapter not set');
}
@@ -161,7 +159,7 @@ class Connection extends ReconnectWrapper implements IDBConnection {
* @param int $offset
* @return \Doctrine\DBAL\Driver\Statement The prepared statement.
*/
- public function prepare( $statement, $limit=null, $offset=null ) {
+ public function prepare($statement, $limit=null, $offset=null) {
if ($limit === -1) {
$limit = null;
}
@@ -190,8 +188,7 @@ class Connection extends ReconnectWrapper implements IDBConnection {
*
* @throws \Doctrine\DBAL\DBALException
*/
- public function executeQuery($query, array $params = array(), $types = array(), QueryCacheProfile $qcp = null)
- {
+ public function executeQuery($query, array $params = [], $types = [], QueryCacheProfile $qcp = null) {
$query = $this->replaceTablePrefix($query);
$query = $this->adapter->fixupStatement($query);
return parent::executeQuery($query, $params, $types, $qcp);
@@ -211,8 +208,7 @@ class Connection extends ReconnectWrapper implements IDBConnection {
*
* @throws \Doctrine\DBAL\DBALException
*/
- public function executeUpdate($query, array $params = array(), array $types = array())
- {
+ public function executeUpdate($query, array $params = [], array $types = []) {
$query = $this->replaceTablePrefix($query);
$query = $this->adapter->fixupStatement($query);
return parent::executeUpdate($query, $params, $types);
@@ -266,7 +262,7 @@ class Connection extends ReconnectWrapper implements IDBConnection {
private function getType($value) {
if (is_bool($value)) {
return IQueryBuilder::PARAM_BOOL;
- } else if (is_int($value)) {
+ } elseif (is_int($value)) {
return IQueryBuilder::PARAM_INT;
} else {
return IQueryBuilder::PARAM_STR;
@@ -290,7 +286,7 @@ class Connection extends ReconnectWrapper implements IDBConnection {
$insertQb = $this->getQueryBuilder();
$insertQb->insert($table)
->values(
- array_map(function($value) use ($insertQb) {
+ array_map(function ($value) use ($insertQb) {
return $insertQb->createNamedParameter($value, $this->getType($value));
}, array_merge($keys, $values))
);
@@ -373,7 +369,7 @@ class Connection extends ReconnectWrapper implements IDBConnection {
public function dropTable($table) {
$table = $this->tablePrefix . trim($table);
$schema = $this->getSchemaManager();
- if($schema->tablesExist(array($table))) {
+ if ($schema->tablesExist([$table])) {
$schema->dropTable($table);
}
}
@@ -384,10 +380,10 @@ class Connection extends ReconnectWrapper implements IDBConnection {
* @param string $table table name without the prefix
* @return bool
*/
- public function tableExists($table){
+ public function tableExists($table) {
$table = $this->tablePrefix . trim($table);
$schema = $this->getSchemaManager();
- return $schema->tablesExist(array($table));
+ return $schema->tablesExist([$table]);
}
// internal use
@@ -396,7 +392,7 @@ class Connection extends ReconnectWrapper implements IDBConnection {
* @return string
*/
protected function replaceTablePrefix($statement) {
- return str_replace( '*PREFIX*', $this->tablePrefix, $statement );
+ return str_replace('*PREFIX*', $this->tablePrefix, $statement);
}
/**
diff --git a/lib/private/DB/ConnectionFactory.php b/lib/private/DB/ConnectionFactory.php
index 427a292b6b5..441e4567dbd 100644
--- a/lib/private/DB/ConnectionFactory.php
+++ b/lib/private/DB/ConnectionFactory.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Andreas Fischer <bantu@owncloud.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Kesselberg <mail@danielkesselberg.de>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
@@ -40,10 +41,10 @@ use OC\SystemConfig;
*/
class ConnectionFactory {
/** @var string default database name */
- const DEFAULT_DBNAME = 'owncloud';
+ public const DEFAULT_DBNAME = 'owncloud';
/** @var string default database table prefix */
- const DEFAULT_DBTABLEPREFIX = 'oc_';
+ public const DEFAULT_DBTABLEPREFIX = 'oc_';
/**
* @var array
@@ -106,9 +107,9 @@ class ConnectionFactory {
// \PDO::MYSQL_ATTR_FOUND_ROWS may not be defined, e.g. when the MySQL
// driver is missing. In this case, we won't be able to connect anyway.
if ($normalizedType === 'mysql' && defined('\PDO::MYSQL_ATTR_FOUND_ROWS')) {
- $result['driverOptions'] = array(
+ $result['driverOptions'] = [
\PDO::MYSQL_ATTR_FOUND_ROWS => true,
- );
+ ];
}
return $result;
}
diff --git a/lib/private/DB/MDB2SchemaManager.php b/lib/private/DB/MDB2SchemaManager.php
index bc05bd354f2..145272619b4 100644
--- a/lib/private/DB/MDB2SchemaManager.php
+++ b/lib/private/DB/MDB2SchemaManager.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -83,11 +84,11 @@ class MDB2SchemaManager {
$dispatcher = \OC::$server->getEventDispatcher();
if ($platform instanceof SqlitePlatform) {
return new SQLiteMigrator($this->conn, $random, $config, $dispatcher);
- } else if ($platform instanceof OraclePlatform) {
+ } elseif ($platform instanceof OraclePlatform) {
return new OracleMigrator($this->conn, $random, $config, $dispatcher);
- } else if ($platform instanceof MySqlPlatform) {
+ } elseif ($platform instanceof MySqlPlatform) {
return new MySQLMigrator($this->conn, $random, $config, $dispatcher);
- } else if ($platform instanceof PostgreSqlPlatform) {
+ } elseif ($platform instanceof PostgreSqlPlatform) {
return new PostgreSqlMigrator($this->conn, $random, $config, $dispatcher);
} else {
return new Migrator($this->conn, $random, $config, $dispatcher);
diff --git a/lib/private/DB/MDB2SchemaReader.php b/lib/private/DB/MDB2SchemaReader.php
index b18929cbd19..b371e1a16b2 100644
--- a/lib/private/DB/MDB2SchemaReader.php
+++ b/lib/private/DB/MDB2SchemaReader.php
@@ -3,7 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Jörn Friedrich Dreyer <jfd@butonic.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Oliver Gasser <oliver.gasser@gmail.com>
* @author Robin Appelman <robin@icewind.nl>
@@ -155,7 +155,7 @@ class MDB2SchemaReader {
* @throws \DomainException
*/
private function loadField($table, $xml) {
- $options = array( 'notnull' => false );
+ $options = [ 'notnull' => false ];
foreach ($xml->children() as $child) {
/**
* @var \SimpleXMLElement $child
@@ -247,7 +247,7 @@ class MDB2SchemaReader {
$length = $options['length'];
if ($length < 4) {
$type = 'smallint';
- } else if ($length > 4) {
+ } elseif ($length > 4) {
$type = 'bigint';
}
}
@@ -262,7 +262,7 @@ class MDB2SchemaReader {
$table->addColumn($name, $type, $options);
if (!empty($options['primary']) && $options['primary']) {
- $table->setPrimaryKey(array($name));
+ $table->setPrimaryKey([$name]);
}
}
}
@@ -274,7 +274,7 @@ class MDB2SchemaReader {
*/
private function loadIndex($table, $xml) {
$name = null;
- $fields = array();
+ $fields = [];
foreach ($xml->children() as $child) {
/**
* @var \SimpleXMLElement $child
@@ -344,5 +344,4 @@ class MDB2SchemaReader {
}
return (bool)$result;
}
-
}
diff --git a/lib/private/DB/MDB2SchemaWriter.php b/lib/private/DB/MDB2SchemaWriter.php
index cccab28f78e..2c1f6a5e545 100644
--- a/lib/private/DB/MDB2SchemaWriter.php
+++ b/lib/private/DB/MDB2SchemaWriter.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author tbelau666 <thomas.belau@gmx.de>
@@ -36,14 +37,14 @@ class MDB2SchemaWriter {
* @param \OC\DB\Connection $conn
* @return bool
*/
- static public function saveSchemaToFile($file, \OC\DB\Connection $conn) {
+ public static function saveSchemaToFile($file, \OC\DB\Connection $conn) {
$config = \OC::$server->getConfig();
$xml = new \SimpleXMLElement('<database/>');
$xml->addChild('name', $config->getSystemValue('dbname', 'owncloud'));
$xml->addChild('create', 'true');
$xml->addChild('overwrite', 'false');
- if($config->getSystemValue('dbtype', 'sqlite') === 'mysql' && $config->getSystemValue('mysql.utf8mb4', false)) {
+ if ($config->getSystemValue('dbtype', 'sqlite') === 'mysql' && $config->getSystemValue('mysql.utf8mb4', false)) {
$xml->addChild('charset', 'utf8mb4');
} else {
$xml->addChild('charset', 'utf8');
@@ -71,13 +72,13 @@ class MDB2SchemaWriter {
private static function saveTable($table, $xml) {
$xml->addChild('name', $table->getName());
$declaration = $xml->addChild('declaration');
- foreach($table->getColumns() as $column) {
+ foreach ($table->getColumns() as $column) {
self::saveColumn($column, $declaration->addChild('field'));
}
- foreach($table->getIndexes() as $index) {
+ foreach ($table->getIndexes() as $index) {
if ($index->getName() == 'PRIMARY') {
$autoincrement = false;
- foreach($index->getColumns() as $column) {
+ foreach ($index->getColumns() as $column) {
if ($table->getColumn($column)->getAutoincrement()) {
$autoincrement = true;
}
@@ -96,7 +97,7 @@ class MDB2SchemaWriter {
*/
private static function saveColumn($column, $xml) {
$xml->addChild('name', $column->getName());
- switch($column->getType()) {
+ switch ($column->getType()) {
case 'SmallInt':
case 'Integer':
case 'BigInt':
@@ -116,8 +117,7 @@ class MDB2SchemaWriter {
$length = '4';
if ($column->getType() == 'SmallInt') {
$length = '2';
- }
- elseif ($column->getType() == 'BigInt') {
+ } elseif ($column->getType() == 'BigInt') {
$length = '8';
}
$xml->addChild('length', $length);
@@ -165,15 +165,13 @@ class MDB2SchemaWriter {
$xml->addChild('name', $index->getName());
if ($index->isPrimary()) {
$xml->addChild('primary', 'true');
- }
- elseif ($index->isUnique()) {
+ } elseif ($index->isUnique()) {
$xml->addChild('unique', 'true');
}
- foreach($index->getColumns() as $column) {
+ foreach ($index->getColumns() as $column) {
$field = $xml->addChild('field');
$field->addChild('name', $column);
$field->addChild('sorting', 'ascending');
-
}
}
diff --git a/lib/private/DB/MigrationException.php b/lib/private/DB/MigrationException.php
index 9e758f4e860..76d769e08be 100644
--- a/lib/private/DB/MigrationException.php
+++ b/lib/private/DB/MigrationException.php
@@ -23,7 +23,6 @@
namespace OC\DB;
-
class MigrationException extends \Exception {
private $table;
diff --git a/lib/private/DB/MigrationService.php b/lib/private/DB/MigrationService.php
index 9f5b5bfe72b..6685c1917f5 100644
--- a/lib/private/DB/MigrationService.php
+++ b/lib/private/DB/MigrationService.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com>
* @copyright Copyright (c) 2017, ownCloud GmbH
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -97,7 +98,7 @@ class MigrationService {
foreach ($info['dependencies']['database'] as $database) {
if (\is_string($database) && $database === 'oci') {
$this->checkOracle = true;
- } else if (\is_array($database) && isset($database['@value']) && $database['@value'] === 'oci') {
+ } elseif (\is_array($database) && isset($database['@value']) && $database['@value'] === 'oci') {
$this->checkOracle = true;
}
}
@@ -159,7 +160,6 @@ class MigrationService {
// Recreate the schema after the table was dropped.
$schema = new SchemaWrapper($this->connection);
-
} catch (SchemaException $e) {
// Table not found, no need to panic, we will create it.
}
@@ -329,7 +329,7 @@ class MigrationService {
* @return mixed|null|string
*/
public function getMigration($alias) {
- switch($alias) {
+ switch ($alias) {
case 'current':
return $this->getCurrentVersion();
case 'next':
@@ -468,12 +468,12 @@ class MigrationService {
$instance = $this->createInstance($version);
if (!$schemaOnly) {
- $instance->preSchemaChange($this->output, function() {
+ $instance->preSchemaChange($this->output, function () {
return new SchemaWrapper($this->connection);
}, ['tablePrefix' => $this->connection->getPrefix()]);
}
- $toSchema = $instance->changeSchema($this->output, function() {
+ $toSchema = $instance->changeSchema($this->output, function () {
return new SchemaWrapper($this->connection);
}, ['tablePrefix' => $this->connection->getPrefix()]);
@@ -488,7 +488,7 @@ class MigrationService {
}
if (!$schemaOnly) {
- $instance->postSchemaChange($this->output, function() {
+ $instance->postSchemaChange($this->output, function () {
return new SchemaWrapper($this->connection);
}, ['tablePrefix' => $this->connection->getPrefix()]);
}
@@ -538,11 +538,11 @@ class MigrationService {
if ($isUsingDefaultName) {
$sequenceName = $table->getName() . '_' . implode('_', $primaryKey->getColumns()) . '_seq';
- $sequences = array_filter($sequences, function(Sequence $sequence) use ($sequenceName) {
+ $sequences = array_filter($sequences, function (Sequence $sequence) use ($sequenceName) {
return $sequence->getName() !== $sequenceName;
});
}
- } else if ($this->connection->getDatabasePlatform() instanceof OraclePlatform) {
+ } elseif ($this->connection->getDatabasePlatform() instanceof OraclePlatform) {
$defaultName = $table->getName() . '_seq';
$isUsingDefaultName = strtolower($defaultName) === $indexName;
}
diff --git a/lib/private/DB/Migrator.php b/lib/private/DB/Migrator.php
index 8b1621a5f55..2ea365ab294 100644
--- a/lib/private/DB/Migrator.php
+++ b/lib/private/DB/Migrator.php
@@ -155,7 +155,7 @@ class Migrator {
$tmpTable = $this->renameTableSchema($table, $tmpName);
$schemaConfig = new SchemaConfig();
$schemaConfig->setName($this->connection->getDatabase());
- $schema = new Schema(array($tmpTable), array(), $schemaConfig);
+ $schema = new Schema([$tmpTable], [], $schemaConfig);
try {
$this->applySchema($schema);
@@ -180,7 +180,7 @@ class Migrator {
* @var \Doctrine\DBAL\Schema\Index[] $indexes
*/
$indexes = $table->getIndexes();
- $newIndexes = array();
+ $newIndexes = [];
foreach ($indexes as $index) {
if ($index->isPrimary()) {
// do not rename primary key
@@ -193,7 +193,7 @@ class Migrator {
}
// foreign keys are not supported so we just set it to an empty array
- return new Table($newName, $table->getColumns(), $newIndexes, array(), 0, $table->getOptions());
+ return new Table($newName, $table->getColumns(), $newIndexes, [], 0, $table->getOptions());
}
public function createSchema() {
@@ -302,14 +302,14 @@ class Migrator {
if ($this->noEmit) {
return;
}
- if(is_null($this->dispatcher)) {
+ if (is_null($this->dispatcher)) {
return;
}
$this->dispatcher->dispatch('\OC\DB\Migrator::executeSql', new GenericEvent($sql, [$step+1, $max]));
}
private function emitCheckStep($tableName, $step, $max) {
- if(is_null($this->dispatcher)) {
+ if (is_null($this->dispatcher)) {
return;
}
$this->dispatcher->dispatch('\OC\DB\Migrator::checkTable', new GenericEvent($tableName, [$step+1, $max]));
diff --git a/lib/private/DB/MissingColumnInformation.php b/lib/private/DB/MissingColumnInformation.php
new file mode 100644
index 00000000000..d1c81c2e199
--- /dev/null
+++ b/lib/private/DB/MissingColumnInformation.php
@@ -0,0 +1,42 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2020 Joas Schilling <coding@schilljs.com>
+ *
+ * @author 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 OC\DB;
+
+class MissingColumnInformation {
+ private $listOfMissingColumns = [];
+
+ public function addHintForMissingColumn(string $tableName, string $columnName): void {
+ $this->listOfMissingColumns[] = [
+ 'tableName' => $tableName,
+ 'columnName' => $columnName,
+ ];
+ }
+
+ public function getListOfMissingColumns(): array {
+ return $this->listOfMissingColumns;
+ }
+}
diff --git a/lib/private/DB/MissingIndexInformation.php b/lib/private/DB/MissingIndexInformation.php
index ae8be7934d9..04853dcac2d 100644
--- a/lib/private/DB/MissingIndexInformation.php
+++ b/lib/private/DB/MissingIndexInformation.php
@@ -28,7 +28,6 @@ declare(strict_types=1);
namespace OC\DB;
class MissingIndexInformation {
-
private $listOfMissingIndexes = [];
public function addHintForMissingSubject(string $tableName, string $indexName) {
diff --git a/lib/private/DB/MySQLMigrator.php b/lib/private/DB/MySQLMigrator.php
index 73122fb0715..58c54683a3a 100644
--- a/lib/private/DB/MySQLMigrator.php
+++ b/lib/private/DB/MySQLMigrator.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -52,25 +53,24 @@ class MySQLMigrator extends Migrator {
return $schemaDiff;
}
- /**
- * Speed up migration test by disabling autocommit and unique indexes check
- *
- * @param \Doctrine\DBAL\Schema\Table $table
- * @throws \OC\DB\MigrationException
- */
- protected function checkTableMigrate(Table $table) {
- $this->connection->exec('SET autocommit=0');
- $this->connection->exec('SET unique_checks=0');
-
- try {
- parent::checkTableMigrate($table);
- } catch (\Exception $e) {
- $this->connection->exec('SET unique_checks=1');
- $this->connection->exec('SET autocommit=1');
- throw new MigrationException($table->getName(), $e->getMessage());
- }
- $this->connection->exec('SET unique_checks=1');
- $this->connection->exec('SET autocommit=1');
- }
+ /**
+ * Speed up migration test by disabling autocommit and unique indexes check
+ *
+ * @param \Doctrine\DBAL\Schema\Table $table
+ * @throws \OC\DB\MigrationException
+ */
+ protected function checkTableMigrate(Table $table) {
+ $this->connection->exec('SET autocommit=0');
+ $this->connection->exec('SET unique_checks=0');
+ try {
+ parent::checkTableMigrate($table);
+ } catch (\Exception $e) {
+ $this->connection->exec('SET unique_checks=1');
+ $this->connection->exec('SET autocommit=1');
+ throw new MigrationException($table->getName(), $e->getMessage());
+ }
+ $this->connection->exec('SET unique_checks=1');
+ $this->connection->exec('SET autocommit=1');
+ }
}
diff --git a/lib/private/DB/MySqlTools.php b/lib/private/DB/MySqlTools.php
index 69d95d4eed6..007388d5615 100644
--- a/lib/private/DB/MySqlTools.php
+++ b/lib/private/DB/MySqlTools.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2017, ownCloud GmbH
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
@@ -26,8 +27,8 @@ namespace OC\DB;
use OCP\IDBConnection;
/**
-* Various MySQL specific helper functions.
-*/
+ * Various MySQL specific helper functions.
+ */
class MySqlTools {
/**
diff --git a/lib/private/DB/OCSqlitePlatform.php b/lib/private/DB/OCSqlitePlatform.php
index 5649b14d233..be33629e885 100644
--- a/lib/private/DB/OCSqlitePlatform.php
+++ b/lib/private/DB/OCSqlitePlatform.php
@@ -23,5 +23,4 @@
namespace OC\DB;
class OCSqlitePlatform extends \Doctrine\DBAL\Platforms\SqlitePlatform {
-
}
diff --git a/lib/private/DB/OracleConnection.php b/lib/private/DB/OracleConnection.php
index 236d462b02c..b53ee850149 100644
--- a/lib/private/DB/OracleConnection.php
+++ b/lib/private/DB/OracleConnection.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -33,7 +34,7 @@ class OracleConnection extends Connection {
private function quoteKeys(array $data) {
$return = [];
$c = $this->getDatabasePlatform()->getIdentifierQuoteCharacter();
- foreach($data as $key => $value) {
+ foreach ($data as $key => $value) {
if ($key[0] !== $c) {
$return[$this->quoteIdentifier($key)] = $value;
} else {
@@ -46,7 +47,7 @@ class OracleConnection extends Connection {
/**
* {@inheritDoc}
*/
- public function insert($tableName, array $data, array $types = array()) {
+ public function insert($tableName, array $data, array $types = []) {
if ($tableName[0] !== $this->getDatabasePlatform()->getIdentifierQuoteCharacter()) {
$tableName = $this->quoteIdentifier($tableName);
}
@@ -57,7 +58,7 @@ class OracleConnection extends Connection {
/**
* {@inheritDoc}
*/
- public function update($tableName, array $data, array $identifier, array $types = array()) {
+ public function update($tableName, array $data, array $identifier, array $types = []) {
if ($tableName[0] !== $this->getDatabasePlatform()->getIdentifierQuoteCharacter()) {
$tableName = $this->quoteIdentifier($tableName);
}
@@ -69,7 +70,7 @@ class OracleConnection extends Connection {
/**
* {@inheritDoc}
*/
- public function delete($tableExpression, array $identifier, array $types = array()) {
+ public function delete($tableExpression, array $identifier, array $types = []) {
if ($tableExpression[0] !== $this->getDatabasePlatform()->getIdentifierQuoteCharacter()) {
$tableExpression = $this->quoteIdentifier($tableExpression);
}
@@ -86,7 +87,7 @@ class OracleConnection extends Connection {
$table = $this->tablePrefix . trim($table);
$table = $this->quoteIdentifier($table);
$schema = $this->getSchemaManager();
- if($schema->tablesExist(array($table))) {
+ if ($schema->tablesExist([$table])) {
$schema->dropTable($table);
}
}
@@ -97,10 +98,10 @@ class OracleConnection extends Connection {
* @param string $table table name without the prefix
* @return bool
*/
- public function tableExists($table){
+ public function tableExists($table) {
$table = $this->tablePrefix . trim($table);
$table = $this->quoteIdentifier($table);
$schema = $this->getSchemaManager();
- return $schema->tablesExist(array($table));
+ return $schema->tablesExist([$table]);
}
}
diff --git a/lib/private/DB/OracleMigrator.php b/lib/private/DB/OracleMigrator.php
index 7695532a4b7..cad5390f092 100644
--- a/lib/private/DB/OracleMigrator.php
+++ b/lib/private/DB/OracleMigrator.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -77,7 +78,7 @@ class OracleMigrator extends Migrator {
return new Index(
//TODO migrate existing uppercase indexes, then $this->connection->quoteIdentifier($index->getName()),
$index->getName(),
- array_map(function($columnName) {
+ array_map(function ($columnName) {
return $this->connection->quoteIdentifier($columnName);
}, $index->getColumns()),
$index->isUnique(),
@@ -96,11 +97,11 @@ class OracleMigrator extends Migrator {
*/
protected function quoteForeignKeyConstraint($fkc) {
return new ForeignKeyConstraint(
- array_map(function($columnName) {
+ array_map(function ($columnName) {
return $this->connection->quoteIdentifier($columnName);
}, $fkc->getLocalColumns()),
$this->connection->quoteIdentifier($fkc->getForeignTableName()),
- array_map(function($columnName) {
+ array_map(function ($columnName) {
return $this->connection->quoteIdentifier($columnName);
}, $fkc->getForeignColumns()),
$fkc->getName(),
@@ -118,16 +119,16 @@ class OracleMigrator extends Migrator {
$schemaDiff = parent::getDiff($targetSchema, $connection);
// oracle forces us to quote the identifiers
- $schemaDiff->newTables = array_map(function(Table $table) {
+ $schemaDiff->newTables = array_map(function (Table $table) {
return new Table(
$this->connection->quoteIdentifier($table->getName()),
- array_map(function(Column $column) {
+ array_map(function (Column $column) {
return $this->quoteColumn($column);
}, $table->getColumns()),
- array_map(function(Index $index) {
+ array_map(function (Index $index) {
return $this->quoteIndex($index);
}, $table->getIndexes()),
- array_map(function(ForeignKeyConstraint $fck) {
+ array_map(function (ForeignKeyConstraint $fck) {
return $this->quoteForeignKeyConstraint($fck);
}, $table->getForeignKeys()),
0,
@@ -135,7 +136,7 @@ class OracleMigrator extends Migrator {
);
}, $schemaDiff->newTables);
- $schemaDiff->removedTables = array_map(function(Table $table) {
+ $schemaDiff->removedTables = array_map(function (Table $table) {
return new Table(
$this->connection->quoteIdentifier($table->getName()),
$table->getColumns(),
@@ -149,7 +150,7 @@ class OracleMigrator extends Migrator {
foreach ($schemaDiff->changedTables as $tableDiff) {
$tableDiff->name = $this->connection->quoteIdentifier($tableDiff->name);
- $tableDiff->addedColumns = array_map(function(Column $column) {
+ $tableDiff->addedColumns = array_map(function (Column $column) {
return $this->quoteColumn($column);
}, $tableDiff->addedColumns);
@@ -163,39 +164,39 @@ class OracleMigrator extends Migrator {
return count($column->changedProperties) > 0;
});
- $tableDiff->removedColumns = array_map(function(Column $column) {
+ $tableDiff->removedColumns = array_map(function (Column $column) {
return $this->quoteColumn($column);
}, $tableDiff->removedColumns);
- $tableDiff->renamedColumns = array_map(function(Column $column) {
+ $tableDiff->renamedColumns = array_map(function (Column $column) {
return $this->quoteColumn($column);
}, $tableDiff->renamedColumns);
- $tableDiff->addedIndexes = array_map(function(Index $index) {
+ $tableDiff->addedIndexes = array_map(function (Index $index) {
return $this->quoteIndex($index);
}, $tableDiff->addedIndexes);
- $tableDiff->changedIndexes = array_map(function(Index $index) {
+ $tableDiff->changedIndexes = array_map(function (Index $index) {
return $this->quoteIndex($index);
}, $tableDiff->changedIndexes);
- $tableDiff->removedIndexes = array_map(function(Index $index) {
+ $tableDiff->removedIndexes = array_map(function (Index $index) {
return $this->quoteIndex($index);
}, $tableDiff->removedIndexes);
- $tableDiff->renamedIndexes = array_map(function(Index $index) {
+ $tableDiff->renamedIndexes = array_map(function (Index $index) {
return $this->quoteIndex($index);
}, $tableDiff->renamedIndexes);
- $tableDiff->addedForeignKeys = array_map(function(ForeignKeyConstraint $fkc) {
+ $tableDiff->addedForeignKeys = array_map(function (ForeignKeyConstraint $fkc) {
return $this->quoteForeignKeyConstraint($fkc);
}, $tableDiff->addedForeignKeys);
- $tableDiff->changedForeignKeys = array_map(function(ForeignKeyConstraint $fkc) {
+ $tableDiff->changedForeignKeys = array_map(function (ForeignKeyConstraint $fkc) {
return $this->quoteForeignKeyConstraint($fkc);
}, $tableDiff->changedForeignKeys);
- $tableDiff->removedForeignKeys = array_map(function(ForeignKeyConstraint $fkc) {
+ $tableDiff->removedForeignKeys = array_map(function (ForeignKeyConstraint $fkc) {
return $this->quoteForeignKeyConstraint($fkc);
}, $tableDiff->removedForeignKeys);
}
@@ -228,5 +229,4 @@ class OracleMigrator extends Migrator {
protected function getFilterExpression() {
return '/^"' . preg_quote($this->config->getSystemValue('dbtableprefix', 'oc_')) . '/';
}
-
}
diff --git a/lib/private/DB/PgSqlTools.php b/lib/private/DB/PgSqlTools.php
index d98116292a4..724344ac2a1 100644
--- a/lib/private/DB/PgSqlTools.php
+++ b/lib/private/DB/PgSqlTools.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Andreas Fischer <bantu@owncloud.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author tbelau666 <thomas.belau@gmx.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -24,11 +25,12 @@
*/
namespace OC\DB;
+
use OCP\IConfig;
/**
-* Various PostgreSQL specific helper functions.
-*/
+ * Various PostgreSQL specific helper functions.
+ */
class PgSqlTools {
/** @var \OCP\IConfig */
@@ -42,11 +44,11 @@ class PgSqlTools {
}
/**
- * @brief Resynchronizes all sequences of a database after using INSERTs
- * without leaving out the auto-incremented column.
- * @param \OC\DB\Connection $conn
- * @return null
- */
+ * @brief Resynchronizes all sequences of a database after using INSERTs
+ * without leaving out the auto-incremented column.
+ * @param \OC\DB\Connection $conn
+ * @return null
+ */
public function resynchronizeDatabaseSequences(Connection $conn) {
$filterExpression = '/^' . preg_quote($this->config->getSystemValue('dbtableprefix', 'oc_')) . '/';
$databaseName = $conn->getDatabase();
@@ -57,10 +59,10 @@ class PgSqlTools {
$sqlInfo = 'SELECT table_schema, table_name, column_name
FROM information_schema.columns
WHERE column_default = ? AND table_catalog = ?';
- $sequenceInfo = $conn->fetchAssoc($sqlInfo, array(
+ $sequenceInfo = $conn->fetchAssoc($sqlInfo, [
"nextval('$sequenceName'::regclass)",
$databaseName
- ));
+ ]);
$tableName = $sequenceInfo['table_name'];
$columnName = $sequenceInfo['column_name'];
$sqlMaxId = "SELECT MAX($columnName) FROM $tableName";
diff --git a/lib/private/DB/QueryBuilder/CompositeExpression.php b/lib/private/DB/QueryBuilder/CompositeExpression.php
index ba5ee173352..512343662ad 100644
--- a/lib/private/DB/QueryBuilder/CompositeExpression.php
+++ b/lib/private/DB/QueryBuilder/CompositeExpression.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
*
* @license AGPL-3.0
@@ -44,7 +45,7 @@ class CompositeExpression implements ICompositeExpression, \Countable {
*
* @return \OCP\DB\QueryBuilder\ICompositeExpression
*/
- public function addMultiple(array $parts = array()) {
+ public function addMultiple(array $parts = []) {
$this->compositeExpression->addMultiple($parts);
return $this;
@@ -86,8 +87,7 @@ class CompositeExpression implements ICompositeExpression, \Countable {
*
* @return string
*/
- public function __toString()
- {
+ public function __toString() {
return (string) $this->compositeExpression;
}
}
diff --git a/lib/private/DB/QueryBuilder/ExpressionBuilder/MySqlExpressionBuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/MySqlExpressionBuilder.php
index 666e99e7f8e..899f9277439 100644
--- a/lib/private/DB/QueryBuilder/ExpressionBuilder/MySqlExpressionBuilder.php
+++ b/lib/private/DB/QueryBuilder/ExpressionBuilder/MySqlExpressionBuilder.php
@@ -24,7 +24,6 @@
namespace OC\DB\QueryBuilder\ExpressionBuilder;
-
use OC\DB\Connection;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
@@ -53,5 +52,4 @@ class MySqlExpressionBuilder extends ExpressionBuilder {
$y = $this->helper->quoteColumnName($y);
return $this->expressionBuilder->comparison($x, ' COLLATE ' . $this->charset . '_general_ci LIKE', $y);
}
-
}
diff --git a/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php
index 12719b2aaad..2aa007dba04 100644
--- a/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php
+++ b/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php
@@ -24,7 +24,6 @@
namespace OC\DB\QueryBuilder\ExpressionBuilder;
-
use OC\DB\QueryBuilder\QueryFunction;
use OCP\DB\QueryBuilder\ILiteral;
use OCP\DB\QueryBuilder\IParameter;
diff --git a/lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php
index a59cd591db0..141a93ff75a 100644
--- a/lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php
+++ b/lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php
@@ -24,7 +24,6 @@
namespace OC\DB\QueryBuilder\ExpressionBuilder;
-
use OC\DB\QueryBuilder\QueryFunction;
use OCP\DB\QueryBuilder\IQueryBuilder;
@@ -56,5 +55,4 @@ class PgSqlExpressionBuilder extends ExpressionBuilder {
$y = $this->helper->quoteColumnName($y);
return $this->expressionBuilder->comparison($x, 'ILIKE', $y);
}
-
}
diff --git a/lib/private/DB/QueryBuilder/ExpressionBuilder/SqliteExpressionBuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/SqliteExpressionBuilder.php
index b82b4d9eb3f..1fa0d79663a 100644
--- a/lib/private/DB/QueryBuilder/ExpressionBuilder/SqliteExpressionBuilder.php
+++ b/lib/private/DB/QueryBuilder/ExpressionBuilder/SqliteExpressionBuilder.php
@@ -23,7 +23,6 @@
namespace OC\DB\QueryBuilder\ExpressionBuilder;
-
class SqliteExpressionBuilder extends ExpressionBuilder {
/**
* @inheritdoc
diff --git a/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php b/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php
index 774769bfdbb..6d8e947c407 100644
--- a/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php
+++ b/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php
@@ -38,5 +38,4 @@ class SqliteFunctionBuilder extends FunctionBuilder {
public function least($x, $y) {
return new QueryFunction('MIN(' . $this->helper->quoteColumnName($x) . ', ' . $this->helper->quoteColumnName($y) . ')');
}
-
}
diff --git a/lib/private/DB/QueryBuilder/Literal.php b/lib/private/DB/QueryBuilder/Literal.php
index f2e169e7faf..02fd232ff0b 100644
--- a/lib/private/DB/QueryBuilder/Literal.php
+++ b/lib/private/DB/QueryBuilder/Literal.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
*
* @license AGPL-3.0
@@ -24,7 +25,7 @@ namespace OC\DB\QueryBuilder;
use OCP\DB\QueryBuilder\ILiteral;
-class Literal implements ILiteral{
+class Literal implements ILiteral {
/** @var mixed */
protected $literal;
diff --git a/lib/private/DB/QueryBuilder/QueryBuilder.php b/lib/private/DB/QueryBuilder/QueryBuilder.php
index c9fc3eb5f21..a2941950d5c 100644
--- a/lib/private/DB/QueryBuilder/QueryBuilder.php
+++ b/lib/private/DB/QueryBuilder/QueryBuilder.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Robin Appelman <robin@icewind.nl>
@@ -114,11 +115,11 @@ class QueryBuilder implements IQueryBuilder {
public function expr() {
if ($this->connection instanceof OracleConnection) {
return new OCIExpressionBuilder($this->connection, $this);
- } else if ($this->connection->getDatabasePlatform() instanceof PostgreSqlPlatform) {
+ } elseif ($this->connection->getDatabasePlatform() instanceof PostgreSqlPlatform) {
return new PgSqlExpressionBuilder($this->connection, $this);
- } else if ($this->connection->getDatabasePlatform() instanceof MySqlPlatform) {
+ } elseif ($this->connection->getDatabasePlatform() instanceof MySqlPlatform) {
return new MySqlExpressionBuilder($this->connection, $this);
- } else if ($this->connection->getDatabasePlatform() instanceof SqlitePlatform) {
+ } elseif ($this->connection->getDatabasePlatform() instanceof SqlitePlatform) {
return new SqliteExpressionBuilder($this->connection, $this);
} else {
return new ExpressionBuilder($this->connection, $this);
@@ -144,9 +145,9 @@ class QueryBuilder implements IQueryBuilder {
public function func() {
if ($this->connection instanceof OracleConnection) {
return new OCIFunctionBuilder($this->helper);
- } else if ($this->connection->getDatabasePlatform() instanceof SqlitePlatform) {
+ } elseif ($this->connection->getDatabasePlatform() instanceof SqlitePlatform) {
return new SqliteFunctionBuilder($this->helper);
- } else if ($this->connection->getDatabasePlatform() instanceof PostgreSqlPlatform) {
+ } elseif ($this->connection->getDatabasePlatform() instanceof PostgreSqlPlatform) {
return new PgSqlFunctionBuilder($this->helper);
} else {
return new FunctionBuilder($this->helper);
@@ -273,7 +274,7 @@ class QueryBuilder implements IQueryBuilder {
*
* @return $this This QueryBuilder instance.
*/
- public function setParameters(array $params, array $types = array()) {
+ public function setParameters(array $params, array $types = []) {
$this->queryBuilder->setParameters($params, $types);
return $this;
@@ -412,7 +413,6 @@ class QueryBuilder implements IQueryBuilder {
* @return $this This QueryBuilder instance.
*/
public function selectAlias($select, $alias) {
-
$this->queryBuilder->addSelect(
$this->helper->quoteColumnName($select) . ' AS ' . $this->helper->quoteColumnName($alias)
);
@@ -434,7 +434,6 @@ class QueryBuilder implements IQueryBuilder {
* @return $this This QueryBuilder instance.
*/
public function selectDistinct($select) {
-
$this->queryBuilder->addSelect(
'DISTINCT ' . $this->helper->quoteColumnName($select)
);
diff --git a/lib/private/DB/ReconnectWrapper.php b/lib/private/DB/ReconnectWrapper.php
index ebb4c56fc6a..9599d6b0fe6 100644
--- a/lib/private/DB/ReconnectWrapper.php
+++ b/lib/private/DB/ReconnectWrapper.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Robin Appelman <robin@icewind.nl>
*
* @license GNU AGPL version 3 or any later version
@@ -28,7 +29,7 @@ use Doctrine\DBAL\Configuration;
use Doctrine\DBAL\Driver;
class ReconnectWrapper extends \Doctrine\DBAL\Connection {
- const CHECK_CONNECTION_INTERVAL = 60;
+ public const CHECK_CONNECTION_INTERVAL = 60;
private $lastConnectionCheck = null;
diff --git a/lib/private/DB/SQLiteMigrator.php b/lib/private/DB/SQLiteMigrator.php
index bd9504a3fed..16f18be135e 100644
--- a/lib/private/DB/SQLiteMigrator.php
+++ b/lib/private/DB/SQLiteMigrator.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -43,10 +44,10 @@ class SQLiteMigrator extends Migrator {
$tmpFile = $this->buildTempDatabase();
copy($dbFile, $tmpFile);
- $connectionParams = array(
+ $connectionParams = [
'path' => $tmpFile,
'driver' => 'pdo_sqlite',
- );
+ ];
$conn = \Doctrine\DBAL\DriverManager::getConnection($connectionParams);
try {
$this->applySchema($targetSchema, $conn);
diff --git a/lib/private/DB/SQLiteSessionInit.php b/lib/private/DB/SQLiteSessionInit.php
index a34bd509091..0c53a0587f0 100644
--- a/lib/private/DB/SQLiteSessionInit.php
+++ b/lib/private/DB/SQLiteSessionInit.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -65,6 +66,6 @@ class SQLiteSessionInit implements EventSubscriber {
}
public function getSubscribedEvents() {
- return array(Events::postConnect);
+ return [Events::postConnect];
}
}
diff --git a/lib/private/DB/SchemaWrapper.php b/lib/private/DB/SchemaWrapper.php
index f7f204a564c..e42535d64ab 100644
--- a/lib/private/DB/SchemaWrapper.php
+++ b/lib/private/DB/SchemaWrapper.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
*
* @license GNU AGPL version 3 or any later version
@@ -64,7 +65,7 @@ class SchemaWrapper implements ISchemaWrapper {
*/
public function getTableNamesWithoutPrefix() {
$tableNames = $this->schema->getTableNames();
- return array_map(function($tableName) {
+ return array_map(function ($tableName) {
if (strpos($tableName, $this->connection->getPrefix()) === 0) {
return substr($tableName, strlen($this->connection->getPrefix()));
}
diff --git a/lib/private/DB/SetTransactionIsolationLevel.php b/lib/private/DB/SetTransactionIsolationLevel.php
index 0a65cbbf463..eb15bf11fbe 100644
--- a/lib/private/DB/SetTransactionIsolationLevel.php
+++ b/lib/private/DB/SetTransactionIsolationLevel.php
@@ -20,7 +20,7 @@ declare(strict_types=1);
* 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/>.
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
diff --git a/lib/private/Dashboard/DashboardManager.php b/lib/private/Dashboard/DashboardManager.php
index 3f2b04bb96d..4501e3cc544 100644
--- a/lib/private/Dashboard/DashboardManager.php
+++ b/lib/private/Dashboard/DashboardManager.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OC\Dashboard;
-
use OCP\Dashboard\Exceptions\DashboardAppNotAvailableException;
use OCP\Dashboard\IDashboardManager;
use OCP\Dashboard\Model\IWidgetConfig;
@@ -138,5 +137,4 @@ class DashboardManager implements IDashboardManager {
return $this->eventsService;
}
-
}
diff --git a/lib/private/DateTimeFormatter.php b/lib/private/DateTimeFormatter.php
index 4ff3e1e5eaf..45a1cbdb8f2 100644
--- a/lib/private/DateTimeFormatter.php
+++ b/lib/private/DateTimeFormatter.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author dartcafe <github@dartcafe.de>
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -80,7 +81,7 @@ class DateTimeFormatter implements \OCP\IDateTimeFormatter {
protected function getDateTime($timestamp, \DateTimeZone $timeZone = null) {
if ($timestamp === null) {
return new \DateTime('now', $timeZone);
- } else if (!$timestamp instanceof \DateTime) {
+ } elseif (!$timestamp instanceof \DateTime) {
$dateTime = new \DateTime('now', $timeZone);
$dateTime->setTimestamp($timestamp);
return $dateTime;
@@ -159,31 +160,31 @@ class DateTimeFormatter implements \OCP\IDateTimeFormatter {
if ($dateInterval->y == 0 && $dateInterval->m == 0 && $dateInterval->d == 0) {
return $l->t('today');
- } else if ($dateInterval->y == 0 && $dateInterval->m == 0 && $dateInterval->d == 1) {
+ } elseif ($dateInterval->y == 0 && $dateInterval->m == 0 && $dateInterval->d == 1) {
if ($timestamp > $baseTimestamp) {
return $l->t('tomorrow');
} else {
return $l->t('yesterday');
}
- } else if ($dateInterval->y == 0 && $dateInterval->m == 0) {
+ } elseif ($dateInterval->y == 0 && $dateInterval->m == 0) {
if ($timestamp > $baseTimestamp) {
return $l->n('in %n day', 'in %n days', $dateInterval->d);
} else {
return $l->n('%n day ago', '%n days ago', $dateInterval->d);
}
- } else if ($dateInterval->y == 0 && $dateInterval->m == 1) {
+ } elseif ($dateInterval->y == 0 && $dateInterval->m == 1) {
if ($timestamp > $baseTimestamp) {
return $l->t('next month');
} else {
return $l->t('last month');
}
- } else if ($dateInterval->y == 0) {
+ } elseif ($dateInterval->y == 0) {
if ($timestamp > $baseTimestamp) {
return $l->n('in %n month', 'in %n months', $dateInterval->m);
} else {
return $l->n('%n month ago', '%n months ago', $dateInterval->m);
}
- } else if ($dateInterval->y == 1) {
+ } elseif ($dateInterval->y == 1) {
if ($timestamp > $baseTimestamp) {
return $l->t('next year');
} else {
@@ -249,7 +250,7 @@ class DateTimeFormatter implements \OCP\IDateTimeFormatter {
} else {
return $l->n('%n hour ago', '%n hours ago', $diff->h);
}
- } else if ($diff->i > 0) {
+ } elseif ($diff->i > 0) {
if ($timestamp > $baseTimestamp) {
return $l->n('in %n minute', 'in %n minutes', $diff->i);
} else {
@@ -311,8 +312,8 @@ class DateTimeFormatter implements \OCP\IDateTimeFormatter {
$timeZone = $this->getTimeZone($timeZone);
$timestamp = $this->getDateTime($timestamp, $timeZone);
- return $l->l($type, $timestamp, array(
+ return $l->l($type, $timestamp, [
'width' => $format,
- ));
+ ]);
}
}
diff --git a/lib/private/DateTimeZone.php b/lib/private/DateTimeZone.php
index 23fb8ae272f..7bb4a861b15 100644
--- a/lib/private/DateTimeZone.php
+++ b/lib/private/DateTimeZone.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
*
@@ -24,7 +25,6 @@
namespace OC;
-
use OCP\IConfig;
use OCP\IDateTimeZone;
use OCP\ILogger;
@@ -120,7 +120,7 @@ class DateTimeZone implements IDateTimeZone {
* Get the default timezone of the server
*
* Falls back to UTC if it is not yet set.
- *
+ *
* @return string
*/
protected function getDefaultTimeZone() {
diff --git a/lib/private/Diagnostics/EventLogger.php b/lib/private/Diagnostics/EventLogger.php
index 0c058c30798..115a8ebba92 100644
--- a/lib/private/Diagnostics/EventLogger.php
+++ b/lib/private/Diagnostics/EventLogger.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Piotr Mrówczyński <mrow4a@yahoo.com>
* @author Robin Appelman <robin@icewind.nl>
@@ -41,7 +42,7 @@ class EventLogger implements IEventLogger {
* @inheritdoc
*/
public function start($id, $description) {
- if ($this->activated){
+ if ($this->activated) {
$this->events[$id] = new Event($id, $description, microtime(true));
}
}
diff --git a/lib/private/DirectEditing/Manager.php b/lib/private/DirectEditing/Manager.php
index 5e3f7755938..c3098fb1a97 100644
--- a/lib/private/DirectEditing/Manager.php
+++ b/lib/private/DirectEditing/Manager.php
@@ -4,6 +4,7 @@
*
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Julius Härtl <jus@bitgrid.net>
+ * @author Robin Appelman <robin@icewind.nl>
* @author Tobias Kaminsky <tobias@kaminsky.me>
*
* @license GNU AGPL version 3 or any later version
@@ -34,8 +35,6 @@ use OCP\DirectEditing\ACreateFromTemplate;
use OCP\DirectEditing\IEditor;
use \OCP\DirectEditing\IManager;
use OCP\DirectEditing\IToken;
-use OCP\DirectEditing\RegisterDirectEditorEvent;
-use OCP\EventDispatcher\IEventDispatcher;
use OCP\Files\File;
use OCP\Files\IRootFolder;
use OCP\Files\Node;
@@ -50,7 +49,6 @@ use function array_key_exists;
use function in_array;
class Manager implements IManager {
-
private const TOKEN_CLEANUP_TIME = 12 * 60 * 60 ;
public const TABLE_TOKENS = 'direct_edit';
@@ -173,7 +171,6 @@ class Manager implements IManager {
}
$editor = $this->getEditor($tokenObject->getEditor());
$this->accessToken($token);
-
} catch (\Throwable $throwable) {
$this->invalidateToken($token);
return new NotFoundResponse();
@@ -278,5 +275,4 @@ class Manager implements IManager {
}
return $files[0];
}
-
}
diff --git a/lib/private/DirectEditing/Token.php b/lib/private/DirectEditing/Token.php
index add6f5b471c..eb98f3c7123 100644
--- a/lib/private/DirectEditing/Token.php
+++ b/lib/private/DirectEditing/Token.php
@@ -23,7 +23,6 @@
namespace OC\DirectEditing;
-
use OCP\DirectEditing\IToken;
use OCP\Files\File;
@@ -72,5 +71,4 @@ class Token implements IToken {
public function getUser(): string {
return $this->data['user_id'];
}
-
}
diff --git a/lib/private/Encryption/DecryptAll.php b/lib/private/Encryption/DecryptAll.php
index f7351ec1bed..19bd2f81378 100644
--- a/lib/private/Encryption/DecryptAll.php
+++ b/lib/private/Encryption/DecryptAll.php
@@ -5,8 +5,10 @@
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Björn Schießle <bjoern@schiessle.org>
* @author Christian Jürges <christian@eqipe.ch>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
+ * @author sammo2828 <sammo2828@gmail.com>
* @author Vincent Petry <pvince81@owncloud.com>
*
* @license AGPL-3.0
@@ -81,7 +83,6 @@ class DecryptAll {
* @throws \Exception
*/
public function decryptAll(InputInterface $input, OutputInterface $output, $user = '') {
-
$this->input = $input;
$this->output = $output;
@@ -145,12 +146,10 @@ class DecryptAll {
* @param string $user which users files should be decrypted, default = all users
*/
protected function decryptAllUsersFiles($user = '') {
-
$this->output->writeln("\n");
$userList = [];
if ($user === '') {
-
$fetchUsersProgress = new ProgressBar($this->output);
$fetchUsersProgress->setFormat(" %message% \n [%bar%]");
$fetchUsersProgress->start();
@@ -195,7 +194,6 @@ class DecryptAll {
$progress->finish();
$this->output->writeln("\n\n");
-
}
/**
@@ -206,16 +204,15 @@ class DecryptAll {
* @param string $userCount
*/
protected function decryptUsersFiles($uid, ProgressBar $progress, $userCount) {
-
$this->setupUserFS($uid);
- $directories = array();
+ $directories = [];
$directories[] = '/' . $uid . '/files';
while ($root = array_pop($directories)) {
$content = $this->rootView->getDirectoryContent($root);
foreach ($content as $file) {
// only decrypt files owned by the user
- if($file->getStorage()->instanceOfStorage('OCA\Files_Sharing\SharedStorage')) {
+ if ($file->getStorage()->instanceOfStorage('OCA\Files_Sharing\SharedStorage')) {
continue;
}
$path = $root . '/' . $file['name'];
@@ -297,5 +294,4 @@ class DecryptAll {
\OC_Util::tearDownFS();
\OC_Util::setupFS($uid);
}
-
}
diff --git a/lib/private/Encryption/EncryptionWrapper.php b/lib/private/Encryption/EncryptionWrapper.php
index e5bc0e868bd..edbdc692b45 100644
--- a/lib/private/Encryption/EncryptionWrapper.php
+++ b/lib/private/Encryption/EncryptionWrapper.php
@@ -24,7 +24,6 @@
namespace OC\Encryption;
-
use OC\Files\Filesystem;
use OC\Files\Storage\Wrapper\Encryption;
use OC\Files\View;
@@ -83,7 +82,6 @@ class EncryptionWrapper {
];
if (!$storage->instanceOfStorage(Storage\IDisableEncryptionStorage::class)) {
-
$user = \OC::$server->getUserSession()->getUser();
$mountManager = Filesystem::getMountManager();
$uid = $user ? $user->getUID() : null;
@@ -120,5 +118,4 @@ class EncryptionWrapper {
return $storage;
}
}
-
}
diff --git a/lib/private/Encryption/Exceptions/DecryptionFailedException.php b/lib/private/Encryption/Exceptions/DecryptionFailedException.php
index 5542082bf4d..048732d62a9 100644
--- a/lib/private/Encryption/Exceptions/DecryptionFailedException.php
+++ b/lib/private/Encryption/Exceptions/DecryptionFailedException.php
@@ -26,5 +26,4 @@ namespace OC\Encryption\Exceptions;
use OCP\Encryption\Exceptions\GenericEncryptionException;
class DecryptionFailedException extends GenericEncryptionException {
-
}
diff --git a/lib/private/Encryption/Exceptions/EmptyEncryptionDataException.php b/lib/private/Encryption/Exceptions/EmptyEncryptionDataException.php
index dd976b22bda..a421914dcb2 100644
--- a/lib/private/Encryption/Exceptions/EmptyEncryptionDataException.php
+++ b/lib/private/Encryption/Exceptions/EmptyEncryptionDataException.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Clark Tomlinson <fallen013@gmail.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
@@ -25,6 +26,5 @@ namespace OC\Encryption\Exceptions;
use OCP\Encryption\Exceptions\GenericEncryptionException;
-class EmptyEncryptionDataException extends GenericEncryptionException{
-
+class EmptyEncryptionDataException extends GenericEncryptionException {
}
diff --git a/lib/private/Encryption/Exceptions/EncryptionFailedException.php b/lib/private/Encryption/Exceptions/EncryptionFailedException.php
index 2b1672c2cb6..405e2d5bb23 100644
--- a/lib/private/Encryption/Exceptions/EncryptionFailedException.php
+++ b/lib/private/Encryption/Exceptions/EncryptionFailedException.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Clark Tomlinson <fallen013@gmail.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
@@ -25,6 +26,5 @@ namespace OC\Encryption\Exceptions;
use OCP\Encryption\Exceptions\GenericEncryptionException;
-class EncryptionFailedException extends GenericEncryptionException{
-
+class EncryptionFailedException extends GenericEncryptionException {
}
diff --git a/lib/private/Encryption/Exceptions/EncryptionHeaderToLargeException.php b/lib/private/Encryption/Exceptions/EncryptionHeaderToLargeException.php
index 3a9b8d6d33d..c44ea9d7db0 100644
--- a/lib/private/Encryption/Exceptions/EncryptionHeaderToLargeException.php
+++ b/lib/private/Encryption/Exceptions/EncryptionHeaderToLargeException.php
@@ -26,9 +26,7 @@ namespace OC\Encryption\Exceptions;
use OCP\Encryption\Exceptions\GenericEncryptionException;
class EncryptionHeaderToLargeException extends GenericEncryptionException {
-
public function __construct() {
parent::__construct('max header size exceeded');
}
-
}
diff --git a/lib/private/Encryption/Exceptions/ModuleAlreadyExistsException.php b/lib/private/Encryption/Exceptions/ModuleAlreadyExistsException.php
index c9da35d9c5d..824dce48007 100644
--- a/lib/private/Encryption/Exceptions/ModuleAlreadyExistsException.php
+++ b/lib/private/Encryption/Exceptions/ModuleAlreadyExistsException.php
@@ -34,5 +34,4 @@ class ModuleAlreadyExistsException extends GenericEncryptionException {
public function __construct($id, $name) {
parent::__construct('Id "' . $id . '" already used by encryption module "' . $name . '"');
}
-
}
diff --git a/lib/private/Encryption/Exceptions/ModuleDoesNotExistsException.php b/lib/private/Encryption/Exceptions/ModuleDoesNotExistsException.php
index 841ead4ac16..24192e6e8d6 100644
--- a/lib/private/Encryption/Exceptions/ModuleDoesNotExistsException.php
+++ b/lib/private/Encryption/Exceptions/ModuleDoesNotExistsException.php
@@ -26,5 +26,4 @@ namespace OC\Encryption\Exceptions;
use OCP\Encryption\Exceptions\GenericEncryptionException;
class ModuleDoesNotExistsException extends GenericEncryptionException {
-
}
diff --git a/lib/private/Encryption/Exceptions/UnknownCipherException.php b/lib/private/Encryption/Exceptions/UnknownCipherException.php
index eb16f9c2fbc..7a8bd76d936 100644
--- a/lib/private/Encryption/Exceptions/UnknownCipherException.php
+++ b/lib/private/Encryption/Exceptions/UnknownCipherException.php
@@ -26,5 +26,4 @@ namespace OC\Encryption\Exceptions;
use OCP\Encryption\Exceptions\GenericEncryptionException;
class UnknownCipherException extends GenericEncryptionException {
-
}
diff --git a/lib/private/Encryption/File.php b/lib/private/Encryption/File.php
index 1c71ec7dd95..13879c02cdc 100644
--- a/lib/private/Encryption/File.php
+++ b/lib/private/Encryption/File.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -71,10 +72,10 @@ class File implements \OCP\Encryption\IFile {
list($owner, $ownerPath) = $this->util->getUidAndFilename($path);
// always add owner to the list of users with access to the file
- $userIds = array($owner);
+ $userIds = [$owner];
if (!$this->util->isFile($owner . '/' . $ownerPath)) {
- return array('users' => $userIds, 'public' => false);
+ return ['users' => $userIds, 'public' => false];
}
$ownerPath = substr($ownerPath, strlen('/files'));
@@ -121,7 +122,6 @@ class File implements \OCP\Encryption\IFile {
// Remove duplicate UIDs
$uniqueUserIds = array_unique($userIds);
- return array('users' => $uniqueUserIds, 'public' => $public);
+ return ['users' => $uniqueUserIds, 'public' => $public];
}
-
}
diff --git a/lib/private/Encryption/Keys/Storage.php b/lib/private/Encryption/Keys/Storage.php
index f71017bc4aa..cee32691261 100644
--- a/lib/private/Encryption/Keys/Storage.php
+++ b/lib/private/Encryption/Keys/Storage.php
@@ -4,6 +4,7 @@
*
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -36,7 +37,7 @@ use OCP\Encryption\Keys\IStorage;
class Storage implements IStorage {
// hidden file which indicate that the folder is a valid key storage
- const KEY_STORAGE_MARKER = '.oc_key_storage';
+ public const KEY_STORAGE_MARKER = '.oc_key_storage';
/** @var View */
private $view;
@@ -188,7 +189,6 @@ class Storage implements IStorage {
* @return string
*/
protected function constructUserKeyPath($encryptionModuleId, $keyId, $uid) {
-
if ($uid === null) {
$path = $this->root_dir . '/' . $this->encryption_base_dir . '/' . $encryptionModuleId . '/' . $keyId;
} else {
@@ -206,7 +206,6 @@ class Storage implements IStorage {
* @return string
*/
private function getKey($path) {
-
$key = '';
if ($this->view->file_exists($path)) {
@@ -250,7 +249,6 @@ class Storage implements IStorage {
* @return string
*/
private function getFileKeyDir($encryptionModuleId, $path) {
-
list($owner, $filename) = $this->util->getUidAndFilename($path);
// in case of system wide mount points the keys are stored directly in the data directory
@@ -271,7 +269,6 @@ class Storage implements IStorage {
* @return boolean
*/
public function renameKeys($source, $target) {
-
$sourcePath = $this->getPathToKeys($source);
$targetPath = $this->getPathToKeys($target);
@@ -294,7 +291,6 @@ class Storage implements IStorage {
* @return boolean
*/
public function copyKeys($source, $target) {
-
$sourcePath = $this->getPathToKeys($source);
$targetPath = $this->getPathToKeys($target);
@@ -375,5 +371,4 @@ class Storage implements IStorage {
}
}
}
-
}
diff --git a/lib/private/Encryption/Manager.php b/lib/private/Encryption/Manager.php
index 183db55c7ea..f160a16a995 100644
--- a/lib/private/Encryption/Manager.php
+++ b/lib/private/Encryption/Manager.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -68,7 +69,7 @@ class Manager implements IManager {
* @param ArrayCache $arrayCache
*/
public function __construct(IConfig $config, ILogger $logger, IL10N $l10n, View $rootView, Util $util, ArrayCache $arrayCache) {
- $this->encryptionModules = array();
+ $this->encryptionModules = [];
$this->config = $config;
$this->logger = $logger;
$this->l = $l10n;
@@ -83,7 +84,6 @@ class Manager implements IManager {
* @return bool true if enabled, false if not
*/
public function isEnabled() {
-
$installed = $this->config->getSystemValue('installed', false);
if (!$installed) {
return false;
@@ -100,7 +100,6 @@ class Manager implements IManager {
* @throws ServiceUnavailableException
*/
public function isReady() {
-
if ($this->isKeyStorageReady() === false) {
throw new ServiceUnavailableException('Key Storage is not ready');
}
@@ -127,7 +126,7 @@ class Manager implements IManager {
return true;
}
- /**
+ /**
* Registers an callback function which must return an encryption module instance
*
* @param string $id
@@ -136,7 +135,6 @@ class Manager implements IManager {
* @throws Exceptions\ModuleAlreadyExistsException
*/
public function registerEncryptionModule($id, $displayName, callable $callback) {
-
if (isset($this->encryptionModules[$id])) {
throw new Exceptions\ModuleAlreadyExistsException($id, $displayName);
}
@@ -212,7 +210,6 @@ class Manager implements IManager {
$message = 'No default encryption module defined';
throw new Exceptions\ModuleDoesNotExistsException($message);
}
-
}
/**
@@ -248,7 +245,7 @@ class Manager implements IManager {
// If encryption is disabled and there are no loaded modules it makes no sense to load the wrapper
if (!empty($this->encryptionModules) || $this->isEnabled()) {
$encryptionWrapper = new EncryptionWrapper($this->arrayCache, $this, $this->logger);
- Filesystem::addStorageWrapper('oc_encryption', array($encryptionWrapper, 'wrapStorage'), 2);
+ Filesystem::addStorageWrapper('oc_encryption', [$encryptionWrapper, 'wrapStorage'], 2);
}
}
@@ -259,7 +256,6 @@ class Manager implements IManager {
* @return bool
*/
protected function isKeyStorageReady() {
-
$rootDir = $this->util->getKeyStorageRoot();
// the default root is always valid
@@ -274,6 +270,4 @@ class Manager implements IManager {
return false;
}
-
-
}
diff --git a/lib/private/Encryption/Update.php b/lib/private/Encryption/Update.php
index 3bb7680989b..beb76a223b7 100644
--- a/lib/private/Encryption/Update.php
+++ b/lib/private/Encryption/Update.php
@@ -4,6 +4,7 @@
*
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
@@ -40,7 +41,7 @@ class Update {
/** @var \OC\Encryption\Util */
protected $util;
- /** @var \OC\Files\Mount\Manager */
+ /** @var \OC\Files\Mount\Manager */
protected $mountManager;
/** @var \OC\Encryption\Manager */
@@ -69,7 +70,6 @@ class Update {
File $file,
$uid
) {
-
$this->view = $view;
$this->util = $util;
$this->mountManager = $mountManager;
@@ -132,13 +132,13 @@ class Update {
public function postRename($params) {
$source = $params['oldpath'];
$target = $params['newpath'];
- if(
+ if (
$this->encryptionManager->isEnabled() &&
dirname($source) !== dirname($target)
) {
- list($owner, $ownerPath) = $this->getOwnerPath($target);
- $absPath = '/' . $owner . '/files/' . $ownerPath;
- $this->update($absPath);
+ list($owner, $ownerPath) = $this->getOwnerPath($target);
+ $absPath = '/' . $owner . '/files/' . $ownerPath;
+ $this->update($absPath);
}
}
@@ -158,7 +158,7 @@ class Update {
throw new \InvalidArgumentException('No file found for ' . $info->getId());
}
- return array($owner, $path);
+ return [$owner, $path];
}
/**
@@ -168,7 +168,6 @@ class Update {
* @throws Exceptions\ModuleDoesNotExistsException
*/
public function update($path) {
-
$encryptionModule = $this->encryptionManager->getEncryptionModule();
// if the encryption module doesn't encrypt the files on a per-user basis
@@ -181,7 +180,7 @@ class Update {
if ($this->view->is_dir($path)) {
$allFiles = $this->util->getAllFiles($path);
} else {
- $allFiles = array($path);
+ $allFiles = [$path];
}
@@ -191,5 +190,4 @@ class Update {
$encryptionModule->update($file, $this->uid, $usersSharing);
}
}
-
}
diff --git a/lib/private/Encryption/Util.php b/lib/private/Encryption/Util.php
index b173d1eae5c..8b3360c30e0 100644
--- a/lib/private/Encryption/Util.php
+++ b/lib/private/Encryption/Util.php
@@ -4,6 +4,7 @@
*
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jan-Christoph Borchardt <hey@jancborchardt.net>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -37,12 +38,11 @@ use OCP\IConfig;
use OCP\IUser;
class Util {
+ public const HEADER_START = 'HBEGIN';
+ public const HEADER_END = 'HEND';
+ public const HEADER_PADDING_CHAR = '-';
- const HEADER_START = 'HBEGIN';
- const HEADER_END = 'HEND';
- const HEADER_PADDING_CHAR = '-';
-
- const HEADER_ENCRYPTION_MODULE_KEY = 'oc_encryption_module';
+ public const HEADER_ENCRYPTION_MODULE_KEY = 'oc_encryption_module';
/**
* block size will always be 8192 for a PHP stream
@@ -88,7 +88,6 @@ class Util {
\OC\User\Manager $userManager,
\OC\Group\Manager $groupManager,
IConfig $config) {
-
$this->ocHeaderKeys = [
self::HEADER_ENCRYPTION_MODULE_KEY
];
@@ -164,8 +163,8 @@ class Util {
* @return array with list of files relative to the users files folder
*/
public function getAllFiles($dir) {
- $result = array();
- $dirList = array($dir);
+ $result = [];
+ $dirList = [$dir];
while ($dirList) {
$dir = array_pop($dirList);
@@ -178,7 +177,6 @@ class Util {
$result[] = $c->getPath();
}
}
-
}
return $result;
@@ -225,7 +223,6 @@ class Util {
* @throws \BadMethodCallException
*/
public function getUidAndFilename($path) {
-
$parts = explode('/', $path);
$uid = '';
if (count($parts) > 2) {
@@ -239,8 +236,7 @@ class Util {
$ownerPath = implode('/', array_slice($parts, 2));
- return array($uid, Filesystem::normalizePath($ownerPath));
-
+ return [$uid, Filesystem::normalizePath($ownerPath)];
}
/**
@@ -252,19 +248,17 @@ class Util {
public function stripPartialFileExtension($path) {
$extension = pathinfo($path, PATHINFO_EXTENSION);
- if ( $extension === 'part') {
-
+ if ($extension === 'part') {
$newLength = strlen($path) - 5; // 5 = strlen(".part")
$fPath = substr($path, 0, $newLength);
// if path also contains a transaction id, we remove it too
$extension = pathinfo($fPath, PATHINFO_EXTENSION);
- if(substr($extension, 0, 12) === 'ocTransferId') { // 12 = strlen("ocTransferId")
+ if (substr($extension, 0, 12) === 'ocTransferId') { // 12 = strlen("ocTransferId")
$newLength = strlen($fPath) - strlen($extension) -1;
$fPath = substr($fPath, 0, $newLength);
}
return $fPath;
-
} else {
return $path;
}
@@ -274,7 +268,7 @@ class Util {
$result = [];
if (in_array('all', $users)) {
$users = $this->userManager->search('', null, null);
- $result = array_map(function(IUser $user) {
+ $result = array_map(function (IUser $user) {
return $user->getUID();
}, $users);
} else {
@@ -325,7 +319,7 @@ class Util {
* @return boolean
*/
private function isMountPointApplicableToUser($mount, $uid) {
- $acceptedUids = array('all', $uid);
+ $acceptedUids = ['all', $uid];
// check if mount point is applicable for the user
$intersection = array_intersect($acceptedUids, $mount['applicable']['users']);
if (!empty($intersection)) {
@@ -371,7 +365,6 @@ class Util {
// detect user specific folders
if ($this->userManager->userExists($root[1])
&& in_array($root[2], $this->excludedPaths)) {
-
return true;
}
}
@@ -407,5 +400,4 @@ class Util {
public function getKeyStorageRoot() {
return $this->config->getAppValue('core', 'encryption_key_storage_root', '');
}
-
}
diff --git a/lib/private/EventDispatcher/EventDispatcher.php b/lib/private/EventDispatcher/EventDispatcher.php
index 4f83d15bffd..b81b4741306 100644
--- a/lib/private/EventDispatcher/EventDispatcher.php
+++ b/lib/private/EventDispatcher/EventDispatcher.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
*
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @license GNU AGPL version 3 or any later version
@@ -103,5 +104,4 @@ class EventDispatcher implements IEventDispatcher {
public function getSymfonyDispatcher(): SymfonyDispatcher {
return $this->dispatcher;
}
-
}
diff --git a/lib/private/EventDispatcher/ServiceEventListener.php b/lib/private/EventDispatcher/ServiceEventListener.php
index b10e3d534d6..a648884d6f7 100644
--- a/lib/private/EventDispatcher/ServiceEventListener.php
+++ b/lib/private/EventDispatcher/ServiceEventListener.php
@@ -75,5 +75,4 @@ final class ServiceEventListener {
$this->service->handle($event);
}
-
}
diff --git a/lib/private/EventDispatcher/SymfonyAdapter.php b/lib/private/EventDispatcher/SymfonyAdapter.php
index 4d473854962..b1a39a79131 100644
--- a/lib/private/EventDispatcher/SymfonyAdapter.php
+++ b/lib/private/EventDispatcher/SymfonyAdapter.php
@@ -147,5 +147,4 @@ class SymfonyAdapter implements EventDispatcherInterface {
public function hasListeners($eventName = null) {
return $this->eventDispatcher->getSymfonyDispatcher()->hasListeners($eventName);
}
-
}
diff --git a/lib/private/Federation/CloudFederationNotification.php b/lib/private/Federation/CloudFederationNotification.php
index c8ec13e1954..ad1d689dcd0 100644
--- a/lib/private/Federation/CloudFederationNotification.php
+++ b/lib/private/Federation/CloudFederationNotification.php
@@ -33,7 +33,6 @@ use OCP\Federation\ICloudFederationNotification;
* @since 14.0.0
*/
class CloudFederationNotification implements ICloudFederationNotification {
-
private $message = [];
/**
@@ -53,7 +52,6 @@ class CloudFederationNotification implements ICloudFederationNotification {
'providerId' => $providerId,
'notification' => $notification,
];
-
}
/**
diff --git a/lib/private/Federation/CloudFederationProviderManager.php b/lib/private/Federation/CloudFederationProviderManager.php
index cad72abaf79..459d82c5bfb 100644
--- a/lib/private/Federation/CloudFederationProviderManager.php
+++ b/lib/private/Federation/CloudFederationProviderManager.php
@@ -96,7 +96,6 @@ class CloudFederationProviderManager implements ICloudFederationProviderManager
'displayName' => $displayName,
'callback' => $callback,
];
-
}
/**
@@ -152,7 +151,6 @@ class CloudFederationProviderManager implements ICloudFederationProviderManager
$result = json_decode($response->getBody(), true);
return (is_array($result)) ? $result : [];
}
-
} catch (\Exception $e) {
// if flat re-sharing is not supported by the remote server
// we re-throw the exception and fall back to the old behaviour.
@@ -164,7 +162,6 @@ class CloudFederationProviderManager implements ICloudFederationProviderManager
}
return false;
-
}
/**
@@ -214,7 +211,6 @@ class CloudFederationProviderManager implements ICloudFederationProviderManager
* @return string
*/
protected function getOCMEndPoint($url) {
-
if (isset($this->ocmEndPoints[$url])) {
return $this->ocmEndPoints[$url];
}
@@ -240,6 +236,4 @@ class CloudFederationProviderManager implements ICloudFederationProviderManager
$this->ocmEndPoints[$url] = '';
return '';
}
-
-
}
diff --git a/lib/private/Federation/CloudFederationShare.php b/lib/private/Federation/CloudFederationShare.php
index 50a01d46b3f..16f4216d65e 100644
--- a/lib/private/Federation/CloudFederationShare.php
+++ b/lib/private/Federation/CloudFederationShare.php
@@ -26,7 +26,6 @@ namespace OC\Federation;
use OCP\Federation\ICloudFederationShare;
class CloudFederationShare implements ICloudFederationShare {
-
private $share = [
'shareWith' => '',
'shareType' => '',
@@ -85,7 +84,6 @@ class CloudFederationShare implements ICloudFederationShare {
]);
$this->setShareType($shareType);
$this->setResourceType($resourceType);
-
}
/**
diff --git a/lib/private/Federation/CloudIdManager.php b/lib/private/Federation/CloudIdManager.php
index 9c877c5efc7..a5ebc98c1fd 100644
--- a/lib/private/Federation/CloudIdManager.php
+++ b/lib/private/Federation/CloudIdManager.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2017, Robin Appelman <robin@icewind.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -51,9 +52,9 @@ class CloudIdManager implements ICloudIdManager {
if ($posSlash === false && $posColon === false) {
$invalidPos = \strlen($id);
- } else if ($posSlash === false) {
+ } elseif ($posSlash === false) {
$invalidPos = $posColon;
- } else if ($posColon === false) {
+ } elseif ($posColon === false) {
$invalidPos = $posSlash;
} else {
$invalidPos = min($posSlash, $posColon);
diff --git a/lib/private/Files/AppData/AppData.php b/lib/private/Files/AppData/AppData.php
index 32f97034050..5f917afe207 100644
--- a/lib/private/Files/AppData/AppData.php
+++ b/lib/private/Files/AppData/AppData.php
@@ -65,7 +65,6 @@ class AppData implements IAppData {
public function __construct(IRootFolder $rootFolder,
SystemConfig $systemConfig,
string $appId) {
-
$this->rootFolder = $rootFolder;
$this->config = $systemConfig;
$this->appId = $appId;
diff --git a/lib/private/Files/AppData/Factory.php b/lib/private/Files/AppData/Factory.php
index 085c17f3589..4801b241c0b 100644
--- a/lib/private/Files/AppData/Factory.php
+++ b/lib/private/Files/AppData/Factory.php
@@ -42,7 +42,6 @@ class Factory {
public function __construct(IRootFolder $rootFolder,
SystemConfig $systemConfig) {
-
$this->rootFolder = $rootFolder;
$this->config = $systemConfig;
}
diff --git a/lib/private/Files/Cache/AbstractCacheEvent.php b/lib/private/Files/Cache/AbstractCacheEvent.php
index 741c06f3490..a4029476fa5 100644
--- a/lib/private/Files/Cache/AbstractCacheEvent.php
+++ b/lib/private/Files/Cache/AbstractCacheEvent.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2019 Robin Appelman <robin@icewind.nl>
*
+ * @author Joas Schilling <coding@schilljs.com>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
diff --git a/lib/private/Files/Cache/Cache.php b/lib/private/Files/Cache/Cache.php
index 92e81cd0f07..de807421d26 100644
--- a/lib/private/Files/Cache/Cache.php
+++ b/lib/private/Files/Cache/Cache.php
@@ -6,6 +6,7 @@
* @author Ari Selseng <ari@selseng.net>
* @author Artem Kochnev <MrJeos@gmail.com>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Florin Peter <github@florin-peter.de>
* @author Frédéric Fortier <frederic.fortier@oronospolytechnique.com>
* @author Jens-Christian Fischer <jens-christian.fischer@switch.ch>
@@ -155,7 +156,7 @@ class Cache implements ICache {
//merge partial data
if (!$data and is_string($file) and isset($this->partial[$file])) {
return $this->partial[$file];
- } else if (!$data) {
+ } elseif (!$data) {
return $data;
} else {
return self::cacheEntryFromData($data, $this->mimetypeLoader);
@@ -274,7 +275,9 @@ class Cache implements ICache {
}
$data['path'] = $file;
- $data['parent'] = $this->getParentId($file);
+ if (!isset($data['parent'])) {
+ $data['parent'] = $this->getParentId($file);
+ }
$data['name'] = basename($file);
[$values, $extensionValues] = $this->normalizeData($data);
@@ -307,6 +310,10 @@ class Cache implements ICache {
}
} catch (UniqueConstraintViolationException $e) {
// entry exists already
+ if ($this->connection->inTransaction()) {
+ $this->connection->commit();
+ $this->connection->beginTransaction();
+ }
}
// The file was created in the mean time
@@ -325,7 +332,6 @@ class Cache implements ICache {
* @param array $data [$key => $value] the metadata to update, only the fields provided in the array will be updated, non-provided values will remain unchanged
*/
public function update($id, array $data) {
-
if (isset($data['path'])) {
// normalize path
$data['path'] = $this->normalize($data['path']);
@@ -419,14 +425,14 @@ class Cache implements ICache {
if (array_search($name, $fields) !== false) {
if ($name === 'path') {
$params['path_hash'] = md5($value);
- } else if ($name === 'mimetype') {
+ } elseif ($name === 'mimetype') {
$params['mimepart'] = $this->mimetypeLoader->getId(substr($value, 0, strpos($value, '/')));
$value = $this->mimetypeLoader->getId($value);
- } else if ($name === 'storage_mtime') {
+ } elseif ($name === 'storage_mtime') {
if (!$doNotCopyStorageMTime && !isset($data['mtime'])) {
$params['mtime'] = $value;
}
- } else if ($name === 'encrypted') {
+ } elseif ($name === 'encrypted') {
if (isset($data['encryptedVersion'])) {
$value = $data['encryptedVersion'];
} else {
@@ -548,7 +554,7 @@ class Cache implements ICache {
*/
private function removeChildren(ICacheEntry $entry) {
$children = $this->getFolderContentsById($entry->getId());
- $childIds = array_map(function(ICacheEntry $cacheEntry) {
+ $childIds = array_map(function (ICacheEntry $cacheEntry) {
return $cacheEntry->getId();
}, $children);
$childFolders = array_filter($children, function ($child) {
@@ -609,8 +615,8 @@ class Cache implements ICache {
$sourceId = $sourceData['fileid'];
$newParentId = $this->getParentId($targetPath);
- list($sourceStorageId, $sourcePath) = $sourceCache->getMoveInfo($sourcePath);
- list($targetStorageId, $targetPath) = $this->getMoveInfo($targetPath);
+ [$sourceStorageId, $sourcePath] = $sourceCache->getMoveInfo($sourcePath);
+ [$targetStorageId, $targetPath] = $this->getMoveInfo($targetPath);
if (is_null($sourceStorageId) || $sourceStorageId === false) {
throw new \Exception('Invalid source storage id: ' . $sourceStorageId);
@@ -880,7 +886,7 @@ class Cache implements ICache {
->whereParent($id);
if ($row = $query->execute()->fetch()) {
- list($sum, $min) = array_values($row);
+ [$sum, $min] = array_values($row);
$sum = 0 + $sum;
$min = 0 + $min;
if ($min === -1) {
@@ -958,7 +964,7 @@ class Cache implements ICache {
* @return array first element holding the storage id, second the path
* @deprecated use getPathById() instead
*/
- static public function getById($id) {
+ public static function getById($id) {
$query = \OC::$server->getDatabaseConnection()->getQueryBuilder();
$query->select('path', 'storage')
->from('filecache')
@@ -984,7 +990,6 @@ class Cache implements ICache {
* @return string
*/
public function normalize($path) {
-
return trim(\OC_Util::normalizeUnicode($path), '/');
}
}
diff --git a/lib/private/Files/Cache/HomeCache.php b/lib/private/Files/Cache/HomeCache.php
index ec3c8df519d..b86a31fe4d1 100644
--- a/lib/private/Files/Cache/HomeCache.php
+++ b/lib/private/Files/Cache/HomeCache.php
@@ -4,6 +4,7 @@
*
* @author Andreas Fischer <bantu@owncloud.com>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -54,14 +55,14 @@ class HomeCache extends Cache {
$sql = 'SELECT SUM(`size`) AS f1 ' .
'FROM `*PREFIX*filecache` ' .
'WHERE `parent` = ? AND `storage` = ? AND `size` >= 0';
- $result = \OC_DB::executeAudited($sql, array($id, $this->getNumericStorageId()));
+ $result = \OC_DB::executeAudited($sql, [$id, $this->getNumericStorageId()]);
if ($row = $result->fetchRow()) {
$result->closeCursor();
list($sum) = array_values($row);
$totalSize = 0 + $sum;
$entry['size'] += 0;
if ($entry['size'] !== $totalSize) {
- $this->update($id, array('size' => $totalSize));
+ $this->update($id, ['size' => $totalSize]);
}
}
}
diff --git a/lib/private/Files/Cache/Propagator.php b/lib/private/Files/Cache/Propagator.php
index 7a1eae3498a..92fa6436548 100644
--- a/lib/private/Files/Cache/Propagator.php
+++ b/lib/private/Files/Cache/Propagator.php
@@ -200,6 +200,4 @@ class Propagator implements IPropagator {
$this->connection->commit();
}
-
-
}
diff --git a/lib/private/Files/Cache/QuerySearchHelper.php b/lib/private/Files/Cache/QuerySearchHelper.php
index 7a0b9f3a24a..574b4c18d5d 100644
--- a/lib/private/Files/Cache/QuerySearchHelper.php
+++ b/lib/private/Files/Cache/QuerySearchHelper.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Tobias Kaminsky <tobias@kaminsky.me>
@@ -36,7 +37,7 @@ use OCP\Files\Search\ISearchOrder;
* Tools for transforming search queries into database queries
*/
class QuerySearchHelper {
- static protected $searchOperatorMap = [
+ protected static $searchOperatorMap = [
ISearchComparison::COMPARE_LIKE => 'iLike',
ISearchComparison::COMPARE_EQUAL => 'eq',
ISearchComparison::COMPARE_GREATER_THAN => 'gt',
@@ -45,7 +46,7 @@ class QuerySearchHelper {
ISearchComparison::COMPARE_LESS_THAN_EQUAL => 'lte'
];
- static protected $searchOperatorNegativeMap = [
+ protected static $searchOperatorNegativeMap = [
ISearchComparison::COMPARE_LIKE => 'notLike',
ISearchComparison::COMPARE_EQUAL => 'neq',
ISearchComparison::COMPARE_GREATER_THAN => 'lte',
@@ -54,7 +55,7 @@ class QuerySearchHelper {
ISearchComparison::COMPARE_LESS_THAN_EQUAL => 'lt'
];
- const TAG_FAVORITE = '_$!<Favorite>!$_';
+ public const TAG_FAVORITE = '_$!<Favorite>!$_';
/** @var IMimeTypeLoader */
private $mimetypeLoader;
@@ -79,7 +80,7 @@ class QuerySearchHelper {
return array_reduce($operator->getArguments(), function ($shouldJoin, ISearchOperator $operator) {
return $shouldJoin || $this->shouldJoinTags($operator);
}, false);
- } else if ($operator instanceof ISearchComparison) {
+ } elseif ($operator instanceof ISearchComparison) {
return $operator->getField() === 'tagname' || $operator->getField() === 'favorite';
}
return false;
@@ -110,6 +111,7 @@ class QuerySearchHelper {
} else {
throw new \InvalidArgumentException('Binary operators inside "not" is not supported');
}
+ // no break
case ISearchBinaryOperator::OPERATOR_AND:
return call_user_func_array([$expr, 'andX'], $this->searchOperatorArrayToDBExprArray($builder, $operator->getArguments()));
case ISearchBinaryOperator::OPERATOR_OR:
@@ -117,7 +119,7 @@ class QuerySearchHelper {
default:
throw new \InvalidArgumentException('Invalid operator type: ' . $operator->getType());
}
- } else if ($operator instanceof ISearchComparison) {
+ } elseif ($operator instanceof ISearchComparison) {
return $this->searchComparisonToDBExpr($builder, $operator, self::$searchOperatorMap);
} else {
throw new \InvalidArgumentException('Invalid operator type: ' . get_class($operator));
@@ -143,13 +145,13 @@ class QuerySearchHelper {
if ($field === 'mimetype') {
if ($operator->getType() === ISearchComparison::COMPARE_EQUAL) {
$value = (int)$this->mimetypeLoader->getId($value);
- } else if ($operator->getType() === ISearchComparison::COMPARE_LIKE) {
+ } elseif ($operator->getType() === ISearchComparison::COMPARE_LIKE) {
// transform "mimetype='foo/%'" to "mimepart='foo'"
if (preg_match('|(.+)/%|', $value, $matches)) {
$field = 'mimepart';
$value = (int)$this->mimetypeLoader->getId($matches[1]);
$type = ISearchComparison::COMPARE_EQUAL;
- } else if (strpos($value, '%') !== false) {
+ } elseif (strpos($value, '%') !== false) {
throw new \InvalidArgumentException('Unsupported query value for mimetype: ' . $value . ', only values in the format "mime/type" or "mime/%" are supported');
} else {
$field = 'mimetype';
@@ -157,12 +159,12 @@ class QuerySearchHelper {
$type = ISearchComparison::COMPARE_EQUAL;
}
}
- } else if ($field === 'favorite') {
+ } elseif ($field === 'favorite') {
$field = 'tag.category';
$value = self::TAG_FAVORITE;
- } else if ($field === 'tagname') {
+ } elseif ($field === 'tagname') {
$field = 'tag.category';
- } else if ($field === 'fileid') {
+ } elseif ($field === 'fileid') {
$field = 'file.fileid';
}
return [$field, $value, $type];
diff --git a/lib/private/Files/Cache/Scanner.php b/lib/private/Files/Cache/Scanner.php
index 30688a8da3e..f895948574b 100644
--- a/lib/private/Files/Cache/Scanner.php
+++ b/lib/private/Files/Cache/Scanner.php
@@ -5,6 +5,7 @@
* @author Ari Selseng <ari@selseng.net>
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Jagszent <daniel@jagszent.de>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
@@ -123,13 +124,13 @@ class Scanner extends BasicEmitter implements IScanner {
* @param string $file
* @param int $reuseExisting
* @param int $parentId
- * @param array | null $cacheData existing data in the cache for the file to be scanned
+ * @param array|null|false $cacheData existing data in the cache for the file to be scanned
* @param bool $lock set to false to disable getting an additional read lock during scanning
+ * @param null $data the metadata for the file, as returned by the storage
* @return array an array of metadata of the scanned file
- * @throws \OC\ServerNotAvailableException
* @throws \OCP\Lock\LockedException
*/
- public function scanFile($file, $reuseExisting = 0, $parentId = -1, $cacheData = null, $lock = true) {
+ public function scanFile($file, $reuseExisting = 0, $parentId = -1, $cacheData = null, $lock = true, $data = null) {
if ($file !== '') {
try {
$this->storage->verifyPath(dirname($file), basename($file));
@@ -148,7 +149,7 @@ class Scanner extends BasicEmitter implements IScanner {
}
try {
- $data = $this->getData($file);
+ $data = $data ?? $this->getData($file);
} catch (ForbiddenException $e) {
if ($lock) {
if ($this->storage->instanceOfStorage('\OCP\Files\Storage\ILockingStorage')) {
@@ -164,8 +165,8 @@ class Scanner extends BasicEmitter implements IScanner {
// pre-emit only if it was a file. By that we avoid counting/treating folders as files
if ($data['mimetype'] !== 'httpd/unix-directory') {
- $this->emit('\OC\Files\Cache\Scanner', 'scanFile', array($file, $this->storageId));
- \OC_Hook::emit('\OC\Files\Cache\Scanner', 'scan_file', array('path' => $file, 'storage' => $this->storageId));
+ $this->emit('\OC\Files\Cache\Scanner', 'scanFile', [$file, $this->storageId]);
+ \OC_Hook::emit('\OC\Files\Cache\Scanner', 'scan_file', ['path' => $file, 'storage' => $this->storageId]);
}
$parent = dirname($file);
@@ -219,24 +220,24 @@ class Scanner extends BasicEmitter implements IScanner {
if (!empty($newData)) {
// Reset the checksum if the data has changed
$newData['checksum'] = '';
+ $newData['parent'] = $parentId;
$data['fileid'] = $this->addToCache($file, $newData, $fileId);
}
- if (isset($cacheData['size'])) {
+ if ($cacheData && isset($cacheData['size'])) {
$data['oldSize'] = $cacheData['size'];
} else {
$data['oldSize'] = 0;
}
- if (isset($cacheData['encrypted'])) {
+ if ($cacheData && isset($cacheData['encrypted'])) {
$data['encrypted'] = $cacheData['encrypted'];
}
// post-emit only if it was a file. By that we avoid counting/treating folders as files
if ($data['mimetype'] !== 'httpd/unix-directory') {
- $this->emit('\OC\Files\Cache\Scanner', 'postScanFile', array($file, $this->storageId));
- \OC_Hook::emit('\OC\Files\Cache\Scanner', 'post_scan_file', array('path' => $file, 'storage' => $this->storageId));
+ $this->emit('\OC\Files\Cache\Scanner', 'postScanFile', [$file, $this->storageId]);
+ \OC_Hook::emit('\OC\Files\Cache\Scanner', 'post_scan_file', ['path' => $file, 'storage' => $this->storageId]);
}
-
} else {
$this->removeFromCache($file);
}
@@ -266,8 +267,8 @@ class Scanner extends BasicEmitter implements IScanner {
}
protected function removeFromCache($path) {
- \OC_Hook::emit('Scanner', 'removeFromCache', array('file' => $path));
- $this->emit('\OC\Files\Cache\Scanner', 'removeFromCache', array($path));
+ \OC_Hook::emit('Scanner', 'removeFromCache', ['file' => $path]);
+ $this->emit('\OC\Files\Cache\Scanner', 'removeFromCache', [$path]);
if ($this->cacheActive) {
$this->cache->remove($path);
}
@@ -283,14 +284,14 @@ class Scanner extends BasicEmitter implements IScanner {
if (isset($data['scan_permissions'])) {
$data['permissions'] = $data['scan_permissions'];
}
- \OC_Hook::emit('Scanner', 'addToCache', array('file' => $path, 'data' => $data));
- $this->emit('\OC\Files\Cache\Scanner', 'addToCache', array($path, $this->storageId, $data));
+ \OC_Hook::emit('Scanner', 'addToCache', ['file' => $path, 'data' => $data]);
+ $this->emit('\OC\Files\Cache\Scanner', 'addToCache', [$path, $this->storageId, $data]);
if ($this->cacheActive) {
if ($fileId !== -1) {
$this->cache->update($fileId, $data);
return $fileId;
} else {
- return $this->cache->put($path, $data);
+ return $this->cache->insert($path, $data);
}
} else {
return -1;
@@ -303,8 +304,8 @@ class Scanner extends BasicEmitter implements IScanner {
* @param int $fileId
*/
protected function updateCache($path, $data, $fileId = -1) {
- \OC_Hook::emit('Scanner', 'addToCache', array('file' => $path, 'data' => $data));
- $this->emit('\OC\Files\Cache\Scanner', 'updateCache', array($path, $this->storageId, $data));
+ \OC_Hook::emit('Scanner', 'addToCache', ['file' => $path, 'data' => $data]);
+ $this->emit('\OC\Files\Cache\Scanner', 'updateCache', [$path, $this->storageId, $data]);
if ($this->cacheActive) {
if ($fileId !== -1) {
$this->cache->update($fileId, $data);
@@ -357,7 +358,7 @@ class Scanner extends BasicEmitter implements IScanner {
* @return array[]
*/
protected function getExistingChildren($folderId) {
- $existingChildren = array();
+ $existingChildren = [];
$children = $this->cache->getFolderContentsById($folderId);
foreach ($children as $child) {
$existingChildren[$child['name']] = $child;
@@ -366,26 +367,6 @@ class Scanner extends BasicEmitter implements IScanner {
}
/**
- * Get the children from the storage
- *
- * @param string $folder
- * @return string[]
- */
- protected function getNewChildren($folder) {
- $children = array();
- if ($dh = $this->storage->opendir($folder)) {
- if (is_resource($dh)) {
- while (($file = readdir($dh)) !== false) {
- if (!Filesystem::isIgnoredDir($file)) {
- $children[] = trim(\OC\Files\Filesystem::normalizePath($file), '/');
- }
- }
- }
- }
- return $children;
- }
-
- /**
* scan all the files and folders in a folder
*
* @param string $path
@@ -399,7 +380,7 @@ class Scanner extends BasicEmitter implements IScanner {
if ($reuse === -1) {
$reuse = ($recursive === self::SCAN_SHALLOW) ? self::REUSE_ETAG | self::REUSE_SIZE : self::REUSE_ETAG;
}
- $this->emit('\OC\Files\Cache\Scanner', 'scanFolder', array($path, $this->storageId));
+ $this->emit('\OC\Files\Cache\Scanner', 'scanFolder', [$path, $this->storageId]);
$size = 0;
if (!is_null($folderId)) {
$folderId = $this->cache->getId($path);
@@ -410,21 +391,21 @@ class Scanner extends BasicEmitter implements IScanner {
$childSize = $this->scanChildren($child, $recursive, $reuse, $childId, $lock);
if ($childSize === -1) {
$size = -1;
- } else if ($size !== -1) {
+ } elseif ($size !== -1) {
$size += $childSize;
}
}
if ($this->cacheActive) {
- $this->cache->update($folderId, array('size' => $size));
+ $this->cache->update($folderId, ['size' => $size]);
}
- $this->emit('\OC\Files\Cache\Scanner', 'postScanFolder', array($path, $this->storageId));
+ $this->emit('\OC\Files\Cache\Scanner', 'postScanFolder', [$path, $this->storageId]);
return $size;
}
private function handleChildren($path, $recursive, $reuse, $folderId, $lock, &$size) {
// we put this in it's own function so it cleans up the memory before we start recursing
$existingChildren = $this->getExistingChildren($folderId);
- $newChildren = $this->getNewChildren($path);
+ $newChildren = iterator_to_array($this->storage->getDirectoryContent($path));
if ($this->useTransactions) {
\OC::$server->getDatabaseConnection()->beginTransaction();
@@ -432,20 +413,23 @@ class Scanner extends BasicEmitter implements IScanner {
$exceptionOccurred = false;
$childQueue = [];
- foreach ($newChildren as $file) {
+ $newChildNames = [];
+ foreach ($newChildren as $fileMeta) {
+ $file = $fileMeta['name'];
+ $newChildNames[] = $file;
$child = $path ? $path . '/' . $file : $file;
try {
- $existingData = isset($existingChildren[$file]) ? $existingChildren[$file] : null;
- $data = $this->scanFile($child, $reuse, $folderId, $existingData, $lock);
+ $existingData = isset($existingChildren[$file]) ? $existingChildren[$file] : false;
+ $data = $this->scanFile($child, $reuse, $folderId, $existingData, $lock, $fileMeta);
if ($data) {
if ($data['mimetype'] === 'httpd/unix-directory' and $recursive === self::SCAN_RECURSIVE) {
$childQueue[$child] = $data['fileid'];
- } else if ($data['mimetype'] === 'httpd/unix-directory' and $recursive === self::SCAN_RECURSIVE_INCOMPLETE and $data['size'] === -1) {
+ } elseif ($data['mimetype'] === 'httpd/unix-directory' and $recursive === self::SCAN_RECURSIVE_INCOMPLETE and $data['size'] === -1) {
// only recurse into folders which aren't fully scanned
$childQueue[$child] = $data['fileid'];
- } else if ($data['size'] === -1) {
+ } elseif ($data['size'] === -1) {
$size = -1;
- } else if ($size !== -1) {
+ } elseif ($size !== -1) {
$size += $data['size'];
}
}
@@ -470,7 +454,7 @@ class Scanner extends BasicEmitter implements IScanner {
throw $e;
}
}
- $removedChildren = \array_diff(array_keys($existingChildren), $newChildren);
+ $removedChildren = \array_diff(array_keys($existingChildren), $newChildNames);
foreach ($removedChildren as $childName) {
$child = $path ? $path . '/' . $childName : $childName;
$this->removeFromCache($child);
@@ -531,7 +515,7 @@ class Scanner extends BasicEmitter implements IScanner {
private function runBackgroundScanJob(callable $callback, $path) {
try {
$callback();
- \OC_Hook::emit('Scanner', 'correctFolderSize', array('path' => $path));
+ \OC_Hook::emit('Scanner', 'correctFolderSize', ['path' => $path]);
if ($this->cacheActive && $this->cache instanceof Cache) {
$this->cache->correctFolderSize($path, null, true);
}
diff --git a/lib/private/Files/Cache/Storage.php b/lib/private/Files/Cache/Storage.php
index 13af41acfea..62228e16290 100644
--- a/lib/private/Files/Cache/Storage.php
+++ b/lib/private/Files/Cache/Storage.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -125,9 +126,8 @@ class Storage {
* @return string|null either the storage id string or null if the numeric id is not known
*/
public static function getStorageId($numericId) {
-
$sql = 'SELECT `id` FROM `*PREFIX*storages` WHERE `numeric_id` = ?';
- $result = \OC_DB::executeAudited($sql, array($numericId));
+ $result = \OC_DB::executeAudited($sql, [$numericId]);
if ($row = $result->fetchRow()) {
return $row['id'];
} else {
@@ -194,11 +194,11 @@ class Storage {
$storageId = self::adjustStorageId($storageId);
$numericId = self::getNumericStorageId($storageId);
$sql = 'DELETE FROM `*PREFIX*storages` WHERE `id` = ?';
- \OC_DB::executeAudited($sql, array($storageId));
+ \OC_DB::executeAudited($sql, [$storageId]);
if (!is_null($numericId)) {
$sql = 'DELETE FROM `*PREFIX*filecache` WHERE `storage` = ?';
- \OC_DB::executeAudited($sql, array($numericId));
+ \OC_DB::executeAudited($sql, [$numericId]);
}
}
}
diff --git a/lib/private/Files/Cache/Updater.php b/lib/private/Files/Cache/Updater.php
index 59cff9b3a41..60534a153dd 100644
--- a/lib/private/Files/Cache/Updater.php
+++ b/lib/private/Files/Cache/Updater.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Jagszent <daniel@jagszent.de>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -166,7 +167,6 @@ class Updater implements IUpdater {
$this->cache->correctFolderSize($parent);
}
}
-
}
/**
@@ -247,7 +247,7 @@ class Updater implements IUpdater {
if ($parentId != -1) {
$mtime = $this->storage->filemtime($parent);
if ($mtime !== false) {
- $this->cache->update($parentId, array('storage_mtime' => $mtime));
+ $this->cache->update($parentId, ['storage_mtime' => $mtime]);
}
}
}
diff --git a/lib/private/Files/Cache/Watcher.php b/lib/private/Files/Cache/Watcher.php
index beb49ff2d65..d6291ca71e9 100644
--- a/lib/private/Files/Cache/Watcher.php
+++ b/lib/private/Files/Cache/Watcher.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Jagszent <daniel@jagszent.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -25,6 +26,7 @@
*/
namespace OC\Files\Cache;
+
use OCP\Files\Cache\ICacheEntry;
use OCP\Files\Cache\IWatcher;
@@ -32,10 +34,9 @@ use OCP\Files\Cache\IWatcher;
* check the storage backends for updates and change the cache accordingly
*/
class Watcher implements IWatcher {
-
protected $watchPolicy = self::CHECK_ONCE;
- protected $checkedPaths = array();
+ protected $checkedPaths = [];
/**
* @var \OC\Files\Storage\Storage $storage
diff --git a/lib/private/Files/Cache/Wrapper/CacheJail.php b/lib/private/Files/Cache/Wrapper/CacheJail.php
index 6f951f978ad..8d4f412868e 100644
--- a/lib/private/Files/Cache/Wrapper/CacheJail.php
+++ b/lib/private/Files/Cache/Wrapper/CacheJail.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Ari Selseng <ari@selseng.net>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Jagszent <daniel@jagszent.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -74,7 +75,7 @@ class CacheJail extends CacheWrapper {
$rootLength = strlen($this->getRoot()) + 1;
if ($path === $this->getRoot()) {
return '';
- } else if (substr($path, 0, $rootLength) === $this->getRoot() . '/') {
+ } elseif (substr($path, 0, $rootLength) === $this->getRoot() . '/') {
return substr($path, $rootLength);
} else {
return null;
@@ -209,9 +210,9 @@ class CacheJail extends CacheWrapper {
}
private function formatSearchResults($results) {
- $results = array_filter($results, array($this, 'filterCacheEntry'));
+ $results = array_filter($results, [$this, 'filterCacheEntry']);
$results = array_values($results);
- return array_map(array($this, 'formatCacheEntry'), $results);
+ return array_map([$this, 'formatCacheEntry'], $results);
}
/**
@@ -241,7 +242,7 @@ class CacheJail extends CacheWrapper {
$results = $this->getCache()->searchQuery($simpleQuery);
$results = $this->formatSearchResults($results);
- $limit = $query->getLimit() === 0 ? NULL : $query->getLimit();
+ $limit = $query->getLimit() === 0 ? null : $query->getLimit();
$results = array_slice($results, $query->getOffset(), $limit);
return $results;
@@ -272,7 +273,6 @@ class CacheJail extends CacheWrapper {
} else {
return 0;
}
-
}
/**
@@ -282,7 +282,7 @@ class CacheJail extends CacheWrapper {
*/
public function getAll() {
// not supported
- return array();
+ return [];
}
/**
diff --git a/lib/private/Files/Cache/Wrapper/CacheWrapper.php b/lib/private/Files/Cache/Wrapper/CacheWrapper.php
index 40bac888673..4901a530799 100644
--- a/lib/private/Files/Cache/Wrapper/CacheWrapper.php
+++ b/lib/private/Files/Cache/Wrapper/CacheWrapper.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Ari Selseng <ari@selseng.net>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Jagszent <daniel@jagszent.de>
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -96,7 +97,7 @@ class CacheWrapper extends Cache {
*/
public function getFolderContentsById($fileId) {
$results = $this->getCache()->getFolderContentsById($fileId);
- return array_map(array($this, 'formatCacheEntry'), $results);
+ return array_map([$this, 'formatCacheEntry'], $results);
}
/**
@@ -223,7 +224,7 @@ class CacheWrapper extends Cache {
*/
public function search($pattern) {
$results = $this->getCache()->search($pattern);
- return array_map(array($this, 'formatCacheEntry'), $results);
+ return array_map([$this, 'formatCacheEntry'], $results);
}
/**
@@ -234,12 +235,12 @@ class CacheWrapper extends Cache {
*/
public function searchByMime($mimetype) {
$results = $this->getCache()->searchByMime($mimetype);
- return array_map(array($this, 'formatCacheEntry'), $results);
+ return array_map([$this, 'formatCacheEntry'], $results);
}
public function searchQuery(ISearchQuery $query) {
$results = $this->getCache()->searchQuery($query);
- return array_map(array($this, 'formatCacheEntry'), $results);
+ return array_map([$this, 'formatCacheEntry'], $results);
}
/**
@@ -318,7 +319,7 @@ class CacheWrapper extends Cache {
* @param int $id
* @return array first element holding the storage id, second the path
*/
- static public function getById($id) {
+ public static function getById($id) {
return parent::getById($id);
}
}
diff --git a/lib/private/Files/Cache/Wrapper/JailPropagator.php b/lib/private/Files/Cache/Wrapper/JailPropagator.php
index 9322d9e610b..956d187783a 100644
--- a/lib/private/Files/Cache/Wrapper/JailPropagator.php
+++ b/lib/private/Files/Cache/Wrapper/JailPropagator.php
@@ -24,7 +24,6 @@
namespace OC\Files\Cache\Wrapper;
-
use OC\Files\Cache\Propagator;
use OC\Files\Storage\Wrapper\Jail;
diff --git a/lib/private/Files/Config/CachedMountFileInfo.php b/lib/private/Files/Config/CachedMountFileInfo.php
index 99df663a4e6..7bae52bb65d 100644
--- a/lib/private/Files/Config/CachedMountFileInfo.php
+++ b/lib/private/Files/Config/CachedMountFileInfo.php
@@ -24,7 +24,6 @@
namespace OC\Files\Config;
-
use OCP\Files\Config\ICachedMountFileInfo;
use OCP\IUser;
diff --git a/lib/private/Files/Config/MountProviderCollection.php b/lib/private/Files/Config/MountProviderCollection.php
index 4ef3f9f8d94..34db652290f 100644
--- a/lib/private/Files/Config/MountProviderCollection.php
+++ b/lib/private/Files/Config/MountProviderCollection.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -46,7 +47,7 @@ class MountProviderCollection implements IMountProviderCollection, Emitter {
/**
* @var \OCP\Files\Config\IMountProvider[]
*/
- private $providers = array();
+ private $providers = [];
/**
* @var \OCP\Files\Storage\IStorageFactory
@@ -86,7 +87,7 @@ class MountProviderCollection implements IMountProviderCollection, Emitter {
});
$mounts = array_reduce($mounts, function (array $mounts, array $providerMounts) {
return array_merge($mounts, $providerMounts);
- }, array());
+ }, []);
return $this->filterMounts($user, $mounts);
}
diff --git a/lib/private/Files/FileInfo.php b/lib/private/Files/FileInfo.php
index cfc03ffd4e0..3c6bdd3b5a0 100644
--- a/lib/private/Files/FileInfo.php
+++ b/lib/private/Files/FileInfo.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Julius Härtl <jus@bitgrid.net>
* @author Lukas Reschke <lukas@statuscode.ch>
@@ -119,11 +120,11 @@ class FileInfo implements \OCP\Files\FileInfo, \ArrayAccess {
public function offsetGet($offset) {
if ($offset === 'type') {
return $this->getType();
- } else if ($offset === 'etag') {
+ } elseif ($offset === 'etag') {
return $this->getEtag();
- } else if ($offset === 'size') {
+ } elseif ($offset === 'size') {
return $this->getSize();
- } else if ($offset === 'mtime') {
+ } elseif ($offset === 'mtime') {
return $this->getMTime();
} elseif ($offset === 'permissions') {
return $this->getPermissions();
diff --git a/lib/private/Files/Filesystem.php b/lib/private/Files/Filesystem.php
index 24d21ad6049..d3c4e1afc62 100644
--- a/lib/private/Files/Filesystem.php
+++ b/lib/private/Files/Filesystem.php
@@ -62,7 +62,6 @@ namespace OC\Files;
use OC\Cache\CappedMemoryCache;
use OC\Files\Config\MountProviderCollection;
use OC\Files\Mount\MountPoint;
-use OC\Files\Storage\StorageFactory;
use OC\Lockdown\Filesystem\NullStorage;
use OCP\Files\Config\IMountProvider;
use OCP\Files\NotFoundException;
@@ -81,19 +80,19 @@ class Filesystem {
/**
* @var \OC\Files\View $defaultInstance
*/
- static private $defaultInstance;
+ private static $defaultInstance;
- static private $usersSetup = array();
+ private static $usersSetup = [];
- static private $normalizedPathCache = null;
+ private static $normalizedPathCache = null;
- static private $listeningForProviders = false;
+ private static $listeningForProviders = false;
/**
* classname which used for hooks handling
* used as signalclass in OC_Hooks::emit()
*/
- const CLASSNAME = 'OC_Filesystem';
+ public const CLASSNAME = 'OC_Filesystem';
/**
* signalname emitted before file renaming
@@ -101,7 +100,7 @@ class Filesystem {
* @param string $oldpath
* @param string $newpath
*/
- const signal_rename = 'rename';
+ public const signal_rename = 'rename';
/**
* signal emitted after file renaming
@@ -109,7 +108,7 @@ class Filesystem {
* @param string $oldpath
* @param string $newpath
*/
- const signal_post_rename = 'post_rename';
+ public const signal_post_rename = 'post_rename';
/**
* signal emitted before file/dir creation
@@ -117,7 +116,7 @@ class Filesystem {
* @param string $path
* @param bool $run changing this flag to false in hook handler will cancel event
*/
- const signal_create = 'create';
+ public const signal_create = 'create';
/**
* signal emitted after file/dir creation
@@ -125,7 +124,7 @@ class Filesystem {
* @param string $path
* @param bool $run changing this flag to false in hook handler will cancel event
*/
- const signal_post_create = 'post_create';
+ public const signal_post_create = 'post_create';
/**
* signal emits before file/dir copy
@@ -134,7 +133,7 @@ class Filesystem {
* @param string $newpath
* @param bool $run changing this flag to false in hook handler will cancel event
*/
- const signal_copy = 'copy';
+ public const signal_copy = 'copy';
/**
* signal emits after file/dir copy
@@ -142,7 +141,7 @@ class Filesystem {
* @param string $oldpath
* @param string $newpath
*/
- const signal_post_copy = 'post_copy';
+ public const signal_post_copy = 'post_copy';
/**
* signal emits before file/dir save
@@ -150,14 +149,14 @@ class Filesystem {
* @param string $path
* @param bool $run changing this flag to false in hook handler will cancel event
*/
- const signal_write = 'write';
+ public const signal_write = 'write';
/**
* signal emits after file/dir save
*
* @param string $path
*/
- const signal_post_write = 'post_write';
+ public const signal_post_write = 'post_write';
/**
* signal emitted before file/dir update
@@ -165,7 +164,7 @@ class Filesystem {
* @param string $path
* @param bool $run changing this flag to false in hook handler will cancel event
*/
- const signal_update = 'update';
+ public const signal_update = 'update';
/**
* signal emitted after file/dir update
@@ -173,38 +172,38 @@ class Filesystem {
* @param string $path
* @param bool $run changing this flag to false in hook handler will cancel event
*/
- const signal_post_update = 'post_update';
+ public const signal_post_update = 'post_update';
/**
* signal emits when reading file/dir
*
* @param string $path
*/
- const signal_read = 'read';
+ public const signal_read = 'read';
/**
* signal emits when removing file/dir
*
* @param string $path
*/
- const signal_delete = 'delete';
+ public const signal_delete = 'delete';
/**
* parameters definitions for signals
*/
- const signal_param_path = 'path';
- const signal_param_oldpath = 'oldpath';
- const signal_param_newpath = 'newpath';
+ public const signal_param_path = 'path';
+ public const signal_param_oldpath = 'oldpath';
+ public const signal_param_newpath = 'newpath';
/**
* run - changing this flag to false in hook handler will cancel event
*/
- const signal_param_run = 'run';
+ public const signal_param_run = 'run';
- const signal_create_mount = 'create_mount';
- const signal_delete_mount = 'delete_mount';
- const signal_param_mount_type = 'mounttype';
- const signal_param_users = 'users';
+ public const signal_create_mount = 'create_mount';
+ public const signal_delete_mount = 'delete_mount';
+ public const signal_param_mount_type = 'mounttype';
+ public const signal_param_users = 'users';
/**
* @var \OC\Files\Storage\StorageFactory $loader
@@ -278,7 +277,7 @@ class Filesystem {
* @param string $path
* @return string
*/
- static public function getMountPoint($path) {
+ public static function getMountPoint($path) {
if (!self::$mounts) {
\OC_Util::setupFS();
}
@@ -296,11 +295,11 @@ class Filesystem {
* @param string $path
* @return string[]
*/
- static public function getMountPoints($path) {
+ public static function getMountPoints($path) {
if (!self::$mounts) {
\OC_Util::setupFS();
}
- $result = array();
+ $result = [];
$mounts = self::$mounts->findIn($path);
foreach ($mounts as $mount) {
$result[] = $mount->getMountPoint();
@@ -350,19 +349,19 @@ class Filesystem {
* @param string $path
* @return array an array consisting of the storage and the internal path
*/
- static public function resolvePath($path) {
+ public static function resolvePath($path) {
if (!self::$mounts) {
\OC_Util::setupFS();
}
$mount = self::$mounts->find($path);
if ($mount) {
- return array($mount->getStorage(), rtrim($mount->getInternalPath($path), '/'));
+ return [$mount->getStorage(), rtrim($mount->getInternalPath($path), '/')];
} else {
- return array(null, null);
+ return [null, null];
}
}
- static public function init($user, $root) {
+ public static function init($user, $root) {
if (self::$defaultInstance) {
return false;
}
@@ -381,7 +380,7 @@ class Filesystem {
return true;
}
- static public function initMountManager() {
+ public static function initMountManager() {
if (!self::$mounts) {
self::$mounts = \OC::$server->getMountManager();
}
@@ -461,7 +460,7 @@ class Filesystem {
'/' . $user . '/files'
));
}
- \OC_Hook::emit('OC_Filesystem', 'post_initMountPoints', array('user' => $user));
+ \OC_Hook::emit('OC_Filesystem', 'post_initMountPoints', ['user' => $user]);
}
/**
@@ -478,7 +477,7 @@ class Filesystem {
$userObject = $userManager->get($user);
if ($userObject) {
$mounts = $provider->getMountsForUser($userObject, Filesystem::getLoader());
- array_walk($mounts, array(self::$mounts, 'addMount'));
+ array_walk($mounts, [self::$mounts, 'addMount']);
}
}
});
@@ -490,14 +489,14 @@ class Filesystem {
*
* @return View
*/
- static public function getView() {
+ public static function getView() {
return self::$defaultInstance;
}
/**
* tear down the filesystem, removing all storage providers
*/
- static public function tearDown() {
+ public static function tearDown() {
self::clearMounts();
self::$defaultInstance = null;
}
@@ -509,7 +508,7 @@ class Filesystem {
*
* Returns path like /admin/files
*/
- static public function getRoot() {
+ public static function getRoot() {
if (!self::$defaultInstance) {
return null;
}
@@ -521,7 +520,7 @@ class Filesystem {
*/
public static function clearMounts() {
if (self::$mounts) {
- self::$usersSetup = array();
+ self::$usersSetup = [];
self::$mounts->clear();
}
}
@@ -533,7 +532,7 @@ class Filesystem {
* @param array $arguments
* @param string $mountpoint
*/
- static public function mount($class, $arguments, $mountpoint) {
+ public static function mount($class, $arguments, $mountpoint) {
if (!self::$mounts) {
\OC_Util::setupFS();
}
@@ -549,7 +548,7 @@ class Filesystem {
* @param string $path
* @return string
*/
- static public function getLocalFile($path) {
+ public static function getLocalFile($path) {
return self::$defaultInstance->getLocalFile($path);
}
@@ -557,7 +556,7 @@ class Filesystem {
* @param string $path
* @return string
*/
- static public function getLocalFolder($path) {
+ public static function getLocalFolder($path) {
return self::$defaultInstance->getLocalFolder($path);
}
@@ -567,7 +566,7 @@ class Filesystem {
* @param string $path
* @return string
*/
- static public function getLocalPath($path) {
+ public static function getLocalPath($path) {
$datadir = \OC_User::getHome(\OC_User::getUser()) . '/files';
$newpath = $path;
if (strncmp($newpath, $datadir, strlen($datadir)) == 0) {
@@ -582,7 +581,7 @@ class Filesystem {
* @param string $path
* @return bool
*/
- static public function isValidPath($path) {
+ public static function isValidPath($path) {
$path = self::normalizePath($path);
if (!$path || $path[0] !== '/') {
$path = '/' . $path;
@@ -599,10 +598,10 @@ class Filesystem {
*
* @param array $data from hook
*/
- static public function isBlacklisted($data) {
+ public static function isBlacklisted($data) {
if (isset($data['path'])) {
$path = $data['path'];
- } else if (isset($data['newpath'])) {
+ } elseif (isset($data['newpath'])) {
$path = $data['newpath'];
}
if (isset($path)) {
@@ -616,10 +615,10 @@ class Filesystem {
* @param string $filename
* @return bool
*/
- static public function isFileBlacklisted($filename) {
+ public static function isFileBlacklisted($filename) {
$filename = self::normalizePath($filename);
- $blacklist = \OC::$server->getConfig()->getSystemValue('blacklisted_files', array('.htaccess'));
+ $blacklist = \OC::$server->getConfig()->getSystemValue('blacklisted_files', ['.htaccess']);
$filename = strtolower(basename($filename));
return in_array($filename, $blacklist);
}
@@ -631,7 +630,7 @@ class Filesystem {
* @param string $dir
* @return boolean
*/
- static public function isIgnoredDir($dir) {
+ public static function isIgnoredDir($dir) {
if ($dir === '.' || $dir === '..') {
return true;
}
@@ -641,128 +640,128 @@ class Filesystem {
/**
* following functions are equivalent to their php builtin equivalents for arguments/return values.
*/
- static public function mkdir($path) {
+ public static function mkdir($path) {
return self::$defaultInstance->mkdir($path);
}
- static public function rmdir($path) {
+ public static function rmdir($path) {
return self::$defaultInstance->rmdir($path);
}
- static public function is_dir($path) {
+ public static function is_dir($path) {
return self::$defaultInstance->is_dir($path);
}
- static public function is_file($path) {
+ public static function is_file($path) {
return self::$defaultInstance->is_file($path);
}
- static public function stat($path) {
+ public static function stat($path) {
return self::$defaultInstance->stat($path);
}
- static public function filetype($path) {
+ public static function filetype($path) {
return self::$defaultInstance->filetype($path);
}
- static public function filesize($path) {
+ public static function filesize($path) {
return self::$defaultInstance->filesize($path);
}
- static public function readfile($path) {
+ public static function readfile($path) {
return self::$defaultInstance->readfile($path);
}
- static public function isCreatable($path) {
+ public static function isCreatable($path) {
return self::$defaultInstance->isCreatable($path);
}
- static public function isReadable($path) {
+ public static function isReadable($path) {
return self::$defaultInstance->isReadable($path);
}
- static public function isUpdatable($path) {
+ public static function isUpdatable($path) {
return self::$defaultInstance->isUpdatable($path);
}
- static public function isDeletable($path) {
+ public static function isDeletable($path) {
return self::$defaultInstance->isDeletable($path);
}
- static public function isSharable($path) {
+ public static function isSharable($path) {
return self::$defaultInstance->isSharable($path);
}
- static public function file_exists($path) {
+ public static function file_exists($path) {
return self::$defaultInstance->file_exists($path);
}
- static public function filemtime($path) {
+ public static function filemtime($path) {
return self::$defaultInstance->filemtime($path);
}
- static public function touch($path, $mtime = null) {
+ public static function touch($path, $mtime = null) {
return self::$defaultInstance->touch($path, $mtime);
}
/**
* @return string
*/
- static public function file_get_contents($path) {
+ public static function file_get_contents($path) {
return self::$defaultInstance->file_get_contents($path);
}
- static public function file_put_contents($path, $data) {
+ public static function file_put_contents($path, $data) {
return self::$defaultInstance->file_put_contents($path, $data);
}
- static public function unlink($path) {
+ public static function unlink($path) {
return self::$defaultInstance->unlink($path);
}
- static public function rename($path1, $path2) {
+ public static function rename($path1, $path2) {
return self::$defaultInstance->rename($path1, $path2);
}
- static public function copy($path1, $path2) {
+ public static function copy($path1, $path2) {
return self::$defaultInstance->copy($path1, $path2);
}
- static public function fopen($path, $mode) {
+ public static function fopen($path, $mode) {
return self::$defaultInstance->fopen($path, $mode);
}
/**
* @return string
*/
- static public function toTmpFile($path) {
+ public static function toTmpFile($path) {
return self::$defaultInstance->toTmpFile($path);
}
- static public function fromTmpFile($tmpFile, $path) {
+ public static function fromTmpFile($tmpFile, $path) {
return self::$defaultInstance->fromTmpFile($tmpFile, $path);
}
- static public function getMimeType($path) {
+ public static function getMimeType($path) {
return self::$defaultInstance->getMimeType($path);
}
- static public function hash($type, $path, $raw = false) {
+ public static function hash($type, $path, $raw = false) {
return self::$defaultInstance->hash($type, $path, $raw);
}
- static public function free_space($path = '/') {
+ public static function free_space($path = '/') {
return self::$defaultInstance->free_space($path);
}
- static public function search($query) {
+ public static function search($query) {
return self::$defaultInstance->search($query);
}
/**
* @param string $query
*/
- static public function searchByMime($query) {
+ public static function searchByMime($query) {
return self::$defaultInstance->searchByMime($query);
}
@@ -771,7 +770,7 @@ class Filesystem {
* @param string $userId owner of the tags
* @return FileInfo[] array or file info
*/
- static public function searchByTag($tag, $userId) {
+ public static function searchByTag($tag, $userId) {
return self::$defaultInstance->searchByTag($tag, $userId);
}
@@ -782,7 +781,7 @@ class Filesystem {
* @param int $time
* @return bool
*/
- static public function hasUpdated($path, $time) {
+ public static function hasUpdated($path, $time) {
return self::$defaultInstance->hasUpdated($path, $time);
}
@@ -829,7 +828,7 @@ class Filesystem {
$patterns = [
'/\\\\/s', // no windows style slashes
'/\/\.(\/\.)?\//s', // remove '/./'
- '/\/{2,}/s', // remove squence of slashes
+ '/\/{2,}/s', // remove sequence of slashes
'/\/\.$/s', // remove trailing /.
];
@@ -913,7 +912,7 @@ class Filesystem {
* @param string $path
* @return string
*/
- static public function getETag($path) {
+ public static function getETag($path) {
return self::$defaultInstance->getETag($path);
}
}
diff --git a/lib/private/Files/Mount/MountPoint.php b/lib/private/Files/Mount/MountPoint.php
index 2b5fa3f7199..2cb25f07044 100644
--- a/lib/private/Files/Mount/MountPoint.php
+++ b/lib/private/Files/Mount/MountPoint.php
@@ -4,6 +4,7 @@
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -50,7 +51,7 @@ class MountPoint implements IMountPoint {
*
* @var array
*/
- protected $arguments = array();
+ protected $arguments = [];
protected $mountPoint;
/**
@@ -58,7 +59,7 @@ class MountPoint implements IMountPoint {
*
* @var array
*/
- protected $mountOptions = array();
+ protected $mountOptions = [];
/**
* @var \OC\Files\Storage\StorageFactory $loader
@@ -87,7 +88,7 @@ class MountPoint implements IMountPoint {
*/
public function __construct($storage, $mountpoint, $arguments = null, $loader = null, $mountOptions = null, $mountId = null) {
if (is_null($arguments)) {
- $arguments = array();
+ $arguments = [];
}
if (is_null($loader)) {
$this->loader = new StorageFactory();
diff --git a/lib/private/Files/Mount/ObjectHomeMountProvider.php b/lib/private/Files/Mount/ObjectHomeMountProvider.php
index e49b704fe96..9b243d7f8f2 100644
--- a/lib/private/Files/Mount/ObjectHomeMountProvider.php
+++ b/lib/private/Files/Mount/ObjectHomeMountProvider.php
@@ -57,7 +57,6 @@ class ObjectHomeMountProvider implements IHomeMountProvider {
* @return \OCP\Files\Mount\IMountPoint
*/
public function getHomeMountForUser(IUser $user, IStorageFactory $loader) {
-
$config = $this->getMultiBucketObjectStoreConfig($user);
if ($config === null) {
$config = $this->getSingleBucketObjectStoreConfig($user);
diff --git a/lib/private/Files/Node/File.php b/lib/private/Files/Node/File.php
index dcfa0b93ed1..915e336b996 100644
--- a/lib/private/Files/Node/File.php
+++ b/lib/private/Files/Node/File.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Julius Härtl <jus@bitgrid.net>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -67,12 +68,12 @@ class File extends Node implements \OCP\Files\File {
*/
public function putContent($data) {
if ($this->checkPermissions(\OCP\Constants::PERMISSION_UPDATE)) {
- $this->sendHooks(array('preWrite'));
+ $this->sendHooks(['preWrite']);
if ($this->view->file_put_contents($this->path, $data) === false) {
throw new GenericFileException('file_put_contents failed');
}
$this->fileInfo = null;
- $this->sendHooks(array('postWrite'));
+ $this->sendHooks(['postWrite']);
} else {
throw new NotPermittedException();
}
@@ -85,8 +86,8 @@ class File extends Node implements \OCP\Files\File {
* @throws LockedException
*/
public function fopen($mode) {
- $preHooks = array();
- $postHooks = array();
+ $preHooks = [];
+ $postHooks = [];
$requiredPermissions = \OCP\Constants::PERMISSION_READ;
switch ($mode) {
case 'r+':
@@ -126,7 +127,7 @@ class File extends Node implements \OCP\Files\File {
*/
public function delete() {
if ($this->checkPermissions(\OCP\Constants::PERMISSION_DELETE)) {
- $this->sendHooks(array('preDelete'));
+ $this->sendHooks(['preDelete']);
$fileInfo = $this->getFileInfo();
$this->view->unlink($this->path);
$nonExisting = new NonExistingFile($this->root, $this->view, $this->path, $fileInfo);
diff --git a/lib/private/Files/Node/Folder.php b/lib/private/Files/Node/Folder.php
index 727b08e9335..d9639e9f1ab 100644
--- a/lib/private/Files/Node/Folder.php
+++ b/lib/private/Files/Node/Folder.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Julius Härtl <jus@bitgrid.net>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -72,7 +73,7 @@ class Folder extends Node implements \OCP\Files\Folder {
}
if ($path === $this->path) {
return '/';
- } else if (strpos($path, $this->path . '/') !== 0) {
+ } elseif (strpos($path, $this->path . '/') !== 0) {
return null;
} else {
$path = substr($path, strlen($this->path));
@@ -160,7 +161,7 @@ class Folder extends Node implements \OCP\Files\Folder {
$fullPath = $this->getFullPath($path);
$nonExisting = new NonExistingFolder($this->root, $this->view, $fullPath);
$this->sendHooks(['preWrite', 'preCreate'], [$nonExisting]);
- if(!$this->view->mkdir($fullPath)) {
+ if (!$this->view->mkdir($fullPath)) {
throw new NotPermittedException('Could not create folder');
}
$node = new Folder($this->root, $this->view, $fullPath);
@@ -205,9 +206,9 @@ class Folder extends Node implements \OCP\Files\Folder {
*/
public function search($query) {
if (is_string($query)) {
- return $this->searchCommon('search', array('%' . $query . '%'));
+ return $this->searchCommon('search', ['%' . $query . '%']);
} else {
- return $this->searchCommon('searchQuery', array($query));
+ return $this->searchCommon('searchQuery', [$query]);
}
}
@@ -218,7 +219,7 @@ class Folder extends Node implements \OCP\Files\Folder {
* @return Node[]
*/
public function searchByMime($mimetype) {
- return $this->searchCommon('searchByMime', array($mimetype));
+ return $this->searchCommon('searchByMime', [$mimetype]);
}
/**
@@ -229,7 +230,7 @@ class Folder extends Node implements \OCP\Files\Folder {
* @return Node[]
*/
public function searchByTag($tag, $userId) {
- return $this->searchCommon('searchByTag', array($tag, $userId));
+ return $this->searchCommon('searchByTag', [$tag, $userId]);
}
/**
@@ -243,7 +244,7 @@ class Folder extends Node implements \OCP\Files\Folder {
throw new \InvalidArgumentException('searching by owner is only allows on the users home folder');
}
- $files = array();
+ $files = [];
$rootLength = strlen($this->path);
$mount = $this->root->getMount($this->path);
$storage = $mount->getStorage();
@@ -256,7 +257,7 @@ class Folder extends Node implements \OCP\Files\Folder {
$cache = $storage->getCache('');
- $results = call_user_func_array(array($cache, $method), $args);
+ $results = call_user_func_array([$cache, $method], $args);
foreach ($results as $result) {
if ($internalRootLength === 0 or substr($result['path'], 0, $internalRootLength) === $internalPath) {
$result['internalPath'] = $result['path'];
@@ -394,7 +395,7 @@ class Folder extends Node implements \OCP\Files\Folder {
public function delete() {
if ($this->checkPermissions(\OCP\Constants::PERMISSION_DELETE)) {
- $this->sendHooks(array('preDelete'));
+ $this->sendHooks(['preDelete']);
$fileInfo = $this->getFileInfo();
$this->view->rmdir($this->path);
$nonExisting = new NonExistingFolder($this->root, $this->view, $this->path, $fileInfo);
@@ -520,7 +521,7 @@ class Folder extends Node implements \OCP\Files\Folder {
$rootLength = strlen($jailRoot) + 1;
if ($path === $jailRoot) {
return $mount->getMountPoint();
- } else if (substr($path, 0, $rootLength) === $jailRoot . '/') {
+ } elseif (substr($path, 0, $rootLength) === $jailRoot . '/') {
return $mount->getMountPoint() . substr($path, $rootLength);
} else {
return null;
diff --git a/lib/private/Files/Node/HookConnector.php b/lib/private/Files/Node/HookConnector.php
index 67fadf19863..1f7f194c5f7 100644
--- a/lib/private/Files/Node/HookConnector.php
+++ b/lib/private/Files/Node/HookConnector.php
@@ -170,7 +170,6 @@ class HookConnector {
private function getNodeForPath($path) {
$info = Filesystem::getView()->getFileInfo($path);
if (!$info) {
-
$fullPath = Filesystem::getView()->getAbsolutePath($path);
if (isset($this->deleteMetaCache[$fullPath])) {
$info = $this->deleteMetaCache[$fullPath];
diff --git a/lib/private/Files/Node/LazyFolder.php b/lib/private/Files/Node/LazyFolder.php
new file mode 100644
index 00000000000..50cd0f90110
--- /dev/null
+++ b/lib/private/Files/Node/LazyFolder.php
@@ -0,0 +1,496 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2020 Robin Appelman <robin@icewind.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OC\Files\Node;
+
+/**
+ * Class LazyFolder
+ *
+ * This is a lazy wrapper around a folder. So only
+ * once it is needed this will get initialized.
+ *
+ * @package OC\Files\Node
+ */
+class LazyFolder implements \OCP\Files\Folder {
+ /** @var \Closure */
+ private $folderClosure;
+
+ /** @var LazyFolder | null */
+ private $folder = null;
+
+ /**
+ * LazyFolder constructor.
+ *
+ * @param \Closure $folderClosure
+ */
+ public function __construct(\Closure $folderClosure) {
+ $this->folderClosure = $folderClosure;
+ }
+
+ /**
+ * Magic method to first get the real rootFolder and then
+ * call $method with $args on it
+ *
+ * @param $method
+ * @param $args
+ * @return mixed
+ */
+ public function __call($method, $args) {
+ if ($this->folder === null) {
+ $this->folder = call_user_func($this->folderClosure);
+ }
+
+ return call_user_func_array([$this->folder, $method], $args);
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getUser() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function listen($scope, $method, callable $callback) {
+ $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function removeListener($scope = null, $method = null, callable $callback = null) {
+ $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function emit($scope, $method, $arguments = []) {
+ $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function mount($storage, $mountPoint, $arguments = []) {
+ $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getMount($mountPoint) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getMountsIn($mountPoint) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getMountByStorageId($storageId) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getMountByNumericStorageId($numericId) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function unMount($mount) {
+ $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function get($path) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function rename($targetPath) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function delete() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function copy($targetPath) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function touch($mtime = null) {
+ $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getStorage() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getPath() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getInternalPath() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getId() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function stat() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getMTime() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getSize($includeMounts = true) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getEtag() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getPermissions() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function isReadable() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function isUpdateable() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function isDeletable() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function isShareable() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getParent() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getName() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getUserFolder($userId) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getMimetype() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getMimePart() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function isEncrypted() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getType() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function isShared() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function isMounted() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getMountPoint() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getOwner() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getChecksum() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ public function getExtension(): string {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getFullPath($path) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getRelativePath($path) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function isSubNode($node) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getDirectoryListing() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function nodeExists($path) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function newFolder($path) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function newFile($path, $content = null) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function search($query) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function searchByMime($mimetype) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function searchByTag($tag, $userId) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getById($id) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getFreeSpace() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function isCreatable() {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getNonExistingName($name) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function move($targetPath) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function lock($type) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function changeLock($targetType) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function unlock($type) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getRecent($limit, $offset = 0) {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getCreationTime(): int {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getUploadTime(): int {
+ return $this->__call(__FUNCTION__, func_get_args());
+ }
+}
diff --git a/lib/private/Files/Node/LazyRoot.php b/lib/private/Files/Node/LazyRoot.php
index 8076c3b4f6a..e17640373fe 100644
--- a/lib/private/Files/Node/LazyRoot.php
+++ b/lib/private/Files/Node/LazyRoot.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -33,466 +34,11 @@ use OCP\Files\IRootFolder;
*
* @package OC\Files\Node
*/
-class LazyRoot implements IRootFolder {
- /** @var \Closure */
- private $rootFolderClosure;
-
- /** @var IRootFolder */
- private $rootFolder;
-
- /**
- * LazyRoot constructor.
- *
- * @param \Closure $rootFolderClosure
- */
- public function __construct(\Closure $rootFolderClosure) {
- $this->rootFolderClosure = $rootFolderClosure;
- }
-
- /**
- * Magic method to first get the real rootFolder and then
- * call $method with $args on it
- *
- * @param $method
- * @param $args
- * @return mixed
- */
- public function __call($method, $args) {
- if ($this->rootFolder === null) {
- $this->rootFolder = call_user_func($this->rootFolderClosure);
- }
-
- return call_user_func_array([$this->rootFolder, $method], $args);
- }
-
- /**
- * @inheritDoc
- */
- public function getUser() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function listen($scope, $method, callable $callback) {
- $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function removeListener($scope = null, $method = null, callable $callback = null) {
- $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function emit($scope, $method, $arguments = array()) {
- $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function mount($storage, $mountPoint, $arguments = array()) {
- $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getMount($mountPoint) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getMountsIn($mountPoint) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getMountByStorageId($storageId) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getMountByNumericStorageId($numericId) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function unMount($mount) {
- $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function get($path) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function rename($targetPath) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function delete() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function copy($targetPath) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function touch($mtime = null) {
- $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getStorage() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getPath() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getInternalPath() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getId() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function stat() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getMTime() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getSize($includeMounts = true) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getEtag() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getPermissions() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function isReadable() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function isUpdateable() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function isDeletable() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function isShareable() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getParent() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getName() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
+class LazyRoot extends LazyFolder implements IRootFolder {
/**
* @inheritDoc
*/
public function getUserFolder($userId) {
return $this->__call(__FUNCTION__, func_get_args());
}
-
- /**
- * @inheritDoc
- */
- public function getMimetype() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getMimePart() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function isEncrypted() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getType() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function isShared() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function isMounted() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getMountPoint() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getOwner() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getChecksum() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- public function getExtension(): string {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getFullPath($path) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getRelativePath($path) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function isSubNode($node) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getDirectoryListing() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function nodeExists($path) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function newFolder($path) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function newFile($path, $content = null) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function search($query) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function searchByMime($mimetype) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function searchByTag($tag, $userId) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getById($id) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getFreeSpace() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function isCreatable() {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getNonExistingName($name) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function move($targetPath) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function lock($type) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function changeLock($targetType) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function unlock($type) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getRecent($limit, $offset = 0) {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getCreationTime(): int {
- return $this->__call(__FUNCTION__, func_get_args());
- }
-
- /**
- * @inheritDoc
- */
- public function getUploadTime(): int {
- return $this->__call(__FUNCTION__, func_get_args());
- }
}
diff --git a/lib/private/Files/Node/Node.php b/lib/private/Files/Node/Node.php
index 896b3050384..70821e685f8 100644
--- a/lib/private/Files/Node/Node.php
+++ b/lib/private/Files/Node/Node.php
@@ -4,6 +4,7 @@
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Julius Härtl <jus@bitgrid.net>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -139,9 +140,9 @@ class Node implements \OCP\Files\Node {
*/
public function touch($mtime = null) {
if ($this->checkPermissions(\OCP\Constants::PERMISSION_UPDATE)) {
- $this->sendHooks(array('preTouch'));
+ $this->sendHooks(['preTouch']);
$this->view->touch($this->path, $mtime);
- $this->sendHooks(array('postTouch'));
+ $this->sendHooks(['postTouch']);
if ($this->fileInfo) {
if (is_null($mtime)) {
$mtime = time();
@@ -464,5 +465,4 @@ class Node implements \OCP\Files\Node {
public function getUploadTime(): int {
return $this->getFileInfo()->getUploadTime();
}
-
}
diff --git a/lib/private/Files/Node/Root.php b/lib/private/Files/Node/Root.php
index 948715aec04..f24082851e0 100644
--- a/lib/private/Files/Node/Root.php
+++ b/lib/private/Files/Node/Root.php
@@ -6,6 +6,7 @@
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
+ * @author Julius Härtl <jus@bitgrid.net>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -35,6 +36,7 @@ use OC\Cache\CappedMemoryCache;
use OC\Files\Mount\Manager;
use OC\Files\Mount\MountPoint;
use OC\Hooks\PublicEmitter;
+use OC\User\NoUserException;
use OCP\Files\Config\IUserMountCache;
use OCP\Files\IRootFolder;
use OCP\Files\NotFoundException;
@@ -133,7 +135,7 @@ class Root extends Folder implements IRootFolder {
* @param string $method
* @param Node[] $arguments
*/
- public function emit($scope, $method, $arguments = array()) {
+ public function emit($scope, $method, $arguments = []) {
$this->emitter->emit($scope, $method, $arguments);
}
@@ -142,7 +144,7 @@ class Root extends Folder implements IRootFolder {
* @param string $mountPoint
* @param array $arguments
*/
- public function mount($storage, $mountPoint, $arguments = array()) {
+ public function mount($storage, $mountPoint, $arguments = []) {
$mount = new MountPoint($storage, $mountPoint, $arguments);
$this->mountManager->addMount($mount);
}
@@ -352,7 +354,8 @@ class Root extends Folder implements IRootFolder {
*
* @param string $userId user ID
* @return \OCP\Files\Folder
- * @throws \OC\User\NoUserException
+ * @throws NoUserException
+ * @throws NotPermittedException
*/
public function getUserFolder($userId) {
$userObject = $this->userManager->get($userId);
@@ -367,7 +370,7 @@ class Root extends Folder implements IRootFolder {
'app' => 'files',
]
);
- throw new \OC\User\NoUserException('Backends provided no user object');
+ throw new NoUserException('Backends provided no user object');
}
$userId = $userObject->getUID();
diff --git a/lib/private/Files/ObjectStore/HomeObjectStoreStorage.php b/lib/private/Files/ObjectStore/HomeObjectStoreStorage.php
index f7d565d5cd1..7a95665b10d 100644
--- a/lib/private/Files/ObjectStore/HomeObjectStoreStorage.php
+++ b/lib/private/Files/ObjectStore/HomeObjectStoreStorage.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -34,14 +35,14 @@ class HomeObjectStoreStorage extends ObjectStoreStorage implements \OCP\Files\IH
* @param array $params
*/
public function __construct($params) {
- if ( ! isset($params['user']) || ! $params['user'] instanceof User) {
+ if (! isset($params['user']) || ! $params['user'] instanceof User) {
throw new \Exception('missing user object in parameters');
}
$this->user = $params['user'];
parent::__construct($params);
}
- public function getId () {
+ public function getId() {
return 'object::user:' . $this->user->getUID();
}
@@ -65,6 +66,4 @@ class HomeObjectStoreStorage extends ObjectStoreStorage implements \OCP\Files\IH
public function getUser($path = null) {
return $this->user;
}
-
-
}
diff --git a/lib/private/Files/ObjectStore/NoopScanner.php b/lib/private/Files/ObjectStore/NoopScanner.php
index f82eb7b1ddc..25b52416efd 100644
--- a/lib/private/Files/ObjectStore/NoopScanner.php
+++ b/lib/private/Files/ObjectStore/NoopScanner.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -25,11 +26,11 @@
*/
namespace OC\Files\ObjectStore;
+
use OC\Files\Cache\Scanner;
use OC\Files\Storage\Storage;
class NoopScanner extends Scanner {
-
public function __construct(Storage $storage) {
//we don't need the storage, so do nothing here
}
@@ -43,8 +44,8 @@ class NoopScanner extends Scanner {
* @param array|null $cacheData existing data in the cache for the file to be scanned
* @return array an array of metadata of the scanned file
*/
- public function scanFile($file, $reuseExisting = 0, $parentId = -1, $cacheData = null, $lock = true) {
- return array();
+ public function scanFile($file, $reuseExisting = 0, $parentId = -1, $cacheData = null, $lock = true, $data = null) {
+ return [];
}
/**
@@ -56,7 +57,7 @@ class NoopScanner extends Scanner {
* @return array with the meta data of the scanned file or folder
*/
public function scan($path, $recursive = self::SCAN_RECURSIVE, $reuse = -1, $lock = true) {
- return array();
+ return [];
}
/**
diff --git a/lib/private/Files/ObjectStore/ObjectStoreStorage.php b/lib/private/Files/ObjectStore/ObjectStoreStorage.php
index e0d437839a0..a5112bcbba6 100644
--- a/lib/private/Files/ObjectStore/ObjectStoreStorage.php
+++ b/lib/private/Files/ObjectStore/ObjectStoreStorage.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bjoern Schiessle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Marcel Klehr <mklehr@gmx.net>
@@ -104,7 +105,7 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
// something went wrong
return false;
}
- } else if ($parentType === 'file') {
+ } elseif ($parentType === 'file') {
// parent is a file
return false;
}
@@ -181,7 +182,7 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
return false;
}
} else {
- if(!$this->unlink($child['path'])) {
+ if (!$this->unlink($child['path'])) {
return false;
}
}
@@ -245,7 +246,7 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
$path = $this->normalizePath($path);
try {
- $files = array();
+ $files = [];
$folderContents = $this->getCache()->getFolderContents($path);
foreach ($folderContents as $file) {
$files[] = $file['name'];
@@ -303,6 +304,7 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
} else {
return false;
}
+ // no break
case 'w':
case 'wb':
case 'w+':
@@ -375,14 +377,14 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
// work with all object storage implementations
$this->file_put_contents($path, ' ');
$mimeType = \OC::$server->getMimeTypeDetector()->detectPath($path);
- $stat = array(
+ $stat = [
'etag' => $this->getETag($path),
'mimetype' => $mimeType,
'size' => 0,
'mtime' => $mtime,
'storage_mtime' => $mtime,
'permissions' => \OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_CREATE,
- );
+ ];
$this->getCache()->put($path, $stat);
} catch (\Exception $ex) {
$this->logger->logException($ex, [
diff --git a/lib/private/Files/ObjectStore/S3ConnectionTrait.php b/lib/private/Files/ObjectStore/S3ConnectionTrait.php
index f931b6092a6..5a619182238 100644
--- a/lib/private/Files/ObjectStore/S3ConnectionTrait.php
+++ b/lib/private/Files/ObjectStore/S3ConnectionTrait.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016 Robin Appelman <robin@icewind.nl>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author S. Cat <33800996+sparrowjack63@users.noreply.github.com>
@@ -117,7 +118,7 @@ trait S3ConnectionTrait {
if (!$this->connection->isBucketDnsCompatible($this->bucket)) {
throw new \Exception("The bucket will not be created because the name is not dns compatible, please correct it: " . $this->bucket);
}
- $this->connection->createBucket(array('Bucket' => $this->bucket));
+ $this->connection->createBucket(['Bucket' => $this->bucket]);
$this->testTimeout();
} catch (S3Exception $e) {
$logger->logException($e, [
diff --git a/lib/private/Files/ObjectStore/S3ObjectTrait.php b/lib/private/Files/ObjectStore/S3ObjectTrait.php
index 6188357521b..f749769cd09 100644
--- a/lib/private/Files/ObjectStore/S3ObjectTrait.php
+++ b/lib/private/Files/ObjectStore/S3ObjectTrait.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -30,6 +31,7 @@ use Aws\S3\MultipartUploader;
use Aws\S3\ObjectUploader;
use Aws\S3\S3Client;
use Icewind\Streams\CallbackWrapper;
+use OC\Files\Stream\SeekableHttpStream;
const S3_UPLOAD_PART_SIZE = 524288000; // 500MB
@@ -48,28 +50,30 @@ trait S3ObjectTrait {
* @throws \Exception when something goes wrong, message will be logged
* @since 7.0.0
*/
- function readObject($urn) {
- $client = $this->getConnection();
- $command = $client->getCommand('GetObject', [
- 'Bucket' => $this->bucket,
- 'Key' => $urn
- ]);
- $request = \Aws\serialize($command);
- $headers = [];
- foreach ($request->getHeaders() as $key => $values) {
- foreach ($values as $value) {
- $headers[] = "$key: $value";
+ public function readObject($urn) {
+ return SeekableHttpStream::open(function ($range) use ($urn) {
+ $command = $this->getConnection()->getCommand('GetObject', [
+ 'Bucket' => $this->bucket,
+ 'Key' => $urn,
+ 'Range' => 'bytes=' . $range,
+ ]);
+ $request = \Aws\serialize($command);
+ $headers = [];
+ foreach ($request->getHeaders() as $key => $values) {
+ foreach ($values as $value) {
+ $headers[] = "$key: $value";
+ }
}
- }
- $opts = [
- 'http' => [
- 'protocol_version' => 1.1,
- 'header' => $headers
- ]
- ];
+ $opts = [
+ 'http' => [
+ 'protocol_version' => 1.1,
+ 'header' => $headers,
+ ],
+ ];
- $context = stream_context_create($opts);
- return fopen($request->getUri(), 'r', false, $context);
+ $context = stream_context_create($opts);
+ return fopen($request->getUri(), 'r', false, $context);
+ });
}
/**
@@ -78,7 +82,7 @@ trait S3ObjectTrait {
* @throws \Exception when something goes wrong, message will be logged
* @since 7.0.0
*/
- function writeObject($urn, $stream) {
+ public function writeObject($urn, $stream) {
$count = 0;
$countStream = CallbackWrapper::wrap($stream, function ($read) use (&$count) {
$count += $read;
@@ -87,7 +91,7 @@ trait S3ObjectTrait {
$uploader = new MultipartUploader($this->getConnection(), $countStream, [
'bucket' => $this->bucket,
'key' => $urn,
- 'part_size' => S3_UPLOAD_PART_SIZE
+ 'part_size' => S3_UPLOAD_PART_SIZE,
]);
try {
@@ -111,10 +115,10 @@ trait S3ObjectTrait {
* @throws \Exception when something goes wrong, message will be logged
* @since 7.0.0
*/
- function deleteObject($urn) {
+ public function deleteObject($urn) {
$this->getConnection()->deleteObject([
'Bucket' => $this->bucket,
- 'Key' => $urn
+ 'Key' => $urn,
]);
}
diff --git a/lib/private/Files/ObjectStore/S3Signature.php b/lib/private/Files/ObjectStore/S3Signature.php
index 6216992ad7a..f9ea2e22aad 100644
--- a/lib/private/Files/ObjectStore/S3Signature.php
+++ b/lib/private/Files/ObjectStore/S3Signature.php
@@ -33,8 +33,7 @@ use Psr\Http\Message\RequestInterface;
/**
* Legacy Amazon S3 signature implementation
*/
-class S3Signature implements SignatureInterface
-{
+class S3Signature implements SignatureInterface {
/** @var array Query string values that must be signed */
private $signableQueryString = [
'acl', 'cors', 'delete', 'lifecycle', 'location', 'logging',
@@ -52,8 +51,7 @@ class S3Signature implements SignatureInterface
/** @var \Aws\S3\S3UriParser S3 URI parser */
private $parser;
- public function __construct()
- {
+ public function __construct() {
$this->parser = new S3UriParser();
// Ensure that the signable query string parameters are sorted
sort($this->signableQueryString);
@@ -140,8 +138,7 @@ class S3Signature implements SignatureInterface
return Psr7\modify_request($request, $modify);
}
- private function signString($string, CredentialsInterface $credentials)
- {
+ private function signString($string, CredentialsInterface $credentials) {
return base64_encode(
hash_hmac('sha1', $string, $credentials->getSecretKey(), true)
);
@@ -166,8 +163,7 @@ class S3Signature implements SignatureInterface
return $buffer;
}
- private function createCanonicalizedAmzHeaders(RequestInterface $request)
- {
+ private function createCanonicalizedAmzHeaders(RequestInterface $request) {
$headers = [];
foreach ($request->getHeaders() as $name => $header) {
$name = strtolower($name);
@@ -188,8 +184,7 @@ class S3Signature implements SignatureInterface
return implode("\n", $headers) . "\n";
}
- private function createCanonicalizedResource(RequestInterface $request)
- {
+ private function createCanonicalizedResource(RequestInterface $request) {
$data = $this->parser->parse($request->getUri());
$buffer = '/';
diff --git a/lib/private/Files/ObjectStore/StorageObjectStore.php b/lib/private/Files/ObjectStore/StorageObjectStore.php
index 0321b7cdf5f..a7551385b34 100644
--- a/lib/private/Files/ObjectStore/StorageObjectStore.php
+++ b/lib/private/Files/ObjectStore/StorageObjectStore.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016 Robin Appelman <robin@icewind.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Robin Appelman <robin@icewind.nl>
*
* @license GNU AGPL version 3 or any later version
@@ -44,7 +45,7 @@ class StorageObjectStore implements IObjectStore {
* @return string the container or bucket name where objects are stored
* @since 7.0.0
*/
- function getStorageId() {
+ public function getStorageId() {
$this->storage->getId();
}
@@ -54,7 +55,7 @@ class StorageObjectStore implements IObjectStore {
* @throws \Exception when something goes wrong, message will be logged
* @since 7.0.0
*/
- function readObject($urn) {
+ public function readObject($urn) {
$handle = $this->storage->fopen($urn, 'r');
if ($handle) {
return $handle;
@@ -69,7 +70,7 @@ class StorageObjectStore implements IObjectStore {
* @throws \Exception when something goes wrong, message will be logged
* @since 7.0.0
*/
- function writeObject($urn, $stream) {
+ public function writeObject($urn, $stream) {
$handle = $this->storage->fopen($urn, 'w');
if ($handle) {
stream_copy_to_stream($stream, $handle);
@@ -85,7 +86,7 @@ class StorageObjectStore implements IObjectStore {
* @throws \Exception when something goes wrong, message will be logged
* @since 7.0.0
*/
- function deleteObject($urn) {
+ public function deleteObject($urn) {
$this->storage->unlink($urn);
}
diff --git a/lib/private/Files/ObjectStore/Swift.php b/lib/private/Files/ObjectStore/Swift.php
index 9a2aa82295e..87347c3f71b 100644
--- a/lib/private/Files/ObjectStore/Swift.php
+++ b/lib/private/Files/ObjectStore/Swift.php
@@ -25,12 +25,15 @@
namespace OC\Files\ObjectStore;
+use GuzzleHttp\Client;
+use GuzzleHttp\Exception\BadResponseException;
use function GuzzleHttp\Psr7\stream_for;
use Icewind\Streams\RetryWrapper;
use OCP\Files\NotFoundException;
use OCP\Files\ObjectStore\IObjectStore;
use OCP\Files\StorageAuthException;
-use OpenStack\Common\Error\BadResponseError;
+
+const SWIFT_SEGMENT_SIZE = 1073741824; // 1GB
class Swift implements IObjectStore {
/**
@@ -80,39 +83,49 @@ class Swift implements IObjectStore {
file_put_contents($tmpFile, $stream);
$handle = fopen($tmpFile, 'rb');
- $this->getContainer()->createObject([
- 'name' => $urn,
- 'stream' => stream_for($handle)
- ]);
+ if (filesize($tmpFile) < SWIFT_SEGMENT_SIZE) {
+ $this->getContainer()->createObject([
+ 'name' => $urn,
+ 'stream' => stream_for($handle)
+ ]);
+ } else {
+ $this->getContainer()->createLargeObject([
+ 'name' => $urn,
+ 'stream' => stream_for($handle),
+ 'segmentSize' => SWIFT_SEGMENT_SIZE
+ ]);
+ }
}
/**
* @param string $urn the unified resource name used to identify the object
* @return resource stream with the read data
- * @throws \Exception from openstack lib when something goes wrong
+ * @throws \Exception from openstack or GuzzleHttp libs when something goes wrong
* @throws NotFoundException if file does not exist
*/
public function readObject($urn) {
try {
- $object = $this->getContainer()->getObject($urn);
-
- // we need to keep a reference to objectContent or
- // the stream will be closed before we can do anything with it
- $objectContent = $object->download();
- } catch (BadResponseError $e) {
- if ($e->getResponse()->getStatusCode() === 404) {
+ $publicUri = $this->getContainer()->getObject($urn)->getPublicUri();
+ $tokenId = $this->swiftFactory->getCachedTokenId();
+
+ $response = (new Client())->request('GET', $publicUri,
+ [
+ 'stream' => true,
+ 'headers' => [
+ 'X-Auth-Token' => $tokenId,
+ 'Cache-Control' => 'no-cache'
+ ],
+ ]
+ );
+ } catch (BadResponseException $e) {
+ if ($e->getResponse() && $e->getResponse()->getStatusCode() === 404) {
throw new NotFoundException("object $urn not found in object store");
} else {
throw $e;
}
}
- $objectContent->rewind();
-
- $stream = $objectContent->detach();
- // save the object content in the context of the stream to prevent it being gc'd until the stream is closed
- stream_context_set_option($stream, 'swift', 'content', $objectContent);
- return RetryWrapper::wrap($stream);
+ return RetryWrapper::wrap($response->getBody()->detach());
}
/**
diff --git a/lib/private/Files/ObjectStore/SwiftFactory.php b/lib/private/Files/ObjectStore/SwiftFactory.php
index 93ff02f1f8b..0354fba638f 100644
--- a/lib/private/Files/ObjectStore/SwiftFactory.php
+++ b/lib/private/Files/ObjectStore/SwiftFactory.php
@@ -5,6 +5,8 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @author Julien Lutran <julien.lutran@corp.ovh.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -56,7 +58,7 @@ class SwiftFactory {
private $container = null;
private $logger;
- const DEFAULT_OPTIONS = [
+ public const DEFAULT_OPTIONS = [
'autocreate' => false,
'urlType' => 'publicURL',
'catalogName' => 'swift',
@@ -69,6 +71,25 @@ class SwiftFactory {
$this->logger = $logger;
}
+ /**
+ * Gets currently cached token id
+ *
+ * @return string
+ * @throws StorageAuthException
+ */
+ public function getCachedTokenId() {
+ if (!isset($this->params['cachedToken'])) {
+ throw new StorageAuthException('Unauthenticated ObjectStore connection');
+ }
+
+ // Is it V2 token?
+ if (isset($this->params['cachedToken']['token'])) {
+ return $this->params['cachedToken']['token']['id'];
+ }
+
+ return $this->params['cachedToken']['id'];
+ }
+
private function getCachedToken(string $cacheKey) {
$cachedTokenString = $this->cache->get($cacheKey . '/token');
if ($cachedTokenString) {
@@ -81,10 +102,10 @@ class SwiftFactory {
private function cacheToken(Token $token, string $serviceUrl, string $cacheKey) {
if ($token instanceof \OpenStack\Identity\v3\Models\Token) {
// for v3 the catalog is cached as part of the token, so no need to cache $serviceUrl separately
- $value = json_encode($token->export());
+ $value = $token->export();
} else {
/** @var \OpenStack\Identity\v2\Models\Token $token */
- $value = json_encode([
+ $value = [
'serviceUrl' => $serviceUrl,
'token' => [
'issued_at' => $token->issuedAt->format('c'),
@@ -92,9 +113,11 @@ class SwiftFactory {
'id' => $token->id,
'tenant' => $token->tenant
]
- ]);
+ ];
}
- $this->cache->set($cacheKey . '/token', $value);
+
+ $this->params['cachedToken'] = $value;
+ $this->cache->set($cacheKey . '/token', json_encode($value));
}
/**
@@ -119,6 +142,10 @@ class SwiftFactory {
if (!isset($this->params['tenantName']) && isset($this->params['tenant'])) {
$this->params['tenantName'] = $this->params['tenant'];
}
+ if (isset($this->params['domain'])) {
+ $this->params['scope']['project']['name'] = $this->params['tenant'];
+ $this->params['scope']['project']['domain']['name'] = $this->params['domain'];
+ }
$this->params = array_merge(self::DEFAULT_OPTIONS, $this->params);
$cacheKey = $userName . '@' . $this->params['url'] . '/' . $this->params['container'];
@@ -158,7 +185,7 @@ class SwiftFactory {
$token = $authService->generateTokenFromCache($cachedToken);
if (\is_null($token->catalog)) {
$this->logger->warning('Invalid cached token for swift, no catalog set: ' . json_encode($cachedToken));
- } else if ($token->hasExpired()) {
+ } elseif ($token->hasExpired()) {
$this->logger->debug('Cached token for swift expired');
} else {
$hasValidCachedToken = true;
@@ -192,9 +219,9 @@ class SwiftFactory {
$statusCode = $e->getResponse()->getStatusCode();
if ($statusCode === 404) {
throw new StorageAuthException('Keystone not found, verify the keystone url', $e);
- } else if ($statusCode === 412) {
+ } elseif ($statusCode === 412) {
throw new StorageAuthException('Precondition failed, verify the keystone url', $e);
- } else if ($statusCode === 401) {
+ } elseif ($statusCode === 401) {
throw new StorageAuthException('Authentication failed, verify the username, password and possibly tenant', $e);
} else {
throw new StorageAuthException('Unknown error', $e);
diff --git a/lib/private/Files/ObjectStore/SwiftV2CachingAuthService.php b/lib/private/Files/ObjectStore/SwiftV2CachingAuthService.php
index 1343531e384..635d0908c9a 100644
--- a/lib/private/Files/ObjectStore/SwiftV2CachingAuthService.php
+++ b/lib/private/Files/ObjectStore/SwiftV2CachingAuthService.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OC\Files\ObjectStore;
-
use OpenStack\Identity\v2\Service;
class SwiftV2CachingAuthService extends Service {
diff --git a/lib/private/Files/Search/SearchOrder.php b/lib/private/Files/Search/SearchOrder.php
index 7a7eb01ed94..4bff8ba1b6c 100644
--- a/lib/private/Files/Search/SearchOrder.php
+++ b/lib/private/Files/Search/SearchOrder.php
@@ -23,7 +23,6 @@
namespace OC\Files\Search;
-
use OCP\Files\Search\ISearchOrder;
class SearchOrder implements ISearchOrder {
diff --git a/lib/private/Files/SimpleFS/NewSimpleFile.php b/lib/private/Files/SimpleFS/NewSimpleFile.php
index 2c74a16fa92..b8e50941e5f 100644
--- a/lib/private/Files/SimpleFS/NewSimpleFile.php
+++ b/lib/private/Files/SimpleFS/NewSimpleFile.php
@@ -1,7 +1,12 @@
-<?php declare(strict_types=1);
+<?php
+
+declare(strict_types=1);
+
/**
* @copyright Copyright (c) 2020 Robin Appelman <robin@icewind.nl>
*
+ * @author Robin Appelman <robin@icewind.nl>
+ *
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
@@ -15,7 +20,7 @@
* 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/>.
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
diff --git a/lib/private/Files/SimpleFS/SimpleFile.php b/lib/private/Files/SimpleFS/SimpleFile.php
index dbc5f06f22b..108f53ee9c7 100644
--- a/lib/private/Files/SimpleFS/SimpleFile.php
+++ b/lib/private/Files/SimpleFS/SimpleFile.php
@@ -2,6 +2,7 @@
/**
* @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Julius Härtl <jus@bitgrid.net>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -29,7 +30,7 @@ use OCP\Files\NotFoundException;
use OCP\Files\NotPermittedException;
use OCP\Files\SimpleFS\ISimpleFile;
-class SimpleFile implements ISimpleFile {
+class SimpleFile implements ISimpleFile {
/** @var File $file */
private $file;
@@ -179,5 +180,4 @@ class SimpleFile implements ISimpleFile {
public function write() {
return $this->file->fopen('w');
}
-
}
diff --git a/lib/private/Files/SimpleFS/SimpleFolder.php b/lib/private/Files/SimpleFS/SimpleFolder.php
index a4ebc6b4e53..dc8d6554e72 100644
--- a/lib/private/Files/SimpleFS/SimpleFolder.php
+++ b/lib/private/Files/SimpleFS/SimpleFolder.php
@@ -2,6 +2,8 @@
/**
* @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @license GNU AGPL version 3 or any later version
@@ -29,7 +31,7 @@ use OCP\Files\Node;
use OCP\Files\NotFoundException;
use OCP\Files\SimpleFS\ISimpleFolder;
-class SimpleFolder implements ISimpleFolder {
+class SimpleFolder implements ISimpleFolder {
/** @var Folder */
private $folder;
@@ -50,7 +52,7 @@ class SimpleFolder implements ISimpleFolder {
public function getDirectoryListing() {
$listing = $this->folder->getDirectoryListing();
- $fileListing = array_map(function(Node $file) {
+ $fileListing = array_map(function (Node $file) {
if ($file instanceof File) {
return new SimpleFile($file);
}
diff --git a/lib/private/Files/Storage/Common.php b/lib/private/Files/Storage/Common.php
index 8760fae1185..93e13937f5c 100644
--- a/lib/private/Files/Storage/Common.php
+++ b/lib/private/Files/Storage/Common.php
@@ -5,6 +5,7 @@
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Greta Doci <gretadoci@gmail.com>
* @author hkjolhede <hkjolhede@gmail.com>
* @author Joas Schilling <coding@schilljs.com>
@@ -75,7 +76,6 @@ use OCP\Lock\LockedException;
* in classes which extend it, e.g. $this->stat() .
*/
abstract class Common implements Storage, ILockingStorage, IWriteStreamStorage {
-
use LocalTempFileTrait;
protected $cache;
@@ -103,7 +103,7 @@ abstract class Common implements Storage, ILockingStorage, IWriteStreamStorage {
protected function remove($path) {
if ($this->is_dir($path)) {
return $this->rmdir($path);
- } else if ($this->is_file($path)) {
+ } elseif ($this->is_file($path)) {
return $this->unlink($path);
} else {
return false;
@@ -234,7 +234,7 @@ abstract class Common implements Storage, ILockingStorage, IWriteStreamStorage {
} else {
$source = $this->fopen($path1, 'r');
$target = $this->fopen($path2, 'w');
- list(, $result) = \OC_Helper::streamCopy($source, $target);
+ [, $result] = \OC_Helper::streamCopy($source, $target);
if (!$result) {
\OC::$server->getLogger()->warning("Failed to write data while copying $path1 to $path2");
}
@@ -296,11 +296,13 @@ abstract class Common implements Storage, ILockingStorage, IWriteStreamStorage {
* @return array
*/
protected function searchInDir($query, $dir = '') {
- $files = array();
+ $files = [];
$dh = $this->opendir($dir);
if (is_resource($dh)) {
while (($item = readdir($dh)) !== false) {
- if (\OC\Files\Filesystem::isIgnoredDir($item)) continue;
+ if (\OC\Files\Filesystem::isIgnoredDir($item)) {
+ continue;
+ }
if (strstr(strtolower($item), strtolower($query)) !== false) {
$files[] = $dir . '/' . $item;
}
@@ -434,11 +436,11 @@ abstract class Common implements Storage, ILockingStorage, IWriteStreamStorage {
$path = '/' . $path;
}
- $output = array();
+ $output = [];
foreach (explode('/', $path) as $chunk) {
if ($chunk == '..') {
array_pop($output);
- } else if ($chunk == '.') {
+ } elseif ($chunk == '.') {
} else {
$output[] = $chunk;
}
@@ -624,7 +626,7 @@ abstract class Common implements Storage, ILockingStorage, IWriteStreamStorage {
// are not the same as the original one.Once this is fixed we also
// need to adjust the encryption wrapper.
$target = $this->fopen($targetInternalPath, 'w');
- list(, $result) = \OC_Helper::streamCopy($source, $target);
+ [, $result] = \OC_Helper::streamCopy($source, $target);
if ($result and $preserveMtime) {
$this->touch($targetInternalPath, $sourceStorage->filemtime($sourceInternalPath));
}
@@ -717,6 +719,7 @@ abstract class Common implements Storage, ILockingStorage, IWriteStreamStorage {
$data['etag'] = $this->getETag($path);
$data['storage_mtime'] = $data['mtime'];
$data['permissions'] = $permissions;
+ $data['name'] = basename($path);
return $data;
}
@@ -857,9 +860,25 @@ abstract class Common implements Storage, ILockingStorage, IWriteStreamStorage {
if (!$target) {
return 0;
}
- list($count, $result) = \OC_Helper::streamCopy($stream, $target);
- fclose($stream);
- fclose($target);
+ try {
+ [$count, $result] = \OC_Helper::streamCopy($stream, $target);
+ } finally {
+ fclose($target);
+ fclose($stream);
+ }
return $count;
}
+
+ public function getDirectoryContent($directory): \Traversable {
+ $dh = $this->opendir($directory);
+ if (is_resource($dh)) {
+ $basePath = rtrim($directory, '/');
+ while (($file = readdir($dh)) !== false) {
+ if (!Filesystem::isIgnoredDir($file) && !Filesystem::isFileBlacklisted($file)) {
+ $childPath = $basePath . '/' . trim($file, '/');
+ yield $this->getMetaData($childPath);
+ }
+ }
+ }
+ }
}
diff --git a/lib/private/Files/Storage/CommonTest.php b/lib/private/Files/Storage/CommonTest.php
index 4ed9364a4b3..b59090893d4 100644
--- a/lib/private/Files/Storage/CommonTest.php
+++ b/lib/private/Files/Storage/CommonTest.php
@@ -4,6 +4,7 @@
*
* @author Bart Visscher <bartv@thisnet.nl>
* @author Christopher Schäpers <kondou@ts.unde.re>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Felix Moeller <mail@felixmoeller.de>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -32,7 +33,7 @@
namespace OC\Files\Storage;
-class CommonTest extends \OC\Files\Storage\Common{
+class CommonTest extends \OC\Files\Storage\Common {
/**
* underlying local storage used for missing functions
* @var \OC\Files\Storage\Local
@@ -43,7 +44,7 @@ class CommonTest extends \OC\Files\Storage\Common{
$this->storage=new \OC\Files\Storage\Local($params);
}
- public function getId(){
+ public function getId() {
return 'test::'.$this->storage->getId();
}
public function mkdir($path) {
diff --git a/lib/private/Files/Storage/DAV.php b/lib/private/Files/Storage/DAV.php
index 625e5f3f625..2974064f3a5 100644
--- a/lib/private/Files/Storage/DAV.php
+++ b/lib/private/Files/Storage/DAV.php
@@ -6,6 +6,7 @@
* @author Bart Visscher <bartv@thisnet.nl>
* @author Björn Schießle <bjoern@schiessle.org>
* @author Carlos Cerrillo <ccerrillo@gmail.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@statuscode.ch>
@@ -97,8 +98,11 @@ class DAV extends Common {
if (isset($params['host']) && isset($params['user']) && isset($params['password'])) {
$host = $params['host'];
//remove leading http[s], will be generated in createBaseUri()
- if (substr($host, 0, 8) == "https://") $host = substr($host, 8);
- else if (substr($host, 0, 7) == "http://") $host = substr($host, 7);
+ if (substr($host, 0, 8) == "https://") {
+ $host = substr($host, 8);
+ } elseif (substr($host, 0, 7) == "http://") {
+ $host = substr($host, 7);
+ }
$this->host = $host;
$this->user = $params['user'];
$this->password = $params['password'];
@@ -152,7 +156,7 @@ class DAV extends Common {
$this->client = new Client($settings);
$this->client->setThrowExceptions(true);
- if($this->secure === true) {
+ if ($this->secure === true) {
$certPath = $this->certManager->getAbsoluteBundlePath();
if (file_exists($certPath)) {
$this->certPath = $certPath;
@@ -265,7 +269,7 @@ class DAV extends Common {
try {
$response = $this->client->propFind(
$this->encodePath($path),
- array(
+ [
'{DAV:}getlastmodified',
'{DAV:}getcontentlength',
'{DAV:}getcontenttype',
@@ -273,7 +277,7 @@ class DAV extends Common {
'{http://open-collaboration-services.org/ns}share-permissions',
'{DAV:}resourcetype',
'{DAV:}getetag',
- )
+ ]
);
$this->statCache->set($path, $response);
} catch (ClientHttpException $e) {
@@ -319,7 +323,7 @@ class DAV extends Common {
if ($cachedState === false) {
// we know the file doesn't exist
return false;
- } else if (!is_null($cachedState)) {
+ } elseif (!is_null($cachedState)) {
return true;
}
// need to get from server
@@ -591,7 +595,7 @@ class DAV extends Common {
} catch (\Exception $e) {
$this->convertException($e, $path);
}
- return array();
+ return [];
}
/** {@inheritdoc} */
@@ -717,9 +721,9 @@ class DAV extends Common {
}
if (isset($response['{http://owncloud.org/ns}permissions'])) {
return $this->parsePermissions($response['{http://owncloud.org/ns}permissions']);
- } else if ($this->is_dir($path)) {
+ } elseif ($this->is_dir($path)) {
return Constants::PERMISSION_ALL;
- } else if ($this->file_exists($path)) {
+ } elseif ($this->file_exists($path)) {
return Constants::PERMISSION_ALL - Constants::PERMISSION_CREATE;
} else {
return 0;
@@ -796,10 +800,10 @@ class DAV extends Common {
}
if (!empty($etag) && $cachedData['etag'] !== $etag) {
return true;
- } else if (isset($response['{http://open-collaboration-services.org/ns}share-permissions'])) {
+ } elseif (isset($response['{http://open-collaboration-services.org/ns}share-permissions'])) {
$sharePermissions = (int)$response['{http://open-collaboration-services.org/ns}share-permissions'];
return $sharePermissions !== $cachedData['permissions'];
- } else if (isset($response['{http://owncloud.org/ns}permissions'])) {
+ } elseif (isset($response['{http://owncloud.org/ns}permissions'])) {
$permissions = $this->parsePermissions($response['{http://owncloud.org/ns}permissions']);
return $permissions !== $cachedData['permissions'];
} else {
@@ -849,22 +853,22 @@ class DAV extends Common {
if ($e->getHttpStatus() === Http::STATUS_UNAUTHORIZED) {
// either password was changed or was invalid all along
throw new StorageInvalidException(get_class($e) . ': ' . $e->getMessage());
- } else if ($e->getHttpStatus() === Http::STATUS_METHOD_NOT_ALLOWED) {
+ } elseif ($e->getHttpStatus() === Http::STATUS_METHOD_NOT_ALLOWED) {
// ignore exception for MethodNotAllowed, false will be returned
return;
- } else if ($e->getHttpStatus() === Http::STATUS_FORBIDDEN){
+ } elseif ($e->getHttpStatus() === Http::STATUS_FORBIDDEN) {
// The operation is forbidden. Fail somewhat gracefully
throw new ForbiddenException(get_class($e) . ':' . $e->getMessage());
}
throw new StorageNotAvailableException(get_class($e) . ': ' . $e->getMessage());
- } else if ($e instanceof ClientException) {
+ } elseif ($e instanceof ClientException) {
// connection timeout or refused, server could be temporarily down
throw new StorageNotAvailableException(get_class($e) . ': ' . $e->getMessage());
- } else if ($e instanceof \InvalidArgumentException) {
+ } elseif ($e instanceof \InvalidArgumentException) {
// parse error because the server returned HTML instead of XML,
// possibly temporarily down
throw new StorageNotAvailableException(get_class($e) . ': ' . $e->getMessage());
- } else if (($e instanceof StorageNotAvailableException) || ($e instanceof StorageInvalidException)) {
+ } elseif (($e instanceof StorageNotAvailableException) || ($e instanceof StorageInvalidException)) {
// rethrow
throw $e;
}
diff --git a/lib/private/Files/Storage/Flysystem.php b/lib/private/Files/Storage/Flysystem.php
index 2644bfbb1d3..a7747823acc 100644
--- a/lib/private/Files/Storage/Flysystem.php
+++ b/lib/private/Files/Storage/Flysystem.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -189,6 +190,7 @@ abstract class Flysystem extends Common {
case 'wb':
case 'wb+':
$useExisting = false;
+ // no break
case 'a':
case 'ab':
case 'r+':
diff --git a/lib/private/Files/Storage/Local.php b/lib/private/Files/Storage/Local.php
index 13a3ca87097..4cf3ac4799f 100644
--- a/lib/private/Files/Storage/Local.php
+++ b/lib/private/Files/Storage/Local.php
@@ -6,12 +6,12 @@
* @author Bart Visscher <bartv@thisnet.nl>
* @author Boris Rybalkin <ribalkin@gmail.com>
* @author Brice Maron <brice@bmaron.net>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jakob Sack <mail@jakobsack.de>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Klaas Freitag <freitag@owncloud.com>
* @author Lukas Reschke <lukas@statuscode.ch>
- * @author Martin Mattel <martin.mattel@diemattels.at>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -42,6 +42,7 @@ namespace OC\Files\Storage;
use OC\Files\Filesystem;
use OC\Files\Storage\Wrapper\Jail;
+use OCP\Constants;
use OCP\Files\ForbiddenException;
use OCP\Files\Storage\IStorage;
use OCP\ILogger;
@@ -107,7 +108,7 @@ class Local extends \OC\Files\Storage\Common {
* @var \SplFileInfo $file
*/
$file = $it->current();
- if (in_array($file->getBasename(), array('.', '..'))) {
+ if (in_array($file->getBasename(), ['.', '..'])) {
$it->next();
continue;
} elseif ($file->isDir()) {
@@ -150,6 +151,56 @@ class Local extends \OC\Files\Storage\Common {
return $statResult;
}
+ /**
+ * @inheritdoc
+ */
+ public function getMetaData($path) {
+ $fullPath = $this->getSourcePath($path);
+ clearstatcache();
+ $stat = @stat($fullPath);
+ if (!$stat) {
+ return null;
+ }
+
+ $permissions = Constants::PERMISSION_SHARE;
+ $statPermissions = $stat['mode'];
+ $isDir = ($statPermissions & 0x4000) === 0x4000;
+ if ($statPermissions & 0x0100) {
+ $permissions += Constants::PERMISSION_READ;
+ }
+ if ($statPermissions & 0x0080) {
+ $permissions += Constants::PERMISSION_UPDATE;
+ if ($isDir) {
+ $permissions += Constants::PERMISSION_CREATE;
+ }
+ }
+
+ if (!($path === '' || $path === '/')) { // deletable depends on the parents unix permissions
+ $parent = dirname($fullPath);
+ if (is_writable($parent)) {
+ $permissions += Constants::PERMISSION_DELETE;
+ }
+ }
+
+ $data = [];
+ $data['mimetype'] = $isDir ? 'httpd/unix-directory' : \OC::$server->getMimeTypeDetector()->detectPath($path);
+ $data['mtime'] = $stat['mtime'];
+ if ($data['mtime'] === false) {
+ $data['mtime'] = time();
+ }
+ if ($isDir) {
+ $data['size'] = -1; //unknown
+ } else {
+ $data['size'] = $stat['size'];
+ }
+ $data['etag'] = $this->calculateEtag($path, $stat);
+ $data['storage_mtime'] = $data['mtime'];
+ $data['permissions'] = $permissions;
+ $data['name'] = basename($path);
+
+ return $data;
+ }
+
public function filetype($path) {
$filetype = filetype($this->getSourcePath($path));
if ($filetype == 'link') {
@@ -225,12 +276,11 @@ class Local extends \OC\Files\Storage\Common {
public function unlink($path) {
if ($this->is_dir($path)) {
return $this->rmdir($path);
- } else if ($this->is_file($path)) {
+ } elseif ($this->is_file($path)) {
return unlink($this->getSourcePath($path));
} else {
return false;
}
-
}
private function treeContainsBlacklistedFile(string $path): bool {
@@ -266,7 +316,7 @@ class Local extends \OC\Files\Storage\Common {
if ($this->is_dir($path2)) {
$this->rmdir($path2);
- } else if ($this->is_file($path2)) {
+ } elseif ($this->is_file($path2)) {
$this->unlink($path2);
}
@@ -340,11 +390,12 @@ class Local extends \OC\Files\Storage\Common {
* @return array
*/
protected function searchInDir($query, $dir = '') {
- $files = array();
+ $files = [];
$physicalDir = $this->getSourcePath($dir);
foreach (scandir($physicalDir) as $item) {
- if (\OC\Files\Filesystem::isIgnoredDir($item))
+ if (\OC\Files\Filesystem::isIgnoredDir($item)) {
continue;
+ }
$physicalItem = $physicalDir . '/' . $item;
if (strstr(strtolower($item), strtolower($query)) !== false) {
@@ -423,9 +474,13 @@ class Local extends \OC\Files\Storage\Common {
* @return string
*/
public function getETag($path) {
- if ($this->is_file($path)) {
- $stat = $this->stat($path);
+ return $this->calculateEtag($path, $this->stat($path));
+ }
+ private function calculateEtag(string $path, array $stat): string {
+ if ($stat['mode'] & 0x4000) { // is_dir
+ return parent::getETag($path);
+ } else {
if ($stat === false) {
return md5('');
}
@@ -445,8 +500,6 @@ class Local extends \OC\Files\Storage\Common {
}
return md5($toHash);
- } else {
- return parent::getETag($path);
}
}
diff --git a/lib/private/Files/Storage/Storage.php b/lib/private/Files/Storage/Storage.php
index 748253f21bb..56d997ab974 100644
--- a/lib/private/Files/Storage/Storage.php
+++ b/lib/private/Files/Storage/Storage.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -23,6 +24,7 @@
*/
namespace OC\Files\Storage;
+
use OCP\Lock\ILockingProvider;
/**
@@ -118,4 +120,22 @@ interface Storage extends \OCP\Files\Storage {
* @throws \OCP\Lock\LockedException
*/
public function changeLock($path, $type, ILockingProvider $provider);
+
+ /**
+ * Get the contents of a directory with metadata
+ *
+ * @param string $directory
+ * @return \Traversable an iterator, containing file metadata
+ *
+ * The metadata array will contain the following fields
+ *
+ * - name
+ * - mimetype
+ * - mtime
+ * - size
+ * - etag
+ * - storage_mtime
+ * - permissions
+ */
+ public function getDirectoryContent($directory): \Traversable;
}
diff --git a/lib/private/Files/Storage/Temporary.php b/lib/private/Files/Storage/Temporary.php
index bb501cb5565..5e4024286c5 100644
--- a/lib/private/Files/Storage/Temporary.php
+++ b/lib/private/Files/Storage/Temporary.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -28,9 +29,9 @@ namespace OC\Files\Storage;
/**
* local storage backend in temporary folder for testing purpose
*/
-class Temporary extends Local{
+class Temporary extends Local {
public function __construct($arguments = null) {
- parent::__construct(array('datadir' => \OC::$server->getTempManager()->getTemporaryFolder()));
+ parent::__construct(['datadir' => \OC::$server->getTempManager()->getTemporaryFolder()]);
}
public function cleanUp() {
diff --git a/lib/private/Files/Storage/Wrapper/Availability.php b/lib/private/Files/Storage/Wrapper/Availability.php
index 1540ac98a4b..61814a0d087 100644
--- a/lib/private/Files/Storage/Wrapper/Availability.php
+++ b/lib/private/Files/Storage/Wrapper/Availability.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Robin Appelman <robin@icewind.nl>
* @author Robin McCorkell <robin@mccorkell.me.uk>
@@ -37,7 +38,7 @@ use OCP\IConfig;
* Throws a StorageNotAvailableException for storages with known failures
*/
class Availability extends Wrapper {
- const RECHECK_TTL_SEC = 600; // 10 minutes
+ public const RECHECK_TTL_SEC = 600; // 10 minutes
/** @var IConfig */
protected $config;
@@ -451,7 +452,7 @@ class Availability extends Wrapper {
*/
protected function setUnavailable(StorageNotAvailableException $e) {
$delay = self::RECHECK_TTL_SEC;
- if($e instanceof StorageAuthException) {
+ if ($e instanceof StorageAuthException) {
$delay = max(
// 30min
$this->config->getSystemValueInt('external_storage.auth_availability_delay', 1800),
@@ -461,4 +462,15 @@ class Availability extends Wrapper {
$this->getStorageCache()->setAvailability(false, $delay);
throw $e;
}
+
+
+
+ public function getDirectoryContent($directory): \Traversable {
+ $this->checkAvailability();
+ try {
+ return parent::getDirectoryContent($directory);
+ } catch (StorageNotAvailableException $e) {
+ $this->setUnavailable($e);
+ }
+ }
}
diff --git a/lib/private/Files/Storage/Wrapper/Encoding.php b/lib/private/Files/Storage/Wrapper/Encoding.php
index d1e0622808b..a2ef1780d6c 100644
--- a/lib/private/Files/Storage/Wrapper/Encoding.php
+++ b/lib/private/Files/Storage/Wrapper/Encoding.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Lukas Reschke <lukas@statuscode.ch>
+ * @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Vincent Petry <pvince81@owncloud.com>
*
@@ -534,4 +535,8 @@ class Encoding extends Wrapper {
public function getMetaData($path) {
return $this->storage->getMetaData($this->findPathToUse($path));
}
+
+ public function getDirectoryContent($directory): \Traversable {
+ return $this->storage->getDirectoryContent($this->findPathToUse($directory));
+ }
}
diff --git a/lib/private/Files/Storage/Wrapper/Encryption.php b/lib/private/Files/Storage/Wrapper/Encryption.php
index 68cf6f99ee5..897624ff6ae 100644
--- a/lib/private/Files/Storage/Wrapper/Encryption.php
+++ b/lib/private/Files/Storage/Wrapper/Encryption.php
@@ -5,6 +5,7 @@
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -50,7 +51,6 @@ use OCP\Files\Storage;
use OCP\ILogger;
class Encryption extends Wrapper {
-
use LocalTempFileTrait;
/** @var string */
@@ -87,7 +87,7 @@ class Encryption extends Wrapper {
private $mountManager;
/** @var array remember for which path we execute the repair step to avoid recursions */
- private $fixUnencryptedSizeOf = array();
+ private $fixUnencryptedSizeOf = [];
/** @var ArrayCache */
private $arrayCache;
@@ -105,18 +105,17 @@ class Encryption extends Wrapper {
* @param ArrayCache $arrayCache
*/
public function __construct(
- $parameters,
- IManager $encryptionManager = null,
- Util $util = null,
- ILogger $logger = null,
- IFile $fileHelper = null,
- $uid = null,
- IStorage $keyStorage = null,
- Update $update = null,
- Manager $mountManager = null,
- ArrayCache $arrayCache = null
- ) {
-
+ $parameters,
+ IManager $encryptionManager = null,
+ Util $util = null,
+ ILogger $logger = null,
+ IFile $fileHelper = null,
+ $uid = null,
+ IStorage $keyStorage = null,
+ Update $update = null,
+ Manager $mountManager = null,
+ ArrayCache $arrayCache = null
+ ) {
$this->mountPoint = $parameters['mountPoint'];
$this->mount = $parameters['mount'];
$this->encryptionManager = $encryptionManager;
@@ -125,7 +124,7 @@ class Encryption extends Wrapper {
$this->uid = $uid;
$this->fileHelper = $fileHelper;
$this->keyStorage = $keyStorage;
- $this->unencryptedSize = array();
+ $this->unencryptedSize = [];
$this->update = $update;
$this->mountManager = $mountManager;
$this->arrayCache = $arrayCache;
@@ -170,15 +169,7 @@ class Encryption extends Wrapper {
return $this->storage->filesize($path);
}
- /**
- * @param string $path
- * @return array
- */
- public function getMetaData($path) {
- $data = $this->storage->getMetaData($path);
- if (is_null($data)) {
- return null;
- }
+ private function modifyMetaData(string $path, array $data): array {
$fullPath = $this->getFullPath($path);
$info = $this->getCache()->get($path);
@@ -200,13 +191,31 @@ class Encryption extends Wrapper {
}
/**
+ * @param string $path
+ * @return array
+ */
+ public function getMetaData($path) {
+ $data = $this->storage->getMetaData($path);
+ if (is_null($data)) {
+ return null;
+ }
+ return $this->modifyMetaData($path, $data);
+ }
+
+ public function getDirectoryContent($directory): \Traversable {
+ $parent = rtrim($directory, '/');
+ foreach ($this->getWrapperStorage()->getDirectoryContent($directory) as $data) {
+ yield $this->modifyMetaData($parent . '/' . $data['name'], $data);
+ }
+ }
+
+ /**
* see http://php.net/manual/en/function.file_get_contents.php
*
* @param string $path
* @return string
*/
public function file_get_contents($path) {
-
$encryptionModule = $this->getEncryptionModule($path);
if ($encryptionModule) {
@@ -268,7 +277,6 @@ class Encryption extends Wrapper {
* @return bool
*/
public function rename($path1, $path2) {
-
$result = $this->storage->rename($path1, $path2);
if ($result &&
@@ -319,7 +327,6 @@ class Encryption extends Wrapper {
* @return bool
*/
public function isReadable($path) {
-
$isReadable = true;
$metaData = $this->getMetaData($path);
@@ -344,7 +351,6 @@ class Encryption extends Wrapper {
* @return bool
*/
public function copy($path1, $path2) {
-
$source = $this->getFullPath($path1);
if ($this->util->isExcluded($source)) {
@@ -385,7 +391,6 @@ class Encryption extends Wrapper {
$encryptionModuleId = $this->util->getEncryptionModuleId($header);
if ($this->util->isExcluded($fullPath) === false) {
-
$size = $unencryptedSize = 0;
$realFile = $this->util->stripPartialFileExtension($path);
$targetExists = $this->file_exists($realFile) || $this->file_exists($path);
@@ -408,7 +413,6 @@ class Encryption extends Wrapper {
}
try {
-
if (
$mode === 'w'
|| $mode === 'w+'
@@ -436,7 +440,7 @@ class Encryption extends Wrapper {
if (!empty($encryptionModuleId)) {
$encryptionModule = $this->encryptionManager->getEncryptionModule($encryptionModuleId);
$shouldEncrypt = true;
- } else if (empty($encryptionModuleId) && $info['encrypted'] === true) {
+ } elseif (empty($encryptionModuleId) && $info['encrypted'] === true) {
// we come from a old installation. No header and/or no module defined
// but the file is encrypted. In this case we need to use the
// OC_DEFAULT_MODULE to read the file
@@ -471,7 +475,6 @@ class Encryption extends Wrapper {
$size, $unencryptedSize, $headerSize, $signed);
return $handle;
}
-
}
return $this->storage->fopen($path, $mode);
@@ -488,7 +491,6 @@ class Encryption extends Wrapper {
* @return int unencrypted size
*/
protected function verifyUnencryptedSize($path, $unencryptedSize) {
-
$size = $this->storage->filesize($path);
$result = $unencryptedSize;
@@ -502,7 +504,7 @@ class Encryption extends Wrapper {
try {
$result = $this->fixUnencryptedSize($path, $size, $unencryptedSize);
} catch (\Exception $e) {
- $this->logger->error('Couldn\'t re-calculate unencrypted size for '. $path);
+ $this->logger->error('Couldn\'t re-calculate unencrypted size for ' . $path);
$this->logger->logException($e);
}
unset($this->fixUnencryptedSizeOf[$this->getFullPath($path)]);
@@ -522,7 +524,6 @@ class Encryption extends Wrapper {
* @return int calculated unencrypted size
*/
protected function fixUnencryptedSize($path, $size, $unencryptedSize) {
-
$headerSize = $this->getHeaderSize($path);
$header = $this->getHeader($path);
$encryptionModule = $this->getEncryptionModule($path);
@@ -556,7 +557,7 @@ class Encryption extends Wrapper {
// next highest is end of chunks, one subtracted is last one
// we have to read the last chunk, we can't just calculate it (because of padding etc)
- $lastChunkNr = ceil($size/ $blockSize)-1;
+ $lastChunkNr = ceil($size / $blockSize) - 1;
// calculate last chunk position
$lastChunkPos = ($lastChunkNr * $blockSize);
// try to fseek to the last chunk, if it fails we have to read the whole file
@@ -564,16 +565,16 @@ class Encryption extends Wrapper {
$newUnencryptedSize += $lastChunkNr * $unencryptedBlockSize;
}
- $lastChunkContentEncrypted='';
+ $lastChunkContentEncrypted = '';
$count = $blockSize;
while ($count > 0) {
- $data=fread($stream, $blockSize);
- $count=strlen($data);
+ $data = fread($stream, $blockSize);
+ $count = strlen($data);
$lastChunkContentEncrypted .= $data;
- if(strlen($lastChunkContentEncrypted) > $blockSize) {
+ if (strlen($lastChunkContentEncrypted) > $blockSize) {
$newUnencryptedSize += $unencryptedBlockSize;
- $lastChunkContentEncrypted=substr($lastChunkContentEncrypted, $blockSize);
+ $lastChunkContentEncrypted = substr($lastChunkContentEncrypted, $blockSize);
}
}
@@ -666,7 +667,7 @@ class Encryption extends Wrapper {
$cacheInformation = [
'encrypted' => $isEncrypted,
];
- if($isEncrypted) {
+ if ($isEncrypted) {
$encryptedVersion = $sourceStorage->getCache()->get($sourceInternalPath)['encryptedVersion'];
// In case of a move operation from an unencrypted to an encrypted
@@ -674,7 +675,7 @@ class Encryption extends Wrapper {
// correct value would be "1". Thus we manually set the value to "1"
// for those cases.
// See also https://github.com/owncloud/core/issues/23078
- if($encryptedVersion === 0 || !$keepEncryptionVersion) {
+ if ($encryptedVersion === 0 || !$keepEncryptionVersion) {
$encryptedVersion = 1;
}
@@ -753,7 +754,7 @@ class Encryption extends Wrapper {
try {
$source = $sourceStorage->fopen($sourceInternalPath, 'r');
$target = $this->fopen($targetInternalPath, 'w');
- list(, $result) = \OC_Helper::streamCopy($source, $target);
+ [, $result] = \OC_Helper::streamCopy($source, $target);
fclose($source);
fclose($target);
} catch (\Exception $e) {
@@ -761,7 +762,7 @@ class Encryption extends Wrapper {
fclose($target);
throw $e;
}
- if($result) {
+ if ($result) {
if ($preserveMtime) {
$this->touch($targetInternalPath, $sourceStorage->filemtime($sourceInternalPath));
}
@@ -774,7 +775,6 @@ class Encryption extends Wrapper {
}
}
return (bool)$result;
-
}
/**
@@ -892,7 +892,7 @@ class Encryption extends Wrapper {
* @return array
*/
protected function parseRawHeader($rawHeader) {
- $result = array();
+ $result = [];
if (substr($rawHeader, 0, strlen(Util::HEADER_START)) === Util::HEADER_START) {
$header = $rawHeader;
$endAt = strpos($header, Util::HEADER_END);
@@ -900,7 +900,7 @@ class Encryption extends Wrapper {
$header = substr($header, 0, $endAt + strlen(Util::HEADER_END));
// +1 to not start with an ':' which would result in empty element at the beginning
- $exploded = explode(':', substr($header, strlen(Util::HEADER_START)+1));
+ $exploded = explode(':', substr($header, strlen(Util::HEADER_START) + 1));
$element = array_shift($exploded);
while ($element !== Util::HEADER_END) {
@@ -934,7 +934,7 @@ class Encryption extends Wrapper {
if (!isset($result[Util::HEADER_ENCRYPTION_MODULE_KEY])) {
if (!empty($result)) {
$result[Util::HEADER_ENCRYPTION_MODULE_KEY] = 'OC_DEFAULT_MODULE';
- } else if ($exists) {
+ } elseif ($exists) {
// if the header was empty we have to check first if it is a encrypted file at all
// We would do query to filecache only if we know that entry in filecache exists
$info = $this->getCache()->get($path);
@@ -1029,15 +1029,13 @@ class Encryption extends Wrapper {
}
return $encryptionModule->shouldEncrypt($fullPath);
-
}
public function writeStream(string $path, $stream, int $size = null): int {
// always fall back to fopen
$target = $this->fopen($path, 'w');
- list($count, $result) = \OC_Helper::streamCopy($stream, $target);
+ [$count, $result] = \OC_Helper::streamCopy($stream, $target);
fclose($target);
return $count;
}
-
}
diff --git a/lib/private/Files/Storage/Wrapper/Jail.php b/lib/private/Files/Storage/Wrapper/Jail.php
index 93380baac5e..7350c104ba8 100644
--- a/lib/private/Files/Storage/Wrapper/Jail.php
+++ b/lib/private/Files/Storage/Wrapper/Jail.php
@@ -539,4 +539,8 @@ class Jail extends Wrapper {
return $count;
}
}
+
+ public function getDirectoryContent($directory): \Traversable {
+ return $this->getWrapperStorage()->getDirectoryContent($this->getUnjailedPath($directory));
+ }
}
diff --git a/lib/private/Files/Storage/Wrapper/PermissionsMask.php b/lib/private/Files/Storage/Wrapper/PermissionsMask.php
index c2cea31bd5a..6b453b4380a 100644
--- a/lib/private/Files/Storage/Wrapper/PermissionsMask.php
+++ b/lib/private/Files/Storage/Wrapper/PermissionsMask.php
@@ -157,4 +157,13 @@ class PermissionsMask extends Wrapper {
}
return parent::getScanner($path, $storage);
}
+
+ public function getDirectoryContent($directory): \Traversable {
+ foreach ($this->getWrapperStorage()->getDirectoryContent($directory) as $data) {
+ $data['scan_permissions'] = isset($data['scan_permissions']) ? $data['scan_permissions'] : $data['permissions'];
+ $data['permissions'] &= $this->mask;
+
+ yield $data;
+ }
+ }
}
diff --git a/lib/private/Files/Storage/Wrapper/Quota.php b/lib/private/Files/Storage/Wrapper/Quota.php
index b5a1be95aaf..62d3335987c 100644
--- a/lib/private/Files/Storage/Wrapper/Quota.php
+++ b/lib/private/Files/Storage/Wrapper/Quota.php
@@ -29,6 +29,7 @@
namespace OC\Files\Storage\Wrapper;
+use OC\Files\Filesystem;
use OCP\Files\Cache\ICacheEntry;
use OCP\Files\Storage\IStorage;
@@ -44,6 +45,8 @@ class Quota extends Wrapper {
*/
protected $sizeRoot;
+ private $config;
+
/**
* @param array $parameters
*/
@@ -51,6 +54,7 @@ class Quota extends Wrapper {
parent::__construct($parameters);
$this->quota = $parameters['quota'];
$this->sizeRoot = isset($parameters['root']) ? $parameters['root'] : '';
+ $this->config = \OC::$server->getSystemConfig();
}
/**
@@ -65,16 +69,21 @@ class Quota extends Wrapper {
* @param \OC\Files\Storage\Storage $storage
*/
protected function getSize($path, $storage = null) {
- if (is_null($storage)) {
- $cache = $this->getCache();
- } else {
- $cache = $storage->getCache();
- }
- $data = $cache->get($path);
- if ($data instanceof ICacheEntry and isset($data['size'])) {
- return $data['size'];
+ if ($this->config->getValue('quota_include_external_storage', false)) {
+ $rootInfo = Filesystem::getFileInfo('', 'ext');
+ return $rootInfo->getSize(true);
} else {
- return \OCP\Files\FileInfo::SPACE_NOT_COMPUTED;
+ if (is_null($storage)) {
+ $cache = $this->getCache();
+ } else {
+ $cache = $storage->getCache();
+ }
+ $data = $cache->get($path);
+ if ($data instanceof ICacheEntry and isset($data['size'])) {
+ return $data['size'];
+ } else {
+ return \OCP\Files\FileInfo::SPACE_NOT_COMPUTED;
+ }
}
}
@@ -220,5 +229,4 @@ class Quota extends Wrapper {
return parent::touch($path, $mtime);
}
-
}
diff --git a/lib/private/Files/Storage/Wrapper/Wrapper.php b/lib/private/Files/Storage/Wrapper/Wrapper.php
index 7cb24f9b5b6..4584bebe076 100644
--- a/lib/private/Files/Storage/Wrapper/Wrapper.php
+++ b/lib/private/Files/Storage/Wrapper/Wrapper.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -503,7 +504,7 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage, IWriteStrea
* @return mixed
*/
public function __call($method, $args) {
- return call_user_func_array(array($this->getWrapperStorage(), $method), $args);
+ return call_user_func_array([$this->getWrapperStorage(), $method], $args);
}
/**
@@ -636,4 +637,8 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage, IWriteStrea
return $count;
}
}
+
+ public function getDirectoryContent($directory): \Traversable {
+ return $this->getWrapperStorage()->getDirectoryContent($directory);
+ }
}
diff --git a/lib/private/Files/Stream/Encryption.php b/lib/private/Files/Stream/Encryption.php
index dc6cd9cea7f..1fc14daacbd 100644
--- a/lib/private/Files/Stream/Encryption.php
+++ b/lib/private/Files/Stream/Encryption.php
@@ -4,6 +4,7 @@
*
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author jknockaert <jasper@knockaert.nl>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author martink-p <47943787+martink-p@users.noreply.github.com>
@@ -109,7 +110,7 @@ class Encryption extends Wrapper {
protected $fileUpdated;
public function __construct() {
- $this->expectedContextProperties = array(
+ $this->expectedContextProperties = [
'source',
'storage',
'internalPath',
@@ -124,7 +125,7 @@ class Encryption extends Wrapper {
'encryptionStorage',
'headerSize',
'signed'
- );
+ ];
}
@@ -164,9 +165,8 @@ class Encryption extends Wrapper {
$headerSize,
$signed,
$wrapper = Encryption::class) {
-
- $context = stream_context_create(array(
- 'ocencryption' => array(
+ $context = stream_context_create([
+ 'ocencryption' => [
'source' => $source,
'storage' => $storage,
'internalPath' => $internalPath,
@@ -181,8 +181,8 @@ class Encryption extends Wrapper {
'encryptionStorage' => $encStorage,
'headerSize' => $headerSize,
'signed' => $signed
- )
- ));
+ ]
+ ]);
return self::wrapSource($source, $context, 'ocencryption', $wrapper, $mode);
}
@@ -232,7 +232,6 @@ class Encryption extends Wrapper {
}
}
return $context;
-
}
public function stream_open($path, $mode, $options, &$opened_path) {
@@ -284,7 +283,6 @@ class Encryption extends Wrapper {
}
return true;
-
}
public function stream_eof() {
@@ -292,7 +290,6 @@ class Encryption extends Wrapper {
}
public function stream_read($count) {
-
$result = '';
$count = min($count, $this->unencryptedSize - $this->position);
@@ -307,7 +304,7 @@ class Encryption extends Wrapper {
$result .= substr($this->cache, $blockPosition, $remainingLength);
$this->position += $remainingLength;
$count = 0;
- // otherwise remainder of current block is fetched, the block is flushed and the position updated
+ // otherwise remainder of current block is fetched, the block is flushed and the position updated
} else {
$result .= substr($this->cache, $blockPosition);
$this->flush();
@@ -316,7 +313,6 @@ class Encryption extends Wrapper {
}
}
return $result;
-
}
/**
@@ -377,7 +373,7 @@ class Encryption extends Wrapper {
$this->position += $remainingLength;
$length += $remainingLength;
$data = '';
- // if $data doesn't fit the current block, the fill the current block and reiterate
+ // if $data doesn't fit the current block, the fill the current block and reiterate
// after the block is filled, it is flushed and $data is updatedxxx
} else {
$this->cache = substr($this->cache, 0, $blockPosition) .
@@ -400,7 +396,6 @@ class Encryption extends Wrapper {
}
public function stream_seek($offset, $whence = SEEK_SET) {
-
$return = false;
switch ($whence) {
@@ -433,7 +428,6 @@ class Encryption extends Wrapper {
$return = true;
}
return $return;
-
}
public function stream_close() {
@@ -441,7 +435,7 @@ class Encryption extends Wrapper {
$position = (int)floor($this->position/$this->unencryptedBlockSize);
$remainingData = $this->encryptionModule->end($this->fullPath, $position . 'end');
if ($this->readOnly === false) {
- if(!empty($remainingData)) {
+ if (!empty($remainingData)) {
parent::stream_write($remainingData);
}
$this->encryptionStorage->updateUnencryptedSize($this->fullPath, $this->unencryptedSize);
@@ -501,7 +495,7 @@ class Encryption extends Wrapper {
$data = $this->stream_read_block($this->util->getBlockSize());
$position = (int)floor($this->position/$this->unencryptedBlockSize);
$numberOfChunks = (int)($this->unencryptedSize / $this->unencryptedBlockSize);
- if($numberOfChunks === $position) {
+ if ($numberOfChunks === $position) {
$position .= 'end';
}
$this->cache = $this->encryptionModule->decrypt($data, $position);
@@ -544,5 +538,4 @@ class Encryption extends Wrapper {
public function dir_opendir($path, $options) {
return false;
}
-
}
diff --git a/lib/private/Files/Stream/HashWrapper.php b/lib/private/Files/Stream/HashWrapper.php
new file mode 100644
index 00000000000..059dd117555
--- /dev/null
+++ b/lib/private/Files/Stream/HashWrapper.php
@@ -0,0 +1,77 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2020 Robin Appelman <robin@icewind.nl>
+ *
+ * @author Robin Appelman <robin@icewind.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OC\Files\Stream;
+
+use Icewind\Streams\Wrapper;
+
+class HashWrapper extends Wrapper {
+ protected $callback;
+ protected $hash;
+
+ public static function wrap($source, string $algo, callable $callback) {
+ $hash = hash_init($algo);
+ $context = stream_context_create([
+ 'hash' => [
+ 'source' => $source,
+ 'callback' => $callback,
+ 'hash' => $hash,
+ ],
+ ]);
+ return Wrapper::wrapSource($source, $context, 'hash', self::class);
+ }
+
+ protected function open() {
+ $context = $this->loadContext('hash');
+
+ $this->callback = $context['callback'];
+ $this->hash = $context['hash'];
+ return true;
+ }
+
+ public function dir_opendir($path, $options) {
+ return $this->open();
+ }
+
+ public function stream_open($path, $mode, $options, &$opened_path) {
+ return $this->open();
+ }
+
+ public function stream_read($count) {
+ $result = parent::stream_read($count);
+ hash_update($this->hash, $result);
+ return $result;
+ }
+
+ public function stream_close() {
+ if (is_callable($this->callback)) {
+ call_user_func($this->callback, hash_final($this->hash));
+ // prevent further calls by potential PHP 7 GC ghosts
+ $this->callback = null;
+ }
+ return parent::stream_close();
+ }
+}
diff --git a/lib/private/Files/Stream/Quota.php b/lib/private/Files/Stream/Quota.php
index 08272ad61cb..3bf46264b83 100644
--- a/lib/private/Files/Stream/Quota.php
+++ b/lib/private/Files/Stream/Quota.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -43,13 +44,13 @@ class Quota extends Wrapper {
* @param int $limit
* @return resource
*/
- static public function wrap($stream, $limit) {
- $context = stream_context_create(array(
- 'quota' => array(
+ public static function wrap($stream, $limit) {
+ $context = stream_context_create([
+ 'quota' => [
'source' => $stream,
'limit' => $limit
- )
- ));
+ ]
+ ]);
return Wrapper::wrapSource($stream, $context, 'quota', self::class);
}
@@ -66,17 +67,16 @@ class Quota extends Wrapper {
}
public function stream_seek($offset, $whence = SEEK_SET) {
- if ($whence === SEEK_END){
+ if ($whence === SEEK_END) {
// go to the end to find out last position's offset
$oldOffset = $this->stream_tell();
- if (fseek($this->source, 0, $whence) !== 0){
+ if (fseek($this->source, 0, $whence) !== 0) {
return false;
}
$whence = SEEK_SET;
$offset = $this->stream_tell() + $offset;
$this->limit += $oldOffset - $offset;
- }
- else if ($whence === SEEK_SET) {
+ } elseif ($whence === SEEK_SET) {
$this->limit += $this->stream_tell() - $offset;
} else {
$this->limit -= $offset;
diff --git a/lib/private/Files/Stream/SeekableHttpStream.php b/lib/private/Files/Stream/SeekableHttpStream.php
new file mode 100644
index 00000000000..efbfd293ad5
--- /dev/null
+++ b/lib/private/Files/Stream/SeekableHttpStream.php
@@ -0,0 +1,194 @@
+<?php
+/**
+ * @copyright Copyright (c) 2020, Lukas Stabe (lukas@stabe.de)
+ *
+ * @author Lukas Stabe <lukas@stabe.de>
+ * @author Robin Appelman <robin@icewind.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OC\Files\Stream;
+
+use Icewind\Streams\File;
+
+/**
+ * A stream wrapper that uses http range requests to provide a seekable stream for http reading
+ */
+class SeekableHttpStream implements File {
+ private const PROTOCOL = 'httpseek';
+
+ private static $registered = false;
+
+ /**
+ * Registers the stream wrapper using the `httpseek://` url scheme
+ * $return void
+ */
+ private static function registerIfNeeded() {
+ if (!self::$registered) {
+ stream_wrapper_register(
+ self::PROTOCOL,
+ self::class
+ );
+ self::$registered = true;
+ }
+ }
+
+ /**
+ * Open a readonly-seekable http stream
+ *
+ * The provided callback will be called with byte range and should return an http stream for the requested range
+ *
+ * @param callable $callback
+ * @return false|resource
+ */
+ public static function open(callable $callback) {
+ $context = stream_context_create([
+ SeekableHttpStream::PROTOCOL => [
+ 'callback' => $callback
+ ],
+ ]);
+
+ SeekableHttpStream::registerIfNeeded();
+ return fopen(SeekableHttpStream::PROTOCOL . '://', 'r', false, $context);
+ }
+
+ /** @var resource */
+ public $context;
+
+ /** @var callable */
+ private $openCallback;
+
+ /** @var resource */
+ private $current;
+ /** @var int */
+ private $offset = 0;
+
+ private function reconnect(int $start) {
+ $range = $start . '-';
+ if ($this->current != null) {
+ fclose($this->current);
+ }
+
+ $this->current = ($this->openCallback)($range);
+
+ if ($this->current === false) {
+ return false;
+ }
+
+ $responseHead = stream_get_meta_data($this->current)['wrapper_data'];
+ $rangeHeaders = array_values(array_filter($responseHead, function ($v) {
+ return preg_match('#^content-range:#i', $v) === 1;
+ }));
+ if (!$rangeHeaders) {
+ return false;
+ }
+ $contentRange = $rangeHeaders[0];
+
+ $content = trim(explode(':', $contentRange)[1]);
+ $range = trim(explode(' ', $content)[1]);
+ $begin = intval(explode('-', $range)[0]);
+
+ if ($begin !== $start) {
+ return false;
+ }
+
+ $this->offset = $begin;
+
+ return true;
+ }
+
+ public function stream_open($path, $mode, $options, &$opened_path) {
+ $options = stream_context_get_options($this->context)[self::PROTOCOL];
+ $this->openCallback = $options['callback'];
+
+ return $this->reconnect(0);
+ }
+
+ public function stream_read($count) {
+ if (!$this->current) {
+ return false;
+ }
+ $ret = fread($this->current, $count);
+ $this->offset += strlen($ret);
+ return $ret;
+ }
+
+ public function stream_seek($offset, $whence = SEEK_SET) {
+ switch ($whence) {
+ case SEEK_SET:
+ if ($offset === $this->offset) {
+ return true;
+ }
+ return $this->reconnect($offset);
+ case SEEK_CUR:
+ if ($offset === 0) {
+ return true;
+ }
+ return $this->reconnect($this->offset + $offset);
+ case SEEK_END:
+ return false;
+ }
+ return false;
+ }
+
+ public function stream_tell() {
+ return $this->offset;
+ }
+
+ public function stream_stat() {
+ if (is_resource($this->current)) {
+ return fstat($this->current);
+ } else {
+ return false;
+ }
+ }
+
+ public function stream_eof() {
+ if (is_resource($this->current)) {
+ return feof($this->current);
+ } else {
+ return true;
+ }
+ }
+
+ public function stream_close() {
+ if (is_resource($this->current)) {
+ fclose($this->current);
+ }
+ }
+
+ public function stream_write($data) {
+ return false;
+ }
+
+ public function stream_set_option($option, $arg1, $arg2) {
+ return false;
+ }
+
+ public function stream_truncate($size) {
+ return false;
+ }
+
+ public function stream_lock($operation) {
+ return false;
+ }
+
+ public function stream_flush() {
+ return; //noop because readonly stream
+ }
+}
diff --git a/lib/private/Files/Type/Detection.php b/lib/private/Files/Type/Detection.php
index 1352963fc67..e8825037666 100644
--- a/lib/private/Files/Type/Detection.php
+++ b/lib/private/Files/Type/Detection.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Andreas Fischer <bantu@owncloud.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Kesselberg <mail@danielkesselberg.de>
* @author Hendrik Leppelsack <hendrik@leppelsack.de>
* @author Jens-Christian Fischer <jens-christian.fischer@switch.ch>
@@ -50,7 +51,6 @@ use OCP\IURLGenerator;
* @package OC\Files\Type
*/
class Detection implements IMimeTypeDetector {
-
private const CUSTOM_MIMETYPEMAPPING = 'mimetypemapping.json';
private const CUSTOM_MIMETYPEALIASES = 'mimetypealiases.json';
@@ -103,7 +103,7 @@ class Detection implements IMimeTypeDetector {
public function registerType(string $extension,
string $mimetype,
?string $secureMimeType = null): void {
- $this->mimetypes[$extension] = array($mimetype, $secureMimeType);
+ $this->mimetypes[$extension] = [$mimetype, $secureMimeType];
$this->secureMimeTypes[$mimetype] = $secureMimeType ?: $mimetype;
}
@@ -278,7 +278,6 @@ class Detection implements IMimeTypeDetector {
return $mimeType;
}
}
-
}
return 'application/octet-stream';
}
diff --git a/lib/private/Files/Type/Loader.php b/lib/private/Files/Type/Loader.php
index 616994d0c7b..d128bc724b6 100644
--- a/lib/private/Files/Type/Loader.php
+++ b/lib/private/Files/Type/Loader.php
@@ -6,7 +6,6 @@
* @author Rello <Rello@users.noreply.github.com>
* @author Robin Appelman <robin@icewind.nl>
* @author Robin McCorkell <robin@mccorkell.me.uk>
- * @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @license AGPL-3.0
*
@@ -26,7 +25,6 @@
namespace OC\Files\Type;
-use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
use OCP\Files\IMimeTypeLoader;
use OCP\IDBConnection;
@@ -175,5 +173,4 @@ class Loader implements IMimeTypeLoader {
));
return $update->execute();
}
-
}
diff --git a/lib/private/Files/Type/TemplateManager.php b/lib/private/Files/Type/TemplateManager.php
index 4febf9afbf1..5cd6b61f823 100644
--- a/lib/private/Files/Type/TemplateManager.php
+++ b/lib/private/Files/Type/TemplateManager.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Julius Härtl <jus@bitgrid.net>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -29,7 +30,7 @@ namespace OC\Files\Type;
* @deprecated 18.0.0
*/
class TemplateManager {
- protected $templates = array();
+ protected $templates = [];
public function registerTemplate($mimetype, $path) {
$this->templates[$mimetype] = $path;
diff --git a/lib/private/Files/Utils/Scanner.php b/lib/private/Files/Utils/Scanner.php
index 943078215b5..996380037b7 100644
--- a/lib/private/Files/Utils/Scanner.php
+++ b/lib/private/Files/Utils/Scanner.php
@@ -61,7 +61,7 @@ use OCP\ILogger;
* @package OC\Files\Utils
*/
class Scanner extends PublicEmitter {
- const MAX_ENTRIES_TO_COMMIT = 10000;
+ public const MAX_ENTRIES_TO_COMMIT = 10000;
/** @var string $user */
private $user;
@@ -131,19 +131,19 @@ class Scanner extends PublicEmitter {
protected function attachListener($mount) {
$scanner = $mount->getStorage()->getScanner();
$scanner->listen('\OC\Files\Cache\Scanner', 'scanFile', function ($path) use ($mount) {
- $this->emit('\OC\Files\Utils\Scanner', 'scanFile', array($mount->getMountPoint() . $path));
+ $this->emit('\OC\Files\Utils\Scanner', 'scanFile', [$mount->getMountPoint() . $path]);
$this->dispatcher->dispatchTyped(new BeforeFileScannedEvent($mount->getMountPoint() . $path));
});
$scanner->listen('\OC\Files\Cache\Scanner', 'scanFolder', function ($path) use ($mount) {
- $this->emit('\OC\Files\Utils\Scanner', 'scanFolder', array($mount->getMountPoint() . $path));
+ $this->emit('\OC\Files\Utils\Scanner', 'scanFolder', [$mount->getMountPoint() . $path]);
$this->dispatcher->dispatchTyped(new BeforeFolderScannedEvent($mount->getMountPoint() . $path));
});
$scanner->listen('\OC\Files\Cache\Scanner', 'postScanFile', function ($path) use ($mount) {
- $this->emit('\OC\Files\Utils\Scanner', 'postScanFile', array($mount->getMountPoint() . $path));
+ $this->emit('\OC\Files\Utils\Scanner', 'postScanFile', [$mount->getMountPoint() . $path]);
$this->dispatcher->dispatchTyped(new FileScannedEvent($mount->getMountPoint() . $path));
});
$scanner->listen('\OC\Files\Cache\Scanner', 'postScanFolder', function ($path) use ($mount) {
- $this->emit('\OC\Files\Utils\Scanner', 'postScanFolder', array($mount->getMountPoint() . $path));
+ $this->emit('\OC\Files\Utils\Scanner', 'postScanFolder', [$mount->getMountPoint() . $path]);
$this->dispatcher->dispatchTyped(new FolderScannedEvent($mount->getMountPoint() . $path));
});
}
@@ -223,7 +223,6 @@ class Scanner extends PublicEmitter {
} else {// if the root exists in neither the cache nor the storage the user isn't setup yet
break;
}
-
}
// don't scan received local shares, these can be scanned when scanning the owner's storage
diff --git a/lib/private/Files/View.php b/lib/private/Files/View.php
index 8ea94626a2a..ef8656258d1 100644
--- a/lib/private/Files/View.php
+++ b/lib/private/Files/View.php
@@ -5,6 +5,7 @@
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Florin Peter <github@florin-peter.de>
* @author Jesús Macias <jmacias@solidgear.es>
* @author Joas Schilling <coding@schilljs.com>
@@ -22,6 +23,7 @@
* @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Sam Tuke <mail@samtuke.com>
+ * @author Scott Dutton <exussum12@users.noreply.github.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Thomas Tanghus <thomas@tanghus.net>
* @author Vincent Petry <pvince81@owncloud.com>
@@ -266,7 +268,7 @@ class View {
* for \OC\Files\Storage\Storage via basicOperation().
*/
public function mkdir($path) {
- return $this->basicOperation('mkdir', $path, array('create', 'write'));
+ return $this->basicOperation('mkdir', $path, ['create', 'write']);
}
/**
@@ -284,7 +286,7 @@ class View {
$this->lockFile($relPath, ILockingProvider::LOCK_SHARED, true);
\OC_Hook::emit(
Filesystem::CLASSNAME, "umount",
- array(Filesystem::signal_param_path => $relPath)
+ [Filesystem::signal_param_path => $relPath]
);
$this->changeLock($relPath, ILockingProvider::LOCK_EXCLUSIVE, true);
$result = $mount->removeMount();
@@ -292,7 +294,7 @@ class View {
if ($result) {
\OC_Hook::emit(
Filesystem::CLASSNAME, "post_umount",
- array(Filesystem::signal_param_path => $relPath)
+ [Filesystem::signal_param_path => $relPath]
);
}
$this->unlockFile($relPath, ILockingProvider::LOCK_SHARED, true);
@@ -345,7 +347,7 @@ class View {
return $this->removeMount($mount, $absolutePath);
}
if ($this->is_dir($path)) {
- $result = $this->basicOperation('rmdir', $path, array('delete'));
+ $result = $this->basicOperation('rmdir', $path, ['delete']);
} else {
$result = false;
}
@@ -363,7 +365,7 @@ class View {
* @return resource
*/
public function opendir($path) {
- return $this->basicOperation('opendir', $path, array('read'));
+ return $this->basicOperation('opendir', $path, ['read']);
}
/**
@@ -422,7 +424,7 @@ class View {
@ob_end_clean();
$handle = $this->fopen($path, 'rb');
if ($handle) {
- $chunkSize = 8192; // 8 kB chunks
+ $chunkSize = 524288; // 512 kB chunks
while (!feof($handle)) {
echo fread($handle, $chunkSize);
flush();
@@ -446,7 +448,7 @@ class View {
@ob_end_clean();
$handle = $this->fopen($path, 'rb');
if ($handle) {
- $chunkSize = 8192; // 8 kB chunks
+ $chunkSize = 524288; // 512 kB chunks
$startReading = true;
if ($from !== 0 && $from !== '0' && fseek($handle, $from) !== 0) {
@@ -559,7 +561,7 @@ class View {
$mtime = strtotime($mtime);
}
- $hooks = array('touch');
+ $hooks = ['touch'];
if (!$this->file_exists($path)) {
$hooks[] = 'create';
@@ -581,7 +583,7 @@ class View {
$mtime = time();
}
//if native touch fails, we emulate it by changing the mtime in the cache
- $this->putFileInfo($path, array('mtime' => floor($mtime)));
+ $this->putFileInfo($path, ['mtime' => floor($mtime)]);
}
return true;
}
@@ -592,7 +594,7 @@ class View {
* @throws LockedException
*/
public function file_get_contents($path) {
- return $this->basicOperation('file_get_contents', $path, array('read'));
+ return $this->basicOperation('file_get_contents', $path, ['read']);
}
/**
@@ -602,20 +604,20 @@ class View {
*/
protected function emit_file_hooks_pre($exists, $path, &$run) {
if (!$exists) {
- \OC_Hook::emit(Filesystem::CLASSNAME, Filesystem::signal_create, array(
+ \OC_Hook::emit(Filesystem::CLASSNAME, Filesystem::signal_create, [
Filesystem::signal_param_path => $this->getHookPath($path),
Filesystem::signal_param_run => &$run,
- ));
+ ]);
} else {
- \OC_Hook::emit(Filesystem::CLASSNAME, Filesystem::signal_update, array(
+ \OC_Hook::emit(Filesystem::CLASSNAME, Filesystem::signal_update, [
Filesystem::signal_param_path => $this->getHookPath($path),
Filesystem::signal_param_run => &$run,
- ));
+ ]);
}
- \OC_Hook::emit(Filesystem::CLASSNAME, Filesystem::signal_write, array(
+ \OC_Hook::emit(Filesystem::CLASSNAME, Filesystem::signal_write, [
Filesystem::signal_param_path => $this->getHookPath($path),
Filesystem::signal_param_run => &$run,
- ));
+ ]);
}
/**
@@ -624,17 +626,17 @@ class View {
*/
protected function emit_file_hooks_post($exists, $path) {
if (!$exists) {
- \OC_Hook::emit(Filesystem::CLASSNAME, Filesystem::signal_post_create, array(
+ \OC_Hook::emit(Filesystem::CLASSNAME, Filesystem::signal_post_create, [
Filesystem::signal_param_path => $this->getHookPath($path),
- ));
+ ]);
} else {
- \OC_Hook::emit(Filesystem::CLASSNAME, Filesystem::signal_post_update, array(
+ \OC_Hook::emit(Filesystem::CLASSNAME, Filesystem::signal_post_update, [
Filesystem::signal_param_path => $this->getHookPath($path),
- ));
+ ]);
}
- \OC_Hook::emit(Filesystem::CLASSNAME, Filesystem::signal_post_write, array(
+ \OC_Hook::emit(Filesystem::CLASSNAME, Filesystem::signal_post_write, [
Filesystem::signal_param_path => $this->getHookPath($path),
- ));
+ ]);
}
/**
@@ -669,7 +671,7 @@ class View {
list($storage, $internalPath) = $this->resolvePath($path);
$target = $storage->fopen($internalPath, 'w');
if ($target) {
- list (, $result) = \OC_Helper::streamCopy($data, $target);
+ list(, $result) = \OC_Helper::streamCopy($data, $target);
fclose($target);
fclose($data);
@@ -690,7 +692,7 @@ class View {
return false;
}
} else {
- $hooks = $this->file_exists($path) ? array('update', 'write') : array('create', 'write');
+ $hooks = $this->file_exists($path) ? ['update', 'write'] : ['create', 'write'];
return $this->basicOperation('file_put_contents', $path, $hooks, $data);
}
}
@@ -770,11 +772,11 @@ class View {
} elseif ($this->shouldEmitHooks($path1)) {
\OC_Hook::emit(
Filesystem::CLASSNAME, Filesystem::signal_rename,
- array(
+ [
Filesystem::signal_param_oldpath => $this->getHookPath($path1),
Filesystem::signal_param_newpath => $this->getHookPath($path2),
Filesystem::signal_param_run => &$run
- )
+ ]
);
}
if ($run) {
@@ -823,12 +825,12 @@ class View {
if ((Cache\Scanner::isPartialFile($path1) && !Cache\Scanner::isPartialFile($path2)) && $result !== false) {
// if it was a rename from a part file to a regular file it was a write and not a rename operation
$this->writeUpdate($storage2, $internalPath2);
- } else if ($result) {
+ } elseif ($result) {
if ($internalPath1 !== '') { // don't do a cache update for moved mounts
$this->renameUpdate($storage1, $storage2, $internalPath1, $internalPath2);
}
}
- } catch(\Exception $e) {
+ } catch (\Exception $e) {
throw $e;
} finally {
$this->changeLock($path1, ILockingProvider::LOCK_SHARED, true);
@@ -844,15 +846,15 @@ class View {
\OC_Hook::emit(
Filesystem::CLASSNAME,
Filesystem::signal_post_rename,
- array(
+ [
Filesystem::signal_param_oldpath => $this->getHookPath($path1),
Filesystem::signal_param_newpath => $this->getHookPath($path2)
- )
+ ]
);
}
}
}
- } catch(\Exception $e) {
+ } catch (\Exception $e) {
throw $e;
} finally {
$this->unlockFile($path1, ILockingProvider::LOCK_SHARED, true);
@@ -894,17 +896,16 @@ class View {
$lockTypePath2 = ILockingProvider::LOCK_SHARED;
try {
-
$exists = $this->file_exists($path2);
if ($this->shouldEmitHooks()) {
\OC_Hook::emit(
Filesystem::CLASSNAME,
Filesystem::signal_copy,
- array(
+ [
Filesystem::signal_param_oldpath => $this->getHookPath($path1),
Filesystem::signal_param_newpath => $this->getHookPath($path2),
Filesystem::signal_param_run => &$run
- )
+ ]
);
$this->emit_file_hooks_pre($exists, $path2, $run);
}
@@ -938,14 +939,13 @@ class View {
\OC_Hook::emit(
Filesystem::CLASSNAME,
Filesystem::signal_post_copy,
- array(
+ [
Filesystem::signal_param_oldpath => $this->getHookPath($path1),
Filesystem::signal_param_newpath => $this->getHookPath($path2)
- )
+ ]
);
$this->emit_file_hooks_post($exists, $path2);
}
-
}
} catch (\Exception $e) {
$this->unlockFile($path2, $lockTypePath2);
@@ -955,7 +955,6 @@ class View {
$this->unlockFile($path2, $lockTypePath2);
$this->unlockFile($path1, $lockTypePath1);
-
}
return $result;
}
@@ -968,7 +967,7 @@ class View {
*/
public function fopen($path, $mode) {
$mode = str_replace('b', '', $mode); // the binary flag is a windows only feature which we do not support
- $hooks = array();
+ $hooks = [];
switch ($mode) {
case 'r':
$hooks[] = 'read';
@@ -1087,7 +1086,7 @@ class View {
\OC_Hook::emit(
Filesystem::CLASSNAME,
Filesystem::signal_read,
- array(Filesystem::signal_param_path => $this->getHookPath($path))
+ [Filesystem::signal_param_path => $this->getHookPath($path)]
);
}
list($storage, $internalPath) = Filesystem::resolvePath($absolutePath . $postFix);
@@ -1164,7 +1163,7 @@ class View {
} catch (\Exception $e) {
if (in_array('write', $hooks) || in_array('delete', $hooks)) {
$this->unlockFile($path, ILockingProvider::LOCK_EXCLUSIVE);
- } else if (in_array('read', $hooks)) {
+ } elseif (in_array('read', $hooks)) {
$this->unlockFile($path, ILockingProvider::LOCK_SHARED);
}
throw $e;
@@ -1192,7 +1191,7 @@ class View {
$result = CallbackWrapper::wrap($result, null, null, function () use ($hooks, $path) {
if (in_array('write', $hooks)) {
$this->unlockFile($path, ILockingProvider::LOCK_EXCLUSIVE);
- } else if (in_array('read', $hooks)) {
+ } elseif (in_array('read', $hooks)) {
$this->unlockFile($path, ILockingProvider::LOCK_SHARED);
}
});
@@ -1270,18 +1269,18 @@ class View {
\OC_Hook::emit(
Filesystem::CLASSNAME,
$prefix . $hook,
- array(
+ [
Filesystem::signal_param_run => &$run,
Filesystem::signal_param_path => $path
- )
+ ]
);
} elseif (!$post) {
\OC_Hook::emit(
Filesystem::CLASSNAME,
$prefix . $hook,
- array(
+ [
Filesystem::signal_param_path => $path
- )
+ ]
);
}
}
@@ -1297,7 +1296,7 @@ class View {
* @return bool
*/
public function hasUpdated($path, $time) {
- return $this->basicOperation('hasUpdated', $path, array(), $time);
+ return $this->basicOperation('hasUpdated', $path, [], $time);
}
/**
@@ -1339,7 +1338,7 @@ class View {
$scanner = $storage->getScanner($internalPath);
$scanner->scan($internalPath, Cache\Scanner::SCAN_SHALLOW);
$data = $cache->get($internalPath);
- } else if (!Cache\Scanner::isPartialFile($internalPath) && $watcher->needsUpdate($internalPath, $data)) {
+ } elseif (!Cache\Scanner::isPartialFile($internalPath) && $watcher->needsUpdate($internalPath, $data)) {
$this->lockFile($relativePath, ILockingProvider::LOCK_SHARED);
$watcher->update($internalPath, $data);
$storage->getPropagator()->propagateChange($internalPath, time());
@@ -1453,7 +1452,7 @@ class View {
$sharingDisabled = \OCP\Util::isSharingDisabledForUser();
- $fileNames = array_map(function(ICacheEntry $content) {
+ $fileNames = array_map(function (ICacheEntry $content) {
return $content->getName();
}, $contents);
/**
@@ -1591,7 +1590,7 @@ class View {
* @return FileInfo[]
*/
public function search($query) {
- return $this->searchCommon('search', array('%' . $query . '%'));
+ return $this->searchCommon('search', ['%' . $query . '%']);
}
/**
@@ -1601,7 +1600,7 @@ class View {
* @return FileInfo[]
*/
public function searchRaw($query) {
- return $this->searchCommon('search', array($query));
+ return $this->searchCommon('search', [$query]);
}
/**
@@ -1611,7 +1610,7 @@ class View {
* @return FileInfo[]
*/
public function searchByMime($mimetype) {
- return $this->searchCommon('searchByMime', array($mimetype));
+ return $this->searchCommon('searchByMime', [$mimetype]);
}
/**
@@ -1622,7 +1621,7 @@ class View {
* @return FileInfo[]
*/
public function searchByTag($tag, $userId) {
- return $this->searchCommon('searchByTag', array($tag, $userId));
+ return $this->searchCommon('searchByTag', [$tag, $userId]);
}
/**
@@ -1631,7 +1630,7 @@ class View {
* @return FileInfo[]
*/
private function searchCommon($method, $args) {
- $files = array();
+ $files = [];
$rootLength = strlen($this->fakeRoot);
$mount = $this->getMount('');
@@ -1640,7 +1639,7 @@ class View {
if ($storage) {
$cache = $storage->getCache('');
- $results = call_user_func_array(array($cache, $method), $args);
+ $results = call_user_func_array([$cache, $method], $args);
foreach ($results as $result) {
if (substr($mountPoint . $result['path'], 0, $rootLength + 1) === $this->fakeRoot . '/') {
$internalPath = $result['path'];
@@ -1659,7 +1658,7 @@ class View {
$cache = $storage->getCache('');
$relativeMountPoint = substr($mountPoint, $rootLength);
- $results = call_user_func_array(array($cache, $method), $args);
+ $results = call_user_func_array([$cache, $method], $args);
if ($results) {
foreach ($results as $result) {
$internalPath = $result['path'];
@@ -1734,7 +1733,7 @@ class View {
// put non shared mounts in front of the shared mount
// this prevent unneeded recursion into shares
- usort($mounts, function(IMountPoint $a, IMountPoint $b) {
+ usort($mounts, function (IMountPoint $a, IMountPoint $b) {
return $a instanceof SharedMount && (!$b instanceof SharedMount) ? 1 : -1;
});
@@ -1881,7 +1880,7 @@ class View {
// remove the single file
array_pop($parts);
- $result = array('/');
+ $result = ['/'];
$resultPath = '';
foreach ($parts as $part) {
if ($part) {
diff --git a/lib/private/FullTextSearch/FullTextSearchManager.php b/lib/private/FullTextSearch/FullTextSearchManager.php
index a67d23f6af6..119c97fa95b 100644
--- a/lib/private/FullTextSearch/FullTextSearchManager.php
+++ b/lib/private/FullTextSearch/FullTextSearchManager.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OC\FullTextSearch;
-
use OCP\FullTextSearch\Exceptions\FullTextSearchAppNotAvailableException;
use OCP\FullTextSearch\IFullTextSearchManager;
use OCP\FullTextSearch\Model\IIndex;
@@ -231,6 +230,4 @@ class FullTextSearchManager implements IFullTextSearchManager {
return $this->getSearchService()->search($userId, $searchRequest);
}
-
-
}
diff --git a/lib/private/FullTextSearch/Model/DocumentAccess.php b/lib/private/FullTextSearch/Model/DocumentAccess.php
index 2b74991b717..d4c7a06d079 100644
--- a/lib/private/FullTextSearch/Model/DocumentAccess.php
+++ b/lib/private/FullTextSearch/Model/DocumentAccess.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OC\FullTextSearch\Model;
-
use JsonSerializable;
use OCP\FullTextSearch\Model\IDocumentAccess;
diff --git a/lib/private/FullTextSearch/Model/IndexDocument.php b/lib/private/FullTextSearch/Model/IndexDocument.php
index 048696e4d4b..252aa66395a 100644
--- a/lib/private/FullTextSearch/Model/IndexDocument.php
+++ b/lib/private/FullTextSearch/Model/IndexDocument.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OC\FullTextSearch\Model;
-
use JsonSerializable;
use OCP\FullTextSearch\Model\IDocumentAccess;
use OCP\FullTextSearch\Model\IIndex;
@@ -923,7 +922,6 @@ class IndexDocument implements IIndexDocument, JsonSerializable {
* @return array
*/
final public function getInfoAll(): array {
-
$info = [];
foreach ($this->info as $k => $v) {
if (substr($k, 0, 1) === '_') {
@@ -990,5 +988,4 @@ class IndexDocument implements IIndexDocument, JsonSerializable {
'score' => $this->getScore()
];
}
-
}
diff --git a/lib/private/FullTextSearch/Model/SearchOption.php b/lib/private/FullTextSearch/Model/SearchOption.php
index a61e823fb74..1ff3fbba272 100644
--- a/lib/private/FullTextSearch/Model/SearchOption.php
+++ b/lib/private/FullTextSearch/Model/SearchOption.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OC\FullTextSearch\Model;
-
use JsonSerializable;
use OCP\FullTextSearch\Model\ISearchOption;
diff --git a/lib/private/FullTextSearch/Model/SearchRequestSimpleQuery.php b/lib/private/FullTextSearch/Model/SearchRequestSimpleQuery.php
index 2ffc2ee359d..c015c4c1579 100644
--- a/lib/private/FullTextSearch/Model/SearchRequestSimpleQuery.php
+++ b/lib/private/FullTextSearch/Model/SearchRequestSimpleQuery.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OC\FullTextSearch\Model;
-
use JsonSerializable;
use OCP\FullTextSearch\Model\ISearchRequestSimpleQuery;
@@ -179,5 +178,4 @@ final class SearchRequestSimpleQuery implements ISearchRequestSimpleQuery, JsonS
'values' => $this->getValues()
];
}
-
}
diff --git a/lib/private/FullTextSearch/Model/SearchTemplate.php b/lib/private/FullTextSearch/Model/SearchTemplate.php
index 9060a82046f..4940e57c281 100644
--- a/lib/private/FullTextSearch/Model/SearchTemplate.php
+++ b/lib/private/FullTextSearch/Model/SearchTemplate.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OC\FullTextSearch\Model;
-
use JsonSerializable;
use OCP\FullTextSearch\IFullTextSearchProvider;
use OCP\FullTextSearch\Model\ISearchOption;
diff --git a/lib/private/GlobalScale/Config.php b/lib/private/GlobalScale/Config.php
index c1a70c94647..d4bde44a5fa 100644
--- a/lib/private/GlobalScale/Config.php
+++ b/lib/private/GlobalScale/Config.php
@@ -23,7 +23,6 @@
namespace OC\GlobalScale;
-
use OCP\IConfig;
class Config implements \OCP\GlobalScale\IConfig {
@@ -68,5 +67,4 @@ class Config implements \OCP\GlobalScale\IConfig {
return $enabled === 'internal';
}
-
}
diff --git a/lib/private/Group/Backend.php b/lib/private/Group/Backend.php
index 06cc8ae846f..ebd8d3620d4 100644
--- a/lib/private/Group/Backend.php
+++ b/lib/private/Group/Backend.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Knut Ahlers <knut@ahlers.me>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Vincent Petry <pvince81@owncloud.com>
@@ -31,7 +32,7 @@ abstract class Backend implements \OCP\GroupInterface {
/**
* error code for functions not provided by the group backend
*/
- const NOT_IMPLEMENTED = -501;
+ public const NOT_IMPLEMENTED = -501;
protected $possibleActions = [
self::CREATE_GROUP => 'createGroup',
@@ -44,16 +45,16 @@ abstract class Backend implements \OCP\GroupInterface {
];
/**
- * Get all supported actions
- * @return int bitwise-or'ed actions
- *
- * Returns the supported actions as int to be
- * compared with \OC\Group\Backend::CREATE_GROUP etc.
- */
+ * Get all supported actions
+ * @return int bitwise-or'ed actions
+ *
+ * Returns the supported actions as int to be
+ * compared with \OC\Group\Backend::CREATE_GROUP etc.
+ */
public function getSupportedActions() {
$actions = 0;
- foreach($this->possibleActions AS $action => $methodName) {
- if(method_exists($this, $methodName)) {
+ foreach ($this->possibleActions as $action => $methodName) {
+ if (method_exists($this, $methodName)) {
$actions |= $action;
}
}
@@ -62,13 +63,13 @@ abstract class Backend implements \OCP\GroupInterface {
}
/**
- * Check if backend implements actions
- * @param int $actions bitwise-or'ed actions
- * @return bool
- *
- * Returns the supported actions as int to be
- * compared with \OC\Group\Backend::CREATE_GROUP etc.
- */
+ * Check if backend implements actions
+ * @param int $actions bitwise-or'ed actions
+ * @return bool
+ *
+ * Returns the supported actions as int to be
+ * compared with \OC\Group\Backend::CREATE_GROUP etc.
+ */
public function implementsActions($actions) {
return (bool)($this->getSupportedActions() & $actions);
}
@@ -94,7 +95,7 @@ abstract class Backend implements \OCP\GroupInterface {
* if the user exists at all.
*/
public function getUserGroups($uid) {
- return array();
+ return [];
}
/**
@@ -108,7 +109,7 @@ abstract class Backend implements \OCP\GroupInterface {
*/
public function getGroups($search = '', $limit = -1, $offset = 0) {
- return array();
+ return [];
}
/**
@@ -129,6 +130,6 @@ abstract class Backend implements \OCP\GroupInterface {
* @return array an array of user ids
*/
public function usersInGroup($gid, $search = '', $limit = -1, $offset = 0) {
- return array();
+ return [];
}
}
diff --git a/lib/private/Group/Database.php b/lib/private/Group/Database.php
index 27dad809f89..ec8f7ea6f53 100644
--- a/lib/private/Group/Database.php
+++ b/lib/private/Group/Database.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
* @author Loki3000 <github@labcms.ru>
@@ -59,16 +60,16 @@ use OCP\IDBConnection;
/**
* Class for group management in a SQL Database (e.g. MySQL, SQLite)
*/
-class Database extends ABackend
- implements IAddToGroupBackend,
- ICountDisabledInGroup,
- ICountUsersBackend,
- ICreateGroupBackend,
- IDeleteGroupBackend,
- IGetDisplayNameBackend,
- IGroupDetailsBackend,
- IRemoveFromGroupBackend,
- ISetDisplayNameBackend {
+class Database extends ABackend implements
+ IAddToGroupBackend,
+ ICountDisabledInGroup,
+ ICountUsersBackend,
+ ICreateGroupBackend,
+ IDeleteGroupBackend,
+ IGetDisplayNameBackend,
+ IGroupDetailsBackend,
+ IRemoveFromGroupBackend,
+ ISetDisplayNameBackend {
/** @var string[] */
private $groupCache = [];
@@ -112,12 +113,15 @@ class Database extends ABackend
->setValue('gid', $builder->createNamedParameter($gid))
->setValue('displayname', $builder->createNamedParameter($gid))
->execute();
- } catch(UniqueConstraintViolationException $e) {
+ } catch (UniqueConstraintViolationException $e) {
$result = 0;
}
// Add to cache
- $this->groupCache[$gid] = $gid;
+ $this->groupCache[$gid] = [
+ 'gid' => $gid,
+ 'displayname' => $gid
+ ];
return $result === 1;
}
@@ -164,7 +168,7 @@ class Database extends ABackend
*
* Checks whether the user is member of a group or not.
*/
- public function inGroup( $uid, $gid ) {
+ public function inGroup($uid, $gid) {
$this->fixDI();
// check
@@ -193,14 +197,14 @@ class Database extends ABackend
$this->fixDI();
// No duplicate entries!
- if( !$this->inGroup( $uid, $gid )) {
+ if (!$this->inGroup($uid, $gid)) {
$qb = $this->dbConn->getQueryBuilder();
$qb->insert('group_user')
->setValue('uid', $qb->createNamedParameter($uid))
->setValue('gid', $qb->createNamedParameter($gid))
->execute();
return true;
- }else{
+ } else {
return false;
}
}
@@ -233,7 +237,7 @@ class Database extends ABackend
* This function fetches all groups a user belongs to. It does not check
* if the user exists at all.
*/
- public function getUserGroups( $uid ) {
+ public function getUserGroups($uid) {
//guests has empty or null $uid
if ($uid === null || $uid === '') {
return [];
@@ -243,15 +247,19 @@ class Database extends ABackend
// No magic!
$qb = $this->dbConn->getQueryBuilder();
- $cursor = $qb->select('gid')
- ->from('group_user')
+ $cursor = $qb->select('gu.gid', 'g.displayname')
+ ->from('group_user', 'gu')
+ ->leftJoin('gu', 'groups', 'g', $qb->expr()->eq('gu.gid', 'g.gid'))
->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
->execute();
$groups = [];
- while( $row = $cursor->fetch()) {
+ while ($row = $cursor->fetch()) {
$groups[] = $row['gid'];
- $this->groupCache[$row['gid']] = $row['gid'];
+ $this->groupCache[$row['gid']] = [
+ 'gid' => $row['gid'],
+ 'displayname' => $row['displayname'],
+ ];
}
$cursor->closeCursor();
@@ -308,7 +316,7 @@ class Database extends ABackend
}
$qb = $this->dbConn->getQueryBuilder();
- $cursor = $qb->select('gid')
+ $cursor = $qb->select('gid', 'displayname')
->from('groups')
->where($qb->expr()->eq('gid', $qb->createNamedParameter($gid)))
->execute();
@@ -316,7 +324,10 @@ class Database extends ABackend
$cursor->closeCursor();
if ($result !== false) {
- $this->groupCache[$gid] = $gid;
+ $this->groupCache[$gid] = [
+ 'gid' => $gid,
+ 'displayname' => $result['displayname'],
+ ];
return true;
}
return false;
@@ -429,6 +440,10 @@ class Database extends ABackend
}
public function getDisplayName(string $gid): string {
+ if (isset($this->groupCache[$gid])) {
+ return $this->groupCache[$gid]['displayname'];
+ }
+
$this->fixDI();
$query = $this->dbConn->getQueryBuilder();
@@ -472,5 +487,4 @@ class Database extends ABackend
return true;
}
-
}
diff --git a/lib/private/Group/Group.php b/lib/private/Group/Group.php
index 26e23e3b1b1..2e16d5f1242 100644
--- a/lib/private/Group/Group.php
+++ b/lib/private/Group/Group.php
@@ -4,6 +4,7 @@
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
* @author Lukas Reschke <lukas@statuscode.ch>
@@ -51,7 +52,7 @@ class Group implements IGroup {
private $gid;
/** @var \OC\User\User[] */
- private $users = array();
+ private $users = [];
/** @var bool */
private $usersLoaded;
@@ -127,7 +128,7 @@ class Group implements IGroup {
return $this->users;
}
- $userIds = array();
+ $userIds = [];
foreach ($this->backends as $backend) {
$diff = array_diff(
$backend->usersInGroup($this->gid),
@@ -177,7 +178,7 @@ class Group implements IGroup {
]));
if ($this->emitter) {
- $this->emitter->emit('\OC\Group', 'preAddUser', array($this, $user));
+ $this->emitter->emit('\OC\Group', 'preAddUser', [$this, $user]);
}
foreach ($this->backends as $backend) {
if ($backend->implementsActions(\OC\Group\Backend::ADD_TO_GROUP)) {
@@ -191,7 +192,7 @@ class Group implements IGroup {
]));
if ($this->emitter) {
- $this->emitter->emit('\OC\Group', 'postAddUser', array($this, $user));
+ $this->emitter->emit('\OC\Group', 'postAddUser', [$this, $user]);
}
return;
}
@@ -209,7 +210,7 @@ class Group implements IGroup {
'user' => $user,
]));
if ($this->emitter) {
- $this->emitter->emit('\OC\Group', 'preRemoveUser', array($this, $user));
+ $this->emitter->emit('\OC\Group', 'preRemoveUser', [$this, $user]);
}
foreach ($this->backends as $backend) {
if ($backend->implementsActions(\OC\Group\Backend::REMOVE_FROM_GOUP) and $backend->inGroup($user->getUID(), $this->gid)) {
@@ -222,7 +223,7 @@ class Group implements IGroup {
'user' => $user,
]));
if ($this->emitter) {
- $this->emitter->emit('\OC\Group', 'postRemoveUser', array($this, $user));
+ $this->emitter->emit('\OC\Group', 'postRemoveUser', [$this, $user]);
}
if ($this->users) {
foreach ($this->users as $index => $groupUser) {
@@ -244,7 +245,7 @@ class Group implements IGroup {
* @return \OC\User\User[]
*/
public function searchUsers($search, $limit = null, $offset = null) {
- $users = array();
+ $users = [];
foreach ($this->backends as $backend) {
$userIds = $backend->usersInGroup($this->gid, $search, $limit, $offset);
$users += $this->getVerifiedUsers($userIds);
@@ -264,8 +265,8 @@ class Group implements IGroup {
public function count($search = '') {
$users = false;
foreach ($this->backends as $backend) {
- if($backend->implementsActions(\OC\Group\Backend::COUNT_USERS)) {
- if($users === false) {
+ if ($backend->implementsActions(\OC\Group\Backend::COUNT_USERS)) {
+ if ($users === false) {
//we could directly add to a bool variable, but this would
//be ugly
$users = 0;
@@ -284,8 +285,8 @@ class Group implements IGroup {
public function countDisabled() {
$users = false;
foreach ($this->backends as $backend) {
- if($backend instanceOf ICountDisabledInGroup) {
- if($users === false) {
+ if ($backend instanceof ICountDisabledInGroup) {
+ if ($users === false) {
//we could directly add to a bool variable, but this would
//be ugly
$users = 0;
@@ -305,7 +306,7 @@ class Group implements IGroup {
* @return \OC\User\User[]
*/
public function searchDisplayName($search, $limit = null, $offset = null) {
- $users = array();
+ $users = [];
foreach ($this->backends as $backend) {
$userIds = $backend->usersInGroup($this->gid, $search, $limit, $offset);
$users = $this->getVerifiedUsers($userIds);
@@ -330,7 +331,7 @@ class Group implements IGroup {
$result = false;
$this->dispatcher->dispatch(IGroup::class . '::preDelete', new GenericEvent($this));
if ($this->emitter) {
- $this->emitter->emit('\OC\Group', 'preDelete', array($this));
+ $this->emitter->emit('\OC\Group', 'preDelete', [$this]);
}
foreach ($this->backends as $backend) {
if ($backend->implementsActions(\OC\Group\Backend::DELETE_GROUP)) {
@@ -341,7 +342,7 @@ class Group implements IGroup {
if ($result) {
$this->dispatcher->dispatch(IGroup::class . '::postDelete', new GenericEvent($this));
if ($this->emitter) {
- $this->emitter->emit('\OC\Group', 'postDelete', array($this));
+ $this->emitter->emit('\OC\Group', 'postDelete', [$this]);
}
}
return $result;
@@ -354,9 +355,9 @@ class Group implements IGroup {
*/
private function getVerifiedUsers($userIds) {
if (!is_array($userIds)) {
- return array();
+ return [];
}
- $users = array();
+ $users = [];
foreach ($userIds as $userId) {
$user = $this->userManager->get($userId);
if (!is_null($user)) {
@@ -397,7 +398,7 @@ class Group implements IGroup {
* @since 16.0.0
*/
public function hideFromCollaboration(): bool {
- return array_reduce($this->backends, function(bool $hide, GroupInterface $backend) {
+ return array_reduce($this->backends, function (bool $hide, GroupInterface $backend) {
return $hide | ($backend instanceof IHideFromCollaborationBackend && $backend->hideGroup($this->gid));
}, false);
}
diff --git a/lib/private/Group/Manager.php b/lib/private/Group/Manager.php
index 0879138619c..6056bcdb3e3 100644
--- a/lib/private/Group/Manager.php
+++ b/lib/private/Group/Manager.php
@@ -5,6 +5,7 @@
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
@@ -76,7 +77,7 @@ class Manager extends PublicEmitter implements IGroupManager {
/** @var \OC\Group\Group[] */
private $cachedGroups = [];
- /** @var \OC\Group\Group[] */
+ /** @var (string[])[] */
private $cachedUserGroups = [];
/** @var \OC\SubAdmin */
@@ -191,7 +192,7 @@ class Manager extends PublicEmitter implements IGroupManager {
}
$backends[] = $backend;
}
- } else if ($backend->groupExists($gid)) {
+ } elseif ($backend->groupExists($gid)) {
$backends[] = $backend;
}
}
@@ -217,7 +218,7 @@ class Manager extends PublicEmitter implements IGroupManager {
public function createGroup($gid) {
if ($gid === '' || $gid === null) {
return null;
- } else if ($group = $this->get($gid)) {
+ } elseif ($group = $this->get($gid)) {
return $group;
} else {
$this->emit('\OC\Group', 'preCreate', [$gid]);
@@ -275,25 +276,18 @@ class Manager extends PublicEmitter implements IGroupManager {
* @return \OC\Group\Group[]
*/
public function getUserIdGroups($uid) {
- if (isset($this->cachedUserGroups[$uid])) {
- return $this->cachedUserGroups[$uid];
- }
$groups = [];
- foreach ($this->backends as $backend) {
- $groupIds = $backend->getUserGroups($uid);
- if (is_array($groupIds)) {
- foreach ($groupIds as $groupId) {
- $aGroup = $this->get($groupId);
- if ($aGroup instanceof IGroup) {
- $groups[$groupId] = $aGroup;
- } else {
- $this->logger->debug('User "' . $uid . '" belongs to deleted group: "' . $groupId . '"', ['app' => 'core']);
- }
- }
+
+ foreach ($this->getUserIdGroupIds($uid) as $groupId) {
+ $aGroup = $this->get($groupId);
+ if ($aGroup instanceof IGroup) {
+ $groups[$groupId] = $aGroup;
+ } else {
+ $this->logger->debug('User "' . $uid . '" belongs to deleted group: "' . $groupId . '"', ['app' => 'core']);
}
}
- $this->cachedUserGroups[$uid] = $groups;
- return $this->cachedUserGroups[$uid];
+
+ return $groups;
}
/**
@@ -319,7 +313,7 @@ class Manager extends PublicEmitter implements IGroupManager {
* @return bool if in group
*/
public function isInGroup($userId, $group) {
- return array_key_exists($group, $this->getUserIdGroups($userId));
+ return array_search($group, $this->getUserIdGroupIds($userId)) !== false;
}
/**
@@ -329,9 +323,25 @@ class Manager extends PublicEmitter implements IGroupManager {
* @return array with group ids
*/
public function getUserGroupIds(IUser $user) {
- return array_map(function ($value) {
- return (string)$value;
- }, array_keys($this->getUserGroups($user)));
+ return $this->getUserIdGroupIds($user->getUID());
+ }
+
+ /**
+ * @param string $uid the user id
+ * @return GroupInterface[]
+ */
+ private function getUserIdGroupIds($uid) {
+ if (!isset($this->cachedUserGroups[$uid])) {
+ $groups = [];
+ foreach ($this->backends as $backend) {
+ if ($groupIds = $backend->getUserGroups($uid)) {
+ $groups = array_merge($groups, $groupIds);
+ }
+ }
+ $this->cachedUserGroups[$uid] = $groups;
+ }
+
+ return $this->cachedUserGroups[$uid];
}
/**
@@ -342,7 +352,7 @@ class Manager extends PublicEmitter implements IGroupManager {
*/
public function getUserGroupNames(IUser $user) {
return array_map(function ($group) {
- return array('displayName' => $group->getDisplayName());
+ return ['displayName' => $group->getDisplayName()];
}, $this->getUserGroups($user));
}
diff --git a/lib/private/Group/MetaData.php b/lib/private/Group/MetaData.php
index 2a0198bc451..21857b6c8f0 100644
--- a/lib/private/Group/MetaData.php
+++ b/lib/private/Group/MetaData.php
@@ -3,11 +3,11 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
- * @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Stephan Peijnik <speijnik@anexia-it.com>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -34,16 +34,16 @@ use OCP\IGroupManager;
use OCP\IUserSession;
class MetaData {
- const SORT_NONE = 0;
- const SORT_USERCOUNT = 1; // May have performance issues on LDAP backends
- const SORT_GROUPNAME = 2;
+ public const SORT_NONE = 0;
+ public const SORT_USERCOUNT = 1; // May have performance issues on LDAP backends
+ public const SORT_GROUPNAME = 2;
/** @var string */
protected $user;
/** @var bool */
protected $isAdmin;
/** @var array */
- protected $metaData = array();
+ protected $metaData = [];
/** @var IGroupManager */
protected $groupManager;
/** @var bool */
@@ -82,18 +82,18 @@ class MetaData {
*/
public function get($groupSearch = '', $userSearch = '') {
$key = $groupSearch . '::' . $userSearch;
- if(isset($this->metaData[$key])) {
+ if (isset($this->metaData[$key])) {
return $this->metaData[$key];
}
- $adminGroups = array();
- $groups = array();
+ $adminGroups = [];
+ $groups = [];
$sortGroupsIndex = 0;
- $sortGroupsKeys = array();
+ $sortGroupsKeys = [];
$sortAdminGroupsIndex = 0;
- $sortAdminGroupsKeys = array();
+ $sortAdminGroupsKeys = [];
- foreach($this->getGroups($groupSearch) as $group) {
+ foreach ($this->getGroups($groupSearch) as $group) {
$groupMetaData = $this->generateGroupMetaData($group, $userSearch);
if (strtolower($group->getGID()) !== 'admin') {
$this->addEntry(
@@ -117,7 +117,7 @@ class MetaData {
$this->sort($groups, $sortGroupsKeys);
$this->sort($adminGroups, $sortAdminGroupsKeys);
- $this->metaData[$key] = array($adminGroups, $groups);
+ $this->metaData[$key] = [$adminGroups, $groups];
return $this->metaData[$key];
}
@@ -150,7 +150,7 @@ class MetaData {
if ($this->sorting === self::SORT_USERCOUNT) {
$sortKeys[$sortIndex] = $data['usercount'];
$sortIndex++;
- } else if ($this->sorting === self::SORT_GROUPNAME) {
+ } elseif ($this->sorting === self::SORT_GROUPNAME) {
$sortKeys[$sortIndex] = $data['name'];
$sortIndex++;
}
@@ -163,14 +163,14 @@ class MetaData {
* @return array with the keys 'id', 'name', 'usercount' and 'disabled'
*/
private function generateGroupMetaData(\OCP\IGroup $group, $userSearch) {
- return array(
- 'id' => $group->getGID(),
- 'name' => $group->getDisplayName(),
- 'usercount' => $this->sorting === self::SORT_USERCOUNT ? $group->count($userSearch) : 0,
- 'disabled' => $group->countDisabled(),
- 'canAdd' => $group->canAddUser(),
- 'canRemove' => $group->canRemoveUser(),
- );
+ return [
+ 'id' => $group->getGID(),
+ 'name' => $group->getDisplayName(),
+ 'usercount' => $this->sorting === self::SORT_USERCOUNT ? $group->count($userSearch) : 0,
+ 'disabled' => $group->countDisabled(),
+ 'canAdd' => $group->canAddUser(),
+ 'canRemove' => $group->canRemoveUser(),
+ ];
}
/**
@@ -182,7 +182,7 @@ class MetaData {
private function sort(&$entries, $sortKeys) {
if ($this->sorting === self::SORT_USERCOUNT) {
array_multisort($sortKeys, SORT_DESC, $entries);
- } else if ($this->sorting === self::SORT_GROUPNAME) {
+ } elseif ($this->sorting === self::SORT_GROUPNAME) {
array_multisort($sortKeys, SORT_ASC, $entries);
}
}
@@ -193,11 +193,11 @@ class MetaData {
* @return \OCP\IGroup[]
*/
public function getGroups($search = '') {
- if($this->isAdmin) {
+ if ($this->isAdmin) {
return $this->groupManager->search($search);
} else {
$userObject = $this->userSession->getUser();
- if($userObject !== null) {
+ if ($userObject !== null) {
$groups = $this->groupManager->getSubAdmin()->getSubAdminsGroups($userObject);
} else {
$groups = [];
diff --git a/lib/private/HintException.php b/lib/private/HintException.php
index 4b51a565f7b..acb8df414a3 100644
--- a/lib/private/HintException.php
+++ b/lib/private/HintException.php
@@ -35,7 +35,6 @@ namespace OC;
* @package OC
*/
class HintException extends \Exception {
-
private $hint;
/**
diff --git a/lib/private/Hooks/EmitterTrait.php b/lib/private/Hooks/EmitterTrait.php
index a3c7e2df5da..85efa218f64 100644
--- a/lib/private/Hooks/EmitterTrait.php
+++ b/lib/private/Hooks/EmitterTrait.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
*
@@ -28,7 +29,7 @@ trait EmitterTrait {
/**
* @var callable[][] $listeners
*/
- protected $listeners = array();
+ protected $listeners = [];
/**
* @param string $scope
@@ -38,7 +39,7 @@ trait EmitterTrait {
public function listen($scope, $method, callable $callback) {
$eventName = $scope . '::' . $method;
if (!isset($this->listeners[$eventName])) {
- $this->listeners[$eventName] = array();
+ $this->listeners[$eventName] = [];
}
if (array_search($callback, $this->listeners[$eventName], true) === false) {
$this->listeners[$eventName][] = $callback;
@@ -51,7 +52,7 @@ trait EmitterTrait {
* @param callable $callback optional
*/
public function removeListener($scope = null, $method = null, callable $callback = null) {
- $names = array();
+ $names = [];
$allNames = array_keys($this->listeners);
if ($scope and $method) {
$name = $scope . '::' . $method;
@@ -83,7 +84,7 @@ trait EmitterTrait {
unset($this->listeners[$name][$index]);
}
} else {
- $this->listeners[$name] = array();
+ $this->listeners[$name] = [];
}
}
}
@@ -93,7 +94,7 @@ trait EmitterTrait {
* @param string $method
* @param array $arguments optional
*/
- protected function emit($scope, $method, array $arguments = array()) {
+ protected function emit($scope, $method, array $arguments = []) {
$eventName = $scope . '::' . $method;
if (isset($this->listeners[$eventName])) {
foreach ($this->listeners[$eventName] as $callback) {
diff --git a/lib/private/Hooks/ForwardingEmitter.php b/lib/private/Hooks/ForwardingEmitter.php
index d7dc6bfe9b5..3ac6cca096a 100644
--- a/lib/private/Hooks/ForwardingEmitter.php
+++ b/lib/private/Hooks/ForwardingEmitter.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
*
@@ -34,7 +35,7 @@ abstract class ForwardingEmitter extends BasicEmitter {
/**
* @var \OC\Hooks\Emitter[] array
*/
- private $forwardEmitters = array();
+ private $forwardEmitters = [];
/**
* @param string $scope
diff --git a/lib/private/Hooks/LegacyEmitter.php b/lib/private/Hooks/LegacyEmitter.php
index 9d4051e5899..470c5e0b11d 100644
--- a/lib/private/Hooks/LegacyEmitter.php
+++ b/lib/private/Hooks/LegacyEmitter.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -32,7 +33,7 @@ abstract class LegacyEmitter extends BasicEmitter {
*
* @suppress PhanAccessMethodProtected
*/
- protected function emit($scope, $method, array $arguments = array()) {
+ protected function emit($scope, $method, array $arguments = []) {
\OC_Hook::emit($scope, $method, $arguments);
parent::emit($scope, $method, $arguments);
}
diff --git a/lib/private/Hooks/PublicEmitter.php b/lib/private/Hooks/PublicEmitter.php
index 88c3d7ff327..dbccc34f2e9 100644
--- a/lib/private/Hooks/PublicEmitter.php
+++ b/lib/private/Hooks/PublicEmitter.php
@@ -36,7 +36,7 @@ class PublicEmitter extends BasicEmitter {
*
* @suppress PhanAccessMethodProtected
*/
- public function emit($scope, $method, array $arguments = array()) {
+ public function emit($scope, $method, array $arguments = []) {
parent::emit($scope, $method, $arguments);
}
}
diff --git a/lib/private/Http/Client/Client.php b/lib/private/Http/Client/Client.php
index c52d90ff8ec..af43df6365f 100644
--- a/lib/private/Http/Client/Client.php
+++ b/lib/private/Http/Client/Client.php
@@ -5,8 +5,11 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Kesselberg <mail@danielkesselberg.de>
+ * @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
+ * @author Mohammed Abdellatif <m.latief@gmail.com>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Scott Shambarger <devel@shambarger.net>
@@ -33,8 +36,10 @@ use GuzzleHttp\Client as GuzzleClient;
use GuzzleHttp\RequestOptions;
use OCP\Http\Client\IClient;
use OCP\Http\Client\IResponse;
+use OCP\Http\Client\LocalServerException;
use OCP\ICertificateManager;
use OCP\IConfig;
+use OCP\ILogger;
/**
* Class Client
@@ -46,37 +51,48 @@ class Client implements IClient {
private $client;
/** @var IConfig */
private $config;
+ /** @var ILogger */
+ private $logger;
/** @var ICertificateManager */
private $certificateManager;
- /**
- * @param IConfig $config
- * @param ICertificateManager $certificateManager
- * @param GuzzleClient $client
- */
public function __construct(
IConfig $config,
+ ILogger $logger,
ICertificateManager $certificateManager,
GuzzleClient $client
) {
$this->config = $config;
+ $this->logger = $logger;
$this->client = $client;
$this->certificateManager = $certificateManager;
}
private function buildRequestOptions(array $options): array {
+ $proxy = $this->getProxyUri();
+
$defaults = [
- RequestOptions::PROXY => $this->getProxyUri(),
RequestOptions::VERIFY => $this->getCertBundle(),
RequestOptions::TIMEOUT => 30,
];
+ // Only add RequestOptions::PROXY if Nextcloud is explicitly
+ // configured to use a proxy. This is needed in order not to override
+ // Guzzle default values.
+ if ($proxy !== null) {
+ $defaults[RequestOptions::PROXY] = $proxy;
+ }
+
$options = array_merge($defaults, $options);
if (!isset($options[RequestOptions::HEADERS]['User-Agent'])) {
$options[RequestOptions::HEADERS]['User-Agent'] = 'Nextcloud Server Crawler';
}
+ if (!isset($options[RequestOptions::HEADERS]['Accept-Encoding'])) {
+ $options[RequestOptions::HEADERS]['Accept-Encoding'] = 'gzip';
+ }
+
return $options;
}
@@ -96,11 +112,21 @@ class Client implements IClient {
}
/**
- * Get the proxy URI
+ * Returns a null or an associative array specifiying the proxy URI for
+ * 'http' and 'https' schemes, in addition to a 'no' key value pair
+ * providing a list of host names that should not be proxied to.
+ *
+ * @return array|null
+ *
+ * The return array looks like:
+ * [
+ * 'http' => 'username:password@proxy.example.com',
+ * 'https' => 'username:password@proxy.example.com',
+ * 'no' => ['foo.com', 'bar.com']
+ * ]
*
- * @return string|null
*/
- private function getProxyUri(): ?string {
+ private function getProxyUri(): ?array {
$proxyHost = $this->config->getSystemValue('proxy', '');
if ($proxyHost === '' || $proxyHost === null) {
@@ -108,12 +134,68 @@ class Client implements IClient {
}
$proxyUserPwd = $this->config->getSystemValue('proxyuserpwd', '');
+ if ($proxyUserPwd !== '' && $proxyUserPwd !== null) {
+ $proxyHost = $proxyUserPwd . '@' . $proxyHost;
+ }
+
+ $proxy = [
+ 'http' => $proxyHost,
+ 'https' => $proxyHost,
+ ];
- if ($proxyUserPwd === '' || $proxyUserPwd === null) {
- return $proxyHost;
+ $proxyExclude = $this->config->getSystemValue('proxyexclude', []);
+ if ($proxyExclude !== [] && $proxyExclude !== null) {
+ $proxy['no'] = $proxyExclude;
}
- return $proxyUserPwd . '@' . $proxyHost;
+ return $proxy;
+ }
+
+ protected function preventLocalAddress(string $uri, array $options): void {
+ if (($options['nextcloud']['allow_local_address'] ?? false) ||
+ $this->config->getSystemValueBool('allow_local_remote_servers', false)) {
+ return;
+ }
+
+ $host = parse_url($uri, PHP_URL_HOST);
+ if ($host === false) {
+ $this->logger->warning("Could not detect any host in $uri");
+ throw new LocalServerException('Could not detect any host');
+ }
+
+ $host = strtolower($host);
+ // remove brackets from IPv6 addresses
+ if (strpos($host, '[') === 0 && substr($host, -1) === ']') {
+ $host = substr($host, 1, -1);
+ }
+
+ // Disallow localhost and local network
+ if ($host === 'localhost' || substr($host, -6) === '.local' || substr($host, -10) === '.localhost') {
+ $this->logger->warning("Host $host was not connected to because it violates local access rules");
+ throw new LocalServerException('Host violates local access rules');
+ }
+
+ // Disallow hostname only
+ if (substr_count($host, '.') === 0) {
+ $this->logger->warning("Host $host was not connected to because it violates local access rules");
+ throw new LocalServerException('Host violates local access rules');
+ }
+
+ if ((bool)filter_var($host, FILTER_VALIDATE_IP) && !filter_var($host, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
+ $this->logger->warning("Host $host was not connected to because it violates local access rules");
+ throw new LocalServerException('Host violates local access rules');
+ }
+
+ // Also check for IPv6 IPv4 nesting, because that's not covered by filter_var
+ if ((bool)filter_var($host, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) && substr_count($host, '.') > 0) {
+ $delimiter = strrpos($host, ':'); // Get last colon
+ $ipv4Address = substr($host, $delimiter + 1);
+
+ if (!filter_var($ipv4Address, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
+ $this->logger->warning("Host $host was not connected to because it violates local access rules");
+ throw new LocalServerException('Host violates local access rules');
+ }
+ }
}
/**
@@ -146,6 +228,7 @@ class Client implements IClient {
* @throws \Exception If the request could not get completed
*/
public function get(string $uri, array $options = []): IResponse {
+ $this->preventLocalAddress($uri, $options);
$response = $this->client->request('get', $uri, $this->buildRequestOptions($options));
$isStream = isset($options['stream']) && $options['stream'];
return new Response($response, $isStream);
@@ -176,6 +259,7 @@ class Client implements IClient {
* @throws \Exception If the request could not get completed
*/
public function head(string $uri, array $options = []): IResponse {
+ $this->preventLocalAddress($uri, $options);
$response = $this->client->request('head', $uri, $this->buildRequestOptions($options));
return new Response($response);
}
@@ -210,6 +294,8 @@ class Client implements IClient {
* @throws \Exception If the request could not get completed
*/
public function post(string $uri, array $options = []): IResponse {
+ $this->preventLocalAddress($uri, $options);
+
if (isset($options['body']) && is_array($options['body'])) {
$options['form_params'] = $options['body'];
unset($options['body']);
@@ -248,6 +334,7 @@ class Client implements IClient {
* @throws \Exception If the request could not get completed
*/
public function put(string $uri, array $options = []): IResponse {
+ $this->preventLocalAddress($uri, $options);
$response = $this->client->request('put', $uri, $this->buildRequestOptions($options));
return new Response($response);
}
@@ -282,6 +369,7 @@ class Client implements IClient {
* @throws \Exception If the request could not get completed
*/
public function delete(string $uri, array $options = []): IResponse {
+ $this->preventLocalAddress($uri, $options);
$response = $this->client->request('delete', $uri, $this->buildRequestOptions($options));
return new Response($response);
}
@@ -316,6 +404,7 @@ class Client implements IClient {
* @throws \Exception If the request could not get completed
*/
public function options(string $uri, array $options = []): IResponse {
+ $this->preventLocalAddress($uri, $options);
$response = $this->client->request('options', $uri, $this->buildRequestOptions($options));
return new Response($response);
}
diff --git a/lib/private/Http/Client/ClientService.php b/lib/private/Http/Client/ClientService.php
index 2b18daaf737..3858032308a 100644
--- a/lib/private/Http/Client/ClientService.php
+++ b/lib/private/Http/Client/ClientService.php
@@ -5,7 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
- * @author Daniel Kesselberg <mail@danielkesselberg.de>
+ * @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -32,6 +32,7 @@ use OCP\Http\Client\IClient;
use OCP\Http\Client\IClientService;
use OCP\ICertificateManager;
use OCP\IConfig;
+use OCP\ILogger;
/**
* Class ClientService
@@ -41,16 +42,16 @@ use OCP\IConfig;
class ClientService implements IClientService {
/** @var IConfig */
private $config;
+ /** @var ILogger */
+ private $logger;
/** @var ICertificateManager */
private $certificateManager;
- /**
- * @param IConfig $config
- * @param ICertificateManager $certificateManager
- */
public function __construct(IConfig $config,
+ ILogger $logger,
ICertificateManager $certificateManager) {
$this->config = $config;
+ $this->logger = $logger;
$this->certificateManager = $certificateManager;
}
@@ -58,6 +59,6 @@ class ClientService implements IClientService {
* @return Client
*/
public function newClient(): IClient {
- return new Client($this->config, $this->certificateManager, new GuzzleClient());
+ return new Client($this->config, $this->logger, $this->certificateManager, new GuzzleClient());
}
}
diff --git a/lib/private/Http/CookieHelper.php b/lib/private/Http/CookieHelper.php
index e895b8531cf..f7b871c5001 100644
--- a/lib/private/Http/CookieHelper.php
+++ b/lib/private/Http/CookieHelper.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2018, Roeland Jago Douma <roeland@famdouma.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @license GNU AGPL version 3 or any later version
@@ -27,10 +28,9 @@ declare(strict_types=1);
namespace OC\Http;
class CookieHelper {
-
- const SAMESITE_NONE = 0;
- const SAMESITE_LAX = 1;
- const SAMESITE_STRICT = 2;
+ public const SAMESITE_NONE = 0;
+ public const SAMESITE_LAX = 1;
+ public const SAMESITE_STRICT = 2;
public static function setCookie(string $name,
string $value = '',
@@ -68,7 +68,7 @@ class CookieHelper {
if ($samesite === self::SAMESITE_LAX) {
$header .= '; SameSite=Lax';
- } else if ($samesite === self::SAMESITE_STRICT) {
+ } elseif ($samesite === self::SAMESITE_STRICT) {
$header .= '; SameSite=Strict';
}
diff --git a/lib/private/InitialStateService.php b/lib/private/InitialStateService.php
index 6c8c242b662..55ce9c41726 100644
--- a/lib/private/InitialStateService.php
+++ b/lib/private/InitialStateService.php
@@ -89,5 +89,4 @@ class InitialStateService implements IInitialStateService {
}
return $appStates;
}
-
}
diff --git a/lib/private/Installer.php b/lib/private/Installer.php
index b3919f22d03..d5c9d076eda 100644
--- a/lib/private/Installer.php
+++ b/lib/private/Installer.php
@@ -106,7 +106,7 @@ class Installer {
*/
public function installApp(string $appId, bool $forceEnable = false): string {
$app = \OC_App::findAppInDirectories($appId);
- if($app === false) {
+ if ($app === false) {
throw new \Exception('App not found in any app directory');
}
@@ -115,7 +115,7 @@ class Installer {
$l = \OC::$server->getL10N('core');
- if(!is_array($info)) {
+ if (!is_array($info)) {
throw new \Exception(
$l->t('App "%s" cannot be installed because appinfo file cannot be read.',
[$appId]
@@ -146,7 +146,7 @@ class Installer {
}
//install the database
- if(is_file($basedir.'/appinfo/database.xml')) {
+ if (is_file($basedir.'/appinfo/database.xml')) {
if (\OC::$server->getConfig()->getAppValue($info['id'], 'installed_version') === null) {
OC_DB::createDbFromStructure($basedir.'/appinfo/database.xml');
} else {
@@ -173,10 +173,10 @@ class Installer {
\OC::$server->getConfig()->setAppValue($info['id'], 'enabled', 'no');
//set remote/public handlers
- foreach($info['remote'] as $name=>$path) {
+ foreach ($info['remote'] as $name=>$path) {
\OC::$server->getConfig()->setAppValue('core', 'remote_'.$name, $info['id'].'/'.$path);
}
- foreach($info['public'] as $name=>$path) {
+ foreach ($info['public'] as $name=>$path) {
\OC::$server->getConfig()->setAppValue('core', 'public_'.$name, $info['id'].'/'.$path);
}
@@ -192,7 +192,7 @@ class Installer {
* @return bool
*/
public function updateAppstoreApp($appId) {
- if($this->isUpdateAvailable($appId)) {
+ if ($this->isUpdateAvailable($appId)) {
try {
$this->downloadApp($appId);
} catch (\Exception $e) {
@@ -219,8 +219,8 @@ class Installer {
$appId = strtolower($appId);
$apps = $this->appFetcher->get();
- foreach($apps as $app) {
- if($app['id'] === $appId) {
+ foreach ($apps as $app) {
+ if ($app['id'] === $appId) {
// Load the certificate
$certificate = new X509();
$certificate->loadCA(file_get_contents(__DIR__ . '/../../resources/codesigning/root.crt'));
@@ -230,7 +230,7 @@ class Installer {
$crl = new X509();
$crl->loadCA(file_get_contents(__DIR__ . '/../../resources/codesigning/root.crt'));
$crl->loadCRL(file_get_contents(__DIR__ . '/../../resources/codesigning/root.crl'));
- if($crl->validateSignature() !== true) {
+ if ($crl->validateSignature() !== true) {
throw new \Exception('Could not validate CRL signature');
}
$csn = $loadedCertificate['tbsCertificate']['serialNumber']->toString();
@@ -245,7 +245,7 @@ class Installer {
}
// Verify if the certificate has been issued by the Nextcloud Code Authority CA
- if($certificate->validateSignature() !== true) {
+ if ($certificate->validateSignature() !== true) {
throw new \Exception(
sprintf(
'App with id %s has a certificate not issued by a trusted Code Signing Authority',
@@ -256,7 +256,7 @@ class Installer {
// Verify if the certificate is issued for the requested app id
$certInfo = openssl_x509_parse($app['certificate']);
- if(!isset($certInfo['subject']['CN'])) {
+ if (!isset($certInfo['subject']['CN'])) {
throw new \Exception(
sprintf(
'App with id %s has a cert with no CN',
@@ -264,7 +264,7 @@ class Installer {
)
);
}
- if($certInfo['subject']['CN'] !== $appId) {
+ if ($certInfo['subject']['CN'] !== $appId) {
throw new \Exception(
sprintf(
'App with id %s has a cert issued to %s',
@@ -285,12 +285,12 @@ class Installer {
$verified = (bool)openssl_verify(file_get_contents($tempFile), base64_decode($app['releases'][0]['signature']), $certificate, OPENSSL_ALGO_SHA512);
openssl_free_key($certificate);
- if($verified === true) {
+ if ($verified === true) {
// Seems to match, let's proceed
$extractDir = $this->tempManager->getTemporaryFolder();
$archive = new TAR($tempFile);
- if($archive) {
+ if ($archive) {
if (!$archive->extract($extractDir)) {
throw new \Exception(
sprintf(
@@ -303,7 +303,7 @@ class Installer {
$folders = array_diff($allFiles, ['.', '..']);
$folders = array_values($folders);
- if(count($folders) > 1) {
+ if (count($folders) > 1) {
throw new \Exception(
sprintf(
'Extracted app %s has more than 1 folder',
@@ -316,7 +316,7 @@ class Installer {
$loadEntities = libxml_disable_entity_loader(false);
$xml = simplexml_load_file($extractDir . '/' . $folders[0] . '/appinfo/info.xml');
libxml_disable_entity_loader($loadEntities);
- if((string)$xml->id !== $appId) {
+ if ((string)$xml->id !== $appId) {
throw new \Exception(
sprintf(
'App for id %s has a wrong app ID in info.xml: %s',
@@ -329,7 +329,7 @@ class Installer {
// Check if the version is lower than before
$currentVersion = OC_App::getAppVersion($appId);
$newVersion = (string)$xml->version;
- if(version_compare($currentVersion, $newVersion) === 1) {
+ if (version_compare($currentVersion, $newVersion) === 1) {
throw new \Exception(
sprintf(
'App for id %s has version %s and tried to update to lower version %s',
@@ -344,7 +344,7 @@ class Installer {
// Remove old app with the ID if existent
OC_Helper::rmdirr($baseDir);
// Move to app folder
- if(@mkdir($baseDir)) {
+ if (@mkdir($baseDir)) {
$extractDir .= '/' . $folders[0];
OC_Helper::copyr($extractDir, $baseDir);
}
@@ -408,8 +408,8 @@ class Installer {
$this->apps = $this->appFetcher->get();
}
- foreach($this->apps as $app) {
- if($app['id'] === $appId) {
+ foreach ($this->apps as $app) {
+ if ($app['id'] === $appId) {
$currentVersion = OC_App::getAppVersion($appId);
if (!isset($app['releases'][0]['version'])) {
@@ -436,7 +436,7 @@ class Installer {
*/
private function isInstalledFromGit($appId) {
$app = \OC_App::findAppInDirectories($appId);
- if($app === false) {
+ if ($app === false) {
return false;
}
$basedir = $app['path'].'/'.$appId;
@@ -451,7 +451,7 @@ class Installer {
* The function will check if the app is already downloaded in the apps repository
*/
public function isDownloaded($name) {
- foreach(\OC::$APPSROOTS as $dir) {
+ foreach (\OC::$APPSROOTS as $dir) {
$dirToTest = $dir['path'];
$dirToTest .= '/';
$dirToTest .= $name;
@@ -479,19 +479,18 @@ class Installer {
* this has to be done by the function oc_app_uninstall().
*/
public function removeApp($appId) {
- if($this->isDownloaded( $appId )) {
+ if ($this->isDownloaded($appId)) {
if (\OC::$server->getAppManager()->isShipped($appId)) {
return false;
}
$appDir = OC_App::getInstallPath() . '/' . $appId;
OC_Helper::rmdirr($appDir);
return true;
- }else{
+ } else {
\OCP\Util::writeLog('core', 'can\'t remove app '.$appId.'. It is not installed.', ILogger::ERROR);
return false;
}
-
}
/**
@@ -502,8 +501,8 @@ class Installer {
*/
public function installAppBundle(Bundle $bundle) {
$appIds = $bundle->getAppIdentifiers();
- foreach($appIds as $appId) {
- if(!$this->isDownloaded($appId)) {
+ foreach ($appIds as $appId) {
+ if (!$this->isDownloaded($appId)) {
$this->downloadApp($appId);
}
$this->installApp($appId);
@@ -527,12 +526,12 @@ class Installer {
$appManager = \OC::$server->getAppManager();
$config = \OC::$server->getConfig();
$errors = [];
- foreach(\OC::$APPSROOTS as $app_dir) {
- if($dir = opendir( $app_dir['path'] )) {
- while( false !== ( $filename = readdir( $dir ))) {
- if( $filename[0] !== '.' and is_dir($app_dir['path']."/$filename") ) {
- if( file_exists( $app_dir['path']."/$filename/appinfo/info.xml" )) {
- if($config->getAppValue($filename, "installed_version", null) === null) {
+ foreach (\OC::$APPSROOTS as $app_dir) {
+ if ($dir = opendir($app_dir['path'])) {
+ while (false !== ($filename = readdir($dir))) {
+ if ($filename[0] !== '.' and is_dir($app_dir['path']."/$filename")) {
+ if (file_exists($app_dir['path']."/$filename/appinfo/info.xml")) {
+ if ($config->getAppValue($filename, "installed_version", null) === null) {
$info=OC_App::getAppInfo($filename);
$enabled = isset($info['default_enable']);
if (($enabled || in_array($filename, $appManager->getAlwaysEnabledApps()))
@@ -556,7 +555,7 @@ class Installer {
}
}
}
- closedir( $dir );
+ closedir($dir);
}
}
@@ -573,7 +572,7 @@ class Installer {
$appPath = OC_App::getAppPath($app);
\OC_App::registerAutoloading($app, $appPath);
- if(is_file("$appPath/appinfo/database.xml")) {
+ if (is_file("$appPath/appinfo/database.xml")) {
try {
OC_DB::createDbFromStructure("$appPath/appinfo/database.xml");
} catch (TableExistsException $e) {
@@ -607,10 +606,10 @@ class Installer {
}
//set remote/public handlers
- foreach($info['remote'] as $name=>$path) {
+ foreach ($info['remote'] as $name=>$path) {
$config->setAppValue('core', 'remote_'.$name, $app.'/'.$path);
}
- foreach($info['public'] as $name=>$path) {
+ foreach ($info['public'] as $name=>$path) {
$config->setAppValue('core', 'public_'.$name, $app.'/'.$path);
}
@@ -623,7 +622,7 @@ class Installer {
* @param string $script
*/
private static function includeAppScript($script) {
- if ( file_exists($script) ){
+ if (file_exists($script)) {
include $script;
}
}
diff --git a/lib/private/IntegrityCheck/Checker.php b/lib/private/IntegrityCheck/Checker.php
index 57a80e6f4bd..f5c4d6bb016 100644
--- a/lib/private/IntegrityCheck/Checker.php
+++ b/lib/private/IntegrityCheck/Checker.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -58,7 +59,7 @@ use phpseclib\File\X509;
* @package OC\IntegrityCheck
*/
class Checker {
- const CACHE_KEY = 'oc.integritycheck.checker';
+ public const CACHE_KEY = 'oc.integritycheck.checker';
/** @var EnvironmentHelper */
private $environmentHelper;
/** @var AppLocator */
@@ -144,7 +145,7 @@ class Checker {
$folderToIterate,
\RecursiveDirectoryIterator::SKIP_DOTS
);
- if($root === '') {
+ if ($root === '') {
$root = \OC::$SERVERROOT;
}
$root = rtrim($root, '/');
@@ -171,9 +172,9 @@ class Checker {
$hashes = [];
$baseDirectoryLength = \strlen($path);
- foreach($iterator as $filename => $data) {
+ foreach ($iterator as $filename => $data) {
/** @var \DirectoryIterator $data */
- if($data->isDir()) {
+ if ($data->isDir()) {
continue;
}
@@ -181,11 +182,11 @@ class Checker {
$relativeFileName = ltrim($relativeFileName, '/');
// Exclude signature.json files in the appinfo and root folder
- if($relativeFileName === 'appinfo/signature.json') {
+ if ($relativeFileName === 'appinfo/signature.json') {
continue;
}
// Exclude signature.json files in the appinfo and core folder
- if($relativeFileName === 'core/signature.json') {
+ if ($relativeFileName === 'core/signature.json') {
continue;
}
@@ -196,10 +197,10 @@ class Checker {
// Thus we ignore everything below the first occurrence of
// "#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####" and have the
// hash generated based on this.
- if($filename === $this->environmentHelper->getServerRoot() . '/.htaccess') {
+ if ($filename === $this->environmentHelper->getServerRoot() . '/.htaccess') {
$fileContent = file_get_contents($filename);
$explodedArray = explode('#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####', $fileContent);
- if(\count($explodedArray) === 2) {
+ if (\count($explodedArray) === 2) {
$hashes[$relativeFileName] = hash('sha512', $explodedArray[0]);
continue;
}
@@ -207,7 +208,7 @@ class Checker {
if ($filename === $this->environmentHelper->getServerRoot() . '/core/js/mimetypelist.js') {
$oldMimetypeList = new GenerateMimetypeFileBuilder();
$newFile = $oldMimetypeList->generateFile($this->mimeTypeDetector->getAllAliases());
- if($newFile === file_get_contents($filename)) {
+ if ($newFile === file_get_contents($filename)) {
$hashes[$relativeFileName] = hash('sha512', $oldMimetypeList->generateFile($this->mimeTypeDetector->getOnlyDefaultAliases()));
continue;
}
@@ -239,10 +240,10 @@ class Checker {
$signature = $privateKey->sign(json_encode($hashes));
return [
- 'hashes' => $hashes,
- 'signature' => base64_encode($signature),
- 'certificate' => $certificate->saveX509($certificate->currentCert),
- ];
+ 'hashes' => $hashes,
+ 'signature' => base64_encode($signature),
+ 'certificate' => $certificate->saveX509($certificate->currentCert),
+ ];
}
/**
@@ -263,11 +264,11 @@ class Checker {
$iterator = $this->getFolderIterator($path);
$hashes = $this->generateHashes($iterator, $path);
$signature = $this->createSignatureData($hashes, $certificate, $privateKey);
- $this->fileAccessHelper->file_put_contents(
+ $this->fileAccessHelper->file_put_contents(
$appInfoDir . '/signature.json',
json_encode($signature, JSON_PRETTY_PRINT)
);
- } catch (\Exception $e){
+ } catch (\Exception $e) {
if (!$this->fileAccessHelper->is_writable($appInfoDir)) {
throw new \Exception($appInfoDir . ' is not writable');
}
@@ -288,7 +289,6 @@ class Checker {
$path) {
$coreDir = $path . '/core';
try {
-
$this->fileAccessHelper->assertDirectoryExists($coreDir);
$iterator = $this->getFolderIterator($path, $path);
$hashes = $this->generateHashes($iterator, $path);
@@ -297,7 +297,7 @@ class Checker {
$coreDir . '/signature.json',
json_encode($signatureData, JSON_PRETTY_PRINT)
);
- } catch (\Exception $e){
+ } catch (\Exception $e) {
if (!$this->fileAccessHelper->is_writable($coreDir)) {
throw new \Exception($coreDir . ' is not writable');
}
@@ -316,7 +316,7 @@ class Checker {
* @throws \Exception
*/
private function verify(string $signaturePath, string $basePath, string $certificateCN): array {
- if(!$this->isCodeCheckEnforced()) {
+ if (!$this->isCodeCheckEnforced()) {
return [];
}
@@ -326,7 +326,7 @@ class Checker {
if (\is_string($content)) {
$signatureData = json_decode($content, true);
}
- if(!\is_array($signatureData)) {
+ if (!\is_array($signatureData)) {
throw new InvalidSignatureException('Signature data not found.');
}
@@ -340,11 +340,11 @@ class Checker {
$rootCertificatePublicKey = $this->fileAccessHelper->file_get_contents($this->environmentHelper->getServerRoot().'/resources/codesigning/root.crt');
$x509->loadCA($rootCertificatePublicKey);
$x509->loadX509($certificate);
- if(!$x509->validateSignature()) {
+ if (!$x509->validateSignature()) {
throw new InvalidSignatureException('Certificate is not valid.');
}
// Verify if certificate has proper CN. "core" CN is always trusted.
- if($x509->getDN(X509::DN_OPENSSL)['CN'] !== $certificateCN && $x509->getDN(X509::DN_OPENSSL)['CN'] !== 'core') {
+ if ($x509->getDN(X509::DN_OPENSSL)['CN'] !== $certificateCN && $x509->getDN(X509::DN_OPENSSL)['CN'] !== 'core') {
throw new InvalidSignatureException(
sprintf('Certificate is not valid for required scope. (Requested: %s, current: CN=%s)', $certificateCN, $x509->getDN(true)['CN'])
);
@@ -357,7 +357,7 @@ class Checker {
$rsa->setMGFHash('sha512');
// See https://tools.ietf.org/html/rfc3447#page-38
$rsa->setSaltLength(0);
- if(!$rsa->verify(json_encode($expectedHashes), $signature)) {
+ if (!$rsa->verify(json_encode($expectedHashes), $signature)) {
throw new InvalidSignatureException('Signature could not get verified.');
}
@@ -366,9 +366,9 @@ class Checker {
//
// Due to this reason we exclude the whole updater/ folder from the code
// integrity check.
- if($basePath === $this->environmentHelper->getServerRoot()) {
- foreach($expectedHashes as $fileName => $hash) {
- if(strpos($fileName, 'updater/') === 0) {
+ if ($basePath === $this->environmentHelper->getServerRoot()) {
+ foreach ($expectedHashes as $fileName => $hash) {
+ if (strpos($fileName, 'updater/') === 0) {
unset($expectedHashes[$fileName]);
}
}
@@ -380,23 +380,23 @@ class Checker {
$differencesB = array_diff($currentInstanceHashes, $expectedHashes);
$differences = array_unique(array_merge($differencesA, $differencesB));
$differenceArray = [];
- foreach($differences as $filename => $hash) {
+ foreach ($differences as $filename => $hash) {
// Check if file should not exist in the new signature table
- if(!array_key_exists($filename, $expectedHashes)) {
+ if (!array_key_exists($filename, $expectedHashes)) {
$differenceArray['EXTRA_FILE'][$filename]['expected'] = '';
$differenceArray['EXTRA_FILE'][$filename]['current'] = $hash;
continue;
}
// Check if file is missing
- if(!array_key_exists($filename, $currentInstanceHashes)) {
+ if (!array_key_exists($filename, $currentInstanceHashes)) {
$differenceArray['FILE_MISSING'][$filename]['expected'] = $expectedHashes[$filename];
$differenceArray['FILE_MISSING'][$filename]['current'] = '';
continue;
}
// Check if hash does mismatch
- if($expectedHashes[$filename] !== $currentInstanceHashes[$filename]) {
+ if ($expectedHashes[$filename] !== $currentInstanceHashes[$filename]) {
$differenceArray['INVALID_HASH'][$filename]['expected'] = $expectedHashes[$filename];
$differenceArray['INVALID_HASH'][$filename]['current'] = $currentInstanceHashes[$filename];
continue;
@@ -416,7 +416,7 @@ class Checker {
*/
public function hasPassedCheck(): bool {
$results = $this->getResults();
- if(empty($results)) {
+ if (empty($results)) {
return true;
}
@@ -428,7 +428,7 @@ class Checker {
*/
public function getResults(): array {
$cachedResults = $this->cache->get(self::CACHE_KEY);
- if(!\is_null($cachedResults)) {
+ if (!\is_null($cachedResults)) {
return json_decode($cachedResults, true);
}
@@ -447,7 +447,7 @@ class Checker {
private function storeResults(string $scope, array $result) {
$resultArray = $this->getResults();
unset($resultArray[$scope]);
- if(!empty($result)) {
+ if (!empty($result)) {
$resultArray[$scope] = $result;
}
if ($this->config !== null) {
@@ -499,7 +499,7 @@ class Checker {
*/
public function verifyAppSignature(string $appId, string $path = ''): array {
try {
- if($path === '') {
+ if ($path === '') {
$path = $this->appLocator->getAppPath($appId);
}
$result = $this->verify(
@@ -509,10 +509,10 @@ class Checker {
);
} catch (\Exception $e) {
$result = [
- 'EXCEPTION' => [
- 'class' => \get_class($e),
- 'message' => $e->getMessage(),
- ],
+ 'EXCEPTION' => [
+ 'class' => \get_class($e),
+ 'message' => $e->getMessage(),
+ ],
];
}
$this->storeResults($appId, $result);
@@ -559,10 +559,10 @@ class Checker {
);
} catch (\Exception $e) {
$result = [
- 'EXCEPTION' => [
- 'class' => \get_class($e),
- 'message' => $e->getMessage(),
- ],
+ 'EXCEPTION' => [
+ 'class' => \get_class($e),
+ 'message' => $e->getMessage(),
+ ],
];
}
$this->storeResults('core', $result);
@@ -578,7 +578,7 @@ class Checker {
$this->cleanResults();
$this->verifyCoreSignature();
$appIds = $this->appLocator->getAllApps();
- foreach($appIds as $appId) {
+ foreach ($appIds as $appId) {
// If an application is shipped a valid signature is required
$isShipped = $this->appManager->isShipped($appId);
$appNeedsToBeChecked = false;
@@ -589,7 +589,7 @@ class Checker {
$appNeedsToBeChecked = true;
}
- if($appNeedsToBeChecked) {
+ if ($appNeedsToBeChecked) {
$this->verifyAppSignature($appId);
}
}
diff --git a/lib/private/IntegrityCheck/Exceptions/InvalidSignatureException.php b/lib/private/IntegrityCheck/Exceptions/InvalidSignatureException.php
index 8a7f5129dce..daef60ac1fc 100644
--- a/lib/private/IntegrityCheck/Exceptions/InvalidSignatureException.php
+++ b/lib/private/IntegrityCheck/Exceptions/InvalidSignatureException.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
*
* @license AGPL-3.0
@@ -28,4 +29,5 @@ namespace OC\IntegrityCheck\Exceptions;
*
* @package OC\IntegrityCheck\Exceptions
*/
-class InvalidSignatureException extends \Exception {}
+class InvalidSignatureException extends \Exception {
+}
diff --git a/lib/private/IntegrityCheck/Helpers/AppLocator.php b/lib/private/IntegrityCheck/Helpers/AppLocator.php
index 75a64bfe0b8..fdfc81de859 100644
--- a/lib/private/IntegrityCheck/Helpers/AppLocator.php
+++ b/lib/private/IntegrityCheck/Helpers/AppLocator.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -43,8 +44,7 @@ class AppLocator {
*/
public function getAppPath(string $appId): string {
$path = \OC_App::getAppPath($appId);
- if($path === false) {
-
+ if ($path === false) {
throw new \Exception('App not found');
}
return $path;
diff --git a/lib/private/IntegrityCheck/Helpers/FileAccessHelper.php b/lib/private/IntegrityCheck/Helpers/FileAccessHelper.php
index 322b6ada9e1..2a0c0dd2017 100644
--- a/lib/private/IntegrityCheck/Helpers/FileAccessHelper.php
+++ b/lib/private/IntegrityCheck/Helpers/FileAccessHelper.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Victor Dubiniuk <dubiniuk@owncloud.com>
@@ -64,7 +65,7 @@ class FileAccessHelper {
*/
public function file_put_contents(string $filename, string $data): int {
$bytesWritten = @file_put_contents($filename, $data);
- if ($bytesWritten === false || $bytesWritten !== \strlen($data)){
+ if ($bytesWritten === false || $bytesWritten !== \strlen($data)) {
throw new \Exception('Failed to write into ' . $filename);
}
return $bytesWritten;
diff --git a/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php b/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php
index 3a713954a79..51b134059d5 100644
--- a/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php
+++ b/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author RealRancor <Fisch.666@gmx.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -34,7 +35,7 @@ class ExcludeFoldersByPathFilterIterator extends \RecursiveFilterIterator {
parent::__construct($iterator);
$appFolders = \OC::$APPSROOTS;
- foreach($appFolders as $key => $appFolder) {
+ foreach ($appFolders as $key => $appFolder) {
$appFolders[$key] = rtrim($appFolder['path'], '/');
}
@@ -52,7 +53,7 @@ class ExcludeFoldersByPathFilterIterator extends \RecursiveFilterIterator {
rtrim($root . '/_oc_upgrade', '/'),
];
$customDataDir = \OC::$server->getConfig()->getSystemValue('datadirectory', '');
- if($customDataDir !== '') {
+ if ($customDataDir !== '') {
$excludedFolders[] = rtrim($customDataDir, '/');
}
diff --git a/lib/private/L10N/Factory.php b/lib/private/L10N/Factory.php
index bba55385882..9d9e6ac9b26 100644
--- a/lib/private/L10N/Factory.php
+++ b/lib/private/L10N/Factory.php
@@ -16,7 +16,7 @@
* @author Robin Appelman <robin@icewind.nl>
* @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Roeland Jago Douma <roeland@famdouma.nl>
- * @author Thomas Citharel <tcit@tcit.fr>
+ * @author Thomas Citharel <nextcloud@tcit.fr>
*
* @license AGPL-3.0
*
@@ -72,7 +72,7 @@ class Factory implements IFactory {
*/
protected $pluralFunctions = [];
- const COMMON_LANGUAGE_CODES = [
+ public const COMMON_LANGUAGE_CODES = [
'en', 'es', 'fr', 'de', 'de_DE', 'ja', 'ar', 'ru', 'nl', 'it',
'pt_BR', 'pt_PT', 'da', 'fi_FI', 'nb_NO', 'sv', 'tr', 'zh_CN', 'ko'
];
@@ -114,11 +114,10 @@ class Factory implements IFactory {
* @return \OCP\IL10N
*/
public function get($app, $lang = null, $locale = null) {
- return new LazyL10N(function() use ($app, $lang, $locale) {
-
+ return new LazyL10N(function () use ($app, $lang, $locale) {
$app = \OC_App::cleanAppId($app);
if ($lang !== null) {
- $lang = str_replace(array('\0', '/', '\\', '..'), '', (string)$lang);
+ $lang = str_replace(['\0', '/', '\\', '..'], '', (string)$lang);
}
$forceLang = $this->config->getSystemValue('force_language', false);
@@ -264,7 +263,7 @@ class Factory implements IFactory {
if ($this->languageExists($app, $locale)) {
return $locale;
}
-
+
// Try to split e.g: fr_FR => fr
$locale = explode('_', $locale)[0];
if ($this->languageExists($app, $locale)) {
@@ -353,7 +352,7 @@ class Factory implements IFactory {
public function getLanguageIterator(IUser $user = null): ILanguageIterator {
$user = $user ?? $this->userSession->getUser();
- if($user === null) {
+ if ($user === null) {
throw new \RuntimeException('Failed to get an IUser instance');
}
return new LanguageIterator($user, $this->config);
@@ -369,7 +368,7 @@ class Factory implements IFactory {
}
$locales = $this->findAvailableLocales();
- $userLocale = array_filter($locales, function($value) use ($locale) {
+ $userLocale = array_filter($locales, function ($value) use ($locale) {
return $locale === $value['code'];
});
@@ -505,7 +504,7 @@ class Factory implements IFactory {
if (file_exists($this->serverRoot . '/' . $app . '/l10n/')) {
return $this->serverRoot . '/' . $app . '/l10n/';
}
- } else if ($app && \OC_App::getAppPath($app) !== false) {
+ } elseif ($app && \OC_App::getAppPath($app) !== false) {
// Check if the app is in the app folder
return \OC_App::getAppPath($app) . '/l10n/';
}
@@ -526,14 +525,14 @@ class Factory implements IFactory {
return $this->pluralFunctions[$string];
}
- if (preg_match( '/^\s*nplurals\s*=\s*(\d+)\s*;\s*plural=(.*)$/u', $string, $matches)) {
+ if (preg_match('/^\s*nplurals\s*=\s*(\d+)\s*;\s*plural=(.*)$/u', $string, $matches)) {
// sanitize
- $nplurals = preg_replace( '/[^0-9]/', '', $matches[1] );
- $plural = preg_replace( '#[^n0-9:\(\)\?\|\&=!<>+*/\%-]#', '', $matches[2] );
+ $nplurals = preg_replace('/[^0-9]/', '', $matches[1]);
+ $plural = preg_replace('#[^n0-9:\(\)\?\|\&=!<>+*/\%-]#', '', $matches[2]);
$body = str_replace(
- array( 'plural', 'n', '$n$plurals', ),
- array( '$plural', '$n', '$nplurals', ),
+ [ 'plural', 'n', '$n$plurals', ],
+ [ '$plural', '$n', '$nplurals', ],
'nplurals='. $nplurals . '; plural=' . $plural
);
@@ -543,9 +542,9 @@ class Factory implements IFactory {
$res = '';
$p = 0;
$length = strlen($body);
- for($i = 0; $i < $length; $i++) {
+ for ($i = 0; $i < $length; $i++) {
$ch = $body[$i];
- switch ( $ch ) {
+ switch ($ch) {
case '?':
$res .= ' ? (';
$p++;
@@ -554,7 +553,7 @@ class Factory implements IFactory {
$res .= ') : (';
break;
case ';':
- $res .= str_repeat( ')', $p ) . ';';
+ $res .= str_repeat(')', $p) . ';';
$p = 0;
break;
default:
@@ -586,7 +585,16 @@ class Factory implements IFactory {
public function getLanguages() {
$forceLanguage = $this->config->getSystemValue('force_language', false);
if ($forceLanguage !== false) {
- return [];
+ $l = $this->get('lib', $forceLanguage);
+ $potentialName = (string) $l->t('__language_name__');
+
+ return [
+ 'commonlanguages' => [[
+ 'code' => $forceLanguage,
+ 'name' => $potentialName,
+ ]],
+ 'languages' => [],
+ ];
}
$languageCodes = $this->findAvailableLanguages();
@@ -594,25 +602,25 @@ class Factory implements IFactory {
$commonLanguages = [];
$languages = [];
- foreach($languageCodes as $lang) {
+ foreach ($languageCodes as $lang) {
$l = $this->get('lib', $lang);
// TRANSLATORS this is the language name for the language switcher in the personal settings and should be the localized version
$potentialName = (string) $l->t('__language_name__');
if ($l->getLanguageCode() === $lang && $potentialName[0] !== '_') {//first check if the language name is in the translation file
- $ln = array(
+ $ln = [
'code' => $lang,
'name' => $potentialName
- );
- } else if ($lang === 'en') {
- $ln = array(
+ ];
+ } elseif ($lang === 'en') {
+ $ln = [
'code' => $lang,
'name' => 'English (US)'
- );
+ ];
} else {//fallback to language code
- $ln = array(
+ $ln = [
'code' => $lang,
'name' => $lang
- );
+ ];
}
// put appropriate languages into appropriate arrays, to print them sorted
@@ -627,7 +635,7 @@ class Factory implements IFactory {
ksort($commonLanguages);
// sort now by displayed language not the iso-code
- usort( $languages, function ($a, $b) {
+ usort($languages, function ($a, $b) {
if ($a['code'] === $a['name'] && $b['code'] !== $b['name']) {
// If a doesn't have a name, but b does, list b before a
return 1;
diff --git a/lib/private/L10N/L10N.php b/lib/private/L10N/L10N.php
index bc05bd81849..3b32ec2827f 100644
--- a/lib/private/L10N/L10N.php
+++ b/lib/private/L10N/L10N.php
@@ -5,10 +5,11 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
- * @author Thomas Citharel <tcit@tcit.fr>
+ * @author Thomas Citharel <nextcloud@tcit.fr>
*
* @license AGPL-3.0
*
@@ -178,10 +179,10 @@ class L10N implements IL10N {
$value = new \DateTime();
if ($data instanceof \DateTime) {
$value = $data;
- } else if (\is_string($data) && !is_numeric($data)) {
+ } elseif (\is_string($data) && !is_numeric($data)) {
$data = strtotime($data);
$value->setTimestamp($data);
- } else if ($data !== null) {
+ } elseif ($data !== null) {
$data = (int)$data;
$value->setTimestamp($data);
}
@@ -221,7 +222,7 @@ class L10N implements IL10N {
public function getPluralFormFunction(): \Closure {
if (\is_null($this->pluralFormFunction)) {
$lang = $this->getLanguageCode();
- $this->pluralFormFunction = function($n) use ($lang) {
+ $this->pluralFormFunction = function ($n) use ($lang) {
return PluralizationRules::get($n, $lang);
};
}
diff --git a/lib/private/L10N/L10NString.php b/lib/private/L10N/L10NString.php
index 47635cf67fc..a82228189b6 100644
--- a/lib/private/L10N/L10NString.php
+++ b/lib/private/L10N/L10NString.php
@@ -4,6 +4,7 @@
*
* @author Bart Visscher <bartv@thisnet.nl>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jakob Sack <mail@jakobsack.de>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
@@ -63,13 +64,12 @@ class L10NString implements \JsonSerializable {
$translations = $this->l10n->getTranslations();
$text = $this->text;
- if(array_key_exists($this->text, $translations)) {
- if(is_array($translations[$this->text])) {
+ if (array_key_exists($this->text, $translations)) {
+ if (is_array($translations[$this->text])) {
$fn = $this->l10n->getPluralFormFunction();
$id = $fn($this->count);
$text = $translations[$this->text][$id];
- }
- else{
+ } else {
$text = $translations[$this->text];
}
}
diff --git a/lib/private/L10N/LanguageIterator.php b/lib/private/L10N/LanguageIterator.php
index 8c9624d7d53..cbbafde92ff 100644
--- a/lib/private/L10N/LanguageIterator.php
+++ b/lib/private/L10N/LanguageIterator.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright Copyright (c) 2018 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
*
* @license GNU AGPL version 3 or any later version
*
@@ -55,48 +56,53 @@ class LanguageIterator implements ILanguageIterator {
* @since 14.0.0
*/
public function current(): string {
- switch($this->i) {
+ switch ($this->i) {
/** @noinspection PhpMissingBreakStatementInspection */
case 0:
$forcedLang = $this->config->getSystemValue('force_language', false);
- if(is_string($forcedLang)) {
+ if (is_string($forcedLang)) {
return $forcedLang;
}
$this->next();
/** @noinspection PhpMissingBreakStatementInspection */
+ // no break
case 1:
$forcedLang = $this->config->getSystemValue('force_language', false);
- if(is_string($forcedLang)
+ if (is_string($forcedLang)
&& ($truncated = $this->getTruncatedLanguage($forcedLang)) !== $forcedLang
) {
return $truncated;
}
$this->next();
/** @noinspection PhpMissingBreakStatementInspection */
+ // no break
case 2:
$userLang = $this->config->getUserValue($this->user->getUID(), 'core', 'lang', null);
- if(is_string($userLang)) {
+ if (is_string($userLang)) {
return $userLang;
}
$this->next();
/** @noinspection PhpMissingBreakStatementInspection */
+ // no break
case 3:
$userLang = $this->config->getUserValue($this->user->getUID(), 'core', 'lang', null);
- if(is_string($userLang)
+ if (is_string($userLang)
&& ($truncated = $this->getTruncatedLanguage($userLang)) !== $userLang
) {
return $truncated;
}
$this->next();
+ // no break
case 4:
return $this->config->getSystemValue('default_language', 'en');
/** @noinspection PhpMissingBreakStatementInspection */
case 5:
$defaultLang = $this->config->getSystemValue('default_language', 'en');
- if(($truncated = $this->getTruncatedLanguage($defaultLang)) !== $defaultLang) {
+ if (($truncated = $this->getTruncatedLanguage($defaultLang)) !== $defaultLang) {
return $truncated;
}
$this->next();
+ // no break
default:
return 'en';
}
@@ -131,7 +137,7 @@ class LanguageIterator implements ILanguageIterator {
protected function getTruncatedLanguage(string $lang):string {
$pos = strpos($lang, '_');
- if($pos !== false) {
+ if ($pos !== false) {
$lang = substr($lang, 0, $pos);
}
return $lang;
diff --git a/lib/private/L10N/LanguageNotFoundException.php b/lib/private/L10N/LanguageNotFoundException.php
index b7c407f6ee9..20b22a8b5ec 100644
--- a/lib/private/L10N/LanguageNotFoundException.php
+++ b/lib/private/L10N/LanguageNotFoundException.php
@@ -24,5 +24,4 @@
namespace OC\L10N;
class LanguageNotFoundException extends \Exception {
-
}
diff --git a/lib/private/L10N/LazyL10N.php b/lib/private/L10N/LazyL10N.php
index 2b47de55dd9..9ffcb4df98f 100644
--- a/lib/private/L10N/LazyL10N.php
+++ b/lib/private/L10N/LazyL10N.php
@@ -68,5 +68,4 @@ class LazyL10N implements IL10N {
public function getLocaleCode(): string {
return $this->getL()->getLocaleCode();
}
-
}
diff --git a/lib/private/LargeFileHelper.php b/lib/private/LargeFileHelper.php
index dd75ec9820c..2a6a6714eb3 100755
--- a/lib/private/LargeFileHelper.php
+++ b/lib/private/LargeFileHelper.php
@@ -4,6 +4,7 @@
* @copyright Copyright (c) 2016, Lukas Reschke <lukas@statuscode.ch>
*
* @author Andreas Fischer <bantu@owncloud.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author marco44 <cousinmarc@gmail.com>
* @author Michael Roitzsch <reactorcontrol@icloud.com>
@@ -33,23 +34,23 @@ namespace OC;
*/
class LargeFileHelper {
/**
- * pow(2, 53) as a base-10 string.
- * @var string
- */
- const POW_2_53 = '9007199254740992';
+ * pow(2, 53) as a base-10 string.
+ * @var string
+ */
+ public const POW_2_53 = '9007199254740992';
/**
- * pow(2, 53) - 1 as a base-10 string.
- * @var string
- */
- const POW_2_53_MINUS_1 = '9007199254740991';
+ * pow(2, 53) - 1 as a base-10 string.
+ * @var string
+ */
+ public const POW_2_53_MINUS_1 = '9007199254740991';
/**
- * @brief Checks whether our assumptions hold on the PHP platform we are on.
- *
- * @throws \RunTimeException if our assumptions do not hold on the current
- * PHP platform.
- */
+ * @brief Checks whether our assumptions hold on the PHP platform we are on.
+ *
+ * @throws \RunTimeException if our assumptions do not hold on the current
+ * PHP platform.
+ */
public function __construct() {
$pow_2_53 = (float)self::POW_2_53_MINUS_1 + 1.0;
if ($this->formatUnsignedInteger($pow_2_53) !== self::POW_2_53) {
@@ -60,23 +61,23 @@ class LargeFileHelper {
}
/**
- * @brief Formats a signed integer or float as an unsigned integer base-10
- * string. Passed strings will be checked for being base-10.
- *
- * @param int|float|string $number Number containing unsigned integer data
- *
- * @throws \UnexpectedValueException if $number is not a float, not an int
- * and not a base-10 string.
- *
- * @return string Unsigned integer base-10 string
- */
+ * @brief Formats a signed integer or float as an unsigned integer base-10
+ * string. Passed strings will be checked for being base-10.
+ *
+ * @param int|float|string $number Number containing unsigned integer data
+ *
+ * @throws \UnexpectedValueException if $number is not a float, not an int
+ * and not a base-10 string.
+ *
+ * @return string Unsigned integer base-10 string
+ */
public function formatUnsignedInteger($number) {
if (is_float($number)) {
// Undo the effect of the php.ini setting 'precision'.
return number_format($number, 0, '', '');
- } else if (is_string($number) && ctype_digit($number)) {
+ } elseif (is_string($number) && ctype_digit($number)) {
return $number;
- } else if (is_int($number)) {
+ } elseif (is_int($number)) {
// Interpret signed integer as unsigned integer.
return sprintf('%u', $number);
} else {
@@ -87,14 +88,14 @@ class LargeFileHelper {
}
/**
- * @brief Tries to get the size of a file via various workarounds that
- * even work for large files on 32-bit platforms.
- *
- * @param string $filename Path to the file.
- *
- * @return null|int|float Number of bytes as number (float or int) or
- * null on failure.
- */
+ * @brief Tries to get the size of a file via various workarounds that
+ * even work for large files on 32-bit platforms.
+ *
+ * @param string $filename Path to the file.
+ *
+ * @return null|int|float Number of bytes as number (float or int) or
+ * null on failure.
+ */
public function getFileSize($filename) {
$fileSize = $this->getFileSizeViaCurl($filename);
if (!is_null($fileSize)) {
@@ -108,13 +109,13 @@ class LargeFileHelper {
}
/**
- * @brief Tries to get the size of a file via a CURL HEAD request.
- *
- * @param string $fileName Path to the file.
- *
- * @return null|int|float Number of bytes as number (float or int) or
- * null on failure.
- */
+ * @brief Tries to get the size of a file via a CURL HEAD request.
+ *
+ * @param string $fileName Path to the file.
+ *
+ * @return null|int|float Number of bytes as number (float or int) or
+ * null on failure.
+ */
public function getFileSizeViaCurl($fileName) {
if (\OC::$server->getIniWrapper()->getString('open_basedir') === '') {
$encodedFileName = rawurlencode($fileName);
@@ -125,7 +126,7 @@ class LargeFileHelper {
$data = curl_exec($ch);
curl_close($ch);
if ($data !== false) {
- $matches = array();
+ $matches = [];
preg_match('/Content-Length: (\d+)/', $data, $matches);
if (isset($matches[1])) {
return 0 + $matches[1];
@@ -136,13 +137,13 @@ class LargeFileHelper {
}
/**
- * @brief Tries to get the size of a file via an exec() call.
- *
- * @param string $filename Path to the file.
- *
- * @return null|int|float Number of bytes as number (float or int) or
- * null on failure.
- */
+ * @brief Tries to get the size of a file via an exec() call.
+ *
+ * @param string $filename Path to the file.
+ *
+ * @return null|int|float Number of bytes as number (float or int) or
+ * null on failure.
+ */
public function getFileSizeViaExec($filename) {
if (\OC_Helper::is_function_enabled('exec')) {
$os = strtolower(php_uname('s'));
@@ -150,7 +151,7 @@ class LargeFileHelper {
$result = null;
if (strpos($os, 'linux') !== false) {
$result = $this->exec("stat -c %s $arg");
- } else if (strpos($os, 'bsd') !== false || strpos($os, 'darwin') !== false) {
+ } elseif (strpos($os, 'bsd') !== false || strpos($os, 'darwin') !== false) {
$result = $this->exec("stat -f %z $arg");
}
return $result;
@@ -159,15 +160,15 @@ class LargeFileHelper {
}
/**
- * @brief Gets the size of a file via a filesize() call and converts
- * negative signed int to positive float. As the result of filesize()
- * will wrap around after a file size of 2^32 bytes = 4 GiB, this
- * should only be used as a last resort.
- *
- * @param string $filename Path to the file.
- *
- * @return int|float Number of bytes as number (float or int).
- */
+ * @brief Gets the size of a file via a filesize() call and converts
+ * negative signed int to positive float. As the result of filesize()
+ * will wrap around after a file size of 2^32 bytes = 4 GiB, this
+ * should only be used as a last resort.
+ *
+ * @param string $filename Path to the file.
+ *
+ * @return int|float Number of bytes as number (float or int).
+ */
public function getFileSizeNative($filename) {
$result = filesize($filename);
if ($result < 0) {
@@ -200,8 +201,6 @@ class LargeFileHelper {
}
}
return $result;
-
-
}
protected function exec($cmd) {
diff --git a/lib/private/Lock/AbstractLockingProvider.php b/lib/private/Lock/AbstractLockingProvider.php
index 91870325fe2..e23e8566c13 100644
--- a/lib/private/Lock/AbstractLockingProvider.php
+++ b/lib/private/Lock/AbstractLockingProvider.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -87,7 +88,7 @@ abstract class AbstractLockingProvider implements ILockingProvider {
unset($this->acquiredLocks['shared'][$path]);
}
}
- } else if ($type === self::LOCK_EXCLUSIVE) {
+ } elseif ($type === self::LOCK_EXCLUSIVE) {
unset($this->acquiredLocks['exclusive'][$path]);
}
}
@@ -105,7 +106,7 @@ abstract class AbstractLockingProvider implements ILockingProvider {
$this->acquiredLocks['shared'][$path] = 0;
}
$this->acquiredLocks['shared'][$path]++;
- } else if ($targetType === self::LOCK_EXCLUSIVE) {
+ } elseif ($targetType === self::LOCK_EXCLUSIVE) {
$this->acquiredLocks['exclusive'][$path] = true;
$this->acquiredLocks['shared'][$path]--;
}
diff --git a/lib/private/Lock/DBLockingProvider.php b/lib/private/Lock/DBLockingProvider.php
index 974b0b55c89..c32d7b4877a 100644
--- a/lib/private/Lock/DBLockingProvider.php
+++ b/lib/private/Lock/DBLockingProvider.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Individual IT Services <info@individual-it.net>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
@@ -28,7 +29,6 @@
namespace OC\Lock;
-use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
use OC\DB\QueryBuilder\Literal;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\DB\QueryBuilder\IQueryBuilder;
@@ -99,7 +99,7 @@ class DBLockingProvider extends AbstractLockingProvider {
if ($this->cacheSharedLocks) {
if ($targetType === self::LOCK_SHARED) {
$this->sharedLocks[$path] = true;
- } else if ($targetType === self::LOCK_EXCLUSIVE) {
+ } elseif ($targetType === self::LOCK_EXCLUSIVE) {
$this->sharedLocks[$path] = false;
}
}
@@ -168,7 +168,7 @@ class DBLockingProvider extends AbstractLockingProvider {
} else {
return $lockValue > 0;
}
- } else if ($type === self::LOCK_EXCLUSIVE) {
+ } elseif ($type === self::LOCK_EXCLUSIVE) {
return $lockValue === -1;
} else {
return false;
@@ -228,7 +228,7 @@ class DBLockingProvider extends AbstractLockingProvider {
'UPDATE `*PREFIX*file_locks` SET `lock` = 0 WHERE `key` = ? AND `lock` = -1',
[$path]
);
- } else if (!$this->cacheSharedLocks) {
+ } elseif (!$this->cacheSharedLocks) {
$query = $this->connection->getQueryBuilder();
$query->update('file_locks')
->set('lock', $query->func()->subtract('lock', $query->createNamedParameter(1)))
diff --git a/lib/private/Lock/MemcacheLockingProvider.php b/lib/private/Lock/MemcacheLockingProvider.php
index 6cab64b3a02..3d7510f43ff 100644
--- a/lib/private/Lock/MemcacheLockingProvider.php
+++ b/lib/private/Lock/MemcacheLockingProvider.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -60,7 +61,7 @@ class MemcacheLockingProvider extends AbstractLockingProvider {
$lockValue = $this->memcache->get($path);
if ($type === self::LOCK_SHARED) {
return $lockValue > 0;
- } else if ($type === self::LOCK_EXCLUSIVE) {
+ } elseif ($type === self::LOCK_EXCLUSIVE) {
return $lockValue === 'exclusive';
} else {
return false;
@@ -108,7 +109,7 @@ class MemcacheLockingProvider extends AbstractLockingProvider {
if ($newValue < 0) {
$this->memcache->cad($path, $newValue);
}
- } else if ($type === self::LOCK_EXCLUSIVE) {
+ } elseif ($type === self::LOCK_EXCLUSIVE) {
$this->memcache->cad($path, 'exclusive');
}
$this->markRelease($path, $type);
@@ -126,7 +127,7 @@ class MemcacheLockingProvider extends AbstractLockingProvider {
if (!$this->memcache->cas($path, 'exclusive', 1)) {
throw new LockedException($path, null, $this->getExistingLockForException($path));
}
- } else if ($targetType === self::LOCK_EXCLUSIVE) {
+ } elseif ($targetType === self::LOCK_EXCLUSIVE) {
// we can only change a shared lock to an exclusive if there's only a single owner of the shared lock
if (!$this->memcache->cas($path, 1, 'exclusive')) {
throw new LockedException($path, null, $this->getExistingLockForException($path));
@@ -140,7 +141,7 @@ class MemcacheLockingProvider extends AbstractLockingProvider {
$existing = $this->memcache->get($path);
if (!$existing) {
return 'none';
- } else if ($existing === 'exclusive') {
+ } elseif ($existing === 'exclusive') {
return $existing;
} else {
return $existing . ' shared locks';
diff --git a/lib/private/Lockdown/Filesystem/NullCache.php b/lib/private/Lockdown/Filesystem/NullCache.php
index 83b0d744913..396bf68d5df 100644
--- a/lib/private/Lockdown/Filesystem/NullCache.php
+++ b/lib/private/Lockdown/Filesystem/NullCache.php
@@ -122,5 +122,4 @@ class NullCache implements ICache {
public function normalize($path) {
return $path;
}
-
}
diff --git a/lib/private/Log.php b/lib/private/Log.php
index d288e724179..2048d60a53b 100644
--- a/lib/private/Log.php
+++ b/lib/private/Log.php
@@ -373,7 +373,7 @@ class Log implements ILogger, IDataLogger {
}
public function getLogPath():string {
- if($this->logger instanceof IFileBased) {
+ if ($this->logger instanceof IFileBased) {
return $this->logger->getLogFilePath();
}
throw new \RuntimeException('Log implementation has no path');
diff --git a/lib/private/Log/ErrorHandler.php b/lib/private/Log/ErrorHandler.php
index 7561486a4a9..d37af8212a0 100644
--- a/lib/private/Log/ErrorHandler.php
+++ b/lib/private/Log/ErrorHandler.php
@@ -4,6 +4,7 @@
*
* @author Bart Visscher <bartv@thisnet.nl>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
@@ -44,15 +45,15 @@ class ErrorHandler {
$handler = new ErrorHandler();
if ($debug) {
- set_error_handler(array($handler, 'onAll'), E_ALL);
+ set_error_handler([$handler, 'onAll'], E_ALL);
if (\OC::$CLI) {
- set_exception_handler(array('OC_Template', 'printExceptionErrorPage'));
+ set_exception_handler(['OC_Template', 'printExceptionErrorPage']);
}
} else {
- set_error_handler(array($handler, 'onError'));
+ set_error_handler([$handler, 'onError']);
}
- register_shutdown_function(array($handler, 'onShutdown'));
- set_exception_handler(array($handler, 'onException'));
+ register_shutdown_function([$handler, 'onShutdown']);
+ set_exception_handler([$handler, 'onException']);
}
public static function setLogger(ILogger $logger) {
@@ -62,10 +63,10 @@ class ErrorHandler {
//Fatal errors handler
public static function onShutdown() {
$error = error_get_last();
- if($error && self::$logger) {
+ if ($error && self::$logger) {
//ob_end_clean();
$msg = $error['message'] . ' at ' . $error['file'] . '#' . $error['line'];
- self::$logger->critical(self::removePassword($msg), array('app' => 'PHP'));
+ self::$logger->critical(self::removePassword($msg), ['app' => 'PHP']);
}
}
@@ -87,15 +88,12 @@ class ErrorHandler {
return;
}
$msg = $message . ' at ' . $file . '#' . $line;
- self::$logger->error(self::removePassword($msg), array('app' => 'PHP'));
-
+ self::$logger->error(self::removePassword($msg), ['app' => 'PHP']);
}
//Recoverable handler which catch all errors, warnings and notices
public static function onAll($number, $message, $file, $line) {
$msg = $message . ' at ' . $file . '#' . $line;
- self::$logger->debug(self::removePassword($msg), array('app' => 'PHP'));
-
+ self::$logger->debug(self::removePassword($msg), ['app' => 'PHP']);
}
-
}
diff --git a/lib/private/Log/ExceptionSerializer.php b/lib/private/Log/ExceptionSerializer.php
index 4ec35b95673..a13c97aa0c5 100644
--- a/lib/private/Log/ExceptionSerializer.php
+++ b/lib/private/Log/ExceptionSerializer.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -32,7 +33,7 @@ use OC\HintException;
use OC\Setup;
class ExceptionSerializer {
- const methodsWithSensitiveParameters = [
+ public const methodsWithSensitiveParameters = [
// Session/User
'completeLogin',
'login',
@@ -86,7 +87,7 @@ class ExceptionSerializer {
'update',
];
- const methodsWithSensitiveParametersByClass = [
+ public const methodsWithSensitiveParametersByClass = [
SetupController::class => [
'run',
'display',
@@ -132,7 +133,7 @@ class ExceptionSerializer {
foreach ($args as &$arg) {
if (in_array($arg, $values, true)) {
$arg = '*** sensitive parameter replaced ***';
- } else if (is_array($arg)) {
+ } elseif (is_array($arg)) {
$arg = $this->removeValuesFromArgs($arg, $values);
}
}
@@ -154,7 +155,7 @@ class ExceptionSerializer {
$data = get_object_vars($arg);
$data['__class__'] = get_class($arg);
return array_map([$this, 'encodeArg'], $data);
- } else if (is_array($arg)) {
+ } elseif (is_array($arg)) {
return array_map([$this, 'encodeArg'], $arg);
} else {
return $arg;
diff --git a/lib/private/Log/File.php b/lib/private/Log/File.php
index eb7eedac83e..6be200f6d3e 100644
--- a/lib/private/Log/File.php
+++ b/lib/private/Log/File.php
@@ -4,6 +4,7 @@
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author duritong <peter.meier+github@immerda.ch>
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Joas Schilling <coding@schilljs.com>
@@ -34,6 +35,7 @@
*/
namespace OC\Log;
+
use OC\SystemConfig;
use OCP\ILogger;
use OCP\Log\IFileBased;
@@ -57,7 +59,7 @@ class File extends LogDetails implements IWriter, IFileBased {
parent::__construct($config);
$this->logFile = $path;
if (!file_exists($this->logFile)) {
- if(
+ if (
(
!is_writable(dirname($this->logFile))
|| !touch($this->logFile)
@@ -106,7 +108,7 @@ class File extends LogDetails implements IWriter, IFileBased {
*/
public function getEntries(int $limit=50, int $offset=0):array {
$minLevel = $this->config->getValue("loglevel", ILogger::WARN);
- $entries = array();
+ $entries = [];
$handle = @fopen($this->logFile, 'rb');
if ($handle) {
fseek($handle, 0, SEEK_END);
diff --git a/lib/private/Log/LogDetails.php b/lib/private/Log/LogDetails.php
index b1dc6e4311b..1175b475302 100644
--- a/lib/private/Log/LogDetails.php
+++ b/lib/private/Log/LogDetails.php
@@ -2,6 +2,8 @@
/**
* @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>
*
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
@@ -57,7 +59,7 @@ abstract class LogDetails {
$time = $time->format($format);
$url = ($request->getRequestUri() !== '') ? $request->getRequestUri() : '--';
$method = is_string($request->getMethod()) ? $request->getMethod() : '--';
- if($this->config->getValue('installed', false)) {
+ if ($this->config->getValue('installed', false)) {
$user = \OC_User::getUser() ? \OC_User::getUser() : '--';
} else {
$user = '--';
@@ -81,7 +83,7 @@ abstract class LogDetails {
'version'
);
- if(is_array($message) && !array_key_exists('Exception', $message)) {
+ if (is_array($message) && !array_key_exists('Exception', $message)) {
// Exception messages should stay as they are,
// anything else modern is split to 'message' (string) and
// data (array) fields
@@ -98,10 +100,10 @@ abstract class LogDetails {
// PHP's json_encode only accept proper UTF-8 strings, loop over all
// elements to ensure that they are properly UTF-8 compliant or convert
// them manually.
- foreach($entry as $key => $value) {
- if(is_string($value)) {
+ foreach ($entry as $key => $value) {
+ if (is_string($value)) {
$testEncode = json_encode($value, JSON_UNESCAPED_SLASHES);
- if($testEncode === false) {
+ if ($testEncode === false) {
$entry[$key] = utf8_encode($value);
}
}
diff --git a/lib/private/Log/LogFactory.php b/lib/private/Log/LogFactory.php
index 901ff382d8b..7064fe324e6 100644
--- a/lib/private/Log/LogFactory.php
+++ b/lib/private/Log/LogFactory.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2018 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Johannes Ernst <jernst@indiecomputing.com>
*
* @license GNU AGPL version 3 or any later version
@@ -71,7 +72,7 @@ class LogFactory implements ILogFactory {
protected function buildLogFile(string $logFile = ''):File {
$defaultLogFile = $this->systemConfig->getValue('datadirectory', \OC::$SERVERROOT.'/data').'/nextcloud.log';
- if($logFile === '') {
+ if ($logFile === '') {
$logFile = $this->systemConfig->getValue('logfile', $defaultLogFile);
}
$fallback = $defaultLogFile !== $logFile ? $defaultLogFile : '';
diff --git a/lib/private/Log/PsrLoggerAdapter.php b/lib/private/Log/PsrLoggerAdapter.php
new file mode 100644
index 00000000000..531f8d8105b
--- /dev/null
+++ b/lib/private/Log/PsrLoggerAdapter.php
@@ -0,0 +1,166 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @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\Log;
+
+use OCP\ILogger;
+use Psr\Log\InvalidArgumentException;
+use Psr\Log\LoggerInterface;
+
+final class PsrLoggerAdapter implements LoggerInterface {
+
+ /** @var ILogger */
+ private $logger;
+
+ public function __construct(ILogger $logger) {
+ $this->logger = $logger;
+ }
+
+ /**
+ * System is unusable.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function emergency($message, array $context = []): void {
+ $this->logger->emergency($message, $context);
+ }
+
+ /**
+ * Action must be taken immediately.
+ *
+ * Example: Entire website down, database unavailable, etc. This should
+ * trigger the SMS alerts and wake you up.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function alert($message, array $context = []) {
+ $this->logger->alert($message, $context);
+ }
+
+ /**
+ * Critical conditions.
+ *
+ * Example: Application component unavailable, unexpected exception.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function critical($message, array $context = []) {
+ $this->logger->critical($message, $context);
+ }
+
+ /**
+ * Runtime errors that do not require immediate action but should typically
+ * be logged and monitored.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function error($message, array $context = []) {
+ $this->logger->error($message, $context);
+ }
+
+ /**
+ * Exceptional occurrences that are not errors.
+ *
+ * Example: Use of deprecated APIs, poor use of an API, undesirable things
+ * that are not necessarily wrong.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function warning($message, array $context = []) {
+ $this->logger->warning($message, $context);
+ }
+
+ /**
+ * Normal but significant events.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function notice($message, array $context = []) {
+ $this->logger->notice($message, $context);
+ }
+
+ /**
+ * Interesting events.
+ *
+ * Example: User logs in, SQL logs.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function info($message, array $context = []) {
+ $this->logger->info($message, $context);
+ }
+
+ /**
+ * Detailed debug information.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function debug($message, array $context = []) {
+ $this->logger->debug($message, $context);
+ }
+
+ /**
+ * Logs with an arbitrary level.
+ *
+ * @param mixed $level
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ *
+ * @throws InvalidArgumentException
+ */
+ public function log($level, $message, array $context = []) {
+ if (!is_int($level) || $level < ILogger::DEBUG || $level > ILogger::FATAL) {
+ throw new InvalidArgumentException('Nextcloud allows only integer log levels');
+ }
+ $this->logger->log($level, $message, $context);
+ }
+}
diff --git a/lib/private/Log/Rotate.php b/lib/private/Log/Rotate.php
index c7103b46075..76d026bc854 100644
--- a/lib/private/Log/Rotate.php
+++ b/lib/private/Log/Rotate.php
@@ -4,6 +4,7 @@
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
*
@@ -24,6 +25,7 @@
*/
namespace OC\Log;
+
use OCP\Log\RotationTrait;
/**
@@ -40,7 +42,7 @@ class Rotate extends \OC\BackgroundJob\Job {
$this->filePath = $systemConfig->getValue('logfile', $systemConfig->getValue('datadirectory', \OC::$SERVERROOT . '/data') . '/nextcloud.log');
$this->maxSize = \OC::$server->getConfig()->getSystemValue('log_rotate_size', 100 * 1024 * 1024);
- if($this->shouldRotateBySize()) {
+ if ($this->shouldRotateBySize()) {
$rotatedFile = $this->rotate();
$msg = 'Log file "'.$this->filePath.'" was over '.$this->maxSize.' bytes, moved to "'.$rotatedFile.'"';
\OC::$server->getLogger()->warning($msg, ['app' => Rotate::class]);
diff --git a/lib/private/Log/Systemdlog.php b/lib/private/Log/Systemdlog.php
index 5dc6ab875b8..979befbdae1 100644
--- a/lib/private/Log/Systemdlog.php
+++ b/lib/private/Log/Systemdlog.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2018, Johannes Ernst
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Johannes Ernst <jernst@indiecomputing.com>
* @author Julius Härtl <jus@bitgrid.net>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -27,7 +28,6 @@ namespace OC\Log;
use OC\HintException;
use OC\SystemConfig;
-use OCP\IConfig;
use OCP\ILogger;
use OCP\Log\IWriter;
@@ -59,11 +59,10 @@ class Systemdlog extends LogDetails implements IWriter {
public function __construct(SystemConfig $config) {
parent::__construct($config);
- if(!function_exists('sd_journal_send')) {
+ if (!function_exists('sd_journal_send')) {
throw new HintException(
'PHP extension php-systemd is not available.',
'Please install and enable PHP extension systemd if you wish to log to the Systemd journal.');
-
}
$this->syslogId = $config->getValue('syslog_tag', 'Nextcloud');
}
diff --git a/lib/private/Mail/Attachment.php b/lib/private/Mail/Attachment.php
index 3f80b065d5a..1f88c875565 100644
--- a/lib/private/Mail/Attachment.php
+++ b/lib/private/Mail/Attachment.php
@@ -80,5 +80,4 @@ class Attachment implements IAttachment {
public function getSwiftAttachment(): \Swift_Mime_Attachment {
return $this->swiftAttachment;
}
-
}
diff --git a/lib/private/Mail/EMailTemplate.php b/lib/private/Mail/EMailTemplate.php
index c3da61c707b..e91c1208cc6 100644
--- a/lib/private/Mail/EMailTemplate.php
+++ b/lib/private/Mail/EMailTemplate.php
@@ -8,8 +8,10 @@ declare(strict_types=1);
*
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author brad2014 <brad2014@users.noreply.github.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Julius Härtl <jus@bitgrid.net>
+ * @author Liam JACK <liamjack@users.noreply.github.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -35,8 +37,8 @@ declare(strict_types=1);
namespace OC\Mail;
use OCP\Defaults;
-use OCP\IL10N;
use OCP\IURLGenerator;
+use OCP\L10N\IFactory;
use OCP\Mail\IEMailTemplate;
/**
@@ -52,8 +54,8 @@ class EMailTemplate implements IEMailTemplate {
protected $themingDefaults;
/** @var IURLGenerator */
protected $urlGenerator;
- /** @var IL10N */
- protected $l10n;
+ /** @var IFactory */
+ protected $l10nFactory;
/** @var string */
protected $emailId;
/** @var array */
@@ -76,19 +78,19 @@ class EMailTemplate implements IEMailTemplate {
protected $head = <<<EOF
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" style="-webkit-font-smoothing:antialiased;background:#f3f3f3!important">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" style="-webkit-font-smoothing:antialiased;background:#fff!important">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width">
<title></title>
- <style type="text/css">@media only screen{html{min-height:100%;background:#F5F5F5}}@media only screen and (max-width:610px){table.body img{width:auto;height:auto}table.body center{min-width:0!important}table.body .container{width:95%!important}table.body .columns{height:auto!important;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:30px!important;padding-right:30px!important}th.small-12{display:inline-block!important;width:100%!important}table.menu{width:100%!important}table.menu td,table.menu th{width:auto!important;display:inline-block!important}table.menu.vertical td,table.menu.vertical th{display:block!important}table.menu[align=center]{width:auto!important}}</style>
+ <style type="text/css">@media only screen{html{min-height:100%;background:#fff}}@media only screen and (max-width:610px){table.body img{width:auto;height:auto}table.body center{min-width:0!important}table.body .container{width:95%!important}table.body .columns{height:auto!important;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:30px!important;padding-right:30px!important}th.small-12{display:inline-block!important;width:100%!important}table.menu{width:100%!important}table.menu td,table.menu th{width:auto!important;display:inline-block!important}table.menu.vertical td,table.menu.vertical th{display:block!important}table.menu[align=center]{width:auto!important}}</style>
</head>
-<body style="-moz-box-sizing:border-box;-ms-text-size-adjust:100%;-webkit-box-sizing:border-box;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;Margin:0;background:#f3f3f3!important;box-sizing:border-box;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;min-width:100%;padding:0;text-align:left;width:100%!important">
+<body style="-moz-box-sizing:border-box;-ms-text-size-adjust:100%;-webkit-box-sizing:border-box;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;margin:0;background:#fff!important;box-sizing:border-box;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;min-width:100%;padding:0;text-align:left;width:100%!important">
<span class="preheader" style="color:#F5F5F5;display:none!important;font-size:1px;line-height:1px;max-height:0;max-width:0;mso-hide:all!important;opacity:0;overflow:hidden;visibility:hidden">
</span>
- <table class="body" style="-webkit-font-smoothing:antialiased;Margin:0;background:#f3f3f3!important;border-collapse:collapse;border-spacing:0;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;height:100%;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;width:100%">
+ <table class="body" style="-webkit-font-smoothing:antialiased;margin:0;background:#fff;border-collapse:collapse;border-spacing:0;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;width:100%">
<tr style="padding:0;text-align:left;vertical-align:top">
- <td class="center" align="center" valign="top" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <td class="center" align="center" valign="top" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
<center data-parsed="" style="min-width:580px;width:100%">
EOF;
@@ -101,20 +103,21 @@ EOF;
<div style="display:none;white-space:nowrap;font:15px courier;line-height:0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div>
</body>
</html>
+
EOF;
protected $header = <<<EOF
-<table align="center" class="wrapper header float-center" style="Margin:0 auto;background:#8a8a8a;background-color:%s;border-collapse:collapse;border-spacing:0;float:none;margin:0 auto;padding:0;text-align:center;vertical-align:top;width:100%%">
+<table align="center" class="wrapper header float-center" style="Margin:0 auto;background:#fff;border-collapse:collapse;border-spacing:0;float:none;margin:0 auto;padding:0;text-align:center;vertical-align:top;width:100%%">
<tr style="padding:0;text-align:left;vertical-align:top">
- <td class="wrapper-inner" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:20px;text-align:left;vertical-align:top;word-wrap:break-word">
- <table align="center" class="container" style="Margin:0 auto;background:0 0;border-collapse:collapse;border-spacing:0;margin:0 auto;padding:0;text-align:inherit;vertical-align:top;width:580px">
+ <td class="wrapper-inner" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:20px;text-align:left;vertical-align:top;word-wrap:break-word">
+ <table align="center" class="container" style="Margin:0 auto;background:0 0;border-collapse:collapse;border-spacing:0;margin:0 auto;padding:0;text-align:inherit;vertical-align:top;width:150px">
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
- <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
<table class="row collapse" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;position:relative;text-align:left;vertical-align:top;width:100%%">
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
- <center data-parsed="" style="min-width:580px;width:100%%">
+ <center data-parsed="" style="background-color:%s;min-width:150px;padding:50px 0;border-radius:200px">
<img class="logo float-center" src="%s" alt="%s" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;outline:0;text-align:center;text-decoration:none" height="50">
</center>
</tr>
@@ -130,7 +133,7 @@ EOF;
<table class="spacer float-center" style="Margin:0 auto;border-collapse:collapse;border-spacing:0;float:none;margin:0 auto;padding:0;text-align:center;vertical-align:top;width:100%%">
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
- <td height="80px" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:80px;font-weight:400;hyphens:auto;line-height:80px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">&#xA0;</td>
+ <td height="40px" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-size:80px;font-weight:400;hyphens:auto;line-height:80px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">&#xA0;</td>
</tr>
</tbody>
</table>
@@ -140,8 +143,8 @@ EOF;
<table align="center" class="container main-heading float-center" style="Margin:0 auto;background:0 0!important;border-collapse:collapse;border-spacing:0;float:none;margin:0 auto;padding:0;text-align:center;vertical-align:top;width:580px">
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
- <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
- <h1 class="text-center" style="Margin:0;Margin-bottom:10px;color:inherit;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:24px;font-weight:400;line-height:1.3;margin:0;margin-bottom:10px;padding:0;text-align:center;word-wrap:normal">%s</h1>
+ <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <h1 class="text-center" style="Margin:0;Margin-bottom:10px;color:inherit;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:24px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:center;word-wrap:normal">%s</h1>
</td>
</tr>
</tbody>
@@ -149,7 +152,7 @@ EOF;
<table class="spacer float-center" style="Margin:0 auto;border-collapse:collapse;border-spacing:0;float:none;margin:0 auto;padding:0;text-align:center;vertical-align:top;width:100%%">
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
- <td height="40px" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:40px;font-weight:400;hyphens:auto;line-height:40px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">&#xA0;</td>
+ <td height="36px" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-size:40px;font-weight:400;hyphens:auto;line-height:36px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">&#xA0;</td>
</tr>
</tbody>
</table>
@@ -158,31 +161,24 @@ EOF;
protected $bodyBegin = <<<EOF
<table align="center" class="wrapper content float-center" style="Margin:0 auto;border-collapse:collapse;border-spacing:0;float:none;margin:0 auto;padding:0;text-align:center;vertical-align:top;width:100%">
<tr style="padding:0;text-align:left;vertical-align:top">
- <td class="wrapper-inner" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
- <table align="center" class="container has-shadow" style="Margin:0 auto;background:#fefefe;border-collapse:collapse;border-spacing:0;box-shadow:0 1px 2px 0 rgba(0,0,0,.2),0 1px 3px 0 rgba(0,0,0,.1);margin:0 auto;padding:0;text-align:inherit;vertical-align:top;width:580px">
+ <td class="wrapper-inner" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <table align="center" class="container" style="Margin:0 auto;background:#fff;border-collapse:collapse;border-spacing:0;margin:0 auto;padding:0;text-align:inherit;vertical-align:top;width:580px">
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
- <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
- <table class="spacer" style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
- <tbody>
- <tr style="padding:0;text-align:left;vertical-align:top">
- <td height="60px" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:60px;font-weight:400;hyphens:auto;line-height:60px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">&#xA0;</td>
- </tr>
- </tbody>
- </table>
+ <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
EOF;
protected $bodyText = <<<EOF
<table class="row description" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;position:relative;text-align:left;vertical-align:top;width:100%%">
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
- <th class="small-12 large-12 columns first last" style="Margin:0 auto;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0 auto;padding:0;padding-bottom:30px;padding-left:30px;padding-right:30px;text-align:left;width:550px">
+ <th class="small-12 large-12 columns first last" style="Margin:0 auto;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0 auto;padding:0;padding-bottom:30px;padding-left:30px;padding-right:30px;text-align:left;width:550px">
<table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%%">
<tr style="padding:0;text-align:left;vertical-align:top">
- <th style="Margin:0;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:left">
- <p class="text-left" style="Margin:0;Margin-bottom:10px;color:#777;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;margin-bottom:10px;padding:0;text-align:left">%s</p>
+ <th style="Margin:0;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:left">
+ <p style="Margin:0;Margin-bottom:10px;color:#777;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;margin-bottom:10px;padding:0;text-align:center">%s</p>
</th>
- <th class="expander" style="Margin:0;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0!important;text-align:left;visibility:hidden;width:0"></th>
+ <th class="expander" style="Margin:0;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0!important;text-align:left;visibility:hidden;width:0"></th>
</tr>
</table>
</th>
@@ -191,24 +187,24 @@ EOF;
</table>
EOF;
- // note: listBegin (like bodyBegin) is not processed through sprintf, so "%" is not escaped as "%%". (bug #12151)
+ // note: listBegin (like bodyBegin) is not processed through sprintf, so "%" is not escaped as "%%". (bug #12151)
protected $listBegin = <<<EOF
<table class="row description" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;position:relative;text-align:left;vertical-align:top;width:100%">
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
- <th class="small-12 large-12 columns first last" style="Margin:0 auto;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0 auto;padding:0;padding-bottom:30px;padding-left:30px;padding-right:30px;text-align:left;width:550px">
+ <th class="small-12 large-12 columns first last" style="Margin:0 auto;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0 auto;padding:0;padding-bottom:30px;padding-left:30px;padding-right:30px;text-align:left;width:550px">
<table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
EOF;
protected $listItem = <<<EOF
<tr style="padding:0;text-align:left;vertical-align:top">
- <td style="Margin:0;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:left;width:15px;">
- <p class="text-left" style="Margin:0;Margin-bottom:10px;color:#777;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;margin-bottom:10px;padding:0;padding-left:10px;text-align:left">%s</p>
+ <td style="Margin:0;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:left;width:15px;">
+ <p class="text-left" style="Margin:0;Margin-bottom:10px;color:#777;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;margin-bottom:10px;padding:0;padding-left:10px;text-align:left">%s</p>
</td>
- <td style="Margin:0;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:left">
- <p class="text-left" style="Margin:0;Margin-bottom:10px;color:#555;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;margin-bottom:10px;padding:0;padding-left:10px;text-align:left">%s</p>
+ <td style="Margin:0;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:left">
+ <p class="text-left" style="Margin:0;Margin-bottom:10px;color:#555;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;margin-bottom:10px;padding:0;padding-left:10px;text-align:left">%s</p>
</td>
- <td class="expander" style="Margin:0;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0!important;text-align:left;visibility:hidden;width:0"></td>
+ <td class="expander" style="Margin:0;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0!important;text-align:left;visibility:hidden;width:0"></td>
</tr>
EOF;
@@ -224,25 +220,25 @@ EOF;
<table class="spacer" style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%%">
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
- <td height="50px" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:50px;font-weight:400;hyphens:auto;line-height:50px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">&#xA0;</td>
+ <td height="50px" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:50px;font-weight:400;hyphens:auto;line-height:50px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">&#xA0;</td>
</tr>
</tbody>
</table>
<table align="center" class="row btn-group" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;position:relative;text-align:left;vertical-align:top;width:100%%">
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
- <th class="small-12 large-12 columns first last" style="Margin:0 auto;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0 auto;padding:0;padding-bottom:30px;padding-left:30px;padding-right:30px;text-align:left;width:550px">
+ <th class="small-12 large-12 columns first last" style="Margin:0 auto;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0 auto;padding:0;padding-bottom:30px;padding-left:30px;padding-right:30px;text-align:left;width:550px">
<table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%%">
<tr style="padding:0;text-align:left;vertical-align:top">
- <th style="Margin:0;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:left">
+ <th style="Margin:0;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:left">
<center data-parsed="" style="min-width:490px;width:100%%">
- <table class="button btn default primary float-center" style="Margin:0 0 30px 0;border-collapse:collapse;border-spacing:0;display:inline-block;float:none;margin:0 0 30px 0;margin-right:15px;max-height:40px;max-width:200px;padding:0;text-align:center;vertical-align:top;width:auto;background:%1\$s;background-color:%1\$s;color:#fefefe;">
+ <table class="button btn default primary float-center" style="Margin:0 0 30px 0;border-collapse:collapse;border-spacing:0;display:inline-block;float:none;margin:0 0 30px 0;margin-right:15px;max-height:60px;max-width:200px;padding:0;text-align:center;vertical-align:top;width:auto;background:%1\$s;background-color:%1\$s;color:#fefefe;">
<tr style="padding:0;text-align:left;vertical-align:top">
- <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
<table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%%">
<tr style="padding:0;text-align:left;vertical-align:top">
- <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border:0 solid %2\$s;border-collapse:collapse!important;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
- <a href="%3\$s" style="Margin:0;border:0 solid %4\$s;border-radius:2px;color:%5\$s;display:inline-block;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:regular;line-height:1.3;margin:0;padding:10px 25px 10px 25px;text-align:left;outline:1px solid %6\$s;text-decoration:none">%7\$s</a>
+ <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border:0 solid %2\$s;border-collapse:collapse!important;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <a href="%3\$s" style="Margin:0;border:0 solid %4\$s;border-radius:2px;color:%5\$s;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:regular;line-height:1.3;margin:0;padding:10px 25px 10px 25px;text-align:left;outline:1px solid %6\$s;text-decoration:none">%7\$s</a>
</td>
</tr>
</table>
@@ -251,11 +247,11 @@ EOF;
</table>
<table class="button btn default secondary float-center" style="Margin:0 0 30px 0;border-collapse:collapse;border-spacing:0;display:inline-block;float:none;margin:0 0 30px 0;max-height:40px;max-width:200px;padding:0;text-align:center;vertical-align:top;width:auto">
<tr style="padding:0;text-align:left;vertical-align:top">
- <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
<table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%%">
<tr style="padding:0;text-align:left;vertical-align:top">
- <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;background:#777;border:0 solid #777;border-collapse:collapse!important;color:#fefefe;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
- <a href="%8\$s" style="Margin:0;background-color:#fff;border:0 solid #777;border-radius:2px;color:#6C6C6C!important;display:inline-block;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:regular;line-height:1.3;margin:0;outline:1px solid #CBCBCB;padding:10px 25px 10px 25px;text-align:left;text-decoration:none">%9\$s</a>
+ <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;background:#777;border:0 solid #777;border-collapse:collapse!important;color:#fefefe;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <a href="%8\$s" style="Margin:0;background-color:#fff;border:0 solid #777;border-radius:2px;color:#6C6C6C!important;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:regular;line-height:1.3;margin:0;outline:1px solid #CBCBCB;padding:10px 25px 10px 25px;text-align:left;text-decoration:none">%9\$s</a>
</td>
</tr>
</table>
@@ -264,7 +260,7 @@ EOF;
</table>
</center>
</th>
- <th class="expander" style="Margin:0;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0!important;text-align:left;visibility:hidden;width:0"></th>
+ <th class="expander" style="Margin:0;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0!important;text-align:left;visibility:hidden;width:0"></th>
</tr>
</table>
</th>
@@ -277,25 +273,25 @@ EOF;
<table class="spacer" style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%%">
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
- <td height="50px" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:50px;font-weight:400;hyphens:auto;line-height:50px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">&#xA0;</td>
+ <td height="50px" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:50px;font-weight:400;hyphens:auto;line-height:50px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">&#xA0;</td>
</tr>
</tbody>
</table>
<table align="center" class="row btn-group" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;position:relative;text-align:left;vertical-align:top;width:100%%">
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
- <th class="small-12 large-12 columns first last" style="Margin:0 auto;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0 auto;padding:0;padding-bottom:30px;padding-left:30px;padding-right:30px;text-align:left;width:550px">
+ <th class="small-12 large-12 columns first last" style="Margin:0 auto;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0 auto;padding:0;padding-bottom:30px;padding-left:30px;padding-right:30px;text-align:left;width:550px">
<table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%%">
<tr style="padding:0;text-align:left;vertical-align:top">
- <th style="Margin:0;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:left">
+ <th style="Margin:0;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:left">
<center data-parsed="" style="min-width:490px;width:100%%">
- <table class="button btn default primary float-center" style="Margin:0;border-collapse:collapse;border-spacing:0;display:inline-block;float:none;margin:0;max-height:40px;padding:0;text-align:center;vertical-align:top;width:auto;background:%1\$s;color:#fefefe;background-color:%1\$s;">
+ <table class="button btn default primary float-center" style="Margin:0;border-collapse:collapse;border-spacing:0;display:inline-block;float:none;margin:0;max-height:60px;padding:0;text-align:center;vertical-align:top;width:auto;background:%1\$s;color:#fefefe;background-color:%1\$s;">
<tr style="padding:0;text-align:left;vertical-align:top">
- <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
<table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%%">
<tr style="padding:0;text-align:left;vertical-align:top">
- <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border:0 solid %2\$;border-collapse:collapse!important;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
- <a href="%3\$s" style="Margin:0;border:0 solid %4\$s;border-radius:2px;color:%5\$s;display:inline-block;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:regular;line-height:1.3;margin:0;padding:10px 25px 10px 25px;text-align:left;outline:1px solid %5\$s;text-decoration:none">%7\$s</a>
+ <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border:0 solid %2\$;border-collapse:collapse!important;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <a href="%3\$s" style="Margin:0;border:0 solid %4\$s;border-radius:2px;color:%5\$s;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:regular;line-height:1.3;margin:0;padding:10px 25px 10px 25px;text-align:left;outline:1px solid %5\$s;text-decoration:none">%7\$s</a>
</td>
</tr>
</table>
@@ -304,7 +300,7 @@ EOF;
</table>
</center>
</th>
- <th class="expander" style="Margin:0;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0!important;text-align:left;visibility:hidden;width:0"></th>
+ <th class="expander" style="Margin:0;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0!important;text-align:left;visibility:hidden;width:0"></th>
</tr>
</table>
</th>
@@ -328,43 +324,36 @@ EOF;
<table class="spacer float-center" style="Margin:0 auto;border-collapse:collapse;border-spacing:0;float:none;margin:0 auto;padding:0;text-align:center;vertical-align:top;width:100%%">
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
- <td height="60px" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:60px;font-weight:400;hyphens:auto;line-height:60px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">&#xA0;</td>
+ <td height="60px" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:60px;font-weight:400;hyphens:auto;line-height:60px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">&#xA0;</td>
</tr>
</tbody>
</table>
<table align="center" class="wrapper footer float-center" style="Margin:0 auto;border-collapse:collapse;border-spacing:0;float:none;margin:0 auto;padding:0;text-align:center;vertical-align:top;width:100%%">
<tr style="padding:0;text-align:left;vertical-align:top">
- <td class="wrapper-inner" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <td class="wrapper-inner" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
<center data-parsed="" style="min-width:580px;width:100%%">
<table class="spacer float-center" style="Margin:0 auto;border-collapse:collapse;border-spacing:0;float:none;margin:0 auto;padding:0;text-align:center;vertical-align:top;width:100%%">
<tbody>
<tr style="padding:0;text-align:left;vertical-align:top">
- <td height="15px" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:15px;font-weight:400;hyphens:auto;line-height:15px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">&#xA0;</td>
+ <td height="15px" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:15px;font-weight:400;hyphens:auto;line-height:15px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">&#xA0;</td>
</tr>
</tbody>
</table>
- <p class="text-center float-center" align="center" style="Margin:0;Margin-bottom:10px;color:#C8C8C8;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:12px;font-weight:400;line-height:16px;margin:0;margin-bottom:10px;padding:0;text-align:center">%s</p>
+ <p class="text-center float-center" align="center" style="Margin:0;Margin-bottom:10px;color:#C8C8C8;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:12px;font-weight:400;line-height:16px;margin:0;margin-bottom:10px;padding:0;text-align:center">%s</p>
</center>
</td>
</tr>
</table>
EOF;
- /**
- * @param Defaults $themingDefaults
- * @param IURLGenerator $urlGenerator
- * @param IL10N $l10n
- * @param string $emailId
- * @param array $data
- */
public function __construct(Defaults $themingDefaults,
IURLGenerator $urlGenerator,
- IL10N $l10n,
+ IFactory $l10nFactory,
$emailId,
array $data) {
$this->themingDefaults = $themingDefaults;
$this->urlGenerator = $urlGenerator;
- $this->l10n = $l10n;
+ $this->l10nFactory = $l10nFactory;
$this->htmlBody .= $this->head;
$this->emailId = $emailId;
$this->data = $data;
@@ -550,7 +539,6 @@ EOF;
$this->htmlBody .= vsprintf($this->buttonGroup, [$color, $color, $urlLeft, $color, $textColor, $textColor, $textLeft, $urlRight, $textRight]);
$this->plainBody .= $plainTextLeft . ': ' . $urlLeft . PHP_EOL;
$this->plainBody .= $plainTextRight . ': ' . $urlRight . PHP_EOL . PHP_EOL;
-
}
/**
@@ -585,7 +573,6 @@ EOF;
}
$this->plainBody .= $url . PHP_EOL;
-
}
/**
@@ -607,9 +594,10 @@ EOF;
*
* @param string $text If the text is empty the default "Name - Slogan<br>This is an automatically sent email" will be used
*/
- public function addFooter(string $text = '') {
- if($text === '') {
- $text = $this->themingDefaults->getName() . ' - ' . $this->themingDefaults->getSlogan() . '<br>' . $this->l10n->t('This is an automatically sent email, please do not reply.');
+ public function addFooter(string $text = '', ?string $lang = null) {
+ if ($text === '') {
+ $l10n = $this->l10nFactory->get('lib', $lang);
+ $text = $this->themingDefaults->getName() . ' - ' . $this->themingDefaults->getSlogan($lang) . '<br>' . $l10n->t('This is an automatically sent email, please do not reply.');
}
if ($this->footerAdded) {
diff --git a/lib/private/Mail/Mailer.php b/lib/private/Mail/Mailer.php
index df5f2687daa..fc8de9ccd0b 100644
--- a/lib/private/Mail/Mailer.php
+++ b/lib/private/Mail/Mailer.php
@@ -5,13 +5,17 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Arne Hamann <kontakt+github@arne.email>
* @author Branko Kokanovic <branko@kokanovic.org>
* @author Carsten Wiedmann <carsten_sttgt@gmx.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jared Boone <jared.boone@gmail.com>
* @author Joas Schilling <coding@schilljs.com>
+ * @author Julius Härtl <jus@bitgrid.net>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
+ * @author Tekhnee <info@tekhnee.org>
*
* @license AGPL-3.0
*
@@ -34,14 +38,17 @@ namespace OC\Mail;
use Egulias\EmailValidator\EmailValidator;
use Egulias\EmailValidator\Validation\RFCValidation;
use OCP\Defaults;
+use OCP\EventDispatcher\IEventDispatcher;
use OCP\IConfig;
use OCP\IL10N;
use OCP\ILogger;
use OCP\IURLGenerator;
+use OCP\L10N\IFactory;
use OCP\Mail\IAttachment;
use OCP\Mail\IEMailTemplate;
use OCP\Mail\IMailer;
use OCP\Mail\IMessage;
+use OCP\Mail\Events\BeforeMessageSent;
/**
* Class Mailer provides some basic functions to create a mail message that can be used in combination with
@@ -74,6 +81,10 @@ class Mailer implements IMailer {
private $urlGenerator;
/** @var IL10N */
private $l10n;
+ /** @var IEventDispatcher */
+ private $dispatcher;
+ /** @var IFactory */
+ private $l10nFactory;
/**
* @param IConfig $config
@@ -81,17 +92,22 @@ class Mailer implements IMailer {
* @param Defaults $defaults
* @param IURLGenerator $urlGenerator
* @param IL10N $l10n
+ * @param IEventDispatcher $dispatcher
*/
public function __construct(IConfig $config,
ILogger $logger,
Defaults $defaults,
IURLGenerator $urlGenerator,
- IL10N $l10n) {
+ IL10N $l10n,
+ IEventDispatcher $dispatcher,
+ IFactory $l10nFactory) {
$this->config = $config;
$this->logger = $logger;
$this->defaults = $defaults;
$this->urlGenerator = $urlGenerator;
$this->l10n = $l10n;
+ $this->dispatcher = $dispatcher;
+ $this->l10nFactory = $l10nFactory;
}
/**
@@ -140,7 +156,7 @@ class Mailer implements IMailer {
return new $class(
$this->defaults,
$this->urlGenerator,
- $this->l10n,
+ $this->l10nFactory,
$emailId,
$data
);
@@ -149,7 +165,7 @@ class Mailer implements IMailer {
return new EMailTemplate(
$this->defaults,
$this->urlGenerator,
- $this->l10n,
+ $this->l10nFactory,
$emailId,
$data
);
@@ -177,17 +193,20 @@ class Mailer implements IMailer {
$mailer = $this->getInstance();
// Enable logger if debug mode is enabled
- if($debugMode) {
+ if ($debugMode) {
$mailLogger = new \Swift_Plugins_Loggers_ArrayLogger();
$mailer->registerPlugin(new \Swift_Plugins_LoggerPlugin($mailLogger));
}
+
+ $this->dispatcher->dispatchTyped(new BeforeMessageSent($message));
+
$mailer->send($message->getSwiftMessage(), $failedRecipients);
// Debugging logging
$logMessage = sprintf('Sent mail to "%s" with subject "%s"', print_r($message->getTo(), true), $message->getSubject());
$this->logger->debug($logMessage, ['app' => 'core']);
- if($debugMode && isset($mailLogger)) {
+ if ($debugMode && isset($mailLogger)) {
$this->logger->debug($mailLogger->dump(), ['app' => 'core']);
}
diff --git a/lib/private/Mail/Message.php b/lib/private/Mail/Message.php
index 4ea9da532b6..bd7c01bd358 100644
--- a/lib/private/Mail/Message.php
+++ b/lib/private/Mail/Message.php
@@ -5,6 +5,8 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Arne Hamann <kontakt+github@arne.email>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jared Boone <jared.boone@gmail.com>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
@@ -76,8 +78,8 @@ class Message implements IMessage {
$convertedAddresses = [];
- foreach($addresses as $email => $readableName) {
- if(!is_numeric($email)) {
+ foreach ($addresses as $email => $readableName) {
+ if (!is_numeric($email)) {
list($name, $domain) = explode('@', $email, 2);
$domain = idn_to_ascii($domain, 0, INTL_IDNA_VARIANT_UTS46);
$convertedAddresses[$name.'@'.$domain] = $readableName;
@@ -112,7 +114,7 @@ class Message implements IMessage {
* @return array
*/
public function getFrom(): array {
- return $this->swiftMessage->getFrom();
+ return $this->swiftMessage->getFrom() ?? [];
}
/**
@@ -156,7 +158,7 @@ class Message implements IMessage {
* @return array
*/
public function getTo(): array {
- return $this->swiftMessage->getTo();
+ return $this->swiftMessage->getTo() ?? [];
}
/**
@@ -178,7 +180,7 @@ class Message implements IMessage {
* @return array
*/
public function getCc(): array {
- return $this->swiftMessage->getCc();
+ return $this->swiftMessage->getCc() ?? [];
}
/**
@@ -200,7 +202,7 @@ class Message implements IMessage {
* @return array
*/
public function getBcc(): array {
- return $this->swiftMessage->getBcc();
+ return $this->swiftMessage->getBcc() ?? [];
}
/**
@@ -258,6 +260,14 @@ class Message implements IMessage {
/**
* Get's the underlying SwiftMessage
+ * @param Swift_Message $swiftMessage
+ */
+ public function setSwiftMessage(Swift_Message $swiftMessage): void {
+ $this->swiftMessage = $swiftMessage;
+ }
+
+ /**
+ * Get's the underlying SwiftMessage
* @return Swift_Message
*/
public function getSwiftMessage(): Swift_Message {
diff --git a/lib/private/Memcache/APCu.php b/lib/private/Memcache/APCu.php
index e1aec896db2..87d72ec1968 100644
--- a/lib/private/Memcache/APCu.php
+++ b/lib/private/Memcache/APCu.php
@@ -4,6 +4,7 @@
*
* @author Andreas Fischer <bantu@owncloud.com>
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Clark Tomlinson <fallen013@gmail.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -59,7 +60,7 @@ class APCu extends Cache implements IMemcache {
public function clear($prefix = '') {
$ns = $this->getPrefix() . $prefix;
$ns = preg_quote($ns, '/');
- if(class_exists('\APCIterator')) {
+ if (class_exists('\APCIterator')) {
$iter = new \APCIterator('user', '/^' . $ns . '/', APC_ITER_KEY);
} else {
$iter = new \APCUIterator('/^' . $ns . '/', APC_ITER_KEY);
@@ -150,7 +151,7 @@ class APCu extends Cache implements IMemcache {
/**
* @return bool
*/
- static public function isAvailable() {
+ public static function isAvailable() {
if (!extension_loaded('apcu')) {
return false;
} elseif (!\OC::$server->getIniWrapper()->getBool('apc.enabled')) {
diff --git a/lib/private/Memcache/ArrayCache.php b/lib/private/Memcache/ArrayCache.php
index bf1304063a4..8c91d9fcbbb 100644
--- a/lib/private/Memcache/ArrayCache.php
+++ b/lib/private/Memcache/ArrayCache.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -28,7 +29,7 @@ use OCP\IMemcache;
class ArrayCache extends Cache implements IMemcache {
/** @var array Array with the cached data */
- protected $cachedData = array();
+ protected $cachedData = [];
use CADTrait;
@@ -153,7 +154,7 @@ class ArrayCache extends Cache implements IMemcache {
/**
* {@inheritDoc}
*/
- static public function isAvailable() {
+ public static function isAvailable() {
return true;
}
}
diff --git a/lib/private/Memcache/Factory.php b/lib/private/Memcache/Factory.php
index 675c1088dee..030769b5557 100644
--- a/lib/private/Memcache/Factory.php
+++ b/lib/private/Memcache/Factory.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Markus Goetz <markus@woboq.com>
@@ -36,7 +37,7 @@ use OCP\ILogger;
use OCP\IMemcache;
class Factory implements ICacheFactory {
- const NULL_CACHE = NullCache::class;
+ public const NULL_CACHE = NullCache::class;
/**
* @var string $globalPrefix
@@ -71,8 +72,7 @@ class Factory implements ICacheFactory {
* @param string|null $lockingCacheClass
*/
public function __construct(string $globalPrefix, ILogger $logger,
- $localCacheClass = null, $distributedCacheClass = null, $lockingCacheClass = null)
- {
+ $localCacheClass = null, $distributedCacheClass = null, $lockingCacheClass = null) {
$this->logger = $logger;
$this->globalPrefix = $globalPrefix;
diff --git a/lib/private/Memcache/Memcached.php b/lib/private/Memcache/Memcached.php
index 700ed05380e..eff76a41c45 100644
--- a/lib/private/Memcache/Memcached.php
+++ b/lib/private/Memcache/Memcached.php
@@ -4,6 +4,7 @@
*
* @author Andreas Fischer <bantu@owncloud.com>
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -140,7 +141,7 @@ class Memcached extends Cache implements IMemcache {
self::$cache->flush();
return true;
}
- $keys = array();
+ $keys = [];
$prefixLength = strlen($prefix);
foreach ($allKeys as $key) {
if (substr($key, 0, $prefixLength) === $prefix) {
@@ -209,7 +210,7 @@ class Memcached extends Cache implements IMemcache {
return $result;
}
- static public function isAvailable() {
+ public static function isAvailable() {
return extension_loaded('memcached');
}
diff --git a/lib/private/Memcache/NullCache.php b/lib/private/Memcache/NullCache.php
index 371c9381f56..bdb6406b24c 100644
--- a/lib/private/Memcache/NullCache.php
+++ b/lib/private/Memcache/NullCache.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Robin McCorkell <robin@mccorkell.me.uk>
@@ -67,7 +68,7 @@ class NullCache extends Cache implements \OCP\IMemcache {
return true;
}
- static public function isAvailable() {
+ public static function isAvailable() {
return true;
}
}
diff --git a/lib/private/Memcache/Redis.php b/lib/private/Memcache/Redis.php
index 7023c6b7871..dfbdd029565 100644
--- a/lib/private/Memcache/Redis.php
+++ b/lib/private/Memcache/Redis.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -174,7 +175,7 @@ class Redis extends Cache implements IMemcacheTTL {
self::$cache->expire($this->getNameSpace() . $key, $ttl);
}
- static public function isAvailable() {
+ public static function isAvailable() {
return \OC::$server->getGetRedisFactory()->isAvailable();
}
}
diff --git a/lib/private/MemoryInfo.php b/lib/private/MemoryInfo.php
index 26f0d6a2869..f227d38df9f 100644
--- a/lib/private/MemoryInfo.php
+++ b/lib/private/MemoryInfo.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2018, Michael Weimann (<mail@michael-weimann.eu>)
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Michael Weimann <mail@michael-weimann.eu>
*
* @license GNU AGPL version 3 or any later version
@@ -30,8 +31,7 @@ namespace OC;
* Helper class that covers memory info.
*/
class MemoryInfo {
-
- const RECOMMENDED_MEMORY_LIMIT = 512 * 1024 * 1024;
+ public const RECOMMENDED_MEMORY_LIMIT = 512 * 1024 * 1024;
/**
* Tests if the memory limit is greater or equal the recommended value.
@@ -52,7 +52,7 @@ class MemoryInfo {
$iniValue = trim(ini_get('memory_limit'));
if ($iniValue === '-1') {
return -1;
- } else if (is_numeric($iniValue) === true) {
+ } elseif (is_numeric($iniValue) === true) {
return (int)$iniValue;
} else {
return $this->memoryLimitToBytes($iniValue);
@@ -70,11 +70,13 @@ class MemoryInfo {
$memoryLimit = (int)substr($memoryLimit, 0, -1);
// intended fall trough
- switch($last) {
+ switch ($last) {
case 'g':
$memoryLimit *= 1024;
+ // no break
case 'm':
$memoryLimit *= 1024;
+ // no break
case 'k':
$memoryLimit *= 1024;
}
diff --git a/lib/private/Migration/ConsoleOutput.php b/lib/private/Migration/ConsoleOutput.php
index 2efe898a01e..2ad42843dba 100644
--- a/lib/private/Migration/ConsoleOutput.php
+++ b/lib/private/Migration/ConsoleOutput.php
@@ -22,7 +22,6 @@
namespace OC\Migration;
-
use OCP\Migration\IOutput;
use Symfony\Component\Console\Helper\ProgressBar;
use Symfony\Component\Console\Output\OutputInterface;
diff --git a/lib/private/Migration/SimpleOutput.php b/lib/private/Migration/SimpleOutput.php
index 7f44db9e30a..11f2ed2837c 100644
--- a/lib/private/Migration/SimpleOutput.php
+++ b/lib/private/Migration/SimpleOutput.php
@@ -22,7 +22,6 @@
namespace OC\Migration;
-
use OCP\ILogger;
use OCP\Migration\IOutput;
diff --git a/lib/private/NaturalSort.php b/lib/private/NaturalSort.php
index 3cc82222353..31829a84e6a 100644
--- a/lib/private/NaturalSort.php
+++ b/lib/private/NaturalSort.php
@@ -4,6 +4,7 @@
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author AW-UC <git@a-wesemann.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin McCorkell <robin@mccorkell.me.uk>
@@ -32,7 +33,7 @@ use OCP\ILogger;
class NaturalSort {
private static $instance;
private $collator;
- private $cache = array();
+ private $cache = [];
/**
* Instantiate a new \OC\NaturalSort instance.
@@ -58,7 +59,7 @@ class NaturalSort {
if (isset($this->cache[$t])) {
return $this->cache[$t];
}
- $tz = array();
+ $tz = [];
$x = 0;
$y = -1;
$n = null;
@@ -90,8 +91,7 @@ class NaturalSort {
// German umlauts, so using en_US instead
if (class_exists('Collator')) {
$this->collator = new \Collator('en_US');
- }
- else {
+ } else {
$this->collator = new \OC\NaturalSort_DefaultCollator();
}
}
diff --git a/lib/private/NavigationManager.php b/lib/private/NavigationManager.php
index 47d20073455..b40f403c056 100644
--- a/lib/private/NavigationManager.php
+++ b/lib/private/NavigationManager.php
@@ -4,6 +4,7 @@
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Kesselberg <mail@danielkesselberg.de>
* @author Joas Schilling <coding@schilljs.com>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
@@ -92,13 +93,13 @@ class NavigationManager implements INavigationManager {
}
$entry['active'] = false;
- if(!isset($entry['icon'])) {
+ if (!isset($entry['icon'])) {
$entry['icon'] = '';
}
- if(!isset($entry['classes'])) {
+ if (!isset($entry['classes'])) {
$entry['classes'] = '';
}
- if(!isset($entry['type'])) {
+ if (!isset($entry['type'])) {
$entry['type'] = 'link';
}
$this->entries[$entry['id']] = $entry;
@@ -115,11 +116,11 @@ class NavigationManager implements INavigationManager {
foreach ($this->closureEntries as $c) {
$this->add($c());
}
- $this->closureEntries = array();
+ $this->closureEntries = [];
$result = $this->entries;
if ($type !== 'all') {
- $result = array_filter($this->entries, function($entry) use ($type) {
+ $result = array_filter($this->entries, function ($entry) use ($type) {
return $entry['type'] === $type;
});
}
@@ -134,10 +135,10 @@ class NavigationManager implements INavigationManager {
* @return array
*/
private function proceedNavigation(array $list): array {
- uasort($list, function($a, $b) {
+ uasort($list, function ($a, $b) {
if (isset($a['order']) && isset($b['order'])) {
return ($a['order'] < $b['order']) ? -1 : 1;
- } else if (isset($a['order']) || isset($b['order'])) {
+ } elseif (isset($a['order']) || isset($b['order'])) {
return isset($a['order']) ? -1 : 1;
} else {
return ($a['name'] < $b['name']) ? -1 : 1;
@@ -230,7 +231,7 @@ class NavigationManager implements INavigationManager {
]);
$logoutUrl = \OC_User::getLogoutUrl($this->urlGenerator);
- if($logoutUrl !== '') {
+ if ($logoutUrl !== '') {
// Logout
$this->add([
'type' => 'settings',
diff --git a/lib/private/Notification/Action.php b/lib/private/Notification/Action.php
index 93029bcd7ac..a04f622c3cb 100644
--- a/lib/private/Notification/Action.php
+++ b/lib/private/Notification/Action.php
@@ -25,7 +25,6 @@ declare(strict_types=1);
namespace OC\Notification;
-
use OCP\Notification\IAction;
class Action implements IAction {
diff --git a/lib/private/Notification/Manager.php b/lib/private/Notification/Manager.php
index b8b549663b1..3a19b0f49e6 100644
--- a/lib/private/Notification/Manager.php
+++ b/lib/private/Notification/Manager.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
namespace OC\Notification;
-
use OCP\AppFramework\QueryException;
use OCP\ILogger;
use OCP\Notification\AlreadyProcessedException;
diff --git a/lib/private/Notification/Notification.php b/lib/private/Notification/Notification.php
index 3e3a15a4f8a..8ac4e19b7d1 100644
--- a/lib/private/Notification/Notification.php
+++ b/lib/private/Notification/Notification.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
namespace OC\Notification;
-
use OCP\Notification\IAction;
use OCP\Notification\INotification;
use OCP\RichObjectStrings\InvalidObjectExeption;
diff --git a/lib/private/OCS/DiscoveryService.php b/lib/private/OCS/DiscoveryService.php
index caad064a48b..1c69d1ecc9a 100644
--- a/lib/private/OCS/DiscoveryService.php
+++ b/lib/private/OCS/DiscoveryService.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright Copyright (c) 2017 Bjoern Schiessle <bjoern@schiessle.org>
*
* @author Bjoern Schiessle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -85,7 +86,7 @@ class DiscoveryService implements IDiscoveryService {
'timeout' => 10,
'connect_timeout' => 10,
]);
- if($response->getStatusCode() === Http::STATUS_OK) {
+ if ($response->getStatusCode() === Http::STATUS_OK) {
$decodedServices = json_decode($response->getBody(), true);
if (\is_array($decodedServices)) {
$discoveredServices = $this->getEndpoints($decodedServices, $service);
@@ -108,12 +109,11 @@ class DiscoveryService implements IDiscoveryService {
* @return array
*/
protected function getEndpoints(array $decodedServices, string $service): array {
-
$discoveredServices = [];
- if(isset($decodedServices['services'][$service]['endpoints'])) {
+ if (isset($decodedServices['services'][$service]['endpoints'])) {
foreach ($decodedServices['services'][$service]['endpoints'] as $endpoint => $url) {
- if($this->isSafeUrl($url)) {
+ if ($this->isSafeUrl($url)) {
$discoveredServices[$endpoint] = $url;
}
}
@@ -132,5 +132,4 @@ class DiscoveryService implements IDiscoveryService {
protected function isSafeUrl(string $url): bool {
return (bool)preg_match('/^[\/\.\-A-Za-z0-9]+$/', $url);
}
-
}
diff --git a/lib/private/OCS/Exception.php b/lib/private/OCS/Exception.php
index 704b9160f32..63a7bdb54ea 100644
--- a/lib/private/OCS/Exception.php
+++ b/lib/private/OCS/Exception.php
@@ -36,5 +36,4 @@ class Exception extends \Exception {
public function getResult() {
return $this->result;
}
-
}
diff --git a/lib/private/OCS/Provider.php b/lib/private/OCS/Provider.php
index f4322d23028..68100c64819 100644
--- a/lib/private/OCS/Provider.php
+++ b/lib/private/OCS/Provider.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bjoern Schiessle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
*
@@ -55,7 +56,7 @@ class Provider extends \OCP\AppFramework\Controller {
],
];
- if($this->appManager->isEnabledForUser('files_sharing')) {
+ if ($this->appManager->isEnabledForUser('files_sharing')) {
$services['SHARING'] = [
'version' => 1,
'endpoints' => [
@@ -88,7 +89,7 @@ class Provider extends \OCP\AppFramework\Controller {
}
}
- if($this->appManager->isEnabledForUser('activity')) {
+ if ($this->appManager->isEnabledForUser('activity')) {
$services['ACTIVITY'] = [
'version' => 1,
'endpoints' => [
@@ -97,7 +98,7 @@ class Provider extends \OCP\AppFramework\Controller {
];
}
- if($this->appManager->isEnabledForUser('provisioning_api')) {
+ if ($this->appManager->isEnabledForUser('provisioning_api')) {
$services['PROVISIONING'] = [
'version' => 1,
'endpoints' => [
diff --git a/lib/private/OCS/Result.php b/lib/private/OCS/Result.php
index 0be12f3a234..0199783b47d 100644
--- a/lib/private/OCS/Result.php
+++ b/lib/private/OCS/Result.php
@@ -5,6 +5,7 @@
* @author Bart Visscher <bartv@thisnet.nl>
* @author Björn Schießle <bjoern@schiessle.org>
* @author Christopher Schäpers <kondou@ts.unde.re>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin McCorkell <robin@mccorkell.me.uk>
@@ -59,9 +60,9 @@ class Result {
*/
public function __construct($data = null, $code = 100, $message = null, $headers = []) {
if ($data === null) {
- $this->data = array();
+ $this->data = [];
} elseif (!is_array($data)) {
- $this->data = array($this->data);
+ $this->data = [$this->data];
} else {
$this->data = $data;
}
@@ -99,18 +100,17 @@ class Result {
* @return array
*/
public function getMeta() {
- $meta = array();
+ $meta = [];
$meta['status'] = $this->succeeded() ? 'ok' : 'failure';
$meta['statuscode'] = $this->statusCode;
$meta['message'] = $this->message;
- if(isset($this->items)) {
+ if (isset($this->items)) {
$meta['totalitems'] = $this->items;
}
- if(isset($this->perPage)) {
+ if (isset($this->perPage)) {
$meta['itemsperpage'] = $this->perPage;
}
return $meta;
-
}
/**
@@ -140,7 +140,7 @@ class Result {
// to be able to reliably check for security
// headers
- if(is_null($value)) {
+ if (is_null($value)) {
unset($this->headers[$name]);
} else {
$this->headers[$name] = $value;
@@ -156,5 +156,4 @@ class Result {
public function getHeaders() {
return $this->headers;
}
-
}
diff --git a/lib/private/Preview/BackgroundCleanupJob.php b/lib/private/Preview/BackgroundCleanupJob.php
index 15bb6bd7188..e0546c4a11c 100644
--- a/lib/private/Preview/BackgroundCleanupJob.php
+++ b/lib/private/Preview/BackgroundCleanupJob.php
@@ -27,8 +27,9 @@ declare(strict_types=1);
namespace OC\Preview;
use OC\BackgroundJob\TimedJob;
-use OC\Files\AppData\Factory;
+use OC\Preview\Storage\Root;
use OCP\DB\QueryBuilder\IQueryBuilder;
+use OCP\Files\IMimeTypeLoader;
use OCP\Files\NotFoundException;
use OCP\Files\NotPermittedException;
use OCP\IDBConnection;
@@ -38,28 +39,47 @@ class BackgroundCleanupJob extends TimedJob {
/** @var IDBConnection */
private $connection;
- /** @var Factory */
- private $appDataFactory;
+ /** @var Root */
+ private $previewFolder;
/** @var bool */
private $isCLI;
+ /** @var IMimeTypeLoader */
+ private $mimeTypeLoader;
+
public function __construct(IDBConnection $connection,
- Factory $appDataFactory,
+ Root $previewFolder,
+ IMimeTypeLoader $mimeTypeLoader,
bool $isCLI) {
// Run at most once an hour
$this->setInterval(3600);
$this->connection = $connection;
- $this->appDataFactory = $appDataFactory;
+ $this->previewFolder = $previewFolder;
$this->isCLI = $isCLI;
+ $this->mimeTypeLoader = $mimeTypeLoader;
}
public function run($argument) {
- $previews = $this->appDataFactory->get('preview');
+ foreach ($this->getDeletedFiles() as $fileId) {
+ try {
+ $preview = $this->previewFolder->getFolder((string)$fileId);
+ $preview->delete();
+ } catch (NotFoundException $e) {
+ // continue
+ } catch (NotPermittedException $e) {
+ // continue
+ }
+ }
+ }
- $previewFodlerId = $previews->getId();
+ private function getDeletedFiles(): \Iterator {
+ yield from $this->getOldPreviewLocations();
+ yield from $this->getNewPreviewLocations();
+ }
+ private function getOldPreviewLocations(): \Iterator {
$qb = $this->connection->getQueryBuilder();
$qb->select('a.name')
->from('filecache', 'a')
@@ -69,7 +89,9 @@ class BackgroundCleanupJob extends TimedJob {
->where(
$qb->expr()->isNull('b.fileid')
)->andWhere(
- $qb->expr()->eq('a.parent', $qb->createNamedParameter($previewFodlerId))
+ $qb->expr()->eq('a.parent', $qb->createNamedParameter($this->previewFolder->getId()))
+ )->andWhere(
+ $qb->expr()->like('a.name', $qb->createNamedParameter('__%'))
);
if (!$this->isCLI) {
@@ -79,14 +101,54 @@ class BackgroundCleanupJob extends TimedJob {
$cursor = $qb->execute();
while ($row = $cursor->fetch()) {
- try {
- $preview = $previews->getFolder($row['name']);
- $preview->delete();
- } catch (NotFoundException $e) {
- // continue
- } catch (NotPermittedException $e) {
- // continue
- }
+ yield $row['name'];
+ }
+
+ $cursor->closeCursor();
+ }
+
+ private function getNewPreviewLocations(): \Iterator {
+ $qb = $this->connection->getQueryBuilder();
+ $qb->select('path', 'mimetype')
+ ->from('filecache')
+ ->where($qb->expr()->eq('fileid', $qb->createNamedParameter($this->previewFolder->getId())));
+ $cursor = $qb->execute();
+ $data = $cursor->fetch();
+ $cursor->closeCursor();
+
+ if ($data === null) {
+ return [];
+ }
+
+ /*
+ * This lovely like is the result of the way the new previews are stored
+ * We take the md5 of the name (fileid) and split the first 7 chars. That way
+ * there are not a gazillion files in the root of the preview appdata.
+ */
+ $like = $this->connection->escapeLikeParameter($data['path']) . '/_/_/_/_/_/_/_/%';
+
+ $qb = $this->connection->getQueryBuilder();
+ $qb->select('a.name')
+ ->from('filecache', 'a')
+ ->leftJoin('a', 'filecache', 'b', $qb->expr()->eq(
+ $qb->expr()->castColumn('a.name', IQueryBuilder::PARAM_INT), 'b.fileid'
+ ))
+ ->where(
+ $qb->expr()->andX(
+ $qb->expr()->isNull('b.fileid'),
+ $qb->expr()->like('a.path', $qb->createNamedParameter($like)),
+ $qb->expr()->eq('a.mimetype', $qb->createNamedParameter($this->mimeTypeLoader->getId('httpd/unix-directory')))
+ )
+ );
+
+ if (!$this->isCLI) {
+ $qb->setMaxResults(10);
+ }
+
+ $cursor = $qb->execute();
+
+ while ($row = $cursor->fetch()) {
+ yield $row['name'];
}
$cursor->closeCursor();
diff --git a/lib/private/Preview/Bitmap.php b/lib/private/Preview/Bitmap.php
index fccb176c737..7322e07ab34 100644
--- a/lib/private/Preview/Bitmap.php
+++ b/lib/private/Preview/Bitmap.php
@@ -43,7 +43,6 @@ abstract class Bitmap extends ProviderV2 {
* {@inheritDoc}
*/
public function getThumbnail(File $file, int $maxX, int $maxY): ?IImage {
-
$tmpPath = $this->getLocalFile($file);
// Creates \Imagick object from bitmap or vector file
@@ -117,5 +116,4 @@ abstract class Bitmap extends ProviderV2 {
return $bp;
}
-
}
diff --git a/lib/private/Preview/Bundled.php b/lib/private/Preview/Bundled.php
new file mode 100644
index 00000000000..f3441b5211c
--- /dev/null
+++ b/lib/private/Preview/Bundled.php
@@ -0,0 +1,54 @@
+<?php
+/**
+ * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>
+ *
+ * @author Julius Härtl <jus@bitgrid.net>
+ *
+ * @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\Preview;
+
+use OC\Archive\ZIP;
+use OCP\Files\File;
+use OCP\IImage;
+
+/**
+ * Extracts a preview from files that embed them in an ZIP archive
+ */
+abstract class Bundled extends ProviderV2 {
+ protected function extractThumbnail(File $file, $path): ?IImage {
+ $sourceTmp = \OC::$server->getTempManager()->getTemporaryFile();
+ $targetTmp = \OC::$server->getTempManager()->getTemporaryFile();
+
+ try {
+ $content = $file->fopen('r');
+ file_put_contents($sourceTmp, $content);
+
+ $zip = new ZIP($sourceTmp);
+ $zip->extractFile($path, $targetTmp);
+
+ $image = new \OC_Image();
+ $image->loadFromFile($targetTmp);
+ $image->fixOrientation();
+
+ return $image;
+ } catch (\Exception $e) {
+ return null;
+ }
+ }
+}
diff --git a/lib/private/Preview/Generator.php b/lib/private/Preview/Generator.php
index dcd4ccd130c..f7aed987d89 100644
--- a/lib/private/Preview/Generator.php
+++ b/lib/private/Preview/Generator.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, Roeland Jago Douma <roeland@famdouma.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -26,7 +27,6 @@
namespace OC\Preview;
-use OC\Preview\GeneratorHelper;
use OCP\Files\File;
use OCP\Files\IAppData;
use OCP\Files\NotFoundException;
@@ -36,7 +36,6 @@ use OCP\Files\SimpleFS\ISimpleFolder;
use OCP\IConfig;
use OCP\IImage;
use OCP\IPreview;
-use OCP\Preview\IProvider;
use OCP\Preview\IProviderV2;
use OCP\Preview\IVersionedPreviewFile;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
@@ -93,22 +92,37 @@ class Generator {
* @throws \InvalidArgumentException if the preview would be invalid (in case the original image is invalid)
*/
public function getPreview(File $file, $width = -1, $height = -1, $crop = false, $mode = IPreview::MODE_FILL, $mimeType = null) {
+ $specification = [
+ 'width' => $width,
+ 'height' => $height,
+ 'crop' => $crop,
+ 'mode' => $mode,
+ ];
+ $this->eventDispatcher->dispatch(
+ IPreview::EVENT,
+ new GenericEvent($file, $specification)
+ );
+
+ // since we only ask for one preview, and the generate method return the last one it created, it returns the one we want
+ return $this->generatePreviews($file, [$specification], $mimeType);
+ }
+
+ /**
+ * Generates previews of a file
+ *
+ * @param File $file
+ * @param array $specifications
+ * @param string $mimeType
+ * @return ISimpleFile the last preview that was generated
+ * @throws NotFoundException
+ * @throws \InvalidArgumentException if the preview would be invalid (in case the original image is invalid)
+ */
+ public function generatePreviews(File $file, array $specifications, $mimeType = null) {
//Make sure that we can read the file
if (!$file->isReadable()) {
throw new NotFoundException('Cannot read file');
}
-
- $this->eventDispatcher->dispatch(
- IPreview::EVENT,
- new GenericEvent($file, [
- 'width' => $width,
- 'height' => $height,
- 'crop' => $crop,
- 'mode' => $mode
- ])
- );
-
if ($mimeType === null) {
$mimeType = $file->getMimeType();
}
@@ -125,41 +139,57 @@ class Generator {
// Get the max preview and infer the max preview sizes from that
$maxPreview = $this->getMaxPreview($previewFolder, $file, $mimeType, $previewVersion);
+ $maxPreviewImage = null; // only load the image when we need it
if ($maxPreview->getSize() === 0) {
$maxPreview->delete();
throw new NotFoundException('Max preview size 0, invalid!');
}
- list($maxWidth, $maxHeight) = $this->getPreviewSize($maxPreview, $previewVersion);
+ [$maxWidth, $maxHeight] = $this->getPreviewSize($maxPreview, $previewVersion);
- // If both width and heigth are -1 we just want the max preview
- if ($width === -1 && $height === -1) {
- $width = $maxWidth;
- $height = $maxHeight;
- }
+ $preview = null;
- // Calculate the preview size
- list($width, $height) = $this->calculateSize($width, $height, $crop, $mode, $maxWidth, $maxHeight);
+ foreach ($specifications as $specification) {
+ $width = $specification['width'] ?? -1;
+ $height = $specification['height'] ?? -1;
+ $crop = $specification['crop'] ?? false;
+ $mode = $specification['mode'] ?? IPreview::MODE_FILL;
- // No need to generate a preview that is just the max preview
- if ($width === $maxWidth && $height === $maxHeight) {
- return $maxPreview;
- }
+ // If both width and heigth are -1 we just want the max preview
+ if ($width === -1 && $height === -1) {
+ $width = $maxWidth;
+ $height = $maxHeight;
+ }
- // Try to get a cached preview. Else generate (and store) one
- try {
+ // Calculate the preview size
+ [$width, $height] = $this->calculateSize($width, $height, $crop, $mode, $maxWidth, $maxHeight);
+
+ // No need to generate a preview that is just the max preview
+ if ($width === $maxWidth && $height === $maxHeight) {
+ // ensure correct return value if this was the last one
+ $preview = $maxPreview;
+ continue;
+ }
+
+ // Try to get a cached preview. Else generate (and store) one
try {
- $preview = $this->getCachedPreview($previewFolder, $width, $height, $crop, $maxPreview->getMimeType(), $previewVersion);
- } catch (NotFoundException $e) {
- $preview = $this->generatePreview($previewFolder, $maxPreview, $width, $height, $crop, $maxWidth, $maxHeight, $previewVersion);
+ try {
+ $preview = $this->getCachedPreview($previewFolder, $width, $height, $crop, $maxPreview->getMimeType(), $previewVersion);
+ } catch (NotFoundException $e) {
+ if ($maxPreviewImage === null) {
+ $maxPreviewImage = $this->helper->getImage($maxPreview);
+ }
+
+ $preview = $this->generatePreview($previewFolder, $maxPreviewImage, $width, $height, $crop, $maxWidth, $maxHeight, $previewVersion);
+ }
+ } catch (\InvalidArgumentException $e) {
+ throw new NotFoundException("", 0, $e);
}
- } catch (\InvalidArgumentException $e) {
- throw new NotFoundException();
- }
- if ($preview->getSize() === 0) {
- $preview->delete();
- throw new NotFoundException('Cached preview size 0, invalid!');
+ if ($preview->getSize() === 0) {
+ $preview->delete();
+ throw new NotFoundException('Cached preview size 0, invalid!');
+ }
}
return $preview;
@@ -299,7 +329,7 @@ class Generator {
} else {
$width = $height / $ratio;
}
- } else if ($mode === IPreview::MODE_COVER) {
+ } elseif ($mode === IPreview::MODE_COVER) {
if ($ratioH > $ratioW) {
$width = $height / $ratio;
} else {
@@ -332,9 +362,9 @@ class Generator {
}
/*
- * Make sure the requested height and width fall within the max
- * of the preview.
- */
+ * Make sure the requested height and width fall within the max
+ * of the preview.
+ */
if ($height > $maxHeight) {
$ratio = $height / $maxHeight;
$height = $maxHeight;
@@ -362,9 +392,8 @@ class Generator {
* @throws NotFoundException
* @throws \InvalidArgumentException if the preview would be invalid (in case the original image is invalid)
*/
- private function generatePreview(ISimpleFolder $previewFolder, ISimpleFile $maxPreview, $width, $height, $crop, $maxWidth, $maxHeight, $prefix) {
- $preview = $this->helper->getImage($maxPreview);
-
+ private function generatePreview(ISimpleFolder $previewFolder, IImage $maxPreview, $width, $height, $crop, $maxWidth, $maxHeight, $prefix) {
+ $preview = $maxPreview;
if (!$preview->valid()) {
throw new \InvalidArgumentException('Failed to generate preview, failed to load image');
}
@@ -382,13 +411,13 @@ class Generator {
$scaleH = $maxHeight / $widthR;
$scaleW = $width;
}
- $preview->preciseResize((int)round($scaleW), (int)round($scaleH));
+ $preview = $preview->preciseResizeCopy((int)round($scaleW), (int)round($scaleH));
}
$cropX = (int)floor(abs($width - $preview->width()) * 0.5);
$cropY = (int)floor(abs($height - $preview->height()) * 0.5);
- $preview->crop($cropX, $cropY, $width, $height);
+ $preview = $preview->cropCopy($cropX, $cropY, $width, $height);
} else {
- $preview->resize(max($width, $height));
+ $preview = $maxPreview->resizeCopy(max($width, $height));
}
@@ -450,7 +479,7 @@ class Generator {
case 'image/gif':
return 'gif';
default:
- throw new \InvalidArgumentException('Not a valid mimetype');
+ throw new \InvalidArgumentException('Not a valid mimetype: "' . $mimeType . '"');
}
}
}
diff --git a/lib/private/Preview/GeneratorHelper.php b/lib/private/Preview/GeneratorHelper.php
index 470cad2d0a6..843aa0ed420 100644
--- a/lib/private/Preview/GeneratorHelper.php
+++ b/lib/private/Preview/GeneratorHelper.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, Roeland Jago Douma <roeland@famdouma.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -25,7 +26,6 @@
namespace OC\Preview;
-use OC\Files\View;
use OCP\Files\File;
use OCP\Files\IRootFolder;
use OCP\Files\SimpleFS\ISimpleFile;
diff --git a/lib/private/Preview/HEIC.php b/lib/private/Preview/HEIC.php
index 166e1cc3074..c2b9b541ad3 100644
--- a/lib/private/Preview/HEIC.php
+++ b/lib/private/Preview/HEIC.php
@@ -141,5 +141,4 @@ class HEIC extends ProviderV2 {
return $bp;
}
-
}
diff --git a/lib/private/Preview/Image.php b/lib/private/Preview/Image.php
index 3180ee853ec..eea471a2356 100644
--- a/lib/private/Preview/Image.php
+++ b/lib/private/Preview/Image.php
@@ -61,5 +61,4 @@ abstract class Image extends ProviderV2 {
}
return null;
}
-
}
diff --git a/lib/private/Preview/Krita.php b/lib/private/Preview/Krita.php
new file mode 100644
index 00000000000..b14d1a3f17b
--- /dev/null
+++ b/lib/private/Preview/Krita.php
@@ -0,0 +1,52 @@
+<?php
+/**
+ * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>
+ *
+ * @author Julius Härtl <jus@bitgrid.net>
+ *
+ * @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\Preview;
+
+use OCP\Files\File;
+use OCP\IImage;
+
+class Krita extends Bundled {
+ /**
+ * {@inheritDoc}
+ */
+ public function getMimeType(): string {
+ return '/application\/x-krita/';
+ }
+
+
+ /**
+ * @inheritDoc
+ */
+ public function getThumbnail(File $file, int $maxX, int $maxY): ?IImage {
+ $image = $this->extractThumbnail($file, 'mergedimage.png');
+ if ($image->valid()) {
+ return $image;
+ }
+ $image = $this->extractThumbnail($file, 'preview.png');
+ if ($image->valid()) {
+ return $image;
+ }
+ return null;
+ }
+}
diff --git a/lib/private/Preview/MP3.php b/lib/private/Preview/MP3.php
index db06733a892..868078aa012 100644
--- a/lib/private/Preview/MP3.php
+++ b/lib/private/Preview/MP3.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
@@ -51,11 +52,11 @@ class MP3 extends ProviderV2 {
$tags = $getID3->analyze($tmpPath);
$this->cleanTmpFiles();
$picture = isset($tags['id3v2']['APIC'][0]['data']) ? $tags['id3v2']['APIC'][0]['data'] : null;
- if(is_null($picture) && isset($tags['id3v2']['PIC'][0]['data'])) {
+ if (is_null($picture) && isset($tags['id3v2']['PIC'][0]['data'])) {
$picture = $tags['id3v2']['PIC'][0]['data'];
}
- if(!is_null($picture)) {
+ if (!is_null($picture)) {
$image = new \OC_Image();
$image->loadFromData($picture);
diff --git a/lib/private/Preview/MarkDown.php b/lib/private/Preview/MarkDown.php
index 0cf096148e5..91e276eb170 100644
--- a/lib/private/Preview/MarkDown.php
+++ b/lib/private/Preview/MarkDown.php
@@ -31,5 +31,4 @@ class MarkDown extends TXT {
public function getMimeType(): string {
return '/text\/(x-)?markdown/';
}
-
}
diff --git a/lib/private/Preview/Office.php b/lib/private/Preview/Office.php
index bdf8c528135..6719aeace8f 100644
--- a/lib/private/Preview/Office.php
+++ b/lib/private/Preview/Office.php
@@ -86,7 +86,6 @@ abstract class Office extends ProviderV2 {
return $image;
}
return null;
-
}
private function initCmd() {
diff --git a/lib/private/Preview/OpenDocument.php b/lib/private/Preview/OpenDocument.php
index b795441d837..01e191c2789 100644
--- a/lib/private/Preview/OpenDocument.php
+++ b/lib/private/Preview/OpenDocument.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Joas Schilling <coding@schilljs.com>
+ * @author Julius Härtl <jus@bitgrid.net>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -25,11 +26,26 @@
namespace OC\Preview;
//.odt, .ott, .oth, .odm, .odg, .otg, .odp, .otp, .ods, .ots, .odc, .odf, .odb, .odi, .oxt
-class OpenDocument extends Office {
+use OCP\Files\File;
+use OCP\IImage;
+
+class OpenDocument extends Bundled {
/**
* {@inheritDoc}
*/
public function getMimeType(): string {
return '/application\/vnd.oasis.opendocument.*/';
}
+
+
+ /**
+ * @inheritDoc
+ */
+ public function getThumbnail(File $file, int $maxX, int $maxY): ?IImage {
+ $image = $this->extractThumbnail($file, 'Thumbnails/thumbnail.png');
+ if ($image->valid()) {
+ return $image;
+ }
+ return null;
+ }
}
diff --git a/lib/private/Preview/ProviderV1Adapter.php b/lib/private/Preview/ProviderV1Adapter.php
index 645905517cb..f09b0f47583 100644
--- a/lib/private/Preview/ProviderV1Adapter.php
+++ b/lib/private/Preview/ProviderV1Adapter.php
@@ -61,5 +61,4 @@ class ProviderV1Adapter implements IProviderV2 {
return [$view, $path];
}
-
}
diff --git a/lib/private/Preview/Storage/Root.php b/lib/private/Preview/Storage/Root.php
new file mode 100644
index 00000000000..a9a72026a51
--- /dev/null
+++ b/lib/private/Preview/Storage/Root.php
@@ -0,0 +1,72 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2020, 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\Preview\Storage;
+
+use OC\Files\AppData\AppData;
+use OC\SystemConfig;
+use OCP\Files\IRootFolder;
+use OCP\Files\NotFoundException;
+use OCP\Files\SimpleFS\ISimpleFolder;
+
+class Root extends AppData {
+ public function __construct(IRootFolder $rootFolder, SystemConfig $systemConfig) {
+ parent::__construct($rootFolder, $systemConfig, 'preview');
+ }
+
+
+ public function getFolder(string $name): ISimpleFolder {
+ $internalFolder = $this->getInternalFolder($name);
+
+ try {
+ return parent::getFolder($internalFolder);
+ } catch (NotFoundException $e) {
+ /*
+ * The new folder structure is not found.
+ * Lets try the old one
+ */
+ }
+
+ return parent::getFolder($name);
+ }
+
+ public function newFolder(string $name): ISimpleFolder {
+ $internalFolder = $this->getInternalFolder($name);
+ return parent::newFolder($internalFolder);
+ }
+
+ /*
+ * Do not allow directory listing on this special root
+ * since it gets to big and time consuming
+ */
+ public function getDirectoryListing(): array {
+ return [];
+ }
+
+ private function getInternalFolder(string $name): string {
+ return implode('/', str_split(substr(md5($name), 0, 7))) . '/' . $name;
+ }
+}
diff --git a/lib/private/Preview/TXT.php b/lib/private/Preview/TXT.php
index 3090446ac4d..4004b0a0647 100644
--- a/lib/private/Preview/TXT.php
+++ b/lib/private/Preview/TXT.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Jan-Christoph Borchardt <hey@jancborchardt.net>
* @author Joas Schilling <coding@schilljs.com>
@@ -61,7 +62,7 @@ class TXT extends ProviderV2 {
$content = stream_get_contents($content,3000);
//don't create previews of empty text files
- if(trim($content) === '') {
+ if (trim($content) === '') {
return null;
}
@@ -81,7 +82,7 @@ class TXT extends ProviderV2 {
$canUseTTF = function_exists('imagettftext');
- foreach($lines as $index => $line) {
+ foreach ($lines as $index => $line) {
$index = $index + 1;
$x = (int) 1;
@@ -94,7 +95,7 @@ class TXT extends ProviderV2 {
imagestring($image, 1, $x, $y, $line, $textColor);
}
- if(($index * $lineSize) >= $maxY) {
+ if (($index * $lineSize) >= $maxY) {
break;
}
}
diff --git a/lib/private/PreviewManager.php b/lib/private/PreviewManager.php
index 652a442deec..546d495b47d 100644
--- a/lib/private/PreviewManager.php
+++ b/lib/private/PreviewManager.php
@@ -2,8 +2,10 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ * @author Julius Härtl <jus@bitgrid.net>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Olivier Paroz <github@oparoz.com>
* @author Robin Appelman <robin@icewind.nl>
@@ -151,6 +153,22 @@ class PreviewManager implements IPreview {
return !empty($this->providers);
}
+ private function getGenerator(): Generator {
+ if ($this->generator === null) {
+ $this->generator = new Generator(
+ $this->config,
+ $this,
+ $this->appData,
+ new GeneratorHelper(
+ $this->rootFolder,
+ $this->config
+ ),
+ $this->eventDispatcher
+ );
+ }
+ return $this->generator;
+ }
+
/**
* Returns a preview of a file
*
@@ -169,20 +187,22 @@ class PreviewManager implements IPreview {
* @since 11.0.0 - \InvalidArgumentException was added in 12.0.0
*/
public function getPreview(File $file, $width = -1, $height = -1, $crop = false, $mode = IPreview::MODE_FILL, $mimeType = null) {
- if ($this->generator === null) {
- $this->generator = new Generator(
- $this->config,
- $this,
- $this->appData,
- new GeneratorHelper(
- $this->rootFolder,
- $this->config
- ),
- $this->eventDispatcher
- );
- }
+ return $this->getGenerator()->getPreview($file, $width, $height, $crop, $mode, $mimeType);
+ }
- return $this->generator->getPreview($file, $width, $height, $crop, $mode, $mimeType);
+ /**
+ * Generates previews of a file
+ *
+ * @param File $file
+ * @param array $specifications
+ * @param string $mimeType
+ * @return ISimpleFile the last preview that was generated
+ * @throws NotFoundException
+ * @throws \InvalidArgumentException if the preview would be invalid (in case the original image is invalid)
+ * @since 19.0.0
+ */
+ public function generatePreviews(File $file, array $specifications, $mimeType = null) {
+ return $this->getGenerator()->generatePreviews($file, $specifications, $mimeType);
}
/**
@@ -229,7 +249,7 @@ class PreviewManager implements IPreview {
}
$mount = $file->getMountPoint();
- if ($mount and !$mount->getOption('previews', true)){
+ if ($mount and !$mount->getOption('previews', true)) {
return false;
}
@@ -293,13 +313,15 @@ class PreviewManager implements IPreview {
Preview\GIF::class,
Preview\BMP::class,
Preview\HEIC::class,
- Preview\XBitmap::class
+ Preview\XBitmap::class,
+ Preview\Krita::class,
];
$this->defaultProviders = $this->config->getSystemValue('enabledPreviewProviders', array_merge([
Preview\MarkDown::class,
Preview\MP3::class,
Preview\TXT::class,
+ Preview\OpenDocument::class,
], $imageProviders));
if (in_array(Preview\Image::class, $this->defaultProviders)) {
@@ -339,7 +361,9 @@ class PreviewManager implements IPreview {
$this->registerCoreProvider(Preview\GIF::class, '/image\/gif/');
$this->registerCoreProvider(Preview\BMP::class, '/image\/bmp/');
$this->registerCoreProvider(Preview\XBitmap::class, '/image\/x-xbitmap/');
+ $this->registerCoreProvider(Preview\Krita::class, '/application\/x-krita/');
$this->registerCoreProvider(Preview\MP3::class, '/audio\/mpeg/');
+ $this->registerCoreProvider(Preview\OpenDocument::class, '/application\/vnd.oasis.opendocument.*/');
// SVG, Office and Bitmap require imagick
if (extension_loaded('imagick')) {
diff --git a/lib/private/RedisFactory.php b/lib/private/RedisFactory.php
index 3144a006d8b..52e69a18778 100644
--- a/lib/private/RedisFactory.php
+++ b/lib/private/RedisFactory.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Alejandro Varela <epma01@gmail.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -68,7 +69,6 @@ class RedisFactory {
$this->instance->setOption(\RedisCluster::OPT_SLAVE_FAILOVER, $config['failover_mode']);
}
} else {
-
$this->instance = new \Redis();
$config = $this->config->getValue('redis', []);
if (isset($config['host'])) {
@@ -78,7 +78,7 @@ class RedisFactory {
}
if (isset($config['port'])) {
$port = $config['port'];
- } else if ($host[0] !== '/') {
+ } elseif ($host[0] !== '/') {
$port = 6379;
} else {
$port = null;
diff --git a/lib/private/Remote/Api/ApiCollection.php b/lib/private/Remote/Api/ApiCollection.php
index c1f2a732a8e..9ce4c7d0661 100644
--- a/lib/private/Remote/Api/ApiCollection.php
+++ b/lib/private/Remote/Api/ApiCollection.php
@@ -23,7 +23,6 @@
namespace OC\Remote\Api;
-
use OCP\Http\Client\IClientService;
use OCP\Remote\Api\IApiCollection;
use OCP\Remote\ICredentials;
diff --git a/lib/private/Remote/Api/ApiFactory.php b/lib/private/Remote/Api/ApiFactory.php
index 62f20e2787c..81bc41f9269 100644
--- a/lib/private/Remote/Api/ApiFactory.php
+++ b/lib/private/Remote/Api/ApiFactory.php
@@ -23,7 +23,6 @@
namespace OC\Remote\Api;
-
use OCP\Http\Client\IClientService;
use OCP\Remote\Api\IApiFactory;
use OCP\Remote\ICredentials;
diff --git a/lib/private/Remote/Api/NotFoundException.php b/lib/private/Remote/Api/NotFoundException.php
index 429d3e87a10..fadf4a4d324 100644
--- a/lib/private/Remote/Api/NotFoundException.php
+++ b/lib/private/Remote/Api/NotFoundException.php
@@ -23,7 +23,5 @@
namespace OC\Remote\Api;
-
class NotFoundException extends \Exception {
-
}
diff --git a/lib/private/Remote/Api/OCS.php b/lib/private/Remote/Api/OCS.php
index 553ac92df7a..770dce3545f 100644
--- a/lib/private/Remote/Api/OCS.php
+++ b/lib/private/Remote/Api/OCS.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Robin Appelman <robin@icewind.nl>
*
* @license GNU AGPL version 3 or any later version
@@ -23,7 +24,6 @@
namespace OC\Remote\Api;
-
use GuzzleHttp\Exception\ClientException;
use OC\ForbiddenException;
use OC\Remote\User;
@@ -49,7 +49,7 @@ class OCS extends ApiBase implements ICapabilitiesApi, IUserApi {
} catch (ClientException $e) {
if ($e->getResponse()->getStatusCode() === 404) {
throw new NotFoundException();
- } else if ($e->getResponse()->getStatusCode() === 403 || $e->getResponse()->getStatusCode() === 401) {
+ } elseif ($e->getResponse()->getStatusCode() === 403 || $e->getResponse()->getStatusCode() === 401) {
throw new ForbiddenException();
} else {
throw $e;
diff --git a/lib/private/Remote/Credentials.php b/lib/private/Remote/Credentials.php
index 5a4654436b8..09f5e1cda78 100644
--- a/lib/private/Remote/Credentials.php
+++ b/lib/private/Remote/Credentials.php
@@ -23,7 +23,6 @@
namespace OC\Remote;
-
use OCP\Remote\ICredentials;
class Credentials implements ICredentials {
diff --git a/lib/private/Remote/InstanceFactory.php b/lib/private/Remote/InstanceFactory.php
index 9d42353e792..a4445a8306b 100644
--- a/lib/private/Remote/InstanceFactory.php
+++ b/lib/private/Remote/InstanceFactory.php
@@ -23,7 +23,6 @@
namespace OC\Remote;
-
use OCP\Http\Client\IClientService;
use OCP\ICache;
use OCP\Remote\IInstanceFactory;
diff --git a/lib/private/Remote/User.php b/lib/private/Remote/User.php
index ef26171859a..fbf30b384cd 100644
--- a/lib/private/Remote/User.php
+++ b/lib/private/Remote/User.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Robin Appelman <robin@icewind.nl>
*
* @license GNU AGPL version 3 or any later version
@@ -23,11 +24,10 @@
namespace OC\Remote;
-
use OCP\Remote\IUser;
class User implements IUser {
- const EXPECTED_KEYS = [
+ public const EXPECTED_KEYS = [
'id',
'email',
'displayname',
diff --git a/lib/private/Repair.php b/lib/private/Repair.php
index e80d6ec7874..60609de4170 100644
--- a/lib/private/Repair.php
+++ b/lib/private/Repair.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Kesselberg <mail@danielkesselberg.de>
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Joas Schilling <coding@schilljs.com>
@@ -46,8 +47,6 @@ use OC\Repair\NC14\AddPreviewBackgroundCleanupJob;
use OC\Repair\NC16\AddClenupLoginFlowV2BackgroundJob;
use OC\Repair\NC16\CleanupCardDAVPhotoCache;
use OC\Repair\NC16\ClearCollectionsAccessCache;
-use OC\Repair\NC17\SetEnterpriseLogo;
-use OC\Repair\NC17\SwitchUpdateChannel;
use OC\Repair\NC18\ResetGeneratedAvatarFlag;
use OC\Repair\OldGroupMembershipShares;
use OC\Repair\Owncloud\DropAccountTermsTable;
@@ -93,7 +92,7 @@ class Repair implements IOutput {
*/
public function run() {
if (count($this->repairSteps) === 0) {
- $this->emit('\OC\Repair', 'info', array('No repair steps available'));
+ $this->emit('\OC\Repair', 'info', ['No repair steps available']);
return;
}
@@ -156,8 +155,6 @@ class Repair implements IOutput {
new AddClenupLoginFlowV2BackgroundJob(\OC::$server->getJobList()),
new RemoveLinkShares(\OC::$server->getDatabaseConnection(), \OC::$server->getConfig(), \OC::$server->getGroupManager(), \OC::$server->getNotificationManager(), \OC::$server->query(ITimeFactory::class)),
new ClearCollectionsAccessCache(\OC::$server->getConfig(), \OC::$server->query(IManager::class)),
- \OC::$server->query(SwitchUpdateChannel::class),
- \OC::$server->query(SetEnterpriseLogo::class),
\OC::$server->query(ResetGeneratedAvatarFlag::class),
];
}
@@ -207,7 +204,7 @@ class Repair implements IOutput {
public function info($string) {
// for now just emit as we did in the past
- $this->emit('\OC\Repair', 'info', array($string));
+ $this->emit('\OC\Repair', 'info', [$string]);
}
/**
diff --git a/lib/private/Repair/CleanTags.php b/lib/private/Repair/CleanTags.php
index d579068e163..959eb50e5a7 100644
--- a/lib/private/Repair/CleanTags.php
+++ b/lib/private/Repair/CleanTags.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -186,7 +187,7 @@ class CleanTags implements IRepairStep {
);
$result = $qb->execute();
- $orphanItems = array();
+ $orphanItems = [];
while ($row = $result->fetch()) {
$orphanItems[] = (int) $row[$deleteId];
}
diff --git a/lib/private/Repair/ClearGeneratedAvatarCache.php b/lib/private/Repair/ClearGeneratedAvatarCache.php
index 656dbcafaca..44a390d66a1 100644
--- a/lib/private/Repair/ClearGeneratedAvatarCache.php
+++ b/lib/private/Repair/ClearGeneratedAvatarCache.php
@@ -66,7 +66,6 @@ class ClearGeneratedAvatarCache implements IRepairStep {
} catch (\Exception $e) {
$output->warning('Unable to clear the avatar cache');
}
-
}
}
}
diff --git a/lib/private/Repair/Collation.php b/lib/private/Repair/Collation.php
index 891fdd99433..fb0e0192693 100644
--- a/lib/private/Repair/Collation.php
+++ b/lib/private/Repair/Collation.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -126,7 +127,7 @@ class Collation implements IRepairStep {
" WHERE TABLE_SCHEMA = ?" .
" AND (COLLATION_NAME <> '" . $characterSet . "_bin' OR CHARACTER_SET_NAME <> '" . $characterSet . "')" .
" AND TABLE_NAME LIKE '*PREFIX*%'",
- array($dbName)
+ [$dbName]
);
$rows = $statement->fetchAll();
$result = [];
diff --git a/lib/private/Repair/MoveUpdaterStepFile.php b/lib/private/Repair/MoveUpdaterStepFile.php
index 481cff47e15..e912838f50a 100644
--- a/lib/private/Repair/MoveUpdaterStepFile.php
+++ b/lib/private/Repair/MoveUpdaterStepFile.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016 Morris Jobke <hey@morrisjobke.de>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @license GNU AGPL version 3 or any later version
@@ -43,24 +44,23 @@ class MoveUpdaterStepFile implements IRepairStep {
}
public function run(IOutput $output) {
-
$dataDir = $this->config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data');
$instanceId = $this->config->getSystemValue('instanceid', null);
- if(!is_string($instanceId) || empty($instanceId)) {
+ if (!is_string($instanceId) || empty($instanceId)) {
return;
}
$updaterFolderPath = $dataDir . '/updater-' . $instanceId;
$stepFile = $updaterFolderPath . '/.step';
- if(file_exists($stepFile)) {
+ if (file_exists($stepFile)) {
$output->info('.step file exists');
$previousStepFile = $updaterFolderPath . '/.step-previous-update';
// cleanup
- if(file_exists($previousStepFile)) {
- if(\OC_Helper::rmdirr($previousStepFile)) {
+ if (file_exists($previousStepFile)) {
+ if (\OC_Helper::rmdirr($previousStepFile)) {
$output->info('.step-previous-update removed');
} else {
$output->info('.step-previous-update can\'t be removed - abort move of .step file');
@@ -69,7 +69,7 @@ class MoveUpdaterStepFile implements IRepairStep {
}
// move step file
- if(rename($stepFile, $previousStepFile)) {
+ if (rename($stepFile, $previousStepFile)) {
$output->info('.step file moved to .step-previous-update');
} else {
$output->warning('.step file can\'t be moved');
diff --git a/lib/private/Repair/NC13/AddLogRotateJob.php b/lib/private/Repair/NC13/AddLogRotateJob.php
index ceef8d0c7ee..7bd290894a4 100644
--- a/lib/private/Repair/NC13/AddLogRotateJob.php
+++ b/lib/private/Repair/NC13/AddLogRotateJob.php
@@ -44,5 +44,4 @@ class AddLogRotateJob implements IRepairStep {
public function run(IOutput $output) {
$this->jobList->add(Rotate::class);
}
-
}
diff --git a/lib/private/Repair/NC14/AddPreviewBackgroundCleanupJob.php b/lib/private/Repair/NC14/AddPreviewBackgroundCleanupJob.php
index f76e106dfac..f2958de5b96 100644
--- a/lib/private/Repair/NC14/AddPreviewBackgroundCleanupJob.php
+++ b/lib/private/Repair/NC14/AddPreviewBackgroundCleanupJob.php
@@ -47,5 +47,4 @@ class AddPreviewBackgroundCleanupJob implements IRepairStep {
public function run(IOutput $output) {
$this->jobList->add(BackgroundCleanupJob::class);
}
-
}
diff --git a/lib/private/Repair/NC16/AddClenupLoginFlowV2BackgroundJob.php b/lib/private/Repair/NC16/AddClenupLoginFlowV2BackgroundJob.php
index 5b8712fff85..34afd5dea60 100644
--- a/lib/private/Repair/NC16/AddClenupLoginFlowV2BackgroundJob.php
+++ b/lib/private/Repair/NC16/AddClenupLoginFlowV2BackgroundJob.php
@@ -47,5 +47,4 @@ class AddClenupLoginFlowV2BackgroundJob implements IRepairStep {
public function run(IOutput $output) {
$this->jobList->add(CleanupLoginFlowV2::class);
}
-
}
diff --git a/lib/private/Repair/NC17/SetEnterpriseLogo.php b/lib/private/Repair/NC17/SetEnterpriseLogo.php
deleted file mode 100644
index 31e9e0ee9fc..00000000000
--- a/lib/private/Repair/NC17/SetEnterpriseLogo.php
+++ /dev/null
@@ -1,121 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-/**
- * @copyright Copyright (c) 2019, 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 OC\Repair\NC17;
-
-use OC\Files\AppData\Factory;
-use OC\Template\SCSSCacher;
-use OCA\Theming\ThemingDefaults;
-use OCP\Files\IAppData;
-use OCP\Files\NotFoundException;
-use OCP\IConfig;
-use OCP\Migration\IOutput;
-use OCP\Migration\IRepairStep;
-use OCP\Support\Subscription\IRegistry;
-
-/**
- * @deprecated - can be removed in 18
- */
-class SetEnterpriseLogo implements IRepairStep {
-
- /** @var IConfig $config */
- private $config;
-
- /** @var IRegistry $subscriptionRegistry */
- private $subscriptionRegistry;
-
- /** @var IAppData $appData */
- private $appData;
-
- /** @var SCSSCacher $scssCacher */
- private $scssCacher;
-
- /** @var \OC_Defaults|ThemingDefaults */
- private $themingDefaults;
-
- public function getName(): string {
- return 'Sets the enterprise logo';
- }
-
- public function __construct(
- IConfig $config,
- IRegistry $subscriptionRegistry,
- Factory $appDataFactory,
- SCSSCacher $SCSSCacher,
- $ThemingDefaults
- ) {
- $this->config = $config;
- $this->subscriptionRegistry = $subscriptionRegistry;
- $this->appData = $appDataFactory->get('theming');
- $this->scssCacher = $SCSSCacher;
- $this->themingDefaults = $ThemingDefaults;
- }
-
- public function run(IOutput $output): void {
- // only run once
- if ($this->config->getAppValue('core', 'enterpriseLogoChecked') === 'yes') {
- $output->info('Repair step already executed');
- return;
- }
-
- if (!$this->subscriptionRegistry->delegateHasValidSubscription()) {
- // no need to set the enterprise logo
- $this->config->setAppValue('core', 'enterpriseLogoChecked', 'yes');
- return;
- }
-
- if ($this->themingDefaults instanceof ThemingDefaults) {
- $output->info('Theming is enabled - trying to set logo.');
- try {
- $folder = $this->appData->getFolder('images');
- } catch (NotFoundException $e) {
- $folder = $this->appData->newFolder('images');
- }
-
- if (!$folder->fileExists('logo') || $folder->getFile('logo')->getSize() === 0) {
- $output->info('Logo does not exist yet - setting it.');
-
- if ($folder->fileExists('logo')) {
- $folder->getFile('logo')->delete();
- }
- $target = $folder->newFile('logo');
-
- $target->putContent(file_get_contents(__DIR__ . '/../../../../core/img/logo/logo-enterprise.png'));
-
- $this->themingDefaults->set('logoMime', 'image/png');
-
- $this->scssCacher->process(\OC::$SERVERROOT, 'core/css/css-variables.scss', 'core');
- } else {
- $output->info('Logo already set - skipping.');
- }
- } else {
- $output->info('Theming is not enabled - skipping.');
- }
-
- // if all were done, no need to redo the repair during next upgrade
- $this->config->setAppValue('core', 'enterpriseLogoChecked', 'yes');
- }
-}
diff --git a/lib/private/Repair/NC17/SwitchUpdateChannel.php b/lib/private/Repair/NC17/SwitchUpdateChannel.php
deleted file mode 100644
index 836a89906ac..00000000000
--- a/lib/private/Repair/NC17/SwitchUpdateChannel.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-/**
- * @copyright Copyright (c) 2019, Morris Jobke <hey@morrisjobke.de>
- *
- * @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\NC17;
-
-use OCP\IConfig;
-use OCP\Migration\IOutput;
-use OCP\Migration\IRepairStep;
-use OCP\Support\Subscription\IRegistry;
-
-/**
- * @deprecated - can be removed in 18
- */
-class SwitchUpdateChannel implements IRepairStep {
-
- /** @var IConfig */
- private $config;
-
- /** @var IRegistry */
- private $subscriptionRegistry;
-
- public function __construct(IConfig $config, IRegistry $subscriptionRegistry) {
- $this->config = $config;
- $this->subscriptionRegistry = $subscriptionRegistry;
- }
-
- public function getName(): string {
- return 'Switches from deprecated "production" to "stable" update channel';
- }
-
- public function run(IOutput $output): void {
- $currentChannel = $this->config->getSystemValue('updater.release.channel', 'stable');
-
- if ($currentChannel === 'production') {
- if ($this->subscriptionRegistry->delegateHasValidSubscription()) {
- $this->config->setSystemValue('updater.release.channel', 'enterprise');
- } else {
- $this->config->setSystemValue('updater.release.channel', 'stable');
- }
- }
- }
-}
diff --git a/lib/private/Repair/Owncloud/SaveAccountsTableData.php b/lib/private/Repair/Owncloud/SaveAccountsTableData.php
index 171683e8f9b..6ca46934d71 100644
--- a/lib/private/Repair/Owncloud/SaveAccountsTableData.php
+++ b/lib/private/Repair/Owncloud/SaveAccountsTableData.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
*
* @license GNU AGPL version 3 or any later version
@@ -35,8 +36,7 @@ use OCP\PreConditionNotMetException;
* before the data structure is changed and the information is gone
*/
class SaveAccountsTableData implements IRepairStep {
-
- const BATCH_SIZE = 75;
+ public const BATCH_SIZE = 75;
/** @var IDBConnection */
protected $db;
@@ -177,7 +177,7 @@ class SaveAccountsTableData implements IRepairStep {
}
if ($state === 1) {
$this->config->setUserValue($userdata['user_id'], 'core', 'enabled', 'true');
- } else if ($state === 2) {
+ } elseif ($state === 2) {
$this->config->setUserValue($userdata['user_id'], 'core', 'enabled', 'false');
}
@@ -186,6 +186,5 @@ class SaveAccountsTableData implements IRepairStep {
->setParameter('userid', $userdata['user_id']);
$update->execute();
}
-
}
}
diff --git a/lib/private/Repair/RemoveLinkShares.php b/lib/private/Repair/RemoveLinkShares.php
index 580c9567f34..3a0dd6f2884 100644
--- a/lib/private/Repair/RemoveLinkShares.php
+++ b/lib/private/Repair/RemoveLinkShares.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Kesselberg <mail@danielkesselberg.de>
* @author Joas Schilling <coding@schilljs.com>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
@@ -210,7 +211,7 @@ class RemoveLinkShares implements IRepairStep {
$output->startProgress($total);
$shareCursor = $this->getShares();
- while($data = $shareCursor->fetch()) {
+ while ($data = $shareCursor->fetch()) {
$this->processShare($data);
$output->advance();
}
diff --git a/lib/private/Repair/RepairInvalidShares.php b/lib/private/Repair/RepairInvalidShares.php
index cb71bef9ffa..27defdeda01 100644
--- a/lib/private/Repair/RepairInvalidShares.php
+++ b/lib/private/Repair/RepairInvalidShares.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -32,8 +33,7 @@ use OCP\Migration\IRepairStep;
* Repairs shares with invalid data
*/
class RepairInvalidShares implements IRepairStep {
-
- const CHUNK_SIZE = 200;
+ public const CHUNK_SIZE = 200;
/** @var \OCP\IConfig */
protected $config;
diff --git a/lib/private/Repair/RepairMimeTypes.php b/lib/private/Repair/RepairMimeTypes.php
index c3ad7be72da..b6b6ceed104 100644
--- a/lib/private/Repair/RepairMimeTypes.php
+++ b/lib/private/Repair/RepairMimeTypes.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Olivier Paroz <github@oparoz.com>
@@ -90,46 +91,46 @@ class RepairMimeTypes implements IRepairStep {
private function updateMimetypes($updatedMimetypes) {
if (empty($this->folderMimeTypeId)) {
- $result = \OC_DB::executeAudited(self::getIdStmt(), array('httpd/unix-directory'));
+ $result = \OC_DB::executeAudited(self::getIdStmt(), ['httpd/unix-directory']);
$this->folderMimeTypeId = (int)$result->fetchOne();
}
$count = 0;
foreach ($updatedMimetypes as $extension => $mimetype) {
- $result = \OC_DB::executeAudited(self::existsStmt(), array($mimetype));
+ $result = \OC_DB::executeAudited(self::existsStmt(), [$mimetype]);
$exists = $result->fetchOne();
if (!$exists) {
// insert mimetype
- \OC_DB::executeAudited(self::insertStmt(), array($mimetype));
+ \OC_DB::executeAudited(self::insertStmt(), [$mimetype]);
}
// get target mimetype id
- $result = \OC_DB::executeAudited(self::getIdStmt(), array($mimetype));
+ $result = \OC_DB::executeAudited(self::getIdStmt(), [$mimetype]);
$mimetypeId = $result->fetchOne();
// change mimetype for files with x extension
- $count += \OC_DB::executeAudited(self::updateByNameStmt(), array($mimetypeId, $this->folderMimeTypeId, $mimetypeId, '%.' . $extension));
+ $count += \OC_DB::executeAudited(self::updateByNameStmt(), [$mimetypeId, $this->folderMimeTypeId, $mimetypeId, '%.' . $extension]);
}
return $count;
}
private function introduceImageTypes() {
- $updatedMimetypes = array(
+ $updatedMimetypes = [
'jp2' => 'image/jp2',
'webp' => 'image/webp',
- );
+ ];
return $this->updateMimetypes($updatedMimetypes);
}
private function introduceWindowsProgramTypes() {
- $updatedMimetypes = array(
+ $updatedMimetypes = [
'htaccess' => 'text/plain',
'bat' => 'application/x-msdos-program',
'cmd' => 'application/cmd',
- );
+ ];
return $this->updateMimetypes($updatedMimetypes);
}
@@ -194,7 +195,6 @@ class RepairMimeTypes implements IRepairStep {
* Fix mime types
*/
public function run(IOutput $out) {
-
$ocVersionFromBeforeUpdate = $this->config->getSystemValue('version', '0.0.0');
// NOTE TO DEVELOPERS: when adding new mime types, please make sure to
diff --git a/lib/private/RichObjectStrings/Validator.php b/lib/private/RichObjectStrings/Validator.php
index 0a651256d3a..c80da2914a4 100644
--- a/lib/private/RichObjectStrings/Validator.php
+++ b/lib/private/RichObjectStrings/Validator.php
@@ -25,7 +25,6 @@
namespace OC\RichObjectStrings;
-
use OCP\RichObjectStrings\Definitions;
use OCP\RichObjectStrings\InvalidObjectExeption;
use OCP\RichObjectStrings\IValidator;
diff --git a/lib/private/Route/CachingRouter.php b/lib/private/Route/CachingRouter.php
index af68129e57d..e94039cce1a 100644
--- a/lib/private/Route/CachingRouter.php
+++ b/lib/private/Route/CachingRouter.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -49,7 +50,7 @@ class CachingRouter extends Router {
* @param bool $absolute
* @return string
*/
- public function generate($name, $parameters = array(), $absolute = false) {
+ public function generate($name, $parameters = [], $absolute = false) {
asort($parameters);
$key = $this->context->getHost() . '#' . $this->context->getBaseUrl() . $name . sha1(json_encode($parameters)) . (int)$absolute;
$cachedKey = $this->cache->get($key);
diff --git a/lib/private/Route/Route.php b/lib/private/Route/Route.php
index 645c2449908..705183d24ae 100644
--- a/lib/private/Route/Route.php
+++ b/lib/private/Route/Route.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author David Prévot <taffit@debian.org>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -133,7 +134,7 @@ class Route extends SymfonyRoute implements IRoute {
* to the class with $function
*/
public function action($class, $function = null) {
- $action = array($class, $function);
+ $action = [$class, $function];
if (is_null($function)) {
$action = $class;
}
@@ -148,7 +149,7 @@ class Route extends SymfonyRoute implements IRoute {
* @return void
*/
public function actionInclude($file) {
- $function = function($param) use ($file) {
+ $function = function ($param) use ($file) {
unset($param["_route"]);
$_GET=array_merge($_GET, $param);
unset($param);
diff --git a/lib/private/Route/Router.php b/lib/private/Route/Router.php
index 5b73a1f697e..0e436339013 100644
--- a/lib/private/Route/Router.php
+++ b/lib/private/Route/Router.php
@@ -5,7 +5,6 @@
* @author Bart Visscher <bartv@thisnet.nl>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
- * @author Felix Epp <work@felixepp.de>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@statuscode.ch>
@@ -73,7 +72,7 @@ class Router implements IRouter {
public function __construct(ILogger $logger) {
$this->logger = $logger;
$baseUrl = \OC::$WEBROOT;
- if(!(\OC::$server->getConfig()->getSystemValue('htaccess.IgnoreFrontController', false) === true || getenv('front_controller_active') === 'true')) {
+ if (!(\OC::$server->getConfig()->getSystemValue('htaccess.IgnoreFrontController', false) === true || getenv('front_controller_active') === 'true')) {
$baseUrl = \OC::$server->getURLGenerator()->linkTo('', 'index.php');
}
if (!\OC::$CLI && isset($_SERVER['REQUEST_METHOD'])) {
@@ -99,7 +98,7 @@ class Router implements IRouter {
$this->routingFiles = [];
foreach (\OC_APP::getEnabledApps() as $app) {
$appPath = \OC_App::getAppPath($app);
- if($appPath !== false) {
+ if ($appPath !== false) {
$file = $appPath . '/appinfo/routes.php';
if (file_exists($file)) {
$this->routingFiles[$app] = $file;
@@ -116,7 +115,7 @@ class Router implements IRouter {
* @param null|string $app
*/
public function loadRoutes($app = null) {
- if(is_string($app)) {
+ if (is_string($app)) {
$app = \OC_App::cleanAppId($app);
}
@@ -151,7 +150,6 @@ class Router implements IRouter {
$this->useCollection($app);
$this->requireRouteFile($file, $app);
$collection = $this->getCollection($app);
- $collection->addPrefix('/apps/' . $app);
$this->root->addCollection($collection);
// Also add the OCS collection
@@ -251,16 +249,16 @@ class Router implements IRouter {
$app = \OC_App::cleanAppId($app);
\OC::$REQUESTEDAPP = $app;
$this->loadRoutes($app);
- } else if (substr($url, 0, 13) === '/ocsapp/apps/') {
+ } elseif (substr($url, 0, 13) === '/ocsapp/apps/') {
// empty string / 'ocsapp' / 'apps' / $app / rest of the route
list(, , , $app,) = explode('/', $url, 5);
$app = \OC_App::cleanAppId($app);
\OC::$REQUESTEDAPP = $app;
$this->loadRoutes($app);
- } else if (substr($url, 0, 10) === '/settings/') {
+ } elseif (substr($url, 0, 10) === '/settings/') {
$this->loadRoutes('settings');
- } else if (substr($url, 0, 6) === '/core/') {
+ } elseif (substr($url, 0, 6) === '/core/') {
\OC::$REQUESTEDAPP = $url;
if (!\OC::$server->getConfig()->getSystemValueBool('maintenance') && !Util::needUpgrade()) {
\OC_App::loadApps();
@@ -336,6 +334,7 @@ class Router implements IRouter {
if ($absolute === false) {
$referenceType = UrlGenerator::ABSOLUTE_PATH;
}
+ $name = $this->fixLegacyRootName($name);
return $this->getGenerator()->generate($name, $parameters, $referenceType);
} catch (RouteNotFoundException $e) {
$this->logger->logException($e);
@@ -343,6 +342,34 @@ class Router implements IRouter {
}
}
+ protected function fixLegacyRootName(string $routeName): string {
+ if ($routeName === 'files.viewcontroller.showFile') {
+ return 'files.View.showFile';
+ }
+ if ($routeName === 'files_sharing.sharecontroller.showShare') {
+ return 'files_sharing.Share.showShare';
+ }
+ if ($routeName === 'files_sharing.sharecontroller.showAuthenticate') {
+ return 'files_sharing.Share.showAuthenticate';
+ }
+ if ($routeName === 'files_sharing.sharecontroller.authenticate') {
+ return 'files_sharing.Share.authenticate';
+ }
+ if ($routeName === 'files_sharing.sharecontroller.downloadShare') {
+ return 'files_sharing.Share.downloadShare';
+ }
+ if ($routeName === 'files_sharing.publicpreview.directLink') {
+ return 'files_sharing.PublicPreview.directLink';
+ }
+ if ($routeName === 'cloud_federation_api.requesthandlercontroller.addShare') {
+ return 'cloud_federation_api.RequestHandler.addShare';
+ }
+ if ($routeName === 'cloud_federation_api.requesthandlercontroller.receiveNotification') {
+ return 'cloud_federation_api.RequestHandler.receiveNotification';
+ }
+ return $routeName;
+ }
+
/**
* To isolate the variable scope used inside the $file it is required in it's own method
*
diff --git a/lib/private/Search.php b/lib/private/Search.php
index db533ff182a..ae22a6d9f19 100644
--- a/lib/private/Search.php
+++ b/lib/private/Search.php
@@ -4,6 +4,7 @@
*
* @author Andrew Brown <andrew@casabrown.com>
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -26,6 +27,7 @@
*/
namespace OC;
+
use OCP\ISearch;
use OCP\Search\PagedProvider;
use OCP\Search\Provider;
@@ -34,9 +36,8 @@ use OCP\Search\Provider;
* Provide an interface to all search providers
*/
class Search implements ISearch {
-
- private $providers = array();
- private $registeredProviders = array();
+ private $providers = [];
+ private $registeredProviders = [];
/**
* Search all providers for $query
@@ -46,17 +47,17 @@ class Search implements ISearch {
* @param int $size, 0 = all
* @return array An array of OC\Search\Result's
*/
- public function searchPaged($query, array $inApps = array(), $page = 1, $size = 30) {
+ public function searchPaged($query, array $inApps = [], $page = 1, $size = 30) {
$this->initProviders();
- $results = array();
- foreach($this->providers as $provider) {
+ $results = [];
+ foreach ($this->providers as $provider) {
/** @var $provider Provider */
- if ( ! $provider->providesResultsFor($inApps) ) {
+ if (! $provider->providesResultsFor($inApps)) {
continue;
}
if ($provider instanceof PagedProvider) {
$results = array_merge($results, $provider->searchPaged($query, $page, $size));
- } else if ($provider instanceof Provider) {
+ } elseif ($provider instanceof Provider) {
$providerResults = $provider->search($query);
if ($size > 0) {
$slicedResults = array_slice($providerResults, ($page - 1) * $size, $size);
@@ -65,7 +66,7 @@ class Search implements ISearch {
$results = array_merge($results, $providerResults);
}
} else {
- \OC::$server->getLogger()->warning('Ignoring Unknown search provider', array('provider' => $provider));
+ \OC::$server->getLogger()->warning('Ignoring Unknown search provider', ['provider' => $provider]);
}
}
return $results;
@@ -75,8 +76,8 @@ class Search implements ISearch {
* Remove all registered search providers
*/
public function clearProviders() {
- $this->providers = array();
- $this->registeredProviders = array();
+ $this->providers = [];
+ $this->registeredProviders = [];
}
/**
@@ -91,7 +92,7 @@ class Search implements ISearch {
}
);
// force regeneration of providers on next search
- $this->providers = array();
+ $this->providers = [];
}
/**
@@ -99,22 +100,21 @@ class Search implements ISearch {
* @param string $class class name of a OC\Search\Provider
* @param array $options optional
*/
- public function registerProvider($class, array $options = array()) {
- $this->registeredProviders[] = array('class' => $class, 'options' => $options);
+ public function registerProvider($class, array $options = []) {
+ $this->registeredProviders[] = ['class' => $class, 'options' => $options];
}
/**
* Create instances of all the registered search providers
*/
private function initProviders() {
- if( ! empty($this->providers) ) {
+ if (! empty($this->providers)) {
return;
}
- foreach($this->registeredProviders as $provider) {
+ foreach ($this->registeredProviders as $provider) {
$class = $provider['class'];
$options = $provider['options'];
$this->providers[] = new $class($options);
}
}
-
}
diff --git a/lib/private/Search/Provider/File.php b/lib/private/Search/Provider/File.php
index 87927b90768..02521460d8c 100644
--- a/lib/private/Search/Provider/File.php
+++ b/lib/private/Search/Provider/File.php
@@ -4,6 +4,7 @@
*
* @author Andrew Brown <andrew@casabrown.com>
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jakob Sack <mail@jakobsack.de>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -26,6 +27,7 @@
*/
namespace OC\Search\Provider;
+
use OC\Files\Filesystem;
/**
@@ -40,7 +42,7 @@ class File extends \OCP\Search\Provider {
*/
public function search($query) {
$files = Filesystem::search($query);
- $results = array();
+ $results = [];
// edit results
foreach ($files as $fileData) {
// skip versions
@@ -52,19 +54,19 @@ class File extends \OCP\Search\Provider {
continue;
}
// create audio result
- if($fileData['mimepart'] === 'audio'){
+ if ($fileData['mimepart'] === 'audio') {
$result = new \OC\Search\Result\Audio($fileData);
}
// create image result
- elseif($fileData['mimepart'] === 'image'){
+ elseif ($fileData['mimepart'] === 'image') {
$result = new \OC\Search\Result\Image($fileData);
}
// create folder result
- elseif($fileData['mimetype'] === 'httpd/unix-directory'){
+ elseif ($fileData['mimetype'] === 'httpd/unix-directory') {
$result = new \OC\Search\Result\Folder($fileData);
}
// or create file result
- else{
+ else {
$result = new \OC\Search\Result\File($fileData);
}
// add to results
@@ -73,5 +75,4 @@ class File extends \OCP\Search\Provider {
// return
return $results;
}
-
}
diff --git a/lib/private/Search/Result/Audio.php b/lib/private/Search/Result/Audio.php
index a035f51b38b..ef0d3bf9d20 100644
--- a/lib/private/Search/Result/Audio.php
+++ b/lib/private/Search/Result/Audio.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Andrew Brown <andrew@casabrown.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
*
@@ -31,7 +32,7 @@ class Audio extends File {
/**
* Type name; translated in templates
- * @var string
+ * @var string
*/
public $type = 'audio';
diff --git a/lib/private/Search/Result/File.php b/lib/private/Search/Result/File.php
index 09d2afb2617..cfff54e0692 100644
--- a/lib/private/Search/Result/File.php
+++ b/lib/private/Search/Result/File.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Andrew Brown <andrew@casabrown.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -24,6 +25,7 @@
*/
namespace OC\Search\Result;
+
use OCP\Files\FileInfo;
use OCP\Files\Folder;
@@ -34,7 +36,7 @@ class File extends \OCP\Search\Result {
/**
* Type name; translated in templates
- * @var string
+ * @var string
*/
public $type = 'file';
@@ -46,7 +48,7 @@ class File extends \OCP\Search\Result {
/**
* Size, in bytes
- * @var int
+ * @var int
*/
public $size;
@@ -64,7 +66,7 @@ class File extends \OCP\Search\Result {
/**
* File permissions:
- *
+ *
* @var string
*/
public $permissions;
@@ -74,7 +76,6 @@ class File extends \OCP\Search\Result {
* @param FileInfo $data file data given by provider
*/
public function __construct(FileInfo $data) {
-
$path = $this->getRelativePath($data->getPath());
$info = pathinfo($path);
@@ -97,7 +98,7 @@ class File extends \OCP\Search\Result {
/**
* @var Folder $userFolderCache
*/
- static protected $userFolderCache = null;
+ protected static $userFolderCache = null;
/**
* converts a path relative to the users files folder
@@ -105,12 +106,11 @@ class File extends \OCP\Search\Result {
* @param string $path
* @return string relative path
*/
- protected function getRelativePath ($path) {
+ protected function getRelativePath($path) {
if (!isset(self::$userFolderCache)) {
$user = \OC::$server->getUserSession()->getUser()->getUID();
self::$userFolderCache = \OC::$server->getUserFolder($user);
}
return self::$userFolderCache->getRelativePath($path);
}
-
}
diff --git a/lib/private/Search/Result/Folder.php b/lib/private/Search/Result/Folder.php
index 1626f9d67d2..8110d61bead 100644
--- a/lib/private/Search/Result/Folder.php
+++ b/lib/private/Search/Result/Folder.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Andrew Brown <andrew@casabrown.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
*
@@ -31,8 +32,7 @@ class Folder extends File {
/**
* Type name; translated in templates
- * @var string
+ * @var string
*/
public $type = 'folder';
-
}
diff --git a/lib/private/Search/Result/Image.php b/lib/private/Search/Result/Image.php
index 02973855efb..e569c91ea02 100644
--- a/lib/private/Search/Result/Image.php
+++ b/lib/private/Search/Result/Image.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Andrew Brown <andrew@casabrown.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
*
@@ -31,7 +32,7 @@ class Image extends File {
/**
* Type name; translated in templates
- * @var string
+ * @var string
*/
public $type = 'image';
diff --git a/lib/private/Security/Bruteforce/Throttler.php b/lib/private/Security/Bruteforce/Throttler.php
index 6d199881a71..63c6361b9ce 100644
--- a/lib/private/Security/Bruteforce/Throttler.php
+++ b/lib/private/Security/Bruteforce/Throttler.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
* @author Bjoern Schiessle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Mark Berezovsky <xpnf@yandex.ru>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -48,7 +49,7 @@ use OCP\ILogger;
* @package OC\Security\Bruteforce
*/
class Throttler {
- const LOGIN_ACTION = 'login';
+ public const LOGIN_ACTION = 'login';
/** @var IDBConnection */
private $db;
@@ -111,7 +112,7 @@ class Throttler {
$ip,
array $metadata = []) {
// No need to log if the bruteforce protection is disabled
- if($this->config->getSystemValue('auth.bruteforce.protection.enabled', true) === false) {
+ if ($this->config->getSystemValue('auth.bruteforce.protection.enabled', true) === false) {
return;
}
@@ -137,7 +138,7 @@ class Throttler {
$qb = $this->db->getQueryBuilder();
$qb->insert('bruteforce_attempts');
- foreach($values as $column => $value) {
+ foreach ($values as $column => $value) {
$qb->setValue($column, $qb->createNamedParameter($value));
}
$qb->execute();
@@ -150,19 +151,19 @@ class Throttler {
* @return bool
*/
private function isIPWhitelisted($ip) {
- if($this->config->getSystemValue('auth.bruteforce.protection.enabled', true) === false) {
+ if ($this->config->getSystemValue('auth.bruteforce.protection.enabled', true) === false) {
return true;
}
$keys = $this->config->getAppKeys('bruteForce');
- $keys = array_filter($keys, function($key) {
+ $keys = array_filter($keys, function ($key) {
$regex = '/^whitelist_/S';
return preg_match($regex, $key) === 1;
});
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
$type = 4;
- } else if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
+ } elseif (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
$type = 6;
} else {
return false;
@@ -186,7 +187,7 @@ class Throttler {
$addr = inet_pton($addr);
$valid = true;
- for($i = 0; $i < $mask; $i++) {
+ for ($i = 0; $i < $mask; $i++) {
$part = ord($addr[(int)($i/8)]);
$orig = ord($ip[(int)($i/8)]);
@@ -207,7 +208,6 @@ class Throttler {
}
return false;
-
}
/**
@@ -243,7 +243,7 @@ class Throttler {
$maxDelay = 25;
$firstDelay = 0.1;
- if ($attempts > (8 * PHP_INT_SIZE - 1)) {
+ if ($attempts > (8 * PHP_INT_SIZE - 1)) {
// Don't ever overflow. Just assume the maxDelay time:s
$firstDelay = $maxDelay;
} else {
diff --git a/lib/private/Security/CSP/ContentSecurityPolicy.php b/lib/private/Security/CSP/ContentSecurityPolicy.php
index e2660dbb41c..4d41bd56206 100644
--- a/lib/private/Security/CSP/ContentSecurityPolicy.php
+++ b/lib/private/Security/CSP/ContentSecurityPolicy.php
@@ -7,7 +7,7 @@ declare(strict_types=1);
*
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <roeland@famdouma.nl>
- * @author Thomas Citharel <tcit@tcit.fr>
+ * @author Thomas Citharel <nextcloud@tcit.fr>
*
* @license AGPL-3.0
*
@@ -245,5 +245,4 @@ class ContentSecurityPolicy extends \OCP\AppFramework\Http\ContentSecurityPolicy
public function setReportTo(array $reportTo) {
$this->reportTo = $reportTo;
}
-
}
diff --git a/lib/private/Security/CSP/ContentSecurityPolicyManager.php b/lib/private/Security/CSP/ContentSecurityPolicyManager.php
index 9f1a480ccce..e0403e77936 100644
--- a/lib/private/Security/CSP/ContentSecurityPolicyManager.php
+++ b/lib/private/Security/CSP/ContentSecurityPolicyManager.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -59,7 +60,7 @@ class ContentSecurityPolicyManager implements IContentSecurityPolicyManager {
$this->dispatcher->dispatch(AddContentSecurityPolicyEvent::class, $event);
$defaultPolicy = new \OC\Security\CSP\ContentSecurityPolicy();
- foreach($this->policies as $policy) {
+ foreach ($this->policies as $policy) {
$defaultPolicy = $this->mergePolicies($defaultPolicy, $policy);
}
return $defaultPolicy;
@@ -74,9 +75,9 @@ class ContentSecurityPolicyManager implements IContentSecurityPolicyManager {
*/
public function mergePolicies(ContentSecurityPolicy $defaultPolicy,
EmptyContentSecurityPolicy $originalPolicy): ContentSecurityPolicy {
- foreach((object)(array)$originalPolicy as $name => $value) {
+ foreach ((object)(array)$originalPolicy as $name => $value) {
$setter = 'set'.ucfirst($name);
- if(\is_array($value)) {
+ if (\is_array($value)) {
$getter = 'get'.ucfirst($name);
$currentValues = \is_array($defaultPolicy->$getter()) ? $defaultPolicy->$getter() : [];
$defaultPolicy->$setter(array_values(array_unique(array_merge($currentValues, $value))));
diff --git a/lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php b/lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php
index 7298fbe2eda..cc5a3c2d8fb 100644
--- a/lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php
+++ b/lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php
@@ -5,8 +5,10 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
+ * @author Pavel Krasikov <klonishe@gmail.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Sam Bull <aa6bs0@sambull.org>
*
@@ -60,7 +62,7 @@ class ContentSecurityPolicyNonceManager {
* @return string
*/
public function getNonce(): string {
- if($this->nonce === '') {
+ if ($this->nonce === '') {
if (empty($this->request->server['CSP_NONCE'])) {
$this->nonce = base64_encode($this->csrfTokenManager->getToken()->getEncryptedValue());
} else {
@@ -85,7 +87,7 @@ class ContentSecurityPolicyNonceManager {
'/^Mozilla\/5\.0 \([^)]+\) AppleWebKit\/[0-9.]+ \(KHTML, like Gecko\) Version\/(?:1[2-9]|[2-9][0-9])\.[0-9]+(?:\.[0-9]+)? Safari\/[0-9.A-Z]+$/',
];
- if($this->request->isUserAgent($browserWhitelist)) {
+ if ($this->request->isUserAgent($browserWhitelist)) {
return true;
}
diff --git a/lib/private/Security/CSRF/CsrfToken.php b/lib/private/Security/CSRF/CsrfToken.php
index 9b6b249e20f..25ec8572a66 100644
--- a/lib/private/Security/CSRF/CsrfToken.php
+++ b/lib/private/Security/CSRF/CsrfToken.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Leon Klingele <git@leonklingele.de>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -55,7 +56,7 @@ class CsrfToken {
* @return string
*/
public function getEncryptedValue(): string {
- if($this->encryptedValue === '') {
+ if ($this->encryptedValue === '') {
$sharedSecret = random_bytes(\strlen($this->value));
$this->encryptedValue = base64_encode($this->value ^ $sharedSecret) . ':' . base64_encode($sharedSecret);
}
diff --git a/lib/private/Security/CSRF/CsrfTokenManager.php b/lib/private/Security/CSRF/CsrfTokenManager.php
index 8314639e8ef..f0536c770b5 100644
--- a/lib/private/Security/CSRF/CsrfTokenManager.php
+++ b/lib/private/Security/CSRF/CsrfTokenManager.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -57,11 +58,11 @@ class CsrfTokenManager {
* @return CsrfToken
*/
public function getToken(): CsrfToken {
- if(!\is_null($this->csrfToken)) {
+ if (!\is_null($this->csrfToken)) {
return $this->csrfToken;
}
- if($this->sessionStorage->hasToken()) {
+ if ($this->sessionStorage->hasToken()) {
$value = $this->sessionStorage->getToken();
} else {
$value = $this->tokenGenerator->generateToken();
@@ -99,7 +100,7 @@ class CsrfTokenManager {
* @return bool
*/
public function isTokenValid(CsrfToken $token): bool {
- if(!$this->sessionStorage->hasToken()) {
+ if (!$this->sessionStorage->hasToken()) {
return false;
}
diff --git a/lib/private/Security/CSRF/TokenStorage/SessionStorage.php b/lib/private/Security/CSRF/TokenStorage/SessionStorage.php
index d73c8d94206..ed9b068faa2 100644
--- a/lib/private/Security/CSRF/TokenStorage/SessionStorage.php
+++ b/lib/private/Security/CSRF/TokenStorage/SessionStorage.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -60,7 +61,7 @@ class SessionStorage {
*/
public function getToken(): string {
$token = $this->session->get('requesttoken');
- if(empty($token)) {
+ if (empty($token)) {
throw new \Exception('Session does not contain a requesttoken');
}
diff --git a/lib/private/Security/Certificate.php b/lib/private/Security/Certificate.php
index 5e6c425dbf7..c89122f9a4b 100644
--- a/lib/private/Security/Certificate.php
+++ b/lib/private/Security/Certificate.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -54,12 +55,12 @@ class Certificate implements ICertificate {
// If string starts with "file://" ignore the certificate
$query = 'file://';
- if(strtolower(substr($data, 0, strlen($query))) === $query) {
+ if (strtolower(substr($data, 0, strlen($query))) === $query) {
throw new \Exception('Certificate could not get parsed.');
}
$info = openssl_x509_parse($data);
- if(!is_array($info)) {
+ if (!is_array($info)) {
throw new \Exception('Certificate could not get parsed.');
}
diff --git a/lib/private/Security/CertificateManager.php b/lib/private/Security/CertificateManager.php
index 48ff28a3fb4..e69132ff4df 100644
--- a/lib/private/Security/CertificateManager.php
+++ b/lib/private/Security/CertificateManager.php
@@ -4,6 +4,7 @@
*
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -86,19 +87,18 @@ class CertificateManager implements ICertificateManager {
* @return \OCP\ICertificate[]
*/
public function listCertificates() {
-
if (!$this->config->getSystemValue('installed', false)) {
- return array();
+ return [];
}
$path = $this->getPathToCertificates() . 'uploads/';
if (!$this->view->is_dir($path)) {
- return array();
+ return [];
}
- $result = array();
+ $result = [];
$handle = $this->view->opendir($path);
if (!is_resource($handle)) {
- return array();
+ return [];
}
while (false !== ($file = readdir($handle))) {
if ($file != '.' && $file != '..') {
@@ -186,7 +186,6 @@ class CertificateManager implements ICertificateManager {
} catch (\Exception $e) {
throw $e;
}
-
}
/**
@@ -286,5 +285,4 @@ class CertificateManager implements ICertificateManager {
protected function getFilemtimeOfCaBundle() {
return filemtime(\OC::$SERVERROOT . '/resources/config/ca-bundle.crt');
}
-
}
diff --git a/lib/private/Security/CredentialsManager.php b/lib/private/Security/CredentialsManager.php
index 0120f69e431..ace8e6889ec 100644
--- a/lib/private/Security/CredentialsManager.php
+++ b/lib/private/Security/CredentialsManager.php
@@ -2,6 +2,8 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -33,8 +35,7 @@ use OCP\Security\ICrypto;
* @package OC\Security
*/
class CredentialsManager implements ICredentialsManager {
-
- const DB_TABLE = 'credentials';
+ public const DB_TABLE = 'credentials';
/** @var ICrypto */
protected $crypto;
@@ -54,7 +55,7 @@ class CredentialsManager implements ICredentialsManager {
/**
* Store a set of credentials
*
- * @param string|null $userId Null for system-wide credentials
+ * @param string $userId empty string for system-wide credentials
* @param string $identifier
* @param mixed $credentials
*/
@@ -62,7 +63,7 @@ class CredentialsManager implements ICredentialsManager {
$value = $this->crypto->encrypt(json_encode($credentials));
$this->dbConnection->setValues(self::DB_TABLE, [
- 'user' => $userId,
+ 'user' => (string)$userId,
'identifier' => $identifier,
], [
'credentials' => $value,
@@ -72,7 +73,7 @@ class CredentialsManager implements ICredentialsManager {
/**
* Retrieve a set of credentials
*
- * @param string|null $userId Null for system-wide credentials
+ * @param string $userId empty string for system-wide credentials
* @param string $identifier
* @return mixed
*/
@@ -80,7 +81,7 @@ class CredentialsManager implements ICredentialsManager {
$qb = $this->dbConnection->getQueryBuilder();
$qb->select('credentials')
->from(self::DB_TABLE)
- ->where($qb->expr()->eq('user', $qb->createNamedParameter($userId)))
+ ->where($qb->expr()->eq('user', $qb->createNamedParameter((string)$userId)))
->andWhere($qb->expr()->eq('identifier', $qb->createNamedParameter($identifier)))
;
$result = $qb->execute()->fetch();
@@ -96,14 +97,14 @@ class CredentialsManager implements ICredentialsManager {
/**
* Delete a set of credentials
*
- * @param string|null $userId Null for system-wide credentials
+ * @param string $userId empty string for system-wide credentials
* @param string $identifier
* @return int rows removed
*/
public function delete($userId, $identifier) {
$qb = $this->dbConnection->getQueryBuilder();
$qb->delete(self::DB_TABLE)
- ->where($qb->expr()->eq('user', $qb->createNamedParameter($userId)))
+ ->where($qb->expr()->eq('user', $qb->createNamedParameter((string)$userId)))
->andWhere($qb->expr()->eq('identifier', $qb->createNamedParameter($identifier)))
;
return $qb->execute();
@@ -122,5 +123,4 @@ class CredentialsManager implements ICredentialsManager {
;
return $qb->execute();
}
-
}
diff --git a/lib/private/Security/Crypto.php b/lib/private/Security/Crypto.php
index ca17b6e2b8a..154448281b9 100644
--- a/lib/private/Security/Crypto.php
+++ b/lib/private/Security/Crypto.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Andreas Fischer <bantu@owncloud.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -51,17 +52,14 @@ class Crypto implements ICrypto {
private $ivLength = 16;
/** @var IConfig */
private $config;
- /** @var ISecureRandom */
- private $random;
/**
* @param IConfig $config
* @param ISecureRandom $random
*/
- public function __construct(IConfig $config, ISecureRandom $random) {
+ public function __construct(IConfig $config) {
$this->cipher = new AES();
$this->config = $config;
- $this->random = $random;
}
/**
@@ -70,7 +68,7 @@ class Crypto implements ICrypto {
* @return string Calculated HMAC
*/
public function calculateHMAC(string $message, string $password = ''): string {
- if($password === '') {
+ if ($password === '') {
$password = $this->config->getSystemValue('secret');
}
@@ -89,18 +87,19 @@ class Crypto implements ICrypto {
* @return string Authenticated ciphertext
*/
public function encrypt(string $plaintext, string $password = ''): string {
- if($password === '') {
+ if ($password === '') {
$password = $this->config->getSystemValue('secret');
}
$this->cipher->setPassword($password);
- $iv = $this->random->generate($this->ivLength);
+ $iv = \random_bytes($this->ivLength);
$this->cipher->setIV($iv);
$ciphertext = bin2hex($this->cipher->encrypt($plaintext));
+ $iv = bin2hex($iv);
$hmac = bin2hex($this->calculateHMAC($ciphertext.$iv, $password));
- return $ciphertext.'|'.$iv.'|'.$hmac;
+ return $ciphertext.'|'.$iv.'|'.$hmac.'|2';
}
/**
@@ -118,7 +117,8 @@ class Crypto implements ICrypto {
$this->cipher->setPassword($password);
$parts = explode('|', $authenticatedCiphertext);
- if (\count($parts) !== 3) {
+ $partCount = \count($parts);
+ if ($partCount < 3 || $partCount > 4) {
throw new \Exception('Authenticated ciphertext could not be decoded.');
}
@@ -126,6 +126,13 @@ class Crypto implements ICrypto {
$iv = $parts[1];
$hmac = hex2bin($parts[2]);
+ if ($partCount === 4) {
+ $version = $parts[3];
+ if ($version === '2') {
+ $iv = hex2bin($iv);
+ }
+ }
+
$this->cipher->setIV($iv);
if (!hash_equals($this->calculateHMAC($parts[0] . $parts[1], $password), $hmac)) {
@@ -139,5 +146,4 @@ class Crypto implements ICrypto {
return $result;
}
-
}
diff --git a/lib/private/Security/FeaturePolicy/FeaturePolicy.php b/lib/private/Security/FeaturePolicy/FeaturePolicy.php
index b59d873b533..93556708789 100644
--- a/lib/private/Security/FeaturePolicy/FeaturePolicy.php
+++ b/lib/private/Security/FeaturePolicy/FeaturePolicy.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
namespace OC\Security\FeaturePolicy;
class FeaturePolicy extends \OCP\AppFramework\Http\FeaturePolicy {
-
public function getAutoplayDomains(): array {
return $this->autoplayDomains;
}
diff --git a/lib/private/Security/Hasher.php b/lib/private/Security/Hasher.php
index 21271fffbd7..a51508ba8e9 100644
--- a/lib/private/Security/Hasher.php
+++ b/lib/private/Security/Hasher.php
@@ -5,6 +5,8 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -63,22 +65,17 @@ class Hasher implements IHasher {
public function __construct(IConfig $config) {
$this->config = $config;
- if (\defined('PASSWORD_ARGON2I')) {
+ if (\defined('PASSWORD_ARGON2ID') || \defined('PASSWORD_ARGON2I')) {
// password_hash fails, when the minimum values are undershot.
- // In this case, ignore and revert to default
- if ($this->config->getSystemValueInt('hashingMemoryCost', PASSWORD_ARGON2_DEFAULT_MEMORY_COST) >= 8) {
- $this->options['memory_cost'] = $this->config->getSystemValueInt('hashingMemoryCost', PASSWORD_ARGON2_DEFAULT_MEMORY_COST);
- }
- if ($this->config->getSystemValueInt('hashingTimeCost', PASSWORD_ARGON2_DEFAULT_MEMORY_COST) >= 1) {
- $this->options['time_cost'] = $this->config->getSystemValueInt('hashingTimeCost', PASSWORD_ARGON2_DEFAULT_TIME_COST);
- }
- if ($this->config->getSystemValueInt('hashingThreads', PASSWORD_ARGON2_DEFAULT_MEMORY_COST) >= 1) {
- $this->options['threads'] = $this->config->getSystemValueInt('hashingThreads', PASSWORD_ARGON2_DEFAULT_THREADS);
- }
+ // In this case, apply minimum.
+ $this->options['threads'] = max($this->config->getSystemValueInt('hashingThreads', PASSWORD_ARGON2_DEFAULT_THREADS), 1);
+ // The minimum memory cost is 8 KiB per thread.
+ $this->options['memory_cost'] = max($this->config->getSystemValueInt('hashingMemoryCost', PASSWORD_ARGON2_DEFAULT_MEMORY_COST), $this->options['threads'] * 8);
+ $this->options['time_cost'] = max($this->config->getSystemValueInt('hashingTimeCost', PASSWORD_ARGON2_DEFAULT_TIME_COST), 1);
}
$hashingCost = $this->config->getSystemValue('hashingCost', null);
- if(!\is_null($hashingCost)) {
+ if (!\is_null($hashingCost)) {
$this->options['cost'] = $hashingCost;
}
}
@@ -112,8 +109,8 @@ class Hasher implements IHasher {
*/
protected function splitHash(string $prefixedHash) {
$explodedString = explode('|', $prefixedHash, 2);
- if(\count($explodedString) === 2) {
- if((int)$explodedString[0] > 0) {
+ if (\count($explodedString) === 2) {
+ if ((int)$explodedString[0] > 0) {
return ['version' => (int)$explodedString[0], 'hash' => $explodedString[1]];
}
}
@@ -129,13 +126,13 @@ class Hasher implements IHasher {
* @return bool Whether $hash is a valid hash of $message
*/
protected function legacyHashVerify($message, $hash, &$newHash = null): bool {
- if(empty($this->legacySalt)) {
+ if (empty($this->legacySalt)) {
$this->legacySalt = $this->config->getSystemValue('passwordsalt', '');
}
// Verify whether it matches a legacy PHPass or SHA1 string
$hashLength = \strlen($hash);
- if(($hashLength === 60 && password_verify($message.$this->legacySalt, $hash)) ||
+ if (($hashLength === 60 && password_verify($message.$this->legacySalt, $hash)) ||
($hashLength === 40 && hash_equals($hash, sha1($message)))) {
$newHash = $this->hash($message);
return true;
@@ -154,7 +151,7 @@ class Hasher implements IHasher {
* @return bool Whether $hash is a valid hash of $message
*/
protected function verifyHash(string $message, string $hash, &$newHash = null): bool {
- if(password_verify($message, $hash)) {
+ if (password_verify($message, $hash)) {
if ($this->needsRehash($hash)) {
$newHash = $this->hash($message);
}
@@ -173,7 +170,7 @@ class Hasher implements IHasher {
public function verify(string $message, string $hash, &$newHash = null): bool {
$splittedHash = $this->splitHash($hash);
- if(isset($splittedHash['version'])) {
+ if (isset($splittedHash['version'])) {
switch ($splittedHash['version']) {
case 3:
case 2:
@@ -210,5 +207,4 @@ class Hasher implements IHasher {
return $default;
}
-
}
diff --git a/lib/private/Security/IdentityProof/Manager.php b/lib/private/Security/IdentityProof/Manager.php
index 2c101769f18..2fa09da3189 100644
--- a/lib/private/Security/IdentityProof/Manager.php
+++ b/lib/private/Security/IdentityProof/Manager.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
* @author Bjoern Schiessle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -104,7 +105,8 @@ class Manager {
// Write the private and public key to the disk
try {
$this->appData->newFolder($id);
- } catch (\Exception $e) {}
+ } catch (\Exception $e) {
+ }
$folder = $this->appData->getFolder($id);
$folder->newFile('private')
->putContent($this->crypto->encrypt($privateKey));
@@ -167,6 +169,4 @@ class Manager {
}
$this->logger->critical('Something is wrong with your openssl setup: ' . implode(', ', $errors));
}
-
-
}
diff --git a/lib/private/Security/IdentityProof/Signer.php b/lib/private/Security/IdentityProof/Signer.php
index c5410397a27..26293a5ec4a 100644
--- a/lib/private/Security/IdentityProof/Signer.php
+++ b/lib/private/Security/IdentityProof/Signer.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -83,7 +84,7 @@ class Signer {
* @return bool
*/
public function verify(array $data): bool {
- if(isset($data['message'])
+ if (isset($data['message'])
&& isset($data['signature'])
&& isset($data['message']['signer'])
) {
@@ -91,7 +92,7 @@ class Signer {
$userId = substr($data['message']['signer'], 0, $location);
$user = $this->userManager->get($userId);
- if($user !== null) {
+ if ($user !== null) {
$key = $this->keyManager->getKey($user);
return (bool)openssl_verify(
json_encode($data['message']),
diff --git a/lib/private/Security/Normalizer/IpAddress.php b/lib/private/Security/Normalizer/IpAddress.php
index ef9dba6503a..b471c499440 100644
--- a/lib/private/Security/Normalizer/IpAddress.php
+++ b/lib/private/Security/Normalizer/IpAddress.php
@@ -8,7 +8,7 @@ declare(strict_types=1);
* @author Konrad Bucheli <kb@open.ch>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <roeland@famdouma.nl>
- * @author Thomas Citharel <tcit@tcit.fr>
+ * @author Thomas Citharel <nextcloud@tcit.fr>
*
* @license GNU AGPL version 3 or any later version
*
diff --git a/lib/private/Security/RateLimiting/Backend/MemoryCache.php b/lib/private/Security/RateLimiting/Backend/MemoryCache.php
index 2d4ff9812f5..2893d31ece2 100644
--- a/lib/private/Security/RateLimiting/Backend/MemoryCache.php
+++ b/lib/private/Security/RateLimiting/Backend/MemoryCache.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -75,7 +76,7 @@ class MemoryCache implements IBackend {
}
$cachedAttempts = json_decode($cachedAttempts, true);
- if(\is_array($cachedAttempts)) {
+ if (\is_array($cachedAttempts)) {
return $cachedAttempts;
}
@@ -95,7 +96,7 @@ class MemoryCache implements IBackend {
$currentTime = $this->timeFactory->getTime();
/** @var array $existingAttempts */
foreach ($existingAttempts as $attempt) {
- if(($attempt + $seconds) > $currentTime) {
+ if (($attempt + $seconds) > $currentTime) {
$count++;
}
}
@@ -115,7 +116,7 @@ class MemoryCache implements IBackend {
// Unset all attempts older than $period
foreach ($existingAttempts as $key => $attempt) {
- if(($attempt + $period) < $currentTime) {
+ if (($attempt + $period) < $currentTime) {
unset($existingAttempts[$key]);
}
}
diff --git a/lib/private/Security/SecureRandom.php b/lib/private/Security/SecureRandom.php
index 0e3411f8ab6..815b70caa03 100644
--- a/lib/private/Security/SecureRandom.php
+++ b/lib/private/Security/SecureRandom.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -51,7 +52,7 @@ class SecureRandom implements ISecureRandom {
$maxCharIndex = \strlen($characters) - 1;
$randomString = '';
- while($length > 0) {
+ while ($length > 0) {
$randomNumber = \random_int(0, $maxCharIndex);
$randomString .= $characters[$randomNumber];
$length--;
diff --git a/lib/private/Security/TrustedDomainHelper.php b/lib/private/Security/TrustedDomainHelper.php
index 473e56cdd51..8004bf7dc6f 100644
--- a/lib/private/Security/TrustedDomainHelper.php
+++ b/lib/private/Security/TrustedDomainHelper.php
@@ -2,8 +2,8 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Johannes Ernst <jernst@indiecomputing.com>
- * @author Johannes Koenig <mail@jokoenig.de>
* @author Julius Härtl <jus@bitgrid.net>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -26,6 +26,7 @@
*/
namespace OC\Security;
+
use OC\AppFramework\Http\Request;
use OCP\IConfig;
@@ -97,11 +98,13 @@ class TrustedDomainHelper {
if (gettype($trusted) !== 'string') {
break;
}
- $regex = '/^' . implode('[-\.a-zA-Z0-9]*', array_map(function($v) { return preg_quote($v, '/'); }, explode('*', $trusted))) . '$/i';
+ $regex = '/^' . implode('[-\.a-zA-Z0-9]*', array_map(function ($v) {
+ return preg_quote($v, '/');
+ }, explode('*', $trusted))) . '$/i';
if (preg_match($regex, $domain) || preg_match($regex, $domainWithPort)) {
- return true;
- }
- }
- return false;
+ return true;
+ }
+ }
+ return false;
}
}
diff --git a/lib/private/Server.php b/lib/private/Server.php
index 3300920edb7..9c3c6391c34 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
* @copyright Copyright (c) 2016, Lukas Reschke <lukas@statuscode.ch>
*
+ * @author Arne Hamann <kontakt+github@arne.email>
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
@@ -62,6 +63,8 @@ use OC\App\AppStore\Fetcher\CategoryFetcher;
use OC\AppFramework\Http\Request;
use OC\AppFramework\Utility\SimpleContainer;
use OC\AppFramework\Utility\TimeFactory;
+use OC\Authentication\Events\LoginFailed;
+use OC\Authentication\Listeners\LoginFailedListener;
use OC\Authentication\LoginCredentials\Store;
use OC\Authentication\Token\IProvider;
use OC\Avatar\AvatarManager;
@@ -101,6 +104,7 @@ use OC\Lock\MemcacheLockingProvider;
use OC\Lock\NoopLockingProvider;
use OC\Lockdown\LockdownManager;
use OC\Log\LogFactory;
+use OC\Log\PsrLoggerAdapter;
use OC\Mail\Mailer;
use OC\Memcache\ArrayCache;
use OC\Memcache\Factory;
@@ -222,6 +226,7 @@ use OCP\User\Events\UserDeletedEvent;
use OCP\User\Events\UserLoggedInEvent;
use OCP\User\Events\UserLoggedInWithCookieEvent;
use OCP\User\Events\UserLoggedOutEvent;
+use Psr\Log\LoggerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\GenericEvent;
use OCA\Files_External\Service\UserStoragesService;
@@ -276,7 +281,7 @@ class Server extends ServerContainer implements IServerContainer {
return new PreviewManager(
$c->getConfig(),
$c->getRootFolder(),
- $c->getAppDataDir('preview'),
+ new \OC\Preview\Storage\Root($c->getRootFolder(), $c->getSystemConfig(), 'preview'),
$c->getEventDispatcher(),
$c->getGeneratorHelper(),
$c->getSession()->get('user_id')
@@ -286,7 +291,7 @@ class Server extends ServerContainer implements IServerContainer {
$this->registerService(\OC\Preview\Watcher::class, function (Server $c) {
return new \OC\Preview\Watcher(
- $c->getAppDataDir('preview')
+ new \OC\Preview\Storage\Root($c->getRootFolder(), $c->getSystemConfig(), 'preview')
);
});
@@ -391,44 +396,44 @@ class Server extends ServerContainer implements IServerContainer {
$this->registerService(\OCP\IGroupManager::class, function (Server $c) {
$groupManager = new \OC\Group\Manager($this->getUserManager(), $c->getEventDispatcher(), $this->getLogger());
$groupManager->listen('\OC\Group', 'preCreate', function ($gid) {
- \OC_Hook::emit('OC_Group', 'pre_createGroup', array('run' => true, 'gid' => $gid));
+ \OC_Hook::emit('OC_Group', 'pre_createGroup', ['run' => true, 'gid' => $gid]);
/** @var IEventDispatcher $dispatcher */
$dispatcher = $this->query(IEventDispatcher::class);
$dispatcher->dispatchTyped(new BeforeGroupCreatedEvent($gid));
});
$groupManager->listen('\OC\Group', 'postCreate', function (\OC\Group\Group $group) {
- \OC_Hook::emit('OC_User', 'post_createGroup', array('gid' => $group->getGID()));
+ \OC_Hook::emit('OC_User', 'post_createGroup', ['gid' => $group->getGID()]);
/** @var IEventDispatcher $dispatcher */
$dispatcher = $this->query(IEventDispatcher::class);
$dispatcher->dispatchTyped(new GroupCreatedEvent($group));
});
$groupManager->listen('\OC\Group', 'preDelete', function (\OC\Group\Group $group) {
- \OC_Hook::emit('OC_Group', 'pre_deleteGroup', array('run' => true, 'gid' => $group->getGID()));
+ \OC_Hook::emit('OC_Group', 'pre_deleteGroup', ['run' => true, 'gid' => $group->getGID()]);
/** @var IEventDispatcher $dispatcher */
$dispatcher = $this->query(IEventDispatcher::class);
$dispatcher->dispatchTyped(new BeforeGroupDeletedEvent($group));
});
$groupManager->listen('\OC\Group', 'postDelete', function (\OC\Group\Group $group) {
- \OC_Hook::emit('OC_User', 'post_deleteGroup', array('gid' => $group->getGID()));
+ \OC_Hook::emit('OC_User', 'post_deleteGroup', ['gid' => $group->getGID()]);
/** @var IEventDispatcher $dispatcher */
$dispatcher = $this->query(IEventDispatcher::class);
$dispatcher->dispatchTyped(new GroupDeletedEvent($group));
});
$groupManager->listen('\OC\Group', 'preAddUser', function (\OC\Group\Group $group, \OC\User\User $user) {
- \OC_Hook::emit('OC_Group', 'pre_addToGroup', array('run' => true, 'uid' => $user->getUID(), 'gid' => $group->getGID()));
+ \OC_Hook::emit('OC_Group', 'pre_addToGroup', ['run' => true, 'uid' => $user->getUID(), 'gid' => $group->getGID()]);
/** @var IEventDispatcher $dispatcher */
$dispatcher = $this->query(IEventDispatcher::class);
$dispatcher->dispatchTyped(new BeforeUserAddedEvent($group, $user));
});
$groupManager->listen('\OC\Group', 'postAddUser', function (\OC\Group\Group $group, \OC\User\User $user) {
- \OC_Hook::emit('OC_Group', 'post_addToGroup', array('uid' => $user->getUID(), 'gid' => $group->getGID()));
+ \OC_Hook::emit('OC_Group', 'post_addToGroup', ['uid' => $user->getUID(), 'gid' => $group->getGID()]);
//Minimal fix to keep it backward compatible TODO: clean up all the GroupManager hooks
- \OC_Hook::emit('OC_User', 'post_addToGroup', array('uid' => $user->getUID(), 'gid' => $group->getGID()));
+ \OC_Hook::emit('OC_User', 'post_addToGroup', ['uid' => $user->getUID(), 'gid' => $group->getGID()]);
/** @var IEventDispatcher $dispatcher */
$dispatcher = $this->query(IEventDispatcher::class);
@@ -491,7 +496,7 @@ class Server extends ServerContainer implements IServerContainer {
$c->query(IEventDispatcher::class)
);
$userSession->listen('\OC\User', 'preCreateUser', function ($uid, $password) {
- \OC_Hook::emit('OC_User', 'pre_createUser', array('run' => true, 'uid' => $uid, 'password' => $password));
+ \OC_Hook::emit('OC_User', 'pre_createUser', ['run' => true, 'uid' => $uid, 'password' => $password]);
/** @var IEventDispatcher $dispatcher */
$dispatcher = $this->query(IEventDispatcher::class);
@@ -499,7 +504,7 @@ class Server extends ServerContainer implements IServerContainer {
});
$userSession->listen('\OC\User', 'postCreateUser', function ($user, $password) {
/** @var $user \OC\User\User */
- \OC_Hook::emit('OC_User', 'post_createUser', array('uid' => $user->getUID(), 'password' => $password));
+ \OC_Hook::emit('OC_User', 'post_createUser', ['uid' => $user->getUID(), 'password' => $password]);
/** @var IEventDispatcher $dispatcher */
$dispatcher = $this->query(IEventDispatcher::class);
@@ -507,7 +512,7 @@ class Server extends ServerContainer implements IServerContainer {
});
$userSession->listen('\OC\User', 'preDelete', function ($user) use ($legacyDispatcher) {
/** @var $user \OC\User\User */
- \OC_Hook::emit('OC_User', 'pre_deleteUser', array('run' => true, 'uid' => $user->getUID()));
+ \OC_Hook::emit('OC_User', 'pre_deleteUser', ['run' => true, 'uid' => $user->getUID()]);
$legacyDispatcher->dispatch('OCP\IUser::preDelete', new GenericEvent($user));
/** @var IEventDispatcher $dispatcher */
@@ -516,7 +521,7 @@ class Server extends ServerContainer implements IServerContainer {
});
$userSession->listen('\OC\User', 'postDelete', function ($user) {
/** @var $user \OC\User\User */
- \OC_Hook::emit('OC_User', 'post_deleteUser', array('uid' => $user->getUID()));
+ \OC_Hook::emit('OC_User', 'post_deleteUser', ['uid' => $user->getUID()]);
/** @var IEventDispatcher $dispatcher */
$dispatcher = $this->query(IEventDispatcher::class);
@@ -524,7 +529,7 @@ class Server extends ServerContainer implements IServerContainer {
});
$userSession->listen('\OC\User', 'preSetPassword', function ($user, $password, $recoveryPassword) {
/** @var $user \OC\User\User */
- \OC_Hook::emit('OC_User', 'pre_setPassword', array('run' => true, 'uid' => $user->getUID(), 'password' => $password, 'recoveryPassword' => $recoveryPassword));
+ \OC_Hook::emit('OC_User', 'pre_setPassword', ['run' => true, 'uid' => $user->getUID(), 'password' => $password, 'recoveryPassword' => $recoveryPassword]);
/** @var IEventDispatcher $dispatcher */
$dispatcher = $this->query(IEventDispatcher::class);
@@ -532,14 +537,14 @@ class Server extends ServerContainer implements IServerContainer {
});
$userSession->listen('\OC\User', 'postSetPassword', function ($user, $password, $recoveryPassword) {
/** @var $user \OC\User\User */
- \OC_Hook::emit('OC_User', 'post_setPassword', array('run' => true, 'uid' => $user->getUID(), 'password' => $password, 'recoveryPassword' => $recoveryPassword));
+ \OC_Hook::emit('OC_User', 'post_setPassword', ['run' => true, 'uid' => $user->getUID(), 'password' => $password, 'recoveryPassword' => $recoveryPassword]);
/** @var IEventDispatcher $dispatcher */
$dispatcher = $this->query(IEventDispatcher::class);
$dispatcher->dispatchTyped(new PasswordUpdatedEvent($user, $password, $recoveryPassword));
});
$userSession->listen('\OC\User', 'preLogin', function ($uid, $password) {
- \OC_Hook::emit('OC_User', 'pre_login', array('run' => true, 'uid' => $uid, 'password' => $password));
+ \OC_Hook::emit('OC_User', 'pre_login', ['run' => true, 'uid' => $uid, 'password' => $password]);
/** @var IEventDispatcher $dispatcher */
$dispatcher = $this->query(IEventDispatcher::class);
@@ -547,7 +552,7 @@ class Server extends ServerContainer implements IServerContainer {
});
$userSession->listen('\OC\User', 'postLogin', function ($user, $password, $isTokenLogin) {
/** @var $user \OC\User\User */
- \OC_Hook::emit('OC_User', 'post_login', array('run' => true, 'uid' => $user->getUID(), 'password' => $password, 'isTokenLogin' => $isTokenLogin));
+ \OC_Hook::emit('OC_User', 'post_login', ['run' => true, 'uid' => $user->getUID(), 'password' => $password, 'isTokenLogin' => $isTokenLogin]);
/** @var IEventDispatcher $dispatcher */
$dispatcher = $this->query(IEventDispatcher::class);
@@ -560,14 +565,14 @@ class Server extends ServerContainer implements IServerContainer {
});
$userSession->listen('\OC\User', 'postRememberedLogin', function ($user, $password) {
/** @var $user \OC\User\User */
- \OC_Hook::emit('OC_User', 'post_login', array('run' => true, 'uid' => $user->getUID(), 'password' => $password));
+ \OC_Hook::emit('OC_User', 'post_login', ['run' => true, 'uid' => $user->getUID(), 'password' => $password]);
/** @var IEventDispatcher $dispatcher */
$dispatcher = $this->query(IEventDispatcher::class);
$dispatcher->dispatchTyped(new UserLoggedInWithCookieEvent($user, $password));
});
$userSession->listen('\OC\User', 'logout', function ($user) {
- \OC_Hook::emit('OC_User', 'logout', array());
+ \OC_Hook::emit('OC_User', 'logout', []);
/** @var IEventDispatcher $dispatcher */
$dispatcher = $this->query(IEventDispatcher::class);
@@ -580,7 +585,7 @@ class Server extends ServerContainer implements IServerContainer {
});
$userSession->listen('\OC\User', 'changeUser', function ($user, $feature, $value, $oldValue) {
/** @var $user \OC\User\User */
- \OC_Hook::emit('OC_User', 'changeUser', array('run' => true, 'user' => $user, 'feature' => $feature, 'value' => $value, 'old_value' => $oldValue));
+ \OC_Hook::emit('OC_User', 'changeUser', ['run' => true, 'user' => $user, 'feature' => $feature, 'value' => $value, 'old_value' => $oldValue]);
/** @var IEventDispatcher $dispatcher */
$dispatcher = $this->query(IEventDispatcher::class);
@@ -646,7 +651,6 @@ class Server extends ServerContainer implements IServerContainer {
$this->registerDeprecatedAlias('UserCache', ICache::class);
$this->registerService(Factory::class, function (Server $c) {
-
$arrayCacheFactory = new \OC\Memcache\Factory('', $c->getLogger(),
ArrayCache::class,
ArrayCache::class,
@@ -668,7 +672,6 @@ class Server extends ServerContainer implements IServerContainer {
);
}
return $arrayCacheFactory;
-
});
$this->registerDeprecatedAlias('MemCacheFactory', Factory::class);
$this->registerAlias(ICacheFactory::class, Factory::class);
@@ -695,7 +698,7 @@ class Server extends ServerContainer implements IServerContainer {
});
$this->registerAlias(IValidator::class, Validator::class);
- $this->registerService(AvatarManager::class, function(Server $c) {
+ $this->registerService(AvatarManager::class, function (Server $c) {
return new AvatarManager(
$c->query(\OC\User\Manager::class),
$c->getAppDataDir('avatar'),
@@ -720,6 +723,8 @@ class Server extends ServerContainer implements IServerContainer {
});
$this->registerAlias(ILogger::class, \OC\Log::class);
$this->registerDeprecatedAlias('Logger', \OC\Log::class);
+ // PSR-3 logger
+ $this->registerAlias(LoggerInterface::class, PsrLoggerAdapter::class);
$this->registerService(ILogFactory::class, function (Server $c) {
return new LogFactory($c, $this->getSystemConfig());
@@ -799,6 +804,7 @@ class Server extends ServerContainer implements IServerContainer {
$uid = $user ? $user : null;
return new ClientService(
$c->getConfig(),
+ $c->getLogger(),
new \OC\Security\CertificateManager(
$uid,
new View(),
@@ -988,7 +994,9 @@ class Server extends ServerContainer implements IServerContainer {
$c->getLogger(),
$c->query(Defaults::class),
$c->getURLGenerator(),
- $c->getL10N('lib')
+ $c->getL10N('lib'),
+ $c->query(IEventDispatcher::class),
+ $c->getL10NFactory()
);
});
$this->registerDeprecatedAlias('Mailer', IMailer::class);
@@ -1077,10 +1085,10 @@ class Server extends ServerContainer implements IServerContainer {
$factory = new $factoryClass($this);
$manager = $factory->getManager();
- $manager->registerDisplayNameResolver('user', function($id) use ($c) {
+ $manager->registerDisplayNameResolver('user', function ($id) use ($c) {
$manager = $c->getUserManager();
$user = $manager->get($id);
- if(is_null($user)) {
+ if (is_null($user)) {
$l = $c->getL10N('core');
$displayName = $l->t('Unknown user');
} else {
@@ -1223,7 +1231,7 @@ class Server extends ServerContainer implements IServerContainer {
});
$this->registerDeprecatedAlias('ShareManager', \OCP\Share\IManager::class);
- $this->registerService(\OCP\Collaboration\Collaborators\ISearch::class, function(Server $c) {
+ $this->registerService(\OCP\Collaboration\Collaborators\ISearch::class, function (Server $c) {
$instance = new Collaboration\Collaborators\Search($c);
// register default plugins
@@ -1273,9 +1281,7 @@ class Server extends ServerContainer implements IServerContainer {
return new CloudIdManager();
});
- $this->registerService(IConfig::class, function (Server $c) {
- return new GlobalScale\Config($c->getConfig());
- });
+ $this->registerAlias(\OCP\GlobalScale\IConfig::class, \OC\GlobalScale\Config::class);
$this->registerService(ICloudFederationProviderManager::class, function (Server $c) {
return new CloudFederationProviderManager($c->getAppManager(), $c->getHTTPClientService(), $c->getCloudIdManager(), $c->getLogger());
@@ -1308,7 +1314,7 @@ class Server extends ServerContainer implements IServerContainer {
);
});
- $this->registerService(Installer::class, function(Server $c) {
+ $this->registerService(Installer::class, function (Server $c) {
return new Installer(
$c->getAppFetcher(),
$c->getHTTPClientService(),
@@ -1319,16 +1325,16 @@ class Server extends ServerContainer implements IServerContainer {
);
});
- $this->registerService(IApiFactory::class, function(Server $c) {
+ $this->registerService(IApiFactory::class, function (Server $c) {
return new ApiFactory($c->getHTTPClientService());
});
- $this->registerService(IInstanceFactory::class, function(Server $c) {
+ $this->registerService(IInstanceFactory::class, function (Server $c) {
$memcacheFactory = $c->getMemCacheFactory();
return new InstanceFactory($memcacheFactory->createLocal('remoteinstance.'), $c->getHTTPClientService());
});
- $this->registerService(IContactsStore::class, function(Server $c) {
+ $this->registerService(IContactsStore::class, function (Server $c) {
return new ContactsStore(
$c->getContactsManager(),
$c->getConfig(),
@@ -1339,7 +1345,7 @@ class Server extends ServerContainer implements IServerContainer {
$this->registerAlias(IContactsStore::class, ContactsStore::class);
$this->registerAlias(IAccountManager::class, AccountManager::class);
- $this->registerService(IStorageFactory::class, function() {
+ $this->registerService(IStorageFactory::class, function () {
return new StorageFactory();
});
@@ -1378,7 +1384,7 @@ class Server extends ServerContainer implements IServerContainer {
$dispatcher = $this->getEventDispatcher();
// Delete avatar on user deletion
- $dispatcher->addListener('OCP\IUser::preDelete', function(GenericEvent $e) {
+ $dispatcher->addListener('OCP\IUser::preDelete', function (GenericEvent $e) {
$logger = $this->getLogger();
$manager = $this->getAvatarManager();
/** @var IUser $user */
@@ -1415,6 +1421,10 @@ class Server extends ServerContainer implements IServerContainer {
// no avatar to remove
}
});
+
+ /** @var IEventDispatcher $eventDispatched */
+ $eventDispatched = $this->query(IEventDispatcher::class);
+ $eventDispatched->addServiceListener(LoginFailed::class, LoginFailedListener::class);
}
/**
@@ -1961,14 +1971,14 @@ class Server extends ServerContainer implements IServerContainer {
/**
* @return IMountManager
**/
- function getMountManager() {
+ public function getMountManager() {
return $this->query(IMountManager::class);
}
/**
* @return IUserMountCache
*/
- function getUserMountCache() {
+ public function getUserMountCache() {
return $this->query(IUserMountCache::class);
}
@@ -2129,7 +2139,7 @@ class Server extends ServerContainer implements IServerContainer {
/**
* @return \OCP\Collaboration\AutoComplete\IManager
*/
- public function getAutoCompleteManager(){
+ public function getAutoCompleteManager() {
return $this->query(IManager::class);
}
diff --git a/lib/private/ServerContainer.php b/lib/private/ServerContainer.php
index 8f2f2a93503..effa57a3abf 100644
--- a/lib/private/ServerContainer.php
+++ b/lib/private/ServerContainer.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
namespace OC;
-
use OC\AppFramework\App;
use OC\AppFramework\DependencyInjection\DIContainer;
use OC\AppFramework\Utility\SimpleContainer;
@@ -136,7 +135,7 @@ class ServerContainer extends SimpleContainer {
// Didn't find the service or the respective app container,
// ignore it and fall back to the core container.
}
- } else if (strpos($name, 'OC\\Settings\\') === 0 && substr_count($name, '\\') >= 3) {
+ } elseif (strpos($name, 'OC\\Settings\\') === 0 && substr_count($name, '\\') >= 3) {
$segments = explode('\\', $name);
try {
$appContainer = $this->getAppContainer(strtolower($segments[1]), $segments[1]);
diff --git a/lib/private/ServerNotAvailableException.php b/lib/private/ServerNotAvailableException.php
index a78d470e2a6..d0618883107 100644
--- a/lib/private/ServerNotAvailableException.php
+++ b/lib/private/ServerNotAvailableException.php
@@ -22,7 +22,5 @@
namespace OC;
-
class ServerNotAvailableException extends \Exception {
-
}
diff --git a/lib/private/Session/CryptoSessionData.php b/lib/private/Session/CryptoSessionData.php
index a0178c7eea2..fc7693b71b2 100644
--- a/lib/private/Session/CryptoSessionData.php
+++ b/lib/private/Session/CryptoSessionData.php
@@ -50,7 +50,7 @@ class CryptoSessionData implements \ArrayAccess, ISession {
protected $sessionValues;
/** @var bool */
protected $isModified = false;
- CONST encryptedSessionName = 'encrypted_session_data';
+ public const encryptedSessionName = 'encrypted_session_data';
/**
* @param ISession $session
@@ -72,7 +72,7 @@ class CryptoSessionData implements \ArrayAccess, ISession {
public function __destruct() {
try {
$this->close();
- } catch (SessionNotAvailableException $e){
+ } catch (SessionNotAvailableException $e) {
// This exception can occur if session is already closed
// So it is safe to ignore it and let the garbage collector to proceed
}
@@ -108,7 +108,7 @@ class CryptoSessionData implements \ArrayAccess, ISession {
* @return string|null Either the value or null
*/
public function get(string $key) {
- if(isset($this->sessionValues[$key])) {
+ if (isset($this->sessionValues[$key])) {
return $this->sessionValues[$key];
}
@@ -175,7 +175,7 @@ class CryptoSessionData implements \ArrayAccess, ISession {
* Close the session and release the lock, also writes all changed data in batch
*/
public function close() {
- if($this->isModified) {
+ if ($this->isModified) {
$encryptedValue = $this->crypto->encrypt(json_encode($this->sessionValues), $this->passphrase);
$this->session->set(self::encryptedSessionName, $encryptedValue);
$this->isModified = false;
diff --git a/lib/private/Session/CryptoWrapper.php b/lib/private/Session/CryptoWrapper.php
index b9dbc90edd6..f7f26bb10d2 100644
--- a/lib/private/Session/CryptoWrapper.php
+++ b/lib/private/Session/CryptoWrapper.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Phil Davis <phil.davis@inf.org>
@@ -48,7 +49,7 @@ use OCP\Security\ISecureRandom;
* @package OC\Session
*/
class CryptoWrapper {
- const COOKIE_NAME = 'oc_sessionPassphrase';
+ public const COOKIE_NAME = 'oc_sessionPassphrase';
/** @var IConfig */
protected $config;
@@ -83,7 +84,7 @@ class CryptoWrapper {
// FIXME: Required for CI
if (!defined('PHPUNIT_RUN')) {
$webRoot = \OC::$WEBROOT;
- if($webRoot === '') {
+ if ($webRoot === '') {
$webRoot = '/';
}
diff --git a/lib/private/Session/Internal.php b/lib/private/Session/Internal.php
index b9aae76c3b0..ffe16537874 100644
--- a/lib/private/Session/Internal.php
+++ b/lib/private/Session/Internal.php
@@ -36,8 +36,6 @@ namespace OC\Session;
use OC\Authentication\Exceptions\InvalidTokenException;
use OC\Authentication\Token\IProvider;
-use OC\SystemConfig;
-use OCP\IConfig;
use OCP\Session\Exceptions\SessionNotAvailableException;
/**
@@ -205,12 +203,12 @@ class Internal extends Session {
*/
private function invoke(string $functionName, array $parameters = [], bool $silence = false) {
try {
- if($silence) {
+ if ($silence) {
return @call_user_func_array($functionName, $parameters);
} else {
return call_user_func_array($functionName, $parameters);
}
- } catch(\Error $e) {
+ } catch (\Error $e) {
$this->trapError($e->getCode(), $e->getMessage());
}
}
diff --git a/lib/private/Session/Memory.php b/lib/private/Session/Memory.php
index a7b1cd07ead..abbf026899b 100644
--- a/lib/private/Session/Memory.php
+++ b/lib/private/Session/Memory.php
@@ -94,7 +94,8 @@ class Memory extends Session {
*
* @param bool $deleteOldSession
*/
- public function regenerateId(bool $deleteOldSession = true, bool $updateToken = false) {}
+ public function regenerateId(bool $deleteOldSession = true, bool $updateToken = false) {
+ }
/**
* Wrapper around session_id
diff --git a/lib/private/Settings/Manager.php b/lib/private/Settings/Manager.php
index ed1d2f45cd7..ac4f8f9342c 100644
--- a/lib/private/Settings/Manager.php
+++ b/lib/private/Settings/Manager.php
@@ -5,7 +5,6 @@
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
- * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
* @author Julius Härtl <jus@bitgrid.net>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -33,7 +32,6 @@
namespace OC\Settings;
use Closure;
-use OC\Settings\Personal\PersonalInfo;
use OCP\AppFramework\QueryException;
use OCP\IL10N;
use OCP\ILogger;
@@ -232,7 +230,7 @@ class Manager implements IManager {
*/
public function getAdminSettings($section, bool $subAdminOnly = false): array {
if ($subAdminOnly) {
- $subAdminSettingsFilter = function(ISettings $settings) {
+ $subAdminSettingsFilter = function (ISettings $settings) {
return $settings instanceof ISubAdminSettings;
};
$appSettings = $this->getSettings('admin', $section, $subAdminSettingsFilter);
diff --git a/lib/private/Setup.php b/lib/private/Setup.php
index 26299aaa039..3fc8415e29a 100644
--- a/lib/private/Setup.php
+++ b/lib/private/Setup.php
@@ -25,6 +25,7 @@
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Sean Comeau <sean@ftlnetworks.ca>
* @author Serge Martin <edb@sigluy.net>
+ * @author Simounet <contact@simounet.net>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
*
@@ -59,7 +60,6 @@ use OCP\Defaults;
use OCP\IGroup;
use OCP\IL10N;
use OCP\ILogger;
-use OCP\IUser;
use OCP\Security\ISecureRandom;
class Setup {
@@ -105,7 +105,7 @@ class Setup {
$this->installer = $installer;
}
- static protected $dbSetupClasses = [
+ protected static $dbSetupClasses = [
'mysql' => \OC\Setup\MySQL::class,
'pgsql' => \OC\Setup\PostgreSQL::class,
'oci' => \OC\Setup\OCI::class,
@@ -182,7 +182,7 @@ class Setup {
throw new Exception('Supported databases are not properly configured.');
}
- $supportedDatabases = array();
+ $supportedDatabases = [];
foreach ($configuredDatabases as $database) {
if (array_key_exists($database, $availableDatabases)) {
@@ -263,7 +263,7 @@ class Setup {
];
}
- return array(
+ return [
'hasSQLite' => isset($databases['sqlite']),
'hasMySQL' => isset($databases['mysql']),
'hasPostgreSQL' => isset($databases['pgsql']),
@@ -272,7 +272,7 @@ class Setup {
'directory' => $dataDir,
'htaccessWorking' => $htAccessWorking,
'errors' => $errors,
- );
+ ];
}
/**
@@ -282,7 +282,7 @@ class Setup {
public function install($options) {
$l = $this->l10n;
- $error = array();
+ $error = [];
$dbType = $options['dbtype'];
if (empty($options['adminlogin'])) {
@@ -310,7 +310,7 @@ class Setup {
// validate the data directory
if ((!is_dir($dataDir) && !mkdir($dataDir)) || !is_writable($dataDir)) {
- $error[] = $l->t("Can't create or write into the data directory %s", array($dataDir));
+ $error[] = $l->t("Can't create or write into the data directory %s", [$dataDir]);
}
if (!empty($error)) {
diff --git a/lib/private/Setup/AbstractDatabase.php b/lib/private/Setup/AbstractDatabase.php
index d52aaa8882d..b2c290eb874 100644
--- a/lib/private/Setup/AbstractDatabase.php
+++ b/lib/private/Setup/AbstractDatabase.php
@@ -3,8 +3,8 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
- * @author Manish Bisht <manish.bisht490@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -67,16 +67,16 @@ abstract class AbstractDatabase {
}
public function validate($config) {
- $errors = array();
- if(empty($config['dbuser']) && empty($config['dbname'])) {
- $errors[] = $this->trans->t("%s enter the database username and name.", array($this->dbprettyname));
- } else if(empty($config['dbuser'])) {
- $errors[] = $this->trans->t("%s enter the database username.", array($this->dbprettyname));
- } else if(empty($config['dbname'])) {
- $errors[] = $this->trans->t("%s enter the database name.", array($this->dbprettyname));
+ $errors = [];
+ if (empty($config['dbuser']) && empty($config['dbname'])) {
+ $errors[] = $this->trans->t("%s enter the database username and name.", [$this->dbprettyname]);
+ } elseif (empty($config['dbuser'])) {
+ $errors[] = $this->trans->t("%s enter the database username.", [$this->dbprettyname]);
+ } elseif (empty($config['dbname'])) {
+ $errors[] = $this->trans->t("%s enter the database name.", [$this->dbprettyname]);
}
- if(substr_count($config['dbname'], '.') >= 1) {
- $errors[] = $this->trans->t("%s you may not use dots in the database name", array($this->dbprettyname));
+ if (substr_count($config['dbname'], '.') >= 1) {
+ $errors[] = $this->trans->t("%s you may not use dots in the database name", [$this->dbprettyname]);
}
return $errors;
}
@@ -109,13 +109,13 @@ abstract class AbstractDatabase {
* @return \OC\DB\Connection
*/
protected function connect(array $configOverwrite = []) {
- $connectionParams = array(
+ $connectionParams = [
'host' => $this->dbHost,
'user' => $this->dbUser,
'password' => $this->dbPassword,
'tablePrefix' => $this->tablePrefix,
'dbname' => $this->dbName
- );
+ ];
// adding port support through installer
if (!empty($this->dbPort)) {
@@ -124,7 +124,7 @@ abstract class AbstractDatabase {
} else {
$connectionParams['unix_socket'] = $this->dbPort;
}
- } else if (strpos($this->dbHost, ':')) {
+ } elseif (strpos($this->dbHost, ':')) {
// Host variable may carry a port or socket.
list($host, $portOrSocket) = explode(':', $this->dbHost, 2);
if (ctype_digit($portOrSocket)) {
diff --git a/lib/private/Setup/MySQL.php b/lib/private/Setup/MySQL.php
index 7371c7aeab2..6a5513eab43 100644
--- a/lib/private/Setup/MySQL.php
+++ b/lib/private/Setup/MySQL.php
@@ -4,6 +4,7 @@
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Hemanth Kumar Veeranki <hems.india1997@gmail.com>
* @author Joas Schilling <coding@schilljs.com>
* @author Michael Göhler <somebody.here@gmx.de>
@@ -74,7 +75,7 @@ class MySQL extends AbstractDatabase {
* @param \OC\DB\Connection $connection
*/
private function createDatabase($connection) {
- try{
+ try {
$name = $this->dbName;
$user = $this->dbUser;
//we can't use OC_DB functions here because we need to connect as the administrative user.
@@ -108,7 +109,7 @@ class MySQL extends AbstractDatabase {
* @throws \OC\DatabaseSetupException
*/
private function createDBUser($connection) {
- try{
+ try {
$name = $this->dbUser;
$password = $this->dbPassword;
// we need to create 2 accounts, one for global use and one for local user. if we don't specify the local one,
@@ -125,8 +126,7 @@ class MySQL extends AbstractDatabase {
$query = "CREATE USER '$name'@'%' IDENTIFIED BY '$password'";
$connection->executeUpdate($query);
}
- }
- catch (\Exception $ex){
+ } catch (\Exception $ex) {
$this->logger->logException($ex, [
'message' => 'Database user creation failed.',
'level' => ILogger::ERROR,
diff --git a/lib/private/Setup/OCI.php b/lib/private/Setup/OCI.php
index 75d75254a00..1d7fe27e8b8 100644
--- a/lib/private/Setup/OCI.php
+++ b/lib/private/Setup/OCI.php
@@ -4,9 +4,9 @@
*
* @author Andreas Fischer <bantu@owncloud.com>
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Manish Bisht <manish.bisht490@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -52,13 +52,13 @@ class OCI extends AbstractDatabase {
}
public function validate($config) {
- $errors = array();
+ $errors = [];
if (empty($config['dbuser']) && empty($config['dbname'])) {
- $errors[] = $this->trans->t("%s enter the database username and name.", array($this->dbprettyname));
- } else if (empty($config['dbuser'])) {
- $errors[] = $this->trans->t("%s enter the database username.", array($this->dbprettyname));
- } else if (empty($config['dbname'])) {
- $errors[] = $this->trans->t("%s enter the database name.", array($this->dbprettyname));
+ $errors[] = $this->trans->t("%s enter the database username and name.", [$this->dbprettyname]);
+ } elseif (empty($config['dbuser'])) {
+ $errors[] = $this->trans->t("%s enter the database username.", [$this->dbprettyname]);
+ } elseif (empty($config['dbname'])) {
+ $errors[] = $this->trans->t("%s enter the database name.", [$this->dbprettyname]);
}
return $errors;
}
@@ -101,7 +101,7 @@ class OCI extends AbstractDatabase {
} else {
$error = oci_error();
}
- foreach (array('message', 'code') as $key) {
+ foreach (['message', 'code'] as $key) {
if (isset($error[$key])) {
return $error[$key];
}
diff --git a/lib/private/Setup/Sqlite.php b/lib/private/Setup/Sqlite.php
index 0b97b4c0451..b7d985786a3 100644
--- a/lib/private/Setup/Sqlite.php
+++ b/lib/private/Setup/Sqlite.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Kesselberg <mail@danielkesselberg.de>
*
* @license AGPL-3.0
@@ -29,7 +30,7 @@ class Sqlite extends AbstractDatabase {
public $dbprettyname = 'Sqlite';
public function validate($config) {
- return array();
+ return [];
}
public function initialize($config) {
diff --git a/lib/private/Share/Constants.php b/lib/private/Share/Constants.php
index 4ad9c71b511..2310859c5be 100644
--- a/lib/private/Share/Constants.php
+++ b/lib/private/Share/Constants.php
@@ -2,13 +2,11 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
- * @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Björn Schießle <bjoern@schiessle.org>
* @author Christopher Schäpers <kondou@ts.unde.re>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Calviño Sánchez <danxuliu@gmail.com>
* @author Joas Schilling <coding@schilljs.com>
- * @author Lukas Reschke <lukas@statuscode.ch>
- * @author Maxence Lange <maxence@nextcloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @license AGPL-3.0
@@ -36,54 +34,54 @@ class Constants {
/**
* @deprecated 17.0.0 - use IShare::TYPE_USER instead
*/
- const SHARE_TYPE_USER = 0;
+ public const SHARE_TYPE_USER = 0;
/**
* @deprecated 17.0.0 - use IShare::TYPE_GROUP instead
*/
- const SHARE_TYPE_GROUP = 1;
+ public const SHARE_TYPE_GROUP = 1;
// const SHARE_TYPE_USERGROUP = 2; // Internal type used by DefaultShareProvider
/**
* @deprecated 17.0.0 - use IShare::TYPE_LINK instead
*/
- const SHARE_TYPE_LINK = 3;
+ public const SHARE_TYPE_LINK = 3;
/**
* @deprecated 17.0.0 - use IShare::TYPE_EMAIL instead
*/
- const SHARE_TYPE_EMAIL = 4;
- const SHARE_TYPE_CONTACT = 5; // ToDo Check if it is still in use otherwise remove it
+ public const SHARE_TYPE_EMAIL = 4;
+ public const SHARE_TYPE_CONTACT = 5; // ToDo Check if it is still in use otherwise remove it
/**
* @deprecated 17.0.0 - use IShare::TYPE_REMOTE instead
*/
- const SHARE_TYPE_REMOTE = 6;
+ public const SHARE_TYPE_REMOTE = 6;
/**
* @deprecated 17.0.0 - use IShare::TYPE_CIRCLE instead
*/
- const SHARE_TYPE_CIRCLE = 7;
+ public const SHARE_TYPE_CIRCLE = 7;
/**
* @deprecated 17.0.0 - use IShare::TYPE_GUEST instead
*/
- const SHARE_TYPE_GUEST = 8;
+ public const SHARE_TYPE_GUEST = 8;
/**
* @deprecated 17.0.0 - use IShare::REMOTE_GROUP instead
*/
- const SHARE_TYPE_REMOTE_GROUP = 9;
+ public const SHARE_TYPE_REMOTE_GROUP = 9;
/**
* @deprecated 17.0.0 - use IShare::TYPE_ROOM instead
*/
- const SHARE_TYPE_ROOM = 10;
+ public const SHARE_TYPE_ROOM = 10;
// const SHARE_TYPE_USERROOM = 11; // Internal type used by RoomShareProvider
- const FORMAT_NONE = -1;
- const FORMAT_STATUSES = -2;
- const FORMAT_SOURCES = -3; // ToDo Check if it is still in use otherwise remove it
+ public const FORMAT_NONE = -1;
+ public const FORMAT_STATUSES = -2;
+ public const FORMAT_SOURCES = -3; // ToDo Check if it is still in use otherwise remove it
- const RESPONSE_FORMAT = 'json'; // default resonse format for ocs calls
+ public const RESPONSE_FORMAT = 'json'; // default resonse format for ocs calls
- const TOKEN_LENGTH = 15; // old (oc7) length is 32, keep token length in db at least that for compatibility
+ public const TOKEN_LENGTH = 15; // old (oc7) length is 32, keep token length in db at least that for compatibility
protected static $shareTypeUserAndGroups = -1;
protected static $shareTypeGroupUserUnique = 2;
- protected static $backends = array();
- protected static $backendTypes = array();
+ protected static $backends = [];
+ protected static $backendTypes = [];
protected static $isResharingAllowed;
}
diff --git a/lib/private/Share/Helper.php b/lib/private/Share/Helper.php
index 2dd91613cbd..ec5136040e8 100644
--- a/lib/private/Share/Helper.php
+++ b/lib/private/Share/Helper.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Miguel Prokop <miguel.prokop@vtu.com>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -82,15 +83,15 @@ class Helper extends \OC\Share\Constants {
* @param bool $excludeGroupChildren exclude group children elements
*/
public static function delete($parent, $excludeParent = false, $uidOwner = null, $newParent = null, $excludeGroupChildren = false) {
- $ids = array($parent);
- $deletedItems = array();
- $changeParent = array();
- $parents = array($parent);
+ $ids = [$parent];
+ $deletedItems = [];
+ $changeParent = [];
+ $parents = [$parent];
while (!empty($parents)) {
$parents = "'".implode("','", $parents)."'";
// Check the owner on the first search of reshares, useful for
// finding and deleting the reshares by a single user of a group share
- $params = array();
+ $params = [];
if (count($ids) == 1 && isset($uidOwner)) {
// FIXME: don't concat $parents, use Docrine's PARAM_INT_ARRAY approach
$queryString = 'SELECT `id`, `share_with`, `item_type`, `share_type`, ' .
@@ -110,15 +111,15 @@ class Helper extends \OC\Share\Constants {
$query = \OC_DB::prepare($queryString);
$result = $query->execute($params);
// Reset parents array, only go through loop again if items are found
- $parents = array();
+ $parents = [];
while ($item = $result->fetchRow()) {
- $tmpItem = array(
+ $tmpItem = [
'id' => $item['id'],
'shareWith' => $item['share_with'],
'itemTarget' => $item['item_target'],
'itemType' => $item['item_type'],
'shareType' => (int)$item['share_type'],
- );
+ ];
if (isset($item['file_target'])) {
$tmpItem['fileTarget'] = $item['file_target'];
}
@@ -141,7 +142,7 @@ class Helper extends \OC\Share\Constants {
if (!empty($changeParent)) {
$idList = "'".implode("','", $changeParent)."'";
$query = \OC_DB::prepare('UPDATE `*PREFIX*share` SET `parent` = ? WHERE `id` IN ('.$idList.')');
- $query->execute(array($newParent));
+ $query->execute([$newParent]);
}
if (!empty($ids)) {
@@ -158,10 +159,9 @@ class Helper extends \OC\Share\Constants {
* @return array contains 'defaultExpireDateSet', 'enforceExpireDate', 'expireAfterDays'
*/
public static function getDefaultExpireSetting() {
-
$config = \OC::$server->getConfig();
- $defaultExpireSettings = array('defaultExpireDateSet' => false);
+ $defaultExpireSettings = ['defaultExpireDateSet' => false];
// get default expire settings
$defaultExpireDate = $config->getAppValue('core', 'shareapi_default_expire_date', 'no');
@@ -184,7 +184,6 @@ class Helper extends \OC\Share\Constants {
//$dateString = $date->format('Y-m-d') . ' 00:00:00';
return $date;
-
}
/**
@@ -195,7 +194,6 @@ class Helper extends \OC\Share\Constants {
* @return mixed integer timestamp or False
*/
public static function calculateExpireDate($defaultExpireSettings, $creationTime, $userExpireDate = null) {
-
$expires = false;
$defaultExpires = null;
@@ -212,7 +210,7 @@ class Helper extends \OC\Share\Constants {
} else {
$expires = $userExpireDate;
}
- } else if ($defaultExpires && !empty($defaultExpireSettings['enforceExpireDate'])) {
+ } elseif ($defaultExpires && !empty($defaultExpireSettings['enforceExpireDate'])) {
$expires = $defaultExpires;
}
@@ -277,12 +275,12 @@ class Helper extends \OC\Share\Constants {
\OCP\Util::emitHook(
'\OCA\Files_Sharing\API\Server2Server',
'preLoginNameUsedAsUserName',
- array('uid' => &$user1)
+ ['uid' => &$user1]
);
\OCP\Util::emitHook(
'\OCA\Files_Sharing\API\Server2Server',
'preLoginNameUsedAsUserName',
- array('uid' => &$user2)
+ ['uid' => &$user2]
);
if ($user1 === $user2) {
diff --git a/lib/private/Share/SearchResultSorter.php b/lib/private/Share/SearchResultSorter.php
index 452b7a4849c..2151eb2acb6 100644
--- a/lib/private/Share/SearchResultSorter.php
+++ b/lib/private/Share/SearchResultSorter.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -53,10 +54,10 @@ class SearchResultSorter {
* Callback function for usort. http://php.net/usort
*/
public function sort($a, $b) {
- if(!isset($a[$this->key]) || !isset($b[$this->key])) {
- if(!is_null($this->log)) {
+ if (!isset($a[$this->key]) || !isset($b[$this->key])) {
+ if (!is_null($this->log)) {
$this->log->error('Sharing dialogue: cannot sort due to ' .
- 'missing array key', array('app' => 'core'));
+ 'missing array key', ['app' => 'core']);
}
return 0;
}
@@ -65,7 +66,7 @@ class SearchResultSorter {
$i = mb_strpos($nameA, $this->search, 0, $this->encoding);
$j = mb_strpos($nameB, $this->search, 0, $this->encoding);
- if($i === $j || $i > 0 && $j > 0) {
+ if ($i === $j || $i > 0 && $j > 0) {
return strcmp(mb_strtolower($nameA, $this->encoding),
mb_strtolower($nameB, $this->encoding));
} elseif ($i === 0) {
diff --git a/lib/private/Share/Share.php b/lib/private/Share/Share.php
index ed876022bdd..8ea97cd69a7 100644
--- a/lib/private/Share/Share.php
+++ b/lib/private/Share/Share.php
@@ -7,6 +7,7 @@
* @author Bernhard Reiter <ockham@raz.or.at>
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -37,9 +38,7 @@
namespace OC\Share;
use OCP\DB\QueryBuilder\IQueryBuilder;
-use OCP\IConfig;
use OCP\ILogger;
-use OCP\Util;
/**
* This class provides the ability for apps to share their content between users.
@@ -76,11 +75,11 @@ class Share extends Constants {
public static function registerBackend($itemType, $class, $collectionOf = null, $supportedFileExtensions = null) {
if (\OC::$server->getConfig()->getAppValue('core', 'shareapi_enabled', 'yes') == 'yes') {
if (!isset(self::$backendTypes[$itemType])) {
- self::$backendTypes[$itemType] = array(
+ self::$backendTypes[$itemType] = [
'class' => $class,
'collectionOf' => $collectionOf,
'supportedFileExtensions' => $supportedFileExtensions
- );
+ ];
return true;
}
\OCP\Util::writeLog('OCP\Share',
@@ -134,7 +133,7 @@ class Share extends Constants {
* @return array Return list of items with file_target, permissions and expiration
*/
public static function getItemSharedWithUser($itemType, $itemSource, $user, $owner = null, $shareType = null) {
- $shares = array();
+ $shares = [];
$fileDependent = false;
$where = 'WHERE';
@@ -151,7 +150,7 @@ class Share extends Constants {
$select = self::createSelectStatement(self::FORMAT_NONE, $fileDependent);
$where .= ' `' . $column . '` = ? AND `item_type` = ? ';
- $arguments = array($itemSource, $itemType);
+ $arguments = [$itemSource, $itemType];
// for link shares $user === null
if ($user !== null) {
$where .= ' AND `share_with` = ? ';
@@ -196,7 +195,7 @@ class Share extends Constants {
}
//if didn't found a result than let's look for a group share.
- if(empty($shares) && $user !== null) {
+ if (empty($shares) && $user !== null) {
$userObject = \OC::$server->getUserManager()->get($user);
$groups = [];
if ($userObject) {
@@ -205,8 +204,8 @@ class Share extends Constants {
if (!empty($groups)) {
$where = $fileDependentWhere . ' WHERE `' . $column . '` = ? AND `item_type` = ? AND `share_with` in (?)';
- $arguments = array($itemSource, $itemType, $groups);
- $types = array(null, null, IQueryBuilder::PARAM_STR_ARRAY);
+ $arguments = [$itemSource, $itemType, $groups];
+ $types = [null, null, IQueryBuilder::PARAM_STR_ARRAY];
if ($owner !== null) {
$where .= ' AND `uid_owner` = ?';
@@ -230,7 +229,6 @@ class Share extends Constants {
}
return $shares;
-
}
/**
@@ -347,17 +345,17 @@ class Share extends Constants {
$items = self::getItemSharedWithUser($itemType, $itemSource, $shareWith, $owner, $shareType);
- $toDelete = array();
+ $toDelete = [];
$newParent = null;
$currentUser = $owner ? $owner : \OC_User::getUser();
foreach ($items as $item) {
// delete the item with the expected share_type and owner
if ((int)$item['share_type'] === (int)$shareType && $item['uid_owner'] === $currentUser) {
$toDelete = $item;
- // if there is more then one result we don't have to delete the children
+ // if there is more then one result we don't have to delete the children
// but update their parent. For group shares the new parent should always be
// the original group share and not the db entry with the unique name
- } else if ((int)$item['share_type'] === self::$shareTypeGroupUserUnique) {
+ } elseif ((int)$item['share_type'] === self::$shareTypeGroupUserUnique) {
$newParent = $item['parent'];
} else {
$newParent = $item['id'];
@@ -377,7 +375,6 @@ class Share extends Constants {
* @return boolean True if item was expired, false otherwise.
*/
protected static function expireItem(array $item) {
-
$result = false;
// only use default expiration date for link shares
@@ -415,7 +412,6 @@ class Share extends Constants {
* @return null
*/
protected static function unshareItem(array $item, $newParent = null) {
-
$shareType = (int)$item['share_type'];
$shareWith = null;
if ($shareType !== \OCP\Share::SHARE_TYPE_LINK) {
@@ -423,7 +419,7 @@ class Share extends Constants {
}
// Pass all the vars we have for now, they may be useful
- $hookParams = array(
+ $hookParams = [
'id' => $item['id'],
'itemType' => $item['item_type'],
'itemSource' => $item['item_source'],
@@ -431,8 +427,8 @@ class Share extends Constants {
'shareWith' => $shareWith,
'itemParent' => $item['parent'],
'uidOwner' => $item['uid_owner'],
- );
- if($item['item_type'] === 'file' || $item['item_type'] === 'folder') {
+ ];
+ if ($item['item_type'] === 'file' || $item['item_type'] === 'folder') {
$hookParams['fileSource'] = $item['file_source'];
$hookParams['fileTarget'] = $item['file_target'];
}
@@ -458,26 +454,26 @@ class Share extends Constants {
$l = \OC::$server->getL10N('lib');
if (isset(self::$backends[$itemType])) {
return self::$backends[$itemType];
- } else if (isset(self::$backendTypes[$itemType]['class'])) {
+ } elseif (isset(self::$backendTypes[$itemType]['class'])) {
$class = self::$backendTypes[$itemType]['class'];
if (class_exists($class)) {
self::$backends[$itemType] = new $class;
if (!(self::$backends[$itemType] instanceof \OCP\Share_Backend)) {
$message = 'Sharing backend %s must implement the interface OCP\Share_Backend';
- $message_t = $l->t('Sharing backend %s must implement the interface OCP\Share_Backend', array($class));
+ $message_t = $l->t('Sharing backend %s must implement the interface OCP\Share_Backend', [$class]);
\OCP\Util::writeLog('OCP\Share', sprintf($message, $class), ILogger::ERROR);
throw new \Exception($message_t);
}
return self::$backends[$itemType];
} else {
$message = 'Sharing backend %s not found';
- $message_t = $l->t('Sharing backend %s not found', array($class));
+ $message_t = $l->t('Sharing backend %s not found', [$class]);
\OCP\Util::writeLog('OCP\Share', sprintf($message, $class), ILogger::ERROR);
throw new \Exception($message_t);
}
}
$message = 'Sharing backend for %s not found';
- $message_t = $l->t('Sharing backend for %s not found', array($itemType));
+ $message_t = $l->t('Sharing backend for %s not found', [$itemType]);
\OCP\Util::writeLog('OCP\Share', sprintf($message, $itemType), ILogger::ERROR);
throw new \Exception($message_t);
}
@@ -505,7 +501,7 @@ class Share extends Constants {
* @return array
*/
private static function getCollectionItemTypes($itemType) {
- $collectionTypes = array($itemType);
+ $collectionTypes = [$itemType];
foreach (self::$backendTypes as $type => $backend) {
if (in_array($backend['collectionOf'], $collectionTypes)) {
$collectionTypes[] = $type;
@@ -538,7 +534,7 @@ class Share extends Constants {
public static function getSharedItemsOwners($user, $type, $includeCollections = false, $includeOwner = false) {
// First, we find out if $type is part of a collection (and if that collection is part of
// another one and so on).
- $collectionTypes = array();
+ $collectionTypes = [];
if (!$includeCollections || !$collectionTypes = self::getCollectionItemTypes($type)) {
$collectionTypes[] = $type;
}
@@ -547,7 +543,7 @@ class Share extends Constants {
// list of the ones for which a sharing backend has been registered.
// FIXME: Ideally, we wouldn't need to nest getItemsSharedWith in this loop but just call it
// with its $includeCollections parameter set to true. Unfortunately, this fails currently.
- $allMaybeSharedItems = array();
+ $allMaybeSharedItems = [];
foreach ($collectionTypes as $collectionType) {
if (isset(self::$backends[$collectionType])) {
$allMaybeSharedItems[$collectionType] = self::getItemsSharedWithUser(
@@ -558,7 +554,7 @@ class Share extends Constants {
}
}
- $owners = array();
+ $owners = [];
if ($includeOwner) {
$owners[] = $user;
}
@@ -599,14 +595,14 @@ class Share extends Constants {
$uidOwner = null, $format = self::FORMAT_NONE, $parameters = null, $limit = -1,
$includeCollections = false, $itemShareWithBySource = false, $checkExpireDate = true) {
if (\OC::$server->getConfig()->getAppValue('core', 'shareapi_enabled', 'yes') != 'yes') {
- return array();
+ return [];
}
$backend = self::getBackend($itemType);
$collectionTypes = false;
// Get filesystem root to add it to the file target and remove from the
// file source, match file_source with the file cache
if ($itemType == 'file' || $itemType == 'folder') {
- if(!is_null($uidOwner)) {
+ if (!is_null($uidOwner)) {
$root = \OC\Files\Filesystem::getRoot();
} else {
$root = '';
@@ -617,7 +613,7 @@ class Share extends Constants {
}
$where .= 'INNER JOIN `*PREFIX*storages` ON `numeric_id` = `*PREFIX*filecache`.`storage` ';
$fileDependent = true;
- $queryArgs = array();
+ $queryArgs = [];
} else {
$fileDependent = false;
$root = '';
@@ -625,7 +621,7 @@ class Share extends Constants {
if ($includeCollections && !isset($item) && $collectionTypes) {
// If includeCollections is true, find collections of this item type, e.g. a music album contains songs
if (!in_array($itemType, $collectionTypes)) {
- $itemTypes = array_merge(array($itemType), $collectionTypes);
+ $itemTypes = array_merge([$itemType], $collectionTypes);
} else {
$itemTypes = $collectionTypes;
}
@@ -634,7 +630,7 @@ class Share extends Constants {
$queryArgs = $itemTypes;
} else {
$where = ' WHERE `item_type` = ?';
- $queryArgs = array($itemType);
+ $queryArgs = [$itemType];
}
}
if (\OC::$server->getConfig()->getAppValue('core', 'shareapi_allow_links', 'yes') !== 'yes') {
@@ -754,10 +750,10 @@ class Share extends Constants {
\OC_DB::getErrorMessage() . ', select=' . $select . ' where=',
ILogger::ERROR);
}
- $items = array();
- $targets = array();
- $switchedItems = array();
- $mounts = array();
+ $items = [];
+ $targets = [];
+ $switchedItems = [];
+ $mounts = [];
while ($row = $result->fetchRow()) {
self::transformDBResults($row);
// Filter out duplicate group shares for users with unique targets
@@ -779,7 +775,7 @@ class Share extends Constants {
if ($row['permissions'] == 0) {
continue;
}
- } else if (!isset($uidOwner)) {
+ } elseif (!isset($uidOwner)) {
// Check if the same target already exists
if (isset($targets[$row['id']])) {
// Check if the same owner shared with the user twice
@@ -801,7 +797,6 @@ class Share extends Constants {
$id = $row['id'];
}
$items[$id]['permissions'] |= (int)$row['permissions'];
-
}
continue;
} elseif (!empty($row['parent'])) {
@@ -812,7 +807,7 @@ class Share extends Constants {
if (isset($uidOwner) && isset($row['path'])) {
if (isset($row['parent'])) {
$query = \OC_DB::prepare('SELECT `file_target` FROM `*PREFIX*share` WHERE `id` = ?');
- $parentResult = $query->execute(array($row['parent']));
+ $parentResult = $query->execute([$row['parent']]);
if ($result === false) {
\OCP\Util::writeLog('OCP\Share', 'Can\'t select parent: ' .
\OC_DB::getErrorMessage() . ', select=' . $select . ' where=' . $where,
@@ -844,7 +839,7 @@ class Share extends Constants {
}
}
- if($checkExpireDate) {
+ if ($checkExpireDate) {
if (self::expireItem($row)) {
continue;
}
@@ -855,11 +850,11 @@ class Share extends Constants {
}
// Add display names to result
$row['share_with_displayname'] = $row['share_with'];
- if ( isset($row['share_with']) && $row['share_with'] != '' &&
+ if (isset($row['share_with']) && $row['share_with'] != '' &&
$row['share_type'] === self::SHARE_TYPE_USER) {
$shareWithUser = \OC::$server->getUserManager()->get($row['share_with']);
$row['share_with_displayname'] = $shareWithUser === null ? $row['share_with'] : $shareWithUser->getDisplayName();
- } else if(isset($row['share_with']) && $row['share_with'] != '' &&
+ } elseif (isset($row['share_with']) && $row['share_with'] != '' &&
$row['share_type'] === self::SHARE_TYPE_REMOTE) {
$addressBookEntries = \OC::$server->getContactsManager()->search($row['share_with'], ['CLOUD']);
foreach ($addressBookEntries as $entry) {
@@ -870,7 +865,7 @@ class Share extends Constants {
}
}
}
- if ( isset($row['uid_owner']) && $row['uid_owner'] != '') {
+ if (isset($row['uid_owner']) && $row['uid_owner'] != '') {
$ownerUser = \OC::$server->getUserManager()->get($row['uid_owner']);
$row['displayname_owner'] = $ownerUser === null ? $row['uid_owner'] : $ownerUser->getDisplayName();
}
@@ -878,7 +873,6 @@ class Share extends Constants {
if ($row['permissions'] > 0) {
$items[$row['id']] = $row;
}
-
}
// group items if we are looking for items shared with the current user
@@ -887,7 +881,7 @@ class Share extends Constants {
}
if (!empty($items)) {
- $collectionItems = array();
+ $collectionItems = [];
foreach ($items as &$row) {
// Return only the item instead of a 2-dimensional array
if ($limit == 1 && $row[$column] == $item && ($row['item_type'] == $itemType || $itemType == 'file')) {
@@ -905,7 +899,7 @@ class Share extends Constants {
if (isset($item) && $row['item_type'] == $itemType && $row[$column] == $item) {
$collectionItems[] = $row;
} else {
- $collection = array();
+ $collection = [];
$collection['item_type'] = $row['item_type'];
if ($row['item_type'] == 'file' || $row['item_type'] == 'folder') {
$collection['path'] = basename($row['path']);
@@ -938,7 +932,7 @@ class Share extends Constants {
return $childItem;
} else {
// Unset the items array and break out of both loops
- $items = array();
+ $items = [];
$items[] = $childItem;
break 2;
}
@@ -976,7 +970,7 @@ class Share extends Constants {
// filter out invalid items, these can appear when subshare entries exist
// for a group in which the requested user isn't a member any more
- $items = array_filter($items, function($item) {
+ $items = array_filter($items, function ($item) {
return $item['share_type'] !== self::$shareTypeGroupUserUnique;
});
@@ -985,7 +979,7 @@ class Share extends Constants {
// FIXME: Thats a dirty hack to improve file sharing performance,
// see github issue #10588 for more details
// Need to find a solution which works for all back-ends
- $collectionItems = array();
+ $collectionItems = [];
$collectionBackend = self::getBackend('folder');
$sharedParents = $collectionBackend->getParents($item, $shareWith, $uidOwner);
foreach ($sharedParents as $parent) {
@@ -997,7 +991,7 @@ class Share extends Constants {
return self::formatResult($collectionItems, $column, $backend, $format, $parameters);
}
- return array();
+ return [];
}
/**
@@ -1008,10 +1002,9 @@ class Share extends Constants {
* @return array of grouped items
*/
protected static function groupItems($items, $itemType) {
-
$fileSharing = $itemType === 'file' || $itemType === 'folder';
- $result = array();
+ $result = [];
foreach ($items as $item) {
$grouped = false;
@@ -1019,7 +1012,7 @@ class Share extends Constants {
// for file/folder shares we need to compare file_source, otherwise we compare item_source
// only group shares if they already point to the same target, otherwise the file where shared
// before grouping of shares was added. In this case we don't group them toi avoid confusions
- if (( $fileSharing && $item['file_source'] === $r['file_source'] && $item['file_target'] === $r['file_target']) ||
+ if (($fileSharing && $item['file_source'] === $r['file_source'] && $item['file_target'] === $r['file_target']) ||
(!$fileSharing && $item['item_source'] === $r['item_source'] && $item['item_target'] === $r['item_target'])) {
// add the first item to the list of grouped shares
if (!isset($result[$key]['grouped'])) {
@@ -1035,7 +1028,6 @@ class Share extends Constants {
if (!$grouped) {
$result[] = $item;
}
-
}
return $result;
@@ -1057,14 +1049,13 @@ class Share extends Constants {
*/
private static function put($itemType, $itemSource, $shareType, $shareWith, $uidOwner,
$permissions) {
-
- $queriesToExecute = array();
+ $queriesToExecute = [];
$suggestedItemTarget = null;
$groupFileTarget = $fileTarget = $suggestedFileTarget = $filePath = '';
$groupItemTarget = $itemTarget = $fileSource = $parent = 0;
$result = self::checkReshare('test', $itemSource, self::SHARE_TYPE_USER, $shareWith, $uidOwner, $permissions, null, null);
- if(!empty($result)) {
+ if (!empty($result)) {
$parent = $result['parent'];
$itemSource = $result['itemSource'];
$fileSource = $result['fileSource'];
@@ -1074,13 +1065,13 @@ class Share extends Constants {
}
$isGroupShare = false;
- $users = array($shareWith);
- $itemTarget = Helper::generateTarget($itemType, $itemSource, $shareType, $shareWith, $uidOwner,
+ $users = [$shareWith];
+ $itemTarget = Helper::generateTarget($itemType, $itemSource, $shareType, $shareWith, $uidOwner,
$suggestedItemTarget);
$run = true;
$error = '';
- $preHookData = array(
+ $preHookData = [
'itemType' => $itemType,
'itemSource' => $itemSource,
'shareType' => $shareType,
@@ -1091,7 +1082,7 @@ class Share extends Constants {
'token' => null,
'run' => &$run,
'error' => &$error
- );
+ ];
$preHookData['itemTarget'] = $itemTarget;
$preHookData['shareWith'] = $shareWith;
@@ -1111,18 +1102,15 @@ class Share extends Constants {
if ($sourceExists && $sourceExists['item_source'] === $itemSource) {
$fileTarget = $sourceExists['file_target'];
$itemTarget = $sourceExists['item_target'];
-
- } elseif(!$sourceExists) {
-
+ } elseif (!$sourceExists) {
$itemTarget = Helper::generateTarget($itemType, $itemSource, $userShareType, $user,
$uidOwner, $suggestedItemTarget, $parent);
if (isset($fileSource)) {
- $fileTarget = Helper::generateTarget('file', $filePath, $userShareType,
+ $fileTarget = Helper::generateTarget('file', $filePath, $userShareType,
$user, $uidOwner, $suggestedFileTarget, $parent);
} else {
$fileTarget = null;
}
-
} else {
// group share which doesn't exists until now, check if we need a unique target for this user
@@ -1144,7 +1132,7 @@ class Share extends Constants {
}
}
- $queriesToExecute[] = array(
+ $queriesToExecute[] = [
'itemType' => $itemType,
'itemSource' => $itemSource,
'itemTarget' => $itemTarget,
@@ -1158,8 +1146,7 @@ class Share extends Constants {
'token' => null,
'parent' => $parent,
'expiration' => null,
- );
-
+ ];
}
$id = false;
@@ -1169,7 +1156,7 @@ class Share extends Constants {
$id = self::insertShare($shareQuery);
}
- $postHookData = array(
+ $postHookData = [
'itemType' => $itemType,
'itemSource' => $itemSource,
'parent' => $parent,
@@ -1180,7 +1167,7 @@ class Share extends Constants {
'id' => $parent,
'token' => null,
'expirationDate' => null,
- );
+ ];
$postHookData['shareWith'] = $isGroupShare ? $shareWith['group'] : $shareWith;
$postHookData['itemTarget'] = $isGroupShare ? $groupItemTarget : $itemTarget;
@@ -1208,7 +1195,7 @@ class Share extends Constants {
private static function checkReshare($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $permissions, $itemSourceName, $expirationDate) {
$backend = self::getBackend($itemType);
- $result = array();
+ $result = [];
$column = ($itemType === 'file' || $itemType === 'folder') ? 'file_source' : 'item_source';
@@ -1233,7 +1220,7 @@ class Share extends Constants {
$result['expirationDate'] = $expirationDate;
// $checkReshare['expiration'] could be null and then is always less than any value
- if(isset($checkReshare['expiration']) && $checkReshare['expiration'] < $expirationDate) {
+ if (isset($checkReshare['expiration']) && $checkReshare['expiration'] < $expirationDate) {
$result['expirationDate'] = $checkReshare['expiration'];
}
@@ -1270,8 +1257,8 @@ class Share extends Constants {
}
if ($backend instanceof \OCP\Share_Backend_File_Dependent) {
$result['filePath'] = $backend->getFilePath($itemSource, $uidOwner);
- $meta = \OC\Files\Filesystem::getFileInfo($result['filePath']);
- $result['fileSource'] = $meta['fileid'];
+ $meta = \OC\Files\Filesystem::getFileInfo($result['filePath']);
+ $result['fileSource'] = $meta['fileid'];
if ($result['fileSource'] == -1) {
$message = 'Sharing %s failed, because the file could not be found in the file cache';
throw new \Exception(sprintf($message, $itemSource));
@@ -1291,7 +1278,6 @@ class Share extends Constants {
* @return mixed false in case of a failure or the id of the new share
*/
private static function insertShare(array $shareData) {
-
$query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` ('
.' `item_type`, `item_source`, `item_target`, `share_type`,'
.' `share_with`, `uid_owner`, `permissions`, `stime`, `file_source`,'
@@ -1317,7 +1303,6 @@ class Share extends Constants {
}
return $id;
-
}
/**
@@ -1360,7 +1345,7 @@ class Share extends Constants {
$select = '`*PREFIX*share`.`id`, `item_type`, `item_source`, `item_target`,'
. '`*PREFIX*share`.`parent`, `share_type`, `share_with`, `uid_owner`,'
. '`file_source`, `path`, `file_target`, `*PREFIX*share`.`permissions`,'
- . '`stime`, `expiration`, `token`, `storage`, `mail_send`,'
+ . '`stime`, `expiration`, `token`, `storage`, `mail_send`,'
. '`*PREFIX*storages`.`id` AS `storage_id`, `*PREFIX*filecache`.`parent` as `file_parent`';
}
}
@@ -1418,15 +1403,15 @@ class Share extends Constants {
private static function formatResult($items, $column, $backend, $format = self::FORMAT_NONE , $parameters = null) {
if ($format === self::FORMAT_NONE) {
return $items;
- } else if ($format === self::FORMAT_STATUSES) {
- $statuses = array();
+ } elseif ($format === self::FORMAT_STATUSES) {
+ $statuses = [];
foreach ($items as $item) {
if ($item['share_type'] === self::SHARE_TYPE_LINK) {
if ($item['uid_initiator'] !== \OC::$server->getUserSession()->getUser()->getUID()) {
continue;
}
$statuses[$item[$column]]['link'] = true;
- } else if (!isset($statuses[$item[$column]])) {
+ } elseif (!isset($statuses[$item[$column]])) {
$statuses[$item[$column]]['link'] = false;
}
if (!empty($item['file_target'])) {
@@ -1448,7 +1433,7 @@ class Share extends Constants {
public static function removeProtocolFromUrl($url) {
if (strpos($url, 'https://') === 0) {
return substr($url, strlen('https://'));
- } else if (strpos($url, 'http://') === 0) {
+ } elseif (strpos($url, 'http://') === 0) {
return substr($url, strlen('http://'));
}
@@ -1507,7 +1492,7 @@ class Share extends Constants {
*/
private static function sendRemoteUnshare($remote, $id, $token) {
$url = rtrim($remote, '/');
- $fields = array('token' => $token, 'format' => 'json');
+ $fields = ['token' => $token, 'format' => 'json'];
$url = self::removeProtocolFromUrl($url);
$result = self::tryHttpPostToShareEndpoint($url, '/'.$id.'/unshare', $fields);
$status = json_decode($result['result'], true);
diff --git a/lib/private/Share20/DefaultShareProvider.php b/lib/private/Share20/DefaultShareProvider.php
index e7f077f4022..98ca747a894 100644
--- a/lib/private/Share20/DefaultShareProvider.php
+++ b/lib/private/Share20/DefaultShareProvider.php
@@ -2,9 +2,9 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
- * @author Andrius <andrius.kulbis@ktu.lt>
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Calviño Sánchez <danxuliu@gmail.com>
* @author Jan-Philipp Litza <jplitza@users.noreply.github.com>
* @author Joas Schilling <coding@schilljs.com>
@@ -44,7 +44,6 @@ use OCP\Files\Folder;
use OCP\Files\IRootFolder;
use OCP\Files\Node;
use OCP\IDBConnection;
-use OCP\IGroup;
use OCP\IGroupManager;
use OCP\IL10N;
use OCP\IURLGenerator;
@@ -53,7 +52,6 @@ use OCP\IUserManager;
use OCP\Mail\IMailer;
use OCP\Share\Exceptions\ShareNotFound;
use OCP\Share\IShare;
-use OCP\Share\IShareHelper;
use OCP\Share\IShareProvider;
/**
@@ -64,7 +62,7 @@ use OCP\Share\IShareProvider;
class DefaultShareProvider implements IShareProvider {
// Special share type for user modified group shares
- const SHARE_TYPE_USERGROUP = 2;
+ public const SHARE_TYPE_USERGROUP = 2;
/** @var IDBConnection */
private $dbConn;
@@ -153,7 +151,7 @@ class DefaultShareProvider implements IShareProvider {
if ($share->getExpirationDate() !== null) {
$qb->setValue('expiration', $qb->createNamedParameter($share->getExpirationDate(), 'datetime'));
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
//Set the GID of the group we share with
$qb->setValue('share_with', $qb->createNamedParameter($share->getSharedWith()));
@@ -161,7 +159,7 @@ class DefaultShareProvider implements IShareProvider {
if ($share->getExpirationDate() !== null) {
$qb->setValue('expiration', $qb->createNamedParameter($share->getExpirationDate(), 'datetime'));
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
//set label for public link
$qb->setValue('label', $qb->createNamedParameter($share->getLabel()));
//Set the token of the share
@@ -250,7 +248,6 @@ class DefaultShareProvider implements IShareProvider {
* @throws \OCP\Files\NotFoundException
*/
public function update(\OCP\Share\IShare $share) {
-
$originalShare = $this->getShareById($share->getId());
if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) {
@@ -270,7 +267,7 @@ class DefaultShareProvider implements IShareProvider {
->set('note', $qb->createNamedParameter($share->getNote()))
->set('accepted', $qb->createNamedParameter($share->getStatus()))
->execute();
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
$qb = $this->dbConn->getQueryBuilder();
$qb->update('share')
->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
@@ -307,8 +304,7 @@ class DefaultShareProvider implements IShareProvider {
->andWhere($qb->expr()->neq('permissions', $qb->createNamedParameter(0)))
->set('permissions', $qb->createNamedParameter($share->getPermissions()))
->execute();
-
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
$qb = $this->dbConn->getQueryBuilder();
$qb->update('share')
->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
@@ -381,8 +377,7 @@ class DefaultShareProvider implements IShareProvider {
} else {
$id = $data['id'];
}
-
- } else if ($share->getShareType() === IShare::TYPE_USER) {
+ } elseif ($share->getShareType() === IShare::TYPE_USER) {
if ($share->getSharedWith() !== $recipient) {
throw new ProviderException('Recipient does not match');
}
@@ -432,7 +427,7 @@ class DefaultShareProvider implements IShareProvider {
->orderBy('id');
$cursor = $qb->execute();
- while($data = $cursor->fetch()) {
+ while ($data = $cursor->fetch()) {
$children[] = $this->createShare($data);
}
$cursor->closeCursor();
@@ -472,7 +467,6 @@ class DefaultShareProvider implements IShareProvider {
*/
public function deleteFromSelf(IShare $share, $recipient) {
if ($share->getShareType() === IShare::TYPE_GROUP) {
-
$group = $this->groupManager->get($share->getSharedWith());
$user = $this->userManager->get($recipient);
@@ -519,9 +513,7 @@ class DefaultShareProvider implements IShareProvider {
->where($qb->expr()->eq('id', $qb->createNamedParameter($id)))
->execute();
}
-
- } else if ($share->getShareType() === IShare::TYPE_USER) {
-
+ } elseif ($share->getShareType() === IShare::TYPE_USER) {
if ($share->getSharedWith() !== $recipient) {
throw new ProviderException('Recipient does not match');
}
@@ -601,8 +593,7 @@ class DefaultShareProvider implements IShareProvider {
->set('file_target', $qb->createNamedParameter($share->getTarget()))
->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
->execute();
-
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
// Check if there is a usergroup share
$qb = $this->dbConn->getQueryBuilder();
@@ -738,7 +729,7 @@ class DefaultShareProvider implements IShareProvider {
$cursor = $qb->execute();
$shares = [];
- while($data = $cursor->fetch()) {
+ while ($data = $cursor->fetch()) {
$shares[] = $this->createShare($data);
}
$cursor->closeCursor();
@@ -817,7 +808,7 @@ class DefaultShareProvider implements IShareProvider {
->execute();
$shares = [];
- while($data = $cursor->fetch()) {
+ while ($data = $cursor->fetch()) {
$shares[] = $this->createShare($data);
}
$cursor->closeCursor();
@@ -831,7 +822,7 @@ class DefaultShareProvider implements IShareProvider {
*/
private function isAccessibleResult($data) {
// exclude shares leading to deleted file entries
- if ($data['fileid'] === null) {
+ if ($data['fileid'] === null || $data['path'] === null) {
return false;
}
@@ -839,7 +830,7 @@ class DefaultShareProvider implements IShareProvider {
$pathSections = explode('/', $data['path'], 2);
// FIXME: would not detect rare md5'd home storage case properly
if ($pathSections[0] !== 'files'
- && in_array(explode(':', $data['storage_string_id'], 2)[0], array('home', 'object'))) {
+ && in_array(explode(':', $data['storage_string_id'], 2)[0], ['home', 'object'])) {
return false;
}
return true;
@@ -888,22 +879,21 @@ class DefaultShareProvider implements IShareProvider {
$cursor = $qb->execute();
- while($data = $cursor->fetch()) {
+ while ($data = $cursor->fetch()) {
if ($this->isAccessibleResult($data)) {
$shares[] = $this->createShare($data);
}
}
$cursor->closeCursor();
-
- } else if ($shareType === \OCP\Share::SHARE_TYPE_GROUP) {
+ } elseif ($shareType === \OCP\Share::SHARE_TYPE_GROUP) {
$user = $this->userManager->get($userId);
- $allGroups = $this->groupManager->getUserGroups($user);
+ $allGroups = $this->groupManager->getUserGroupIds($user);
/** @var Share[] $shares2 */
$shares2 = [];
$start = 0;
- while(true) {
+ while (true) {
$groups = array_slice($allGroups, $start, 100);
$start += 100;
@@ -934,8 +924,7 @@ class DefaultShareProvider implements IShareProvider {
}
- $groups = array_filter($groups, function($group) { return $group instanceof IGroup; });
- $groups = array_map(function(IGroup $group) { return $group->getGID(); }, $groups);
+ $groups = array_filter($groups);
$qb->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_GROUP)))
->andWhere($qb->expr()->in('share_with', $qb->createNamedParameter(
@@ -948,7 +937,7 @@ class DefaultShareProvider implements IShareProvider {
));
$cursor = $qb->execute();
- while($data = $cursor->fetch()) {
+ while ($data = $cursor->fetch()) {
if ($offset > 0) {
$offset--;
continue;
@@ -962,8 +951,8 @@ class DefaultShareProvider implements IShareProvider {
}
/*
- * Resolve all group shares to user specific shares
- */
+ * Resolve all group shares to user specific shares
+ */
$shares = $this->resolveGroupShares($shares2, $userId);
} else {
throw new BackendError('Invalid backend');
@@ -1036,9 +1025,9 @@ class DefaultShareProvider implements IShareProvider {
if ($user !== null) {
$share->setSharedWithDisplayName($user->getDisplayName());
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
$share->setSharedWith($data['share_with']);
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
$share->setPassword($data['password']);
$share->setSendPasswordByTalk((bool)$data['password_by_talk']);
$share->setToken($data['token']);
@@ -1078,7 +1067,7 @@ class DefaultShareProvider implements IShareProvider {
$result = [];
$start = 0;
- while(true) {
+ while (true) {
/** @var Share[] $shareSlice */
$shareSlice = array_slice($shares, $start, 100);
$start += 100;
@@ -1110,7 +1099,7 @@ class DefaultShareProvider implements IShareProvider {
$stmt = $query->execute();
- while($data = $stmt->fetch()) {
+ while ($data = $stmt->fetch()) {
$shareMap[$data['parent']]->setPermissions((int)$data['permissions']);
$shareMap[$data['parent']]->setStatus((int)$data['accepted']);
$shareMap[$data['parent']]->setTarget($data['file_target']);
@@ -1153,7 +1142,7 @@ class DefaultShareProvider implements IShareProvider {
$qb->expr()->eq('share_with', $qb->createNamedParameter($uid))
)
);
- } else if ($shareType === \OCP\Share::SHARE_TYPE_GROUP) {
+ } elseif ($shareType === \OCP\Share::SHARE_TYPE_GROUP) {
/*
* Delete all group shares that are owned by this user
* Or special user group shares that are received by this user
@@ -1174,7 +1163,7 @@ class DefaultShareProvider implements IShareProvider {
$qb->expr()->eq('share_with', $qb->createNamedParameter($uid))
)
);
- } else if ($shareType === \OCP\Share::SHARE_TYPE_LINK) {
+ } elseif ($shareType === \OCP\Share::SHARE_TYPE_LINK) {
/*
* Delete all link shares owned by this user.
* And all link shares initiated by this user (until #22327 is in)
@@ -1213,7 +1202,7 @@ class DefaultShareProvider implements IShareProvider {
$cursor = $qb->execute();
$ids = [];
- while($row = $cursor->fetch()) {
+ while ($row = $cursor->fetch()) {
$ids[] = (int)$row['id'];
}
$cursor->closeCursor();
@@ -1256,7 +1245,7 @@ class DefaultShareProvider implements IShareProvider {
$cursor = $qb->execute();
$ids = [];
- while($row = $cursor->fetch()) {
+ while ($row = $cursor->fetch()) {
$ids[] = (int)$row['id'];
}
$cursor->closeCursor();
@@ -1311,13 +1300,13 @@ class DefaultShareProvider implements IShareProvider {
$users = [];
$link = false;
- while($row = $cursor->fetch()) {
+ while ($row = $cursor->fetch()) {
$type = (int)$row['share_type'];
if ($type === \OCP\Share::SHARE_TYPE_USER) {
$uid = $row['share_with'];
$users[$uid] = isset($users[$uid]) ? $users[$uid] : [];
$users[$uid][$row['id']] = $row;
- } else if ($type === \OCP\Share::SHARE_TYPE_GROUP) {
+ } elseif ($type === \OCP\Share::SHARE_TYPE_GROUP) {
$gid = $row['share_with'];
$group = $this->groupManager->get($gid);
@@ -1331,9 +1320,9 @@ class DefaultShareProvider implements IShareProvider {
$users[$uid] = isset($users[$uid]) ? $users[$uid] : [];
$users[$uid][$row['id']] = $row;
}
- } else if ($type === \OCP\Share::SHARE_TYPE_LINK) {
+ } elseif ($type === \OCP\Share::SHARE_TYPE_LINK) {
$link = true;
- } else if ($type === self::SHARE_TYPE_USERGROUP && $currentAccess === true) {
+ } elseif ($type === self::SHARE_TYPE_USERGROUP && $currentAccess === true) {
$uid = $row['share_with'];
$users[$uid] = isset($users[$uid]) ? $users[$uid] : [];
$users[$uid][$row['id']] = $row;
@@ -1397,7 +1386,7 @@ class DefaultShareProvider implements IShareProvider {
if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) {
$user = $this->userManager->get($share->getSharedWith());
$this->sendNote([$user], $share);
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
$group = $this->groupManager->get($share->getSharedWith());
$groupMembers = $group->getUsers();
$this->sendNote($groupMembers, $share);
@@ -1412,7 +1401,6 @@ class DefaultShareProvider implements IShareProvider {
* @throws \OCP\Files\NotFoundException
*/
private function sendNote(array $recipients, IShare $share) {
-
$toList = [];
foreach ($recipients as $recipient) {
@@ -1424,7 +1412,6 @@ class DefaultShareProvider implements IShareProvider {
}
if (!empty($toList)) {
-
$filename = $share->getNode()->getName();
$initiator = $share->getSharedBy();
$note = $share->getNote();
@@ -1476,7 +1463,6 @@ class DefaultShareProvider implements IShareProvider {
$message->useTemplate($emailTemplate);
$this->mailer->send($message);
}
-
}
public function getAllShares(): iterable {
@@ -1493,7 +1479,7 @@ class DefaultShareProvider implements IShareProvider {
);
$cursor = $qb->execute();
- while($data = $cursor->fetch()) {
+ while ($data = $cursor->fetch()) {
try {
$share = $this->createShare($data);
} catch (InvalidShare $e) {
diff --git a/lib/private/Share20/Exception/BackendError.php b/lib/private/Share20/Exception/BackendError.php
index b36cc1a9111..5ba17b7a458 100644
--- a/lib/private/Share20/Exception/BackendError.php
+++ b/lib/private/Share20/Exception/BackendError.php
@@ -23,5 +23,4 @@
namespace OC\Share20\Exception;
class BackendError extends \Exception {
-
}
diff --git a/lib/private/Share20/Exception/InvalidShare.php b/lib/private/Share20/Exception/InvalidShare.php
index 908049ae75a..1216bfa9aea 100644
--- a/lib/private/Share20/Exception/InvalidShare.php
+++ b/lib/private/Share20/Exception/InvalidShare.php
@@ -23,5 +23,4 @@
namespace OC\Share20\Exception;
class InvalidShare extends \Exception {
-
}
diff --git a/lib/private/Share20/Exception/ProviderException.php b/lib/private/Share20/Exception/ProviderException.php
index 360f42f63f0..f60f5a8f385 100644
--- a/lib/private/Share20/Exception/ProviderException.php
+++ b/lib/private/Share20/Exception/ProviderException.php
@@ -22,7 +22,5 @@
namespace OC\Share20\Exception;
-
class ProviderException extends \Exception {
-
}
diff --git a/lib/private/Share20/LegacyHooks.php b/lib/private/Share20/LegacyHooks.php
index 5cfc1cc27e3..1e2391f0bd0 100644
--- a/lib/private/Share20/LegacyHooks.php
+++ b/lib/private/Share20/LegacyHooks.php
@@ -75,7 +75,7 @@ class LegacyHooks {
/** @var IShare[] $deletedShares */
$deletedShares = $e->getArgument('deletedShares');
- $formattedDeletedShares = array_map(function($share) {
+ $formattedDeletedShares = array_map(function ($share) {
return $this->formatHookParams($share);
}, $deletedShares);
@@ -173,6 +173,5 @@ class LegacyHooks {
];
\OC_Hook::emit(Share::class, 'post_shared', $postHookData);
-
}
}
diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php
index 82e948344c1..36cbd511b8d 100644
--- a/lib/private/Share20/Manager.php
+++ b/lib/private/Share20/Manager.php
@@ -18,7 +18,6 @@
* @author Pauli Järvinen <pauli.jarvinen@gmail.com>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
- * @author Stephan Müller <mail@stephanmueller.eu>
* @author Thibault Coupin <thibault.coupin@gmail.com>
* @author Vincent Petry <pvince81@owncloud.com>
*
@@ -221,33 +220,33 @@ class Manager implements IManager {
if (!$this->userManager->userExists($share->getSharedWith())) {
throw new \InvalidArgumentException('SharedWith is not a valid user');
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
// We expect a valid group as sharedWith for group shares
if (!$this->groupManager->groupExists($share->getSharedWith())) {
throw new \InvalidArgumentException('SharedWith is not a valid group');
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
if ($share->getSharedWith() !== null) {
throw new \InvalidArgumentException('SharedWith should be empty');
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_REMOTE) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_REMOTE) {
if ($share->getSharedWith() === null) {
throw new \InvalidArgumentException('SharedWith should not be empty');
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_REMOTE_GROUP) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_REMOTE_GROUP) {
if ($share->getSharedWith() === null) {
throw new \InvalidArgumentException('SharedWith should not be empty');
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_EMAIL) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_EMAIL) {
if ($share->getSharedWith() === null) {
throw new \InvalidArgumentException('SharedWith should not be empty');
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_CIRCLE) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_CIRCLE) {
$circle = \OCA\Circles\Api\v1\Circles::detailsCircle($share->getSharedWith());
if ($circle === null) {
throw new \InvalidArgumentException('SharedWith is not a valid circle');
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_ROOM) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_ROOM) {
} else {
// We can't handle other types yet
throw new \InvalidArgumentException('unknown share type');
@@ -302,7 +301,7 @@ class Manager implements IManager {
$isFederatedShare = $share->getNode()->getStorage()->instanceOfStorage('\OCA\Files_Sharing\External\Storage');
$permissions = 0;
$mount = $share->getNode()->getMountPoint();
- if (!$isFederatedShare && $share->getNode()->getOwner()->getUID() !== $share->getSharedBy()) {
+ if (!$isFederatedShare && $share->getNode()->getOwner() && $share->getNode()->getOwner()->getUID() !== $share->getSharedBy()) {
// When it's a reshare use the parent share permissions as maximum
$userMountPointId = $mount->getStorageRootId();
$userMountPoints = $userFolder->getById($userMountPointId);
@@ -396,7 +395,12 @@ class Manager implements IManager {
if ($fullId === null && $expirationDate === null && $this->shareApiInternalDefaultExpireDate()) {
$expirationDate = new \DateTime();
$expirationDate->setTime(0,0,0);
- $expirationDate->add(new \DateInterval('P'.$this->shareApiInternalDefaultExpireDays().'D'));
+
+ $days = (int)$this->config->getAppValue('core', 'internal_defaultExpDays', $this->shareApiLinkDefaultExpireDays());
+ if ($days > $this->shareApiLinkDefaultExpireDays()) {
+ $days = $this->shareApiLinkDefaultExpireDays();
+ }
+ $expirationDate->add(new \DateInterval('P'.$days.'D'));
}
// If we enforce the expiration date check that is does not exceed
@@ -442,7 +446,6 @@ class Manager implements IManager {
* @throws \Exception
*/
protected function validateExpirationDate(\OCP\Share\IShare $share) {
-
$expirationDate = $share->getExpirationDate();
if ($expirationDate !== null) {
@@ -468,7 +471,12 @@ class Manager implements IManager {
if ($fullId === null && $expirationDate === null && $this->shareApiLinkDefaultExpireDate()) {
$expirationDate = new \DateTime();
$expirationDate->setTime(0,0,0);
- $expirationDate->add(new \DateInterval('P'.$this->shareApiLinkDefaultExpireDays().'D'));
+
+ $days = (int)$this->config->getAppValue('core', 'link_defaultExpDays', $this->shareApiLinkDefaultExpireDays());
+ if ($days > $this->shareApiLinkDefaultExpireDays()) {
+ $days = $this->shareApiLinkDefaultExpireDays();
+ }
+ $expirationDate->add(new \DateInterval('P'.$days.'D'));
}
// If we enforce the expiration date check that is does not exceed
@@ -532,7 +540,7 @@ class Manager implements IManager {
*/
$provider = $this->factory->getProviderForType(\OCP\Share::SHARE_TYPE_USER);
$existingShares = $provider->getSharesByPath($share->getNode());
- foreach($existingShares as $existingShare) {
+ foreach ($existingShares as $existingShare) {
// Ignore if it is the same share
try {
if ($existingShare->getFullId() === $share->getFullId()) {
@@ -589,7 +597,7 @@ class Manager implements IManager {
*/
$provider = $this->factory->getProviderForType(\OCP\Share::SHARE_TYPE_GROUP);
$existingShares = $provider->getSharesByPath($share->getNode());
- foreach($existingShares as $existingShare) {
+ foreach ($existingShares as $existingShare) {
try {
if ($existingShare->getFullId() === $share->getFullId()) {
continue;
@@ -616,11 +624,6 @@ class Manager implements IManager {
throw new \Exception('Link sharing is not allowed');
}
- // Link shares by definition can't have share permissions
- if ($share->getPermissions() & \OCP\Constants::PERMISSION_SHARE) {
- throw new \InvalidArgumentException('Link shares can’t have reshare permissions');
- }
-
// Check if public upload is allowed
if (!$this->shareApiLinkAllowPublicUpload() &&
($share->getPermissions() & (\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE))) {
@@ -658,7 +661,7 @@ class Manager implements IManager {
// Make sure that we do not share a path that contains a shared mountpoint
if ($path instanceof \OCP\Files\Folder) {
$mounts = $this->mountManager->findIn($path->getPath());
- foreach($mounts as $mount) {
+ foreach ($mounts as $mount) {
if ($mount->getStorage()->instanceOfStorage('\OCA\Files_Sharing\ISharedStorage')) {
throw new \InvalidArgumentException('Path contains files shared with you');
}
@@ -706,12 +709,16 @@ class Manager implements IManager {
$storage = $share->getNode()->getStorage();
if ($storage->instanceOfStorage('OCA\Files_Sharing\External\Storage')) {
$parent = $share->getNode()->getParent();
- while($parent->getStorage()->instanceOfStorage('OCA\Files_Sharing\External\Storage')) {
+ while ($parent->getStorage()->instanceOfStorage('OCA\Files_Sharing\External\Storage')) {
$parent = $parent->getParent();
}
$share->setShareOwner($parent->getOwner()->getUID());
} else {
- $share->setShareOwner($share->getNode()->getOwner()->getUID());
+ if ($share->getNode()->getOwner()) {
+ $share->setShareOwner($share->getNode()->getOwner()->getUID());
+ } else {
+ $share->setShareOwner($share->getSharedBy());
+ }
}
//Verify share type
@@ -720,14 +727,12 @@ class Manager implements IManager {
//Verify the expiration date
$share = $this->validateExpirationDateInternal($share);
-
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
$this->groupCreateChecks($share);
//Verify the expiration date
$share = $this->validateExpirationDateInternal($share);
-
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
$this->linkCreateChecks($share);
$this->setLinkParent($share);
@@ -751,7 +756,7 @@ class Manager implements IManager {
if ($share->getPassword() !== null) {
$share->setPassword($this->hasher->hash($share->getPassword()));
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_EMAIL) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_EMAIL) {
$share->setToken(
$this->secureRandom->generate(
\OC\Share\Constants::TOKEN_LENGTH,
@@ -797,7 +802,7 @@ class Manager implements IManager {
if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) {
$mailSend = $share->getMailSend();
- if($mailSend === true) {
+ if ($mailSend === true) {
$user = $this->userManager->get($share->getSharedWith());
if ($user !== null) {
$emailAddress = $user->getEMailAddress();
@@ -858,7 +863,7 @@ class Manager implements IManager {
'shareWith' => $shareWith,
]);
- $emailTemplate->setSubject($l->t('%1$s shared »%2$s« with you', array($initiatorDisplayName, $filename)));
+ $emailTemplate->setSubject($l->t('%1$s shared »%2$s« with you', [$initiatorDisplayName, $filename]));
$emailTemplate->addHeader();
$emailTemplate->addHeading($l->t('%1$s shared »%2$s« with you', [$initiatorDisplayName, $filename]), false);
$text = $l->t('%1$s shared »%2$s« with you.', [$initiatorDisplayName, $filename]);
@@ -888,17 +893,17 @@ class Manager implements IManager {
// The "Reply-To" is set to the sharer if an mail address is configured
// also the default footer contains a "Do not reply" which needs to be adjusted.
$initiatorEmail = $initiatorUser->getEMailAddress();
- if($initiatorEmail !== null) {
+ if ($initiatorEmail !== null) {
$message->setReplyTo([$initiatorEmail => $initiatorDisplayName]);
- $emailTemplate->addFooter($instanceName . ($this->defaults->getSlogan() !== '' ? ' - ' . $this->defaults->getSlogan() : ''));
+ $emailTemplate->addFooter($instanceName . ($this->defaults->getSlogan($l->getLanguageCode()) !== '' ? ' - ' . $this->defaults->getSlogan($l->getLanguageCode()) : ''));
} else {
- $emailTemplate->addFooter();
+ $emailTemplate->addFooter('', $l->getLanguageCode());
}
$message->useTemplate($emailTemplate);
try {
$failedRecipients = $this->mailer->send($message);
- if(!empty($failedRecipients)) {
+ if (!empty($failedRecipients)) {
$this->logger->error('Share notification mail could not be sent to: ' . implode(', ', $failedRecipients));
return;
}
@@ -932,7 +937,7 @@ class Manager implements IManager {
// We can only change the recipient on user shares
if ($share->getSharedWith() !== $originalShare->getSharedWith() &&
- $share->getShareType() !== \OCP\Share::SHARE_TYPE_USER) {
+ $share->getShareType() !== \OCP\Share::SHARE_TYPE_USER) {
throw new \InvalidArgumentException('Can only update recipient on user shares');
}
@@ -952,7 +957,7 @@ class Manager implements IManager {
$this->validateExpirationDate($share);
$expirationDateUpdated = true;
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
$this->groupCreateChecks($share);
if ($share->getExpirationDate() != $originalShare->getExpirationDate()) {
@@ -960,7 +965,7 @@ class Manager implements IManager {
$this->validateExpirationDate($share);
$expirationDateUpdated = true;
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
$this->linkCreateChecks($share);
$this->updateSharePasswordIfNeeded($share, $originalShare);
@@ -970,7 +975,7 @@ class Manager implements IManager {
$this->validateExpirationDate($share);
$expirationDateUpdated = true;
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_EMAIL) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_EMAIL) {
// The new password is not set again if it is the same as the old
// one, unless when switching from sending by Talk to sending by
// mail.
@@ -1022,7 +1027,7 @@ class Manager implements IManager {
} else {
$userFolder = $this->rootFolder->getUserFolder($share->getSharedBy());
}
- \OC_Hook::emit(Share::class, 'post_update_permissions', array(
+ \OC_Hook::emit(Share::class, 'post_update_permissions', [
'itemType' => $share->getNode() instanceof \OCP\Files\File ? 'file' : 'folder',
'itemSource' => $share->getNode()->getId(),
'shareType' => $share->getShareType(),
@@ -1030,7 +1035,7 @@ class Manager implements IManager {
'uidOwner' => $share->getSharedBy(),
'permissions' => $share->getPermissions(),
'path' => $userFolder->getRelativePath($share->getNode()->getPath()),
- ));
+ ]);
}
return $share;
@@ -1117,7 +1122,6 @@ class Manager implements IManager {
* @throws \InvalidArgumentException
*/
public function deleteShare(\OCP\Share\IShare $share) {
-
try {
$share->getFullId();
} catch (\UnexpectedValueException $e) {
@@ -1200,7 +1204,7 @@ class Manager implements IManager {
public function getSharesInFolder($userId, Folder $node, $reshares = false) {
$providers = $this->factory->getAllProviders();
- return array_reduce($providers, function($shares, IShareProvider $provider) use ($userId, $node, $reshares) {
+ return array_reduce($providers, function ($shares, IShareProvider $provider) use ($userId, $node, $reshares) {
$newShares = $provider->getSharesInFolder($userId, $node, $reshares);
foreach ($newShares as $fid => $data) {
if (!isset($shares[$fid])) {
@@ -1238,10 +1242,9 @@ class Manager implements IManager {
$shares2 = [];
- while(true) {
+ while (true) {
$added = 0;
foreach ($shares as $share) {
-
try {
$this->checkExpireDate($share);
} catch (ShareNotFound $e) {
@@ -1318,7 +1321,7 @@ class Manager implements IManager {
$shares = $this->getSharedWith($userId, $shareType, $node, $limit, $offset);
// Only get deleted shares
- $shares = array_filter($shares, function(IShare $share) {
+ $shares = array_filter($shares, function (IShare $share) {
return $share->getPermissions() === 0;
});
@@ -1381,7 +1384,7 @@ class Manager implements IManager {
}
$share = null;
try {
- if($this->shareApiAllowLinks()) {
+ if ($this->shareApiAllowLinks()) {
$provider = $this->factory->getProviderForType(\OCP\Share::SHARE_TYPE_LINK);
$share = $provider->getShareByToken($token);
}
@@ -1450,7 +1453,6 @@ class Manager implements IManager {
$this->deleteShare($share);
throw new ShareNotFound($this->l->t('The requested share does not exist anymore'));
}
-
}
/**
@@ -1509,6 +1511,19 @@ class Manager implements IManager {
public function groupDeleted($gid) {
$provider = $this->factory->getProviderForType(\OCP\Share::SHARE_TYPE_GROUP);
$provider->groupDeleted($gid);
+
+ $excludedGroups = $this->config->getAppValue('core', 'shareapi_exclude_groups_list', '');
+ if ($excludedGroups === '') {
+ return;
+ }
+
+ $excludedGroups = json_decode($excludedGroups, true);
+ if (json_last_error() !== JSON_ERROR_NONE) {
+ return;
+ }
+
+ $excludedGroups = array_diff($excludedGroups, [$gid]);
+ $this->config->setAppValue('core', 'shareapi_exclude_groups_list', json_encode($excludedGroups));
}
/**
@@ -1764,6 +1779,15 @@ class Manager implements IManager {
return $this->config->getAppValue('core', 'shareapi_allow_group_sharing', 'yes') === 'yes';
}
+ public function allowEnumeration(): bool {
+ return $this->config->getAppValue('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes') === 'yes';
+ }
+
+ public function limitEnumerationToGroups(): bool {
+ return $this->allowEnumeration() &&
+ $this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_to_group', 'no') === 'yes';
+ }
+
/**
* Copied from \OC_Util::isSharingDisabledForUser
*
diff --git a/lib/private/Share20/ProviderFactory.php b/lib/private/Share20/ProviderFactory.php
index 5a91202a1d0..891a5d2c31c 100644
--- a/lib/private/Share20/ProviderFactory.php
+++ b/lib/private/Share20/ProviderFactory.php
@@ -9,7 +9,6 @@
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Maxence Lange <maxence@nextcloud.com>
- * @author Maxence Lange <maxence@pontapreta.net>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -36,7 +35,6 @@ use OC\Share20\Exception\ProviderException;
use OCA\FederatedFileSharing\AddressHandler;
use OCA\FederatedFileSharing\FederatedShareProvider;
use OCA\FederatedFileSharing\Notifications;
-use OCA\FederatedFileSharing\OCM\CloudFederationProvider;
use OCA\FederatedFileSharing\TokenHandler;
use OCA\ShareByMail\Settings\SettingsManager;
use OCA\ShareByMail\ShareByMailProvider;
@@ -198,7 +196,6 @@ class ProviderFactory implements IProviderFactory {
* @suppress PhanUndeclaredClassMethod
*/
protected function getShareByCircleProvider() {
-
if ($this->circlesAreNotAvailable) {
return null;
}
@@ -211,7 +208,6 @@ class ProviderFactory implements IProviderFactory {
}
if ($this->shareByCircleProvider === null) {
-
$this->shareByCircleProvider = new \OCA\Circles\ShareByCircleProvider(
$this->serverContainer->getDatabaseConnection(),
$this->serverContainer->getSecureRandom(),
@@ -258,13 +254,13 @@ class ProviderFactory implements IProviderFactory {
$provider = null;
if ($id === 'ocinternal') {
$provider = $this->defaultShareProvider();
- } else if ($id === 'ocFederatedSharing') {
+ } elseif ($id === 'ocFederatedSharing') {
$provider = $this->federatedShareProvider();
- } else if ($id === 'ocMailShare') {
+ } elseif ($id === 'ocMailShare') {
$provider = $this->getShareByMailProvider();
- } else if ($id === 'ocCircleShare') {
+ } elseif ($id === 'ocCircleShare') {
$provider = $this->getShareByCircleProvider();
- } else if ($id === 'ocRoomShare') {
+ } elseif ($id === 'ocRoomShare') {
$provider = $this->getRoomShareProvider();
}
@@ -286,13 +282,13 @@ class ProviderFactory implements IProviderFactory {
$shareType === \OCP\Share::SHARE_TYPE_LINK
) {
$provider = $this->defaultShareProvider();
- } else if ($shareType === \OCP\Share::SHARE_TYPE_REMOTE || $shareType === \OCP\Share::SHARE_TYPE_REMOTE_GROUP) {
+ } elseif ($shareType === \OCP\Share::SHARE_TYPE_REMOTE || $shareType === \OCP\Share::SHARE_TYPE_REMOTE_GROUP) {
$provider = $this->federatedShareProvider();
- } else if ($shareType === \OCP\Share::SHARE_TYPE_EMAIL) {
+ } elseif ($shareType === \OCP\Share::SHARE_TYPE_EMAIL) {
$provider = $this->getShareByMailProvider();
- } else if ($shareType === \OCP\Share::SHARE_TYPE_CIRCLE) {
+ } elseif ($shareType === \OCP\Share::SHARE_TYPE_CIRCLE) {
$provider = $this->getShareByCircleProvider();
- } else if ($shareType === \OCP\Share::SHARE_TYPE_ROOM) {
+ } elseif ($shareType === \OCP\Share::SHARE_TYPE_ROOM) {
$provider = $this->getRoomShareProvider();
}
diff --git a/lib/private/Share20/Share.php b/lib/private/Share20/Share.php
index b05b72e7ada..69f36edf4f3 100644
--- a/lib/private/Share20/Share.php
+++ b/lib/private/Share20/Share.php
@@ -4,6 +4,7 @@
*
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Calviño Sánchez <danxuliu@gmail.com>
* @author Joas Schilling <coding@schilljs.com>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
@@ -112,7 +113,7 @@ class Share implements \OCP\Share\IShare {
$id = (string)$id;
}
- if(!is_string($id)) {
+ if (!is_string($id)) {
throw new \InvalidArgumentException('String expected.');
}
@@ -145,7 +146,7 @@ class Share implements \OCP\Share\IShare {
* @inheritdoc
*/
public function setProviderId($id) {
- if(!is_string($id)) {
+ if (!is_string($id)) {
throw new \InvalidArgumentException('String expected.');
}
@@ -172,14 +173,13 @@ class Share implements \OCP\Share\IShare {
*/
public function getNode() {
if ($this->node === null) {
-
if ($this->shareOwner === null || $this->fileId === null) {
throw new NotFoundException();
}
// for federated shares the owner can be a remote user, in this
// case we use the initiator
- if($this->userManager->userExists($this->shareOwner)) {
+ if ($this->userManager->userExists($this->shareOwner)) {
$userFolder = $this->rootFolder->getUserFolder($this->shareOwner);
} else {
$userFolder = $this->rootFolder->getUserFolder($this->sharedBy);
diff --git a/lib/private/Streamer.php b/lib/private/Streamer.php
index 939bb4ea5d8..a05f77f3cbd 100644
--- a/lib/private/Streamer.php
+++ b/lib/private/Streamer.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Calviño Sánchez <danxuliu@gmail.com>
* @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -52,7 +53,7 @@ class Streamer {
* @param int $numberOfFiles The number of files (and directories) that will
* be included in the streamed file
*/
- public function __construct(IRequest $request, int $size, int $numberOfFiles){
+ public function __construct(IRequest $request, int $size, int $numberOfFiles) {
/**
* zip32 constraints for a basic (without compression, volumes nor
@@ -78,7 +79,7 @@ class Streamer {
*/
if ($size < 4 * 1000 * 1000 * 1000 && $numberOfFiles < 65536) {
$this->streamerInstance = new ZipStreamer(['zip64' => false]);
- } else if ($request->isUserAgent($this->preferTarFor)) {
+ } elseif ($request->isUserAgent($this->preferTarFor)) {
$this->streamerInstance = new TarStreamer();
} else {
$this->streamerInstance = new ZipStreamer(['zip64' => PHP_INT_SIZE !== 4]);
@@ -89,7 +90,7 @@ class Streamer {
* Send HTTP headers
* @param string $name
*/
- public function sendHeaders($name){
+ public function sendHeaders($name) {
$extension = $this->streamerInstance instanceof ZipStreamer ? '.zip' : '.tar';
$fullName = $name . $extension;
$this->streamerInstance->sendHeaders($fullName);
@@ -117,8 +118,8 @@ class Streamer {
$dirNode = $userFolder->get($dir);
$files = $dirNode->getDirectoryListing();
- foreach($files as $file) {
- if($file instanceof File) {
+ foreach ($files as $file) {
+ if ($file instanceof File) {
try {
$fh = $file->fopen('r');
} catch (NotPermittedException $e) {
@@ -132,7 +133,7 @@ class Streamer {
);
fclose($fh);
} elseif ($file instanceof Folder) {
- if($file->isReadable()) {
+ if ($file->isReadable()) {
$this->addDirRecursive($dir . '/' . $file->getName(), $internalDir);
}
}
@@ -169,7 +170,7 @@ class Streamer {
* @param string $dirName Directory Path and name to be added to the archive.
* @return bool $success
*/
- public function addEmptyDir($dirName){
+ public function addEmptyDir($dirName) {
return $this->streamerInstance->addEmptyDir($dirName);
}
@@ -179,7 +180,7 @@ class Streamer {
* closing, the file is completely written to the output stream.
* @return bool $success
*/
- public function finalize(){
+ public function finalize() {
return $this->streamerInstance->finalize();
}
}
diff --git a/lib/private/SubAdmin.php b/lib/private/SubAdmin.php
index b3b40e78b9f..890bcf67b3b 100644
--- a/lib/private/SubAdmin.php
+++ b/lib/private/SubAdmin.php
@@ -4,6 +4,7 @@
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
* @author Lukas Reschke <lukas@statuscode.ch>
@@ -53,16 +54,16 @@ class SubAdmin extends PublicEmitter implements ISubAdmin {
* @param IDBConnection $dbConn
*/
public function __construct(IUserManager $userManager,
- IGroupManager $groupManager,
+ IGroupManager $groupManager,
IDBConnection $dbConn) {
$this->userManager = $userManager;
$this->groupManager = $groupManager;
$this->dbConn = $dbConn;
- $this->userManager->listen('\OC\User', 'postDelete', function($user) {
+ $this->userManager->listen('\OC\User', 'postDelete', function ($user) {
$this->post_deleteUser($user);
});
- $this->groupManager->listen('\OC\Group', 'postDelete', function($group) {
+ $this->groupManager->listen('\OC\Group', 'postDelete', function ($group) {
$this->post_deleteGroup($group);
});
}
@@ -109,6 +110,25 @@ class SubAdmin extends PublicEmitter implements ISubAdmin {
* @return IGroup[]
*/
public function getSubAdminsGroups(IUser $user): array {
+ $groupIds = $this->getSubAdminsGroupIds($user);
+
+ $groups = [];
+ foreach ($groupIds as $groupId) {
+ $group = $this->groupManager->get($groupId);
+ if ($group !== null) {
+ $groups[$group->getGID()] = $group;
+ }
+ }
+
+ return $groups;
+ }
+
+ /**
+ * Get group ids of a SubAdmin
+ * @param IUser $user the SubAdmin
+ * @return string[]
+ */
+ public function getSubAdminsGroupIds(IUser $user): array {
$qb = $this->dbConn->getQueryBuilder();
$result = $qb->select('gid')
@@ -117,11 +137,8 @@ class SubAdmin extends PublicEmitter implements ISubAdmin {
->execute();
$groups = [];
- while($row = $result->fetch()) {
- $group = $this->groupManager->get($row['gid']);
- if(!is_null($group)) {
- $groups[$group->getGID()] = $group;
- }
+ while ($row = $result->fetch()) {
+ $groups[] = $row['gid'];
}
$result->closeCursor();
@@ -134,8 +151,8 @@ class SubAdmin extends PublicEmitter implements ISubAdmin {
* @return array ['displayName' => displayname]
*/
public function getSubAdminsGroupsName(IUser $user): array {
- return array_map(function($group) {
- return array('displayName' => $group->getDisplayName());
+ return array_map(function ($group) {
+ return ['displayName' => $group->getDisplayName()];
}, $this->getSubAdminsGroups($user));
}
@@ -153,9 +170,9 @@ class SubAdmin extends PublicEmitter implements ISubAdmin {
->execute();
$users = [];
- while($row = $result->fetch()) {
+ while ($row = $result->fetch()) {
$user = $this->userManager->get($row['uid']);
- if(!is_null($user)) {
+ if (!is_null($user)) {
$users[] = $user;
}
}
@@ -176,10 +193,10 @@ class SubAdmin extends PublicEmitter implements ISubAdmin {
->execute();
$subadmins = [];
- while($row = $result->fetch()) {
+ while ($row = $result->fetch()) {
$user = $this->userManager->get($row['uid']);
$group = $this->groupManager->get($row['gid']);
- if(!is_null($user) && !is_null($group)) {
+ if (!is_null($user) && !is_null($group)) {
$subadmins[] = [
'user' => $user,
'group' => $group
@@ -248,19 +265,17 @@ class SubAdmin extends PublicEmitter implements ISubAdmin {
* @return bool
*/
public function isUserAccessible(IUser $subadmin, IUser $user): bool {
- if(!$this->isSubAdmin($subadmin)) {
+ if (!$this->isSubAdmin($subadmin)) {
return false;
}
- if($this->groupManager->isAdmin($user->getUID())) {
+ if ($this->groupManager->isAdmin($user->getUID())) {
return false;
}
- $accessibleGroups = $this->getSubAdminsGroups($subadmin);
- foreach($accessibleGroups as $accessibleGroup) {
- if($accessibleGroup->inGroup($user)) {
- return true;
- }
- }
- return false;
+
+ $accessibleGroups = $this->getSubAdminsGroupIds($subadmin);
+ $userGroups = $this->groupManager->getUserGroupIds($user);
+
+ return !empty(array_intersect($accessibleGroups, $userGroups));
}
/**
diff --git a/lib/private/Support/CrashReport/Registry.php b/lib/private/Support/CrashReport/Registry.php
index f81ac36a8a6..44a6d290678 100644
--- a/lib/private/Support/CrashReport/Registry.php
+++ b/lib/private/Support/CrashReport/Registry.php
@@ -90,5 +90,4 @@ class Registry implements IRegistry {
}
}
}
-
}
diff --git a/lib/private/SystemConfig.php b/lib/private/SystemConfig.php
index 321ec61e048..7f0114ec821 100644
--- a/lib/private/SystemConfig.php
+++ b/lib/private/SystemConfig.php
@@ -27,7 +27,6 @@
namespace OC;
-
use OCP\IConfig;
/**
diff --git a/lib/private/SystemTag/SystemTagManager.php b/lib/private/SystemTag/SystemTagManager.php
index 75f12e59fce..5941400883b 100644
--- a/lib/private/SystemTag/SystemTagManager.php
+++ b/lib/private/SystemTag/SystemTagManager.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -44,9 +45,8 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface;
* Manager class for system tags
*/
class SystemTagManager implements ISystemTagManager {
-
- const TAG_TABLE = 'systemtag';
- const TAG_GROUP_TABLE = 'systemtag_group';
+ public const TAG_TABLE = 'systemtag';
+ public const TAG_GROUP_TABLE = 'systemtag_group';
/** @var IDBConnection */
protected $connection;
diff --git a/lib/private/SystemTag/SystemTagObjectMapper.php b/lib/private/SystemTag/SystemTagObjectMapper.php
index f73bb3f5f12..5403321e582 100644
--- a/lib/private/SystemTag/SystemTagObjectMapper.php
+++ b/lib/private/SystemTag/SystemTagObjectMapper.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Vincent Petry <pvince81@owncloud.com>
@@ -38,8 +39,7 @@ use OCP\SystemTag\TagNotFoundException;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
class SystemTagObjectMapper implements ISystemTagObjectMapper {
-
- const RELATION_TABLE = 'systemtag_object_mapping';
+ public const RELATION_TABLE = 'systemtag_object_mapping';
/** @var ISystemTagManager */
protected $tagManager;
@@ -51,12 +51,12 @@ class SystemTagObjectMapper implements ISystemTagObjectMapper {
protected $dispatcher;
/**
- * Constructor.
- *
- * @param IDBConnection $connection database connection
- * @param ISystemTagManager $tagManager system tag manager
- * @param EventDispatcherInterface $dispatcher
- */
+ * Constructor.
+ *
+ * @param IDBConnection $connection database connection
+ * @param ISystemTagManager $tagManager system tag manager
+ * @param EventDispatcherInterface $dispatcher
+ */
public function __construct(IDBConnection $connection, ISystemTagManager $tagManager, EventDispatcherInterface $dispatcher) {
$this->connection = $connection;
$this->tagManager = $tagManager;
@@ -69,7 +69,7 @@ class SystemTagObjectMapper implements ISystemTagObjectMapper {
public function getTagIdsForObjects($objIds, string $objectType): array {
if (!\is_array($objIds)) {
$objIds = [$objIds];
- } else if (empty($objIds)) {
+ } elseif (empty($objIds)) {
return [];
}
@@ -259,7 +259,7 @@ class SystemTagObjectMapper implements ISystemTagObjectMapper {
if (\count($tags) !== \count($tagIds)) {
// at least one tag missing, bail out
$foundTagIds = array_map(
- function(ISystemTag $tag) {
+ function (ISystemTag $tag) {
return $tag->getId();
},
$tags
diff --git a/lib/private/TagManager.php b/lib/private/TagManager.php
index a12076196c8..ecc80b271fa 100644
--- a/lib/private/TagManager.php
+++ b/lib/private/TagManager.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bernhard Reiter <ockham@raz.or.at>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Tanghus <thomas@tanghus.net>
* @author Vincent Petry <pvince81@owncloud.com>
@@ -55,29 +56,28 @@ class TagManager implements \OCP\ITagManager {
private $mapper;
/**
- * Constructor.
- *
- * @param TagMapper $mapper Instance of the TagMapper abstraction layer.
- * @param \OCP\IUserSession $userSession the user session
- */
+ * Constructor.
+ *
+ * @param TagMapper $mapper Instance of the TagMapper abstraction layer.
+ * @param \OCP\IUserSession $userSession the user session
+ */
public function __construct(TagMapper $mapper, \OCP\IUserSession $userSession) {
$this->mapper = $mapper;
$this->userSession = $userSession;
-
}
/**
- * Create a new \OCP\ITags instance and load tags from db.
- *
- * @see \OCP\ITags
- * @param string $type The type identifier e.g. 'contact' or 'event'.
- * @param array $defaultTags An array of default tags to be used if none are stored.
- * @param boolean $includeShared Whether to include tags for items shared with this user by others.
- * @param string $userId user for which to retrieve the tags, defaults to the currently
- * logged in user
- * @return \OCP\ITags
- */
- public function load($type, $defaultTags = array(), $includeShared = false, $userId = null) {
+ * Create a new \OCP\ITags instance and load tags from db.
+ *
+ * @see \OCP\ITags
+ * @param string $type The type identifier e.g. 'contact' or 'event'.
+ * @param array $defaultTags An array of default tags to be used if none are stored.
+ * @param boolean $includeShared Whether to include tags for items shared with this user by others.
+ * @param string $userId user for which to retrieve the tags, defaults to the currently
+ * logged in user
+ * @return \OCP\ITags
+ */
+ public function load($type, $defaultTags = [], $includeShared = false, $userId = null) {
if (is_null($userId)) {
$user = $this->userSession->getUser();
if ($user === null) {
@@ -88,5 +88,4 @@ class TagManager implements \OCP\ITagManager {
}
return new Tags($this->mapper, $userId, $type, $defaultTags, $includeShared);
}
-
}
diff --git a/lib/private/Tagging/Tag.php b/lib/private/Tagging/Tag.php
index eacb272ca7a..55fa996013c 100644
--- a/lib/private/Tagging/Tag.php
+++ b/lib/private/Tagging/Tag.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bernhard Reiter <ockham@raz.or.at>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -37,18 +38,17 @@ use OCP\AppFramework\Db\Entity;
* @method void setName(string $name)
*/
class Tag extends Entity {
-
protected $owner;
protected $type;
protected $name;
/**
- * Constructor.
- *
- * @param string $owner The tag's owner
- * @param string $type The type of item this tag is used for
- * @param string $name The tag's name
- */
+ * Constructor.
+ *
+ * @param string $owner The tag's owner
+ * @param string $type The type of item this tag is used for
+ * @param string $name The tag's name
+ */
public function __construct($owner = null, $type = null, $name = null) {
$this->setOwner($owner);
$this->setType($type);
@@ -63,13 +63,13 @@ class Tag extends Entity {
* @todo migrate existing database columns to the correct names
* to be able to drop this direct mapping
*/
- public function columnToProperty($columnName){
+ public function columnToProperty($columnName) {
if ($columnName === 'category') {
- return 'name';
+ return 'name';
} elseif ($columnName === 'uid') {
- return 'owner';
+ return 'owner';
} else {
- return parent::columnToProperty($columnName);
+ return parent::columnToProperty($columnName);
}
}
@@ -79,13 +79,13 @@ class Tag extends Entity {
* @param string $property the name of the property
* @return string the column name
*/
- public function propertyToColumn($property){
+ public function propertyToColumn($property) {
if ($property === 'name') {
- return 'category';
+ return 'category';
} elseif ($property === 'owner') {
- return 'uid';
+ return 'uid';
} else {
- return parent::propertyToColumn($property);
+ return parent::propertyToColumn($property);
}
}
}
diff --git a/lib/private/Tagging/TagMapper.php b/lib/private/Tagging/TagMapper.php
index fb58c33dd07..d9c8a7fb470 100644
--- a/lib/private/Tagging/TagMapper.php
+++ b/lib/private/Tagging/TagMapper.php
@@ -4,6 +4,7 @@
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Bernhard Reiter <ockham@raz.or.at>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -35,42 +36,42 @@ use OCP\IDBConnection;
class TagMapper extends Mapper {
/**
- * Constructor.
- *
- * @param IDBConnection $db Instance of the Db abstraction layer.
- */
+ * Constructor.
+ *
+ * @param IDBConnection $db Instance of the Db abstraction layer.
+ */
public function __construct(IDBConnection $db) {
parent::__construct($db, 'vcategory', Tag::class);
}
/**
- * Load tags from the database.
- *
- * @param array|string $owners The user(s) whose tags we are going to load.
- * @param string $type The type of item for which we are loading tags.
- * @return array An array of Tag objects.
- */
+ * Load tags from the database.
+ *
+ * @param array|string $owners The user(s) whose tags we are going to load.
+ * @param string $type The type of item for which we are loading tags.
+ * @return array An array of Tag objects.
+ */
public function loadTags($owners, $type) {
- if(!is_array($owners)) {
- $owners = array($owners);
+ if (!is_array($owners)) {
+ $owners = [$owners];
}
$sql = 'SELECT `id`, `uid`, `type`, `category` FROM `' . $this->getTableName() . '` '
. 'WHERE `uid` IN (' . str_repeat('?,', count($owners)-1) . '?) AND `type` = ? ORDER BY `category`';
- return $this->findEntities($sql, array_merge($owners, array($type)));
+ return $this->findEntities($sql, array_merge($owners, [$type]));
}
/**
- * Check if a given Tag object already exists in the database.
- *
- * @param Tag $tag The tag to look for in the database.
- * @return bool
- */
+ * Check if a given Tag object already exists in the database.
+ *
+ * @param Tag $tag The tag to look for in the database.
+ * @return bool
+ */
public function tagExists($tag) {
$sql = 'SELECT `id`, `uid`, `type`, `category` FROM `' . $this->getTableName() . '` '
. 'WHERE `uid` = ? AND `type` = ? AND `category` = ?';
try {
- $this->findEntity($sql, array($tag->getOwner(), $tag->getType(), $tag->getName()));
+ $this->findEntity($sql, [$tag->getOwner(), $tag->getType(), $tag->getName()]);
} catch (DoesNotExistException $e) {
return false;
}
diff --git a/lib/private/Tags.php b/lib/private/Tags.php
index fe24391a1a5..92263ca4fbe 100644
--- a/lib/private/Tags.php
+++ b/lib/private/Tags.php
@@ -4,13 +4,12 @@
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bernhard Reiter <ockham@raz.or.at>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @author Daniel Kesselberg <mail@danielkesselberg.de>
* @author derkostka <sebastian.kostka@gmail.com>
* @author Joas Schilling <coding@schilljs.com>
- * @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Julius Härtl <jus@bitgrid.net>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
- * @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Tanghus <thomas@tanghus.net>
* @author Vincent Petry <pvince81@owncloud.com>
@@ -57,14 +56,14 @@ class Tags implements ITags {
*
* @var array
*/
- private $tags = array();
+ private $tags = [];
/**
* Used for storing objectid/categoryname pairs while rescanning.
*
* @var array
*/
- private static $relations = array();
+ private static $relations = [];
/**
* Type
@@ -93,7 +92,7 @@ class Tags implements ITags {
*
* @var array
*/
- private $owners = array();
+ private $owners = [];
/**
* The Mapper we're using to communicate our Tag objects to the database.
@@ -110,51 +109,51 @@ class Tags implements ITags {
*/
private $backend;
- const TAG_TABLE = '*PREFIX*vcategory';
- const RELATION_TABLE = '*PREFIX*vcategory_to_object';
+ public const TAG_TABLE = '*PREFIX*vcategory';
+ public const RELATION_TABLE = '*PREFIX*vcategory_to_object';
/**
- * Constructor.
- *
- * @param TagMapper $mapper Instance of the TagMapper abstraction layer.
- * @param string $user The user whose data the object will operate on.
- * @param string $type The type of items for which tags will be loaded.
- * @param array $defaultTags Tags that should be created at construction.
- * @param boolean $includeShared Whether to include tags for items shared with this user by others.
- */
- public function __construct(TagMapper $mapper, $user, $type, $defaultTags = array(), $includeShared = false) {
+ * Constructor.
+ *
+ * @param TagMapper $mapper Instance of the TagMapper abstraction layer.
+ * @param string $user The user whose data the object will operate on.
+ * @param string $type The type of items for which tags will be loaded.
+ * @param array $defaultTags Tags that should be created at construction.
+ * @param boolean $includeShared Whether to include tags for items shared with this user by others.
+ */
+ public function __construct(TagMapper $mapper, $user, $type, $defaultTags = [], $includeShared = false) {
$this->mapper = $mapper;
$this->user = $user;
$this->type = $type;
$this->includeShared = $includeShared;
- $this->owners = array($this->user);
+ $this->owners = [$this->user];
if ($this->includeShared) {
$this->owners = array_merge($this->owners, \OC\Share\Share::getSharedItemsOwners($this->user, $this->type, true));
$this->backend = \OC\Share\Share::getBackend($this->type);
}
$this->tags = $this->mapper->loadTags($this->owners, $this->type);
- if(count($defaultTags) > 0 && count($this->tags) === 0) {
+ if (count($defaultTags) > 0 && count($this->tags) === 0) {
$this->addMultiple($defaultTags, true);
}
}
/**
- * Check if any tags are saved for this type and user.
- *
- * @return boolean
- */
+ * Check if any tags are saved for this type and user.
+ *
+ * @return boolean
+ */
public function isEmpty() {
return count($this->tags) === 0;
}
/**
- * Returns an array mapping a given tag's properties to its values:
- * ['id' => 0, 'name' = 'Tag', 'owner' = 'User', 'type' => 'tagtype']
- *
- * @param string $id The ID of the tag that is going to be mapped
- * @return array|false
- */
+ * Returns an array mapping a given tag's properties to its values:
+ * ['id' => 0, 'name' = 'Tag', 'owner' = 'User', 'type' => 'tagtype']
+ *
+ * @param string $id The ID of the tag that is going to be mapped
+ * @return array|false
+ */
public function getTag($id) {
$key = $this->getTagById($id);
if ($key !== false) {
@@ -164,45 +163,44 @@ class Tags implements ITags {
}
/**
- * Get the tags for a specific user.
- *
- * This returns an array with maps containing each tag's properties:
- * [
- * ['id' => 0, 'name' = 'First tag', 'owner' = 'User', 'type' => 'tagtype'],
- * ['id' => 1, 'name' = 'Shared tag', 'owner' = 'Other user', 'type' => 'tagtype'],
- * ]
- *
- * @return array
- */
+ * Get the tags for a specific user.
+ *
+ * This returns an array with maps containing each tag's properties:
+ * [
+ * ['id' => 0, 'name' = 'First tag', 'owner' = 'User', 'type' => 'tagtype'],
+ * ['id' => 1, 'name' = 'Shared tag', 'owner' = 'Other user', 'type' => 'tagtype'],
+ * ]
+ *
+ * @return array
+ */
public function getTags() {
- if(!count($this->tags)) {
- return array();
+ if (!count($this->tags)) {
+ return [];
}
- usort($this->tags, function($a, $b) {
+ usort($this->tags, function ($a, $b) {
return strnatcasecmp($a->getName(), $b->getName());
});
- $tagMap = array();
+ $tagMap = [];
- foreach($this->tags as $tag) {
- if($tag->getName() !== ITags::TAG_FAVORITE) {
+ foreach ($this->tags as $tag) {
+ if ($tag->getName() !== ITags::TAG_FAVORITE) {
$tagMap[] = $this->tagMap($tag);
}
}
return $tagMap;
-
}
/**
- * Return only the tags owned by the given user, omitting any tags shared
- * by other users.
- *
- * @param string $user The user whose tags are to be checked.
- * @return array An array of Tag objects.
- */
+ * Return only the tags owned by the given user, omitting any tags shared
+ * by other users.
+ *
+ * @param string $user The user whose tags are to be checked.
+ * @return array An array of Tag objects.
+ */
public function getTagsForUser($user) {
return array_filter($this->tags,
- function($tag) use($user) {
+ function ($tag) use ($user) {
return $tag->getOwner() === $user;
}
);
@@ -216,7 +214,7 @@ class Tags implements ITags {
* or false if an error occurred
*/
public function getTagsForObjects(array $objIds) {
- $entries = array();
+ $entries = [];
try {
$conn = \OC::$server->getDatabaseConnection();
@@ -226,13 +224,13 @@ class Tags implements ITags {
'SELECT `category`, `categoryid`, `objid` ' .
'FROM `' . self::RELATION_TABLE . '` r, `' . self::TAG_TABLE . '` ' .
'WHERE `categoryid` = `id` AND `uid` = ? AND r.`type` = ? AND `objid` IN (?)',
- array($this->user, $this->type, $chunk),
- array(null, null, IQueryBuilder::PARAM_INT_ARRAY)
+ [$this->user, $this->type, $chunk],
+ [null, null, IQueryBuilder::PARAM_INT_ARRAY]
);
while ($row = $result->fetch()) {
$objId = (int)$row['objid'];
if (!isset($entries[$objId])) {
- $entries[$objId] = array();
+ $entries[$objId] = [];
}
$entries[$objId][] = $row['category'];
}
@@ -241,7 +239,7 @@ class Tags implements ITags {
return false;
}
}
- } catch(\Exception $e) {
+ } catch (\Exception $e) {
\OC::$server->getLogger()->logException($e, [
'message' => __METHOD__,
'level' => ILogger::ERROR,
@@ -254,47 +252,47 @@ class Tags implements ITags {
}
/**
- * Get the a list if items tagged with $tag.
- *
- * Throws an exception if the tag could not be found.
- *
- * @param string $tag Tag id or name.
- * @return array|false An array of object ids or false on error.
- * @throws \Exception
- */
+ * Get the a list if items tagged with $tag.
+ *
+ * Throws an exception if the tag could not be found.
+ *
+ * @param string $tag Tag id or name.
+ * @return array|false An array of object ids or false on error.
+ * @throws \Exception
+ */
public function getIdsForTag($tag) {
$result = null;
$tagId = false;
- if(is_numeric($tag)) {
+ if (is_numeric($tag)) {
$tagId = $tag;
- } elseif(is_string($tag)) {
+ } elseif (is_string($tag)) {
$tag = trim($tag);
- if($tag === '') {
+ if ($tag === '') {
\OCP\Util::writeLog('core', __METHOD__.', Cannot use empty tag names', ILogger::DEBUG);
return false;
}
$tagId = $this->getTagId($tag);
}
- if($tagId === false) {
+ if ($tagId === false) {
$l10n = \OC::$server->getL10N('core');
throw new \Exception(
$l10n->t('Could not find category "%s"', [$tag])
);
}
- $ids = array();
+ $ids = [];
$sql = 'SELECT `objid` FROM `' . self::RELATION_TABLE
. '` WHERE `categoryid` = ?';
try {
$stmt = \OC_DB::prepare($sql);
- $result = $stmt->execute(array($tagId));
+ $result = $stmt->execute([$tagId]);
if ($result === null) {
\OCP\Util::writeLog('core', __METHOD__. 'DB error: ' . \OC::$server->getDatabaseConnection()->getError(), ILogger::ERROR);
return false;
}
- } catch(\Exception $e) {
+ } catch (\Exception $e) {
\OC::$server->getLogger()->logException($e, [
'message' => __METHOD__,
'level' => ILogger::ERROR,
@@ -303,8 +301,8 @@ class Tags implements ITags {
return false;
}
- if(!is_null($result)) {
- while( $row = $result->fetchRow()) {
+ if (!is_null($result)) {
+ while ($row = $result->fetchRow()) {
$id = (int)$row['objid'];
if ($this->includeShared) {
@@ -328,42 +326,42 @@ class Tags implements ITags {
}
/**
- * Checks whether a tag is saved for the given user,
- * disregarding the ones shared with him or her.
- *
- * @param string $name The tag name to check for.
- * @param string $user The user whose tags are to be checked.
- * @return bool
- */
+ * Checks whether a tag is saved for the given user,
+ * disregarding the ones shared with him or her.
+ *
+ * @param string $name The tag name to check for.
+ * @param string $user The user whose tags are to be checked.
+ * @return bool
+ */
public function userHasTag($name, $user) {
$key = $this->array_searchi($name, $this->getTagsForUser($user));
return ($key !== false) ? $this->tags[$key]->getId() : false;
}
/**
- * Checks whether a tag is saved for or shared with the current user.
- *
- * @param string $name The tag name to check for.
- * @return bool
- */
+ * Checks whether a tag is saved for or shared with the current user.
+ *
+ * @param string $name The tag name to check for.
+ * @return bool
+ */
public function hasTag($name) {
return $this->getTagId($name) !== false;
}
/**
- * Add a new tag.
- *
- * @param string $name A string with a name of the tag
- * @return false|int the id of the added tag or false on error.
- */
+ * Add a new tag.
+ *
+ * @param string $name A string with a name of the tag
+ * @return false|int the id of the added tag or false on error.
+ */
public function add($name) {
$name = trim($name);
- if($name === '') {
+ if ($name === '') {
\OCP\Util::writeLog('core', __METHOD__.', Cannot add an empty tag', ILogger::DEBUG);
return false;
}
- if($this->userHasTag($name, $this->user)) {
+ if ($this->userHasTag($name, $this->user)) {
\OCP\Util::writeLog('core', __METHOD__.', name: ' . $name. ' exists already', ILogger::DEBUG);
return false;
}
@@ -371,7 +369,7 @@ class Tags implements ITags {
$tag = new Tag($this->user, $this->type, $name);
$tag = $this->mapper->insert($tag);
$this->tags[] = $tag;
- } catch(\Exception $e) {
+ } catch (\Exception $e) {
\OC::$server->getLogger()->logException($e, [
'message' => __METHOD__,
'level' => ILogger::ERROR,
@@ -384,17 +382,17 @@ class Tags implements ITags {
}
/**
- * Rename tag.
- *
- * @param string|integer $from The name or ID of the existing tag
- * @param string $to The new name of the tag.
- * @return bool
- */
+ * Rename tag.
+ *
+ * @param string|integer $from The name or ID of the existing tag
+ * @param string $to The new name of the tag.
+ * @return bool
+ */
public function rename($from, $to) {
$from = trim($from);
$to = trim($to);
- if($to === '' || $from === '') {
+ if ($to === '' || $from === '') {
\OCP\Util::writeLog('core', __METHOD__.', Cannot use empty tag names', ILogger::DEBUG);
return false;
}
@@ -404,13 +402,13 @@ class Tags implements ITags {
} else {
$key = $this->getTagByName($from);
}
- if($key === false) {
+ if ($key === false) {
\OCP\Util::writeLog('core', __METHOD__.', tag: ' . $from. ' does not exist', ILogger::DEBUG);
return false;
}
$tag = $this->tags[$key];
- if($this->userHasTag($to, $tag->getOwner())) {
+ if ($this->userHasTag($to, $tag->getOwner())) {
\OCP\Util::writeLog('core', __METHOD__.', A tag named ' . $to. ' already exists for user ' . $tag->getOwner() . '.', ILogger::DEBUG);
return false;
}
@@ -418,7 +416,7 @@ class Tags implements ITags {
try {
$tag->setName($to);
$this->tags[$key] = $this->mapper->update($tag);
- } catch(\Exception $e) {
+ } catch (\Exception $e) {
\OC::$server->getLogger()->logException($e, [
'message' => __METHOD__,
'level' => ILogger::ERROR,
@@ -430,33 +428,33 @@ class Tags implements ITags {
}
/**
- * Add a list of new tags.
- *
- * @param string[] $names A string with a name or an array of strings containing
- * the name(s) of the tag(s) to add.
- * @param bool $sync When true, save the tags
- * @param int|null $id int Optional object id to add to this|these tag(s)
- * @return bool Returns false on error.
- */
+ * Add a list of new tags.
+ *
+ * @param string[] $names A string with a name or an array of strings containing
+ * the name(s) of the tag(s) to add.
+ * @param bool $sync When true, save the tags
+ * @param int|null $id int Optional object id to add to this|these tag(s)
+ * @return bool Returns false on error.
+ */
public function addMultiple($names, $sync=false, $id = null) {
- if(!is_array($names)) {
- $names = array($names);
+ if (!is_array($names)) {
+ $names = [$names];
}
$names = array_map('trim', $names);
array_filter($names);
- $newones = array();
- foreach($names as $name) {
- if(!$this->hasTag($name) && $name !== '') {
+ $newones = [];
+ foreach ($names as $name) {
+ if (!$this->hasTag($name) && $name !== '') {
$newones[] = new Tag($this->user, $this->type, $name);
}
- if(!is_null($id) ) {
+ if (!is_null($id)) {
// Insert $objectid, $categoryid pairs if not exist.
- self::$relations[] = array('objid' => $id, 'tag' => $name);
+ self::$relations[] = ['objid' => $id, 'tag' => $name];
}
}
$this->tags = array_merge($this->tags, $newones);
- if($sync === true) {
+ if ($sync === true) {
$this->save();
}
@@ -467,13 +465,13 @@ class Tags implements ITags {
* Save the list of tags and their object relations
*/
protected function save() {
- if(is_array($this->tags)) {
- foreach($this->tags as $tag) {
+ if (is_array($this->tags)) {
+ foreach ($this->tags as $tag) {
try {
if (!$this->mapper->tagExists($tag)) {
$this->mapper->insert($tag);
}
- } catch(\Exception $e) {
+ } catch (\Exception $e) {
\OC::$server->getLogger()->logException($e, [
'message' => __METHOD__,
'level' => ILogger::ERROR,
@@ -492,18 +490,18 @@ class Tags implements ITags {
// For some reason this is needed or array_search(i) will return 0..?
ksort($tags);
$dbConnection = \OC::$server->getDatabaseConnection();
- foreach(self::$relations as $relation) {
+ foreach (self::$relations as $relation) {
$tagId = $this->getTagId($relation['tag']);
\OCP\Util::writeLog('core', __METHOD__ . 'catid, ' . $relation['tag'] . ' ' . $tagId, ILogger::DEBUG);
- if($tagId) {
+ if ($tagId) {
try {
$dbConnection->insertIfNotExist(self::RELATION_TABLE,
- array(
+ [
'objid' => $relation['objid'],
'categoryid' => $tagId,
'type' => $this->type,
- ));
- } catch(\Exception $e) {
+ ]);
+ } catch (\Exception $e) {
\OC::$server->getLogger()->logException($e, [
'message' => __METHOD__,
'level' => ILogger::ERROR,
@@ -512,7 +510,7 @@ class Tags implements ITags {
}
}
}
- self::$relations = array(); // reset
+ self::$relations = []; // reset
} else {
\OCP\Util::writeLog('core', __METHOD__.', $this->tags is not an array! '
. print_r($this->tags, true), ILogger::ERROR);
@@ -520,23 +518,23 @@ class Tags implements ITags {
}
/**
- * Delete tags and tag/object relations for a user.
- *
- * For hooking up on post_deleteUser
- *
- * @param array $arguments
- */
+ * Delete tags and tag/object relations for a user.
+ *
+ * For hooking up on post_deleteUser
+ *
+ * @param array $arguments
+ */
public static function post_deleteUser($arguments) {
// Find all objectid/tagId pairs.
$result = null;
try {
$stmt = \OC_DB::prepare('SELECT `id` FROM `' . self::TAG_TABLE . '` '
. 'WHERE `uid` = ?');
- $result = $stmt->execute(array($arguments['uid']));
+ $result = $stmt->execute([$arguments['uid']]);
if ($result === null) {
\OCP\Util::writeLog('core', __METHOD__. 'DB error: ' . \OC::$server->getDatabaseConnection()->getError(), ILogger::ERROR);
}
- } catch(\Exception $e) {
+ } catch (\Exception $e) {
\OC::$server->getLogger()->logException($e, [
'message' => __METHOD__,
'level' => ILogger::ERROR,
@@ -544,14 +542,14 @@ class Tags implements ITags {
]);
}
- if(!is_null($result)) {
+ if (!is_null($result)) {
try {
$stmt = \OC_DB::prepare('DELETE FROM `' . self::RELATION_TABLE . '` '
. 'WHERE `categoryid` = ?');
- while( $row = $result->fetchRow()) {
+ while ($row = $result->fetchRow()) {
try {
- $stmt->execute(array($row['id']));
- } catch(\Exception $e) {
+ $stmt->execute([$row['id']]);
+ } catch (\Exception $e) {
\OC::$server->getLogger()->logException($e, [
'message' => __METHOD__,
'level' => ILogger::ERROR,
@@ -559,7 +557,7 @@ class Tags implements ITags {
]);
}
}
- } catch(\Exception $e) {
+ } catch (\Exception $e) {
\OC::$server->getLogger()->logException($e, [
'message' => __METHOD__,
'level' => ILogger::ERROR,
@@ -570,11 +568,11 @@ class Tags implements ITags {
try {
$stmt = \OC_DB::prepare('DELETE FROM `' . self::TAG_TABLE . '` '
. 'WHERE `uid` = ?');
- $result = $stmt->execute(array($arguments['uid']));
+ $result = $stmt->execute([$arguments['uid']]);
if ($result === null) {
\OCP\Util::writeLog('core', __METHOD__. ', DB error: ' . \OC::$server->getDatabaseConnection()->getError(), ILogger::ERROR);
}
- } catch(\Exception $e) {
+ } catch (\Exception $e) {
\OC::$server->getLogger()->logException($e, [
'message' => __METHOD__,
'level' => ILogger::ERROR,
@@ -584,13 +582,13 @@ class Tags implements ITags {
}
/**
- * Delete tag/object relations from the db
- *
- * @param array $ids The ids of the objects
- * @return boolean Returns false on error.
- */
+ * Delete tag/object relations from the db
+ *
+ * @param array $ids The ids of the objects
+ * @return boolean Returns false on error.
+ */
public function purgeObjects(array $ids) {
- if(count($ids) === 0) {
+ if (count($ids) === 0) {
// job done ;)
return true;
}
@@ -606,7 +604,7 @@ class Tags implements ITags {
\OCP\Util::writeLog('core', __METHOD__. 'DB error: ' . \OC::$server->getDatabaseConnection()->getError(), ILogger::ERROR);
return false;
}
- } catch(\Exception $e) {
+ } catch (\Exception $e) {
\OC::$server->getLogger()->logException($e, [
'message' => __METHOD__,
'level' => ILogger::ERROR,
@@ -618,65 +616,65 @@ class Tags implements ITags {
}
/**
- * Get favorites for an object type
- *
- * @return array|false An array of object ids.
- */
+ * Get favorites for an object type
+ *
+ * @return array|false An array of object ids.
+ */
public function getFavorites() {
- if(!$this->userHasTag(ITags::TAG_FAVORITE, $this->user)) {
+ if (!$this->userHasTag(ITags::TAG_FAVORITE, $this->user)) {
return [];
}
try {
return $this->getIdsForTag(ITags::TAG_FAVORITE);
- } catch(\Exception $e) {
+ } catch (\Exception $e) {
\OC::$server->getLogger()->logException($e, [
'message' => __METHOD__,
'level' => ILogger::ERROR,
'app' => 'core',
]);
- return array();
+ return [];
}
}
/**
- * Add an object to favorites
- *
- * @param int $objid The id of the object
- * @return boolean
- */
+ * Add an object to favorites
+ *
+ * @param int $objid The id of the object
+ * @return boolean
+ */
public function addToFavorites($objid) {
- if(!$this->userHasTag(ITags::TAG_FAVORITE, $this->user)) {
+ if (!$this->userHasTag(ITags::TAG_FAVORITE, $this->user)) {
$this->add(ITags::TAG_FAVORITE);
}
return $this->tagAs($objid, ITags::TAG_FAVORITE);
}
/**
- * Remove an object from favorites
- *
- * @param int $objid The id of the object
- * @return boolean
- */
+ * Remove an object from favorites
+ *
+ * @param int $objid The id of the object
+ * @return boolean
+ */
public function removeFromFavorites($objid) {
return $this->unTag($objid, ITags::TAG_FAVORITE);
}
/**
- * Creates a tag/object relation.
- *
- * @param int $objid The id of the object
- * @param string $tag The id or name of the tag
- * @return boolean Returns false on error.
- */
+ * Creates a tag/object relation.
+ *
+ * @param int $objid The id of the object
+ * @param string $tag The id or name of the tag
+ * @return boolean Returns false on error.
+ */
public function tagAs($objid, $tag) {
- if(is_string($tag) && !is_numeric($tag)) {
+ if (is_string($tag) && !is_numeric($tag)) {
$tag = trim($tag);
- if($tag === '') {
+ if ($tag === '') {
\OCP\Util::writeLog('core', __METHOD__.', Cannot add an empty tag', ILogger::DEBUG);
return false;
}
- if(!$this->hasTag($tag)) {
+ if (!$this->hasTag($tag)) {
$this->add($tag);
}
$tagId = $this->getTagId($tag);
@@ -685,12 +683,12 @@ class Tags implements ITags {
}
try {
\OC::$server->getDatabaseConnection()->insertIfNotExist(self::RELATION_TABLE,
- array(
+ [
'objid' => $objid,
'categoryid' => $tagId,
'type' => $this->type,
- ));
- } catch(\Exception $e) {
+ ]);
+ } catch (\Exception $e) {
\OC::$server->getLogger()->logException($e, [
'message' => __METHOD__,
'level' => ILogger::ERROR,
@@ -702,16 +700,16 @@ class Tags implements ITags {
}
/**
- * Delete single tag/object relation from the db
- *
- * @param int $objid The id of the object
- * @param string $tag The id or name of the tag
- * @return boolean
- */
+ * Delete single tag/object relation from the db
+ *
+ * @param int $objid The id of the object
+ * @param string $tag The id or name of the tag
+ * @return boolean
+ */
public function unTag($objid, $tag) {
- if(is_string($tag) && !is_numeric($tag)) {
+ if (is_string($tag) && !is_numeric($tag)) {
$tag = trim($tag);
- if($tag === '') {
+ if ($tag === '') {
\OCP\Util::writeLog('core', __METHOD__.', Tag name is empty', ILogger::DEBUG);
return false;
}
@@ -724,8 +722,8 @@ class Tags implements ITags {
$sql = 'DELETE FROM `' . self::RELATION_TABLE . '` '
. 'WHERE `objid` = ? AND `categoryid` = ? AND `type` = ?';
$stmt = \OC_DB::prepare($sql);
- $stmt->execute(array($objid, $tagId, $this->type));
- } catch(\Exception $e) {
+ $stmt->execute([$objid, $tagId, $this->type]);
+ } catch (\Exception $e) {
\OC::$server->getLogger()->logException($e, [
'message' => __METHOD__,
'level' => ILogger::ERROR,
@@ -737,14 +735,14 @@ class Tags implements ITags {
}
/**
- * Delete tags from the database.
- *
- * @param string[]|integer[] $names An array of tags (names or IDs) to delete
- * @return bool Returns false on error
- */
+ * Delete tags from the database.
+ *
+ * @param string[]|integer[] $names An array of tags (names or IDs) to delete
+ * @return bool Returns false on error
+ */
public function delete($names) {
- if(!is_array($names)) {
- $names = array($names);
+ if (!is_array($names)) {
+ $names = [$names];
}
$names = array_map('trim', $names);
@@ -752,7 +750,7 @@ class Tags implements ITags {
\OCP\Util::writeLog('core', __METHOD__ . ', before: '
. print_r($this->tags, true), ILogger::DEBUG);
- foreach($names as $name) {
+ foreach ($names as $name) {
$id = null;
if (is_numeric($name)) {
@@ -769,19 +767,19 @@ class Tags implements ITags {
\OCP\Util::writeLog('core', __METHOD__ . 'Cannot delete tag ' . $name
. ': not found.', ILogger::ERROR);
}
- if(!is_null($id) && $id !== false) {
+ if (!is_null($id) && $id !== false) {
try {
$sql = 'DELETE FROM `' . self::RELATION_TABLE . '` '
. 'WHERE `categoryid` = ?';
$stmt = \OC_DB::prepare($sql);
- $result = $stmt->execute(array($id));
+ $result = $stmt->execute([$id]);
if ($result === null) {
\OCP\Util::writeLog('core',
__METHOD__. 'DB error: ' . \OC::$server->getDatabaseConnection()->getError(),
ILogger::ERROR);
return false;
}
- } catch(\Exception $e) {
+ } catch (\Exception $e) {
\OC::$server->getLogger()->logException($e, [
'message' => __METHOD__,
'level' => ILogger::ERROR,
@@ -796,22 +794,22 @@ class Tags implements ITags {
// case-insensitive array_search
protected function array_searchi($needle, $haystack, $mem='getName') {
- if(!is_array($haystack)) {
+ if (!is_array($haystack)) {
return false;
}
return array_search(strtolower($needle), array_map(
- function($tag) use($mem) {
- return strtolower(call_user_func(array($tag, $mem)));
+ function ($tag) use ($mem) {
+ return strtolower(call_user_func([$tag, $mem]));
}, $haystack)
);
}
/**
- * Get a tag's ID.
- *
- * @param string $name The tag name to look for.
- * @return string|bool The tag's id or false if no matching tag is found.
- */
+ * Get a tag's ID.
+ *
+ * @param string $name The tag name to look for.
+ * @return string|bool The tag's id or false if no matching tag is found.
+ */
private function getTagId($name) {
$key = $this->array_searchi($name, $this->tags);
if ($key !== false) {
@@ -821,40 +819,40 @@ class Tags implements ITags {
}
/**
- * Get a tag by its name.
- *
- * @param string $name The tag name.
- * @return integer|bool The tag object's offset within the $this->tags
- * array or false if it doesn't exist.
- */
+ * Get a tag by its name.
+ *
+ * @param string $name The tag name.
+ * @return integer|bool The tag object's offset within the $this->tags
+ * array or false if it doesn't exist.
+ */
private function getTagByName($name) {
return $this->array_searchi($name, $this->tags, 'getName');
}
/**
- * Get a tag by its ID.
- *
- * @param string $id The tag ID to look for.
- * @return integer|bool The tag object's offset within the $this->tags
- * array or false if it doesn't exist.
- */
+ * Get a tag by its ID.
+ *
+ * @param string $id The tag ID to look for.
+ * @return integer|bool The tag object's offset within the $this->tags
+ * array or false if it doesn't exist.
+ */
private function getTagById($id) {
return $this->array_searchi($id, $this->tags, 'getId');
}
/**
- * Returns an array mapping a given tag's properties to its values:
- * ['id' => 0, 'name' = 'Tag', 'owner' = 'User', 'type' => 'tagtype']
- *
- * @param Tag $tag The tag that is going to be mapped
- * @return array
- */
+ * Returns an array mapping a given tag's properties to its values:
+ * ['id' => 0, 'name' = 'Tag', 'owner' = 'User', 'type' => 'tagtype']
+ *
+ * @param Tag $tag The tag that is going to be mapped
+ * @return array
+ */
private function tagMap(Tag $tag) {
- return array(
+ return [
'id' => $tag->getId(),
'name' => $tag->getName(),
'owner' => $tag->getOwner(),
'type' => $tag->getType()
- );
+ ];
}
}
diff --git a/lib/private/TempManager.php b/lib/private/TempManager.php
index cb5f51582ac..49d4ee94cf6 100644
--- a/lib/private/TempManager.php
+++ b/lib/private/TempManager.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lars <winnetou+github@catolic.de>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Martin Mattel <martin.mattel@diemattels.at>
@@ -45,7 +46,7 @@ class TempManager implements ITempManager {
protected $config;
/** Prefix */
- const TMP_PREFIX = 'oc_tmp_';
+ public const TMP_PREFIX = 'oc_tmp_';
/**
* @param \OCP\ILogger $logger
@@ -66,7 +67,7 @@ class TempManager implements ITempManager {
* @return string
*/
private function buildFileNameWithSuffix($absolutePath, $postFix = '') {
- if($postFix !== '') {
+ if ($postFix !== '') {
$postFix = '.' . ltrim($postFix, '.');
$postFix = str_replace(['\\', '/'], '', $postFix);
$absolutePath .= '-';
@@ -92,7 +93,7 @@ class TempManager implements ITempManager {
// If a postfix got specified sanitize it and create a postfixed
// temporary file
- if($postFix !== '') {
+ if ($postFix !== '') {
$fileNameWithPostfix = $this->buildFileNameWithSuffix($file, $postFix);
touch($fileNameWithPostfix);
chmod($fileNameWithPostfix, 0600);
@@ -276,5 +277,4 @@ class TempManager implements ITempManager {
public function overrideTempBaseDir($directory) {
$this->tmpBaseDir = $directory;
}
-
}
diff --git a/lib/private/Template/Base.php b/lib/private/Template/Base.php
index dab4e9d9086..04d03b6e6f5 100644
--- a/lib/private/Template/Base.php
+++ b/lib/private/Template/Base.php
@@ -5,6 +5,7 @@
* @author Bart Visscher <bartv@thisnet.nl>
* @author Björn Schießle <bjoern@schiessle.org>
* @author Christopher Schäpers <kondou@ts.unde.re>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Julius Härtl <jus@bitgrid.net>
* @author Lukas Reschke <lukas@statuscode.ch>
@@ -47,8 +48,8 @@ class Base {
* @param \OCP\IL10N $l10n
* @param Defaults $theme
*/
- public function __construct($template, $requestToken, $l10n, $theme ) {
- $this->vars = array();
+ public function __construct($template, $requestToken, $l10n, $theme) {
+ $this->vars = [];
$this->vars['requesttoken'] = $requestToken;
$this->l10n = $l10n;
$this->template = $template;
@@ -64,7 +65,7 @@ class Base {
*/
protected function getAppTemplateDirs($theme, $app, $serverRoot, $app_dir) {
// Check if the app is in the app folder or in the root
- if( file_exists($app_dir.'/templates/' )) {
+ if (file_exists($app_dir.'/templates/')) {
return [
$serverRoot.'/themes/'.$theme.'/apps/'.$app.'/templates/',
$app_dir.'/templates/',
@@ -99,7 +100,7 @@ class Base {
*
* If the key existed before, it will be overwritten
*/
- public function assign( $key, $value) {
+ public function assign($key, $value) {
$this->vars[$key] = $value;
return true;
}
@@ -113,12 +114,11 @@ class Base {
* exists, the value will be appended. It can be accessed via
* $_[$key][$position] in the template.
*/
- public function append( $key, $value ) {
- if( array_key_exists( $key, $this->vars )) {
+ public function append($key, $value) {
+ if (array_key_exists($key, $this->vars)) {
$this->vars[$key][] = $value;
- }
- else{
- $this->vars[$key] = array( $value );
+ } else {
+ $this->vars[$key] = [ $value ];
}
}
@@ -130,10 +130,9 @@ class Base {
*/
public function printPage() {
$data = $this->fetchPage();
- if( $data === false ) {
+ if ($data === false) {
return false;
- }
- else{
+ } else {
print $data;
return true;
}
@@ -166,8 +165,8 @@ class Base {
$l = $this->l10n;
$theme = $this->theme;
- if(!is_null($additionalParams)) {
- $_ = array_merge( $additionalParams, $this->vars );
+ if (!is_null($additionalParams)) {
+ $_ = array_merge($additionalParams, $this->vars);
foreach ($_ as $var => $value) {
${$var} = $value;
}
@@ -187,5 +186,4 @@ class Base {
// Return data
return $data;
}
-
}
diff --git a/lib/private/Template/CSSResourceLocator.php b/lib/private/Template/CSSResourceLocator.php
index 94eac48b61f..750d33fd726 100644
--- a/lib/private/Template/CSSResourceLocator.php
+++ b/lib/private/Template/CSSResourceLocator.php
@@ -4,6 +4,7 @@
*
* @author Axel Helmert <axel.helmert@luka.de>
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
* @author Kyle Fazzari <kyrofa@ubuntu.com>
@@ -82,7 +83,7 @@ class CSSResourceLocator extends ResourceLocator {
// turned into cwd.
$app_path = realpath($app_path);
- if(!$this->cacheAndAppendScssIfExist($app_path, $style.'.scss', $app)) {
+ if (!$this->cacheAndAppendScssIfExist($app_path, $style.'.scss', $app)) {
$this->append($app_path, $style.'.css', $app_url);
}
}
@@ -106,9 +107,8 @@ class CSSResourceLocator extends ResourceLocator {
*/
protected function cacheAndAppendScssIfExist($root, $file, $app = 'core') {
if (is_file($root.'/'.$file)) {
- if($this->scssCacher !== null) {
- if($this->scssCacher->process($root, $file, $app)) {
-
+ if ($this->scssCacher !== null) {
+ if ($this->scssCacher->process($root, $file, $app)) {
$this->append($root, $this->scssCacher->getCachedSCSS($app, $file), \OC::$WEBROOT, true, true);
return true;
} else {
@@ -145,7 +145,7 @@ class CSSResourceLocator extends ResourceLocator {
}
}
- $this->resources[] = array($webRoot? : \OC::$WEBROOT, $webRoot, $file);
+ $this->resources[] = [$webRoot? : \OC::$WEBROOT, $webRoot, $file];
}
}
}
diff --git a/lib/private/Template/IconsCacher.php b/lib/private/Template/IconsCacher.php
index 3315f29d98f..f9497c9a144 100644
--- a/lib/private/Template/IconsCacher.php
+++ b/lib/private/Template/IconsCacher.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
* @author Julius Härtl <jus@bitgrid.net>
@@ -107,7 +108,6 @@ class IconsCacher {
* @throws \OCP\Files\NotPermittedException
*/
public function setIconsCss(string $css): string {
-
$cachedFile = $this->getCachedList();
if (!$cachedFile) {
$currentData = '';
@@ -169,14 +169,13 @@ class IconsCacher {
$location = \OC::$SERVERROOT . '/core/img/' . $cleanUrl . '.svg';
}
} elseif (\strpos($url, $base) === 0) {
- if(\preg_match('/([A-z0-9\_\-]+)\/([a-zA-Z0-9-_\~\/\.\=\:\;\+\,]+)\?color=([0-9a-fA-F]{3,6})/', $cleanUrl, $matches)) {
+ if (\preg_match('/([A-z0-9\_\-]+)\/([a-zA-Z0-9-_\~\/\.\=\:\;\+\,]+)\?color=([0-9a-fA-F]{3,6})/', $cleanUrl, $matches)) {
list(,$app,$cleanUrl, $color) = $matches;
$location = \OC_App::getAppPath($app) . '/img/' . $cleanUrl . '.svg';
if ($app === 'settings') {
$location = \OC::$SERVERROOT . '/settings/img/' . $cleanUrl . '.svg';
}
}
-
}
return [
$location,
@@ -265,5 +264,4 @@ class IconsCacher {
$linkToCSS = $this->urlGenerator->linkToRoute('core.Css.getCss', ['appName' => 'icons', 'fileName' => $this->fileName, 'v' => $mtime]);
\OC_Util::addHeader('link', ['rel' => 'stylesheet', 'href' => $linkToCSS], null, true);
}
-
}
diff --git a/lib/private/Template/JSCombiner.php b/lib/private/Template/JSCombiner.php
index a6908ce8071..48f6dadfd6a 100644
--- a/lib/private/Template/JSCombiner.php
+++ b/lib/private/Template/JSCombiner.php
@@ -2,6 +2,7 @@
/**
* @copyright 2017, Roeland Jago Douma <roeland@famdouma.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Julius Härtl <jus@bitgrid.net>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -94,12 +95,12 @@ class JSCombiner {
try {
$folder = $this->appData->getFolder($app);
- } catch(NotFoundException $e) {
+ } catch (NotFoundException $e) {
// creating css appdata folder
$folder = $this->appData->newFolder($app);
}
- if($this->isCached($fileName, $folder)) {
+ if ($this->isCached($fileName, $folder)) {
return true;
}
return $this->cache($path, $fileName, $folder);
@@ -133,7 +134,7 @@ class JSCombiner {
$deps = json_decode($deps, true);
- if ($deps === NULL) {
+ if ($deps === null) {
return false;
}
@@ -144,7 +145,7 @@ class JSCombiner {
}
return true;
- } catch(NotFoundException $e) {
+ } catch (NotFoundException $e) {
return false;
}
}
@@ -175,7 +176,7 @@ class JSCombiner {
$fileName = str_replace('.json', '.js', $fileName);
try {
$cachedfile = $folder->getFile($fileName);
- } catch(NotFoundException $e) {
+ } catch (NotFoundException $e) {
$cachedfile = $folder->newFile($fileName);
}
@@ -216,7 +217,7 @@ class JSCombiner {
$fileName = array_pop($tmpfileLoc);
$fileName = str_replace('.json', '.js', $fileName);
- return substr($this->urlGenerator->linkToRoute('core.Js.getJs', array('fileName' => $fileName, 'appName' => $appName)), strlen(\OC::$WEBROOT) + 1);
+ return substr($this->urlGenerator->linkToRoute('core.Js.getJs', ['fileName' => $fileName, 'appName' => $appName]), strlen(\OC::$WEBROOT) + 1);
}
/**
@@ -227,7 +228,7 @@ class JSCombiner {
public function getContent($root, $file) {
/** @var array $data */
$data = json_decode(file_get_contents($root . '/' . $file));
- if(!is_array($data)) {
+ if (!is_array($data)) {
return [];
}
diff --git a/lib/private/Template/JSConfigHelper.php b/lib/private/Template/JSConfigHelper.php
index ec11e8456d1..385afffdfa6 100644
--- a/lib/private/Template/JSConfigHelper.php
+++ b/lib/private/Template/JSConfigHelper.php
@@ -5,7 +5,6 @@
* @author Abijeet <abijeetpatro@gmail.com>
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
- * @author Felix Heidecke <felix@heidecke.me>
* @author Joas Schilling <coding@schilljs.com>
* @author Julius Härtl <jus@bitgrid.net>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -37,6 +36,7 @@ use OCP\App\IAppManager;
use OCP\Defaults;
use OCP\IConfig;
use OCP\IGroupManager;
+use OCP\IInitialStateService;
use OCP\IL10N;
use OCP\ISession;
use OCP\IURLGenerator;
@@ -75,6 +75,9 @@ class JSConfigHelper {
/** @var CapabilitiesManager */
private $capabilitiesManager;
+ /** @var IInitialStateService */
+ private $initialStateService;
+
/** @var array user back-ends excluded from password verification */
private $excludedUserBackEnds = ['user_saml' => true, 'user_globalsiteselector' => true];
@@ -99,7 +102,8 @@ class JSConfigHelper {
IGroupManager $groupManager,
IniGetWrapper $iniWrapper,
IURLGenerator $urlGenerator,
- CapabilitiesManager $capabilitiesManager) {
+ CapabilitiesManager $capabilitiesManager,
+ IInitialStateService $initialStateService) {
$this->l = $l;
$this->defaults = $defaults;
$this->appManager = $appManager;
@@ -110,10 +114,10 @@ class JSConfigHelper {
$this->iniWrapper = $iniWrapper;
$this->urlGenerator = $urlGenerator;
$this->capabilitiesManager = $capabilitiesManager;
+ $this->initialStateService = $initialStateService;
}
public function getConfig() {
-
$userBackendAllowsPasswordConfirmation = true;
if ($this->currentUser !== null) {
$uid = $this->currentUser->getUID();
@@ -121,7 +125,7 @@ class JSConfigHelper {
$backend = $this->currentUser->getBackend();
if ($backend instanceof IPasswordConfirmationBackend) {
$userBackendAllowsPasswordConfirmation = $backend->canConfirmPassword($uid);
- } else if (isset($this->excludedUserBackEnds[$this->currentUser->getBackendClassName()])) {
+ } elseif (isset($this->excludedUserBackEnds[$this->currentUser->getBackendClassName()])) {
$userBackendAllowsPasswordConfirmation = false;
}
} else {
@@ -137,7 +141,7 @@ class JSConfigHelper {
$apps = $this->appManager->getEnabledAppsForUser($this->currentUser);
}
- foreach($apps as $app) {
+ foreach ($apps as $app) {
$apps_paths[$app] = \OC_App::getAppWebPath($app);
}
@@ -147,7 +151,7 @@ class JSConfigHelper {
$defaultExpireDateEnabled = $this->config->getAppValue('core', 'shareapi_default_expire_date', 'no') === 'yes';
$defaultExpireDate = $enforceDefaultExpireDate = null;
if ($defaultExpireDateEnabled) {
- $defaultExpireDate = (int) $this->config->getAppValue('core', 'shareapi_expire_after_n_days', '7');
+ $defaultExpireDate = (int)$this->config->getAppValue('core', 'shareapi_expire_after_n_days', '7');
$enforceDefaultExpireDate = $this->config->getAppValue('core', 'shareapi_enforce_expire_date', 'no') === 'yes';
}
$outgoingServer2serverShareEnabled = $this->config->getAppValue('files_sharing', 'outgoing_server2server_share_enabled', 'yes') === 'yes';
@@ -155,13 +159,13 @@ class JSConfigHelper {
$defaultInternalExpireDateEnabled = $this->config->getAppValue('core', 'shareapi_default_internal_expire_date', 'no') === 'yes';
$defaultInternalExpireDate = $defaultInternalExpireDateEnforced = null;
if ($defaultInternalExpireDateEnabled) {
- $defaultInternalExpireDate = (int) $this->config->getAppValue('core', 'shareapi_internal_expire_after_n_days', '7');
+ $defaultInternalExpireDate = (int)$this->config->getAppValue('core', 'shareapi_internal_expire_after_n_days', '7');
$defaultInternalExpireDateEnforced = $this->config->getAppValue('core', 'shareapi_internal_enforce_expire_date', 'no') === 'yes';
}
$countOfDataLocation = 0;
- $dataLocation = str_replace(\OC::$SERVERROOT .'/', '', $this->config->getSystemValue('datadirectory', ''), $countOfDataLocation);
- if($countOfDataLocation !== 1 || !$this->groupManager->isAdmin($uid)) {
+ $dataLocation = str_replace(\OC::$SERVERROOT . '/', '', $this->config->getSystemValue('datadirectory', ''), $countOfDataLocation);
+ if ($countOfDataLocation !== 1 || !$this->groupManager->isAdmin($uid)) {
$dataLocation = false;
}
@@ -176,17 +180,31 @@ class JSConfigHelper {
$capabilities = $this->capabilitiesManager->getCapabilities();
+ $config = [
+ 'session_lifetime' => min($this->config->getSystemValue('session_lifetime', $this->iniWrapper->getNumeric('session.gc_maxlifetime')), $this->iniWrapper->getNumeric('session.gc_maxlifetime')),
+ 'session_keepalive' => $this->config->getSystemValue('session_keepalive', true),
+ 'auto_logout' => $this->config->getSystemValue('auto_logout', false),
+ 'version' => implode('.', \OCP\Util::getVersion()),
+ 'versionstring' => \OC_Util::getVersionString(),
+ 'enable_avatars' => true, // here for legacy reasons - to not crash existing code that relies on this value
+ 'lost_password_link' => $this->config->getSystemValue('lost_password_link', null),
+ 'modRewriteWorking' => $this->config->getSystemValue('htaccess.IgnoreFrontController', false) === true || getenv('front_controller_active') === 'true',
+ 'sharing.maxAutocompleteResults' => (int)$this->config->getSystemValue('sharing.maxAutocompleteResults', 0),
+ 'sharing.minSearchStringLength' => (int)$this->config->getSystemValue('sharing.minSearchStringLength', 0),
+ 'blacklist_files_regex' => \OCP\Files\FileInfo::BLACKLIST_FILES_REGEX,
+ ];
+
$array = [
"_oc_debug" => $this->config->getSystemValue('debug', false) ? 'true' : 'false',
"_oc_isadmin" => $this->groupManager->isAdmin($uid) ? 'true' : 'false',
"backendAllowsPasswordConfirmation" => $userBackendAllowsPasswordConfirmation ? 'true' : 'false',
- "oc_dataURL" => is_string($dataLocation) ? "\"".$dataLocation."\"" : 'false',
- "_oc_webroot" => "\"".\OC::$WEBROOT."\"",
- "_oc_appswebroots" => str_replace('\\/', '/', json_encode($apps_paths)), // Ugly unescape slashes waiting for better solution
+ "oc_dataURL" => is_string($dataLocation) ? "\"" . $dataLocation . "\"" : 'false',
+ "_oc_webroot" => "\"" . \OC::$WEBROOT . "\"",
+ "_oc_appswebroots" => str_replace('\\/', '/', json_encode($apps_paths)), // Ugly unescape slashes waiting for better solution
"datepickerFormatDate" => json_encode($this->l->l('jsdate', null)),
'nc_lastLogin' => $lastConfirmTimestamp,
'nc_pageLoad' => time(),
- "dayNames" => json_encode([
+ "dayNames" => json_encode([
(string)$this->l->t('Sunday'),
(string)$this->l->t('Monday'),
(string)$this->l->t('Tuesday'),
@@ -195,7 +213,7 @@ class JSConfigHelper {
(string)$this->l->t('Friday'),
(string)$this->l->t('Saturday')
]),
- "dayNamesShort" => json_encode([
+ "dayNamesShort" => json_encode([
(string)$this->l->t('Sun.'),
(string)$this->l->t('Mon.'),
(string)$this->l->t('Tue.'),
@@ -204,7 +222,7 @@ class JSConfigHelper {
(string)$this->l->t('Fri.'),
(string)$this->l->t('Sat.')
]),
- "dayNamesMin" => json_encode([
+ "dayNamesMin" => json_encode([
(string)$this->l->t('Su'),
(string)$this->l->t('Mo'),
(string)$this->l->t('Tu'),
@@ -241,19 +259,8 @@ class JSConfigHelper {
(string)$this->l->t('Nov.'),
(string)$this->l->t('Dec.')
]),
- "firstDay" => json_encode($this->l->l('firstday', null)) ,
- "_oc_config" => json_encode([
- 'session_lifetime' => min($this->config->getSystemValue('session_lifetime', $this->iniWrapper->getNumeric('session.gc_maxlifetime')), $this->iniWrapper->getNumeric('session.gc_maxlifetime')),
- 'session_keepalive' => $this->config->getSystemValue('session_keepalive', true),
- 'version' => implode('.', \OCP\Util::getVersion()),
- 'versionstring' => \OC_Util::getVersionString(),
- 'enable_avatars' => true, // here for legacy reasons - to not crash existing code that relies on this value
- 'lost_password_link'=> $this->config->getSystemValue('lost_password_link', null),
- 'modRewriteWorking' => $this->config->getSystemValue('htaccess.IgnoreFrontController', false) === true || getenv('front_controller_active') === 'true',
- 'sharing.maxAutocompleteResults' => (int)$this->config->getSystemValue('sharing.maxAutocompleteResults', 0),
- 'sharing.minSearchStringLength' => (int)$this->config->getSystemValue('sharing.minSearchStringLength', 0),
- 'blacklist_files_regex' => \OCP\Files\FileInfo::BLACKLIST_FILES_REGEX,
- ]),
+ "firstDay" => json_encode($this->l->l('firstday', null)),
+ "_oc_config" => json_encode($config),
"oc_appconfig" => json_encode([
'core' => [
'defaultExpireDateEnabled' => $defaultExpireDateEnabled,
@@ -297,8 +304,11 @@ class JSConfigHelper {
]);
}
+ $this->initialStateService->provideInitialState('core', 'config', $config);
+ $this->initialStateService->provideInitialState('core', 'capabilities', $capabilities);
+
// Allow hooks to modify the output values
- \OC_Hook::emit('\OCP\Config', 'js', array('array' => &$array));
+ \OC_Hook::emit('\OCP\Config', 'js', ['array' => &$array]);
$result = '';
diff --git a/lib/private/Template/JSResourceLocator.php b/lib/private/Template/JSResourceLocator.php
index 93fbbf7d55d..50af5fd34cc 100644
--- a/lib/private/Template/JSResourceLocator.php
+++ b/lib/private/Template/JSResourceLocator.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Kyle Fazzari <kyrofa@ubuntu.com>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -62,7 +63,7 @@ class JSResourceLocator extends ResourceLocator {
if ($found) {
return;
}
- } else if ($this->appendIfExist($this->serverroot, $theme_dir.'apps/'.$script.'.js')
+ } elseif ($this->appendIfExist($this->serverroot, $theme_dir.'apps/'.$script.'.js')
|| $this->appendIfExist($this->serverroot, $theme_dir.$script.'.js')
|| $this->appendIfExist($this->serverroot, $script.'.js')
|| $this->cacheAndAppendCombineJsonIfExist($this->serverroot, $script.'.json')
diff --git a/lib/private/Template/ResourceLocator.php b/lib/private/Template/ResourceLocator.php
index 22595df7964..1d9f60cf5dd 100755
--- a/lib/private/Template/ResourceLocator.php
+++ b/lib/private/Template/ResourceLocator.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
@@ -37,7 +38,7 @@ abstract class ResourceLocator {
protected $thirdpartyroot;
protected $webroot;
- protected $resources = array();
+ protected $resources = [];
/** @var \OCP\ILogger */
protected $logger;
@@ -163,7 +164,6 @@ abstract class ResourceLocator {
* @throws ResourceNotFoundException Only thrown when $throw is true and the resource is missing
*/
protected function append($root, $file, $webRoot = null, $throw = true) {
-
if (!is_string($root)) {
if ($throw) {
throw new ResourceNotFoundException($file, $webRoot);
@@ -185,7 +185,7 @@ abstract class ResourceLocator {
]);
}
}
- $this->resources[] = array($root, $webRoot, $file);
+ $this->resources[] = [$root, $webRoot, $file];
if ($throw && !is_file($root . '/' . $file)) {
throw new ResourceNotFoundException($file, $webRoot);
diff --git a/lib/private/Template/SCSSCacher.php b/lib/private/Template/SCSSCacher.php
index f571967ea1c..427588ddddf 100644
--- a/lib/private/Template/SCSSCacher.php
+++ b/lib/private/Template/SCSSCacher.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, John Molakvoæ (skjnldsv@protonmail.com)
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
* @author Julius Haertl <jus@bitgrid.net>
* @author Julius Härtl <jus@bitgrid.net>
diff --git a/lib/private/Template/TemplateFileLocator.php b/lib/private/Template/TemplateFileLocator.php
index f1f5fefc6f5..ae73b4d0dde 100644
--- a/lib/private/Template/TemplateFileLocator.php
+++ b/lib/private/Template/TemplateFileLocator.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -32,7 +33,7 @@ class TemplateFileLocator {
/**
* @param string[] $dirs
*/
- public function __construct( $dirs ) {
+ public function __construct($dirs) {
$this->dirs = $dirs;
}
@@ -41,12 +42,12 @@ class TemplateFileLocator {
* @return string
* @throws \Exception
*/
- public function find( $template ) {
+ public function find($template) {
if ($template === '') {
throw new \InvalidArgumentException('Empty template name');
}
- foreach($this->dirs as $dir) {
+ foreach ($this->dirs as $dir) {
$file = $dir.$template.'.php';
if (is_file($file)) {
$this->path = $dir;
diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php
index 8cecc17dbc1..1fbf0acb99c 100644
--- a/lib/private/TemplateLayout.php
+++ b/lib/private/TemplateLayout.php
@@ -5,6 +5,7 @@
* @author Bart Visscher <bartv@thisnet.nl>
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Christopher Schäpers <kondou@ts.unde.re>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Clark Tomlinson <fallen013@gmail.com>
* @author Daniel Calviño Sánchez <danxuliu@gmail.com>
* @author Guillaume COMPAGNON <gcompagnon@outlook.com>
@@ -22,7 +23,7 @@
* @author Robin Appelman <robin@icewind.nl>
* @author Robin McCorkell <robin@mccorkell.me.uk>
* @author Roeland Jago Douma <roeland@famdouma.nl>
- * @author Thomas Citharel <tcit@tcit.fr>
+ * @author Thomas Citharel <nextcloud@tcit.fr>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @license AGPL-3.0
@@ -48,10 +49,10 @@ use OC\Template\JSCombiner;
use OC\Template\JSConfigHelper;
use OC\Template\SCSSCacher;
use OCP\Defaults;
+use OCP\IInitialStateService;
use OCP\Support\Subscription\IRegistry;
class TemplateLayout extends \OC_Template {
-
private static $versionHash = '';
/**
@@ -63,41 +64,41 @@ class TemplateLayout extends \OC_Template {
* @param string $renderAs
* @param string $appId application id
*/
- public function __construct( $renderAs, $appId = '' ) {
+ public function __construct($renderAs, $appId = '') {
// yes - should be injected ....
$this->config = \OC::$server->getConfig();
- if(\OCP\Util::isIE()) {
+ if (\OCP\Util::isIE()) {
\OC_Util::addStyle('ie');
}
// Decide which page we show
- if($renderAs === 'user') {
- parent::__construct( 'core', 'layout.user' );
- if(in_array(\OC_App::getCurrentApp(), ['settings','admin', 'help']) !== false) {
+ if ($renderAs === 'user') {
+ parent::__construct('core', 'layout.user');
+ if (in_array(\OC_App::getCurrentApp(), ['settings','admin', 'help']) !== false) {
$this->assign('bodyid', 'body-settings');
- }else{
+ } else {
$this->assign('bodyid', 'body-user');
}
// Add navigation entry
- $this->assign( 'application', '');
- $this->assign( 'appid', $appId );
+ $this->assign('application', '');
+ $this->assign('appid', $appId);
$navigation = \OC::$server->getNavigationManager()->getAll();
- $this->assign( 'navigation', $navigation);
+ $this->assign('navigation', $navigation);
$settingsNavigation = \OC::$server->getNavigationManager()->getAll('settings');
- $this->assign( 'settingsnavigation', $settingsNavigation);
- foreach($navigation as $entry) {
+ $this->assign('settingsnavigation', $settingsNavigation);
+ foreach ($navigation as $entry) {
if ($entry['active']) {
- $this->assign( 'application', $entry['name'] );
+ $this->assign('application', $entry['name']);
break;
}
}
- foreach($settingsNavigation as $entry) {
+ foreach ($settingsNavigation as $entry) {
if ($entry['active']) {
- $this->assign( 'application', $entry['name'] );
+ $this->assign('application', $entry['name']);
break;
}
}
@@ -122,13 +123,12 @@ class TemplateLayout extends \OC_Template {
} catch (\OCP\AutoloadNotAllowedException $e) {
$this->assign('themingInvertMenu', false);
}
-
- } else if ($renderAs === 'error') {
+ } elseif ($renderAs === 'error') {
parent::__construct('core', 'layout.guest', '', false);
$this->assign('bodyid', 'body-login');
$this->assign('user_displayname', '');
$this->assign('user_uid', '');
- } else if ($renderAs === 'guest') {
+ } elseif ($renderAs === 'guest') {
parent::__construct('core', 'layout.guest');
\OC_Util::addStyle('guest');
$this->assign('bodyid', 'body-login');
@@ -136,9 +136,9 @@ class TemplateLayout extends \OC_Template {
$userDisplayName = \OC_User::getDisplayName();
$this->assign('user_displayname', $userDisplayName);
$this->assign('user_uid', \OC_User::getUser());
- } else if ($renderAs === 'public') {
+ } elseif ($renderAs === 'public') {
parent::__construct('core', 'layout.public');
- $this->assign( 'appid', $appId );
+ $this->assign('appid', $appId);
$this->assign('bodyid', 'body-public');
/** @var IRegistry $subscription */
@@ -150,7 +150,6 @@ class TemplateLayout extends \OC_Template {
$this->assign('showSimpleSignUpLink', $showSimpleSignup);
} else {
parent::__construct('core', 'layout.base');
-
}
// Send the language and the locale to our layouts
$lang = \OC::$server->getL10NFactory()->findLanguage();
@@ -160,7 +159,7 @@ class TemplateLayout extends \OC_Template {
$this->assign('language', $lang);
$this->assign('locale', $locale);
- if(\OC::$server->getSystemConfig()->getValue('installed', false)) {
+ if (\OC::$server->getSystemConfig()->getValue('installed', false)) {
if (empty(self::$versionHash)) {
$v = \OC_App::getAppVersions();
$v['core'] = implode('.', \OCP\Util::getVersion());
@@ -172,7 +171,7 @@ class TemplateLayout extends \OC_Template {
// Add the js files
$jsFiles = self::findJavascriptFiles(\OC_Util::$scripts);
- $this->assign('jsfiles', array());
+ $this->assign('jsfiles', []);
if ($this->config->getSystemValue('installed', false) && $renderAs != 'error') {
if (\OC::$server->getContentSecurityPolicyNonceManager()->browserSupportsCspV3()) {
$jsConfigHelper = new JSConfigHelper(
@@ -185,17 +184,18 @@ class TemplateLayout extends \OC_Template {
\OC::$server->getGroupManager(),
\OC::$server->getIniWrapper(),
\OC::$server->getURLGenerator(),
- \OC::$server->getCapabilitiesManager()
+ \OC::$server->getCapabilitiesManager(),
+ \OC::$server->query(IInitialStateService::class)
);
$this->assign('inline_ocjs', $jsConfigHelper->getConfig());
} else {
$this->append('jsfiles', \OC::$server->getURLGenerator()->linkToRoute('core.OCJS.getConfig', ['v' => self::$versionHash]));
}
}
- foreach($jsFiles as $info) {
+ foreach ($jsFiles as $info) {
$web = $info[1];
$file = $info[2];
- $this->append( 'jsfiles', $web.'/'.$file . $this->getVersionHashSuffix() );
+ $this->append('jsfiles', $web.'/'.$file . $this->getVersionHashSuffix());
}
try {
@@ -206,7 +206,7 @@ class TemplateLayout extends \OC_Template {
// Do not initialise scss appdata until we have a fully installed instance
// Do not load scss for update, errors, installation or login page
- if(\OC::$server->getSystemConfig()->getValue('installed', false)
+ if (\OC::$server->getSystemConfig()->getValue('installed', false)
&& !\OCP\Util::needUpgrade()
&& $pathInfo !== ''
&& !preg_match('/^\/login/', $pathInfo)
@@ -220,24 +220,23 @@ class TemplateLayout extends \OC_Template {
$cssFiles = self::findStylesheetFiles(\OC_Util::$styles, false);
}
- $this->assign('cssfiles', array());
+ $this->assign('cssfiles', []);
$this->assign('printcssfiles', []);
$this->assign('versionHash', self::$versionHash);
- foreach($cssFiles as $info) {
+ foreach ($cssFiles as $info) {
$web = $info[1];
$file = $info[2];
if (substr($file, -strlen('print.css')) === 'print.css') {
- $this->append( 'printcssfiles', $web.'/'.$file . $this->getVersionHashSuffix() );
+ $this->append('printcssfiles', $web.'/'.$file . $this->getVersionHashSuffix());
} else {
$suffix = $this->getVersionHashSuffix($web, $file);
if (strpos($file, '?v=') == false) {
- $this->append( 'cssfiles', $web.'/'.$file . $suffix);
+ $this->append('cssfiles', $web.'/'.$file . $suffix);
} else {
- $this->append( 'cssfiles', $web.'/'.$file . '-' . substr($suffix, 3));
+ $this->append('cssfiles', $web.'/'.$file . '-' . substr($suffix, 3));
}
-
}
}
@@ -248,7 +247,7 @@ class TemplateLayout extends \OC_Template {
/**
* @param string $path
- * @param string $file
+ * @param string $file
* @return string
*/
protected function getVersionHashSuffix($path = false, $file = false) {
@@ -269,7 +268,7 @@ class TemplateLayout extends \OC_Template {
// Try the webroot path for a match
if ($path !== false && $path !== '') {
$appName = $this->getAppNamefromPath($path);
- if(array_key_exists($appName, $v)) {
+ if (array_key_exists($appName, $v)) {
$appVersion = $v[$appName];
return '?v=' . substr(md5($appVersion), 0, 8) . $themingSuffix;
}
@@ -277,7 +276,7 @@ class TemplateLayout extends \OC_Template {
// fallback to the file path instead
if ($file !== false && $file !== '') {
$appName = $this->getAppNamefromPath($file);
- if(array_key_exists($appName, $v)) {
+ if (array_key_exists($appName, $v)) {
$appVersion = $v[$appName];
return '?v=' . substr(md5($appVersion), 0, 8) . $themingSuffix;
}
@@ -290,11 +289,11 @@ class TemplateLayout extends \OC_Template {
* @param array $styles
* @return array
*/
- static public function findStylesheetFiles($styles, $compileScss = true) {
+ public static function findStylesheetFiles($styles, $compileScss = true) {
// Read the selected theme from the config file
$theme = \OC_Util::getTheme();
- if($compileScss) {
+ if ($compileScss) {
$SCSSCacher = \OC::$server->query(SCSSCacher::class);
} else {
$SCSSCacher = null;
@@ -303,8 +302,8 @@ class TemplateLayout extends \OC_Template {
$locator = new \OC\Template\CSSResourceLocator(
\OC::$server->getLogger(),
$theme,
- array( \OC::$SERVERROOT => \OC::$WEBROOT ),
- array( \OC::$SERVERROOT => \OC::$WEBROOT ),
+ [ \OC::$SERVERROOT => \OC::$WEBROOT ],
+ [ \OC::$SERVERROOT => \OC::$WEBROOT ],
$SCSSCacher
);
$locator->find($styles);
@@ -325,22 +324,21 @@ class TemplateLayout extends \OC_Template {
return end($pathParts);
}
return false;
-
}
/**
* @param array $scripts
* @return array
*/
- static public function findJavascriptFiles($scripts) {
+ public static function findJavascriptFiles($scripts) {
// Read the selected theme from the config file
$theme = \OC_Util::getTheme();
$locator = new \OC\Template\JSResourceLocator(
\OC::$server->getLogger(),
$theme,
- array( \OC::$SERVERROOT => \OC::$WEBROOT ),
- array( \OC::$SERVERROOT => \OC::$WEBROOT ),
+ [ \OC::$SERVERROOT => \OC::$WEBROOT ],
+ [ \OC::$SERVERROOT => \OC::$WEBROOT ],
\OC::$server->query(JSCombiner::class)
);
$locator->find($scripts);
@@ -355,7 +353,7 @@ class TemplateLayout extends \OC_Template {
*/
public static function convertToRelativePath($filePath) {
$relativePath = explode(\OC::$SERVERROOT, $filePath);
- if(count($relativePath) !== 2) {
+ if (count($relativePath) !== 2) {
throw new \Exception('$filePath is not under the \OC::$SERVERROOT');
}
diff --git a/lib/private/URLGenerator.php b/lib/private/URLGenerator.php
index 4f50f779a83..b432b0b69ca 100644
--- a/lib/private/URLGenerator.php
+++ b/lib/private/URLGenerator.php
@@ -7,6 +7,7 @@ declare(strict_types=1);
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Felix Epp <work@felixepp.de>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
@@ -77,7 +78,7 @@ class URLGenerator implements IURLGenerator {
*
* Returns a url to the given route.
*/
- public function linkToRoute(string $route, array $parameters = array()): string {
+ public function linkToRoute(string $route, array $parameters = []): string {
// TODO: mock router
return \OC::$server->getRouter()->generate($route, $parameters);
}
@@ -90,7 +91,7 @@ class URLGenerator implements IURLGenerator {
*
* Returns an absolute url to the given route.
*/
- public function linkToRouteAbsolute(string $routeName, array $arguments = array()): string {
+ public function linkToRouteAbsolute(string $routeName, array $arguments = []): string {
return $this->getAbsoluteURL($this->linkToRoute($routeName, $arguments));
}
@@ -118,15 +119,14 @@ class URLGenerator implements IURLGenerator {
*
* Returns a url to the given app and file.
*/
- public function linkTo(string $app, string $file, array $args = array()): string {
+ public function linkTo(string $app, string $file, array $args = []): string {
$frontControllerActive = ($this->config->getSystemValue('htaccess.IgnoreFrontController', false) === true || getenv('front_controller_active') === 'true');
- if( $app !== '' ) {
+ if ($app !== '') {
$app_path = \OC_App::getAppPath($app);
// Check if the app is in the app folder
if ($app_path && file_exists($app_path . '/' . $file)) {
if (substr($file, -3) === 'php') {
-
$urlLinkTo = \OC::$WEBROOT . '/index.php/apps/' . $app;
if ($frontControllerActive) {
$urlLinkTo = \OC::$WEBROOT . '/apps/' . $app;
@@ -169,7 +169,7 @@ class URLGenerator implements IURLGenerator {
public function imagePath(string $app, string $image): string {
$cache = $this->cacheFactory->createDistributed('imagePath-'.md5($this->getBaseUrl()).'-');
$cacheKey = $app.'-'.$image;
- if($key = $cache->get($cacheKey)) {
+ if ($key = $cache->get($cacheKey)) {
return $key;
}
@@ -185,7 +185,7 @@ class URLGenerator implements IURLGenerator {
$path = '';
$themingEnabled = $this->config->getSystemValue('installed', false) && \OCP\App::isEnabled('theming') && \OC_App::isAppLoaded('theming');
$themingImagePath = false;
- if($themingEnabled) {
+ if ($themingEnabled) {
$themingDefaults = \OC::$server->getThemingDefaults();
if ($themingDefaults instanceof ThemingDefaults) {
$themingImagePath = $themingDefaults->replaceImagePath($app, $image);
@@ -207,7 +207,7 @@ class URLGenerator implements IURLGenerator {
} elseif (!file_exists(\OC::$SERVERROOT . "/themes/$theme/core/img/$basename.svg")
&& file_exists(\OC::$SERVERROOT . "/themes/$theme/core/img/$basename.png")) {
$path = \OC::$WEBROOT . "/themes/$theme/core/img/$basename.png";
- } elseif($themingEnabled && $themingImagePath) {
+ } elseif ($themingEnabled && $themingImagePath) {
$path = $themingImagePath;
} elseif ($appPath && file_exists($appPath . "/img/$image")) {
$path = \OC_App::getAppWebPath($app) . "/img/$image";
@@ -226,7 +226,7 @@ class URLGenerator implements IURLGenerator {
$path = \OC::$WEBROOT . "/themes/$theme/core/img/$basename.png";
}
- if($path !== '') {
+ if ($path !== '') {
$cache->set($cacheKey, $path);
return $path;
}
@@ -247,7 +247,7 @@ class URLGenerator implements IURLGenerator {
return rtrim($this->config->getSystemValue('overwrite.cli.url'), '/') . '/' . ltrim($url, '/');
}
// The ownCloud web root can already be prepended.
- if(\OC::$WEBROOT !== '' && strpos($url, \OC::$WEBROOT) === 0) {
+ if (\OC::$WEBROOT !== '' && strpos($url, \OC::$WEBROOT) === 0) {
$url = substr($url, \strlen(\OC::$WEBROOT));
}
diff --git a/lib/private/Updater.php b/lib/private/Updater.php
index 611da73254e..4b5d02aeb64 100644
--- a/lib/private/Updater.php
+++ b/lib/private/Updater.php
@@ -9,7 +9,6 @@
* @author Frank Karlitschek <frank@karlitschek.de>
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Joas Schilling <coding@schilljs.com>
- * @author Julius Härtl <jus@bitgrid.net>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -109,7 +108,7 @@ class Updater extends BasicEmitter {
$wasMaintenanceModeEnabled = $this->config->getSystemValueBool('maintenance');
- if(!$wasMaintenanceModeEnabled) {
+ if (!$wasMaintenanceModeEnabled) {
$this->config->setSystemValue('maintenance', true);
$this->emit('\OC\Updater', 'maintenanceEnabled');
}
@@ -124,24 +123,24 @@ class Updater extends BasicEmitter {
$installedVersion = $this->config->getSystemValue('version', '0.0.0');
$currentVersion = implode('.', \OCP\Util::getVersion());
- $this->log->debug('starting upgrade from ' . $installedVersion . ' to ' . $currentVersion, array('app' => 'core'));
+ $this->log->debug('starting upgrade from ' . $installedVersion . ' to ' . $currentVersion, ['app' => 'core']);
$success = true;
try {
$this->doUpgrade($currentVersion, $installedVersion);
} catch (HintException $exception) {
$this->log->logException($exception, ['app' => 'core']);
- $this->emit('\OC\Updater', 'failure', array($exception->getMessage() . ': ' .$exception->getHint()));
+ $this->emit('\OC\Updater', 'failure', [$exception->getMessage() . ': ' .$exception->getHint()]);
$success = false;
} catch (\Exception $exception) {
$this->log->logException($exception, ['app' => 'core']);
- $this->emit('\OC\Updater', 'failure', array(get_class($exception) . ': ' .$exception->getMessage()));
+ $this->emit('\OC\Updater', 'failure', [get_class($exception) . ': ' .$exception->getMessage()]);
$success = false;
}
- $this->emit('\OC\Updater', 'updateEnd', array($success));
+ $this->emit('\OC\Updater', 'updateEnd', [$success]);
- if(!$wasMaintenanceModeEnabled && $success) {
+ if (!$wasMaintenanceModeEnabled && $success) {
$this->config->setSystemValue('maintenance', false);
$this->emit('\OC\Updater', 'maintenanceDisabled');
} else {
@@ -279,7 +278,7 @@ class Updater extends BasicEmitter {
$this->config->setAppValue('core', 'lastupdatedat', 0);
// Check for code integrity if not disabled
- if(\OC::$server->getIntegrityCodeChecker()->isCodeCheckEnforced()) {
+ if (\OC::$server->getIntegrityCodeChecker()->isCodeCheckEnforced()) {
$this->emit('\OC\Updater', 'startCheckCodeIntegrity');
$this->checker->runInstanceVerification();
$this->emit('\OC\Updater', 'finishedCheckCodeIntegrity');
@@ -324,7 +323,7 @@ class Updater extends BasicEmitter {
$this->includePreUpdate($appId);
}
if (file_exists(\OC_App::getAppPath($appId) . '/appinfo/database.xml')) {
- $this->emit('\OC\Updater', 'appSimulateUpdate', array($appId));
+ $this->emit('\OC\Updater', 'appSimulateUpdate', [$appId]);
\OC_DB::simulateUpdateDbFromStructure(\OC_App::getAppPath($appId) . '/appinfo/database.xml');
}
}
@@ -349,15 +348,15 @@ class Updater extends BasicEmitter {
*/
protected function doAppUpgrade() {
$apps = \OC_App::getEnabledApps();
- $priorityTypes = array('authentication', 'filesystem', 'logging');
+ $priorityTypes = ['authentication', 'filesystem', 'logging'];
$pseudoOtherType = 'other';
- $stacks = array($pseudoOtherType => array());
+ $stacks = [$pseudoOtherType => []];
foreach ($apps as $appId) {
$priorityType = false;
foreach ($priorityTypes as $type) {
- if(!isset($stacks[$type])) {
- $stacks[$type] = array();
+ if (!isset($stacks[$type])) {
+ $stacks[$type] = [];
}
if (\OC_App::isType($appId, [$type])) {
$stacks[$type][] = $appId;
@@ -376,7 +375,7 @@ class Updater extends BasicEmitter {
\OC_App::updateApp($appId);
$this->emit('\OC\Updater', 'appUpgrade', [$appId, \OC_App::getAppVersion($appId)]);
}
- if($type !== $pseudoOtherType) {
+ if ($type !== $pseudoOtherType) {
// load authentication, filesystem and logging apps after
// upgrading them. Other apps my need to rely on modifying
// user and/or filesystem aspects.
@@ -404,12 +403,12 @@ class Updater extends BasicEmitter {
foreach ($apps as $app) {
// check if the app is compatible with this version of ownCloud
$info = OC_App::getAppInfo($app);
- if($info === null || !OC_App::isAppCompatible($version, $info)) {
+ if ($info === null || !OC_App::isAppCompatible($version, $info)) {
if ($appManager->isShipped($app)) {
throw new \UnexpectedValueException('The files of the app "' . $app . '" were not correctly replaced before running the update');
}
\OC::$server->getAppManager()->disableApp($app, true);
- $this->emit('\OC\Updater', 'incompatibleAppDisabled', array($app));
+ $this->emit('\OC\Updater', 'incompatibleAppDisabled', [$app]);
}
// no need to disable any app in case this is a non-core upgrade
if (!$isCoreUpgrade) {
@@ -445,7 +444,7 @@ class Updater extends BasicEmitter {
* @throws \Exception
*/
private function upgradeAppStoreApps(array $disabledApps, $reenable = false) {
- foreach($disabledApps as $app) {
+ foreach ($disabledApps as $app) {
try {
$this->emit('\OC\Updater', 'checkAppStoreAppBefore', [$app]);
if ($this->installer->isUpdateAvailable($app)) {
@@ -495,20 +494,20 @@ class Updater extends BasicEmitter {
$log = $this->log;
$dispatcher = \OC::$server->getEventDispatcher();
- $dispatcher->addListener('\OC\DB\Migrator::executeSql', function($event) use ($log) {
+ $dispatcher->addListener('\OC\DB\Migrator::executeSql', function ($event) use ($log) {
if (!$event instanceof GenericEvent) {
return;
}
$log->info('\OC\DB\Migrator::executeSql: ' . $event->getSubject() . ' (' . $event->getArgument(0) . ' of ' . $event->getArgument(1) . ')', ['app' => 'updater']);
});
- $dispatcher->addListener('\OC\DB\Migrator::checkTable', function($event) use ($log) {
+ $dispatcher->addListener('\OC\DB\Migrator::checkTable', function ($event) use ($log) {
if (!$event instanceof GenericEvent) {
return;
}
$log->info('\OC\DB\Migrator::checkTable: ' . $event->getSubject() . ' (' . $event->getArgument(0) . ' of ' . $event->getArgument(1) . ')', ['app' => 'updater']);
});
- $repairListener = function($event) use ($log) {
+ $repairListener = function ($event) use ($log) {
if (!$event instanceof GenericEvent) {
return;
}
@@ -551,44 +550,44 @@ class Updater extends BasicEmitter {
$dispatcher->addListener('\OC\Repair::error', $repairListener);
- $this->listen('\OC\Updater', 'maintenanceEnabled', function () use($log) {
+ $this->listen('\OC\Updater', 'maintenanceEnabled', function () use ($log) {
$log->info('\OC\Updater::maintenanceEnabled: Turned on maintenance mode', ['app' => 'updater']);
});
- $this->listen('\OC\Updater', 'maintenanceDisabled', function () use($log) {
+ $this->listen('\OC\Updater', 'maintenanceDisabled', function () use ($log) {
$log->info('\OC\Updater::maintenanceDisabled: Turned off maintenance mode', ['app' => 'updater']);
});
- $this->listen('\OC\Updater', 'maintenanceActive', function () use($log) {
+ $this->listen('\OC\Updater', 'maintenanceActive', function () use ($log) {
$log->info('\OC\Updater::maintenanceActive: Maintenance mode is kept active', ['app' => 'updater']);
});
- $this->listen('\OC\Updater', 'updateEnd', function ($success) use($log) {
+ $this->listen('\OC\Updater', 'updateEnd', function ($success) use ($log) {
if ($success) {
$log->info('\OC\Updater::updateEnd: Update successful', ['app' => 'updater']);
} else {
$log->error('\OC\Updater::updateEnd: Update failed', ['app' => 'updater']);
}
});
- $this->listen('\OC\Updater', 'dbUpgradeBefore', function () use($log) {
+ $this->listen('\OC\Updater', 'dbUpgradeBefore', function () use ($log) {
$log->info('\OC\Updater::dbUpgradeBefore: Updating database schema', ['app' => 'updater']);
});
- $this->listen('\OC\Updater', 'dbUpgrade', function () use($log) {
+ $this->listen('\OC\Updater', 'dbUpgrade', function () use ($log) {
$log->info('\OC\Updater::dbUpgrade: Updated database', ['app' => 'updater']);
});
- $this->listen('\OC\Updater', 'dbSimulateUpgradeBefore', function () use($log) {
+ $this->listen('\OC\Updater', 'dbSimulateUpgradeBefore', function () use ($log) {
$log->info('\OC\Updater::dbSimulateUpgradeBefore: Checking whether the database schema can be updated (this can take a long time depending on the database size)', ['app' => 'updater']);
});
- $this->listen('\OC\Updater', 'dbSimulateUpgrade', function () use($log) {
+ $this->listen('\OC\Updater', 'dbSimulateUpgrade', function () use ($log) {
$log->info('\OC\Updater::dbSimulateUpgrade: Checked database schema update', ['app' => 'updater']);
});
- $this->listen('\OC\Updater', 'incompatibleAppDisabled', function ($app) use($log) {
+ $this->listen('\OC\Updater', 'incompatibleAppDisabled', function ($app) use ($log) {
$log->info('\OC\Updater::incompatibleAppDisabled: Disabled incompatible app: ' . $app, ['app' => 'updater']);
});
- $this->listen('\OC\Updater', 'checkAppStoreAppBefore', function ($app) use($log) {
+ $this->listen('\OC\Updater', 'checkAppStoreAppBefore', function ($app) use ($log) {
$log->info('\OC\Updater::checkAppStoreAppBefore: Checking for update of app "' . $app . '" in appstore', ['app' => 'updater']);
});
- $this->listen('\OC\Updater', 'upgradeAppStoreApp', function ($app) use($log) {
+ $this->listen('\OC\Updater', 'upgradeAppStoreApp', function ($app) use ($log) {
$log->info('\OC\Updater::upgradeAppStoreApp: Update app "' . $app . '" from appstore', ['app' => 'updater']);
});
- $this->listen('\OC\Updater', 'checkAppStoreApp', function ($app) use($log) {
+ $this->listen('\OC\Updater', 'checkAppStoreApp', function ($app) use ($log) {
$log->info('\OC\Updater::checkAppStoreApp: Checked for update of app "' . $app . '" in appstore', ['app' => 'updater']);
});
$this->listen('\OC\Updater', 'appUpgradeCheckBefore', function () use ($log) {
@@ -606,22 +605,20 @@ class Updater extends BasicEmitter {
$this->listen('\OC\Updater', 'appUpgrade', function ($app, $version) use ($log) {
$log->info('\OC\Updater::appUpgrade: Updated <' . $app . '> to ' . $version, ['app' => 'updater']);
});
- $this->listen('\OC\Updater', 'failure', function ($message) use($log) {
+ $this->listen('\OC\Updater', 'failure', function ($message) use ($log) {
$log->error('\OC\Updater::failure: ' . $message, ['app' => 'updater']);
});
- $this->listen('\OC\Updater', 'setDebugLogLevel', function () use($log) {
+ $this->listen('\OC\Updater', 'setDebugLogLevel', function () use ($log) {
$log->info('\OC\Updater::setDebugLogLevel: Set log level to debug', ['app' => 'updater']);
});
- $this->listen('\OC\Updater', 'resetLogLevel', function ($logLevel, $logLevelName) use($log) {
+ $this->listen('\OC\Updater', 'resetLogLevel', function ($logLevel, $logLevelName) use ($log) {
$log->info('\OC\Updater::resetLogLevel: Reset log level to ' . $logLevelName . '(' . $logLevel . ')', ['app' => 'updater']);
});
- $this->listen('\OC\Updater', 'startCheckCodeIntegrity', function () use($log) {
+ $this->listen('\OC\Updater', 'startCheckCodeIntegrity', function () use ($log) {
$log->info('\OC\Updater::startCheckCodeIntegrity: Starting code integrity check...', ['app' => 'updater']);
});
- $this->listen('\OC\Updater', 'finishedCheckCodeIntegrity', function () use($log) {
+ $this->listen('\OC\Updater', 'finishedCheckCodeIntegrity', function () use ($log) {
$log->info('\OC\Updater::finishedCheckCodeIntegrity: Finished code integrity check', ['app' => 'updater']);
});
-
}
-
}
diff --git a/lib/private/Updater/ChangesCheck.php b/lib/private/Updater/ChangesCheck.php
index 259fb750c05..62b1e04aae8 100644
--- a/lib/private/Updater/ChangesCheck.php
+++ b/lib/private/Updater/ChangesCheck.php
@@ -6,6 +6,8 @@ declare(strict_types=1);
* @copyright Copyright (c) 2018 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @author Daniel Kesselberg <mail@danielkesselberg.de>
*
* @license GNU AGPL version 3 or any later version
*
@@ -39,9 +41,9 @@ class ChangesCheck {
/** @var ILogger */
private $logger;
- const RESPONSE_NO_CONTENT = 0;
- const RESPONSE_USE_CACHE = 1;
- const RESPONSE_HAS_CONTENT = 2;
+ public const RESPONSE_NO_CONTENT = 0;
+ public const RESPONSE_USE_CACHE = 1;
+ public const RESPONSE_HAS_CONTENT = 2;
public function __construct(IClientService $clientService, ChangesMapper $mapper, ILogger $logger) {
$this->clientService = $clientService;
@@ -69,7 +71,7 @@ class ChangesCheck {
try {
$version = $this->normalizeVersion($version);
$changesInfo = $this->mapper->getChanges($version);
- if($changesInfo->getLastCheck() + 1800 > time()) {
+ if ($changesInfo->getLastCheck() + 1800 > time()) {
return json_decode($changesInfo->getData(), true);
}
} catch (DoesNotExistException $e) {
@@ -78,7 +80,7 @@ class ChangesCheck {
$response = $this->queryChangesServer($uri, $changesInfo);
- switch($this->evaluateResponse($response)) {
+ switch ($this->evaluateResponse($response)) {
case self::RESPONSE_NO_CONTENT:
return [];
case self::RESPONSE_USE_CACHE:
@@ -95,11 +97,11 @@ class ChangesCheck {
}
protected function evaluateResponse(IResponse $response): int {
- if($response->getStatusCode() === 304) {
+ if ($response->getStatusCode() === 304) {
return self::RESPONSE_USE_CACHE;
- } else if($response->getStatusCode() === 404) {
+ } elseif ($response->getStatusCode() === 404) {
return self::RESPONSE_NO_CONTENT;
- } else if($response->getStatusCode() === 200) {
+ } elseif ($response->getStatusCode() === 200) {
return self::RESPONSE_HAS_CONTENT;
}
$this->logger->debug('Unexpected return code {code} from changelog server', [
@@ -110,7 +112,7 @@ class ChangesCheck {
}
protected function cacheResult(ChangesResult $entry, string $version) {
- if($entry->getVersion() === $version) {
+ if ($entry->getVersion() === $version) {
$this->mapper->update($entry);
} else {
$entry->setVersion($version);
@@ -123,7 +125,7 @@ class ChangesCheck {
*/
protected function queryChangesServer(string $uri, ChangesResult $entry): IResponse {
$headers = [];
- if($entry->getEtag() !== '') {
+ if ($entry->getEtag() !== '') {
$headers['If-None-Match'] = [$entry->getEtag()];
}
@@ -143,7 +145,7 @@ class ChangesCheck {
if ($xml !== false) {
$data['changelogURL'] = (string)$xml->changelog['href'];
$data['whatsNew'] = [];
- foreach($xml->whatsNew as $infoSet) {
+ foreach ($xml->whatsNew as $infoSet) {
$data['whatsNew'][(string)$infoSet['lang']] = [
'regular' => (array)$infoSet->regular->item,
'admin' => (array)$infoSet->admin->item,
@@ -163,7 +165,7 @@ class ChangesCheck {
public function normalizeVersion(string $version): string {
$versionNumbers = array_slice(explode('.', $version), 0, 3);
$versionNumbers[0] = $versionNumbers[0] ?: '0'; // deal with empty input
- while(count($versionNumbers) < 3) {
+ while (count($versionNumbers) < 3) {
// changelog server expects x.y.z, pad 0 if it is too short
$versionNumbers[] = 0;
}
diff --git a/lib/private/Updater/ChangesMapper.php b/lib/private/Updater/ChangesMapper.php
index b79eadbff58..83a695b571f 100644
--- a/lib/private/Updater/ChangesMapper.php
+++ b/lib/private/Updater/ChangesMapper.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright Copyright (c) 2018 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
*
* @license GNU AGPL version 3 or any later version
*
@@ -32,7 +33,7 @@ use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
class ChangesMapper extends QBMapper {
- const TABLE_NAME = 'whats_new';
+ public const TABLE_NAME = 'whats_new';
public function __construct(IDBConnection $db) {
parent::__construct($db, self::TABLE_NAME);
diff --git a/lib/private/User/Backend.php b/lib/private/User/Backend.php
index a4dbcf77484..477448279a5 100644
--- a/lib/private/User/Backend.php
+++ b/lib/private/User/Backend.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -33,21 +34,21 @@ abstract class Backend implements UserInterface {
/**
* error code for functions not provided by the user backend
*/
- const NOT_IMPLEMENTED = -501;
+ public const NOT_IMPLEMENTED = -501;
/**
* actions that user backends can define
*/
- const CREATE_USER = 1; // 1 << 0
- const SET_PASSWORD = 16; // 1 << 4
- const CHECK_PASSWORD = 256; // 1 << 8
- const GET_HOME = 4096; // 1 << 12
- const GET_DISPLAYNAME = 65536; // 1 << 16
- const SET_DISPLAYNAME = 1048576; // 1 << 20
- const PROVIDE_AVATAR = 16777216; // 1 << 24
- const COUNT_USERS = 268435456; // 1 << 28
+ public const CREATE_USER = 1; // 1 << 0
+ public const SET_PASSWORD = 16; // 1 << 4
+ public const CHECK_PASSWORD = 256; // 1 << 8
+ public const GET_HOME = 4096; // 1 << 12
+ public const GET_DISPLAYNAME = 65536; // 1 << 16
+ public const SET_DISPLAYNAME = 1048576; // 1 << 20
+ public const PROVIDE_AVATAR = 16777216; // 1 << 24
+ public const COUNT_USERS = 268435456; // 1 << 28
- protected $possibleActions = array(
+ protected $possibleActions = [
self::CREATE_USER => 'createUser',
self::SET_PASSWORD => 'setPassword',
self::CHECK_PASSWORD => 'checkPassword',
@@ -56,19 +57,19 @@ abstract class Backend implements UserInterface {
self::SET_DISPLAYNAME => 'setDisplayName',
self::PROVIDE_AVATAR => 'canChangeAvatar',
self::COUNT_USERS => 'countUsers',
- );
+ ];
/**
- * Get all supported actions
- * @return int bitwise-or'ed actions
- *
- * Returns the supported actions as int to be
- * compared with self::CREATE_USER etc.
- */
+ * Get all supported actions
+ * @return int bitwise-or'ed actions
+ *
+ * Returns the supported actions as int to be
+ * compared with self::CREATE_USER etc.
+ */
public function getSupportedActions() {
$actions = 0;
- foreach($this->possibleActions AS $action => $methodName) {
- if(method_exists($this, $methodName)) {
+ foreach ($this->possibleActions as $action => $methodName) {
+ if (method_exists($this, $methodName)) {
$actions |= $action;
}
}
@@ -77,13 +78,13 @@ abstract class Backend implements UserInterface {
}
/**
- * Check if backend implements actions
- * @param int $actions bitwise-or'ed actions
- * @return boolean
- *
- * Returns the supported actions as int to be
- * compared with self::CREATE_USER etc.
- */
+ * Check if backend implements actions
+ * @param int $actions bitwise-or'ed actions
+ * @return boolean
+ *
+ * Returns the supported actions as int to be
+ * compared with self::CREATE_USER etc.
+ */
public function implementsActions($actions) {
return (bool)($this->getSupportedActions() & $actions);
}
@@ -95,7 +96,7 @@ abstract class Backend implements UserInterface {
*
* Deletes a user
*/
- public function deleteUser( $uid ) {
+ public function deleteUser($uid) {
return false;
}
@@ -108,23 +109,23 @@ abstract class Backend implements UserInterface {
* @return string[] an array of all uids
*/
public function getUsers($search = '', $limit = null, $offset = null) {
- return array();
+ return [];
}
/**
- * check if a user exists
- * @param string $uid the username
- * @return boolean
- */
+ * check if a user exists
+ * @param string $uid the username
+ * @return boolean
+ */
public function userExists($uid) {
return false;
}
/**
- * get the user's home directory
- * @param string $uid the username
- * @return boolean
- */
+ * get the user's home directory
+ * @param string $uid the username
+ * @return boolean
+ */
public function getHome($uid) {
return false;
}
@@ -147,9 +148,9 @@ abstract class Backend implements UserInterface {
* @return array an array of all displayNames (value) and the corresponding uids (key)
*/
public function getDisplayNames($search = '', $limit = null, $offset = null) {
- $displayNames = array();
+ $displayNames = [];
$users = $this->getUsers($search, $limit, $offset);
- foreach ( $users as $user) {
+ foreach ($users as $user) {
$displayNames[$user] = $user;
}
return $displayNames;
diff --git a/lib/private/User/Database.php b/lib/private/User/Database.php
index 905a66f3797..e88549c8d81 100644
--- a/lib/private/User/Database.php
+++ b/lib/private/User/Database.php
@@ -72,20 +72,19 @@ use OCP\User\Backend\IGetHomeBackend;
use OCP\User\Backend\IGetRealUIDBackend;
use OCP\User\Backend\ISetDisplayNameBackend;
use OCP\User\Backend\ISetPasswordBackend;
-use Symfony\Component\EventDispatcher\GenericEvent;
/**
* Class for user management in a SQL Database (e.g. MySQL, SQLite)
*/
-class Database extends ABackend
- implements ICreateUserBackend,
- ISetPasswordBackend,
- ISetDisplayNameBackend,
- IGetDisplayNameBackend,
- ICheckPasswordBackend,
- IGetHomeBackend,
- ICountUsersBackend,
- IGetRealUIDBackend {
+class Database extends ABackend implements
+ ICreateUserBackend,
+ ISetPasswordBackend,
+ ISetDisplayNameBackend,
+ IGetDisplayNameBackend,
+ ICheckPasswordBackend,
+ IGetHomeBackend,
+ ICountUsersBackend,
+ IGetRealUIDBackend {
/** @var CappedMemoryCache */
private $cache;
@@ -325,7 +324,6 @@ class Database extends ABackend
}
return (string)$row['uid'];
}
-
}
return false;
diff --git a/lib/private/User/Manager.php b/lib/private/User/Manager.php
index 7fc774630bd..303050a7716 100644
--- a/lib/private/User/Manager.php
+++ b/lib/private/User/Manager.php
@@ -69,12 +69,12 @@ class Manager extends PublicEmitter implements IUserManager {
/**
* @var \OCP\UserInterface[] $backends
*/
- private $backends = array();
+ private $backends = [];
/**
* @var \OC\User\User[] $cachedUsers
*/
- private $cachedUsers = array();
+ private $cachedUsers = [];
/** @var IConfig */
private $config;
@@ -121,7 +121,7 @@ class Manager extends PublicEmitter implements IUserManager {
* @param \OCP\UserInterface $backend
*/
public function removeBackend($backend) {
- $this->cachedUsers = array();
+ $this->cachedUsers = [];
if (($i = array_search($backend, $this->backends)) !== false) {
unset($this->backends[$i]);
}
@@ -131,8 +131,8 @@ class Manager extends PublicEmitter implements IUserManager {
* remove all user backends
*/
public function clearBackends() {
- $this->cachedUsers = array();
- $this->backends = array();
+ $this->cachedUsers = [];
+ $this->backends = [];
}
/**
@@ -241,7 +241,7 @@ class Manager extends PublicEmitter implements IUserManager {
* @return \OC\User\User[]
*/
public function search($pattern, $limit = null, $offset = null) {
- $users = array();
+ $users = [];
foreach ($this->backends as $backend) {
$backendUsers = $backend->getUsers($pattern, $limit, $offset);
if (is_array($backendUsers)) {
@@ -270,7 +270,7 @@ class Manager extends PublicEmitter implements IUserManager {
* @return \OC\User\User[]
*/
public function searchDisplayName($pattern, $limit = null, $offset = null) {
- $users = array();
+ $users = [];
foreach ($this->backends as $backend) {
$backendUsers = $backend->getDisplayNames($pattern, $limit, $offset);
if (is_array($backendUsers)) {
@@ -368,7 +368,7 @@ class Manager extends PublicEmitter implements IUserManager {
$this->emit('\OC\User', 'preCreateUser', [$uid, $password]);
$this->eventDispatcher->dispatchTyped(new CreateUserEvent($uid, $password));
$state = $backend->createUser($uid, $password);
- if($state === false) {
+ if ($state === false) {
throw new \InvalidArgumentException($l->t('Could not create user'));
}
$user = $this->getUserObject($uid, $backend);
@@ -395,13 +395,13 @@ class Manager extends PublicEmitter implements IUserManager {
foreach ($this->backends as $backend) {
if ($backend->implementsActions(Backend::COUNT_USERS)) {
$backendUsers = $backend->countUsers();
- if($backendUsers !== false) {
- if($backend instanceof IUserBackend) {
+ if ($backendUsers !== false) {
+ if ($backend instanceof IUserBackend) {
$name = $backend->getBackendName();
} else {
$name = get_class($backend);
}
- if(isset($userCountStatistics[$name])) {
+ if (isset($userCountStatistics[$name])) {
$userCountStatistics[$name] += $backendUsers;
} else {
$userCountStatistics[$name] = $backendUsers;
@@ -421,8 +421,8 @@ class Manager extends PublicEmitter implements IUserManager {
*/
public function countUsersOfGroups(array $groups) {
$users = [];
- foreach($groups as $group) {
- $usersIds = array_map(function($user) {
+ foreach ($groups as $group) {
+ $usersIds = array_map(function ($user) {
return $user->getUID();
}, $group->getUsers());
$users = array_merge($users, $usersIds);
@@ -618,11 +618,11 @@ class Manager extends PublicEmitter implements IUserManager {
public function getByEmail($email) {
$userIds = $this->config->getUsersForUserValueCaseInsensitive('settings', 'email', $email);
- $users = array_map(function($uid) {
+ $users = array_map(function ($uid) {
return $this->get($uid);
}, $userIds);
- return array_values(array_filter($users, function($u) {
+ return array_values(array_filter($users, function ($u) {
return ($u instanceof IUser);
}));
}
diff --git a/lib/private/User/NoUserException.php b/lib/private/User/NoUserException.php
index 697776115be..57bb47109f1 100644
--- a/lib/private/User/NoUserException.php
+++ b/lib/private/User/NoUserException.php
@@ -2,8 +2,8 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @license AGPL-3.0
*
@@ -23,4 +23,5 @@
namespace OC\User;
-class NoUserException extends \Exception {}
+class NoUserException extends \Exception {
+}
diff --git a/lib/private/User/Session.php b/lib/private/User/Session.php
index 602f779c901..817dcbf4c33 100644
--- a/lib/private/User/Session.php
+++ b/lib/private/User/Session.php
@@ -137,7 +137,8 @@ class Session implements IUserSession, Emitter {
ISecureRandom $random,
ILockdownManager $lockdownManager,
ILogger $logger,
- IEventDispatcher $dispatcher) {
+ IEventDispatcher $dispatcher
+ ) {
$this->manager = $manager;
$this->session = $session;
$this->timeFactory = $timeFactory;
@@ -320,9 +321,7 @@ class Session implements IUserSession, Emitter {
* @return null|string
*/
public function getImpersonatingUserID(): ?string {
-
return $this->session->get('oldUserId');
-
}
public function setImpersonatingUserID(bool $useCurrentUser = true): void {
@@ -337,7 +336,6 @@ class Session implements IUserSession, Emitter {
throw new \OC\User\NoUserException();
}
$this->session->set('oldUserId', $currentUser->getUID());
-
}
/**
* set the token id
@@ -383,7 +381,7 @@ class Session implements IUserSession, Emitter {
throw new LoginException($message);
}
- if($regenerateSessionId) {
+ if ($regenerateSessionId) {
$this->session->regenerateId();
}
@@ -410,7 +408,7 @@ class Session implements IUserSession, Emitter {
$loginDetails['password'],
$isToken,
]);
- if($this->isLoggedIn()) {
+ if ($this->isLoggedIn()) {
$this->prepareUserLogin($firstTimeLogin, $regenerateSessionId);
return true;
}
@@ -440,7 +438,7 @@ class Session implements IUserSession, Emitter {
$currentDelay = $throttler->sleepDelay($request->getRemoteAddress(), 'login');
if ($this->manager instanceof PublicEmitter) {
- $this->manager->emit('\OC\User', 'preLogin', array($user, $password));
+ $this->manager->emit('\OC\User', 'preLogin', [$user, $password]);
}
try {
@@ -458,15 +456,17 @@ class Session implements IUserSession, Emitter {
}
// Try to login with this username and password
- if (!$this->login($user, $password) ) {
+ if (!$this->login($user, $password)) {
// Failed, maybe the user used their email address
$users = $this->manager->getByEmail($user);
if (!(\count($users) === 1 && $this->login($users[0]->getUID(), $password))) {
-
$this->logger->warning('Login failed: \'' . $user . '\' (Remote IP: \'' . \OC::$server->getRequest()->getRemoteAddress() . '\')', ['app' => 'core']);
$throttler->registerAttempt('login', $request->getRemoteAddress(), ['user' => $user]);
+
+ $this->dispatcher->dispatchTyped(new OC\Authentication\Events\LoginFailed($user));
+
if ($currentDelay === 0) {
$throttler->sleepDelay($request->getRemoteAddress(), 'login');
}
@@ -476,7 +476,7 @@ class Session implements IUserSession, Emitter {
if ($isTokenPassword) {
$this->session->set('app_password', $password);
- } else if($this->supportsCookies($request)) {
+ } elseif ($this->supportsCookies($request)) {
// Password login, but cookies supported -> create (browser) session token
$this->createSessionToken($request, $this->getUser()->getUID(), $user, $password);
}
@@ -500,7 +500,7 @@ class Session implements IUserSession, Emitter {
Util::emitHook(
'\OCA\Files_Sharing\API\Server2Server',
'preLoginNameUsedAsUserName',
- array('uid' => &$username)
+ ['uid' => &$username]
);
$user = $this->manager->get($username);
if (is_null($user)) {
@@ -588,7 +588,7 @@ class Session implements IUserSession, Emitter {
);
// Set the last-password-confirm session to make the sudo mode work
- $this->session->set('last-password-confirm', $this->timeFactory->getTime());
+ $this->session->set('last-password-confirm', $this->timeFactory->getTime());
return true;
}
@@ -640,7 +640,7 @@ class Session implements IUserSession, Emitter {
// Ignore and use empty string instead
}
- $this->manager->emit('\OC\User', 'preLogin', array($uid, $password));
+ $this->manager->emit('\OC\User', 'preLogin', [$uid, $password]);
$user = $this->manager->get($uid);
if (is_null($user)) {
@@ -821,7 +821,7 @@ class Session implements IUserSession, Emitter {
if (!$this->loginWithToken($token)) {
return false;
}
- if(!$this->validateToken($token)) {
+ if (!$this->validateToken($token)) {
return false;
}
@@ -841,7 +841,7 @@ class Session implements IUserSession, Emitter {
*/
public function loginWithCookie($uid, $currentToken, $oldSessionId) {
$this->session->regenerateId();
- $this->manager->emit('\OC\User', 'preRememberedLogin', array($uid));
+ $this->manager->emit('\OC\User', 'preRememberedLogin', [$uid]);
$user = $this->manager->get($uid);
if (is_null($user)) {
// user does not exist
@@ -906,7 +906,6 @@ class Session implements IUserSession, Emitter {
try {
$this->tokenProvider->invalidateToken($this->session->getId());
} catch (SessionNotAvailableException $ex) {
-
}
}
$this->setUser(null);
@@ -1007,6 +1006,4 @@ class Session implements IUserSession, Emitter {
public function updateTokens(string $uid, string $password) {
$this->tokenProvider->updatePasswords($uid, $password);
}
-
-
}
diff --git a/lib/private/User/User.php b/lib/private/User/User.php
index c68b8b88e31..08bbce4701b 100644
--- a/lib/private/User/User.php
+++ b/lib/private/User/User.php
@@ -5,9 +5,11 @@
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
+ * @author Julius Härtl <jus@bitgrid.net>
* @author Leon Klingele <leon@struktur.de>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -35,6 +37,7 @@
namespace OC\User;
use OC\Accounts\AccountManager;
+use OC\Avatar\AvatarManager;
use OC\Files\Cache\Storage;
use OC\Hooks\Emitter;
use OC_Helper;
@@ -86,7 +89,7 @@ class User implements IUser {
$this->backend = $backend;
$this->dispatcher = $dispatcher;
$this->emitter = $emitter;
- if(is_null($config)) {
+ if (is_null($config)) {
$config = \OC::$server->getConfig();
}
$this->config = $config;
@@ -162,8 +165,8 @@ class User implements IUser {
*/
public function setEMailAddress($mailAddress) {
$oldMailAddress = $this->getEMailAddress();
- if($oldMailAddress !== $mailAddress) {
- if($mailAddress === '') {
+ if ($oldMailAddress !== $mailAddress) {
+ if ($mailAddress === '') {
$this->config->deleteUserValue($this->uid, 'settings', 'email');
} else {
$this->config->setUserValue($this->uid, 'settings', 'email', $mailAddress);
@@ -202,7 +205,7 @@ class User implements IUser {
public function delete() {
$this->dispatcher->dispatch(IUser::class . '::preDelete', new GenericEvent($this));
if ($this->emitter) {
- $this->emitter->emit('\OC\User', 'preDelete', array($this));
+ $this->emitter->emit('\OC\User', 'preDelete', [$this]);
}
// get the home now because it won't return it after user deletion
$homePath = $this->getHome();
@@ -237,6 +240,10 @@ class User implements IUser {
\OC::$server->getCommentsManager()->deleteReferencesOfActor('users', $this->uid);
\OC::$server->getCommentsManager()->deleteReadMarksFromUser($this);
+ /** @var IAvatarManager $avatarManager */
+ $avatarManager = \OC::$server->query(AvatarManager::class);
+ $avatarManager->deleteUserAvatar($this->uid);
+
$notification = \OC::$server->getNotificationManager()->createNotification();
$notification->setUser($this->uid);
\OC::$server->getNotificationManager()->markProcessed($notification);
@@ -247,7 +254,7 @@ class User implements IUser {
$this->dispatcher->dispatch(IUser::class . '::postDelete', new GenericEvent($this));
if ($this->emitter) {
- $this->emitter->emit('\OC\User', 'postDelete', array($this));
+ $this->emitter->emit('\OC\User', 'postDelete', [$this]);
}
}
return !($result === false);
@@ -266,7 +273,7 @@ class User implements IUser {
'recoveryPassword' => $recoveryPassword,
]));
if ($this->emitter) {
- $this->emitter->emit('\OC\User', 'preSetPassword', array($this, $password, $recoveryPassword));
+ $this->emitter->emit('\OC\User', 'preSetPassword', [$this, $password, $recoveryPassword]);
}
if ($this->backend->implementsActions(Backend::SET_PASSWORD)) {
$result = $this->backend->setPassword($this->uid, $password);
@@ -275,7 +282,7 @@ class User implements IUser {
'recoveryPassword' => $recoveryPassword,
]));
if ($this->emitter) {
- $this->emitter->emit('\OC\User', 'postSetPassword', array($this, $password, $recoveryPassword));
+ $this->emitter->emit('\OC\User', 'postSetPassword', [$this, $password, $recoveryPassword]);
}
return !($result === false);
} else {
@@ -307,7 +314,7 @@ class User implements IUser {
* @return string
*/
public function getBackendClassName() {
- if($this->backend instanceof IUserBackend) {
+ if ($this->backend instanceof IUserBackend) {
return $this->backend->getBackendName();
}
return get_class($this->backend);
@@ -392,7 +399,7 @@ class User implements IUser {
*/
public function getQuota() {
$quota = $this->config->getUserValue($this->uid, 'files', 'quota', 'default');
- if($quota === 'default') {
+ if ($quota === 'default') {
$quota = $this->config->getAppValue('files', 'default_quota', 'none');
}
return $quota;
@@ -407,11 +414,11 @@ class User implements IUser {
*/
public function setQuota($quota) {
$oldQuota = $this->config->getUserValue($this->uid, 'files', 'quota', '');
- if($quota !== 'none' and $quota !== 'default') {
+ if ($quota !== 'none' and $quota !== 'default') {
$quota = OC_Helper::computerFileSize($quota);
$quota = OC_Helper::humanFileSize($quota);
}
- if($quota !== $oldQuota) {
+ if ($quota !== $oldQuota) {
$this->config->setUserValue($this->uid, 'files', 'quota', $quota);
$this->triggerChange('quota', $quota, $oldQuota);
}
@@ -448,7 +455,7 @@ class User implements IUser {
public function getCloudId() {
$uid = $this->getUID();
$server = $this->urlGenerator->getAbsoluteURL('/');
- $server = rtrim( $this->removeProtocolFromUrl($server), '/');
+ $server = rtrim($this->removeProtocolFromUrl($server), '/');
return \OC::$server->getCloudIdManager()->getCloudId($uid, $server)->getId();
}
@@ -459,7 +466,7 @@ class User implements IUser {
private function removeProtocolFromUrl($url) {
if (strpos($url, 'https://') === 0) {
return substr($url, strlen('https://'));
- } else if (strpos($url, 'http://') === 0) {
+ } elseif (strpos($url, 'http://') === 0) {
return substr($url, strlen('http://'));
}
@@ -473,7 +480,7 @@ class User implements IUser {
'oldValue' => $oldValue,
]));
if ($this->emitter) {
- $this->emitter->emit('\OC\User', 'changeUser', array($this, $feature, $value, $oldValue));
+ $this->emitter->emit('\OC\User', 'changeUser', [$this, $feature, $value, $oldValue]);
}
}
}
diff --git a/lib/private/legacy/api.php b/lib/private/legacy/OC_API.php
index 44028407034..37a496a38fe 100644
--- a/lib/private/legacy/api.php
+++ b/lib/private/legacy/OC_API.php
@@ -4,6 +4,7 @@
*
* @author Bart Visscher <bartv@thisnet.nl>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Michael Gapczynski <GapczynskiM@gmail.com>
@@ -36,7 +37,7 @@ class OC_API {
/**
* api actions
*/
- protected static $actions = array();
+ protected static $actions = [];
/**
* respond to a call
@@ -47,9 +48,9 @@ class OC_API {
$request = \OC::$server->getRequest();
// Send 401 headers if unauthorised
- if($result->getStatusCode() === API::RESPOND_UNAUTHORISED) {
+ if ($result->getStatusCode() === API::RESPOND_UNAUTHORISED) {
// If request comes from JS return dummy auth request
- if($request->getHeader('X-Requested-With') === 'XMLHttpRequest') {
+ if ($request->getHeader('X-Requested-With') === 'XMLHttpRequest') {
header('WWW-Authenticate: DummyBasic realm="Authorisation Required"');
} else {
header('WWW-Authenticate: Basic realm="Authorisation Required"');
@@ -57,7 +58,7 @@ class OC_API {
http_response_code(401);
}
- foreach($result->getHeaders() as $name => $value) {
+ foreach ($result->getHeaders() as $name => $value) {
header($name . ': ' . $value);
}
@@ -80,14 +81,14 @@ class OC_API {
* @param XMLWriter $writer
*/
private static function toXML($array, $writer) {
- foreach($array as $k => $v) {
+ foreach ($array as $k => $v) {
if ($k[0] === '@') {
$writer->writeAttribute(substr($k, 1), $v);
continue;
- } else if (is_numeric($k)) {
+ } elseif (is_numeric($k)) {
$k = 'element';
}
- if(is_array($v)) {
+ if (is_array($v)) {
$writer->startElement($k);
self::toXML($v, $writer);
$writer->endElement();
@@ -101,7 +102,7 @@ class OC_API {
* @return string
*/
public static function requestedFormat() {
- $formats = array('json', 'xml');
+ $formats = ['json', 'xml'];
$format = !empty($_GET['format']) && in_array($_GET['format'], $formats) ? $_GET['format'] : 'xml';
return $format;
@@ -167,12 +168,12 @@ class OC_API {
* @return string
*/
public static function renderResult($format, $meta, $data) {
- $response = array(
- 'ocs' => array(
+ $response = [
+ 'ocs' => [
'meta' => $meta,
'data' => $data,
- ),
- );
+ ],
+ ];
if ($format == 'json') {
return OC_JSON::encode($response);
}
diff --git a/lib/private/legacy/app.php b/lib/private/legacy/OC_App.php
index 961e51fe736..bfa894fa800 100644
--- a/lib/private/legacy/app.php
+++ b/lib/private/legacy/OC_App.php
@@ -65,14 +65,14 @@ use OCP\ILogger;
* upgrading and removing apps.
*/
class OC_App {
- static private $adminForms = [];
- static private $personalForms = [];
- static private $appTypes = [];
- static private $loadedApps = [];
- static private $altLogin = [];
- static private $alreadyRegistered = [];
- const supportedApp = 300;
- const officialApp = 200;
+ private static $adminForms = [];
+ private static $personalForms = [];
+ private static $appTypes = [];
+ private static $loadedApps = [];
+ private static $altLogin = [];
+ private static $alreadyRegistered = [];
+ public const supportedApp = 300;
+ public const officialApp = 200;
/**
* clean the appId
@@ -81,7 +81,7 @@ class OC_App {
* @return string
*/
public static function cleanAppId(string $app): string {
- return str_replace(array('\0', '/', '\\', '..'), '', $app);
+ return str_replace(['\0', '/', '\\', '..'], '', $app);
}
/**
@@ -114,9 +114,9 @@ class OC_App {
$apps = self::getEnabledApps();
// Add each apps' folder as allowed class path
- foreach($apps as $app) {
+ foreach ($apps as $app) {
$path = self::getAppPath($app);
- if($path !== false) {
+ if ($path !== false) {
self::registerAutoloading($app, $path);
}
}
@@ -142,7 +142,7 @@ class OC_App {
public static function loadApp(string $app) {
self::$loadedApps[] = $app;
$appPath = self::getAppPath($app);
- if($appPath === false) {
+ if ($appPath === false) {
return;
}
@@ -154,14 +154,20 @@ class OC_App {
try {
self::requireAppFile($app);
} catch (Throwable $ex) {
- if($ex instanceof ServerNotAvailableException) {
+ if ($ex instanceof ServerNotAvailableException) {
throw $ex;
}
- \OC::$server->getLogger()->logException($ex);
-
if (!\OC::$server->getAppManager()->isShipped($app) && !self::isType($app, ['authentication'])) {
+ \OC::$server->getLogger()->logException($ex, [
+ 'message' => "App $app threw an error during app.php load and will be disabled: " . $ex->getMessage(),
+ ]);
+
// Only disable apps which are not shipped and that are not authentication apps
\OC::$server->getAppManager()->disableApp($app, true);
+ } else {
+ \OC::$server->getLogger()->logException($ex, [
+ 'message' => "App $app threw an error during app.php load: " . $ex->getMessage(),
+ ]);
}
}
\OC::$server->getEventLogger()->end('load_app_' . $app);
@@ -210,13 +216,13 @@ class OC_App {
$plugins = isset($info['collaboration']['plugins']['plugin']['@value']) ?
[$info['collaboration']['plugins']['plugin']] : $info['collaboration']['plugins']['plugin'];
foreach ($plugins as $plugin) {
- if($plugin['@attributes']['type'] === 'collaborator-search') {
+ if ($plugin['@attributes']['type'] === 'collaborator-search') {
$pluginInfo = [
'shareType' => $plugin['@attributes']['share-type'],
'class' => $plugin['@value'],
];
\OC::$server->getCollaboratorSearch()->registerPlugin($pluginInfo);
- } else if ($plugin['@attributes']['type'] === 'autocomplete-sort') {
+ } elseif ($plugin['@attributes']['type'] === 'autocomplete-sort') {
\OC::$server->getAutoCompleteManager()->registerSorter($plugin['@value']);
}
}
@@ -308,7 +314,7 @@ class OC_App {
public static function setAppTypes(string $app) {
$appManager = \OC::$server->getAppManager();
$appData = $appManager->getAppInfo($app);
- if(!is_array($appData)) {
+ if (!is_array($appData)) {
return;
}
@@ -395,7 +401,7 @@ class OC_App {
$installer = \OC::$server->query(Installer::class);
$isDownloaded = $installer->isDownloaded($appId);
- if(!$isDownloaded) {
+ if (!$isDownloaded) {
$installer->downloadApp($appId);
}
@@ -446,7 +452,7 @@ class OC_App {
*/
public static function findAppInDirectories(string $appId) {
$sanitizedAppId = self::cleanAppId($appId);
- if($sanitizedAppId !== $appId) {
+ if ($sanitizedAppId !== $appId) {
return false;
}
static $app_dir = [];
@@ -473,10 +479,10 @@ class OC_App {
foreach ($possibleApps as $possibleApp) {
$version = self::getAppVersionByPath($possibleApp['path'] . '/' . $appId);
if (empty($versionToLoad) || version_compare($version, $versionToLoad['version'], '>')) {
- $versionToLoad = array(
+ $versionToLoad = [
'dir' => $possibleApp,
'version' => $version,
- );
+ ];
}
}
$app_dir[$appId] = $versionToLoad['dir'];
@@ -671,7 +677,6 @@ class OC_App {
* @todo: change the name of this method to getInstalledApps, which is more accurate
*/
public static function getAllApps(): array {
-
$apps = [];
foreach (OC::$APPSROOTS as $apps_dir) {
@@ -683,9 +688,7 @@ class OC_App {
if (is_resource($dh)) {
while (($file = readdir($dh)) !== false) {
-
if ($file[0] != '.' and is_dir($apps_dir['path'] . '/' . $file) and is_file($apps_dir['path'] . '/' . $file . '/appinfo/info.xml')) {
-
$apps[] = $file;
}
}
@@ -717,7 +720,6 @@ class OC_App {
foreach ($installedApps as $app) {
if (array_search($app, $blacklist) === false) {
-
$info = OC_App::getAppInfo($app, false, $langCode);
if (!is_array($info)) {
\OCP\Util::writeLog('core', 'Could not read app info file for app "' . $app . '"', ILogger::ERROR);
@@ -733,7 +735,7 @@ class OC_App {
$info['groups'] = null;
if ($enabled === 'yes') {
$active = true;
- } else if ($enabled === 'no') {
+ } elseif ($enabled === 'no') {
$active = false;
} else {
$active = true;
@@ -756,7 +758,7 @@ class OC_App {
}
$appPath = self::getAppPath($app);
- if($appPath !== false) {
+ if ($appPath !== false) {
$appIcon = $appPath . '/img/' . $app . '.svg';
if (file_exists($appIcon)) {
$info['preview'] = $urlGenerator->imagePath($app, $app . '.svg');
@@ -847,9 +849,9 @@ class OC_App {
$requireMin = $appInfo['dependencies']['nextcloud']['@attributes']['min-version'];
} elseif (isset($appInfo['dependencies']['owncloud']['@attributes']['min-version'])) {
$requireMin = $appInfo['dependencies']['owncloud']['@attributes']['min-version'];
- } else if (isset($appInfo['requiremin'])) {
+ } elseif (isset($appInfo['requiremin'])) {
$requireMin = $appInfo['requiremin'];
- } else if (isset($appInfo['require'])) {
+ } elseif (isset($appInfo['require'])) {
$requireMin = $appInfo['require'];
}
@@ -857,14 +859,13 @@ class OC_App {
$requireMax = $appInfo['dependencies']['nextcloud']['@attributes']['max-version'];
} elseif (isset($appInfo['dependencies']['owncloud']['@attributes']['max-version'])) {
$requireMax = $appInfo['dependencies']['owncloud']['@attributes']['max-version'];
- } else if (isset($appInfo['requiremax'])) {
+ } elseif (isset($appInfo['requiremax'])) {
$requireMax = $appInfo['requiremax'];
}
if (!empty($requireMin)
&& version_compare(self::adjustVersionParts($ocVersion, $requireMin), $requireMin, '<')
) {
-
return false;
}
@@ -883,7 +884,7 @@ class OC_App {
public static function getAppVersions() {
static $versions;
- if(!$versions) {
+ if (!$versions) {
$appConfig = \OC::$server->getAppConfig();
$versions = $appConfig->getValues(false, 'installed_version');
}
@@ -898,7 +899,7 @@ class OC_App {
*/
public static function updateApp(string $appId): bool {
$appPath = self::getAppPath($appId);
- if($appPath === false) {
+ if ($appPath === false) {
return false;
}
@@ -931,7 +932,7 @@ class OC_App {
//set remote/public handlers
if (array_key_exists('ocsid', $appData)) {
\OC::$server->getConfig()->setAppValue($appId, 'ocsid', $appData['ocsid']);
- } elseif(\OC::$server->getConfig()->getAppValue($appId, 'ocsid', null) !== null) {
+ } elseif (\OC::$server->getConfig()->getAppValue($appId, 'ocsid', null) !== null) {
\OC::$server->getConfig()->deleteAppValue($appId, 'ocsid');
}
foreach ($appData['remote'] as $name => $path) {
@@ -1055,7 +1056,7 @@ class OC_App {
if ($attributeLang === $similarLang) {
$similarLangFallback = $option['@value'];
- } else if (strpos($attributeLang, $similarLang . '_') === 0) {
+ } elseif (strpos($attributeLang, $similarLang . '_') === 0) {
if ($similarLangFallback === false) {
$similarLangFallback = $option['@value'];
}
@@ -1067,7 +1068,7 @@ class OC_App {
if ($similarLangFallback !== false) {
return $similarLangFallback;
- } else if ($englishFallback !== false) {
+ } elseif ($englishFallback !== false) {
return $englishFallback;
}
return (string) $fallback;
@@ -1081,7 +1082,6 @@ class OC_App {
* @return array improved app data
*/
public static function parseAppInfo(array $data, $lang = null): array {
-
if ($lang && isset($data['name']) && is_array($data['name'])) {
$data['name'] = self::findBestL10NOption($data['name'], $lang);
}
@@ -1090,9 +1090,9 @@ class OC_App {
}
if ($lang && isset($data['description']) && is_array($data['description'])) {
$data['description'] = trim(self::findBestL10NOption($data['description'], $lang));
- } else if (isset($data['description']) && is_string($data['description'])) {
+ } elseif (isset($data['description']) && is_string($data['description'])) {
$data['description'] = trim($data['description']);
- } else {
+ } else {
$data['description'] = '';
}
diff --git a/lib/private/legacy/db.php b/lib/private/legacy/OC_DB.php
index 9371e733d28..1d2e9bd1429 100644
--- a/lib/private/legacy/db.php
+++ b/lib/private/legacy/OC_DB.php
@@ -5,6 +5,7 @@
* @author Andreas Fischer <bantu@owncloud.com>
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@statuscode.ch>
@@ -57,7 +58,7 @@ class OC_DB {
*
* SQL query via Doctrine prepare(), needs to be execute()'d!
*/
- static public function prepare( $query , $limit = null, $offset = null, $isManipulation = null) {
+ public static function prepare($query , $limit = null, $offset = null, $isManipulation = null) {
$connection = \OC::$server->getDatabaseConnection();
if ($isManipulation === null) {
@@ -83,7 +84,7 @@ class OC_DB {
* @param string $sql
* @return bool
*/
- static public function isManipulation( $sql ) {
+ public static function isManipulation($sql) {
$selectOccurrence = stripos($sql, 'SELECT');
if ($selectOccurrence !== false && $selectOccurrence < 10) {
return false;
@@ -112,7 +113,7 @@ class OC_DB {
* @return OC_DB_StatementWrapper
* @throws \OC\DatabaseException
*/
- static public function executeAudited( $stmt, array $parameters = []) {
+ public static function executeAudited($stmt, array $parameters = []) {
if (is_string($stmt)) {
// convert to an array with 'sql'
if (stripos($stmt, 'LIMIT') !== false) { //OFFSET requires LIMIT, so we only need to check for LIMIT
@@ -121,18 +122,18 @@ class OC_DB {
. ' pass an array with \'limit\' and \'offset\' instead';
throw new \OC\DatabaseException($message);
}
- $stmt = array('sql' => $stmt, 'limit' => null, 'offset' => null);
+ $stmt = ['sql' => $stmt, 'limit' => null, 'offset' => null];
}
if (is_array($stmt)) {
// convert to prepared statement
- if ( ! array_key_exists('sql', $stmt) ) {
+ if (! array_key_exists('sql', $stmt)) {
$message = 'statement array must at least contain key \'sql\'';
throw new \OC\DatabaseException($message);
}
- if ( ! array_key_exists('limit', $stmt) ) {
+ if (! array_key_exists('limit', $stmt)) {
$stmt['limit'] = null;
}
- if ( ! array_key_exists('limit', $stmt) ) {
+ if (! array_key_exists('limit', $stmt)) {
$stmt['offset'] = null;
}
$stmt = self::prepare($stmt['sql'], $stmt['limit'], $stmt['offset']);
@@ -171,7 +172,7 @@ class OC_DB {
*
* TODO: write more documentation
*/
- public static function createDbFromStructure( $file ) {
+ public static function createDbFromStructure($file) {
$schemaManager = self::getMDB2SchemaManager();
return $schemaManager->createDbFromStructure($file);
}
@@ -211,7 +212,7 @@ class OC_DB {
* @throws \OC\DatabaseException
*/
public static function raiseExceptionOnError($result, $message = null) {
- if($result === false) {
+ if ($result === false) {
if ($message === null) {
$message = self::getErrorMessage();
} else {
diff --git a/lib/private/legacy/db/statementwrapper.php b/lib/private/legacy/OC_DB_StatementWrapper.php
index 4512784d955..d4072caf28e 100644
--- a/lib/private/legacy/db/statementwrapper.php
+++ b/lib/private/legacy/OC_DB_StatementWrapper.php
@@ -4,6 +4,7 @@
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -42,7 +43,7 @@ class OC_DB_StatementWrapper {
*/
private $statement = null;
private $isManipulation = false;
- private $lastArguments = array();
+ private $lastArguments = [];
/**
* @param boolean $isManipulation
@@ -56,7 +57,7 @@ class OC_DB_StatementWrapper {
* pass all other function directly to the \Doctrine\DBAL\Driver\Statement
*/
public function __call($name,$arguments) {
- return call_user_func_array(array($this->statement,$name), $arguments);
+ return call_user_func_array([$this->statement,$name], $arguments);
}
/**
@@ -113,7 +114,7 @@ class OC_DB_StatementWrapper {
* @param integer|null $length max length when using an OUT bind
* @return boolean
*/
- public function bindParam($column, &$variable, $type = null, $length = null){
+ public function bindParam($column, &$variable, $type = null, $length = null) {
return $this->statement->bindParam($column, $variable, $type, $length);
}
}
diff --git a/lib/private/legacy/defaults.php b/lib/private/legacy/OC_Defaults.php
index 73443adb031..a9f588eb6e9 100644
--- a/lib/private/legacy/defaults.php
+++ b/lib/private/legacy/OC_Defaults.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Kesselberg <mail@danielkesselberg.de>
* @author Jan-Christoph Borchardt <hey@jancborchardt.net>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
@@ -36,7 +37,6 @@
*
*/
class OC_Defaults {
-
private $theme;
private $defaultEntity;
@@ -215,12 +215,12 @@ class OC_Defaults {
* Returns slogan
* @return string slogan
*/
- public function getSlogan() {
+ public function getSlogan(?string $lang = null) {
if ($this->themeExist('getSlogan')) {
- return $this->theme->getSlogan();
+ return $this->theme->getSlogan($lang);
} else {
if ($this->defaultSlogan === null) {
- $l10n = \OC::$server->getL10N('lib');
+ $l10n = \OC::$server->getL10N('lib', $lang);
$this->defaultSlogan = $l10n->t('a safe home for all your data');
}
return $this->defaultSlogan;
@@ -282,7 +282,6 @@ class OC_Defaults {
* @return string
*/
public function getColorPrimary() {
-
if ($this->themeExist('getColorPrimary')) {
return $this->theme->getColorPrimary();
}
@@ -296,7 +295,7 @@ class OC_Defaults {
* @return array scss variables to overwrite
*/
public function getScssVariables() {
- if($this->themeExist('getScssVariables')) {
+ if ($this->themeExist('getScssVariables')) {
return $this->theme->getScssVariables();
}
return [];
@@ -317,12 +316,12 @@ class OC_Defaults {
return $this->theme->getLogo($useSvg);
}
- if($useSvg) {
+ if ($useSvg) {
$logo = \OC::$server->getURLGenerator()->imagePath('core', 'logo/logo.svg');
} else {
$logo = \OC::$server->getURLGenerator()->imagePath('core', 'logo/logo.png');
}
- return $logo . '?v=' . hash('sha1', implode('.', \OCP\Util::getVersion()));
+ return $logo . '?v=' . hash('sha1', implode('.', \OCP\Util::getVersion()));
}
public function getTextColorPrimary() {
diff --git a/lib/private/legacy/eventsource.php b/lib/private/legacy/OC_EventSource.php
index 7191028295a..2d29f3109cf 100644
--- a/lib/private/legacy/eventsource.php
+++ b/lib/private/legacy/OC_EventSource.php
@@ -4,6 +4,7 @@
*
* @author Bart Visscher <bartv@thisnet.nl>
* @author Christian Oliff <christianoliff@yahoo.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Felix Moeller <mail@felixmoeller.de>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -77,7 +78,7 @@ class OC_EventSource implements \OCP\IEventSource {
} else {
header("Content-Type: text/event-stream");
}
- if(!\OC::$server->getRequest()->passesStrictCookieCheck()) {
+ if (!\OC::$server->getRequest()->passesStrictCookieCheck()) {
header('Location: '.\OC::$WEBROOT);
exit();
}
diff --git a/lib/private/legacy/filechunking.php b/lib/private/legacy/OC_FileChunking.php
index 048bd085bb5..8aef29541fe 100644
--- a/lib/private/legacy/filechunking.php
+++ b/lib/private/legacy/OC_FileChunking.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Felix Moeller <mail@felixmoeller.de>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -40,7 +41,7 @@ class OC_FileChunking {
*/
protected $ttl;
- static public function decodeName($name) {
+ public static function decodeName($name) {
preg_match('/(?P<name>.*)-chunking-(?P<transferid>\d+)-(?P<chunkcount>\d+)-(?P<index>\d+)/', $name, $matches);
return $matches;
}
@@ -87,7 +88,7 @@ class OC_FileChunking {
$cache = $this->getCache();
$chunkcount = (int)$this->info['chunkcount'];
- for($i=($chunkcount-1); $i >= 0; $i--) {
+ for ($i=($chunkcount-1); $i >= 0; $i--) {
if (!$cache->hasKey($prefix.$i)) {
return false;
}
@@ -143,7 +144,7 @@ class OC_FileChunking {
public function cleanup() {
$cache = $this->getCache();
$prefix = $this->getPrefix();
- for($i=0; $i < $this->info['chunkcount']; $i++) {
+ for ($i=0; $i < $this->info['chunkcount']; $i++) {
$cache->remove($prefix.$i);
}
}
diff --git a/lib/private/legacy/files.php b/lib/private/legacy/OC_Files.php
index adc793ba9b7..ddb824cd6cd 100644
--- a/lib/private/legacy/files.php
+++ b/lib/private/legacy/OC_Files.php
@@ -4,6 +4,7 @@
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Calviño Sánchez <danxuliu@gmail.com>
* @author Frank Karlitschek <frank@karlitschek.de>
* @author Jakob Sack <mail@jakobsack.de>
@@ -42,7 +43,6 @@
use OC\Files\View;
use OC\Streamer;
-use OCP\ILogger;
use OCP\Lock\ILockingProvider;
/**
@@ -50,11 +50,11 @@ use OCP\Lock\ILockingProvider;
*
*/
class OC_Files {
- const FILE = 1;
- const ZIP_FILES = 2;
- const ZIP_DIR = 3;
+ public const FILE = 1;
+ public const ZIP_FILES = 2;
+ public const ZIP_DIR = 3;
- const UPLOAD_MIN_LIMIT_BYTES = 1048576; // 1 MiB
+ public const UPLOAD_MIN_LIMIT_BYTES = 1048576; // 1 MiB
private static $multipartBoundary = '';
@@ -84,19 +84,17 @@ class OC_Files {
$type = \OC::$server->getMimeTypeDetector()->getSecureMimeType(\OC\Files\Filesystem::getMimeType($filename));
if ($fileSize > -1) {
if (!empty($rangeArray)) {
- http_response_code(206);
- header('Accept-Ranges: bytes', true);
- if (count($rangeArray) > 1) {
- $type = 'multipart/byteranges; boundary='.self::getBoundary();
+ http_response_code(206);
+ header('Accept-Ranges: bytes', true);
+ if (count($rangeArray) > 1) {
+ $type = 'multipart/byteranges; boundary='.self::getBoundary();
// no Content-Length header here
- }
- else {
- header(sprintf('Content-Range: bytes %d-%d/%d', $rangeArray[0]['from'], $rangeArray[0]['to'], $fileSize), true);
- OC_Response::setContentLengthHeader($rangeArray[0]['to'] - $rangeArray[0]['from'] + 1);
- }
- }
- else {
- OC_Response::setContentLengthHeader($fileSize);
+ } else {
+ header(sprintf('Content-Range: bytes %d-%d/%d', $rangeArray[0]['from'], $rangeArray[0]['to'], $fileSize), true);
+ OC_Response::setContentLengthHeader($rangeArray[0]['to'] - $rangeArray[0]['from'] + 1);
+ }
+ } else {
+ OC_Response::setContentLengthHeader($fileSize);
}
}
header('Content-Type: '.$type, true);
@@ -110,12 +108,10 @@ class OC_Files {
* @param array $params ; 'head' boolean to only send header of the request ; 'range' http range header
*/
public static function get($dir, $files, $params = null) {
-
$view = \OC\Files\Filesystem::getView();
$getType = self::FILE;
$filename = $dir;
try {
-
if (is_array($files) && count($files) === 1) {
$files = $files[0];
}
@@ -123,7 +119,7 @@ class OC_Files {
if (!is_array($files)) {
$filename = $dir . '/' . $files;
if (!$view->is_dir($filename)) {
- self::getSingleFile($view, $dir, $files, is_null($params) ? array() : $params);
+ self::getSingleFile($view, $dir, $files, is_null($params) ? [] : $params);
return;
}
}
@@ -150,7 +146,7 @@ class OC_Files {
/* Calculate filesize and number of files */
if ($getType === self::ZIP_FILES) {
- $fileInfos = array();
+ $fileInfos = [];
$fileSize = 0;
foreach ($files as $file) {
$fileInfo = \OC\Files\Filesystem::getFileInfo($dir . '/' . $file);
@@ -161,7 +157,7 @@ class OC_Files {
} elseif ($getType === self::ZIP_DIR) {
$fileInfo = \OC\Files\Filesystem::getFileInfo($dir . '/' . $files);
$fileSize = $fileInfo->getSize();
- $numberOfFiles = self::getNumberOfFiles(array($fileInfo));
+ $numberOfFiles = self::getNumberOfFiles([$fileInfo]);
}
$streamer = new Streamer(\OC::$server->getRequest(), $fileSize, $numberOfFiles);
@@ -180,7 +176,7 @@ class OC_Files {
if (\OC\Files\Filesystem::is_file($file)) {
$userFolder = \OC::$server->getRootFolder()->get(\OC\Files\Filesystem::getRoot());
$file = $userFolder->get($file);
- if($file instanceof \OC\Files\Node\File) {
+ if ($file instanceof \OC\Files\Node\File) {
try {
$fh = $file->fopen('r');
} catch (\OCP\Files\NotPermittedException $e) {
@@ -239,7 +235,7 @@ class OC_Files {
$minOffset = 0;
$ind = 0;
- $rangeArray = array();
+ $rangeArray = [];
foreach ($rArray as $value) {
$ranges = explode('-', $value);
@@ -258,23 +254,21 @@ class OC_Files {
if ($ranges[1] >= $fileSize) {
$ranges[1] = $fileSize-1;
}
- $rangeArray[$ind++] = array( 'from' => $ranges[0], 'to' => $ranges[1], 'size' => $fileSize );
+ $rangeArray[$ind++] = [ 'from' => $ranges[0], 'to' => $ranges[1], 'size' => $fileSize ];
$minOffset = $ranges[1] + 1;
if ($minOffset >= $fileSize) {
break;
}
- }
- elseif (is_numeric($ranges[0]) && $ranges[0] < $fileSize) {
+ } elseif (is_numeric($ranges[0]) && $ranges[0] < $fileSize) {
// case: x-
- $rangeArray[$ind++] = array( 'from' => $ranges[0], 'to' => $fileSize-1, 'size' => $fileSize );
+ $rangeArray[$ind++] = [ 'from' => $ranges[0], 'to' => $fileSize-1, 'size' => $fileSize ];
break;
- }
- elseif (is_numeric($ranges[1])) {
+ } elseif (is_numeric($ranges[1])) {
// case: -x
if ($ranges[1] > $fileSize) {
$ranges[1] = $fileSize;
}
- $rangeArray[$ind++] = array( 'from' => $fileSize-$ranges[1], 'to' => $fileSize-1, 'size' => $fileSize );
+ $rangeArray[$ind++] = [ 'from' => $fileSize-$ranges[1], 'to' => $fileSize-1, 'size' => $fileSize ];
break;
}
}
@@ -294,7 +288,7 @@ class OC_Files {
try {
$userFolder = \OC::$server->getRootFolder()->get(\OC\Files\Filesystem::getRoot());
$file = $userFolder->get($filename);
- if(!$file instanceof \OC\Files\Node\File || !$file->isReadable()) {
+ if (!$file instanceof \OC\Files\Node\File || !$file->isReadable()) {
http_response_code(403);
die('403 Forbidden');
}
@@ -315,7 +309,7 @@ class OC_Files {
OC_Util::obEnd();
$view->lockFile($filename, ILockingProvider::LOCK_SHARED);
- $rangeArray = array();
+ $rangeArray = [];
if (isset($params['range']) && substr($params['range'], 0, 6) === 'bytes=') {
$rangeArray = self::parseHttpRangeHeader(substr($params['range'], 6), $fileSize);
@@ -329,35 +323,33 @@ class OC_Files {
if (!empty($rangeArray)) {
try {
- if (count($rangeArray) == 1) {
- $view->readfilePart($filename, $rangeArray[0]['from'], $rangeArray[0]['to']);
- }
- else {
- // check if file is seekable (if not throw UnseekableException)
- // we have to check it before body contents
- $view->readfilePart($filename, $rangeArray[0]['size'], $rangeArray[0]['size']);
-
- $type = \OC::$server->getMimeTypeDetector()->getSecureMimeType(\OC\Files\Filesystem::getMimeType($filename));
-
- foreach ($rangeArray as $range) {
- echo "\r\n--".self::getBoundary()."\r\n".
- "Content-type: ".$type."\r\n".
- "Content-range: bytes ".$range['from']."-".$range['to']."/".$range['size']."\r\n\r\n";
- $view->readfilePart($filename, $range['from'], $range['to']);
+ if (count($rangeArray) == 1) {
+ $view->readfilePart($filename, $rangeArray[0]['from'], $rangeArray[0]['to']);
+ } else {
+ // check if file is seekable (if not throw UnseekableException)
+ // we have to check it before body contents
+ $view->readfilePart($filename, $rangeArray[0]['size'], $rangeArray[0]['size']);
+
+ $type = \OC::$server->getMimeTypeDetector()->getSecureMimeType(\OC\Files\Filesystem::getMimeType($filename));
+
+ foreach ($rangeArray as $range) {
+ echo "\r\n--".self::getBoundary()."\r\n".
+ "Content-type: ".$type."\r\n".
+ "Content-range: bytes ".$range['from']."-".$range['to']."/".$range['size']."\r\n\r\n";
+ $view->readfilePart($filename, $range['from'], $range['to']);
+ }
+ echo "\r\n--".self::getBoundary()."--\r\n";
}
- echo "\r\n--".self::getBoundary()."--\r\n";
- }
} catch (\OCP\Files\UnseekableException $ex) {
- // file is unseekable
- header_remove('Accept-Ranges');
- header_remove('Content-Range');
- http_response_code(200);
- self::sendHeaders($filename, $name, array());
- $view->readfile($filename);
+ // file is unseekable
+ header_remove('Accept-Ranges');
+ header_remove('Content-Range');
+ http_response_code(200);
+ self::sendHeaders($filename, $name, []);
+ $view->readfile($filename);
}
- }
- else {
- $view->readfile($filename);
+ } else {
+ $view->readfile($filename);
}
}
@@ -399,7 +391,7 @@ class OC_Files {
$view->lockFile($file, ILockingProvider::LOCK_SHARED);
if ($view->is_dir($file)) {
$contents = $view->getDirectoryContent($file);
- $contents = array_map(function($fileInfo) use ($file) {
+ $contents = array_map(function ($fileInfo) use ($file) {
/** @var \OCP\Files\FileInfo $fileInfo */
return $file . '/' . $fileInfo->getName();
}, $contents);
@@ -430,5 +422,4 @@ class OC_Files {
$view->unlockFile($file, ILockingProvider::LOCK_SHARED);
}
}
-
}
diff --git a/lib/private/legacy/helper.php b/lib/private/legacy/OC_Helper.php
index 3ddb9d07b14..8cd492de117 100644
--- a/lib/private/legacy/helper.php
+++ b/lib/private/legacy/OC_Helper.php
@@ -6,6 +6,7 @@
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Clark Tomlinson <fallen013@gmail.com>
* @author Daniel Kesselberg <mail@danielkesselberg.de>
* @author Felix Moeller <mail@felixmoeller.de>
@@ -42,6 +43,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
+
use Symfony\Component\Process\ExecutableFinder;
/**
@@ -100,7 +102,7 @@ class OC_Helper {
return (float)$str;
}
- $bytes_array = array(
+ $bytes_array = [
'b' => 1,
'k' => 1024,
'kb' => 1024,
@@ -112,7 +114,7 @@ class OC_Helper {
't' => 1024 * 1024 * 1024 * 1024,
'pb' => 1024 * 1024 * 1024 * 1024 * 1024,
'p' => 1024 * 1024 * 1024 * 1024 * 1024,
- );
+ ];
$bytes = (float)$str;
@@ -133,7 +135,7 @@ class OC_Helper {
* @param string $dest target folder
*
*/
- static function copyr($src, $dest) {
+ public static function copyr($src, $dest) {
if (is_dir($src)) {
if (!is_dir($dest)) {
mkdir($dest);
@@ -155,7 +157,7 @@ class OC_Helper {
* @param bool $deleteSelf if set to false only the content of the folder will be deleted
* @return bool
*/
- static function rmdirr($dir, $deleteSelf = true) {
+ public static function rmdirr($dir, $deleteSelf = true) {
if (is_dir($dir)) {
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS),
@@ -166,7 +168,7 @@ class OC_Helper {
/** @var SplFileInfo $fileInfo */
if ($fileInfo->isLink()) {
unlink($fileInfo->getPathname());
- } else if ($fileInfo->isDir()) {
+ } elseif ($fileInfo->isDir()) {
rmdir($fileInfo->getRealPath());
} else {
unlink($fileInfo->getRealPath());
@@ -191,7 +193,7 @@ class OC_Helper {
* @deprecated 18.0.0
* @return \OC\Files\Type\TemplateManager
*/
- static public function getFileTemplateManager() {
+ public static function getFileTemplateManager() {
if (!self::$templateManager) {
self::$templateManager = new \OC\Files\Type\TemplateManager();
}
@@ -229,8 +231,9 @@ class OC_Helper {
}
foreach ($dirs as $dir) {
foreach ($exts as $ext) {
- if ($check_fn("$dir/$name" . $ext))
+ if ($check_fn("$dir/$name" . $ext)) {
return true;
+ }
}
}
return false;
@@ -245,7 +248,7 @@ class OC_Helper {
*/
public static function streamCopy($source, $target) {
if (!$source or !$target) {
- return array(0, false);
+ return [0, false];
}
$bufSize = 8192;
$result = true;
@@ -266,7 +269,7 @@ class OC_Helper {
break;
}
}
- return array($count, $result);
+ return [$count, $result];
}
/**
@@ -342,7 +345,7 @@ class OC_Helper {
*/
public static function mb_array_change_key_case($input, $case = MB_CASE_LOWER, $encoding = 'UTF-8') {
$case = ($case != MB_CASE_UPPER) ? MB_CASE_LOWER : MB_CASE_UPPER;
- $ret = array();
+ $ret = [];
foreach ($input as $k => $v) {
$ret[mb_convert_case($k, $case, $encoding)] = $v;
}
@@ -365,7 +368,7 @@ class OC_Helper {
$it = new RecursiveIteratorIterator($aIt);
while ($it->valid()) {
- if (((isset($index) AND ($it->key() == $index)) OR !isset($index)) AND ($it->current() == $needle)) {
+ if (((isset($index) and ($it->key() == $index)) or !isset($index)) and ($it->current() == $needle)) {
return $aIt->key();
}
@@ -383,7 +386,7 @@ class OC_Helper {
* @return int number of bytes representing
*/
public static function maxUploadFilesize($dir, $freeSpace = null) {
- if (is_null($freeSpace) || $freeSpace < 0){
+ if (is_null($freeSpace) || $freeSpace < 0) {
$freeSpace = self::freeSpace($dir);
}
return min($freeSpace, self::uploadLimit());
@@ -503,19 +506,14 @@ class OC_Helper {
|| $storage->instanceOfStorage('\OC\Files\ObjectStore\HomeObjectStoreStorage')
) {
/** @var \OC\Files\Storage\Home $storage */
- $userInstance = $storage->getUser();
- $user = ($userInstance === null) ? null : $userInstance->getUID();
+ $user = $storage->getUser();
} else {
- $user = \OC::$server->getUserSession()->getUser()->getUID();
- }
- if ($user) {
- $quota = OC_Util::getUserQuota($user);
- } else {
- $quota = \OCP\Files\FileInfo::SPACE_UNLIMITED;
+ $user = \OC::$server->getUserSession()->getUser();
}
+ $quota = OC_Util::getUserQuota($user);
if ($quota !== \OCP\Files\FileInfo::SPACE_UNLIMITED) {
// always get free space / total space from root + mount points
- return self::getGlobalStorageInfo();
+ return self::getGlobalStorageInfo($quota);
}
}
@@ -543,7 +541,7 @@ class OC_Helper {
$ownerId = $storage->getOwner($path);
$ownerDisplayName = '';
$owner = \OC::$server->getUserManager()->get($ownerId);
- if($owner) {
+ if ($owner) {
$ownerDisplayName = $owner->getDisplayName();
}
@@ -561,11 +559,10 @@ class OC_Helper {
/**
* Get storage info including all mount points and quota
*
+ * @param int $quota
* @return array
*/
- private static function getGlobalStorageInfo() {
- $quota = OC_Util::getUserQuota(\OCP\User::getUser());
-
+ private static function getGlobalStorageInfo($quota) {
$rootInfo = \OC\Files\Filesystem::getFileInfo('', 'ext');
$used = $rootInfo['size'];
if ($used < 0) {
diff --git a/lib/private/legacy/hook.php b/lib/private/legacy/OC_Hook.php
index 6353d1f15db..1da03df3a1f 100644
--- a/lib/private/legacy/hook.php
+++ b/lib/private/legacy/OC_Hook.php
@@ -6,7 +6,6 @@
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jakob Sack <mail@jakobsack.de>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
- * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Robin McCorkell <robin@mccorkell.me.uk>
@@ -36,7 +35,7 @@
class OC_Hook {
public static $thrownExceptions = [];
- static private $registered = array();
+ private static $registered = [];
/**
* connects a function to a hook
@@ -51,16 +50,16 @@ class OC_Hook {
*
* TODO: write example
*/
- static public function connect($signalClass, $signalName, $slotClass, $slotName ) {
+ public static function connect($signalClass, $signalName, $slotClass, $slotName) {
// If we're trying to connect to an emitting class that isn't
// yet registered, register it
- if( !array_key_exists($signalClass, self::$registered )) {
- self::$registered[$signalClass] = array();
+ if (!array_key_exists($signalClass, self::$registered)) {
+ self::$registered[$signalClass] = [];
}
// If we're trying to connect to an emitting method that isn't
// yet registered, register it with the emitting class
- if( !array_key_exists( $signalName, self::$registered[$signalClass] )) {
- self::$registered[$signalClass][$signalName] = array();
+ if (!array_key_exists($signalName, self::$registered[$signalClass])) {
+ self::$registered[$signalClass][$signalName] = [];
}
// don't connect hooks twice
@@ -70,10 +69,10 @@ class OC_Hook {
}
}
// Connect the hook handler to the requested emitter
- self::$registered[$signalClass][$signalName][] = array(
- "class" => $slotClass,
- "name" => $slotName
- );
+ self::$registered[$signalClass][$signalName][] = [
+ "class" => $slotClass,
+ "name" => $slotName
+ ];
// No chance for failure ;-)
return true;
@@ -91,31 +90,31 @@ class OC_Hook {
*
* TODO: write example
*/
- static public function emit($signalClass, $signalName, $params = []) {
+ public static function emit($signalClass, $signalName, $params = []) {
// Return false if no hook handlers are listening to this
// emitting class
- if( !array_key_exists($signalClass, self::$registered )) {
+ if (!array_key_exists($signalClass, self::$registered)) {
return false;
}
// Return false if no hook handlers are listening to this
// emitting method
- if( !array_key_exists( $signalName, self::$registered[$signalClass] )) {
+ if (!array_key_exists($signalName, self::$registered[$signalClass])) {
return false;
}
// Call all slots
- foreach( self::$registered[$signalClass][$signalName] as $i ) {
+ foreach (self::$registered[$signalClass][$signalName] as $i) {
try {
- call_user_func( array( $i["class"], $i["name"] ), $params );
- } catch (Exception $e){
+ call_user_func([ $i["class"], $i["name"] ], $params);
+ } catch (Exception $e) {
self::$thrownExceptions[] = $e;
\OC::$server->getLogger()->logException($e);
- if($e instanceof \OC\HintException) {
+ if ($e instanceof \OC\HintException) {
throw $e;
}
- if($e instanceof \OC\ServerNotAvailableException) {
+ if ($e instanceof \OC\ServerNotAvailableException) {
throw $e;
}
}
@@ -129,15 +128,15 @@ class OC_Hook {
* @param string $signalClass
* @param string $signalName
*/
- static public function clear($signalClass='', $signalName='') {
+ public static function clear($signalClass='', $signalName='') {
if ($signalClass) {
if ($signalName) {
- self::$registered[$signalClass][$signalName]=array();
- }else{
- self::$registered[$signalClass]=array();
+ self::$registered[$signalClass][$signalName]=[];
+ } else {
+ self::$registered[$signalClass]=[];
}
- }else{
- self::$registered=array();
+ } else {
+ self::$registered=[];
}
}
@@ -145,7 +144,7 @@ class OC_Hook {
* DO NOT USE!
* For unit tests ONLY!
*/
- static public function getHooks() {
+ public static function getHooks() {
return self::$registered;
}
}
diff --git a/lib/private/legacy/image.php b/lib/private/legacy/OC_Image.php
index e0f2dad3599..4fdbfb3909f 100644
--- a/lib/private/legacy/image.php
+++ b/lib/private/legacy/OC_Image.php
@@ -7,6 +7,7 @@
* @author Björn Schießle <bjoern@schiessle.org>
* @author Byron Marohn <combustible@live.com>
* @author Christopher Schäpers <kondou@ts.unde.re>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author j-ed <juergen@eisfair.org>
* @author Joas Schilling <coding@schilljs.com>
@@ -38,6 +39,8 @@
*
*/
+use OCP\IImage;
+
/**
* Class for basic image manipulation
*/
@@ -132,7 +135,7 @@ class OC_Image implements \OCP\IImage {
*/
public function widthTopLeft() {
$o = $this->getOrientation();
- $this->logger->debug('OC_Image->widthTopLeft() Orientation: ' . $o, array('app' => 'core'));
+ $this->logger->debug('OC_Image->widthTopLeft() Orientation: ' . $o, ['app' => 'core']);
switch ($o) {
case -1:
case 1:
@@ -156,7 +159,7 @@ class OC_Image implements \OCP\IImage {
*/
public function heightTopLeft() {
$o = $this->getOrientation();
- $this->logger->debug('OC_Image->heightTopLeft() Orientation: ' . $o, array('app' => 'core'));
+ $this->logger->debug('OC_Image->heightTopLeft() Orientation: ' . $o, ['app' => 'core']);
switch ($o) {
case -1:
case 1:
@@ -201,7 +204,7 @@ class OC_Image implements \OCP\IImage {
}
if ($filePath === null) {
if ($this->filePath === null) {
- $this->logger->error(__METHOD__ . '(): called with no path.', array('app' => 'core'));
+ $this->logger->error(__METHOD__ . '(): called with no path.', ['app' => 'core']);
return false;
} else {
$filePath = $this->filePath;
@@ -225,10 +228,10 @@ class OC_Image implements \OCP\IImage {
}
$isWritable = is_writable(dirname($filePath));
if (!$isWritable) {
- $this->logger->error(__METHOD__ . '(): Directory \'' . dirname($filePath) . '\' is not writable.', array('app' => 'core'));
+ $this->logger->error(__METHOD__ . '(): Directory \'' . dirname($filePath) . '\' is not writable.', ['app' => 'core']);
return false;
} elseif ($isWritable && file_exists($filePath) && !is_writable($filePath)) {
- $this->logger->error(__METHOD__ . '(): File \'' . $filePath . '\' is not writable.', array('app' => 'core'));
+ $this->logger->error(__METHOD__ . '(): File \'' . $filePath . '\' is not writable.', ['app' => 'core']);
return false;
}
}
@@ -360,11 +363,11 @@ class OC_Image implements \OCP\IImage {
break;
default:
$res = imagepng($this->resource);
- $this->logger->info('OC_Image->data. Could not guess mime-type, defaulting to png', array('app' => 'core'));
+ $this->logger->info('OC_Image->data. Could not guess mime-type, defaulting to png', ['app' => 'core']);
break;
}
if (!$res) {
- $this->logger->error('OC_Image->data. Error getting image data.', array('app' => 'core'));
+ $this->logger->error('OC_Image->data. Error getting image data.', ['app' => 'core']);
}
return ob_get_clean();
}
@@ -399,19 +402,19 @@ class OC_Image implements \OCP\IImage {
}
if ($this->imageType !== IMAGETYPE_JPEG) {
- $this->logger->debug('OC_Image->fixOrientation() Image is not a JPEG.', array('app' => 'core'));
+ $this->logger->debug('OC_Image->fixOrientation() Image is not a JPEG.', ['app' => 'core']);
return -1;
}
if (!is_callable('exif_read_data')) {
- $this->logger->debug('OC_Image->fixOrientation() Exif module not enabled.', array('app' => 'core'));
+ $this->logger->debug('OC_Image->fixOrientation() Exif module not enabled.', ['app' => 'core']);
return -1;
}
if (!$this->valid()) {
- $this->logger->debug('OC_Image->fixOrientation() No image loaded.', array('app' => 'core'));
+ $this->logger->debug('OC_Image->fixOrientation() No image loaded.', ['app' => 'core']);
return -1;
}
if (is_null($this->filePath) || !is_readable($this->filePath)) {
- $this->logger->debug('OC_Image->fixOrientation() No readable file path set.', array('app' => 'core'));
+ $this->logger->debug('OC_Image->fixOrientation() No readable file path set.', ['app' => 'core']);
return -1;
}
$exif = @exif_read_data($this->filePath, 'IFD0');
@@ -427,11 +430,11 @@ class OC_Image implements \OCP\IImage {
public function readExif($data) {
if (!is_callable('exif_read_data')) {
- $this->logger->debug('OC_Image->fixOrientation() Exif module not enabled.', array('app' => 'core'));
+ $this->logger->debug('OC_Image->fixOrientation() Exif module not enabled.', ['app' => 'core']);
return;
}
if (!$this->valid()) {
- $this->logger->debug('OC_Image->fixOrientation() No image loaded.', array('app' => 'core'));
+ $this->logger->debug('OC_Image->fixOrientation() No image loaded.', ['app' => 'core']);
return;
}
@@ -453,7 +456,7 @@ class OC_Image implements \OCP\IImage {
*/
public function fixOrientation() {
$o = $this->getOrientation();
- $this->logger->debug('OC_Image->fixOrientation() Orientation: ' . $o, array('app' => 'core'));
+ $this->logger->debug('OC_Image->fixOrientation() Orientation: ' . $o, ['app' => 'core']);
$rotate = 0;
$flip = false;
switch ($o) {
@@ -488,7 +491,7 @@ class OC_Image implements \OCP\IImage {
$rotate = 90;
break;
}
- if($flip && function_exists('imageflip')) {
+ if ($flip && function_exists('imageflip')) {
imageflip($this->resource, IMG_FLIP_HORIZONTAL);
}
if ($rotate) {
@@ -500,15 +503,15 @@ class OC_Image implements \OCP\IImage {
$this->resource = $res;
return true;
} else {
- $this->logger->debug('OC_Image->fixOrientation() Error during alpha-saving', array('app' => 'core'));
+ $this->logger->debug('OC_Image->fixOrientation() Error during alpha-saving', ['app' => 'core']);
return false;
}
} else {
- $this->logger->debug('OC_Image->fixOrientation() Error during alpha-blending', array('app' => 'core'));
+ $this->logger->debug('OC_Image->fixOrientation() Error during alpha-blending', ['app' => 'core']);
return false;
}
} else {
- $this->logger->debug('OC_Image->fixOrientation() Error during orientation fixing', array('app' => 'core'));
+ $this->logger->debug('OC_Image->fixOrientation() Error during orientation fixing', ['app' => 'core']);
return false;
}
}
@@ -550,7 +553,7 @@ class OC_Image implements \OCP\IImage {
imagealphablending($this->resource, true);
imagesavealpha($this->resource, true);
} else {
- $this->logger->debug('OC_Image->loadFromFile, GIF images not supported: ' . $imagePath, array('app' => 'core'));
+ $this->logger->debug('OC_Image->loadFromFile, GIF images not supported: ' . $imagePath, ['app' => 'core']);
}
break;
case IMAGETYPE_JPEG:
@@ -558,10 +561,10 @@ class OC_Image implements \OCP\IImage {
if (getimagesize($imagePath) !== false) {
$this->resource = @imagecreatefromjpeg($imagePath);
} else {
- $this->logger->debug('OC_Image->loadFromFile, JPG image not valid: ' . $imagePath, array('app' => 'core'));
+ $this->logger->debug('OC_Image->loadFromFile, JPG image not valid: ' . $imagePath, ['app' => 'core']);
}
} else {
- $this->logger->debug('OC_Image->loadFromFile, JPG images not supported: ' . $imagePath, array('app' => 'core'));
+ $this->logger->debug('OC_Image->loadFromFile, JPG images not supported: ' . $imagePath, ['app' => 'core']);
}
break;
case IMAGETYPE_PNG:
@@ -571,21 +574,21 @@ class OC_Image implements \OCP\IImage {
imagealphablending($this->resource, true);
imagesavealpha($this->resource, true);
} else {
- $this->logger->debug('OC_Image->loadFromFile, PNG images not supported: ' . $imagePath, array('app' => 'core'));
+ $this->logger->debug('OC_Image->loadFromFile, PNG images not supported: ' . $imagePath, ['app' => 'core']);
}
break;
case IMAGETYPE_XBM:
if (imagetypes() & IMG_XPM) {
$this->resource = @imagecreatefromxbm($imagePath);
} else {
- $this->logger->debug('OC_Image->loadFromFile, XBM/XPM images not supported: ' . $imagePath, array('app' => 'core'));
+ $this->logger->debug('OC_Image->loadFromFile, XBM/XPM images not supported: ' . $imagePath, ['app' => 'core']);
}
break;
case IMAGETYPE_WBMP:
if (imagetypes() & IMG_WBMP) {
$this->resource = @imagecreatefromwbmp($imagePath);
} else {
- $this->logger->debug('OC_Image->loadFromFile, WBMP images not supported: ' . $imagePath, array('app' => 'core'));
+ $this->logger->debug('OC_Image->loadFromFile, WBMP images not supported: ' . $imagePath, ['app' => 'core']);
}
break;
case IMAGETYPE_BMP:
@@ -620,7 +623,7 @@ class OC_Image implements \OCP\IImage {
// this is mostly file created from encrypted file
$this->resource = imagecreatefromstring(\OC\Files\Filesystem::file_get_contents(\OC\Files\Filesystem::getLocalPath($imagePath)));
$iType = IMAGETYPE_PNG;
- $this->logger->debug('OC_Image->loadFromFile, Default', array('app' => 'core'));
+ $this->logger->debug('OC_Image->loadFromFile, Default', ['app' => 'core']);
break;
}
if ($this->valid()) {
@@ -651,7 +654,7 @@ class OC_Image implements \OCP\IImage {
}
if (!$this->resource) {
- $this->logger->debug('OC_Image->loadFromFile, could not load', array('app' => 'core'));
+ $this->logger->debug('OC_Image->loadFromFile, could not load', ['app' => 'core']);
return false;
}
return $this->resource;
@@ -674,7 +677,7 @@ class OC_Image implements \OCP\IImage {
$this->mimeType = $this->fileInfo->buffer($data);
}
if (!$this->resource) {
- $this->logger->debug('OC_Image->loadFromBase64, could not load', array('app' => 'core'));
+ $this->logger->debug('OC_Image->loadFromBase64, could not load', ['app' => 'core']);
return false;
}
return $this->resource;
@@ -695,7 +698,7 @@ class OC_Image implements \OCP\IImage {
*/
private function imagecreatefrombmp($fileName) {
if (!($fh = fopen($fileName, 'rb'))) {
- $this->logger->warning('imagecreatefrombmp: Can not open ' . $fileName, array('app' => 'core'));
+ $this->logger->warning('imagecreatefrombmp: Can not open ' . $fileName, ['app' => 'core']);
return false;
}
// read file header
@@ -703,7 +706,7 @@ class OC_Image implements \OCP\IImage {
// check for bitmap
if ($meta['type'] != 19778) {
fclose($fh);
- $this->logger->warning('imagecreatefrombmp: Can not open ' . $fileName . ' is not a bitmap!', array('app' => 'core'));
+ $this->logger->warning('imagecreatefrombmp: Can not open ' . $fileName . ' is not a bitmap!', ['app' => 'core']);
return false;
}
// read image header
@@ -727,7 +730,7 @@ class OC_Image implements \OCP\IImage {
$meta['imagesize'] = @filesize($fileName) - $meta['offset'];
if ($meta['imagesize'] < 1) {
fclose($fh);
- $this->logger->warning('imagecreatefrombmp: Can not obtain file size of ' . $fileName . ' is not a bitmap!', array('app' => 'core'));
+ $this->logger->warning('imagecreatefrombmp: Can not obtain file size of ' . $fileName . ' is not a bitmap!', ['app' => 'core']);
return false;
}
}
@@ -735,7 +738,7 @@ class OC_Image implements \OCP\IImage {
// calculate colors
$meta['colors'] = !$meta['colors'] ? pow(2, $meta['bits']) : $meta['colors'];
// read color palette
- $palette = array();
+ $palette = [];
if ($meta['bits'] < 16) {
$palette = unpack('l' . $meta['colors'], fread($fh, $meta['colors'] * 4));
// in rare cases the color value is signed
@@ -751,7 +754,7 @@ class OC_Image implements \OCP\IImage {
fclose($fh);
$this->logger->warning(
'imagecreatefrombmp: imagecreatetruecolor failed for file "' . $fileName . '" with dimensions ' . $meta['width'] . 'x' . $meta['height'],
- array('app' => 'core'));
+ ['app' => 'core']);
return false;
}
@@ -768,7 +771,7 @@ class OC_Image implements \OCP\IImage {
case 32:
case 24:
if (!($part = substr($data, $p, 3))) {
- $this->logger->warning($error, array('app' => 'core'));
+ $this->logger->warning($error, ['app' => 'core']);
return $im;
}
$color = @unpack('V', $part . $vide);
@@ -776,7 +779,7 @@ class OC_Image implements \OCP\IImage {
case 16:
if (!($part = substr($data, $p, 2))) {
fclose($fh);
- $this->logger->warning($error, array('app' => 'core'));
+ $this->logger->warning($error, ['app' => 'core']);
return $im;
}
$color = @unpack('v', $part);
@@ -823,7 +826,7 @@ class OC_Image implements \OCP\IImage {
break;
default:
fclose($fh);
- $this->logger->warning('imagecreatefrombmp: ' . $fileName . ' has ' . $meta['bits'] . ' bits and this is not supported!', array('app' => 'core'));
+ $this->logger->warning('imagecreatefrombmp: ' . $fileName . ' has ' . $meta['bits'] . ' bits and this is not supported!', ['app' => 'core']);
return false;
}
imagesetpixel($im, $x, $y, $color[1]);
@@ -844,8 +847,19 @@ class OC_Image implements \OCP\IImage {
* @return bool
*/
public function resize($maxSize) {
+ $result = $this->resizeNew($maxSize);
+ imagedestroy($this->resource);
+ $this->resource = $result;
+ return is_resource($result);
+ }
+
+ /**
+ * @param $maxSize
+ * @return resource | bool
+ */
+ private function resizeNew($maxSize) {
if (!$this->valid()) {
- $this->logger->error(__METHOD__ . '(): No image loaded', array('app' => 'core'));
+ $this->logger->error(__METHOD__ . '(): No image loaded', ['app' => 'core']);
return false;
}
$widthOrig = imagesx($this->resource);
@@ -860,8 +874,7 @@ class OC_Image implements \OCP\IImage {
$newHeight = $maxSize;
}
- $this->preciseResize((int)round($newWidth), (int)round($newHeight));
- return true;
+ return $this->preciseResizeNew((int)round($newWidth), (int)round($newHeight));
}
/**
@@ -870,15 +883,28 @@ class OC_Image implements \OCP\IImage {
* @return bool
*/
public function preciseResize(int $width, int $height): bool {
+ $result = $this->preciseResizeNew($width, $height);
+ imagedestroy($this->resource);
+ $this->resource = $result;
+ return is_resource($result);
+ }
+
+
+ /**
+ * @param int $width
+ * @param int $height
+ * @return resource | bool
+ */
+ public function preciseResizeNew(int $width, int $height) {
if (!$this->valid()) {
- $this->logger->error(__METHOD__ . '(): No image loaded', array('app' => 'core'));
+ $this->logger->error(__METHOD__ . '(): No image loaded', ['app' => 'core']);
return false;
}
$widthOrig = imagesx($this->resource);
$heightOrig = imagesy($this->resource);
$process = imagecreatetruecolor($width, $height);
if ($process === false) {
- $this->logger->error(__METHOD__ . '(): Error creating true color image', array('app' => 'core'));
+ $this->logger->error(__METHOD__ . '(): Error creating true color image', ['app' => 'core']);
return false;
}
@@ -891,13 +917,11 @@ class OC_Image implements \OCP\IImage {
$res = imagecopyresampled($process, $this->resource, 0, 0, 0, 0, $width, $height, $widthOrig, $heightOrig);
if ($res === false) {
- $this->logger->error(__METHOD__ . '(): Error re-sampling process image', array('app' => 'core'));
+ $this->logger->error(__METHOD__ . '(): Error re-sampling process image', ['app' => 'core']);
imagedestroy($process);
return false;
}
- imagedestroy($this->resource);
- $this->resource = $process;
- return true;
+ return $process;
}
/**
@@ -908,7 +932,7 @@ class OC_Image implements \OCP\IImage {
*/
public function centerCrop($size = 0) {
if (!$this->valid()) {
- $this->logger->error('OC_Image->centerCrop, No image loaded', array('app' => 'core'));
+ $this->logger->error('OC_Image->centerCrop, No image loaded', ['app' => 'core']);
return false;
}
$widthOrig = imagesx($this->resource);
@@ -935,7 +959,7 @@ class OC_Image implements \OCP\IImage {
}
$process = imagecreatetruecolor($targetWidth, $targetHeight);
if ($process == false) {
- $this->logger->error('OC_Image->centerCrop, Error creating true color image', array('app' => 'core'));
+ $this->logger->error('OC_Image->centerCrop, Error creating true color image', ['app' => 'core']);
imagedestroy($process);
return false;
}
@@ -949,7 +973,7 @@ class OC_Image implements \OCP\IImage {
imagecopyresampled($process, $this->resource, 0, 0, $x, $y, $targetWidth, $targetHeight, $width, $height);
if ($process == false) {
- $this->logger->error('OC_Image->centerCrop, Error re-sampling process image ' . $width . 'x' . $height, array('app' => 'core'));
+ $this->logger->error('OC_Image->centerCrop, Error re-sampling process image ' . $width . 'x' . $height, ['app' => 'core']);
imagedestroy($process);
return false;
}
@@ -968,13 +992,29 @@ class OC_Image implements \OCP\IImage {
* @return bool for success or failure
*/
public function crop(int $x, int $y, int $w, int $h): bool {
+ $result = $this->cropNew($x, $y, $w, $h);
+ imagedestroy($this->resource);
+ $this->resource = $result;
+ return is_resource($result);
+ }
+
+ /**
+ * Crops the image from point $x$y with dimension $wx$h.
+ *
+ * @param int $x Horizontal position
+ * @param int $y Vertical position
+ * @param int $w Width
+ * @param int $h Height
+ * @return resource | bool
+ */
+ public function cropNew(int $x, int $y, int $w, int $h) {
if (!$this->valid()) {
- $this->logger->error(__METHOD__ . '(): No image loaded', array('app' => 'core'));
+ $this->logger->error(__METHOD__ . '(): No image loaded', ['app' => 'core']);
return false;
}
$process = imagecreatetruecolor($w, $h);
if ($process == false) {
- $this->logger->error(__METHOD__ . '(): Error creating true color image', array('app' => 'core'));
+ $this->logger->error(__METHOD__ . '(): Error creating true color image', ['app' => 'core']);
imagedestroy($process);
return false;
}
@@ -988,13 +1028,11 @@ class OC_Image implements \OCP\IImage {
imagecopyresampled($process, $this->resource, 0, 0, $x, $y, $w, $h, $w, $h);
if ($process == false) {
- $this->logger->error(__METHOD__ . '(): Error re-sampling process image ' . $w . 'x' . $h, array('app' => 'core'));
+ $this->logger->error(__METHOD__ . '(): Error re-sampling process image ' . $w . 'x' . $h, ['app' => 'core']);
imagedestroy($process);
return false;
}
- imagedestroy($this->resource);
- $this->resource = $process;
- return true;
+ return $process;
}
/**
@@ -1008,7 +1046,7 @@ class OC_Image implements \OCP\IImage {
*/
public function fitIn($maxWidth, $maxHeight) {
if (!$this->valid()) {
- $this->logger->error(__METHOD__ . '(): No image loaded', array('app' => 'core'));
+ $this->logger->error(__METHOD__ . '(): No image loaded', ['app' => 'core']);
return false;
}
$widthOrig = imagesx($this->resource);
@@ -1031,7 +1069,7 @@ class OC_Image implements \OCP\IImage {
*/
public function scaleDownToFit($maxWidth, $maxHeight) {
if (!$this->valid()) {
- $this->logger->error(__METHOD__ . '(): No image loaded', array('app' => 'core'));
+ $this->logger->error(__METHOD__ . '(): No image loaded', ['app' => 'core']);
return false;
}
$widthOrig = imagesx($this->resource);
@@ -1044,6 +1082,63 @@ class OC_Image implements \OCP\IImage {
return false;
}
+ public function copy(): IImage {
+ $image = new OC_Image(null, $this->logger, $this->config);
+ $image->resource = imagecreatetruecolor($this->width(), $this->height());
+ imagecopy(
+ $image->resource(),
+ $this->resource(),
+ 0,
+ 0,
+ 0,
+ 0,
+ $this->width(),
+ $this->height()
+ );
+
+ return $image;
+ }
+
+ public function cropCopy(int $x, int $y, int $w, int $h): IImage {
+ $image = new OC_Image(null, $this->logger, $this->config);
+ $image->imageType = $this->imageType;
+ $image->mimeType = $this->mimeType;
+ $image->bitDepth = $this->bitDepth;
+ $image->resource = $this->cropNew($x, $y, $w, $h);
+
+ return $image;
+ }
+
+ public function preciseResizeCopy(int $width, int $height): IImage {
+ $image = new OC_Image(null, $this->logger, $this->config);
+ $image->imageType = $this->imageType;
+ $image->mimeType = $this->mimeType;
+ $image->bitDepth = $this->bitDepth;
+ $image->resource = $this->preciseResizeNew($width, $height);
+
+ return $image;
+ }
+
+ public function resizeCopy(int $maxSize): IImage {
+ $image = new OC_Image(null, $this->logger, $this->config);
+ $image->imageType = $this->imageType;
+ $image->mimeType = $this->mimeType;
+ $image->bitDepth = $this->bitDepth;
+ $image->resource = $this->resizeNew($maxSize);
+
+ return $image;
+ }
+
+
+ /**
+ * Resizes the image preserving ratio, returning a new copy
+ *
+ * @param integer $maxSize The maximum size of either the width or height.
+ * @return bool
+ */
+ public function copyResize($maxSize): IImage {
+ }
+
/**
* Destroys the current image and resets the object
*/
@@ -1075,9 +1170,9 @@ if (!function_exists('imagebmp')) {
* @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
*/
function imagebmp($im, $fileName = '', $bit = 24, $compression = 0) {
- if (!in_array($bit, array(1, 4, 8, 16, 24, 32))) {
+ if (!in_array($bit, [1, 4, 8, 16, 24, 32])) {
$bit = 24;
- } else if ($bit == 32) {
+ } elseif ($bit == 32) {
$bit = 24;
}
$bits = pow(2, $bit);
@@ -1114,7 +1209,7 @@ if (!function_exists('imagebmp')) {
$bmpData .= $extra;
}
} // RLE8
- else if ($compression == 1 && $bit == 8) {
+ elseif ($compression == 1 && $bit == 8) {
for ($j = $height - 1; $j >= 0; $j--) {
$lastIndex = "\0";
$sameNum = 0;
diff --git a/lib/private/legacy/json.php b/lib/private/legacy/OC_JSON.php
index 29d0029a3a0..a0b9868a023 100644
--- a/lib/private/legacy/json.php
+++ b/lib/private/legacy/OC_JSON.php
@@ -8,7 +8,6 @@
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
- * @author Sebastian Wessalowski <sebastian@wessalowski.org>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Thomas Tanghus <thomas@tanghus.net>
* @author Vincent Petry <pvince81@owncloud.com>
@@ -33,7 +32,7 @@
* Class OC_JSON
* @deprecated Use a AppFramework JSONResponse instead
*/
-class OC_JSON{
+class OC_JSON {
/**
* Check if the app is enabled, send json error msg if not
@@ -42,9 +41,9 @@ class OC_JSON{
* @suppress PhanDeprecatedFunction
*/
public static function checkAppEnabled($app) {
- if( !\OC::$server->getAppManager()->isEnabledForUser($app)) {
+ if (!\OC::$server->getAppManager()->isEnabledForUser($app)) {
$l = \OC::$server->getL10N('lib');
- self::error(array( 'data' => array( 'message' => $l->t('Application is not enabled'), 'error' => 'application_not_enabled' )));
+ self::error([ 'data' => [ 'message' => $l->t('Application is not enabled'), 'error' => 'application_not_enabled' ]]);
exit();
}
}
@@ -56,11 +55,11 @@ class OC_JSON{
*/
public static function checkLoggedIn() {
$twoFactorAuthManger = \OC::$server->getTwoFactorAuthManager();
- if( !\OC::$server->getUserSession()->isLoggedIn()
+ if (!\OC::$server->getUserSession()->isLoggedIn()
|| $twoFactorAuthManger->needsSecondFactor(\OC::$server->getUserSession()->getUser())) {
$l = \OC::$server->getL10N('lib');
http_response_code(\OCP\AppFramework\Http::STATUS_UNAUTHORIZED);
- self::error(array( 'data' => array( 'message' => $l->t('Authentication error'), 'error' => 'authentication_error' )));
+ self::error([ 'data' => [ 'message' => $l->t('Authentication error'), 'error' => 'authentication_error' ]]);
exit();
}
}
@@ -71,14 +70,14 @@ class OC_JSON{
* @suppress PhanDeprecatedFunction
*/
public static function callCheck() {
- if(!\OC::$server->getRequest()->passesStrictCookieCheck()) {
+ if (!\OC::$server->getRequest()->passesStrictCookieCheck()) {
header('Location: '.\OC::$WEBROOT);
exit();
}
- if( !\OC::$server->getRequest()->passesCSRFCheck()) {
+ if (!\OC::$server->getRequest()->passesCSRFCheck()) {
$l = \OC::$server->getL10N('lib');
- self::error(array( 'data' => array( 'message' => $l->t('Token expired. Please reload page.'), 'error' => 'token_expired' )));
+ self::error([ 'data' => [ 'message' => $l->t('Token expired. Please reload page.'), 'error' => 'token_expired' ]]);
exit();
}
}
@@ -89,9 +88,9 @@ class OC_JSON{
* @suppress PhanDeprecatedFunction
*/
public static function checkAdminUser() {
- if( !OC_User::isAdminUser(OC_User::getUser())) {
+ if (!OC_User::isAdminUser(OC_User::getUser())) {
$l = \OC::$server->getL10N('lib');
- self::error(array( 'data' => array( 'message' => $l->t('Authentication error'), 'error' => 'authentication_error' )));
+ self::error([ 'data' => [ 'message' => $l->t('Authentication error'), 'error' => 'authentication_error' ]]);
exit();
}
}
@@ -101,9 +100,9 @@ class OC_JSON{
* @deprecated Use a AppFramework JSONResponse instead
* @suppress PhanDeprecatedFunction
*/
- public static function error($data = array()) {
+ public static function error($data = []) {
$data['status'] = 'error';
- header( 'Content-Type: application/json; charset=utf-8');
+ header('Content-Type: application/json; charset=utf-8');
echo self::encode($data);
}
@@ -112,9 +111,9 @@ class OC_JSON{
* @deprecated Use a AppFramework JSONResponse instead
* @suppress PhanDeprecatedFunction
*/
- public static function success($data = array()) {
+ public static function success($data = []) {
$data['status'] = 'success';
- header( 'Content-Type: application/json; charset=utf-8');
+ header('Content-Type: application/json; charset=utf-8');
echo self::encode($data);
}
@@ -133,7 +132,7 @@ class OC_JSON{
*/
public static function encode($data) {
if (is_array($data)) {
- array_walk_recursive($data, array('OC_JSON', 'to_string'));
+ array_walk_recursive($data, ['OC_JSON', 'to_string']);
}
return json_encode($data, JSON_HEX_TAG);
}
diff --git a/lib/private/legacy/response.php b/lib/private/legacy/OC_Response.php
index 4eb454d3181..491c6913463 100644
--- a/lib/private/legacy/response.php
+++ b/lib/private/legacy/OC_Response.php
@@ -4,6 +4,7 @@
*
* @author Andreas Fischer <bantu@owncloud.com>
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author J0WI <J0WI@users.noreply.github.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -33,17 +34,17 @@ class OC_Response {
* @param string $filename file name
* @param string $type disposition type, either 'attachment' or 'inline'
*/
- static public function setContentDispositionHeader( $filename, $type = 'attachment' ) {
+ public static function setContentDispositionHeader($filename, $type = 'attachment') {
if (\OC::$server->getRequest()->isUserAgent(
[
\OC\AppFramework\Http\Request::USER_AGENT_IE,
\OC\AppFramework\Http\Request::USER_AGENT_ANDROID_MOBILE_CHROME,
\OC\AppFramework\Http\Request::USER_AGENT_FREEBOX,
])) {
- header( 'Content-Disposition: ' . rawurlencode($type) . '; filename="' . rawurlencode( $filename ) . '"' );
+ header('Content-Disposition: ' . rawurlencode($type) . '; filename="' . rawurlencode($filename) . '"');
} else {
- header( 'Content-Disposition: ' . rawurlencode($type) . '; filename*=UTF-8\'\'' . rawurlencode( $filename )
- . '; filename="' . rawurlencode( $filename ) . '"' );
+ header('Content-Disposition: ' . rawurlencode($type) . '; filename*=UTF-8\'\'' . rawurlencode($filename)
+ . '; filename="' . rawurlencode($filename) . '"');
}
}
@@ -51,7 +52,7 @@ class OC_Response {
* Sets the content length header (with possible workarounds)
* @param string|int|float $length Length to be sent
*/
- static public function setContentLengthHeader($length) {
+ public static function setContentLengthHeader($length) {
if (PHP_INT_SIZE === 4) {
if ($length > PHP_INT_MAX && stripos(PHP_SAPI, 'apache') === 0) {
// Apache PHP SAPI casts Content-Length headers to PHP integers.
@@ -94,7 +95,7 @@ class OC_Response {
// Send fallback headers for installations that don't have the possibility to send
// custom headers on the webserver side
- if(getenv('modHeadersAvailable') !== 'true') {
+ if (getenv('modHeadersAvailable') !== 'true') {
header('Referrer-Policy: no-referrer'); // https://www.w3.org/TR/referrer-policy/
header('X-Content-Type-Options: nosniff'); // Disable sniffing the content type for IE
header('X-Download-Options: noopen'); // https://msdn.microsoft.com/en-us/library/jj542450(v=vs.85).aspx
@@ -104,5 +105,4 @@ class OC_Response {
header('X-XSS-Protection: 1; mode=block'); // Enforce browser based XSS filters
}
}
-
}
diff --git a/lib/private/legacy/template.php b/lib/private/legacy/OC_Template.php
index ed1e5627961..447a8740eed 100644
--- a/lib/private/legacy/template.php
+++ b/lib/private/legacy/OC_Template.php
@@ -54,7 +54,7 @@ class OC_Template extends \OC\Template\Base {
private $path; // The path to the template
/** @var array */
- private $headers = array(); //custom headers
+ private $headers = []; //custom headers
/** @var string */
protected $app; // app id
@@ -72,7 +72,7 @@ class OC_Template extends \OC\Template\Base {
* "admin".
* @param bool $registerCall = true
*/
- public function __construct( $app, $name, $renderAs = "", $registerCall = true ) {
+ public function __construct($app, $name, $renderAs = "", $registerCall = true) {
// Read the selected theme from the config file
self::initTemplateEngine($renderAs);
@@ -99,38 +99,37 @@ class OC_Template extends \OC\Template\Base {
* @param string $renderAs
*/
public static function initTemplateEngine($renderAs) {
- if (self::$initTemplateEngineFirstRun){
+ if (self::$initTemplateEngineFirstRun) {
//apps that started before the template initialization can load their own scripts/styles
//so to make sure this scripts/styles here are loaded first we use OC_Util::addScript() with $prepend=true
//meaning the last script/style in this list will be loaded first
- if (\OC::$server->getSystemConfig()->getValue ('installed', false) && $renderAs !== 'error' && !\OCP\Util::needUpgrade()) {
- if (\OC::$server->getConfig ()->getAppValue ( 'core', 'backgroundjobs_mode', 'ajax' ) == 'ajax') {
- OC_Util::addScript ( 'backgroundjobs', null, true );
+ if (\OC::$server->getSystemConfig()->getValue('installed', false) && $renderAs !== 'error' && !\OCP\Util::needUpgrade()) {
+ if (\OC::$server->getConfig()->getAppValue('core', 'backgroundjobs_mode', 'ajax') == 'ajax') {
+ OC_Util::addScript('backgroundjobs', null, true);
}
}
OC_Util::addStyle('css-variables', null, true);
OC_Util::addStyle('server', null, true);
OC_Util::addTranslations('core', null, true);
- if (\OC::$server->getSystemConfig()->getValue ('installed', false)) {
+ if (\OC::$server->getSystemConfig()->getValue('installed', false)) {
OC_Util::addStyle('search', 'results');
OC_Util::addScript('search', 'search', true);
OC_Util::addScript('search', 'searchprovider');
OC_Util::addScript('merged-template-prepend', null, true);
- OC_Util::addScript('files/fileinfo');
- OC_Util::addScript('files/client');
+ OC_Util::addScript('dist/files_fileinfo');
+ OC_Util::addScript('dist/files_client');
}
OC_Util::addScript('core', 'dist/main', true);
if (\OC::$server->getRequest()->isUserAgent([\OC\AppFramework\Http\Request::USER_AGENT_IE])) {
// shim for the davclient.js library
- \OCP\Util::addScript('files/iedavclient');
+ \OCP\Util::addScript('dist/files_iedavclient');
}
self::$initTemplateEngineFirstRun = false;
}
-
}
@@ -146,15 +145,15 @@ class OC_Template extends \OC\Template\Base {
*/
protected function findTemplate($theme, $app, $name) {
// Check if it is a app template or not.
- if( $app !== '' ) {
+ if ($app !== '') {
$dirs = $this->getAppTemplateDirs($theme, $app, OC::$SERVERROOT, OC_App::getAppPath($app));
} else {
$dirs = $this->getCoreTemplateDirs($theme, OC::$SERVERROOT);
}
- $locator = new \OC\Template\TemplateFileLocator( $dirs );
+ $locator = new \OC\Template\TemplateFileLocator($dirs);
$template = $locator->find($name);
$path = $locator->getPath();
- return array($path, $template);
+ return [$path, $template];
}
/**
@@ -165,11 +164,11 @@ class OC_Template extends \OC\Template\Base {
* element will be written as empty element. So use "" to get a closing tag.
*/
public function addHeader($tag, $attributes, $text=null) {
- $this->headers[]= array(
+ $this->headers[]= [
'tag' => $tag,
'attributes' => $attributes,
'text' => $text
- );
+ ];
}
/**
@@ -182,10 +181,10 @@ class OC_Template extends \OC\Template\Base {
public function fetchPage($additionalParams = null) {
$data = parent::fetchPage($additionalParams);
- if( $this->renderAs ) {
+ if ($this->renderAs) {
$page = new TemplateLayout($this->renderAs, $this->app);
- if(is_array($additionalParams)) {
+ if (is_array($additionalParams)) {
foreach ($additionalParams as $key => $value) {
$page->assign($key, $value);
}
@@ -193,12 +192,12 @@ class OC_Template extends \OC\Template\Base {
// Add custom headers
$headers = '';
- foreach(OC_Util::$headers as $header) {
+ foreach (OC_Util::$headers as $header) {
$headers .= '<'.\OCP\Util::sanitizeHTML($header['tag']);
- if ( strcasecmp($header['tag'], 'script') === 0 && in_array('src', array_map('strtolower', array_keys($header['attributes']))) ) {
+ if (strcasecmp($header['tag'], 'script') === 0 && in_array('src', array_map('strtolower', array_keys($header['attributes'])))) {
$headers .= ' defer';
}
- foreach($header['attributes'] as $name=>$value) {
+ foreach ($header['attributes'] as $name=>$value) {
$headers .= ' '.\OCP\Util::sanitizeHTML($name).'="'.\OCP\Util::sanitizeHTML($value).'"';
}
if ($header['text'] !== null) {
@@ -227,7 +226,7 @@ class OC_Template extends \OC\Template\Base {
* Includes another template. use <?php echo $this->inc('template'); ?> to
* do this.
*/
- public function inc( $file, $additionalParams = null ) {
+ public function inc($file, $additionalParams = null) {
return $this->load($this->path.$file.'.php', $additionalParams);
}
@@ -238,10 +237,10 @@ class OC_Template extends \OC\Template\Base {
* @param array $parameters Parameters for the template
* @return boolean|null
*/
- public static function printUserPage( $application, $name, $parameters = array() ) {
- $content = new OC_Template( $application, $name, "user" );
- foreach( $parameters as $key => $value ) {
- $content->assign( $key, $value );
+ public static function printUserPage($application, $name, $parameters = []) {
+ $content = new OC_Template($application, $name, "user");
+ foreach ($parameters as $key => $value) {
+ $content->assign($key, $value);
}
print $content->printPage();
}
@@ -253,10 +252,10 @@ class OC_Template extends \OC\Template\Base {
* @param array $parameters Parameters for the template
* @return bool
*/
- public static function printAdminPage( $application, $name, $parameters = array() ) {
- $content = new OC_Template( $application, $name, "admin" );
- foreach( $parameters as $key => $value ) {
- $content->assign( $key, $value );
+ public static function printAdminPage($application, $name, $parameters = []) {
+ $content = new OC_Template($application, $name, "admin");
+ foreach ($parameters as $key => $value) {
+ $content->assign($key, $value);
}
return $content->printPage();
}
@@ -268,10 +267,10 @@ class OC_Template extends \OC\Template\Base {
* @param array|string $parameters Parameters for the template
* @return bool
*/
- public static function printGuestPage( $application, $name, $parameters = array() ) {
+ public static function printGuestPage($application, $name, $parameters = []) {
$content = new OC_Template($application, $name, $name === 'error' ? $name : 'guest');
- foreach( $parameters as $key => $value ) {
- $content->assign( $key, $value );
+ foreach ($parameters as $key => $value) {
+ $content->assign($key, $value);
}
return $content->printPage();
}
@@ -283,7 +282,7 @@ class OC_Template extends \OC\Template\Base {
* @param int $statusCode
* @suppress PhanAccessMethodInternal
*/
- public static function printErrorPage( $error_msg, $hint = '', $statusCode = 500) {
+ public static function printErrorPage($error_msg, $hint = '', $statusCode = 500) {
if (\OC::$server->getAppManager()->isEnabledForUser('theming') && !\OC_App::isAppLoaded('theming')) {
\OC_App::loadApp('theming');
}
@@ -296,9 +295,9 @@ class OC_Template extends \OC\Template\Base {
http_response_code($statusCode);
try {
- $content = new \OC_Template( '', 'error', 'error', false );
- $errors = array(array('error' => $error_msg, 'hint' => $hint));
- $content->assign( 'errors', $errors );
+ $content = new \OC_Template('', 'error', 'error', false);
+ $errors = [['error' => $error_msg, 'hint' => $hint]];
+ $content->assign('errors', $errors);
$content->printPage();
} catch (\Exception $e) {
$logger = \OC::$server->getLogger();
diff --git a/lib/private/legacy/user.php b/lib/private/legacy/OC_User.php
index 6a887063525..c61d99eee74 100644
--- a/lib/private/legacy/user.php
+++ b/lib/private/legacy/OC_User.php
@@ -6,7 +6,6 @@
* @author Andreas Fischer <bantu@owncloud.com>
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bartek Przybylski <bart.p.pl@gmail.com>
- * @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Björn Schießle <bjoern@schiessle.org>
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Georg Ehrke <oc.list@georgehrke.com>
@@ -58,10 +57,9 @@ use OCP\ILogger;
* logout()
*/
class OC_User {
+ private static $_usedBackends = [];
- private static $_usedBackends = array();
-
- private static $_setupedBackends = array();
+ private static $_setupedBackends = [];
// bool, stores if a user want to access a resource anonymously, e.g if they open a public link
private static $incognitoMode = false;
@@ -81,7 +79,7 @@ class OC_User {
\OC::$server->getUserManager()->registerBackend($backend);
} else {
// You'll never know what happens
- if (null === $backend OR !is_string($backend)) {
+ if (null === $backend or !is_string($backend)) {
$backend = 'database';
}
@@ -113,7 +111,7 @@ class OC_User {
* remove all used backends
*/
public static function clearBackends() {
- self::$_usedBackends = array();
+ self::$_usedBackends = [];
\OC::$server->getUserManager()->clearBackends();
}
@@ -162,10 +160,9 @@ class OC_User {
* @return bool
*/
public static function loginWithApache(\OCP\Authentication\IApacheBackend $backend) {
-
$uid = $backend->getCurrentUserId();
$run = true;
- OC_Hook::emit("OC_User", "pre_login", array("run" => &$run, "uid" => $uid, 'backend' => $backend));
+ OC_Hook::emit("OC_User", "pre_login", ["run" => &$run, "uid" => $uid, 'backend' => $backend]);
if ($uid) {
if (self::getUser() !== $uid) {
@@ -385,7 +382,7 @@ class OC_User {
* @deprecated Use \OC::$server->getUserManager->searchDisplayName($search, $limit, $offset) instead.
*/
public static function getDisplayNames($search = '', $limit = null, $offset = null) {
- $displayNames = array();
+ $displayNames = [];
$users = \OC::$server->getUserManager()->searchDisplayName($search, $limit, $offset);
foreach ($users as $user) {
$displayNames[$user->getUID()] = $user->getDisplayName();
diff --git a/lib/private/legacy/util.php b/lib/private/legacy/OC_Util.php
index bf0a1b9bb20..71f6edba0bf 100644
--- a/lib/private/legacy/util.php
+++ b/lib/private/legacy/OC_Util.php
@@ -69,9 +69,9 @@ use OCP\ILogger;
use OCP\IUser;
class OC_Util {
- public static $scripts = array();
- public static $styles = array();
- public static $headers = array();
+ public static $scripts = [];
+ public static $styles = [];
+ public static $headers = [];
private static $rootMounted = false;
private static $fsSetup = false;
@@ -88,7 +88,7 @@ class OC_Util {
//first set up the local "root" storage
\OC\Files\Filesystem::initMountManager();
if (!self::$rootMounted) {
- \OC\Files\Filesystem::mount('\OC\Files\Storage\Local', array('datadir' => $configDataDirectory), '/');
+ \OC\Files\Filesystem::mount('\OC\Files\Storage\Local', ['datadir' => $configDataDirectory], '/');
self::$rootMounted = true;
}
}
@@ -107,7 +107,7 @@ class OC_Util {
\OCP\Util::writeLog('files', 'No class given for objectstore', ILogger::ERROR);
}
if (!isset($config['arguments'])) {
- $config['arguments'] = array();
+ $config['arguments'] = [];
}
// instantiate object store implementation
@@ -141,7 +141,7 @@ class OC_Util {
\OCP\Util::writeLog('files', 'No class given for objectstore', ILogger::ERROR);
}
if (!isset($config['arguments'])) {
- $config['arguments'] = array();
+ $config['arguments'] = [];
}
// instantiate object store implementation
@@ -189,12 +189,12 @@ class OC_Util {
// If we are not forced to load a specific user we load the one that is logged in
if ($user === null) {
$user = '';
- } else if ($user == "" && \OC::$server->getUserSession()->isLoggedIn()) {
+ } elseif ($user == "" && \OC::$server->getUserSession()->isLoggedIn()) {
$user = OC_User::getUser();
}
// load all filesystem apps before, so no setup-hook gets lost
- OC_App::loadApps(array('filesystem'));
+ OC_App::loadApps(['filesystem']);
// the filesystem will finish when $user is not empty,
// mark fs setup here to avoid doing the setup from loading
@@ -251,10 +251,9 @@ class OC_Util {
) {
/** @var \OC\Files\Storage\Home $storage */
if (is_object($storage->getUser())) {
- $user = $storage->getUser()->getUID();
- $quota = OC_Util::getUserQuota($user);
+ $quota = OC_Util::getUserQuota($storage->getUser());
if ($quota !== \OCP\Files\FileInfo::SPACE_UNLIMITED) {
- return new \OC\Files\Storage\Wrapper\Quota(array('storage' => $storage, 'quota' => $quota, 'root' => 'files'));
+ return new \OC\Files\Storage\Wrapper\Quota(['storage' => $storage, 'quota' => $quota, 'root' => 'files']);
}
}
}
@@ -279,7 +278,7 @@ class OC_Util {
return $storage;
});
- OC_Hook::emit('OC_Filesystem', 'preSetup', array('user' => $user));
+ OC_Hook::emit('OC_Filesystem', 'preSetup', ['user' => $user]);
\OC\Files\Filesystem::logWarningWhenAddingStorageWrapper($prevLogging);
@@ -303,13 +302,12 @@ class OC_Util {
//if we aren't logged in, there is no use to set up the filesystem
if ($user != "") {
-
$userDir = '/' . $user . '/files';
//jail the user into his "home" directory
\OC\Files\Filesystem::init($user, $userDir);
- OC_Hook::emit('OC_Filesystem', 'setup', array('user' => $user, 'user_dir' => $userDir));
+ OC_Hook::emit('OC_Filesystem', 'setup', ['user' => $user, 'user_dir' => $userDir]);
}
\OC::$server->getEventLogger()->end('setup_fs');
return true;
@@ -375,16 +373,15 @@ class OC_Util {
/**
* Get the quota of a user
*
- * @param string $userId
+ * @param IUser|null $user
* @return float Quota bytes
*/
- public static function getUserQuota($userId) {
- $user = \OC::$server->getUserManager()->get($userId);
+ public static function getUserQuota(?IUser $user) {
if (is_null($user)) {
return \OCP\Files\FileInfo::SPACE_UNLIMITED;
}
$userQuota = $user->getQuota();
- if($userQuota === 'none') {
+ if ($userQuota === 'none') {
return \OCP\Files\FileInfo::SPACE_UNLIMITED;
}
return OC_Helper::computerFileSize($userQuota);
@@ -400,7 +397,6 @@ class OC_Util {
* @suppress PhanDeprecatedFunction
*/
public static function copySkeleton($userId, \OCP\Files\Folder $userDirectory) {
-
$plainSkeletonDirectory = \OC::$server->getConfig()->getSystemValue('skeletondirectory', \OC::$SERVERROOT . '/core/skeleton');
$userLang = \OC::$server->getL10NFactory()->findLanguage();
$skeletonDirectory = str_replace('{lang}', $userLang, $plainSkeletonDirectory);
@@ -452,7 +448,7 @@ class OC_Util {
// Verify if folder exists
$dir = opendir($source);
- if($dir === false) {
+ if ($dir === false) {
$logger->error(sprintf('Could not opendir "%s"', $source), ['app' => 'core']);
return;
}
@@ -466,7 +462,7 @@ class OC_Util {
} else {
$child = $target->newFile($file);
$sourceStream = fopen($source . '/' . $file, 'r');
- if($sourceStream === false) {
+ if ($sourceStream === false) {
$logger->error(sprintf('Could not fopen "%s"', $source . '/' . $file), ['app' => 'core']);
closedir($dir);
return;
@@ -592,7 +588,7 @@ class OC_Util {
// core js files need separate handling
if ($application !== 'core' && $file !== null) {
- self::addTranslations ( $application );
+ self::addTranslations($application);
}
self::addExternalResource($application, $prepend, $path, "script");
}
@@ -665,11 +661,10 @@ class OC_Util {
* @return void
*/
private static function addExternalResource($application, $prepend, $path, $type = "script") {
-
if ($type === "style") {
if (!in_array($path, self::$styles)) {
if ($prepend === true) {
- array_unshift ( self::$styles, $path );
+ array_unshift(self::$styles, $path);
} else {
self::$styles[] = $path;
}
@@ -677,7 +672,7 @@ class OC_Util {
} elseif ($type === "script") {
if (!in_array($path, self::$scripts)) {
if ($prepend === true) {
- array_unshift ( self::$scripts, $path );
+ array_unshift(self::$scripts, $path);
} else {
self::$scripts [] = $path;
}
@@ -695,14 +690,13 @@ class OC_Util {
* @param bool $prepend prepend the header to the beginning of the list
*/
public static function addHeader($tag, $attributes, $text = null, $prepend = false) {
- $header = array(
+ $header = [
'tag' => $tag,
'attributes' => $attributes,
'text' => $text
- );
+ ];
if ($prepend === true) {
- array_unshift (self::$headers, $header);
-
+ array_unshift(self::$headers, $header);
} else {
self::$headers[] = $header;
}
@@ -716,7 +710,7 @@ class OC_Util {
*/
public static function checkServer(\OC\SystemConfig $config) {
$l = \OC::$server->getL10N('lib');
- $errors = array();
+ $errors = [];
$CONFIG_DATADIRECTORY = $config->getValue('datadirectory', OC::$SERVERROOT . '/data');
if (!self::needUpgrade($config) && $config->getValue('installed', false)) {
@@ -744,23 +738,23 @@ class OC_Util {
$availableDatabases = $setup->getSupportedDatabases();
if (empty($availableDatabases)) {
- $errors[] = array(
+ $errors[] = [
'error' => $l->t('No database drivers (sqlite, mysql, or postgresql) installed.'),
'hint' => '' //TODO: sane hint
- );
+ ];
$webServerRestart = true;
}
// Check if config folder is writable.
- if(!OC_Helper::isReadOnlyConfigEnabled()) {
+ if (!OC_Helper::isReadOnlyConfigEnabled()) {
if (!is_writable(OC::$configDir) or !is_readable(OC::$configDir)) {
- $errors[] = array(
+ $errors[] = [
'error' => $l->t('Cannot write into "config" directory'),
'hint' => $l->t('This can usually be fixed by giving the webserver write access to the config directory. See %s',
[ $urlGenerator->linkToDocs('admin-dir_permissions') ]) . '. '
. $l->t('Or, if you prefer to keep config.php file read only, set the option "config_is_read_only" to true in it. See %s',
- [ $urlGenerator->linkToDocs('admin-config') ] )
- );
+ [ $urlGenerator->linkToDocs('admin-config') ])
+ ];
}
}
@@ -770,12 +764,11 @@ class OC_Util {
|| !is_writable(OC_App::getInstallPath())
|| !is_readable(OC_App::getInstallPath())
) {
- $errors[] = array(
+ $errors[] = [
'error' => $l->t('Cannot write into "apps" directory'),
'hint' => $l->t('This can usually be fixed by giving the webserver write access to the apps directory'
- . ' or disabling the appstore in the config file. See %s',
- [$urlGenerator->linkToDocs('admin-dir_permissions')])
- );
+ . ' or disabling the appstore in the config file.')
+ ];
}
}
// Create root dir.
@@ -791,11 +784,11 @@ class OC_Util {
[$urlGenerator->linkToDocs('admin-dir_permissions')])
];
}
- } else if (!is_writable($CONFIG_DATADIRECTORY) or !is_readable($CONFIG_DATADIRECTORY)) {
+ } elseif (!is_writable($CONFIG_DATADIRECTORY) or !is_readable($CONFIG_DATADIRECTORY)) {
// is_writable doesn't work for NFS mounts, so try to write a file and check if it exists.
$testFile = sprintf('%s/%s.tmp', $CONFIG_DATADIRECTORY, uniqid('data_dir_writability_test_'));
$handle = fopen($testFile, 'w');
- if (!$handle || fwrite($handle, 'Test write operation') === FALSE) {
+ if (!$handle || fwrite($handle, 'Test write operation') === false) {
$permissionsHint = $l->t('Permissions can usually be fixed by giving the webserver write access to the root directory. See %s.',
[$urlGenerator->linkToDocs('admin-dir_permissions')]);
$errors[] = [
@@ -812,12 +805,12 @@ class OC_Util {
}
if (!OC_Util::isSetLocaleWorking()) {
- $errors[] = array(
+ $errors[] = [
'error' => $l->t('Setting locale to %s failed',
- array('en_US.UTF-8/fr_FR.UTF-8/es_ES.UTF-8/de_DE.UTF-8/ru_RU.UTF-8/'
- . 'pt_BR.UTF-8/it_IT.UTF-8/ja_JP.UTF-8/zh_CN.UTF-8')),
+ ['en_US.UTF-8/fr_FR.UTF-8/es_ES.UTF-8/de_DE.UTF-8/ru_RU.UTF-8/'
+ . 'pt_BR.UTF-8/it_IT.UTF-8/ja_JP.UTF-8/zh_CN.UTF-8']),
'hint' => $l->t('Please install one of these locales on your system and restart your webserver.')
- );
+ ];
}
// Contains the dependencies that should be checked against
@@ -828,13 +821,13 @@ class OC_Util {
// If the dependency is not found the missing module name is shown to the EndUser
// When adding new checks always verify that they pass on Travis as well
// for ini settings, see https://github.com/owncloud/administration/blob/master/travis-ci/custom.ini
- $dependencies = array(
- 'classes' => array(
+ $dependencies = [
+ 'classes' => [
'ZipArchive' => 'zip',
'DOMDocument' => 'dom',
'XMLWriter' => 'XMLWriter',
'XMLReader' => 'XMLReader',
- ),
+ ],
'functions' => [
'xml_parser_create' => 'libxml',
'mb_strcut' => 'mbstring',
@@ -848,14 +841,14 @@ class OC_Util {
'curl_init' => 'cURL',
'openssl_verify' => 'OpenSSL',
],
- 'defined' => array(
+ 'defined' => [
'PDO::ATTR_DRIVER_NAME' => 'PDO'
- ),
+ ],
'ini' => [
'default_charset' => 'UTF-8',
],
- );
- $missingDependencies = array();
+ ];
+ $missingDependencies = [];
$invalidIniSettings = [];
$moduleHint = $l->t('Please ask your server administrator to install the module.');
@@ -893,15 +886,15 @@ class OC_Util {
}
}
- foreach($missingDependencies as $missingDependency) {
- $errors[] = array(
- 'error' => $l->t('PHP module %s not installed.', array($missingDependency)),
+ foreach ($missingDependencies as $missingDependency) {
+ $errors[] = [
+ 'error' => $l->t('PHP module %s not installed.', [$missingDependency]),
'hint' => $moduleHint
- );
+ ];
$webServerRestart = true;
}
- foreach($invalidIniSettings as $setting) {
- if(is_bool($setting[1])) {
+ foreach ($invalidIniSettings as $setting) {
+ if (is_bool($setting[1])) {
$setting[1] = $setting[1] ? 'on' : 'off';
}
$errors[] = [
@@ -919,40 +912,40 @@ class OC_Util {
* TODO: Should probably be implemented in the above generic dependency
* check somehow in the long-term.
*/
- if($iniWrapper->getBool('mbstring.func_overload') !== null &&
+ if ($iniWrapper->getBool('mbstring.func_overload') !== null &&
$iniWrapper->getBool('mbstring.func_overload') === true) {
- $errors[] = array(
+ $errors[] = [
'error' => $l->t('mbstring.func_overload is set to "%s" instead of the expected value "0"', [$iniWrapper->getString('mbstring.func_overload')]),
'hint' => $l->t('To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini')
- );
+ ];
}
- if(function_exists('xml_parser_create') &&
- LIBXML_LOADED_VERSION < 20700 ) {
+ if (function_exists('xml_parser_create') &&
+ LIBXML_LOADED_VERSION < 20700) {
$version = LIBXML_LOADED_VERSION;
$major = floor($version/10000);
$version -= ($major * 10000);
$minor = floor($version/100);
$version -= ($minor * 100);
$patch = $version;
- $errors[] = array(
+ $errors[] = [
'error' => $l->t('libxml2 2.7.0 is at least required. Currently %s is installed.', [$major . '.' . $minor . '.' . $patch]),
'hint' => $l->t('To fix this issue update your libxml2 version and restart your web server.')
- );
+ ];
}
if (!self::isAnnotationsWorking()) {
- $errors[] = array(
+ $errors[] = [
'error' => $l->t('PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible.'),
'hint' => $l->t('This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator.')
- );
+ ];
}
if (!\OC::$CLI && $webServerRestart) {
- $errors[] = array(
+ $errors[] = [
'error' => $l->t('PHP modules have been installed, but they are still listed as missing?'),
'hint' => $l->t('Please ask your server administrator to restart the web server.')
- );
+ ];
}
$errors = array_merge($errors, self::checkDatabaseVersion());
@@ -970,7 +963,7 @@ class OC_Util {
*/
public static function checkDatabaseVersion() {
$l = \OC::$server->getL10N('lib');
- $errors = array();
+ $errors = [];
$dbType = \OC::$server->getSystemConfig()->getValue('dbtype', 'sqlite');
if ($dbType === 'pgsql') {
// check PostgreSQL version
@@ -980,10 +973,10 @@ class OC_Util {
if (isset($data['server_version'])) {
$version = $data['server_version'];
if (version_compare($version, '9.0.0', '<')) {
- $errors[] = array(
+ $errors[] = [
'error' => $l->t('PostgreSQL >= 9 required'),
'hint' => $l->t('Please upgrade your database version')
- );
+ ];
}
}
} catch (\Doctrine\DBAL\DBALException $e) {
@@ -1002,7 +995,7 @@ class OC_Util {
* @return array arrays with error messages and hints
*/
public static function checkDataDirectoryPermissions($dataDirectory) {
- if(\OC::$server->getConfig()->getSystemValue('check_data_directory_permissions', true) === false) {
+ if (\OC::$server->getConfig()->getSystemValue('check_data_directory_permissions', true) === false) {
return [];
}
$l = \OC::$server->getL10N('lib');
@@ -1119,7 +1112,7 @@ class OC_Util {
}
}
- if($config->getSystemValue('htaccess.IgnoreFrontController', false) === true || getenv('front_controller_active') === 'true') {
+ if ($config->getSystemValue('htaccess.IgnoreFrontController', false) === true || getenv('front_controller_active') === 'true') {
$location = $urlGenerator->getAbsoluteURL('/apps/' . $appId . '/');
} else {
$location = $urlGenerator->getAbsoluteURL('/index.php/apps/' . $appId . '/');
@@ -1166,7 +1159,7 @@ class OC_Util {
*/
public static function sanitizeHTML($value) {
if (is_array($value)) {
- $value = array_map(function($value) {
+ $value = array_map(function ($value) {
return self::sanitizeHTML($value);
}, $value);
} else {
@@ -1229,7 +1222,6 @@ class OC_Util {
* @throws \OC\HintException If the test file can't get written.
*/
public function isHtaccessWorking(\OCP\IConfig $config) {
-
if (\OC::$CLI || !$config->getSystemValue('check_for_working_htaccess', true)) {
return true;
}
@@ -1352,7 +1344,7 @@ class OC_Util {
* @return bool|string
*/
public static function normalizeUnicode($value) {
- if(Normalizer::isNormalized($value)) {
+ if (Normalizer::isNormalized($value)) {
return $value;
}
@@ -1424,7 +1416,7 @@ class OC_Util {
$versionDiff = version_compare($currentVersion, $installedVersion);
if ($versionDiff > 0) {
return true;
- } else if ($config->getValue('debug', false) && $versionDiff < 0) {
+ } elseif ($config->getValue('debug', false) && $versionDiff < 0) {
// downgrade with debug
$installedMajor = explode('.', $installedVersion);
$installedMajor = $installedMajor[0] . '.' . $installedMajor[1];
@@ -1437,7 +1429,7 @@ class OC_Util {
// downgrade attempt, throw exception
throw new \OC\HintException('Downgrading is not supported and is likely to cause unpredictable issues (from ' . $installedVersion . ' to ' . $currentVersion . ')');
}
- } else if ($versionDiff < 0) {
+ } elseif ($versionDiff < 0) {
// downgrade attempt, throw exception
throw new \OC\HintException('Downgrading is not supported and is likely to cause unpredictable issues (from ' . $installedVersion . ' to ' . $currentVersion . ')');
}
@@ -1469,5 +1461,4 @@ class OC_Util {
return preg_match(Request::USER_AGENT_IE, $_SERVER['HTTP_USER_AGENT']) === 1;
}
-
}
diff --git a/lib/private/legacy/template/functions.php b/lib/private/legacy/template/functions.php
index d931e4d129f..e2a1c476433 100644
--- a/lib/private/legacy/template/functions.php
+++ b/lib/private/legacy/template/functions.php
@@ -4,6 +4,7 @@
*
* @author Bart Visscher <bartv@thisnet.nl>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Julius Härtl <jus@bitgrid.net>
@@ -44,7 +45,7 @@ function p($string) {
* Prints a <link> tag for loading css
* @param string $href the source URL, ignored when empty
* @param string $opts, additional optional options
-*/
+ */
function emit_css_tag($href, $opts = '') {
$s='<link rel="stylesheet"';
if (!empty($href)) {
@@ -59,12 +60,12 @@ function emit_css_tag($href, $opts = '') {
/**
* Prints all tags for CSS loading
* @param array $obj all the script information from template
-*/
+ */
function emit_css_loading_tags($obj) {
- foreach($obj['cssfiles'] as $css) {
+ foreach ($obj['cssfiles'] as $css) {
emit_css_tag($css);
}
- foreach($obj['printcssfiles'] as $css) {
+ foreach ($obj['printcssfiles'] as $css) {
emit_css_tag($css, 'media="print"');
}
}
@@ -73,14 +74,14 @@ function emit_css_loading_tags($obj) {
* Prints a <script> tag with nonce and defer depending on config
* @param string $src the source URL, ignored when empty
* @param string $script_content the inline script content, ignored when empty
-*/
+ */
function emit_script_tag($src, $script_content='') {
$defer_str=' defer';
$s='<script nonce="' . \OC::$server->getContentSecurityPolicyNonceManager()->getNonce() . '"';
if (!empty($src)) {
- // emit script tag for deferred loading from $src
+ // emit script tag for deferred loading from $src
$s.=$defer_str.' src="' . $src .'">';
- } else if (!empty($script_content)) {
+ } elseif (!empty($script_content)) {
// emit script tag for inline script from $script_content without defer (see MDN)
$s.=">\n".$script_content."\n";
} else {
@@ -94,9 +95,9 @@ function emit_script_tag($src, $script_content='') {
/**
* Print all <script> tags for loading JS
* @param array $obj all the script information from template
-*/
+ */
function emit_script_loading_tags($obj) {
- foreach($obj['jsfiles'] as $jsfile) {
+ foreach ($obj['jsfiles'] as $jsfile) {
emit_script_tag($jsfile, '');
}
if (!empty($obj['inline_ocjs'])) {
@@ -120,8 +121,8 @@ function print_unescaped($string) {
* if an array is given it will add all scripts
*/
function script($app, $file = null) {
- if(is_array($file)) {
- foreach($file as $f) {
+ if (is_array($file)) {
+ foreach ($file as $f) {
OC_Util::addScript($app, $f);
}
} else {
@@ -136,8 +137,8 @@ function script($app, $file = null) {
* if an array is given it will add all scripts
*/
function vendor_script($app, $file = null) {
- if(is_array($file)) {
- foreach($file as $f) {
+ if (is_array($file)) {
+ foreach ($file as $f) {
OC_Util::addVendorScript($app, $f);
}
} else {
@@ -152,8 +153,8 @@ function vendor_script($app, $file = null) {
* if an array is given it will add all styles
*/
function style($app, $file = null) {
- if(is_array($file)) {
- foreach($file as $f) {
+ if (is_array($file)) {
+ foreach ($file as $f) {
OC_Util::addStyle($app, $f);
}
} else {
@@ -168,8 +169,8 @@ function style($app, $file = null) {
* if an array is given it will add all styles
*/
function vendor_style($app, $file = null) {
- if(is_array($file)) {
- foreach($file as $f) {
+ if (is_array($file)) {
+ foreach ($file as $f) {
OC_Util::addVendorStyle($app, $f);
}
} else {
@@ -193,14 +194,14 @@ function translation($app) {
* if an array is given it will add all components
*/
function component($app, $file) {
- if(is_array($file)) {
- foreach($file as $f) {
+ if (is_array($file)) {
+ foreach ($file as $f) {
$url = link_to($app, 'component/' . $f . '.html');
- OC_Util::addHeader('link', array('rel' => 'import', 'href' => $url));
+ OC_Util::addHeader('link', ['rel' => 'import', 'href' => $url]);
}
} else {
$url = link_to($app, 'component/' . $file . '.html');
- OC_Util::addHeader('link', array('rel' => 'import', 'href' => $url));
+ OC_Util::addHeader('link', ['rel' => 'import', 'href' => $url]);
}
}
@@ -213,7 +214,7 @@ function component($app, $file) {
*
* For further information have a look at \OCP\IURLGenerator::linkTo
*/
-function link_to( $app, $file, $args = array() ) {
+function link_to($app, $file, $args = []) {
return \OC::$server->getURLGenerator()->linkTo($app, $file, $args);
}
@@ -233,8 +234,8 @@ function link_to_docs($key) {
*
* For further information have a look at \OCP\IURLGenerator::imagePath
*/
-function image_path( $app, $image ) {
- return \OC::$server->getURLGenerator()->imagePath( $app, $image );
+function image_path($app, $image) {
+ return \OC::$server->getURLGenerator()->imagePath($app, $image);
}
/**
@@ -242,8 +243,8 @@ function image_path( $app, $image ) {
* @param string $mimetype mimetype
* @return string link to the image
*/
-function mimetype_icon( $mimetype ) {
- return \OC::$server->getMimeTypeDetector()->mimeTypeIcon( $mimetype );
+function mimetype_icon($mimetype) {
+ return \OC::$server->getMimeTypeDetector()->mimeTypeIcon($mimetype);
}
/**
@@ -252,7 +253,7 @@ function mimetype_icon( $mimetype ) {
* @param string $path path of file
* @return string link to the preview
*/
-function preview_icon( $path ) {
+function preview_icon($path) {
return \OC::$server->getURLGenerator()->linkToRoute('core.Preview.getPreview', ['x' => 32, 'y' => 32, 'file' => $path]);
}
@@ -261,7 +262,7 @@ function preview_icon( $path ) {
* @param string $token
* @return string
*/
-function publicPreview_icon ( $path, $token ) {
+function publicPreview_icon($path, $token) {
return \OC::$server->getURLGenerator()->linkToRoute('files_sharing.PublicPreview.getPreview', ['x' => 32, 'y' => 32, 'file' => $path, 'token' => $token]);
}
@@ -272,8 +273,8 @@ function publicPreview_icon ( $path, $token ) {
*
* For further information have a look at OC_Helper::humanFileSize
*/
-function human_file_size( $bytes ) {
- return OC_Helper::humanFileSize( $bytes );
+function human_file_size($bytes) {
+ return OC_Helper::humanFileSize($bytes);
}
/**
@@ -281,7 +282,7 @@ function human_file_size( $bytes ) {
* @param int $timestamp UNIX timestamp to strip
* @return int timestamp without time value
*/
-function strip_time($timestamp){
+function strip_time($timestamp) {
$date = new \DateTime("@{$timestamp}");
$date->setTime(0, 0, 0);
return (int)$date->format('U');
@@ -299,15 +300,15 @@ function relative_modified_date($timestamp, $fromTime = null, $dateOnly = false)
/** @var \OC\DateTimeFormatter $formatter */
$formatter = \OC::$server->query('DateTimeFormatter');
- if ($dateOnly){
+ if ($dateOnly) {
return $formatter->formatDateSpan($timestamp, $fromTime);
}
return $formatter->formatTimeSpan($timestamp, $fromTime);
}
-function html_select_options($options, $selected, $params=array()) {
+function html_select_options($options, $selected, $params=[]) {
if (!is_array($selected)) {
- $selected=array($selected);
+ $selected=[$selected];
}
if (isset($params['combine']) && $params['combine']) {
$options = array_combine($options, $options);
@@ -320,7 +321,7 @@ function html_select_options($options, $selected, $params=array()) {
$label_name = $params['label'];
}
$html = '';
- foreach($options as $value => $label) {
+ foreach ($options as $value => $label) {
if ($value_name && is_array($label)) {
$value = $label[$value_name];
}
diff --git a/lib/public/API.php b/lib/public/API.php
index ce09a4349a9..65a0704d51c 100644
--- a/lib/public/API.php
+++ b/lib/public/API.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -44,8 +45,8 @@ class API {
* API Response Codes
* @since 8.1.0
*/
- const RESPOND_UNAUTHORISED = 997;
- const RESPOND_SERVER_ERROR = 996;
- const RESPOND_NOT_FOUND = 998;
- const RESPOND_UNKNOWN_ERROR = 999;
+ public const RESPOND_UNAUTHORISED = 997;
+ public const RESPOND_SERVER_ERROR = 996;
+ public const RESPOND_NOT_FOUND = 998;
+ public const RESPOND_UNKNOWN_ERROR = 999;
}
diff --git a/lib/public/Accounts/IAccount.php b/lib/public/Accounts/IAccount.php
index 6bf4988a9f1..a389ce5fddb 100644
--- a/lib/public/Accounts/IAccount.php
+++ b/lib/public/Accounts/IAccount.php
@@ -88,5 +88,4 @@ interface IAccount extends \JsonSerializable {
* @return IUser
*/
public function getUser(): IUser;
-
}
diff --git a/lib/public/Accounts/IAccountManager.php b/lib/public/Accounts/IAccountManager.php
index eaa394de8b8..bfd56c4da68 100644
--- a/lib/public/Accounts/IAccountManager.php
+++ b/lib/public/Accounts/IAccountManager.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
@@ -38,23 +39,23 @@ use OCP\IUser;
interface IAccountManager {
/** nobody can see my account details */
- const VISIBILITY_PRIVATE = 'private';
+ public const VISIBILITY_PRIVATE = 'private';
/** only contacts, especially trusted servers can see my contact details */
- const VISIBILITY_CONTACTS_ONLY = 'contacts';
+ public const VISIBILITY_CONTACTS_ONLY = 'contacts';
/** every body ca see my contact detail, will be published to the lookup server */
- const VISIBILITY_PUBLIC = 'public';
+ public const VISIBILITY_PUBLIC = 'public';
- const PROPERTY_AVATAR = 'avatar';
- const PROPERTY_DISPLAYNAME = 'displayname';
- const PROPERTY_PHONE = 'phone';
- const PROPERTY_EMAIL = 'email';
- const PROPERTY_WEBSITE = 'website';
- const PROPERTY_ADDRESS = 'address';
- const PROPERTY_TWITTER = 'twitter';
+ public const PROPERTY_AVATAR = 'avatar';
+ public const PROPERTY_DISPLAYNAME = 'displayname';
+ public const PROPERTY_PHONE = 'phone';
+ public const PROPERTY_EMAIL = 'email';
+ public const PROPERTY_WEBSITE = 'website';
+ public const PROPERTY_ADDRESS = 'address';
+ public const PROPERTY_TWITTER = 'twitter';
- const NOT_VERIFIED = '0';
- const VERIFICATION_IN_PROGRESS = '1';
- const VERIFIED = '2';
+ public const NOT_VERIFIED = '0';
+ public const VERIFICATION_IN_PROGRESS = '1';
+ public const VERIFIED = '2';
/**
* Get the account data for a given user
@@ -65,5 +66,4 @@ interface IAccountManager {
* @return IAccount
*/
public function getAccount(IUser $user): IAccount;
-
}
diff --git a/lib/public/Accounts/IAccountProperty.php b/lib/public/Accounts/IAccountProperty.php
index c7213e278a6..0cab4d0203e 100644
--- a/lib/public/Accounts/IAccountProperty.php
+++ b/lib/public/Accounts/IAccountProperty.php
@@ -99,5 +99,4 @@ interface IAccountProperty extends \JsonSerializable {
* @return string
*/
public function getVerified(): string;
-
}
diff --git a/lib/public/Accounts/PropertyDoesNotExistException.php b/lib/public/Accounts/PropertyDoesNotExistException.php
index 0aa5b4c394c..bc5ab756849 100644
--- a/lib/public/Accounts/PropertyDoesNotExistException.php
+++ b/lib/public/Accounts/PropertyDoesNotExistException.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
@@ -37,8 +38,7 @@ class PropertyDoesNotExistException extends \Exception {
* @param string $msg the error message
* @since 15.0.0
*/
- public function __construct($property){
+ public function __construct($property) {
parent::__construct('Property ' . $property . ' does not exist.');
}
-
}
diff --git a/lib/public/Activity/IEventMerger.php b/lib/public/Activity/IEventMerger.php
index a8f75875c6f..b0e673dc848 100644
--- a/lib/public/Activity/IEventMerger.php
+++ b/lib/public/Activity/IEventMerger.php
@@ -23,7 +23,6 @@
namespace OCP\Activity;
-
/**
* Interface EventMerger
*
@@ -62,5 +61,4 @@ interface IEventMerger {
* @since 11.0
*/
public function mergeEvents($mergeParameter, IEvent $event, IEvent $previousEvent = null);
-
}
diff --git a/lib/public/Activity/IExtension.php b/lib/public/Activity/IExtension.php
index c470ef07e04..65d2eaa2c93 100644
--- a/lib/public/Activity/IExtension.php
+++ b/lib/public/Activity/IExtension.php
@@ -3,7 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Björn Schießle <bjoern@schiessle.org>
- * @author Joas Schilling <coding@schilljs.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
@@ -32,12 +32,12 @@ namespace OCP\Activity;
* @since 8.0.0
*/
interface IExtension {
- const METHOD_STREAM = 'stream';
- const METHOD_MAIL = 'email';
+ public const METHOD_STREAM = 'stream';
+ public const METHOD_MAIL = 'email';
- const PRIORITY_VERYLOW = 10;
- const PRIORITY_LOW = 20;
- const PRIORITY_MEDIUM = 30;
- const PRIORITY_HIGH = 40;
- const PRIORITY_VERYHIGH = 50;
+ public const PRIORITY_VERYLOW = 10;
+ public const PRIORITY_LOW = 20;
+ public const PRIORITY_MEDIUM = 30;
+ public const PRIORITY_HIGH = 40;
+ public const PRIORITY_VERYHIGH = 50;
}
diff --git a/lib/public/App.php b/lib/public/App.php
index 9b30ef4cf93..3c6d287af97 100644
--- a/lib/public/App.php
+++ b/lib/public/App.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Frank Karlitschek <frank@karlitschek.de>
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Joas Schilling <coding@schilljs.com>
@@ -55,9 +56,9 @@ class App {
* @return void
* @since 4.0.0
* @deprecated 14.0.0 Use settings section in appinfo.xml to register personal admin sections
- */
- public static function registerPersonal( $app, $page ) {
- \OC_App::registerPersonal( $app, $page );
+ */
+ public static function registerPersonal($app, $page) {
+ \OC_App::registerPersonal($app, $page);
}
/**
@@ -68,8 +69,8 @@ class App {
* @since 4.0.0
* @deprecated 14.0.0 Use settings section in appinfo.xml to register admin sections
*/
- public static function registerAdmin( $app, $page ) {
- \OC_App::registerAdmin( $app, $page );
+ public static function registerAdmin($app, $page) {
+ \OC_App::registerAdmin($app, $page);
}
/**
@@ -79,9 +80,9 @@ class App {
* @return array|null
* @deprecated 14.0.0 ise \OC::$server->getAppManager()->getAppInfo($appId)
* @since 4.0.0
- */
- public static function getAppInfo( $app, $path=false ) {
- return \OC_App::getAppInfo( $app, $path);
+ */
+ public static function getAppInfo($app, $path=false) {
+ return \OC_App::getAppInfo($app, $path);
}
/**
@@ -93,8 +94,8 @@ class App {
* @since 4.0.0
* @deprecated 13.0.0 use \OC::$server->getAppManager()->isEnabledForUser($appId)
*/
- public static function isEnabled( $app ) {
- return \OC::$server->getAppManager()->isEnabledForUser( $app );
+ public static function isEnabled($app) {
+ return \OC::$server->getAppManager()->isEnabledForUser($app);
}
/**
@@ -104,7 +105,7 @@ class App {
* @since 4.0.0
* @deprecated 14.0.0 use \OC::$server->getAppManager()->getAppVersion($appId)
*/
- public static function getAppVersion( $app ) {
+ public static function getAppVersion($app) {
return \OC::$server->getAppManager()->getAppVersion($app);
}
}
diff --git a/lib/public/App/AppPathNotFoundException.php b/lib/public/App/AppPathNotFoundException.php
index 453a39b0af7..7285c7b5370 100644
--- a/lib/public/App/AppPathNotFoundException.php
+++ b/lib/public/App/AppPathNotFoundException.php
@@ -2,8 +2,8 @@
/**
* @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Julius Haertl <jus@bitgrid.net>
- * @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @license GNU AGPL version 3 or any later version
*
@@ -30,4 +30,5 @@ namespace OCP\App;
* @package OCP\App
* @since 11.0.0
*/
-class AppPathNotFoundException extends \Exception {}
+class AppPathNotFoundException extends \Exception {
+}
diff --git a/lib/public/App/ManagerEvent.php b/lib/public/App/ManagerEvent.php
index 31aac535b27..4e4a083fe1b 100644
--- a/lib/public/App/ManagerEvent.php
+++ b/lib/public/App/ManagerEvent.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
*
* @license AGPL-3.0
@@ -32,15 +33,14 @@ use OCP\EventDispatcher\Event;
* @since 9.0.0
*/
class ManagerEvent extends Event {
-
- const EVENT_APP_ENABLE = 'OCP\App\IAppManager::enableApp';
- const EVENT_APP_ENABLE_FOR_GROUPS = 'OCP\App\IAppManager::enableAppForGroups';
- const EVENT_APP_DISABLE = 'OCP\App\IAppManager::disableApp';
+ public const EVENT_APP_ENABLE = 'OCP\App\IAppManager::enableApp';
+ public const EVENT_APP_ENABLE_FOR_GROUPS = 'OCP\App\IAppManager::enableAppForGroups';
+ public const EVENT_APP_DISABLE = 'OCP\App\IAppManager::disableApp';
/**
* @since 9.1.0
*/
- const EVENT_APP_UPDATE = 'OCP\App\IAppManager::updateApp';
+ public const EVENT_APP_UPDATE = 'OCP\App\IAppManager::updateApp';
/** @var string */
protected $event;
diff --git a/lib/public/AppFramework/ApiController.php b/lib/public/AppFramework/ApiController.php
index d09a2d5c290..dc03feea969 100644
--- a/lib/public/AppFramework/ApiController.php
+++ b/lib/public/AppFramework/ApiController.php
@@ -3,9 +3,8 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
- * @author Lukas Reschke <lukas@statuscode.ch>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
- * @author Stefan Weil <sw@weilnetz.de>
*
* @license AGPL-3.0
*
@@ -38,61 +37,58 @@ use OCP\IRequest;
* @since 7.0.0
*/
abstract class ApiController extends Controller {
+ private $corsMethods;
+ private $corsAllowedHeaders;
+ private $corsMaxAge;
- private $corsMethods;
- private $corsAllowedHeaders;
- private $corsMaxAge;
-
- /**
- * constructor of the controller
- * @param string $appName the name of the app
- * @param IRequest $request an instance of the request
- * @param string $corsMethods comma separated string of HTTP verbs which
- * should be allowed for websites or webapps when calling your API, defaults to
- * 'PUT, POST, GET, DELETE, PATCH'
- * @param string $corsAllowedHeaders comma separated string of HTTP headers
- * which should be allowed for websites or webapps when calling your API,
- * defaults to 'Authorization, Content-Type, Accept'
- * @param int $corsMaxAge number in seconds how long a preflighted OPTIONS
- * request should be cached, defaults to 1728000 seconds
+ /**
+ * constructor of the controller
+ * @param string $appName the name of the app
+ * @param IRequest $request an instance of the request
+ * @param string $corsMethods comma separated string of HTTP verbs which
+ * should be allowed for websites or webapps when calling your API, defaults to
+ * 'PUT, POST, GET, DELETE, PATCH'
+ * @param string $corsAllowedHeaders comma separated string of HTTP headers
+ * which should be allowed for websites or webapps when calling your API,
+ * defaults to 'Authorization, Content-Type, Accept'
+ * @param int $corsMaxAge number in seconds how long a preflighted OPTIONS
+ * request should be cached, defaults to 1728000 seconds
* @since 7.0.0
- */
- public function __construct($appName,
- IRequest $request,
- $corsMethods='PUT, POST, GET, DELETE, PATCH',
- $corsAllowedHeaders='Authorization, Content-Type, Accept',
- $corsMaxAge=1728000){
- parent::__construct($appName, $request);
- $this->corsMethods = $corsMethods;
- $this->corsAllowedHeaders = $corsAllowedHeaders;
- $this->corsMaxAge = $corsMaxAge;
- }
+ */
+ public function __construct($appName,
+ IRequest $request,
+ $corsMethods='PUT, POST, GET, DELETE, PATCH',
+ $corsAllowedHeaders='Authorization, Content-Type, Accept',
+ $corsMaxAge=1728000) {
+ parent::__construct($appName, $request);
+ $this->corsMethods = $corsMethods;
+ $this->corsAllowedHeaders = $corsAllowedHeaders;
+ $this->corsMaxAge = $corsMaxAge;
+ }
- /**
- * This method implements a preflighted cors response for you that you can
- * link to for the options request
- *
- * @NoAdminRequired
- * @NoCSRFRequired
- * @PublicPage
+ /**
+ * This method implements a preflighted cors response for you that you can
+ * link to for the options request
+ *
+ * @NoAdminRequired
+ * @NoCSRFRequired
+ * @PublicPage
* @since 7.0.0
- */
- public function preflightedCors() {
- if(isset($this->request->server['HTTP_ORIGIN'])) {
- $origin = $this->request->server['HTTP_ORIGIN'];
- } else {
- $origin = '*';
- }
-
- $response = new Response();
- $response->addHeader('Access-Control-Allow-Origin', $origin);
- $response->addHeader('Access-Control-Allow-Methods', $this->corsMethods);
- $response->addHeader('Access-Control-Max-Age', (string)$this->corsMaxAge);
- $response->addHeader('Access-Control-Allow-Headers', $this->corsAllowedHeaders);
- $response->addHeader('Access-Control-Allow-Credentials', 'false');
- return $response;
- }
-
+ */
+ public function preflightedCors() {
+ if (isset($this->request->server['HTTP_ORIGIN'])) {
+ $origin = $this->request->server['HTTP_ORIGIN'];
+ } else {
+ $origin = '*';
+ }
+ $response = new Response();
+ $response->addHeader('Access-Control-Allow-Origin', $origin);
+ $response->addHeader('Access-Control-Allow-Methods', $this->corsMethods);
+ $response->addHeader('Access-Control-Max-Age', (string)$this->corsMaxAge);
+ $response->addHeader('Access-Control-Allow-Headers', $this->corsAllowedHeaders);
+ $response->addHeader('Access-Control-Allow-Credentials', 'false');
+ return $response;
+ }
}
diff --git a/lib/public/AppFramework/App.php b/lib/public/AppFramework/App.php
index d6bf23e4afe..016ef5a0318 100644
--- a/lib/public/AppFramework/App.php
+++ b/lib/public/AppFramework/App.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Julius Härtl <jus@bitgrid.net>
* @author Lukas Reschke <lukas@statuscode.ch>
@@ -37,6 +38,7 @@ declare(strict_types=1);
*/
namespace OCP\AppFramework;
+
use OC\AppFramework\Routing\RouteConfig;
use OC\ServerContainer;
use OCP\Route\IRouter;
@@ -75,7 +77,10 @@ class App {
* @since 6.0.0
*/
public function __construct(string $appName, array $urlParams = []) {
- if (\OC::$server->getConfig()->getSystemValueBool('debug')) {
+ $runIsSetupDirectly = \OC::$server->getConfig()->getSystemValueBool('debug')
+ && (PHP_VERSION_ID < 70400 || (PHP_VERSION_ID >= 70400 && !ini_get('zend.exception_ignore_args')));
+
+ if ($runIsSetupDirectly) {
$applicationClassName = get_class($this);
$e = new \RuntimeException('App class ' . $applicationClassName . ' is not setup via query() but directly');
$setUpViaQuery = false;
@@ -89,7 +94,7 @@ class App {
$step['args'][0] === $applicationClassName) {
$setUpViaQuery = true;
break;
- } else if (isset($step['class'], $step['function'], $step['args'][0]) &&
+ } elseif (isset($step['class'], $step['function'], $step['args'][0]) &&
$step['class'] === ServerContainer::class &&
$step['function'] === 'getAppContainer' &&
$step['args'][1] === $classNameParts[1]) {
diff --git a/lib/public/AppFramework/AuthPublicShareController.php b/lib/public/AppFramework/AuthPublicShareController.php
index 9e8daa8d34e..0ee8e7a7570 100644
--- a/lib/public/AppFramework/AuthPublicShareController.php
+++ b/lib/public/AppFramework/AuthPublicShareController.php
@@ -2,7 +2,10 @@
/**
* @copyright 2018, Roeland Jago Douma <roeland@famdouma.nl>
*
+ * @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
+ * @author Tim Obert <tobert@w-commerce.de>
+ * @author TimObert <tobert@w-commerce.de>
*
* @license GNU AGPL version 3 or any later version
*
@@ -163,9 +166,7 @@ abstract class AuthPublicShareController extends PublicShareController {
private function getRoute(string $function): string {
$app = strtolower($this->appName);
$class = (new \ReflectionClass($this))->getShortName();
- if ($this->appName === 'files_sharing') {
- $class = strtolower($class);
- } else if (substr($class, -10) === 'Controller') {
+ if (substr($class, -10) === 'Controller') {
$class = substr($class, 0, -10);
}
return $app .'.'. $class .'.'. $function;
diff --git a/lib/public/AppFramework/Controller.php b/lib/public/AppFramework/Controller.php
index 6642c332d52..db1f95634e0 100644
--- a/lib/public/AppFramework/Controller.php
+++ b/lib/public/AppFramework/Controller.php
@@ -3,8 +3,8 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Donquixote <marjunebatac@gmail.com>
- * @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -72,12 +72,12 @@ abstract class Controller {
* @since 6.0.0 - parameter $appName was added in 7.0.0 - parameter $app was removed in 7.0.0
*/
public function __construct($appName,
- IRequest $request) {
+ IRequest $request) {
$this->appName = $appName;
$this->request = $request;
// default responders
- $this->responders = array(
+ $this->responders = [
'json' => function ($data) {
if ($data instanceof DataResponse) {
$response = new JSONResponse(
@@ -91,11 +91,19 @@ abstract class Controller {
unset($headers['Content-Type']);
}
$response->setHeaders(array_merge($dataHeaders, $headers));
+
+ if ($data->getETag() !== null) {
+ $response->setETag($data->getETag());
+ }
+ if ($data->getLastModified() !== null) {
+ $response->setLastModified($data->getLastModified());
+ }
+
return $response;
}
return new JSONResponse($data);
}
- );
+ ];
}
@@ -147,12 +155,10 @@ abstract class Controller {
* @since 7.0.0
*/
public function buildResponse($response, $format='json') {
- if(array_key_exists($format, $this->responders)) {
-
+ if (array_key_exists($format, $this->responders)) {
$responder = $this->responders[$format];
return $responder($response);
-
}
throw new \DomainException('No responder registered for format '.
$format . '!');
diff --git a/lib/public/AppFramework/Db/DoesNotExistException.php b/lib/public/AppFramework/Db/DoesNotExistException.php
index 45008473c21..6969e1016c5 100644
--- a/lib/public/AppFramework/Db/DoesNotExistException.php
+++ b/lib/public/AppFramework/Db/DoesNotExistException.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -27,7 +28,6 @@ declare(strict_types=1);
namespace OCP\AppFramework\Db;
-
/**
* This is returned or should be returned when a find request does not find an
* entry in the database
@@ -40,8 +40,7 @@ class DoesNotExistException extends \Exception implements IMapperException {
* @param string $msg the error message
* @since 7.0.0
*/
- public function __construct($msg){
+ public function __construct($msg) {
parent::__construct($msg);
}
-
}
diff --git a/lib/public/AppFramework/Db/Entity.php b/lib/public/AppFramework/Db/Entity.php
index 287c991b587..954b8787c4c 100644
--- a/lib/public/AppFramework/Db/Entity.php
+++ b/lib/public/AppFramework/Db/Entity.php
@@ -25,7 +25,6 @@
namespace OCP\AppFramework\Db;
-
use function lcfirst;
use function substr;
@@ -35,11 +34,10 @@ use function substr;
* @since 7.0.0
*/
abstract class Entity {
-
public $id;
- private $_updatedFields = array();
- private $_fieldTypes = array('id' => 'integer');
+ private $_updatedFields = [];
+ private $_fieldTypes = ['id' => 'integer'];
/**
@@ -52,7 +50,7 @@ abstract class Entity {
public static function fromParams(array $params) {
$instance = new static();
- foreach($params as $key => $value) {
+ foreach ($params as $key => $value) {
$method = 'set' . ucfirst($key);
$instance->$method($value);
}
@@ -66,10 +64,10 @@ abstract class Entity {
* @param array $row the row to map onto the entity
* @since 7.0.0
*/
- public static function fromRow(array $row){
+ public static function fromRow(array $row) {
$instance = new static();
- foreach($row as $key => $value){
+ foreach ($row as $key => $value) {
$prop = ucfirst($instance->columnToProperty($key));
$setter = 'set' . $prop;
$instance->$setter($value);
@@ -94,8 +92,8 @@ abstract class Entity {
* Marks the entity as clean needed for setting the id after the insertion
* @since 7.0.0
*/
- public function resetUpdatedFields(){
- $this->_updatedFields = array();
+ public function resetUpdatedFields() {
+ $this->_updatedFields = [];
}
/**
@@ -104,18 +102,17 @@ abstract class Entity {
*/
protected function setter($name, $args) {
// setters should only work for existing attributes
- if(property_exists($this, $name)){
- if($this->$name === $args[0]) {
+ if (property_exists($this, $name)) {
+ if ($this->$name === $args[0]) {
return;
}
$this->markFieldUpdated($name);
// if type definition exists, cast to correct type
- if($args[0] !== null && array_key_exists($name, $this->_fieldTypes)) {
+ if ($args[0] !== null && array_key_exists($name, $this->_fieldTypes)) {
settype($args[0], $this->_fieldTypes[$name]);
}
$this->$name = $args[0];
-
} else {
throw new \BadFunctionCallException($name .
' is not a valid attribute');
@@ -128,7 +125,7 @@ abstract class Entity {
*/
protected function getter($name) {
// getters should only work for existing attributes
- if(property_exists($this, $name)){
+ if (property_exists($this, $name)) {
return $this->$name;
} else {
throw new \BadFunctionCallException($name .
@@ -155,7 +152,6 @@ abstract class Entity {
throw new \BadFunctionCallException($methodName .
' does not exist');
}
-
}
/**
@@ -176,7 +172,7 @@ abstract class Entity {
* @param string $attribute the name of the attribute
* @since 7.0.0
*/
- protected function markFieldUpdated($attribute){
+ protected function markFieldUpdated($attribute) {
$this->_updatedFields[$attribute] = true;
}
@@ -187,12 +183,12 @@ abstract class Entity {
* @return string the property name
* @since 7.0.0
*/
- public function columnToProperty($columnName){
+ public function columnToProperty($columnName) {
$parts = explode('_', $columnName);
$property = null;
- foreach($parts as $part){
- if($property === null){
+ foreach ($parts as $part) {
+ if ($property === null) {
$property = $part;
} else {
$property .= ucfirst($part);
@@ -209,12 +205,12 @@ abstract class Entity {
* @return string the column name
* @since 7.0.0
*/
- public function propertyToColumn($property){
+ public function propertyToColumn($property) {
$parts = preg_split('/(?=[A-Z])/', $property);
$column = null;
- foreach($parts as $part){
- if($column === null){
+ foreach ($parts as $part) {
+ if ($column === null) {
$column = $part;
} else {
$column .= '_' . lcfirst($part);
@@ -229,7 +225,7 @@ abstract class Entity {
* @return array array of updated fields for update query
* @since 7.0.0
*/
- public function getUpdatedFields(){
+ public function getUpdatedFields() {
return $this->_updatedFields;
}
@@ -241,7 +237,7 @@ abstract class Entity {
* @param string $type the type which will be used to call settype()
* @since 7.0.0
*/
- protected function addType($fieldName, $type){
+ protected function addType($fieldName, $type) {
$this->_fieldTypes[$fieldName] = $type;
}
@@ -253,9 +249,9 @@ abstract class Entity {
* @return string slugified value
* @since 7.0.0
*/
- public function slugify($attributeName){
+ public function slugify($attributeName) {
// toSlug should only work for existing attributes
- if(property_exists($this, $attributeName)){
+ if (property_exists($this, $attributeName)) {
$value = $this->$attributeName;
// replace everything except alphanumeric with a single '-'
$value = preg_replace('/[^A-Za-z0-9]+/', '-', $value);
@@ -267,5 +263,4 @@ abstract class Entity {
' is not a valid attribute');
}
}
-
}
diff --git a/lib/public/AppFramework/Db/IMapperException.php b/lib/public/AppFramework/Db/IMapperException.php
index f8a1d96aa93..591bfda2e66 100644
--- a/lib/public/AppFramework/Db/IMapperException.php
+++ b/lib/public/AppFramework/Db/IMapperException.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2018, Roeland Jago Douma <roeland@famdouma.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @license GNU AGPL version 3 or any later version
@@ -29,4 +30,5 @@ namespace OCP\AppFramework\Db;
/**
* @since 16.0.0
*/
-interface IMapperException {}
+interface IMapperException {
+}
diff --git a/lib/public/AppFramework/Db/Mapper.php b/lib/public/AppFramework/Db/Mapper.php
index 7dcc4a4bade..37ab06c41b6 100644
--- a/lib/public/AppFramework/Db/Mapper.php
+++ b/lib/public/AppFramework/Db/Mapper.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -36,7 +37,6 @@ use OCP\IDBConnection;
* @deprecated 14.0.0 Move over to QBMapper
*/
abstract class Mapper {
-
protected $tableName;
protected $entityClass;
protected $db;
@@ -49,13 +49,13 @@ abstract class Mapper {
* @since 7.0.0
* @deprecated 14.0.0 Move over to QBMapper
*/
- public function __construct(IDBConnection $db, $tableName, $entityClass=null){
+ public function __construct(IDBConnection $db, $tableName, $entityClass=null) {
$this->db = $db;
$this->tableName = '*PREFIX*' . $tableName;
// if not given set the entity name to the class without the mapper part
// cache it here for later use since reflection is slow
- if($entityClass === null) {
+ if ($entityClass === null) {
$this->entityClass = str_replace('Mapper', '', get_class($this));
} else {
$this->entityClass = $entityClass;
@@ -68,7 +68,7 @@ abstract class Mapper {
* @since 7.0.0
* @deprecated 14.0.0 Move over to QBMapper
*/
- public function getTableName(){
+ public function getTableName() {
return $this->tableName;
}
@@ -80,7 +80,7 @@ abstract class Mapper {
* @since 7.0.0 - return value added in 8.1.0
* @deprecated 14.0.0 Move over to QBMapper
*/
- public function delete(Entity $entity){
+ public function delete(Entity $entity) {
$sql = 'DELETE FROM `' . $this->tableName . '` WHERE `id` = ?';
$stmt = $this->execute($sql, [$entity->getId()]);
$stmt->closeCursor();
@@ -95,7 +95,7 @@ abstract class Mapper {
* @since 7.0.0
* @deprecated 14.0.0 Move over to QBMapper
*/
- public function insert(Entity $entity){
+ public function insert(Entity $entity) {
// get updated fields to save, fields have to be set using a setter to
// be saved
$properties = $entity->getUpdatedFields();
@@ -105,7 +105,7 @@ abstract class Mapper {
// build the fields
$i = 0;
- foreach($properties as $property => $updated) {
+ foreach ($properties as $property => $updated) {
$column = $entity->propertyToColumn($property);
$getter = 'get' . ucfirst($property);
@@ -113,14 +113,13 @@ abstract class Mapper {
$values .= '?';
// only append colon if there are more entries
- if($i < count($properties)-1){
+ if ($i < count($properties)-1) {
$columns .= ',';
$values .= ',';
}
$params[] = $entity->$getter();
$i++;
-
}
$sql = 'INSERT INTO `' . $this->tableName . '`(' .
@@ -145,16 +144,16 @@ abstract class Mapper {
* @since 7.0.0 - return value was added in 8.0.0
* @deprecated 14.0.0 Move over to QBMapper
*/
- public function update(Entity $entity){
+ public function update(Entity $entity) {
// if entity wasn't changed it makes no sense to run a db query
$properties = $entity->getUpdatedFields();
- if(count($properties) === 0) {
+ if (count($properties) === 0) {
return $entity;
}
// entity needs an id
$id = $entity->getId();
- if($id === null){
+ if ($id === null) {
throw new \InvalidArgumentException(
'Entity which should be updated has no id');
}
@@ -169,15 +168,14 @@ abstract class Mapper {
// build the fields
$i = 0;
- foreach($properties as $property => $updated) {
-
+ foreach ($properties as $property => $updated) {
$column = $entity->propertyToColumn($property);
$getter = 'get' . ucfirst($property);
$columns .= '`' . $column . '` = ?';
// only append colon if there are more entries
- if($i < count($properties)-1){
+ if ($i < count($properties)-1) {
$columns .= ',';
}
@@ -235,7 +233,7 @@ abstract class Mapper {
* @since 7.0.0
* @deprecated 14.0.0 Move over to QBMapper
*/
- protected function execute($sql, array $params=[], $limit=null, $offset=null){
+ protected function execute($sql, array $params=[], $limit=null, $offset=null) {
$query = $this->db->prepare($sql, $limit, $offset);
if ($this->isAssocArray($params)) {
@@ -271,11 +269,11 @@ abstract class Mapper {
* @since 7.0.0
* @deprecated 14.0.0 Move over to QBMapper
*/
- protected function findOneQuery($sql, array $params=[], $limit=null, $offset=null){
+ protected function findOneQuery($sql, array $params=[], $limit=null, $offset=null) {
$stmt = $this->execute($sql, $params, $limit, $offset);
$row = $stmt->fetch();
- if($row === false || $row === null){
+ if ($row === false || $row === null) {
$stmt->closeCursor();
$msg = $this->buildDebugMessage(
'Did expect one result but found none when executing', $sql, $params, $limit, $offset
@@ -285,7 +283,7 @@ abstract class Mapper {
$row2 = $stmt->fetch();
$stmt->closeCursor();
//MDB2 returns null, PDO and doctrine false when no row is available
- if( ! ($row2 === false || $row2 === null )) {
+ if (! ($row2 === false || $row2 === null)) {
$msg = $this->buildDebugMessage(
'Did not expect more than one result when executing', $sql, $params, $limit, $offset
);
@@ -344,7 +342,7 @@ abstract class Mapper {
$entities = [];
- while($row = $stmt->fetch()){
+ while ($row = $stmt->fetch()) {
$entities[] = $this->mapRowToEntity($row);
}
@@ -367,9 +365,7 @@ abstract class Mapper {
* @since 7.0.0
* @deprecated 14.0.0 Move over to QBMapper
*/
- protected function findEntity($sql, array $params=[], $limit=null, $offset=null){
+ protected function findEntity($sql, array $params=[], $limit=null, $offset=null) {
return $this->mapRowToEntity($this->findOneQuery($sql, $params, $limit, $offset));
}
-
-
}
diff --git a/lib/public/AppFramework/Db/MultipleObjectsReturnedException.php b/lib/public/AppFramework/Db/MultipleObjectsReturnedException.php
index 0f37d16cffc..e82f7cb8eff 100644
--- a/lib/public/AppFramework/Db/MultipleObjectsReturnedException.php
+++ b/lib/public/AppFramework/Db/MultipleObjectsReturnedException.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -27,7 +28,6 @@ declare(strict_types=1);
namespace OCP\AppFramework\Db;
-
/**
* This is returned or should be returned when a find request finds more than one
* row
@@ -40,8 +40,7 @@ class MultipleObjectsReturnedException extends \Exception implements IMapperExce
* @param string $msg the error message
* @since 7.0.0
*/
- public function __construct($msg){
+ public function __construct($msg) {
parent::__construct($msg);
}
-
}
diff --git a/lib/public/AppFramework/Db/QBMapper.php b/lib/public/AppFramework/Db/QBMapper.php
index 5fa367491b0..9b396965706 100644
--- a/lib/public/AppFramework/Db/QBMapper.php
+++ b/lib/public/AppFramework/Db/QBMapper.php
@@ -7,6 +7,7 @@ declare(strict_types=1);
*
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Kesselberg <mail@danielkesselberg.de>
+ * @author Joas Schilling <coding@schilljs.com>
* @author Marius David Wieschollek <git.public@mdns.eu>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -57,13 +58,13 @@ abstract class QBMapper {
* mapped to queries without using sql
* @since 14.0.0
*/
- public function __construct(IDBConnection $db, string $tableName, string $entityClass=null){
+ public function __construct(IDBConnection $db, string $tableName, string $entityClass=null) {
$this->db = $db;
$this->tableName = $tableName;
// if not given set the entity name to the class without the mapper part
// cache it here for later use since reflection is slow
- if($entityClass === null) {
+ if ($entityClass === null) {
$this->entityClass = str_replace('Mapper', '', \get_class($this));
} else {
$this->entityClass = $entityClass;
@@ -116,7 +117,7 @@ abstract class QBMapper {
$qb->insert($this->tableName);
// build the fields
- foreach($properties as $property => $updated) {
+ foreach ($properties as $property => $updated) {
$column = $entity->propertyToColumn($property);
$getter = 'get' . ucfirst($property);
$value = $entity->$getter();
@@ -127,7 +128,7 @@ abstract class QBMapper {
$qb->execute();
- if($entity->id === null) {
+ if ($entity->id === null) {
// When autoincrement is used id is always an int
$entity->setId((int)$qb->getLastInsertId());
}
@@ -165,13 +166,13 @@ abstract class QBMapper {
public function update(Entity $entity): Entity {
// if entity wasn't changed it makes no sense to run a db query
$properties = $entity->getUpdatedFields();
- if(\count($properties) === 0) {
+ if (\count($properties) === 0) {
return $entity;
}
// entity needs an id
$id = $entity->getId();
- if($id === null){
+ if ($id === null) {
throw new \InvalidArgumentException(
'Entity which should be updated has no id');
}
@@ -185,7 +186,7 @@ abstract class QBMapper {
$qb->update($this->tableName);
// build the fields
- foreach($properties as $property => $updated) {
+ foreach ($properties as $property => $updated) {
$column = $entity->propertyToColumn($property);
$getter = 'get' . ucfirst($property);
$value = $entity->$getter();
@@ -216,11 +217,11 @@ abstract class QBMapper {
protected function getParameterTypeForProperty(Entity $entity, string $property): int {
$types = $entity->getFieldTypes();
- if(!isset($types[ $property ])) {
+ if (!isset($types[ $property ])) {
return IQueryBuilder::PARAM_STR;
}
- switch($types[ $property ]) {
+ switch ($types[ $property ]) {
case 'int':
case 'integer':
return IQueryBuilder::PARAM_INT;
@@ -250,7 +251,7 @@ abstract class QBMapper {
$cursor = $query->execute();
$row = $cursor->fetch();
- if($row === false) {
+ if ($row === false) {
$cursor->closeCursor();
$msg = $this->buildDebugMessage(
'Did expect one result but found none when executing', $query
@@ -260,7 +261,7 @@ abstract class QBMapper {
$row2 = $cursor->fetch();
$cursor->closeCursor();
- if($row2 !== false ) {
+ if ($row2 !== false) {
$msg = $this->buildDebugMessage(
'Did not expect more than one result when executing', $query
);
@@ -307,7 +308,7 @@ abstract class QBMapper {
$entities = [];
- while($row = $cursor->fetch()){
+ while ($row = $cursor->fetch()) {
$entities[] = $this->mapRowToEntity($row);
}
@@ -330,5 +331,4 @@ abstract class QBMapper {
protected function findEntity(IQueryBuilder $query): Entity {
return $this->mapRowToEntity($this->findOneQuery($query));
}
-
}
diff --git a/lib/public/AppFramework/Http.php b/lib/public/AppFramework/Http.php
index df1d8a5b966..1e501c87299 100644
--- a/lib/public/AppFramework/Http.php
+++ b/lib/public/AppFramework/Http.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Thomas Tanghus <thomas@tanghus.net>
@@ -34,64 +35,63 @@ namespace OCP\AppFramework;
* @since 6.0.0
*/
class Http {
-
- const STATUS_CONTINUE = 100;
- const STATUS_SWITCHING_PROTOCOLS = 101;
- const STATUS_PROCESSING = 102;
- const STATUS_OK = 200;
- const STATUS_CREATED = 201;
- const STATUS_ACCEPTED = 202;
- const STATUS_NON_AUTHORATIVE_INFORMATION = 203;
- const STATUS_NO_CONTENT = 204;
- const STATUS_RESET_CONTENT = 205;
- const STATUS_PARTIAL_CONTENT = 206;
- const STATUS_MULTI_STATUS = 207;
- const STATUS_ALREADY_REPORTED = 208;
- const STATUS_IM_USED = 226;
- const STATUS_MULTIPLE_CHOICES = 300;
- const STATUS_MOVED_PERMANENTLY = 301;
- const STATUS_FOUND = 302;
- const STATUS_SEE_OTHER = 303;
- const STATUS_NOT_MODIFIED = 304;
- const STATUS_USE_PROXY = 305;
- const STATUS_RESERVED = 306;
- const STATUS_TEMPORARY_REDIRECT = 307;
- const STATUS_BAD_REQUEST = 400;
- const STATUS_UNAUTHORIZED = 401;
- const STATUS_PAYMENT_REQUIRED = 402;
- const STATUS_FORBIDDEN = 403;
- const STATUS_NOT_FOUND = 404;
- const STATUS_METHOD_NOT_ALLOWED = 405;
- const STATUS_NOT_ACCEPTABLE = 406;
- const STATUS_PROXY_AUTHENTICATION_REQUIRED = 407;
- const STATUS_REQUEST_TIMEOUT = 408;
- const STATUS_CONFLICT = 409;
- const STATUS_GONE = 410;
- const STATUS_LENGTH_REQUIRED = 411;
- const STATUS_PRECONDITION_FAILED = 412;
- const STATUS_REQUEST_ENTITY_TOO_LARGE = 413;
- const STATUS_REQUEST_URI_TOO_LONG = 414;
- const STATUS_UNSUPPORTED_MEDIA_TYPE = 415;
- const STATUS_REQUEST_RANGE_NOT_SATISFIABLE = 416;
- const STATUS_EXPECTATION_FAILED = 417;
- const STATUS_IM_A_TEAPOT = 418;
- const STATUS_UNPROCESSABLE_ENTITY = 422;
- const STATUS_LOCKED = 423;
- const STATUS_FAILED_DEPENDENCY = 424;
- const STATUS_UPGRADE_REQUIRED = 426;
- const STATUS_PRECONDITION_REQUIRED = 428;
- const STATUS_TOO_MANY_REQUESTS = 429;
- const STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE = 431;
- const STATUS_INTERNAL_SERVER_ERROR = 500;
- const STATUS_NOT_IMPLEMENTED = 501;
- const STATUS_BAD_GATEWAY = 502;
- const STATUS_SERVICE_UNAVAILABLE = 503;
- const STATUS_GATEWAY_TIMEOUT = 504;
- const STATUS_HTTP_VERSION_NOT_SUPPORTED = 505;
- const STATUS_VARIANT_ALSO_NEGOTIATES = 506;
- const STATUS_INSUFFICIENT_STORAGE = 507;
- const STATUS_LOOP_DETECTED = 508;
- const STATUS_BANDWIDTH_LIMIT_EXCEEDED = 509;
- const STATUS_NOT_EXTENDED = 510;
- const STATUS_NETWORK_AUTHENTICATION_REQUIRED = 511;
+ public const STATUS_CONTINUE = 100;
+ public const STATUS_SWITCHING_PROTOCOLS = 101;
+ public const STATUS_PROCESSING = 102;
+ public const STATUS_OK = 200;
+ public const STATUS_CREATED = 201;
+ public const STATUS_ACCEPTED = 202;
+ public const STATUS_NON_AUTHORATIVE_INFORMATION = 203;
+ public const STATUS_NO_CONTENT = 204;
+ public const STATUS_RESET_CONTENT = 205;
+ public const STATUS_PARTIAL_CONTENT = 206;
+ public const STATUS_MULTI_STATUS = 207;
+ public const STATUS_ALREADY_REPORTED = 208;
+ public const STATUS_IM_USED = 226;
+ public const STATUS_MULTIPLE_CHOICES = 300;
+ public const STATUS_MOVED_PERMANENTLY = 301;
+ public const STATUS_FOUND = 302;
+ public const STATUS_SEE_OTHER = 303;
+ public const STATUS_NOT_MODIFIED = 304;
+ public const STATUS_USE_PROXY = 305;
+ public const STATUS_RESERVED = 306;
+ public const STATUS_TEMPORARY_REDIRECT = 307;
+ public const STATUS_BAD_REQUEST = 400;
+ public const STATUS_UNAUTHORIZED = 401;
+ public const STATUS_PAYMENT_REQUIRED = 402;
+ public const STATUS_FORBIDDEN = 403;
+ public const STATUS_NOT_FOUND = 404;
+ public const STATUS_METHOD_NOT_ALLOWED = 405;
+ public const STATUS_NOT_ACCEPTABLE = 406;
+ public const STATUS_PROXY_AUTHENTICATION_REQUIRED = 407;
+ public const STATUS_REQUEST_TIMEOUT = 408;
+ public const STATUS_CONFLICT = 409;
+ public const STATUS_GONE = 410;
+ public const STATUS_LENGTH_REQUIRED = 411;
+ public const STATUS_PRECONDITION_FAILED = 412;
+ public const STATUS_REQUEST_ENTITY_TOO_LARGE = 413;
+ public const STATUS_REQUEST_URI_TOO_LONG = 414;
+ public const STATUS_UNSUPPORTED_MEDIA_TYPE = 415;
+ public const STATUS_REQUEST_RANGE_NOT_SATISFIABLE = 416;
+ public const STATUS_EXPECTATION_FAILED = 417;
+ public const STATUS_IM_A_TEAPOT = 418;
+ public const STATUS_UNPROCESSABLE_ENTITY = 422;
+ public const STATUS_LOCKED = 423;
+ public const STATUS_FAILED_DEPENDENCY = 424;
+ public const STATUS_UPGRADE_REQUIRED = 426;
+ public const STATUS_PRECONDITION_REQUIRED = 428;
+ public const STATUS_TOO_MANY_REQUESTS = 429;
+ public const STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE = 431;
+ public const STATUS_INTERNAL_SERVER_ERROR = 500;
+ public const STATUS_NOT_IMPLEMENTED = 501;
+ public const STATUS_BAD_GATEWAY = 502;
+ public const STATUS_SERVICE_UNAVAILABLE = 503;
+ public const STATUS_GATEWAY_TIMEOUT = 504;
+ public const STATUS_HTTP_VERSION_NOT_SUPPORTED = 505;
+ public const STATUS_VARIANT_ALSO_NEGOTIATES = 506;
+ public const STATUS_INSUFFICIENT_STORAGE = 507;
+ public const STATUS_LOOP_DETECTED = 508;
+ public const STATUS_BANDWIDTH_LIMIT_EXCEEDED = 509;
+ public const STATUS_NOT_EXTENDED = 510;
+ public const STATUS_NETWORK_AUTHENTICATION_REQUIRED = 511;
}
diff --git a/lib/public/AppFramework/Http/ContentSecurityPolicy.php b/lib/public/AppFramework/Http/ContentSecurityPolicy.php
index 81bd3d1b63f..818053bbf1d 100644
--- a/lib/public/AppFramework/Http/ContentSecurityPolicy.php
+++ b/lib/public/AppFramework/Http/ContentSecurityPolicy.php
@@ -6,7 +6,7 @@
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author sualko <klaus@jsxc.org>
- * @author Thomas Citharel <tcit@tcit.fr>
+ * @author Thomas Citharel <nextcloud@tcit.fr>
*
* @license AGPL-3.0
*
diff --git a/lib/public/AppFramework/Http/DataDisplayResponse.php b/lib/public/AppFramework/Http/DataDisplayResponse.php
index 512e52ee9fc..335d403c3c1 100644
--- a/lib/public/AppFramework/Http/DataDisplayResponse.php
+++ b/lib/public/AppFramework/Http/DataDisplayResponse.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Julius Härtl <jus@bitgrid.net>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -48,7 +49,7 @@ class DataDisplayResponse extends Response {
* @since 8.1.0
*/
public function __construct($data='', $statusCode=Http::STATUS_OK,
- $headers=[]) {
+ $headers=[]) {
parent::__construct();
$this->data = $data;
@@ -73,7 +74,7 @@ class DataDisplayResponse extends Response {
* @return DataDisplayResponse Reference to this object
* @since 8.1.0
*/
- public function setData($data){
+ public function setData($data) {
$this->data = $data;
return $this;
@@ -85,8 +86,7 @@ class DataDisplayResponse extends Response {
* @return string the data
* @since 8.1.0
*/
- public function getData(){
+ public function getData() {
return $this->data;
}
-
}
diff --git a/lib/public/AppFramework/Http/DataResponse.php b/lib/public/AppFramework/Http/DataResponse.php
index d6068f9c515..483b46ba5ab 100644
--- a/lib/public/AppFramework/Http/DataResponse.php
+++ b/lib/public/AppFramework/Http/DataResponse.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -51,8 +52,8 @@ class DataResponse extends Response {
* @param array $headers additional key value based headers
* @since 8.0.0
*/
- public function __construct($data=array(), $statusCode=Http::STATUS_OK,
- array $headers=array()) {
+ public function __construct($data=[], $statusCode=Http::STATUS_OK,
+ array $headers=[]) {
parent::__construct();
$this->data = $data;
@@ -67,7 +68,7 @@ class DataResponse extends Response {
* @return DataResponse Reference to this object
* @since 8.0.0
*/
- public function setData($data){
+ public function setData($data) {
$this->data = $data;
return $this;
@@ -79,9 +80,7 @@ class DataResponse extends Response {
* @return array the data
* @since 8.0.0
*/
- public function getData(){
+ public function getData() {
return $this->data;
}
-
-
}
diff --git a/lib/public/AppFramework/Http/DownloadResponse.php b/lib/public/AppFramework/Http/DownloadResponse.php
index 2f808ff156c..78381f0f08f 100644
--- a/lib/public/AppFramework/Http/DownloadResponse.php
+++ b/lib/public/AppFramework/Http/DownloadResponse.php
@@ -25,13 +25,11 @@
namespace OCP\AppFramework\Http;
-
/**
* Prompts the user to download the a file
* @since 7.0.0
*/
class DownloadResponse extends Response {
-
private $filename;
private $contentType;
@@ -50,6 +48,4 @@ class DownloadResponse extends Response {
$this->addHeader('Content-Disposition', 'attachment; filename="' . $filename . '"');
$this->addHeader('Content-Type', $contentType);
}
-
-
}
diff --git a/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php b/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php
index 066569d63c6..f7aee8c6370 100644
--- a/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php
+++ b/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php
@@ -2,10 +2,12 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
+ * @author Pavel Krasikov <klonishe@gmail.com>
* @author Pierre Rudloff <contact@rudloff.pro>
* @author Roeland Jago Douma <roeland@famdouma.nl>
- * @author Thomas Citharel <tcit@tcit.fr>
+ * @author Thomas Citharel <nextcloud@tcit.fr>
*
* @license AGPL-3.0
*
@@ -435,77 +437,77 @@ class EmptyContentSecurityPolicy {
$policy .= "base-uri 'none';";
$policy .= "manifest-src 'self';";
- if(!empty($this->allowedScriptDomains) || $this->inlineScriptAllowed || $this->evalScriptAllowed) {
+ if (!empty($this->allowedScriptDomains) || $this->inlineScriptAllowed || $this->evalScriptAllowed) {
$policy .= 'script-src ';
- if(is_string($this->useJsNonce)) {
+ if (is_string($this->useJsNonce)) {
$policy .= '\'nonce-'.base64_encode($this->useJsNonce).'\'';
$allowedScriptDomains = array_flip($this->allowedScriptDomains);
unset($allowedScriptDomains['\'self\'']);
$this->allowedScriptDomains = array_flip($allowedScriptDomains);
- if(count($allowedScriptDomains) !== 0) {
+ if (count($allowedScriptDomains) !== 0) {
$policy .= ' ';
}
}
- if(is_array($this->allowedScriptDomains)) {
+ if (is_array($this->allowedScriptDomains)) {
$policy .= implode(' ', $this->allowedScriptDomains);
}
- if($this->inlineScriptAllowed) {
+ if ($this->inlineScriptAllowed) {
$policy .= ' \'unsafe-inline\'';
}
- if($this->evalScriptAllowed) {
+ if ($this->evalScriptAllowed) {
$policy .= ' \'unsafe-eval\'';
}
$policy .= ';';
}
- if(!empty($this->allowedStyleDomains) || $this->inlineStyleAllowed) {
+ if (!empty($this->allowedStyleDomains) || $this->inlineStyleAllowed) {
$policy .= 'style-src ';
- if(is_array($this->allowedStyleDomains)) {
+ if (is_array($this->allowedStyleDomains)) {
$policy .= implode(' ', $this->allowedStyleDomains);
}
- if($this->inlineStyleAllowed) {
+ if ($this->inlineStyleAllowed) {
$policy .= ' \'unsafe-inline\'';
}
$policy .= ';';
}
- if(!empty($this->allowedImageDomains)) {
+ if (!empty($this->allowedImageDomains)) {
$policy .= 'img-src ' . implode(' ', $this->allowedImageDomains);
$policy .= ';';
}
- if(!empty($this->allowedFontDomains)) {
+ if (!empty($this->allowedFontDomains)) {
$policy .= 'font-src ' . implode(' ', $this->allowedFontDomains);
$policy .= ';';
}
- if(!empty($this->allowedConnectDomains)) {
+ if (!empty($this->allowedConnectDomains)) {
$policy .= 'connect-src ' . implode(' ', $this->allowedConnectDomains);
$policy .= ';';
}
- if(!empty($this->allowedMediaDomains)) {
+ if (!empty($this->allowedMediaDomains)) {
$policy .= 'media-src ' . implode(' ', $this->allowedMediaDomains);
$policy .= ';';
}
- if(!empty($this->allowedObjectDomains)) {
+ if (!empty($this->allowedObjectDomains)) {
$policy .= 'object-src ' . implode(' ', $this->allowedObjectDomains);
$policy .= ';';
}
- if(!empty($this->allowedFrameDomains)) {
+ if (!empty($this->allowedFrameDomains)) {
$policy .= 'frame-src ';
$policy .= implode(' ', $this->allowedFrameDomains);
$policy .= ';';
}
- if(!empty($this->allowedChildSrcDomains)) {
+ if (!empty($this->allowedChildSrcDomains)) {
$policy .= 'child-src ' . implode(' ', $this->allowedChildSrcDomains);
$policy .= ';';
}
- if(!empty($this->allowedFrameAncestors)) {
+ if (!empty($this->allowedFrameAncestors)) {
$policy .= 'frame-ancestors ' . implode(' ', $this->allowedFrameAncestors);
$policy .= ';';
}
diff --git a/lib/public/AppFramework/Http/ICallbackResponse.php b/lib/public/AppFramework/Http/ICallbackResponse.php
index f12a406120a..44be69548ca 100644
--- a/lib/public/AppFramework/Http/ICallbackResponse.php
+++ b/lib/public/AppFramework/Http/ICallbackResponse.php
@@ -25,7 +25,6 @@
namespace OCP\AppFramework\Http;
-
/**
* Interface ICallbackResponse
*
@@ -41,5 +40,4 @@ interface ICallbackResponse {
* @since 8.1.0
*/
public function callback(IOutput $output);
-
}
diff --git a/lib/public/AppFramework/Http/IOutput.php b/lib/public/AppFramework/Http/IOutput.php
index 082e5e40046..888c9f45b23 100644
--- a/lib/public/AppFramework/Http/IOutput.php
+++ b/lib/public/AppFramework/Http/IOutput.php
@@ -26,7 +26,6 @@
namespace OCP\AppFramework\Http;
-
/**
* Very thin wrapper class to make output testable
* @since 8.1.0
@@ -76,5 +75,4 @@ interface IOutput {
* @since 8.1.0
*/
public function setCookie($name, $value, $expire, $path, $domain, $secure, $httpOnly);
-
}
diff --git a/lib/public/AppFramework/Http/JSONResponse.php b/lib/public/AppFramework/Http/JSONResponse.php
index abe01904887..2827cd964ec 100644
--- a/lib/public/AppFramework/Http/JSONResponse.php
+++ b/lib/public/AppFramework/Http/JSONResponse.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -53,7 +54,7 @@ class JSONResponse extends Response {
* @param int $statusCode the Http status code, defaults to 200
* @since 6.0.0
*/
- public function __construct($data=array(), $statusCode=Http::STATUS_OK) {
+ public function __construct($data=[], $statusCode=Http::STATUS_OK) {
parent::__construct();
$this->data = $data;
@@ -70,7 +71,7 @@ class JSONResponse extends Response {
*/
public function render() {
$response = json_encode($this->data, JSON_HEX_TAG);
- if($response === false) {
+ if ($response === false) {
throw new \Exception(sprintf('Could not json_encode due to invalid ' .
'non UTF-8 characters in the array: %s', var_export($this->data, true)));
}
@@ -85,7 +86,7 @@ class JSONResponse extends Response {
* @return JSONResponse Reference to this object
* @since 6.0.0 - return value was added in 7.0.0
*/
- public function setData($data){
+ public function setData($data) {
$this->data = $data;
return $this;
@@ -97,8 +98,7 @@ class JSONResponse extends Response {
* @return array the data
* @since 6.0.0
*/
- public function getData(){
+ public function getData() {
return $this->data;
}
-
}
diff --git a/lib/public/AppFramework/Http/OCSResponse.php b/lib/public/AppFramework/Http/OCSResponse.php
index c80a300ca4f..39c3ad98819 100644
--- a/lib/public/AppFramework/Http/OCSResponse.php
+++ b/lib/public/AppFramework/Http/OCSResponse.php
@@ -37,7 +37,6 @@ namespace OCP\AppFramework\Http;
* @deprecated 9.2.0 To implement an OCS endpoint extend the OCSController
*/
class OCSResponse extends Response {
-
private $data;
private $format;
private $statuscode;
@@ -93,6 +92,4 @@ class OCSResponse extends Response {
return \OC_API::renderResult($this->format, $r->getMeta(), $r->getData());
}
-
-
}
diff --git a/lib/public/AppFramework/Http/RedirectResponse.php b/lib/public/AppFramework/Http/RedirectResponse.php
index dda90440d6d..28344866c03 100644
--- a/lib/public/AppFramework/Http/RedirectResponse.php
+++ b/lib/public/AppFramework/Http/RedirectResponse.php
@@ -33,7 +33,6 @@ use OCP\AppFramework\Http;
* @since 7.0.0
*/
class RedirectResponse extends Response {
-
private $redirectURL;
/**
@@ -57,6 +56,4 @@ class RedirectResponse extends Response {
public function getRedirectURL() {
return $this->redirectURL;
}
-
-
}
diff --git a/lib/public/AppFramework/Http/RedirectToDefaultAppResponse.php b/lib/public/AppFramework/Http/RedirectToDefaultAppResponse.php
index b34ede45dfd..f4b8f54f892 100644
--- a/lib/public/AppFramework/Http/RedirectToDefaultAppResponse.php
+++ b/lib/public/AppFramework/Http/RedirectToDefaultAppResponse.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
namespace OCP\AppFramework\Http;
-
/**
* Redirects to the default app
* @since 16.0.0
@@ -42,5 +41,4 @@ class RedirectToDefaultAppResponse extends RedirectResponse {
public function __construct() {
parent::__construct(\OC_Util::getDefaultPageUrl());
}
-
}
diff --git a/lib/public/AppFramework/Http/Response.php b/lib/public/AppFramework/Http/Response.php
index 15318f30bbd..6f418e42553 100644
--- a/lib/public/AppFramework/Http/Response.php
+++ b/lib/public/AppFramework/Http/Response.php
@@ -49,16 +49,16 @@ class Response {
* Headers - defaults to ['Cache-Control' => 'no-cache, no-store, must-revalidate']
* @var array
*/
- private $headers = array(
+ private $headers = [
'Cache-Control' => 'no-cache, no-store, must-revalidate'
- );
+ ];
/**
* Cookies that will be need to be constructed as header
* @var array
*/
- private $cookies = array();
+ private $cookies = [];
/**
@@ -105,12 +105,11 @@ class Response {
* @return $this
* @since 6.0.0 - return value was added in 7.0.0
*/
- public function cacheFor(int $cacheSeconds) {
- if($cacheSeconds > 0) {
- $this->addHeader('Cache-Control', 'max-age=' . $cacheSeconds . ', must-revalidate');
-
- // Old scool prama caching
- $this->addHeader('Pragma', 'public');
+ public function cacheFor(int $cacheSeconds, bool $public = false) {
+ if ($cacheSeconds > 0) {
+ $pragma = $public ? 'public' : 'private';
+ $this->addHeader('Cache-Control', $pragma . ', max-age=' . $cacheSeconds . ', must-revalidate');
+ $this->addHeader('Pragma', $pragma);
// Set expires header
$expires = new \DateTime();
@@ -138,7 +137,7 @@ class Response {
* @since 8.0.0
*/
public function addCookie($name, $value, \DateTime $expireDate = null) {
- $this->cookies[$name] = array('value' => $value, 'expireDate' => $expireDate);
+ $this->cookies[$name] = ['value' => $value, 'expireDate' => $expireDate];
return $this;
}
@@ -173,7 +172,7 @@ class Response {
* @since 8.0.0
*/
public function invalidateCookies(array $cookieNames) {
- foreach($cookieNames as $cookieName) {
+ foreach ($cookieNames as $cookieName) {
$this->invalidateCookie($cookieName);
}
return $this;
@@ -198,10 +197,10 @@ class Response {
*/
public function addHeader($name, $value) {
$name = trim($name); // always remove leading and trailing whitespace
- // to be able to reliably check for security
- // headers
+ // to be able to reliably check for security
+ // headers
- if(is_null($value)) {
+ if (is_null($value)) {
unset($this->headers[$name]);
} else {
$this->headers[$name] = $value;
@@ -232,7 +231,7 @@ class Response {
public function getHeaders() {
$mergeWith = [];
- if($this->lastModified) {
+ if ($this->lastModified) {
$mergeWith['Last-Modified'] =
$this->lastModified->format(\DateTime::RFC2822);
}
@@ -240,7 +239,7 @@ class Response {
$this->headers['Content-Security-Policy'] = $this->getContentSecurityPolicy()->buildPolicy();
$this->headers['Feature-Policy'] = $this->getFeaturePolicy()->buildPolicy();
- if($this->ETag) {
+ if ($this->ETag) {
$mergeWith['ETag'] = '"' . $this->ETag . '"';
}
diff --git a/lib/public/AppFramework/Http/StandaloneTemplateResponse.php b/lib/public/AppFramework/Http/StandaloneTemplateResponse.php
index 544ad31f0d6..f07e82fc928 100644
--- a/lib/public/AppFramework/Http/StandaloneTemplateResponse.php
+++ b/lib/public/AppFramework/Http/StandaloneTemplateResponse.php
@@ -35,5 +35,4 @@ namespace OCP\AppFramework\Http;
* @since 16.0.0
*/
class StandaloneTemplateResponse extends TemplateResponse {
-
}
diff --git a/lib/public/AppFramework/Http/StreamResponse.php b/lib/public/AppFramework/Http/StreamResponse.php
index 80985ae7527..5ce8f9f8697 100644
--- a/lib/public/AppFramework/Http/StreamResponse.php
+++ b/lib/public/AppFramework/Http/StreamResponse.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -42,7 +43,7 @@ class StreamResponse extends Response implements ICallbackResponse {
* @param string|resource $filePath the path to the file or a file handle which should be streamed
* @since 8.1.0
*/
- public function __construct ($filePath) {
+ public function __construct($filePath) {
parent::__construct();
$this->filePath = $filePath;
@@ -55,7 +56,7 @@ class StreamResponse extends Response implements ICallbackResponse {
* @param IOutput $output a small wrapper that handles output
* @since 8.1.0
*/
- public function callback (IOutput $output) {
+ public function callback(IOutput $output) {
// handle caching
if ($output->getHttpResponseCode() !== Http::STATUS_NOT_MODIFIED) {
if (!(is_resource($this->filePath) || file_exists($this->filePath))) {
@@ -65,5 +66,4 @@ class StreamResponse extends Response implements ICallbackResponse {
}
}
}
-
}
diff --git a/lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php b/lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php
index af112a7076d..7866f19d430 100644
--- a/lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php
+++ b/lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php
@@ -26,7 +26,6 @@
namespace OCP\AppFramework\Http\Template;
-use OCP\AppFramework\Http\Template\SimpleMenuAction;
use OCP\Util;
/**
diff --git a/lib/public/AppFramework/Http/Template/IMenuAction.php b/lib/public/AppFramework/Http/Template/IMenuAction.php
index 703befd3e34..e2ab005a050 100644
--- a/lib/public/AppFramework/Http/Template/IMenuAction.php
+++ b/lib/public/AppFramework/Http/Template/IMenuAction.php
@@ -61,5 +61,4 @@ interface IMenuAction {
* @return string
*/
public function render(): string;
-
}
diff --git a/lib/public/AppFramework/Http/Template/LinkMenuAction.php b/lib/public/AppFramework/Http/Template/LinkMenuAction.php
index 1ddb1a46e94..489a7d534ad 100644
--- a/lib/public/AppFramework/Http/Template/LinkMenuAction.php
+++ b/lib/public/AppFramework/Http/Template/LinkMenuAction.php
@@ -24,7 +24,6 @@
namespace OCP\AppFramework\Http\Template;
-use OCP\AppFramework\Http\Template\SimpleMenuAction;
use OCP\Util;
/**
diff --git a/lib/public/AppFramework/Http/Template/PublicTemplateResponse.php b/lib/public/AppFramework/Http/Template/PublicTemplateResponse.php
index d6d1fc1d72a..8a8ac4242ce 100644
--- a/lib/public/AppFramework/Http/Template/PublicTemplateResponse.php
+++ b/lib/public/AppFramework/Http/Template/PublicTemplateResponse.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Julius Härtl <jus@bitgrid.net>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -34,7 +35,6 @@ use OCP\AppFramework\Http\TemplateResponse;
* @since 14.0.0
*/
class PublicTemplateResponse extends TemplateResponse {
-
private $headerTitle = '';
private $headerDetails = '';
private $headerActions = [];
@@ -48,7 +48,7 @@ class PublicTemplateResponse extends TemplateResponse {
* @param array $params
* @since 14.0.0
*/
- public function __construct(string $appName, string $templateName, array $params = array()) {
+ public function __construct(string $appName, string $templateName, array $params = []) {
parent::__construct($appName, $templateName, $params, 'public');
\OC_Util::addScript('core', 'public/publicpage');
}
@@ -97,7 +97,7 @@ class PublicTemplateResponse extends TemplateResponse {
}
$this->headerActions[] = $action;
}
- usort($this->headerActions, function(IMenuAction $a, IMenuAction $b) {
+ usort($this->headerActions, function (IMenuAction $a, IMenuAction $b) {
return $a->getPriority() > $b->getPriority();
});
}
@@ -155,5 +155,4 @@ class PublicTemplateResponse extends TemplateResponse {
$this->setParams($params);
return parent::render();
}
-
}
diff --git a/lib/public/AppFramework/Http/Template/SimpleMenuAction.php b/lib/public/AppFramework/Http/Template/SimpleMenuAction.php
index 6c45d9e4d9d..65880857bb6 100644
--- a/lib/public/AppFramework/Http/Template/SimpleMenuAction.php
+++ b/lib/public/AppFramework/Http/Template/SimpleMenuAction.php
@@ -123,5 +123,4 @@ class SimpleMenuAction implements IMenuAction {
Util::sanitizeHTML($this->id), Util::sanitizeHTML($this->link), Util::sanitizeHTML($this->icon), Util::sanitizeHTML($this->label), $detailContent
);
}
-
}
diff --git a/lib/public/AppFramework/Http/TemplateResponse.php b/lib/public/AppFramework/Http/TemplateResponse.php
index 8ceeed5b8aa..d6c4006433c 100644
--- a/lib/public/AppFramework/Http/TemplateResponse.php
+++ b/lib/public/AppFramework/Http/TemplateResponse.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Julius Härtl <jus@bitgrid.net>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -32,15 +33,13 @@
namespace OCP\AppFramework\Http;
-
/**
* Response for a normal template
* @since 6.0.0
*/
class TemplateResponse extends Response {
-
- const EVENT_LOAD_ADDITIONAL_SCRIPTS = self::class . '::loadAdditionalScripts';
- const EVENT_LOAD_ADDITIONAL_SCRIPTS_LOGGEDIN = self::class . '::loadAdditionalScriptsLoggedIn';
+ public const EVENT_LOAD_ADDITIONAL_SCRIPTS = self::class . '::loadAdditionalScripts';
+ public const EVENT_LOAD_ADDITIONAL_SCRIPTS_LOGGEDIN = self::class . '::loadAdditionalScriptsLoggedIn';
/**
* name of the template
@@ -75,8 +74,8 @@ class TemplateResponse extends Response {
* @param string $renderAs how the page should be rendered, defaults to user
* @since 6.0.0 - parameters $params and $renderAs were added in 7.0.0
*/
- public function __construct($appName, $templateName, array $params=array(),
- $renderAs='user') {
+ public function __construct($appName, $templateName, array $params=[],
+ $renderAs='user') {
parent::__construct();
$this->templateName = $templateName;
@@ -96,7 +95,7 @@ class TemplateResponse extends Response {
* @return TemplateResponse Reference to this object
* @since 6.0.0 - return value was added in 7.0.0
*/
- public function setParams(array $params){
+ public function setParams(array $params) {
$this->params = $params;
return $this;
@@ -108,7 +107,7 @@ class TemplateResponse extends Response {
* @return array the params
* @since 6.0.0
*/
- public function getParams(){
+ public function getParams() {
return $this->params;
}
@@ -118,7 +117,7 @@ class TemplateResponse extends Response {
* @return string the name of the used template
* @since 6.0.0
*/
- public function getTemplateName(){
+ public function getTemplateName() {
return $this->templateName;
}
@@ -132,7 +131,7 @@ class TemplateResponse extends Response {
* @return TemplateResponse Reference to this object
* @since 6.0.0 - return value was added in 7.0.0
*/
- public function renderAs($renderAs){
+ public function renderAs($renderAs) {
$this->renderAs = $renderAs;
return $this;
@@ -144,7 +143,7 @@ class TemplateResponse extends Response {
* @return string the renderAs value
* @since 6.0.0
*/
- public function getRenderAs(){
+ public function getRenderAs() {
return $this->renderAs;
}
@@ -154,17 +153,16 @@ class TemplateResponse extends Response {
* @return string the rendered html
* @since 6.0.0
*/
- public function render(){
+ public function render() {
// \OCP\Template needs an empty string instead of 'blank' for an unwrapped response
$renderAs = $this->renderAs === 'blank' ? '' : $this->renderAs;
$template = new \OCP\Template($this->appName, $this->templateName, $renderAs);
- foreach($this->params as $key => $value){
+ foreach ($this->params as $key => $value) {
$template->assign($key, $value);
}
return $template->fetchPage($this->params);
}
-
}
diff --git a/lib/public/AppFramework/IAppContainer.php b/lib/public/AppFramework/IAppContainer.php
index 68c30634fb2..b749c9fd7a6 100644
--- a/lib/public/AppFramework/IAppContainer.php
+++ b/lib/public/AppFramework/IAppContainer.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -62,5 +63,5 @@ interface IAppContainer extends IContainer {
* @param string $serviceName e.g. 'OCA\Files\Capabilities'
* @since 8.2.0
*/
- public function registerCapability($serviceName);
+ public function registerCapability($serviceName);
}
diff --git a/lib/public/AppFramework/Middleware.php b/lib/public/AppFramework/Middleware.php
index 5df8a919efe..d737c5e37fd 100644
--- a/lib/public/AppFramework/Middleware.php
+++ b/lib/public/AppFramework/Middleware.php
@@ -2,7 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
- * @author Lukas Reschke <lukas@statuscode.ch>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Stefan Weil <sw@weilnetz.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -52,8 +52,7 @@ abstract class Middleware {
* the controller
* @since 6.0.0
*/
- public function beforeController($controller, $methodName){
-
+ public function beforeController($controller, $methodName) {
}
@@ -72,7 +71,7 @@ abstract class Middleware {
* @return Response a Response object in case that the exception was handled
* @since 6.0.0
*/
- public function afterException($controller, $methodName, \Exception $exception){
+ public function afterException($controller, $methodName, \Exception $exception) {
throw $exception;
}
@@ -88,7 +87,7 @@ abstract class Middleware {
* @return Response a Response object
* @since 6.0.0
*/
- public function afterController($controller, $methodName, Response $response){
+ public function afterController($controller, $methodName, Response $response) {
return $response;
}
@@ -104,8 +103,7 @@ abstract class Middleware {
* @return string the output that should be printed
* @since 6.0.0
*/
- public function beforeOutput($controller, $methodName, $output){
+ public function beforeOutput($controller, $methodName, $output) {
return $output;
}
-
}
diff --git a/lib/public/AppFramework/OCS/OCSBadRequestException.php b/lib/public/AppFramework/OCS/OCSBadRequestException.php
index eeea8ebaf47..d7d7c6e0439 100644
--- a/lib/public/AppFramework/OCS/OCSBadRequestException.php
+++ b/lib/public/AppFramework/OCS/OCSBadRequestException.php
@@ -43,5 +43,4 @@ class OCSBadRequestException extends OCSException {
public function __construct($message = '', Exception $previous = null) {
parent::__construct($message, Http::STATUS_BAD_REQUEST, $previous);
}
-
}
diff --git a/lib/public/AppFramework/OCS/OCSException.php b/lib/public/AppFramework/OCS/OCSException.php
index 6f776595fc2..ef06ded0c08 100644
--- a/lib/public/AppFramework/OCS/OCSException.php
+++ b/lib/public/AppFramework/OCS/OCSException.php
@@ -2,6 +2,7 @@
/**
*
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @license GNU AGPL version 3 or any later version
@@ -31,4 +32,5 @@ use Exception;
* @package OCP\AppFramework
* @since 9.1.0
*/
-class OCSException extends Exception {}
+class OCSException extends Exception {
+}
diff --git a/lib/public/AppFramework/OCSController.php b/lib/public/AppFramework/OCSController.php
index 4a3fa882577..febcc08ba81 100644
--- a/lib/public/AppFramework/OCSController.php
+++ b/lib/public/AppFramework/OCSController.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Donquixote <marjunebatac@gmail.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -63,7 +64,7 @@ abstract class OCSController extends ApiController {
IRequest $request,
$corsMethods='PUT, POST, GET, DELETE, PATCH',
$corsAllowedHeaders='Authorization, Content-Type, Accept',
- $corsMaxAge=1728000){
+ $corsMaxAge=1728000) {
parent::__construct($appName, $request, $corsMethods,
$corsAllowedHeaders, $corsMaxAge);
$this->registerResponder('json', function ($data) {
@@ -110,5 +111,4 @@ abstract class OCSController extends ApiController {
}
return new \OC\AppFramework\OCS\V2Response($data, $format);
}
-
}
diff --git a/lib/public/AppFramework/PublicShareController.php b/lib/public/AppFramework/PublicShareController.php
index d7857073619..4548f885133 100644
--- a/lib/public/AppFramework/PublicShareController.php
+++ b/lib/public/AppFramework/PublicShareController.php
@@ -133,6 +133,5 @@ abstract class PublicShareController extends Controller {
* @since 14.0.0
*/
public function shareNotFound() {
-
}
}
diff --git a/lib/public/AppFramework/QueryException.php b/lib/public/AppFramework/QueryException.php
index b76a4914d90..1bb03b8f217 100644
--- a/lib/public/AppFramework/QueryException.php
+++ b/lib/public/AppFramework/QueryException.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @license AGPL-3.0
@@ -31,4 +32,5 @@ use Exception;
* @package OCP\AppFramework
* @since 8.1.0
*/
-class QueryException extends Exception {}
+class QueryException extends Exception {
+}
diff --git a/lib/public/AppFramework/Services/IAppConfig.php b/lib/public/AppFramework/Services/IAppConfig.php
new file mode 100644
index 00000000000..84c9b6466b8
--- /dev/null
+++ b/lib/public/AppFramework/Services/IAppConfig.php
@@ -0,0 +1,111 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2020, 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 OCP\AppFramework\Services;
+
+/**
+ * Wrapper for AppConfig for the AppFramework
+ *
+ * @since 20.0.0
+ */
+interface IAppConfig {
+ /**
+ * Get all keys stored for this app
+ *
+ * @return string[] the keys stored for the app
+ * @since 20.0.0
+ */
+ public function getAppKeys(): array ;
+
+ /**
+ * Writes a new app wide value
+ *
+ * @param string $key the key of the value, under which will be saved
+ * @param string $value the value that should be stored
+ * @return void
+ * @since 20.0.0
+ */
+ public function setAppValue(string $key, string $value): void;
+
+ /**
+ * Looks up an app wide defined value
+ *
+ * @param string $key the key of the value, under which it was saved
+ * @param string $default the default value to be returned if the value isn't set
+ * @return string the saved value
+ * @since 20.0.0
+ */
+ public function getAppValue(string $key, string $default = ''): string;
+
+ /**
+ * Delete an app wide defined value
+ *
+ * @param string $key the key of the value, under which it was saved
+ * @return void
+ * @since 20.0.0
+ */
+ public function deleteAppValue(string $key): void;
+
+ /**
+ * Removes all keys in appconfig belonging to the app
+ *
+ * @return void
+ * @since 20.0.0
+ */
+ public function deleteAppValues(): void;
+
+ /**
+ * Set a user defined value
+ *
+ * @param string $userId the userId of the user that we want to store the value under
+ * @param string $key the key under which the value is being stored
+ * @param string $value the value that you want to store
+ * @param string $preCondition only update if the config value was previously the value passed as $preCondition
+ * @throws \OCP\PreConditionNotMetException if a precondition is specified and is not met
+ * @throws \UnexpectedValueException when trying to store an unexpected value
+ * @since 20.0.0
+ */
+ public function setUserValue(string $userId, string $key, string $value, ?string $preCondition = null): void;
+
+ /**
+ * Shortcut for getting a user defined value
+ *
+ * @param string $userId the userId of the user that we want to store the value under
+ * @param string $key the key under which the value is being stored
+ * @param mixed $default the default value to be returned if the value isn't set
+ * @return string
+ * @since 20.0.0
+ */
+ public function getUserValue(string $userId, string $key, string $default = ''): string;
+
+ /**
+ * Delete a user value
+ *
+ * @param string $userId the userId of the user that we want to store the value under
+ * @param string $key the key under which the value is being stored
+ * @since 20.0.0
+ */
+ public function deleteUserValue(string $userId, string $key): void;
+}
diff --git a/lib/public/AppFramework/Services/IInitialState.php b/lib/public/AppFramework/Services/IInitialState.php
new file mode 100644
index 00000000000..91f7ec83d9b
--- /dev/null
+++ b/lib/public/AppFramework/Services/IInitialState.php
@@ -0,0 +1,58 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2020, 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 OCP\AppFramework\Services;
+
+/**
+ * @since 20.0.0
+ */
+interface IInitialState {
+
+ /**
+ * Allows an app to provide its initial state to the template system.
+ * Use this if you know your initial state sill be used for example if
+ * you are in the render function of you controller.
+ *
+ * @since 20.0.0
+ *
+ * @param string $key
+ * @param bool|int|float|string|array|\JsonSerializable $data
+ */
+ public function provideInitialState(string $key, $data): void;
+
+ /**
+ * Allows an app to provide its initial state via a lazy method.
+ * This will call the closure when the template is being generated.
+ * Use this if your app is injected into pages. Since then the render method
+ * is not called explicitly. But we do not want to load the state on webdav
+ * requests for example.
+ *
+ * @since 20.0.0
+ *
+ * @param string $key
+ * @param Closure $closure returns a primitive or an object that implements JsonSerializable
+ */
+ public function provideLazyInitialState(string $key, \Closure $closure): void;
+}
diff --git a/lib/public/AppFramework/Utility/IControllerMethodReflector.php b/lib/public/AppFramework/Utility/IControllerMethodReflector.php
index 0f82f0306c2..cac61960bef 100644
--- a/lib/public/AppFramework/Utility/IControllerMethodReflector.php
+++ b/lib/public/AppFramework/Utility/IControllerMethodReflector.php
@@ -72,5 +72,4 @@ interface IControllerMethodReflector {
* @since 8.0.0
*/
public function hasAnnotation(string $name): bool;
-
}
diff --git a/lib/public/AppFramework/Utility/ITimeFactory.php b/lib/public/AppFramework/Utility/ITimeFactory.php
index 08266ec775d..ce09f10160f 100644
--- a/lib/public/AppFramework/Utility/ITimeFactory.php
+++ b/lib/public/AppFramework/Utility/ITimeFactory.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
namespace OCP\AppFramework\Utility;
-
/**
* Needed to mock calls to time()
* @since 8.0.0
@@ -47,5 +46,4 @@ interface ITimeFactory {
* @since 15.0.0
*/
public function getDateTime(string $time = 'now', \DateTimeZone $timezone = null): \DateTime;
-
}
diff --git a/lib/public/Authentication/Events/LoginFailedEvent.php b/lib/public/Authentication/Events/LoginFailedEvent.php
new file mode 100644
index 00000000000..b946ba0c664
--- /dev/null
+++ b/lib/public/Authentication/Events/LoginFailedEvent.php
@@ -0,0 +1,60 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2020, 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 OCP\Authentication\Events;
+
+use OCP\EventDispatcher\Event;
+
+/**
+ * Class LoginFailedEvent
+ *
+ * @package OCP\Authentication\Events
+ *
+ * @since 19.0.0
+ */
+class LoginFailedEvent extends Event {
+
+ /** @var string */
+ private $uid;
+
+ /**
+ * @since 19.0.0
+ */
+ public function __construct(string $uid) {
+ parent::__construct();
+
+ $this->uid = $uid;
+ }
+
+ /**
+ * returns the uid of the user that was tried to login against
+ *
+ * @since 19.0.0
+ */
+ public function getUid(): string {
+ return $this->uid;
+ }
+}
diff --git a/lib/public/Authentication/Exceptions/CredentialsUnavailableException.php b/lib/public/Authentication/Exceptions/CredentialsUnavailableException.php
index d5684ade0cd..d2a7d505767 100644
--- a/lib/public/Authentication/Exceptions/CredentialsUnavailableException.php
+++ b/lib/public/Authentication/Exceptions/CredentialsUnavailableException.php
@@ -29,5 +29,4 @@ use Exception;
* @since 12
*/
class CredentialsUnavailableException extends Exception {
-
}
diff --git a/lib/public/Authentication/Exceptions/PasswordUnavailableException.php b/lib/public/Authentication/Exceptions/PasswordUnavailableException.php
index 935a626e91a..6b826966c87 100644
--- a/lib/public/Authentication/Exceptions/PasswordUnavailableException.php
+++ b/lib/public/Authentication/Exceptions/PasswordUnavailableException.php
@@ -29,5 +29,4 @@ use Exception;
* @since 12
*/
class PasswordUnavailableException extends Exception {
-
}
diff --git a/lib/public/Authentication/IApacheBackend.php b/lib/public/Authentication/IApacheBackend.php
index 946d4f06625..83b59b789c2 100644
--- a/lib/public/Authentication/IApacheBackend.php
+++ b/lib/public/Authentication/IApacheBackend.php
@@ -63,5 +63,4 @@ interface IApacheBackend {
* @since 6.0.0
*/
public function getCurrentUserId();
-
}
diff --git a/lib/public/Authentication/LoginCredentials/IStore.php b/lib/public/Authentication/LoginCredentials/IStore.php
index 7fb645862cf..22562103a72 100644
--- a/lib/public/Authentication/LoginCredentials/IStore.php
+++ b/lib/public/Authentication/LoginCredentials/IStore.php
@@ -42,5 +42,4 @@ interface IStore {
* @return ICredentials the login credentials of the current user
*/
public function getLoginCredentials(): ICredentials;
-
}
diff --git a/lib/public/Authentication/TwoFactorAuth/ALoginSetupController.php b/lib/public/Authentication/TwoFactorAuth/ALoginSetupController.php
index eaf72e0be78..d71150b3451 100644
--- a/lib/public/Authentication/TwoFactorAuth/ALoginSetupController.php
+++ b/lib/public/Authentication/TwoFactorAuth/ALoginSetupController.php
@@ -32,5 +32,4 @@ use OCP\AppFramework\Controller;
* @since 17.0.0
*/
abstract class ALoginSetupController extends Controller {
-
}
diff --git a/lib/public/Authentication/TwoFactorAuth/IActivatableAtLogin.php b/lib/public/Authentication/TwoFactorAuth/IActivatableAtLogin.php
index f2d70df487a..f1f67f3a4dc 100644
--- a/lib/public/Authentication/TwoFactorAuth/IActivatableAtLogin.php
+++ b/lib/public/Authentication/TwoFactorAuth/IActivatableAtLogin.php
@@ -41,5 +41,4 @@ interface IActivatableAtLogin extends IProvider {
* @since 17.0.0
*/
public function getLoginSetup(IUser $user): ILoginSetupProvider;
-
}
diff --git a/lib/public/Authentication/TwoFactorAuth/IActivatableByAdmin.php b/lib/public/Authentication/TwoFactorAuth/IActivatableByAdmin.php
index d48c407ca1b..98160d94647 100644
--- a/lib/public/Authentication/TwoFactorAuth/IActivatableByAdmin.php
+++ b/lib/public/Authentication/TwoFactorAuth/IActivatableByAdmin.php
@@ -47,5 +47,4 @@ interface IActivatableByAdmin extends IProvider {
* @since 15.0.0
*/
public function enableFor(IUser $user);
-
}
diff --git a/lib/public/Authentication/TwoFactorAuth/IDeactivatableByAdmin.php b/lib/public/Authentication/TwoFactorAuth/IDeactivatableByAdmin.php
index d85480b898f..0f8b527e34a 100644
--- a/lib/public/Authentication/TwoFactorAuth/IDeactivatableByAdmin.php
+++ b/lib/public/Authentication/TwoFactorAuth/IDeactivatableByAdmin.php
@@ -47,5 +47,4 @@ interface IDeactivatableByAdmin extends IProvider {
* @since 15.0.0
*/
public function disableFor(IUser $user);
-
}
diff --git a/lib/public/Authentication/TwoFactorAuth/ILoginSetupProvider.php b/lib/public/Authentication/TwoFactorAuth/ILoginSetupProvider.php
index 9cc3a7314cd..7165588566a 100644
--- a/lib/public/Authentication/TwoFactorAuth/ILoginSetupProvider.php
+++ b/lib/public/Authentication/TwoFactorAuth/ILoginSetupProvider.php
@@ -39,5 +39,4 @@ interface ILoginSetupProvider {
* @since 17.0.0
*/
public function getBody(): Template;
-
}
diff --git a/lib/public/Authentication/TwoFactorAuth/IPersonalProviderSettings.php b/lib/public/Authentication/TwoFactorAuth/IPersonalProviderSettings.php
index fe0bab8d64a..5178792b3ae 100644
--- a/lib/public/Authentication/TwoFactorAuth/IPersonalProviderSettings.php
+++ b/lib/public/Authentication/TwoFactorAuth/IPersonalProviderSettings.php
@@ -41,5 +41,4 @@ interface IPersonalProviderSettings {
* @since 15.0.0
*/
public function getBody(): Template;
-
}
diff --git a/lib/public/Authentication/TwoFactorAuth/IProvider.php b/lib/public/Authentication/TwoFactorAuth/IProvider.php
index 4de49340b7d..d2f5df2e3eb 100644
--- a/lib/public/Authentication/TwoFactorAuth/IProvider.php
+++ b/lib/public/Authentication/TwoFactorAuth/IProvider.php
@@ -37,8 +37,8 @@ interface IProvider {
/**
* @since 14.0.0
*/
- const EVENT_SUCCESS = self::class . '::success';
- const EVENT_FAILED = self::class . '::failed';
+ public const EVENT_SUCCESS = self::class . '::success';
+ public const EVENT_FAILED = self::class . '::failed';
/**
* Get unique identifier of this 2FA provider
diff --git a/lib/public/Authentication/TwoFactorAuth/IProvidesIcons.php b/lib/public/Authentication/TwoFactorAuth/IProvidesIcons.php
index 255f63cf0df..60315dc8030 100644
--- a/lib/public/Authentication/TwoFactorAuth/IProvidesIcons.php
+++ b/lib/public/Authentication/TwoFactorAuth/IProvidesIcons.php
@@ -51,5 +51,4 @@ interface IProvidesIcons extends IProvider {
* @since 15.0.0
*/
public function getDarkIcon(): String;
-
}
diff --git a/lib/public/Authentication/TwoFactorAuth/IProvidesPersonalSettings.php b/lib/public/Authentication/TwoFactorAuth/IProvidesPersonalSettings.php
index 7c1edd2163d..3668e60cd50 100644
--- a/lib/public/Authentication/TwoFactorAuth/IProvidesPersonalSettings.php
+++ b/lib/public/Authentication/TwoFactorAuth/IProvidesPersonalSettings.php
@@ -45,5 +45,4 @@ interface IProvidesPersonalSettings extends IProvider {
* @since 15.0.0
*/
public function getPersonalSettings(IUser $user): IPersonalProviderSettings;
-
}
diff --git a/lib/public/Authentication/TwoFactorAuth/IRegistry.php b/lib/public/Authentication/TwoFactorAuth/IRegistry.php
index 9c10e86b5f8..c98feee2545 100644
--- a/lib/public/Authentication/TwoFactorAuth/IRegistry.php
+++ b/lib/public/Authentication/TwoFactorAuth/IRegistry.php
@@ -31,7 +31,7 @@ use OCP\IUser;
/**
* Nextcloud 2FA provider registry for stateful 2FA providers
- *
+ *
* This service keeps track of which providers are currently active for a specific
* user. Stateful 2FA providers (IStatefulProvider) must use this service to save
* their enabled/disabled state.
@@ -39,10 +39,8 @@ use OCP\IUser;
* @since 14.0.0
*/
interface IRegistry {
-
-
- const EVENT_PROVIDER_ENABLED = self::class . '::enable';
- const EVENT_PROVIDER_DISABLED = self::class . '::disable';
+ public const EVENT_PROVIDER_ENABLED = self::class . '::enable';
+ public const EVENT_PROVIDER_DISABLED = self::class . '::disable';
/**
* Get a key-value map of providers and their enabled/disabled state for
@@ -81,5 +79,4 @@ interface IRegistry {
* @return void
*/
public function cleanUp(string $providerId);
-
}
diff --git a/lib/public/Authentication/TwoFactorAuth/TwoFactorException.php b/lib/public/Authentication/TwoFactorAuth/TwoFactorException.php
index f4735e9eb16..95ec88de99a 100644
--- a/lib/public/Authentication/TwoFactorAuth/TwoFactorException.php
+++ b/lib/public/Authentication/TwoFactorAuth/TwoFactorException.php
@@ -38,5 +38,4 @@ use Exception;
* @since 12
*/
class TwoFactorException extends Exception {
-
}
diff --git a/lib/public/BackgroundJob/IJob.php b/lib/public/BackgroundJob/IJob.php
index 719d0ea013a..985b5e973b6 100644
--- a/lib/public/BackgroundJob/IJob.php
+++ b/lib/public/BackgroundJob/IJob.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -24,6 +25,7 @@
*/
namespace OCP\BackgroundJob;
+
use OCP\ILogger;
/**
diff --git a/lib/public/BackgroundJob/Job.php b/lib/public/BackgroundJob/Job.php
index b5b920338df..5049e3e2056 100644
--- a/lib/public/BackgroundJob/Job.php
+++ b/lib/public/BackgroundJob/Job.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2018, Roeland Jago Douma <roeland@famdouma.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @license GNU AGPL version 3 or any later version
@@ -60,7 +61,7 @@ abstract class Job implements IJob {
/**
* The function to prepare the execution of the job.
-
+ *
*
* @param IJobList $jobList
* @param ILogger|null $logger
diff --git a/lib/public/Broadcast/Events/IBroadcastEvent.php b/lib/public/Broadcast/Events/IBroadcastEvent.php
index bed371e1247..95d52c5af8b 100644
--- a/lib/public/Broadcast/Events/IBroadcastEvent.php
+++ b/lib/public/Broadcast/Events/IBroadcastEvent.php
@@ -55,5 +55,4 @@ interface IBroadcastEvent {
* @since 18.0.0
*/
public function setBroadcasted(): void;
-
}
diff --git a/lib/public/Calendar/BackendTemporarilyUnavailableException.php b/lib/public/Calendar/BackendTemporarilyUnavailableException.php
index b564c80153b..d0a7f6615e5 100644
--- a/lib/public/Calendar/BackendTemporarilyUnavailableException.php
+++ b/lib/public/Calendar/BackendTemporarilyUnavailableException.php
@@ -2,6 +2,7 @@
/**
* @copyright 2018, Georg Ehrke <oc.list@georgehrke.com>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Georg Ehrke <oc.list@georgehrke.com>
*
* @license GNU AGPL version 3 or any later version
@@ -29,4 +30,5 @@ namespace OCP\Calendar;
* @package OCP\Calendar
* @since 14.0.0
*/
-class BackendTemporarilyUnavailableException extends \Exception {}
+class BackendTemporarilyUnavailableException extends \Exception {
+}
diff --git a/lib/public/Calendar/Resource/IBackend.php b/lib/public/Calendar/Resource/IBackend.php
index 416643919ec..9c15b3789b1 100644
--- a/lib/public/Calendar/Resource/IBackend.php
+++ b/lib/public/Calendar/Resource/IBackend.php
@@ -2,6 +2,7 @@
/**
* @copyright 2018, Georg Ehrke <oc.list@georgehrke.com>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Georg Ehrke <oc.list@georgehrke.com>
*
* @license GNU AGPL version 3 or any later version
@@ -22,6 +23,7 @@
*/
namespace OCP\Calendar\Resource;
+
use OCP\Calendar\BackendTemporarilyUnavailableException;
/**
diff --git a/lib/public/Calendar/Room/IBackend.php b/lib/public/Calendar/Room/IBackend.php
index 00f8b64a41e..d306dc89d86 100644
--- a/lib/public/Calendar/Room/IBackend.php
+++ b/lib/public/Calendar/Room/IBackend.php
@@ -2,6 +2,7 @@
/**
* @copyright 2018, Georg Ehrke <oc.list@georgehrke.com>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Georg Ehrke <oc.list@georgehrke.com>
*
* @license GNU AGPL version 3 or any later version
@@ -22,6 +23,7 @@
*/
namespace OCP\Calendar\Room;
+
use OCP\Calendar\BackendTemporarilyUnavailableException;
/**
diff --git a/lib/public/Capabilities/IPublicCapability.php b/lib/public/Capabilities/IPublicCapability.php
index b0f4b1efc46..0dcb45d0198 100644
--- a/lib/public/Capabilities/IPublicCapability.php
+++ b/lib/public/Capabilities/IPublicCapability.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2017 Julius Härtl <jus@bitgrid.net>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
@@ -28,4 +29,5 @@ namespace OCP\Capabilities;
*
* @since 13.0.0
*/
-interface IPublicCapability extends ICapability {}
+interface IPublicCapability extends ICapability {
+}
diff --git a/lib/public/Collaboration/AutoComplete/AutoCompleteEvent.php b/lib/public/Collaboration/AutoComplete/AutoCompleteEvent.php
index cd711ea20b2..776bd46d407 100644
--- a/lib/public/Collaboration/AutoComplete/AutoCompleteEvent.php
+++ b/lib/public/Collaboration/AutoComplete/AutoCompleteEvent.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OCP\Collaboration\AutoComplete;
-
use Symfony\Component\EventDispatcher\GenericEvent;
/**
@@ -99,5 +98,4 @@ class AutoCompleteEvent extends GenericEvent {
public function getLimit(): int {
return $this->getArgument('limit');
}
-
}
diff --git a/lib/public/Collaboration/Collaborators/SearchResultType.php b/lib/public/Collaboration/Collaborators/SearchResultType.php
index 3774640cebc..538d3070821 100644
--- a/lib/public/Collaboration/Collaborators/SearchResultType.php
+++ b/lib/public/Collaboration/Collaborators/SearchResultType.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @license GNU AGPL version 3 or any later version
@@ -61,11 +62,11 @@ class SearchResultType {
protected function getValidatedType($type) {
$type = trim((string)$type);
- if($type === '') {
+ if ($type === '') {
throw new \InvalidArgumentException('Type must not be empty');
}
- if($type === 'exact') {
+ if ($type === 'exact') {
throw new \InvalidArgumentException('Provided type is a reserved word');
}
diff --git a/lib/public/Collaboration/Resources/CollectionException.php b/lib/public/Collaboration/Resources/CollectionException.php
index a1f7cd0836a..a7f05cdc939 100644
--- a/lib/public/Collaboration/Resources/CollectionException.php
+++ b/lib/public/Collaboration/Resources/CollectionException.php
@@ -30,5 +30,4 @@ namespace OCP\Collaboration\Resources;
* @since 16.0.0
*/
class CollectionException extends \RuntimeException {
-
}
diff --git a/lib/public/Collaboration/Resources/IProvider.php b/lib/public/Collaboration/Resources/IProvider.php
index 9bd5a8b9761..28bb06d2b85 100644
--- a/lib/public/Collaboration/Resources/IProvider.php
+++ b/lib/public/Collaboration/Resources/IProvider.php
@@ -60,5 +60,4 @@ interface IProvider {
* @since 16.0.0
*/
public function canAccessResource(IResource $resource, ?IUser $user): bool;
-
}
diff --git a/lib/public/Collaboration/Resources/ResourceException.php b/lib/public/Collaboration/Resources/ResourceException.php
index 81bace8f085..562207f8e7b 100644
--- a/lib/public/Collaboration/Resources/ResourceException.php
+++ b/lib/public/Collaboration/Resources/ResourceException.php
@@ -26,10 +26,8 @@ declare(strict_types=1);
namespace OCP\Collaboration\Resources;
-
/**
* @since 16.0.0
*/
class ResourceException extends \RuntimeException {
-
}
diff --git a/lib/public/Comments/CommentsEntityEvent.php b/lib/public/Comments/CommentsEntityEvent.php
index 2bcc44f8b16..27021fd6e3d 100644
--- a/lib/public/Comments/CommentsEntityEvent.php
+++ b/lib/public/Comments/CommentsEntityEvent.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
*
* @license AGPL-3.0
@@ -32,8 +33,7 @@ use OCP\EventDispatcher\Event;
* @since 9.1.0
*/
class CommentsEntityEvent extends Event {
-
- const EVENT_ENTITY = 'OCP\Comments\ICommentsManager::registerEntity';
+ public const EVENT_ENTITY = 'OCP\Comments\ICommentsManager::registerEntity';
/** @var string */
protected $event;
diff --git a/lib/public/Comments/CommentsEvent.php b/lib/public/Comments/CommentsEvent.php
index 3e12c03542a..94ef2892f38 100644
--- a/lib/public/Comments/CommentsEvent.php
+++ b/lib/public/Comments/CommentsEvent.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
*
* @license AGPL-3.0
@@ -32,11 +33,10 @@ use OCP\EventDispatcher\Event;
* @since 9.0.0
*/
class CommentsEvent extends Event {
-
- const EVENT_ADD = 'OCP\Comments\ICommentsManager::addComment';
- const EVENT_PRE_UPDATE = 'OCP\Comments\ICommentsManager::preUpdateComment';
- const EVENT_UPDATE = 'OCP\Comments\ICommentsManager::updateComment';
- const EVENT_DELETE = 'OCP\Comments\ICommentsManager::deleteComment';
+ public const EVENT_ADD = 'OCP\Comments\ICommentsManager::addComment';
+ public const EVENT_PRE_UPDATE = 'OCP\Comments\ICommentsManager::preUpdateComment';
+ public const EVENT_UPDATE = 'OCP\Comments\ICommentsManager::updateComment';
+ public const EVENT_DELETE = 'OCP\Comments\ICommentsManager::deleteComment';
/** @var string */
protected $event;
diff --git a/lib/public/Comments/IComment.php b/lib/public/Comments/IComment.php
index aac68a4036b..8a31715918e 100644
--- a/lib/public/Comments/IComment.php
+++ b/lib/public/Comments/IComment.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -34,7 +35,7 @@ namespace OCP\Comments;
* @since 9.0.0
*/
interface IComment {
- const MAX_MESSAGE_LENGTH = 1000;
+ public const MAX_MESSAGE_LENGTH = 1000;
/**
* returns the ID of the comment
@@ -263,4 +264,20 @@ interface IComment {
*/
public function setObject($objectType, $objectId);
+ /**
+ * returns the reference id of the comment
+ *
+ * @return string|null
+ * @since 19.0.0
+ */
+ public function getReferenceId(): ?string;
+
+ /**
+ * sets (overwrites) the reference id of the comment
+ *
+ * @param string|null $referenceId e.g. sha256 hash sum
+ * @return IComment
+ * @since 19.0.0
+ */
+ public function setReferenceId(?string $referenceId): IComment;
}
diff --git a/lib/public/Comments/ICommentsManager.php b/lib/public/Comments/ICommentsManager.php
index 7c19b36e59a..98387f2025a 100644
--- a/lib/public/Comments/ICommentsManager.php
+++ b/lib/public/Comments/ICommentsManager.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Robin Appelman <robin@icewind.nl>
@@ -48,7 +49,7 @@ interface ICommentsManager {
*
* User interfaces shall show "Deleted user" as display name, if needed.
*/
- const DELETED_USER = 'deleted_users';
+ public const DELETED_USER = 'deleted_users';
/**
* returns a comment instance
@@ -322,5 +323,4 @@ interface ICommentsManager {
* provided ID is unknown. It must be ensured that a string is returned.
*/
public function resolveDisplayName($type, $id);
-
}
diff --git a/lib/public/Comments/IllegalIDChangeException.php b/lib/public/Comments/IllegalIDChangeException.php
index 5f8428a0f85..f20120bd207 100644
--- a/lib/public/Comments/IllegalIDChangeException.php
+++ b/lib/public/Comments/IllegalIDChangeException.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
@@ -28,4 +29,5 @@ namespace OCP\Comments;
* Exception for illegal attempts to modify a comment ID
* @since 9.0.0
*/
-class IllegalIDChangeException extends \Exception {}
+class IllegalIDChangeException extends \Exception {
+}
diff --git a/lib/public/Comments/MessageTooLongException.php b/lib/public/Comments/MessageTooLongException.php
index 5b0bd96e468..b6152291755 100644
--- a/lib/public/Comments/MessageTooLongException.php
+++ b/lib/public/Comments/MessageTooLongException.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @license AGPL-3.0
@@ -27,4 +28,5 @@ namespace OCP\Comments;
* Exception thrown when a comment message exceeds the allowed character limit
* @since 9.0.0
*/
-class MessageTooLongException extends \OverflowException {}
+class MessageTooLongException extends \OverflowException {
+}
diff --git a/lib/public/Comments/NotFoundException.php b/lib/public/Comments/NotFoundException.php
index 7a06447eb21..9e86b7ff27f 100644
--- a/lib/public/Comments/NotFoundException.php
+++ b/lib/public/Comments/NotFoundException.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
@@ -28,4 +29,5 @@ namespace OCP\Comments;
* Exception for not found entity
* @since 9.0.0
*/
-class NotFoundException extends \Exception {}
+class NotFoundException extends \Exception {
+}
diff --git a/lib/public/Console/ConsoleEvent.php b/lib/public/Console/ConsoleEvent.php
index 457ead95ca7..051bf4c778f 100644
--- a/lib/public/Console/ConsoleEvent.php
+++ b/lib/public/Console/ConsoleEvent.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
*
* @license AGPL-3.0
@@ -32,8 +33,7 @@ use OCP\EventDispatcher\Event;
* @since 9.0.0
*/
class ConsoleEvent extends Event {
-
- const EVENT_RUN = 'OC\Console\Application::run';
+ public const EVENT_RUN = 'OC\Console\Application::run';
/** @var string */
protected $event;
diff --git a/lib/public/Constants.php b/lib/public/Constants.php
index 7c23745b935..60d46d5b139 100644
--- a/lib/public/Constants.php
+++ b/lib/public/Constants.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -40,16 +41,16 @@ class Constants {
* CRUDS permissions.
* @since 8.0.0
*/
- const PERMISSION_CREATE = 4;
- const PERMISSION_READ = 1;
- const PERMISSION_UPDATE = 2;
- const PERMISSION_DELETE = 8;
- const PERMISSION_SHARE = 16;
- const PERMISSION_ALL = 31;
+ public const PERMISSION_CREATE = 4;
+ public const PERMISSION_READ = 1;
+ public const PERMISSION_UPDATE = 2;
+ public const PERMISSION_DELETE = 8;
+ public const PERMISSION_SHARE = 16;
+ public const PERMISSION_ALL = 31;
/**
* @since 8.0.0 - Updated in 9.0.0 to allow all POSIX chars since we no
* longer support windows as server platform.
*/
- const FILENAME_INVALID_CHARS = "\\/";
+ public const FILENAME_INVALID_CHARS = "\\/";
}
diff --git a/lib/public/Contacts/ContactsMenu/IContactsStore.php b/lib/public/Contacts/ContactsMenu/IContactsStore.php
index 76d0f76a933..c64b95fb85d 100644
--- a/lib/public/Contacts/ContactsMenu/IContactsStore.php
+++ b/lib/public/Contacts/ContactsMenu/IContactsStore.php
@@ -48,5 +48,4 @@ interface IContactsStore {
* @since 13.0.0
*/
public function findOne(IUser $user, $shareType, $shareWith);
-
}
diff --git a/lib/public/Contacts/Events/ContactInteractedWithEvent.php b/lib/public/Contacts/Events/ContactInteractedWithEvent.php
new file mode 100644
index 00000000000..1888b7606bf
--- /dev/null
+++ b/lib/public/Contacts/Events/ContactInteractedWithEvent.php
@@ -0,0 +1,136 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @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\Contacts\Events;
+
+use OCP\EventDispatcher\Event;
+use OCP\IUser;
+
+/**
+ * An event that allows apps to notify other components about an interaction
+ * between two users. This can be used to build better recommendations and
+ * suggestions in user interfaces.
+ *
+ * Emitters should add at least one identifier (uid, email, federated cloud ID)
+ * of the recipient of the interaction.
+ *
+ * @since 19.0.0
+ */
+class ContactInteractedWithEvent extends Event {
+
+ /** @var IUser */
+ private $actor;
+
+ /** @var string|null */
+ private $uid;
+
+ /** @var string|null */
+ private $email;
+
+ /** @var string|null */
+ private $federatedCloudId;
+
+ /**
+ * @param IUser $actor the user who started the interaction
+ *
+ * @since 19.0.0
+ */
+ public function __construct(IUser $actor) {
+ parent::__construct();
+ $this->actor = $actor;
+ }
+
+ /**
+ * @return IUser
+ * @since 19.0.0
+ */
+ public function getActor(): IUser {
+ return $this->actor;
+ }
+
+ /**
+ * @return string|null
+ * @since 19.0.0
+ */
+ public function getUid(): ?string {
+ return $this->uid;
+ }
+
+ /**
+ * Set the uid of the person interacted with, if known
+ *
+ * @param string $uid
+ *
+ * @return self
+ * @since 19.0.0
+ */
+ public function setUid(string $uid): self {
+ $this->uid = $uid;
+ return $this;
+ }
+
+ /**
+ * @return string|null
+ * @since 19.0.0
+ */
+ public function getEmail(): ?string {
+ return $this->email;
+ }
+
+ /**
+ * Set the email of the person interacted with, if known
+ *
+ * @param string $email
+ *
+ * @return self
+ * @since 19.0.0
+ */
+ public function setEmail(string $email): self {
+ $this->email = $email;
+ return $this;
+ }
+
+ /**
+ * @return string|null
+ * @since 19.0.0
+ */
+ public function getFederatedCloudId(): ?string {
+ return $this->federatedCloudId;
+ }
+
+ /**
+ * Set the federated cloud of the person interacted with, if known
+ *
+ * @param string $federatedCloudId
+ *
+ * @return self
+ * @since 19.0.0
+ */
+ public function setFederatedCloudId(string $federatedCloudId): self {
+ $this->federatedCloudId = $federatedCloudId;
+ return $this;
+ }
+}
diff --git a/lib/public/Contacts/IManager.php b/lib/public/Contacts/IManager.php
index 9dd19c4cbf4..1fc9c060127 100644
--- a/lib/public/Contacts/IManager.php
+++ b/lib/public/Contacts/IManager.php
@@ -3,7 +3,9 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arne Hamann <kontakt+github@arne.email>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ * @author Julius Härtl <jus@bitgrid.net>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -95,10 +97,12 @@ interface IManager {
* @param array $searchProperties defines the properties within the query pattern should match
* @param array $options = array() to define the search behavior
* - 'escape_like_param' - If set to false wildcards _ and % are not escaped
+ * - 'limit' - Set a numeric limit for the search results
+ * - 'offset' - Set the offset for the limited search results
* @return array an array of contacts which are arrays of key-value-pairs
* @since 6.0.0
*/
- public function search($pattern, $searchProperties = array(), $options = array());
+ public function search($pattern, $searchProperties = [], $options = []);
/**
* This function can be used to delete the contact identified by the given id
@@ -159,7 +163,7 @@ interface IManager {
/**
* Return a list of the user's addressbooks display names
- *
+ *
* @return array
* @since 6.0.0
* @deprecated 16.0.0 - Use `$this->getUserAddressBooks()` instead
@@ -168,7 +172,7 @@ interface IManager {
/**
* Return a list of the user's addressbooks
- *
+ *
* @return IAddressBook[]
* @since 16.0.0
*/
@@ -176,7 +180,7 @@ interface IManager {
/**
* removes all registered address book instances
- *
+ *
* @return void
* @since 6.0.0
*/
diff --git a/lib/public/DB/QueryBuilder/ICompositeExpression.php b/lib/public/DB/QueryBuilder/ICompositeExpression.php
index 2b3cb9388ce..905465ba9e0 100644
--- a/lib/public/DB/QueryBuilder/ICompositeExpression.php
+++ b/lib/public/DB/QueryBuilder/ICompositeExpression.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -36,7 +37,7 @@ interface ICompositeExpression {
* @return ICompositeExpression
* @since 8.2.0
*/
- public function addMultiple(array $parts = array());
+ public function addMultiple(array $parts = []);
/**
* Adds an expression to composite expression.
diff --git a/lib/public/DB/QueryBuilder/IExpressionBuilder.php b/lib/public/DB/QueryBuilder/IExpressionBuilder.php
index 1db98ba98f4..e56eba3df00 100644
--- a/lib/public/DB/QueryBuilder/IExpressionBuilder.php
+++ b/lib/public/DB/QueryBuilder/IExpressionBuilder.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -25,7 +26,6 @@
namespace OCP\DB\QueryBuilder;
-
use Doctrine\DBAL\Query\Expression\ExpressionBuilder;
/**
@@ -36,27 +36,27 @@ interface IExpressionBuilder {
/**
* @since 9.0.0
*/
- const EQ = ExpressionBuilder::EQ;
+ public const EQ = ExpressionBuilder::EQ;
/**
* @since 9.0.0
*/
- const NEQ = ExpressionBuilder::NEQ;
+ public const NEQ = ExpressionBuilder::NEQ;
/**
* @since 9.0.0
*/
- const LT = ExpressionBuilder::LT;
+ public const LT = ExpressionBuilder::LT;
/**
* @since 9.0.0
*/
- const LTE = ExpressionBuilder::LTE;
+ public const LTE = ExpressionBuilder::LTE;
/**
* @since 9.0.0
*/
- const GT = ExpressionBuilder::GT;
+ public const GT = ExpressionBuilder::GT;
/**
* @since 9.0.0
*/
- const GTE = ExpressionBuilder::GTE;
+ public const GTE = ExpressionBuilder::GTE;
/**
* Creates a conjunction of the given boolean expressions.
diff --git a/lib/public/DB/QueryBuilder/IQueryBuilder.php b/lib/public/DB/QueryBuilder/IQueryBuilder.php
index 6cef23bfb92..bb0ed6b205c 100644
--- a/lib/public/DB/QueryBuilder/IQueryBuilder.php
+++ b/lib/public/DB/QueryBuilder/IQueryBuilder.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Robin Appelman <robin@icewind.nl>
@@ -25,7 +26,6 @@
namespace OCP\DB\QueryBuilder;
-
use Doctrine\DBAL\Connection;
/**
@@ -37,36 +37,36 @@ interface IQueryBuilder {
/**
* @since 9.0.0
*/
- const PARAM_NULL = \PDO::PARAM_NULL;
+ public const PARAM_NULL = \PDO::PARAM_NULL;
/**
* @since 9.0.0
*/
- const PARAM_BOOL = \PDO::PARAM_BOOL;
+ public const PARAM_BOOL = \PDO::PARAM_BOOL;
/**
* @since 9.0.0
*/
- const PARAM_INT = \PDO::PARAM_INT;
+ public const PARAM_INT = \PDO::PARAM_INT;
/**
* @since 9.0.0
*/
- const PARAM_STR = \PDO::PARAM_STR;
+ public const PARAM_STR = \PDO::PARAM_STR;
/**
* @since 9.0.0
*/
- const PARAM_LOB = \PDO::PARAM_LOB;
+ public const PARAM_LOB = \PDO::PARAM_LOB;
/**
* @since 9.0.0
*/
- const PARAM_DATE = 'datetime';
+ public const PARAM_DATE = 'datetime';
/**
* @since 9.0.0
*/
- const PARAM_INT_ARRAY = Connection::PARAM_INT_ARRAY;
+ public const PARAM_INT_ARRAY = Connection::PARAM_INT_ARRAY;
/**
* @since 9.0.0
*/
- const PARAM_STR_ARRAY = Connection::PARAM_STR_ARRAY;
+ public const PARAM_STR_ARRAY = Connection::PARAM_STR_ARRAY;
/**
@@ -206,7 +206,7 @@ interface IQueryBuilder {
* @return $this This QueryBuilder instance.
* @since 8.2.0
*/
- public function setParameters(array $params, array $types = array());
+ public function setParameters(array $params, array $types = []);
/**
* Gets all defined query parameters for the query being constructed indexed by parameter index or name.
diff --git a/lib/public/Dashboard/IDashboardManager.php b/lib/public/Dashboard/IDashboardManager.php
index 683ead5512e..812338bfb30 100644
--- a/lib/public/Dashboard/IDashboardManager.php
+++ b/lib/public/Dashboard/IDashboardManager.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OCP\Dashboard;
-
use OCP\Dashboard\Exceptions\DashboardAppNotAvailableException;
use OCP\Dashboard\Model\IWidgetConfig;
use OCP\Dashboard\Service\IEventsService;
@@ -128,5 +127,4 @@ interface IDashboardManager {
* @throws DashboardAppNotAvailableException
*/
public function createGlobalEvent(string $widgetId, array $payload, string $uniqueId = '');
-
}
diff --git a/lib/public/Dashboard/IDashboardWidget.php b/lib/public/Dashboard/IDashboardWidget.php
index 8532a8700a1..ef8b9c74d15 100644
--- a/lib/public/Dashboard/IDashboardWidget.php
+++ b/lib/public/Dashboard/IDashboardWidget.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
namespace OCP\Dashboard;
-
use OCP\Dashboard\Model\IWidgetConfig;
use OCP\Dashboard\Model\IWidgetRequest;
use OCP\Dashboard\Model\WidgetSetup;
@@ -139,5 +138,4 @@ interface IDashboardWidget {
* @param IWidgetRequest $request
*/
public function requestWidget(IWidgetRequest $request);
-
}
diff --git a/lib/public/Dashboard/Model/IWidgetConfig.php b/lib/public/Dashboard/Model/IWidgetConfig.php
index 7d3d88f3241..41c9e233177 100644
--- a/lib/public/Dashboard/Model/IWidgetConfig.php
+++ b/lib/public/Dashboard/Model/IWidgetConfig.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OCP\Dashboard\Model;
-
use OCP\Dashboard\IDashboardWidget;
/**
@@ -120,6 +119,4 @@ interface IWidgetConfig {
* @return bool
*/
public function isEnabled(): bool;
-
-
}
diff --git a/lib/public/Dashboard/Model/IWidgetRequest.php b/lib/public/Dashboard/Model/IWidgetRequest.php
index 0a49e34ab30..18ad855006c 100644
--- a/lib/public/Dashboard/Model/IWidgetRequest.php
+++ b/lib/public/Dashboard/Model/IWidgetRequest.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OCP\Dashboard\Model;
-
use OCP\Dashboard\IDashboardWidget;
/**
@@ -128,5 +127,4 @@ interface IWidgetRequest {
* @return $this
*/
public function addResultArray(string $key, array $result): IWidgetRequest;
-
}
diff --git a/lib/public/Dashboard/Model/WidgetSetting.php b/lib/public/Dashboard/Model/WidgetSetting.php
index 29744c56fac..62429607602 100644
--- a/lib/public/Dashboard/Model/WidgetSetting.php
+++ b/lib/public/Dashboard/Model/WidgetSetting.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright 2018, Maxence Lange <maxence@artificial-owl.com>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Maxence Lange <maxence@artificial-owl.com>
*
* @license GNU AGPL version 3 or any later version
@@ -26,7 +27,6 @@ declare(strict_types=1);
namespace OCP\Dashboard\Model;
-
use JsonSerializable;
/**
@@ -49,10 +49,8 @@ use JsonSerializable;
* @package OCP\Dashboard\Model
*/
final class WidgetSetting implements JsonSerializable {
-
-
- const TYPE_INPUT = 'input';
- const TYPE_CHECKBOX = 'checkbox';
+ public const TYPE_INPUT = 'input';
+ public const TYPE_CHECKBOX = 'checkbox';
/** @var string */
@@ -232,6 +230,4 @@ final class WidgetSetting implements JsonSerializable {
'placeholder' => $this->getPlaceholder()
];
}
-
-
}
diff --git a/lib/public/Dashboard/Model/WidgetSetup.php b/lib/public/Dashboard/Model/WidgetSetup.php
index 4d9884fd470..18dc0abd481 100644
--- a/lib/public/Dashboard/Model/WidgetSetup.php
+++ b/lib/public/Dashboard/Model/WidgetSetup.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright 2018, Maxence Lange <maxence@artificial-owl.com>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Maxence Lange <maxence@artificial-owl.com>
*
* @license GNU AGPL version 3 or any later version
@@ -26,7 +27,6 @@ declare(strict_types=1);
namespace OCP\Dashboard\Model;
-
use JsonSerializable;
/**
@@ -42,11 +42,9 @@ use JsonSerializable;
* @package OCP\Dashboard\Model
*/
final class WidgetSetup implements JsonSerializable {
-
-
- const SIZE_TYPE_MIN = 'min';
- const SIZE_TYPE_MAX = 'max';
- const SIZE_TYPE_DEFAULT = 'default';
+ public const SIZE_TYPE_MIN = 'min';
+ public const SIZE_TYPE_MAX = 'max';
+ public const SIZE_TYPE_DEFAULT = 'default';
/** @var array */
diff --git a/lib/public/Dashboard/Model/WidgetTemplate.php b/lib/public/Dashboard/Model/WidgetTemplate.php
index ba4447638a1..e25abb02540 100644
--- a/lib/public/Dashboard/Model/WidgetTemplate.php
+++ b/lib/public/Dashboard/Model/WidgetTemplate.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OCP\Dashboard\Model;
-
use JsonSerializable;
/**
@@ -309,6 +308,4 @@ final class WidgetTemplate implements JsonSerializable {
'settings' => $this->getSettings()
];
}
-
-
}
diff --git a/lib/public/Dashboard/Service/IEventsService.php b/lib/public/Dashboard/Service/IEventsService.php
index a036149599c..f79d1a28e5a 100644
--- a/lib/public/Dashboard/Service/IEventsService.php
+++ b/lib/public/Dashboard/Service/IEventsService.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OCP\Dashboard\Service;
-
use OCP\Dashboard\IDashboardManager;
/**
@@ -84,6 +83,4 @@ interface IEventsService {
* @param string $uniqueId
*/
public function createGlobalEvent(string $widgetId, array $payload, string $uniqueId);
-
-
}
diff --git a/lib/public/Dashboard/Service/IWidgetsService.php b/lib/public/Dashboard/Service/IWidgetsService.php
index 73a0bd7b171..dea20489e13 100644
--- a/lib/public/Dashboard/Service/IWidgetsService.php
+++ b/lib/public/Dashboard/Service/IWidgetsService.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OCP\Dashboard\Service;
-
use OCP\Dashboard\Model\IWidgetConfig;
/**
@@ -53,5 +52,4 @@ interface IWidgetsService {
* @return IWidgetConfig
*/
public function getWidgetConfig(string $widgetId, string $userId): IWidgetConfig;
-
}
diff --git a/lib/public/Defaults.php b/lib/public/Defaults.php
index af7a1567571..afb606febf6 100644
--- a/lib/public/Defaults.php
+++ b/lib/public/Defaults.php
@@ -137,8 +137,8 @@ class Defaults {
* @return string
* @since 6.0.0
*/
- public function getSlogan() {
- return $this->defaults->getSlogan();
+ public function getSlogan(?string $lang = null) {
+ return $this->defaults->getSlogan($lang);
}
/**
diff --git a/lib/public/Diagnostics/IQueryLogger.php b/lib/public/Diagnostics/IQueryLogger.php
index 14628c5688f..20c8ed04685 100644
--- a/lib/public/Diagnostics/IQueryLogger.php
+++ b/lib/public/Diagnostics/IQueryLogger.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Piotr Mrówczyński <mrow4a@yahoo.com>
@@ -35,10 +36,10 @@ use Doctrine\DBAL\Logging\SQLLogger;
*/
interface IQueryLogger extends SQLLogger {
/**
- * Mark the start of a query providing query SQL statement, its parameters and types.
- * This method should be called as close to the DB as possible and after
- * query is finished finalized with stopQuery() method.
- *
+ * Mark the start of a query providing query SQL statement, its parameters and types.
+ * This method should be called as close to the DB as possible and after
+ * query is finished finalized with stopQuery() method.
+ *
* @param string $sql
* @param array|null $params
* @param array|null $types
@@ -49,7 +50,7 @@ interface IQueryLogger extends SQLLogger {
/**
* Mark the end of the current active query. Ending query should store \OCP\Diagnostics\IQuery to
* be returned with getQueries() method.
- *
+ *
* @return mixed
* @since 8.0.0
*/
@@ -58,7 +59,7 @@ interface IQueryLogger extends SQLLogger {
/**
* This method should return all \OCP\Diagnostics\IQuery objects stored using
* startQuery()/stopQuery() methods.
- *
+ *
* @return \OCP\Diagnostics\IQuery[]
* @since 8.0.0
*/
@@ -67,8 +68,8 @@ interface IQueryLogger extends SQLLogger {
/**
* Activate the module for the duration of the request. Deactivated module
* does not create and store \OCP\Diagnostics\IQuery objects.
- * Only activated module should create and store objects to be
- * returned with getQueries() call.
+ * Only activated module should create and store objects to be
+ * returned with getQueries() call.
*
* @since 12.0.0
*/
diff --git a/lib/public/DirectEditing/ACreateEmpty.php b/lib/public/DirectEditing/ACreateEmpty.php
index 022bccf9516..cbb17d5d3e2 100644
--- a/lib/public/DirectEditing/ACreateEmpty.php
+++ b/lib/public/DirectEditing/ACreateEmpty.php
@@ -23,7 +23,6 @@
namespace OCP\DirectEditing;
-
use OCP\Files\File;
/**
@@ -74,6 +73,5 @@ abstract class ACreateEmpty {
* @param File $file
*/
public function create(File $file, string $creatorId = null, string $templateId = null): void {
-
}
}
diff --git a/lib/public/DirectEditing/ACreateFromTemplate.php b/lib/public/DirectEditing/ACreateFromTemplate.php
index e4aa461772a..43a21fdf4e9 100644
--- a/lib/public/DirectEditing/ACreateFromTemplate.php
+++ b/lib/public/DirectEditing/ACreateFromTemplate.php
@@ -35,5 +35,4 @@ abstract class ACreateFromTemplate extends ACreateEmpty {
* @return ATemplate[]
*/
abstract public function getTemplates(): array;
-
}
diff --git a/lib/public/DirectEditing/IEditor.php b/lib/public/DirectEditing/IEditor.php
index 5b376ba2ad5..22ec130aee0 100644
--- a/lib/public/DirectEditing/IEditor.php
+++ b/lib/public/DirectEditing/IEditor.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OCP\DirectEditing;
-
use OCP\AppFramework\Http\Response;
/**
diff --git a/lib/public/DirectEditing/IManager.php b/lib/public/DirectEditing/IManager.php
index 33d4716fc60..6cdf656c015 100644
--- a/lib/public/DirectEditing/IManager.php
+++ b/lib/public/DirectEditing/IManager.php
@@ -85,6 +85,4 @@ interface IManager {
* @return int number of deleted tokens
*/
public function cleanup(): int;
-
}
-
diff --git a/lib/public/DirectEditing/IToken.php b/lib/public/DirectEditing/IToken.php
index 416b2ccb807..511b12d4aed 100644
--- a/lib/public/DirectEditing/IToken.php
+++ b/lib/public/DirectEditing/IToken.php
@@ -23,7 +23,6 @@
namespace OCP\DirectEditing;
-
use OCP\Files\File;
use OCP\Files\NotFoundException;
@@ -81,5 +80,4 @@ interface IToken {
* @return string
*/
public function getUser(): string;
-
}
diff --git a/lib/public/DirectEditing/RegisterDirectEditorEvent.php b/lib/public/DirectEditing/RegisterDirectEditorEvent.php
index fe494e7fded..c9e04f23cfc 100644
--- a/lib/public/DirectEditing/RegisterDirectEditorEvent.php
+++ b/lib/public/DirectEditing/RegisterDirectEditorEvent.php
@@ -53,5 +53,4 @@ class RegisterDirectEditorEvent extends Event {
public function register(IEditor $editor): void {
$this->manager->registerDirectEditor($editor);
}
-
}
diff --git a/lib/public/Encryption/Exceptions/GenericEncryptionException.php b/lib/public/Encryption/Exceptions/GenericEncryptionException.php
index 938e6662a79..39842b20365 100644
--- a/lib/public/Encryption/Exceptions/GenericEncryptionException.php
+++ b/lib/public/Encryption/Exceptions/GenericEncryptionException.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Clark Tomlinson <fallen013@gmail.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -25,6 +26,7 @@
*/
namespace OCP\Encryption\Exceptions;
+
use OC\HintException;
/**
@@ -48,5 +50,4 @@ class GenericEncryptionException extends HintException {
}
parent::__construct($message, $hint, $code, $previous);
}
-
}
diff --git a/lib/public/Encryption/IEncryptionModule.php b/lib/public/Encryption/IEncryptionModule.php
index 90d427d4a1a..a4a84c2f2c2 100644
--- a/lib/public/Encryption/IEncryptionModule.php
+++ b/lib/public/Encryption/IEncryptionModule.php
@@ -4,6 +4,7 @@
*
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -25,6 +26,7 @@
*/
namespace OCP\Encryption;
+
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
@@ -192,5 +194,4 @@ interface IEncryptionModule {
* @return bool
*/
public function needDetailedAccessList();
-
}
diff --git a/lib/public/Encryption/IFile.php b/lib/public/Encryption/IFile.php
index f1da8f516b4..e01c7ec4cac 100644
--- a/lib/public/Encryption/IFile.php
+++ b/lib/public/Encryption/IFile.php
@@ -40,5 +40,4 @@ interface IFile {
* @since 8.1.0
*/
public function getAccessList($path);
-
}
diff --git a/lib/public/Encryption/IManager.php b/lib/public/Encryption/IManager.php
index bbac154ad4e..1d824ab6a62 100644
--- a/lib/public/Encryption/IManager.php
+++ b/lib/public/Encryption/IManager.php
@@ -97,5 +97,4 @@ interface IManager {
* @since 8.1.0
*/
public function setDefaultEncryptionModule($moduleId);
-
}
diff --git a/lib/public/EventDispatcher/ABroadcastedEvent.php b/lib/public/EventDispatcher/ABroadcastedEvent.php
index 53e11cd2e9d..5e6e18a80d4 100644
--- a/lib/public/EventDispatcher/ABroadcastedEvent.php
+++ b/lib/public/EventDispatcher/ABroadcastedEvent.php
@@ -69,5 +69,4 @@ abstract class ABroadcastedEvent extends Event implements JsonSerializable {
public function isBroadcasted(): bool {
return $this->broadcasted;
}
-
}
diff --git a/lib/public/EventDispatcher/Event.php b/lib/public/EventDispatcher/Event.php
index 6bc737f5ca7..8e6a5217af9 100644
--- a/lib/public/EventDispatcher/Event.php
+++ b/lib/public/EventDispatcher/Event.php
@@ -51,5 +51,4 @@ class Event extends SymfonyEvent {
*/
public function __construct() {
}
-
}
diff --git a/lib/public/EventDispatcher/IEventDispatcher.php b/lib/public/EventDispatcher/IEventDispatcher.php
index e6e1bc5ce61..997834ad7b5 100644
--- a/lib/public/EventDispatcher/IEventDispatcher.php
+++ b/lib/public/EventDispatcher/IEventDispatcher.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
*
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @author Joas Schilling <coding@schilljs.com>
*
* @license GNU AGPL version 3 or any later version
*
@@ -78,5 +79,4 @@ interface IEventDispatcher {
* @since 18.0.0
*/
public function dispatchTyped(Event $event): void;
-
}
diff --git a/lib/public/EventDispatcher/IEventListener.php b/lib/public/EventDispatcher/IEventListener.php
index 349e718fa58..25906fa798e 100644
--- a/lib/public/EventDispatcher/IEventListener.php
+++ b/lib/public/EventDispatcher/IEventListener.php
@@ -37,5 +37,4 @@ interface IEventListener {
* @since 17.0.0
*/
public function handle(Event $event): void;
-
}
diff --git a/lib/public/Federation/Exceptions/ActionNotSupportedException.php b/lib/public/Federation/Exceptions/ActionNotSupportedException.php
index 169bf6afc25..a2d5b78ddb0 100644
--- a/lib/public/Federation/Exceptions/ActionNotSupportedException.php
+++ b/lib/public/Federation/Exceptions/ActionNotSupportedException.php
@@ -46,5 +46,4 @@ class ActionNotSupportedException extends HintException {
$hint = $l->t('Action "%s" not supported or implemented.', [$action]);
parent::__construct($message, $hint);
}
-
}
diff --git a/lib/public/Federation/Exceptions/AuthenticationFailedException.php b/lib/public/Federation/Exceptions/AuthenticationFailedException.php
index 36851c4610e..9a0a408bee9 100644
--- a/lib/public/Federation/Exceptions/AuthenticationFailedException.php
+++ b/lib/public/Federation/Exceptions/AuthenticationFailedException.php
@@ -46,5 +46,4 @@ class AuthenticationFailedException extends HintException {
$hint = $l->t('Authentication failed, wrong token or provider ID given');
parent::__construct($message, $hint);
}
-
}
diff --git a/lib/public/Federation/Exceptions/BadRequestException.php b/lib/public/Federation/Exceptions/BadRequestException.php
index c0ff5ab6892..4b373bba9f7 100644
--- a/lib/public/Federation/Exceptions/BadRequestException.php
+++ b/lib/public/Federation/Exceptions/BadRequestException.php
@@ -33,7 +33,6 @@ use OC\HintException;
* @since 14.0.0
*/
class BadRequestException extends HintException {
-
private $parameterList;
/**
@@ -75,5 +74,4 @@ class BadRequestException extends HintException {
return $result;
}
-
}
diff --git a/lib/public/Federation/Exceptions/ProviderAlreadyExistsException.php b/lib/public/Federation/Exceptions/ProviderAlreadyExistsException.php
index 9a3f616c559..8968371cd74 100644
--- a/lib/public/Federation/Exceptions/ProviderAlreadyExistsException.php
+++ b/lib/public/Federation/Exceptions/ProviderAlreadyExistsException.php
@@ -50,5 +50,4 @@ class ProviderAlreadyExistsException extends HintException {
$hint = $l->t('ID "%1$s" already used by cloud federation provider "%2$s"', [$newProviderId, $existingProviderName]);
parent::__construct($message, $hint);
}
-
}
diff --git a/lib/public/Federation/Exceptions/ProviderCouldNotAddShareException.php b/lib/public/Federation/Exceptions/ProviderCouldNotAddShareException.php
index f7abe030678..50827ea09ad 100644
--- a/lib/public/Federation/Exceptions/ProviderCouldNotAddShareException.php
+++ b/lib/public/Federation/Exceptions/ProviderCouldNotAddShareException.php
@@ -48,6 +48,4 @@ class ProviderCouldNotAddShareException extends HintException {
public function __construct($message, $hint = '', $code = Http::STATUS_BAD_REQUEST, \Exception $previous = null) {
parent::__construct($message, $hint, $code, $previous);
}
-
-
}
diff --git a/lib/public/Federation/Exceptions/ProviderDoesNotExistsException.php b/lib/public/Federation/Exceptions/ProviderDoesNotExistsException.php
index 771815d7706..30c591d31bf 100644
--- a/lib/public/Federation/Exceptions/ProviderDoesNotExistsException.php
+++ b/lib/public/Federation/Exceptions/ProviderDoesNotExistsException.php
@@ -47,5 +47,4 @@ class ProviderDoesNotExistsException extends HintException {
$hint = $l->t('Cloud Federation Provider with ID: "%s" does not exist.', [$providerId]);
parent::__construct($message, $hint);
}
-
}
diff --git a/lib/public/Federation/ICloudFederationProvider.php b/lib/public/Federation/ICloudFederationProvider.php
index c43bd984cea..f0bc305b160 100644
--- a/lib/public/Federation/ICloudFederationProvider.php
+++ b/lib/public/Federation/ICloudFederationProvider.php
@@ -88,5 +88,4 @@ interface ICloudFederationProvider {
* @since 14.0.0
*/
public function getSupportedShareTypes();
-
}
diff --git a/lib/public/Federation/ICloudFederationProviderManager.php b/lib/public/Federation/ICloudFederationProviderManager.php
index 0b78ff4da23..f29679ff7c0 100644
--- a/lib/public/Federation/ICloudFederationProviderManager.php
+++ b/lib/public/Federation/ICloudFederationProviderManager.php
@@ -105,6 +105,4 @@ interface ICloudFederationProviderManager {
* @since 14.0.0
*/
public function isReady();
-
-
}
diff --git a/lib/public/Federation/ICloudFederationShare.php b/lib/public/Federation/ICloudFederationShare.php
index 41ed440529c..ec5247f8eb4 100644
--- a/lib/public/Federation/ICloudFederationShare.php
+++ b/lib/public/Federation/ICloudFederationShare.php
@@ -248,5 +248,4 @@ interface ICloudFederationShare {
* @since 14.0.0
*/
public function getProtocol();
-
}
diff --git a/lib/public/Files.php b/lib/public/Files.php
index 1e6e9d48e03..a3787107a56 100644
--- a/lib/public/Files.php
+++ b/lib/public/Files.php
@@ -4,6 +4,7 @@
*
* @author Bart Visscher <bartv@thisnet.nl>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Frank Karlitschek <frank@karlitschek.de>
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Joas Schilling <coding@schilljs.com>
@@ -54,8 +55,8 @@ class Files {
* @since 5.0.0
* @deprecated 14.0.0
*/
- static public function rmdirr( $dir ) {
- return \OC_Helper::rmdirr( $dir );
+ public static function rmdirr($dir) {
+ return \OC_Helper::rmdirr($dir);
}
/**
@@ -66,7 +67,7 @@ class Files {
* @since 5.0.0
* @deprecated 14.0.0
*/
- static public function getMimeType( $path ) {
+ public static function getMimeType($path) {
return \OC::$server->getMimeTypeDetector()->detect($path);
}
@@ -77,7 +78,7 @@ class Files {
* @since 6.0.0
* @deprecated 14.0.0
*/
- static public function searchByMime($mimetype) {
+ public static function searchByMime($mimetype) {
return \OC\Files\Filesystem::searchByMime($mimetype);
}
@@ -89,8 +90,8 @@ class Files {
* @since 5.0.0
* @deprecated 14.0.0
*/
- public static function streamCopy( $source, $target ) {
- list($count, ) = \OC_Helper::streamCopy( $source, $target );
+ public static function streamCopy($source, $target) {
+ list($count, ) = \OC_Helper::streamCopy($source, $target);
return $count;
}
@@ -115,6 +116,6 @@ class Files {
* @deprecated 14.0.0 use IAppData instead
*/
public static function getStorage($app) {
- return \OC_App::getStorage( $app );
+ return \OC_App::getStorage($app);
}
}
diff --git a/lib/public/Files/AlreadyExistsException.php b/lib/public/Files/AlreadyExistsException.php
index 83fa12add17..ede7c446f49 100644
--- a/lib/public/Files/AlreadyExistsException.php
+++ b/lib/public/Files/AlreadyExistsException.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -36,4 +37,5 @@ namespace OCP\Files;
* Exception for already existing files/folders
* @since 6.0.0
*/
-class AlreadyExistsException extends \Exception {}
+class AlreadyExistsException extends \Exception {
+}
diff --git a/lib/public/Files/Cache/ICache.php b/lib/public/Files/Cache/ICache.php
index a4c9bfe3e45..95ca29c2aa8 100644
--- a/lib/public/Files/Cache/ICache.php
+++ b/lib/public/Files/Cache/ICache.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Robin Appelman <robin@icewind.nl>
*
* @license AGPL-3.0
@@ -21,6 +22,7 @@
*/
namespace OCP\Files\Cache;
+
use OCP\Files\Search\ISearchQuery;
/**
@@ -36,10 +38,10 @@ use OCP\Files\Search\ISearchQuery;
* @since 9.0.0
*/
interface ICache {
- const NOT_FOUND = 0;
- const PARTIAL = 1; //only partial data available, file not cached in the database
- const SHALLOW = 2; //folder in cache, but not all child files are completely scanned
- const COMPLETE = 3;
+ public const NOT_FOUND = 0;
+ public const PARTIAL = 1; //only partial data available, file not cached in the database
+ public const SHALLOW = 2; //folder in cache, but not all child files are completely scanned
+ public const COMPLETE = 3;
/**
* Get the numeric storage id for this cache's storage
diff --git a/lib/public/Files/Cache/ICacheEntry.php b/lib/public/Files/Cache/ICacheEntry.php
index 369c8b69fc1..e3efe679cde 100644
--- a/lib/public/Files/Cache/ICacheEntry.php
+++ b/lib/public/Files/Cache/ICacheEntry.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Robin Appelman <robin@icewind.nl>
*
* @license AGPL-3.0
@@ -28,7 +29,7 @@ namespace OCP\Files\Cache;
* @since 9.0.0
*/
interface ICacheEntry {
- const DIRECTORY_MIMETYPE = 'httpd/unix-directory';
+ public const DIRECTORY_MIMETYPE = 'httpd/unix-directory';
/**
* Get the numeric id of a file
diff --git a/lib/public/Files/Cache/ICacheEvent.php b/lib/public/Files/Cache/ICacheEvent.php
index 54ef15b0392..634666f594a 100644
--- a/lib/public/Files/Cache/ICacheEvent.php
+++ b/lib/public/Files/Cache/ICacheEvent.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2019 Robin Appelman <robin@icewind.nl>
*
+ * @author Joas Schilling <coding@schilljs.com>
* @author Robin Appelman <robin@icewind.nl>
*
* @license GNU AGPL version 3 or any later version
diff --git a/lib/public/Files/Cache/IScanner.php b/lib/public/Files/Cache/IScanner.php
index e12561eb0c5..3b00fa2af13 100644
--- a/lib/public/Files/Cache/IScanner.php
+++ b/lib/public/Files/Cache/IScanner.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Robin Appelman <robin@icewind.nl>
*
* @license AGPL-3.0
@@ -28,13 +29,13 @@ namespace OCP\Files\Cache;
* @since 9.0.0
*/
interface IScanner {
- const SCAN_RECURSIVE_INCOMPLETE = 2; // only recursive into not fully scanned folders
- const SCAN_RECURSIVE = true;
- const SCAN_SHALLOW = false;
+ public const SCAN_RECURSIVE_INCOMPLETE = 2; // only recursive into not fully scanned folders
+ public const SCAN_RECURSIVE = true;
+ public const SCAN_SHALLOW = false;
- const REUSE_NONE = 0;
- const REUSE_ETAG = 1;
- const REUSE_SIZE = 2;
+ public const REUSE_NONE = 0;
+ public const REUSE_ETAG = 1;
+ public const REUSE_SIZE = 2;
/**
* scan a single file and store it in the cache
diff --git a/lib/public/Files/Cache/IWatcher.php b/lib/public/Files/Cache/IWatcher.php
index 0c8065828e7..9fc37c9b0ba 100644
--- a/lib/public/Files/Cache/IWatcher.php
+++ b/lib/public/Files/Cache/IWatcher.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Robin Appelman <robin@icewind.nl>
*
* @license AGPL-3.0
@@ -28,9 +29,9 @@ namespace OCP\Files\Cache;
* @since 9.0.0
*/
interface IWatcher {
- const CHECK_NEVER = 0; // never check the underlying filesystem for updates
- const CHECK_ONCE = 1; // check the underlying filesystem for updates once every request for each file
- const CHECK_ALWAYS = 2; // always check the underlying filesystem for updates
+ public const CHECK_NEVER = 0; // never check the underlying filesystem for updates
+ public const CHECK_ONCE = 1; // check the underlying filesystem for updates once every request for each file
+ public const CHECK_ALWAYS = 2; // always check the underlying filesystem for updates
/**
* @param int $policy either IWatcher::CHECK_NEVER, IWatcher::CHECK_ONCE, IWatcher::CHECK_ALWAYS
diff --git a/lib/public/Files/EntityTooLargeException.php b/lib/public/Files/EntityTooLargeException.php
index 21d7b8e62ce..66d924cf54a 100644
--- a/lib/public/Files/EntityTooLargeException.php
+++ b/lib/public/Files/EntityTooLargeException.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -36,4 +37,5 @@ namespace OCP\Files;
* Exception for too large entity
* @since 6.0.0
*/
-class EntityTooLargeException extends \Exception {}
+class EntityTooLargeException extends \Exception {
+}
diff --git a/lib/public/Files/Events/BeforeFileScannedEvent.php b/lib/public/Files/Events/BeforeFileScannedEvent.php
index fbe228d7310..c233c9e4a0e 100644
--- a/lib/public/Files/Events/BeforeFileScannedEvent.php
+++ b/lib/public/Files/Events/BeforeFileScannedEvent.php
@@ -53,5 +53,4 @@ class BeforeFileScannedEvent extends Event {
public function getAbsolutePath(): string {
return $this->absolutePath;
}
-
}
diff --git a/lib/public/Files/Events/BeforeFolderScannedEvent.php b/lib/public/Files/Events/BeforeFolderScannedEvent.php
index 354b481cb07..5c8c05e9a21 100644
--- a/lib/public/Files/Events/BeforeFolderScannedEvent.php
+++ b/lib/public/Files/Events/BeforeFolderScannedEvent.php
@@ -53,5 +53,4 @@ class BeforeFolderScannedEvent extends Event {
public function getAbsolutePath(): string {
return $this->absolutePath;
}
-
}
diff --git a/lib/public/Files/Events/FileCacheUpdated.php b/lib/public/Files/Events/FileCacheUpdated.php
index 1bb8a3b39ab..f370aec1cf2 100644
--- a/lib/public/Files/Events/FileCacheUpdated.php
+++ b/lib/public/Files/Events/FileCacheUpdated.php
@@ -67,5 +67,4 @@ class FileCacheUpdated extends Event {
public function getPath(): string {
return $this->path;
}
-
}
diff --git a/lib/public/Files/Events/FileScannedEvent.php b/lib/public/Files/Events/FileScannedEvent.php
index fe0817130f7..69c0dd3c538 100644
--- a/lib/public/Files/Events/FileScannedEvent.php
+++ b/lib/public/Files/Events/FileScannedEvent.php
@@ -53,5 +53,4 @@ class FileScannedEvent extends Event {
public function getAbsolutePath(): string {
return $this->absolutePath;
}
-
}
diff --git a/lib/public/Files/Events/FolderScannedEvent.php b/lib/public/Files/Events/FolderScannedEvent.php
index d5dc0c97b55..642d14b4499 100644
--- a/lib/public/Files/Events/FolderScannedEvent.php
+++ b/lib/public/Files/Events/FolderScannedEvent.php
@@ -53,5 +53,4 @@ class FolderScannedEvent extends Event {
public function getAbsolutePath(): string {
return $this->absolutePath;
}
-
}
diff --git a/lib/public/Files/Events/NodeAddedToCache.php b/lib/public/Files/Events/NodeAddedToCache.php
index 631de66f9ef..f1ffd755f68 100644
--- a/lib/public/Files/Events/NodeAddedToCache.php
+++ b/lib/public/Files/Events/NodeAddedToCache.php
@@ -67,5 +67,4 @@ class NodeAddedToCache extends Event {
public function getPath(): string {
return $this->path;
}
-
}
diff --git a/lib/public/Files/Events/NodeRemovedFromCache.php b/lib/public/Files/Events/NodeRemovedFromCache.php
index 1d09e10bf6d..0437bc001a7 100644
--- a/lib/public/Files/Events/NodeRemovedFromCache.php
+++ b/lib/public/Files/Events/NodeRemovedFromCache.php
@@ -67,5 +67,4 @@ class NodeRemovedFromCache extends Event {
public function getPath(): string {
return $this->path;
}
-
}
diff --git a/lib/public/Files/FileInfo.php b/lib/public/Files/FileInfo.php
index f7a36e0542d..6710b609ba8 100644
--- a/lib/public/Files/FileInfo.php
+++ b/lib/public/Files/FileInfo.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Felix Heidecke <felix@heidecke.me>
* @author Joas Schilling <coding@schilljs.com>
* @author Julius Härtl <jus@bitgrid.net>
@@ -38,38 +39,38 @@ interface FileInfo {
/**
* @since 7.0.0
*/
- const TYPE_FILE = 'file';
+ public const TYPE_FILE = 'file';
/**
* @since 7.0.0
*/
- const TYPE_FOLDER = 'dir';
+ public const TYPE_FOLDER = 'dir';
/**
* @const \OCP\Files\FileInfo::SPACE_NOT_COMPUTED Return value for a not computed space value
* @since 8.0.0
*/
- const SPACE_NOT_COMPUTED = -1;
+ public const SPACE_NOT_COMPUTED = -1;
/**
* @const \OCP\Files\FileInfo::SPACE_UNKNOWN Return value for unknown space value
* @since 8.0.0
*/
- const SPACE_UNKNOWN = -2;
+ public const SPACE_UNKNOWN = -2;
/**
* @const \OCP\Files\FileInfo::SPACE_UNLIMITED Return value for unlimited space
* @since 8.0.0
*/
- const SPACE_UNLIMITED = -3;
+ public const SPACE_UNLIMITED = -3;
/**
* @since 9.1.0
*/
- const MIMETYPE_FOLDER = 'httpd/unix-directory';
+ public const MIMETYPE_FOLDER = 'httpd/unix-directory';
/**
* @const \OCP\Files\FileInfo::BLACKLIST_FILES_REGEX Return regular expression to test filenames against (blacklisting)
* @since 12.0.0
*/
- const BLACKLIST_FILES_REGEX = '\.(part|filepart)$';
+ public const BLACKLIST_FILES_REGEX = '\.(part|filepart)$';
/**
* Get the Etag of the file or folder
diff --git a/lib/public/Files/Folder.php b/lib/public/Files/Folder.php
index a78a9ca8f78..a5d8398a3eb 100644
--- a/lib/public/Files/Folder.php
+++ b/lib/public/Files/Folder.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -32,6 +33,7 @@
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP\Files;
+
use OCP\Files\Search\ISearchQuery;
/**
diff --git a/lib/public/Files/GenericFileException.php b/lib/public/Files/GenericFileException.php
index fe71d91c18e..75f26f27132 100644
--- a/lib/public/Files/GenericFileException.php
+++ b/lib/public/Files/GenericFileException.php
@@ -30,5 +30,4 @@ namespace OCP\Files;
* @since 14.0.0
*/
class GenericFileException extends \Exception {
-
}
diff --git a/lib/public/Files/IAppData.php b/lib/public/Files/IAppData.php
index ca7bdc242b7..6c93a57164d 100644
--- a/lib/public/Files/IAppData.php
+++ b/lib/public/Files/IAppData.php
@@ -2,6 +2,7 @@
/**
* @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @license GNU AGPL version 3 or any later version
@@ -31,6 +32,5 @@ use OCP\Files\SimpleFS\ISimpleRoot;
* @package OCP\Files
* @since 11.0.0
*/
-interface IAppData extends ISimpleRoot {
-
+interface IAppData extends ISimpleRoot {
}
diff --git a/lib/public/Files/IHomeStorage.php b/lib/public/Files/IHomeStorage.php
index d988e56ec17..6123e7fae4d 100644
--- a/lib/public/Files/IHomeStorage.php
+++ b/lib/public/Files/IHomeStorage.php
@@ -39,5 +39,4 @@ namespace OCP\Files;
* @since 7.0.0
*/
interface IHomeStorage {
-
}
diff --git a/lib/public/Files/IMimeTypeDetector.php b/lib/public/Files/IMimeTypeDetector.php
index ec80b3480d1..bb75ce742c5 100644
--- a/lib/public/Files/IMimeTypeDetector.php
+++ b/lib/public/Files/IMimeTypeDetector.php
@@ -26,7 +26,6 @@
namespace OCP\Files;
-
/**
* Interface IMimeTypeDetector
* @package OCP\Files
diff --git a/lib/public/Files/IRootFolder.php b/lib/public/Files/IRootFolder.php
index 5304414ae7b..1b5cb406af4 100644
--- a/lib/public/Files/IRootFolder.php
+++ b/lib/public/Files/IRootFolder.php
@@ -4,6 +4,7 @@
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ * @author Julius Härtl <jus@bitgrid.net>
* @author Morris Jobke <hey@morrisjobke.de>
*
* @license AGPL-3.0
@@ -25,6 +26,7 @@
namespace OCP\Files;
use OC\Hooks\Emitter;
+use OC\User\NoUserException;
/**
* Interface IRootFolder
@@ -39,6 +41,9 @@ interface IRootFolder extends Folder, Emitter {
*
* @param string $userId user ID
* @return \OCP\Files\Folder
+ * @throws NoUserException
+ * @throws NotPermittedException
+ *
* @since 8.2.0
*/
public function getUserFolder($userId);
diff --git a/lib/public/Files/InvalidCharacterInPathException.php b/lib/public/Files/InvalidCharacterInPathException.php
index 3e051e3f8ee..57fb2134bb0 100644
--- a/lib/public/Files/InvalidCharacterInPathException.php
+++ b/lib/public/Files/InvalidCharacterInPathException.php
@@ -37,5 +37,4 @@ namespace OCP\Files;
* @since 8.1.0
*/
class InvalidCharacterInPathException extends InvalidPathException {
-
}
diff --git a/lib/public/Files/InvalidContentException.php b/lib/public/Files/InvalidContentException.php
index 6c738ab4290..98e79c61fc2 100644
--- a/lib/public/Files/InvalidContentException.php
+++ b/lib/public/Files/InvalidContentException.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -36,4 +37,5 @@ namespace OCP\Files;
* Exception for invalid content
* @since 6.0.0
*/
-class InvalidContentException extends \Exception {}
+class InvalidContentException extends \Exception {
+}
diff --git a/lib/public/Files/InvalidPathException.php b/lib/public/Files/InvalidPathException.php
index 4af71733167..8eaeb2f3bc7 100644
--- a/lib/public/Files/InvalidPathException.php
+++ b/lib/public/Files/InvalidPathException.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
@@ -36,4 +37,5 @@ namespace OCP\Files;
* Exception for invalid path
* @since 6.0.0
*/
-class InvalidPathException extends \Exception {}
+class InvalidPathException extends \Exception {
+}
diff --git a/lib/public/Files/LockNotAcquiredException.php b/lib/public/Files/LockNotAcquiredException.php
index d1e20fd530a..47539c4979f 100644
--- a/lib/public/Files/LockNotAcquiredException.php
+++ b/lib/public/Files/LockNotAcquiredException.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Owen Winkler <a_github@midnightcircus.com>
* @author Robin Appelman <robin@icewind.nl>
@@ -48,7 +49,7 @@ class LockNotAcquiredException extends \Exception {
* @since 7.0.0
*/
public function __construct($path, $lockType, $code = 0, \Exception $previous = null) {
- $message = \OC::$server->getL10N('core')->t('Could not obtain lock type %d on "%s".', array($lockType, $path));
+ $message = \OC::$server->getL10N('core')->t('Could not obtain lock type %d on "%s".', [$lockType, $path]);
parent::__construct($message, $code, $previous);
}
diff --git a/lib/public/Files/NotEnoughSpaceException.php b/lib/public/Files/NotEnoughSpaceException.php
index cc45ea60a1a..337b86712e7 100644
--- a/lib/public/Files/NotEnoughSpaceException.php
+++ b/lib/public/Files/NotEnoughSpaceException.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -36,4 +37,5 @@ namespace OCP\Files;
* Exception for not enough space
* @since 6.0.0
*/
-class NotEnoughSpaceException extends \Exception {}
+class NotEnoughSpaceException extends \Exception {
+}
diff --git a/lib/public/Files/NotFoundException.php b/lib/public/Files/NotFoundException.php
index 01c9c03f00a..853138b9d5e 100644
--- a/lib/public/Files/NotFoundException.php
+++ b/lib/public/Files/NotFoundException.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -36,4 +37,5 @@ namespace OCP\Files;
* Exception for not found entity
* @since 6.0.0
*/
-class NotFoundException extends \Exception {}
+class NotFoundException extends \Exception {
+}
diff --git a/lib/public/Files/NotPermittedException.php b/lib/public/Files/NotPermittedException.php
index 59be76beec7..661f7c2ce44 100644
--- a/lib/public/Files/NotPermittedException.php
+++ b/lib/public/Files/NotPermittedException.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -36,4 +37,5 @@ namespace OCP\Files;
* Exception for not permitted action
* @since 6.0.0
*/
-class NotPermittedException extends \Exception {}
+class NotPermittedException extends \Exception {
+}
diff --git a/lib/public/Files/Notify/IChange.php b/lib/public/Files/Notify/IChange.php
index 762030c738a..dd9fbc64bee 100644
--- a/lib/public/Files/Notify/IChange.php
+++ b/lib/public/Files/Notify/IChange.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Robin Appelman <robin@icewind.nl>
*
* @license GNU AGPL version 3 or any later version
@@ -29,10 +30,10 @@ namespace OCP\Files\Notify;
* @since 12.0.0
*/
interface IChange {
- const ADDED = 1;
- const REMOVED = 2;
- const MODIFIED = 3;
- const RENAMED = 4;
+ public const ADDED = 1;
+ public const REMOVED = 2;
+ public const MODIFIED = 3;
+ public const RENAMED = 4;
/**
* Get the type of the change
diff --git a/lib/public/Files/ReservedWordException.php b/lib/public/Files/ReservedWordException.php
index 2fc286a361f..81f25fb4366 100644
--- a/lib/public/Files/ReservedWordException.php
+++ b/lib/public/Files/ReservedWordException.php
@@ -37,5 +37,4 @@ namespace OCP\Files;
* @since 8.1.0
*/
class ReservedWordException extends InvalidPathException {
-
}
diff --git a/lib/public/Files/Search/ISearchBinaryOperator.php b/lib/public/Files/Search/ISearchBinaryOperator.php
index a089323c9fc..d02ec9f36bd 100644
--- a/lib/public/Files/Search/ISearchBinaryOperator.php
+++ b/lib/public/Files/Search/ISearchBinaryOperator.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Robin Appelman <robin@icewind.nl>
*
* @license GNU AGPL version 3 or any later version
@@ -27,9 +28,9 @@ namespace OCP\Files\Search;
* @since 12.0.0
*/
interface ISearchBinaryOperator extends ISearchOperator {
- const OPERATOR_AND = 'and';
- const OPERATOR_OR = 'or';
- const OPERATOR_NOT = 'not';
+ public const OPERATOR_AND = 'and';
+ public const OPERATOR_OR = 'or';
+ public const OPERATOR_NOT = 'not';
/**
* The type of binary operator
diff --git a/lib/public/Files/Search/ISearchComparison.php b/lib/public/Files/Search/ISearchComparison.php
index 6cfbb29ee54..6fb09433c92 100644
--- a/lib/public/Files/Search/ISearchComparison.php
+++ b/lib/public/Files/Search/ISearchComparison.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Robin Appelman <robin@icewind.nl>
*
* @license GNU AGPL version 3 or any later version
@@ -27,12 +28,12 @@ namespace OCP\Files\Search;
* @since 12.0.0
*/
interface ISearchComparison extends ISearchOperator {
- const COMPARE_EQUAL = 'eq';
- const COMPARE_GREATER_THAN = 'gt';
- const COMPARE_GREATER_THAN_EQUAL = 'gte';
- const COMPARE_LESS_THAN = 'lt';
- const COMPARE_LESS_THAN_EQUAL = 'lte';
- const COMPARE_LIKE = 'like';
+ public const COMPARE_EQUAL = 'eq';
+ public const COMPARE_GREATER_THAN = 'gt';
+ public const COMPARE_GREATER_THAN_EQUAL = 'gte';
+ public const COMPARE_LESS_THAN = 'lt';
+ public const COMPARE_LESS_THAN_EQUAL = 'lte';
+ public const COMPARE_LIKE = 'like';
/**
* Get the type of comparison, one of the ISearchComparison::COMPARE_* constants
diff --git a/lib/public/Files/Search/ISearchOperator.php b/lib/public/Files/Search/ISearchOperator.php
index e86ceda07c1..a443c2744cf 100644
--- a/lib/public/Files/Search/ISearchOperator.php
+++ b/lib/public/Files/Search/ISearchOperator.php
@@ -27,5 +27,4 @@ namespace OCP\Files\Search;
* @since 12.0.0
*/
interface ISearchOperator {
-
}
diff --git a/lib/public/Files/Search/ISearchOrder.php b/lib/public/Files/Search/ISearchOrder.php
index 817c7e3b5b4..fb0137c1bac 100644
--- a/lib/public/Files/Search/ISearchOrder.php
+++ b/lib/public/Files/Search/ISearchOrder.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Robin Appelman <robin@icewind.nl>
*
* @license GNU AGPL version 3 or any later version
@@ -27,8 +28,8 @@ namespace OCP\Files\Search;
* @since 12.0.0
*/
interface ISearchOrder {
- const DIRECTION_ASCENDING = 'asc';
- const DIRECTION_DESCENDING = 'desc';
+ public const DIRECTION_ASCENDING = 'asc';
+ public const DIRECTION_DESCENDING = 'desc';
/**
* The direction to sort in, either ISearchOrder::DIRECTION_ASCENDING or ISearchOrder::DIRECTION_DESCENDING
diff --git a/lib/public/Files/SimpleFS/ISimpleFolder.php b/lib/public/Files/SimpleFS/ISimpleFolder.php
index 22f8c90849b..3fc08e56cc0 100644
--- a/lib/public/Files/SimpleFS/ISimpleFolder.php
+++ b/lib/public/Files/SimpleFS/ISimpleFolder.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016 Roeland Jago Douma <roeland@famdouma.nl>
*
+ * @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @license GNU AGPL version 3 or any later version
diff --git a/lib/public/Files/Storage/IDisableEncryptionStorage.php b/lib/public/Files/Storage/IDisableEncryptionStorage.php
index b1172640b26..761f636b068 100644
--- a/lib/public/Files/Storage/IDisableEncryptionStorage.php
+++ b/lib/public/Files/Storage/IDisableEncryptionStorage.php
@@ -30,5 +30,4 @@ namespace OCP\Files\Storage;
* @since 16.0.0
*/
interface IDisableEncryptionStorage {
-
}
diff --git a/lib/public/Files/Storage/INotifyStorage.php b/lib/public/Files/Storage/INotifyStorage.php
index 60893c2f636..57efd6dc4f4 100644
--- a/lib/public/Files/Storage/INotifyStorage.php
+++ b/lib/public/Files/Storage/INotifyStorage.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016 Robin Appelman <robin@icewind.nl>
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Robin Appelman <robin@icewind.nl>
*
* @license GNU AGPL version 3 or any later version
@@ -31,10 +32,10 @@ use OCP\Files\Notify\INotifyHandler;
* @since 9.1.0
*/
interface INotifyStorage {
- const NOTIFY_ADDED = 1;
- const NOTIFY_REMOVED = 2;
- const NOTIFY_MODIFIED = 3;
- const NOTIFY_RENAMED = 4;
+ public const NOTIFY_ADDED = 1;
+ public const NOTIFY_REMOVED = 2;
+ public const NOTIFY_MODIFIED = 3;
+ public const NOTIFY_RENAMED = 4;
/**
* Start listening for update notifications
diff --git a/lib/public/Files/Storage/IStorageFactory.php b/lib/public/Files/Storage/IStorageFactory.php
index e5a94de34f9..acd6178f48f 100644
--- a/lib/public/Files/Storage/IStorageFactory.php
+++ b/lib/public/Files/Storage/IStorageFactory.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Vincent Petry <pvince81@owncloud.com>
@@ -23,6 +24,7 @@
*/
namespace OCP\Files\Storage;
+
use OCP\Files\Mount\IMountPoint;
/**
diff --git a/lib/public/Files/StorageBadConfigException.php b/lib/public/Files/StorageBadConfigException.php
index 94ab6356899..2b0e362389f 100644
--- a/lib/public/Files/StorageBadConfigException.php
+++ b/lib/public/Files/StorageBadConfigException.php
@@ -41,5 +41,4 @@ class StorageBadConfigException extends StorageNotAvailableException {
$l = \OC::$server->getL10N('core');
parent::__construct($l->t('Storage incomplete configuration. %s', [$message]), self::STATUS_INCOMPLETE_CONF, $previous);
}
-
}
diff --git a/lib/public/Files/StorageNotAvailableException.php b/lib/public/Files/StorageNotAvailableException.php
index 0b1defaded8..ef9d22e8dff 100644
--- a/lib/public/Files/StorageNotAvailableException.php
+++ b/lib/public/Files/StorageNotAvailableException.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jesús Macias <jmacias@solidgear.es>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -36,6 +37,7 @@
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP\Files;
+
use OC\HintException;
/**
@@ -43,14 +45,13 @@ use OC\HintException;
* @since 6.0.0 - since 8.2.1 based on HintException
*/
class StorageNotAvailableException extends HintException {
-
- const STATUS_SUCCESS = 0;
- const STATUS_ERROR = 1;
- const STATUS_INDETERMINATE = 2;
- const STATUS_INCOMPLETE_CONF = 3;
- const STATUS_UNAUTHORIZED = 4;
- const STATUS_TIMEOUT = 5;
- const STATUS_NETWORK_ERROR = 6;
+ public const STATUS_SUCCESS = 0;
+ public const STATUS_ERROR = 1;
+ public const STATUS_INDETERMINATE = 2;
+ public const STATUS_INCOMPLETE_CONF = 3;
+ public const STATUS_UNAUTHORIZED = 4;
+ public const STATUS_TIMEOUT = 5;
+ public const STATUS_NETWORK_ERROR = 6;
/**
* StorageNotAvailableException constructor.
diff --git a/lib/public/Files/UnseekableException.php b/lib/public/Files/UnseekableException.php
index 302a6b2686b..13ef6330207 100644
--- a/lib/public/Files/UnseekableException.php
+++ b/lib/public/Files/UnseekableException.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Piotr Filiciak <piotr@filiciak.pl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -35,4 +36,5 @@ namespace OCP\Files;
* Exception for seek problem
* @since 9.1.0
*/
-class UnseekableException extends \Exception {}
+class UnseekableException extends \Exception {
+}
diff --git a/lib/public/Files_FullTextSearch/Model/AFilesDocument.php b/lib/public/Files_FullTextSearch/Model/AFilesDocument.php
index 24c14089bcc..33558a632e9 100644
--- a/lib/public/Files_FullTextSearch/Model/AFilesDocument.php
+++ b/lib/public/Files_FullTextSearch/Model/AFilesDocument.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OCP\Files_FullTextSearch\Model;
-
use OC\FullTextSearch\Model\IndexDocument;
use OCP\FullTextSearch\Model\IIndexDocument;
@@ -101,5 +100,4 @@ abstract class AFilesDocument extends IndexDocument {
* @return string
*/
abstract public function getPath(): string;
-
}
diff --git a/lib/public/FullTextSearch/IFullTextSearchManager.php b/lib/public/FullTextSearch/IFullTextSearchManager.php
index 8730a344ded..c66712dbe1f 100644
--- a/lib/public/FullTextSearch/IFullTextSearchManager.php
+++ b/lib/public/FullTextSearch/IFullTextSearchManager.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OCP\FullTextSearch;
-
use OCP\FullTextSearch\Model\IIndex;
use OCP\FullTextSearch\Model\ISearchResult;
use OCP\FullTextSearch\Service\IIndexService;
@@ -185,6 +184,4 @@ interface IFullTextSearchManager {
* @return ISearchResult[]
*/
public function search(array $request, string $userId = ''): array;
-
-
}
diff --git a/lib/public/FullTextSearch/IFullTextSearchPlatform.php b/lib/public/FullTextSearch/IFullTextSearchPlatform.php
index a22e6930383..4fea8aba173 100644
--- a/lib/public/FullTextSearch/IFullTextSearchPlatform.php
+++ b/lib/public/FullTextSearch/IFullTextSearchPlatform.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OCP\FullTextSearch;
-
use OCP\FullTextSearch\Model\IDocumentAccess;
use OCP\FullTextSearch\Model\IIndex;
use OCP\FullTextSearch\Model\IIndexDocument;
@@ -216,6 +215,4 @@ interface IFullTextSearchPlatform {
* @return IIndexDocument
*/
public function getDocument(string $providerId, string $documentId): IIndexDocument;
-
-
}
diff --git a/lib/public/FullTextSearch/IFullTextSearchProvider.php b/lib/public/FullTextSearch/IFullTextSearchProvider.php
index f9a56b40e85..34b9bdfc512 100644
--- a/lib/public/FullTextSearch/IFullTextSearchProvider.php
+++ b/lib/public/FullTextSearch/IFullTextSearchProvider.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
namespace OCP\FullTextSearch;
-
use OCP\FullTextSearch\Model\IIndex;
use OCP\FullTextSearch\Model\IIndexDocument;
use OCP\FullTextSearch\Model\IIndexOptions;
@@ -316,5 +315,4 @@ interface IFullTextSearchProvider {
* @since 15.0.0
*/
public function unloadProvider();
-
}
diff --git a/lib/public/FullTextSearch/Model/IDocumentAccess.php b/lib/public/FullTextSearch/Model/IDocumentAccess.php
index 713a018e661..93fd7ae6e75 100644
--- a/lib/public/FullTextSearch/Model/IDocumentAccess.php
+++ b/lib/public/FullTextSearch/Model/IDocumentAccess.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OCP\FullTextSearch\Model;
-
/**
* Interface IDocumentAccess
*
@@ -255,5 +254,4 @@ interface IDocumentAccess {
* @return array
*/
public function getLinks(): array;
-
}
diff --git a/lib/public/FullTextSearch/Model/IIndex.php b/lib/public/FullTextSearch/Model/IIndex.php
index c63ddc19906..8272d7e78eb 100644
--- a/lib/public/FullTextSearch/Model/IIndex.php
+++ b/lib/public/FullTextSearch/Model/IIndex.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright 2018
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Maxence Lange <maxence@artificial-owl.com>
*
* @license GNU AGPL version 3 or any later version
@@ -26,7 +27,6 @@ declare(strict_types=1);
namespace OCP\FullTextSearch\Model;
-
/**
* Interface IIndex
*
@@ -45,27 +45,25 @@ namespace OCP\FullTextSearch\Model;
* @package OCP\FullTextSearch\Model
*/
interface IIndex {
+ public const INDEX_OK = 1;
+ public const INDEX_IGNORE = 2;
+ public const INDEX_META = 4;
+ public const INDEX_CONTENT = 8;
+ public const INDEX_PARTS = 16;
+ public const INDEX_FULL = 28;
+ public const INDEX_REMOVE = 32;
+ public const INDEX_DONE = 64;
+ public const INDEX_FAILED = 128;
- const INDEX_OK = 1;
- const INDEX_IGNORE = 2;
-
- const INDEX_META = 4;
- const INDEX_CONTENT = 8;
- const INDEX_PARTS = 16;
- const INDEX_FULL = 28;
- const INDEX_REMOVE = 32;
- const INDEX_DONE = 64;
- const INDEX_FAILED = 128;
-
- const ERROR_FAILED = 1;
- const ERROR_FAILED2 = 2;
- const ERROR_FAILED3 = 4;
+ public const ERROR_FAILED = 1;
+ public const ERROR_FAILED2 = 2;
+ public const ERROR_FAILED3 = 4;
- const ERROR_SEV_1 = 1;
- const ERROR_SEV_2 = 2;
- const ERROR_SEV_3 = 3;
- const ERROR_SEV_4 = 4;
+ public const ERROR_SEV_1 = 1;
+ public const ERROR_SEV_2 = 2;
+ public const ERROR_SEV_3 = 3;
+ public const ERROR_SEV_4 = 4;
/**
@@ -282,6 +280,4 @@ interface IIndex {
* @return int
*/
public function getLastIndex(): int;
-
-
}
diff --git a/lib/public/FullTextSearch/Model/IIndexDocument.php b/lib/public/FullTextSearch/Model/IIndexDocument.php
index e86582b9234..cc9e6a71782 100644
--- a/lib/public/FullTextSearch/Model/IIndexDocument.php
+++ b/lib/public/FullTextSearch/Model/IIndexDocument.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright 2018
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Maxence Lange <maxence@artificial-owl.com>
*
* @license GNU AGPL version 3 or any later version
@@ -26,7 +27,6 @@ declare(strict_types=1);
namespace OCP\FullTextSearch\Model;
-
/**
* Class IIndexDocument
*
@@ -44,10 +44,8 @@ namespace OCP\FullTextSearch\Model;
* @package OC\FullTextSearch\Model
*/
interface IIndexDocument {
-
-
- const NOT_ENCODED = 0;
- const ENCODED_BASE64 = 1;
+ public const NOT_ENCODED = 0;
+ public const ENCODED_BASE64 = 1;
@@ -68,7 +66,7 @@ interface IIndexDocument {
*
* @return string
*/
- public function getProviderId(): string;
+ public function getProviderId(): string;
/**
@@ -82,7 +80,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function setIndex(IIndex $index): IIndexDocument;
+ public function setIndex(IIndex $index): IIndexDocument;
/**
* Get the Index.
@@ -91,7 +89,7 @@ interface IIndexDocument {
*
* @return IIndex
*/
- public function getIndex(): IIndex;
+ public function getIndex(): IIndex;
/**
* return if Index is defined.
@@ -112,7 +110,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function setModifiedTime(int $modifiedTime): IIndexDocument;
+ public function setModifiedTime(int $modifiedTime): IIndexDocument;
/**
* Get the modified time of the original document.
@@ -121,7 +119,7 @@ interface IIndexDocument {
*
* @return int
*/
- public function getModifiedTime(): int;
+ public function getModifiedTime(): int;
/**
* Check if the original document of the IIndexDocument is older than $time.
@@ -132,7 +130,7 @@ interface IIndexDocument {
*
* @return bool
*/
- public function isOlderThan(int $time): bool;
+ public function isOlderThan(int $time): bool;
/**
@@ -146,7 +144,7 @@ interface IIndexDocument {
*
* @return $this
*/
- public function setAccess(IDocumentAccess $access): IIndexDocument;
+ public function setAccess(IDocumentAccess $access): IIndexDocument;
/**
* Get the IDocumentAccess related to the original document.
@@ -155,7 +153,7 @@ interface IIndexDocument {
*
* @return IDocumentAccess
*/
- public function getAccess(): IDocumentAccess;
+ public function getAccess(): IDocumentAccess;
/**
@@ -167,7 +165,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function addTag(string $tag): IIndexDocument;
+ public function addTag(string $tag): IIndexDocument;
/**
* Set the list of tags assigned to the original document.
@@ -178,7 +176,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function setTags(array $tags): IIndexDocument;
+ public function setTags(array $tags): IIndexDocument;
/**
* Get the list of tags assigned to the original document.
@@ -187,7 +185,7 @@ interface IIndexDocument {
*
* @return array
*/
- public function getTags(): array;
+ public function getTags(): array;
/**
@@ -199,7 +197,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function addMetaTag(string $tag): IIndexDocument;
+ public function addMetaTag(string $tag): IIndexDocument;
/**
* Set the list of meta tags assigned to the original document.
@@ -210,7 +208,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function setMetaTags(array $tags): IIndexDocument;
+ public function setMetaTags(array $tags): IIndexDocument;
/**
* Get the list of meta tags assigned to the original document.
@@ -219,7 +217,7 @@ interface IIndexDocument {
*
* @return array
*/
- public function getMetaTags(): array;
+ public function getMetaTags(): array;
/**
@@ -232,7 +230,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function addSubTag(string $sub, string $tag): IIndexDocument;
+ public function addSubTag(string $sub, string $tag): IIndexDocument;
/**
* Set the list of sub tags assigned to the original document.
@@ -243,7 +241,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function setSubTags(array $tags): IIndexDocument;
+ public function setSubTags(array $tags): IIndexDocument;
/**
* Get the list of sub tags assigned to the original document.
@@ -256,7 +254,7 @@ interface IIndexDocument {
*
* @return array
*/
- public function getSubTags(bool $formatted = false): array;
+ public function getSubTags(bool $formatted = false): array;
/**
@@ -268,7 +266,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function setSource(string $source): IIndexDocument;
+ public function setSource(string $source): IIndexDocument;
/**
* Get the source of the original document.
@@ -277,7 +275,7 @@ interface IIndexDocument {
*
* @return string
*/
- public function getSource(): string;
+ public function getSource(): string;
/**
@@ -289,7 +287,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function setTitle(string $title): IIndexDocument;
+ public function setTitle(string $title): IIndexDocument;
/**
* Get the title of the original document.
@@ -298,7 +296,7 @@ interface IIndexDocument {
*
* @return string
*/
- public function getTitle(): string;
+ public function getTitle(): string;
/**
@@ -313,7 +311,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function setContent(string $content, int $encoded = 0): IIndexDocument;
+ public function setContent(string $content, int $encoded = 0): IIndexDocument;
/**
* Get the content of the original document.
@@ -322,7 +320,7 @@ interface IIndexDocument {
*
* @return string
*/
- public function getContent(): string;
+ public function getContent(): string;
/**
* Returns the type of the encoding on the content.
@@ -331,7 +329,7 @@ interface IIndexDocument {
*
* @return int
*/
- public function isContentEncoded(): int;
+ public function isContentEncoded(): int;
/**
* Return the size of the content.
@@ -340,7 +338,7 @@ interface IIndexDocument {
*
* @return int
*/
- public function getContentSize(): int;
+ public function getContentSize(): int;
/**
@@ -350,7 +348,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function initHash(): IIndexDocument;
+ public function initHash(): IIndexDocument;
/**
* Set the hash of the original document.
@@ -361,7 +359,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function setHash(string $hash): IIndexDocument;
+ public function setHash(string $hash): IIndexDocument;
/**
* Get the hash of the original document.
@@ -370,7 +368,7 @@ interface IIndexDocument {
*
* @return string
*/
- public function getHash(): string;
+ public function getHash(): string;
/**
@@ -386,7 +384,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function addPart(string $part, string $content): IIndexDocument;
+ public function addPart(string $part, string $content): IIndexDocument;
/**
* Set all parts and their content.
@@ -397,7 +395,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function setParts(array $parts): IIndexDocument;
+ public function setParts(array $parts): IIndexDocument;
/**
* Get all parts of the IIndexDocument.
@@ -406,7 +404,7 @@ interface IIndexDocument {
*
* @return array
*/
- public function getParts(): array;
+ public function getParts(): array;
/**
@@ -418,7 +416,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function setLink(string $link): IIndexDocument;
+ public function setLink(string $link): IIndexDocument;
/**
* Get the link.
@@ -427,7 +425,7 @@ interface IIndexDocument {
*
* @return string
*/
- public function getLink(): string;
+ public function getLink(): string;
/**
@@ -439,7 +437,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function setMore(array $more): IIndexDocument;
+ public function setMore(array $more): IIndexDocument;
/**
* Get more information.
@@ -448,7 +446,7 @@ interface IIndexDocument {
*
* @return array
*/
- public function getMore(): array;
+ public function getMore(): array;
/**
@@ -462,7 +460,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function addExcerpt(string $source, string $excerpt): IIndexDocument;
+ public function addExcerpt(string $source, string $excerpt): IIndexDocument;
/**
* Set all excerpts of the content of the original document.
@@ -473,7 +471,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function setExcerpts(array $excerpts): IIndexDocument;
+ public function setExcerpts(array $excerpts): IIndexDocument;
/**
* Get all excerpts of the content of the original document.
@@ -482,7 +480,7 @@ interface IIndexDocument {
*
* @return array
*/
- public function getExcerpts(): array;
+ public function getExcerpts(): array;
/**
@@ -495,7 +493,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function setScore(string $score): IIndexDocument;
+ public function setScore(string $score): IIndexDocument;
/**
* Get the score.
@@ -504,7 +502,7 @@ interface IIndexDocument {
*
* @return string
*/
- public function getScore(): string;
+ public function getScore(): string;
/**
@@ -521,7 +519,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function setInfo(string $info, string $value): IIndexDocument;
+ public function setInfo(string $info, string $value): IIndexDocument;
/**
* Get an information about a document. (string)
@@ -533,7 +531,7 @@ interface IIndexDocument {
*
* @return string
*/
- public function getInfo(string $info, string $default = ''): string;
+ public function getInfo(string $info, string $default = ''): string;
/**
* Set some information about the original document that will be available
@@ -549,7 +547,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function setInfoArray(string $info, array $value): IIndexDocument;
+ public function setInfoArray(string $info, array $value): IIndexDocument;
/**
* Get an information about a document. (array)
@@ -561,7 +559,7 @@ interface IIndexDocument {
*
* @return array
*/
- public function getInfoArray(string $info, array $default = []): array;
+ public function getInfoArray(string $info, array $default = []): array;
/**
* Set some information about the original document that will be available
@@ -577,7 +575,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function setInfoInt(string $info, int $value): IIndexDocument;
+ public function setInfoInt(string $info, int $value): IIndexDocument;
/**
* Get an information about a document. (int)
@@ -589,7 +587,7 @@ interface IIndexDocument {
*
* @return int
*/
- public function getInfoInt(string $info, int $default = 0): int;
+ public function getInfoInt(string $info, int $default = 0): int;
/**
* Set some information about the original document that will be available
@@ -605,7 +603,7 @@ interface IIndexDocument {
*
* @return IIndexDocument
*/
- public function setInfoBool(string $info, bool $value): IIndexDocument;
+ public function setInfoBool(string $info, bool $value): IIndexDocument;
/**
* Get an information about a document. (bool)
@@ -617,7 +615,7 @@ interface IIndexDocument {
*
* @return bool
*/
- public function getInfoBool(string $info, bool $default = false): bool;
+ public function getInfoBool(string $info, bool $default = false): bool;
/**
* Get all info.
@@ -626,6 +624,5 @@ interface IIndexDocument {
*
* @return array
*/
- public function getInfoAll(): array;
-
+ public function getInfoAll(): array;
}
diff --git a/lib/public/FullTextSearch/Model/IIndexOptions.php b/lib/public/FullTextSearch/Model/IIndexOptions.php
index daa8f5a0c7a..336456c9ae0 100644
--- a/lib/public/FullTextSearch/Model/IIndexOptions.php
+++ b/lib/public/FullTextSearch/Model/IIndexOptions.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OCP\FullTextSearch\Model;
-
/**
* Interface IIndexOptions
*
@@ -77,5 +76,4 @@ interface IIndexOptions {
* @return bool
*/
public function getOptionBool(string $option, bool $default): bool;
-
}
diff --git a/lib/public/FullTextSearch/Model/IRunner.php b/lib/public/FullTextSearch/Model/IRunner.php
index c4eecfa4894..a673689216e 100644
--- a/lib/public/FullTextSearch/Model/IRunner.php
+++ b/lib/public/FullTextSearch/Model/IRunner.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright 2018
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Maxence Lange <maxence@artificial-owl.com>
*
* @license GNU AGPL version 3 or any later version
@@ -26,7 +27,6 @@ declare(strict_types=1);
namespace OCP\FullTextSearch\Model;
-
/**
* Interface IRunner
*
@@ -42,11 +42,9 @@ namespace OCP\FullTextSearch\Model;
* @package OCP\FullTextSearch\Model
*/
interface IRunner {
-
-
- const RESULT_TYPE_SUCCESS = 1;
- const RESULT_TYPE_WARNING = 4;
- const RESULT_TYPE_FAIL = 9;
+ public const RESULT_TYPE_SUCCESS = 1;
+ public const RESULT_TYPE_WARNING = 4;
+ public const RESULT_TYPE_FAIL = 9;
/**
@@ -132,6 +130,4 @@ interface IRunner {
* @param int $type
*/
public function newIndexResult(IIndex $index, string $message, string $status, int $type);
-
-
}
diff --git a/lib/public/FullTextSearch/Model/ISearchOption.php b/lib/public/FullTextSearch/Model/ISearchOption.php
index bbd2ac4827a..6f25dd8ea65 100644
--- a/lib/public/FullTextSearch/Model/ISearchOption.php
+++ b/lib/public/FullTextSearch/Model/ISearchOption.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright 2018
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Maxence Lange <maxence@artificial-owl.com>
*
* @license GNU AGPL version 3 or any later version
@@ -26,7 +27,6 @@ declare(strict_types=1);
namespace OCP\FullTextSearch\Model;
-
/**
* @since 16.0.0
*
@@ -40,17 +40,17 @@ interface ISearchOption {
/**
* @since 16.0.0
*/
- const CHECKBOX = 'checkbox';
+ public const CHECKBOX = 'checkbox';
/**
* @since 16.0.0
*/
- const INPUT = 'input';
+ public const INPUT = 'input';
/**
* @since 16.0.0
*/
- const INPUT_SMALL = 'small';
+ public const INPUT_SMALL = 'small';
/**
@@ -163,5 +163,4 @@ interface ISearchOption {
* @return string
*/
public function getPlaceholder(): string;
-
}
diff --git a/lib/public/FullTextSearch/Model/ISearchRequest.php b/lib/public/FullTextSearch/Model/ISearchRequest.php
index 2453c1e871c..c45a58c8c0c 100644
--- a/lib/public/FullTextSearch/Model/ISearchRequest.php
+++ b/lib/public/FullTextSearch/Model/ISearchRequest.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OCP\FullTextSearch\Model;
-
/**
* Interface ISearchRequest
*
@@ -359,5 +358,4 @@ interface ISearchRequest {
* @since 17.0.0
*/
public function getSimpleQueries(): array;
-
}
diff --git a/lib/public/FullTextSearch/Model/ISearchRequestSimpleQuery.php b/lib/public/FullTextSearch/Model/ISearchRequestSimpleQuery.php
index ca11b0c9317..e228595fc53 100644
--- a/lib/public/FullTextSearch/Model/ISearchRequestSimpleQuery.php
+++ b/lib/public/FullTextSearch/Model/ISearchRequestSimpleQuery.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright 2018
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Maxence Lange <maxence@artificial-owl.com>
*
* @license GNU AGPL version 3 or any later version
@@ -26,7 +27,6 @@ declare(strict_types=1);
namespace OCP\FullTextSearch\Model;
-
/**
* Interface ISearchRequestSimpleQuery
*
@@ -40,19 +40,17 @@ namespace OCP\FullTextSearch\Model;
* @package OCP\FullTextSearch\Model
*/
interface ISearchRequestSimpleQuery {
-
-
- const COMPARE_TYPE_TEXT = 1;
- const COMPARE_TYPE_KEYWORD = 2;
- const COMPARE_TYPE_INT_EQ = 3;
- const COMPARE_TYPE_INT_GTE = 4;
- const COMPARE_TYPE_INT_GT = 5;
- const COMPARE_TYPE_INT_LTE = 6;
- const COMPARE_TYPE_INT_LT = 7;
- const COMPARE_TYPE_BOOL = 8;
- const COMPARE_TYPE_ARRAY = 9;
- const COMPARE_TYPE_REGEX = 10;
- const COMPARE_TYPE_WILDCARD = 11;
+ public const COMPARE_TYPE_TEXT = 1;
+ public const COMPARE_TYPE_KEYWORD = 2;
+ public const COMPARE_TYPE_INT_EQ = 3;
+ public const COMPARE_TYPE_INT_GTE = 4;
+ public const COMPARE_TYPE_INT_GT = 5;
+ public const COMPARE_TYPE_INT_LTE = 6;
+ public const COMPARE_TYPE_INT_LT = 7;
+ public const COMPARE_TYPE_BOOL = 8;
+ public const COMPARE_TYPE_ARRAY = 9;
+ public const COMPARE_TYPE_REGEX = 10;
+ public const COMPARE_TYPE_WILDCARD = 11;
/**
@@ -130,5 +128,4 @@ interface ISearchRequestSimpleQuery {
* @since 17.0.0
*/
public function addValueBool(bool $value): ISearchRequestSimpleQuery;
-
}
diff --git a/lib/public/FullTextSearch/Model/ISearchResult.php b/lib/public/FullTextSearch/Model/ISearchResult.php
index 775c4314bb1..cde996bc37c 100644
--- a/lib/public/FullTextSearch/Model/ISearchResult.php
+++ b/lib/public/FullTextSearch/Model/ISearchResult.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OCP\FullTextSearch\Model;
-
use OCP\FullTextSearch\IFullTextSearchProvider;
/**
@@ -188,5 +187,4 @@ interface ISearchResult {
* @return ISearchResult
*/
public function setTimedOut(bool $timedOut): ISearchResult;
-
}
diff --git a/lib/public/FullTextSearch/Model/ISearchTemplate.php b/lib/public/FullTextSearch/Model/ISearchTemplate.php
index 43d1a586a1d..f1579871482 100644
--- a/lib/public/FullTextSearch/Model/ISearchTemplate.php
+++ b/lib/public/FullTextSearch/Model/ISearchTemplate.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OCP\FullTextSearch\Model;
-
use OCP\FullTextSearch\IFullTextSearchProvider;
/**
@@ -169,5 +168,4 @@ interface ISearchTemplate {
* @return array
*/
public function getNavigationOptions(): array;
-
}
diff --git a/lib/public/FullTextSearch/Service/IIndexService.php b/lib/public/FullTextSearch/Service/IIndexService.php
index 3c3bd4bbe1f..6cce5267b2c 100644
--- a/lib/public/FullTextSearch/Service/IIndexService.php
+++ b/lib/public/FullTextSearch/Service/IIndexService.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OCP\FullTextSearch\Service;
-
use OCP\FullTextSearch\Model\IIndex;
/**
@@ -103,5 +102,4 @@ interface IIndexService {
* @param array $indexes
*/
public function updateIndexes(array $indexes);
-
}
diff --git a/lib/public/FullTextSearch/Service/IProviderService.php b/lib/public/FullTextSearch/Service/IProviderService.php
index 8d4b68e4136..2666511e60d 100644
--- a/lib/public/FullTextSearch/Service/IProviderService.php
+++ b/lib/public/FullTextSearch/Service/IProviderService.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OCP\FullTextSearch\Service;
-
/**
* Interface IProviderService
*
@@ -55,6 +54,4 @@ interface IProviderService {
* @since 15.0.0
*/
public function addJavascriptAPI();
-
-
}
diff --git a/lib/public/FullTextSearch/Service/ISearchService.php b/lib/public/FullTextSearch/Service/ISearchService.php
index 8c2152855a1..abe7e4c5f9d 100644
--- a/lib/public/FullTextSearch/Service/ISearchService.php
+++ b/lib/public/FullTextSearch/Service/ISearchService.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OCP\FullTextSearch\Service;
-
use OCP\FullTextSearch\Model\ISearchRequest;
use OCP\FullTextSearch\Model\ISearchResult;
@@ -79,5 +78,4 @@ interface ISearchService {
* @return ISearchResult[]
*/
public function search(string $userId, ISearchRequest $searchRequest): array;
-
}
diff --git a/lib/public/GlobalScale/IConfig.php b/lib/public/GlobalScale/IConfig.php
index 943680c44d2..65080ef7fc1 100644
--- a/lib/public/GlobalScale/IConfig.php
+++ b/lib/public/GlobalScale/IConfig.php
@@ -48,5 +48,4 @@ interface IConfig {
* @return bool
*/
public function onlyInternalFederation();
-
}
diff --git a/lib/public/Group/Backend/IGetDisplayNameBackend.php b/lib/public/Group/Backend/IGetDisplayNameBackend.php
index 4a27a29ff7f..13e9ca204f2 100644
--- a/lib/public/Group/Backend/IGetDisplayNameBackend.php
+++ b/lib/public/Group/Backend/IGetDisplayNameBackend.php
@@ -38,5 +38,4 @@ interface IGetDisplayNameBackend {
* @since 17.0.0
*/
public function getDisplayName(string $gid): string;
-
}
diff --git a/lib/public/Group/Backend/ISetDisplayNameBackend.php b/lib/public/Group/Backend/ISetDisplayNameBackend.php
index f29d6e5704e..244fa5c351c 100644
--- a/lib/public/Group/Backend/ISetDisplayNameBackend.php
+++ b/lib/public/Group/Backend/ISetDisplayNameBackend.php
@@ -38,5 +38,4 @@ interface ISetDisplayNameBackend {
* @since 18.0.0
*/
public function setDisplayName(string $gid, string $displayName): bool;
-
}
diff --git a/lib/public/Group/Events/BeforeGroupCreatedEvent.php b/lib/public/Group/Events/BeforeGroupCreatedEvent.php
index b9bb1788f84..5ed5a5311e5 100644
--- a/lib/public/Group/Events/BeforeGroupCreatedEvent.php
+++ b/lib/public/Group/Events/BeforeGroupCreatedEvent.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
namespace OCP\Group\Events;
use OCP\EventDispatcher\Event;
-use OCP\IGroup;
/**
* @since 18.0.0
@@ -52,5 +51,4 @@ class BeforeGroupCreatedEvent extends Event {
public function getName(): string {
return $this->name;
}
-
}
diff --git a/lib/public/Group/Events/BeforeGroupDeletedEvent.php b/lib/public/Group/Events/BeforeGroupDeletedEvent.php
index 8cfe28cf9d9..af44d4c054e 100644
--- a/lib/public/Group/Events/BeforeGroupDeletedEvent.php
+++ b/lib/public/Group/Events/BeforeGroupDeletedEvent.php
@@ -52,5 +52,4 @@ class BeforeGroupDeletedEvent extends Event {
public function getGroup(): IGroup {
return $this->group;
}
-
}
diff --git a/lib/public/Group/Events/BeforeUserAddedEvent.php b/lib/public/Group/Events/BeforeUserAddedEvent.php
index 2e6d6d58d7a..c8ebc24e3d9 100644
--- a/lib/public/Group/Events/BeforeUserAddedEvent.php
+++ b/lib/public/Group/Events/BeforeUserAddedEvent.php
@@ -65,5 +65,4 @@ class BeforeUserAddedEvent extends Event {
public function getUser(): IUser {
return $this->user;
}
-
}
diff --git a/lib/public/Group/Events/BeforeUserRemovedEvent.php b/lib/public/Group/Events/BeforeUserRemovedEvent.php
index 570297e46f8..cc657f952e6 100644
--- a/lib/public/Group/Events/BeforeUserRemovedEvent.php
+++ b/lib/public/Group/Events/BeforeUserRemovedEvent.php
@@ -65,5 +65,4 @@ class BeforeUserRemovedEvent extends Event {
public function getUser(): IUser {
return $this->user;
}
-
}
diff --git a/lib/public/Group/Events/GroupCreatedEvent.php b/lib/public/Group/Events/GroupCreatedEvent.php
index 3f19c1fec27..ac9af26307e 100644
--- a/lib/public/Group/Events/GroupCreatedEvent.php
+++ b/lib/public/Group/Events/GroupCreatedEvent.php
@@ -52,5 +52,4 @@ class GroupCreatedEvent extends Event {
public function getGroup(): IGroup {
return $this->group;
}
-
}
diff --git a/lib/public/Group/Events/GroupDeletedEvent.php b/lib/public/Group/Events/GroupDeletedEvent.php
index a4b921fc18b..267eb806264 100644
--- a/lib/public/Group/Events/GroupDeletedEvent.php
+++ b/lib/public/Group/Events/GroupDeletedEvent.php
@@ -52,5 +52,4 @@ class GroupDeletedEvent extends Event {
public function getGroup(): IGroup {
return $this->group;
}
-
}
diff --git a/lib/public/Group/Events/UserAddedEvent.php b/lib/public/Group/Events/UserAddedEvent.php
index 7f487844943..e88487a02cf 100644
--- a/lib/public/Group/Events/UserAddedEvent.php
+++ b/lib/public/Group/Events/UserAddedEvent.php
@@ -65,5 +65,4 @@ class UserAddedEvent extends Event {
public function getUser(): IUser {
return $this->user;
}
-
}
diff --git a/lib/public/Group/Events/UserRemovedEvent.php b/lib/public/Group/Events/UserRemovedEvent.php
index e66be62fe6d..953bb5f220f 100644
--- a/lib/public/Group/Events/UserRemovedEvent.php
+++ b/lib/public/Group/Events/UserRemovedEvent.php
@@ -65,5 +65,4 @@ class UserRemovedEvent extends Event {
public function getUser(): IUser {
return $this->user;
}
-
}
diff --git a/lib/public/GroupInterface.php b/lib/public/GroupInterface.php
index 58eaa9a4ec9..a9a7febac9d 100644
--- a/lib/public/GroupInterface.php
+++ b/lib/public/GroupInterface.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Knut Ahlers <knut@ahlers.me>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -47,18 +48,18 @@ interface GroupInterface {
/**
* actions that user backends can define
*/
- const CREATE_GROUP = 0x00000001;
- const DELETE_GROUP = 0x00000010;
- const ADD_TO_GROUP = 0x00000100;
- const REMOVE_FROM_GOUP = 0x00001000; // oops
- const REMOVE_FROM_GROUP = 0x00001000;
+ public const CREATE_GROUP = 0x00000001;
+ public const DELETE_GROUP = 0x00000010;
+ public const ADD_TO_GROUP = 0x00000100;
+ public const REMOVE_FROM_GOUP = 0x00001000; // oops
+ public const REMOVE_FROM_GROUP = 0x00001000;
//OBSOLETE const GET_DISPLAYNAME = 0x00010000;
- const COUNT_USERS = 0x00100000;
- const GROUP_DETAILS = 0x01000000;
+ public const COUNT_USERS = 0x00100000;
+ public const GROUP_DETAILS = 0x01000000;
/**
* @since 13.0.0
*/
- const IS_ADMIN = 0x10000000;
+ public const IS_ADMIN = 0x10000000;
/**
* Check if backend implements actions
@@ -123,5 +124,4 @@ interface GroupInterface {
* @since 4.5.0
*/
public function usersInGroup($gid, $search = '', $limit = -1, $offset = 0);
-
}
diff --git a/lib/public/Http/Client/LocalServerException.php b/lib/public/Http/Client/LocalServerException.php
new file mode 100644
index 00000000000..829d747715f
--- /dev/null
+++ b/lib/public/Http/Client/LocalServerException.php
@@ -0,0 +1,33 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2020 Joas Schilling <coding@schilljs.com>
+ *
+ * @author 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\Http\Client;
+
+/**
+ * @since 19.0.0
+ */
+class LocalServerException extends \RuntimeException {
+}
diff --git a/lib/public/IAddressBook.php b/lib/public/IAddressBook.php
index 0bce0f44dc0..b2c9a103c2c 100644
--- a/lib/public/IAddressBook.php
+++ b/lib/public/IAddressBook.php
@@ -71,6 +71,8 @@ namespace OCP {
* - 'types' boolean (since 15.0.0) If set to true, fields that come with a TYPE property will be an array
* example: ['id' => 5, 'FN' => 'Thomas Tanghus', 'EMAIL' => ['type => 'HOME', 'value' => 'g@h.i']]
* - 'escape_like_param' - If set to false wildcards _ and % are not escaped
+ * - 'limit' - Set a numeric limit for the search results
+ * - 'offset' - Set the offset for the limited search results
* @return array an array of contacts which are arrays of key-value-pairs
* example result:
* [
diff --git a/lib/public/IAvatarManager.php b/lib/public/IAvatarManager.php
index 4d9b3a6e546..75ea886c16a 100644
--- a/lib/public/IAvatarManager.php
+++ b/lib/public/IAvatarManager.php
@@ -56,5 +56,4 @@ interface IAvatarManager {
* @since 16.0.0
*/
public function getGuestAvatar(string $name): IAvatar;
-
}
diff --git a/lib/public/ICacheFactory.php b/lib/public/ICacheFactory.php
index d94f8fb6680..4f9a3c2387b 100644
--- a/lib/public/ICacheFactory.php
+++ b/lib/public/ICacheFactory.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -33,7 +34,7 @@ namespace OCP;
* @package OCP
* @since 7.0.0
*/
-interface ICacheFactory{
+interface ICacheFactory {
/**
* Get a distributed memory cache instance
*
diff --git a/lib/public/IConfig.php b/lib/public/IConfig.php
index a46dff322c5..59993d27f79 100644
--- a/lib/public/IConfig.php
+++ b/lib/public/IConfig.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@statuscode.ch>
@@ -46,7 +47,7 @@ interface IConfig {
/**
* @since 8.2.0
*/
- const SENSITIVE_VALUE = '***REMOVED SENSITIVE VALUE***';
+ public const SENSITIVE_VALUE = '***REMOVED SENSITIVE VALUE***';
/**
* Sets and deletes system wide values
diff --git a/lib/public/IDBConnection.php b/lib/public/IDBConnection.php
index 5be4935906d..5e5543f10cf 100644
--- a/lib/public/IDBConnection.php
+++ b/lib/public/IDBConnection.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Ole Ostergaard <ole.c.ostergaard@gmail.com>
@@ -37,6 +38,7 @@
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP;
+
use Doctrine\DBAL\Schema\Schema;
use OCP\DB\QueryBuilder\IQueryBuilder;
@@ -47,9 +49,10 @@ use OCP\DB\QueryBuilder\IQueryBuilder;
* @since 6.0.0
*/
interface IDBConnection {
-
- const ADD_MISSING_INDEXES_EVENT = self::class . '::ADD_MISSING_INDEXES';
- const CHECK_MISSING_INDEXES_EVENT = self::class . '::CHECK_MISSING_INDEXES';
+ public const ADD_MISSING_INDEXES_EVENT = self::class . '::ADD_MISSING_INDEXES';
+ public const CHECK_MISSING_INDEXES_EVENT = self::class . '::CHECK_MISSING_INDEXES';
+ public const ADD_MISSING_COLUMNS_EVENT = self::class . '::ADD_MISSING_COLUMNS';
+ public const CHECK_MISSING_COLUMNS_EVENT = self::class . '::CHECK_MISSING_COLUMNS';
/**
* Gets the QueryBuilder for the connection.
@@ -81,7 +84,7 @@ interface IDBConnection {
* @return \Doctrine\DBAL\Driver\Statement The executed statement.
* @since 8.0.0
*/
- public function executeQuery($query, array $params = array(), $types = array());
+ public function executeQuery($query, array $params = [], $types = []);
/**
* Executes an SQL INSERT/UPDATE/DELETE query with the given parameters
@@ -95,7 +98,7 @@ interface IDBConnection {
* @return integer The number of affected rows.
* @since 8.0.0
*/
- public function executeUpdate($query, array $params = array(), array $types = array());
+ public function executeUpdate($query, array $params = [], array $types = []);
/**
* Used to get the id of the just inserted element
diff --git a/lib/public/IImage.php b/lib/public/IImage.php
index 67db6b097ef..aa1cf344e5f 100644
--- a/lib/public/IImage.php
+++ b/lib/public/IImage.php
@@ -5,6 +5,7 @@
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Olivier Paroz <github@oparoz.com>
+ * @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @license AGPL-3.0
@@ -190,4 +191,43 @@ interface IImage {
* @since 8.1.0
*/
public function scaleDownToFit($maxWidth, $maxHeight);
+
+ /**
+ * create a copy of this image
+ *
+ * @return IImage
+ * @since 19.0.0
+ */
+ public function copy(): IImage;
+
+ /**
+ * create a new cropped copy of this image
+ *
+ * @param int $x Horizontal position
+ * @param int $y Vertical position
+ * @param int $w Width
+ * @param int $h Height
+ * @return IImage
+ * @since 19.0.0
+ */
+ public function cropCopy(int $x, int $y, int $w, int $h): IImage;
+
+ /**
+ * create a new resized copy of this image
+ *
+ * @param int $width
+ * @param int $height
+ * @return IImage
+ * @since 19.0.0
+ */
+ public function preciseResizeCopy(int $width, int $height): IImage;
+
+ /**
+ * create a new resized copy of this image
+ *
+ * @param integer $maxSize The maximum size of either the width or height.
+ * @return IImage
+ * @since 19.0.0
+ */
+ public function resizeCopy(int $maxSize): IImage;
}
diff --git a/lib/public/IL10N.php b/lib/public/IL10N.php
index 0df21639c62..88b9fbb1913 100644
--- a/lib/public/IL10N.php
+++ b/lib/public/IL10N.php
@@ -11,7 +11,7 @@ declare(strict_types=1);
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
- * @author Thomas Citharel <tcit@tcit.fr>
+ * @author Thomas Citharel <nextcloud@tcit.fr>
*
* @license AGPL-3.0
*
diff --git a/lib/public/ILogger.php b/lib/public/ILogger.php
index 878f795e113..067e4152115 100644
--- a/lib/public/ILogger.php
+++ b/lib/public/ILogger.php
@@ -7,6 +7,7 @@ declare(strict_types=1);
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bernhard Posselt <dev@bernhard-posselt.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jan-Christoph Borchardt <hey@jancborchardt.net>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -43,23 +44,23 @@ interface ILogger {
/**
* @since 14.0.0
*/
- const DEBUG=0;
+ public const DEBUG=0;
/**
* @since 14.0.0
*/
- const INFO=1;
+ public const INFO=1;
/**
* @since 14.0.0
*/
- const WARN=2;
+ public const WARN=2;
/**
* @since 14.0.0
*/
- const ERROR=3;
+ public const ERROR=3;
/**
* @since 14.0.0
*/
- const FATAL=4;
+ public const FATAL=4;
/**
* System is unusable.
diff --git a/lib/public/INavigationManager.php b/lib/public/INavigationManager.php
index 1e8e461341b..198a9b11a3e 100644
--- a/lib/public/INavigationManager.php
+++ b/lib/public/INavigationManager.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Julius Härtl <jus@bitgrid.net>
@@ -47,19 +48,19 @@ interface INavigationManager {
* Navigation entries of the app navigation
* @since 16.0.0
*/
- const TYPE_APPS = 'link';
+ public const TYPE_APPS = 'link';
/**
* Navigation entries of the settings navigation
* @since 16.0.0
*/
- const TYPE_SETTINGS = 'settings';
+ public const TYPE_SETTINGS = 'settings';
/**
* Navigation entries for public page footer navigation
* @since 16.0.0
*/
- const TYPE_GUEST = 'guest';
+ public const TYPE_GUEST = 'guest';
/**
* Creates a new navigation entry
diff --git a/lib/public/IPreview.php b/lib/public/IPreview.php
index b377d285acb..aa7bf559dff 100644
--- a/lib/public/IPreview.php
+++ b/lib/public/IPreview.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -48,10 +49,10 @@ interface IPreview {
/**
* @since 9.2.0
*/
- const EVENT = self::class . ':' . 'PreviewRequested';
+ public const EVENT = self::class . ':' . 'PreviewRequested';
- const MODE_FILL = 'fill';
- const MODE_COVER = 'cover';
+ public const MODE_FILL = 'fill';
+ public const MODE_COVER = 'cover';
/**
* In order to improve lazy loading a closure can be registered which will be
@@ -115,4 +116,17 @@ interface IPreview {
* @since 8.0.0
*/
public function isAvailable(\OCP\Files\FileInfo $file);
+
+ /**
+ * Generates previews of a file
+ *
+ * @param File $file
+ * @param array $specifications
+ * @param string $mimeType
+ * @return ISimpleFile the last preview that was generated
+ * @throws NotFoundException
+ * @throws \InvalidArgumentException if the preview would be invalid (in case the original image is invalid)
+ * @since 19.0.0
+ */
+ public function generatePreviews(File $file, array $specifications, $mimeType = null);
}
diff --git a/lib/public/IRequest.php b/lib/public/IRequest.php
index 05ba1055be3..ee041864899 100644
--- a/lib/public/IRequest.php
+++ b/lib/public/IRequest.php
@@ -6,7 +6,6 @@ declare(strict_types=1);
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
- * @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
@@ -73,37 +72,37 @@ interface IRequest {
/**
* @since 9.1.0
*/
- const USER_AGENT_CLIENT_ANDROID = '/^Mozilla\/5\.0 \(Android\) (ownCloud|Nextcloud)\-android.*$/';
+ public const USER_AGENT_CLIENT_ANDROID = '/^Mozilla\/5\.0 \(Android\) (ownCloud|Nextcloud)\-android.*$/';
/**
* @since 13.0.0
*/
- const USER_AGENT_TALK_ANDROID = '/^Mozilla\/5\.0 \(Android\) Nextcloud\-Talk v.*$/';
+ public const USER_AGENT_TALK_ANDROID = '/^Mozilla\/5\.0 \(Android\) Nextcloud\-Talk v.*$/';
/**
* @since 9.1.0
*/
- const USER_AGENT_CLIENT_DESKTOP = '/^Mozilla\/5\.0 \([A-Za-z ]+\) (mirall|csyncoC)\/.*$/';
+ public const USER_AGENT_CLIENT_DESKTOP = '/^Mozilla\/5\.0 \([A-Za-z ]+\) (mirall|csyncoC)\/.*$/';
/**
* @since 9.1.0
*/
- const USER_AGENT_CLIENT_IOS = '/^Mozilla\/5\.0 \(iOS\) (ownCloud|Nextcloud)\-iOS.*$/';
+ public const USER_AGENT_CLIENT_IOS = '/^Mozilla\/5\.0 \(iOS\) (ownCloud|Nextcloud)\-iOS.*$/';
/**
* @since 13.0.0
*/
- const USER_AGENT_TALK_IOS = '/^Mozilla\/5\.0 \(iOS\) Nextcloud\-Talk v.*$/';
+ public const USER_AGENT_TALK_IOS = '/^Mozilla\/5\.0 \(iOS\) Nextcloud\-Talk v.*$/';
/**
* @since 13.0.1
*/
- const USER_AGENT_OUTLOOK_ADDON = '/^Mozilla\/5\.0 \([A-Za-z ]+\) Nextcloud\-Outlook v.*$/';
+ public const USER_AGENT_OUTLOOK_ADDON = '/^Mozilla\/5\.0 \([A-Za-z ]+\) Nextcloud\-Outlook v.*$/';
/**
* @since 13.0.1
*/
- const USER_AGENT_THUNDERBIRD_ADDON = '/^Mozilla\/5\.0 \([A-Za-z ]+\) Nextcloud\-Thunderbird v.*$/';
+ public const USER_AGENT_THUNDERBIRD_ADDON = '/^Mozilla\/5\.0 \([A-Za-z ]+\) Nextcloud\-Thunderbird v.*$/';
/**
* @param string $name
diff --git a/lib/public/ISearch.php b/lib/public/ISearch.php
index 7d1940983e1..747b598e669 100644
--- a/lib/public/ISearch.php
+++ b/lib/public/ISearch.php
@@ -3,7 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Andrew Brown <andrew@casabrown.com>
- * @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jakob Sack <mail@jakobsack.de>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -26,7 +26,6 @@
namespace OCP;
-
/**
* Small Interface for Search
* @since 7.0.0
@@ -42,7 +41,7 @@ interface ISearch {
* @return array An array of OCP\Search\Result's
* @since 8.0.0
*/
- public function searchPaged($query, array $inApps = array(), $page = 1, $size = 30);
+ public function searchPaged($query, array $inApps = [], $page = 1, $size = 30);
/**
* Register a new search provider to search with
@@ -50,7 +49,7 @@ interface ISearch {
* @param array $options optional
* @since 7.0.0
*/
- public function registerProvider($class, array $options = array());
+ public function registerProvider($class, array $options = []);
/**
* Remove one existing search provider
@@ -64,5 +63,4 @@ interface ISearch {
* @since 7.0.0
*/
public function clearProviders();
-
}
diff --git a/lib/public/IServerContainer.php b/lib/public/IServerContainer.php
index 7443f32bfe3..40f8d93f350 100644
--- a/lib/public/IServerContainer.php
+++ b/lib/public/IServerContainer.php
@@ -47,6 +47,7 @@
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP;
+
use OCP\Federation\ICloudFederationFactory;
use OCP\Federation\ICloudFederationProviderManager;
use OCP\Log\ILogFactory;
diff --git a/lib/public/ITagManager.php b/lib/public/ITagManager.php
index 98c3f831a74..46e1ba06297 100644
--- a/lib/public/ITagManager.php
+++ b/lib/public/ITagManager.php
@@ -3,10 +3,10 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bernhard Reiter <ockham@raz.or.at>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Tanghus <thomas@tanghus.net>
- * @author Vincent Petry <pvince81@owncloud.com>
*
* @license AGPL-3.0
*
@@ -59,6 +59,6 @@ interface ITagManager {
* logged in user
* @return \OCP\ITags
* @since 6.0.0 - parameter $includeShared and $userId were added in 8.0.0
- */
- public function load($type, $defaultTags = array(), $includeShared = false, $userId = null);
+ */
+ public function load($type, $defaultTags = [], $includeShared = false, $userId = null);
}
diff --git a/lib/public/ITags.php b/lib/public/ITags.php
index 35469f4f804..a21788260d1 100644
--- a/lib/public/ITags.php
+++ b/lib/public/ITags.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bernhard Reiter <ockham@raz.or.at>
+ * @author Daniel Kesselberg <mail@danielkesselberg.de>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Tanghus <thomas@tanghus.net>
@@ -232,5 +233,4 @@ interface ITags {
* @since 6.0.0
*/
public function delete($names);
-
}
diff --git a/lib/public/IURLGenerator.php b/lib/public/IURLGenerator.php
index ac680654b50..81f5d449484 100644
--- a/lib/public/IURLGenerator.php
+++ b/lib/public/IURLGenerator.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Julius Härtl <jus@bitgrid.net>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -42,7 +43,7 @@ interface IURLGenerator {
* @return string the url
* @since 6.0.0
*/
- public function linkToRoute(string $routeName, array $arguments = array()): string;
+ public function linkToRoute(string $routeName, array $arguments = []): string;
/**
* Returns the absolute URL for a route
@@ -51,7 +52,7 @@ interface IURLGenerator {
* @return string the absolute url
* @since 8.0.0
*/
- public function linkToRouteAbsolute(string $routeName, array $arguments = array()): string;
+ public function linkToRouteAbsolute(string $routeName, array $arguments = []): string;
/**
* @param string $routeName
@@ -70,7 +71,7 @@ interface IURLGenerator {
* @return string the url
* @since 6.0.0
*/
- public function linkTo(string $appName, string $file, array $args = array()): string;
+ public function linkTo(string $appName, string $file, array $args = []): string;
/**
* Returns the link to an image, like linkTo but only with prepending img/
diff --git a/lib/public/IUser.php b/lib/public/IUser.php
index c05403cc236..910c1a06d9d 100644
--- a/lib/public/IUser.php
+++ b/lib/public/IUser.php
@@ -28,8 +28,6 @@
namespace OCP;
-use OCP\UserInterface;
-
/**
* Interface IUser
*
diff --git a/lib/public/IUserBackend.php b/lib/public/IUserBackend.php
index 93ec41da86a..e96211fac2f 100644
--- a/lib/public/IUserBackend.php
+++ b/lib/public/IUserBackend.php
@@ -46,5 +46,4 @@ interface IUserBackend {
* @since 8.0.0
*/
public function getBackendName();
-
}
diff --git a/lib/public/IUserManager.php b/lib/public/IUserManager.php
index 7985c1bd6f4..bacfba90ff9 100644
--- a/lib/public/IUserManager.php
+++ b/lib/public/IUserManager.php
@@ -30,7 +30,6 @@
namespace OCP;
-
/**
* Class Manager
*
@@ -49,7 +48,7 @@ namespace OCP;
* @since 8.0.0
*/
interface IUserManager {
- /**
+ /**
* register a user backend
*
* @param \OCP\UserInterface $backend
diff --git a/lib/public/L10N/IFactory.php b/lib/public/L10N/IFactory.php
index 44f800bc262..b9e6e603aa8 100644
--- a/lib/public/L10N/IFactory.php
+++ b/lib/public/L10N/IFactory.php
@@ -9,7 +9,7 @@
* @author Julius Härtl <jus@bitgrid.net>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
- * @author Thomas Citharel <tcit@tcit.fr>
+ * @author Thomas Citharel <nextcloud@tcit.fr>
*
* @license AGPL-3.0
*
diff --git a/lib/public/LDAP/ILDAPProvider.php b/lib/public/LDAP/ILDAPProvider.php
index 25127987eef..9a9ce32d398 100644
--- a/lib/public/LDAP/ILDAPProvider.php
+++ b/lib/public/LDAP/ILDAPProvider.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, Roger Szabo (roger.szabo@web.de)
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Roger Szabo <roger.szabo@web.de>
* @author root <root@localhost.localdomain>
@@ -76,7 +77,7 @@ interface ILDAPProvider {
public function sanitizeDN($dn);
/**
- * Return a new LDAP connection resource for the specified user.
+ * Return a new LDAP connection resource for the specified user.
* @param string $uid user id
* @return resource of the LDAP connection
* @since 11.0.0
@@ -157,5 +158,4 @@ interface ILDAPProvider {
* @since 13.0.0
*/
public function getLDAPGroupMemberAssoc($gid);
-
}
diff --git a/lib/public/Lock/ILockingProvider.php b/lib/public/Lock/ILockingProvider.php
index 4403b091993..34f69abdc09 100644
--- a/lib/public/Lock/ILockingProvider.php
+++ b/lib/public/Lock/ILockingProvider.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -37,11 +38,11 @@ interface ILockingProvider {
/**
* @since 8.1.0
*/
- const LOCK_SHARED = 1;
+ public const LOCK_SHARED = 1;
/**
* @since 8.1.0
*/
- const LOCK_EXCLUSIVE = 2;
+ public const LOCK_EXCLUSIVE = 2;
/**
* @param string $path
diff --git a/lib/public/Lock/ManuallyLockedException.php b/lib/public/Lock/ManuallyLockedException.php
index 12567456e18..0f5cd6281fd 100644
--- a/lib/public/Lock/ManuallyLockedException.php
+++ b/lib/public/Lock/ManuallyLockedException.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
namespace OCP\Lock;
-
/**
* Class ManuallyLockedException
*
@@ -86,5 +85,4 @@ class ManuallyLockedException extends LockedException {
public function getOwner(): ?string {
return $this->owner;
}
-
}
diff --git a/lib/public/Log/IDataLogger.php b/lib/public/Log/IDataLogger.php
index b5d3aa3075b..20cf88a4abc 100644
--- a/lib/public/Log/IDataLogger.php
+++ b/lib/public/Log/IDataLogger.php
@@ -1,5 +1,7 @@
<?php
+
declare(strict_types=1);
+
/**
* @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
@@ -18,7 +20,7 @@ declare(strict_types=1);
* 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/>.
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
@@ -38,5 +40,4 @@ interface IDataLogger {
* @since 18.0.1
*/
public function logData(string $message, array $data, array $context = []): void;
-
}
diff --git a/lib/public/Log/RotationTrait.php b/lib/public/Log/RotationTrait.php
index 0b86b7c42e3..299bbbcb555 100644
--- a/lib/public/Log/RotationTrait.php
+++ b/lib/public/Log/RotationTrait.php
@@ -67,5 +67,4 @@ trait RotationTrait {
}
return false;
}
-
}
diff --git a/lib/public/Mail/Events/BeforeMessageSent.php b/lib/public/Mail/Events/BeforeMessageSent.php
new file mode 100644
index 00000000000..f9dc834c9b6
--- /dev/null
+++ b/lib/public/Mail/Events/BeforeMessageSent.php
@@ -0,0 +1,56 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright 2020 Arne Hamann <github@arne.email>
+ *
+ * @author Arne Hamann <kontakt+github@arne.email>
+ *
+ * @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\Mail\Events;
+
+use OCP\EventDispatcher\Event;
+use OCP\Mail\IMessage;
+
+/**
+ * @since 19.0.0
+ */
+class BeforeMessageSent extends Event {
+
+ /** @var IMessage */
+ private $message;
+
+ /**
+ * @param IMessage $message
+ * @since 19.0.0
+ */
+ public function __construct(IMessage $message) {
+ parent::__construct();
+ $this->message = $message;
+ }
+
+ /**
+ * @return IMessage
+ * @since 19.0.0
+ */
+ public function getMessage(): IMessage {
+ return $this->message;
+ }
+}
diff --git a/lib/public/Mail/IAttachment.php b/lib/public/Mail/IAttachment.php
index 5fed79b30e7..5cceb06655e 100644
--- a/lib/public/Mail/IAttachment.php
+++ b/lib/public/Mail/IAttachment.php
@@ -55,5 +55,4 @@ interface IAttachment {
* @since 13.0.0
*/
public function setBody(string $body): IAttachment;
-
}
diff --git a/lib/public/Mail/IEMailTemplate.php b/lib/public/Mail/IEMailTemplate.php
index 8950f18e31c..70046d5c508 100644
--- a/lib/public/Mail/IEMailTemplate.php
+++ b/lib/public/Mail/IEMailTemplate.php
@@ -140,10 +140,11 @@ interface IEMailTemplate {
* Adds a logo and a text to the footer. <br> in the text will be replaced by new lines in the plain text email
*
* @param string $text If the text is empty the default "Name - Slogan<br>This is an automatically sent email" will be used
+ * @param string $lang Optional language to set the default footer in
*
* @since 12.0.0
*/
- public function addFooter(string $text = '');
+ public function addFooter(string $text = '', ?string $lang = null);
/**
* Returns the rendered email subject as string
diff --git a/lib/public/Migration/IOutput.php b/lib/public/Migration/IOutput.php
index 21e26acf79e..b5d6b585366 100644
--- a/lib/public/Migration/IOutput.php
+++ b/lib/public/Migration/IOutput.php
@@ -62,5 +62,4 @@ interface IOutput {
* @since 9.1.0
*/
public function finishProgress();
-
}
diff --git a/lib/public/Migration/IRepairStep.php b/lib/public/Migration/IRepairStep.php
index df7398a8cb9..afb601b2a14 100644
--- a/lib/public/Migration/IRepairStep.php
+++ b/lib/public/Migration/IRepairStep.php
@@ -47,5 +47,4 @@ interface IRepairStep {
* @since 9.1.0
*/
public function run(IOutput $output);
-
}
diff --git a/lib/public/Notification/AlreadyProcessedException.php b/lib/public/Notification/AlreadyProcessedException.php
index 2cb1fc92765..3100e433608 100644
--- a/lib/public/Notification/AlreadyProcessedException.php
+++ b/lib/public/Notification/AlreadyProcessedException.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OCP\Notification;
-
/**
* @since 17.0.0
*/
@@ -38,5 +37,4 @@ class AlreadyProcessedException extends \RuntimeException {
public function __construct() {
parent::__construct('Notification is processed already');
}
-
}
diff --git a/lib/public/OCS/IDiscoveryService.php b/lib/public/OCS/IDiscoveryService.php
index dd8e007b541..510915ffbc4 100644
--- a/lib/public/OCS/IDiscoveryService.php
+++ b/lib/public/OCS/IDiscoveryService.php
@@ -51,5 +51,4 @@ interface IDiscoveryService {
* @return array
*/
public function discover(string $remote, string $service, bool $skipCache = false): array;
-
}
diff --git a/lib/public/PreConditionNotMetException.php b/lib/public/PreConditionNotMetException.php
index 7a6528e76e7..1871a16088f 100644
--- a/lib/public/PreConditionNotMetException.php
+++ b/lib/public/PreConditionNotMetException.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -30,4 +31,5 @@ namespace OCP;
* Exception if the precondition of the config update method isn't met
* @since 8.0.0
*/
-class PreConditionNotMetException extends \Exception {}
+class PreConditionNotMetException extends \Exception {
+}
diff --git a/lib/public/RichObjectStrings/Definitions.php b/lib/public/RichObjectStrings/Definitions.php
index a4cf4dac725..b092be5e3aa 100644
--- a/lib/public/RichObjectStrings/Definitions.php
+++ b/lib/public/RichObjectStrings/Definitions.php
@@ -26,7 +26,6 @@
namespace OCP\RichObjectStrings;
-
/**
* Class Definitions
*
@@ -155,6 +154,12 @@ class Definitions {
'description' => 'The display name of the event which should be used in the visual representation',
'example' => 'Workout',
],
+ 'link' => [
+ 'since' => '19.0.0',
+ 'required' => false,
+ 'description' => 'A link to the page displaying the calendar',
+ 'example' => 'http://localhost/index.php/apps/calendar/dayGridMonth/2020-01-20/edit/sidebar/base64string/1579046400'
+ ]
],
],
'call' => [
@@ -180,6 +185,12 @@ class Definitions {
'description' => 'The type of the call: one2one, group or public',
'example' => 'one2one',
],
+ 'link' => [
+ 'since' => '19.0.0',
+ 'required' => false,
+ 'description' => 'The link to the conversation',
+ 'example' => 'https://localhost/index.php/call/R4nd0mToken',
+ ],
],
],
'circle' => [
diff --git a/lib/public/Route/IRouter.php b/lib/public/Route/IRouter.php
index 4414988c910..386098a8e32 100644
--- a/lib/public/Route/IRouter.php
+++ b/lib/public/Route/IRouter.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -91,7 +92,7 @@ interface IRouter {
* @since 7.0.0
* @deprecated 9.0.0
*/
- public function create($name, $pattern, array $defaults = array(), array $requirements = array());
+ public function create($name, $pattern, array $defaults = [], array $requirements = []);
/**
* Find the route matching $url.
@@ -122,6 +123,5 @@ interface IRouter {
* @since 7.0.0
* @deprecated 9.0.0
*/
- public function generate($name, $parameters = array(), $absolute = false);
-
+ public function generate($name, $parameters = [], $absolute = false);
}
diff --git a/lib/public/SabrePluginEvent.php b/lib/public/SabrePluginEvent.php
index b04ca420e32..c9f80d184c2 100644
--- a/lib/public/SabrePluginEvent.php
+++ b/lib/public/SabrePluginEvent.php
@@ -25,7 +25,6 @@
namespace OCP;
-
use OCP\AppFramework\Http;
use OCP\EventDispatcher\Event;
use Sabre\DAV\Server;
diff --git a/lib/public/SabrePluginException.php b/lib/public/SabrePluginException.php
index 3f46885a11a..7d2220999e5 100644
--- a/lib/public/SabrePluginException.php
+++ b/lib/public/SabrePluginException.php
@@ -22,7 +22,6 @@
namespace OCP;
-
use Sabre\DAV\Exception;
/**
diff --git a/lib/public/Search/PagedProvider.php b/lib/public/Search/PagedProvider.php
index 17e8aef337c..cbccc1abc0f 100644
--- a/lib/public/Search/PagedProvider.php
+++ b/lib/public/Search/PagedProvider.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@statuscode.ch>
@@ -36,7 +37,7 @@ abstract class PagedProvider extends Provider {
* show all results
* @since 8.0.0
*/
- const SIZE_ALL = 0;
+ public const SIZE_ALL = 0;
/**
* Constructor
diff --git a/lib/public/Search/Provider.php b/lib/public/Search/Provider.php
index c756daa449a..18594eefb8f 100644
--- a/lib/public/Search/Provider.php
+++ b/lib/public/Search/Provider.php
@@ -4,6 +4,7 @@
*
* @author Andrew Brown <andrew@casabrown.com>
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jakob Sack <mail@jakobsack.de>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -35,7 +36,7 @@ abstract class Provider {
/**
* @since 8.0.0
*/
- const OPTION_APPS = 'apps';
+ public const OPTION_APPS = 'apps';
/**
* List of options
@@ -49,7 +50,7 @@ abstract class Provider {
* @param array $options as key => value
* @since 7.0.0 - default value for $options was added in 8.0.0
*/
- public function __construct($options = array()) {
+ public function __construct($options = []) {
$this->options = $options;
}
@@ -76,7 +77,7 @@ abstract class Provider {
* @return bool
* @since 8.0.0
*/
- public function providesResultsFor(array $apps = array()) {
+ public function providesResultsFor(array $apps = []) {
$forApps = $this->getOption(self::OPTION_APPS);
return empty($apps) || empty($forApps) || array_intersect($forApps, $apps);
}
diff --git a/lib/public/Search/Result.php b/lib/public/Search/Result.php
index 0cbeb114af6..33748cff375 100644
--- a/lib/public/Search/Result.php
+++ b/lib/public/Search/Result.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Andrew Brown <andrew@casabrown.com>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jakob Sack <mail@jakobsack.de>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -56,7 +57,7 @@ class Result {
/**
* The type of search result returned; for consistency, name this the same
- * as the class name (e.g. \OC\Search\File -> 'file') in lowercase.
+ * as the class name (e.g. \OC\Search\File -> 'file') in lowercase.
* @var string
* @since 7.0.0
*/
diff --git a/lib/public/Security/Events/GenerateSecurePasswordEvent.php b/lib/public/Security/Events/GenerateSecurePasswordEvent.php
index bf0a751c299..ba3c5a63e11 100644
--- a/lib/public/Security/Events/GenerateSecurePasswordEvent.php
+++ b/lib/public/Security/Events/GenerateSecurePasswordEvent.php
@@ -49,5 +49,4 @@ class GenerateSecurePasswordEvent extends Event {
public function setPassword(string $password): void {
$this->password = $password;
}
-
}
diff --git a/lib/public/Security/Events/ValidatePasswordPolicyEvent.php b/lib/public/Security/Events/ValidatePasswordPolicyEvent.php
index 681102dbbe0..1eab7780723 100644
--- a/lib/public/Security/Events/ValidatePasswordPolicyEvent.php
+++ b/lib/public/Security/Events/ValidatePasswordPolicyEvent.php
@@ -50,5 +50,4 @@ class ValidatePasswordPolicyEvent extends Event {
public function getPassword(): string {
return $this->password;
}
-
}
diff --git a/lib/public/Security/IContentSecurityPolicyManager.php b/lib/public/Security/IContentSecurityPolicyManager.php
index bd579703cad..10beb7e22bb 100644
--- a/lib/public/Security/IContentSecurityPolicyManager.php
+++ b/lib/public/Security/IContentSecurityPolicyManager.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -22,6 +23,7 @@
*/
namespace OCP\Security;
+
use OCP\AppFramework\Http\EmptyContentSecurityPolicy;
/**
diff --git a/lib/public/Security/ICredentialsManager.php b/lib/public/Security/ICredentialsManager.php
index 50e565e251d..c9d16cbe983 100644
--- a/lib/public/Security/ICredentialsManager.php
+++ b/lib/public/Security/ICredentialsManager.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Robin McCorkell <robin@mccorkell.me.uk>
*
* @license AGPL-3.0
@@ -33,7 +34,7 @@ interface ICredentialsManager {
/**
* Store a set of credentials
*
- * @param string|null $userId Null for system-wide credentials
+ * @param string $userId empty string for system-wide credentials
* @param string $identifier
* @param mixed $credentials
* @since 8.2.0
@@ -43,7 +44,7 @@ interface ICredentialsManager {
/**
* Retrieve a set of credentials
*
- * @param string|null $userId Null for system-wide credentials
+ * @param string $userId empty string for system-wide credentials
* @param string $identifier
* @return mixed
* @since 8.2.0
@@ -53,7 +54,7 @@ interface ICredentialsManager {
/**
* Delete a set of credentials
*
- * @param string|null $userId Null for system-wide credentials
+ * @param string $userId empty string for system-wide credentials
* @param string $identifier
* @return int rows removed
* @since 8.2.0
@@ -68,5 +69,4 @@ interface ICredentialsManager {
* @since 8.2.0
*/
public function erase($userId);
-
}
diff --git a/lib/public/Security/ISecureRandom.php b/lib/public/Security/ISecureRandom.php
index c2d149feaf8..58f7f3fd448 100644
--- a/lib/public/Security/ISecureRandom.php
+++ b/lib/public/Security/ISecureRandom.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Fabrizio Steiner <fabrizio.steiner@gmail.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -44,17 +45,17 @@ interface ISecureRandom {
/**
* Flags for characters that can be used for <code>generate($length, $characters)</code>
*/
- const CHAR_UPPER = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
- const CHAR_LOWER = 'abcdefghijklmnopqrstuvwxyz';
- const CHAR_DIGITS = '0123456789';
- const CHAR_SYMBOLS = '!\"#$%&\\\'()*+,-./:;<=>?@[\]^_`{|}~';
+ public const CHAR_UPPER = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+ public const CHAR_LOWER = 'abcdefghijklmnopqrstuvwxyz';
+ public const CHAR_DIGITS = '0123456789';
+ public const CHAR_SYMBOLS = '!\"#$%&\\\'()*+,-./:;<=>?@[\]^_`{|}~';
/**
* Characters that can be used for <code>generate($length, $characters)</code>, to
- * generate human readable random strings. Lower- and upper-case characters and digits
+ * generate human readable random strings. Lower- and upper-case characters and digits
* are included. Characters which are ambiguous are excluded, such as I, l, and 1 and so on.
*/
- const CHAR_HUMAN_READABLE = 'abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789';
+ public const CHAR_HUMAN_READABLE = 'abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789';
/**
* Generate a random string of specified length.
@@ -66,5 +67,4 @@ interface ISecureRandom {
*/
public function generate(int $length,
string $characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'): string;
-
}
diff --git a/lib/public/Session/Exceptions/SessionNotAvailableException.php b/lib/public/Session/Exceptions/SessionNotAvailableException.php
index efb91851555..b7c7b993614 100644
--- a/lib/public/Session/Exceptions/SessionNotAvailableException.php
+++ b/lib/public/Session/Exceptions/SessionNotAvailableException.php
@@ -28,5 +28,4 @@ use Exception;
* @since 9.1.0
*/
class SessionNotAvailableException extends Exception {
-
}
diff --git a/lib/public/Settings/IManager.php b/lib/public/Settings/IManager.php
index 5c7d0712080..c03c3d588b8 100644
--- a/lib/public/Settings/IManager.php
+++ b/lib/public/Settings/IManager.php
@@ -33,22 +33,22 @@ interface IManager {
/**
* @since 9.1.0
*/
- const KEY_ADMIN_SETTINGS = 'admin';
+ public const KEY_ADMIN_SETTINGS = 'admin';
/**
* @since 9.1.0
*/
- const KEY_ADMIN_SECTION = 'admin-section';
+ public const KEY_ADMIN_SECTION = 'admin-section';
/**
* @since 13.0.0
*/
- const KEY_PERSONAL_SETTINGS = 'personal';
+ public const KEY_PERSONAL_SETTINGS = 'personal';
/**
* @since 13.0.0
*/
- const KEY_PERSONAL_SECTION = 'personal-section';
+ public const KEY_PERSONAL_SECTION = 'personal-section';
/**
* @param string $type 'admin' or 'personal'
diff --git a/lib/public/Settings/ISubAdminSettings.php b/lib/public/Settings/ISubAdminSettings.php
index 95887576965..d7f55eddfb0 100644
--- a/lib/public/Settings/ISubAdminSettings.php
+++ b/lib/public/Settings/ISubAdminSettings.php
@@ -32,5 +32,4 @@ namespace OCP\Settings;
* @since 17.0.0
*/
interface ISubAdminSettings extends ISettings {
-
}
diff --git a/lib/public/Share.php b/lib/public/Share.php
index 25e255f35ba..9ecfccf0d1f 100644
--- a/lib/public/Share.php
+++ b/lib/public/Share.php
@@ -4,6 +4,7 @@
*
* @author Bart Visscher <bartv@thisnet.nl>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Morris Jobke <hey@morrisjobke.de>
@@ -121,8 +122,7 @@ class Share extends \OC\Share\Constants {
* @deprecated 17.0.0
*/
public static function getItemShared($itemType, $itemSource, $format = self::FORMAT_NONE,
- $parameters = null, $includeCollections = false) {
-
+ $parameters = null, $includeCollections = false) {
return \OC\Share\Share::getItemShared($itemType, $itemSource, $format, $parameters, $includeCollections);
}
diff --git a/lib/public/Share/Events/VerifyMountPointEvent.php b/lib/public/Share/Events/VerifyMountPointEvent.php
index 75914f9416b..d27d02e6864 100644
--- a/lib/public/Share/Events/VerifyMountPointEvent.php
+++ b/lib/public/Share/Events/VerifyMountPointEvent.php
@@ -1,5 +1,7 @@
<?php
+
declare(strict_types=1);
+
/**
* @copyright Copyright (c) 2020, Joas Schilling <coding@schilljs.com>
*
diff --git a/lib/public/Share/Exceptions/GenericShareException.php b/lib/public/Share/Exceptions/GenericShareException.php
index b9c134b8d00..1956014658d 100644
--- a/lib/public/Share/Exceptions/GenericShareException.php
+++ b/lib/public/Share/Exceptions/GenericShareException.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Jan-Christoph Borchardt <hey@jancborchardt.net>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -23,6 +24,7 @@
*/
namespace OCP\Share\Exceptions;
+
use OC\HintException;
/**
@@ -46,5 +48,4 @@ class GenericShareException extends HintException {
}
parent::__construct($message, $hint, $code, $previous);
}
-
}
diff --git a/lib/public/Share/Exceptions/IllegalIDChangeException.php b/lib/public/Share/Exceptions/IllegalIDChangeException.php
index da34cf64b0b..7345a0e1ff8 100644
--- a/lib/public/Share/Exceptions/IllegalIDChangeException.php
+++ b/lib/public/Share/Exceptions/IllegalIDChangeException.php
@@ -2,6 +2,7 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @license AGPL-3.0
@@ -26,4 +27,5 @@ namespace OCP\Share\Exceptions;
* Exception for illegal attempts to modify an id of a share
* @since 9.1.0
*/
-class IllegalIDChangeException extends GenericShareException {}
+class IllegalIDChangeException extends GenericShareException {
+}
diff --git a/lib/public/Share/Exceptions/ShareNotFound.php b/lib/public/Share/Exceptions/ShareNotFound.php
index d37fe2708ef..c3e65684f19 100644
--- a/lib/public/Share/Exceptions/ShareNotFound.php
+++ b/lib/public/Share/Exceptions/ShareNotFound.php
@@ -29,5 +29,4 @@ namespace OCP\Share\Exceptions;
* @since 9.0.0
*/
class ShareNotFound extends GenericShareException {
-
}
diff --git a/lib/public/Share/IManager.php b/lib/public/Share/IManager.php
index b6354be3978..1eb7c789048 100644
--- a/lib/public/Share/IManager.php
+++ b/lib/public/Share/IManager.php
@@ -6,6 +6,7 @@
* @author Daniel Calviño Sánchez <danxuliu@gmail.com>
* @author Joas Schilling <coding@schilljs.com>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ * @author Julius Härtl <jus@bitgrid.net>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
@@ -369,6 +370,22 @@ interface IManager {
public function allowGroupSharing();
/**
+ * Check if user enumeration is allowed
+ *
+ * @return bool
+ * @since 19.0.0
+ */
+ public function allowEnumeration(): bool;
+
+ /**
+ * Check if user enumeration is limited to the users groups
+ *
+ * @return bool
+ * @since 19.0.0
+ */
+ public function limitEnumerationToGroups(): bool;
+
+ /**
* Check if sharing is disabled for the given user
*
* @param string $userId
@@ -411,5 +428,4 @@ interface IManager {
* @since 18.0.0
*/
public function getAllShares(): iterable;
-
}
diff --git a/lib/public/Share/IProviderFactory.php b/lib/public/Share/IProviderFactory.php
index 120d46258ff..b2587459d85 100644
--- a/lib/public/Share/IProviderFactory.php
+++ b/lib/public/Share/IProviderFactory.php
@@ -24,7 +24,6 @@
namespace OCP\Share;
use OC\Share20\Exception\ProviderException;
-use OCP\IServerContainer;
/**
* Interface IProviderFactory
diff --git a/lib/public/Share_Backend.php b/lib/public/Share_Backend.php
index 0f5f4a4e9d9..cb49ce8e844 100644
--- a/lib/public/Share_Backend.php
+++ b/lib/public/Share_Backend.php
@@ -95,5 +95,4 @@ interface Share_Backend {
* @since 8.0.0
*/
public function isShareTypeAllowed($shareType);
-
}
diff --git a/lib/public/Share_Backend_File_Dependent.php b/lib/public/Share_Backend_File_Dependent.php
index cf08042e595..f49c0b18f7e 100644
--- a/lib/public/Share_Backend_File_Dependent.php
+++ b/lib/public/Share_Backend_File_Dependent.php
@@ -41,5 +41,4 @@ interface Share_Backend_File_Dependent extends Share_Backend {
* @since 5.0.0
*/
public function getFilePath($itemSource, $uidOwner);
-
}
diff --git a/lib/public/Support/CrashReport/ICollectBreadcrumbs.php b/lib/public/Support/CrashReport/ICollectBreadcrumbs.php
index 59dc6857e55..f74afe52193 100644
--- a/lib/public/Support/CrashReport/ICollectBreadcrumbs.php
+++ b/lib/public/Support/CrashReport/ICollectBreadcrumbs.php
@@ -41,5 +41,4 @@ interface ICollectBreadcrumbs extends IReporter {
* @since 15.0.0
*/
public function collect(string $message, string $category, array $context = []);
-
}
diff --git a/lib/public/Support/CrashReport/IMessageReporter.php b/lib/public/Support/CrashReport/IMessageReporter.php
index ae173329a60..425900db0a6 100644
--- a/lib/public/Support/CrashReport/IMessageReporter.php
+++ b/lib/public/Support/CrashReport/IMessageReporter.php
@@ -40,5 +40,4 @@ interface IMessageReporter extends IReporter {
* @since 17.0.0
*/
public function reportMessage(string $message, array $context = []): void;
-
}
diff --git a/lib/public/SystemTag/ISystemTag.php b/lib/public/SystemTag/ISystemTag.php
index 76895679bbf..afd8d2d701a 100644
--- a/lib/public/SystemTag/ISystemTag.php
+++ b/lib/public/SystemTag/ISystemTag.php
@@ -68,5 +68,4 @@ interface ISystemTag {
* @since 9.0.0
*/
public function isUserAssignable(): bool;
-
}
diff --git a/lib/public/SystemTag/ISystemTagObjectMapper.php b/lib/public/SystemTag/ISystemTagObjectMapper.php
index b8f296981dd..f2562e723ef 100644
--- a/lib/public/SystemTag/ISystemTagObjectMapper.php
+++ b/lib/public/SystemTag/ISystemTagObjectMapper.php
@@ -131,5 +131,4 @@ interface ISystemTagObjectMapper {
* @since 9.0.0
*/
public function haveTag($objIds, string $objectType, string $tagId, bool $all = true): bool;
-
}
diff --git a/lib/public/SystemTag/ManagerEvent.php b/lib/public/SystemTag/ManagerEvent.php
index 2c3dc203ac5..8137cebfd06 100644
--- a/lib/public/SystemTag/ManagerEvent.php
+++ b/lib/public/SystemTag/ManagerEvent.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Roeland Jago Douma <roeland@famdouma.nl>
@@ -37,10 +38,9 @@ use OCP\EventDispatcher\Event;
* @since 9.0.0
*/
class ManagerEvent extends Event {
-
- const EVENT_CREATE = 'OCP\SystemTag\ISystemTagManager::createTag';
- const EVENT_UPDATE = 'OCP\SystemTag\ISystemTagManager::updateTag';
- const EVENT_DELETE = 'OCP\SystemTag\ISystemTagManager::deleteTag';
+ public const EVENT_CREATE = 'OCP\SystemTag\ISystemTagManager::createTag';
+ public const EVENT_UPDATE = 'OCP\SystemTag\ISystemTagManager::updateTag';
+ public const EVENT_DELETE = 'OCP\SystemTag\ISystemTagManager::deleteTag';
/** @var string */
protected $event;
diff --git a/lib/public/SystemTag/MapperEvent.php b/lib/public/SystemTag/MapperEvent.php
index 6c4b1065933..38519c02cdf 100644
--- a/lib/public/SystemTag/MapperEvent.php
+++ b/lib/public/SystemTag/MapperEvent.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -36,9 +37,8 @@ use OCP\EventDispatcher\Event;
* @since 9.0.0
*/
class MapperEvent extends Event {
-
- const EVENT_ASSIGN = 'OCP\SystemTag\ISystemTagObjectMapper::assignTags';
- const EVENT_UNASSIGN = 'OCP\SystemTag\ISystemTagObjectMapper::unassignTags';
+ public const EVENT_ASSIGN = 'OCP\SystemTag\ISystemTagObjectMapper::assignTags';
+ public const EVENT_UNASSIGN = 'OCP\SystemTag\ISystemTagObjectMapper::unassignTags';
/** @var string */
protected $event;
diff --git a/lib/public/SystemTag/SystemTagsEntityEvent.php b/lib/public/SystemTag/SystemTagsEntityEvent.php
index 057080eaa9a..c2b2881a1f0 100644
--- a/lib/public/SystemTag/SystemTagsEntityEvent.php
+++ b/lib/public/SystemTag/SystemTagsEntityEvent.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -36,8 +37,7 @@ use OCP\EventDispatcher\Event;
* @since 9.1.0
*/
class SystemTagsEntityEvent extends Event {
-
- const EVENT_ENTITY = 'OCP\SystemTag\ISystemTagManager::registerEntity';
+ public const EVENT_ENTITY = 'OCP\SystemTag\ISystemTagManager::registerEntity';
/** @var string */
protected $event;
diff --git a/lib/public/SystemTag/TagAlreadyExistsException.php b/lib/public/SystemTag/TagAlreadyExistsException.php
index eea1a5d9b96..a59a1dd60a7 100644
--- a/lib/public/SystemTag/TagAlreadyExistsException.php
+++ b/lib/public/SystemTag/TagAlreadyExistsException.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Vincent Petry <pvince81@owncloud.com>
*
* @license AGPL-3.0
@@ -30,4 +31,5 @@ namespace OCP\SystemTag;
*
* @since 9.0.0
*/
-class TagAlreadyExistsException extends \RuntimeException {}
+class TagAlreadyExistsException extends \RuntimeException {
+}
diff --git a/lib/public/Template.php b/lib/public/Template.php
index 85ab0ac23bc..9ce269dad96 100644
--- a/lib/public/Template.php
+++ b/lib/public/Template.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Bart Visscher <bartv@thisnet.nl>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Frank Karlitschek <frank@karlitschek.de>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
@@ -124,7 +125,7 @@ class Template extends \OC_Template {
* @since 8.0.0
* @suppress PhanDeprecatedFunction
*/
- public static function html_select_options($options, $selected, $params=array()) {
+ public static function html_select_options($options, $selected, $params=[]) {
return \html_select_options($options, $selected, $params);
}
}
diff --git a/lib/public/User/Backend/ABackend.php b/lib/public/User/Backend/ABackend.php
index 6c691ef1fce..a57a561369b 100644
--- a/lib/public/User/Backend/ABackend.php
+++ b/lib/public/User/Backend/ABackend.php
@@ -3,7 +3,7 @@
declare(strict_types=1);
/**
-* @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>
+ * @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>
*
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Roeland Jago Douma <roeland@famdouma.nl>
diff --git a/lib/public/User/Events/BeforePasswordUpdatedEvent.php b/lib/public/User/Events/BeforePasswordUpdatedEvent.php
index 11221d97009..85d609e672f 100644
--- a/lib/public/User/Events/BeforePasswordUpdatedEvent.php
+++ b/lib/public/User/Events/BeforePasswordUpdatedEvent.php
@@ -81,5 +81,4 @@ class BeforePasswordUpdatedEvent extends Event {
public function getRecoveryPassword(): ?string {
return $this->recoveryPassword;
}
-
}
diff --git a/lib/public/User/Events/BeforeUserCreatedEvent.php b/lib/public/User/Events/BeforeUserCreatedEvent.php
index 1a00a167dbb..ace929b8ee0 100644
--- a/lib/public/User/Events/BeforeUserCreatedEvent.php
+++ b/lib/public/User/Events/BeforeUserCreatedEvent.php
@@ -62,5 +62,4 @@ class BeforeUserCreatedEvent extends Event {
public function getPassword(): string {
return $this->password;
}
-
}
diff --git a/lib/public/User/Events/BeforeUserDeletedEvent.php b/lib/public/User/Events/BeforeUserDeletedEvent.php
index dd4103c29bf..84e912a9520 100644
--- a/lib/public/User/Events/BeforeUserDeletedEvent.php
+++ b/lib/public/User/Events/BeforeUserDeletedEvent.php
@@ -53,5 +53,4 @@ class BeforeUserDeletedEvent extends Event {
public function getUser(): IUser {
return $this->user;
}
-
}
diff --git a/lib/public/User/Events/BeforeUserLoggedInEvent.php b/lib/public/User/Events/BeforeUserLoggedInEvent.php
index c6eb3fbbf1b..cec7b8ca29e 100644
--- a/lib/public/User/Events/BeforeUserLoggedInEvent.php
+++ b/lib/public/User/Events/BeforeUserLoggedInEvent.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
/**
* @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl>
*
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
*
* @license GNU AGPL version 3 or any later version
@@ -27,14 +28,13 @@ declare(strict_types=1);
namespace OCP\User\Events;
use OCP\EventDispatcher\Event;
-use OCP\IUser;
/**
* @since 18.0.0
*/
class BeforeUserLoggedInEvent extends Event {
- /** @var IUser */
+ /** @var string */
private $username;
/** @var string */
@@ -50,9 +50,11 @@ class BeforeUserLoggedInEvent extends Event {
}
/**
+ * returns the login name, which must not necessarily match to a user ID
+ *
* @since 18.0.0
*/
- public function getUsername(): IUser {
+ public function getUsername(): string {
return $this->username;
}
@@ -62,5 +64,4 @@ class BeforeUserLoggedInEvent extends Event {
public function getPassword(): string {
return $this->password;
}
-
}
diff --git a/lib/public/User/Events/BeforeUserLoggedInWithCookieEvent.php b/lib/public/User/Events/BeforeUserLoggedInWithCookieEvent.php
index fd7463bc0f9..7a4ff823f8a 100644
--- a/lib/public/User/Events/BeforeUserLoggedInWithCookieEvent.php
+++ b/lib/public/User/Events/BeforeUserLoggedInWithCookieEvent.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
namespace OCP\User\Events;
use OCP\EventDispatcher\Event;
-use OCP\IUser;
/**
* @since 18.0.0
@@ -51,5 +50,4 @@ class BeforeUserLoggedInWithCookieEvent extends Event {
public function getUsername(): string {
return $this->username;
}
-
}
diff --git a/lib/public/User/Events/BeforeUserLoggedOutEvent.php b/lib/public/User/Events/BeforeUserLoggedOutEvent.php
index 2d521dc1a94..d470ec5de7f 100644
--- a/lib/public/User/Events/BeforeUserLoggedOutEvent.php
+++ b/lib/public/User/Events/BeforeUserLoggedOutEvent.php
@@ -51,5 +51,4 @@ class BeforeUserLoggedOutEvent extends Event {
public function getUser(): ?IUser {
return $this->user;
}
-
}
diff --git a/lib/public/User/Events/CreateUserEvent.php b/lib/public/User/Events/CreateUserEvent.php
index 37525deb55f..e5c5f8af026 100644
--- a/lib/public/User/Events/CreateUserEvent.php
+++ b/lib/public/User/Events/CreateUserEvent.php
@@ -62,5 +62,4 @@ class CreateUserEvent extends Event {
public function getPassword(): string {
return $this->password;
}
-
}
diff --git a/lib/public/User/Events/PasswordUpdatedEvent.php b/lib/public/User/Events/PasswordUpdatedEvent.php
index 7169448e0cd..8913dc4c53a 100644
--- a/lib/public/User/Events/PasswordUpdatedEvent.php
+++ b/lib/public/User/Events/PasswordUpdatedEvent.php
@@ -81,5 +81,4 @@ class PasswordUpdatedEvent extends Event {
public function getRecoveryPassword(): ?string {
return $this->recoveryPassword;
}
-
}
diff --git a/lib/public/User/Events/UserChangedEvent.php b/lib/public/User/Events/UserChangedEvent.php
index 8bb93d857b5..095e0d17c0b 100644
--- a/lib/public/User/Events/UserChangedEvent.php
+++ b/lib/public/User/Events/UserChangedEvent.php
@@ -91,6 +91,4 @@ class UserChangedEvent extends Event {
public function getOldValue() {
return $this->oldValue;
}
-
-
}
diff --git a/lib/public/User/Events/UserCreatedEvent.php b/lib/public/User/Events/UserCreatedEvent.php
index 9c14c30981a..4d5bb2c5b79 100644
--- a/lib/public/User/Events/UserCreatedEvent.php
+++ b/lib/public/User/Events/UserCreatedEvent.php
@@ -70,5 +70,4 @@ class UserCreatedEvent extends Event {
public function getPassword(): string {
return $this->password;
}
-
}
diff --git a/lib/public/User/Events/UserDeletedEvent.php b/lib/public/User/Events/UserDeletedEvent.php
index 22c0e17c218..8e081c44407 100644
--- a/lib/public/User/Events/UserDeletedEvent.php
+++ b/lib/public/User/Events/UserDeletedEvent.php
@@ -53,5 +53,4 @@ class UserDeletedEvent extends Event {
public function getUser(): IUser {
return $this->user;
}
-
}
diff --git a/lib/public/User/Events/UserLoggedInWithCookieEvent.php b/lib/public/User/Events/UserLoggedInWithCookieEvent.php
index 57a8c54c87c..2827af3f90c 100644
--- a/lib/public/User/Events/UserLoggedInWithCookieEvent.php
+++ b/lib/public/User/Events/UserLoggedInWithCookieEvent.php
@@ -62,5 +62,4 @@ class UserLoggedInWithCookieEvent extends Event {
public function getPassword(): ?string {
return $this->password;
}
-
}
diff --git a/lib/public/User/Events/UserLoggedOutEvent.php b/lib/public/User/Events/UserLoggedOutEvent.php
index 4bd18fac2d2..3b1f8745dfe 100644
--- a/lib/public/User/Events/UserLoggedOutEvent.php
+++ b/lib/public/User/Events/UserLoggedOutEvent.php
@@ -51,5 +51,4 @@ class UserLoggedOutEvent extends Event {
public function getUser(): ?IUser {
return $this->user;
}
-
}
diff --git a/lib/public/UserInterface.php b/lib/public/UserInterface.php
index 326432ea103..0ef978a514f 100644
--- a/lib/public/UserInterface.php
+++ b/lib/public/UserInterface.php
@@ -106,5 +106,4 @@ interface UserInterface {
* @since 4.5.0
*/
public function hasUserListings();
-
}
diff --git a/lib/public/Util.php b/lib/public/Util.php
index 544808f5ece..72f061afb45 100644
--- a/lib/public/Util.php
+++ b/lib/public/Util.php
@@ -5,6 +5,7 @@
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bart Visscher <bartv@thisnet.nl>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Frank Karlitschek <frank@karlitschek.de>
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Individual IT Services <info@individual-it.net>
@@ -59,23 +60,23 @@ class Util {
/**
* @deprecated 14.0.0 use \OCP\ILogger::DEBUG
*/
- const DEBUG=0;
+ public const DEBUG=0;
/**
* @deprecated 14.0.0 use \OCP\ILogger::INFO
*/
- const INFO=1;
+ public const INFO=1;
/**
* @deprecated 14.0.0 use \OCP\ILogger::WARN
*/
- const WARN=2;
+ public const WARN=2;
/**
* @deprecated 14.0.0 use \OCP\ILogger::ERROR
*/
- const ERROR=3;
+ public const ERROR=3;
/**
* @deprecated 14.0.0 use \OCP\ILogger::FATAL
*/
- const FATAL=4;
+ public const FATAL=4;
/** \OCP\Share\IManager */
private static $shareManager;
@@ -97,7 +98,8 @@ class Util {
/** @var \OCP\Support\Subscription\IRegistry */
$subscriptionRegistry = \OC::$server->query(\OCP\Support\Subscription\IRegistry::class);
return $subscriptionRegistry->delegateHasExtendedSupport();
- } catch (AppFramework\QueryException $e) {}
+ } catch (AppFramework\QueryException $e) {
+ }
return \OC::$server->getConfig()->getSystemValueBool('extendedSupport', false);
}
@@ -127,7 +129,7 @@ class Util {
* @since 4.0.0
* @deprecated 13.0.0 use log of \OCP\ILogger
*/
- public static function writeLog( $app, $message, $level ) {
+ public static function writeLog($app, $message, $level) {
$context = ['app' => $app];
\OC::$server->getLogger()->log($level, $message, $context);
}
@@ -169,8 +171,8 @@ class Util {
* @param string $file
* @since 4.0.0
*/
- public static function addStyle( $application, $file = null ) {
- \OC_Util::addStyle( $application, $file );
+ public static function addStyle($application, $file = null) {
+ \OC_Util::addStyle($application, $file);
}
/**
@@ -179,8 +181,8 @@ class Util {
* @param string $file
* @since 4.0.0
*/
- public static function addScript( $application, $file = null ) {
- \OC_Util::addScript( $application, $file );
+ public static function addScript($application, $file = null) {
+ \OC_Util::addScript($application, $file);
}
/**
@@ -215,7 +217,7 @@ class Util {
* @return string the url
* @since 4.0.0 - parameter $args was added in 4.5.0
*/
- public static function linkToAbsolute( $app, $file, $args = array() ) {
+ public static function linkToAbsolute($app, $file, $args = []) {
$urlGenerator = \OC::$server->getURLGenerator();
return $urlGenerator->getAbsoluteURL(
$urlGenerator->linkTo($app, $file, $args)
@@ -228,7 +230,7 @@ class Util {
* @return string the url
* @since 4.0.0
*/
- public static function linkToRemote( $service ) {
+ public static function linkToRemote($service) {
$urlGenerator = \OC::$server->getURLGenerator();
$remoteBase = $urlGenerator->linkTo('', 'remote.php') . '/' . $service;
return $urlGenerator->getAbsoluteURL(
@@ -260,7 +262,7 @@ class Util {
$host_name = \OC::$server->getRequest()->getServerHost();
// strip away port number (if existing)
$colon_pos = strpos($host_name, ':');
- if ($colon_pos != FALSE) {
+ if ($colon_pos != false) {
$host_name = substr($host_name, 0, $colon_pos);
}
return $host_name;
@@ -334,7 +336,7 @@ class Util {
* TODO: write example
* @since 4.0.0
*/
- static public function connectHook($signalClass, $signalName, $slotClass, $slotName) {
+ public static function connectHook($signalClass, $signalName, $slotClass, $slotName) {
return \OC_Hook::connect($signalClass, $signalName, $slotClass, $slotName);
}
@@ -348,7 +350,7 @@ class Util {
* TODO: write example
* @since 4.0.0
*/
- static public function emitHook($signalclass, $signalname, $params = array()) {
+ public static function emitHook($signalclass, $signalname, $params = []) {
return \OC_Hook::emit($signalclass, $signalname, $params);
}
@@ -365,7 +367,7 @@ class Util {
* @since 4.5.0
*/
public static function callRegister() {
- if(self::$token === '') {
+ if (self::$token === '') {
self::$token = \OC::$server->getCsrfTokenManager()->getToken()->getEncryptedValue();
}
return self::$token;
diff --git a/lib/public/WorkflowEngine/GenericEntityEvent.php b/lib/public/WorkflowEngine/GenericEntityEvent.php
index 08786aecad4..0a1fe125956 100644
--- a/lib/public/WorkflowEngine/GenericEntityEvent.php
+++ b/lib/public/WorkflowEngine/GenericEntityEvent.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
@@ -47,10 +48,10 @@ class GenericEntityEvent implements IEntityEvent {
* @since 18.0.0
*/
public function __construct(string $displayName, string $eventName) {
- if(trim($displayName) === '') {
+ if (trim($displayName) === '') {
throw new \InvalidArgumentException('DisplayName must not be empty');
}
- if(trim($eventName) === '') {
+ if (trim($eventName) === '') {
throw new \InvalidArgumentException('EventName must not be empty');
}
diff --git a/lib/public/WorkflowEngine/IComplexOperation.php b/lib/public/WorkflowEngine/IComplexOperation.php
index 476175187f7..679a5c1e078 100644
--- a/lib/public/WorkflowEngine/IComplexOperation.php
+++ b/lib/public/WorkflowEngine/IComplexOperation.php
@@ -54,5 +54,4 @@ interface IComplexOperation extends IOperation {
* @since 18.0.0
*/
public function getTriggerHint(): string;
-
}
diff --git a/lib/public/WorkflowEngine/IEntity.php b/lib/public/WorkflowEngine/IEntity.php
index 2aec5e76e40..173e696a6e4 100644
--- a/lib/public/WorkflowEngine/IEntity.php
+++ b/lib/public/WorkflowEngine/IEntity.php
@@ -83,5 +83,4 @@ interface IEntity {
* @since 18.0.0
*/
public function isLegitimatedForUserId(string $userId): bool;
-
}
diff --git a/lib/public/WorkflowEngine/IEntityCheck.php b/lib/public/WorkflowEngine/IEntityCheck.php
index 88b9352424d..46dab0d5691 100644
--- a/lib/public/WorkflowEngine/IEntityCheck.php
+++ b/lib/public/WorkflowEngine/IEntityCheck.php
@@ -49,5 +49,4 @@ interface IEntityCheck {
* @since 18.0.0
*/
public function setEntitySubject(IEntity $entity, $subject): void;
-
}
diff --git a/lib/public/WorkflowEngine/IFileCheck.php b/lib/public/WorkflowEngine/IFileCheck.php
index b94f3e512d3..f8f4bf2dd0c 100644
--- a/lib/public/WorkflowEngine/IFileCheck.php
+++ b/lib/public/WorkflowEngine/IFileCheck.php
@@ -27,7 +27,6 @@ declare(strict_types=1);
namespace OCP\WorkflowEngine;
-
use OCP\Files\Storage\IStorage;
/**
@@ -44,5 +43,4 @@ interface IFileCheck extends IEntityCheck {
* @since 18.0.0
*/
public function setFileInfo(IStorage $storage, string $path, bool $isDir = false): void;
-
}
diff --git a/lib/public/WorkflowEngine/IManager.php b/lib/public/WorkflowEngine/IManager.php
index 0eb504242df..3b59c7eb9ee 100644
--- a/lib/public/WorkflowEngine/IManager.php
+++ b/lib/public/WorkflowEngine/IManager.php
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2016 Morris Jobke <hey@morrisjobke.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -32,16 +33,15 @@ namespace OCP\WorkflowEngine;
* @since 9.1
*/
interface IManager {
-
- const SCOPE_ADMIN = 0;
- const SCOPE_USER = 1;
+ public const SCOPE_ADMIN = 0;
+ public const SCOPE_USER = 1;
/**
* @depreacted Will be removed in NC19. Use the dedicated events in OCP\WorkflowEngine\Events
*/
- const EVENT_NAME_REG_OPERATION = 'OCP\WorkflowEngine::registerOperations';
- const EVENT_NAME_REG_ENTITY = 'OCP\WorkflowEngine::registerEntities';
- const EVENT_NAME_REG_CHECK = 'OCP\WorkflowEngine::registerChecks';
+ public const EVENT_NAME_REG_OPERATION = 'OCP\WorkflowEngine::registerOperations';
+ public const EVENT_NAME_REG_ENTITY = 'OCP\WorkflowEngine::registerEntities';
+ public const EVENT_NAME_REG_CHECK = 'OCP\WorkflowEngine::registerChecks';
/**
* Listen to `OCP\WorkflowEngine\Events\RegisterEntitiesEvent` at the