diff options
-rw-r--r-- | .mention-bot | 4 | ||||
m--------- | 3rdparty | 0 | ||||
-rw-r--r-- | apps/dav/appinfo/v1/publicwebdav.php | 1 | ||||
-rw-r--r-- | apps/dav/lib/caldav/calendar.php | 4 | ||||
-rw-r--r-- | apps/dav/lib/caldav/calendarhome.php | 27 | ||||
-rw-r--r-- | apps/dav/lib/connector/sabre/filesplugin.php | 2 | ||||
-rw-r--r-- | apps/dav/tests/unit/caldav/caldavbackendtest.php | 13 | ||||
-rw-r--r-- | apps/dav/tests/unit/caldav/calendartest.php | 24 | ||||
-rw-r--r-- | apps/federatedfilesharing/lib/federatedshareprovider.php | 11 | ||||
-rw-r--r-- | apps/files/appinfo/application.php | 3 | ||||
-rw-r--r-- | apps/files/appinfo/routes.php | 6 | ||||
-rw-r--r-- | apps/files/controller/apicontroller.php | 32 | ||||
-rw-r--r-- | apps/files/controller/viewcontroller.php | 13 | ||||
-rw-r--r-- | apps/files/js/app.js | 6 | ||||
-rw-r--r-- | apps/files/js/filelist.js | 22 | ||||
-rw-r--r-- | apps/files/templates/index.php | 2 | ||||
-rw-r--r-- | apps/files/tests/controller/ViewControllerTest.php | 22 | ||||
-rw-r--r-- | apps/files/tests/controller/apicontrollertest.php | 55 | ||||
-rw-r--r-- | apps/files/tests/js/filelistSpec.js | 16 | ||||
-rw-r--r-- | apps/files_external/appinfo/app.php | 10 | ||||
-rw-r--r-- | apps/files_external/appinfo/routes.php | 2 | ||||
-rw-r--r-- | apps/files_external/l10n/sl.js | 2 | ||||
-rw-r--r-- | apps/files_external/l10n/sl.json | 2 | ||||
-rw-r--r-- | apps/files_external/lib/api.php | 2 | ||||
-rw-r--r-- | apps/files_external/lib/backend/amazons3.php | 2 | ||||
-rw-r--r-- | apps/files_external/lib/backend/dropbox.php | 2 | ||||
-rw-r--r-- | apps/files_external/lib/backend/ftp.php | 2 | ||||
-rw-r--r-- | apps/files_external/lib/backend/google.php | 2 | ||||
-rw-r--r-- | apps/files_external/lib/backend/owncloud.php | 2 | ||||
-rw-r--r-- | apps/files_external/lib/backend/sftp.php | 2 | ||||
-rw-r--r-- | apps/files_external/lib/backend/sftp_key.php | 2 | ||||
-rw-r--r-- | apps/files_external/lib/backend/smb.php | 2 | ||||
-rw-r--r-- | apps/files_external/lib/backend/smb_oc.php | 2 | ||||
-rw-r--r-- | apps/files_external/lib/backend/swift.php | 2 | ||||
-rw-r--r-- | apps/files_external/lib/storage/amazons3.php (renamed from apps/files_external/lib/amazons3.php) | 2 | ||||
-rw-r--r-- | apps/files_external/lib/storage/dropbox.php (renamed from apps/files_external/lib/dropbox.php) | 6 | ||||
-rw-r--r-- | apps/files_external/lib/storage/ftp.php (renamed from apps/files_external/lib/ftp.php) | 6 | ||||
-rw-r--r-- | apps/files_external/lib/storage/google.php (renamed from apps/files_external/lib/google.php) | 4 | ||||
-rw-r--r-- | apps/files_external/lib/storage/owncloud.php (renamed from apps/files_external/lib/owncloud.php) | 2 | ||||
-rw-r--r-- | apps/files_external/lib/storage/sftp.php (renamed from apps/files_external/lib/sftp.php) | 2 | ||||
-rw-r--r-- | apps/files_external/lib/storage/smb.php (renamed from apps/files_external/lib/smb.php) | 4 | ||||
-rw-r--r-- | apps/files_external/lib/storage/streamwrapper.php (renamed from apps/files_external/lib/streamwrapper.php) | 4 | ||||
-rw-r--r-- | apps/files_external/lib/storage/swift.php (renamed from apps/files_external/lib/swift.php) | 2 | ||||
-rw-r--r-- | apps/files_external/tests/amazons3migration.php | 10 | ||||
-rw-r--r-- | apps/files_external/tests/controller/storagescontrollertest.php | 14 | ||||
-rw-r--r-- | apps/files_external/tests/controller/userstoragescontrollertest.php | 4 | ||||
-rw-r--r-- | apps/files_external/tests/owncloudfunctions.php | 6 | ||||
-rw-r--r-- | apps/files_external/tests/service/storagesservicetest.php | 6 | ||||
-rw-r--r-- | apps/files_external/tests/storage/amazons3test.php (renamed from apps/files_external/tests/backends/amazons3.php) | 12 | ||||
-rw-r--r-- | apps/files_external/tests/storage/dropboxtest.php (renamed from apps/files_external/tests/backends/dropbox.php) | 12 | ||||
-rw-r--r-- | apps/files_external/tests/storage/ftptest.php (renamed from apps/files_external/tests/backends/ftp.php) | 26 | ||||
-rw-r--r-- | apps/files_external/tests/storage/googletest.php (renamed from apps/files_external/tests/backends/google.php) | 12 | ||||
-rw-r--r-- | apps/files_external/tests/storage/owncloudtest.php (renamed from apps/files_external/tests/backends/owncloud.php) | 12 | ||||
-rw-r--r-- | apps/files_external/tests/storage/sftp_keytest.php (renamed from apps/files_external/tests/backends/sftp_key.php) | 12 | ||||
-rw-r--r-- | apps/files_external/tests/storage/sftptest.php (renamed from apps/files_external/tests/backends/sftp.php) | 16 | ||||
-rw-r--r-- | apps/files_external/tests/storage/smbtest.php (renamed from apps/files_external/tests/backends/smb.php) | 14 | ||||
-rw-r--r-- | apps/files_external/tests/storage/swifttest.php (renamed from apps/files_external/tests/backends/swift.php) | 12 | ||||
-rw-r--r-- | apps/files_external/tests/storage/webdavtest.php (renamed from apps/files_external/tests/backends/webdav.php) | 12 | ||||
-rw-r--r-- | apps/updatenotification/appinfo/app.php | 7 | ||||
-rw-r--r-- | apps/updatenotification/appinfo/application.php | 7 | ||||
-rw-r--r-- | apps/updatenotification/lib/updatechecker.php | 8 | ||||
-rw-r--r-- | apps/updatenotification/tests/UpdateCheckerTest.php | 2 | ||||
-rw-r--r-- | apps/user_ldap/l10n/sl.js | 5 | ||||
-rw-r--r-- | apps/user_ldap/l10n/sl.json | 5 | ||||
-rw-r--r-- | apps/user_ldap/lib/configuration.php | 3 | ||||
-rw-r--r-- | apps/user_ldap/lib/connection.php | 5 | ||||
-rwxr-xr-x | autotest-external.sh | 7 | ||||
-rw-r--r-- | build/integration/features/bootstrap/WebDav.php | 19 | ||||
-rw-r--r-- | build/integration/features/sharing-v1.feature | 54 | ||||
-rw-r--r-- | build/integration/features/webdav-related.feature | 13 | ||||
-rw-r--r-- | config/config.sample.php | 28 | ||||
-rw-r--r-- | core/Application.php | 15 | ||||
-rw-r--r-- | core/Command/Upgrade.php | 1 | ||||
-rw-r--r-- | core/Controller/LoginController.php | 160 | ||||
-rw-r--r-- | core/ajax/update.php | 11 | ||||
-rw-r--r-- | core/css/styles.css | 31 | ||||
-rw-r--r-- | core/img/background.jpg | bin | 0 -> 90185 bytes | |||
-rw-r--r-- | core/js/placeholder.js | 8 | ||||
-rw-r--r-- | core/l10n/ca.js | 1 | ||||
-rw-r--r-- | core/l10n/ca.json | 1 | ||||
-rw-r--r-- | core/l10n/cs_CZ.js | 3 | ||||
-rw-r--r-- | core/l10n/cs_CZ.json | 3 | ||||
-rw-r--r-- | core/l10n/da.js | 1 | ||||
-rw-r--r-- | core/l10n/da.json | 1 | ||||
-rw-r--r-- | core/l10n/de.js | 1 | ||||
-rw-r--r-- | core/l10n/de.json | 1 | ||||
-rw-r--r-- | core/l10n/de_AT.js | 1 | ||||
-rw-r--r-- | core/l10n/de_AT.json | 1 | ||||
-rw-r--r-- | core/l10n/de_DE.js | 1 | ||||
-rw-r--r-- | core/l10n/de_DE.json | 1 | ||||
-rw-r--r-- | core/l10n/el.js | 1 | ||||
-rw-r--r-- | core/l10n/el.json | 1 | ||||
-rw-r--r-- | core/l10n/en_GB.js | 1 | ||||
-rw-r--r-- | core/l10n/en_GB.json | 1 | ||||
-rw-r--r-- | core/l10n/es.js | 1 | ||||
-rw-r--r-- | core/l10n/es.json | 1 | ||||
-rw-r--r-- | core/l10n/et_EE.js | 1 | ||||
-rw-r--r-- | core/l10n/et_EE.json | 1 | ||||
-rw-r--r-- | core/l10n/fa.js | 1 | ||||
-rw-r--r-- | core/l10n/fa.json | 1 | ||||
-rw-r--r-- | core/l10n/fi_FI.js | 1 | ||||
-rw-r--r-- | core/l10n/fi_FI.json | 1 | ||||
-rw-r--r-- | core/l10n/fr.js | 2 | ||||
-rw-r--r-- | core/l10n/fr.json | 2 | ||||
-rw-r--r-- | core/l10n/he.js | 1 | ||||
-rw-r--r-- | core/l10n/he.json | 1 | ||||
-rw-r--r-- | core/l10n/hu_HU.js | 48 | ||||
-rw-r--r-- | core/l10n/hu_HU.json | 48 | ||||
-rw-r--r-- | core/l10n/id.js | 1 | ||||
-rw-r--r-- | core/l10n/id.json | 1 | ||||
-rw-r--r-- | core/l10n/is.js | 1 | ||||
-rw-r--r-- | core/l10n/is.json | 1 | ||||
-rw-r--r-- | core/l10n/it.js | 1 | ||||
-rw-r--r-- | core/l10n/it.json | 1 | ||||
-rw-r--r-- | core/l10n/ja.js | 1 | ||||
-rw-r--r-- | core/l10n/ja.json | 1 | ||||
-rw-r--r-- | core/l10n/ko.js | 1 | ||||
-rw-r--r-- | core/l10n/ko.json | 1 | ||||
-rw-r--r-- | core/l10n/lt_LT.js | 1 | ||||
-rw-r--r-- | core/l10n/lt_LT.json | 1 | ||||
-rw-r--r-- | core/l10n/mk.js | 1 | ||||
-rw-r--r-- | core/l10n/mk.json | 1 | ||||
-rw-r--r-- | core/l10n/nb_NO.js | 1 | ||||
-rw-r--r-- | core/l10n/nb_NO.json | 1 | ||||
-rw-r--r-- | core/l10n/nds.js | 1 | ||||
-rw-r--r-- | core/l10n/nds.json | 1 | ||||
-rw-r--r-- | core/l10n/nl.js | 1 | ||||
-rw-r--r-- | core/l10n/nl.json | 1 | ||||
-rw-r--r-- | core/l10n/oc.js | 1 | ||||
-rw-r--r-- | core/l10n/oc.json | 1 | ||||
-rw-r--r-- | core/l10n/pl.js | 1 | ||||
-rw-r--r-- | core/l10n/pl.json | 1 | ||||
-rw-r--r-- | core/l10n/pt_BR.js | 1 | ||||
-rw-r--r-- | core/l10n/pt_BR.json | 1 | ||||
-rw-r--r-- | core/l10n/pt_PT.js | 1 | ||||
-rw-r--r-- | core/l10n/pt_PT.json | 1 | ||||
-rw-r--r-- | core/l10n/ru.js | 1 | ||||
-rw-r--r-- | core/l10n/ru.json | 1 | ||||
-rw-r--r-- | core/l10n/sk_SK.js | 1 | ||||
-rw-r--r-- | core/l10n/sk_SK.json | 1 | ||||
-rw-r--r-- | core/l10n/sl.js | 2 | ||||
-rw-r--r-- | core/l10n/sl.json | 2 | ||||
-rw-r--r-- | core/l10n/sq.js | 1 | ||||
-rw-r--r-- | core/l10n/sq.json | 1 | ||||
-rw-r--r-- | core/l10n/sr.js | 1 | ||||
-rw-r--r-- | core/l10n/sr.json | 1 | ||||
-rw-r--r-- | core/l10n/sv.js | 1 | ||||
-rw-r--r-- | core/l10n/sv.json | 1 | ||||
-rw-r--r-- | core/l10n/th_TH.js | 1 | ||||
-rw-r--r-- | core/l10n/th_TH.json | 1 | ||||
-rw-r--r-- | core/l10n/tr.js | 1 | ||||
-rw-r--r-- | core/l10n/tr.json | 1 | ||||
-rw-r--r-- | core/l10n/uk.js | 1 | ||||
-rw-r--r-- | core/l10n/uk.json | 1 | ||||
-rw-r--r-- | core/l10n/zh_CN.js | 1 | ||||
-rw-r--r-- | core/l10n/zh_CN.json | 1 | ||||
-rw-r--r-- | core/l10n/zh_TW.js | 1 | ||||
-rw-r--r-- | core/l10n/zh_TW.json | 1 | ||||
-rw-r--r-- | core/routes.php | 2 | ||||
-rw-r--r-- | core/templates/login.php | 4 | ||||
-rw-r--r-- | core/templates/update.use-cli.php | 14 | ||||
-rw-r--r-- | lib/base.php | 121 | ||||
-rw-r--r-- | lib/l10n/cs_CZ.js | 9 | ||||
-rw-r--r-- | lib/l10n/cs_CZ.json | 9 | ||||
-rw-r--r-- | lib/l10n/en_GB.js | 8 | ||||
-rw-r--r-- | lib/l10n/en_GB.json | 8 | ||||
-rw-r--r-- | lib/l10n/es.js | 11 | ||||
-rw-r--r-- | lib/l10n/es.json | 11 | ||||
-rw-r--r-- | lib/l10n/sl.js | 11 | ||||
-rw-r--r-- | lib/l10n/sl.json | 11 | ||||
-rw-r--r-- | lib/private/Cache/CappedMemoryCache.php (renamed from lib/private/cache/cappedmemorycache.php) | 0 | ||||
-rw-r--r-- | lib/private/Cache/File.php (renamed from lib/private/cache/file.php) | 0 | ||||
-rw-r--r-- | lib/private/Command/AsyncBus.php (renamed from lib/private/command/asyncbus.php) | 0 | ||||
-rw-r--r-- | lib/private/Command/CallableJob.php (renamed from lib/private/command/callablejob.php) | 0 | ||||
-rw-r--r-- | lib/private/Command/ClosureJob.php (renamed from lib/private/command/closurejob.php) | 0 | ||||
-rw-r--r-- | lib/private/Command/CommandJob.php (renamed from lib/private/command/commandjob.php) | 0 | ||||
-rw-r--r-- | lib/private/Command/FileAccess.php (renamed from lib/private/command/fileaccess.php) | 0 | ||||
-rw-r--r-- | lib/private/Command/QueueBus.php (renamed from lib/private/command/queuebus.php) | 0 | ||||
-rw-r--r-- | lib/private/Comments/Comment.php (renamed from lib/private/comments/comment.php) | 0 | ||||
-rw-r--r-- | lib/private/Comments/Manager.php (renamed from lib/private/comments/manager.php) | 0 | ||||
-rw-r--r-- | lib/private/Comments/ManagerFactory.php (renamed from lib/private/comments/managerfactory.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/Adapter.php (renamed from lib/private/db/adapter.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/AdapterMySQL.php (renamed from lib/private/db/adaptermysql.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/AdapterOCI8.php (renamed from lib/private/db/adapteroci8.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/AdapterPgSql.php (renamed from lib/private/db/adapterpgsql.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/AdapterSqlite.php (renamed from lib/private/db/adaptersqlite.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/Connection.php (renamed from lib/private/db/connection.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/ConnectionFactory.php (renamed from lib/private/db/connectionfactory.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/MDB2SchemaManager.php (renamed from lib/private/db/mdb2schemamanager.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/MDB2SchemaReader.php (renamed from lib/private/db/mdb2schemareader.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/MDB2SchemaWriter.php (renamed from lib/private/db/mdb2schemawriter.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/MigrationException.php (renamed from lib/private/db/migrationexception.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/Migrator.php (renamed from lib/private/db/migrator.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/MySQLMigrator.php (renamed from lib/private/db/mysqlmigrator.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/NoCheckMigrator.php (renamed from lib/private/db/nocheckmigrator.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/OCSqlitePlatform.php (renamed from lib/private/db/ocsqliteplatform.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/OracleConnection.php (renamed from lib/private/db/oracleconnection.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/OracleMigrator.php (renamed from lib/private/db/oraclemigrator.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/PgSqlTools.php (renamed from lib/private/db/pgsqltools.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/QueryBuilder/CompositeExpression.php (renamed from lib/private/db/querybuilder/compositeexpression.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php (renamed from lib/private/db/querybuilder/expressionbuilder/expressionbuilder.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/QueryBuilder/ExpressionBuilder/MySqlExpressionBuilder.php (renamed from lib/private/db/querybuilder/expressionbuilder/mysqlexpressionbuilder.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php (renamed from lib/private/db/querybuilder/expressionbuilder/ociexpressionbuilder.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php (renamed from lib/private/db/querybuilder/expressionbuilder/pgsqlexpressionbuilder.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/QueryBuilder/Literal.php (renamed from lib/private/db/querybuilder/literal.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/QueryBuilder/Parameter.php (renamed from lib/private/db/querybuilder/parameter.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/QueryBuilder/QueryBuilder.php (renamed from lib/private/db/querybuilder/querybuilder.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/QueryBuilder/QueryFunction.php (renamed from lib/private/db/querybuilder/queryfunction.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/QueryBuilder/QuoteHelper.php (renamed from lib/private/db/querybuilder/quotehelper.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/SQLiteMigrator.php (renamed from lib/private/db/sqlitemigrator.php) | 0 | ||||
-rw-r--r-- | lib/private/DB/SQLiteSessionInit.php (renamed from lib/private/db/sqlitesessioninit.php) | 0 | ||||
-rw-r--r-- | lib/private/IntegrityCheck/Checker.php (renamed from lib/private/integritycheck/checker.php) | 2 | ||||
-rw-r--r-- | lib/private/IntegrityCheck/Exceptions/InvalidSignatureException.php (renamed from lib/private/integritycheck/exceptions/invalidsignatureexception.php) | 0 | ||||
-rw-r--r-- | lib/private/IntegrityCheck/Helpers/AppLocator.php (renamed from lib/private/integritycheck/helpers/applocator.php) | 0 | ||||
-rw-r--r-- | lib/private/IntegrityCheck/Helpers/EnvironmentHelper.php (renamed from lib/private/integritycheck/helpers/environmenthelper.php) | 0 | ||||
-rw-r--r-- | lib/private/IntegrityCheck/Helpers/FileAccessHelper.php (renamed from lib/private/integritycheck/helpers/fileaccesshelper.php) | 0 | ||||
-rw-r--r-- | lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php (renamed from lib/private/integritycheck/iterator/excludefilebynamefilteriterator.php) | 0 | ||||
-rw-r--r-- | lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php (renamed from lib/private/integritycheck/iterator/excludefoldersbypathfilteriterator.php) | 0 | ||||
-rw-r--r-- | lib/private/Memcache/APC.php (renamed from lib/private/memcache/apc.php) | 0 | ||||
-rw-r--r-- | lib/private/Memcache/APCu.php (renamed from lib/private/memcache/apcu.php) | 0 | ||||
-rw-r--r-- | lib/private/Memcache/ArrayCache.php (renamed from lib/private/memcache/arraycache.php) | 0 | ||||
-rw-r--r-- | lib/private/Memcache/CADTrait.php (renamed from lib/private/memcache/cadtrait.php) | 0 | ||||
-rw-r--r-- | lib/private/Memcache/CASTrait.php (renamed from lib/private/memcache/castrait.php) | 0 | ||||
-rw-r--r-- | lib/private/Memcache/Cache.php (renamed from lib/private/memcache/cache.php) | 0 | ||||
-rw-r--r-- | lib/private/Memcache/Factory.php (renamed from lib/private/memcache/factory.php) | 0 | ||||
-rw-r--r-- | lib/private/Memcache/Memcached.php (renamed from lib/private/memcache/memcached.php) | 0 | ||||
-rw-r--r-- | lib/private/Memcache/NullCache.php (renamed from lib/private/memcache/nullcache.php) | 0 | ||||
-rw-r--r-- | lib/private/Memcache/Redis.php (renamed from lib/private/memcache/redis.php) | 0 | ||||
-rw-r--r-- | lib/private/Memcache/XCache.php (renamed from lib/private/memcache/xcache.php) | 0 | ||||
-rw-r--r-- | lib/private/Notification/Action.php (renamed from lib/private/notification/action.php) | 0 | ||||
-rw-r--r-- | lib/private/Notification/Manager.php (renamed from lib/private/notification/manager.php) | 0 | ||||
-rw-r--r-- | lib/private/Notification/Notification.php (renamed from lib/private/notification/notification.php) | 0 | ||||
-rw-r--r-- | lib/private/Security/CSP/ContentSecurityPolicy.php (renamed from lib/private/security/csp/contentsecuritypolicy.php) | 0 | ||||
-rw-r--r-- | lib/private/Security/CSP/ContentSecurityPolicyManager.php (renamed from lib/private/security/csp/contentsecuritypolicymanager.php) | 0 | ||||
-rw-r--r-- | lib/private/Security/CSRF/CsrfToken.php (renamed from lib/private/security/csrf/csrftoken.php) | 0 | ||||
-rw-r--r-- | lib/private/Security/CSRF/CsrfTokenGenerator.php (renamed from lib/private/security/csrf/csrftokengenerator.php) | 0 | ||||
-rw-r--r-- | lib/private/Security/CSRF/CsrfTokenManager.php (renamed from lib/private/security/csrf/csrftokenmanager.php) | 0 | ||||
-rw-r--r-- | lib/private/Security/CSRF/TokenStorage/SessionStorage.php (renamed from lib/private/security/csrf/tokenstorage/sessionstorage.php) | 0 | ||||
-rw-r--r-- | lib/private/Security/Certificate.php (renamed from lib/private/security/certificate.php) | 0 | ||||
-rw-r--r-- | lib/private/Security/CertificateManager.php (renamed from lib/private/security/certificatemanager.php) | 0 | ||||
-rw-r--r-- | lib/private/Security/CredentialsManager.php (renamed from lib/private/security/credentialsmanager.php) | 0 | ||||
-rw-r--r-- | lib/private/Security/Crypto.php (renamed from lib/private/security/crypto.php) | 0 | ||||
-rw-r--r-- | lib/private/Security/Hasher.php (renamed from lib/private/security/hasher.php) | 0 | ||||
-rw-r--r-- | lib/private/Security/SecureRandom.php (renamed from lib/private/security/securerandom.php) | 0 | ||||
-rw-r--r-- | lib/private/Security/TrustedDomainHelper.php (renamed from lib/private/security/trusteddomainhelper.php) | 0 | ||||
-rw-r--r-- | lib/private/Server.php | 3 | ||||
-rw-r--r-- | lib/private/Session/CryptoSessionData.php (renamed from lib/private/session/cryptosessiondata.php) | 0 | ||||
-rw-r--r-- | lib/private/Session/CryptoWrapper.php (renamed from lib/private/session/cryptowrapper.php) | 0 | ||||
-rw-r--r-- | lib/private/Session/Internal.php (renamed from lib/private/session/internal.php) | 0 | ||||
-rw-r--r-- | lib/private/Session/Memory.php (renamed from lib/private/session/memory.php) | 0 | ||||
-rw-r--r-- | lib/private/Session/Session.php (renamed from lib/private/session/session.php) | 0 | ||||
-rw-r--r-- | lib/private/Share20/DefaultShareProvider.php | 38 | ||||
-rw-r--r-- | lib/private/Share20/Hooks.php | 4 | ||||
-rw-r--r-- | lib/private/Share20/Manager.php | 8 | ||||
-rw-r--r-- | lib/private/api.php | 2 | ||||
-rw-r--r-- | lib/private/appframework/http/request.php | 2 | ||||
-rw-r--r-- | lib/private/appframework/middleware/security/securitymiddleware.php | 9 | ||||
-rw-r--r-- | lib/private/files/cache/scanner.php | 50 | ||||
-rw-r--r-- | lib/private/legacy/db/statementwrapper.php (renamed from lib/private/db/statementwrapper.php) | 0 | ||||
-rw-r--r-- | lib/private/share/hooks.php | 46 | ||||
-rw-r--r-- | lib/private/template/base.php | 9 | ||||
-rw-r--r-- | lib/private/templatelayout.php | 4 | ||||
-rw-r--r-- | lib/private/updater.php | 66 | ||||
-rw-r--r-- | lib/private/updater/versioncheck.php | 133 | ||||
-rw-r--r-- | lib/private/user.php | 22 | ||||
-rw-r--r-- | lib/private/util.php | 41 | ||||
-rw-r--r-- | lib/public/Share/IManager.php | 12 | ||||
-rw-r--r-- | lib/public/Share/IShareProvider.php | 11 | ||||
-rw-r--r-- | lib/public/irequest.php | 2 | ||||
-rw-r--r-- | lib/public/user.php | 2 | ||||
-rw-r--r-- | remote.php | 5 | ||||
-rw-r--r-- | settings/js/users/deleteHandler.js | 2 | ||||
-rw-r--r-- | settings/l10n/cs_CZ.js | 1 | ||||
-rw-r--r-- | settings/l10n/cs_CZ.json | 1 | ||||
-rw-r--r-- | settings/l10n/de.js | 1 | ||||
-rw-r--r-- | settings/l10n/de.json | 1 | ||||
-rw-r--r-- | settings/l10n/de_DE.js | 1 | ||||
-rw-r--r-- | settings/l10n/de_DE.json | 1 | ||||
-rw-r--r-- | settings/l10n/es.js | 2 | ||||
-rw-r--r-- | settings/l10n/es.json | 2 | ||||
-rw-r--r-- | settings/l10n/fi_FI.js | 1 | ||||
-rw-r--r-- | settings/l10n/fi_FI.json | 1 | ||||
-rw-r--r-- | settings/l10n/it.js | 1 | ||||
-rw-r--r-- | settings/l10n/it.json | 1 | ||||
-rw-r--r-- | settings/l10n/pt_BR.js | 1 | ||||
-rw-r--r-- | settings/l10n/pt_BR.json | 1 | ||||
-rw-r--r-- | settings/l10n/sl.js | 1 | ||||
-rw-r--r-- | settings/l10n/sl.json | 1 | ||||
-rw-r--r-- | settings/l10n/sq.js | 1 | ||||
-rw-r--r-- | settings/l10n/sq.json | 1 | ||||
-rw-r--r-- | settings/tests/js/users/deleteHandlerSpec.js | 14 | ||||
-rw-r--r-- | tests/core/controller/LoginControllerTest.php | 267 | ||||
-rw-r--r-- | tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php | 13 | ||||
-rw-r--r-- | tests/lib/share/share.php | 156 | ||||
-rw-r--r-- | tests/lib/share20/defaultshareprovidertest.php | 58 | ||||
-rw-r--r-- | tests/lib/updater.php | 239 | ||||
-rw-r--r-- | tests/lib/updater/versioncheck.php | 289 | ||||
-rw-r--r-- | tests/phpunit-autotest-external.xml | 2 |
298 files changed, 1789 insertions, 1045 deletions
diff --git a/.mention-bot b/.mention-bot index 5997a7a03bb..91ad57d8509 100644 --- a/.mention-bot +++ b/.mention-bot @@ -11,8 +11,8 @@ { "name": "nickvergessen", "files": [ - "lib/private/activity/**", - "lib/private/notification/**", + "lib/private/Activity/**", + "lib/private/Notification/**", "lib/public/activity/**", "lib/public/notification/**" ] diff --git a/3rdparty b/3rdparty -Subproject 631b7de7cebfb85f4877bbb77ff32c1b735c1ee +Subproject 182a1040823e45b0c5664818711dc783a2ca57a diff --git a/apps/dav/appinfo/v1/publicwebdav.php b/apps/dav/appinfo/v1/publicwebdav.php index b26e9ebe7c8..43fedb19415 100644 --- a/apps/dav/appinfo/v1/publicwebdav.php +++ b/apps/dav/appinfo/v1/publicwebdav.php @@ -30,6 +30,7 @@ $RUNTIME_APPTYPES = ['filesystem', 'authentication', 'logging']; OC_App::loadApps($RUNTIME_APPTYPES); OC_Util::obEnd(); +\OC::$server->getSession()->close(); // Backends $authBackend = new OCA\DAV\Connector\PublicAuth( diff --git a/apps/dav/lib/caldav/calendar.php b/apps/dav/lib/caldav/calendar.php index 5072d96107e..6d6c0b5d7a4 100644 --- a/apps/dav/lib/caldav/calendar.php +++ b/apps/dav/lib/caldav/calendar.php @@ -22,17 +22,19 @@ namespace OCA\DAV\CalDAV; use OCA\DAV\DAV\Sharing\IShareable; +use OCP\IL10N; use Sabre\CalDAV\Backend\BackendInterface; use Sabre\DAV\Exception\Forbidden; use Sabre\DAV\PropPatch; class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { - public function __construct(BackendInterface $caldavBackend, $calendarInfo) { + public function __construct(BackendInterface $caldavBackend, $calendarInfo, IL10N $l10n) { parent::__construct($caldavBackend, $calendarInfo); if ($this->getName() === BirthdayService::BIRTHDAY_CALENDAR_URI) { $this->calendarInfo['{http://sabredav.org/ns}read-only'] = true; + $this->calendarInfo['{DAV:}displayname'] = $l10n->t('Contact birthdays'); } } diff --git a/apps/dav/lib/caldav/calendarhome.php b/apps/dav/lib/caldav/calendarhome.php index 87b8d4bb320..a4c485a8983 100644 --- a/apps/dav/lib/caldav/calendarhome.php +++ b/apps/dav/lib/caldav/calendarhome.php @@ -21,6 +21,7 @@ */ namespace OCA\DAV\CalDAV; +use Sabre\CalDAV\Backend\BackendInterface; use Sabre\CalDAV\Backend\NotificationSupport; use Sabre\CalDAV\Backend\SchedulingSupport; use Sabre\CalDAV\Backend\SubscriptionSupport; @@ -31,34 +32,42 @@ use Sabre\DAV\Exception\NotFound; class CalendarHome extends \Sabre\CalDAV\CalendarHome { + /** @var \OCP\IL10N */ + private $l10n; + + public function __construct(BackendInterface $caldavBackend, $principalInfo) { + parent::__construct($caldavBackend, $principalInfo); + $this->l10n = \OC::$server->getL10N('dav'); + } + /** * @inheritdoc */ function getChildren() { $calendars = $this->caldavBackend->getCalendarsForUser($this->principalInfo['uri']); - $objs = []; + $objects = []; foreach ($calendars as $calendar) { - $objs[] = new Calendar($this->caldavBackend, $calendar); + $objects[] = new Calendar($this->caldavBackend, $calendar, $this->l10n); } if ($this->caldavBackend instanceof SchedulingSupport) { - $objs[] = new Inbox($this->caldavBackend, $this->principalInfo['uri']); - $objs[] = new Outbox($this->principalInfo['uri']); + $objects[] = new Inbox($this->caldavBackend, $this->principalInfo['uri']); + $objects[] = new Outbox($this->principalInfo['uri']); } // We're adding a notifications node, if it's supported by the backend. if ($this->caldavBackend instanceof NotificationSupport) { - $objs[] = new \Sabre\CalDAV\Notifications\Collection($this->caldavBackend, $this->principalInfo['uri']); + $objects[] = new \Sabre\CalDAV\Notifications\Collection($this->caldavBackend, $this->principalInfo['uri']); } // If the backend supports subscriptions, we'll add those as well, if ($this->caldavBackend instanceof SubscriptionSupport) { foreach ($this->caldavBackend->getSubscriptionsForUser($this->principalInfo['uri']) as $subscription) { - $objs[] = new Subscription($this->caldavBackend, $subscription); + $objects[] = new Subscription($this->caldavBackend, $subscription); } } - return $objs; + return $objects; } /** @@ -79,7 +88,7 @@ class CalendarHome extends \Sabre\CalDAV\CalendarHome { // Calendars foreach ($this->caldavBackend->getCalendarsForUser($this->principalInfo['uri']) as $calendar) { if ($calendar['uri'] === $name) { - return new Calendar($this->caldavBackend, $calendar); + return new Calendar($this->caldavBackend, $calendar, $this->l10n); } } @@ -94,4 +103,4 @@ class CalendarHome extends \Sabre\CalDAV\CalendarHome { throw new NotFound('Node with name \'' . $name . '\' could not be found'); } -}
\ No newline at end of file +} diff --git a/apps/dav/lib/connector/sabre/filesplugin.php b/apps/dav/lib/connector/sabre/filesplugin.php index 444e80d4ae0..686d0863f91 100644 --- a/apps/dav/lib/connector/sabre/filesplugin.php +++ b/apps/dav/lib/connector/sabre/filesplugin.php @@ -47,7 +47,7 @@ class FilesPlugin extends ServerPlugin { const FILEID_PROPERTYNAME = '{http://owncloud.org/ns}id'; const INTERNAL_FILEID_PROPERTYNAME = '{http://owncloud.org/ns}fileid'; const PERMISSIONS_PROPERTYNAME = '{http://owncloud.org/ns}permissions'; - const SHARE_PERMISSIONS_PROPERTYNAME = '{http://owncloud.org/ns}share-permissions'; + const SHARE_PERMISSIONS_PROPERTYNAME = '{http://open-collaboration-services.org/ns}share-permissions'; const DOWNLOADURL_PROPERTYNAME = '{http://owncloud.org/ns}downloadURL'; const SIZE_PROPERTYNAME = '{http://owncloud.org/ns}size'; const GETETAG_PROPERTYNAME = '{DAV:}getetag'; diff --git a/apps/dav/tests/unit/caldav/caldavbackendtest.php b/apps/dav/tests/unit/caldav/caldavbackendtest.php index 87a700a473d..a4a19f5bd3e 100644 --- a/apps/dav/tests/unit/caldav/caldavbackendtest.php +++ b/apps/dav/tests/unit/caldav/caldavbackendtest.php @@ -136,14 +136,23 @@ class CalDavBackendTest extends TestCase { */ public function testCalendarSharing($userCanRead, $userCanWrite, $groupCanRead, $groupCanWrite, $add) { + $l10n = $this->getMockBuilder('\OCP\IL10N') + ->disableOriginalConstructor()->getMock(); + $l10n + ->expects($this->any()) + ->method('t') + ->will($this->returnCallback(function ($text, $parameters = array()) { + return vsprintf($text, $parameters); + })); + $calendarId = $this->createTestCalendar(); $books = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER); $this->assertEquals(1, count($books)); - $calendar = new Calendar($this->backend, $books[0]); + $calendar = new Calendar($this->backend, $books[0], $l10n); $this->backend->updateShares($calendar, $add, []); $books = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER1); $this->assertEquals(1, count($books)); - $calendar = new Calendar($this->backend, $books[0]); + $calendar = new Calendar($this->backend, $books[0], $l10n); $acl = $calendar->getACL(); $this->assertAcl(self::UNIT_TEST_USER, '{DAV:}read', $acl); $this->assertAcl(self::UNIT_TEST_USER, '{DAV:}write', $acl); diff --git a/apps/dav/tests/unit/caldav/calendartest.php b/apps/dav/tests/unit/caldav/calendartest.php index 9e0c3c6c7e4..812e0074d15 100644 --- a/apps/dav/tests/unit/caldav/calendartest.php +++ b/apps/dav/tests/unit/caldav/calendartest.php @@ -23,11 +23,27 @@ namespace OCA\DAV\Tests\Unit\CalDAV; use OCA\DAV\CalDAV\CalDavBackend; use OCA\DAV\CalDAV\Calendar; +use OCP\IL10N; use Sabre\DAV\PropPatch; use Test\TestCase; class CalendarTest extends TestCase { + /** @var IL10N */ + private $l10n; + + public function setUp() { + parent::setUp(); + $this->l10n = $this->getMockBuilder('\OCP\IL10N') + ->disableOriginalConstructor()->getMock(); + $this->l10n + ->expects($this->any()) + ->method('t') + ->will($this->returnCallback(function ($text, $parameters = array()) { + return vsprintf($text, $parameters); + })); + } + public function testDelete() { /** @var \PHPUnit_Framework_MockObject_MockObject | CalDavBackend $backend */ $backend = $this->getMockBuilder('OCA\DAV\CalDAV\CalDavBackend')->disableOriginalConstructor()->getMock(); @@ -41,7 +57,7 @@ class CalendarTest extends TestCase { 'id' => 666, 'uri' => 'cal', ]; - $c = new Calendar($backend, $calendarInfo); + $c = new Calendar($backend, $calendarInfo, $this->l10n); $c->delete(); } @@ -61,7 +77,7 @@ class CalendarTest extends TestCase { 'id' => 666, 'uri' => 'cal', ]; - $c = new Calendar($backend, $calendarInfo); + $c = new Calendar($backend, $calendarInfo, $this->l10n); $c->delete(); } @@ -93,7 +109,7 @@ class CalendarTest extends TestCase { 'id' => 666, 'uri' => 'default' ]; - $c = new Calendar($backend, $calendarInfo); + $c = new Calendar($backend, $calendarInfo, $this->l10n); if ($throws) { $this->setExpectedException('\Sabre\DAV\Exception\Forbidden'); @@ -122,7 +138,7 @@ class CalendarTest extends TestCase { if ($hasOwnerSet) { $calendarInfo['{http://owncloud.org/ns}owner-principal'] = 'user1'; } - $c = new Calendar($backend, $calendarInfo); + $c = new Calendar($backend, $calendarInfo, $this->l10n); $acl = $c->getACL(); $childAcl = $c->getChildACL(); diff --git a/apps/federatedfilesharing/lib/federatedshareprovider.php b/apps/federatedfilesharing/lib/federatedshareprovider.php index 64e4b6de4f1..78b0b664204 100644 --- a/apps/federatedfilesharing/lib/federatedshareprovider.php +++ b/apps/federatedfilesharing/lib/federatedshareprovider.php @@ -590,4 +590,15 @@ class FederatedShareProvider implements IShareProvider { // We don't handle groups here return; } + + /** + * This provider does not handle groups + * + * @param string $uid + * @param string $gid + */ + public function userDeletedFromGroup($uid, $gid) { + // We don't handle groups here + return; + } } diff --git a/apps/files/appinfo/application.php b/apps/files/appinfo/application.php index 593e0533c80..2d2decf6288 100644 --- a/apps/files/appinfo/application.php +++ b/apps/files/appinfo/application.php @@ -43,7 +43,8 @@ class Application extends App { $server->getUserSession(), $c->query('TagService'), $server->getPreviewManager(), - $server->getShareManager() + $server->getShareManager(), + $server->getConfig() ); }); diff --git a/apps/files/appinfo/routes.php b/apps/files/appinfo/routes.php index 731c671b60a..6ad938101a2 100644 --- a/apps/files/appinfo/routes.php +++ b/apps/files/appinfo/routes.php @@ -1,6 +1,7 @@ <?php /** * @author Bart Visscher <bartv@thisnet.nl> + * @author Christoph Wurst <christoph@winzerhof-wurst.at> * @author Lukas Reschke <lukas@owncloud.com> * @author Roeland Jago Douma <rullzer@owncloud.com> * @author Tobias Kaminsky <tobias@kaminsky.me> @@ -48,6 +49,11 @@ $application->registerRoutes( 'verb' => 'GET', 'requirements' => array('tagName' => '.+'), ), + array( + 'name' => 'API#updateFileSorting', + 'url' => '/api/v1/sorting', + 'verb' => 'POST' + ), [ 'name' => 'view#index', 'url' => '/', diff --git a/apps/files/controller/apicontroller.php b/apps/files/controller/apicontroller.php index ad286284386..43d426476fe 100644 --- a/apps/files/controller/apicontroller.php +++ b/apps/files/controller/apicontroller.php @@ -1,6 +1,7 @@ <?php /** * @author Joas Schilling <nickvergessen@owncloud.com> + * @author Christoph Wurst <christoph@winzerhof-wurst.at> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Roeland Jago Douma <rullzer@owncloud.com> @@ -29,13 +30,14 @@ namespace OCA\Files\Controller; use OCP\AppFramework\Http; use OCP\AppFramework\Controller; +use OCP\IConfig; use OCP\IRequest; use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http\DataDisplayResponse; +use OCP\AppFramework\Http\Response; use OCA\Files\Service\TagService; use OCP\IPreview; use OCP\Share\IManager; -use OCP\Files\FileInfo; use OCP\Files\Node; use OCP\IUserSession; @@ -53,6 +55,8 @@ class ApiController extends Controller { private $previewManager; /** IUserSession */ private $userSession; + /** IConfig */ + private $config; /** * @param string $appName @@ -65,12 +69,14 @@ class ApiController extends Controller { IUserSession $userSession, TagService $tagService, IPreview $previewManager, - IManager $shareManager) { + IManager $shareManager, + IConfig $config) { parent::__construct($appName, $request); $this->userSession = $userSession; $this->tagService = $tagService; $this->previewManager = $previewManager; $this->shareManager = $shareManager; + $this->config = $config; } /** @@ -196,4 +202,26 @@ class ApiController extends Controller { return $shareTypes; } + /** + * Change the default sort mode + * + * @NoAdminRequired + * + * @param string $mode + * @param string $direction + * @return Response + */ + public function updateFileSorting($mode, $direction) { + $allowedMode = ['name', 'size', 'mtime']; + $allowedDirection = ['asc', 'desc']; + if (!in_array($mode, $allowedMode) || !in_array($direction, $allowedDirection)) { + $response = new Response(); + $response->setStatus(Http::STATUS_UNPROCESSABLE_ENTITY); + return $response; + } + $this->config->setUserValue($this->userSession->getUser()->getUID(), 'files', 'file_sorting', $mode); + $this->config->setUserValue($this->userSession->getUser()->getUID(), 'files', 'file_sorting_direction', $direction); + return new Response(); + } + } diff --git a/apps/files/controller/viewcontroller.php b/apps/files/controller/viewcontroller.php index 800cf008fa7..6c5f4c6d2a0 100644 --- a/apps/files/controller/viewcontroller.php +++ b/apps/files/controller/viewcontroller.php @@ -1,5 +1,6 @@ <?php /** + * @author Christoph Wurst <christoph@winzerhof-wurst.at> * @author Lukas Reschke <lukas@owncloud.com> * @author Thomas Müller <thomas.mueller@tmit.eu> * @@ -27,11 +28,12 @@ use OCP\AppFramework\Controller; use OCP\AppFramework\Http\ContentSecurityPolicy; use OCP\AppFramework\Http\RedirectResponse; use OCP\AppFramework\Http\TemplateResponse; +use OCP\IConfig; use OCP\IL10N; use OCP\INavigationManager; use OCP\IRequest; use OCP\IURLGenerator; -use OCP\IConfig; +use OCP\IUserSession; use Symfony\Component\EventDispatcher\EventDispatcherInterface; /** @@ -54,6 +56,8 @@ class ViewController extends Controller { protected $config; /** @var EventDispatcherInterface */ protected $eventDispatcher; + /** @var IUserSession */ + protected $userSession; /** * @param string $appName @@ -70,7 +74,8 @@ class ViewController extends Controller { INavigationManager $navigationManager, IL10N $l10n, IConfig $config, - EventDispatcherInterface $eventDispatcherInterface) { + EventDispatcherInterface $eventDispatcherInterface, + IUserSession $userSession) { parent::__construct($appName, $request); $this->appName = $appName; $this->request = $request; @@ -79,6 +84,7 @@ class ViewController extends Controller { $this->l10n = $l10n; $this->config = $config; $this->eventDispatcher = $eventDispatcherInterface; + $this->userSession = $userSession; } /** @@ -213,6 +219,9 @@ class ViewController extends Controller { $params['mailNotificationEnabled'] = $this->config->getAppValue('core', 'shareapi_allow_mail_notification', 'no'); $params['mailPublicNotificationEnabled'] = $this->config->getAppValue('core', 'shareapi_allow_public_notification', 'no'); $params['allowShareWithLink'] = $this->config->getAppValue('core', 'shareapi_allow_links', 'yes'); + $user = $this->userSession->getUser()->getUID(); + $params['defaultFileSorting'] = $this->config->getUserValue($user, 'files', 'file_sorting', 'name'); + $params['defaultFileSortingDirection'] = $this->config->getUserValue($user, 'files', 'file_sorting_direction', 'asc'); $params['appNavigation'] = $nav; $params['appContents'] = $contentItems; $this->navigationManager->setActiveEntry('files_index'); diff --git a/apps/files/js/app.js b/apps/files/js/app.js index ff505d417f1..4ed805d2681 100644 --- a/apps/files/js/app.js +++ b/apps/files/js/app.js @@ -72,7 +72,11 @@ fileActions: fileActions, allowLegacyActions: true, scrollTo: urlParams.scrollto, - filesClient: OC.Files.getClient() + filesClient: OC.Files.getClient(), + sorting: { + mode: $('#defaultFileSorting').val(), + direction: $('#defaultFileSortingDirection').val() + } } ); this.files.initialize(); diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index c8f818701a9..7de64f8ade3 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -239,7 +239,11 @@ this.fileSummary = this._createSummary(); - this.setSort('name', 'asc'); + if (options.sorting) { + this.setSort(options.sorting.mode, options.sorting.direction, false, false); + } else { + this.setSort('name', 'asc', false, false); + } var breadcrumbOptions = { onClick: _.bind(this._onClickBreadCrumb, this), @@ -695,14 +699,14 @@ sort = $target.attr('data-sort'); if (sort) { if (this._sort === sort) { - this.setSort(sort, (this._sortDirection === 'desc')?'asc':'desc', true); + this.setSort(sort, (this._sortDirection === 'desc')?'asc':'desc', true, true); } else { if ( sort === 'name' ) { //default sorting of name is opposite to size and mtime - this.setSort(sort, 'asc', true); + this.setSort(sort, 'asc', true, true); } else { - this.setSort(sort, 'desc', true); + this.setSort(sort, 'desc', true, true); } } } @@ -1370,8 +1374,9 @@ * @param sort sort attribute name * @param direction sort direction, one of "asc" or "desc" * @param update true to update the list, false otherwise (default) + * @param persist true to save changes in the database (default) */ - setSort: function(sort, direction, update) { + setSort: function(sort, direction, update, persist) { var comparator = FileList.Comparators[sort] || FileList.Comparators.name; this._sort = sort; this._sortDirection = (direction === 'desc')?'desc':'asc'; @@ -1402,6 +1407,13 @@ this.reload(); } } + + if (persist) { + $.post(OC.generateUrl('/apps/files/api/v1/sorting'), { + mode: sort, + direction: direction + }); + } }, /** diff --git a/apps/files/templates/index.php b/apps/files/templates/index.php index e825c300d31..db464ad2eca 100644 --- a/apps/files/templates/index.php +++ b/apps/files/templates/index.php @@ -18,4 +18,6 @@ <input type="hidden" name="mailNotificationEnabled" id="mailNotificationEnabled" value="<?php p($_['mailNotificationEnabled']) ?>" /> <input type="hidden" name="mailPublicNotificationEnabled" id="mailPublicNotificationEnabled" value="<?php p($_['mailPublicNotificationEnabled']) ?>" /> <input type="hidden" name="allowShareWithLink" id="allowShareWithLink" value="<?php p($_['allowShareWithLink']) ?>" /> +<input type="hidden" name="defaultFileSorting" id="defaultFileSorting" value="<?php p($_['defaultFileSorting']) ?>" /> +<input type="hidden" name="defaultFileSortingDirection" id="defaultFileSortingDirection" value="<?php p($_['defaultFileSortingDirection']) ?>" /> <?php endif; diff --git a/apps/files/tests/controller/ViewControllerTest.php b/apps/files/tests/controller/ViewControllerTest.php index 657ab6cb338..0446cc8982c 100644 --- a/apps/files/tests/controller/ViewControllerTest.php +++ b/apps/files/tests/controller/ViewControllerTest.php @@ -1,5 +1,6 @@ <?php /** + * @author Christoph Wurst <christoph@winzerhof-wurst.at> * @author Joas Schilling <nickvergessen@owncloud.com> * @author Lukas Reschke <lukas@owncloud.com> * @author Vincent Petry <pvince81@owncloud.com> @@ -33,6 +34,7 @@ use OCP\AppFramework\Http\RedirectResponse; use OCP\INavigationManager; use OCP\IL10N; use OCP\IConfig; +use OCP\IUserSession; use Symfony\Component\EventDispatcher\EventDispatcherInterface; /** @@ -55,6 +57,10 @@ class ViewControllerTest extends TestCase { private $eventDispatcher; /** @var ViewController */ private $viewController; + /** @var IUser */ + private $user; + /** @var IUserSession */ + private $userSession; public function setUp() { parent::setUp(); @@ -64,6 +70,11 @@ class ViewControllerTest extends TestCase { $this->l10n = $this->getMock('\OCP\IL10N'); $this->config = $this->getMock('\OCP\IConfig'); $this->eventDispatcher = $this->getMock('\Symfony\Component\EventDispatcher\EventDispatcherInterface'); + $this->userSession = $this->getMock('\OCP\IUserSession'); + $this->user = $this->getMock('\OCP\IUser'); + $this->userSession->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); $this->viewController = $this->getMockBuilder('\OCA\Files\Controller\ViewController') ->setConstructorArgs([ 'files', @@ -72,7 +83,8 @@ class ViewControllerTest extends TestCase { $this->navigationManager, $this->l10n, $this->config, - $this->eventDispatcher + $this->eventDispatcher, + $this->userSession ]) ->setMethods([ 'getStorageInfo', @@ -143,6 +155,12 @@ class ViewControllerTest extends TestCase { 'owner' => 'MyName', 'ownerDisplayName' => 'MyDisplayName', ])); + $this->config->expects($this->exactly(2)) + ->method('getUserValue') + ->will($this->returnValueMap([ + [$this->user->getUID(), 'files', 'file_sorting', 'name', 'name'], + [$this->user->getUID(), 'files', 'file_sorting_direction', 'asc', 'asc'] + ])); $this->config ->expects($this->any()) @@ -224,6 +242,8 @@ class ViewControllerTest extends TestCase { 'owner' => 'MyName', 'ownerDisplayName' => 'MyDisplayName', 'isPublic' => false, + 'defaultFileSorting' => 'name', + 'defaultFileSortingDirection' => 'asc', 'mailNotificationEnabled' => 'no', 'mailPublicNotificationEnabled' => 'no', 'allowShareWithLink' => 'yes', diff --git a/apps/files/tests/controller/apicontrollertest.php b/apps/files/tests/controller/apicontrollertest.php index a9b248a36fe..59f53e8ee81 100644 --- a/apps/files/tests/controller/apicontrollertest.php +++ b/apps/files/tests/controller/apicontrollertest.php @@ -1,5 +1,6 @@ <?php /** + * @author Christoph Wurst <christoph@winzerhof-wurst.at> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Roeland Jago Douma <rullzer@owncloud.com> @@ -43,6 +44,8 @@ use OCP\Image; class ApiControllerTest extends TestCase { /** @var string */ private $appName = 'files'; + /** @var \OCP\IUser */ + private $user; /** @var IRequest */ private $request; /** @var TagService */ @@ -53,19 +56,21 @@ class ApiControllerTest extends TestCase { private $apiController; /** @var \OCP\Share\IManager */ private $shareManager; + /** @var \OCP\IConfig */ + private $config; public function setUp() { $this->request = $this->getMockBuilder('\OCP\IRequest') ->disableOriginalConstructor() ->getMock(); - $user = $this->getMock('\OCP\IUser'); - $user->expects($this->any()) + $this->user = $this->getMock('\OCP\IUser'); + $this->user->expects($this->any()) ->method('getUID') ->will($this->returnValue('user1')); $userSession = $this->getMock('\OCP\IUserSession'); $userSession->expects($this->any()) ->method('getUser') - ->will($this->returnValue($user)); + ->will($this->returnValue($this->user)); $this->tagService = $this->getMockBuilder('\OCA\Files\Service\TagService') ->disableOriginalConstructor() ->getMock(); @@ -75,6 +80,7 @@ class ApiControllerTest extends TestCase { $this->preview = $this->getMockBuilder('\OCP\IPreview') ->disableOriginalConstructor() ->getMock(); + $this->config = $this->getMock('\OCP\IConfig'); $this->apiController = new ApiController( $this->appName, @@ -82,7 +88,8 @@ class ApiControllerTest extends TestCase { $userSession, $this->tagService, $this->preview, - $this->shareManager + $this->shareManager, + $this->config ); } @@ -335,4 +342,44 @@ class ApiControllerTest extends TestCase { $this->assertEquals(Http::STATUS_OK, $ret->getStatus()); } + + public function testUpdateFileSorting() { + $mode = 'mtime'; + $direction = 'desc'; + + $this->config->expects($this->at(0)) + ->method('setUserValue') + ->with($this->user->getUID(), 'files', 'file_sorting', $mode); + $this->config->expects($this->at(1)) + ->method('setUserValue') + ->with($this->user->getUID(), 'files', 'file_sorting_direction', $direction); + + $expected = new HTTP\Response(); + $actual = $this->apiController->updateFileSorting($mode, $direction); + $this->assertEquals($expected, $actual); + } + + public function invalidSortingModeData() { + return [ + ['color', 'asc'], + ['name', 'size'], + ['foo', 'bar'] + ]; + } + + /** + * @dataProvider invalidSortingModeData + */ + public function testUpdateInvalidFileSorting($mode, $direction) { + $this->config->expects($this->never()) + ->method('setUserValue'); + + $expected = new Http\Response(null); + $expected->setStatus(Http::STATUS_UNPROCESSABLE_ENTITY); + + $result = $this->apiController->updateFileSorting($mode, $direction); + + $this->assertEquals($expected, $result); + } + } diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js index a83c8c4c0bc..cc3bcd74b46 100644 --- a/apps/files/tests/js/filelistSpec.js +++ b/apps/files/tests/js/filelistSpec.js @@ -2106,6 +2106,8 @@ describe('OCA.Files.FileList tests', function() { it('Toggles the sort indicator when clicking on a column header', function() { var ASC_CLASS = fileList.SORT_INDICATOR_ASC_CLASS; var DESC_CLASS = fileList.SORT_INDICATOR_DESC_CLASS; + var request; + var sortingUrl = OC.generateUrl('/apps/files/api/v1/sorting'); fileList.$el.find('.column-size .columntitle').click(); // moves triangle to size column, check indicator on name is hidden expect( @@ -2118,6 +2120,10 @@ describe('OCA.Files.FileList tests', function() { expect( fileList.$el.find('.column-size .sort-indicator').hasClass(DESC_CLASS) ).toEqual(true); + // check if changes are persisted + expect(fakeServer.requests.length).toEqual(1); + request = fakeServer.requests[0]; + expect(request.url).toEqual(sortingUrl); // click again on size column, reverses direction fileList.$el.find('.column-size .columntitle').click(); @@ -2127,6 +2133,10 @@ describe('OCA.Files.FileList tests', function() { expect( fileList.$el.find('.column-size .sort-indicator').hasClass(ASC_CLASS) ).toEqual(true); + // check if changes are persisted + expect(fakeServer.requests.length).toEqual(2); + request = fakeServer.requests[1]; + expect(request.url).toEqual(sortingUrl); // click again on size column, reverses direction fileList.$el.find('.column-size .columntitle').click(); @@ -2136,6 +2146,9 @@ describe('OCA.Files.FileList tests', function() { expect( fileList.$el.find('.column-size .sort-indicator').hasClass(DESC_CLASS) ).toEqual(true); + expect(fakeServer.requests.length).toEqual(3); + request = fakeServer.requests[2]; + expect(request.url).toEqual(sortingUrl); // click on mtime column, moves indicator there fileList.$el.find('.column-mtime .columntitle').click(); @@ -2148,6 +2161,9 @@ describe('OCA.Files.FileList tests', function() { expect( fileList.$el.find('.column-mtime .sort-indicator').hasClass(DESC_CLASS) ).toEqual(true); + expect(fakeServer.requests.length).toEqual(4); + request = fakeServer.requests[3]; + expect(request.url).toEqual(sortingUrl); }); it('Uses correct sort comparator when inserting files', function() { testFiles.sort(OCA.Files.FileList.Comparators.size); diff --git a/apps/files_external/appinfo/app.php b/apps/files_external/appinfo/app.php index 46a4ecf0793..18f8b2551fa 100644 --- a/apps/files_external/appinfo/app.php +++ b/apps/files_external/appinfo/app.php @@ -26,17 +26,7 @@ * */ -OC::$CLASSPATH['OC\Files\Storage\StreamWrapper'] = 'files_external/lib/streamwrapper.php'; -OC::$CLASSPATH['OC\Files\Storage\FTP'] = 'files_external/lib/ftp.php'; -OC::$CLASSPATH['OC\Files\Storage\OwnCloud'] = 'files_external/lib/owncloud.php'; -OC::$CLASSPATH['OC\Files\Storage\Google'] = 'files_external/lib/google.php'; -OC::$CLASSPATH['OC\Files\Storage\Swift'] = 'files_external/lib/swift.php'; -OC::$CLASSPATH['OC\Files\Storage\SMB'] = 'files_external/lib/smb.php'; -OC::$CLASSPATH['OC\Files\Storage\AmazonS3'] = 'files_external/lib/amazons3.php'; -OC::$CLASSPATH['OC\Files\Storage\Dropbox'] = 'files_external/lib/dropbox.php'; -OC::$CLASSPATH['OC\Files\Storage\SFTP'] = 'files_external/lib/sftp.php'; OC::$CLASSPATH['OC_Mount_Config'] = 'files_external/lib/config.php'; -OC::$CLASSPATH['OCA\Files\External\Api'] = 'files_external/lib/api.php'; require_once __DIR__ . '/../3rdparty/autoload.php'; diff --git a/apps/files_external/appinfo/routes.php b/apps/files_external/appinfo/routes.php index 2d2e6ddf607..e2f55e652a8 100644 --- a/apps/files_external/appinfo/routes.php +++ b/apps/files_external/appinfo/routes.php @@ -61,6 +61,6 @@ $this->create('files_external_list_applicable', '/applicable') \OCP\API::register('get', '/apps/files_external/api/v1/mounts', - array('\OCA\Files\External\Api', 'getUserMounts'), + array('\OCA\Files_External\Lib\Api', 'getUserMounts'), 'files_external'); diff --git a/apps/files_external/l10n/sl.js b/apps/files_external/l10n/sl.js index 454f142f2f1..8ce2cd450f6 100644 --- a/apps/files_external/l10n/sl.js +++ b/apps/files_external/l10n/sl.js @@ -10,6 +10,7 @@ OC.L10N.register( "Storage with id \"%i\" not found" : "Shrambe z ID \"%i\" ni mogoče najti.", "Invalid backend or authentication mechanism class" : "Neveljaven ozadnji program oziroma razred mehanizma overitve", "Invalid mount point" : "Neveljavna priklopna točka", + "Objectstore forbidden" : "Shranjevanje predmeta je prepovedano", "Invalid storage backend \"%s\"" : "Neveljaven ozadnji program shrambe \"%s\"", "Not permitted to use backend \"%s\"" : "Uporaba ozadnjega programa \"%s\" ni dovoljena.", "Not permitted to use authentication mechanism \"%s\"" : "Uporaba načina overitve \"%s\" ni dovoljena.", @@ -30,6 +31,7 @@ OC.L10N.register( "Admin defined" : "Skrbnik je določen", "Saved" : "Shranjeno", "Empty response from the server" : "S strežnika je prejet odziv brez vsebine.", + "Couldn't get the information from the ownCloud server: {code} {type}" : "Ni mogoče pridobiti podrobnosti s strežnika ownCloud:{koda} {vrsta}", "Couldn't get the list of external mount points: {type}" : "Ni mogoče pridobiti seznama zunanjih priklopnih točk: {type}", "There was an error with message: " : "Prišlo je do napake s sporočilom:", "External mount error" : "Notranja napaka priklopa", diff --git a/apps/files_external/l10n/sl.json b/apps/files_external/l10n/sl.json index 05ec6314a71..753a401d536 100644 --- a/apps/files_external/l10n/sl.json +++ b/apps/files_external/l10n/sl.json @@ -8,6 +8,7 @@ "Storage with id \"%i\" not found" : "Shrambe z ID \"%i\" ni mogoče najti.", "Invalid backend or authentication mechanism class" : "Neveljaven ozadnji program oziroma razred mehanizma overitve", "Invalid mount point" : "Neveljavna priklopna točka", + "Objectstore forbidden" : "Shranjevanje predmeta je prepovedano", "Invalid storage backend \"%s\"" : "Neveljaven ozadnji program shrambe \"%s\"", "Not permitted to use backend \"%s\"" : "Uporaba ozadnjega programa \"%s\" ni dovoljena.", "Not permitted to use authentication mechanism \"%s\"" : "Uporaba načina overitve \"%s\" ni dovoljena.", @@ -28,6 +29,7 @@ "Admin defined" : "Skrbnik je določen", "Saved" : "Shranjeno", "Empty response from the server" : "S strežnika je prejet odziv brez vsebine.", + "Couldn't get the information from the ownCloud server: {code} {type}" : "Ni mogoče pridobiti podrobnosti s strežnika ownCloud:{koda} {vrsta}", "Couldn't get the list of external mount points: {type}" : "Ni mogoče pridobiti seznama zunanjih priklopnih točk: {type}", "There was an error with message: " : "Prišlo je do napake s sporočilom:", "External mount error" : "Notranja napaka priklopa", diff --git a/apps/files_external/lib/api.php b/apps/files_external/lib/api.php index 50a2f38c65b..589317dcf98 100644 --- a/apps/files_external/lib/api.php +++ b/apps/files_external/lib/api.php @@ -23,7 +23,7 @@ * */ -namespace OCA\Files\External; +namespace OCA\Files_External\Lib; class Api { diff --git a/apps/files_external/lib/backend/amazons3.php b/apps/files_external/lib/backend/amazons3.php index b2dedc10e4a..449b6c0379d 100644 --- a/apps/files_external/lib/backend/amazons3.php +++ b/apps/files_external/lib/backend/amazons3.php @@ -38,7 +38,7 @@ class AmazonS3 extends Backend { $this ->setIdentifier('amazons3') ->addIdentifierAlias('\OC\Files\Storage\AmazonS3') // legacy compat - ->setStorageClass('\OC\Files\Storage\AmazonS3') + ->setStorageClass('\OCA\Files_External\Lib\Storage\AmazonS3') ->setText($l->t('Amazon S3')) ->addParameters([ (new DefinitionParameter('bucket', $l->t('Bucket'))), diff --git a/apps/files_external/lib/backend/dropbox.php b/apps/files_external/lib/backend/dropbox.php index 7a414731192..f9156082515 100644 --- a/apps/files_external/lib/backend/dropbox.php +++ b/apps/files_external/lib/backend/dropbox.php @@ -38,7 +38,7 @@ class Dropbox extends Backend { $this ->setIdentifier('dropbox') ->addIdentifierAlias('\OC\Files\Storage\Dropbox') // legacy compat - ->setStorageClass('\OC\Files\Storage\Dropbox') + ->setStorageClass('\OCA\Files_External\Lib\Storage\Dropbox') ->setText($l->t('Dropbox')) ->addParameters([ // all parameters handled in OAuth1 mechanism diff --git a/apps/files_external/lib/backend/ftp.php b/apps/files_external/lib/backend/ftp.php index b2b83a27405..3960592d0bc 100644 --- a/apps/files_external/lib/backend/ftp.php +++ b/apps/files_external/lib/backend/ftp.php @@ -38,7 +38,7 @@ class FTP extends Backend { $this ->setIdentifier('ftp') ->addIdentifierAlias('\OC\Files\Storage\FTP') // legacy compat - ->setStorageClass('\OC\Files\Storage\FTP') + ->setStorageClass('\OCA\Files_External\Lib\Storage\FTP') ->setText($l->t('FTP')) ->addParameters([ (new DefinitionParameter('host', $l->t('Host'))), diff --git a/apps/files_external/lib/backend/google.php b/apps/files_external/lib/backend/google.php index 93a8cd2177d..b2b48a0e402 100644 --- a/apps/files_external/lib/backend/google.php +++ b/apps/files_external/lib/backend/google.php @@ -38,7 +38,7 @@ class Google extends Backend { $this ->setIdentifier('googledrive') ->addIdentifierAlias('\OC\Files\Storage\Google') // legacy compat - ->setStorageClass('\OC\Files\Storage\Google') + ->setStorageClass('\OCA\Files_External\Lib\Storage\Google') ->setText($l->t('Google Drive')) ->addParameters([ // all parameters handled in OAuth2 mechanism diff --git a/apps/files_external/lib/backend/owncloud.php b/apps/files_external/lib/backend/owncloud.php index e7da328c5f1..e92288b1354 100644 --- a/apps/files_external/lib/backend/owncloud.php +++ b/apps/files_external/lib/backend/owncloud.php @@ -35,7 +35,7 @@ class OwnCloud extends Backend { $this ->setIdentifier('owncloud') ->addIdentifierAlias('\OC\Files\Storage\OwnCloud') // legacy compat - ->setStorageClass('\OC\Files\Storage\OwnCloud') + ->setStorageClass('\OCA\Files_External\Lib\Storage\OwnCloud') ->setText($l->t('ownCloud')) ->addParameters([ (new DefinitionParameter('host', $l->t('URL'))), diff --git a/apps/files_external/lib/backend/sftp.php b/apps/files_external/lib/backend/sftp.php index 3e5ecb90131..fa33caeb576 100644 --- a/apps/files_external/lib/backend/sftp.php +++ b/apps/files_external/lib/backend/sftp.php @@ -35,7 +35,7 @@ class SFTP extends Backend { $this ->setIdentifier('sftp') ->addIdentifierAlias('\OC\Files\Storage\SFTP') // legacy compat - ->setStorageClass('\OC\Files\Storage\SFTP') + ->setStorageClass('\OCA\Files_External\Lib\Storage\SFTP') ->setText($l->t('SFTP')) ->addParameters([ (new DefinitionParameter('host', $l->t('Host'))), diff --git a/apps/files_external/lib/backend/sftp_key.php b/apps/files_external/lib/backend/sftp_key.php index 58dddedf784..838cf6c52b2 100644 --- a/apps/files_external/lib/backend/sftp_key.php +++ b/apps/files_external/lib/backend/sftp_key.php @@ -34,7 +34,7 @@ class SFTP_Key extends Backend { public function __construct(IL10N $l, RSA $legacyAuth, SFTP $sftpBackend) { $this ->setIdentifier('\OC\Files\Storage\SFTP_Key') - ->setStorageClass('\OC\Files\Storage\SFTP') + ->setStorageClass('\OCA\Files_External\Lib\Storage\SFTP') ->setText($l->t('SFTP with secret key login')) ->addParameters([ (new DefinitionParameter('host', $l->t('Host'))), diff --git a/apps/files_external/lib/backend/smb.php b/apps/files_external/lib/backend/smb.php index 9b71636936a..7ea30dd11bd 100644 --- a/apps/files_external/lib/backend/smb.php +++ b/apps/files_external/lib/backend/smb.php @@ -40,7 +40,7 @@ class SMB extends Backend { $this ->setIdentifier('smb') ->addIdentifierAlias('\OC\Files\Storage\SMB') // legacy compat - ->setStorageClass('\OC\Files\Storage\SMB') + ->setStorageClass('\OCA\Files_External\Lib\Storage\SMB') ->setText($l->t('SMB / CIFS')) ->addParameters([ (new DefinitionParameter('host', $l->t('Host'))), diff --git a/apps/files_external/lib/backend/smb_oc.php b/apps/files_external/lib/backend/smb_oc.php index ba38754ce5a..c543a19bdd8 100644 --- a/apps/files_external/lib/backend/smb_oc.php +++ b/apps/files_external/lib/backend/smb_oc.php @@ -42,7 +42,7 @@ class SMB_OC extends Backend { public function __construct(IL10N $l, SessionCredentials $legacyAuth, SMB $smbBackend) { $this ->setIdentifier('\OC\Files\Storage\SMB_OC') - ->setStorageClass('\OC\Files\Storage\SMB') + ->setStorageClass('\OCA\Files_External\Lib\Storage\SMB') ->setText($l->t('SMB / CIFS using OC login')) ->addParameters([ (new DefinitionParameter('host', $l->t('Host'))), diff --git a/apps/files_external/lib/backend/swift.php b/apps/files_external/lib/backend/swift.php index d6e4ac12f9a..58677575f52 100644 --- a/apps/files_external/lib/backend/swift.php +++ b/apps/files_external/lib/backend/swift.php @@ -38,7 +38,7 @@ class Swift extends Backend { $this ->setIdentifier('swift') ->addIdentifierAlias('\OC\Files\Storage\Swift') // legacy compat - ->setStorageClass('\OC\Files\Storage\Swift') + ->setStorageClass('\OCA\Files_External\Lib\Storage\Swift') ->setText($l->t('OpenStack Object Storage')) ->addParameters([ (new DefinitionParameter('service_name', $l->t('Service name'))) diff --git a/apps/files_external/lib/amazons3.php b/apps/files_external/lib/storage/amazons3.php index cb2082ee38b..42df1deffb0 100644 --- a/apps/files_external/lib/amazons3.php +++ b/apps/files_external/lib/storage/amazons3.php @@ -33,7 +33,7 @@ * */ -namespace OC\Files\Storage; +namespace OCA\Files_External\Lib\Storage; set_include_path(get_include_path() . PATH_SEPARATOR . \OC_App::getAppPath('files_external') . '/3rdparty/aws-sdk-php'); diff --git a/apps/files_external/lib/dropbox.php b/apps/files_external/lib/storage/dropbox.php index 8381ccbae59..55ae7146572 100644 --- a/apps/files_external/lib/dropbox.php +++ b/apps/files_external/lib/storage/dropbox.php @@ -27,13 +27,13 @@ * */ -namespace OC\Files\Storage; +namespace OCA\Files_External\Lib\Storage; use GuzzleHttp\Exception\RequestException; use Icewind\Streams\IteratorDirectory; use Icewind\Streams\RetryWrapper; -require_once __DIR__ . '/../3rdparty/Dropbox/autoload.php'; +require_once __DIR__ . '/../../3rdparty/Dropbox/autoload.php'; class Dropbox extends \OC\Files\Storage\Common { @@ -59,7 +59,7 @@ class Dropbox extends \OC\Files\Storage\Common { // note: Dropbox_API connection is lazy $this->dropbox = new \Dropbox_API($this->oauth, 'auto'); } else { - throw new \Exception('Creating \OC\Files\Storage\Dropbox storage failed'); + throw new \Exception('Creating Dropbox storage failed'); } } diff --git a/apps/files_external/lib/ftp.php b/apps/files_external/lib/storage/ftp.php index 7249aeceb5d..051c1873009 100644 --- a/apps/files_external/lib/ftp.php +++ b/apps/files_external/lib/storage/ftp.php @@ -28,11 +28,11 @@ * */ -namespace OC\Files\Storage; +namespace OCA\Files_External\Lib\Storage; use Icewind\Streams\RetryWrapper; -class FTP extends \OC\Files\Storage\StreamWrapper{ +class FTP extends StreamWrapper{ private $password; private $user; private $host; @@ -59,7 +59,7 @@ class FTP extends \OC\Files\Storage\StreamWrapper{ $this->root .= '/'; } } else { - throw new \Exception('Creating \OC\Files\Storage\FTP storage failed'); + throw new \Exception('Creating FTP storage failed'); } } diff --git a/apps/files_external/lib/google.php b/apps/files_external/lib/storage/google.php index 62d264dfeef..8d1fe808130 100644 --- a/apps/files_external/lib/google.php +++ b/apps/files_external/lib/storage/google.php @@ -31,7 +31,7 @@ * */ -namespace OC\Files\Storage; +namespace OCA\Files_External\Lib\Storage; use GuzzleHttp\Exception\RequestException; use Icewind\Streams\IteratorDirectory; @@ -79,7 +79,7 @@ class Google extends \OC\Files\Storage\Common { $token = json_decode($params['token'], true); $this->id = 'google::'.substr($params['client_id'], 0, 30).$token['created']; } else { - throw new \Exception('Creating \OC\Files\Storage\Google storage failed'); + throw new \Exception('Creating Google storage failed'); } } diff --git a/apps/files_external/lib/owncloud.php b/apps/files_external/lib/storage/owncloud.php index c4824e6bd14..22ecb4c806a 100644 --- a/apps/files_external/lib/owncloud.php +++ b/apps/files_external/lib/storage/owncloud.php @@ -21,7 +21,7 @@ * */ -namespace OC\Files\Storage; +namespace OCA\Files_External\Lib\Storage; /** * ownCloud backend for external storage based on DAV backend. diff --git a/apps/files_external/lib/sftp.php b/apps/files_external/lib/storage/sftp.php index a6984f3b4e0..2375f84dcda 100644 --- a/apps/files_external/lib/sftp.php +++ b/apps/files_external/lib/storage/sftp.php @@ -29,7 +29,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/> * */ -namespace OC\Files\Storage; +namespace OCA\Files_External\Lib\Storage; use Icewind\Streams\IteratorDirectory; use Icewind\Streams\RetryWrapper; diff --git a/apps/files_external/lib/smb.php b/apps/files_external/lib/storage/smb.php index 08c4b25a088..4249d13168c 100644 --- a/apps/files_external/lib/smb.php +++ b/apps/files_external/lib/storage/smb.php @@ -28,7 +28,7 @@ * */ -namespace OC\Files\Storage; +namespace OCA\Files_External\Lib\Storage; use Icewind\SMB\Exception\ConnectException; use Icewind\SMB\Exception\Exception; @@ -42,7 +42,7 @@ use OC\Cache\CappedMemoryCache; use OC\Files\Filesystem; use OCP\Files\StorageNotAvailableException; -class SMB extends Common { +class SMB extends \OC\Files\Storage\Common { /** * @var \Icewind\SMB\Server */ diff --git a/apps/files_external/lib/streamwrapper.php b/apps/files_external/lib/storage/streamwrapper.php index efb51f32ba4..0b4dff78c4f 100644 --- a/apps/files_external/lib/streamwrapper.php +++ b/apps/files_external/lib/storage/streamwrapper.php @@ -24,9 +24,9 @@ * */ -namespace OC\Files\Storage; +namespace OCA\Files_External\Lib\Storage; -abstract class StreamWrapper extends Common { +abstract class StreamWrapper extends \OC\Files\Storage\Common { /** * @param string $path diff --git a/apps/files_external/lib/swift.php b/apps/files_external/lib/storage/swift.php index 9282fe28669..4578cd9a5c7 100644 --- a/apps/files_external/lib/swift.php +++ b/apps/files_external/lib/storage/swift.php @@ -32,7 +32,7 @@ * */ -namespace OC\Files\Storage; +namespace OCA\Files_External\Lib\Storage; use Guzzle\Http\Url; use Guzzle\Http\Exception\ClientErrorResponseException; diff --git a/apps/files_external/tests/amazons3migration.php b/apps/files_external/tests/amazons3migration.php index d4ea9e2c261..614d6ca33df 100644 --- a/apps/files_external/tests/amazons3migration.php +++ b/apps/files_external/tests/amazons3migration.php @@ -24,14 +24,16 @@ */ -namespace Test\Files\Storage; +namespace OCA\Files_External\Tests; + +use OCA\Files_External\Lib\Storage\AmazonS3; /** * Class AmazonS3Migration * * @group DB * - * @package Test\Files\Storage + * @package OCA\Files_External\Tests */ class AmazonS3Migration extends \Test\TestCase { @@ -77,7 +79,7 @@ class AmazonS3Migration extends \Test\TestCase { $fileId = $oldCache->put('foobar', array('size' => 0, 'mtime' => time(), 'mimetype' => 'httpd/directory')); try { - $this->instance = new \OC\Files\Storage\AmazonS3($this->params); + $this->instance = new AmazonS3($this->params); } catch (\Exception $e) { //ignore } @@ -103,7 +105,7 @@ class AmazonS3Migration extends \Test\TestCase { $fileId = $oldCache->put('/', array('size' => 0, 'mtime' => time(), 'mimetype' => 'httpd/directory')); try { - $this->instance = new \OC\Files\Storage\AmazonS3($this->params); + $this->instance = new AmazonS3($this->params); } catch (\Exception $e) { //ignore } diff --git a/apps/files_external/tests/controller/storagescontrollertest.php b/apps/files_external/tests/controller/storagescontrollertest.php index 5854cb00fee..4c3c62d5d6f 100644 --- a/apps/files_external/tests/controller/storagescontrollertest.php +++ b/apps/files_external/tests/controller/storagescontrollertest.php @@ -51,7 +51,7 @@ abstract class StoragesControllerTest extends \Test\TestCase { /** * @return \OCA\Files_External\Lib\Backend\Backend */ - protected function getBackendMock($class = '\OCA\Files_External\Lib\Backend\SMB', $storageClass = '\OC\Files\Storage\SMB') { + protected function getBackendMock($class = '\OCA\Files_External\Lib\Backend\SMB', $storageClass = '\OCA\Files_External\Lib\Storage\SMB') { $backend = $this->getMockBuilder('\OCA\Files_External\Lib\Backend\Backend') ->disableOriginalConstructor() ->getMock(); @@ -104,7 +104,7 @@ abstract class StoragesControllerTest extends \Test\TestCase { $response = $this->controller->create( 'mount', - '\OC\Files\Storage\SMB', + '\OCA\Files_External\Lib\Storage\SMB', '\OCA\Files_External\Lib\Auth\NullMechanism', array(), [], @@ -146,7 +146,7 @@ abstract class StoragesControllerTest extends \Test\TestCase { $response = $this->controller->update( 1, 'mount', - '\OC\Files\Storage\SMB', + '\OCA\Files_External\Lib\Storage\SMB', '\OCA\Files_External\Lib\Auth\NullMechanism', array(), [], @@ -188,7 +188,7 @@ abstract class StoragesControllerTest extends \Test\TestCase { $response = $this->controller->create( $mountPoint, - '\OC\Files\Storage\SMB', + '\OCA\Files_External\Lib\Storage\SMB', '\OCA\Files_External\Lib\Auth\NullMechanism', array(), [], @@ -202,7 +202,7 @@ abstract class StoragesControllerTest extends \Test\TestCase { $response = $this->controller->update( 1, $mountPoint, - '\OC\Files\Storage\SMB', + '\OCA\Files_External\Lib\Storage\SMB', '\OCA\Files_External\Lib\Auth\NullMechanism', array(), [], @@ -279,7 +279,7 @@ abstract class StoragesControllerTest extends \Test\TestCase { $response = $this->controller->update( 255, 'mount', - '\OC\Files\Storage\SMB', + '\OCA\Files_External\Lib\Storage\SMB', '\OCA\Files_External\Lib\Auth\NullMechanism', array(), [], @@ -375,7 +375,7 @@ abstract class StoragesControllerTest extends \Test\TestCase { $response = $this->controller->create( 'mount', - '\OC\Files\Storage\SMB', + '\OCA\Files_External\Lib\Storage\SMB', '\OCA\Files_External\Lib\Auth\NullMechanism', array(), [], diff --git a/apps/files_external/tests/controller/userstoragescontrollertest.php b/apps/files_external/tests/controller/userstoragescontrollertest.php index a7e854471b5..804b752b6af 100644 --- a/apps/files_external/tests/controller/userstoragescontrollertest.php +++ b/apps/files_external/tests/controller/userstoragescontrollertest.php @@ -78,7 +78,7 @@ class UserStoragesControllerTest extends StoragesControllerTest { $response = $this->controller->create( 'mount', - '\OC\Files\Storage\SMB', + '\OCA\Files_External\Lib\Storage\SMB', '\Auth\Mechanism', array(), [], @@ -92,7 +92,7 @@ class UserStoragesControllerTest extends StoragesControllerTest { $response = $this->controller->update( 1, 'mount', - '\OC\Files\Storage\SMB', + '\OCA\Files_External\Lib\Storage\SMB', '\Auth\Mechanism', array(), [], diff --git a/apps/files_external/tests/owncloudfunctions.php b/apps/files_external/tests/owncloudfunctions.php index 019f988275e..25aaa90d178 100644 --- a/apps/files_external/tests/owncloudfunctions.php +++ b/apps/files_external/tests/owncloudfunctions.php @@ -23,14 +23,14 @@ * */ -namespace Test\Files\Storage; +namespace OCA\Files_External\Tests; /** * Class OwnCloudFunctions * * @group DB * - * @package Test\Files\Storage + * @package OCA\Files_External\Tests */ class OwnCloudFunctions extends \Test\TestCase { @@ -109,7 +109,7 @@ class OwnCloudFunctions extends \Test\TestCase { public function testConfig($config, $expectedUri) { $config['user'] = 'someuser'; $config['password'] = 'somepassword'; - $instance = new \OC\Files\Storage\OwnCloud($config); + $instance = new \OCA\Files_External\Lib\Storage\OwnCloud($config); $this->assertEquals($expectedUri, $instance->createBaseUri()); } } diff --git a/apps/files_external/tests/service/storagesservicetest.php b/apps/files_external/tests/service/storagesservicetest.php index 3fbe3b755e1..f93c0134814 100644 --- a/apps/files_external/tests/service/storagesservicetest.php +++ b/apps/files_external/tests/service/storagesservicetest.php @@ -121,9 +121,9 @@ abstract class StoragesServiceTest extends \Test\TestCase { $this->backendService->method('getAuthMechanisms') ->will($this->returnValue($authMechanisms)); - $sftpBackend = $this->getBackendMock('\OCA\Files_External\Lib\Backend\SFTP', '\OC\Files\Storage\SFTP'); + $sftpBackend = $this->getBackendMock('\OCA\Files_External\Lib\Backend\SFTP', '\OCA\Files_External\Lib\Storage\SFTP'); $backends = [ - 'identifier:\OCA\Files_External\Lib\Backend\SMB' => $this->getBackendMock('\OCA\Files_External\Lib\Backend\SMB', '\OC\Files\Storage\SMB'), + 'identifier:\OCA\Files_External\Lib\Backend\SMB' => $this->getBackendMock('\OCA\Files_External\Lib\Backend\SMB', '\OCA\Files_External\Lib\Storage\SMB'), 'identifier:\OCA\Files_External\Lib\Backend\SFTP' => $sftpBackend, 'identifier:sftp_alias' => $sftpBackend, ]; @@ -171,7 +171,7 @@ abstract class StoragesServiceTest extends \Test\TestCase { } } - protected function getBackendMock($class = '\OCA\Files_External\Lib\Backend\SMB', $storageClass = '\OC\Files\Storage\SMB') { + protected function getBackendMock($class = '\OCA\Files_External\Lib\Backend\SMB', $storageClass = '\OCA\Files_External\Lib\Storage\SMB') { $backend = $this->getMockBuilder('\OCA\Files_External\Lib\Backend\Backend') ->disableOriginalConstructor() ->getMock(); diff --git a/apps/files_external/tests/backends/amazons3.php b/apps/files_external/tests/storage/amazons3test.php index 3b43f81a926..eb0e410764c 100644 --- a/apps/files_external/tests/backends/amazons3.php +++ b/apps/files_external/tests/storage/amazons3test.php @@ -24,16 +24,18 @@ * */ -namespace Test\Files\Storage; +namespace OCA\Files_External\Tests\Storage; + +use \OCA\Files_External\Lib\Storage\AmazonS3; /** - * Class AmazonS3 + * Class AmazonS3Test * * @group DB * - * @package Test\Files\Storage + * @package OCA\Files_External\Tests\Storage */ -class AmazonS3 extends Storage { +class AmazonS3Test extends \Test\Files\Storage\Storage { private $config; @@ -44,7 +46,7 @@ class AmazonS3 extends Storage { if ( ! is_array($this->config) or ! $this->config['run']) { $this->markTestSkipped('AmazonS3 backend not configured'); } - $this->instance = new \OC\Files\Storage\AmazonS3($this->config); + $this->instance = new AmazonS3($this->config); } protected function tearDown() { diff --git a/apps/files_external/tests/backends/dropbox.php b/apps/files_external/tests/storage/dropboxtest.php index 1bf8b4171fb..d466d4b1b44 100644 --- a/apps/files_external/tests/backends/dropbox.php +++ b/apps/files_external/tests/storage/dropboxtest.php @@ -24,16 +24,18 @@ * */ -namespace Test\Files\Storage; +namespace OCA\Files_External\Tests\Storage; + +use \OCA\Files_External\Lib\Storage\Dropbox; /** - * Class Dropbox + * Class DropboxTest * * @group DB * - * @package Test\Files\Storage + * @package OCA\Files_External\Tests\Storage */ -class Dropbox extends Storage { +class DropboxTest extends \Test\Files\Storage\Storage { private $config; protected function setUp() { @@ -45,7 +47,7 @@ class Dropbox extends Storage { $this->markTestSkipped('Dropbox backend not configured'); } $this->config['dropbox']['root'] .= '/' . $id; //make sure we have an new empty folder to work in - $this->instance = new \OC\Files\Storage\Dropbox($this->config['dropbox']); + $this->instance = new Dropbox($this->config['dropbox']); } protected function tearDown() { diff --git a/apps/files_external/tests/backends/ftp.php b/apps/files_external/tests/storage/ftptest.php index 868a022d38f..9af9ccff012 100644 --- a/apps/files_external/tests/backends/ftp.php +++ b/apps/files_external/tests/storage/ftptest.php @@ -24,16 +24,18 @@ * */ -namespace Test\Files\Storage; +namespace OCA\Files_External\Tests\Storage; + +use \OCA\Files_External\Lib\Storage\FTP; /** - * Class FTP + * Class FTPTest * * @group DB * - * @package Test\Files\Storage + * @package OCA\Files_External\Tests\Storage */ -class FTP extends Storage { +class FTPTest extends \Test\Files\Storage\Storage { private $config; protected function setUp() { @@ -45,7 +47,7 @@ class FTP extends Storage { $this->markTestSkipped('FTP backend not configured'); } $this->config['root'] .= '/' . $id; //make sure we have an new empty folder to work in - $this->instance = new \OC\Files\Storage\FTP($this->config); + $this->instance = new FTP($this->config); $this->instance->mkdir('/'); } @@ -63,31 +65,31 @@ class FTP extends Storage { 'password' => 'ftp', 'root' => '/', 'secure' => false ); - $instance = new \OC\Files\Storage\FTP($config); + $instance = new FTP($config); $this->assertEquals('ftp://ftp:ftp@localhost/', $instance->constructUrl('')); $config['secure'] = true; - $instance = new \OC\Files\Storage\FTP($config); + $instance = new FTP($config); $this->assertEquals('ftps://ftp:ftp@localhost/', $instance->constructUrl('')); $config['secure'] = 'false'; - $instance = new \OC\Files\Storage\FTP($config); + $instance = new FTP($config); $this->assertEquals('ftp://ftp:ftp@localhost/', $instance->constructUrl('')); $config['secure'] = 'true'; - $instance = new \OC\Files\Storage\FTP($config); + $instance = new FTP($config); $this->assertEquals('ftps://ftp:ftp@localhost/', $instance->constructUrl('')); $config['root'] = ''; - $instance = new \OC\Files\Storage\FTP($config); + $instance = new FTP($config); $this->assertEquals('ftps://ftp:ftp@localhost/somefile.txt', $instance->constructUrl('somefile.txt')); $config['root'] = '/abc'; - $instance = new \OC\Files\Storage\FTP($config); + $instance = new FTP($config); $this->assertEquals('ftps://ftp:ftp@localhost/abc/somefile.txt', $instance->constructUrl('somefile.txt')); $config['root'] = '/abc/'; - $instance = new \OC\Files\Storage\FTP($config); + $instance = new FTP($config); $this->assertEquals('ftps://ftp:ftp@localhost/abc/somefile.txt', $instance->constructUrl('somefile.txt')); } } diff --git a/apps/files_external/tests/backends/google.php b/apps/files_external/tests/storage/googletest.php index 7622f796407..46aa4555b12 100644 --- a/apps/files_external/tests/backends/google.php +++ b/apps/files_external/tests/storage/googletest.php @@ -25,18 +25,18 @@ * */ -namespace Test\Files\Storage; +namespace OCA\Files_External\Tests\Storage; -require_once 'files_external/lib/google.php'; +use \OCA\Files_External\Lib\Storage\Google; /** - * Class Google + * Class GoogleTest * * @group DB * - * @package Test\Files\Storage + * @package OCA\Files_External\Tests\Storage */ -class Google extends Storage { +class GoogleTest extends \Test\Files\Storage\Storage { private $config; @@ -49,7 +49,7 @@ class Google extends Storage { ) { $this->markTestSkipped('Google Drive backend not configured'); } - $this->instance = new \OC\Files\Storage\Google($this->config['google']); + $this->instance = new Google($this->config['google']); } protected function tearDown() { diff --git a/apps/files_external/tests/backends/owncloud.php b/apps/files_external/tests/storage/owncloudtest.php index a56e9b2a186..cbc25e46fa0 100644 --- a/apps/files_external/tests/backends/owncloud.php +++ b/apps/files_external/tests/storage/owncloudtest.php @@ -22,16 +22,18 @@ * */ -namespace Test\Files\Storage; +namespace OCA\Files_External\Tests\Storage; + +use \OCA\Files_External\Lib\Storage\OwnCloud; /** - * Class OwnCloud + * Class OwnCloudTest * * @group DB * - * @package Test\Files\Storage + * @package OCA\Files_External\Tests\Storage */ -class OwnCloud extends Storage { +class OwnCloudTest extends \Test\Files\Storage\Storage { private $config; @@ -44,7 +46,7 @@ class OwnCloud extends Storage { $this->markTestSkipped('ownCloud backend not configured'); } $this->config['owncloud']['root'] .= '/' . $id; //make sure we have an new empty folder to work in - $this->instance = new \OC\Files\Storage\OwnCloud($this->config['owncloud']); + $this->instance = new OwnCloud($this->config['owncloud']); $this->instance->mkdir('/'); } diff --git a/apps/files_external/tests/backends/sftp_key.php b/apps/files_external/tests/storage/sftp_keytest.php index 73c6a0b6432..b974f88555f 100644 --- a/apps/files_external/tests/backends/sftp_key.php +++ b/apps/files_external/tests/storage/sftp_keytest.php @@ -22,16 +22,18 @@ * */ -namespace Test\Files\Storage; +namespace OCA\Files_External\Tests\Storage; + +use \OCA\Files_External\Lib\Storage\SFTP_Key; /** - * Class SFTP_Key + * Class SFTP_KeyTest * * @group DB * - * @package Test\Files\Storage + * @package OCA\Files_External\Tests\Storage */ -class SFTP_Key extends Storage { +class SFTP_KeyTest extends \Test\Files\Storage\Storage { private $config; protected function setUp() { @@ -44,7 +46,7 @@ class SFTP_Key extends Storage { } // Make sure we have an new empty folder to work in $this->config['sftp_key']['root'] .= '/' . $id; - $this->instance = new \OC\Files\Storage\SFTP_Key($this->config['sftp_key']); + $this->instance = new SFTP_Key($this->config['sftp_key']); $this->instance->mkdir('/'); } diff --git a/apps/files_external/tests/backends/sftp.php b/apps/files_external/tests/storage/sftptest.php index 608982adbc4..329e93819fc 100644 --- a/apps/files_external/tests/backends/sftp.php +++ b/apps/files_external/tests/storage/sftptest.php @@ -24,18 +24,20 @@ * */ -namespace Test\Files\Storage; +namespace OCA\Files_External\Tests\Storage; + +use \OCA\Files_External\Lib\Storage\SFTP; /** - * Class SFTP + * Class SFTPTest * * @group DB * - * @package Test\Files\Storage + * @package OCA\Files_External\Tests\Storage */ -class SFTP extends Storage { +class SFTPTest extends \Test\Files\Storage\Storage { /** - * @var \OC\Files\Storage\SFTP instance + * @var SFTP instance */ protected $instance; @@ -50,7 +52,7 @@ class SFTP extends Storage { $this->markTestSkipped('SFTP backend not configured'); } $this->config['root'] .= '/' . $id; //make sure we have an new empty folder to work in - $this->instance = new \OC\Files\Storage\SFTP($this->config); + $this->instance = new SFTP($this->config); $this->instance->mkdir('/'); } @@ -66,7 +68,7 @@ class SFTP extends Storage { * @dataProvider configProvider */ public function testStorageId($config, $expectedStorageId) { - $instance = new \OC\Files\Storage\SFTP($config); + $instance = new SFTP($config); $this->assertEquals($expectedStorageId, $instance->getId()); } diff --git a/apps/files_external/tests/backends/smb.php b/apps/files_external/tests/storage/smbtest.php index f9a377c271b..fc2795702c6 100644 --- a/apps/files_external/tests/backends/smb.php +++ b/apps/files_external/tests/storage/smbtest.php @@ -23,16 +23,18 @@ * */ -namespace Test\Files\Storage; +namespace OCA\Files_External\Tests\Storage; + +use \OCA\Files_External\Lib\Storage\SMB; /** - * Class SMB + * Class SMBTest * * @group DB * - * @package Test\Files\Storage + * @package OCA\Files_External\Tests\Storage */ -class SMB extends Storage { +class SMBTest extends \Test\Files\Storage\Storage { protected function setUp() { parent::setUp(); @@ -46,7 +48,7 @@ class SMB extends Storage { $config['root'] .= '/'; } $config['root'] .= $id; //make sure we have an new empty folder to work in - $this->instance = new \OC\Files\Storage\SMB($config); + $this->instance = new SMB($config); $this->instance->mkdir('/'); } @@ -71,7 +73,7 @@ class SMB extends Storage { } public function testStorageId() { - $this->instance = new \OC\Files\Storage\SMB([ + $this->instance = new SMB([ 'host' => 'testhost', 'user' => 'testuser', 'password' => 'somepass', diff --git a/apps/files_external/tests/backends/swift.php b/apps/files_external/tests/storage/swifttest.php index 9bdcd48ee68..1bcbb815067 100644 --- a/apps/files_external/tests/backends/swift.php +++ b/apps/files_external/tests/storage/swifttest.php @@ -24,16 +24,18 @@ * */ -namespace Test\Files\Storage; +namespace OCA\Files_External\Tests\Storage; + +use \OCA\Files_External\Lib\Storage\Swift; /** - * Class Swift + * Class SwiftTest * * @group DB * - * @package Test\Files\Storage + * @package OCA\Files_External\Tests\Storage */ -class Swift extends Storage { +class SwiftTest extends \Test\Files\Storage\Storage { private $config; @@ -44,7 +46,7 @@ class Swift extends Storage { if (!is_array($this->config) or !$this->config['run']) { $this->markTestSkipped('OpenStack Object Storage backend not configured'); } - $this->instance = new \OC\Files\Storage\Swift($this->config); + $this->instance = new Swift($this->config); } protected function tearDown() { diff --git a/apps/files_external/tests/backends/webdav.php b/apps/files_external/tests/storage/webdavtest.php index e1a710c94b4..f8c5b19e04f 100644 --- a/apps/files_external/tests/backends/webdav.php +++ b/apps/files_external/tests/storage/webdavtest.php @@ -23,16 +23,18 @@ * */ -namespace Test\Files\Storage; +namespace OCA\Files_External\Tests\Storage; + +use \OC\Files\Storage\DAV; /** - * Class DAV + * Class WebDAVTest * * @group DB * - * @package Test\Files\Storage + * @package OCA\Files_External\Tests\Storage */ -class DAV extends Storage { +class WebDAVTest extends \Test\Files\Storage\Storage { protected function setUp() { parent::setUp(); @@ -46,7 +48,7 @@ class DAV extends Storage { $this->waitDelay = $config['wait']; } $config['root'] .= '/' . $id; //make sure we have an new empty folder to work in - $this->instance = new \OC\Files\Storage\DAV($config); + $this->instance = new DAV($config); $this->instance->mkdir('/'); } diff --git a/apps/updatenotification/appinfo/app.php b/apps/updatenotification/appinfo/app.php index f257cba6974..a88861c0942 100644 --- a/apps/updatenotification/appinfo/app.php +++ b/apps/updatenotification/appinfo/app.php @@ -20,10 +20,9 @@ */ if(\OC::$server->getConfig()->getSystemValue('updatechecker', true) === true) { - $updater = new \OC\Updater( - \OC::$server->getHTTPHelper(), - \OC::$server->getConfig(), - \OC::$server->getIntegrityCodeChecker() + $updater = new \OC\Updater\VersionCheck( + \OC::$server->getHTTPClientService(), + \OC::$server->getConfig() ); $updateChecker = new \OCA\UpdateNotification\UpdateChecker( $updater diff --git a/apps/updatenotification/appinfo/application.php b/apps/updatenotification/appinfo/application.php index 24c0a11af69..08ff4abf766 100644 --- a/apps/updatenotification/appinfo/application.php +++ b/apps/updatenotification/appinfo/application.php @@ -34,10 +34,9 @@ class Application extends App { $container = $this->getContainer(); $container->registerService('AdminController', function(IAppContainer $c) { - $updater = new \OC\Updater( - \OC::$server->getHTTPHelper(), - \OC::$server->getConfig(), - \OC::$server->getIntegrityCodeChecker() + $updater = new \OC\Updater\VersionCheck( + \OC::$server->getHTTPClientService(), + \OC::$server->getConfig() ); return new AdminController( $c->query('AppName'), diff --git a/apps/updatenotification/lib/updatechecker.php b/apps/updatenotification/lib/updatechecker.php index 965e21617e7..bf653c23b8f 100644 --- a/apps/updatenotification/lib/updatechecker.php +++ b/apps/updatenotification/lib/updatechecker.php @@ -21,16 +21,16 @@ namespace OCA\UpdateNotification; -use OC\Updater; +use OC\Updater\VersionCheck; class UpdateChecker { - /** @var Updater */ + /** @var VersionCheck */ private $updater; /** - * @param Updater $updater + * @param VersionCheck $updater */ - public function __construct(Updater $updater) { + public function __construct(VersionCheck $updater) { $this->updater = $updater; } diff --git a/apps/updatenotification/tests/UpdateCheckerTest.php b/apps/updatenotification/tests/UpdateCheckerTest.php index 9591758c4c9..5865284a48e 100644 --- a/apps/updatenotification/tests/UpdateCheckerTest.php +++ b/apps/updatenotification/tests/UpdateCheckerTest.php @@ -34,7 +34,7 @@ class UpdateCheckerTest extends TestCase { public function setUp() { parent::setUp(); - $this->updater = $this->getMockBuilder('\OC\Updater') + $this->updater = $this->getMockBuilder('\OC\Updater\VersionCheck') ->disableOriginalConstructor()->getMock(); $this->updateChecker = new UpdateChecker($this->updater); } diff --git a/apps/user_ldap/l10n/sl.js b/apps/user_ldap/l10n/sl.js index 57b80dc1345..6a8e8e5f273 100644 --- a/apps/user_ldap/l10n/sl.js +++ b/apps/user_ldap/l10n/sl.js @@ -20,11 +20,14 @@ OC.L10N.register( "Select object classes" : "Izbor razredov predmeta", "Please check the credentials, they seem to be wrong." : "Preverite poverila! Najverjetneje so napačna.", "Base DN could not be auto-detected, please revise credentials, host and port." : "Osnovnega enoznačnega imena (DN) ni mogoče samodejno zaznati. Preverite poverila ter nastavitve gostitelja in vrat.", + "Could not detect Base DN, please enter it manually." : "Ni mogoče zaznati osnovnega enoznačnega imena (DN). Vnesti ga bo treba ročno.", "{nthServer}. Server" : "{nthServer}. strežnik", "No object found in the given Base DN. Please revise." : "Ni najdenega predmeta v osnovnem enoznačnem imenu (DN). Preverite nastavitve.", "More than 1,000 directory entries available." : "Na voljo je več kot 1000 vnosov imenika", "Do you really want to delete the current Server Configuration?" : "Ali res želite izbrisati trenutne nastavitve strežnika?", "Confirm Deletion" : "Potrdi brisanje", + "Mappings cleared successfully!" : "Preslikave so uspešno počiščene!", + "Error while clearing the mappings." : "Napaka pri čiščenju preslikav.", "Mode switch" : "Preklop načina", "Select attributes" : "Izbor atributov", "User found and settings verified." : "Uporabnik je najden in nastavitve so overjene.", @@ -48,6 +51,7 @@ OC.L10N.register( "Edit LDAP Query" : "Uredi poizvedbo LDAP", "LDAP Filter:" : "Filter LDAP:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Filter določa, katere skupine LDAP bodo imele dostop do %s.", + "Verify settings and count groups" : "Preveri nastavitve in preštej skupine", "LDAP / AD Username:" : "Uporabniško ime LDAP / AD:", "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Omogoča prijavo prek LDAP / AD, ki je ali UID ali ime računa, ki bo zaznano.", "LDAP / AD Email Address:" : "Elektronski naslov LDAP / AD:", @@ -57,6 +61,7 @@ OC.L10N.register( "Verify settings" : "Preveri nastavitve", "1. Server" : "1. strežnik", "%s. Server:" : "%s. strežnik:", + "Add a new and blank configuration" : "In nova, privzeta nastavitev", "Host" : "Gostitelj", "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Protokol je lahko izpuščen, če ni posebej zahtevan SSL. V tem primeru se mora naslov začeti z ldaps://", "Port" : "Vrata", diff --git a/apps/user_ldap/l10n/sl.json b/apps/user_ldap/l10n/sl.json index 39a8fae8cdb..f4622c44fa7 100644 --- a/apps/user_ldap/l10n/sl.json +++ b/apps/user_ldap/l10n/sl.json @@ -18,11 +18,14 @@ "Select object classes" : "Izbor razredov predmeta", "Please check the credentials, they seem to be wrong." : "Preverite poverila! Najverjetneje so napačna.", "Base DN could not be auto-detected, please revise credentials, host and port." : "Osnovnega enoznačnega imena (DN) ni mogoče samodejno zaznati. Preverite poverila ter nastavitve gostitelja in vrat.", + "Could not detect Base DN, please enter it manually." : "Ni mogoče zaznati osnovnega enoznačnega imena (DN). Vnesti ga bo treba ročno.", "{nthServer}. Server" : "{nthServer}. strežnik", "No object found in the given Base DN. Please revise." : "Ni najdenega predmeta v osnovnem enoznačnem imenu (DN). Preverite nastavitve.", "More than 1,000 directory entries available." : "Na voljo je več kot 1000 vnosov imenika", "Do you really want to delete the current Server Configuration?" : "Ali res želite izbrisati trenutne nastavitve strežnika?", "Confirm Deletion" : "Potrdi brisanje", + "Mappings cleared successfully!" : "Preslikave so uspešno počiščene!", + "Error while clearing the mappings." : "Napaka pri čiščenju preslikav.", "Mode switch" : "Preklop načina", "Select attributes" : "Izbor atributov", "User found and settings verified." : "Uporabnik je najden in nastavitve so overjene.", @@ -46,6 +49,7 @@ "Edit LDAP Query" : "Uredi poizvedbo LDAP", "LDAP Filter:" : "Filter LDAP:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Filter določa, katere skupine LDAP bodo imele dostop do %s.", + "Verify settings and count groups" : "Preveri nastavitve in preštej skupine", "LDAP / AD Username:" : "Uporabniško ime LDAP / AD:", "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Omogoča prijavo prek LDAP / AD, ki je ali UID ali ime računa, ki bo zaznano.", "LDAP / AD Email Address:" : "Elektronski naslov LDAP / AD:", @@ -55,6 +59,7 @@ "Verify settings" : "Preveri nastavitve", "1. Server" : "1. strežnik", "%s. Server:" : "%s. strežnik:", + "Add a new and blank configuration" : "In nova, privzeta nastavitev", "Host" : "Gostitelj", "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Protokol je lahko izpuščen, če ni posebej zahtevan SSL. V tem primeru se mora naslov začeti z ldaps://", "Port" : "Vrata", diff --git a/apps/user_ldap/lib/configuration.php b/apps/user_ldap/lib/configuration.php index daec2bed13a..418a2bfc015 100644 --- a/apps/user_ldap/lib/configuration.php +++ b/apps/user_ldap/lib/configuration.php @@ -28,6 +28,9 @@ namespace OCA\user_ldap\lib; +/** + * @property int ldapPagingSize holds an integer + */ class Configuration { protected $configPrefix = null; diff --git a/apps/user_ldap/lib/connection.php b/apps/user_ldap/lib/connection.php index c485ac74395..53c9b3790a7 100644 --- a/apps/user_ldap/lib/connection.php +++ b/apps/user_ldap/lib/connection.php @@ -85,11 +85,12 @@ class Connection extends LDAPUtility { if($memcache->isAvailable()) { $this->cache = $memcache->create(); } - $this->hasPagedResultSupport = - $this->ldap->hasPagedResultSupport(); $helper = new Helper(); $this->doNotValidate = !in_array($this->configPrefix, $helper->getServerConfigurationPrefixes()); + $this->hasPagedResultSupport = + intval($this->configuration->ldapPagingSize) !== 0 + || $this->ldap->hasPagedResultSupport(); } public function __destruct() { diff --git a/autotest-external.sh b/autotest-external.sh index ef6516c0721..9705980aa2b 100755 --- a/autotest-external.sh +++ b/autotest-external.sh @@ -178,7 +178,7 @@ EOF return; fi - FILES_EXTERNAL_BACKEND_PATH=../apps/files_external/tests/backends + FILES_EXTERNAL_BACKEND_PATH=../apps/files_external/tests/storage FILES_EXTERNAL_BACKEND_ENV_PATH=../apps/files_external/tests/env for startFile in `ls -1 $FILES_EXTERNAL_BACKEND_ENV_PATH | grep start`; do @@ -198,16 +198,17 @@ EOF # getting backend to test from filename # it's the part between the dots startSomething.TestToRun.sh testToRun=`echo $startFile | cut -d '-' -f 2` + testToRun="${testToRun}test.php" # run the specific test if [ -z "$NOCOVERAGE" ]; then rm -rf "coverage-external-html-$1-$name" mkdir "coverage-external-html-$1-$name" - "$PHPUNIT" --configuration phpunit-autotest-external.xml --log-junit "autotest-external-results-$1-$name.xml" --coverage-clover "autotest-external-clover-$1-$name.xml" --coverage-html "coverage-external-html-$1-$name" "$FILES_EXTERNAL_BACKEND_PATH/$testToRun.php" + "$PHPUNIT" --configuration phpunit-autotest-external.xml --log-junit "autotest-external-results-$1-$name.xml" --coverage-clover "autotest-external-clover-$1-$name.xml" --coverage-html "coverage-external-html-$1-$name" "$FILES_EXTERNAL_BACKEND_PATH/$testToRun" RESULT=$? else echo "No coverage" - "$PHPUNIT" --configuration phpunit-autotest-external.xml --log-junit "autotest-external-results-$1-$name.xml" "$FILES_EXTERNAL_BACKEND_PATH/$testToRun.php" + "$PHPUNIT" --configuration phpunit-autotest-external.xml --log-junit "autotest-external-results-$1-$name.xml" "$FILES_EXTERNAL_BACKEND_PATH/$testToRun" RESULT=$? fi else diff --git a/build/integration/features/bootstrap/WebDav.php b/build/integration/features/bootstrap/WebDav.php index 0ca2a411c75..79c447ac573 100644 --- a/build/integration/features/bootstrap/WebDav.php +++ b/build/integration/features/bootstrap/WebDav.php @@ -100,6 +100,25 @@ trait WebDav { } /** + * @When /^Downloading last public shared file inside a folder "([^"]*)" with range "([^"]*)"$/ + * @param string $range + */ + public function downloadPublicFileInsideAFolderWithRange($path, $range){ + $token = $this->lastShareData->data->token; + $fullUrl = substr($this->baseUrl, 0, -4) . "public.php/webdav" . "$path"; + $headers['Range'] = $range; + + $client = new GClient(); + $options = []; + $options['auth'] = [$token, ""]; + + $request = $client->createRequest("GET", $fullUrl, $options); + $request->addHeader('Range', $range); + + $this->response = $client->send($request); + } + + /** * @Then /^Downloaded content should be "([^"]*)"$/ * @param string $content */ diff --git a/build/integration/features/sharing-v1.feature b/build/integration/features/sharing-v1.feature index cc591dd51d6..49c2dbf58c6 100644 --- a/build/integration/features/sharing-v1.feature +++ b/build/integration/features/sharing-v1.feature @@ -251,6 +251,20 @@ Feature: sharing And User "user2" should be included in the response And User "user3" should not be included in the response + Scenario: Reshared files can be still accessed if a user in the middle removes it. + Given user "user0" exists + And user "user1" exists + And user "user2" exists + And user "user3" exists + And file "textfile0.txt" of user "user0" is shared with user "user1" + And file "textfile0 (2).txt" of user "user1" is shared with user "user2" + And file "textfile0 (2).txt" of user "user2" is shared with user "user3" + And As an "user1" + When User "user1" deletes file "/textfile0 (2).txt" + And As an "user3" + And Downloading file "/textfile0 (2).txt" with range "bytes=1-7" + Then Downloaded content should be "wnCloud" + Scenario: getting share info of a share Given user "user0" exists And user "user1" exists @@ -571,8 +585,8 @@ Feature: sharing Given user "user0" exists And User "user0" uploads file with content "foo" to "/tmp.txt" When as "user0" gets properties of folder "/tmp.txt" with - |{http://owncloud.org/ns}share-permissions| - Then the single response should contain a property "{http://owncloud.org/ns}share-permissions" with value "19" + |{http://open-collaboration-services.org/ns}share-permissions | + Then the single response should contain a property "{http://open-collaboration-services.org/ns}share-permissions" with value "19" Scenario: Correct webdav share-permissions for received file with edit and reshare permissions Given user "user0" exists @@ -580,8 +594,8 @@ Feature: sharing And User "user0" uploads file with content "foo" to "/tmp.txt" And file "tmp.txt" of user "user0" is shared with user "user1" When as "user1" gets properties of folder "/tmp.txt" with - |{http://owncloud.org/ns}share-permissions| - Then the single response should contain a property "{http://owncloud.org/ns}share-permissions" with value "19" + |{http://open-collaboration-services.org/ns}share-permissions | + Then the single response should contain a property "{http://open-collaboration-services.org/ns}share-permissions" with value "19" Scenario: Correct webdav share-permissions for received file with edit permissions but no reshare permissions Given user "user0" exists @@ -592,8 +606,8 @@ Feature: sharing And Updating last share with | permissions | 3 | When as "user1" gets properties of folder "/tmp.txt" with - |{http://owncloud.org/ns}share-permissions| - Then the single response should contain a property "{http://owncloud.org/ns}share-permissions" with value "3" + |{http://open-collaboration-services.org/ns}share-permissions | + Then the single response should contain a property "{http://open-collaboration-services.org/ns}share-permissions" with value "3" Scenario: Correct webdav share-permissions for received file with reshare permissions but no edit permissions Given user "user0" exists @@ -604,15 +618,15 @@ Feature: sharing And Updating last share with | permissions | 17 | When as "user1" gets properties of folder "/tmp.txt" with - |{http://owncloud.org/ns}share-permissions| - Then the single response should contain a property "{http://owncloud.org/ns}share-permissions" with value "17" + |{http://open-collaboration-services.org/ns}share-permissions | + Then the single response should contain a property "{http://open-collaboration-services.org/ns}share-permissions" with value "17" Scenario: Correct webdav share-permissions for owned folder Given user "user0" exists And user "user0" created a folder "/tmp" When as "user0" gets properties of folder "/" with - |{http://owncloud.org/ns}share-permissions| - Then the single response should contain a property "{http://owncloud.org/ns}share-permissions" with value "31" + |{http://open-collaboration-services.org/ns}share-permissions | + Then the single response should contain a property "{http://open-collaboration-services.org/ns}share-permissions" with value "31" Scenario: Correct webdav share-permissions for received folder with all permissions Given user "user0" exists @@ -620,8 +634,8 @@ Feature: sharing And user "user0" created a folder "/tmp" And file "/tmp" of user "user0" is shared with user "user1" When as "user1" gets properties of folder "/tmp" with - |{http://owncloud.org/ns}share-permissions| - Then the single response should contain a property "{http://owncloud.org/ns}share-permissions" with value "31" + |{http://open-collaboration-services.org/ns}share-permissions | + Then the single response should contain a property "{http://open-collaboration-services.org/ns}share-permissions" with value "31" Scenario: Correct webdav share-permissions for received folder with all permissions but edit Given user "user0" exists @@ -632,8 +646,8 @@ Feature: sharing And Updating last share with | permissions | 29 | When as "user1" gets properties of folder "/tmp" with - |{http://owncloud.org/ns}share-permissions| - Then the single response should contain a property "{http://owncloud.org/ns}share-permissions" with value "29" + |{http://open-collaboration-services.org/ns}share-permissions | + Then the single response should contain a property "{http://open-collaboration-services.org/ns}share-permissions" with value "29" Scenario: Correct webdav share-permissions for received folder with all permissions but create Given user "user0" exists @@ -644,8 +658,8 @@ Feature: sharing And Updating last share with | permissions | 27 | When as "user1" gets properties of folder "/tmp" with - |{http://owncloud.org/ns}share-permissions| - Then the single response should contain a property "{http://owncloud.org/ns}share-permissions" with value "27" + |{http://open-collaboration-services.org/ns}share-permissions | + Then the single response should contain a property "{http://open-collaboration-services.org/ns}share-permissions" with value "27" Scenario: Correct webdav share-permissions for received folder with all permissions but delete Given user "user0" exists @@ -656,8 +670,8 @@ Feature: sharing And Updating last share with | permissions | 23 | When as "user1" gets properties of folder "/tmp" with - |{http://owncloud.org/ns}share-permissions| - Then the single response should contain a property "{http://owncloud.org/ns}share-permissions" with value "23" + |{http://open-collaboration-services.org/ns}share-permissions | + Then the single response should contain a property "{http://open-collaboration-services.org/ns}share-permissions" with value "23" Scenario: Correct webdav share-permissions for received folder with all permissions but share Given user "user0" exists @@ -668,8 +682,8 @@ Feature: sharing And Updating last share with | permissions | 15 | When as "user1" gets properties of folder "/tmp" with - |{http://owncloud.org/ns}share-permissions| - Then the single response should contain a property "{http://owncloud.org/ns}share-permissions" with value "15" + |{http://open-collaboration-services.org/ns}share-permissions | + Then the single response should contain a property "{http://open-collaboration-services.org/ns}share-permissions" with value "15" Scenario: unique target names for incomming shares Given user "user0" exists diff --git a/build/integration/features/webdav-related.feature b/build/integration/features/webdav-related.feature index 6fc437773c6..abdc63935e9 100644 --- a/build/integration/features/webdav-related.feature +++ b/build/integration/features/webdav-related.feature @@ -68,13 +68,22 @@ Feature: webdav-related And Downloading last public shared file with range "bytes=51-77" Then Downloaded content should be "example file for developers" + Scenario: download a public shared file inside a folder with range + Given user "user0" exists + And As an "user0" + When creating a share with + | path | PARENT | + | shareType | 3 | + And Downloading last public shared file inside a folder "/parent.txt" with range "bytes=1-7" + Then Downloaded content should be "wnCloud" + Scenario: Downloading a file on the old endpoint should serve security headers Given using dav path "remote.php/webdav" And As an "admin" When Downloading file "/welcome.txt" Then The following headers should be set |Content-Disposition|attachment| - |Content-Security-Policy|default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; frame-src *; img-src * data: blob:; font-src 'self' data:; media-src *; connect-src *| + |Content-Security-Policy|default-src 'none';| |X-Content-Type-Options |nosniff| |X-Download-Options|noopen| |X-Frame-Options|Sameorigin| @@ -89,7 +98,7 @@ Feature: webdav-related When Downloading file "/welcome.txt" Then The following headers should be set |Content-Disposition|attachment| - |Content-Security-Policy|default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; frame-src *; img-src * data: blob:; font-src 'self' data:; media-src *; connect-src *| + |Content-Security-Policy|default-src 'none';| |X-Content-Type-Options |nosniff| |X-Download-Options|noopen| |X-Frame-Options|Sameorigin| diff --git a/config/config.sample.php b/config/config.sample.php index d1ad1cd38d7..b54bbf6a7b9 100644 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -430,14 +430,14 @@ $CONFIG = array( * Both minimum and maximum times can be set together to explicitly define * version deletion. For migration purposes, this setting is installed * initially set to "auto", which is equivalent to the default setting in - * ownCloud 8.1 and before. + * ownCloud 8.1 and before. * * Available values: * * * ``auto`` * default setting. Automatically expire versions according to expire - * rules. Please refer to Files_versions online documentation for more - * info. + * rules. Please refer to :doc:`../configuration_files/file_versioning` for + * more information. * * ``D, auto`` * keep versions at least for D days, apply expire rules to all versions * that are older than D days @@ -612,21 +612,6 @@ $CONFIG = array( */ /** - * ownCloud uses some 3rd party PHP components to provide certain functionality. - * These components are shipped as part of the software package and reside in - * ``owncloud/3rdparty``. Use this option to configure a different location. - * For example, if your location is /var/www/owncloud/foo/3rdparty, then the - * correct configuration is '3rdpartyroot' => '/var/www/owncloud/foo/', - */ -'3rdpartyroot' => '', - -/** - * If you have an alternate ``3rdpartyroot``, you must also configure the URL as - * seen by a Web browser. - */ -'3rdpartyurl' => '', - -/** * This section is for configuring the download links for ownCloud clients, as * seen in the first-run wizard and on Personal pages. */ @@ -740,7 +725,7 @@ $CONFIG = array( */ 'preview_office_cl_parameters' => ' --headless --nologo --nofirststartwizard --invisible --norestore '. - '-convert-to pdf -outdir ', + '--convert-to pdf --outdir ', /** * Only register providers that have been explicitly enabled @@ -1212,6 +1197,11 @@ $CONFIG = array( 'memcache.locking' => '\\OC\\Memcache\\Redis', /** + * Disable the web based updater + */ +'upgrade.disable-web' => false, + +/** * Set this ownCloud instance to debugging mode * * Only enable this for local development and not in production environments diff --git a/core/Application.php b/core/Application.php index 30376ee4f2e..0a54386a2ce 100644 --- a/core/Application.php +++ b/core/Application.php @@ -28,6 +28,7 @@ namespace OC\Core; use OC\AppFramework\Utility\SimpleContainer; use OC\AppFramework\Utility\TimeFactory; +use OC\Core\Controller\LoginController; use \OCP\AppFramework\App; use OC\Core\Controller\LostController; use OC\Core\Controller\UserController; @@ -89,6 +90,17 @@ class Application extends App { $c->query('Logger') ); }); + $container->registerService('LoginController', function(SimpleContainer $c) { + return new LoginController( + $c->query('AppName'), + $c->query('Request'), + $c->query('UserManager'), + $c->query('Config'), + $c->query('Session'), + $c->query('UserSession'), + $c->query('URLGenerator') + ); + }); /** * Core class wrappers @@ -114,6 +126,9 @@ class Application extends App { $container->registerService('AvatarManager', function(SimpleContainer $c) { return $c->query('ServerContainer')->getAvatarManager(); }); + $container->registerService('Session', function(SimpleContainer $c) { + return $c->query('ServerContainer')->getSession(); + }); $container->registerService('UserSession', function(SimpleContainer $c) { return $c->query('ServerContainer')->getUserSession(); }); diff --git a/core/Command/Upgrade.php b/core/Command/Upgrade.php index cbb1f26f938..1001962c6af 100644 --- a/core/Command/Upgrade.php +++ b/core/Command/Upgrade.php @@ -128,7 +128,6 @@ class Upgrade extends Command { $self = $this; $updater = new Updater( - \OC::$server->getHTTPHelper(), $this->config, \OC::$server->getIntegrityCodeChecker(), $this->logger diff --git a/core/Controller/LoginController.php b/core/Controller/LoginController.php new file mode 100644 index 00000000000..796706d364a --- /dev/null +++ b/core/Controller/LoginController.php @@ -0,0 +1,160 @@ +<?php +/** + * @author Lukas Reschke <lukas@owncloud.com> + * + * @copyright Copyright (c) 2016, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OC\Core\Controller; + +use OC\Setup; +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\RedirectResponse; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\IConfig; +use OCP\IRequest; +use OCP\ISession; +use OCP\IURLGenerator; +use OCP\IUser; +use OCP\IUserManager; +use OCP\IUserSession; + +class LoginController extends Controller { + /** @var IUserManager */ + private $userManager; + /** @var IConfig */ + private $config; + /** @var ISession */ + private $session; + /** @var IUserSession */ + private $userSession; + /** @var IURLGenerator */ + private $urlGenerator; + + /** + * @param string $appName + * @param IRequest $request + * @param IUserManager $userManager + * @param IConfig $config + * @param ISession $session + * @param IUserSession $userSession + * @param IURLGenerator $urlGenerator + */ + function __construct($appName, + IRequest $request, + IUserManager $userManager, + IConfig $config, + ISession $session, + IUserSession $userSession, + IURLGenerator $urlGenerator) { + parent::__construct($appName, $request); + $this->userManager = $userManager; + $this->config = $config; + $this->session = $session; + $this->userSession = $userSession; + $this->urlGenerator = $urlGenerator; + } + + /** + * @NoAdminRequired + * @UseSession + * + * @return RedirectResponse + */ + public function logout() { + $loginToken = $this->request->getCookie('oc_token'); + if (!is_null($loginToken)) { + $this->config->deleteUserValue($this->userSession->getUser()->getUID(), 'login_token', $loginToken); + } + $this->userSession->logout(); + + return new RedirectResponse($this->urlGenerator->linkToRouteAbsolute('core.login.showLoginForm')); + } + + /** + * @PublicPage + * @NoCSRFRequired + * @UseSession + * + * @param string $user + * @param string $redirect_url + * @param string $remember_login + * + * @return TemplateResponse + */ + public function showLoginForm($user, + $redirect_url, + $remember_login) { + if($this->userSession->isLoggedIn()) { + return new RedirectResponse(\OC_Util::getDefaultPageUrl()); + } + + $parameters = array(); + $loginMessages = $this->session->get('loginMessages'); + $errors = []; + $messages = []; + if(is_array($loginMessages)) { + list($errors, $messages) = $loginMessages; + } + $this->session->remove('loginMessages'); + foreach ($errors as $value) { + $parameters[$value] = true; + } + + $parameters['messages'] = $messages; + if (!is_null($user) && $user !== '') { + $parameters['loginName'] = $user; + $parameters['user_autofocus'] = false; + } else { + $parameters['loginName'] = ''; + $parameters['user_autofocus'] = true; + } + if (!empty($redirect_url)) { + $parameters['redirect_url'] = $redirect_url; + } + + $parameters['canResetPassword'] = true; + if (!$this->config->getSystemValue('lost_password_link')) { + if (!is_null($user) && $user !== '') { + $userObj = $this->userManager->get($user); + if ($userObj instanceof IUser) { + $parameters['canResetPassword'] = $userObj->canChangePassword(); + } + } + } + + $parameters['alt_login'] = \OC_App::getAlternativeLogIns(); + $parameters['rememberLoginAllowed'] = \OC_Util::rememberLoginAllowed(); + $parameters['rememberLoginState'] = !empty($remember_login) ? $remember_login : 0; + + if (!is_null($user) && $user !== '') { + $parameters['loginName'] = $user; + $parameters['user_autofocus'] = false; + } else { + $parameters['loginName'] = ''; + $parameters['user_autofocus'] = true; + } + + return new TemplateResponse( + $this->appName, + 'login', + $parameters, + 'guest' + ); + } + +} diff --git a/core/ajax/update.php b/core/ajax/update.php index 631a8a7871c..4bc1f4faa45 100644 --- a/core/ajax/update.php +++ b/core/ajax/update.php @@ -37,9 +37,17 @@ $eventSource = \OC::$server->createEventSource(); // need to send an initial message to force-init the event source, // which will then trigger its own CSRF check and produces its own CSRF error // message -$eventSource->send('success', (string)$l->t('Preparing update')); +//$eventSource->send('success', (string)$l->t('Preparing update')); if (OC::checkUpgrade(false)) { + + $config = \OC::$server->getSystemConfig(); + if ($config->getValue('upgrade.disable-web', true)) { + $eventSource->send('failure', (string)$l->t('Updates need to be installed. Please use the command line updater.')); + $eventSource->close(); + exit(); + } + // if a user is currently logged in, their session must be ignored to // avoid side effects \OC_User::setIncognitoMode(true); @@ -47,7 +55,6 @@ if (OC::checkUpgrade(false)) { $logger = \OC::$server->getLogger(); $config = \OC::$server->getConfig(); $updater = new \OC\Updater( - \OC::$server->getHTTPHelper(), $config, \OC::$server->getIntegrityCodeChecker(), $logger diff --git a/core/css/styles.css b/core/css/styles.css index a1dda59a86b..20f66eee25b 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -25,12 +25,10 @@ body { #body-login { text-align: center; - background: #1d2d44; /* Old browsers */ - background: -moz-linear-gradient(top, #35537a 0%, #1d2d44 100%); /* FF3.6+ */ - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#35537a), color-stop(100%,#1d2d44)); /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, #35537a 0%,#1d2d44 100%); /* Chrome10+,Safari5.1+ */ - background: linear-gradient(top, #35537a 0%,#1d2d44 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#35537a', endColorstr='#1d2d44',GradientType=0 ); /* IE6-9 */ + background-image: url('../img/background.jpg'); + background-position: 50% 50%; + background-repeat: no-repeat; + background-size: cover; } .float-spinner { @@ -223,9 +221,7 @@ body { #body-login form fieldset .warning-info, #body-login form input[type="checkbox"]+label { text-align: center; - color: #ccc; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; - opacity: .6; + color: #fff; } /* overrides another !important statement that sets this to unreadable black */ #body-login form .warning input[type="checkbox"]:hover+label, @@ -421,24 +417,21 @@ html.ie8 #body-login form input[type="checkbox"] { #body-login form .errors { background:#fed7d7; border:1px solid #f00; list-style-indent:inside; margin:0 0 2em; padding:1em; } #body-login .success { background:#d7fed7; border:1px solid #0f0; width: 35%; margin: 30px auto; padding:1em; text-align: center;} -#body-login #remember_login:hover+label, -#body-login #remember_login:focus+label { - color: #fff !important; -} - #body-login #showAdvanced > img { padding: 4px; box-sizing: border-box; } #body-login p.info a, #body-login #showAdvanced { - color: #ccc; -} - -#body-login p.info a:hover, #body-login p.info a:focus { color: #fff; } +#body-login #remember_login:hover+label, +#body-login #remember_login:focus+label, +#body-login p.info a:hover, +#body-login p.info a:focus { + opacity: .6; +} #body-login footer .info { white-space: nowrap; @@ -618,8 +611,6 @@ html.ie8 #body-login form input[type="checkbox"] { } #remember_login { margin: 18px 5px 0 16px !important; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; - opacity: .7; } #body-login .remember-login-container { margin-top: 10px; diff --git a/core/img/background.jpg b/core/img/background.jpg Binary files differnew file mode 100644 index 00000000000..a4ede839cb5 --- /dev/null +++ b/core/img/background.jpg diff --git a/core/js/placeholder.js b/core/js/placeholder.js index da721ac5bcb..1b03a28ecca 100644 --- a/core/js/placeholder.js +++ b/core/js/placeholder.js @@ -92,7 +92,7 @@ // Init vars var result = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; var rgb = [0, 0, 0]; - var sat = 80; + var sat = 70; var lum = 68; var modulo = 16; @@ -106,6 +106,12 @@ for(var count=1;count<modulo;count++) { rgb[count%3] += parseInt(result[count]); } + + // Reduce values bigger than rgb requirements + rgb[0] = rgb[0]%255; + rgb[1] = rgb[1]%255; + rgb[2] = rgb[2]%255; + var hsl = rgbToHsl(rgb[0], rgb[1], rgb[2]); // Classic formulla to check the brigtness for our eye diff --git a/core/l10n/ca.js b/core/l10n/ca.js index 63372865b90..0498ed3e3fb 100644 --- a/core/l10n/ca.js +++ b/core/l10n/ca.js @@ -23,7 +23,6 @@ OC.L10N.register( "Error favoriting" : "Error en posar a preferits", "Error unfavoriting" : "Error en treure de preferits", "Couldn't send mail to following users: %s " : "No s'ha pogut enviar correu als usuaris següents: %s", - "Preparing update" : "Preparant l'actualització", "Turned on maintenance mode" : "Activat el mode de manteniment", "Turned off maintenance mode" : "Desactivat el mode de manteniment", "Maintenance mode is kept active" : "El mode de manteniment es manté activat", diff --git a/core/l10n/ca.json b/core/l10n/ca.json index fdfb49231a8..d809d6ea26b 100644 --- a/core/l10n/ca.json +++ b/core/l10n/ca.json @@ -21,7 +21,6 @@ "Error favoriting" : "Error en posar a preferits", "Error unfavoriting" : "Error en treure de preferits", "Couldn't send mail to following users: %s " : "No s'ha pogut enviar correu als usuaris següents: %s", - "Preparing update" : "Preparant l'actualització", "Turned on maintenance mode" : "Activat el mode de manteniment", "Turned off maintenance mode" : "Desactivat el mode de manteniment", "Maintenance mode is kept active" : "El mode de manteniment es manté activat", diff --git a/core/l10n/cs_CZ.js b/core/l10n/cs_CZ.js index 009419a5327..7e5bd1621ea 100644 --- a/core/l10n/cs_CZ.js +++ b/core/l10n/cs_CZ.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "Chyba při označování jako oblíbené", "Error unfavoriting" : "Chyba při odznačování jako oblíbené", "Couldn't send mail to following users: %s " : "Nebylo možné odeslat email následujícím uživatelům: %s", - "Preparing update" : "Příprava na aktualizaci", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Kontrola tabulky %s", "Turned on maintenance mode" : "Zapnut režim údržby", @@ -212,6 +211,7 @@ OC.L10N.register( "new" : "nový", "_download %n file_::_download %n files_" : ["stáhnout %n soubor","stáhnout %n soubory","stáhnout %n souborů"], "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Probíhá aktualizace, opuštění této stránky může v některých prostředích přerušit proces.", + "Updating to {version}" : "Aktualizace na {version}", "An error occurred." : "Došlo k chybě.", "Please reload the page." : "Načtěte stránku znovu, prosím.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Aktualizace nebyla úspěšná. Pro více informací si <a href=\"{url}\">přečtěte komentáře ve fóru</a> pojednávající o tomto problému.", @@ -276,6 +276,7 @@ OC.L10N.register( "Search" : "Hledat", "Server side authentication failed!" : "Autentizace na serveru selhala!", "Please contact your administrator." : "Kontaktujte prosím svého správce systému.", + "An internal error occurred." : "Nastala vnitřní chyba.", "Please try again or contact your administrator." : "Prosím zkuste to znovu nebo kontaktujte vašeho správce.", "Log in" : "Přihlásit", "Wrong password. Reset it?" : "Nesprávné heslo. Resetovat?", diff --git a/core/l10n/cs_CZ.json b/core/l10n/cs_CZ.json index c5a7b411c66..88882c61809 100644 --- a/core/l10n/cs_CZ.json +++ b/core/l10n/cs_CZ.json @@ -24,7 +24,6 @@ "Error favoriting" : "Chyba při označování jako oblíbené", "Error unfavoriting" : "Chyba při odznačování jako oblíbené", "Couldn't send mail to following users: %s " : "Nebylo možné odeslat email následujícím uživatelům: %s", - "Preparing update" : "Příprava na aktualizaci", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Kontrola tabulky %s", "Turned on maintenance mode" : "Zapnut režim údržby", @@ -210,6 +209,7 @@ "new" : "nový", "_download %n file_::_download %n files_" : ["stáhnout %n soubor","stáhnout %n soubory","stáhnout %n souborů"], "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Probíhá aktualizace, opuštění této stránky může v některých prostředích přerušit proces.", + "Updating to {version}" : "Aktualizace na {version}", "An error occurred." : "Došlo k chybě.", "Please reload the page." : "Načtěte stránku znovu, prosím.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Aktualizace nebyla úspěšná. Pro více informací si <a href=\"{url}\">přečtěte komentáře ve fóru</a> pojednávající o tomto problému.", @@ -274,6 +274,7 @@ "Search" : "Hledat", "Server side authentication failed!" : "Autentizace na serveru selhala!", "Please contact your administrator." : "Kontaktujte prosím svého správce systému.", + "An internal error occurred." : "Nastala vnitřní chyba.", "Please try again or contact your administrator." : "Prosím zkuste to znovu nebo kontaktujte vašeho správce.", "Log in" : "Přihlásit", "Wrong password. Reset it?" : "Nesprávné heslo. Resetovat?", diff --git a/core/l10n/da.js b/core/l10n/da.js index 929c979b323..055f8f51ad1 100644 --- a/core/l10n/da.js +++ b/core/l10n/da.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "Fejl ved omdannelse til foretrukken", "Error unfavoriting" : "Fejl ved fjernelse fra foretrukken.", "Couldn't send mail to following users: %s " : "Kunne ikke sende mail til følgende brugere: %s", - "Preparing update" : "Forbereder opdatering", "Turned on maintenance mode" : "Startede vedligeholdelsestilstand", "Turned off maintenance mode" : "standsede vedligeholdelsestilstand", "Maintenance mode is kept active" : "Vedligeholdelsestilstanden holdes kørende", diff --git a/core/l10n/da.json b/core/l10n/da.json index c4788ea8862..9682a19cc6e 100644 --- a/core/l10n/da.json +++ b/core/l10n/da.json @@ -24,7 +24,6 @@ "Error favoriting" : "Fejl ved omdannelse til foretrukken", "Error unfavoriting" : "Fejl ved fjernelse fra foretrukken.", "Couldn't send mail to following users: %s " : "Kunne ikke sende mail til følgende brugere: %s", - "Preparing update" : "Forbereder opdatering", "Turned on maintenance mode" : "Startede vedligeholdelsestilstand", "Turned off maintenance mode" : "standsede vedligeholdelsestilstand", "Maintenance mode is kept active" : "Vedligeholdelsestilstanden holdes kørende", diff --git a/core/l10n/de.js b/core/l10n/de.js index 73a24c5ae27..b7c3e2d419f 100644 --- a/core/l10n/de.js +++ b/core/l10n/de.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "Fehler beim Favorisieren", "Error unfavoriting" : "Fehler beim Entfernen aus den Favoriten", "Couldn't send mail to following users: %s " : "Die E-Mail konnte nicht an folgende Benutzer gesendet werden: %s", - "Preparing update" : "Update vorbereiten", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Überprüfe Tabelle %s", "Turned on maintenance mode" : "Wartungsmodus eingeschaltet", diff --git a/core/l10n/de.json b/core/l10n/de.json index 4007413cc1a..70151c619c7 100644 --- a/core/l10n/de.json +++ b/core/l10n/de.json @@ -24,7 +24,6 @@ "Error favoriting" : "Fehler beim Favorisieren", "Error unfavoriting" : "Fehler beim Entfernen aus den Favoriten", "Couldn't send mail to following users: %s " : "Die E-Mail konnte nicht an folgende Benutzer gesendet werden: %s", - "Preparing update" : "Update vorbereiten", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Überprüfe Tabelle %s", "Turned on maintenance mode" : "Wartungsmodus eingeschaltet", diff --git a/core/l10n/de_AT.js b/core/l10n/de_AT.js index 73a24c5ae27..b7c3e2d419f 100644 --- a/core/l10n/de_AT.js +++ b/core/l10n/de_AT.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "Fehler beim Favorisieren", "Error unfavoriting" : "Fehler beim Entfernen aus den Favoriten", "Couldn't send mail to following users: %s " : "Die E-Mail konnte nicht an folgende Benutzer gesendet werden: %s", - "Preparing update" : "Update vorbereiten", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Überprüfe Tabelle %s", "Turned on maintenance mode" : "Wartungsmodus eingeschaltet", diff --git a/core/l10n/de_AT.json b/core/l10n/de_AT.json index 4007413cc1a..70151c619c7 100644 --- a/core/l10n/de_AT.json +++ b/core/l10n/de_AT.json @@ -24,7 +24,6 @@ "Error favoriting" : "Fehler beim Favorisieren", "Error unfavoriting" : "Fehler beim Entfernen aus den Favoriten", "Couldn't send mail to following users: %s " : "Die E-Mail konnte nicht an folgende Benutzer gesendet werden: %s", - "Preparing update" : "Update vorbereiten", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Überprüfe Tabelle %s", "Turned on maintenance mode" : "Wartungsmodus eingeschaltet", diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js index f62b07f42b1..9a71cca43a5 100644 --- a/core/l10n/de_DE.js +++ b/core/l10n/de_DE.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "Fehler beim Hinzufügen zu den Favoriten", "Error unfavoriting" : "Fehler beim Entfernen aus den Favoriten", "Couldn't send mail to following users: %s " : "An folgende Benutzer konnte keine E-Mail gesendet werden: %s", - "Preparing update" : "Update vorbereiten", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Überprüfe Tabelle %s", "Turned on maintenance mode" : "Wartungsmodus eingeschaltet ", diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json index bc9115c2d19..5580ca1bc8b 100644 --- a/core/l10n/de_DE.json +++ b/core/l10n/de_DE.json @@ -24,7 +24,6 @@ "Error favoriting" : "Fehler beim Hinzufügen zu den Favoriten", "Error unfavoriting" : "Fehler beim Entfernen aus den Favoriten", "Couldn't send mail to following users: %s " : "An folgende Benutzer konnte keine E-Mail gesendet werden: %s", - "Preparing update" : "Update vorbereiten", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Überprüfe Tabelle %s", "Turned on maintenance mode" : "Wartungsmodus eingeschaltet ", diff --git a/core/l10n/el.js b/core/l10n/el.js index 5d52b3347df..1ac724612ed 100644 --- a/core/l10n/el.js +++ b/core/l10n/el.js @@ -25,7 +25,6 @@ OC.L10N.register( "Error favoriting" : "Σφάλμα προσθήκης στα αγαπημένα", "Error unfavoriting" : "Σφάλμα αφαίρεσης από τα αγαπημένα", "Couldn't send mail to following users: %s " : "Αδυναμία αποστολής μηνύματος στους ακόλουθους χρήστες: %s", - "Preparing update" : "Προετοιμασία ενημέρωσης", "Turned on maintenance mode" : "Η κατάσταση συντήρησης ενεργοποιήθηκε", "Turned off maintenance mode" : "Η κατάσταση συντήρησης απενεργοποιήθηκε", "Maintenance mode is kept active" : "Η λειτουργία συντήρησης διατηρήθηκε ενεργή", diff --git a/core/l10n/el.json b/core/l10n/el.json index e23bf6aea37..932cdabd608 100644 --- a/core/l10n/el.json +++ b/core/l10n/el.json @@ -23,7 +23,6 @@ "Error favoriting" : "Σφάλμα προσθήκης στα αγαπημένα", "Error unfavoriting" : "Σφάλμα αφαίρεσης από τα αγαπημένα", "Couldn't send mail to following users: %s " : "Αδυναμία αποστολής μηνύματος στους ακόλουθους χρήστες: %s", - "Preparing update" : "Προετοιμασία ενημέρωσης", "Turned on maintenance mode" : "Η κατάσταση συντήρησης ενεργοποιήθηκε", "Turned off maintenance mode" : "Η κατάσταση συντήρησης απενεργοποιήθηκε", "Maintenance mode is kept active" : "Η λειτουργία συντήρησης διατηρήθηκε ενεργή", diff --git a/core/l10n/en_GB.js b/core/l10n/en_GB.js index 934fdf79ad4..b5be1b2243d 100644 --- a/core/l10n/en_GB.js +++ b/core/l10n/en_GB.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "Error favouriting", "Error unfavoriting" : "Error unfavouriting", "Couldn't send mail to following users: %s " : "Couldn't send mail to following users: %s ", - "Preparing update" : "Preparing update", "Turned on maintenance mode" : "Turned on maintenance mode", "Turned off maintenance mode" : "Turned off maintenance mode", "Maintenance mode is kept active" : "Maintenance mode is kept active", diff --git a/core/l10n/en_GB.json b/core/l10n/en_GB.json index 44781db05a3..66ca31f4c3e 100644 --- a/core/l10n/en_GB.json +++ b/core/l10n/en_GB.json @@ -24,7 +24,6 @@ "Error favoriting" : "Error favouriting", "Error unfavoriting" : "Error unfavouriting", "Couldn't send mail to following users: %s " : "Couldn't send mail to following users: %s ", - "Preparing update" : "Preparing update", "Turned on maintenance mode" : "Turned on maintenance mode", "Turned off maintenance mode" : "Turned off maintenance mode", "Maintenance mode is kept active" : "Maintenance mode is kept active", diff --git a/core/l10n/es.js b/core/l10n/es.js index ed4d738fe46..c1edf10fa5d 100644 --- a/core/l10n/es.js +++ b/core/l10n/es.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "Error al marcar como favorito", "Error unfavoriting" : "Error al quitar como favorito", "Couldn't send mail to following users: %s " : "No se pudo enviar el mensaje a los siguientes usuarios: %s", - "Preparing update" : "Preparando la actualización", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Comprobando cuadro %s", "Turned on maintenance mode" : "Modo mantenimiento activado", diff --git a/core/l10n/es.json b/core/l10n/es.json index b411ef03c19..167c4578cb0 100644 --- a/core/l10n/es.json +++ b/core/l10n/es.json @@ -24,7 +24,6 @@ "Error favoriting" : "Error al marcar como favorito", "Error unfavoriting" : "Error al quitar como favorito", "Couldn't send mail to following users: %s " : "No se pudo enviar el mensaje a los siguientes usuarios: %s", - "Preparing update" : "Preparando la actualización", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Comprobando cuadro %s", "Turned on maintenance mode" : "Modo mantenimiento activado", diff --git a/core/l10n/et_EE.js b/core/l10n/et_EE.js index 9e912f140b3..4a863f57e07 100644 --- a/core/l10n/et_EE.js +++ b/core/l10n/et_EE.js @@ -23,7 +23,6 @@ OC.L10N.register( "Error favoriting" : "Viga lemmikuks lisamisel", "Error unfavoriting" : "Viga lemmikutest eemaldamisel", "Couldn't send mail to following users: %s " : "Kirja saatmine järgnevatele kasutajatele ebaõnnestus: %s ", - "Preparing update" : "Uuendamise ettevalmistamine", "[%d / %d]: %s" : "[%d / %d]: %s", "Turned on maintenance mode" : "Haldusrežiimis sisse lülitatud", "Turned off maintenance mode" : "Haldusrežiimis välja lülitatud", diff --git a/core/l10n/et_EE.json b/core/l10n/et_EE.json index 3d2ccf84e9e..dbf7eaeb9d6 100644 --- a/core/l10n/et_EE.json +++ b/core/l10n/et_EE.json @@ -21,7 +21,6 @@ "Error favoriting" : "Viga lemmikuks lisamisel", "Error unfavoriting" : "Viga lemmikutest eemaldamisel", "Couldn't send mail to following users: %s " : "Kirja saatmine järgnevatele kasutajatele ebaõnnestus: %s ", - "Preparing update" : "Uuendamise ettevalmistamine", "[%d / %d]: %s" : "[%d / %d]: %s", "Turned on maintenance mode" : "Haldusrežiimis sisse lülitatud", "Turned off maintenance mode" : "Haldusrežiimis välja lülitatud", diff --git a/core/l10n/fa.js b/core/l10n/fa.js index a479055304d..9a56ef7782b 100644 --- a/core/l10n/fa.js +++ b/core/l10n/fa.js @@ -19,7 +19,6 @@ OC.L10N.register( "Error favoriting" : "خطا هنگام افزودن به موارد محبوب", "Error unfavoriting" : "خطا هنگام حذف از موارد محبوب", "Couldn't send mail to following users: %s " : "ارسال ایمیل برای کاربران روبرو با شکست مواجه شد : %s", - "Preparing update" : "آمادهسازی به روز رسانی", "Turned on maintenance mode" : "حالت \" در دست تعمیر \" فعال شد .", "Turned off maintenance mode" : "حالت \" در دست تعمیر \" غیرفعال شد .", "Maintenance mode is kept active" : "حالت تعمیرات فعال نگهداشته شده است", diff --git a/core/l10n/fa.json b/core/l10n/fa.json index c88152e61aa..26afac6aa40 100644 --- a/core/l10n/fa.json +++ b/core/l10n/fa.json @@ -17,7 +17,6 @@ "Error favoriting" : "خطا هنگام افزودن به موارد محبوب", "Error unfavoriting" : "خطا هنگام حذف از موارد محبوب", "Couldn't send mail to following users: %s " : "ارسال ایمیل برای کاربران روبرو با شکست مواجه شد : %s", - "Preparing update" : "آمادهسازی به روز رسانی", "Turned on maintenance mode" : "حالت \" در دست تعمیر \" فعال شد .", "Turned off maintenance mode" : "حالت \" در دست تعمیر \" غیرفعال شد .", "Maintenance mode is kept active" : "حالت تعمیرات فعال نگهداشته شده است", diff --git a/core/l10n/fi_FI.js b/core/l10n/fi_FI.js index 166bf75a6f6..d440408bbd2 100644 --- a/core/l10n/fi_FI.js +++ b/core/l10n/fi_FI.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "Suosituksen kirjoitusvirhe", "Error unfavoriting" : "Suosituksen poisto virhe", "Couldn't send mail to following users: %s " : "Sähköpostin lähetys seuraaville käyttäjille epäonnistui: %s", - "Preparing update" : "Valmistellaan päivitystä", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Tarkistetaan taulua %s", "Turned on maintenance mode" : "Siirrytty huoltotilaan", diff --git a/core/l10n/fi_FI.json b/core/l10n/fi_FI.json index 7cc34482005..e62c0af1bc9 100644 --- a/core/l10n/fi_FI.json +++ b/core/l10n/fi_FI.json @@ -24,7 +24,6 @@ "Error favoriting" : "Suosituksen kirjoitusvirhe", "Error unfavoriting" : "Suosituksen poisto virhe", "Couldn't send mail to following users: %s " : "Sähköpostin lähetys seuraaville käyttäjille epäonnistui: %s", - "Preparing update" : "Valmistellaan päivitystä", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Tarkistetaan taulua %s", "Turned on maintenance mode" : "Siirrytty huoltotilaan", diff --git a/core/l10n/fr.js b/core/l10n/fr.js index 8f333a1e23e..978e7411354 100644 --- a/core/l10n/fr.js +++ b/core/l10n/fr.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "Erreur lors de la mise en favori", "Error unfavoriting" : "Erreur lors de la suppression des favoris", "Couldn't send mail to following users: %s " : "Impossible d'envoyer un courriel aux utilisateurs suivants : %s", - "Preparing update" : "Préparation de la mise à jour", "Turned on maintenance mode" : "Mode de maintenance activé", "Turned off maintenance mode" : "Mode de maintenance désactivé", "Maintenance mode is kept active" : "Le mode de maintenance est laissé actif", @@ -210,6 +209,7 @@ OC.L10N.register( "new" : "Nouveau ", "_download %n file_::_download %n files_" : ["Télécharger %n fichier","Télécharger %n fichiers"], "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "La mise à jour est en cours. Selon la configuration, le fait de quitter cette page peut entraîner l'interruption de la procédure.", + "Updating to {version}" : "En cours de mise à jour vers la version {version}", "An error occurred." : "Une erreur est survenue.", "Please reload the page." : "Veuillez recharger la page.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "La mise à jour a échoué. Pour plus d'informations <a href=\"{url}\">consultez notre publication sur le forum</a> à propos de ce problème.", diff --git a/core/l10n/fr.json b/core/l10n/fr.json index 64f7312dd35..d8d1f32bd30 100644 --- a/core/l10n/fr.json +++ b/core/l10n/fr.json @@ -24,7 +24,6 @@ "Error favoriting" : "Erreur lors de la mise en favori", "Error unfavoriting" : "Erreur lors de la suppression des favoris", "Couldn't send mail to following users: %s " : "Impossible d'envoyer un courriel aux utilisateurs suivants : %s", - "Preparing update" : "Préparation de la mise à jour", "Turned on maintenance mode" : "Mode de maintenance activé", "Turned off maintenance mode" : "Mode de maintenance désactivé", "Maintenance mode is kept active" : "Le mode de maintenance est laissé actif", @@ -208,6 +207,7 @@ "new" : "Nouveau ", "_download %n file_::_download %n files_" : ["Télécharger %n fichier","Télécharger %n fichiers"], "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "La mise à jour est en cours. Selon la configuration, le fait de quitter cette page peut entraîner l'interruption de la procédure.", + "Updating to {version}" : "En cours de mise à jour vers la version {version}", "An error occurred." : "Une erreur est survenue.", "Please reload the page." : "Veuillez recharger la page.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "La mise à jour a échoué. Pour plus d'informations <a href=\"{url}\">consultez notre publication sur le forum</a> à propos de ce problème.", diff --git a/core/l10n/he.js b/core/l10n/he.js index 79a5a495fc5..f4ff27b1ac4 100644 --- a/core/l10n/he.js +++ b/core/l10n/he.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "שגיאה בקביעת מועדפים", "Error unfavoriting" : "שגיאה בהסרת מועדפים", "Couldn't send mail to following users: %s " : "לא ניתן היה לשלוח דואר אלקטרוני למשתמשים הבאים %s ", - "Preparing update" : "מכין עדכון", "Turned on maintenance mode" : "הפעלת מצב אחזקה", "Turned off maintenance mode" : "כיבוי מצב אחזקה", "Maintenance mode is kept active" : "מצב אחזקה נשמר פעיל", diff --git a/core/l10n/he.json b/core/l10n/he.json index 9017d60636b..8715b59ab6c 100644 --- a/core/l10n/he.json +++ b/core/l10n/he.json @@ -24,7 +24,6 @@ "Error favoriting" : "שגיאה בקביעת מועדפים", "Error unfavoriting" : "שגיאה בהסרת מועדפים", "Couldn't send mail to following users: %s " : "לא ניתן היה לשלוח דואר אלקטרוני למשתמשים הבאים %s ", - "Preparing update" : "מכין עדכון", "Turned on maintenance mode" : "הפעלת מצב אחזקה", "Turned off maintenance mode" : "כיבוי מצב אחזקה", "Maintenance mode is kept active" : "מצב אחזקה נשמר פעיל", diff --git a/core/l10n/hu_HU.js b/core/l10n/hu_HU.js index 11e3314f1a9..aa561e3249e 100644 --- a/core/l10n/hu_HU.js +++ b/core/l10n/hu_HU.js @@ -1,7 +1,7 @@ OC.L10N.register( "core", { - "Please select a file." : "Kérjük, válasszon egy fájlt.", + "Please select a file." : "Kérjük, válasszon ki egy fájlt.", "File is too big" : "A fájl túl nagy", "Invalid file provided" : "Érvénytelen fájl van megadva", "No image or file provided" : "Nincs kép vagy fájl megadva", @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "Hiba a kedvencekhez adáskor", "Error unfavoriting" : "Hiba a kedvencekből törléskor", "Couldn't send mail to following users: %s " : "Nem sikerült e-mailt küldeni a következő felhasználóknak: %s", - "Preparing update" : "Felkészülés a frissítésre", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Tábla ellenőrzése: %s", "Turned on maintenance mode" : "A karbantartási mód bekapcsolva", @@ -98,6 +97,7 @@ OC.L10N.register( "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Problémák vannak a kódintegritás ellenőrzéssel. Bővebb információ…</a>", "Settings" : "Beállítások", "Saving..." : "Mentés...", + "Dismiss" : "Elutasít", "seconds ago" : "pár másodperce", "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "A jelszó felülírásához a linket e-mailben elküldtük. Ha a levél elfogadható időn belül nem érkezik meg, ellenőrizze a spam/levélszemét mappát.<br>Ha nincs ott, kérdezze meg a helyi rendszergazdát.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Az Ön állományai titkosítva vannak. Ha nem engedélyezte korábban az adatok visszanyeréséhez szükséges kulcs használatát, akkor a jelszó megváltoztatását követően nem fog hozzáférni az adataihoz. Ha nem biztos abban, hogy mit kellene tennie, akkor kérdezze meg a rendszergazdát, mielőtt továbbmenne.<br />Biztos, hogy folytatni kívánja?", @@ -127,11 +127,19 @@ OC.L10N.register( "Good password" : "Jó jelszó", "Strong password" : "Erős jelszó", "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "A webszerver nincs megfelelően beállítva a fájl szinkronizációhoz, mert a WebDAV interfész nem működik.", + "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "A webszerver nincs jól beállítva, hogy kiszolgálja a(z) „{url}” hivatkozást. Bővebb információt a <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentációban</a> találhat.", "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Ennek a szervernek nincs működő internet kapcsolata. Ez azt jelenti, hogy néhány tulajdonság, mint pl. külső tárolók felcsatolása, frissítési értesítések, vagy egyéb alkalmazások nem működnek. A fájlok távoli elérése és az e-mail értesítések is lehet, hogy nem működnek. Ajánlott az internet kapcsolat engedélyezése a szerveren, ha minden tulajdonságot használni szeretne.", + "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Nincs memória gyorsítótár beállítva. A teljesítmény növelése érdekében kérjük állítsa be a memcache-t, ha elérhető. Bővebb információt a <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentációban</a> találhat.", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "/dev/urandom nem olvasható a PHP számára, mely nagy biztonsági probléma. Bővebb információt a <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentációban</a> találhat.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Jelenleg {version} PHP verziót használ. Javasoljuk, hogy frissítse a PHP verziót, hogy kihasználhassa a <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">teljesítménybeli és a biztonságbeli előnyöket, amiket a PHP csoport kínál</a>, amilyen hamar a disztribúciója támogatja.", + "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "A fordított proxy fejlécek konfigurációs beállításai helytelenek, vagy egy megbízható proxy-ból próbálja az ownCloud-ot elérni. Ha nem megbízható proxy-ból próbálja elérni az ownCloud-ot, akkor ez egy biztonsági probléma, a támadó az ownCloud számára látható IP cím csalást tud végrehajtani. Bővebb információt a <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentációban</a> találhat.", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached be van konfigurálva gyorsítótárnak, de rossz \"memcache\" PHP modul van telepítve. \\OC\\Memcache\\Memcached csak a \"memcached\"-t támogatja, és nem a \"memcache\"-t. Kérjük, nézze meg a <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki oldalt a modulokkal kapcsolatban</a>.", + "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Néhány fájl nem felelt meg az integritás ellenőrzésen. Bővebb információt a <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentációban</a> találhat. (<a href=\"{codeIntegrityDownloadEndpoint}\">Érvénytelen fájlok listája…</a> / <a href=\"{rescanEndpoint}\">Újra ellenőrzés…</a>)", "Error occurred while checking server setup" : "Hiba történt a szerver beállítások ellenőrzése közben", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Az adat könyvtára és a fájljai valószínűleg elérhetőek az internetről, mert a .htaccess fájl nem működik. Erősen ajánlott, hogy úgy állítsa be a webszerverét, hogy az adatkönyvtár ne legyen elérhető az internetről, vagy mozgassa ki az adatokat a webszerver gyökérkönyvtárából.", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "A \"{header}\" HTTP fejléc nincs beállítva, hogy megegyezzen az elvárttal \"{expected}\". Ez egy potenciális biztonsági kockázat és kérjük, hogy változtassa meg a beállításokat.", - "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Jelenleg HTTP-vel éri el a weboldalt. Nagyon ajánlott a HTTPS konfiguráció használata ehelyett, ahogyan ezt részleteztük a <a href=\"{docUrl}\">biztonsági tippek</a> dokumentációban", + "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "A \"Strict-Transport-Security\" HTTP fejléc nincs beállítva hogy \"{seconds}\" másodpercig tartson. Biztonsági okokból ajánljuk, hogy engedélyezze a HSTS, ahogyan ezt részletezzük a <a href=\"{docUrl}\" rel=\"noreferrer\">biztonsági tippek</a> dokumentációban.", + "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Jelenleg HTTP-vel éri el a weboldalt. Erősen ajánlott a HTTPS konfiguráció használata ehelyett, ahogyan ezt részleteztük a <a href=\"{docUrl}\">biztonsági tippek</a> dokumentációban", "Shared" : "Megosztott", "Shared with {recipients}" : "Megosztva ővelük: {recipients}", "Error" : "Hiba", @@ -147,7 +155,7 @@ OC.L10N.register( "Email sent" : "Az e-mailt elküldtük!", "Resharing is not allowed" : "Ezt az állományt csak a tulajdonosa oszthatja meg másokkal", "Share link" : "Megosztás hivatkozással", - "Link" : "Link", + "Link" : "Hivatkozás", "Password protect" : "Jelszóval védett", "Password" : "Jelszó", "Allow editing" : "Szerkesztés engedélyezése", @@ -174,7 +182,7 @@ OC.L10N.register( "{sharee} (at {server})" : "{sharee} ({server} szerveren)", "{sharee} (remote)" : "{sharee} (távoli)", "Share" : "Megosztás", - "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Megosztás más ownCloud szerverekkel, a következő formátum használatával felhasznalo@példa.com/owncloud", + "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Megosztás más ownCloud szerverekkel, a következő formátum használatával felhasználó@példa.hu/owncloud", "Share with users…" : "Megosztás felhasználókkal", "Share with users, groups or remote users…" : "Megosztás felhasználókkal, csoportokkal vagy távoli felhasználókkal...", "Share with users or groups…" : "Megosztás felhasználókkal vagy csoportokkal...", @@ -188,6 +196,7 @@ OC.L10N.register( "({scope})" : "({scope})", "Delete" : "Törlés", "Rename" : "Átnevezés", + "Collaborative tags" : "Címke hozzárendelése", "The object type is not specified." : "Az objektum típusa nincs megadva.", "Enter new" : "Új beírása", "Add" : "Hozzáadás", @@ -195,7 +204,7 @@ OC.L10N.register( "Error loading dialog template: {error}" : "Hiba a párbeszédpanel-sablon betöltésekor: {error}", "No tags selected for deletion." : "Nincs törlésre kijelölt címke.", "unknown text" : "ismeretlen szöveg", - "Hello world!" : "Üdv, világ!", + "Hello world!" : "Üdv, Világ!", "sunny" : "napos", "Hello {name}, the weather is {weather}" : "Üdv {name}, {weather} időnk van", "Hello {name}" : "Üdv {name}!", @@ -220,7 +229,7 @@ OC.L10N.register( "Access forbidden" : "A hozzáférés nem engedélyezett", "File not found" : "Fájl nem található", "The specified document has not been found on the server." : "A meghatározott dokumentum nem található a szerveren.", - "You can click here to return to %s." : "Ide kattintva visszatérhetsz ide: %s.", + "You can click here to return to %s." : "Ide kattintva visszatérhet ide: %s.", "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Üdvözöljük!\n\nÉrtesítjük, hogy %s megosztotta Önnel a következőt: %s.\nItt nézheti meg: %s\n\n", "The share will expire on %s." : "A megosztás lejár ekkor: %s.", "Cheers!" : "Üdv.", @@ -239,14 +248,15 @@ OC.L10N.register( "Trace" : "Lekövetés", "Security warning" : "Biztonsági figyelmeztetés", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Az adatkönyvtár és a benne levő állományok valószínűleg közvetlenül is elérhetők az internetről, mert a .htaccess állomány nem érvényesül.", - "Create an <strong>admin account</strong>" : "<strong>Rendszergazdai belépés</strong> létrehozása", + "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "A kiszolgáló megfelelő beállításához kérjük olvassa el a <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">dokumentációt</a>.", + "Create an <strong>admin account</strong>" : "<strong>Rendszergazdai fiók</strong> létrehozása", "Username" : "Felhasználónév", - "Storage & database" : "Tárolás és adatbázis", + "Storage & database" : "Tárhely és adatbázis", "Data folder" : "Adatkönyvtár", "Configure the database" : "Adatbázis konfigurálása", "Only %s is available." : "Csak %s érhető el.", "Install and activate additional PHP modules to choose other database types." : "Telepítse és aktiválja a bővített PHP modulokat, hogy tudjon más adatbázis típust is kiválasztani.", - "For more details check out the documentation." : "További részletekért kérem ellenőrizze a dokumentációt.", + "For more details check out the documentation." : "További részletekért kérjük ellenőrizze a dokumentációt.", "Database user" : "Adatbázis felhasználónév", "Database password" : "Adatbázis jelszó", "Database name" : "Az adatbázis neve", @@ -261,13 +271,13 @@ OC.L10N.register( "Need help?" : "Segítségre van szüksége?", "See the documentation" : "Nézze meg a dokumentációt", "Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Üdvözöljük!<br /><br />\n\nÉrtesítjük, hogy %s megosztotta Önnel a következőt: <strong>%s</strong><br />\n<a href=\"%s\">Itt nézheti meg.</a><br /><br />", - "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Az alkalmazás megfelelő működéséhez JavaScript szükséges. Kérjük {linkstart}engedélyezze a JavaScript-et{linkend} és frissítse a lapot.", - "Log out" : "Kilépés", + "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Az alkalmazás megfelelő működéséhez JavaScript szükséges. Kérjük, {linkstart}engedélyezze a JavaScript-et{linkend} és frissítse a lapot.", + "Log out" : "Kijelentkezés", "Search" : "Keresés", "Server side authentication failed!" : "A szerveroldali hitelesítés sikertelen!", "Please contact your administrator." : "Kérjük, lépjen kapcsolatba a rendszergazdával.", "An internal error occurred." : "Belső hiba történt.", - "Please try again or contact your administrator." : "Kérem próbálja újra, vagy vegye fel a kapcsolatot a rendszergazdával.", + "Please try again or contact your administrator." : "Kérjük, próbálja meg újra, vagy vegye fel a kapcsolatot a rendszergazdával.", "Log in" : "Bejelentkezés", "Wrong password. Reset it?" : "Hibás jelszó. Visszaállítja?", "Wrong password." : "Hibás jelszó.", @@ -284,17 +294,17 @@ OC.L10N.register( "You are accessing the server from an untrusted domain." : "A kiszolgálót nem megbízható domain névvel éri el.", "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Kérjük keresse fel a rendszergazdát! Ha ennek a telepítésnek Ön a rendszergazdája, akkor állítsa be a config/config.php állományban a \"trusted_domain\" paramétert! A config/config.sample.php állományban talál példát a beállításra.", "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "A beállításoktól függően, rendszergazdaként lehetséges, hogy az alábbi gombot is használhatja a domain név megbízhatóvá tételéhez.", - "Add \"%s\" as trusted domain" : "Adjuk hozzá \"%s\"-t a megbízható domain nevekhez!", - "App update required" : "Alkalmazás frissítés szükséges", + "Add \"%s\" as trusted domain" : "Adjuk hozzá „%s”-t a megbízható domain nevekhez!", + "App update required" : "Alkalmazás frissítése szükséges", "%s will be updated to version %s" : "%s frissítve lesz erre a verzióra: %s", "These apps will be updated:" : "A következő alkalmazások lesznek frissítve:", "These incompatible apps will be disabled:" : "A követlező inkompatibilis alkalmazások tiltva lesznek:", - "The theme %s has been disabled." : "Ez a smink: %s letiltásra került.", - "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Kérjük gondoskodjon róla, hogy elmentse az adatbázist, a konfigurációs mappa és az adatamappa tartalmát, mielőtt folytatja.", + "The theme %s has been disabled." : "%s téma letiltásra került.", + "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Kérjük, gondoskodjon róla, hogy elmentse az adatbázist, a konfigurációs mappa és az adatmappa tartalmát, mielőtt folytatja.", "Start update" : "A frissítés megkezdése", - "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Nagyobb telepítések esetén úgy kerülhetők el az időtúllépések, ha inkább a következő parancsot adja ki a telepítési alkönyvtárban:", + "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Nagyobb telepítések esetén úgy kerülhetők el az időtúllépések, hogy inkább a következő parancsot adja ki a telepítési alkönyvtárban:", "Detailed logs" : "Részletezett naplók", "This %s instance is currently in maintenance mode, which may take a while." : "Ez a %s folyamat éppen karbantartó üzemmódban van, ami eltarthat egy darabig.", - "This page will refresh itself when the %s instance is available again." : "Ez az oldal frissíteni fogja magát amint a %s példány ismét elérhető." + "This page will refresh itself when the %s instance is available again." : "Ez az oldal frissíteni fogja magát amint a(z) %s példány ismét elérhető." }, "nplurals=2; plural=(n != 1);"); diff --git a/core/l10n/hu_HU.json b/core/l10n/hu_HU.json index 3111ee2fa72..6640d0999c7 100644 --- a/core/l10n/hu_HU.json +++ b/core/l10n/hu_HU.json @@ -1,5 +1,5 @@ { "translations": { - "Please select a file." : "Kérjük, válasszon egy fájlt.", + "Please select a file." : "Kérjük, válasszon ki egy fájlt.", "File is too big" : "A fájl túl nagy", "Invalid file provided" : "Érvénytelen fájl van megadva", "No image or file provided" : "Nincs kép vagy fájl megadva", @@ -24,7 +24,6 @@ "Error favoriting" : "Hiba a kedvencekhez adáskor", "Error unfavoriting" : "Hiba a kedvencekből törléskor", "Couldn't send mail to following users: %s " : "Nem sikerült e-mailt küldeni a következő felhasználóknak: %s", - "Preparing update" : "Felkészülés a frissítésre", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Tábla ellenőrzése: %s", "Turned on maintenance mode" : "A karbantartási mód bekapcsolva", @@ -96,6 +95,7 @@ "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Problémák vannak a kódintegritás ellenőrzéssel. Bővebb információ…</a>", "Settings" : "Beállítások", "Saving..." : "Mentés...", + "Dismiss" : "Elutasít", "seconds ago" : "pár másodperce", "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "A jelszó felülírásához a linket e-mailben elküldtük. Ha a levél elfogadható időn belül nem érkezik meg, ellenőrizze a spam/levélszemét mappát.<br>Ha nincs ott, kérdezze meg a helyi rendszergazdát.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Az Ön állományai titkosítva vannak. Ha nem engedélyezte korábban az adatok visszanyeréséhez szükséges kulcs használatát, akkor a jelszó megváltoztatását követően nem fog hozzáférni az adataihoz. Ha nem biztos abban, hogy mit kellene tennie, akkor kérdezze meg a rendszergazdát, mielőtt továbbmenne.<br />Biztos, hogy folytatni kívánja?", @@ -125,11 +125,19 @@ "Good password" : "Jó jelszó", "Strong password" : "Erős jelszó", "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "A webszerver nincs megfelelően beállítva a fájl szinkronizációhoz, mert a WebDAV interfész nem működik.", + "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "A webszerver nincs jól beállítva, hogy kiszolgálja a(z) „{url}” hivatkozást. Bővebb információt a <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentációban</a> találhat.", "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Ennek a szervernek nincs működő internet kapcsolata. Ez azt jelenti, hogy néhány tulajdonság, mint pl. külső tárolók felcsatolása, frissítési értesítések, vagy egyéb alkalmazások nem működnek. A fájlok távoli elérése és az e-mail értesítések is lehet, hogy nem működnek. Ajánlott az internet kapcsolat engedélyezése a szerveren, ha minden tulajdonságot használni szeretne.", + "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Nincs memória gyorsítótár beállítva. A teljesítmény növelése érdekében kérjük állítsa be a memcache-t, ha elérhető. Bővebb információt a <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentációban</a> találhat.", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "/dev/urandom nem olvasható a PHP számára, mely nagy biztonsági probléma. Bővebb információt a <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentációban</a> találhat.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Jelenleg {version} PHP verziót használ. Javasoljuk, hogy frissítse a PHP verziót, hogy kihasználhassa a <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">teljesítménybeli és a biztonságbeli előnyöket, amiket a PHP csoport kínál</a>, amilyen hamar a disztribúciója támogatja.", + "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "A fordított proxy fejlécek konfigurációs beállításai helytelenek, vagy egy megbízható proxy-ból próbálja az ownCloud-ot elérni. Ha nem megbízható proxy-ból próbálja elérni az ownCloud-ot, akkor ez egy biztonsági probléma, a támadó az ownCloud számára látható IP cím csalást tud végrehajtani. Bővebb információt a <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentációban</a> találhat.", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached be van konfigurálva gyorsítótárnak, de rossz \"memcache\" PHP modul van telepítve. \\OC\\Memcache\\Memcached csak a \"memcached\"-t támogatja, és nem a \"memcache\"-t. Kérjük, nézze meg a <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki oldalt a modulokkal kapcsolatban</a>.", + "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Néhány fájl nem felelt meg az integritás ellenőrzésen. Bővebb információt a <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentációban</a> találhat. (<a href=\"{codeIntegrityDownloadEndpoint}\">Érvénytelen fájlok listája…</a> / <a href=\"{rescanEndpoint}\">Újra ellenőrzés…</a>)", "Error occurred while checking server setup" : "Hiba történt a szerver beállítások ellenőrzése közben", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Az adat könyvtára és a fájljai valószínűleg elérhetőek az internetről, mert a .htaccess fájl nem működik. Erősen ajánlott, hogy úgy állítsa be a webszerverét, hogy az adatkönyvtár ne legyen elérhető az internetről, vagy mozgassa ki az adatokat a webszerver gyökérkönyvtárából.", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "A \"{header}\" HTTP fejléc nincs beállítva, hogy megegyezzen az elvárttal \"{expected}\". Ez egy potenciális biztonsági kockázat és kérjük, hogy változtassa meg a beállításokat.", - "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Jelenleg HTTP-vel éri el a weboldalt. Nagyon ajánlott a HTTPS konfiguráció használata ehelyett, ahogyan ezt részleteztük a <a href=\"{docUrl}\">biztonsági tippek</a> dokumentációban", + "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "A \"Strict-Transport-Security\" HTTP fejléc nincs beállítva hogy \"{seconds}\" másodpercig tartson. Biztonsági okokból ajánljuk, hogy engedélyezze a HSTS, ahogyan ezt részletezzük a <a href=\"{docUrl}\" rel=\"noreferrer\">biztonsági tippek</a> dokumentációban.", + "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Jelenleg HTTP-vel éri el a weboldalt. Erősen ajánlott a HTTPS konfiguráció használata ehelyett, ahogyan ezt részleteztük a <a href=\"{docUrl}\">biztonsági tippek</a> dokumentációban", "Shared" : "Megosztott", "Shared with {recipients}" : "Megosztva ővelük: {recipients}", "Error" : "Hiba", @@ -145,7 +153,7 @@ "Email sent" : "Az e-mailt elküldtük!", "Resharing is not allowed" : "Ezt az állományt csak a tulajdonosa oszthatja meg másokkal", "Share link" : "Megosztás hivatkozással", - "Link" : "Link", + "Link" : "Hivatkozás", "Password protect" : "Jelszóval védett", "Password" : "Jelszó", "Allow editing" : "Szerkesztés engedélyezése", @@ -172,7 +180,7 @@ "{sharee} (at {server})" : "{sharee} ({server} szerveren)", "{sharee} (remote)" : "{sharee} (távoli)", "Share" : "Megosztás", - "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Megosztás más ownCloud szerverekkel, a következő formátum használatával felhasznalo@példa.com/owncloud", + "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Megosztás más ownCloud szerverekkel, a következő formátum használatával felhasználó@példa.hu/owncloud", "Share with users…" : "Megosztás felhasználókkal", "Share with users, groups or remote users…" : "Megosztás felhasználókkal, csoportokkal vagy távoli felhasználókkal...", "Share with users or groups…" : "Megosztás felhasználókkal vagy csoportokkal...", @@ -186,6 +194,7 @@ "({scope})" : "({scope})", "Delete" : "Törlés", "Rename" : "Átnevezés", + "Collaborative tags" : "Címke hozzárendelése", "The object type is not specified." : "Az objektum típusa nincs megadva.", "Enter new" : "Új beírása", "Add" : "Hozzáadás", @@ -193,7 +202,7 @@ "Error loading dialog template: {error}" : "Hiba a párbeszédpanel-sablon betöltésekor: {error}", "No tags selected for deletion." : "Nincs törlésre kijelölt címke.", "unknown text" : "ismeretlen szöveg", - "Hello world!" : "Üdv, világ!", + "Hello world!" : "Üdv, Világ!", "sunny" : "napos", "Hello {name}, the weather is {weather}" : "Üdv {name}, {weather} időnk van", "Hello {name}" : "Üdv {name}!", @@ -218,7 +227,7 @@ "Access forbidden" : "A hozzáférés nem engedélyezett", "File not found" : "Fájl nem található", "The specified document has not been found on the server." : "A meghatározott dokumentum nem található a szerveren.", - "You can click here to return to %s." : "Ide kattintva visszatérhetsz ide: %s.", + "You can click here to return to %s." : "Ide kattintva visszatérhet ide: %s.", "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Üdvözöljük!\n\nÉrtesítjük, hogy %s megosztotta Önnel a következőt: %s.\nItt nézheti meg: %s\n\n", "The share will expire on %s." : "A megosztás lejár ekkor: %s.", "Cheers!" : "Üdv.", @@ -237,14 +246,15 @@ "Trace" : "Lekövetés", "Security warning" : "Biztonsági figyelmeztetés", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Az adatkönyvtár és a benne levő állományok valószínűleg közvetlenül is elérhetők az internetről, mert a .htaccess állomány nem érvényesül.", - "Create an <strong>admin account</strong>" : "<strong>Rendszergazdai belépés</strong> létrehozása", + "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "A kiszolgáló megfelelő beállításához kérjük olvassa el a <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">dokumentációt</a>.", + "Create an <strong>admin account</strong>" : "<strong>Rendszergazdai fiók</strong> létrehozása", "Username" : "Felhasználónév", - "Storage & database" : "Tárolás és adatbázis", + "Storage & database" : "Tárhely és adatbázis", "Data folder" : "Adatkönyvtár", "Configure the database" : "Adatbázis konfigurálása", "Only %s is available." : "Csak %s érhető el.", "Install and activate additional PHP modules to choose other database types." : "Telepítse és aktiválja a bővített PHP modulokat, hogy tudjon más adatbázis típust is kiválasztani.", - "For more details check out the documentation." : "További részletekért kérem ellenőrizze a dokumentációt.", + "For more details check out the documentation." : "További részletekért kérjük ellenőrizze a dokumentációt.", "Database user" : "Adatbázis felhasználónév", "Database password" : "Adatbázis jelszó", "Database name" : "Az adatbázis neve", @@ -259,13 +269,13 @@ "Need help?" : "Segítségre van szüksége?", "See the documentation" : "Nézze meg a dokumentációt", "Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Üdvözöljük!<br /><br />\n\nÉrtesítjük, hogy %s megosztotta Önnel a következőt: <strong>%s</strong><br />\n<a href=\"%s\">Itt nézheti meg.</a><br /><br />", - "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Az alkalmazás megfelelő működéséhez JavaScript szükséges. Kérjük {linkstart}engedélyezze a JavaScript-et{linkend} és frissítse a lapot.", - "Log out" : "Kilépés", + "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Az alkalmazás megfelelő működéséhez JavaScript szükséges. Kérjük, {linkstart}engedélyezze a JavaScript-et{linkend} és frissítse a lapot.", + "Log out" : "Kijelentkezés", "Search" : "Keresés", "Server side authentication failed!" : "A szerveroldali hitelesítés sikertelen!", "Please contact your administrator." : "Kérjük, lépjen kapcsolatba a rendszergazdával.", "An internal error occurred." : "Belső hiba történt.", - "Please try again or contact your administrator." : "Kérem próbálja újra, vagy vegye fel a kapcsolatot a rendszergazdával.", + "Please try again or contact your administrator." : "Kérjük, próbálja meg újra, vagy vegye fel a kapcsolatot a rendszergazdával.", "Log in" : "Bejelentkezés", "Wrong password. Reset it?" : "Hibás jelszó. Visszaállítja?", "Wrong password." : "Hibás jelszó.", @@ -282,17 +292,17 @@ "You are accessing the server from an untrusted domain." : "A kiszolgálót nem megbízható domain névvel éri el.", "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Kérjük keresse fel a rendszergazdát! Ha ennek a telepítésnek Ön a rendszergazdája, akkor állítsa be a config/config.php állományban a \"trusted_domain\" paramétert! A config/config.sample.php állományban talál példát a beállításra.", "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "A beállításoktól függően, rendszergazdaként lehetséges, hogy az alábbi gombot is használhatja a domain név megbízhatóvá tételéhez.", - "Add \"%s\" as trusted domain" : "Adjuk hozzá \"%s\"-t a megbízható domain nevekhez!", - "App update required" : "Alkalmazás frissítés szükséges", + "Add \"%s\" as trusted domain" : "Adjuk hozzá „%s”-t a megbízható domain nevekhez!", + "App update required" : "Alkalmazás frissítése szükséges", "%s will be updated to version %s" : "%s frissítve lesz erre a verzióra: %s", "These apps will be updated:" : "A következő alkalmazások lesznek frissítve:", "These incompatible apps will be disabled:" : "A követlező inkompatibilis alkalmazások tiltva lesznek:", - "The theme %s has been disabled." : "Ez a smink: %s letiltásra került.", - "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Kérjük gondoskodjon róla, hogy elmentse az adatbázist, a konfigurációs mappa és az adatamappa tartalmát, mielőtt folytatja.", + "The theme %s has been disabled." : "%s téma letiltásra került.", + "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Kérjük, gondoskodjon róla, hogy elmentse az adatbázist, a konfigurációs mappa és az adatmappa tartalmát, mielőtt folytatja.", "Start update" : "A frissítés megkezdése", - "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Nagyobb telepítések esetén úgy kerülhetők el az időtúllépések, ha inkább a következő parancsot adja ki a telepítési alkönyvtárban:", + "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Nagyobb telepítések esetén úgy kerülhetők el az időtúllépések, hogy inkább a következő parancsot adja ki a telepítési alkönyvtárban:", "Detailed logs" : "Részletezett naplók", "This %s instance is currently in maintenance mode, which may take a while." : "Ez a %s folyamat éppen karbantartó üzemmódban van, ami eltarthat egy darabig.", - "This page will refresh itself when the %s instance is available again." : "Ez az oldal frissíteni fogja magát amint a %s példány ismét elérhető." + "This page will refresh itself when the %s instance is available again." : "Ez az oldal frissíteni fogja magát amint a(z) %s példány ismét elérhető." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/core/l10n/id.js b/core/l10n/id.js index 623fb0dc5d3..31c6cf46b11 100644 --- a/core/l10n/id.js +++ b/core/l10n/id.js @@ -24,7 +24,6 @@ OC.L10N.register( "Error favoriting" : "Kesalahan saat memberikan sebagai favorit", "Error unfavoriting" : "Kesalahan saat menghapus sebagai favorit", "Couldn't send mail to following users: %s " : "Tidak dapat mengirim Email ke pengguna berikut: %s", - "Preparing update" : "Mempersiapkan pembaruan", "Turned on maintenance mode" : "Hidupkan mode perawatan", "Turned off maintenance mode" : "Matikan mode perawatan", "Maintenance mode is kept active" : "Mode Pemeliharaan masih aktif", diff --git a/core/l10n/id.json b/core/l10n/id.json index c55e50ff41f..68df5413b2f 100644 --- a/core/l10n/id.json +++ b/core/l10n/id.json @@ -22,7 +22,6 @@ "Error favoriting" : "Kesalahan saat memberikan sebagai favorit", "Error unfavoriting" : "Kesalahan saat menghapus sebagai favorit", "Couldn't send mail to following users: %s " : "Tidak dapat mengirim Email ke pengguna berikut: %s", - "Preparing update" : "Mempersiapkan pembaruan", "Turned on maintenance mode" : "Hidupkan mode perawatan", "Turned off maintenance mode" : "Matikan mode perawatan", "Maintenance mode is kept active" : "Mode Pemeliharaan masih aktif", diff --git a/core/l10n/is.js b/core/l10n/is.js index ca8e79ebbde..e08103ab610 100644 --- a/core/l10n/is.js +++ b/core/l10n/is.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "Villa við bókmerkingu ", "Error unfavoriting" : "Villa við afmá bókmerkingu", "Couldn't send mail to following users: %s " : "Gat ekki sent póst á eftirfarandi notendur: %s", - "Preparing update" : "Undirbý uppfærslu", "Turned on maintenance mode" : "Kveikt á viðhaldsham", "Turned off maintenance mode" : "Slökkt á viðhaldsham", "Maintenance mode is kept active" : "Viðhaldsham er haldið virkum", diff --git a/core/l10n/is.json b/core/l10n/is.json index ab954fece2d..f49963583f4 100644 --- a/core/l10n/is.json +++ b/core/l10n/is.json @@ -24,7 +24,6 @@ "Error favoriting" : "Villa við bókmerkingu ", "Error unfavoriting" : "Villa við afmá bókmerkingu", "Couldn't send mail to following users: %s " : "Gat ekki sent póst á eftirfarandi notendur: %s", - "Preparing update" : "Undirbý uppfærslu", "Turned on maintenance mode" : "Kveikt á viðhaldsham", "Turned off maintenance mode" : "Slökkt á viðhaldsham", "Maintenance mode is kept active" : "Viðhaldsham er haldið virkum", diff --git a/core/l10n/it.js b/core/l10n/it.js index 613ccb0ef8b..808155cc3d8 100644 --- a/core/l10n/it.js +++ b/core/l10n/it.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "Errore di creazione dei preferiti", "Error unfavoriting" : "Errore di rimozione dai preferiti", "Couldn't send mail to following users: %s " : "Impossibile inviare email ai seguenti utenti: %s", - "Preparing update" : "Preparazione aggiornamento", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: controllo della tabella %s", "Turned on maintenance mode" : "Modalità di manutenzione attivata", diff --git a/core/l10n/it.json b/core/l10n/it.json index c6c9c5841e4..aaa41816b69 100644 --- a/core/l10n/it.json +++ b/core/l10n/it.json @@ -24,7 +24,6 @@ "Error favoriting" : "Errore di creazione dei preferiti", "Error unfavoriting" : "Errore di rimozione dai preferiti", "Couldn't send mail to following users: %s " : "Impossibile inviare email ai seguenti utenti: %s", - "Preparing update" : "Preparazione aggiornamento", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: controllo della tabella %s", "Turned on maintenance mode" : "Modalità di manutenzione attivata", diff --git a/core/l10n/ja.js b/core/l10n/ja.js index eb56aa5a132..ef86a76c7d8 100644 --- a/core/l10n/ja.js +++ b/core/l10n/ja.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "お気に入りに追加エラー", "Error unfavoriting" : "お気に入りから削除エラー", "Couldn't send mail to following users: %s " : "次のユーザーにメールを送信できませんでした: %s", - "Preparing update" : "アップデートの準備中", "Turned on maintenance mode" : "メンテナンスモードがオンになりました", "Turned off maintenance mode" : "メンテナンスモードがオフになりました", "Maintenance mode is kept active" : "メンテナンスモードが継続中です", diff --git a/core/l10n/ja.json b/core/l10n/ja.json index 5255e65d625..361bc109353 100644 --- a/core/l10n/ja.json +++ b/core/l10n/ja.json @@ -24,7 +24,6 @@ "Error favoriting" : "お気に入りに追加エラー", "Error unfavoriting" : "お気に入りから削除エラー", "Couldn't send mail to following users: %s " : "次のユーザーにメールを送信できませんでした: %s", - "Preparing update" : "アップデートの準備中", "Turned on maintenance mode" : "メンテナンスモードがオンになりました", "Turned off maintenance mode" : "メンテナンスモードがオフになりました", "Maintenance mode is kept active" : "メンテナンスモードが継続中です", diff --git a/core/l10n/ko.js b/core/l10n/ko.js index 8d3c53dd9bd..fd09fa3ae1d 100644 --- a/core/l10n/ko.js +++ b/core/l10n/ko.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "즐겨찾기 추가 오류", "Error unfavoriting" : "즐겨찾기 삭제 오류", "Couldn't send mail to following users: %s " : "%s 님에게 메일을 보낼 수 없습니다.", - "Preparing update" : "업데이트 준비 중", "Turned on maintenance mode" : "유지 보수 모드 켜짐", "Turned off maintenance mode" : "유지 보수 모드 꺼짐", "Maintenance mode is kept active" : "유지 보수 모드가 켜져 있음", diff --git a/core/l10n/ko.json b/core/l10n/ko.json index 4969337831e..3cd1fa719a1 100644 --- a/core/l10n/ko.json +++ b/core/l10n/ko.json @@ -24,7 +24,6 @@ "Error favoriting" : "즐겨찾기 추가 오류", "Error unfavoriting" : "즐겨찾기 삭제 오류", "Couldn't send mail to following users: %s " : "%s 님에게 메일을 보낼 수 없습니다.", - "Preparing update" : "업데이트 준비 중", "Turned on maintenance mode" : "유지 보수 모드 켜짐", "Turned off maintenance mode" : "유지 보수 모드 꺼짐", "Maintenance mode is kept active" : "유지 보수 모드가 켜져 있음", diff --git a/core/l10n/lt_LT.js b/core/l10n/lt_LT.js index 36cc1cdbdff..8b3cd0cc45e 100644 --- a/core/l10n/lt_LT.js +++ b/core/l10n/lt_LT.js @@ -18,7 +18,6 @@ OC.L10N.register( "Error favoriting" : "Klaida įtraukiant į mėgstamus.", "Error unfavoriting" : "Klaida pašalinant iš mėgstamų.", "Couldn't send mail to following users: %s " : "Nepavyko nusiųsti el. pašto šiems naudotojams: %s ", - "Preparing update" : "Ruošiamasi atnaujinimui", "Turned on maintenance mode" : "Įjungta priežiūros veiksena", "Turned off maintenance mode" : "Išjungta priežiūros veiksena", "Maintenance mode is kept active" : "Priežiūros veiksena yra aktyvi", diff --git a/core/l10n/lt_LT.json b/core/l10n/lt_LT.json index f5a0d2354e7..634451ac4cf 100644 --- a/core/l10n/lt_LT.json +++ b/core/l10n/lt_LT.json @@ -16,7 +16,6 @@ "Error favoriting" : "Klaida įtraukiant į mėgstamus.", "Error unfavoriting" : "Klaida pašalinant iš mėgstamų.", "Couldn't send mail to following users: %s " : "Nepavyko nusiųsti el. pašto šiems naudotojams: %s ", - "Preparing update" : "Ruošiamasi atnaujinimui", "Turned on maintenance mode" : "Įjungta priežiūros veiksena", "Turned off maintenance mode" : "Išjungta priežiūros veiksena", "Maintenance mode is kept active" : "Priežiūros veiksena yra aktyvi", diff --git a/core/l10n/mk.js b/core/l10n/mk.js index 73bf1b147dc..afe4df48fc0 100644 --- a/core/l10n/mk.js +++ b/core/l10n/mk.js @@ -19,7 +19,6 @@ OC.L10N.register( "Error untagging" : "Грешка при отстранување на таговите", "Error favoriting" : "Грешка при ", "Couldn't send mail to following users: %s " : "Не можев да пратам порака на следниве корисници: %s", - "Preparing update" : "Ја подготвувам надградбата", "Turned on maintenance mode" : "Вклучен е модот за одржување", "Turned off maintenance mode" : "Ислкучен е модот за одржување", "Maintenance mode is kept active" : "Модот за одржување е уште активен", diff --git a/core/l10n/mk.json b/core/l10n/mk.json index 595ade878a9..3800b04b9d5 100644 --- a/core/l10n/mk.json +++ b/core/l10n/mk.json @@ -17,7 +17,6 @@ "Error untagging" : "Грешка при отстранување на таговите", "Error favoriting" : "Грешка при ", "Couldn't send mail to following users: %s " : "Не можев да пратам порака на следниве корисници: %s", - "Preparing update" : "Ја подготвувам надградбата", "Turned on maintenance mode" : "Вклучен е модот за одржување", "Turned off maintenance mode" : "Ислкучен е модот за одржување", "Maintenance mode is kept active" : "Модот за одржување е уште активен", diff --git a/core/l10n/nb_NO.js b/core/l10n/nb_NO.js index e4d27897a99..0096fe87c11 100644 --- a/core/l10n/nb_NO.js +++ b/core/l10n/nb_NO.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "Feil ved favorittmerking", "Error unfavoriting" : "Feil ved fjerning av favorittmerking", "Couldn't send mail to following users: %s " : "Klarte ikke å sende mail til følgende brukere: %s", - "Preparing update" : "Forbereder oppdatering", "Turned on maintenance mode" : "Slo på vedlikeholdsmodus", "Turned off maintenance mode" : "Slo av vedlikeholdsmodus", "Maintenance mode is kept active" : "Vedlikeholdsmodus blir beholdt aktiv", diff --git a/core/l10n/nb_NO.json b/core/l10n/nb_NO.json index f08a5721507..1a8d198e6bb 100644 --- a/core/l10n/nb_NO.json +++ b/core/l10n/nb_NO.json @@ -24,7 +24,6 @@ "Error favoriting" : "Feil ved favorittmerking", "Error unfavoriting" : "Feil ved fjerning av favorittmerking", "Couldn't send mail to following users: %s " : "Klarte ikke å sende mail til følgende brukere: %s", - "Preparing update" : "Forbereder oppdatering", "Turned on maintenance mode" : "Slo på vedlikeholdsmodus", "Turned off maintenance mode" : "Slo av vedlikeholdsmodus", "Maintenance mode is kept active" : "Vedlikeholdsmodus blir beholdt aktiv", diff --git a/core/l10n/nds.js b/core/l10n/nds.js index 5584b6421a3..981faa7ec51 100644 --- a/core/l10n/nds.js +++ b/core/l10n/nds.js @@ -12,7 +12,6 @@ OC.L10N.register( "Crop is not square" : "Zuschnitt ist nicht quadratisch", "Couldn't send reset email. Please contact your administrator." : "E-Mail zum Zurücksetzen konnte nicht gesendet werden. Bitte wende Dich an Deinem Administrator.", "Couldn't send mail to following users: %s " : "Senden der E-Mail an folgende Benutzer fehlgeschlagen: %s", - "Preparing update" : "Bereite Aktualisierung vor", "Turned on maintenance mode" : "Wartungsmodus eingeschaltet", "Turned off maintenance mode" : "Wartungsmodus ausgeschaltet", "Maintenance mode is kept active" : "Wartungsmodus wird fortgeführt", diff --git a/core/l10n/nds.json b/core/l10n/nds.json index 83e1be211b0..4bbdbe6ad09 100644 --- a/core/l10n/nds.json +++ b/core/l10n/nds.json @@ -10,7 +10,6 @@ "Crop is not square" : "Zuschnitt ist nicht quadratisch", "Couldn't send reset email. Please contact your administrator." : "E-Mail zum Zurücksetzen konnte nicht gesendet werden. Bitte wende Dich an Deinem Administrator.", "Couldn't send mail to following users: %s " : "Senden der E-Mail an folgende Benutzer fehlgeschlagen: %s", - "Preparing update" : "Bereite Aktualisierung vor", "Turned on maintenance mode" : "Wartungsmodus eingeschaltet", "Turned off maintenance mode" : "Wartungsmodus ausgeschaltet", "Maintenance mode is kept active" : "Wartungsmodus wird fortgeführt", diff --git a/core/l10n/nl.js b/core/l10n/nl.js index 51179c71d82..c0000229886 100644 --- a/core/l10n/nl.js +++ b/core/l10n/nl.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "Fout bij favoriet maken", "Error unfavoriting" : "Fout bij verwijderen favorietstatus", "Couldn't send mail to following users: %s " : "Kon geen e-mail sturen aan de volgende gebruikers: %s", - "Preparing update" : "Update voorbereiden", "Turned on maintenance mode" : "Onderhoudsmodus ingeschakeld", "Turned off maintenance mode" : "Onderhoudsmodus uitgeschakeld", "Maintenance mode is kept active" : "Onderhoudsmodus blijft actief", diff --git a/core/l10n/nl.json b/core/l10n/nl.json index f124ecb6442..84ee2935acf 100644 --- a/core/l10n/nl.json +++ b/core/l10n/nl.json @@ -24,7 +24,6 @@ "Error favoriting" : "Fout bij favoriet maken", "Error unfavoriting" : "Fout bij verwijderen favorietstatus", "Couldn't send mail to following users: %s " : "Kon geen e-mail sturen aan de volgende gebruikers: %s", - "Preparing update" : "Update voorbereiden", "Turned on maintenance mode" : "Onderhoudsmodus ingeschakeld", "Turned off maintenance mode" : "Onderhoudsmodus uitgeschakeld", "Maintenance mode is kept active" : "Onderhoudsmodus blijft actief", diff --git a/core/l10n/oc.js b/core/l10n/oc.js index 5f665ad4ac0..0410e2ca466 100644 --- a/core/l10n/oc.js +++ b/core/l10n/oc.js @@ -24,7 +24,6 @@ OC.L10N.register( "Error favoriting" : "Error al moment de la mesa en favorit", "Error unfavoriting" : "Error al moment de la supression dels favorits", "Couldn't send mail to following users: %s " : "Impossible de mandar un corrièl als utilizaires seguents : %s", - "Preparing update" : "Preparacion de la mesa a jorn", "Turned on maintenance mode" : "Mòde de mantenença activat", "Turned off maintenance mode" : "Mòde de mantenença desactivat", "Maintenance mode is kept active" : "Lo mòde de mantenença es daissat actiu", diff --git a/core/l10n/oc.json b/core/l10n/oc.json index 7280fc217dc..a086b90bc1b 100644 --- a/core/l10n/oc.json +++ b/core/l10n/oc.json @@ -22,7 +22,6 @@ "Error favoriting" : "Error al moment de la mesa en favorit", "Error unfavoriting" : "Error al moment de la supression dels favorits", "Couldn't send mail to following users: %s " : "Impossible de mandar un corrièl als utilizaires seguents : %s", - "Preparing update" : "Preparacion de la mesa a jorn", "Turned on maintenance mode" : "Mòde de mantenença activat", "Turned off maintenance mode" : "Mòde de mantenença desactivat", "Maintenance mode is kept active" : "Lo mòde de mantenença es daissat actiu", diff --git a/core/l10n/pl.js b/core/l10n/pl.js index dde53a7e4f7..78de8614a6f 100644 --- a/core/l10n/pl.js +++ b/core/l10n/pl.js @@ -24,7 +24,6 @@ OC.L10N.register( "Error favoriting" : "Błąd podczas dodawania do ulubionch", "Error unfavoriting" : "Błąd przy usuwaniu z ulubionych", "Couldn't send mail to following users: %s " : "Nie można było wysłać wiadomości do następujących użytkowników: %s", - "Preparing update" : "Przygotowuję aktualizację", "Turned on maintenance mode" : "Włączony tryb konserwacji", "Turned off maintenance mode" : "Wyłączony tryb konserwacji", "Maintenance mode is kept active" : "Tryb konserwacji pozostaje aktywny", diff --git a/core/l10n/pl.json b/core/l10n/pl.json index 8ac4840ef2b..6fbb26da214 100644 --- a/core/l10n/pl.json +++ b/core/l10n/pl.json @@ -22,7 +22,6 @@ "Error favoriting" : "Błąd podczas dodawania do ulubionch", "Error unfavoriting" : "Błąd przy usuwaniu z ulubionych", "Couldn't send mail to following users: %s " : "Nie można było wysłać wiadomości do następujących użytkowników: %s", - "Preparing update" : "Przygotowuję aktualizację", "Turned on maintenance mode" : "Włączony tryb konserwacji", "Turned off maintenance mode" : "Wyłączony tryb konserwacji", "Maintenance mode is kept active" : "Tryb konserwacji pozostaje aktywny", diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js index d4c0445ff4e..2e88bb16a53 100644 --- a/core/l10n/pt_BR.js +++ b/core/l10n/pt_BR.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "Erro colocando nos favoritos", "Error unfavoriting" : "Erro retirando do favoritos", "Couldn't send mail to following users: %s " : "Não foi possível enviar e-mail para os seguintes usuários: %s", - "Preparing update" : "Preparando atualização", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Verificando tabela %s", "Turned on maintenance mode" : "Ativar modo de manutenção", diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json index 74c63306f34..025d0bbbebb 100644 --- a/core/l10n/pt_BR.json +++ b/core/l10n/pt_BR.json @@ -24,7 +24,6 @@ "Error favoriting" : "Erro colocando nos favoritos", "Error unfavoriting" : "Erro retirando do favoritos", "Couldn't send mail to following users: %s " : "Não foi possível enviar e-mail para os seguintes usuários: %s", - "Preparing update" : "Preparando atualização", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Verificando tabela %s", "Turned on maintenance mode" : "Ativar modo de manutenção", diff --git a/core/l10n/pt_PT.js b/core/l10n/pt_PT.js index 4a2100f9269..3a80a2e41ff 100644 --- a/core/l10n/pt_PT.js +++ b/core/l10n/pt_PT.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "Erro a definir como favorito", "Error unfavoriting" : "Erro a remover como favorito", "Couldn't send mail to following users: %s " : "Não foi possível enviar a mensagem para os seguintes utilizadores: %s", - "Preparing update" : "A preparar atualização", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: A verificar a tabela %s", "Turned on maintenance mode" : "Ativado o modo de manutenção", diff --git a/core/l10n/pt_PT.json b/core/l10n/pt_PT.json index 0a6307a8fc7..6b90d03807e 100644 --- a/core/l10n/pt_PT.json +++ b/core/l10n/pt_PT.json @@ -24,7 +24,6 @@ "Error favoriting" : "Erro a definir como favorito", "Error unfavoriting" : "Erro a remover como favorito", "Couldn't send mail to following users: %s " : "Não foi possível enviar a mensagem para os seguintes utilizadores: %s", - "Preparing update" : "A preparar atualização", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: A verificar a tabela %s", "Turned on maintenance mode" : "Ativado o modo de manutenção", diff --git a/core/l10n/ru.js b/core/l10n/ru.js index 4e6479d95a4..f8a39807491 100644 --- a/core/l10n/ru.js +++ b/core/l10n/ru.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "Ошибка добавления в избранные", "Error unfavoriting" : "Ошибка удаления из избранного", "Couldn't send mail to following users: %s " : "Невозможно отправить письмо следующим пользователям: %s", - "Preparing update" : "Подготовка к обновлению", "Turned on maintenance mode" : "Режим отладки включён", "Turned off maintenance mode" : "Режим отладки отключён", "Maintenance mode is kept active" : "Режим обслуживания оставлен включенным", diff --git a/core/l10n/ru.json b/core/l10n/ru.json index 7993d9c6bb6..15fc2b4b0db 100644 --- a/core/l10n/ru.json +++ b/core/l10n/ru.json @@ -24,7 +24,6 @@ "Error favoriting" : "Ошибка добавления в избранные", "Error unfavoriting" : "Ошибка удаления из избранного", "Couldn't send mail to following users: %s " : "Невозможно отправить письмо следующим пользователям: %s", - "Preparing update" : "Подготовка к обновлению", "Turned on maintenance mode" : "Режим отладки включён", "Turned off maintenance mode" : "Режим отладки отключён", "Maintenance mode is kept active" : "Режим обслуживания оставлен включенным", diff --git a/core/l10n/sk_SK.js b/core/l10n/sk_SK.js index a81d49a44f5..92ea372e8bd 100644 --- a/core/l10n/sk_SK.js +++ b/core/l10n/sk_SK.js @@ -25,7 +25,6 @@ OC.L10N.register( "Error favoriting" : "Chyba pri pridaní do obľúbených", "Error unfavoriting" : "Chyba pri odobratí z obľúbených", "Couldn't send mail to following users: %s " : "Nebolo možné odoslať email týmto používateľom: %s ", - "Preparing update" : "Pripravuje sa aktualizácia", "[%d / %d]: Checking table %s" : "[%d / %d]: Kontrola tabuľky %s", "Turned on maintenance mode" : "Mód údržby je zapnutý", "Turned off maintenance mode" : "Mód údržby je vypnutý", diff --git a/core/l10n/sk_SK.json b/core/l10n/sk_SK.json index 41adcfae763..94e6d57267b 100644 --- a/core/l10n/sk_SK.json +++ b/core/l10n/sk_SK.json @@ -23,7 +23,6 @@ "Error favoriting" : "Chyba pri pridaní do obľúbených", "Error unfavoriting" : "Chyba pri odobratí z obľúbených", "Couldn't send mail to following users: %s " : "Nebolo možné odoslať email týmto používateľom: %s ", - "Preparing update" : "Pripravuje sa aktualizácia", "[%d / %d]: Checking table %s" : "[%d / %d]: Kontrola tabuľky %s", "Turned on maintenance mode" : "Mód údržby je zapnutý", "Turned off maintenance mode" : "Mód údržby je vypnutý", diff --git a/core/l10n/sl.js b/core/l10n/sl.js index 0af9907368e..45eaa680b44 100644 --- a/core/l10n/sl.js +++ b/core/l10n/sl.js @@ -15,6 +15,7 @@ OC.L10N.register( "Couldn't reset password because the token is invalid" : "Ni mogoče ponastaviti gesla zaradi neustreznega žetona.", "Couldn't reset password because the token is expired" : "Ni mogoče ponastaviti gesla, ker je žeton potekel.", "Couldn't send reset email. Please make sure your username is correct." : "Ni mogoče poslati elektronskega sporočila. Prepričajte se, da je uporabniško ime pravilno.", + "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Ni mogoče poslati elektronskega sporočila za ponastavitev gesla, ker ni navedenega elektronskega naslova. Stopite v stik s skrbnikom sistema.", "%s password reset" : "Ponastavitev gesla %s", "Couldn't send reset email. Please contact your administrator." : "Ni mogoče nastaviti elektronskega naslova za ponastavitev. Stopite v stik s skrbnikom sistema.", "Error loading tags" : "Napaka nalaganja oznak", @@ -25,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "Napaka označevanja priljubljenosti", "Error unfavoriting" : "Napaka odstranjevanja oznake priljubljenosti", "Couldn't send mail to following users: %s " : "Ni mogoče poslati sporočila za: %s", - "Preparing update" : "Pripravljanje posodobitve", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Poteka preverjanje razpredelnice %s", "Turned on maintenance mode" : "Vzdrževalni način je omogočen", diff --git a/core/l10n/sl.json b/core/l10n/sl.json index 5b1331d26d7..ffc32c69bf7 100644 --- a/core/l10n/sl.json +++ b/core/l10n/sl.json @@ -13,6 +13,7 @@ "Couldn't reset password because the token is invalid" : "Ni mogoče ponastaviti gesla zaradi neustreznega žetona.", "Couldn't reset password because the token is expired" : "Ni mogoče ponastaviti gesla, ker je žeton potekel.", "Couldn't send reset email. Please make sure your username is correct." : "Ni mogoče poslati elektronskega sporočila. Prepričajte se, da je uporabniško ime pravilno.", + "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Ni mogoče poslati elektronskega sporočila za ponastavitev gesla, ker ni navedenega elektronskega naslova. Stopite v stik s skrbnikom sistema.", "%s password reset" : "Ponastavitev gesla %s", "Couldn't send reset email. Please contact your administrator." : "Ni mogoče nastaviti elektronskega naslova za ponastavitev. Stopite v stik s skrbnikom sistema.", "Error loading tags" : "Napaka nalaganja oznak", @@ -23,7 +24,6 @@ "Error favoriting" : "Napaka označevanja priljubljenosti", "Error unfavoriting" : "Napaka odstranjevanja oznake priljubljenosti", "Couldn't send mail to following users: %s " : "Ni mogoče poslati sporočila za: %s", - "Preparing update" : "Pripravljanje posodobitve", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Poteka preverjanje razpredelnice %s", "Turned on maintenance mode" : "Vzdrževalni način je omogočen", diff --git a/core/l10n/sq.js b/core/l10n/sq.js index 3990855bf12..ec072ddd52b 100644 --- a/core/l10n/sq.js +++ b/core/l10n/sq.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "Gabim në ruajtjen si të parapëlqyer", "Error unfavoriting" : "Gabim në heqjen nga të parapëlqyerat", "Couldn't send mail to following users: %s " : "S’u dërgua dot e-mail përdoruesve vijues: %s ", - "Preparing update" : "Po përgatitet përditësimi", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Po kontrollohet tabela %s", "Turned on maintenance mode" : "Mënyra e mirëmbajtjes u aktivizua", diff --git a/core/l10n/sq.json b/core/l10n/sq.json index af3dfaf2dcc..dbe19187efc 100644 --- a/core/l10n/sq.json +++ b/core/l10n/sq.json @@ -24,7 +24,6 @@ "Error favoriting" : "Gabim në ruajtjen si të parapëlqyer", "Error unfavoriting" : "Gabim në heqjen nga të parapëlqyerat", "Couldn't send mail to following users: %s " : "S’u dërgua dot e-mail përdoruesve vijues: %s ", - "Preparing update" : "Po përgatitet përditësimi", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Po kontrollohet tabela %s", "Turned on maintenance mode" : "Mënyra e mirëmbajtjes u aktivizua", diff --git a/core/l10n/sr.js b/core/l10n/sr.js index 906cee0ab3a..f4a5e01a5ce 100644 --- a/core/l10n/sr.js +++ b/core/l10n/sr.js @@ -22,7 +22,6 @@ OC.L10N.register( "Error favoriting" : "Грешка при постављању омиљеног", "Error unfavoriting" : "Грешка при укидању омиљеног", "Couldn't send mail to following users: %s " : "Не могу да пошаљем е-пошту следећим корисницима: %s ", - "Preparing update" : "Припремам надоградњу", "Turned on maintenance mode" : "Режим одржавања укључен", "Turned off maintenance mode" : "Режим одржавања искључен", "Maintenance mode is kept active" : "Режим одржавања се држи активним", diff --git a/core/l10n/sr.json b/core/l10n/sr.json index 2b02d09b8ee..fe7cbbfa6eb 100644 --- a/core/l10n/sr.json +++ b/core/l10n/sr.json @@ -20,7 +20,6 @@ "Error favoriting" : "Грешка при постављању омиљеног", "Error unfavoriting" : "Грешка при укидању омиљеног", "Couldn't send mail to following users: %s " : "Не могу да пошаљем е-пошту следећим корисницима: %s ", - "Preparing update" : "Припремам надоградњу", "Turned on maintenance mode" : "Режим одржавања укључен", "Turned off maintenance mode" : "Режим одржавања искључен", "Maintenance mode is kept active" : "Режим одржавања се држи активним", diff --git a/core/l10n/sv.js b/core/l10n/sv.js index 2666d77a499..0183ccfe8f1 100644 --- a/core/l10n/sv.js +++ b/core/l10n/sv.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "Fel vid favorisering", "Error unfavoriting" : "Fel vid avfavorisering ", "Couldn't send mail to following users: %s " : "Gick inte att skicka e-post till följande användare: %s", - "Preparing update" : "Förbereder uppdatering", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Kontrollerar tabell %s", "Turned on maintenance mode" : "Aktiverade underhållsläge", diff --git a/core/l10n/sv.json b/core/l10n/sv.json index 2eac41bf57c..05c1ad87c00 100644 --- a/core/l10n/sv.json +++ b/core/l10n/sv.json @@ -24,7 +24,6 @@ "Error favoriting" : "Fel vid favorisering", "Error unfavoriting" : "Fel vid avfavorisering ", "Couldn't send mail to following users: %s " : "Gick inte att skicka e-post till följande användare: %s", - "Preparing update" : "Förbereder uppdatering", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Kontrollerar tabell %s", "Turned on maintenance mode" : "Aktiverade underhållsläge", diff --git a/core/l10n/th_TH.js b/core/l10n/th_TH.js index caf1ca920cb..dbaa40da3e6 100644 --- a/core/l10n/th_TH.js +++ b/core/l10n/th_TH.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "เกิดข้อผิดพลาดขณะเลือกที่ชื่นชอบ", "Error unfavoriting" : "เกิดข้อผิดพลาดขณะยกเลิกการเลือกที่ชื่นชอบ", "Couldn't send mail to following users: %s " : "ไม่สามารถส่งอีเมลไปยังผู้ใช้: %s", - "Preparing update" : "เตรียมอัพเดท", "Turned on maintenance mode" : "เปิดโหมดการบำรุงรักษา", "Turned off maintenance mode" : "ปิดโหมดการบำรุงรักษา", "Maintenance mode is kept active" : "โหมดการบำรุงรักษาจะถูกเก็บไว้ใช้งาน", diff --git a/core/l10n/th_TH.json b/core/l10n/th_TH.json index 51a63c56a6c..b0063ad770e 100644 --- a/core/l10n/th_TH.json +++ b/core/l10n/th_TH.json @@ -24,7 +24,6 @@ "Error favoriting" : "เกิดข้อผิดพลาดขณะเลือกที่ชื่นชอบ", "Error unfavoriting" : "เกิดข้อผิดพลาดขณะยกเลิกการเลือกที่ชื่นชอบ", "Couldn't send mail to following users: %s " : "ไม่สามารถส่งอีเมลไปยังผู้ใช้: %s", - "Preparing update" : "เตรียมอัพเดท", "Turned on maintenance mode" : "เปิดโหมดการบำรุงรักษา", "Turned off maintenance mode" : "ปิดโหมดการบำรุงรักษา", "Maintenance mode is kept active" : "โหมดการบำรุงรักษาจะถูกเก็บไว้ใช้งาน", diff --git a/core/l10n/tr.js b/core/l10n/tr.js index 4a8966101f1..a2edc2565f9 100644 --- a/core/l10n/tr.js +++ b/core/l10n/tr.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "Beğenilirken hata", "Error unfavoriting" : "Beğeniden kaldırılırken hata", "Couldn't send mail to following users: %s " : "Şu kullanıcılara posta gönderilemedi: %s", - "Preparing update" : "Güncelleme hazırlanıyor", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Tablo kontroi ediliyor %s", "Turned on maintenance mode" : "Bakım kipi etkinleştirildi", diff --git a/core/l10n/tr.json b/core/l10n/tr.json index 054e9d12182..ee4be500b7b 100644 --- a/core/l10n/tr.json +++ b/core/l10n/tr.json @@ -24,7 +24,6 @@ "Error favoriting" : "Beğenilirken hata", "Error unfavoriting" : "Beğeniden kaldırılırken hata", "Couldn't send mail to following users: %s " : "Şu kullanıcılara posta gönderilemedi: %s", - "Preparing update" : "Güncelleme hazırlanıyor", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: Tablo kontroi ediliyor %s", "Turned on maintenance mode" : "Bakım kipi etkinleştirildi", diff --git a/core/l10n/uk.js b/core/l10n/uk.js index 591bf0d1761..f11176e56cf 100644 --- a/core/l10n/uk.js +++ b/core/l10n/uk.js @@ -25,7 +25,6 @@ OC.L10N.register( "Error favoriting" : "Помилка додавання в улюблені", "Error unfavoriting" : "Помилка видалення з улюбленого", "Couldn't send mail to following users: %s " : "Неможливо надіслати листа наступним користувачам: %s ", - "Preparing update" : "Підготовка до оновлення", "Turned on maintenance mode" : "Увімкнено режим технічного обслуговування", "Turned off maintenance mode" : "Вимкнено режим технічного обслуговування", "Maintenance mode is kept active" : "Режим обслуговування залишається активним", diff --git a/core/l10n/uk.json b/core/l10n/uk.json index 01d76c7aa74..e8ccbae2c96 100644 --- a/core/l10n/uk.json +++ b/core/l10n/uk.json @@ -23,7 +23,6 @@ "Error favoriting" : "Помилка додавання в улюблені", "Error unfavoriting" : "Помилка видалення з улюбленого", "Couldn't send mail to following users: %s " : "Неможливо надіслати листа наступним користувачам: %s ", - "Preparing update" : "Підготовка до оновлення", "Turned on maintenance mode" : "Увімкнено режим технічного обслуговування", "Turned off maintenance mode" : "Вимкнено режим технічного обслуговування", "Maintenance mode is kept active" : "Режим обслуговування залишається активним", diff --git a/core/l10n/zh_CN.js b/core/l10n/zh_CN.js index 0024753865f..b417644eb15 100644 --- a/core/l10n/zh_CN.js +++ b/core/l10n/zh_CN.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "收藏时出错", "Error unfavoriting" : "删除收藏时出错", "Couldn't send mail to following users: %s " : "无法发送邮件到用户: %s ", - "Preparing update" : "正在准备更新", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: 检查数据表 %s", "Turned on maintenance mode" : "启用维护模式", diff --git a/core/l10n/zh_CN.json b/core/l10n/zh_CN.json index a97ef9b1753..45eef49512d 100644 --- a/core/l10n/zh_CN.json +++ b/core/l10n/zh_CN.json @@ -24,7 +24,6 @@ "Error favoriting" : "收藏时出错", "Error unfavoriting" : "删除收藏时出错", "Couldn't send mail to following users: %s " : "无法发送邮件到用户: %s ", - "Preparing update" : "正在准备更新", "[%d / %d]: %s" : "[%d / %d]: %s", "[%d / %d]: Checking table %s" : "[%d / %d]: 检查数据表 %s", "Turned on maintenance mode" : "启用维护模式", diff --git a/core/l10n/zh_TW.js b/core/l10n/zh_TW.js index a6020f3e5c1..aec881a4c7a 100644 --- a/core/l10n/zh_TW.js +++ b/core/l10n/zh_TW.js @@ -26,7 +26,6 @@ OC.L10N.register( "Error favoriting" : "加入最愛時出錯", "Error unfavoriting" : "從最愛移除出錯", "Couldn't send mail to following users: %s " : "無法寄送郵件給這些使用者:%s", - "Preparing update" : "準備更新", "Turned on maintenance mode" : "已啓用維護模式", "Turned off maintenance mode" : "已停用維護模式", "Maintenance mode is kept active" : "維護模式維持在開啟狀態", diff --git a/core/l10n/zh_TW.json b/core/l10n/zh_TW.json index 7c39a93771e..2e40782bf1b 100644 --- a/core/l10n/zh_TW.json +++ b/core/l10n/zh_TW.json @@ -24,7 +24,6 @@ "Error favoriting" : "加入最愛時出錯", "Error unfavoriting" : "從最愛移除出錯", "Couldn't send mail to following users: %s " : "無法寄送郵件給這些使用者:%s", - "Preparing update" : "準備更新", "Turned on maintenance mode" : "已啓用維護模式", "Turned off maintenance mode" : "已停用維護模式", "Maintenance mode is kept active" : "維護模式維持在開啟狀態", diff --git a/core/routes.php b/core/routes.php index 8981eb618f3..2b7a19f7d86 100644 --- a/core/routes.php +++ b/core/routes.php @@ -42,6 +42,8 @@ $application->registerRoutes($this, [ ['name' => 'avatar#postCroppedAvatar', 'url' => '/avatar/cropped', 'verb' => 'POST'], ['name' => 'avatar#getTmpAvatar', 'url' => '/avatar/tmp', 'verb' => 'GET'], ['name' => 'avatar#postAvatar', 'url' => '/avatar/', 'verb' => 'POST'], + ['name' => 'login#showLoginForm', 'url' => '/login', 'verb' => 'GET'], + ['name' => 'login#logout', 'url' => '/logout', 'verb' => 'GET'], ] ]); diff --git a/core/templates/login.php b/core/templates/login.php index 9934d4988d9..8405bac6890 100644 --- a/core/templates/login.php +++ b/core/templates/login.php @@ -9,7 +9,7 @@ script('core', [ ?> <!--[if IE 8]><style>input[type="checkbox"]{padding:0;}</style><![endif]--> -<form method="post" name="login"> +<form method="post" name="login" action="<?php p(OC::$WEBROOT) ?>/"> <fieldset> <?php if (!empty($_['redirect_url'])) { print_unescaped('<input type="hidden" name="redirect_url" value="' . \OCP\Util::sanitizeHTML($_['redirect_url']) . '">'); @@ -41,7 +41,7 @@ script('core', [ <p class="grouptop"> <input type="text" name="user" id="user" placeholder="<?php p($l->t('Username')); ?>" - value="<?php p($_['username']); ?>" + value="<?php p($_['loginName']); ?>" <?php p($_['user_autofocus'] ? 'autofocus' : ''); ?> autocomplete="on" autocapitalize="off" autocorrect="off" required> <label for="user" class="infield"><?php p($l->t('Username')); ?></label> diff --git a/core/templates/update.use-cli.php b/core/templates/update.use-cli.php new file mode 100644 index 00000000000..52d40cdea55 --- /dev/null +++ b/core/templates/update.use-cli.php @@ -0,0 +1,14 @@ +<div class="update" data-productname="<?php p($_['productName']) ?>" data-version="<?php p($_['version']) ?>"> + <div class="updateOverview"> + <h2 class="title"><?php p($l->t('Update needed')) ?></h2> + <div class="infogroup"> + <?php if ($_['tooBig']) { + p($l->t('Please use the command line updater because you have a big instance.')); + } else { + p($l->t('Please use the command line updater because automatic updating is disabled in the config.php.')); + } ?><br><br> + <?php + print_unescaped($l->t('For help, see the <a target="_blank" rel="noreferrer" href="%s">documentation</a>.', [link_to_docs('admin-cli-upgrade')])); ?><br><br> + </div> + </div> +</div> diff --git a/lib/base.php b/lib/base.php index 5a1d15913ba..26be1161ba3 100644 --- a/lib/base.php +++ b/lib/base.php @@ -78,19 +78,14 @@ class OC { */ public static $WEBROOT = ''; /** - * The installation path of the 3rdparty folder on the server (e.g. /srv/http/owncloud/3rdparty) - */ - public static $THIRDPARTYROOT = ''; - /** - * the root path of the 3rdparty folder for http requests (e.g. owncloud/3rdparty) - */ - public static $THIRDPARTYWEBROOT = ''; - /** * The installation path array of the apps folder on the server (e.g. /srv/http/owncloud) 'path' and * web path in 'url' */ public static $APPSROOTS = array(); + /** + * @var string + */ public static $configDir; /** @@ -183,25 +178,6 @@ class OC { } } - // search the 3rdparty folder - OC::$THIRDPARTYROOT = self::$config->getValue('3rdpartyroot', null); - OC::$THIRDPARTYWEBROOT = self::$config->getValue('3rdpartyurl', null); - - if (empty(OC::$THIRDPARTYROOT) && empty(OC::$THIRDPARTYWEBROOT)) { - if (file_exists(OC::$SERVERROOT . '/3rdparty')) { - OC::$THIRDPARTYROOT = OC::$SERVERROOT; - OC::$THIRDPARTYWEBROOT = OC::$WEBROOT; - } elseif (file_exists(OC::$SERVERROOT . '/../3rdparty')) { - OC::$THIRDPARTYWEBROOT = rtrim(dirname(OC::$WEBROOT), '/'); - OC::$THIRDPARTYROOT = rtrim(dirname(OC::$SERVERROOT), '/'); - } - } - if (empty(OC::$THIRDPARTYROOT) || !file_exists(OC::$THIRDPARTYROOT)) { - throw new \RuntimeException('3rdparty directory not found! Please put the ownCloud 3rdparty' - . ' folder in the ownCloud folder or the folder above.' - . ' You can also configure the location in the config.php file.'); - } - // search the apps folder $config_paths = self::$config->getValue('apps_paths', array()); if (!empty($config_paths)) { @@ -240,7 +216,7 @@ class OC { set_include_path( OC::$SERVERROOT . '/lib/private' . PATH_SEPARATOR . OC::$SERVERROOT . '/config' . PATH_SEPARATOR . - OC::$THIRDPARTYROOT . '/3rdparty' . PATH_SEPARATOR . + OC::$SERVERROOT . '/3rdparty' . PATH_SEPARATOR . implode(PATH_SEPARATOR, $paths) . PATH_SEPARATOR . get_include_path() . PATH_SEPARATOR . OC::$SERVERROOT @@ -306,7 +282,7 @@ class OC { // render error page $template = new OC_Template('', 'update.user', 'guest'); - OC_Util::addscript('maintenance-check'); + OC_Util::addScript('maintenance-check'); $template->printPage(); die(); } @@ -361,27 +337,49 @@ class OC { */ private static function printUpgradePage() { $systemConfig = \OC::$server->getSystemConfig(); + + $disableWebUpdater = $systemConfig->getValue('upgrade.disable-web', false); + $tooBig = false; + if (!$disableWebUpdater) { + // count users + $stats = \OC::$server->getUserManager()->countUsers(); + $totalUsers = array_sum($stats); + $tooBig = ($totalUsers > 50); + } + if ($disableWebUpdater || $tooBig) { + // send http status 503 + header('HTTP/1.1 503 Service Temporarily Unavailable'); + header('Status: 503 Service Temporarily Unavailable'); + header('Retry-After: 120'); + + // render error page + $template = new OC_Template('', 'update.use-cli', 'guest'); + $template->assign('productName', 'ownCloud'); // for now + $template->assign('version', OC_Util::getVersionString()); + $template->assign('tooBig', $tooBig); + + $template->printPage(); + die(); + } + + // check whether this is a core update or apps update + $installedVersion = $systemConfig->getValue('version', '0.0.0'); + $currentVersion = implode('.', \OCP\Util::getVersion()); + + // if not a core upgrade, then it's apps upgrade + $isAppsOnlyUpgrade = (version_compare($currentVersion, $installedVersion, '=')); + $oldTheme = $systemConfig->getValue('theme'); $systemConfig->setValue('theme', ''); \OCP\Util::addScript('config'); // needed for web root \OCP\Util::addScript('update'); \OCP\Util::addStyle('update'); - // check whether this is a core update or apps update - $installedVersion = $systemConfig->getValue('version', '0.0.0'); - $currentVersion = implode('.', \OCP\Util::getVersion()); - $appManager = \OC::$server->getAppManager(); $tmpl = new OC_Template('', 'update.admin', 'guest'); $tmpl->assign('version', OC_Util::getVersionString()); - - // if not a core upgrade, then it's apps upgrade - if (version_compare($currentVersion, $installedVersion, '=')) { - $tmpl->assign('isAppsOnlyUpgrade', true); - } else { - $tmpl->assign('isAppsOnlyUpgrade', false); - } + $tmpl->assign('isAppsOnlyUpgrade', $isAppsOnlyUpgrade); // get third party apps $ocVersion = \OCP\Util::getVersion(); @@ -447,7 +445,7 @@ class OC { } public static function loadAppClassPaths() { - foreach (OC_APP::getEnabledApps() as $app) { + foreach (OC_App::getEnabledApps() as $app) { $appPath = OC_App::getAppPath($app); if ($appPath === false) { continue; @@ -493,7 +491,7 @@ class OC { try { self::initPaths(); // setup 3rdparty autoloader - $vendorAutoLoad = OC::$THIRDPARTYROOT . '/3rdparty/autoload.php'; + $vendorAutoLoad = OC::$SERVERROOT. '/3rdparty/autoload.php'; if (!file_exists($vendorAutoLoad)) { 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".'); } @@ -778,7 +776,7 @@ class OC { public static function registerShareHooks() { if (\OC::$server->getSystemConfig()->getValue('installed')) { OC_Hook::connect('OC_User', 'post_deleteUser', 'OC\Share20\Hooks', 'post_deleteUser'); - OC_Hook::connect('OC_User', 'post_removeFromGroup', 'OC\Share\Hooks', 'post_removeFromGroup'); + OC_Hook::connect('OC_User', 'post_removeFromGroup', 'OC\Share20\Hooks', 'post_removeFromGroup'); OC_Hook::connect('OC_User', 'post_deleteGroup', 'OC\Share20\Hooks', 'post_deleteGroup'); } } @@ -860,7 +858,7 @@ class OC { } } - if (!self::$CLI and (!isset($_GET["logout"]) or ($_GET["logout"] !== 'true'))) { + if (!self::$CLI) { try { if (!$systemConfig->getValue('maintenance', false) && !self::checkUpgrade(false)) { OC_App::loadApps(array('filesystem', 'logging')); @@ -899,31 +897,13 @@ class OC { return; } - // Redirect to index if the logout link is accessed without valid session - // this is needed to prevent "Token expired" messages while login if a session is expired - // @see https://github.com/owncloud/core/pull/8443#issuecomment-42425583 - if(isset($_GET['logout']) && !OC_User::isLoggedIn()) { - header("Location: " . \OC::$server->getURLGenerator()->getAbsoluteURL('/')); - return; - } - // Someone is logged in if (OC_User::isLoggedIn()) { OC_App::loadApps(); OC_User::setupBackends(); OC_Util::setupFS(); - if (isset($_GET["logout"]) and ($_GET["logout"])) { - OC_JSON::callCheck(); - if (isset($_COOKIE['oc_token'])) { - \OC::$server->getConfig()->deleteUserValue(OC_User::getUser(), 'login_token', $_COOKIE['oc_token']); - } - OC_User::logout(); - // redirect to webroot and add slash if webroot is empty - header("Location: " . \OC::$server->getURLGenerator()->getAbsoluteURL('/')); - } else { - // Redirect to default application - OC_Util::redirectToDefaultPage(); - } + // Redirect to default application + OC_Util::redirectToDefaultPage(); } else { // Not handled and not logged in self::handleLogin(); @@ -975,7 +955,18 @@ class OC { $error[] = 'internalexception'; } - OC_Util::displayLoginPage(array_unique($error), $messages); + if(!\OC::$server->getUserSession()->isLoggedIn()) { + $loginMessages = array(array_unique($error), $messages); + \OC::$server->getSession()->set('loginMessages', $loginMessages); + // Read current user and append if possible + $args = []; + if(isset($_POST['user'])) { + $args['user'] = $_POST['user']; + } + + $redirectionTarget = \OC::$server->getURLGenerator()->linkToRoute('core.login.showLoginForm', $args); + header('Location: ' . $redirectionTarget); + } } /** diff --git a/lib/l10n/cs_CZ.js b/lib/l10n/cs_CZ.js index f2e4916d6b5..f402a168df3 100644 --- a/lib/l10n/cs_CZ.js +++ b/lib/l10n/cs_CZ.js @@ -7,10 +7,6 @@ OC.L10N.register( "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "To lze obvykle vyřešit %spovolením zápisu webovému serveru do konfiguračního adresáře%s.", "Sample configuration detected" : "Byla detekována vzorová konfigurace", "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" : "Pravděpodobně byla zkopírována konfigurační nastavení ze vzorových souborů. Toto není podporováno a může poškodit vaši instalaci. Nahlédněte prosím do dokumentace před prováděním změn v souboru config.php", - "You are not allowed to share %s" : "Nemáte povoleno sdílet %s", - "Cannot increase permissions of %s" : "Nelze navýšit oprávnění u %s", - "Expiration date is in the past" : "Datum vypršení je v minulosti", - "Cannot set expiration date more than %s days in the future" : "Datum vypršení nelze nastavit na více než %s dní do budoucnosti", "PHP %s or higher is required." : "Je vyžadováno PHP %s nebo vyšší.", "PHP with a version lower than %s is required." : "Je vyžadováno PHP ve verzi nižší než %s.", "Following databases are supported: %s" : "Jsou podporovány následující databáze: %s", @@ -21,6 +17,10 @@ OC.L10N.register( "Following platforms are supported: %s" : "Jsou podporovány následující systémy: %s", "ownCloud %s or higher is required." : "Je vyžadován ownCloud %s nebo vyšší.", "ownCloud %s or lower is required." : "Je vyžadován ownCloud %s nebo nižší.", + "You are not allowed to share %s" : "Nemáte povoleno sdílet %s", + "Cannot increase permissions of %s" : "Nelze navýšit oprávnění u %s", + "Expiration date is in the past" : "Datum vypršení je v minulosti", + "Cannot set expiration date more than %s days in the future" : "Datum vypršení nelze nastavit na více než %s dní do budoucnosti", "Help" : "Nápověda", "Personal" : "Osobní", "Users" : "Uživatelé", @@ -60,6 +60,7 @@ OC.L10N.register( "Archives of type %s are not supported" : "Archivy typu %s nejsou podporovány", "Failed to open archive when installing app" : "Chyba při otevírání archivu během instalace aplikace", "App does not provide an info.xml file" : "Aplikace neposkytuje soubor info.xml", + "App cannot be installed because appinfo file cannot be read." : "Aplikaci nelze nainstalovat, soubor appinfo nelze číst.", "Signature could not get checked. Please contact the app developer and check your admin screen." : "Podpis nelze ověřit. Kontaktujte prosím vývojáře aplikace a zkontrolujte obrazovku administrace.", "App can't be installed because of not allowed code in the App" : "Aplikace nemůže být nainstalována, protože obsahuje nepovolený kód", "App can't be installed because it is not compatible with this version of ownCloud" : "Aplikace nemůže být nainstalována, protože není kompatibilní s touto verzí ownCloud", diff --git a/lib/l10n/cs_CZ.json b/lib/l10n/cs_CZ.json index acc708383f9..4ae661477c2 100644 --- a/lib/l10n/cs_CZ.json +++ b/lib/l10n/cs_CZ.json @@ -5,10 +5,6 @@ "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "To lze obvykle vyřešit %spovolením zápisu webovému serveru do konfiguračního adresáře%s.", "Sample configuration detected" : "Byla detekována vzorová konfigurace", "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" : "Pravděpodobně byla zkopírována konfigurační nastavení ze vzorových souborů. Toto není podporováno a může poškodit vaši instalaci. Nahlédněte prosím do dokumentace před prováděním změn v souboru config.php", - "You are not allowed to share %s" : "Nemáte povoleno sdílet %s", - "Cannot increase permissions of %s" : "Nelze navýšit oprávnění u %s", - "Expiration date is in the past" : "Datum vypršení je v minulosti", - "Cannot set expiration date more than %s days in the future" : "Datum vypršení nelze nastavit na více než %s dní do budoucnosti", "PHP %s or higher is required." : "Je vyžadováno PHP %s nebo vyšší.", "PHP with a version lower than %s is required." : "Je vyžadováno PHP ve verzi nižší než %s.", "Following databases are supported: %s" : "Jsou podporovány následující databáze: %s", @@ -19,6 +15,10 @@ "Following platforms are supported: %s" : "Jsou podporovány následující systémy: %s", "ownCloud %s or higher is required." : "Je vyžadován ownCloud %s nebo vyšší.", "ownCloud %s or lower is required." : "Je vyžadován ownCloud %s nebo nižší.", + "You are not allowed to share %s" : "Nemáte povoleno sdílet %s", + "Cannot increase permissions of %s" : "Nelze navýšit oprávnění u %s", + "Expiration date is in the past" : "Datum vypršení je v minulosti", + "Cannot set expiration date more than %s days in the future" : "Datum vypršení nelze nastavit na více než %s dní do budoucnosti", "Help" : "Nápověda", "Personal" : "Osobní", "Users" : "Uživatelé", @@ -58,6 +58,7 @@ "Archives of type %s are not supported" : "Archivy typu %s nejsou podporovány", "Failed to open archive when installing app" : "Chyba při otevírání archivu během instalace aplikace", "App does not provide an info.xml file" : "Aplikace neposkytuje soubor info.xml", + "App cannot be installed because appinfo file cannot be read." : "Aplikaci nelze nainstalovat, soubor appinfo nelze číst.", "Signature could not get checked. Please contact the app developer and check your admin screen." : "Podpis nelze ověřit. Kontaktujte prosím vývojáře aplikace a zkontrolujte obrazovku administrace.", "App can't be installed because of not allowed code in the App" : "Aplikace nemůže být nainstalována, protože obsahuje nepovolený kód", "App can't be installed because it is not compatible with this version of ownCloud" : "Aplikace nemůže být nainstalována, protože není kompatibilní s touto verzí ownCloud", diff --git a/lib/l10n/en_GB.js b/lib/l10n/en_GB.js index 4ce04e5a6b8..1d507fd4c7a 100644 --- a/lib/l10n/en_GB.js +++ b/lib/l10n/en_GB.js @@ -7,10 +7,6 @@ OC.L10N.register( "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "This can usually be fixed by %sgiving the webserver write access to the config directory%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", - "You are not allowed to share %s" : "You are not allowed to share %s", - "Cannot increase permissions of %s" : "Cannot increase permissions of %s", - "Expiration date is in the past" : "Expiration date is in the past", - "Cannot set expiration date more than %s days in the future" : "Cannot set expiration date more than %s days in the future", "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.", "Following databases are supported: %s" : "Following databases are supported: %s", @@ -21,6 +17,10 @@ OC.L10N.register( "Following platforms are supported: %s" : "Following platforms are supported: %s", "ownCloud %s or higher is required." : "ownCloud %s or higher is required.", "ownCloud %s or lower is required." : "ownCloud %s or lower is required.", + "You are not allowed to share %s" : "You are not allowed to share %s", + "Cannot increase permissions of %s" : "Cannot increase permissions of %s", + "Expiration date is in the past" : "Expiration date is in the past", + "Cannot set expiration date more than %s days in the future" : "Cannot set expiration date more than %s days in the future", "Help" : "Help", "Personal" : "Personal", "Users" : "Users", diff --git a/lib/l10n/en_GB.json b/lib/l10n/en_GB.json index ef503400cad..f2b42ea045c 100644 --- a/lib/l10n/en_GB.json +++ b/lib/l10n/en_GB.json @@ -5,10 +5,6 @@ "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "This can usually be fixed by %sgiving the webserver write access to the config directory%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", - "You are not allowed to share %s" : "You are not allowed to share %s", - "Cannot increase permissions of %s" : "Cannot increase permissions of %s", - "Expiration date is in the past" : "Expiration date is in the past", - "Cannot set expiration date more than %s days in the future" : "Cannot set expiration date more than %s days in the future", "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.", "Following databases are supported: %s" : "Following databases are supported: %s", @@ -19,6 +15,10 @@ "Following platforms are supported: %s" : "Following platforms are supported: %s", "ownCloud %s or higher is required." : "ownCloud %s or higher is required.", "ownCloud %s or lower is required." : "ownCloud %s or lower is required.", + "You are not allowed to share %s" : "You are not allowed to share %s", + "Cannot increase permissions of %s" : "Cannot increase permissions of %s", + "Expiration date is in the past" : "Expiration date is in the past", + "Cannot set expiration date more than %s days in the future" : "Cannot set expiration date more than %s days in the future", "Help" : "Help", "Personal" : "Personal", "Users" : "Users", diff --git a/lib/l10n/es.js b/lib/l10n/es.js index b2b04e15f3c..dfb9f4cff2e 100644 --- a/lib/l10n/es.js +++ b/lib/l10n/es.js @@ -7,10 +7,6 @@ OC.L10N.register( "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Esto puede solucionarse fácilmente %sotorgándole permisos de escritura al directorio de configuración%s.", "Sample configuration detected" : "Ejemplo de configuración detectado", "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 el ejemplo de configuración ha sido copiado. Esto puede arruinar su instalación y es un caso para el que no se brinda soporte. Lea la documentación antes de hacer cambios en config.php", - "You are not allowed to share %s" : "Usted no está autorizado para compartir %s", - "Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s", - "Expiration date is in the past" : "Ha pasado la fecha de caducidad", - "Cannot set expiration date more than %s days in the future" : "No se puede fijar la fecha de caducidad más de %s días en el futuro.", "PHP %s or higher is required." : "Se requiere PHP %s o superior.", "PHP with a version lower than %s is required." : "PHP con una versión inferior que %s la requerida.", "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s", @@ -21,11 +17,16 @@ OC.L10N.register( "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s", "ownCloud %s or higher is required." : "Se requiere ownCloud %s o superior.", "ownCloud %s or lower is required." : "Se requiere ownCloud %s o una versión inferior.", + "You are not allowed to share %s" : "Usted no está autorizado para compartir %s", + "Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s", + "Expiration date is in the past" : "Ha pasado la fecha de caducidad", + "Cannot set expiration date more than %s days in the future" : "No se puede fijar la fecha de caducidad más de %s días en el futuro.", "Help" : "Ayuda", "Personal" : "Personal", "Users" : "Usuarios", "Admin" : "Administración", "Recommended" : "Recomendado", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "La app \"%s\" no puede ser instalada debido a que no se puede leer la información de la app.", "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "La App \"%s\" no puede ser instalada porque no es compatible con esta versión de ownCloud.", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La app \"%s\" no puede instalarse porque las siguientes dependencias no están cumplimentadas: %s", "No app name specified" : "No se ha especificado nombre de la aplicación", @@ -60,6 +61,7 @@ OC.L10N.register( "Archives of type %s are not supported" : "Los ficheros de tipo %s no son soportados", "Failed to open archive when installing app" : "Falló la apertura ded fichero mientras se instalaba la aplicación", "App does not provide an info.xml file" : "La aplicación no suministra un fichero info.xml", + "App cannot be installed because appinfo file cannot be read." : "La app no puede ser instalada debido a que no se puede leer la información de la app.", "Signature could not get checked. Please contact the app developer and check your admin screen." : "La firma no pudo ser evaluada. Por favor, contacte con el desarrollador de la aplicación y compruebe su pantalla de administración.", "App can't be installed because of not allowed code in the App" : "La aplicación no puede ser instalada por tener código no autorizado en la aplicación", "App can't be installed because it is not compatible with this version of ownCloud" : "La aplicación no se puede instalar porque no es compatible con esta versión de ownCloud", @@ -69,6 +71,7 @@ OC.L10N.register( "Authentication error" : "Error de autenticación", "Token expired. Please reload page." : "Token expirado. Por favor, recarge la página.", "Unknown user" : "Usuario desconocido", + "%s enter the database username and name." : "%s introduzca el nombre de usuario y la contraseña de la BBDD.", "%s enter the database username." : "%s ingresar el usuario de la base de datos.", "%s enter the database name." : "%s ingresar el nombre de la base de datos", "%s you may not use dots in the database name" : "%s puede utilizar puntos en el nombre de la base de datos", diff --git a/lib/l10n/es.json b/lib/l10n/es.json index db87962de70..0b8cfd04344 100644 --- a/lib/l10n/es.json +++ b/lib/l10n/es.json @@ -5,10 +5,6 @@ "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Esto puede solucionarse fácilmente %sotorgándole permisos de escritura al directorio de configuración%s.", "Sample configuration detected" : "Ejemplo de configuración detectado", "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 el ejemplo de configuración ha sido copiado. Esto puede arruinar su instalación y es un caso para el que no se brinda soporte. Lea la documentación antes de hacer cambios en config.php", - "You are not allowed to share %s" : "Usted no está autorizado para compartir %s", - "Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s", - "Expiration date is in the past" : "Ha pasado la fecha de caducidad", - "Cannot set expiration date more than %s days in the future" : "No se puede fijar la fecha de caducidad más de %s días en el futuro.", "PHP %s or higher is required." : "Se requiere PHP %s o superior.", "PHP with a version lower than %s is required." : "PHP con una versión inferior que %s la requerida.", "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s", @@ -19,11 +15,16 @@ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s", "ownCloud %s or higher is required." : "Se requiere ownCloud %s o superior.", "ownCloud %s or lower is required." : "Se requiere ownCloud %s o una versión inferior.", + "You are not allowed to share %s" : "Usted no está autorizado para compartir %s", + "Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s", + "Expiration date is in the past" : "Ha pasado la fecha de caducidad", + "Cannot set expiration date more than %s days in the future" : "No se puede fijar la fecha de caducidad más de %s días en el futuro.", "Help" : "Ayuda", "Personal" : "Personal", "Users" : "Usuarios", "Admin" : "Administración", "Recommended" : "Recomendado", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "La app \"%s\" no puede ser instalada debido a que no se puede leer la información de la app.", "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "La App \"%s\" no puede ser instalada porque no es compatible con esta versión de ownCloud.", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La app \"%s\" no puede instalarse porque las siguientes dependencias no están cumplimentadas: %s", "No app name specified" : "No se ha especificado nombre de la aplicación", @@ -58,6 +59,7 @@ "Archives of type %s are not supported" : "Los ficheros de tipo %s no son soportados", "Failed to open archive when installing app" : "Falló la apertura ded fichero mientras se instalaba la aplicación", "App does not provide an info.xml file" : "La aplicación no suministra un fichero info.xml", + "App cannot be installed because appinfo file cannot be read." : "La app no puede ser instalada debido a que no se puede leer la información de la app.", "Signature could not get checked. Please contact the app developer and check your admin screen." : "La firma no pudo ser evaluada. Por favor, contacte con el desarrollador de la aplicación y compruebe su pantalla de administración.", "App can't be installed because of not allowed code in the App" : "La aplicación no puede ser instalada por tener código no autorizado en la aplicación", "App can't be installed because it is not compatible with this version of ownCloud" : "La aplicación no se puede instalar porque no es compatible con esta versión de ownCloud", @@ -67,6 +69,7 @@ "Authentication error" : "Error de autenticación", "Token expired. Please reload page." : "Token expirado. Por favor, recarge la página.", "Unknown user" : "Usuario desconocido", + "%s enter the database username and name." : "%s introduzca el nombre de usuario y la contraseña de la BBDD.", "%s enter the database username." : "%s ingresar el usuario de la base de datos.", "%s enter the database name." : "%s ingresar el nombre de la base de datos", "%s you may not use dots in the database name" : "%s puede utilizar puntos en el nombre de la base de datos", diff --git a/lib/l10n/sl.js b/lib/l10n/sl.js index 47511d0c49e..aadb42d3fa5 100644 --- a/lib/l10n/sl.js +++ b/lib/l10n/sl.js @@ -7,10 +7,6 @@ OC.L10N.register( "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Napako je mogoče odpraviti z %sdodelitvijo dovoljenja spletnemu strežniku za pisanje v nastavitveno mapo%s.", "Sample configuration detected" : "Zaznana je neustrezna preizkusna nastavitev", "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" : "Zaznano je, da je bila v sistem kopirana datoteka z enostavno nastavitvijo. To lahko vpliva na namestitev in zato možnost ni podprta. Pred spremembami datoteke config.php si natančno preberite dokumentacijo.", - "You are not allowed to share %s" : "Omogočanje souporabe %s brez ustreznih dovoljenj ni mogoče.", - "Cannot increase permissions of %s" : "Ni mogoče povečati dovoljen %s", - "Expiration date is in the past" : "Datum preteka je že mimo!", - "Cannot set expiration date more than %s days in the future" : "Datuma pretaka ni mogoče nastaviti za več kot %s dni v prihodnosti.", "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 manj kot %s.", "Following databases are supported: %s" : "Podprte so navedene podatkovne zbirke: %s", @@ -21,11 +17,18 @@ OC.L10N.register( "Following platforms are supported: %s" : "Podprta so okolja: %s", "ownCloud %s or higher is required." : "Zahtevana je različica ownCloud %s ali višja.", "ownCloud %s or lower is required." : "Zahtevana je različica ownCloud %s ali nižja.", + "You are not allowed to share %s" : "Omogočanje souporabe %s brez ustreznih dovoljenj ni mogoče.", + "Cannot increase permissions of %s" : "Ni mogoče povečati dovoljen %s", + "Expiration date is in the past" : "Datum preteka je že mimo!", + "Cannot set expiration date more than %s days in the future" : "Datuma pretaka ni mogoče nastaviti za več kot %s dni v prihodnosti.", "Help" : "Pomoč", "Personal" : "Osebno", "Users" : "Uporabniki", "Admin" : "Skrbništvo", "Recommended" : "Priporočljivo", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "Programa \\\"%s\\\" ni mogoče namestiti, ker ni mogoče brati datoteke appinfo.", + "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "Programa \"%s\" ni mogoče namestiti, ker ni skladen s trenutno nameščeno različico oblaka ownCloud.", + "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Programa \"%s\" ni mogoče namestiti zaradi nerešenih odvisnosti: %s", "No app name specified" : "Ni podanega imena programa", "Unknown filetype" : "Neznana vrsta datoteke", "Invalid image" : "Neveljavna slika", diff --git a/lib/l10n/sl.json b/lib/l10n/sl.json index be488a84000..0fc989dd17b 100644 --- a/lib/l10n/sl.json +++ b/lib/l10n/sl.json @@ -5,10 +5,6 @@ "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Napako je mogoče odpraviti z %sdodelitvijo dovoljenja spletnemu strežniku za pisanje v nastavitveno mapo%s.", "Sample configuration detected" : "Zaznana je neustrezna preizkusna nastavitev", "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" : "Zaznano je, da je bila v sistem kopirana datoteka z enostavno nastavitvijo. To lahko vpliva na namestitev in zato možnost ni podprta. Pred spremembami datoteke config.php si natančno preberite dokumentacijo.", - "You are not allowed to share %s" : "Omogočanje souporabe %s brez ustreznih dovoljenj ni mogoče.", - "Cannot increase permissions of %s" : "Ni mogoče povečati dovoljen %s", - "Expiration date is in the past" : "Datum preteka je že mimo!", - "Cannot set expiration date more than %s days in the future" : "Datuma pretaka ni mogoče nastaviti za več kot %s dni v prihodnosti.", "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 manj kot %s.", "Following databases are supported: %s" : "Podprte so navedene podatkovne zbirke: %s", @@ -19,11 +15,18 @@ "Following platforms are supported: %s" : "Podprta so okolja: %s", "ownCloud %s or higher is required." : "Zahtevana je različica ownCloud %s ali višja.", "ownCloud %s or lower is required." : "Zahtevana je različica ownCloud %s ali nižja.", + "You are not allowed to share %s" : "Omogočanje souporabe %s brez ustreznih dovoljenj ni mogoče.", + "Cannot increase permissions of %s" : "Ni mogoče povečati dovoljen %s", + "Expiration date is in the past" : "Datum preteka je že mimo!", + "Cannot set expiration date more than %s days in the future" : "Datuma pretaka ni mogoče nastaviti za več kot %s dni v prihodnosti.", "Help" : "Pomoč", "Personal" : "Osebno", "Users" : "Uporabniki", "Admin" : "Skrbništvo", "Recommended" : "Priporočljivo", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "Programa \\\"%s\\\" ni mogoče namestiti, ker ni mogoče brati datoteke appinfo.", + "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "Programa \"%s\" ni mogoče namestiti, ker ni skladen s trenutno nameščeno različico oblaka ownCloud.", + "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Programa \"%s\" ni mogoče namestiti zaradi nerešenih odvisnosti: %s", "No app name specified" : "Ni podanega imena programa", "Unknown filetype" : "Neznana vrsta datoteke", "Invalid image" : "Neveljavna slika", diff --git a/lib/private/cache/cappedmemorycache.php b/lib/private/Cache/CappedMemoryCache.php index e3efbf76a23..e3efbf76a23 100644 --- a/lib/private/cache/cappedmemorycache.php +++ b/lib/private/Cache/CappedMemoryCache.php diff --git a/lib/private/cache/file.php b/lib/private/Cache/File.php index 989e05275b7..989e05275b7 100644 --- a/lib/private/cache/file.php +++ b/lib/private/Cache/File.php diff --git a/lib/private/command/asyncbus.php b/lib/private/Command/AsyncBus.php index eb692f9a8fb..eb692f9a8fb 100644 --- a/lib/private/command/asyncbus.php +++ b/lib/private/Command/AsyncBus.php diff --git a/lib/private/command/callablejob.php b/lib/private/Command/CallableJob.php index acfeb83d606..acfeb83d606 100644 --- a/lib/private/command/callablejob.php +++ b/lib/private/Command/CallableJob.php diff --git a/lib/private/command/closurejob.php b/lib/private/Command/ClosureJob.php index be2b5f0a4ba..be2b5f0a4ba 100644 --- a/lib/private/command/closurejob.php +++ b/lib/private/Command/ClosureJob.php diff --git a/lib/private/command/commandjob.php b/lib/private/Command/CommandJob.php index 5d613c0305b..5d613c0305b 100644 --- a/lib/private/command/commandjob.php +++ b/lib/private/Command/CommandJob.php diff --git a/lib/private/command/fileaccess.php b/lib/private/Command/FileAccess.php index 6fe3e111aef..6fe3e111aef 100644 --- a/lib/private/command/fileaccess.php +++ b/lib/private/Command/FileAccess.php diff --git a/lib/private/command/queuebus.php b/lib/private/Command/QueueBus.php index be4ee589e6f..be4ee589e6f 100644 --- a/lib/private/command/queuebus.php +++ b/lib/private/Command/QueueBus.php diff --git a/lib/private/comments/comment.php b/lib/private/Comments/Comment.php index 60663d61578..60663d61578 100644 --- a/lib/private/comments/comment.php +++ b/lib/private/Comments/Comment.php diff --git a/lib/private/comments/manager.php b/lib/private/Comments/Manager.php index b986c8c51f9..b986c8c51f9 100644 --- a/lib/private/comments/manager.php +++ b/lib/private/Comments/Manager.php diff --git a/lib/private/comments/managerfactory.php b/lib/private/Comments/ManagerFactory.php index 044463d1e96..044463d1e96 100644 --- a/lib/private/comments/managerfactory.php +++ b/lib/private/Comments/ManagerFactory.php diff --git a/lib/private/db/adapter.php b/lib/private/DB/Adapter.php index 9522f768c88..9522f768c88 100644 --- a/lib/private/db/adapter.php +++ b/lib/private/DB/Adapter.php diff --git a/lib/private/db/adaptermysql.php b/lib/private/DB/AdapterMySQL.php index ab87c589747..ab87c589747 100644 --- a/lib/private/db/adaptermysql.php +++ b/lib/private/DB/AdapterMySQL.php diff --git a/lib/private/db/adapteroci8.php b/lib/private/DB/AdapterOCI8.php index 970d3eefa4d..970d3eefa4d 100644 --- a/lib/private/db/adapteroci8.php +++ b/lib/private/DB/AdapterOCI8.php diff --git a/lib/private/db/adapterpgsql.php b/lib/private/DB/AdapterPgSql.php index a7d9377a0bf..a7d9377a0bf 100644 --- a/lib/private/db/adapterpgsql.php +++ b/lib/private/DB/AdapterPgSql.php diff --git a/lib/private/db/adaptersqlite.php b/lib/private/DB/AdapterSqlite.php index d7769238abc..d7769238abc 100644 --- a/lib/private/db/adaptersqlite.php +++ b/lib/private/DB/AdapterSqlite.php diff --git a/lib/private/db/connection.php b/lib/private/DB/Connection.php index 7904fab0726..7904fab0726 100644 --- a/lib/private/db/connection.php +++ b/lib/private/DB/Connection.php diff --git a/lib/private/db/connectionfactory.php b/lib/private/DB/ConnectionFactory.php index 0856d8d19c0..0856d8d19c0 100644 --- a/lib/private/db/connectionfactory.php +++ b/lib/private/DB/ConnectionFactory.php diff --git a/lib/private/db/mdb2schemamanager.php b/lib/private/DB/MDB2SchemaManager.php index f73f6b4351a..f73f6b4351a 100644 --- a/lib/private/db/mdb2schemamanager.php +++ b/lib/private/DB/MDB2SchemaManager.php diff --git a/lib/private/db/mdb2schemareader.php b/lib/private/DB/MDB2SchemaReader.php index 375fec185cb..375fec185cb 100644 --- a/lib/private/db/mdb2schemareader.php +++ b/lib/private/DB/MDB2SchemaReader.php diff --git a/lib/private/db/mdb2schemawriter.php b/lib/private/DB/MDB2SchemaWriter.php index 7dc3bd223a7..7dc3bd223a7 100644 --- a/lib/private/db/mdb2schemawriter.php +++ b/lib/private/DB/MDB2SchemaWriter.php diff --git a/lib/private/db/migrationexception.php b/lib/private/DB/MigrationException.php index 57e4c5b8334..57e4c5b8334 100644 --- a/lib/private/db/migrationexception.php +++ b/lib/private/DB/MigrationException.php diff --git a/lib/private/db/migrator.php b/lib/private/DB/Migrator.php index 8b8a34d9865..8b8a34d9865 100644 --- a/lib/private/db/migrator.php +++ b/lib/private/DB/Migrator.php diff --git a/lib/private/db/mysqlmigrator.php b/lib/private/DB/MySQLMigrator.php index 1b3f70a817d..1b3f70a817d 100644 --- a/lib/private/db/mysqlmigrator.php +++ b/lib/private/DB/MySQLMigrator.php diff --git a/lib/private/db/nocheckmigrator.php b/lib/private/DB/NoCheckMigrator.php index 23afae11816..23afae11816 100644 --- a/lib/private/db/nocheckmigrator.php +++ b/lib/private/DB/NoCheckMigrator.php diff --git a/lib/private/db/ocsqliteplatform.php b/lib/private/DB/OCSqlitePlatform.php index fe68bc3cc91..fe68bc3cc91 100644 --- a/lib/private/db/ocsqliteplatform.php +++ b/lib/private/DB/OCSqlitePlatform.php diff --git a/lib/private/db/oracleconnection.php b/lib/private/DB/OracleConnection.php index a95f37a8e6c..a95f37a8e6c 100644 --- a/lib/private/db/oracleconnection.php +++ b/lib/private/DB/OracleConnection.php diff --git a/lib/private/db/oraclemigrator.php b/lib/private/DB/OracleMigrator.php index ceb89cf64d4..ceb89cf64d4 100644 --- a/lib/private/db/oraclemigrator.php +++ b/lib/private/DB/OracleMigrator.php diff --git a/lib/private/db/pgsqltools.php b/lib/private/DB/PgSqlTools.php index e9e507551e6..e9e507551e6 100644 --- a/lib/private/db/pgsqltools.php +++ b/lib/private/DB/PgSqlTools.php diff --git a/lib/private/db/querybuilder/compositeexpression.php b/lib/private/DB/QueryBuilder/CompositeExpression.php index 927dfe38378..927dfe38378 100644 --- a/lib/private/db/querybuilder/compositeexpression.php +++ b/lib/private/DB/QueryBuilder/CompositeExpression.php diff --git a/lib/private/db/querybuilder/expressionbuilder/expressionbuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php index ce98816c42d..ce98816c42d 100644 --- a/lib/private/db/querybuilder/expressionbuilder/expressionbuilder.php +++ b/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php diff --git a/lib/private/db/querybuilder/expressionbuilder/mysqlexpressionbuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/MySqlExpressionBuilder.php index 0d34787d26a..0d34787d26a 100644 --- a/lib/private/db/querybuilder/expressionbuilder/mysqlexpressionbuilder.php +++ b/lib/private/DB/QueryBuilder/ExpressionBuilder/MySqlExpressionBuilder.php diff --git a/lib/private/db/querybuilder/expressionbuilder/ociexpressionbuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php index 5d615ae52e8..5d615ae52e8 100644 --- a/lib/private/db/querybuilder/expressionbuilder/ociexpressionbuilder.php +++ b/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php diff --git a/lib/private/db/querybuilder/expressionbuilder/pgsqlexpressionbuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php index a8f1af87a45..a8f1af87a45 100644 --- a/lib/private/db/querybuilder/expressionbuilder/pgsqlexpressionbuilder.php +++ b/lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php diff --git a/lib/private/db/querybuilder/literal.php b/lib/private/DB/QueryBuilder/Literal.php index 0cc96ab48b4..0cc96ab48b4 100644 --- a/lib/private/db/querybuilder/literal.php +++ b/lib/private/DB/QueryBuilder/Literal.php diff --git a/lib/private/db/querybuilder/parameter.php b/lib/private/DB/QueryBuilder/Parameter.php index 1c233c83f1d..1c233c83f1d 100644 --- a/lib/private/db/querybuilder/parameter.php +++ b/lib/private/DB/QueryBuilder/Parameter.php diff --git a/lib/private/db/querybuilder/querybuilder.php b/lib/private/DB/QueryBuilder/QueryBuilder.php index bb463e43a75..bb463e43a75 100644 --- a/lib/private/db/querybuilder/querybuilder.php +++ b/lib/private/DB/QueryBuilder/QueryBuilder.php diff --git a/lib/private/db/querybuilder/queryfunction.php b/lib/private/DB/QueryBuilder/QueryFunction.php index ac6d73f3cbf..ac6d73f3cbf 100644 --- a/lib/private/db/querybuilder/queryfunction.php +++ b/lib/private/DB/QueryBuilder/QueryFunction.php diff --git a/lib/private/db/querybuilder/quotehelper.php b/lib/private/DB/QueryBuilder/QuoteHelper.php index fda243a3786..fda243a3786 100644 --- a/lib/private/db/querybuilder/quotehelper.php +++ b/lib/private/DB/QueryBuilder/QuoteHelper.php diff --git a/lib/private/db/sqlitemigrator.php b/lib/private/DB/SQLiteMigrator.php index 8ea32581011..8ea32581011 100644 --- a/lib/private/db/sqlitemigrator.php +++ b/lib/private/DB/SQLiteMigrator.php diff --git a/lib/private/db/sqlitesessioninit.php b/lib/private/DB/SQLiteSessionInit.php index 0683c47d08e..0683c47d08e 100644 --- a/lib/private/db/sqlitesessioninit.php +++ b/lib/private/DB/SQLiteSessionInit.php diff --git a/lib/private/integritycheck/checker.php b/lib/private/IntegrityCheck/Checker.php index d7867936887..c3d6aefb829 100644 --- a/lib/private/integritycheck/checker.php +++ b/lib/private/IntegrityCheck/Checker.php @@ -25,7 +25,7 @@ use OC\IntegrityCheck\Exceptions\InvalidSignatureException; use OC\IntegrityCheck\Helpers\AppLocator; use OC\IntegrityCheck\Helpers\EnvironmentHelper; use OC\IntegrityCheck\Helpers\FileAccessHelper; -use OC\Integritycheck\Iterator\ExcludeFileByNameFilterIterator; +use OC\IntegrityCheck\Iterator\ExcludeFileByNameFilterIterator; use OC\IntegrityCheck\Iterator\ExcludeFoldersByPathFilterIterator; use OCP\App\IAppManager; use OCP\ICache; diff --git a/lib/private/integritycheck/exceptions/invalidsignatureexception.php b/lib/private/IntegrityCheck/Exceptions/InvalidSignatureException.php index 521171642b2..521171642b2 100644 --- a/lib/private/integritycheck/exceptions/invalidsignatureexception.php +++ b/lib/private/IntegrityCheck/Exceptions/InvalidSignatureException.php diff --git a/lib/private/integritycheck/helpers/applocator.php b/lib/private/IntegrityCheck/Helpers/AppLocator.php index af22fca1fe4..af22fca1fe4 100644 --- a/lib/private/integritycheck/helpers/applocator.php +++ b/lib/private/IntegrityCheck/Helpers/AppLocator.php diff --git a/lib/private/integritycheck/helpers/environmenthelper.php b/lib/private/IntegrityCheck/Helpers/EnvironmentHelper.php index f56f07486c2..f56f07486c2 100644 --- a/lib/private/integritycheck/helpers/environmenthelper.php +++ b/lib/private/IntegrityCheck/Helpers/EnvironmentHelper.php diff --git a/lib/private/integritycheck/helpers/fileaccesshelper.php b/lib/private/IntegrityCheck/Helpers/FileAccessHelper.php index f0bf6576d35..f0bf6576d35 100644 --- a/lib/private/integritycheck/helpers/fileaccesshelper.php +++ b/lib/private/IntegrityCheck/Helpers/FileAccessHelper.php diff --git a/lib/private/integritycheck/iterator/excludefilebynamefilteriterator.php b/lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php index 51850852cbd..51850852cbd 100644 --- a/lib/private/integritycheck/iterator/excludefilebynamefilteriterator.php +++ b/lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php diff --git a/lib/private/integritycheck/iterator/excludefoldersbypathfilteriterator.php b/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php index 1082e97c296..1082e97c296 100644 --- a/lib/private/integritycheck/iterator/excludefoldersbypathfilteriterator.php +++ b/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php diff --git a/lib/private/memcache/apc.php b/lib/private/Memcache/APC.php index 2354ad07749..2354ad07749 100644 --- a/lib/private/memcache/apc.php +++ b/lib/private/Memcache/APC.php diff --git a/lib/private/memcache/apcu.php b/lib/private/Memcache/APCu.php index 350ce913ed8..350ce913ed8 100644 --- a/lib/private/memcache/apcu.php +++ b/lib/private/Memcache/APCu.php diff --git a/lib/private/memcache/arraycache.php b/lib/private/Memcache/ArrayCache.php index 837f888a307..837f888a307 100644 --- a/lib/private/memcache/arraycache.php +++ b/lib/private/Memcache/ArrayCache.php diff --git a/lib/private/memcache/cadtrait.php b/lib/private/Memcache/CADTrait.php index d44d98cba0b..d44d98cba0b 100644 --- a/lib/private/memcache/cadtrait.php +++ b/lib/private/Memcache/CADTrait.php diff --git a/lib/private/memcache/castrait.php b/lib/private/Memcache/CASTrait.php index 43253fc966b..43253fc966b 100644 --- a/lib/private/memcache/castrait.php +++ b/lib/private/Memcache/CASTrait.php diff --git a/lib/private/memcache/cache.php b/lib/private/Memcache/Cache.php index 63d20721aac..63d20721aac 100644 --- a/lib/private/memcache/cache.php +++ b/lib/private/Memcache/Cache.php diff --git a/lib/private/memcache/factory.php b/lib/private/Memcache/Factory.php index a005f319b3e..a005f319b3e 100644 --- a/lib/private/memcache/factory.php +++ b/lib/private/Memcache/Factory.php diff --git a/lib/private/memcache/memcached.php b/lib/private/Memcache/Memcached.php index a30f9da7ed7..a30f9da7ed7 100644 --- a/lib/private/memcache/memcached.php +++ b/lib/private/Memcache/Memcached.php diff --git a/lib/private/memcache/nullcache.php b/lib/private/Memcache/NullCache.php index c490ca7e03c..c490ca7e03c 100644 --- a/lib/private/memcache/nullcache.php +++ b/lib/private/Memcache/NullCache.php diff --git a/lib/private/memcache/redis.php b/lib/private/Memcache/Redis.php index b3444a2b4e9..b3444a2b4e9 100644 --- a/lib/private/memcache/redis.php +++ b/lib/private/Memcache/Redis.php diff --git a/lib/private/memcache/xcache.php b/lib/private/Memcache/XCache.php index e80901faadc..e80901faadc 100644 --- a/lib/private/memcache/xcache.php +++ b/lib/private/Memcache/XCache.php diff --git a/lib/private/notification/action.php b/lib/private/Notification/Action.php index deac6807653..deac6807653 100644 --- a/lib/private/notification/action.php +++ b/lib/private/Notification/Action.php diff --git a/lib/private/notification/manager.php b/lib/private/Notification/Manager.php index 3ddc9b21161..3ddc9b21161 100644 --- a/lib/private/notification/manager.php +++ b/lib/private/Notification/Manager.php diff --git a/lib/private/notification/notification.php b/lib/private/Notification/Notification.php index db0a76a7c32..db0a76a7c32 100644 --- a/lib/private/notification/notification.php +++ b/lib/private/Notification/Notification.php diff --git a/lib/private/security/csp/contentsecuritypolicy.php b/lib/private/Security/CSP/ContentSecurityPolicy.php index 25eacfab1d6..25eacfab1d6 100644 --- a/lib/private/security/csp/contentsecuritypolicy.php +++ b/lib/private/Security/CSP/ContentSecurityPolicy.php diff --git a/lib/private/security/csp/contentsecuritypolicymanager.php b/lib/private/Security/CSP/ContentSecurityPolicyManager.php index 760cd36e56b..760cd36e56b 100644 --- a/lib/private/security/csp/contentsecuritypolicymanager.php +++ b/lib/private/Security/CSP/ContentSecurityPolicyManager.php diff --git a/lib/private/security/csrf/csrftoken.php b/lib/private/Security/CSRF/CsrfToken.php index 4524d0db6e6..4524d0db6e6 100644 --- a/lib/private/security/csrf/csrftoken.php +++ b/lib/private/Security/CSRF/CsrfToken.php diff --git a/lib/private/security/csrf/csrftokengenerator.php b/lib/private/Security/CSRF/CsrfTokenGenerator.php index 6ea71636d22..6ea71636d22 100644 --- a/lib/private/security/csrf/csrftokengenerator.php +++ b/lib/private/Security/CSRF/CsrfTokenGenerator.php diff --git a/lib/private/security/csrf/csrftokenmanager.php b/lib/private/Security/CSRF/CsrfTokenManager.php index 8d1bf5c0819..8d1bf5c0819 100644 --- a/lib/private/security/csrf/csrftokenmanager.php +++ b/lib/private/Security/CSRF/CsrfTokenManager.php diff --git a/lib/private/security/csrf/tokenstorage/sessionstorage.php b/lib/private/Security/CSRF/TokenStorage/SessionStorage.php index e1c8c96e920..e1c8c96e920 100644 --- a/lib/private/security/csrf/tokenstorage/sessionstorage.php +++ b/lib/private/Security/CSRF/TokenStorage/SessionStorage.php diff --git a/lib/private/security/certificate.php b/lib/private/Security/Certificate.php index 54486ff51fe..54486ff51fe 100644 --- a/lib/private/security/certificate.php +++ b/lib/private/Security/Certificate.php diff --git a/lib/private/security/certificatemanager.php b/lib/private/Security/CertificateManager.php index f4932ca568e..f4932ca568e 100644 --- a/lib/private/security/certificatemanager.php +++ b/lib/private/Security/CertificateManager.php diff --git a/lib/private/security/credentialsmanager.php b/lib/private/Security/CredentialsManager.php index d4104dbe712..d4104dbe712 100644 --- a/lib/private/security/credentialsmanager.php +++ b/lib/private/Security/CredentialsManager.php diff --git a/lib/private/security/crypto.php b/lib/private/Security/Crypto.php index 3c3ffb47398..3c3ffb47398 100644 --- a/lib/private/security/crypto.php +++ b/lib/private/Security/Crypto.php diff --git a/lib/private/security/hasher.php b/lib/private/Security/Hasher.php index a8b81aa60eb..a8b81aa60eb 100644 --- a/lib/private/security/hasher.php +++ b/lib/private/Security/Hasher.php diff --git a/lib/private/security/securerandom.php b/lib/private/Security/SecureRandom.php index 45cb3f17ee4..45cb3f17ee4 100644 --- a/lib/private/security/securerandom.php +++ b/lib/private/Security/SecureRandom.php diff --git a/lib/private/security/trusteddomainhelper.php b/lib/private/Security/TrustedDomainHelper.php index 409628677a7..409628677a7 100644 --- a/lib/private/security/trusteddomainhelper.php +++ b/lib/private/Security/TrustedDomainHelper.php diff --git a/lib/private/Server.php b/lib/private/Server.php index b29f4f9000c..d37edc4f45f 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -74,6 +74,7 @@ use OC\Security\SecureRandom; use OC\Security\TrustedDomainHelper; use OC\Session\CryptoWrapper; use OC\Tagging\TagMapper; +use OCP\IL10N; use OCP\IServerContainer; use OCP\Security\IContentSecurityPolicyManager; use Symfony\Component\EventDispatcher\EventDispatcher; @@ -857,7 +858,7 @@ class Server extends ServerContainer implements IServerContainer { * * @param string $app appid * @param string $lang - * @return \OC_L10N + * @return IL10N */ public function getL10N($app, $lang = null) { return $this->getL10NFactory()->get($app, $lang); diff --git a/lib/private/session/cryptosessiondata.php b/lib/private/Session/CryptoSessionData.php index f6c585c1611..f6c585c1611 100644 --- a/lib/private/session/cryptosessiondata.php +++ b/lib/private/Session/CryptoSessionData.php diff --git a/lib/private/session/cryptowrapper.php b/lib/private/Session/CryptoWrapper.php index f1819b31b89..f1819b31b89 100644 --- a/lib/private/session/cryptowrapper.php +++ b/lib/private/Session/CryptoWrapper.php diff --git a/lib/private/session/internal.php b/lib/private/Session/Internal.php index 09175bf1f2f..09175bf1f2f 100644 --- a/lib/private/session/internal.php +++ b/lib/private/Session/Internal.php diff --git a/lib/private/session/memory.php b/lib/private/Session/Memory.php index 777458a9aa5..777458a9aa5 100644 --- a/lib/private/session/memory.php +++ b/lib/private/Session/Memory.php diff --git a/lib/private/session/session.php b/lib/private/Session/Session.php index 198d0049956..198d0049956 100644 --- a/lib/private/session/session.php +++ b/lib/private/Session/Session.php diff --git a/lib/private/Share20/DefaultShareProvider.php b/lib/private/Share20/DefaultShareProvider.php index b1f3b4dab83..f0de39fdad3 100644 --- a/lib/private/Share20/DefaultShareProvider.php +++ b/lib/private/Share20/DefaultShareProvider.php @@ -910,4 +910,42 @@ class DefaultShareProvider implements IShareProvider { ->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($gid))); $qb->execute(); } + + /** + * Delete custom group shares to this group for this user + * + * @param string $uid + * @param string $gid + */ + public function userDeletedFromGroup($uid, $gid) { + /* + * Get all group shares + */ + $qb = $this->dbConn->getQueryBuilder(); + $qb->select('id') + ->from('share') + ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_GROUP))) + ->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($gid))); + + $cursor = $qb->execute(); + $ids = []; + while($row = $cursor->fetch()) { + $ids[] = (int)$row['id']; + } + $cursor->closeCursor(); + + if (!empty($ids)) { + $chunks = array_chunk($ids, 100); + foreach ($chunks as $chunk) { + /* + * Delete all special shares wit this users for the found group shares + */ + $qb->delete('share') + ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(self::SHARE_TYPE_USERGROUP))) + ->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($uid))) + ->andWhere($qb->expr()->in('parent', $qb->createNamedParameter($chunk, IQueryBuilder::PARAM_INT_ARRAY))); + $qb->execute(); + } + } + } } diff --git a/lib/private/Share20/Hooks.php b/lib/private/Share20/Hooks.php index b391ffce8d5..f29114a1b5d 100644 --- a/lib/private/Share20/Hooks.php +++ b/lib/private/Share20/Hooks.php @@ -28,4 +28,8 @@ class Hooks { public static function post_deleteGroup($arguments) { \OC::$server->getShareManager()->groupDeleted($arguments['gid']); } + + public static function post_removeFromGroup($arguments) { + \OC::$server->getShareManager()->userDeletedFromGroup($arguments['uid'], $arguments['gid']); + } } diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php index 6f2efe167d4..1ec25750cfe 100644 --- a/lib/private/Share20/Manager.php +++ b/lib/private/Share20/Manager.php @@ -1057,6 +1057,14 @@ class Manager implements IManager { } /** + * @inheritdoc + */ + public function userDeletedFromGroup($uid, $gid) { + $provider = $this->factory->getProviderForType(\OCP\Share::SHARE_TYPE_GROUP); + $provider->userDeletedFromGroup($uid, $gid); + } + + /** * Get access list to a path. This means * all the users and groups that can access a given path. * diff --git a/lib/private/api.php b/lib/private/api.php index 12a78f1424b..bab879c95f8 100644 --- a/lib/private/api.php +++ b/lib/private/api.php @@ -179,7 +179,7 @@ class OC_API { $response = self::mergeResponses($responses); $format = self::requestedFormat(); if (self::$logoutRequired) { - OC_User::logout(); + \OC::$server->getUserSession()->logout(); } self::respond($response, $format); diff --git a/lib/private/appframework/http/request.php b/lib/private/appframework/http/request.php index c8525d1d141..7cd8cedcfdd 100644 --- a/lib/private/appframework/http/request.php +++ b/lib/private/appframework/http/request.php @@ -368,7 +368,7 @@ class Request implements \ArrayAccess, \Countable, IRequest { /** * Shortcut for getting cookie variables * @param string $key the key that will be taken from the $_COOKIE array - * @return array the value in the $_COOKIE element + * @return string the value in the $_COOKIE element */ public function getCookie($key) { return isset($this->cookies[$key]) ? $this->cookies[$key] : null; diff --git a/lib/private/appframework/middleware/security/securitymiddleware.php b/lib/private/appframework/middleware/security/securitymiddleware.php index 75bcc29a926..4afd29cd060 100644 --- a/lib/private/appframework/middleware/security/securitymiddleware.php +++ b/lib/private/appframework/middleware/security/securitymiddleware.php @@ -192,9 +192,12 @@ class SecurityMiddleware extends Middleware { ); } else { if($exception instanceof NotLoggedInException) { - // TODO: replace with link to route - $url = $this->urlGenerator->getAbsoluteURL('index.php'); - $url .= '?redirect_url=' . urlencode($this->request->server['REQUEST_URI']); + $url = $this->urlGenerator->linkToRoute( + 'core.login.showLoginForm', + [ + 'redirect_url' => urlencode($this->request->server['REQUEST_URI']), + ] + ); $response = new RedirectResponse($url); } else { $response = new TemplateResponse('core', '403', ['file' => $exception->getMessage()], 'guest'); diff --git a/lib/private/files/cache/scanner.php b/lib/private/files/cache/scanner.php index 0a207de7b64..5ca32548fe0 100644 --- a/lib/private/files/cache/scanner.php +++ b/lib/private/files/cache/scanner.php @@ -448,26 +448,38 @@ class Scanner extends BasicEmitter implements IScanner { * walk over any folders that are not fully scanned yet and scan them */ public function backgroundScan() { - $lastPath = null; - while (($path = $this->cache->getIncomplete()) !== false && $path !== $lastPath) { - try { - $this->scan($path, self::SCAN_RECURSIVE, self::REUSE_ETAG); - \OC_Hook::emit('Scanner', 'correctFolderSize', array('path' => $path)); - if ($this->cacheActive) { - $this->cache->correctFolderSize($path); - } - } catch (\OCP\Files\StorageInvalidException $e) { - // skip unavailable storages - } catch (\OCP\Files\StorageNotAvailableException $e) { - // skip unavailable storages - } catch (\OCP\Files\ForbiddenException $e) { - // skip forbidden storages - } catch (\OCP\Lock\LockedException $e) { - // skip unavailable storages + if (!$this->cache->inCache('')) { + $this->runBackgroundScanJob(function () { + $this->scan('', self::SCAN_RECURSIVE, self::REUSE_ETAG); + }, ''); + } else { + $lastPath = null; + while (($path = $this->cache->getIncomplete()) !== false && $path !== $lastPath) { + $this->runBackgroundScanJob(function() use ($path) { + $this->scan($path, self::SCAN_RECURSIVE, self::REUSE_ETAG); + }, $path); + // FIXME: this won't proceed with the next item, needs revamping of getIncomplete() + // to make this possible + $lastPath = $path; + } + } + } + + private function runBackgroundScanJob(callable $callback, $path) { + try { + $callback(); + \OC_Hook::emit('Scanner', 'correctFolderSize', array('path' => $path)); + if ($this->cacheActive) { + $this->cache->correctFolderSize($path); } - // FIXME: this won't proceed with the next item, needs revamping of getIncomplete() - // to make this possible - $lastPath = $path; + } catch (\OCP\Files\StorageInvalidException $e) { + // skip unavailable storages + } catch (\OCP\Files\StorageNotAvailableException $e) { + // skip unavailable storages + } catch (\OCP\Files\ForbiddenException $e) { + // skip forbidden storages + } catch (\OCP\Lock\LockedException $e) { + // skip unavailable storages } } diff --git a/lib/private/db/statementwrapper.php b/lib/private/legacy/db/statementwrapper.php index 6422d8d5f1b..6422d8d5f1b 100644 --- a/lib/private/db/statementwrapper.php +++ b/lib/private/legacy/db/statementwrapper.php diff --git a/lib/private/share/hooks.php b/lib/private/share/hooks.php deleted file mode 100644 index 5faf81c5e9b..00000000000 --- a/lib/private/share/hooks.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php -/** - * @author Björn Schießle <schiessle@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <rullzer@owncloud.com> - * - * @copyright Copyright (c) 2016, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * - */ - -namespace OC\Share; - -class Hooks extends \OC\Share\Constants { - /** - * Function that is called after a user is removed from a group. Shares are cleaned up. - * @param array $arguments - */ - public static function post_removeFromGroup($arguments) { - $sql = 'SELECT `id`, `share_type` FROM `*PREFIX*share`' - .' WHERE (`share_type` = ? AND `share_with` = ?) OR (`share_type` = ? AND `share_with` = ?)'; - $result = \OC_DB::executeAudited($sql, array(self::SHARE_TYPE_GROUP, $arguments['gid'], - self::$shareTypeGroupUserUnique, $arguments['uid'])); - while ($item = $result->fetchRow()) { - if ($item['share_type'] == self::SHARE_TYPE_GROUP) { - // Delete all reshares by this user of the group share - Helper::delete($item['id'], true, $arguments['uid']); - } else { - Helper::delete($item['id']); - } - } - } -} diff --git a/lib/private/template/base.php b/lib/private/template/base.php index 32dcdb98e86..cfe629b5fbf 100644 --- a/lib/private/template/base.php +++ b/lib/private/template/base.php @@ -168,8 +168,13 @@ class Base { // Include ob_start(); - include $file; - $data = ob_get_contents(); + try { + include $file; + $data = ob_get_contents(); + } catch (\Exception $e) { + @ob_end_clean(); + throw $e; + } @ob_end_clean(); // Return data diff --git a/lib/private/templatelayout.php b/lib/private/templatelayout.php index fe7638f399d..88077b418a7 100644 --- a/lib/private/templatelayout.php +++ b/lib/private/templatelayout.php @@ -182,7 +182,7 @@ class TemplateLayout extends \OC_Template { \OC::$server->getLogger(), $theme, array( \OC::$SERVERROOT => \OC::$WEBROOT ), - array( \OC::$THIRDPARTYROOT => \OC::$THIRDPARTYWEBROOT )); + array( \OC::$SERVERROOT => \OC::$WEBROOT )); $locator->find($styles); return $locator->getResources(); } @@ -199,7 +199,7 @@ class TemplateLayout extends \OC_Template { \OC::$server->getLogger(), $theme, array( \OC::$SERVERROOT => \OC::$WEBROOT ), - array( \OC::$THIRDPARTYROOT => \OC::$THIRDPARTYWEBROOT )); + array( \OC::$SERVERROOT => \OC::$WEBROOT )); $locator->find($scripts); return $locator->getResources(); } diff --git a/lib/private/updater.php b/lib/private/updater.php index 0d567b8dfb9..627e01596bb 100644 --- a/lib/private/updater.php +++ b/lib/private/updater.php @@ -37,7 +37,6 @@ use OC\Hooks\BasicEmitter; use OC\IntegrityCheck\Checker; use OC_App; use OC_Installer; -use OC_Util; use OCP\IConfig; use OC\Setup; use OCP\ILogger; @@ -56,9 +55,6 @@ class Updater extends BasicEmitter { /** @var ILogger $log */ private $log; - /** @var \OC\HTTPHelper $helper */ - private $httpHelper; - /** @var IConfig */ private $config; @@ -83,16 +79,13 @@ class Updater extends BasicEmitter { ]; /** - * @param HTTPHelper $httpHelper * @param IConfig $config * @param Checker $checker * @param ILogger $log */ - public function __construct(HTTPHelper $httpHelper, - IConfig $config, + public function __construct(IConfig $config, Checker $checker, ILogger $log = null) { - $this->httpHelper = $httpHelper; $this->log = $log; $this->config = $config; $this->checker = $checker; @@ -132,63 +125,6 @@ class Updater extends BasicEmitter { } /** - * Check if a new version is available - * - * @param string $updaterUrl the url to check, i.e. 'http://apps.owncloud.com/updater.php' - * @return array|bool - */ - public function check($updaterUrl = null) { - - // Look up the cache - it is invalidated all 30 minutes - if (((int)$this->config->getAppValue('core', 'lastupdatedat') + 1800) > time()) { - return json_decode($this->config->getAppValue('core', 'lastupdateResult'), true); - } - - if (is_null($updaterUrl)) { - $updaterUrl = 'https://updates.owncloud.com/server/'; - } - - $this->config->setAppValue('core', 'lastupdatedat', time()); - - if ($this->config->getAppValue('core', 'installedat', '') === '') { - $this->config->setAppValue('core', 'installedat', microtime(true)); - } - - $version = \OCP\Util::getVersion(); - $version['installed'] = $this->config->getAppValue('core', 'installedat'); - $version['updated'] = $this->config->getAppValue('core', 'lastupdatedat'); - $version['updatechannel'] = \OC_Util::getChannel(); - $version['edition'] = \OC_Util::getEditionString(); - $version['build'] = \OC_Util::getBuild(); - $versionString = implode('x', $version); - - //fetch xml data from updater - $url = $updaterUrl . '?version=' . $versionString; - - $tmp = []; - $xml = $this->httpHelper->getUrlContent($url); - if ($xml) { - $loadEntities = libxml_disable_entity_loader(true); - $data = @simplexml_load_string($xml); - libxml_disable_entity_loader($loadEntities); - if ($data !== false) { - $tmp['version'] = (string)$data->version; - $tmp['versionstring'] = (string)$data->versionstring; - $tmp['url'] = (string)$data->url; - $tmp['web'] = (string)$data->web; - } else { - libxml_clear_errors(); - } - } else { - $data = []; - } - - // Cache the result - $this->config->setAppValue('core', 'lastupdateResult', json_encode($data)); - return $tmp; - } - - /** * runs the update actions in maintenance mode, does not upgrade the source files * except the main .htaccess file * diff --git a/lib/private/updater/versioncheck.php b/lib/private/updater/versioncheck.php new file mode 100644 index 00000000000..e42a1e2a40c --- /dev/null +++ b/lib/private/updater/versioncheck.php @@ -0,0 +1,133 @@ +<?php +/** + * @author Arthur Schiwon <blizzz@owncloud.com> + * @author Bart Visscher <bartv@thisnet.nl> + * @author Björn Schießle <schiessle@owncloud.com> + * @author Frank Karlitschek <frank@owncloud.org> + * @author Joas Schilling <nickvergessen@owncloud.com> + * @author Lukas Reschke <lukas@owncloud.com> + * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin Appelman <icewind@owncloud.com> + * @author Robin McCorkell <robin@mccorkell.me.uk> + * @author Steffen Lindner <mail@steffen-lindner.de> + * @author Thomas Müller <thomas.mueller@tmit.eu> + * @author Victor Dubiniuk <dubiniuk@owncloud.com> + * @author Vincent Petry <pvince81@owncloud.com> + * + * @copyright Copyright (c) 2016, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OC\Updater; + +use OC_Util; +use OCP\Http\Client\IClientService; +use OCP\IConfig; +use OC\Setup; +use OCP\Util; + +class VersionCheck { + + /** @var IClientService */ + private $clientService; + + /** @var IConfig */ + private $config; + + /** + * @param IClientService $clientService + * @param IConfig $config + */ + public function __construct(IClientService $clientService, + IConfig $config) { + $this->clientService = $clientService; + $this->config = $config; + } + + + /** + * Check if a new version is available + * + * @param string $updaterUrl the url to check, i.e. 'http://apps.owncloud.com/updater.php' + * @return array|bool + */ + public function check($updaterUrl = null) { + + // Look up the cache - it is invalidated all 30 minutes + if (((int)$this->config->getAppValue('core', 'lastupdatedat') + 1800) > time()) { + return json_decode($this->config->getAppValue('core', 'lastupdateResult'), true); + } + + if (is_null($updaterUrl)) { + $updaterUrl = 'https://updates.owncloud.com/server/'; + } + + $this->config->setAppValue('core', 'lastupdatedat', time()); + + if ($this->config->getAppValue('core', 'installedat', '') === '') { + $this->config->setAppValue('core', 'installedat', microtime(true)); + } + + $version = Util::getVersion(); + $version['installed'] = $this->config->getAppValue('core', 'installedat'); + $version['updated'] = $this->config->getAppValue('core', 'lastupdatedat'); + $version['updatechannel'] = \OC_Util::getChannel(); + $version['edition'] = \OC_Util::getEditionString(); + $version['build'] = \OC_Util::getBuild(); + $versionString = implode('x', $version); + + //fetch xml data from updater + $url = $updaterUrl . '?version=' . $versionString; + + $tmp = []; + $xml = $this->getUrlContent($url); + if ($xml) { + $loadEntities = libxml_disable_entity_loader(true); + $data = @simplexml_load_string($xml); + libxml_disable_entity_loader($loadEntities); + if ($data !== false) { + $tmp['version'] = (string)$data->version; + $tmp['versionstring'] = (string)$data->versionstring; + $tmp['url'] = (string)$data->url; + $tmp['web'] = (string)$data->web; + } else { + libxml_clear_errors(); + } + } else { + $data = []; + } + + // Cache the result + $this->config->setAppValue('core', 'lastupdateResult', json_encode($data)); + return $tmp; + } + + /** + * @codeCoverageIgnore + * @param string $url + * @return bool|resource|string + */ + protected function getUrlContent($url) { + try { + $client = $this->clientService->newClient(); + $response = $client->get($url); + return $response->getBody(); + } catch (\Exception $e) { + return false; + } + } +} + diff --git a/lib/private/user.php b/lib/private/user.php index 26062f503d2..11c35daa0de 100644 --- a/lib/private/user.php +++ b/lib/private/user.php @@ -203,6 +203,10 @@ class OC_User { self::setUserId($uid); self::setDisplayName($uid); self::getUserSession()->setLoginName($uid); + // setup the filesystem + OC_Util::setupFS($uid); + //trigger creation of user home and /files folder + \OC::$server->getUserFolder($uid); OC_Hook::emit("OC_User", "post_login", array("uid" => $uid, 'password' => '')); } @@ -268,15 +272,6 @@ class OC_User { } /** - * Logs the current user out and kills all the session data - * - * Logout, destroys session - */ - public static function logout() { - self::getUserSession()->logout(); - } - - /** * Tries to login the user with HTTP Basic Authentication */ public static function tryBasicAuthLogin() { @@ -342,7 +337,14 @@ class OC_User { return $backend->getLogoutAttribute(); } - return 'href="' . link_to('', 'index.php') . '?logout=true&requesttoken=' . urlencode(\OCP\Util::callRegister()) . '"'; + $logoutUrl = \OC::$server->getURLGenerator()->linkToRouteAbsolute( + 'core.login.logout', + [ + 'requesttoken' => \OCP\Util::callRegister(), + ] + ); + + return 'href="'.$logoutUrl.'"'; } /** diff --git a/lib/private/util.php b/lib/private/util.php index 039bc7e9156..7caa1efcf54 100644 --- a/lib/private/util.php +++ b/lib/private/util.php @@ -947,44 +947,6 @@ class OC_Util { } /** - * @param array $errors - * @param string[] $messages - */ - public static function displayLoginPage($errors = array(), $messages = []) { - $parameters = array(); - foreach ($errors as $value) { - $parameters[$value] = true; - } - $parameters['messages'] = $messages; - if (!empty($_REQUEST['user'])) { - $parameters["username"] = $_REQUEST['user']; - $parameters['user_autofocus'] = false; - } else { - $parameters["username"] = ''; - $parameters['user_autofocus'] = true; - } - if (isset($_REQUEST['redirect_url'])) { - $parameters['redirect_url'] = $_REQUEST['redirect_url']; - } - - $parameters['canResetPassword'] = true; - if (!\OC::$server->getSystemConfig()->getValue('lost_password_link')) { - if (isset($_REQUEST['user'])) { - $user = \OC::$server->getUserManager()->get($_REQUEST['user']); - if ($user instanceof IUser) { - $parameters['canResetPassword'] = $user->canChangePassword(); - } - } - } - - $parameters['alt_login'] = OC_App::getAlternativeLogIns(); - $parameters['rememberLoginAllowed'] = self::rememberLoginAllowed(); - $parameters['rememberLoginState'] = isset($_POST['remember_login']) ? $_POST['remember_login'] : 0; - \OC_Hook::emit('OC_Util', 'pre_displayLoginPage', array('parameters' => $parameters)); - OC_Template::printGuestPage("", "login", $parameters); - } - - /** * Check if the user is logged in, redirects to home if not. With * redirect URL parameter to the request URI. * @@ -993,7 +955,8 @@ class OC_Util { public static function checkLoggedIn() { // Check if we are a user if (!OC_User::isLoggedIn()) { - header('Location: ' . \OCP\Util::linkToAbsolute('', 'index.php', + header('Location: ' . \OC::$server->getURLGenerator()->linkToRoute( + 'core.login.showLoginForm', [ 'redirect_url' => \OC::$server->getRequest()->getRequestUri() ] diff --git a/lib/public/Share/IManager.php b/lib/public/Share/IManager.php index c43011d3177..392c0471768 100644 --- a/lib/public/Share/IManager.php +++ b/lib/public/Share/IManager.php @@ -164,12 +164,22 @@ interface IManager { * The group with $gid is deleted * We need to clear up all shares to this group * - * @param $gid + * @param string $gid * @since 9.1.0 */ public function groupDeleted($gid); /** + * The user $uid is deleted from the group $gid + * All user specific group shares have to be removed + * + * @param string $uid + * @param string $gid + * @since 9.1.0 + */ + public function userDeletedFromGroup($uid, $gid); + + /** * Instantiates a new share object. This is to be passed to * createShare. * diff --git a/lib/public/Share/IShareProvider.php b/lib/public/Share/IShareProvider.php index 24af36e0757..ac75a6f20b0 100644 --- a/lib/public/Share/IShareProvider.php +++ b/lib/public/Share/IShareProvider.php @@ -166,4 +166,15 @@ interface IShareProvider { * @since 9.1.0 */ public function groupDeleted($gid); + + /** + * A user is deleted from a group + * We have to clean up all the related user specific group shares + * Providers not handling group shares should just return + * + * @param string $uid + * @param string $gid + * @since 9.1.0 + */ + public function userDeletedFromGroup($uid, $gid); } diff --git a/lib/public/irequest.php b/lib/public/irequest.php index a0040aa464d..296c70f4ecc 100644 --- a/lib/public/irequest.php +++ b/lib/public/irequest.php @@ -129,7 +129,7 @@ interface IRequest { * Shortcut for getting cookie variables * * @param string $key the key that will be taken from the $_COOKIE array - * @return array the value in the $_COOKIE element + * @return string the value in the $_COOKIE element * @since 6.0.0 */ public function getCookie($key); diff --git a/lib/public/user.php b/lib/public/user.php index 825e77aef6d..64ac92d2100 100644 --- a/lib/public/user.php +++ b/lib/public/user.php @@ -119,7 +119,7 @@ class User { * @since 5.0.0 */ public static function logout() { - \OC_User::logout(); + \OC::$server->getUserSession()->logout(); } /** diff --git a/remote.php b/remote.php index 86b47629d73..814286860af 100644 --- a/remote.php +++ b/remote.php @@ -108,6 +108,11 @@ function resolveService($service) { try { require_once 'lib/base.php'; + // All resources served via the DAV endpoint should have the strictest possible + // policy. Exempted from this is the SabreDAV browser plugin which overwrites + // this policy with a softer one if debug mode is enabled. + header("Content-Security-Policy: default-src 'none';"); + if (\OCP\Util::needUpgrade()) { // since the behavior of apps or remotes are unpredictable during // an upgrade, return a 503 directly diff --git a/settings/js/users/deleteHandler.js b/settings/js/users/deleteHandler.js index b684aff1889..a66e8b07a72 100644 --- a/settings/js/users/deleteHandler.js +++ b/settings/js/users/deleteHandler.js @@ -191,7 +191,7 @@ DeleteHandler.prototype.deleteEntry = function(keepNotification) { payload[dh.ajaxParamID] = dh.oidToDelete; return $.ajax({ type: 'DELETE', - url: OC.generateUrl(dh.ajaxEndpoint+'/'+this.oidToDelete), + url: OC.generateUrl(dh.ajaxEndpoint+'/{oid}',{oid: this.oidToDelete}), // FIXME: do not use synchronous ajax calls as they block the browser ! async: false, success: function (result) { diff --git a/settings/l10n/cs_CZ.js b/settings/l10n/cs_CZ.js index 1b5c3efaa86..859e37de617 100644 --- a/settings/l10n/cs_CZ.js +++ b/settings/l10n/cs_CZ.js @@ -63,6 +63,7 @@ OC.L10N.register( "Experimental" : "Experimentální", "All" : "Vše", "No apps found for your version" : "Nebyly nalezeny aplikace pro vaši verzi", + "The app will be downloaded from the app store" : "Aplikace bude stažena z obchodu aplikací", "Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Oficiální aplikace jsou vyvíjeny komunitou ownCloud. Nabízejí funkce důležité pro ownCloud a jsou připraveny pro nasazení v produkčním prostředí.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Schválené aplikace jsou vyvíjeny důvěryhodnými vývojáři a prošly zběžným bezpečnostním prověřením. Jsou aktivně udržovány v repozitáři s otevřeným kódem a jejich správci je považují za stabilní pro občasné až normální použití.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "U této aplikace nebyla provedena kontrola na bezpečnostní problémy. Aplikace je nová nebo nestabilní. Instalujte pouze na vlastní nebezpečí.", diff --git a/settings/l10n/cs_CZ.json b/settings/l10n/cs_CZ.json index 1210640b7b3..62baeb34ee7 100644 --- a/settings/l10n/cs_CZ.json +++ b/settings/l10n/cs_CZ.json @@ -61,6 +61,7 @@ "Experimental" : "Experimentální", "All" : "Vše", "No apps found for your version" : "Nebyly nalezeny aplikace pro vaši verzi", + "The app will be downloaded from the app store" : "Aplikace bude stažena z obchodu aplikací", "Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Oficiální aplikace jsou vyvíjeny komunitou ownCloud. Nabízejí funkce důležité pro ownCloud a jsou připraveny pro nasazení v produkčním prostředí.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Schválené aplikace jsou vyvíjeny důvěryhodnými vývojáři a prošly zběžným bezpečnostním prověřením. Jsou aktivně udržovány v repozitáři s otevřeným kódem a jejich správci je považují za stabilní pro občasné až normální použití.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "U této aplikace nebyla provedena kontrola na bezpečnostní problémy. Aplikace je nová nebo nestabilní. Instalujte pouze na vlastní nebezpečí.", diff --git a/settings/l10n/de.js b/settings/l10n/de.js index a289b522bc3..a48cbaed1b0 100644 --- a/settings/l10n/de.js +++ b/settings/l10n/de.js @@ -63,6 +63,7 @@ OC.L10N.register( "Experimental" : "Experimentell", "All" : "Alle", "No apps found for your version" : "Es wurden keine Apps für Deine Version gefunden", + "The app will be downloaded from the app store" : "Die App wird aus dem App-Store heruntergeladen", "Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Offizielle Apps werden von und innerhalb der ownCloud-Community entwickelt. Sie stellen zentrale Funktionen von ownCloud bereit und sind auf den Produktiveinsatz vorbereitet.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Geprüfte Apps werden von vertrauenswürdigen Entwicklern entwickelt und haben eine oberflächliche Sicherheitsprüfung durchlaufen. Sie werden innerhalb eines offenen Code-Repositorys aktiv gepflegt und ihre Betreuer erachten sie als stabil genug für für den gelegentlichen bis normalen Einsatz.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Diese App ist nicht auf Sicherheitsprobleme hin überprüft und ist neu oder bekanntermaßen instabil. Die Installation erfolgt auf eigenes Risiko.", diff --git a/settings/l10n/de.json b/settings/l10n/de.json index 3909c15c91a..6ac249dbe86 100644 --- a/settings/l10n/de.json +++ b/settings/l10n/de.json @@ -61,6 +61,7 @@ "Experimental" : "Experimentell", "All" : "Alle", "No apps found for your version" : "Es wurden keine Apps für Deine Version gefunden", + "The app will be downloaded from the app store" : "Die App wird aus dem App-Store heruntergeladen", "Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Offizielle Apps werden von und innerhalb der ownCloud-Community entwickelt. Sie stellen zentrale Funktionen von ownCloud bereit und sind auf den Produktiveinsatz vorbereitet.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Geprüfte Apps werden von vertrauenswürdigen Entwicklern entwickelt und haben eine oberflächliche Sicherheitsprüfung durchlaufen. Sie werden innerhalb eines offenen Code-Repositorys aktiv gepflegt und ihre Betreuer erachten sie als stabil genug für für den gelegentlichen bis normalen Einsatz.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Diese App ist nicht auf Sicherheitsprobleme hin überprüft und ist neu oder bekanntermaßen instabil. Die Installation erfolgt auf eigenes Risiko.", diff --git a/settings/l10n/de_DE.js b/settings/l10n/de_DE.js index 92b40968e93..b6dc30b4ac5 100644 --- a/settings/l10n/de_DE.js +++ b/settings/l10n/de_DE.js @@ -63,6 +63,7 @@ OC.L10N.register( "Experimental" : "Experimentell", "All" : "Alle", "No apps found for your version" : "Es wurden keine Apps für Ihre Version gefunden", + "The app will be downloaded from the app store" : "Die App wird aus dem App-Store heruntergeladen", "Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Offizielle Apps werden von und innerhalb der ownCloud-Community entwickelt. Sie stellen zentrale Funktionen von ownCloud bereit und sind auf den Produktiveinsatz vorbereitet.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Geprüfte Apps werden von vertrauenswürdigen Entwicklern entwickelt und haben eine oberflächliche Sicherheitsprüfung durchlaufen. Sie werden innerhalb eines offenen Code-Repositorys aktiv gepflegt und ihre Betreuer erachten sie als stabil genug für für den gelegentlichen bis normalen Einsatz.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Diese App ist nicht auf Sicherheitsprobleme hin überprüft und ist neu oder bekanntermaßen instabil. Die Installation erfolgt auf eigenes Risiko.", diff --git a/settings/l10n/de_DE.json b/settings/l10n/de_DE.json index d25c73a63f4..cce90cf8b3f 100644 --- a/settings/l10n/de_DE.json +++ b/settings/l10n/de_DE.json @@ -61,6 +61,7 @@ "Experimental" : "Experimentell", "All" : "Alle", "No apps found for your version" : "Es wurden keine Apps für Ihre Version gefunden", + "The app will be downloaded from the app store" : "Die App wird aus dem App-Store heruntergeladen", "Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Offizielle Apps werden von und innerhalb der ownCloud-Community entwickelt. Sie stellen zentrale Funktionen von ownCloud bereit und sind auf den Produktiveinsatz vorbereitet.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Geprüfte Apps werden von vertrauenswürdigen Entwicklern entwickelt und haben eine oberflächliche Sicherheitsprüfung durchlaufen. Sie werden innerhalb eines offenen Code-Repositorys aktiv gepflegt und ihre Betreuer erachten sie als stabil genug für für den gelegentlichen bis normalen Einsatz.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Diese App ist nicht auf Sicherheitsprobleme hin überprüft und ist neu oder bekanntermaßen instabil. Die Installation erfolgt auf eigenes Risiko.", diff --git a/settings/l10n/es.js b/settings/l10n/es.js index bb530a7e974..39431fc813e 100644 --- a/settings/l10n/es.js +++ b/settings/l10n/es.js @@ -63,6 +63,7 @@ OC.L10N.register( "Experimental" : "Experimental", "All" : "Todos", "No apps found for your version" : "No se han encontrado aplicaciones para su versión", + "The app will be downloaded from the app store" : "La app debe ser descargada desde una app store", "Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Aplicaciones oficiales son desarrolladas por y dentro de la comunidad ownCloud. Estas ofrecen una funcionalidad central con ownCloud y están listas para su uso en producción. ", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Las aplicaciones aprobadas son desarrolladas por desarrolladores de confianza y han pasado un control de seguridad superficial. Estas se mantienen activamente en un repositorio de código abierto y sus mantenedores las consideran estables para un uso normal.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Esta aplicación no está verificada por problemas de seguridad además de ser reciente o conocida por ser inestable. Instálela bajo su propio riesgo.", @@ -84,6 +85,7 @@ OC.L10N.register( "Uninstall" : "Desinstalar", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación ha sido activada pero necesita ser actualizada. Seras redirigido a la pagina de actualizariones en 5 segundos.", "App update" : "Actualización de aplicación", + "No apps found for {query}" : "No se han encontrado apps para {query}", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ha ocurrido un error. Por favor, cargue un certificado PEM codificado en ASCII.", "Valid until {date}" : "Válido hasta {date}", "Delete" : "Eliminar", diff --git a/settings/l10n/es.json b/settings/l10n/es.json index 1d6b47a20bf..b135cbfdd72 100644 --- a/settings/l10n/es.json +++ b/settings/l10n/es.json @@ -61,6 +61,7 @@ "Experimental" : "Experimental", "All" : "Todos", "No apps found for your version" : "No se han encontrado aplicaciones para su versión", + "The app will be downloaded from the app store" : "La app debe ser descargada desde una app store", "Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Aplicaciones oficiales son desarrolladas por y dentro de la comunidad ownCloud. Estas ofrecen una funcionalidad central con ownCloud y están listas para su uso en producción. ", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Las aplicaciones aprobadas son desarrolladas por desarrolladores de confianza y han pasado un control de seguridad superficial. Estas se mantienen activamente en un repositorio de código abierto y sus mantenedores las consideran estables para un uso normal.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Esta aplicación no está verificada por problemas de seguridad además de ser reciente o conocida por ser inestable. Instálela bajo su propio riesgo.", @@ -82,6 +83,7 @@ "Uninstall" : "Desinstalar", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación ha sido activada pero necesita ser actualizada. Seras redirigido a la pagina de actualizariones en 5 segundos.", "App update" : "Actualización de aplicación", + "No apps found for {query}" : "No se han encontrado apps para {query}", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ha ocurrido un error. Por favor, cargue un certificado PEM codificado en ASCII.", "Valid until {date}" : "Válido hasta {date}", "Delete" : "Eliminar", diff --git a/settings/l10n/fi_FI.js b/settings/l10n/fi_FI.js index 3fe0d0711ac..0e438ae7445 100644 --- a/settings/l10n/fi_FI.js +++ b/settings/l10n/fi_FI.js @@ -62,6 +62,7 @@ OC.L10N.register( "Experimental" : "Kokeellinen", "All" : "Kaikki", "No apps found for your version" : "Sovelluksia ei löytynyt versiollesi", + "The app will be downloaded from the app store" : "Sovellus ladataan sovelluskaupasta", "Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Viralliset sovellukset kehitetään ownCloud-yhteisön toimesta. Sovellukset tarjoavat lisäominaisuuksia ownCloudin keskeisiin toimintoihin liittyen ja ovat valmiita tuotantokäyttöön.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Hyväksytyt sovellukset on kehitetty luotettujen kehittäjien toimesta. Hyväksytyille sovelluksille on suoritettu pintapuolinen turvallisuustarkastus. Sovelluksia ylläpidetään avoimen koodin tietovarastoissa. Sovellusten kehittäjät mieltävät sovellukset vakaiksi ja valmiiksi tavalliseen käyttöön.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Tätä sovellusta ei ole tarkistettu tietoturvauhkien varalta. Sovellus on uusi ja mahdollisesti tiedostettu epävakaaksi. Asenna omalla vastuulla.", diff --git a/settings/l10n/fi_FI.json b/settings/l10n/fi_FI.json index b638e0ff2f9..768f7e46b39 100644 --- a/settings/l10n/fi_FI.json +++ b/settings/l10n/fi_FI.json @@ -60,6 +60,7 @@ "Experimental" : "Kokeellinen", "All" : "Kaikki", "No apps found for your version" : "Sovelluksia ei löytynyt versiollesi", + "The app will be downloaded from the app store" : "Sovellus ladataan sovelluskaupasta", "Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Viralliset sovellukset kehitetään ownCloud-yhteisön toimesta. Sovellukset tarjoavat lisäominaisuuksia ownCloudin keskeisiin toimintoihin liittyen ja ovat valmiita tuotantokäyttöön.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Hyväksytyt sovellukset on kehitetty luotettujen kehittäjien toimesta. Hyväksytyille sovelluksille on suoritettu pintapuolinen turvallisuustarkastus. Sovelluksia ylläpidetään avoimen koodin tietovarastoissa. Sovellusten kehittäjät mieltävät sovellukset vakaiksi ja valmiiksi tavalliseen käyttöön.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Tätä sovellusta ei ole tarkistettu tietoturvauhkien varalta. Sovellus on uusi ja mahdollisesti tiedostettu epävakaaksi. Asenna omalla vastuulla.", diff --git a/settings/l10n/it.js b/settings/l10n/it.js index f6e5535929f..09f49c21312 100644 --- a/settings/l10n/it.js +++ b/settings/l10n/it.js @@ -63,6 +63,7 @@ OC.L10N.register( "Experimental" : "Sperimentale", "All" : "Tutti", "No apps found for your version" : "Nessuna applicazione trovata per la tua versione", + "The app will be downloaded from the app store" : "L'applicazione sarà scaricata dallo store delle applicazioni", "Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Le applicazioni ufficiali sono sviluppate da e con la comunità di ownCloud. Offrono le funzioni fondamentali di ownCloud e sono pronte per l'utilizzo in produzione.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Le applicazioni approvate sono sviluppate da sviluppatori affidabili e hanno passato un rapido controllo di sicurezza. Sono attivamente mantenute in un deposito aperto del codice e i loro responsabili le ritengono pronte sia per un utilizzo casuale che per un utilizzo continuativo.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Questa applicazione non è stata sottoposta a controlli di sicurezza, è nuova o notoriamente instabile. Installala a tuo rischio.", diff --git a/settings/l10n/it.json b/settings/l10n/it.json index 780c2233e97..11a91a2ed4f 100644 --- a/settings/l10n/it.json +++ b/settings/l10n/it.json @@ -61,6 +61,7 @@ "Experimental" : "Sperimentale", "All" : "Tutti", "No apps found for your version" : "Nessuna applicazione trovata per la tua versione", + "The app will be downloaded from the app store" : "L'applicazione sarà scaricata dallo store delle applicazioni", "Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Le applicazioni ufficiali sono sviluppate da e con la comunità di ownCloud. Offrono le funzioni fondamentali di ownCloud e sono pronte per l'utilizzo in produzione.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Le applicazioni approvate sono sviluppate da sviluppatori affidabili e hanno passato un rapido controllo di sicurezza. Sono attivamente mantenute in un deposito aperto del codice e i loro responsabili le ritengono pronte sia per un utilizzo casuale che per un utilizzo continuativo.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Questa applicazione non è stata sottoposta a controlli di sicurezza, è nuova o notoriamente instabile. Installala a tuo rischio.", diff --git a/settings/l10n/pt_BR.js b/settings/l10n/pt_BR.js index ece7ecc3b93..80856cc52fa 100644 --- a/settings/l10n/pt_BR.js +++ b/settings/l10n/pt_BR.js @@ -63,6 +63,7 @@ OC.L10N.register( "Experimental" : "Experimental", "All" : "Todos", "No apps found for your version" : "Nenhum aplicativo encontrados para a sua versão", + "The app will be downloaded from the app store" : "O aplicativo será baixado na App Store", "Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Aplicativos oficiais são desenvolvidos por e dentro da comunidade ownCloud. Eles oferecem funcionalidade central para ownCloud e estão prontos para uso em produção.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Aplicativos aprovados são desenvolvidos pelos desenvolvedores confiáveis e passaram por uma verificação de segurança superficial. Eles são ativamente mantidos em um repositório de código aberto e seus mantenedores consideram que eles para sejam estáveis para um casual uso normal.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Este aplicativo não foi verificado para as questões de segurança e é novo ou conhecido por ser instável. Instale por seu próprio risco.", diff --git a/settings/l10n/pt_BR.json b/settings/l10n/pt_BR.json index 35374c52863..1a724f7c7a1 100644 --- a/settings/l10n/pt_BR.json +++ b/settings/l10n/pt_BR.json @@ -61,6 +61,7 @@ "Experimental" : "Experimental", "All" : "Todos", "No apps found for your version" : "Nenhum aplicativo encontrados para a sua versão", + "The app will be downloaded from the app store" : "O aplicativo será baixado na App Store", "Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Aplicativos oficiais são desenvolvidos por e dentro da comunidade ownCloud. Eles oferecem funcionalidade central para ownCloud e estão prontos para uso em produção.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Aplicativos aprovados são desenvolvidos pelos desenvolvedores confiáveis e passaram por uma verificação de segurança superficial. Eles são ativamente mantidos em um repositório de código aberto e seus mantenedores consideram que eles para sejam estáveis para um casual uso normal.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Este aplicativo não foi verificado para as questões de segurança e é novo ou conhecido por ser instável. Instale por seu próprio risco.", diff --git a/settings/l10n/sl.js b/settings/l10n/sl.js index 2ad7a987fee..615cd409e59 100644 --- a/settings/l10n/sl.js +++ b/settings/l10n/sl.js @@ -79,6 +79,7 @@ OC.L10N.register( "Uninstall" : "Odstrani namestitev", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Vstavek je omogočen, vendar zahteva posodobitev. Samodejno bo izvedena preusmeritev na stran za posodobitev v 5 sekundah.", "App update" : "Posodabljanje vstavkov", + "No apps found for {query}" : "Ni programov, skladnih z nizom \"{query}\".", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Prišlo je do napake. Uvoziti je treba ustrezno ASCII kodirano potrdilo PEM.", "Valid until {date}" : "Veljavno do {date}", "Delete" : "Izbriši", diff --git a/settings/l10n/sl.json b/settings/l10n/sl.json index 70cefaefc80..ade5b3def67 100644 --- a/settings/l10n/sl.json +++ b/settings/l10n/sl.json @@ -77,6 +77,7 @@ "Uninstall" : "Odstrani namestitev", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Vstavek je omogočen, vendar zahteva posodobitev. Samodejno bo izvedena preusmeritev na stran za posodobitev v 5 sekundah.", "App update" : "Posodabljanje vstavkov", + "No apps found for {query}" : "Ni programov, skladnih z nizom \"{query}\".", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Prišlo je do napake. Uvoziti je treba ustrezno ASCII kodirano potrdilo PEM.", "Valid until {date}" : "Veljavno do {date}", "Delete" : "Izbriši", diff --git a/settings/l10n/sq.js b/settings/l10n/sq.js index 9e3f9be212f..d2e5d1b6537 100644 --- a/settings/l10n/sq.js +++ b/settings/l10n/sq.js @@ -63,6 +63,7 @@ OC.L10N.register( "Experimental" : "Eksperimentale", "All" : "Krejt", "No apps found for your version" : "S’u gjetën aplikacione për versionin tuaj", + "The app will be downloaded from the app store" : "Aplikacioni do të shkarkohet nga shitorja e aplikacioneve", "Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Aplikacionet zyrtare ndërtohen brenda bashkësisë ownCloud. Ato ofrojnë funksione qendrore për ownCloud dhe janë gati për t’u përdorur në prodhim.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Aplikacionet e miratuara ndërtohen nga zhvillues të besuar dhe kanë kaluar një kontroll të përciptë sigurie. Mirëmbahen aktivisht në një depo të hapur kodi dhe mirëmbajtësit e tyre i konsiderojnë të qëndrueshme për përdorime nga të rastit deri në ato normale.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Ky aplikacion s’është kontrolluar për probleme sigurie dhe është i ri ose i njohur si i paqëndrueshëm. Instalojeni duke e mbajtur vetë përgjegjësinë.", diff --git a/settings/l10n/sq.json b/settings/l10n/sq.json index 50415cca870..e00f1f6560a 100644 --- a/settings/l10n/sq.json +++ b/settings/l10n/sq.json @@ -61,6 +61,7 @@ "Experimental" : "Eksperimentale", "All" : "Krejt", "No apps found for your version" : "S’u gjetën aplikacione për versionin tuaj", + "The app will be downloaded from the app store" : "Aplikacioni do të shkarkohet nga shitorja e aplikacioneve", "Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Aplikacionet zyrtare ndërtohen brenda bashkësisë ownCloud. Ato ofrojnë funksione qendrore për ownCloud dhe janë gati për t’u përdorur në prodhim.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Aplikacionet e miratuara ndërtohen nga zhvillues të besuar dhe kanë kaluar një kontroll të përciptë sigurie. Mirëmbahen aktivisht në një depo të hapur kodi dhe mirëmbajtësit e tyre i konsiderojnë të qëndrueshme për përdorime nga të rastit deri në ato normale.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Ky aplikacion s’është kontrolluar për probleme sigurie dhe është i ri ose i njohur si i paqëndrueshëm. Instalojeni duke e mbajtur vetë përgjegjësinë.", diff --git a/settings/tests/js/users/deleteHandlerSpec.js b/settings/tests/js/users/deleteHandlerSpec.js index 371eae5941d..3e7f768e519 100644 --- a/settings/tests/js/users/deleteHandlerSpec.js +++ b/settings/tests/js/users/deleteHandlerSpec.js @@ -132,6 +132,20 @@ describe('DeleteHandler tests', function() { var request = fakeServer.requests[0]; expect(request.url).toEqual(OC.webroot + '/index.php/dummyendpoint.php/some_uid'); }); + it('deletes when deleteEntry is called and escapes', function() { + fakeServer.respondWith(/\/index\.php\/dummyendpoint.php\/some_uid/, [ + 200, + { 'Content-Type': 'application/json' }, + JSON.stringify({status: 'success'}) + ]); + var handler = init(markCallback, removeCallback, undoCallback); + handler.mark('some_uid<>/"..\\'); + + handler.deleteEntry(); + expect(fakeServer.requests.length).toEqual(1); + var request = fakeServer.requests[0]; + expect(request.url).toEqual(OC.webroot + '/index.php/dummyendpoint.php/some_uid%3C%3E%2F%22..%5C'); + }); it('cancels deletion when undo is clicked', function() { var handler = init(markCallback, removeCallback, undoCallback); handler.setNotification(OC.Notification, 'dataid', 'removed %oid entry <span class="undo">Undo</span>', undoCallback); diff --git a/tests/core/controller/LoginControllerTest.php b/tests/core/controller/LoginControllerTest.php new file mode 100644 index 00000000000..f9a6080892b --- /dev/null +++ b/tests/core/controller/LoginControllerTest.php @@ -0,0 +1,267 @@ +<?php +/** + * @author Lukas Reschke <lukas@owncloud.com> + * + * @copyright Copyright (c) 2016, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OC\Core\Controller; + +use OCP\AppFramework\Http\RedirectResponse; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\IConfig; +use OCP\IRequest; +use OCP\ISession; +use OCP\IURLGenerator; +use OCP\IUserManager; +use OCP\IUserSession; +use Test\TestCase; + +class LoginControllerTest extends TestCase { + /** @var LoginController */ + private $loginController; + /** @var IRequest */ + private $request; + /** @var IUserManager */ + private $userManager; + /** @var IConfig */ + private $config; + /** @var ISession */ + private $session; + /** @var IUserSession */ + private $userSession; + /** @var IURLGenerator */ + private $urlGenerator; + + public function setUp() { + parent::setUp(); + $this->request = $this->getMock('\\OCP\\IRequest'); + $this->userManager = $this->getMock('\\OCP\\IUserManager'); + $this->config = $this->getMock('\\OCP\\IConfig'); + $this->session = $this->getMock('\\OCP\\ISession'); + $this->userSession = $this->getMock('\\OCP\\IUserSession'); + $this->urlGenerator = $this->getMock('\\OCP\\IURLGenerator'); + + $this->loginController = new LoginController( + 'core', + $this->request, + $this->userManager, + $this->config, + $this->session, + $this->userSession, + $this->urlGenerator + ); + } + + public function testLogoutWithoutToken() { + $this->request + ->expects($this->once()) + ->method('getCookie') + ->with('oc_token') + ->willReturn(null); + $this->config + ->expects($this->never()) + ->method('deleteUserValue'); + $this->urlGenerator + ->expects($this->once()) + ->method('linkToRouteAbsolute') + ->with('core.login.showLoginForm') + ->willReturn('/login'); + + $expected = new RedirectResponse('/login'); + $this->assertEquals($expected, $this->loginController->logout()); + } + + public function testLogoutWithToken() { + $this->request + ->expects($this->once()) + ->method('getCookie') + ->with('oc_token') + ->willReturn('MyLoginToken'); + $user = $this->getMock('\\OCP\\IUser'); + $user + ->expects($this->once()) + ->method('getUID') + ->willReturn('JohnDoe'); + $this->userSession + ->expects($this->once()) + ->method('getUser') + ->willReturn($user); + $this->config + ->expects($this->once()) + ->method('deleteUserValue') + ->with('JohnDoe', 'login_token', 'MyLoginToken'); + $this->urlGenerator + ->expects($this->once()) + ->method('linkToRouteAbsolute') + ->with('core.login.showLoginForm') + ->willReturn('/login'); + + $expected = new RedirectResponse('/login'); + $this->assertEquals($expected, $this->loginController->logout()); + } + + public function testShowLoginFormForLoggedInUsers() { + $this->userSession + ->expects($this->once()) + ->method('isLoggedIn') + ->willReturn(true); + + $expectedResponse = new RedirectResponse(\OC_Util::getDefaultPageUrl()); + $this->assertEquals($expectedResponse, $this->loginController->showLoginForm('', '', '')); + } + + public function testShowLoginFormWithErrorsInSession() { + $this->userSession + ->expects($this->once()) + ->method('isLoggedIn') + ->willReturn(false); + $this->session + ->expects($this->once()) + ->method('get') + ->with('loginMessages') + ->willReturn( + [ + [ + 'ErrorArray1', + 'ErrorArray2', + ], + [ + 'MessageArray1', + 'MessageArray2', + ], + ] + ); + + $expectedResponse = new TemplateResponse( + 'core', + 'login', + [ + 'ErrorArray1' => true, + 'ErrorArray2' => true, + 'messages' => [ + 'MessageArray1', + 'MessageArray2', + ], + 'loginName' => '', + 'user_autofocus' => true, + 'canResetPassword' => true, + 'alt_login' => [], + 'rememberLoginAllowed' => \OC_Util::rememberLoginAllowed(), + 'rememberLoginState' => 0, + ], + 'guest' + ); + $this->assertEquals($expectedResponse, $this->loginController->showLoginForm('', '', '')); + } + + /** + * @return array + */ + public function passwordResetDataProvider() { + return [ + [ + true, + true, + ], + [ + false, + false, + ], + ]; + } + + /** + * @dataProvider passwordResetDataProvider + */ + public function testShowLoginFormWithPasswordResetOption($canChangePassword, + $expectedResult) { + $this->userSession + ->expects($this->once()) + ->method('isLoggedIn') + ->willReturn(false); + $this->config + ->expects($this->once()) + ->method('getSystemValue') + ->with('lost_password_link') + ->willReturn(false); + $user = $this->getMock('\\OCP\\IUser'); + $user + ->expects($this->once()) + ->method('canChangePassword') + ->willReturn($canChangePassword); + $this->userManager + ->expects($this->once()) + ->method('get') + ->with('LdapUser') + ->willReturn($user); + + $expectedResponse = new TemplateResponse( + 'core', + 'login', + [ + 'messages' => [], + 'loginName' => 'LdapUser', + 'user_autofocus' => false, + 'canResetPassword' => $expectedResult, + 'alt_login' => [], + 'rememberLoginAllowed' => \OC_Util::rememberLoginAllowed(), + 'rememberLoginState' => 0, + ], + 'guest' + ); + $this->assertEquals($expectedResponse, $this->loginController->showLoginForm('LdapUser', '', '')); + } + + public function testShowLoginFormForUserNamedNull() { + $this->userSession + ->expects($this->once()) + ->method('isLoggedIn') + ->willReturn(false); + $this->config + ->expects($this->once()) + ->method('getSystemValue') + ->with('lost_password_link') + ->willReturn(false); + $user = $this->getMock('\\OCP\\IUser'); + $user + ->expects($this->once()) + ->method('canChangePassword') + ->willReturn(false); + $this->userManager + ->expects($this->once()) + ->method('get') + ->with('0') + ->willReturn($user); + + $expectedResponse = new TemplateResponse( + 'core', + 'login', + [ + 'messages' => [], + 'loginName' => '0', + 'user_autofocus' => false, + 'canResetPassword' => false, + 'alt_login' => [], + 'rememberLoginAllowed' => \OC_Util::rememberLoginAllowed(), + 'rememberLoginState' => 0, + ], + 'guest' + ); + $this->assertEquals($expectedResponse, $this->loginController->showLoginForm('0', '', '')); + } +} diff --git a/tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php b/tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php index 9e71a3d0961..dd4ec3af96f 100644 --- a/tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php +++ b/tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php @@ -343,9 +343,14 @@ class SecurityMiddlewareTest extends \Test\TestCase { $this->middleware = $this->getMiddleware(false, false); $this->urlGenerator ->expects($this->once()) - ->method('getAbsoluteURL') - ->with('index.php') - ->will($this->returnValue('http://localhost/index.php')); + ->method('linkToRoute') + ->with( + 'core.login.showLoginForm', + [ + 'redirect_url' => 'owncloud%2Findex.php%2Fapps%2Fspecialapp', + ] + ) + ->will($this->returnValue('http://localhost/index.php/login?redirect_url=owncloud%2Findex.php%2Fapps%2Fspecialapp')); $this->logger ->expects($this->once()) ->method('debug') @@ -356,7 +361,7 @@ class SecurityMiddlewareTest extends \Test\TestCase { new NotLoggedInException() ); - $expected = new RedirectResponse('http://localhost/index.php?redirect_url=owncloud%2Findex.php%2Fapps%2Fspecialapp'); + $expected = new RedirectResponse('http://localhost/index.php/login?redirect_url=owncloud%2Findex.php%2Fapps%2Fspecialapp'); $this->assertEquals($expected , $response); } diff --git a/tests/lib/share/share.php b/tests/lib/share/share.php index 4519c33f9d1..1965d80c580 100644 --- a/tests/lib/share/share.php +++ b/tests/lib/share/share.php @@ -611,162 +611,6 @@ class Test_Share extends \Test\TestCase { ); } - public function testShareWithGroup() { - // Invalid shares - $message = 'Sharing test.txt failed, because the group foobar does not exist'; - try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, 'foobar', \OCP\Constants::PERMISSION_READ); - $this->fail('Exception was expected: '.$message); - } catch (Exception $exception) { - $this->assertEquals($message, $exception->getMessage()); - } - $policy = \OC::$server->getAppConfig()->getValue('core', 'shareapi_only_share_with_group_members', 'no'); - \OC::$server->getAppConfig()->setValue('core', 'shareapi_only_share_with_group_members', 'yes'); - $message = 'Sharing test.txt failed, because '.$this->user1.' is not a member of the group '.$this->group2; - try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group2, \OCP\Constants::PERMISSION_READ); - $this->fail('Exception was expected: '.$message); - } catch (Exception $exception) { - $this->assertEquals($message, $exception->getMessage()); - } - \OC::$server->getAppConfig()->setValue('core', 'shareapi_only_share_with_group_members', $policy); - - // Valid share - $this->shareUserOneTestFileWithGroupOne(); - - // check if only the group share was created and not a single db-entry for each user - $statement = \OCP\DB::prepare('select `id` from `*PREFIX*share`'); - $query = $statement->execute(); - $result = $query->fetchAll(); - $this->assertSame(1, count($result)); - - - // Attempt to share again - OC_User::setUserId($this->user1); - $message = 'Sharing test.txt failed, because this item is already shared with '.$this->group1; - try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_READ); - $this->fail('Exception was expected: '.$message); - } catch (Exception $exception) { - $this->assertEquals($message, $exception->getMessage()); - } - - // Attempt to share back to owner of group share - OC_User::setUserId($this->user2); - $message = 'Sharing failed, because the user '.$this->user1.' is the original sharer'; - try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, \OCP\Constants::PERMISSION_READ); - $this->fail('Exception was expected: '.$message); - } catch (Exception $exception) { - $this->assertEquals($message, $exception->getMessage()); - } - - // Attempt to share back to group - $message = 'Sharing test.txt failed, because this item is already shared with '.$this->group1; - try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_READ); - $this->fail('Exception was expected: '.$message); - } catch (Exception $exception) { - $this->assertEquals($message, $exception->getMessage()); - } - - // Attempt to share back to member of group - $message ='Sharing test.txt failed, because this item is already shared with '.$this->user3; - try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, \OCP\Constants::PERMISSION_READ); - $this->fail('Exception was expected: '.$message); - } catch (Exception $exception) { - $this->assertEquals($message, $exception->getMessage()); - } - - // Unshare - OC_User::setUserId($this->user1); - $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1)); - - // Valid share with same person - user then group - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE | \OCP\Constants::PERMISSION_SHARE)); - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE)); - OC_User::setUserId($this->user2); - $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE | \OCP\Constants::PERMISSION_SHARE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); - OC_User::setUserId($this->user3); - $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); - - // Valid reshare - OC_User::setUserId($this->user2); - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, \OCP\Constants::PERMISSION_READ)); - OC_User::setUserId($this->user4); - $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - - // Unshare from user only - OC_User::setUserId($this->user1); - $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2)); - OC_User::setUserId($this->user2); - $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); - OC_User::setUserId($this->user4); - $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - - // Valid share with same person - group then user - OC_User::setUserId($this->user1); - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE)); - OC_User::setUserId($this->user2); - $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); - - // Unshare from group only - OC_User::setUserId($this->user1); - $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1)); - OC_User::setUserId($this->user2); - $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); - - // Attempt user specific target conflict - OC_User::setUserId($this->user3); - \OCP\Util::connectHook('OCP\\Share', 'post_shared', 'DummyHookListener', 'listen'); - - $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE)); - $this->assertEquals(OCP\Share::SHARE_TYPE_GROUP, DummyHookListener::$shareType); - OC_User::setUserId($this->user2); - $to_test = OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET); - $this->assertEquals(2, count($to_test)); - $this->assertTrue(in_array('test.txt', $to_test)); - $this->assertTrue(in_array('test1.txt', $to_test)); - - // Valid reshare - $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE)); - OC_User::setUserId($this->user4); - $this->assertEquals(array('test1.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - - // Remove user from group - OC_Group::removeFromGroup($this->user2, $this->group1); - OC_User::setUserId($this->user2); - $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - OC_User::setUserId($this->user4); - $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - - // Add user to group - OC_Group::addToGroup($this->user4, $this->group1); - $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - - // Unshare from self - $this->assertTrue(OCP\Share::unshareFromSelf('test', 'test.txt')); - $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - OC_User::setUserId($this->user2); - $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - - // Unshare from self via source - OC_User::setUserId($this->user1); - $this->assertTrue(OCP\Share::unshareFromSelf('test', 'share.txt', true)); - $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - - // Remove group - OC_Group::deleteGroup($this->group1); - OC_User::setUserId($this->user4); - $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - OC_User::setUserId($this->user3); - $this->assertEquals(array(), OCP\Share::getItemsShared('test')); - } - /** * Test that unsharing from group will also delete all * child entries diff --git a/tests/lib/share20/defaultshareprovidertest.php b/tests/lib/share20/defaultshareprovidertest.php index 6acc81ccee5..44a48535b9b 100644 --- a/tests/lib/share20/defaultshareprovidertest.php +++ b/tests/lib/share20/defaultshareprovidertest.php @@ -2093,4 +2093,62 @@ class DefaultShareProviderTest extends \Test\TestCase { $this->assertCount($shouldBeDeleted ? 0 : count($ids), $data); } + + public function dataUserDeletedFromGroup() { + return [ + ['group1', 'user1', true], + ['group1', 'user2', false], + ['group2', 'user1', false], + ]; + } + + /** + * Given a group share with 'group1' + * And a user specific group share with 'user1'. + * User $user is deleted from group $gid. + * + * @dataProvider dataUserDeletedFromGroup + * + * @param string $group + * @param string $user + * @param bool $toDelete + */ + public function testUserDeletedFromGroup($group, $user, $toDelete) { + $qb = $this->dbConn->getQueryBuilder(); + $qb->insert('share') + ->setValue('share_type', $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_GROUP)) + ->setValue('uid_owner', $qb->createNamedParameter('owner')) + ->setValue('uid_initiator', $qb->createNamedParameter('initiator')) + ->setValue('share_with', $qb->createNamedParameter('group1')) + ->setValue('item_type', $qb->createNamedParameter('file')) + ->setValue('item_source', $qb->createNamedParameter(42)) + ->setValue('file_source', $qb->createNamedParameter(42)); + $qb->execute(); + $id1 = $qb->getLastInsertId(); + + $qb = $this->dbConn->getQueryBuilder(); + $qb->insert('share') + ->setValue('share_type', $qb->createNamedParameter(2)) + ->setValue('uid_owner', $qb->createNamedParameter('owner')) + ->setValue('uid_initiator', $qb->createNamedParameter('initiator')) + ->setValue('share_with', $qb->createNamedParameter('user1')) + ->setValue('item_type', $qb->createNamedParameter('file')) + ->setValue('item_source', $qb->createNamedParameter(42)) + ->setValue('file_source', $qb->createNamedParameter(42)) + ->setValue('parent', $qb->createNamedParameter($id1)); + $qb->execute(); + $id2 = $qb->getLastInsertId(); + + $this->provider->userDeletedFromGroup($user, $group); + + $qb = $this->dbConn->getQueryBuilder(); + $qb->select('*') + ->from('share') + ->where($qb->expr()->eq('id', $qb->createNamedParameter($id2))); + $cursor = $qb->execute(); + $data = $cursor->fetchAll(); + $cursor->closeCursor(); + + $this->assertCount($toDelete ? 0 : 1, $data); + } } diff --git a/tests/lib/updater.php b/tests/lib/updater.php index 8ee77b9f81e..f97eb3ac139 100644 --- a/tests/lib/updater.php +++ b/tests/lib/updater.php @@ -29,8 +29,6 @@ use OC\IntegrityCheck\Checker; class UpdaterTest extends \Test\TestCase { /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */ private $config; - /** @var HTTPHelper */ - private $httpHelper; /** @var ILogger */ private $logger; /** @var Updater */ @@ -43,9 +41,6 @@ class UpdaterTest extends \Test\TestCase { $this->config = $this->getMockBuilder('\\OCP\\IConfig') ->disableOriginalConstructor() ->getMock(); - $this->httpHelper = $this->getMockBuilder('\\OC\\HTTPHelper') - ->disableOriginalConstructor() - ->getMock(); $this->logger = $this->getMockBuilder('\\OCP\\ILogger') ->disableOriginalConstructor() ->getMock(); @@ -54,7 +49,6 @@ class UpdaterTest extends \Test\TestCase { ->getMock(); $this->updater = new Updater( - $this->httpHelper, $this->config, $this->checker, $this->logger @@ -184,237 +178,4 @@ class UpdaterTest extends \Test\TestCase { $this->assertSame(false, $this->invokePrivate($this->updater, 'skip3rdPartyAppsDisable')); } - public function testCheckInCache() { - $expectedResult = [ - 'version' => '8.0.4.2', - 'versionstring' => 'ownCloud 8.0.4', - 'url' => 'https://download.owncloud.org/community/owncloud-8.0.4.zip', - 'web' => 'http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html', - ]; - - $this->config - ->expects($this->at(0)) - ->method('getAppValue') - ->with('core', 'lastupdatedat') - ->will($this->returnValue(time())); - $this->config - ->expects($this->at(1)) - ->method('getAppValue') - ->with('core', 'lastupdateResult') - ->will($this->returnValue(json_encode($expectedResult))); - - $this->assertSame($expectedResult, $this->updater->check()); - } - - public function testCheckWithoutUpdateUrl() { - $expectedResult = [ - 'version' => '8.0.4.2', - 'versionstring' => 'ownCloud 8.0.4', - 'url' => 'https://download.owncloud.org/community/owncloud-8.0.4.zip', - 'web' => 'http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html', - ]; - - $this->config - ->expects($this->at(0)) - ->method('getAppValue') - ->with('core', 'lastupdatedat') - ->will($this->returnValue(0)); - $this->config - ->expects($this->at(1)) - ->method('setAppValue') - ->with('core', 'lastupdatedat', $this->isType('integer')); - $this->config - ->expects($this->at(3)) - ->method('getAppValue') - ->with('core', 'installedat') - ->will($this->returnValue('installedat')); - $this->config - ->expects($this->at(4)) - ->method('getAppValue') - ->with('core', 'lastupdatedat') - ->will($this->returnValue('lastupdatedat')); - $this->config - ->expects($this->at(5)) - ->method('setAppValue') - ->with('core', 'lastupdateResult', json_encode($expectedResult)); - - $updateXml = '<?xml version="1.0"?> -<owncloud> - <version>8.0.4.2</version> - <versionstring>ownCloud 8.0.4</versionstring> - <url>https://download.owncloud.org/community/owncloud-8.0.4.zip</url> - <web>http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html</web> -</owncloud>'; - $this->httpHelper - ->expects($this->once()) - ->method('getUrlContent') - ->with($this->buildUpdateUrl('https://updates.owncloud.com/server/')) - ->will($this->returnValue($updateXml)); - - $this->assertSame($expectedResult, $this->updater->check()); - } - - public function testCheckWithInvalidXml() { - $this->config - ->expects($this->at(0)) - ->method('getAppValue') - ->with('core', 'lastupdatedat') - ->will($this->returnValue(0)); - $this->config - ->expects($this->at(1)) - ->method('setAppValue') - ->with('core', 'lastupdatedat', $this->isType('integer')); - $this->config - ->expects($this->at(3)) - ->method('getAppValue') - ->with('core', 'installedat') - ->will($this->returnValue('installedat')); - $this->config - ->expects($this->at(4)) - ->method('getAppValue') - ->with('core', 'lastupdatedat') - ->will($this->returnValue('lastupdatedat')); - $this->config - ->expects($this->at(5)) - ->method('setAppValue') - ->with('core', 'lastupdateResult', 'false'); - - $updateXml = 'Invalid XML Response!'; - $this->httpHelper - ->expects($this->once()) - ->method('getUrlContent') - ->with($this->buildUpdateUrl('https://updates.owncloud.com/server/')) - ->will($this->returnValue($updateXml)); - - $this->assertSame([], $this->updater->check()); - } - - public function testCheckWithUpdateUrl() { - $expectedResult = [ - 'version' => '8.0.4.2', - 'versionstring' => 'ownCloud 8.0.4', - 'url' => 'https://download.owncloud.org/community/owncloud-8.0.4.zip', - 'web' => 'http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html', - ]; - - $this->config - ->expects($this->at(0)) - ->method('getAppValue') - ->with('core', 'lastupdatedat') - ->will($this->returnValue(0)); - $this->config - ->expects($this->at(1)) - ->method('setAppValue') - ->with('core', 'lastupdatedat', $this->isType('integer')); - $this->config - ->expects($this->at(3)) - ->method('getAppValue') - ->with('core', 'installedat') - ->will($this->returnValue('installedat')); - $this->config - ->expects($this->at(4)) - ->method('getAppValue') - ->with('core', 'lastupdatedat') - ->will($this->returnValue('lastupdatedat')); - $this->config - ->expects($this->at(5)) - ->method('setAppValue') - ->with('core', 'lastupdateResult', json_encode($expectedResult)); - - $updateXml = '<?xml version="1.0"?> -<owncloud> - <version>8.0.4.2</version> - <versionstring>ownCloud 8.0.4</versionstring> - <url>https://download.owncloud.org/community/owncloud-8.0.4.zip</url> - <web>http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html</web> -</owncloud>'; - $this->httpHelper - ->expects($this->once()) - ->method('getUrlContent') - ->with($this->buildUpdateUrl('https://myupdater.com/')) - ->will($this->returnValue($updateXml)); - - $this->assertSame($expectedResult, $this->updater->check('https://myupdater.com/')); - } - - public function testCheckWithEmptyValidXmlResponse() { - $expectedResult = [ - 'version' => '', - 'versionstring' => '', - 'url' => '', - 'web' => '', - ]; - - $this->config - ->expects($this->at(0)) - ->method('getAppValue') - ->with('core', 'lastupdatedat') - ->will($this->returnValue(0)); - $this->config - ->expects($this->at(1)) - ->method('setAppValue') - ->with('core', 'lastupdatedat', $this->isType('integer')); - $this->config - ->expects($this->at(3)) - ->method('getAppValue') - ->with('core', 'installedat') - ->will($this->returnValue('installedat')); - $this->config - ->expects($this->at(4)) - ->method('getAppValue') - ->with('core', 'lastupdatedat') - ->will($this->returnValue('lastupdatedat')); - - $updateXml = '<?xml version="1.0"?> -<owncloud> - <version></version> - <versionstring></versionstring> - <url></url> - <web></web> -</owncloud>'; - $this->httpHelper - ->expects($this->once()) - ->method('getUrlContent') - ->with($this->buildUpdateUrl('https://updates.owncloud.com/server/')) - ->will($this->returnValue($updateXml)); - - $this->assertSame($expectedResult, $this->updater->check()); - } - - public function testCheckWithEmptyInvalidXmlResponse() { - $expectedResult = []; - - $this->config - ->expects($this->at(0)) - ->method('getAppValue') - ->with('core', 'lastupdatedat') - ->will($this->returnValue(0)); - $this->config - ->expects($this->at(1)) - ->method('setAppValue') - ->with('core', 'lastupdatedat', $this->isType('integer')); - $this->config - ->expects($this->at(3)) - ->method('getAppValue') - ->with('core', 'installedat') - ->will($this->returnValue('installedat')); - $this->config - ->expects($this->at(4)) - ->method('getAppValue') - ->with('core', 'lastupdatedat') - ->will($this->returnValue('lastupdatedat')); - $this->config - ->expects($this->at(5)) - ->method('setAppValue') - ->with('core', 'lastupdateResult', json_encode($expectedResult)); - - $updateXml = ''; - $this->httpHelper - ->expects($this->once()) - ->method('getUrlContent') - ->with($this->buildUpdateUrl('https://updates.owncloud.com/server/')) - ->will($this->returnValue($updateXml)); - - $this->assertSame($expectedResult, $this->updater->check()); - } } diff --git a/tests/lib/updater/versioncheck.php b/tests/lib/updater/versioncheck.php new file mode 100644 index 00000000000..4613581a75f --- /dev/null +++ b/tests/lib/updater/versioncheck.php @@ -0,0 +1,289 @@ +<?php +/** + * @author Lukas Reschke <lukas@owncloud.com> + * @author Victor Dubiniuk <dubiniuk@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OC; + +use OC\Updater\VersionCheck; +use OCP\IConfig; +use OCP\Util; + +class VersionCheckTest extends \Test\TestCase { + /** @var IConfig| \PHPUnit_Framework_MockObject_MockObject */ + private $config; + /** @var VersionCheck | \PHPUnit_Framework_MockObject_MockObject*/ + private $updater; + + public function setUp() { + parent::setUp(); + $this->config = $this->getMockBuilder('\OCP\IConfig') + ->disableOriginalConstructor() + ->getMock(); + $clientService = $this->getMockBuilder('\OCP\Http\Client\IClientService') + ->disableOriginalConstructor() + ->getMock(); + + $this->updater = $this->getMock('\OC\Updater\VersionCheck', + ['getUrlContent'], [$clientService, $this->config]); + } + + /** + * @param string $baseUrl + * @return string + */ + private function buildUpdateUrl($baseUrl) { + return $baseUrl . '?version='.implode('x', Util::getVersion()).'xinstalledatxlastupdatedatx'.\OC_Util::getChannel().'x'.\OC_Util::getEditionString().'x'; + } + + public function testCheckInCache() { + $expectedResult = [ + 'version' => '8.0.4.2', + 'versionstring' => 'ownCloud 8.0.4', + 'url' => 'https://download.owncloud.org/community/owncloud-8.0.4.zip', + 'web' => 'http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html', + ]; + + $this->config + ->expects($this->at(0)) + ->method('getAppValue') + ->with('core', 'lastupdatedat') + ->will($this->returnValue(time())); + $this->config + ->expects($this->at(1)) + ->method('getAppValue') + ->with('core', 'lastupdateResult') + ->will($this->returnValue(json_encode($expectedResult))); + + $this->assertSame($expectedResult, $this->updater->check()); + } + + public function testCheckWithoutUpdateUrl() { + $expectedResult = [ + 'version' => '8.0.4.2', + 'versionstring' => 'ownCloud 8.0.4', + 'url' => 'https://download.owncloud.org/community/owncloud-8.0.4.zip', + 'web' => 'http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html', + ]; + + $this->config + ->expects($this->at(0)) + ->method('getAppValue') + ->with('core', 'lastupdatedat') + ->will($this->returnValue(0)); + $this->config + ->expects($this->at(1)) + ->method('setAppValue') + ->with('core', 'lastupdatedat', $this->isType('integer')); + $this->config + ->expects($this->at(3)) + ->method('getAppValue') + ->with('core', 'installedat') + ->will($this->returnValue('installedat')); + $this->config + ->expects($this->at(4)) + ->method('getAppValue') + ->with('core', 'lastupdatedat') + ->will($this->returnValue('lastupdatedat')); + $this->config + ->expects($this->at(5)) + ->method('setAppValue') + ->with('core', 'lastupdateResult', json_encode($expectedResult)); + + $updateXml = '<?xml version="1.0"?> +<owncloud> + <version>8.0.4.2</version> + <versionstring>ownCloud 8.0.4</versionstring> + <url>https://download.owncloud.org/community/owncloud-8.0.4.zip</url> + <web>http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html</web> +</owncloud>'; + $this->updater + ->expects($this->once()) + ->method('getUrlContent') + ->with($this->buildUpdateUrl('https://updates.owncloud.com/server/')) + ->will($this->returnValue($updateXml)); + + $this->assertSame($expectedResult, $this->updater->check()); + } + + public function testCheckWithInvalidXml() { + $this->config + ->expects($this->at(0)) + ->method('getAppValue') + ->with('core', 'lastupdatedat') + ->will($this->returnValue(0)); + $this->config + ->expects($this->at(1)) + ->method('setAppValue') + ->with('core', 'lastupdatedat', $this->isType('integer')); + $this->config + ->expects($this->at(3)) + ->method('getAppValue') + ->with('core', 'installedat') + ->will($this->returnValue('installedat')); + $this->config + ->expects($this->at(4)) + ->method('getAppValue') + ->with('core', 'lastupdatedat') + ->will($this->returnValue('lastupdatedat')); + $this->config + ->expects($this->at(5)) + ->method('setAppValue') + ->with('core', 'lastupdateResult', 'false'); + + $updateXml = 'Invalid XML Response!'; + $this->updater + ->expects($this->once()) + ->method('getUrlContent') + ->with($this->buildUpdateUrl('https://updates.owncloud.com/server/')) + ->will($this->returnValue($updateXml)); + + $this->assertSame([], $this->updater->check()); + } + + public function testCheckWithUpdateUrl() { + $expectedResult = [ + 'version' => '8.0.4.2', + 'versionstring' => 'ownCloud 8.0.4', + 'url' => 'https://download.owncloud.org/community/owncloud-8.0.4.zip', + 'web' => 'http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html', + ]; + + $this->config + ->expects($this->at(0)) + ->method('getAppValue') + ->with('core', 'lastupdatedat') + ->will($this->returnValue(0)); + $this->config + ->expects($this->at(1)) + ->method('setAppValue') + ->with('core', 'lastupdatedat', $this->isType('integer')); + $this->config + ->expects($this->at(3)) + ->method('getAppValue') + ->with('core', 'installedat') + ->will($this->returnValue('installedat')); + $this->config + ->expects($this->at(4)) + ->method('getAppValue') + ->with('core', 'lastupdatedat') + ->will($this->returnValue('lastupdatedat')); + $this->config + ->expects($this->at(5)) + ->method('setAppValue') + ->with('core', 'lastupdateResult', json_encode($expectedResult)); + + $updateXml = '<?xml version="1.0"?> +<owncloud> + <version>8.0.4.2</version> + <versionstring>ownCloud 8.0.4</versionstring> + <url>https://download.owncloud.org/community/owncloud-8.0.4.zip</url> + <web>http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html</web> +</owncloud>'; + $this->updater + ->expects($this->once()) + ->method('getUrlContent') + ->with($this->buildUpdateUrl('https://myupdater.com/')) + ->will($this->returnValue($updateXml)); + + $this->assertSame($expectedResult, $this->updater->check('https://myupdater.com/')); + } + + public function testCheckWithEmptyValidXmlResponse() { + $expectedResult = [ + 'version' => '', + 'versionstring' => '', + 'url' => '', + 'web' => '', + ]; + + $this->config + ->expects($this->at(0)) + ->method('getAppValue') + ->with('core', 'lastupdatedat') + ->will($this->returnValue(0)); + $this->config + ->expects($this->at(1)) + ->method('setAppValue') + ->with('core', 'lastupdatedat', $this->isType('integer')); + $this->config + ->expects($this->at(3)) + ->method('getAppValue') + ->with('core', 'installedat') + ->will($this->returnValue('installedat')); + $this->config + ->expects($this->at(4)) + ->method('getAppValue') + ->with('core', 'lastupdatedat') + ->will($this->returnValue('lastupdatedat')); + + $updateXml = '<?xml version="1.0"?> +<owncloud> + <version></version> + <versionstring></versionstring> + <url></url> + <web></web> +</owncloud>'; + $this->updater + ->expects($this->once()) + ->method('getUrlContent') + ->with($this->buildUpdateUrl('https://updates.owncloud.com/server/')) + ->will($this->returnValue($updateXml)); + + $this->assertSame($expectedResult, $this->updater->check()); + } + + public function testCheckWithEmptyInvalidXmlResponse() { + $expectedResult = []; + + $this->config + ->expects($this->at(0)) + ->method('getAppValue') + ->with('core', 'lastupdatedat') + ->will($this->returnValue(0)); + $this->config + ->expects($this->at(1)) + ->method('setAppValue') + ->with('core', 'lastupdatedat', $this->isType('integer')); + $this->config + ->expects($this->at(3)) + ->method('getAppValue') + ->with('core', 'installedat') + ->will($this->returnValue('installedat')); + $this->config + ->expects($this->at(4)) + ->method('getAppValue') + ->with('core', 'lastupdatedat') + ->will($this->returnValue('lastupdatedat')); + $this->config + ->expects($this->at(5)) + ->method('setAppValue') + ->with('core', 'lastupdateResult', json_encode($expectedResult)); + + $updateXml = ''; + $this->updater + ->expects($this->once()) + ->method('getUrlContent') + ->with($this->buildUpdateUrl('https://updates.owncloud.com/server/')) + ->will($this->returnValue($updateXml)); + + $this->assertSame($expectedResult, $this->updater->check()); + } +} diff --git a/tests/phpunit-autotest-external.xml b/tests/phpunit-autotest-external.xml index 31d2e395a01..1b48c4dc11e 100644 --- a/tests/phpunit-autotest-external.xml +++ b/tests/phpunit-autotest-external.xml @@ -8,7 +8,7 @@ <testsuite name='ownCloud files external'> <directory suffix=".php">../apps/files_external/tests</directory> <!-- exclude backends as they are called separately --> - <exclude>../apps/files_external/tests/backends/</exclude> + <exclude>../apps/files_external/tests/storage/</exclude> </testsuite> <!-- filters for code coverage --> <filter> |