aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.htaccess13
-rw-r--r--.scrutinizer.yml2
-rw-r--r--.travis.yml11
m---------3rdparty0
-rw-r--r--apps/comments/l10n/hu_HU.js6
-rw-r--r--apps/comments/l10n/hu_HU.json6
-rw-r--r--apps/dav/command/migratecalendars.php4
-rw-r--r--apps/dav/command/syncbirthdaycalendar.php4
-rw-r--r--apps/dav/lib/caldav/birthdayservice.php4
-rw-r--r--apps/dav/lib/caldav/caldavbackend.php8
-rw-r--r--apps/dav/lib/caldav/calendar.php13
-rw-r--r--apps/dav/lib/connector/sabre/filesplugin.php20
-rw-r--r--apps/dav/lib/connector/sabre/serverfactory.php1
-rw-r--r--apps/dav/lib/files/fileshome.php5
-rw-r--r--apps/dav/tests/unit/caldav/caldavbackendtest.php19
-rw-r--r--apps/dav/tests/unit/caldav/calendartest.php7
-rw-r--r--apps/dav/tests/unit/carddav/birthdayservicetest.php2
-rw-r--r--apps/dav/tests/unit/connector/sabre/filesplugin.php52
-rw-r--r--apps/encryption/l10n/pl.js11
-rw-r--r--apps/encryption/l10n/pl.json11
-rw-r--r--apps/encryption/lib/crypto/encryption.php6
-rw-r--r--apps/encryption/tests/lib/crypto/encryptionTest.php38
-rw-r--r--apps/federatedfilesharing/l10n/de.js2
-rw-r--r--apps/federatedfilesharing/l10n/de.json2
-rw-r--r--apps/federatedfilesharing/l10n/de_DE.js2
-rw-r--r--apps/federatedfilesharing/l10n/de_DE.json2
-rw-r--r--apps/federatedfilesharing/l10n/is.js9
-rw-r--r--apps/federatedfilesharing/l10n/is.json7
-rw-r--r--apps/federatedfilesharing/l10n/pl.js3
-rw-r--r--apps/federatedfilesharing/l10n/pl.json3
-rw-r--r--apps/federatedfilesharing/l10n/sl.js4
-rw-r--r--apps/federatedfilesharing/l10n/sl.json4
-rw-r--r--apps/federation/l10n/pt_PT.js6
-rw-r--r--apps/federation/l10n/pt_PT.json6
-rw-r--r--apps/federation/l10n/sl.js10
-rw-r--r--apps/federation/l10n/sl.json10
-rw-r--r--apps/federation/l10n/sv.js10
-rw-r--r--apps/federation/l10n/sv.json10
-rw-r--r--apps/federation/l10n/zh_CN.js6
-rw-r--r--apps/federation/l10n/zh_CN.json6
-rw-r--r--apps/files/l10n/is.js25
-rw-r--r--apps/files/l10n/is.json25
-rw-r--r--apps/files/l10n/pl.js4
-rw-r--r--apps/files/l10n/pl.json4
-rw-r--r--apps/files/l10n/ru.js1
-rw-r--r--apps/files/l10n/ru.json1
-rw-r--r--apps/files/l10n/zh_CN.js1
-rw-r--r--apps/files/l10n/zh_CN.json1
-rw-r--r--apps/files_external/l10n/cs_CZ.js2
-rw-r--r--apps/files_external/l10n/cs_CZ.json2
-rw-r--r--apps/files_external/l10n/sl.js5
-rw-r--r--apps/files_external/l10n/sl.json5
-rw-r--r--apps/files_external/lib/config/configadapter.php2
-rw-r--r--apps/files_external/lib/smb.php54
-rw-r--r--apps/files_external/service/dbconfigservice.php4
-rw-r--r--apps/files_sharing/api/local.php645
-rw-r--r--apps/files_sharing/api/ocssharewrapper.php2
-rw-r--r--apps/files_sharing/api/server2server.php2
-rw-r--r--apps/files_sharing/api/share20ocs.php3
-rw-r--r--apps/files_sharing/api/sharees.php14
-rw-r--r--apps/files_sharing/l10n/de.js38
-rw-r--r--apps/files_sharing/l10n/de.json38
-rw-r--r--apps/files_sharing/l10n/de_DE.js24
-rw-r--r--apps/files_sharing/l10n/de_DE.json24
-rw-r--r--apps/files_sharing/l10n/nb_NO.js2
-rw-r--r--apps/files_sharing/l10n/nb_NO.json2
-rw-r--r--apps/files_sharing/l10n/sl.js14
-rw-r--r--apps/files_sharing/l10n/sl.json14
-rw-r--r--apps/files_sharing/l10n/zh_CN.js9
-rw-r--r--apps/files_sharing/l10n/zh_CN.json9
-rw-r--r--apps/files_sharing/lib/external/scanner.php5
-rw-r--r--apps/files_sharing/lib/external/storage.php5
-rw-r--r--apps/files_sharing/lib/sharedstorage.php24
-rw-r--r--apps/files_sharing/tests/api.php1524
-rw-r--r--apps/files_sharing/tests/api/share20ocstest.php22
-rw-r--r--apps/files_sharing/tests/server2server.php32
-rw-r--r--apps/systemtags/l10n/pl.js3
-rw-r--r--apps/systemtags/l10n/pl.json3
-rw-r--r--apps/testing/appinfo/info.xml2
-rw-r--r--apps/updatenotification/l10n/de_DE.js1
-rw-r--r--apps/updatenotification/l10n/de_DE.json1
-rw-r--r--apps/updatenotification/l10n/is.js10
-rw-r--r--apps/updatenotification/l10n/is.json10
-rw-r--r--apps/updatenotification/l10n/ko.js1
-rw-r--r--apps/updatenotification/l10n/ko.json1
-rw-r--r--apps/updatenotification/l10n/pt_PT.js3
-rw-r--r--apps/updatenotification/l10n/pt_PT.json3
-rw-r--r--apps/updatenotification/l10n/sl.js3
-rw-r--r--apps/updatenotification/l10n/sl.json3
-rw-r--r--apps/updatenotification/l10n/zh_CN.js4
-rw-r--r--apps/updatenotification/l10n/zh_CN.json4
-rw-r--r--apps/user_ldap/l10n/cs_CZ.js2
-rw-r--r--apps/user_ldap/l10n/cs_CZ.json2
-rw-r--r--apps/user_ldap/l10n/he.js2
-rw-r--r--apps/user_ldap/l10n/he.json2
-rw-r--r--apps/user_ldap/l10n/pt_PT.js2
-rw-r--r--apps/user_ldap/l10n/pt_PT.json2
-rw-r--r--apps/user_ldap/l10n/sl.js2
-rw-r--r--apps/user_ldap/l10n/sl.json2
-rw-r--r--apps/user_ldap/l10n/zh_CN.js4
-rw-r--r--apps/user_ldap/l10n/zh_CN.json4
-rw-r--r--apps/user_ldap/lib/access.php8
-rw-r--r--apps/user_ldap/lib/ildapwrapper.php8
-rw-r--r--apps/user_ldap/lib/ldap.php15
-rw-r--r--build/integration/composer.json2
-rw-r--r--build/integration/features/bootstrap/BasicStructure.php42
-rw-r--r--build/integration/features/bootstrap/CalDavContext.php10
-rw-r--r--build/integration/features/bootstrap/CapabilitiesContext.php2
-rw-r--r--build/integration/features/bootstrap/CardDavContext.php16
-rw-r--r--build/integration/features/bootstrap/ChecksumsContext.php24
-rw-r--r--build/integration/features/bootstrap/CommentsContext.php31
-rw-r--r--build/integration/features/bootstrap/FeatureContext.php5
-rw-r--r--build/integration/features/bootstrap/FederationContext.php39
-rw-r--r--build/integration/features/bootstrap/Provisioning.php42
-rw-r--r--build/integration/features/bootstrap/Sharing.php102
-rw-r--r--build/integration/features/bootstrap/TagsContext.php35
-rw-r--r--build/integration/features/bootstrap/WebDav.php43
-rw-r--r--build/integration/features/sharees.feature202
-rw-r--r--build/integration/features/sharing-v1.feature7
-rw-r--r--build/integration/federation_features/federated.feature109
-rw-r--r--composer.json4
-rw-r--r--core/ajax/share.php6
-rw-r--r--core/js/files/iedavclient.js7
-rw-r--r--core/js/setupchecks.js2
-rw-r--r--core/js/tests/specs/setupchecksSpec.js2
-rw-r--r--core/l10n/cs_CZ.js1
-rw-r--r--core/l10n/cs_CZ.json1
-rw-r--r--core/l10n/de.js2
-rw-r--r--core/l10n/de.json2
-rw-r--r--core/l10n/de_DE.js1
-rw-r--r--core/l10n/de_DE.json1
-rw-r--r--core/l10n/en_GB.js2
-rw-r--r--core/l10n/en_GB.json2
-rw-r--r--core/l10n/es.js1
-rw-r--r--core/l10n/es.json1
-rw-r--r--core/l10n/fi_FI.js2
-rw-r--r--core/l10n/fi_FI.json2
-rw-r--r--core/l10n/fr.js1
-rw-r--r--core/l10n/fr.json1
-rw-r--r--core/l10n/he.js2
-rw-r--r--core/l10n/he.json2
-rw-r--r--core/l10n/hu_HU.js79
-rw-r--r--core/l10n/hu_HU.json79
-rw-r--r--core/l10n/is.js1
-rw-r--r--core/l10n/is.json1
-rw-r--r--core/l10n/it.js2
-rw-r--r--core/l10n/it.json2
-rw-r--r--core/l10n/ja.js1
-rw-r--r--core/l10n/ja.json1
-rw-r--r--core/l10n/ko.js1
-rw-r--r--core/l10n/ko.json1
-rw-r--r--core/l10n/nb_NO.js5
-rw-r--r--core/l10n/nb_NO.json5
-rw-r--r--core/l10n/nl.js2
-rw-r--r--core/l10n/nl.json2
-rw-r--r--core/l10n/pl.js19
-rw-r--r--core/l10n/pl.json19
-rw-r--r--core/l10n/pt_BR.js1
-rw-r--r--core/l10n/pt_BR.json1
-rw-r--r--core/l10n/pt_PT.js3
-rw-r--r--core/l10n/pt_PT.json3
-rw-r--r--core/l10n/ru.js3
-rw-r--r--core/l10n/ru.json3
-rw-r--r--core/l10n/sl.js34
-rw-r--r--core/l10n/sl.json34
-rw-r--r--core/l10n/sq.js2
-rw-r--r--core/l10n/sq.json2
-rw-r--r--core/l10n/sv.js36
-rw-r--r--core/l10n/sv.json36
-rw-r--r--core/l10n/th_TH.js1
-rw-r--r--core/l10n/th_TH.json1
-rw-r--r--core/l10n/tr.js1
-rw-r--r--core/l10n/tr.json1
-rw-r--r--core/l10n/uk.js1
-rw-r--r--core/l10n/uk.json1
-rw-r--r--core/l10n/zh_CN.js10
-rw-r--r--core/l10n/zh_CN.json10
-rw-r--r--core/l10n/zh_TW.js1
-rw-r--r--core/l10n/zh_TW.json1
-rw-r--r--lib/base.php10
-rw-r--r--lib/l10n/de.js2
-rw-r--r--lib/l10n/de.json2
-rw-r--r--lib/l10n/de_DE.js2
-rw-r--r--lib/l10n/de_DE.json2
-rw-r--r--lib/l10n/hu_HU.js2
-rw-r--r--lib/l10n/hu_HU.json2
-rw-r--r--lib/l10n/is.js26
-rw-r--r--lib/l10n/is.json26
-rw-r--r--lib/l10n/pl.js11
-rw-r--r--lib/l10n/pl.json11
-rw-r--r--lib/l10n/sl.js8
-rw-r--r--lib/l10n/sl.json8
-rw-r--r--lib/private/Server.php3
-rw-r--r--lib/private/api.php12
-rw-r--r--lib/private/db/connection.php2
-rw-r--r--lib/private/files.php2
-rw-r--r--lib/private/files/cache/failedcache.php (renamed from apps/files_external/lib/failedcache.php)17
-rw-r--r--lib/private/files/storage/dav.php4
-rw-r--r--lib/private/files/storage/failedstorage.php (renamed from apps/files_external/lib/failedstorage.php)4
-rw-r--r--lib/private/files/storage/wrapper/encryption.php13
-rw-r--r--lib/private/integritycheck/checker.php43
-rw-r--r--lib/private/log/owncloud.php8
-rw-r--r--lib/private/memcache/memcached.php21
-rw-r--r--lib/private/repair.php2
-rw-r--r--lib/private/repair/oldgroupmembershipshares.php2
-rw-r--r--lib/private/repair/sharepropagation.php52
-rw-r--r--lib/private/route/cachingrouter.php2
-rw-r--r--lib/private/search/result/file.php10
-rw-r--r--lib/private/security/trusteddomainhelper.php6
-rw-r--r--lib/private/setup.php2
-rw-r--r--lib/private/share/mailnotifications.php13
-rw-r--r--lib/private/share20/defaultshareprovider.php10
-rw-r--r--lib/private/share20/manager.php15
-rw-r--r--lib/private/user.php15
-rw-r--r--lib/private/util.php8
-rw-r--r--lib/public/backgroundjob.php2
-rw-r--r--lib/public/share/imanager.php7
-rw-r--r--lib/public/share/ishareprovider.php10
-rw-r--r--settings/l10n/cs_CZ.js4
-rw-r--r--settings/l10n/cs_CZ.json4
-rw-r--r--settings/l10n/de_DE.js1
-rw-r--r--settings/l10n/de_DE.json1
-rw-r--r--settings/l10n/is.js19
-rw-r--r--settings/l10n/is.json19
-rw-r--r--settings/l10n/nb_NO.js6
-rw-r--r--settings/l10n/nb_NO.json6
-rw-r--r--settings/l10n/pt_PT.js7
-rw-r--r--settings/l10n/pt_PT.json7
-rw-r--r--settings/l10n/sl.js43
-rw-r--r--settings/l10n/sl.json43
-rw-r--r--settings/l10n/zh_CN.js16
-rw-r--r--settings/l10n/zh_CN.json16
-rw-r--r--tests/data/integritycheck/htaccessWithValidModifiedContent/.htaccess24
-rw-r--r--tests/data/integritycheck/htaccessWithValidModifiedContent/.user.ini7
-rw-r--r--tests/lib/db/connection.php30
-rw-r--r--tests/lib/files/storage/wrapper/encryption.php42
-rw-r--r--tests/lib/integritycheck/checkertest.php53
-rw-r--r--tests/lib/memcache/cache.php9
-rw-r--r--tests/lib/repair/repairsharepropagation.php51
-rw-r--r--tests/lib/security/trusteddomainhelper.php10
-rw-r--r--tests/lib/share/MailNotificationsTest.php27
241 files changed, 2900 insertions, 2144 deletions
diff --git a/.htaccess b/.htaccess
index 085467e91ca..4837df6adbe 100644
--- a/.htaccess
+++ b/.htaccess
@@ -37,6 +37,17 @@
SetEnv htaccessWorking true
</IfModule>
</IfModule>
+<IfModule mod_php7.c>
+ php_value upload_max_filesize 513M
+ php_value post_max_size 513M
+ php_value memory_limit 512M
+ php_value mbstring.func_overload 0
+ php_value default_charset 'UTF-8'
+ php_value output_buffering 0
+ <IfModule mod_env.c>
+ SetEnv htaccessWorking true
+ </IfModule>
+</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
@@ -53,7 +64,7 @@
Options -MultiViews
RewriteRule ^core/js/oc.js$ index.php/core/js/oc.js [PT,E=PATH_INFO:$1]
RewriteRule ^core/preview.png$ index.php/core/preview.png [PT,E=PATH_INFO:$1]
- RewriteCond %{REQUEST_FILENAME} !\.(css|js|svg|gif|png|html|ttf|woff|ico)$
+ RewriteCond %{REQUEST_FILENAME} !\.(css|js|svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$
RewriteCond %{REQUEST_FILENAME} !core/img/favicon.ico$
RewriteCond %{REQUEST_FILENAME} !/remote.php
RewriteCond %{REQUEST_FILENAME} !/public.php
diff --git a/.scrutinizer.yml b/.scrutinizer.yml
index 72f6f1c30f9..07743ee9813 100644
--- a/.scrutinizer.yml
+++ b/.scrutinizer.yml
@@ -20,7 +20,7 @@ filter:
- 'settings/l10n/*'
- 'tests/*'
- 'build/*'
-
+ - 'lib/composer/*'
imports:
- javascript
diff --git a/.travis.yml b/.travis.yml
index 4f79311c33c..c00213975f9 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -13,7 +13,7 @@ env:
branches:
only:
- master
-# - /^stable\d+(\.\d+)?$/
+ - /^stable\d+(\.\d+)?$/
addons:
apt:
@@ -29,6 +29,7 @@ install:
script:
+ - sh -c "if [ '$TC' = 'syntax' ]; then composer install && lib/composer/bin/parallel-lint --exclude lib/composer/jakub-onderka/ --exclude 3rdparty .; fi"
- sh -c "if [ '$TEST_DAV' != '1' ]; then echo \"Not testing DAV\"; fi"
- sh -c "if [ '$TEST_DAV' = '1' ]; then echo \"Testing DAV\"; fi"
@@ -42,5 +43,13 @@ matrix:
env: DB=sqlite;TC=carddav
- php: 5.4
env: DB=sqlite;TC=caldav
+ - php: 5.4
+ env: DB=sqlite;TC=syntax
+ - php: 5.5
+ env: DB=sqlite;TC=syntax
+ - php: 5.6
+ env: DB=sqlite;TC=syntax
+ - php: 7.0
+ env: DB=sqlite;TC=syntax
fast_finish: true
diff --git a/3rdparty b/3rdparty
-Subproject c3b4612313742540cdf472a923a0dc6d2d80653
+Subproject 21c0860c5718c638a6c030f7771654c772fd98e
diff --git a/apps/comments/l10n/hu_HU.js b/apps/comments/l10n/hu_HU.js
index a7370f92f1c..b49d1456848 100644
--- a/apps/comments/l10n/hu_HU.js
+++ b/apps/comments/l10n/hu_HU.js
@@ -5,17 +5,17 @@ OC.L10N.register(
"%1$s commented" : "%1$s hozzászólt",
"%1$s commented on %2$s" : "%1$s hozzászólt ehhez: %2$s",
"Comments" : "Hozzászólások",
- "Type in a new comment..." : "Új hozzászólás beírása...",
+ "Type in a new comment..." : "Új hozzászólás írása...",
"Delete comment" : "Hozzászólás törlése",
"Post" : "Küldés",
"Cancel" : "Mégsem",
"Edit comment" : "Hozzászólás szerkesztése",
"[Deleted user]" : "[Törölt felhasználó]",
- "No other comments available" : "Nincs további hozzászólás.",
+ "No other comments available" : "Nincs több hozzászólás.",
"More comments..." : "Több hozzászólás...",
"Save" : "Mentés",
"Allowed characters {count} of {max}" : "Engedélyezett karakterek: {count} / {max}",
"{count} unread comments" : "{count} olvasatlan hozzászólás",
- "Comment" : "Komment"
+ "Comment" : "Hozzászólás"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/hu_HU.json b/apps/comments/l10n/hu_HU.json
index ee8ccda250a..ceba0641915 100644
--- a/apps/comments/l10n/hu_HU.json
+++ b/apps/comments/l10n/hu_HU.json
@@ -3,17 +3,17 @@
"%1$s commented" : "%1$s hozzászólt",
"%1$s commented on %2$s" : "%1$s hozzászólt ehhez: %2$s",
"Comments" : "Hozzászólások",
- "Type in a new comment..." : "Új hozzászólás beírása...",
+ "Type in a new comment..." : "Új hozzászólás írása...",
"Delete comment" : "Hozzászólás törlése",
"Post" : "Küldés",
"Cancel" : "Mégsem",
"Edit comment" : "Hozzászólás szerkesztése",
"[Deleted user]" : "[Törölt felhasználó]",
- "No other comments available" : "Nincs további hozzászólás.",
+ "No other comments available" : "Nincs több hozzászólás.",
"More comments..." : "Több hozzászólás...",
"Save" : "Mentés",
"Allowed characters {count} of {max}" : "Engedélyezett karakterek: {count} / {max}",
"{count} unread comments" : "{count} olvasatlan hozzászólás",
- "Comment" : "Komment"
+ "Comment" : "Hozzászólás"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/command/migratecalendars.php b/apps/dav/command/migratecalendars.php
index 5e7f6e9b697..d887309ac3e 100644
--- a/apps/dav/command/migratecalendars.php
+++ b/apps/dav/command/migratecalendars.php
@@ -61,8 +61,8 @@ class MigrateCalendars extends Command {
protected function execute(InputInterface $input, OutputInterface $output) {
$this->service->setup();
- if ($input->hasArgument('user')) {
- $user = $input->getArgument('user');
+ $user = $input->getArgument('user');
+ if (!is_null($user)) {
if (!$this->userManager->userExists($user)) {
throw new \InvalidArgumentException("User <$user> in unknown.");
}
diff --git a/apps/dav/command/syncbirthdaycalendar.php b/apps/dav/command/syncbirthdaycalendar.php
index 5a2baa31d93..90a73a3eeb3 100644
--- a/apps/dav/command/syncbirthdaycalendar.php
+++ b/apps/dav/command/syncbirthdaycalendar.php
@@ -61,8 +61,8 @@ class SyncBirthdayCalendar extends Command {
* @param OutputInterface $output
*/
protected function execute(InputInterface $input, OutputInterface $output) {
- if ($input->getArgument('user') !== null) {
- $user = $input->getArgument('user');
+ $user = $input->getArgument('user');
+ if (!is_null($user)) {
if (!$this->userManager->userExists($user)) {
throw new \InvalidArgumentException("User <$user> in unknown.");
}
diff --git a/apps/dav/lib/caldav/birthdayservice.php b/apps/dav/lib/caldav/birthdayservice.php
index 09bed2430e4..7e1df189c4e 100644
--- a/apps/dav/lib/caldav/birthdayservice.php
+++ b/apps/dav/lib/caldav/birthdayservice.php
@@ -128,7 +128,7 @@ class BirthdayService {
}
$title = str_replace('{name}',
strtr((string)$doc->FN, array('\,' => ',', '\;' => ';')),
- '{name}\'s Birthday'
+ '{name}'
);
try {
$date = new \DateTime($birthday);
@@ -151,7 +151,7 @@ class BirthdayService {
$vEvent->DTEND['VALUE'] = 'DATE';
$vEvent->{'UID'} = $doc->UID;
$vEvent->{'RRULE'} = 'FREQ=YEARLY';
- $vEvent->{'SUMMARY'} = $title . ' (' . $date->format('Y') . ')';
+ $vEvent->{'SUMMARY'} = $title . ' (*' . $date->format('Y') . ')';
$vEvent->{'TRANSP'} = 'TRANSPARENT';
$vCal->add($vEvent);
return $vCal;
diff --git a/apps/dav/lib/caldav/caldavbackend.php b/apps/dav/lib/caldav/caldavbackend.php
index 521d1b1de5e..bb50100d9a2 100644
--- a/apps/dav/lib/caldav/caldavbackend.php
+++ b/apps/dav/lib/caldav/caldavbackend.php
@@ -815,9 +815,9 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
function getCalendarObjectByUID($principalUri, $uid) {
$query = $this->db->getQueryBuilder();
- $query->select([$query->createFunction('c.`uri` AS `calendaruri`'), $query->createFunction('co.`uri` AS `objecturi`')])
+ $query->selectAlias('c.uri', 'calendaruri')->selectAlias('co.uri', 'objecturi')
->from('calendarobjects', 'co')
- ->leftJoin('co', 'calendars', 'c', 'co.`calendarid` = c.`id`')
+ ->leftJoin('co', 'calendars', 'c', $query->expr()->eq('co.calendarid', 'c.id'))
->where($query->expr()->eq('c.principaluri', $query->createNamedParameter($principalUri)))
->andWhere($query->expr()->eq('co.uid', $query->createNamedParameter($uid)));
@@ -1294,7 +1294,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
if (!$componentType) {
throw new \Sabre\DAV\Exception\BadRequest('Calendar objects must have a VJOURNAL, VEVENT or VTODO component');
}
- if ($componentType === 'VEVENT') {
+ if ($componentType === 'VEVENT' && $component->DTSTART) {
$firstOccurence = $component->DTSTART->getDateTime()->getTimeStamp();
// Finding the last occurence is a bit harder
if (!isset($component->RRULE)) {
@@ -1333,7 +1333,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
'etag' => md5($calendarData),
'size' => strlen($calendarData),
'componentType' => $componentType,
- 'firstOccurence' => $firstOccurence,
+ 'firstOccurence' => is_null($firstOccurence) ? null : max(0, $firstOccurence),
'lastOccurence' => $lastOccurence,
'uid' => $uid,
];
diff --git a/apps/dav/lib/caldav/calendar.php b/apps/dav/lib/caldav/calendar.php
index 55f1acec396..1e87f9b4333 100644
--- a/apps/dav/lib/caldav/calendar.php
+++ b/apps/dav/lib/caldav/calendar.php
@@ -22,11 +22,20 @@
namespace OCA\DAV\CalDAV;
use OCA\DAV\DAV\Sharing\IShareable;
+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) {
+ parent::__construct($caldavBackend, $calendarInfo);
+
+ if ($this->getName() === BirthdayService::BIRTHDAY_CALENDAR_URI) {
+ $this->calendarInfo['{http://sabredav.org/ns}read-only'] = true;
+ }
+ }
+
/**
* Updates the list of shares.
*
@@ -100,10 +109,6 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable {
}
function delete() {
- if ($this->getName() === BirthdayService::BIRTHDAY_CALENDAR_URI) {
- throw new Forbidden();
- }
-
if (isset($this->calendarInfo['{http://owncloud.org/ns}owner-principal'])) {
$principal = 'principal:' . parent::getOwner();
$shares = $this->getShares();
diff --git a/apps/dav/lib/connector/sabre/filesplugin.php b/apps/dav/lib/connector/sabre/filesplugin.php
index 4b05922adfd..e973b4e8682 100644
--- a/apps/dav/lib/connector/sabre/filesplugin.php
+++ b/apps/dav/lib/connector/sabre/filesplugin.php
@@ -235,6 +235,16 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
$propFind->handle(self::GETETAG_PROPERTYNAME, function() use ($node) {
return $node->getEtag();
});
+
+ $propFind->handle(self::OWNER_ID_PROPERTYNAME, function() use ($node) {
+ $owner = $node->getOwner();
+ return $owner->getUID();
+ });
+ $propFind->handle(self::OWNER_DISPLAY_NAME_PROPERTYNAME, function() use ($node) {
+ $owner = $node->getOwner();
+ $displayName = $owner->getDisplayName();
+ return $displayName;
+ });
}
if ($node instanceof \OCA\DAV\Connector\Sabre\File) {
@@ -267,16 +277,6 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
return $node->getSize();
});
}
-
- $propFind->handle(self::OWNER_ID_PROPERTYNAME, function() use ($node) {
- $owner = $node->getOwner();
- return $owner->getUID();
- });
- $propFind->handle(self::OWNER_DISPLAY_NAME_PROPERTYNAME, function() use ($node) {
- $owner = $node->getOwner();
- $displayName = $owner->getDisplayName();
- return $displayName;
- });
}
/**
diff --git a/apps/dav/lib/connector/sabre/serverfactory.php b/apps/dav/lib/connector/sabre/serverfactory.php
index fb20ef436e4..6ccec0bc0e8 100644
--- a/apps/dav/lib/connector/sabre/serverfactory.php
+++ b/apps/dav/lib/connector/sabre/serverfactory.php
@@ -110,6 +110,7 @@ class ServerFactory {
if($this->request->isUserAgent([
'/WebDAVFS/',
'/Microsoft Office OneNote 2013/',
+ '/Microsoft-WebDAV-MiniRedir/',
])) {
$server->addPlugin(new \OCA\DAV\Connector\Sabre\FakeLockerPlugin());
}
diff --git a/apps/dav/lib/files/fileshome.php b/apps/dav/lib/files/fileshome.php
index d56b95881c3..ef572d6618b 100644
--- a/apps/dav/lib/files/fileshome.php
+++ b/apps/dav/lib/files/fileshome.php
@@ -29,6 +29,11 @@ use Sabre\HTTP\URLUtil;
class FilesHome implements ICollection {
/**
+ * @var array
+ */
+ private $principalInfo;
+
+ /**
* FilesHome constructor.
*
* @param array $principalInfo
diff --git a/apps/dav/tests/unit/caldav/caldavbackendtest.php b/apps/dav/tests/unit/caldav/caldavbackendtest.php
index aece738166a..87a700a473d 100644
--- a/apps/dav/tests/unit/caldav/caldavbackendtest.php
+++ b/apps/dav/tests/unit/caldav/caldavbackendtest.php
@@ -57,11 +57,11 @@ class CalDavBackendTest extends TestCase {
->disableOriginalConstructor()
->setMethods(['getPrincipalByPath', 'getGroupMembership'])
->getMock();
- $this->principal->method('getPrincipalByPath')
+ $this->principal->expects($this->any())->method('getPrincipalByPath')
->willReturn([
'uri' => 'principals/best-friend'
]);
- $this->principal->method('getGroupMembership')
+ $this->principal->expects($this->any())->method('getGroupMembership')
->withAnyParameters()
->willReturn([self::UNIT_TEST_GROUP]);
@@ -446,6 +446,21 @@ EOD;
$this->assertEquals(0, count($sos));
}
+ /**
+ * @dataProvider providesCalDataForGetDenormalizedData
+ */
+ public function testGetDenormalizedData($expectedFirstOccurance, $calData) {
+ $actual = $this->invokePrivate($this->backend, 'getDenormalizedData', [$calData]);
+ $this->assertEquals($expectedFirstOccurance, $actual['firstOccurence']);
+ }
+
+ public function providesCalDataForGetDenormalizedData() {
+ return [
+ [0, "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nCALSCALE:GREGORIAN\r\nBEGIN:VEVENT\r\nUID:413F269B-B51B-46B1-AFB6-40055C53A4DC\r\nDTSTAMP:20160309T095056Z\r\nDTSTART;VALUE=DATE:16040222\r\nDTEND;VALUE=DATE:16040223\r\nRRULE:FREQ=YEARLY\r\nSUMMARY:SUMMARY\r\nTRANSP:TRANSPARENT\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"],
+ [null, "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nCALSCALE:GREGORIAN\r\nBEGIN:VEVENT\r\nUID:413F269B-B51B-46B1-AFB6-40055C53A4DC\r\nDTSTAMP:20160309T095056Z\r\nRRULE:FREQ=YEARLY\r\nSUMMARY:SUMMARY\r\nTRANSP:TRANSPARENT\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"]
+ ];
+ }
+
private function assertAcl($principal, $privilege, $acl) {
foreach($acl as $a) {
if ($a['principal'] === $principal && $a['privilege'] === $privilege) {
diff --git a/apps/dav/tests/unit/caldav/calendartest.php b/apps/dav/tests/unit/caldav/calendartest.php
index c41070ea435..e7f4d57067c 100644
--- a/apps/dav/tests/unit/caldav/calendartest.php
+++ b/apps/dav/tests/unit/caldav/calendartest.php
@@ -32,7 +32,7 @@ class CalendarTest extends TestCase {
/** @var \PHPUnit_Framework_MockObject_MockObject | CalDavBackend $backend */
$backend = $this->getMockBuilder('OCA\DAV\CalDAV\CalDavBackend')->disableOriginalConstructor()->getMock();
$backend->expects($this->once())->method('updateShares');
- $backend->method('getShares')->willReturn([
+ $backend->expects($this->any())->method('getShares')->willReturn([
['href' => 'principal:user2']
]);
$calendarInfo = [
@@ -52,7 +52,7 @@ class CalendarTest extends TestCase {
/** @var \PHPUnit_Framework_MockObject_MockObject | CalDavBackend $backend */
$backend = $this->getMockBuilder('OCA\DAV\CalDAV\CalDavBackend')->disableOriginalConstructor()->getMock();
$backend->expects($this->never())->method('updateShares');
- $backend->method('getShares')->willReturn([
+ $backend->expects($this->any())->method('getShares')->willReturn([
['href' => 'principal:group2']
]);
$calendarInfo = [
@@ -90,7 +90,8 @@ class CalendarTest extends TestCase {
$calendarInfo = [
'{http://owncloud.org/ns}owner-principal' => 'user1',
'principaluri' => 'user2',
- 'id' => 666
+ 'id' => 666,
+ 'uri' => 'default'
];
$c = new Calendar($backend, $calendarInfo);
diff --git a/apps/dav/tests/unit/carddav/birthdayservicetest.php b/apps/dav/tests/unit/carddav/birthdayservicetest.php
index faf42d9e1b8..2efb3c09aea 100644
--- a/apps/dav/tests/unit/carddav/birthdayservicetest.php
+++ b/apps/dav/tests/unit/carddav/birthdayservicetest.php
@@ -59,7 +59,7 @@ class BirthdayServiceTest extends TestCase {
$this->assertInstanceOf('Sabre\VObject\Component\VCalendar', $cal);
$this->assertTrue(isset($cal->VEVENT));
$this->assertEquals('FREQ=YEARLY', $cal->VEVENT->RRULE->getValue());
- $this->assertEquals('12345\'s Birthday (1900)', $cal->VEVENT->SUMMARY->getValue());
+ $this->assertEquals('12345 (*1900)', $cal->VEVENT->SUMMARY->getValue());
$this->assertEquals('TRANSPARENT', $cal->VEVENT->TRANSP->getValue());
}
}
diff --git a/apps/dav/tests/unit/connector/sabre/filesplugin.php b/apps/dav/tests/unit/connector/sabre/filesplugin.php
index c363ece374a..0a790ec6fc9 100644
--- a/apps/dav/tests/unit/connector/sabre/filesplugin.php
+++ b/apps/dav/tests/unit/connector/sabre/filesplugin.php
@@ -109,8 +109,6 @@ class FilesPlugin extends \Test\TestCase {
return $node;
}
- /**
- */
public function testGetPropertiesForFile() {
$node = $this->createTestNode('\OCA\DAV\Connector\Sabre\File');
@@ -165,6 +163,56 @@ class FilesPlugin extends \Test\TestCase {
$this->assertEquals(array(self::SIZE_PROPERTYNAME), $propFind->get404Properties());
}
+ public function testGetPropertiesForFileHome() {
+ $node = $this->createTestNode('\OCA\DAV\Files\FilesHome');
+
+ $propFind = new \Sabre\DAV\PropFind(
+ '/dummyPath',
+ array(
+ self::GETETAG_PROPERTYNAME,
+ self::FILEID_PROPERTYNAME,
+ self::INTERNAL_FILEID_PROPERTYNAME,
+ self::SIZE_PROPERTYNAME,
+ self::PERMISSIONS_PROPERTYNAME,
+ self::DOWNLOADURL_PROPERTYNAME,
+ self::OWNER_ID_PROPERTYNAME,
+ self::OWNER_DISPLAY_NAME_PROPERTYNAME
+ ),
+ 0
+ );
+
+ $user = $this->getMockBuilder('\OC\User\User')
+ ->disableOriginalConstructor()->getMock();
+ $user->expects($this->never())->method('getUID');
+ $user->expects($this->never())->method('getDisplayName');
+ $node->expects($this->never())->method('getDirectDownload');
+ $node->expects($this->never())->method('getOwner');
+ $node->expects($this->never())->method('getSize');
+
+ $this->plugin->handleGetProperties(
+ $propFind,
+ $node
+ );
+
+ $this->assertEquals(null, $propFind->get(self::GETETAG_PROPERTYNAME));
+ $this->assertEquals(null, $propFind->get(self::FILEID_PROPERTYNAME));
+ $this->assertEquals(null, $propFind->get(self::INTERNAL_FILEID_PROPERTYNAME));
+ $this->assertEquals(null, $propFind->get(self::SIZE_PROPERTYNAME));
+ $this->assertEquals(null, $propFind->get(self::PERMISSIONS_PROPERTYNAME));
+ $this->assertEquals(null, $propFind->get(self::DOWNLOADURL_PROPERTYNAME));
+ $this->assertEquals(null, $propFind->get(self::OWNER_ID_PROPERTYNAME));
+ $this->assertEquals(null, $propFind->get(self::OWNER_DISPLAY_NAME_PROPERTYNAME));
+ $this->assertEquals(['{DAV:}getetag',
+ '{http://owncloud.org/ns}id',
+ '{http://owncloud.org/ns}fileid',
+ '{http://owncloud.org/ns}size',
+ '{http://owncloud.org/ns}permissions',
+ '{http://owncloud.org/ns}downloadURL',
+ '{http://owncloud.org/ns}owner-id',
+ '{http://owncloud.org/ns}owner-display-name'
+ ], $propFind->get404Properties());
+ }
+
public function testGetPropertiesStorageNotAvailable() {
$node = $this->createTestNode('\OCA\DAV\Connector\Sabre\File');
diff --git a/apps/encryption/l10n/pl.js b/apps/encryption/l10n/pl.js
index fda41f57147..164a4a36d57 100644
--- a/apps/encryption/l10n/pl.js
+++ b/apps/encryption/l10n/pl.js
@@ -8,22 +8,31 @@ OC.L10N.register(
"Could not enable recovery key. Please check your recovery key password!" : "Nie można włączyć klucza odzyskiwania. Proszę sprawdzić swoje hasło odzyskiwania!",
"Recovery key successfully disabled" : "Klucz odzyskiwania wyłączony",
"Could not disable recovery key. Please check your recovery key password!" : "Nie można wyłączyć klucza odzyskiwania. Proszę sprawdzić swoje hasło odzyskiwania!",
+ "Missing parameters" : "Brakujące dane",
"Please provide the old recovery password" : "Podaj stare hasło odzyskiwania",
"Please provide a new recovery password" : "Podaj nowe hasło odzyskiwania",
"Please repeat the new recovery password" : "Proszę powtórz nowe hasło odzyskiwania",
"Password successfully changed." : "Zmiana hasła udana.",
"Could not change the password. Maybe the old password was not correct." : "Nie można zmienić hasła. Może stare hasło nie było poprawne.",
+ "Recovery Key disabled" : "Klucz odzyskiwania wyłączony",
+ "Recovery Key enabled" : "Klucz odzyskiwania włączony",
+ "Could not enable the recovery key, please try again or contact your administrator" : "Nie można włączyć klucza odzyskiwania. Proszę spróbować ponownie lub skontakuj sie z administratorem",
"Could not update the private key password." : "Nie można zmienić hasła klucza prywatnego.",
"The old password was not correct, please try again." : "Stare hasło nie było poprawne. Spróbuj jeszcze raz.",
"The current log-in password was not correct, please try again." : "Obecne hasło logowania nie było poprawne. Spróbuj ponownie.",
"Private key password successfully updated." : "Pomyślnie zaktualizowano hasło klucza prywatnego.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Klucz prywatny nie jest poprawny! Może Twoje hasło zostało zmienione z zewnątrz. Można zaktualizować hasło klucza prywatnego w ustawieniach osobistych w celu odzyskania dostępu do plików",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacja szyfrująca jest aktywna, ale twoje klucze nie zostały zainicjowane, prosze wyloguj się i zaloguj ponownie.",
+ "Encryption App is enabled and ready" : "Aplikacja szyfrowania jest włączona i gotowa do pracy",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nie można odszyfrować tego pliku, prawdopodobnie jest to plik udostępniony. Poproś właściciela pliku o ponowne udostępnianie pliku Tobie.",
"The share will expire on %s." : "Ten zasób wygaśnie %s",
- "Cheers!" : "Pozdrawiam!",
+ "Cheers!" : "Dzięki!",
"Recovery key password" : "Hasło klucza odzyskiwania",
+ "Repeat recovery key password" : "Powtórz hasło klucza odzyskiwania",
"Change recovery key password:" : "Zmień hasło klucza odzyskiwania",
+ "Old recovery key password" : "Stare hasło klucza odzyskiwania",
+ "New recovery key password" : "Nowe hasło klucza odzyskiwania",
+ "Repeat new recovery key password" : "Powtórz nowe hasło klucza odzyskiwania",
"Change Password" : "Zmień hasło",
"Your private key password no longer matches your log-in password." : "Hasło Twojego klucza prywatnego nie pasuje już do Twojego hasła logowania.",
"Set your old private key password to your current log-in password:" : "Ustaw stare hasło klucza prywatnego na aktualne hasło logowania:",
diff --git a/apps/encryption/l10n/pl.json b/apps/encryption/l10n/pl.json
index 7de8c5ad595..2bd108ba4c6 100644
--- a/apps/encryption/l10n/pl.json
+++ b/apps/encryption/l10n/pl.json
@@ -6,22 +6,31 @@
"Could not enable recovery key. Please check your recovery key password!" : "Nie można włączyć klucza odzyskiwania. Proszę sprawdzić swoje hasło odzyskiwania!",
"Recovery key successfully disabled" : "Klucz odzyskiwania wyłączony",
"Could not disable recovery key. Please check your recovery key password!" : "Nie można wyłączyć klucza odzyskiwania. Proszę sprawdzić swoje hasło odzyskiwania!",
+ "Missing parameters" : "Brakujące dane",
"Please provide the old recovery password" : "Podaj stare hasło odzyskiwania",
"Please provide a new recovery password" : "Podaj nowe hasło odzyskiwania",
"Please repeat the new recovery password" : "Proszę powtórz nowe hasło odzyskiwania",
"Password successfully changed." : "Zmiana hasła udana.",
"Could not change the password. Maybe the old password was not correct." : "Nie można zmienić hasła. Może stare hasło nie było poprawne.",
+ "Recovery Key disabled" : "Klucz odzyskiwania wyłączony",
+ "Recovery Key enabled" : "Klucz odzyskiwania włączony",
+ "Could not enable the recovery key, please try again or contact your administrator" : "Nie można włączyć klucza odzyskiwania. Proszę spróbować ponownie lub skontakuj sie z administratorem",
"Could not update the private key password." : "Nie można zmienić hasła klucza prywatnego.",
"The old password was not correct, please try again." : "Stare hasło nie było poprawne. Spróbuj jeszcze raz.",
"The current log-in password was not correct, please try again." : "Obecne hasło logowania nie było poprawne. Spróbuj ponownie.",
"Private key password successfully updated." : "Pomyślnie zaktualizowano hasło klucza prywatnego.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Klucz prywatny nie jest poprawny! Może Twoje hasło zostało zmienione z zewnątrz. Można zaktualizować hasło klucza prywatnego w ustawieniach osobistych w celu odzyskania dostępu do plików",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacja szyfrująca jest aktywna, ale twoje klucze nie zostały zainicjowane, prosze wyloguj się i zaloguj ponownie.",
+ "Encryption App is enabled and ready" : "Aplikacja szyfrowania jest włączona i gotowa do pracy",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nie można odszyfrować tego pliku, prawdopodobnie jest to plik udostępniony. Poproś właściciela pliku o ponowne udostępnianie pliku Tobie.",
"The share will expire on %s." : "Ten zasób wygaśnie %s",
- "Cheers!" : "Pozdrawiam!",
+ "Cheers!" : "Dzięki!",
"Recovery key password" : "Hasło klucza odzyskiwania",
+ "Repeat recovery key password" : "Powtórz hasło klucza odzyskiwania",
"Change recovery key password:" : "Zmień hasło klucza odzyskiwania",
+ "Old recovery key password" : "Stare hasło klucza odzyskiwania",
+ "New recovery key password" : "Nowe hasło klucza odzyskiwania",
+ "Repeat new recovery key password" : "Powtórz nowe hasło klucza odzyskiwania",
"Change Password" : "Zmień hasło",
"Your private key password no longer matches your log-in password." : "Hasło Twojego klucza prywatnego nie pasuje już do Twojego hasła logowania.",
"Set your old private key password to your current log-in password:" : "Ustaw stare hasło klucza prywatnego na aktualne hasło logowania:",
diff --git a/apps/encryption/lib/crypto/encryption.php b/apps/encryption/lib/crypto/encryption.php
index 10c8c4a290a..907a6437f5b 100644
--- a/apps/encryption/lib/crypto/encryption.php
+++ b/apps/encryption/lib/crypto/encryption.php
@@ -390,7 +390,11 @@ class Encryption implements IEncryptionModule {
$publicKeys[$this->keyManager->getMasterKeyId()] = $this->keyManager->getPublicMasterKey();
} else {
foreach ($accessList['users'] as $user) {
- $publicKeys[$user] = $this->keyManager->getPublicKey($user);
+ try {
+ $publicKeys[$user] = $this->keyManager->getPublicKey($user);
+ } catch (PublicKeyMissingException $e) {
+ $this->logger->warning('Could not encrypt file for ' . $user . ': ' . $e->getMessage());
+ }
}
}
diff --git a/apps/encryption/tests/lib/crypto/encryptionTest.php b/apps/encryption/tests/lib/crypto/encryptionTest.php
index 0ce1a2cb76a..8a228c2c215 100644
--- a/apps/encryption/tests/lib/crypto/encryptionTest.php
+++ b/apps/encryption/tests/lib/crypto/encryptionTest.php
@@ -304,7 +304,6 @@ class EncryptionTest extends TestCase {
$this->assertSame($expected,
$this->instance->update('path', 'user1', ['users' => ['user1']])
);
-
}
public function dataTestUpdate() {
@@ -331,6 +330,43 @@ class EncryptionTest extends TestCase {
}
/**
+ * Test case if the public key is missing. ownCloud should still encrypt
+ * the file for the remaining users
+ */
+ public function testUpdateMissingPublicKey() {
+ $this->keyManagerMock->expects($this->once())
+ ->method('getFileKey')->willReturn('fileKey');
+
+ $this->keyManagerMock->expects($this->any())
+ ->method('getPublicKey')->willReturnCallback(
+ function($user) {
+ throw new PublicKeyMissingException($user);
+ }
+ );
+
+ $this->keyManagerMock->expects($this->any())
+ ->method('addSystemKeys')
+ ->willReturnCallback(function($accessList, $publicKeys) {
+ return $publicKeys;
+ });
+
+ $this->cryptMock->expects($this->once())->method('multiKeyEncrypt')
+ ->willReturnCallback(
+ function($fileKey, $publicKeys) {
+ $this->assertEmpty($publicKeys);
+ $this->assertSame('fileKey', $fileKey);
+ }
+ );
+
+ $this->keyManagerMock->expects($this->never())->method('getVersion');
+ $this->keyManagerMock->expects($this->never())->method('setVersion');
+
+ $this->assertTrue(
+ $this->instance->update('path', 'user1', ['users' => ['user1']])
+ );
+ }
+
+ /**
* by default the encryption module should encrypt regular files, files in
* files_versions and files in files_trashbin
*
diff --git a/apps/federatedfilesharing/l10n/de.js b/apps/federatedfilesharing/l10n/de.js
index 4d4c102032c..4831e514990 100644
--- a/apps/federatedfilesharing/l10n/de.js
+++ b/apps/federatedfilesharing/l10n/de.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"Invalid Federated Cloud ID" : "Ungültige Federated-Cloud-ID",
"Sharing %s failed, because this item is already shared with %s" : "Freigabe von %s fehlgeschlagen, da dieses Objekt schon mit %s geteilt wird",
- "Not allowed to create a federated share with the same user" : "Das Erstellen einer föderierten Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
+ "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Freigabe von %s fehlgeschlagen, da %s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federatedfilesharing/l10n/de.json b/apps/federatedfilesharing/l10n/de.json
index d8548af1232..b6ea0174877 100644
--- a/apps/federatedfilesharing/l10n/de.json
+++ b/apps/federatedfilesharing/l10n/de.json
@@ -1,7 +1,7 @@
{ "translations": {
"Invalid Federated Cloud ID" : "Ungültige Federated-Cloud-ID",
"Sharing %s failed, because this item is already shared with %s" : "Freigabe von %s fehlgeschlagen, da dieses Objekt schon mit %s geteilt wird",
- "Not allowed to create a federated share with the same user" : "Das Erstellen einer föderierten Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
+ "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Freigabe von %s fehlgeschlagen, da %s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/federatedfilesharing/l10n/de_DE.js b/apps/federatedfilesharing/l10n/de_DE.js
index 6104d566bd5..bbedbf1da43 100644
--- a/apps/federatedfilesharing/l10n/de_DE.js
+++ b/apps/federatedfilesharing/l10n/de_DE.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"Invalid Federated Cloud ID" : "Ungültige Federated-Cloud-ID",
"Sharing %s failed, because this item is already shared with %s" : "Die Freigabe von %s ist fehlgeschlagen, da dieses Objekt schon mit %s geteilt wird",
- "Not allowed to create a federated share with the same user" : "Das Erstellen einer föderierten Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
+ "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Die Freigabe von %s ist fehlgeschlagen, da %s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federatedfilesharing/l10n/de_DE.json b/apps/federatedfilesharing/l10n/de_DE.json
index 917bd14e7e3..6fb0aead190 100644
--- a/apps/federatedfilesharing/l10n/de_DE.json
+++ b/apps/federatedfilesharing/l10n/de_DE.json
@@ -1,7 +1,7 @@
{ "translations": {
"Invalid Federated Cloud ID" : "Ungültige Federated-Cloud-ID",
"Sharing %s failed, because this item is already shared with %s" : "Die Freigabe von %s ist fehlgeschlagen, da dieses Objekt schon mit %s geteilt wird",
- "Not allowed to create a federated share with the same user" : "Das Erstellen einer föderierten Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
+ "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Die Freigabe von %s ist fehlgeschlagen, da %s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/federatedfilesharing/l10n/is.js b/apps/federatedfilesharing/l10n/is.js
new file mode 100644
index 00000000000..54c9fa5bf14
--- /dev/null
+++ b/apps/federatedfilesharing/l10n/is.js
@@ -0,0 +1,9 @@
+OC.L10N.register(
+ "federatedfilesharing",
+ {
+ "Invalid Federated Cloud ID" : "Ógilt skýjasambandsauðkenni (Federated Cloud ID)",
+ "Sharing %s failed, because this item is already shared with %s" : "Deiling %s mistókst, því þessu atriði er þegar deilt með %s",
+ "Not allowed to create a federated share with the same user" : "Ekki er heimilt að búa til skýjasambandssameign með sama notanda",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Deiling %s mistókst, gat ekki fundið %s, hugsanlega er þjónninn ekki tiltækur í augnablikinu."
+},
+"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");
diff --git a/apps/federatedfilesharing/l10n/is.json b/apps/federatedfilesharing/l10n/is.json
new file mode 100644
index 00000000000..e5989d430ff
--- /dev/null
+++ b/apps/federatedfilesharing/l10n/is.json
@@ -0,0 +1,7 @@
+{ "translations": {
+ "Invalid Federated Cloud ID" : "Ógilt skýjasambandsauðkenni (Federated Cloud ID)",
+ "Sharing %s failed, because this item is already shared with %s" : "Deiling %s mistókst, því þessu atriði er þegar deilt með %s",
+ "Not allowed to create a federated share with the same user" : "Ekki er heimilt að búa til skýjasambandssameign með sama notanda",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Deiling %s mistókst, gat ekki fundið %s, hugsanlega er þjónninn ekki tiltækur í augnablikinu."
+},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
+} \ No newline at end of file
diff --git a/apps/federatedfilesharing/l10n/pl.js b/apps/federatedfilesharing/l10n/pl.js
index 18fe5a2593c..d82967ae5db 100644
--- a/apps/federatedfilesharing/l10n/pl.js
+++ b/apps/federatedfilesharing/l10n/pl.js
@@ -1,6 +1,7 @@
OC.L10N.register(
"federatedfilesharing",
{
- "Sharing %s failed, because this item is already shared with %s" : "Współdzielenie %s nie powiodło się, ponieważ element jest już współdzielony z %s"
+ "Sharing %s failed, because this item is already shared with %s" : "Współdzielenie %s nie powiodło się, ponieważ element jest już współdzielony z %s",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Współdzielenie %s nie powiodło się, nie można odnaleźć %s. Prawdopobnie serwer nie jest teraz osiągalny."
},
"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/federatedfilesharing/l10n/pl.json b/apps/federatedfilesharing/l10n/pl.json
index aa2a3276757..19c9b8029ac 100644
--- a/apps/federatedfilesharing/l10n/pl.json
+++ b/apps/federatedfilesharing/l10n/pl.json
@@ -1,4 +1,5 @@
{ "translations": {
- "Sharing %s failed, because this item is already shared with %s" : "Współdzielenie %s nie powiodło się, ponieważ element jest już współdzielony z %s"
+ "Sharing %s failed, because this item is already shared with %s" : "Współdzielenie %s nie powiodło się, ponieważ element jest już współdzielony z %s",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Współdzielenie %s nie powiodło się, nie można odnaleźć %s. Prawdopobnie serwer nie jest teraz osiągalny."
},"pluralForm" :"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/federatedfilesharing/l10n/sl.js b/apps/federatedfilesharing/l10n/sl.js
index 3776e14ff45..3c7d08882ff 100644
--- a/apps/federatedfilesharing/l10n/sl.js
+++ b/apps/federatedfilesharing/l10n/sl.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"federatedfilesharing",
{
- "Invalid Federated Cloud ID" : "Neveljaven ID za prenos dovoljenj ownCloud",
+ "Invalid Federated Cloud ID" : "Neveljaven ID zveznega oblaka ownCloud",
"Sharing %s failed, because this item is already shared with %s" : "Nastavljanje souporabe %s je spodletelo, ker je ima uporabnik %s predmet že v souporabi.",
- "Not allowed to create a federated share with the same user" : "Ni dovoljeno ustvariti souporabe s prenosom dovoljenj z istim uporabnikom",
+ "Not allowed to create a federated share with the same user" : "Ni dovoljeno ustvariti souporabe zveznega oblaka z istim uporabnikom",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Omogočanje souporabe %s je spodletelo, ker ni mogoče najti %s. Najverjetneje je strežnik nedosegljiv."
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/apps/federatedfilesharing/l10n/sl.json b/apps/federatedfilesharing/l10n/sl.json
index 805452572c3..6f374bbe917 100644
--- a/apps/federatedfilesharing/l10n/sl.json
+++ b/apps/federatedfilesharing/l10n/sl.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Invalid Federated Cloud ID" : "Neveljaven ID za prenos dovoljenj ownCloud",
+ "Invalid Federated Cloud ID" : "Neveljaven ID zveznega oblaka ownCloud",
"Sharing %s failed, because this item is already shared with %s" : "Nastavljanje souporabe %s je spodletelo, ker je ima uporabnik %s predmet že v souporabi.",
- "Not allowed to create a federated share with the same user" : "Ni dovoljeno ustvariti souporabe s prenosom dovoljenj z istim uporabnikom",
+ "Not allowed to create a federated share with the same user" : "Ni dovoljeno ustvariti souporabe zveznega oblaka z istim uporabnikom",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Omogočanje souporabe %s je spodletelo, ker ni mogoče najti %s. Najverjetneje je strežnik nedosegljiv."
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/federation/l10n/pt_PT.js b/apps/federation/l10n/pt_PT.js
index 3e900bf1a26..38ec142b689 100644
--- a/apps/federation/l10n/pt_PT.js
+++ b/apps/federation/l10n/pt_PT.js
@@ -6,6 +6,10 @@ OC.L10N.register(
"No ownCloud server found" : "Nenhum servidor ownCloud encontrado",
"Could not add server" : "Não foi possível adicionar servidor",
"Federation" : "Federação",
- "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federação ownCloud permite-lhe conectar-se com outros ownClouds de confiança para partilhar directórios. Por exemplo, isto será utilizado para auto-completar utilizadores externos para partilhas federadas."
+ "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federação ownCloud permite-lhe conectar-se com outros ownClouds de confiança para partilhar directórios. Por exemplo, isto será utilizado para auto-completar utilizadores externos para partilhas federadas.",
+ "Add server automatically once a federated share was created successfully" : "Adicionar o servidor automaticamente assim que uma partilha federada tenha sido criada com sucesso",
+ "Trusted ownCloud Servers" : "Servidores ownCloud de confiança",
+ "+ Add ownCloud server" : "+ Adicionar servidor ownCloud",
+ "ownCloud Server" : "Servidor ownCloud"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federation/l10n/pt_PT.json b/apps/federation/l10n/pt_PT.json
index 2758c6260e6..796a2127170 100644
--- a/apps/federation/l10n/pt_PT.json
+++ b/apps/federation/l10n/pt_PT.json
@@ -4,6 +4,10 @@
"No ownCloud server found" : "Nenhum servidor ownCloud encontrado",
"Could not add server" : "Não foi possível adicionar servidor",
"Federation" : "Federação",
- "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federação ownCloud permite-lhe conectar-se com outros ownClouds de confiança para partilhar directórios. Por exemplo, isto será utilizado para auto-completar utilizadores externos para partilhas federadas."
+ "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federação ownCloud permite-lhe conectar-se com outros ownClouds de confiança para partilhar directórios. Por exemplo, isto será utilizado para auto-completar utilizadores externos para partilhas federadas.",
+ "Add server automatically once a federated share was created successfully" : "Adicionar o servidor automaticamente assim que uma partilha federada tenha sido criada com sucesso",
+ "Trusted ownCloud Servers" : "Servidores ownCloud de confiança",
+ "+ Add ownCloud server" : "+ Adicionar servidor ownCloud",
+ "ownCloud Server" : "Servidor ownCloud"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/federation/l10n/sl.js b/apps/federation/l10n/sl.js
index dcc7585481a..be13333301f 100644
--- a/apps/federation/l10n/sl.js
+++ b/apps/federation/l10n/sl.js
@@ -5,9 +5,11 @@ OC.L10N.register(
"Server is already in the list of trusted servers." : "Strežnik je že na seznamu potrjenih strežnikov.",
"No ownCloud server found" : "Ni mogoče najti nobenega strežnika ownCloud.",
"Could not add server" : "Ni mogoče dodati strežnika.",
- "Federation" : "Prenos dovoljenj",
- "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Prenos dovoljenj ownCloud omogoča povezovanje z drugimi potrjenimi strežniki ownCloud in souporabo uporabniških map. Možnost je uporabljena za samodejno dokončanje izpisa zunanjih uporabnikov za souporabo s prenosom dovoljenj.",
- "Trusted ownCloud Servers" : "Zaupanja vredni ownCloud strežniki",
- "+ Add ownCloud server" : "+ Dodaj ownCloud strežnik"
+ "Federation" : "Zvezni oblaki",
+ "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Zvezni oblak ownCloud omogoča povezovanje z drugimi potrjenimi strežniki ownCloud in souporabo uporabniških map in s prenosom dovoljenj na oddaljeni strežnik. Možnost je uporabljena za samodejno dokončanje izpisa zunanjih uporabnikov za souporabo s prenosom dovoljenj.",
+ "Add server automatically once a federated share was created successfully" : "Strežnik dodaj samodejno, ko je povezava zveznega oblaka uspešno ustvarjena",
+ "Trusted ownCloud Servers" : "Zaupanja vredni strežniki ownCloud",
+ "+ Add ownCloud server" : "+ Dodaj strežnik ownCloud",
+ "ownCloud Server" : "Strežnik ownCloud"
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/apps/federation/l10n/sl.json b/apps/federation/l10n/sl.json
index a4a4b7cc8b3..a3eb030c828 100644
--- a/apps/federation/l10n/sl.json
+++ b/apps/federation/l10n/sl.json
@@ -3,9 +3,11 @@
"Server is already in the list of trusted servers." : "Strežnik je že na seznamu potrjenih strežnikov.",
"No ownCloud server found" : "Ni mogoče najti nobenega strežnika ownCloud.",
"Could not add server" : "Ni mogoče dodati strežnika.",
- "Federation" : "Prenos dovoljenj",
- "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Prenos dovoljenj ownCloud omogoča povezovanje z drugimi potrjenimi strežniki ownCloud in souporabo uporabniških map. Možnost je uporabljena za samodejno dokončanje izpisa zunanjih uporabnikov za souporabo s prenosom dovoljenj.",
- "Trusted ownCloud Servers" : "Zaupanja vredni ownCloud strežniki",
- "+ Add ownCloud server" : "+ Dodaj ownCloud strežnik"
+ "Federation" : "Zvezni oblaki",
+ "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Zvezni oblak ownCloud omogoča povezovanje z drugimi potrjenimi strežniki ownCloud in souporabo uporabniških map in s prenosom dovoljenj na oddaljeni strežnik. Možnost je uporabljena za samodejno dokončanje izpisa zunanjih uporabnikov za souporabo s prenosom dovoljenj.",
+ "Add server automatically once a federated share was created successfully" : "Strežnik dodaj samodejno, ko je povezava zveznega oblaka uspešno ustvarjena",
+ "Trusted ownCloud Servers" : "Zaupanja vredni strežniki ownCloud",
+ "+ Add ownCloud server" : "+ Dodaj strežnik ownCloud",
+ "ownCloud Server" : "Strežnik ownCloud"
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/federation/l10n/sv.js b/apps/federation/l10n/sv.js
index ed014c69976..7855084e268 100644
--- a/apps/federation/l10n/sv.js
+++ b/apps/federation/l10n/sv.js
@@ -1,11 +1,15 @@
OC.L10N.register(
"federation",
{
- "Server added to the list of trusted ownClouds" : "Servern är tillagd till listan över pålitliga ownClouds",
+ "Server added to the list of trusted ownClouds" : "Servern är tillagd till listan över pålitliga ownCloud-servrar",
"Server is already in the list of trusted servers." : "Servern finns redan i listan",
"No ownCloud server found" : "Ingen ownCloud-server kunde hittas",
"Could not add server" : "Kunde inte lägga till server",
- "Federation" : "Förbund",
- "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "\"OwnCloud Federation\" låter dig ansluta till andra pålitliga ownClouds för att dela användarkatalogen. T.ex. används detta för automagiskt fylla i externa användares namn när man delar över förbunda ownCloud-servrar"
+ "Federation" : "Federerad delning",
+ "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "\"ownCloud Federation\" låter dig ansluta till andra pålitliga ownCloud-servrar för att dela användarkatalogen. Detta används t.ex. för att automatiskt fylla i externa användares namn när man delar över federerade ownCloud-servrar",
+ "Add server automatically once a federated share was created successfully" : "Lägg till servern automatiskt så fort en lyckad federerad delning skapats",
+ "Trusted ownCloud Servers" : "Pålitliga ownCloud-servrar",
+ "+ Add ownCloud server" : "+ Lägg till ownCloud-server",
+ "ownCloud Server" : "ownCloud-server"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federation/l10n/sv.json b/apps/federation/l10n/sv.json
index 0a087f81ed5..c27008a5312 100644
--- a/apps/federation/l10n/sv.json
+++ b/apps/federation/l10n/sv.json
@@ -1,9 +1,13 @@
{ "translations": {
- "Server added to the list of trusted ownClouds" : "Servern är tillagd till listan över pålitliga ownClouds",
+ "Server added to the list of trusted ownClouds" : "Servern är tillagd till listan över pålitliga ownCloud-servrar",
"Server is already in the list of trusted servers." : "Servern finns redan i listan",
"No ownCloud server found" : "Ingen ownCloud-server kunde hittas",
"Could not add server" : "Kunde inte lägga till server",
- "Federation" : "Förbund",
- "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "\"OwnCloud Federation\" låter dig ansluta till andra pålitliga ownClouds för att dela användarkatalogen. T.ex. används detta för automagiskt fylla i externa användares namn när man delar över förbunda ownCloud-servrar"
+ "Federation" : "Federerad delning",
+ "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "\"ownCloud Federation\" låter dig ansluta till andra pålitliga ownCloud-servrar för att dela användarkatalogen. Detta används t.ex. för att automatiskt fylla i externa användares namn när man delar över federerade ownCloud-servrar",
+ "Add server automatically once a federated share was created successfully" : "Lägg till servern automatiskt så fort en lyckad federerad delning skapats",
+ "Trusted ownCloud Servers" : "Pålitliga ownCloud-servrar",
+ "+ Add ownCloud server" : "+ Lägg till ownCloud-server",
+ "ownCloud Server" : "ownCloud-server"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/federation/l10n/zh_CN.js b/apps/federation/l10n/zh_CN.js
index 7b50e5900e7..a84f6350671 100644
--- a/apps/federation/l10n/zh_CN.js
+++ b/apps/federation/l10n/zh_CN.js
@@ -6,6 +6,10 @@ OC.L10N.register(
"No ownCloud server found" : "没有找到对应服务器",
"Could not add server" : "无法添加服务器",
"Federation" : "联合",
- "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "联合云系统使您可以方便快速的和其他用户共享文件。"
+ "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "联合云系统使您可以方便快速的和其他用户共享文件。",
+ "Add server automatically once a federated share was created successfully" : "一旦联合共享创建成功自动添加服务器",
+ "Trusted ownCloud Servers" : "可信 ownCloud 服务器",
+ "+ Add ownCloud server" : "+ 添加 ownCloud 服务器",
+ "ownCloud Server" : "ownCloud 服务器"
},
"nplurals=1; plural=0;");
diff --git a/apps/federation/l10n/zh_CN.json b/apps/federation/l10n/zh_CN.json
index 6ca1d5dda4d..de8663eb7ab 100644
--- a/apps/federation/l10n/zh_CN.json
+++ b/apps/federation/l10n/zh_CN.json
@@ -4,6 +4,10 @@
"No ownCloud server found" : "没有找到对应服务器",
"Could not add server" : "无法添加服务器",
"Federation" : "联合",
- "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "联合云系统使您可以方便快速的和其他用户共享文件。"
+ "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "联合云系统使您可以方便快速的和其他用户共享文件。",
+ "Add server automatically once a federated share was created successfully" : "一旦联合共享创建成功自动添加服务器",
+ "Trusted ownCloud Servers" : "可信 ownCloud 服务器",
+ "+ Add ownCloud server" : "+ 添加 ownCloud 服务器",
+ "ownCloud Server" : "ownCloud 服务器"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files/l10n/is.js b/apps/files/l10n/is.js
index 15c0ee0f6fe..893337356e4 100644
--- a/apps/files/l10n/is.js
+++ b/apps/files/l10n/is.js
@@ -1,6 +1,8 @@
OC.L10N.register(
"files",
{
+ "Storage not available" : "Geymsla ekki tiltæk",
+ "Storage invalid" : "Ógild geymsla",
"Unknown error" : "Óþekkt villa",
"Invalid Token" : "Ógilt teikn",
"No file was uploaded. Unknown error" : "Engin skrá var send inn. Óþekkt villa.",
@@ -11,6 +13,7 @@ OC.L10N.register(
"No file was uploaded" : "Engin skrá skilaði sér",
"Missing a temporary folder" : "Vantar bráðabirgðamöppu",
"Failed to write to disk" : "Tókst ekki að skrifa á disk",
+ "Not enough storage available" : "Ekki er nægilegt geymslupláss tiltækt",
"Invalid directory." : "Ógild mappa.",
"Files" : "Skrár",
"All files" : "Allar skrár",
@@ -18,6 +21,7 @@ OC.L10N.register(
"Home" : "Heim",
"Close" : "Loka",
"Upload cancelled." : "Hætt við innsendingu.",
+ "Total file size {size1} exceeds upload limit {size2}" : "Heildarskráastærð {size1} er meiri en leyfilegt innsendingahámark {size2}",
"File upload is in progress. Leaving the page now will cancel the upload." : "Innsending í gangi. Ef þú ferð af þessari síðu mun innsending hætta.",
"Actions" : "Aðgerðir",
"Download" : "Niðurhal",
@@ -34,6 +38,13 @@ OC.L10N.register(
"Could not move \"{file}\", target exists" : "Gat ekki fært \"{file}\", markskrá er til",
"Could not move \"{file}\"" : "Gat ekki fært \"{file}\"",
"{newName} already exists" : "{newName} er þegar til",
+ "Could not rename \"{fileName}\"" : "Gat ekki endurnefnt \"{fileName}\"",
+ "Could not create file \"{file}\"" : "Gat ekki búið til skrána \"{file}\"",
+ "Could not create file \"{file}\" because it already exists" : "Gat ekki búið til skrána \"{file}\" vegna þess að hún er þegar til",
+ "Could not create folder \"{dir}\"" : "Gat ekki búið til möppuna \"{dir}\"",
+ "Could not create folder \"{dir}\" because it already exists" : "Gat ekki búið til möppuna \"{dir}\" vegna þess að hún er þegar til",
+ "Error deleting file \"{fileName}\"." : "Villa við að eyða skránni \"{fileName}\".",
+ "No entries in this folder match '{filter}'" : "Engar færslur í þessari möppu samsvara '{filter}'",
"Name" : "Heiti",
"Size" : "Stærð",
"Modified" : "Breytt",
@@ -45,6 +56,8 @@ OC.L10N.register(
"New" : "Nýtt",
"\"{name}\" is an invalid file name." : "\"{name}\" er ógilt skráarheiti.",
"File name cannot be empty." : "Heiti skráar má ekki vera tómt",
+ "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Geymslupláss {owner} er næstum fullt ({usedSpacePercent}%)",
+ "Your storage is almost full ({usedSpacePercent}%)" : "Geymsluplássið þitt er næstum fullt ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["samsvarar '{filter}'","samsvara '{filter}'"],
"Path" : "Slóð",
"_%n byte_::_%n bytes_" : ["%n bæti","%n bæti"],
@@ -54,8 +67,19 @@ OC.L10N.register(
"New folder" : "Ný mappa",
"{newname} already exists" : "{newname} er þegar til",
"Upload" : "Senda inn",
+ "An error occurred while trying to update the tags" : "Villa kom upp við að reyna að uppfæra merkin",
"You created %1$s" : "Þú bjóst til %1$s",
"%2$s created %1$s" : "%2$s bjó til %1$s",
+ "%1$s was created in a public folder" : "%1$s var búið til í opinni möppu",
+ "You changed %1$s" : "Þú breyttir %1$s",
+ "%2$s changed %1$s" : "%2$s breytti %1$s",
+ "You deleted %1$s" : "Þú eyddir %1$s",
+ "%2$s deleted %1$s" : "%2$s eyddi %1$s",
+ "You restored %1$s" : "Þú endurheimtir %1$s",
+ "%2$s restored %1$s" : "%2$s endurheimti %1$s",
+ "Changed by %2$s" : "Breytt af %2$s",
+ "Deleted by %2$s" : "Eytt af %2$s",
+ "Restored by %2$s" : "Endurheimt af %2$s",
"Upload (max. %s)" : "Senda inn (hám. %s)",
"File handling" : "Meðhöndlun skráar",
"Maximum upload size" : "Hámarksstærð innsendingar",
@@ -70,6 +94,7 @@ OC.L10N.register(
"Upload too large" : "Innsend skrá er of stór",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Skrárnar sem þú ert að senda inn eru stærri en hámarks innsendingarstærð á þessum netþjóni.",
"No favorites" : "Engin eftirlæti",
+ "Files and folders you mark as favorite will show up here" : "Skrár og möppur sem þú merkir sem uppáhald birtast hér",
"Text file" : "Textaskrá",
"New text file.txt" : "Ný textaskrá.txt"
},
diff --git a/apps/files/l10n/is.json b/apps/files/l10n/is.json
index 240b5b2b7b4..6e53bd0df5d 100644
--- a/apps/files/l10n/is.json
+++ b/apps/files/l10n/is.json
@@ -1,4 +1,6 @@
{ "translations": {
+ "Storage not available" : "Geymsla ekki tiltæk",
+ "Storage invalid" : "Ógild geymsla",
"Unknown error" : "Óþekkt villa",
"Invalid Token" : "Ógilt teikn",
"No file was uploaded. Unknown error" : "Engin skrá var send inn. Óþekkt villa.",
@@ -9,6 +11,7 @@
"No file was uploaded" : "Engin skrá skilaði sér",
"Missing a temporary folder" : "Vantar bráðabirgðamöppu",
"Failed to write to disk" : "Tókst ekki að skrifa á disk",
+ "Not enough storage available" : "Ekki er nægilegt geymslupláss tiltækt",
"Invalid directory." : "Ógild mappa.",
"Files" : "Skrár",
"All files" : "Allar skrár",
@@ -16,6 +19,7 @@
"Home" : "Heim",
"Close" : "Loka",
"Upload cancelled." : "Hætt við innsendingu.",
+ "Total file size {size1} exceeds upload limit {size2}" : "Heildarskráastærð {size1} er meiri en leyfilegt innsendingahámark {size2}",
"File upload is in progress. Leaving the page now will cancel the upload." : "Innsending í gangi. Ef þú ferð af þessari síðu mun innsending hætta.",
"Actions" : "Aðgerðir",
"Download" : "Niðurhal",
@@ -32,6 +36,13 @@
"Could not move \"{file}\", target exists" : "Gat ekki fært \"{file}\", markskrá er til",
"Could not move \"{file}\"" : "Gat ekki fært \"{file}\"",
"{newName} already exists" : "{newName} er þegar til",
+ "Could not rename \"{fileName}\"" : "Gat ekki endurnefnt \"{fileName}\"",
+ "Could not create file \"{file}\"" : "Gat ekki búið til skrána \"{file}\"",
+ "Could not create file \"{file}\" because it already exists" : "Gat ekki búið til skrána \"{file}\" vegna þess að hún er þegar til",
+ "Could not create folder \"{dir}\"" : "Gat ekki búið til möppuna \"{dir}\"",
+ "Could not create folder \"{dir}\" because it already exists" : "Gat ekki búið til möppuna \"{dir}\" vegna þess að hún er þegar til",
+ "Error deleting file \"{fileName}\"." : "Villa við að eyða skránni \"{fileName}\".",
+ "No entries in this folder match '{filter}'" : "Engar færslur í þessari möppu samsvara '{filter}'",
"Name" : "Heiti",
"Size" : "Stærð",
"Modified" : "Breytt",
@@ -43,6 +54,8 @@
"New" : "Nýtt",
"\"{name}\" is an invalid file name." : "\"{name}\" er ógilt skráarheiti.",
"File name cannot be empty." : "Heiti skráar má ekki vera tómt",
+ "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Geymslupláss {owner} er næstum fullt ({usedSpacePercent}%)",
+ "Your storage is almost full ({usedSpacePercent}%)" : "Geymsluplássið þitt er næstum fullt ({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["samsvarar '{filter}'","samsvara '{filter}'"],
"Path" : "Slóð",
"_%n byte_::_%n bytes_" : ["%n bæti","%n bæti"],
@@ -52,8 +65,19 @@
"New folder" : "Ný mappa",
"{newname} already exists" : "{newname} er þegar til",
"Upload" : "Senda inn",
+ "An error occurred while trying to update the tags" : "Villa kom upp við að reyna að uppfæra merkin",
"You created %1$s" : "Þú bjóst til %1$s",
"%2$s created %1$s" : "%2$s bjó til %1$s",
+ "%1$s was created in a public folder" : "%1$s var búið til í opinni möppu",
+ "You changed %1$s" : "Þú breyttir %1$s",
+ "%2$s changed %1$s" : "%2$s breytti %1$s",
+ "You deleted %1$s" : "Þú eyddir %1$s",
+ "%2$s deleted %1$s" : "%2$s eyddi %1$s",
+ "You restored %1$s" : "Þú endurheimtir %1$s",
+ "%2$s restored %1$s" : "%2$s endurheimti %1$s",
+ "Changed by %2$s" : "Breytt af %2$s",
+ "Deleted by %2$s" : "Eytt af %2$s",
+ "Restored by %2$s" : "Endurheimt af %2$s",
"Upload (max. %s)" : "Senda inn (hám. %s)",
"File handling" : "Meðhöndlun skráar",
"Maximum upload size" : "Hámarksstærð innsendingar",
@@ -68,6 +92,7 @@
"Upload too large" : "Innsend skrá er of stór",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Skrárnar sem þú ert að senda inn eru stærri en hámarks innsendingarstærð á þessum netþjóni.",
"No favorites" : "Engin eftirlæti",
+ "Files and folders you mark as favorite will show up here" : "Skrár og möppur sem þú merkir sem uppáhald birtast hér",
"Text file" : "Textaskrá",
"New text file.txt" : "Ný textaskrá.txt"
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js
index 9070ccb090b..91a4cf9a389 100644
--- a/apps/files/l10n/pl.js
+++ b/apps/files/l10n/pl.js
@@ -87,10 +87,12 @@ OC.L10N.register(
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Użyj tego adresu do <a href=\"%s\" target=\"_blank\">dostępu do twoich plików przez WebDAV</a>",
"Cancel upload" : "Anuluj wysyłanie",
+ "No files in here" : "Brak plików",
"No entries found in this folder" : "Brak wpisów w tym folderze",
"Select all" : "Wybierz wszystko",
"Upload too large" : "Ładowany plik jest za duży",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Pliki, które próbujesz przesłać, przekraczają maksymalną dopuszczalną wielkość.",
- "Text file" : "Plik tekstowy"
+ "Text file" : "Plik tekstowy",
+ "New text file.txt" : "Nowy plik tekstowy.txt"
},
"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/files/l10n/pl.json b/apps/files/l10n/pl.json
index f2a2a805a9b..e6f02590b5b 100644
--- a/apps/files/l10n/pl.json
+++ b/apps/files/l10n/pl.json
@@ -85,10 +85,12 @@
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Użyj tego adresu do <a href=\"%s\" target=\"_blank\">dostępu do twoich plików przez WebDAV</a>",
"Cancel upload" : "Anuluj wysyłanie",
+ "No files in here" : "Brak plików",
"No entries found in this folder" : "Brak wpisów w tym folderze",
"Select all" : "Wybierz wszystko",
"Upload too large" : "Ładowany plik jest za duży",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Pliki, które próbujesz przesłać, przekraczają maksymalną dopuszczalną wielkość.",
- "Text file" : "Plik tekstowy"
+ "Text file" : "Plik tekstowy",
+ "New text file.txt" : "Nowy plik tekstowy.txt"
},"pluralForm" :"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js
index 510e8d8f08b..d5954cc4147 100644
--- a/apps/files/l10n/ru.js
+++ b/apps/files/l10n/ru.js
@@ -28,6 +28,7 @@ OC.L10N.register(
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Невозможно загрузить {filename}, так как это либо каталог, либо файл нулевого размера",
"Total file size {size1} exceeds upload limit {size2}" : "Полный размер файла {size1} превышает лимит по загрузке {size2}",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Недостаточно свободного места, Вы загружаете {size1}, но осталось только {size2}",
+ "Error uploading file \"{fileName}\": {message}" : "Ошибка загрузки файла \"{fileName}\": {message}",
"Could not get result from server." : "Не удалось получить ответ от сервера.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Идёт загрузка файла. Покинув страницу, вы прервёте загрузку.",
"Actions" : "Действия",
diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json
index f62125fa614..9ec3788fb5e 100644
--- a/apps/files/l10n/ru.json
+++ b/apps/files/l10n/ru.json
@@ -26,6 +26,7 @@
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Невозможно загрузить {filename}, так как это либо каталог, либо файл нулевого размера",
"Total file size {size1} exceeds upload limit {size2}" : "Полный размер файла {size1} превышает лимит по загрузке {size2}",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Недостаточно свободного места, Вы загружаете {size1}, но осталось только {size2}",
+ "Error uploading file \"{fileName}\": {message}" : "Ошибка загрузки файла \"{fileName}\": {message}",
"Could not get result from server." : "Не удалось получить ответ от сервера.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Идёт загрузка файла. Покинув страницу, вы прервёте загрузку.",
"Actions" : "Действия",
diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js
index c9a07a0199c..faf803c704e 100644
--- a/apps/files/l10n/zh_CN.js
+++ b/apps/files/l10n/zh_CN.js
@@ -28,6 +28,7 @@ OC.L10N.register(
"Unable to upload {filename} as it is a directory or has 0 bytes" : "不能上传文件 {filename} ,由于它是一个目录或者为0字节",
"Total file size {size1} exceeds upload limit {size2}" : "总文件大小 {size1} 超过上传限制 {size2}",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "没有足够的可用空间,您正在上传 {size1} 的文件但是只有 {size2} 可用。",
+ "Error uploading file \"{fileName}\": {message}" : "上传文件错误 \"{fileName}\": {message}",
"Could not get result from server." : "不能从服务器得到结果",
"File upload is in progress. Leaving the page now will cancel the upload." : "文件正在上传中。现在离开此页会导致上传动作被取消。",
"Actions" : "动作",
diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json
index 1ae61d0119b..96aa0bb6f13 100644
--- a/apps/files/l10n/zh_CN.json
+++ b/apps/files/l10n/zh_CN.json
@@ -26,6 +26,7 @@
"Unable to upload {filename} as it is a directory or has 0 bytes" : "不能上传文件 {filename} ,由于它是一个目录或者为0字节",
"Total file size {size1} exceeds upload limit {size2}" : "总文件大小 {size1} 超过上传限制 {size2}",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "没有足够的可用空间,您正在上传 {size1} 的文件但是只有 {size2} 可用。",
+ "Error uploading file \"{fileName}\": {message}" : "上传文件错误 \"{fileName}\": {message}",
"Could not get result from server." : "不能从服务器得到结果",
"File upload is in progress. Leaving the page now will cancel the upload." : "文件正在上传中。现在离开此页会导致上传动作被取消。",
"Actions" : "动作",
diff --git a/apps/files_external/l10n/cs_CZ.js b/apps/files_external/l10n/cs_CZ.js
index 25c5f0c318d..8e7afc609e4 100644
--- a/apps/files_external/l10n/cs_CZ.js
+++ b/apps/files_external/l10n/cs_CZ.js
@@ -107,7 +107,7 @@ OC.L10N.register(
"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Poznámka:</b> FTP podpora v PHP není povolena nebo nainstalována. Není možné připojení %s. Prosím požádejte svého správce systému ať ji nainstaluje.",
"<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Poznámka:</b> \"%s\" není instalováno. Není možné připojení %s. Prosím požádejte svého správce systému o instalaci.",
"No external storage configured" : "Není nakonfigurováno žádné externí úložiště",
- "You can add external storages in the personal settings" : "Můžete přidat externí úložiště v osobních nastaveních",
+ "You can add external storages in the personal settings" : "Externí úložiště můžete přidat v osobních nastaveních",
"Name" : "Název",
"Storage type" : "Typ úložiště",
"Scope" : "Rozsah",
diff --git a/apps/files_external/l10n/cs_CZ.json b/apps/files_external/l10n/cs_CZ.json
index 192c60299fc..ee12b0e098a 100644
--- a/apps/files_external/l10n/cs_CZ.json
+++ b/apps/files_external/l10n/cs_CZ.json
@@ -105,7 +105,7 @@
"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Poznámka:</b> FTP podpora v PHP není povolena nebo nainstalována. Není možné připojení %s. Prosím požádejte svého správce systému ať ji nainstaluje.",
"<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Poznámka:</b> \"%s\" není instalováno. Není možné připojení %s. Prosím požádejte svého správce systému o instalaci.",
"No external storage configured" : "Není nakonfigurováno žádné externí úložiště",
- "You can add external storages in the personal settings" : "Můžete přidat externí úložiště v osobních nastaveních",
+ "You can add external storages in the personal settings" : "Externí úložiště můžete přidat v osobních nastaveních",
"Name" : "Název",
"Storage type" : "Typ úložiště",
"Scope" : "Rozsah",
diff --git a/apps/files_external/l10n/sl.js b/apps/files_external/l10n/sl.js
index cdb84ab4095..c3711b1e0ca 100644
--- a/apps/files_external/l10n/sl.js
+++ b/apps/files_external/l10n/sl.js
@@ -1,12 +1,15 @@
OC.L10N.register(
"files_external",
{
+ "Fetching request tokens failed. Verify that your app key and secret are correct." : "Pridobivanje žetonov zahteve je spodletelo. Preverite, ali sta ključ in skrivno geslo programa navedena pravilno.",
+ "Please provide a valid app key and secret." : "Vpisati je treba veljaven ključ programa in kodo.",
"Step 1 failed. Exception: %s" : "1. korak je spodletel. Izjemna napaka: %s",
"Step 2 failed. Exception: %s" : "2. korak je spodletel. Izjemna napaka: %s",
"External storage" : "Zunanja shramba",
"Storage with id \"%i\" not found" : "Shrambe z ID \"%i\" ni mogoče najti.",
"Invalid mount point" : "Neveljavna priklopna točka",
"Invalid storage backend \"%s\"" : "Neveljaven ozadnji program shrambe \"%s\"",
+ "Unsatisfied authentication mechanism parameters" : "Nezadovoljivi parametri mehanizma overitve",
"Insufficient data: %s" : "Nepopolni podatki: %s",
"%s" : "%s",
"Personal" : "Osebno",
@@ -25,7 +28,9 @@ OC.L10N.register(
"Once every direct access" : "Enkrat ob neposrednem dostopu",
"All users. Type to select user or group." : "Vsi uporabniki. Skupino ali uporabnika je mogoče tudi izbrati.",
"(group)" : "(skupina)",
+ "Admin defined" : "Skrbnik je določen",
"Saved" : "Shranjeno",
+ "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",
"external-storage" : "zunanja-shramba",
diff --git a/apps/files_external/l10n/sl.json b/apps/files_external/l10n/sl.json
index c81ba62b789..3f68c848ba4 100644
--- a/apps/files_external/l10n/sl.json
+++ b/apps/files_external/l10n/sl.json
@@ -1,10 +1,13 @@
{ "translations": {
+ "Fetching request tokens failed. Verify that your app key and secret are correct." : "Pridobivanje žetonov zahteve je spodletelo. Preverite, ali sta ključ in skrivno geslo programa navedena pravilno.",
+ "Please provide a valid app key and secret." : "Vpisati je treba veljaven ključ programa in kodo.",
"Step 1 failed. Exception: %s" : "1. korak je spodletel. Izjemna napaka: %s",
"Step 2 failed. Exception: %s" : "2. korak je spodletel. Izjemna napaka: %s",
"External storage" : "Zunanja shramba",
"Storage with id \"%i\" not found" : "Shrambe z ID \"%i\" ni mogoče najti.",
"Invalid mount point" : "Neveljavna priklopna točka",
"Invalid storage backend \"%s\"" : "Neveljaven ozadnji program shrambe \"%s\"",
+ "Unsatisfied authentication mechanism parameters" : "Nezadovoljivi parametri mehanizma overitve",
"Insufficient data: %s" : "Nepopolni podatki: %s",
"%s" : "%s",
"Personal" : "Osebno",
@@ -23,7 +26,9 @@
"Once every direct access" : "Enkrat ob neposrednem dostopu",
"All users. Type to select user or group." : "Vsi uporabniki. Skupino ali uporabnika je mogoče tudi izbrati.",
"(group)" : "(skupina)",
+ "Admin defined" : "Skrbnik je določen",
"Saved" : "Shranjeno",
+ "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",
"external-storage" : "zunanja-shramba",
diff --git a/apps/files_external/lib/config/configadapter.php b/apps/files_external/lib/config/configadapter.php
index d85e0f45631..a19a111d3d9 100644
--- a/apps/files_external/lib/config/configadapter.php
+++ b/apps/files_external/lib/config/configadapter.php
@@ -34,7 +34,7 @@ use OCP\IUser;
use OCA\Files_external\Service\UserStoragesService;
use OCA\Files_External\Service\UserGlobalStoragesService;
use OCA\Files_External\Lib\StorageConfig;
-use OCA\Files_External\Lib\FailedStorage;
+use OC\Files\Storage\FailedStorage;
use OCP\Files\StorageNotAvailableException;
/**
diff --git a/apps/files_external/lib/smb.php b/apps/files_external/lib/smb.php
index 67d1a23f5a7..25acae95fa3 100644
--- a/apps/files_external/lib/smb.php
+++ b/apps/files_external/lib/smb.php
@@ -30,6 +30,7 @@
namespace OC\Files\Storage;
+use Icewind\SMB\Exception\ConnectException;
use Icewind\SMB\Exception\Exception;
use Icewind\SMB\Exception\ForbiddenException;
use Icewind\SMB\Exception\NotFoundException;
@@ -39,6 +40,7 @@ use Icewind\Streams\CallbackWrapper;
use Icewind\Streams\IteratorDirectory;
use OC\Cache\CappedMemoryCache;
use OC\Files\Filesystem;
+use OCP\Files\StorageNotAvailableException;
class SMB extends Common {
/**
@@ -104,26 +106,36 @@ class SMB extends Common {
/**
* @param string $path
* @return \Icewind\SMB\IFileInfo
+ * @throws StorageNotAvailableException
*/
protected function getFileInfo($path) {
- $path = $this->buildPath($path);
- if (!isset($this->statCache[$path])) {
- $this->statCache[$path] = $this->share->stat($path);
+ try {
+ $path = $this->buildPath($path);
+ if (!isset($this->statCache[$path])) {
+ $this->statCache[$path] = $this->share->stat($path);
+ }
+ return $this->statCache[$path];
+ } catch (ConnectException $e) {
+ throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e);
}
- return $this->statCache[$path];
}
/**
* @param string $path
* @return \Icewind\SMB\IFileInfo[]
+ * @throws StorageNotAvailableException
*/
protected function getFolderContents($path) {
- $path = $this->buildPath($path);
- $files = $this->share->dir($path);
- foreach ($files as $file) {
- $this->statCache[$path . '/' . $file->getName()] = $file;
+ try {
+ $path = $this->buildPath($path);
+ $files = $this->share->dir($path);
+ foreach ($files as $file) {
+ $this->statCache[$path . '/' . $file->getName()] = $file;
+ }
+ return $files;
+ } catch (ConnectException $e) {
+ throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e);
}
- return $files;
}
/**
@@ -163,6 +175,8 @@ class SMB extends Common {
return false;
} catch (ForbiddenException $e) {
return false;
+ } catch (ConnectException $e) {
+ throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e);
}
}
@@ -245,6 +259,8 @@ class SMB extends Common {
return false;
} catch (ForbiddenException $e) {
return false;
+ } catch (ConnectException $e) {
+ throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e);
}
}
@@ -265,16 +281,22 @@ class SMB extends Common {
return false;
} catch (ForbiddenException $e) {
return false;
+ } catch (ConnectException $e) {
+ throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e);
}
}
public function touch($path, $time = null) {
- if (!$this->file_exists($path)) {
- $fh = $this->share->write($this->buildPath($path));
- fclose($fh);
- return true;
+ try {
+ if (!$this->file_exists($path)) {
+ $fh = $this->share->write($this->buildPath($path));
+ fclose($fh);
+ return true;
+ }
+ return false;
+ } catch (ConnectException $e) {
+ throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e);
}
- return false;
}
public function opendir($path) {
@@ -307,6 +329,8 @@ class SMB extends Common {
try {
$this->share->mkdir($path);
return true;
+ } catch (ConnectException $e) {
+ throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e);
} catch (Exception $e) {
return false;
}
@@ -320,6 +344,8 @@ class SMB extends Common {
return false;
} catch (ForbiddenException $e) {
return false;
+ } catch (ConnectException $e) {
+ throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e);
}
}
diff --git a/apps/files_external/service/dbconfigservice.php b/apps/files_external/service/dbconfigservice.php
index 5bbc3b23682..a37c541f045 100644
--- a/apps/files_external/service/dbconfigservice.php
+++ b/apps/files_external/service/dbconfigservice.php
@@ -92,7 +92,7 @@ class DBConfigService {
protected function getForQuery(IQueryBuilder $builder, $type, $value) {
$query = $builder->select(['m.mount_id', 'mount_point', 'storage_backend', 'auth_backend', 'priority', 'm.type'])
->from('external_mounts', 'm')
- ->innerJoin('m', 'external_applicable', 'a', 'm.mount_id = a.mount_id')
+ ->innerJoin('m', 'external_applicable', 'a', $builder->expr()->eq('m.mount_id', 'a.mount_id'))
->where($builder->expr()->eq('a.type', $builder->createNamedParameter($type, IQueryBuilder::PARAM_INT)));
if (is_null($value)) {
@@ -148,7 +148,7 @@ class DBConfigService {
$query = $builder->select(['m.mount_id', 'mount_point', 'storage_backend', 'auth_backend', 'priority', 'm.type'])
->from('external_mounts', 'm')
- ->innerJoin('m', 'external_applicable', 'a', 'm.mount_id = a.mount_id')
+ ->innerJoin('m', 'external_applicable', 'a', $builder->expr()->eq('m.mount_id', 'a.mount_id'))
->where($builder->expr()->eq('a.type', $builder->createNamedParameter($type, IQueryBuilder::PARAM_INT)))
->andWhere($builder->expr()->in('a.value', $params));
$query->andWhere($builder->expr()->eq('m.type', $builder->expr()->literal(self::MOUNT_TYPE_ADMIN, IQueryBuilder::PARAM_INT)));
diff --git a/apps/files_sharing/api/local.php b/apps/files_sharing/api/local.php
deleted file mode 100644
index 7d59d68ca6f..00000000000
--- a/apps/files_sharing/api/local.php
+++ /dev/null
@@ -1,645 +0,0 @@
-<?php
-/**
- * @author Björn Schießle <schiessle@owncloud.com>
- * @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 Roeland Jago Douma <rullzer@owncloud.com>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
- * @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 OCA\Files_Sharing\API;
-
-use OC\HintException;
-
-class Local {
-
- /**
- * get all shares
- *
- * @param array $params option 'file' to limit the result to a specific file/folder
- * @return \OC_OCS_Result share information
- */
- public static function getAllShares($params) {
- if (isset($_GET['shared_with_me']) && $_GET['shared_with_me'] !== 'false') {
- return self::getFilesSharedWithMe();
- }
- // if a file is specified, get the share for this file
- if (isset($_GET['path'])) {
- if ( isset($_GET['reshares']) && $_GET['reshares'] !== 'false' ) {
- $reshares = true;
- } else {
- $reshares = false;
- }
-
- if (isset($_GET['subfiles']) && $_GET['subfiles'] !== 'false') {
- return self::getSharesFromFolder($_GET['path']);
- }
- return self::collectShares(self::getFileId($_GET['path']),
- self::getItemType($_GET['path']),
- false,
- $_GET['path'],
- $reshares);
- }
-
- $shares = \OCP\Share::getItemShared('file', null);
-
- if ($shares === false) {
- return new \OC_OCS_Result(null, 404, 'could not get shares');
- } else {
- $mimetypeDetector = \OC::$server->getMimeTypeDetector();
- foreach ($shares as &$share) {
- if ($share['item_type'] === 'file' && isset($share['path'])) {
- $share['mimetype'] = $mimetypeDetector->detectPath($share['path']);
- if (\OC::$server->getPreviewManager()->isMimeSupported($share['mimetype'])) {
- $share['isPreviewAvailable'] = true;
- }
- }
-
- if (!is_null($share['token'])) {
- $share['url'] = \OC::$server->getURLGenerator()->linkToRouteAbsolute('files_sharing.sharecontroller.showShare', ['token' => $share['token']]);
- }
- }
- return new \OC_OCS_Result($shares);
- }
-
- }
-
- /**
- * get share information for a given share
- *
- * @param array $params which contains a 'id'
- * @return \OC_OCS_Result share information
- */
- public static function getShare($params) {
-
- $s = self::getShareFromId($params['id']);
-
- return self::collectShares($s['file_source'], $s['item_type'], true, null, false, (int)$params['id']);
- }
-
- /**
- * collect all share information, either of a specific share or all
- * shares for a given path
- *
- * @param string $itemSource
- * @param string $itemType
- * @param bool $getSpecificShare
- * @param string $path
- * @param bool $reshares
- * @param int $id
- *
- * @return \OC_OCS_Result
- */
- private static function collectShares($itemSource, $itemType, $getSpecificShare = false, $path = null, $reshares = false, $id = null) {
- if ($itemSource !== null) {
- $shares = \OCP\Share::getItemShared($itemType, $itemSource);
- $receivedFrom = \OCP\Share::getItemSharedWithBySource($itemType, $itemSource);
- // if a specific share was specified only return this one
- if ($getSpecificShare === true) {
- foreach ($shares as $share) {
- if ($share['id'] === $id) {
- $shares = array('element' => $share);
- break;
- }
- }
- } else {
- foreach ($shares as $key => $share) {
- $shares[$key]['path'] = $path;
- }
- }
-
-
- // include also reshares in the lists. This means that the result
- // will contain every user with access to the file.
- if ($reshares === true) {
- $shares = self::addReshares($shares, $itemSource);
- }
-
- if ($receivedFrom) {
- foreach ($shares as $key => $share) {
- $shares[$key]['received_from'] = $receivedFrom['uid_owner'];
- $shares[$key]['received_from_displayname'] = \OCP\User::getDisplayName($receivedFrom['uid_owner']);
- }
- }
- } else {
- $shares = null;
- }
-
- if ($shares === null || empty($shares)) {
- return new \OC_OCS_Result(null, 404, 'share doesn\'t exist');
- } else {
- foreach ($shares as &$share) {
- if (!is_null($share['token'])) {
- $share['url'] = \OC::$server->getURLGenerator()->linkToRouteAbsolute('files_sharing.sharecontroller.showShare', ['token' => $share['token']]);
- }
- }
-
- return new \OC_OCS_Result($shares);
- }
- }
-
- /**
- * add reshares to a array of shares
- * @param array $shares array of shares
- * @param int $itemSource item source ID
- * @return array new shares array which includes reshares
- */
- private static function addReshares($shares, $itemSource) {
-
- // if there are no shares than there are also no reshares
- $firstShare = reset($shares);
- if ($firstShare) {
- $path = $firstShare['path'];
- } else {
- return $shares;
- }
-
- $select = '`*PREFIX*share`.`id`, `item_type`, `*PREFIX*share`.`parent`, `share_type`, `share_with`, `file_source`, `path` , `*PREFIX*share`.`permissions`, `stime`, `expiration`, `token`, `storage`, `mail_send`, `mail_send`';
- $getReshares = \OCP\DB::prepare('SELECT ' . $select . ' FROM `*PREFIX*share` INNER JOIN `*PREFIX*filecache` ON `file_source` = `*PREFIX*filecache`.`fileid` WHERE `*PREFIX*share`.`file_source` = ? AND `*PREFIX*share`.`item_type` IN (\'file\', \'folder\') AND `uid_owner` != ?');
- $reshares = $getReshares->execute(array($itemSource, \OCP\User::getUser()))->fetchAll();
-
- foreach ($reshares as $key => $reshare) {
- if (isset($reshare['share_with']) && $reshare['share_with'] !== '') {
- $reshares[$key]['share_with_displayname'] = \OCP\User::getDisplayName($reshare['share_with']);
- }
- // add correct path to the result
- $reshares[$key]['path'] = $path;
- }
-
- return array_merge($shares, $reshares);
- }
-
- /**
- * get share from all files in a given folder (non-recursive)
- * @param string $path
- * @return \OC_OCS_Result
- */
- private static function getSharesFromFolder($path) {
- $view = new \OC\Files\View('/'.\OCP\User::getUser().'/files');
-
- if(!$view->is_dir($path)) {
- return new \OC_OCS_Result(null, 400, "not a directory");
- }
-
- $content = $view->getDirectoryContent($path);
-
- $result = array();
- foreach ($content as $file) {
- // workaround because folders are named 'dir' in this context
- $itemType = $file['type'] === 'file' ? 'file' : 'folder';
- $share = \OCP\Share::getItemShared($itemType, $file['fileid']);
- if($share) {
- $receivedFrom = \OCP\Share::getItemSharedWithBySource($itemType, $file['fileid']);
- reset($share);
- $key = key($share);
- if ($receivedFrom) {
- $share[$key]['received_from'] = $receivedFrom['uid_owner'];
- $share[$key]['received_from_displayname'] = \OCP\User::getDisplayName($receivedFrom['uid_owner']);
- }
- $result = array_merge($result, $share);
- }
- }
-
- return new \OC_OCS_Result($result);
- }
-
- /**
- * get files shared with the user
- * @return \OC_OCS_Result
- */
- private static function getFilesSharedWithMe() {
- try {
- $shares = \OCP\Share::getItemsSharedWith('file');
- $mimetypeDetector = \OC::$server->getMimeTypeDetector();
- foreach ($shares as &$share) {
- if ($share['item_type'] === 'file') {
- $share['mimetype'] = $mimetypeDetector->detectPath($share['file_target']);
- if (\OC::$server->getPreviewManager()->isMimeSupported($share['mimetype'])) {
- $share['isPreviewAvailable'] = true;
- }
- unset($share['path']);
- }
- }
- $result = new \OC_OCS_Result($shares);
- } catch (\Exception $e) {
- $result = new \OC_OCS_Result(null, 403, $e->getMessage());
- }
-
- return $result;
-
- }
-
- /**
- * create a new share
- * @param array $params
- * @return \OC_OCS_Result
- */
- public static function createShare($params) {
-
- $path = isset($_POST['path']) ? $_POST['path'] : null;
-
- if($path === null) {
- return new \OC_OCS_Result(null, 400, "please specify a file or folder path");
- }
- $itemSource = self::getFileId($path);
- $itemSourceName = $itemSource;
- $itemType = self::getItemType($path);
- $expirationDate = null;
-
- if($itemSource === null) {
- return new \OC_OCS_Result(null, 404, "wrong path, file/folder doesn't exist.");
- }
-
- $shareWith = isset($_POST['shareWith']) ? $_POST['shareWith'] : null;
- $shareType = isset($_POST['shareType']) ? (int)$_POST['shareType'] : null;
-
- switch($shareType) {
- case \OCP\Share::SHARE_TYPE_REMOTE:
- $shareWith = rtrim($shareWith, '/');
- $itemSourceName = basename($path);
- case \OCP\Share::SHARE_TYPE_USER:
- case \OCP\Share::SHARE_TYPE_GROUP:
- $permissions = isset($_POST['permissions']) ? (int)$_POST['permissions'] : 31;
- break;
- case \OCP\Share::SHARE_TYPE_LINK:
- //allow password protection
- $shareWith = isset($_POST['password']) ? $_POST['password'] : null;
- //check public link share
- $publicUploadEnabled = \OC::$server->getAppConfig()->getValue('core', 'shareapi_allow_public_upload', 'yes');
- if(isset($_POST['publicUpload']) && $publicUploadEnabled !== 'yes') {
- return new \OC_OCS_Result(null, 403, "public upload disabled by the administrator");
- }
- $publicUpload = isset($_POST['publicUpload']) ? $_POST['publicUpload'] : 'false';
- // read, create, update (7) if public upload is enabled or
- // read (1) if public upload is disabled
- $permissions = $publicUpload === 'true' ? 7 : 1;
-
- // Get the expiration date
- try {
- $expirationDate = isset($_POST['expireDate']) ? self::parseDate($_POST['expireDate']) : null;
- } catch (\Exception $e) {
- return new \OC_OCS_Result(null, 404, 'Invalid Date. Format must be YYYY-MM-DD.');
- }
-
- break;
- default:
- return new \OC_OCS_Result(null, 400, "unknown share type");
- }
-
- if (($permissions & \OCP\Constants::PERMISSION_READ) === 0) {
- return new \OC_OCS_Result(null, 400, 'invalid permissions');
- }
-
- try {
- $token = \OCP\Share::shareItem(
- $itemType,
- $itemSource,
- $shareType,
- $shareWith,
- $permissions,
- $itemSourceName,
- $expirationDate
- );
- } catch (HintException $e) {
- if ($e->getCode() === 0) {
- return new \OC_OCS_Result(null, 400, $e->getHint());
- } else {
- return new \OC_OCS_Result(null, $e->getCode(), $e->getHint());
- }
- } catch (\Exception $e) {
- return new \OC_OCS_Result(null, 403, $e->getMessage());
- }
-
- if ($token) {
- $data = array();
- $data['id'] = 'unknown';
- $shares = \OCP\Share::getItemShared($itemType, $itemSource);
- if(is_string($token)) { //public link share
- foreach ($shares as $share) {
- if ($share['token'] === $token) {
- $data['id'] = $share['id'];
- break;
- }
- }
- $data['url'] = \OC::$server->getURLGenerator()->linkToRouteAbsolute('files_sharing.sharecontroller.showShare', ['token' => $token]);
- $data['token'] = $token;
-
- } else {
- foreach ($shares as $share) {
- if ($share['share_with'] === $shareWith && $share['share_type'] === $shareType) {
- $data['id'] = $share['id'];
- break;
- }
- }
- }
-
- $data['permissions'] = $share['permissions'];
- $data['expiration'] = $share['expiration'];
-
- return new \OC_OCS_Result($data);
- } else {
- return new \OC_OCS_Result(null, 404, "couldn't share file");
- }
- }
-
- /**
- * update shares, e.g. password, permissions, etc
- * @param array $params shareId 'id' and the parameter we want to update
- * currently supported: permissions, password, publicUpload
- * @return \OC_OCS_Result
- */
- public static function updateShare($params) {
-
- $share = self::getShareFromId($params['id']);
-
- if(!isset($share['file_source'])) {
- return new \OC_OCS_Result(null, 404, "wrong share Id, share doesn't exist.");
- }
-
- try {
- if(isset($params['_put']['permissions'])) {
- return self::updatePermissions($share, $params);
- } elseif (isset($params['_put']['password'])) {
- return self::updatePassword($params['id'], (int)$share['share_type'], $params['_put']['password']);
- } elseif (isset($params['_put']['publicUpload'])) {
- return self::updatePublicUpload($share, $params);
- } elseif (isset($params['_put']['expireDate'])) {
- return self::updateExpireDate($share, $params);
- }
- } catch (\Exception $e) {
-
- return new \OC_OCS_Result(null, 400, $e->getMessage());
- }
-
- return new \OC_OCS_Result(null, 400, "Wrong or no update parameter given");
- }
-
- /**
- * update permissions for a share
- * @param array $share information about the share
- * @param array $params contains 'permissions'
- * @return \OC_OCS_Result
- */
- private static function updatePermissions($share, $params) {
-
- $itemSource = $share['item_source'];
- $itemType = $share['item_type'];
- $shareWith = $share['share_with'];
- $shareType = $share['share_type'];
- $permissions = isset($params['_put']['permissions']) ? (int)$params['_put']['permissions'] : null;
-
- $publicUploadStatus = \OC::$server->getAppConfig()->getValue('core', 'shareapi_allow_public_upload', 'yes');
- $publicUploadEnabled = ($publicUploadStatus === 'yes') ? true : false;
-
-
- // only change permissions for public shares if public upload is enabled
- // and we want to set permissions to 1 (read only) or 7 (allow upload)
- if ( (int)$shareType === \OCP\Share::SHARE_TYPE_LINK ) {
- if ($publicUploadEnabled === false || ($permissions !== 7 && $permissions !== 1)) {
- return new \OC_OCS_Result(null, 400, "can't change permission for public link share");
- }
- }
-
- if (($permissions & \OCP\Constants::PERMISSION_READ) === 0) {
- return new \OC_OCS_Result(null, 400, 'invalid permissions');
- }
-
- try {
- $return = \OCP\Share::setPermissions(
- $itemType,
- $itemSource,
- $shareType,
- $shareWith,
- $permissions
- );
- } catch (\Exception $e) {
- return new \OC_OCS_Result(null, 404, $e->getMessage());
- }
-
- if ($return) {
- return new \OC_OCS_Result();
- } else {
- return new \OC_OCS_Result(null, 404, "couldn't set permissions");
- }
- }
-
- /**
- * enable/disable public upload
- * @param array $share information about the share
- * @param array $params contains 'publicUpload' which can be 'yes' or 'no'
- * @return \OC_OCS_Result
- */
- private static function updatePublicUpload($share, $params) {
-
- $publicUploadEnabled = \OC::$server->getAppConfig()->getValue('core', 'shareapi_allow_public_upload', 'yes');
- if($publicUploadEnabled !== 'yes') {
- return new \OC_OCS_Result(null, 403, "public upload disabled by the administrator");
- }
-
- if ($share['item_type'] !== 'folder' ||
- (int)$share['share_type'] !== \OCP\Share::SHARE_TYPE_LINK ) {
- return new \OC_OCS_Result(null, 400, "public upload is only possible for public shared folders");
- }
-
- // read, create, update (7) if public upload is enabled or
- // read (1) if public upload is disabled
- $params['_put']['permissions'] = $params['_put']['publicUpload'] === 'true' ? 7 : 1;
-
- return self::updatePermissions($share, $params);
-
- }
-
- /**
- * set expire date for public link share
- * @param array $share information about the share
- * @param array $params contains 'expireDate' which needs to be a well formated date string, e.g DD-MM-YYYY
- * @return \OC_OCS_Result
- */
- private static function updateExpireDate($share, $params) {
- // only public links can have a expire date
- if ((int)$share['share_type'] !== \OCP\Share::SHARE_TYPE_LINK ) {
- return new \OC_OCS_Result(null, 400, "expire date only exists for public link shares");
- }
-
- try {
- $expireDateSet = \OCP\Share::setExpirationDate($share['item_type'], $share['item_source'], $params['_put']['expireDate'], (int)$share['stime']);
- $result = ($expireDateSet) ? new \OC_OCS_Result() : new \OC_OCS_Result(null, 404, "couldn't set expire date");
- } catch (\Exception $e) {
- $result = new \OC_OCS_Result(null, 404, $e->getMessage());
- }
-
- return $result;
-
- }
-
- /**
- * update password for public link share
- * @param int $shareId
- * @param int $shareType
- * @param string $password
- * @return \OC_OCS_Result
- */
- private static function updatePassword($shareId, $shareType, $password) {
- if($shareType !== \OCP\Share::SHARE_TYPE_LINK) {
- return new \OC_OCS_Result(null, 400, "password protection is only supported for public shares");
- }
-
- if($password === '') {
- $password = null;
- }
-
- try {
- $result = \OCP\Share::setPassword($shareId, $password);
- } catch (\Exception $e) {
- return new \OC_OCS_Result(null, 403, $e->getMessage());
- }
-
- if($result) {
- return new \OC_OCS_Result();
- }
-
- return new \OC_OCS_Result(null, 404, "couldn't set password");
- }
-
- /**
- * unshare a file/folder
- * @param array $params contains the shareID 'id' which should be unshared
- * @return \OC_OCS_Result
- */
- public static function deleteShare($params) {
-
- $share = self::getShareFromId($params['id']);
- $fileSource = isset($share['file_source']) ? $share['file_source'] : null;
- $itemType = isset($share['item_type']) ? $share['item_type'] : null;;
-
- if($fileSource === null) {
- return new \OC_OCS_Result(null, 404, "wrong share ID, share doesn't exist.");
- }
-
- $shareWith = isset($share['share_with']) ? $share['share_with'] : null;
- $shareType = isset($share['share_type']) ? (int)$share['share_type'] : null;
-
- if( $shareType === \OCP\Share::SHARE_TYPE_LINK) {
- $shareWith = null;
- }
-
- try {
- $return = \OCP\Share::unshare(
- $itemType,
- $fileSource,
- $shareType,
- $shareWith);
- } catch (\Exception $e) {
- return new \OC_OCS_Result(null, 404, $e->getMessage());
- }
-
- if ($return) {
- return new \OC_OCS_Result();
- } else {
- $msg = "Unshare Failed";
- return new \OC_OCS_Result(null, 404, $msg);
- }
- }
-
- /**
- * Make sure that the passed date is valid ISO 8601
- * So YYYY-MM-DD
- * If not throw an exception
- *
- * @param string $expireDate
- *
- * @throws \Exception
- * @return \DateTime
- */
- private static function parseDate($expireDate) {
- if (preg_match('/^\d{4}-\d{2}-\d{2}$/', $expireDate) === 0) {
- throw new \Exception('Invalid date. Format must be YYYY-MM-DD');
- }
-
- $date = new \DateTime($expireDate);
-
- if ($date === false) {
- throw new \Exception('Invalid date. Format must be YYYY-MM-DD');
- }
-
- return $date;
- }
-
- /**
- * get file ID from a given path
- * @param string $path
- * @return string fileID or null
- */
- private static function getFileId($path) {
-
- $view = new \OC\Files\View('/'.\OCP\User::getUser().'/files');
- $fileId = null;
- $fileInfo = $view->getFileInfo($path);
- if ($fileInfo) {
- $fileId = $fileInfo['fileid'];
- }
-
- return $fileId;
- }
-
- /**
- * get itemType
- * @param string $path
- * @return string type 'file', 'folder' or null of file/folder doesn't exists
- */
- private static function getItemType($path) {
- $view = new \OC\Files\View('/'.\OCP\User::getUser().'/files');
- $itemType = null;
-
- if ($view->is_dir($path)) {
- $itemType = "folder";
- } elseif ($view->is_file($path)) {
- $itemType = "file";
- }
-
- return $itemType;
- }
-
- /**
- * get some information from a given share
- * @param int $shareID
- * @return array with: item_source, share_type, share_with, item_type, permissions
- */
- private static function getShareFromId($shareID) {
- $sql = 'SELECT `file_source`, `item_source`, `share_type`, `share_with`, `item_type`, `permissions`, `stime` FROM `*PREFIX*share` WHERE `id` = ?';
- $args = array($shareID);
- $query = \OCP\DB::prepare($sql);
- $result = $query->execute($args);
-
- if (\OCP\DB::isError($result)) {
- \OCP\Util::writeLog('files_sharing', \OCP\DB::getErrorMessage(), \OCP\Util::ERROR);
- return null;
- }
- if ($share = $result->fetchRow()) {
- return $share;
- }
-
- return null;
-
- }
-
-}
diff --git a/apps/files_sharing/api/ocssharewrapper.php b/apps/files_sharing/api/ocssharewrapper.php
index 9f63e864cec..a51ad1eb2c9 100644
--- a/apps/files_sharing/api/ocssharewrapper.php
+++ b/apps/files_sharing/api/ocssharewrapper.php
@@ -36,7 +36,7 @@ class OCSShareWrapper {
\OC::$server->getUserSession()->getUser());
}
- public function getAllShares($params) {
+ public function getAllShares() {
return $this->getShare20OCS()->getShares();
}
diff --git a/apps/files_sharing/api/server2server.php b/apps/files_sharing/api/server2server.php
index 6da95ed6549..a3d58880f70 100644
--- a/apps/files_sharing/api/server2server.php
+++ b/apps/files_sharing/api/server2server.php
@@ -178,7 +178,7 @@ class Server2Server {
if ($share) {
// userId must be set to the user who unshares
- \OCP\Share::unshare($share['item_type'], $share['item_source'], $share['share_type'], null, $share['uid_owner']);
+ \OCP\Share::unshare($share['item_type'], $share['item_source'], $share['share_type'], $share['share_with'], $share['uid_owner']);
list($file, $link) = $this->getFile($share['uid_owner'], $share['file_source']);
diff --git a/apps/files_sharing/api/share20ocs.php b/apps/files_sharing/api/share20ocs.php
index 0c9e5473d9c..5a2af48d6f5 100644
--- a/apps/files_sharing/api/share20ocs.php
+++ b/apps/files_sharing/api/share20ocs.php
@@ -50,7 +50,7 @@ class Share20OCS {
private $request;
/** @var IRootFolder */
private $rootFolder;
- /** @var IUrlGenerator */
+ /** @var IURLGenerator */
private $urlGenerator;
/** @var IUser */
private $currentUser;
@@ -115,6 +115,7 @@ class Share20OCS {
} else {
$result['item_type'] = 'file';
}
+ $result['mimetype'] = $node->getMimeType();
$result['storage_id'] = $node->getStorage()->getId();
$result['storage'] = $node->getStorage()->getCache()->getNumericStorageId();
$result['item_source'] = $node->getId();
diff --git a/apps/files_sharing/api/sharees.php b/apps/files_sharing/api/sharees.php
index 28dfd4af955..718be4dece9 100644
--- a/apps/files_sharing/api/sharees.php
+++ b/apps/files_sharing/api/sharees.php
@@ -147,8 +147,8 @@ class Sharees {
$foundUserById = false;
foreach ($users as $uid => $userDisplayName) {
- if (strtolower($uid) === $search || strtolower($userDisplayName) === $search) {
- if (strtolower($uid) === $search) {
+ if (strtolower($uid) === strtolower($search) || strtolower($userDisplayName) === strtolower($search)) {
+ if (strtolower($uid) === strtolower($search)) {
$foundUserById = true;
}
$this->result['exact']['users'][] = [
@@ -221,12 +221,12 @@ class Sharees {
}
foreach ($groups as $gid) {
- if (strtolower($gid) === $search) {
+ if (strtolower($gid) === strtolower($search)) {
$this->result['exact']['groups'][] = [
- 'label' => $search,
+ 'label' => $gid,
'value' => [
'shareType' => Share::SHARE_TYPE_GROUP,
- 'shareWith' => $search,
+ 'shareWith' => $gid,
],
];
} else {
@@ -282,8 +282,8 @@ class Sharees {
}
foreach ($cloudIds as $cloudId) {
list(, $serverUrl) = $this->splitUserRemote($cloudId);
- if (strtolower($contact['FN']) === $search || strtolower($cloudId) === $search) {
- if (strtolower($cloudId) === $search) {
+ if (strtolower($contact['FN']) === strtolower($search) || strtolower($cloudId) === strtolower($search)) {
+ if (strtolower($cloudId) === strtolower($search)) {
$foundRemoteById = true;
}
$this->result['exact']['remotes'][] = [
diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js
index 176702670f5..6526012e24a 100644
--- a/apps/files_sharing/l10n/de.js
+++ b/apps/files_sharing/l10n/de.js
@@ -3,11 +3,11 @@ OC.L10N.register(
{
"Server to server sharing is not enabled on this server" : "Das Server-zu-Server-Teilen ist auf diesem Server nicht aktiviert",
"The mountpoint name contains invalid characters." : "Der Name des Einhängepunktes enthält ungültige Zeichen.",
- "Not allowed to create a federated share with the same user server" : "Nicht erlaubt eine föderierte Freigabe mit dem gleichen Benutzerserver zu erstellen",
+ "Not allowed to create a federated share with the same user server" : "Teilen mit Nutzern auf dem selben Server via Federated Cloud ist nicht erlaubt",
"Invalid or untrusted SSL certificate" : "Ungültiges oder nicht vertrauenswürdiges SSL-Zertifikat",
"Could not authenticate to remote share, password might be wrong" : "Die Authentifizierung an der entfernten Freigabe konnte nicht erfolgen, das Passwort könnte falsch sein",
"Storage not valid" : "Speicher ungültig",
- "Couldn't add remote share" : "Entfernte Freigabe kann nicht hinzu gefügt werden",
+ "Couldn't add remote share" : "Remotefreigabe kann nicht hinzu gefügt werden",
"Shared with you" : "Mit Dir geteilt",
"Shared with others" : "Von Dir geteilt",
"Shared by link" : "Geteilt über einen Link",
@@ -40,38 +40,38 @@ OC.L10N.register(
"Public shared file %1$s was downloaded" : "Die öffentliche geteilte Datei %1$s wurde heruntergeladen",
"You shared %1$s with %2$s" : "Du hast %1$s mit %2$s geteilt",
"%2$s shared %1$s with %3$s" : "%2$s geteilt %1$s mit %3$s",
- "You removed the share of %2$s for %1$s" : "Sie haben die Freigabe von %2$s für %1$s",
- "%2$s removed the share of %3$s for %1$s" : "%2$s entfernt die Freigabe der %3$s für %1$s",
+ "You removed the share of %2$s for %1$s" : "Du hast die Freigabe von %2$s für %1$s entfernt",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s hat die Freigabe der %3$s für %1$s entfernt",
"You shared %1$s with group %2$s" : "Du hast %1$s mit der Gruppe %2$s geteilt",
- "%2$s shared %1$s with group %3$s" : "%2$s geteilt %1$s mit Gruppe %3$s",
- "You removed the share of group %2$s for %1$s" : "Du hast der Gruppe von der Freigabe entfernt %2$s für %1$s",
- "%2$s removed the share of group %3$s for %1$s" : "%2$s Freigabe der Gruppe entfernt %3$s für %1$s",
- "%2$s shared %1$s via link" : "%2$s geteilt %1$s via Link",
+ "%2$s shared %1$s with group %3$s" : "%2$s hat %1$s mit Gruppe %3$s geteilt",
+ "You removed the share of group %2$s for %1$s" : "Du hast die Freigabe der Gruppe %2$s für %1$s entfernt",
+ "%2$s removed the share of group %3$s for %1$s" : "%2$s hat die Freigabe der Gruppe %3$s für %1$s entfernt",
+ "%2$s shared %1$s via link" : "%2$s hat %1$s über einen Link freigegeben",
"You shared %1$s via link" : "Du hast %1$s über einen Link freigegeben",
"You removed the public link for %1$s" : "Du hast den öffentlichen Link für %1$s entfernt",
- "%2$s removed the public link for %1$s" : "%2$s entfernte den öffentlichen Link für %1$s",
+ "%2$s removed the public link for %1$s" : "%2$s hat den öffentlichen Link für %1$s entfernt",
"Your public link for %1$s expired" : "Dein öffentlicher Link für %1$s ist abgelaufen",
"The public link of %2$s for %1$s expired" : "Der öffentliche Link von %2$s für %1$s ist abgelaufen",
"%2$s shared %1$s with you" : "%2$s hat %1$s mit Dir geteilt",
- "%2$s removed the share for %1$s" : "%2$s entfernte die Freigabe für %1$s",
+ "%2$s removed the share for %1$s" : "%2$s hat die Freigabe für %1$s entfernt",
"Downloaded via public link" : "Runtergeladen mittels öffentlichen Link",
"Shared with %2$s" : "Geteilt mit %2$s",
"Shared with %3$s by %2$s" : "Geteilt mit %3$s von %2$s",
- "Removed share for %2$s" : "Entfernte die Freigabe für %2$s",
- "%2$s removed share for %3$s" : "%2$s entfernte die Freigabe für %3$s",
+ "Removed share for %2$s" : "Freigabe für %2$s entfernt",
+ "%2$s removed share for %3$s" : "%2$s hat die Freigabe für %3$s entfernt",
"Shared with group %2$s" : "Geteilt mit Gruppe %2$s",
- "Shared with group %3$s by %2$s" : "Geteilt mit Gruppe %3$s von %2$s",
- "Removed share of group %2$s" : "entfernte die Gruppe von der Freigabe %2$s ",
- "%2$s removed share of group %3$s" : "%2$s entfernte die Gruppe von der Freigabe %3$s",
+ "Shared with group %3$s by %2$s" : "Freigabe für Gruppe %3$s von %2$s entfernt",
+ "Removed share of group %2$s" : "Freigabe für Gruppe %2$s entfernt",
+ "%2$s removed share of group %3$s" : "%2$s hat die Freigabe für Gruppe %3$s entfernt",
"Shared via link by %2$s" : "Geteilt mittels Link von %2$s",
"Shared via public link" : "Geteilt mittels öffentlichen Link",
- "Removed public link" : "entfernt öffentlichen Link",
- "%2$s removed public link" : "%2$s entfernte den öffentlichen Link",
+ "Removed public link" : "Öffentlichen Link entfernt",
+ "%2$s removed public link" : "%2$s hat den öffentlichen Link entfernt",
"Public link expired" : "öffentlicher Link ist abgelaufen",
- "Public link of %2$s expired" : "öffentlicher Link von %2$s ist abgelaufen",
+ "Public link of %2$s expired" : "Öffentlicher Link von %2$s ist abgelaufen",
"Shared by %2$s" : "Geteilt von %2$s",
"Shares" : "Freigaben",
- "You received \"/%2$s\" as a remote share from %1$s" : "Du empfängst \"/%2$s\" als Remote Freigabe von %1$s",
+ "You received \"/%2$s\" as a remote share from %1$s" : "Du empfängst \"/%2$s\" als Remotefreigabe von %1$s",
"Accept" : "Ok",
"Decline" : "Abgelehnt",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Teile mit mir über meine #ownCloud Federated-Cloud-ID, siehe %s",
diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json
index 8b7649b760e..f9d6118769c 100644
--- a/apps/files_sharing/l10n/de.json
+++ b/apps/files_sharing/l10n/de.json
@@ -1,11 +1,11 @@
{ "translations": {
"Server to server sharing is not enabled on this server" : "Das Server-zu-Server-Teilen ist auf diesem Server nicht aktiviert",
"The mountpoint name contains invalid characters." : "Der Name des Einhängepunktes enthält ungültige Zeichen.",
- "Not allowed to create a federated share with the same user server" : "Nicht erlaubt eine föderierte Freigabe mit dem gleichen Benutzerserver zu erstellen",
+ "Not allowed to create a federated share with the same user server" : "Teilen mit Nutzern auf dem selben Server via Federated Cloud ist nicht erlaubt",
"Invalid or untrusted SSL certificate" : "Ungültiges oder nicht vertrauenswürdiges SSL-Zertifikat",
"Could not authenticate to remote share, password might be wrong" : "Die Authentifizierung an der entfernten Freigabe konnte nicht erfolgen, das Passwort könnte falsch sein",
"Storage not valid" : "Speicher ungültig",
- "Couldn't add remote share" : "Entfernte Freigabe kann nicht hinzu gefügt werden",
+ "Couldn't add remote share" : "Remotefreigabe kann nicht hinzu gefügt werden",
"Shared with you" : "Mit Dir geteilt",
"Shared with others" : "Von Dir geteilt",
"Shared by link" : "Geteilt über einen Link",
@@ -38,38 +38,38 @@
"Public shared file %1$s was downloaded" : "Die öffentliche geteilte Datei %1$s wurde heruntergeladen",
"You shared %1$s with %2$s" : "Du hast %1$s mit %2$s geteilt",
"%2$s shared %1$s with %3$s" : "%2$s geteilt %1$s mit %3$s",
- "You removed the share of %2$s for %1$s" : "Sie haben die Freigabe von %2$s für %1$s",
- "%2$s removed the share of %3$s for %1$s" : "%2$s entfernt die Freigabe der %3$s für %1$s",
+ "You removed the share of %2$s for %1$s" : "Du hast die Freigabe von %2$s für %1$s entfernt",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s hat die Freigabe der %3$s für %1$s entfernt",
"You shared %1$s with group %2$s" : "Du hast %1$s mit der Gruppe %2$s geteilt",
- "%2$s shared %1$s with group %3$s" : "%2$s geteilt %1$s mit Gruppe %3$s",
- "You removed the share of group %2$s for %1$s" : "Du hast der Gruppe von der Freigabe entfernt %2$s für %1$s",
- "%2$s removed the share of group %3$s for %1$s" : "%2$s Freigabe der Gruppe entfernt %3$s für %1$s",
- "%2$s shared %1$s via link" : "%2$s geteilt %1$s via Link",
+ "%2$s shared %1$s with group %3$s" : "%2$s hat %1$s mit Gruppe %3$s geteilt",
+ "You removed the share of group %2$s for %1$s" : "Du hast die Freigabe der Gruppe %2$s für %1$s entfernt",
+ "%2$s removed the share of group %3$s for %1$s" : "%2$s hat die Freigabe der Gruppe %3$s für %1$s entfernt",
+ "%2$s shared %1$s via link" : "%2$s hat %1$s über einen Link freigegeben",
"You shared %1$s via link" : "Du hast %1$s über einen Link freigegeben",
"You removed the public link for %1$s" : "Du hast den öffentlichen Link für %1$s entfernt",
- "%2$s removed the public link for %1$s" : "%2$s entfernte den öffentlichen Link für %1$s",
+ "%2$s removed the public link for %1$s" : "%2$s hat den öffentlichen Link für %1$s entfernt",
"Your public link for %1$s expired" : "Dein öffentlicher Link für %1$s ist abgelaufen",
"The public link of %2$s for %1$s expired" : "Der öffentliche Link von %2$s für %1$s ist abgelaufen",
"%2$s shared %1$s with you" : "%2$s hat %1$s mit Dir geteilt",
- "%2$s removed the share for %1$s" : "%2$s entfernte die Freigabe für %1$s",
+ "%2$s removed the share for %1$s" : "%2$s hat die Freigabe für %1$s entfernt",
"Downloaded via public link" : "Runtergeladen mittels öffentlichen Link",
"Shared with %2$s" : "Geteilt mit %2$s",
"Shared with %3$s by %2$s" : "Geteilt mit %3$s von %2$s",
- "Removed share for %2$s" : "Entfernte die Freigabe für %2$s",
- "%2$s removed share for %3$s" : "%2$s entfernte die Freigabe für %3$s",
+ "Removed share for %2$s" : "Freigabe für %2$s entfernt",
+ "%2$s removed share for %3$s" : "%2$s hat die Freigabe für %3$s entfernt",
"Shared with group %2$s" : "Geteilt mit Gruppe %2$s",
- "Shared with group %3$s by %2$s" : "Geteilt mit Gruppe %3$s von %2$s",
- "Removed share of group %2$s" : "entfernte die Gruppe von der Freigabe %2$s ",
- "%2$s removed share of group %3$s" : "%2$s entfernte die Gruppe von der Freigabe %3$s",
+ "Shared with group %3$s by %2$s" : "Freigabe für Gruppe %3$s von %2$s entfernt",
+ "Removed share of group %2$s" : "Freigabe für Gruppe %2$s entfernt",
+ "%2$s removed share of group %3$s" : "%2$s hat die Freigabe für Gruppe %3$s entfernt",
"Shared via link by %2$s" : "Geteilt mittels Link von %2$s",
"Shared via public link" : "Geteilt mittels öffentlichen Link",
- "Removed public link" : "entfernt öffentlichen Link",
- "%2$s removed public link" : "%2$s entfernte den öffentlichen Link",
+ "Removed public link" : "Öffentlichen Link entfernt",
+ "%2$s removed public link" : "%2$s hat den öffentlichen Link entfernt",
"Public link expired" : "öffentlicher Link ist abgelaufen",
- "Public link of %2$s expired" : "öffentlicher Link von %2$s ist abgelaufen",
+ "Public link of %2$s expired" : "Öffentlicher Link von %2$s ist abgelaufen",
"Shared by %2$s" : "Geteilt von %2$s",
"Shares" : "Freigaben",
- "You received \"/%2$s\" as a remote share from %1$s" : "Du empfängst \"/%2$s\" als Remote Freigabe von %1$s",
+ "You received \"/%2$s\" as a remote share from %1$s" : "Du empfängst \"/%2$s\" als Remotefreigabe von %1$s",
"Accept" : "Ok",
"Decline" : "Abgelehnt",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Teile mit mir über meine #ownCloud Federated-Cloud-ID, siehe %s",
diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js
index 90f4d2274b0..aaa93baf2f0 100644
--- a/apps/files_sharing/l10n/de_DE.js
+++ b/apps/files_sharing/l10n/de_DE.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"Server to server sharing is not enabled on this server" : "Das Server-zu-Server-Teilen ist auf diesem Server nicht aktiviert",
"The mountpoint name contains invalid characters." : "Der Name des Einhängepunktes enthält ungültige Zeichen.",
- "Not allowed to create a federated share with the same user server" : "Das Erstellen einer föderierten Freigabe mit dem gleichen Benutzerserver ist nicht erlaubt",
+ "Not allowed to create a federated share with the same user server" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
"Invalid or untrusted SSL certificate" : "Ungültiges oder nicht vertrauenswürdiges SSL-Zertifikat",
"Could not authenticate to remote share, password might be wrong" : "Die Authentifizierung an der entfernten Freigabe konnte nicht erfolgen, das Passwort könnte falsch sein",
"Storage not valid" : "Speicher ungültig",
@@ -40,22 +40,38 @@ OC.L10N.register(
"Public shared file %1$s was downloaded" : "Die öffentliche geteilte Datei %1$s wurde heruntergeladen",
"You shared %1$s with %2$s" : "Sie haben %1$s mit %2$s geteilt",
"%2$s shared %1$s with %3$s" : "%2$s hat %1$s mit %3$s geteilt",
- "You removed the share of %2$s for %1$s" : "Sie haben die Freigabe von %2$s für %1$s gelöscht",
+ "You removed the share of %2$s for %1$s" : "Sie haben die Freigabe von %2$s für %1$s entfernt",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s hat die Freigabe von %3$s für %1$s entfernt",
"You shared %1$s with group %2$s" : "Sie haben %1$s mit der Gruppe %2$s geteilt",
+ "%2$s shared %1$s with group %3$s" : "%2$s hat %1$s mit der Gruppe %3$s geteilt",
+ "You removed the share of group %2$s for %1$s" : "Sie haben die Freigabe der Gruppe %2$s für %1$s entfernt",
+ "%2$s removed the share of group %3$s for %1$s" : "%2$s hat die Freigabe der Gruppe %3$s für %1$s entfernt",
+ "%2$s shared %1$s via link" : "%2$s hat %1$s über einen Link geteilt",
"You shared %1$s via link" : "Sie haben %1$s über einen Link geteilt",
+ "You removed the public link for %1$s" : "Sie haben die Freigabe als Link für %1$s entfernt",
+ "%2$s removed the public link for %1$s" : "%2$s hat die Freigabe als Link für %1$s entfernt",
+ "Your public link for %1$s expired" : "Ihre Freigabe als Link für %1$s ist abgelaufen",
+ "The public link of %2$s for %1$s expired" : "Die Freigabe als Link von %2$s für %1$s ist abgelaufen",
"%2$s shared %1$s with you" : "%2$s hat %1$s mit Ihnen geteilt",
+ "%2$s removed the share for %1$s" : "%2$s hat die Freigabe für %1$s entfernt",
"Downloaded via public link" : "Über den öffentlichen Link heruntergeladen",
"Shared with %2$s" : "Geteilt mit %2$s",
"Shared with %3$s by %2$s" : "Geteilt mit %3$s von %2$s",
+ "Removed share for %2$s" : "Freigabe für %2$s entfernt",
+ "%2$s removed share for %3$s" : "%2$s hat die Freigabe für %3$s entfernt",
"Shared with group %2$s" : "Geteilt mit der Gruppe %2$s",
"Shared with group %3$s by %2$s" : "Geteilt mit der Gruppe %3$s von %2$s",
+ "Removed share of group %2$s" : "Freigabe für Gruppe %2$s entfernt",
+ "%2$s removed share of group %3$s" : "%2$s hat die Freigabe für Gruppe %3$s entfernt",
"Shared via link by %2$s" : "Geteilt durch einen Link von %2$s",
"Shared via public link" : "Durch einen öffentlichen Link geteilt",
- "Removed public link" : "entfernte öffentlichen Link",
+ "Removed public link" : "Öffentlichen Link entfernt",
+ "%2$s removed public link" : "%2$s hat die Freigabe als Link entfernt",
"Public link expired" : "öffentlicher Link ist abgelaufen",
- "Public link of %2$s expired" : "öffentlicher Link von %2$s ist abgelaufen",
+ "Public link of %2$s expired" : "Öffentlicher Link von %2$s ist abgelaufen",
"Shared by %2$s" : "Geteilt von %2$s",
"Shares" : "Geteiltes",
+ "You received \"/%2$s\" as a remote share from %1$s" : "Sie haben \"/%2$s\" als Remotefreigabe von %1$s erhalten",
"Accept" : "Akzeptieren",
"Decline" : "Ablehnen",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Teilen Sie mit mir über meine #ownCloud Federated-Cloud-ID, siehe %s",
diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json
index 834be383d4e..24bb6c43cdb 100644
--- a/apps/files_sharing/l10n/de_DE.json
+++ b/apps/files_sharing/l10n/de_DE.json
@@ -1,7 +1,7 @@
{ "translations": {
"Server to server sharing is not enabled on this server" : "Das Server-zu-Server-Teilen ist auf diesem Server nicht aktiviert",
"The mountpoint name contains invalid characters." : "Der Name des Einhängepunktes enthält ungültige Zeichen.",
- "Not allowed to create a federated share with the same user server" : "Das Erstellen einer föderierten Freigabe mit dem gleichen Benutzerserver ist nicht erlaubt",
+ "Not allowed to create a federated share with the same user server" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
"Invalid or untrusted SSL certificate" : "Ungültiges oder nicht vertrauenswürdiges SSL-Zertifikat",
"Could not authenticate to remote share, password might be wrong" : "Die Authentifizierung an der entfernten Freigabe konnte nicht erfolgen, das Passwort könnte falsch sein",
"Storage not valid" : "Speicher ungültig",
@@ -38,22 +38,38 @@
"Public shared file %1$s was downloaded" : "Die öffentliche geteilte Datei %1$s wurde heruntergeladen",
"You shared %1$s with %2$s" : "Sie haben %1$s mit %2$s geteilt",
"%2$s shared %1$s with %3$s" : "%2$s hat %1$s mit %3$s geteilt",
- "You removed the share of %2$s for %1$s" : "Sie haben die Freigabe von %2$s für %1$s gelöscht",
+ "You removed the share of %2$s for %1$s" : "Sie haben die Freigabe von %2$s für %1$s entfernt",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s hat die Freigabe von %3$s für %1$s entfernt",
"You shared %1$s with group %2$s" : "Sie haben %1$s mit der Gruppe %2$s geteilt",
+ "%2$s shared %1$s with group %3$s" : "%2$s hat %1$s mit der Gruppe %3$s geteilt",
+ "You removed the share of group %2$s for %1$s" : "Sie haben die Freigabe der Gruppe %2$s für %1$s entfernt",
+ "%2$s removed the share of group %3$s for %1$s" : "%2$s hat die Freigabe der Gruppe %3$s für %1$s entfernt",
+ "%2$s shared %1$s via link" : "%2$s hat %1$s über einen Link geteilt",
"You shared %1$s via link" : "Sie haben %1$s über einen Link geteilt",
+ "You removed the public link for %1$s" : "Sie haben die Freigabe als Link für %1$s entfernt",
+ "%2$s removed the public link for %1$s" : "%2$s hat die Freigabe als Link für %1$s entfernt",
+ "Your public link for %1$s expired" : "Ihre Freigabe als Link für %1$s ist abgelaufen",
+ "The public link of %2$s for %1$s expired" : "Die Freigabe als Link von %2$s für %1$s ist abgelaufen",
"%2$s shared %1$s with you" : "%2$s hat %1$s mit Ihnen geteilt",
+ "%2$s removed the share for %1$s" : "%2$s hat die Freigabe für %1$s entfernt",
"Downloaded via public link" : "Über den öffentlichen Link heruntergeladen",
"Shared with %2$s" : "Geteilt mit %2$s",
"Shared with %3$s by %2$s" : "Geteilt mit %3$s von %2$s",
+ "Removed share for %2$s" : "Freigabe für %2$s entfernt",
+ "%2$s removed share for %3$s" : "%2$s hat die Freigabe für %3$s entfernt",
"Shared with group %2$s" : "Geteilt mit der Gruppe %2$s",
"Shared with group %3$s by %2$s" : "Geteilt mit der Gruppe %3$s von %2$s",
+ "Removed share of group %2$s" : "Freigabe für Gruppe %2$s entfernt",
+ "%2$s removed share of group %3$s" : "%2$s hat die Freigabe für Gruppe %3$s entfernt",
"Shared via link by %2$s" : "Geteilt durch einen Link von %2$s",
"Shared via public link" : "Durch einen öffentlichen Link geteilt",
- "Removed public link" : "entfernte öffentlichen Link",
+ "Removed public link" : "Öffentlichen Link entfernt",
+ "%2$s removed public link" : "%2$s hat die Freigabe als Link entfernt",
"Public link expired" : "öffentlicher Link ist abgelaufen",
- "Public link of %2$s expired" : "öffentlicher Link von %2$s ist abgelaufen",
+ "Public link of %2$s expired" : "Öffentlicher Link von %2$s ist abgelaufen",
"Shared by %2$s" : "Geteilt von %2$s",
"Shares" : "Geteiltes",
+ "You received \"/%2$s\" as a remote share from %1$s" : "Sie haben \"/%2$s\" als Remotefreigabe von %1$s erhalten",
"Accept" : "Akzeptieren",
"Decline" : "Ablehnen",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Teilen Sie mit mir über meine #ownCloud Federated-Cloud-ID, siehe %s",
diff --git a/apps/files_sharing/l10n/nb_NO.js b/apps/files_sharing/l10n/nb_NO.js
index 7c1d4714bcb..29cf14fb4a5 100644
--- a/apps/files_sharing/l10n/nb_NO.js
+++ b/apps/files_sharing/l10n/nb_NO.js
@@ -4,7 +4,7 @@ OC.L10N.register(
"Server to server sharing is not enabled on this server" : "Server til server-deling er ikke aktivert på denne serveren",
"The mountpoint name contains invalid characters." : "Navnet på oppkoblingspunktet inneholder ugyldige tegn.",
"Not allowed to create a federated share with the same user server" : "Ikke tillatt å opprette en Sammenknyttet sky-deling med den samme bruker-serveren",
- "Invalid or untrusted SSL certificate" : "Ugyldig eller ikke tiltrodd SSL-sertifikat",
+ "Invalid or untrusted SSL certificate" : "Ugyldig eller ikke-klarert SSL-sertifikat",
"Could not authenticate to remote share, password might be wrong" : "Klarte ikke å autentisere mot ekstern deling. Passordet kan være feil",
"Storage not valid" : "Lagerplass ikke gyldig",
"Couldn't add remote share" : "Klarte ikke å legge til ekstern deling",
diff --git a/apps/files_sharing/l10n/nb_NO.json b/apps/files_sharing/l10n/nb_NO.json
index 0d99939ace9..b52aa14c6b4 100644
--- a/apps/files_sharing/l10n/nb_NO.json
+++ b/apps/files_sharing/l10n/nb_NO.json
@@ -2,7 +2,7 @@
"Server to server sharing is not enabled on this server" : "Server til server-deling er ikke aktivert på denne serveren",
"The mountpoint name contains invalid characters." : "Navnet på oppkoblingspunktet inneholder ugyldige tegn.",
"Not allowed to create a federated share with the same user server" : "Ikke tillatt å opprette en Sammenknyttet sky-deling med den samme bruker-serveren",
- "Invalid or untrusted SSL certificate" : "Ugyldig eller ikke tiltrodd SSL-sertifikat",
+ "Invalid or untrusted SSL certificate" : "Ugyldig eller ikke-klarert SSL-sertifikat",
"Could not authenticate to remote share, password might be wrong" : "Klarte ikke å autentisere mot ekstern deling. Passordet kan være feil",
"Storage not valid" : "Lagerplass ikke gyldig",
"Couldn't add remote share" : "Klarte ikke å legge til ekstern deling",
diff --git a/apps/files_sharing/l10n/sl.js b/apps/files_sharing/l10n/sl.js
index 33742cd4dcc..4c2bb507745 100644
--- a/apps/files_sharing/l10n/sl.js
+++ b/apps/files_sharing/l10n/sl.js
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"Server to server sharing is not enabled on this server" : "Na tem strežniku ni omogočena možnost souporabe strežnika s strežnikom.",
"The mountpoint name contains invalid characters." : "Ime točke priklopa vsebuje neveljavne znake.",
- "Not allowed to create a federated share with the same user server" : "Ni dovoljeno ustvariti souporabe s prenosom dovoljenj z istim uporabnikom",
+ "Not allowed to create a federated share with the same user server" : "Ni dovoljeno ustvariti souporabe zveznega oblaka z istim uporabnikom",
"Invalid or untrusted SSL certificate" : "Neveljavno oziroma nepotrjeno potrdilo SSL",
"Could not authenticate to remote share, password might be wrong" : "Ni mogoče overiti istovetnosti oddaljene mape za souporabo. Najverjetneje je uporabljeno napačno geslo.",
"Storage not valid" : "Shramba ni veljavna",
@@ -11,7 +11,7 @@ OC.L10N.register(
"Shared with you" : "V souporabi z vami",
"Shared with others" : "V souporabi z drugimi",
"Shared by link" : "Souporaba s povezavo",
- "Federated sharing" : "Souporaba s prenosom dovoljenj",
+ "Federated sharing" : "Souporaba zveznega oblaka",
"Nothing shared with you yet" : "Datotek drugih uporabnikov še ni v souporabi",
"Files and folders others share with you will show up here" : "Datoteke in mape, katerih souporabo z vami dovolijo drugi, bodo izpisane na tem mestu",
"Nothing shared yet" : "Souporabe datotek še niste omogočili",
@@ -46,8 +46,8 @@ OC.L10N.register(
"Shares" : "Souporaba",
"Accept" : "Sprejmi",
"Decline" : "Zavrni",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Omogoči souporabo prek #ownCloud ID za prenos dovoljenj, več na %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Omogoči souporabo prek #ownCloud ID za prenos dovoljenj",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Omogoči souporabo prek #ownCloud ID zveznega oblaka, več na %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Omogoči souporabo prek #ownCloud ID zveznega oblaka",
"This share is password-protected" : "To mesto je zaščiteno z geslom.",
"The password is wrong. Try again." : "Geslo je napačno. Poskusite znova.",
"Password" : "Geslo",
@@ -64,12 +64,12 @@ OC.L10N.register(
"Download" : "Prejmi",
"Download %s" : "Prejmi %s",
"Direct link" : "Neposredna povezava",
- "Federated Cloud Sharing" : "Upravljana souporaba oblaka",
+ "Federated Cloud Sharing" : "Souporaba zveznega oblaka",
"Open documentation" : "Odpri dokumentacijo",
"Allow users on this server to send shares to other servers" : "Dovoli uporabnikom tega strežnika pošiljanje map za souporabo na druge strežnike.",
"Allow users on this server to receive shares from other servers" : "Dovoli uporabnikom tega strežnika sprejemanje map za souporabo z drugih strežnikov.",
- "Federated Cloud" : "Oblak s podporo prenosa dovoljenj",
- "Your Federated Cloud ID:" : "Vaš ID za prenos dovoljenj:",
+ "Federated Cloud" : "Zvezni oblak",
+ "Your Federated Cloud ID:" : "Vaš ID zveznega oblaka:",
"Add to your website" : "Dodaj na spletišče",
"HTML Code:" : "Koda HTML:"
},
diff --git a/apps/files_sharing/l10n/sl.json b/apps/files_sharing/l10n/sl.json
index 929a687e218..289db98a66a 100644
--- a/apps/files_sharing/l10n/sl.json
+++ b/apps/files_sharing/l10n/sl.json
@@ -1,7 +1,7 @@
{ "translations": {
"Server to server sharing is not enabled on this server" : "Na tem strežniku ni omogočena možnost souporabe strežnika s strežnikom.",
"The mountpoint name contains invalid characters." : "Ime točke priklopa vsebuje neveljavne znake.",
- "Not allowed to create a federated share with the same user server" : "Ni dovoljeno ustvariti souporabe s prenosom dovoljenj z istim uporabnikom",
+ "Not allowed to create a federated share with the same user server" : "Ni dovoljeno ustvariti souporabe zveznega oblaka z istim uporabnikom",
"Invalid or untrusted SSL certificate" : "Neveljavno oziroma nepotrjeno potrdilo SSL",
"Could not authenticate to remote share, password might be wrong" : "Ni mogoče overiti istovetnosti oddaljene mape za souporabo. Najverjetneje je uporabljeno napačno geslo.",
"Storage not valid" : "Shramba ni veljavna",
@@ -9,7 +9,7 @@
"Shared with you" : "V souporabi z vami",
"Shared with others" : "V souporabi z drugimi",
"Shared by link" : "Souporaba s povezavo",
- "Federated sharing" : "Souporaba s prenosom dovoljenj",
+ "Federated sharing" : "Souporaba zveznega oblaka",
"Nothing shared with you yet" : "Datotek drugih uporabnikov še ni v souporabi",
"Files and folders others share with you will show up here" : "Datoteke in mape, katerih souporabo z vami dovolijo drugi, bodo izpisane na tem mestu",
"Nothing shared yet" : "Souporabe datotek še niste omogočili",
@@ -44,8 +44,8 @@
"Shares" : "Souporaba",
"Accept" : "Sprejmi",
"Decline" : "Zavrni",
- "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Omogoči souporabo prek #ownCloud ID za prenos dovoljenj, več na %s",
- "Share with me through my #ownCloud Federated Cloud ID" : "Omogoči souporabo prek #ownCloud ID za prenos dovoljenj",
+ "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Omogoči souporabo prek #ownCloud ID zveznega oblaka, več na %s",
+ "Share with me through my #ownCloud Federated Cloud ID" : "Omogoči souporabo prek #ownCloud ID zveznega oblaka",
"This share is password-protected" : "To mesto je zaščiteno z geslom.",
"The password is wrong. Try again." : "Geslo je napačno. Poskusite znova.",
"Password" : "Geslo",
@@ -62,12 +62,12 @@
"Download" : "Prejmi",
"Download %s" : "Prejmi %s",
"Direct link" : "Neposredna povezava",
- "Federated Cloud Sharing" : "Upravljana souporaba oblaka",
+ "Federated Cloud Sharing" : "Souporaba zveznega oblaka",
"Open documentation" : "Odpri dokumentacijo",
"Allow users on this server to send shares to other servers" : "Dovoli uporabnikom tega strežnika pošiljanje map za souporabo na druge strežnike.",
"Allow users on this server to receive shares from other servers" : "Dovoli uporabnikom tega strežnika sprejemanje map za souporabo z drugih strežnikov.",
- "Federated Cloud" : "Oblak s podporo prenosa dovoljenj",
- "Your Federated Cloud ID:" : "Vaš ID za prenos dovoljenj:",
+ "Federated Cloud" : "Zvezni oblak",
+ "Your Federated Cloud ID:" : "Vaš ID zveznega oblaka:",
"Add to your website" : "Dodaj na spletišče",
"HTML Code:" : "Koda HTML:"
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
diff --git a/apps/files_sharing/l10n/zh_CN.js b/apps/files_sharing/l10n/zh_CN.js
index ac36c865c11..8270a39e6d7 100644
--- a/apps/files_sharing/l10n/zh_CN.js
+++ b/apps/files_sharing/l10n/zh_CN.js
@@ -25,8 +25,11 @@ OC.L10N.register(
"You received a new remote share from %s" : "您从%s收到了新的远程分享",
"%1$s accepted remote share %2$s" : "%1$s 接受了远程分享 %2$s",
"%1$s declined remote share %2$s" : "%1$s 拒绝了远程分享 %2$s",
+ "Public shared folder %1$s was downloaded" : "公共共享文件夹 %1$s 已被下载",
+ "Public shared file %1$s was downloaded" : "公共共享文件 %1$s 已被下载",
"You shared %1$s with %2$s" : "您把 %1$s分享给了 %2$s",
"You shared %1$s with group %2$s" : "你把 %1$s 分享给了 %2$s 组",
+ "%2$s shared %1$s via link" : "%2$s 以链接方式共享 %1$s",
"You shared %1$s via link" : "您通过链接共享了 %1$s",
"%2$s shared %1$s with you" : "%2$s 把 %1$s 分享给了您",
"Downloaded via public link" : "通过公开链接下载",
@@ -34,9 +37,13 @@ OC.L10N.register(
"Shared with %3$s by %2$s" : "由 %2$s 共享给 %3$s",
"Shared with group %2$s" : "共享给组%2$s",
"Shared with group %3$s by %2$s" : "由 %2$s 共享给组 %3$s",
+ "Shared via link by %2$s" : "%2$s 以链接方式共享",
"Shared via public link" : "通过公开链接共享",
"Removed public link" : "移除公开链接",
+ "%2$s removed public link" : "%2$s 移除了公共链接",
"Public link expired" : "公开链接已过期",
+ "Public link of %2$s expired" : "%2$s 的公开链接已过期",
+ "Shared by %2$s" : "由 %2$s 共享",
"Shares" : "共享",
"Accept" : "接受",
"Decline" : "拒绝",
@@ -62,6 +69,8 @@ OC.L10N.register(
"Allow users on this server to receive shares from other servers" : "允许用户从其他服务器接收分享",
"Federated Cloud" : "联合云",
"Your Federated Cloud ID:" : "你的联合云ID:",
+ "Share it:" : "分享它:",
+ "Add to your website" : "添加到您的网站",
"Share with me via ownCloud" : "通过联合云与我共享",
"HTML Code:" : "HTML 代码:"
},
diff --git a/apps/files_sharing/l10n/zh_CN.json b/apps/files_sharing/l10n/zh_CN.json
index 29cee2c4043..c59c4684c39 100644
--- a/apps/files_sharing/l10n/zh_CN.json
+++ b/apps/files_sharing/l10n/zh_CN.json
@@ -23,8 +23,11 @@
"You received a new remote share from %s" : "您从%s收到了新的远程分享",
"%1$s accepted remote share %2$s" : "%1$s 接受了远程分享 %2$s",
"%1$s declined remote share %2$s" : "%1$s 拒绝了远程分享 %2$s",
+ "Public shared folder %1$s was downloaded" : "公共共享文件夹 %1$s 已被下载",
+ "Public shared file %1$s was downloaded" : "公共共享文件 %1$s 已被下载",
"You shared %1$s with %2$s" : "您把 %1$s分享给了 %2$s",
"You shared %1$s with group %2$s" : "你把 %1$s 分享给了 %2$s 组",
+ "%2$s shared %1$s via link" : "%2$s 以链接方式共享 %1$s",
"You shared %1$s via link" : "您通过链接共享了 %1$s",
"%2$s shared %1$s with you" : "%2$s 把 %1$s 分享给了您",
"Downloaded via public link" : "通过公开链接下载",
@@ -32,9 +35,13 @@
"Shared with %3$s by %2$s" : "由 %2$s 共享给 %3$s",
"Shared with group %2$s" : "共享给组%2$s",
"Shared with group %3$s by %2$s" : "由 %2$s 共享给组 %3$s",
+ "Shared via link by %2$s" : "%2$s 以链接方式共享",
"Shared via public link" : "通过公开链接共享",
"Removed public link" : "移除公开链接",
+ "%2$s removed public link" : "%2$s 移除了公共链接",
"Public link expired" : "公开链接已过期",
+ "Public link of %2$s expired" : "%2$s 的公开链接已过期",
+ "Shared by %2$s" : "由 %2$s 共享",
"Shares" : "共享",
"Accept" : "接受",
"Decline" : "拒绝",
@@ -60,6 +67,8 @@
"Allow users on this server to receive shares from other servers" : "允许用户从其他服务器接收分享",
"Federated Cloud" : "联合云",
"Your Federated Cloud ID:" : "你的联合云ID:",
+ "Share it:" : "分享它:",
+ "Add to your website" : "添加到您的网站",
"Share with me via ownCloud" : "通过联合云与我共享",
"HTML Code:" : "HTML 代码:"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/files_sharing/lib/external/scanner.php b/apps/files_sharing/lib/external/scanner.php
index bfb9e817f09..1cc6cf8f5f9 100644
--- a/apps/files_sharing/lib/external/scanner.php
+++ b/apps/files_sharing/lib/external/scanner.php
@@ -36,6 +36,10 @@ class Scanner extends \OC\Files\Cache\Scanner {
/** {@inheritDoc} */
public function scan($path, $recursive = self::SCAN_RECURSIVE, $reuse = -1, $lock = true) {
+ if(!$this->storage->remoteIsOwnCloud()) {
+ return parent::scan($path, $recursive, $recursive, $lock);
+ }
+
$this->scanAll();
}
@@ -90,7 +94,6 @@ class Scanner extends \OC\Files\Cache\Scanner {
}
if ($data['status'] === 'success') {
$this->addResult($data['data'], '');
- } elseif ($data['status'] === 'unsupported') {
} else {
throw new \Exception(
'Error while scanning remote share: "' .
diff --git a/apps/files_sharing/lib/external/storage.php b/apps/files_sharing/lib/external/storage.php
index 16fd84bdba5..8fe7af66044 100644
--- a/apps/files_sharing/lib/external/storage.php
+++ b/apps/files_sharing/lib/external/storage.php
@@ -136,9 +136,6 @@ class Storage extends DAV implements ISharedStorage {
if (!$storage) {
$storage = $this;
}
- if(!$this->remoteIsOwnCloud()) {
- return parent::getScanner($path, $storage);
- }
if (!isset($this->scanner)) {
$this->scanner = new Scanner($storage);
}
@@ -266,7 +263,7 @@ class Storage extends DAV implements ISharedStorage {
*
* @return bool
*/
- private function remoteIsOwnCloud() {
+ public function remoteIsOwnCloud() {
if(defined('PHPUNIT_RUN') || !$this->testRemoteUrl($this->getRemote() . '/status.php')) {
return false;
}
diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php
index 6998f94698e..8f4888d20e2 100644
--- a/apps/files_sharing/lib/sharedstorage.php
+++ b/apps/files_sharing/lib/sharedstorage.php
@@ -31,6 +31,7 @@
namespace OC\Files\Storage;
use OC\Files\Filesystem;
+use OC\Files\Cache\FailedCache;
use OCA\Files_Sharing\ISharedStorage;
use OCP\Constants;
use OCP\Files\Cache\ICacheEntry;
@@ -67,10 +68,16 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
*/
private $sourceStorage;
+ /**
+ * @var \OCP\ILogger
+ */
+ private $logger;
+
public function __construct($arguments) {
$this->share = $arguments['share'];
$this->ownerView = $arguments['ownerView'];
$this->user = $arguments['user'];
+ $this->logger = \OC::$server->getLogger();
}
private function init() {
@@ -78,15 +85,19 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
return;
}
$this->initialized = true;
- Filesystem::initMountPoints($this->share['uid_owner']);
- $sourcePath = $this->ownerView->getPath($this->share['file_source']);
- list($this->sourceStorage, $sourceInternalPath) = $this->ownerView->resolvePath($sourcePath);
- $this->sourceRootInfo = $this->sourceStorage->getCache()->get($sourceInternalPath);
+ try {
+ Filesystem::initMountPoints($this->share['uid_owner']);
+ $sourcePath = $this->ownerView->getPath($this->share['file_source']);
+ list($this->sourceStorage, $sourceInternalPath) = $this->ownerView->resolvePath($sourcePath);
+ $this->sourceRootInfo = $this->sourceStorage->getCache()->get($sourceInternalPath);
+ } catch (\Exception $e) {
+ $this->logger->logException($e);
+ }
}
private function isValid() {
$this->init();
- return ($this->sourceRootInfo->getPermissions() & Constants::PERMISSION_SHARE) === Constants::PERMISSION_SHARE;
+ return $this->sourceRootInfo && ($this->sourceRootInfo->getPermissions() & Constants::PERMISSION_SHARE) === Constants::PERMISSION_SHARE;
}
/**
@@ -568,6 +579,9 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
public function getCache($path = '', $storage = null) {
$this->init();
+ if (is_null($this->sourceStorage)) {
+ return new FailedCache(false);
+ }
if (!$storage) {
$storage = $this;
}
diff --git a/apps/files_sharing/tests/api.php b/apps/files_sharing/tests/api.php
index 3a2ae1eef37..08f8b6f243d 100644
--- a/apps/files_sharing/tests/api.php
+++ b/apps/files_sharing/tests/api.php
@@ -43,6 +43,9 @@ class Test_Files_Sharing_Api extends TestCase {
/** @var \OCP\Share\IManager */
private $shareManager;
+ /** @var \OCP\Files\Folder */
+ private $userFolder;
+
protected function setUp() {
parent::setUp();
@@ -64,6 +67,7 @@ class Test_Files_Sharing_Api extends TestCase {
$this->view->file_put_contents($this->folder . $this->subfolder . $this->filename, $this->data);
$this->shareManager = \OC::$server->getShareManager();
+ $this->userFolder = \OC::$server->getUserFolder(self::TEST_FILES_SHARING_API_USER1);
}
protected function tearDown() {
@@ -100,6 +104,7 @@ class Test_Files_Sharing_Api extends TestCase {
*/
private function createOCS($request, $userId) {
$currentUser = \OC::$server->getUserManager()->get($userId);
+
return new \OCA\Files_Sharing\API\Share20OCS(
$this->shareManager,
\OC::$server->getGroupManager(),
@@ -116,99 +121,105 @@ class Test_Files_Sharing_Api extends TestCase {
*/
function testCreateShareUserFile() {
// simulate a post request
- $_POST['path'] = $this->filename;
- $_POST['shareWith'] = \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2;
- $_POST['shareType'] = \OCP\Share::SHARE_TYPE_USER;
+ $data['path'] = $this->filename;
+ $data['shareWith'] = \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2;
+ $data['shareType'] = \OCP\Share::SHARE_TYPE_USER;
- $result = \OCA\Files_Sharing\API\Local::createShare([]);
+ $request = $this->createRequest($data);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->createShare();
$this->assertTrue($result->succeeded());
$data = $result->getData();
- $this->assertEquals(23, $data['permissions']);
+ $this->assertEquals(19, $data['permissions']);
$this->assertEmpty($data['expiration']);
- $share = $this->getShareFromId($data['id']);
- $items = \OCP\Share::getItemShared('file', $share['item_source']);
- $this->assertTrue(!empty($items));
+ $this->shareManager->getShareById('ocinternal:'.$data['id']);
- $fileinfo = $this->view->getFileInfo($this->filename);
- \OCP\Share::unshare('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
+ $request = $this->createRequest([]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->deleteShare($data['id']);
+ $this->assertTrue($result->succeeded());
}
function testCreateShareUserFolder() {
// simulate a post request
- $_POST['path'] = $this->folder;
- $_POST['shareWith'] = \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2;
- $_POST['shareType'] = \OCP\Share::SHARE_TYPE_USER;
+ $data['path'] = $this->folder;
+ $data['shareWith'] = \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2;
+ $data['shareType'] = \OCP\Share::SHARE_TYPE_USER;
- $result = \OCA\Files_Sharing\API\Local::createShare([]);
+ $request = $this->createRequest($data);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->createShare();
$this->assertTrue($result->succeeded());
$data = $result->getData();
$this->assertEquals(31, $data['permissions']);
$this->assertEmpty($data['expiration']);
- $share = $this->getShareFromId($data['id']);
- $items = \OCP\Share::getItemShared('file', $share['item_source']);
- $this->assertTrue(!empty($items));
+ $this->shareManager->getShareById('ocinternal:'.$data['id']);
- $fileinfo = $this->view->getFileInfo($this->folder);
- \OCP\Share::unshare('folder', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
+ $request = $this->createRequest([]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->deleteShare($data['id']);
+ $this->assertTrue($result->succeeded());
}
function testCreateShareGroupFile() {
// simulate a post request
- $_POST['path'] = $this->filename;
- $_POST['shareWith'] = \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_GROUP1;
- $_POST['shareType'] = \OCP\Share::SHARE_TYPE_GROUP;
+ $data['path'] = $this->filename;
+ $data['shareWith'] = \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_GROUP1;
+ $data['shareType'] = \OCP\Share::SHARE_TYPE_GROUP;
- $result = \OCA\Files_Sharing\API\Local::createShare([]);
+ $request = $this->createRequest($data);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->createShare();
$this->assertTrue($result->succeeded());
$data = $result->getData();
- $this->assertEquals(23, $data['permissions']);
+ $this->assertEquals(19, $data['permissions']);
$this->assertEmpty($data['expiration']);
- $share = $this->getShareFromId($data['id']);
- $items = \OCP\Share::getItemShared('file', $share['item_source']);
- $this->assertTrue(!empty($items));
+ $this->shareManager->getShareById('ocinternal:'.$data['id']);
- $fileinfo = $this->view->getFileInfo($this->filename);
- \OCP\Share::unshare('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_GROUP1);
+ $request = $this->createRequest([]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->deleteShare($data['id']);
+ $this->assertTrue($result->succeeded());
}
function testCreateShareGroupFolder() {
// simulate a post request
- $_POST['path'] = $this->folder;
- $_POST['shareWith'] = \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_GROUP1;
- $_POST['shareType'] = \OCP\Share::SHARE_TYPE_GROUP;
+ $data['path'] = $this->folder;
+ $data['shareWith'] = \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_GROUP1;
+ $data['shareType'] = \OCP\Share::SHARE_TYPE_GROUP;
- $result = \OCA\Files_Sharing\API\Local::createShare([]);
+ $request = $this->createRequest($data);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->createShare();
$this->assertTrue($result->succeeded());
$data = $result->getData();
$this->assertEquals(31, $data['permissions']);
$this->assertEmpty($data['expiration']);
- $share = $this->getShareFromId($data['id']);
- $items = \OCP\Share::getItemShared('file', $share['item_source']);
- $this->assertTrue(!empty($items));
+ $this->shareManager->getShareById('ocinternal:'.$data['id']);
- $fileinfo = $this->view->getFileInfo($this->folder);
- \OCP\Share::unshare('folder', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_GROUP1);
+ $request = $this->createRequest([]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->deleteShare($data['id']);
+ $this->assertTrue($result->succeeded());
}
public function testCreateShareLink() {
// simulate a post request
- $_POST['path'] = $this->folder;
- $_POST['shareType'] = \OCP\Share::SHARE_TYPE_LINK;
+ $data['path'] = $this->folder;
+ $data['shareType'] = \OCP\Share::SHARE_TYPE_LINK;
- $result = \OCA\Files_Sharing\API\Local::createShare([]);
+ $request = $this->createRequest($data);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->createShare();
// check if API call was successful
$this->assertTrue($result->succeeded());
@@ -222,22 +233,23 @@ class Test_Files_Sharing_Api extends TestCase {
$url = \OC::$server->getURLGenerator()->getAbsoluteURL('/index.php/s/' . $data['token']);
$this->assertEquals($url, $data['url']);
+ $this->shareManager->getShareById('ocinternal:'.$data['id']);
- $share = $this->getShareFromId($data['id']);
- $items = \OCP\Share::getItemShared('file', $share['item_source']);
- $this->assertTrue(!empty($items));
-
- $fileinfo = $this->view->getFileInfo($this->folder);
- \OCP\Share::unshare('folder', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
+ $request = $this->createRequest([]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->deleteShare($data['id']);
+ $this->assertTrue($result->succeeded());
}
public function testCreateShareLinkPublicUpload() {
// simulate a post request
- $_POST['path'] = $this->folder;
- $_POST['shareType'] = \OCP\Share::SHARE_TYPE_LINK;
- $_POST['publicUpload'] = 'true';
+ $data['path'] = $this->folder;
+ $data['shareType'] = \OCP\Share::SHARE_TYPE_LINK;
+ $data['publicUpload'] = 'true';
- $result = \OCA\Files_Sharing\API\Local::createShare(array());
+ $request = $this->createRequest($data);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->createShare();
// check if API call was successful
$this->assertTrue($result->succeeded());
@@ -251,94 +263,76 @@ class Test_Files_Sharing_Api extends TestCase {
$url = \OC::$server->getURLGenerator()->getAbsoluteURL('/index.php/s/' . $data['token']);
$this->assertEquals($url, $data['url']);
+ $this->shareManager->getShareById('ocinternal:'.$data['id']);
- $share = $this->getShareFromId($data['id']);
- $items = \OCP\Share::getItemShared('file', $share['item_source']);
- $this->assertTrue(!empty($items));
-
- $fileinfo = $this->view->getFileInfo($this->folder);
- \OCP\Share::unshare('folder', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
- }
-
- /**
- * @medium
- */
- public function testCreateShareInvalidPermissions() {
-
- // simulate a post request
- $_POST['path'] = $this->filename;
- $_POST['shareWith'] = \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2;
- $_POST['shareType'] = \OCP\Share::SHARE_TYPE_USER;
- $_POST['permissions'] = \OCP\Constants::PERMISSION_SHARE;
-
- $result = \OCA\Files_Sharing\API\Local::createShare([]);
-
- // share was successful?
- $this->assertFalse($result->succeeded());
- $this->assertEquals(400, $result->getStatusCode());
-
- $shares = \OCP\Share::getItemShared('file', null);
- $this->assertCount(0, $shares);
-
- $fileinfo = $this->view->getFileInfo($this->filename);
- \OCP\Share::unshare('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
+ $request = $this->createRequest([]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->deleteShare($data['id']);
+ $this->assertTrue($result->succeeded());
}
-
function testEnfoceLinkPassword() {
$appConfig = \OC::$server->getAppConfig();
$appConfig->setValue('core', 'shareapi_enforce_links_password', 'yes');
// don't allow to share link without a password
- $_POST['path'] = $this->folder;
- $_POST['shareType'] = \OCP\Share::SHARE_TYPE_LINK;
-
+ $data['path'] = $this->folder;
+ $data['shareType'] = \OCP\Share::SHARE_TYPE_LINK;
- $result = \OCA\Files_Sharing\API\Local::createShare(array());
+ $request = $this->createRequest($data);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->createShare();
$this->assertFalse($result->succeeded());
-
// don't allow to share link without a empty password
- $_POST['path'] = $this->folder;
- $_POST['shareType'] = \OCP\Share::SHARE_TYPE_LINK;
- $_POST['password'] = '';
+ $data = [];
+ $data['path'] = $this->folder;
+ $data['shareType'] = \OCP\Share::SHARE_TYPE_LINK;
+ $data['password'] = '';
- $result = \OCA\Files_Sharing\API\Local::createShare(array());
+ $request = $this->createRequest($data);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->createShare();
$this->assertFalse($result->succeeded());
// share with password should succeed
- $_POST['path'] = $this->folder;
- $_POST['shareType'] = \OCP\Share::SHARE_TYPE_LINK;
- $_POST['password'] = 'foo';
+ $data = [];
+ $data['path'] = $this->folder;
+ $data['shareType'] = \OCP\Share::SHARE_TYPE_LINK;
+ $data['password'] = 'foo';
- $result = \OCA\Files_Sharing\API\Local::createShare(array());
+ $request = $this->createRequest($data);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->createShare();
$this->assertTrue($result->succeeded());
$data = $result->getData();
// setting new password should succeed
- $params = array();
- $params['id'] = $data['id'];
- $params['_put'] = array();
- $params['_put']['password'] = 'bar';
-
- $result = \OCA\Files_Sharing\API\Local::updateShare($params);
+ $data2 = [
+ 'password' => 'bar',
+ ];
+ $request = $this->createRequest($data2);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->updateShare($data['id']);
$this->assertTrue($result->succeeded());
// removing password should fail
- $params = array();
- $params['id'] = $data['id'];
- $params['_put'] = array();
- $params['_put']['password'] = '';
-
- $result = \OCA\Files_Sharing\API\Local::updateShare($params);
+ $data2 = [
+ 'password' => '',
+ ];
+ $request = $this->createRequest($data2);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->updateShare($data['id']);
$this->assertFalse($result->succeeded());
// cleanup
- $fileinfo = $this->view->getFileInfo($this->folder);
- \OCP\Share::unshare('folder', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
+ $request = $this->createRequest([]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->deleteShare($data['id']);
+ $this->assertTrue($result->succeeded());
+
$appConfig->setValue('core', 'shareapi_enforce_links_password', 'no');
}
@@ -346,68 +340,61 @@ class Test_Files_Sharing_Api extends TestCase {
* @medium
*/
function testSharePermissions() {
-
// sharing file to a user should work if shareapi_exclude_groups is set
// to no
\OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups', 'no');
- $_POST['path'] = $this->filename;
- $_POST['shareWith'] = \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2;
- $_POST['shareType'] = \OCP\Share::SHARE_TYPE_USER;
+ $post['path'] = $this->filename;
+ $post['shareWith'] = \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2;
+ $post['shareType'] = \OCP\Share::SHARE_TYPE_USER;
- $result = \OCA\Files_Sharing\API\Local::createShare(array());
+ $request = $this->createRequest($post);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->createShare();
$this->assertTrue($result->succeeded());
$data = $result->getData();
- $share = $this->getShareFromId($data['id']);
-
- $items = \OCP\Share::getItemShared('file', $share['item_source']);
-
- $this->assertTrue(!empty($items));
+ $this->shareManager->getShareById('ocinternal:'.$data['id']);
- $fileinfo = $this->view->getFileInfo($this->filename);
-
- $result = \OCP\Share::unshare('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
-
- $this->assertTrue($result);
+ $request = $this->createRequest([]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->deleteShare($data['id']);
+ $this->assertTrue($result->succeeded());
// exclude groups, but not the group the user belongs to. Sharing should still work
\OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups', 'yes');
\OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups_list', 'admin,group1,group2');
- $_POST['path'] = $this->filename;
- $_POST['shareWith'] = \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2;
- $_POST['shareType'] = \OCP\Share::SHARE_TYPE_USER;
+ $post = [];
+ $post['path'] = $this->filename;
+ $post['shareWith'] = \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2;
+ $post['shareType'] = \OCP\Share::SHARE_TYPE_USER;
- $result = \OCA\Files_Sharing\API\Local::createShare(array());
+ $request = $this->createRequest($post);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->createShare();
$this->assertTrue($result->succeeded());
$data = $result->getData();
- $share = $this->getShareFromId($data['id']);
-
- $items = \OCP\Share::getItemShared('file', $share['item_source']);
-
- $this->assertTrue(!empty($items));
-
- $fileinfo = $this->view->getFileInfo($this->filename);
+ $this->shareManager->getShareById('ocinternal:' . $data['id']);
- $result = \OCP\Share::unshare('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
-
- $this->assertTrue($result);
+ $request = $this->createRequest([]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->deleteShare($data['id']);
+ $this->assertTrue($result->succeeded());
// now we exclude the group the user belongs to ('group'), sharing should fail now
\OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups_list', 'admin,group');
- $_POST['path'] = $this->filename;
- $_POST['shareWith'] = \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2;
- $_POST['shareType'] = \OCP\Share::SHARE_TYPE_USER;
+ $post = [];
+ $post['path'] = $this->filename;
+ $post['shareWith'] = \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2;
+ $post['shareType'] = \OCP\Share::SHARE_TYPE_USER;
- $result = \OCA\Files_Sharing\API\Local::createShare(array());
-
- $this->assertFalse($result->succeeded());
+ $request = $this->createRequest($post);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->createShare();
// cleanup
\OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups', 'no');
@@ -417,62 +404,72 @@ class Test_Files_Sharing_Api extends TestCase {
/**
* @medium
- * @depends testCreateShareUserFile
*/
function testGetAllShares() {
+ $node = $this->userFolder->get($this->filename);
- $fileinfo = $this->view->getFileInfo($this->filename);
+ $share = $this->shareManager->newShare();
+ $share->setNode($node)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setSharedWith(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(19);
- \OCP\Share::shareItem('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, 31);
+ $share = $this->shareManager->createShare($share);
- $result = \OCA\Files_Sharing\API\Local::getAllShares(array());
+ $request = $this->createRequest([]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->getShares();
$this->assertTrue($result->succeeded());
-
- // test should return two shares created from testCreateShare()
$this->assertTrue(count($result->getData()) === 1);
- \OCP\Share::unshare('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
+ $this->shareManager->deleteShare($share);
}
function testGetAllSharesWithMe() {
- $fileinfo1 = $this->view->getFileInfo($this->filename);
- $fileinfo2 = $this->view->getFileInfo($this->folder.$this->filename);
-
- \OCP\Share::shareItem('file', $fileinfo1['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, 31);
- \OCP\Share::shareItem('folder', $fileinfo2['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, 31);
-
- self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
-
- $_GET['shared_with_me'] = 1;
- $result = \OCA\Files_Sharing\API\Local::getAllShares(array());
+ $node1 = $this->userFolder->get($this->filename);
+ $share1 = $this->shareManager->newShare();
+ $share1->setNode($node1)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setSharedWith(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(19);
+ $share1 = $this->shareManager->createShare($share1);
+
+ $node2 = $this->userFolder->get($this->folder);
+ $share2 = $this->shareManager->newShare();
+ $share2->setNode($node2)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setSharedWith(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(31);
+ $share2 = $this->shareManager->createShare($share2);
+
+ $request = $this->createRequest(['shared_with_me' => 'true']);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
+ $result = $ocs->getShares();
$this->assertTrue($result->succeeded());
$this->assertTrue(count($result->getData()) === 2);
- self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
-
- \OCP\Share::unshare('file', $fileinfo1['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
- \OCP\Share::unshare('folder', $fileinfo2['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
+ $this->shareManager->deleteShare($share1);
+ $this->shareManager->deleteShare($share2);
}
/**
* @medium
- * @depends testCreateShareLink
*/
function testPublicLinkUrl() {
// simulate a post request
- $_POST['path'] = $this->folder;
- $_POST['shareType'] = \OCP\Share::SHARE_TYPE_LINK;
+ $post['path'] = $this->folder;
+ $post['shareType'] = \OCP\Share::SHARE_TYPE_LINK;
- $result = \OCA\Files_Sharing\API\Local::createShare([]);
+ $request = $this->createRequest($post);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->createShare();
$this->assertTrue($result->succeeded());
+
$data = $result->getData();
// check if we have a token
@@ -484,27 +481,36 @@ class Test_Files_Sharing_Api extends TestCase {
$this->assertEquals($url, $data['url']);
// check for link in getall shares
- $result = \OCA\Files_Sharing\API\Local::getAllShares([]);
+ $request = $this->createRequest([]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->getShares();
$this->assertTrue($result->succeeded());
+
$data = $result->getData();
$this->assertEquals($url, current($data)['url']);
// check for path
- $_GET['path'] = $this->folder;
- $result = \OCA\Files_Sharing\API\Local::getAllShares([]);
+ $request = $this->createRequest(['path' => $this->folder]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->getShares();
$this->assertTrue($result->succeeded());
+
$data = $result->getData();
$this->assertEquals($url, current($data)['url']);
// check in share id
- $result = \OCA\Files_Sharing\API\Local::getShare(['id' => $id]);
+ $request = $this->createRequest([]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->getShare($id);
$this->assertTrue($result->succeeded());
+
$data = $result->getData();
$this->assertEquals($url, current($data)['url']);
- //Clean up share
- $fileinfo = $this->view->getFileInfo($this->folder);
- \OCP\Share::unshare('folder', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
+ $request = $this->createRequest([]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->deleteShare($id);
+ $this->assertTrue($result->succeeded());
}
/**
@@ -513,29 +519,32 @@ class Test_Files_Sharing_Api extends TestCase {
* @depends testCreateShareLink
*/
function testGetShareFromSource() {
-
- $fileInfo = $this->view->getFileInfo($this->filename);
-
- \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, 31);
-
- \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK,
- null, 1);
-
- $_GET['path'] = $this->filename;
-
- $result = \OCA\Files_Sharing\API\Local::getAllShares(array());
-
+ $node = $this->userFolder->get($this->filename);
+ $share = $this->shareManager->newShare();
+ $share->setNode($node)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setSharedWith(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(19);
+ $share1 = $this->shareManager->createShare($share);
+
+ $share = $this->shareManager->newShare();
+ $share->setNode($node)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setShareType(\OCP\Share::SHARE_TYPE_LINK)
+ ->setPermissions(1);
+ $share2 = $this->shareManager->createShare($share);
+
+ $request = $this->createRequest(['path' => $this->filename]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->getShares();
$this->assertTrue($result->succeeded());
// test should return one share created from testCreateShare()
$this->assertTrue(count($result->getData()) === 2);
- \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
-
- \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
-
+ $this->shareManager->deleteShare($share1);
+ $this->shareManager->deleteShare($share2);
}
/**
@@ -544,53 +553,44 @@ class Test_Files_Sharing_Api extends TestCase {
* @depends testCreateShareLink
*/
function testGetShareFromSourceWithReshares() {
-
- $fileInfo = $this->view->getFileInfo($this->filename);
-
- // share the file as user1 to user2
- \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, 31);
-
- // login as user2 and reshare the file to user3
- \Test_Files_Sharing_Api::loginHelper(\Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
-
- \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER3, 31);
-
- // login as user1 again
- \Test_Files_Sharing_Api::loginHelper(\Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER1);
-
- $_GET['path'] = $this->filename;
-
- $result = \OCA\Files_Sharing\API\Local::getAllShares(array());
-
+ $node = $this->userFolder->get($this->filename);
+ $share1 = $this->shareManager->newShare();
+ $share1->setNode($node)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setSharedWith(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(19);
+ $share1 = $this->shareManager->createShare($share1);
+
+ $share2 = $this->shareManager->newShare();
+ $share2->setNode($node)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER2)
+ ->setSharedWith(self::TEST_FILES_SHARING_API_USER3)
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(19);
+ $share2 = $this->shareManager->createShare($share2);
+
+ $request = $this->createRequest(['path' => $this->filename]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->getShares();
$this->assertTrue($result->succeeded());
// test should return one share
$this->assertTrue(count($result->getData()) === 1);
// now also ask for the reshares
- $_GET['reshares'] = 'true';
-
- $result = \OCA\Files_Sharing\API\Local::getAllShares(array());
+ $request = $this->createRequest(['path' => $this->filename, 'reshares' => 'true']);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->getShares();
+ $this->assertTrue($result->succeeded());
$this->assertTrue($result->succeeded());
// now we should get two shares, the initial share and the reshare
- $this->assertTrue(count($result->getData()) === 2);
-
- // unshare files again
-
- \Test_Files_Sharing_Api::loginHelper(\Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
-
- \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER3);
-
- \Test_Files_Sharing_Api::loginHelper(\Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER1);
-
- \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
+ $this->assertCount(2, $result->getData());
+ $this->shareManager->deleteShare($share1);
+ $this->shareManager->deleteShare($share2);
}
/**
@@ -598,95 +598,80 @@ class Test_Files_Sharing_Api extends TestCase {
* @depends testCreateShareUserFile
*/
function testGetShareFromId() {
-
- $fileInfo = $this->view->getFileInfo($this->filename);
-
- $result = \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, 31);
-
- // share was successful?
- $this->assertTrue($result);
-
- // get item to determine share ID
- $result = \OCP\Share::getItemShared('file', $fileInfo['fileid']);
-
- $this->assertEquals(1, count($result));
-
- // get first element
- $share = reset($result);
+ $node = $this->userFolder->get($this->filename);
+ $share1 = $this->shareManager->newShare();
+ $share1->setNode($node)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setSharedWith(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(19);
+ $share1 = $this->shareManager->createShare($share1);
// call getShare() with share ID
- $params = array('id' => $share['id']);
- $result = \OCA\Files_Sharing\API\Local::getShare($params);
-
+ $request = $this->createRequest([]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->getShare($share1->getId());
$this->assertTrue($result->succeeded());
// test should return one share created from testCreateShare()
$this->assertEquals(1, count($result->getData()));
- \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
-
+ $this->shareManager->deleteShare($share1);
}
/**
* @medium
*/
function testGetShareFromFolder() {
-
- $fileInfo1 = $this->view->getFileInfo($this->filename);
- $fileInfo2 = $this->view->getFileInfo($this->folder.'/'.$this->filename);
-
- $result = \OCP\Share::shareItem('file', $fileInfo1['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, 31);
-
- // share was successful?
- $this->assertTrue($result);
-
- $result = \OCP\Share::shareItem('folder', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_LINK,
- null, 1);
-
- // share was successful?
- $this->assertTrue(is_string($result));
-
- $_GET['path'] = $this->folder;
- $_GET['subfiles'] = 'true';
-
- $result = \OCA\Files_Sharing\API\Local::getAllShares(array());
-
+ $node1 = $this->userFolder->get($this->filename);
+ $share1 = $this->shareManager->newShare();
+ $share1->setNode($node1)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setSharedWith(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(19);
+ $share1 = $this->shareManager->createShare($share1);
+
+ $node2 = $this->userFolder->get($this->folder.'/'.$this->filename);
+ $share2 = $this->shareManager->newShare();
+ $share2->setNode($node2)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setShareType(\OCP\Share::SHARE_TYPE_LINK)
+ ->setPermissions(1);
+ $share2 = $this->shareManager->createShare($share2);
+
+
+ $request = $this->createRequest(['path' => $this->folder, 'subfiles' => 'true']);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->getShares();
$this->assertTrue($result->succeeded());
// test should return one share within $this->folder
$this->assertTrue(count($result->getData()) === 1);
- \OCP\Share::unshare('file', $fileInfo1['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
-
- \OCP\Share::unshare('folder', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
+ $this->shareManager->deleteShare($share1);
+ $this->shareManager->deleteShare($share2);
}
function testGetShareFromFolderWithFile() {
-
- $fileInfo1 = $this->view->getFileInfo($this->filename);
-
- $result = \OCP\Share::shareItem('file', $fileInfo1['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, 31);
-
- // share was successful?
- $this->assertTrue($result);
-
- $_GET = [
- 'path' => $this->filename,
- 'subfiles' => 1
- ];
- $result = \OCA\Files_Sharing\API\Local::getAllShares([]);
+ $node1 = $this->userFolder->get($this->filename);
+ $share1 = $this->shareManager->newShare();
+ $share1->setNode($node1)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setSharedWith(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(19);
+ $share1 = $this->shareManager->createShare($share1);
+
+ $request = $this->createRequest(['path' => $this->filename, 'subfiles' => 'true']);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->getShares();
$this->assertFalse($result->succeeded());
$this->assertEquals(400, $result->getStatusCode());
$this->assertEquals('not a directory', $result->getMeta()['message']);
- \OCP\Share::unshare('file', $fileInfo1['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
+ $this->shareManager->deleteShare($share1);
}
/**
@@ -694,32 +679,30 @@ class Test_Files_Sharing_Api extends TestCase {
* @medium
*/
function testGetShareFromFolderReshares() {
-
- self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
-
- $fileInfo1 = $this->view->getFileInfo($this->folder);
- $fileInfo2 = $this->view->getFileInfo($this->folder.'/'.$this->filename);
- $fileInfo3 = $this->view->getFileInfo($this->folder.'/' . $this->subfolder . '/' .$this->filename);
-
- // share root folder to user2
- $result = \OCP\Share::shareItem('folder', $fileInfo1['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, 31);
-
- // share was successful?
- $this->assertTrue($result);
-
- // login as user2
- self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
-
- // share file in root folder
- $result = \OCP\Share::shareItem('file', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_LINK, null, 1);
- // share was successful?
- $this->assertTrue(is_string($result));
-
- // share file in subfolder
- $result = \OCP\Share::shareItem('file', $fileInfo3['fileid'], \OCP\Share::SHARE_TYPE_LINK, null, 1);
- // share was successful?
- $this->assertTrue(is_string($result));
+ $node1 = $this->userFolder->get($this->folder);
+ $share1 = $this->shareManager->newShare();
+ $share1->setNode($node1)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setSharedWith(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(31);
+ $share1 = $this->shareManager->createShare($share1);
+
+ $node2 = $this->userFolder->get($this->folder.'/'.$this->filename);
+ $share2 = $this->shareManager->newShare();
+ $share2->setNode($node2)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_LINK)
+ ->setPermissions(1);
+ $share2 = $this->shareManager->createShare($share2);
+
+ $node3 = $this->userFolder->get($this->folder.'/'.$this->subfolder.'/'.$this->filename);
+ $share3 = $this->shareManager->newShare();
+ $share3->setNode($node3)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_LINK)
+ ->setPermissions(1);
+ $share3 = $this->shareManager->createShare($share3);
$testValues=array(
array('query' => $this->folder,
@@ -729,11 +712,9 @@ class Test_Files_Sharing_Api extends TestCase {
);
foreach ($testValues as $value) {
- $_GET['path'] = $value['query'];
- $_GET['subfiles'] = 'true';
-
- $result = \OCA\Files_Sharing\API\Local::getAllShares(array());
-
+ $request = $this->createRequest(['path' => $value['query'], 'subfiles' => 'true']);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
+ $result = $ocs->getShares();
$this->assertTrue($result->succeeded());
// test should return one share within $this->folder
@@ -743,15 +724,9 @@ class Test_Files_Sharing_Api extends TestCase {
}
// cleanup
-
- \OCP\Share::unshare('file', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
- \OCP\Share::unshare('file', $fileInfo3['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
-
- self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
-
- \OCP\Share::unshare('folder', $fileInfo1['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
-
+ $this->shareManager->deleteShare($share1);
+ $this->shareManager->deleteShare($share2);
+ $this->shareManager->deleteShare($share3);
}
/**
@@ -759,52 +734,39 @@ class Test_Files_Sharing_Api extends TestCase {
* @medium
*/
function testGetShareFromSubFolderReShares() {
-
- self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
-
- $fileInfo = $this->view->getFileInfo($this->folder . $this->subfolder);
-
- // share sub-folder to user2
- $result = \OCP\Share::shareItem('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, 31);
-
- // share was successful?
- $this->assertTrue($result);
-
- // login as user2
- self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
-
- // reshare subfolder
- $result = \OCP\Share::shareItem('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null, 1);
-
- // share was successful?
- $this->assertTrue(is_string($result));
-
- $_GET['path'] = '/';
- $_GET['subfiles'] = 'true';
-
- $result = \OCA\Files_Sharing\API\Local::getAllShares(array());
-
+ $node1 = $this->userFolder->get($this->folder . $this->subfolder);
+ $share1 = $this->shareManager->newShare();
+ $share1->setNode($node1)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setSharedWith(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(31);
+ $share1 = $this->shareManager->createShare($share1);
+
+ $node2 = \OC::$server->getRootFolder()->getUserFolder(self::TEST_FILES_SHARING_API_USER2)->get($this->subfolder);
+ $share2 = $this->shareManager->newShare();
+ $share2->setNode($node2)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_LINK)
+ ->setPermissions(1);
+ $share2 = $this->shareManager->createShare($share2);
+
+ $request = $this->createRequest(['path' => '/', 'subfiles' => 'true']);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
+ $result = $ocs->getShares();
$this->assertTrue($result->succeeded());
// test should return one share within $this->folder
$data = $result->getData();
// we should get exactly one result
- $this->assertEquals(1, count($data));
+ $this->assertCount(1, $data);
- $expectedPath = $this->subfolder;
+ $expectedPath = $this->folder . $this->subfolder;
$this->assertEquals($expectedPath, $data[0]['path']);
- // cleanup
- $result = \OCP\Share::unshare('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
- $this->assertTrue($result);
-
- self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
- $result = \OCP\Share::unshare('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
- $this->assertTrue($result);
-
+ $this->shareManager->deleteShare($share2);
+ $this->shareManager->deleteShare($share1);
}
/**
@@ -812,67 +774,48 @@ class Test_Files_Sharing_Api extends TestCase {
* @medium
*/
function testGetShareFromFolderReReShares() {
-
- self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
-
- $fileInfo1 = $this->view->getFileInfo($this->folder . $this->subfolder);
- $fileInfo2 = $this->view->getFileInfo($this->folder . $this->subfolder . $this->subsubfolder);
-
- // share sub-folder to user2
- $result = \OCP\Share::shareItem('folder', $fileInfo1['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, 31);
-
- // share was successful?
- $this->assertTrue($result);
-
- // login as user2
- self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
-
- // reshare subsubfolder
- $result = \OCP\Share::shareItem('folder', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER3, 31);
- // share was successful?
- $this->assertTrue($result);
-
- // login as user3
- self::loginHelper(self::TEST_FILES_SHARING_API_USER3);
-
- $result = \OCP\Share::shareItem('folder', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_LINK, null, 1);
- // share was successful?
- $this->assertTrue(is_string($result));
-
-
- $_GET['path'] = '/';
- $_GET['subfiles'] = 'true';
-
- $result = \OCA\Files_Sharing\API\Local::getAllShares(array());
-
+ $node1 = $this->userFolder->get($this->folder . $this->subfolder);
+ $share1 = $this->shareManager->newShare();
+ $share1->setNode($node1)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setSharedWith(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(31);
+ $share1 = $this->shareManager->createShare($share1);
+
+ $node2 = $this->userFolder->get($this->folder . $this->subfolder . $this->subsubfolder);
+ $share2 = $this->shareManager->newShare();
+ $share2->setNode($node2)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER2)
+ ->setSharedWith(self::TEST_FILES_SHARING_API_USER3)
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(31);
+ $share2 = $this->shareManager->createShare($share2);
+
+ $share3 = $this->shareManager->newShare();
+ $share3->setNode($node2)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER3)
+ ->setShareType(\OCP\Share::SHARE_TYPE_LINK)
+ ->setPermissions(1);
+ $share3 = $this->shareManager->createShare($share3);
+
+ $request = $this->createRequest(['path' => '/', 'subfiles' => 'true']);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER3);
+ $result = $ocs->getShares();
$this->assertTrue($result->succeeded());
// test should return one share within $this->folder
$data = $result->getData();
// we should get exactly one result
- $this->assertEquals(1, count($data));
+ $this->assertCount(1, $data);
- $expectedPath = $this->subsubfolder;
+ $expectedPath = $this->folder . $this->subfolder . $this->subsubfolder;
$this->assertEquals($expectedPath, $data[0]['path']);
-
- // cleanup
- $result = \OCP\Share::unshare('folder', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
- $this->assertTrue($result);
-
- self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
- $result = \OCP\Share::unshare('folder', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER3);
- $this->assertTrue($result);
-
- self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
- $result = \OCP\Share::unshare('folder', $fileInfo1['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
- $this->assertTrue($result);
-
+ $this->shareManager->deleteShare($share1);
+ $this->shareManager->deleteShare($share2);
+ $this->shareManager->deleteShare($share3);
}
/**
@@ -880,82 +823,57 @@ class Test_Files_Sharing_Api extends TestCase {
* @medium
*/
function testGetShareMultipleSharedFolder() {
-
- self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
-
- $fileInfo1 = $this->view->getFileInfo($this->folder);
- $fileInfo2 = $this->view->getFileInfo($this->folder . $this->subfolder);
-
-
- // share sub-folder to user2
- $result = \OCP\Share::shareItem('folder', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, 31);
-
- // share was successful?
- $this->assertTrue($result);
-
- // share folder to user2
- $result = \OCP\Share::shareItem('folder', $fileInfo1['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, 31);
-
- // share was successful?
- $this->assertTrue($result);
-
-
- // login as user2
- self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
-
- $result = \OCP\Share::shareItem('folder', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_LINK, null, 1);
- // share was successful?
- $this->assertTrue(is_string($result));
-
-
- // ask for subfolder
- $expectedPath1 = $this->subfolder;
- $_GET['path'] = $expectedPath1;
-
- $result1 = \OCA\Files_Sharing\API\Local::getAllShares(array());
-
+ $node1 = $this->userFolder->get($this->folder . $this->subfolder);
+ $share1 = $this->shareManager->newShare();
+ $share1->setNode($node1)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setSharedWith(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(31);
+ $share1 = $this->shareManager->createShare($share1);
+
+ $node2 = $this->userFolder->get($this->folder);
+ $share2 = $this->shareManager->newShare();
+ $share2->setNode($node2)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setSharedWith(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(31);
+ $share2 = $this->shareManager->createShare($share2);
+
+ $share3 = $this->shareManager->newShare();
+ $share3->setNode($node1)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_LINK)
+ ->setPermissions(1);
+ $share3 = $this->shareManager->createShare($share3);
+
+ $request = $this->createRequest(['path' => $this->subfolder]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
+ $result1 = $ocs->getShares();
$this->assertTrue($result1->succeeded());
// test should return one share within $this->folder
$data1 = $result1->getData();
- $share1 = reset($data1);
-
- // ask for folder/subfolder
- $expectedPath2 = $this->folder . $this->subfolder;
- $_GET['path'] = $expectedPath2;
-
- $result2 = \OCA\Files_Sharing\API\Local::getAllShares(array());
+ $this->assertCount(1, $data1);
+ $s1 = reset($data1);
+ $request = $this->createRequest(['path' => $this->folder.$this->subfolder]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
+ $result2 = $ocs->getShares();
$this->assertTrue($result2->succeeded());
// test should return one share within $this->folder
$data2 = $result2->getData();
- $share2 = reset($data2);
+ $this->assertCount(1, $data2);
+ $s2 = reset($data2);
+ $this->assertEquals($this->folder.$this->subfolder, $s1['path']);
+ $this->assertEquals($this->folder.$this->subfolder, $s2['path']);
- // validate results
- // we should get exactly one result each time
- $this->assertEquals(1, count($data1));
- $this->assertEquals(1, count($data2));
-
- $this->assertEquals($expectedPath1, $share1['path']);
- $this->assertEquals($expectedPath2, $share2['path']);
-
-
- // cleanup
- $result = \OCP\Share::unshare('folder', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
- $this->assertTrue($result);
-
- self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
- $result = \OCP\Share::unshare('folder', $fileInfo1['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
- $this->assertTrue($result);
- $result = \OCP\Share::unshare('folder', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
- $this->assertTrue($result);
-
+ $this->shareManager->deleteShare($share1);
+ $this->shareManager->deleteShare($share2);
+ $this->shareManager->deleteShare($share3);
}
/**
@@ -963,82 +881,65 @@ class Test_Files_Sharing_Api extends TestCase {
* @medium
*/
function testGetShareFromFileReReShares() {
-
- self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
-
- $fileInfo1 = $this->view->getFileInfo($this->folder . $this->subfolder);
- $fileInfo2 = $this->view->getFileInfo($this->folder. $this->subfolder . $this->filename);
-
- // share sub-folder to user2
- $result = \OCP\Share::shareItem('folder', $fileInfo1['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, 31);
-
- // share was successful?
- $this->assertTrue($result);
-
- // login as user2
- self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
-
- // reshare subsubfolder
- $result = \OCP\Share::shareItem('file', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER3, 31);
- // share was successful?
- $this->assertTrue($result);
-
- // login as user3
- self::loginHelper(self::TEST_FILES_SHARING_API_USER3);
-
- $result = \OCP\Share::shareItem('file', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_LINK, null, 1);
- // share was successful?
- $this->assertTrue(is_string($result));
-
-
- $_GET['path'] = '/';
- $_GET['subfiles'] = 'true';
-
- $result = \OCA\Files_Sharing\API\Local::getAllShares(array());
-
+ $node1 = $this->userFolder->get($this->folder . $this->subfolder);
+ $share1 = $this->shareManager->newShare();
+ $share1->setNode($node1)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setSharedWith(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(31);
+ $share1 = $this->shareManager->createShare($share1);
+
+ $user2Folder = \OC::$server->getUserFolder(self::TEST_FILES_SHARING_API_USER2);
+ $node2 = $user2Folder->get($this->subfolder . $this->filename);
+ $share2 = $this->shareManager->newShare();
+ $share2->setNode($node2)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER2)
+ ->setSharedWith(self::TEST_FILES_SHARING_API_USER3)
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(19);
+ $share2 = $this->shareManager->createShare($share2);
+
+ $user3Folder = \OC::$server->getUserFolder(self::TEST_FILES_SHARING_API_USER3);
+ $node3 = $user3Folder->get($this->filename);
+ $share3 = $this->shareManager->newShare();
+ $share3->setNode($node3)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER3)
+ ->setShareType(\OCP\Share::SHARE_TYPE_LINK)
+ ->setPermissions(1);
+ $share3 = $this->shareManager->createShare($share3);
+
+ $request = $this->createRequest(['path' => '/', 'subfiles' => 'true']);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER3);
+ $result = $ocs->getShares();
$this->assertTrue($result->succeeded());
// test should return one share within $this->folder
$data = $result->getData();
// we should get exactly one result
- $this->assertEquals(1, count($data));
+ $this->assertCount(1, $data);
- $expectedPath = $this->filename;
+ $expectedPath = $this->folder.$this->subfolder.$this->filename;
$this->assertEquals($expectedPath, $data[0]['path']);
-
- // cleanup
- $result = \OCP\Share::unshare('file', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
- $this->assertTrue($result);
-
- self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
- $result = \OCP\Share::unshare('file', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER3);
- $this->assertTrue($result);
-
- self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
- $result = \OCP\Share::unshare('folder', $fileInfo1['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
- $this->assertTrue($result);
-
+ $this->shareManager->deleteShare($share1);
+ $this->shareManager->deleteShare($share2);
+ $this->shareManager->deleteShare($share3);
}
/**
* @medium
*/
function testGetShareFromUnknownId() {
-
- $params = array('id' => 0);
-
- $result = \OCA\Files_Sharing\API\Local::getShare($params);
+ $request = $this->createRequest(['path' => '/', 'subfiles' => 'true']);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER3);
+ $result = $ocs->getShare(0);
+ $this->assertFalse($result->succeeded());
$this->assertEquals(404, $result->getStatusCode());
$meta = $result->getMeta();
- $this->assertEquals('share doesn\'t exist', $meta['message']);
-
+ $this->assertEquals('wrong share ID, share doesn\'t exist.', $meta['message']);
}
/**
@@ -1047,125 +948,58 @@ class Test_Files_Sharing_Api extends TestCase {
* @depends testCreateShareLink
*/
function testUpdateShare() {
-
- $fileInfo = $this->view->getFileInfo($this->filename);
-
- $result = \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, \OCP\Constants::PERMISSION_ALL);
-
- // share was successful?
- $this->assertTrue($result);
-
- $result = \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK,
- null, 1);
-
- // share was successful?
- $this->assertTrue(is_string($result));
-
- $items = \OCP\Share::getItemShared('file', null);
-
- // make sure that we found a link share and a user share
- $this->assertEquals(count($items), 2);
-
- $linkShare = null;
- $userShare = null;
-
- foreach ($items as $item) {
- if ($item['share_type'] === \OCP\Share::SHARE_TYPE_LINK) {
- $linkShare = $item;
- }
- if ($item['share_type'] === \OCP\Share::SHARE_TYPE_USER) {
- $userShare = $item;
- }
- }
-
- // make sure that we found a link share and a user share
- $this->assertTrue(is_array($linkShare));
- $this->assertTrue(is_array($userShare));
-
- // check if share have expected permissions, single shared files never have
- // delete permissions
- $this->assertEquals(\OCP\Constants::PERMISSION_ALL & ~\OCP\Constants::PERMISSION_DELETE, $userShare['permissions']);
+ $node1 = $this->userFolder->get($this->filename);
+ $share1 = $this->shareManager->newShare();
+ $share1->setNode($node1)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setSharedWith(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(19);
+ $share1 = $this->shareManager->createShare($share1);
+
+ $share2 = $this->shareManager->newShare();
+ $share2->setNode($node1)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setShareType(\OCP\Share::SHARE_TYPE_LINK)
+ ->setPermissions(1);
+ $share2 = $this->shareManager->createShare($share2);
// update permissions
-
$params = array();
- $params['id'] = $userShare['id'];
- $params['_put'] = array();
- $params['_put']['permissions'] = 1;
+ $params['permissions'] = 1;
- $result = \OCA\Files_Sharing\API\Local::updateShare($params);
+ $request = $this->createRequest(['permissions' => 1]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->updateShare($share1->getId());
+ $this->assertTrue($result->succeeded());
$meta = $result->getMeta();
$this->assertTrue($result->succeeded(), $meta['message']);
- $items = \OCP\Share::getItemShared('file', $userShare['file_source']);
-
- $newUserShare = null;
- foreach ($items as $item) {
- if ($item['share_with'] === \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2) {
- $newUserShare = $item;
- break;
- }
- }
-
- $this->assertTrue(is_array($newUserShare));
-
- $this->assertEquals('1', $newUserShare['permissions']);
+ $share1 = $this->shareManager->getShareById('ocinternal:' . $share1->getId());
+ $this->assertEquals(1, $share1->getPermissions());
// update password for link share
- $this->assertTrue(empty($linkShare['share_with']));
-
- $params = array();
- $params['id'] = $linkShare['id'];
- $params['_put'] = array();
- $params['_put']['password'] = 'foo';
-
- $result = \OCA\Files_Sharing\API\Local::updateShare($params);
+ $this->assertNull($share2->getPassword());
+ $request = $this->createRequest(['password' => 'foo']);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->updateShare($share2->getId());
$this->assertTrue($result->succeeded());
- $items = \OCP\Share::getItemShared('file', $linkShare['file_source']);
-
- $newLinkShare = null;
- foreach ($items as $item) {
- if ($item['share_type'] === \OCP\Share::SHARE_TYPE_LINK) {
- $newLinkShare = $item;
- break;
- }
- }
-
- $this->assertTrue(is_array($newLinkShare));
- $this->assertTrue(!empty($newLinkShare['share_with']));
-
- // Remove password for link share
- $params = array();
- $params['id'] = $linkShare['id'];
- $params['_put'] = array();
- $params['_put']['password'] = '';
-
- $result = \OCA\Files_Sharing\API\Local::updateShare($params);
+ $share2 = $this->shareManager->getShareById('ocinternal:' . $share2->getId());
+ $this->assertNotNull($share2->getPassword());
+ $request = $this->createRequest(['password' => '']);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->updateShare($share2->getId());
$this->assertTrue($result->succeeded());
- $items = \OCP\Share::getItemShared('file', $linkShare['file_source']);
-
- $newLinkShare = null;
- foreach ($items as $item) {
- if ($item['share_type'] === \OCP\Share::SHARE_TYPE_LINK) {
- $newLinkShare = $item;
- break;
- }
- }
-
- $this->assertTrue(is_array($newLinkShare));
- $this->assertTrue(empty($newLinkShare['share_with']));
-
- \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
-
- \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
+ $share2 = $this->shareManager->getShareById('ocinternal:' . $share2->getId());
+ $this->assertNull($share2->getPassword());
+ $this->shareManager->deleteShare($share1);
+ $this->shareManager->deleteShare($share2);
}
/**
@@ -1173,111 +1007,67 @@ class Test_Files_Sharing_Api extends TestCase {
* @depends testCreateShareUserFile
*/
public function testUpdateShareInvalidPermissions() {
-
- $fileInfo = $this->view->getFileInfo($this->filename);
-
- $result = \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, \OCP\Constants::PERMISSION_ALL);
-
- // share was successful?
- $this->assertTrue($result);
-
- $share = \OCP\Share::getItemShared('file', null);
- $this->assertCount(1, $share);
- $share = reset($share);
-
- // check if share have expected permissions, single shared files never have
- // delete permissions
- $this->assertEquals(\OCP\Constants::PERMISSION_ALL & ~\OCP\Constants::PERMISSION_DELETE, $share['permissions']);
-
- // update permissions
- $params = [];
- $params['id'] = $share['id'];
- $params['_put'] = [];
- $params['_put']['permissions'] = \OCP\Constants::PERMISSION_SHARE;
-
- $result = \OCA\Files_Sharing\API\Local::updateShare($params);
+ $node1 = $this->userFolder->get($this->filename);
+ $share1 = $this->shareManager->newShare();
+ $share1->setNode($node1)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setSharedWith(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(19);
+ $share1 = $this->shareManager->createShare($share1);
+
+ $request = $this->createRequest(['permissions' => \OCP\Constants::PERMISSION_ALL]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->updateShare($share1->getId());
//Updating should fail with 400
$this->assertFalse($result->succeeded());
$this->assertEquals(400, $result->getStatusCode());
- $share = \OCP\Share::getItemShared('file', $share['file_source']);
- $share = reset($share);
-
//Permissions should not have changed!
- $this->assertEquals(\OCP\Constants::PERMISSION_ALL & ~\OCP\Constants::PERMISSION_DELETE, $share['permissions']);
+ $share1 = $this->shareManager->getShareById('ocinternal:' . $share1->getId());
+ $this->assertEquals(19, $share1->getPermissions());
- \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
+ $this->shareManager->deleteShare($share1);
}
-
/**
* @medium
*/
function testUpdateShareUpload() {
-
- $fileInfo = $this->view->getFileInfo($this->folder);
-
- $result = \OCP\Share::shareItem('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK,
- null, 1);
-
- // share was successful?
- $this->assertTrue(is_string($result));
-
- $items = \OCP\Share::getItemShared('file', null);
-
- // make sure that we found a link share and a user share
- $this->assertEquals(1, count($items));
-
- $linkShare = null;
-
- foreach ($items as $item) {
- if ($item['share_type'] === \OCP\Share::SHARE_TYPE_LINK) {
- $linkShare = $item;
- }
- }
-
- // make sure that we found a link share
- $this->assertTrue(is_array($linkShare));
+ $node1 = $this->userFolder->get($this->folder);
+ $share1 = $this->shareManager->newShare();
+ $share1->setNode($node1)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setShareType(\OCP\Share::SHARE_TYPE_LINK)
+ ->setPermissions(1);
+ $share1 = $this->shareManager->createShare($share1);
// update public upload
-
- $params = array();
- $params['id'] = $linkShare['id'];
- $params['_put'] = array();
- $params['_put']['publicUpload'] = 'true';
-
- $result = \OCA\Files_Sharing\API\Local::updateShare($params);
-
+ $request = $this->createRequest(['publicUpload' => 'true']);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->updateShare($share1->getId());
$this->assertTrue($result->succeeded());
- $items = \OCP\Share::getItemShared('file', $linkShare['file_source']);
-
- $updatedLinkShare = null;
- foreach ($items as $item) {
- if ($item['share_type'] === \OCP\Share::SHARE_TYPE_LINK) {
- $updatedLinkShare = $item;
- break;
- }
- }
-
- $this->assertTrue(is_array($updatedLinkShare));
- $this->assertEquals(7, $updatedLinkShare['permissions']);
+ $share1 = $this->shareManager->getShareById($share1->getFullId());
+ $this->assertEquals(7, $share1->getPermissions());
// cleanup
-
- \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
-
+ $this->shareManager->deleteShare($share1);
}
/**
* @medium
*/
function testUpdateShareExpireDate() {
+ $node1 = $this->userFolder->get($this->folder);
+ $share1 = $this->shareManager->newShare();
+ $share1->setNode($node1)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setShareType(\OCP\Share::SHARE_TYPE_LINK)
+ ->setPermissions(1);
+ $share1 = $this->shareManager->createShare($share1);
- $fileInfo = $this->view->getFileInfo($this->folder);
$config = \OC::$server->getConfig();
// enforce expire date, by default 7 days after the file was shared
@@ -1285,82 +1075,49 @@ class Test_Files_Sharing_Api extends TestCase {
$config->setAppValue('core', 'shareapi_enforce_expire_date', 'yes');
$dateWithinRange = new \DateTime();
+ $dateWithinRange->setTime(0,0,0);
$dateWithinRange->add(new \DateInterval('P5D'));
$dateOutOfRange = new \DateTime();
+ $dateOutOfRange->setTime(0,0,0);
$dateOutOfRange->add(new \DateInterval('P8D'));
- $result = \OCP\Share::shareItem('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK,
- null, 1);
-
- // share was successful?
- $this->assertTrue(is_string($result));
-
- $items = \OCP\Share::getItemShared('file', null);
-
- // make sure that we found a link share
- $this->assertEquals(1, count($items));
-
- $linkShare = reset($items);
-
// update expire date to a valid value
- $params = array();
- $params['id'] = $linkShare['id'];
- $params['_put'] = array();
- $params['_put']['expireDate'] = $dateWithinRange->format('Y-m-d');
-
- $result = \OCA\Files_Sharing\API\Local::updateShare($params);
-
+ $request = $this->createRequest(['expireDate' => $dateWithinRange->format('Y-m-d')]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->updateShare($share1->getId());
$this->assertTrue($result->succeeded());
- $items = \OCP\Share::getItemShared('file', $linkShare['file_source']);
-
- $updatedLinkShare = reset($items);
+ $share1 = $this->shareManager->getShareById($share1->getFullId());
// date should be changed
- $this->assertTrue(is_array($updatedLinkShare));
- $this->assertEquals($dateWithinRange->format('Y-m-d') . ' 00:00:00', $updatedLinkShare['expiration']);
+ $this->assertEquals($dateWithinRange, $share1->getExpirationDate());
// update expire date to a value out of range
- $params = array();
- $params['id'] = $linkShare['id'];
- $params['_put'] = array();
- $params['_put']['expireDate'] = $dateOutOfRange->format('Y-m-d');
-
- $result = \OCA\Files_Sharing\API\Local::updateShare($params);
-
+ $request = $this->createRequest(['expireDate' => $dateOutOfRange->format('Y-m-d')]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->updateShare($share1->getId());
$this->assertFalse($result->succeeded());
- $items = \OCP\Share::getItemShared('file', $linkShare['file_source']);
-
- $updatedLinkShare = reset($items);
+ $share1 = $this->shareManager->getShareById($share1->getFullId());
// date shouldn't be changed
- $this->assertTrue(is_array($updatedLinkShare));
- $this->assertEquals($dateWithinRange->format('Y-m-d') . ' 00:00:00', $updatedLinkShare['expiration']);
-
+ $this->assertEquals($dateWithinRange, $share1->getExpirationDate());
// Try to remove expire date
- $params = array();
- $params['id'] = $linkShare['id'];
- $params['_put'] = ['expireDate' => ''];
-
- $result = \OCA\Files_Sharing\API\Local::updateShare($params);
-
+ $request = $this->createRequest(['expireDate' => '']);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->updateShare($share1->getId());
$this->assertFalse($result->succeeded());
- $items = \OCP\Share::getItemShared('file', $linkShare['file_source']);
+ $share1 = $this->shareManager->getShareById($share1->getFullId());
- $updatedLinkShare = reset($items);
// date shouldn't be changed
- $this->assertTrue(is_array($updatedLinkShare));
- $this->assertEquals($dateWithinRange->format('Y-m-d') . ' 00:00:00', $updatedLinkShare['expiration']);
-
+ $this->assertEquals($dateWithinRange, $share1->getExpirationDate());
// cleanup
$config->setAppValue('core', 'shareapi_default_expire_date', 'no');
$config->setAppValue('core', 'shareapi_enforce_expire_date', 'no');
- \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
-
+ $this->shareManager->deleteShare($share1);
}
/**
@@ -1368,73 +1125,65 @@ class Test_Files_Sharing_Api extends TestCase {
* @depends testCreateShareUserFile
*/
function testDeleteShare() {
+ $node1 = $this->userFolder->get($this->filename);
+ $share1 = $this->shareManager->newShare();
+ $share1->setNode($node1)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setSharedWith(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(19);
+ $share1 = $this->shareManager->createShare($share1);
+
+ $share2 = $this->shareManager->newShare();
+ $share2->setNode($node1)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setShareType(\OCP\Share::SHARE_TYPE_LINK)
+ ->setPermissions(1);
+ $share2 = $this->shareManager->createShare($share1);
- $fileInfo = $this->view->getFileInfo($this->filename);
-
- \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, 31);
-
- \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK,
- null, 1);
-
- $items = \OCP\Share::getItemShared('file', null);
-
- $this->assertEquals(2, count($items));
-
- foreach ($items as $item) {
- $result = \OCA\Files_Sharing\API\Local::deleteShare(array('id' => $item['id']));
-
- $this->assertTrue($result->succeeded());
- }
-
- $itemsAfterDelete = \OCP\Share::getItemShared('file', null);
+ $request = $this->createRequest([]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->deleteShare($share1->getId());
+ $this->assertTrue($result->succeeded());
- $this->assertTrue(empty($itemsAfterDelete));
+ $request = $this->createRequest([]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->deleteShare($share2->getId());
+ $this->assertTrue($result->succeeded());
+ $this->assertEmpty($this->shareManager->getSharesBy(self::TEST_FILES_SHARING_API_USER2, \OCP\Share::SHARE_TYPE_USER));
+ $this->assertEmpty($this->shareManager->getSharesBy(self::TEST_FILES_SHARING_API_USER2, \OCP\Share::SHARE_TYPE_LINK));
}
/**
* test unshare of a reshared file
*/
function testDeleteReshare() {
-
- // user 1 shares a folder with user2
- \Test_Files_Sharing_Api::loginHelper(\Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER1);
-
- $fileInfo1 = $this->view->getFileInfo($this->folder);
- $fileInfo2 = $this->view->getFileInfo($this->folder.'/'.$this->filename);
-
- $result1 = \OCP\Share::shareItem('folder', $fileInfo1['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, 31);
-
- $this->assertTrue($result1);
-
- // user2 shares a file from the folder as link
- \Test_Files_Sharing_Api::loginHelper(\Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
-
- $result2 = \OCP\Share::shareItem('file', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_LINK, null, 1);
-
- $this->assertTrue(is_string($result2));
+ $node1 = $this->userFolder->get($this->folder);
+ $share1 = $this->shareManager->newShare();
+ $share1->setNode($node1)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
+ ->setSharedWith(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setPermissions(31);
+ $share1 = $this->shareManager->createShare($share1);
+
+ $user2folder = \OC::$server->getUserFolder(self::TEST_FILES_SHARING_API_USER2);
+ $node2 = $user2folder->get($this->folder.'/'.$this->filename);
+ $share2 = $this->shareManager->newShare();
+ $share2->setNode($node2)
+ ->setSharedBy(self::TEST_FILES_SHARING_API_USER2)
+ ->setShareType(\OCP\Share::SHARE_TYPE_LINK)
+ ->setPermissions(1);
+ $share2 = $this->shareManager->createShare($share2);
// test if we can unshare the link again
- $items = \OCP\Share::getItemShared('file', null);
- $this->assertEquals(1, count($items));
-
- $item = reset($items);
- $result3 = \OCA\Files_Sharing\API\Local::deleteShare(array('id' => $item['id']));
-
- $this->assertTrue($result3->succeeded());
-
- // cleanup
- \Test_Files_Sharing_Api::loginHelper(\Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER1);
-
- $result = \OCP\Share::unshare('folder', $fileInfo1['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
-
- $this->assertTrue($result);
-
-
+ $request = $this->createRequest([]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
+ $result = $ocs->deleteShare($share2->getId());
+ $this->assertTrue($result->succeeded());
+ $this->shareManager->deleteShare($share1);
}
/**
@@ -1625,12 +1374,8 @@ class Test_Files_Sharing_Api extends TestCase {
$date = new \DateTime();
$date->add(new \DateInterval('P5D'));
- $year = (int)$date->format('Y');
-
return [
[$date->format('Y-m-d'), true],
- [$year+1 . '-1-1', false],
- [$date->format('Y-m-dTH:m'), false],
['abc', false],
[$date->format('Y-m-d') . 'xyz', false],
];
@@ -1642,11 +1387,13 @@ class Test_Files_Sharing_Api extends TestCase {
* @dataProvider datesProvider
*/
public function testPublicLinkExpireDate($date, $valid) {
- $_POST['path'] = $this->folder;
- $_POST['shareType'] = \OCP\Share::SHARE_TYPE_LINK;
- $_POST['expireDate'] = $date;
-
- $result = \OCA\Files_Sharing\API\Local::createShare([]);
+ $request = $this->createRequest([
+ 'path' => $this->folder,
+ 'shareType' => \OCP\Share::SHARE_TYPE_LINK,
+ 'expireDate' => $date,
+ ]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->createShare();
if ($valid === false) {
$this->assertFalse($result->succeeded());
@@ -1665,17 +1412,11 @@ class Test_Files_Sharing_Api extends TestCase {
$url = \OC::$server->getURLGenerator()->getAbsoluteURL('/index.php/s/' . $data['token']);
$this->assertEquals($url, $data['url']);
+ $share = $this->shareManager->getShareById('ocinternal:'.$data['id']);
- $share = $this->getShareFromId($data['id']);
- $items = \OCP\Share::getItemShared('file', $share['item_source']);
- $this->assertTrue(!empty($items));
+ $this->assertEquals($date, $share->getExpirationDate()->format('Y-m-d'));
- $item = reset($items);
- $this->assertTrue(is_array($item));
- $this->assertEquals($date, substr($item['expiration'], 0, 10));
-
- $fileinfo = $this->view->getFileInfo($this->folder);
- \OCP\Share::unshare('folder', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
+ $this->shareManager->deleteShare($share);
}
public function testCreatePublicLinkExpireDateValid() {
@@ -1688,12 +1429,13 @@ class Test_Files_Sharing_Api extends TestCase {
$date = new \DateTime();
$date->add(new \DateInterval('P5D'));
- $_POST['path'] = $this->folder;
- $_POST['shareType'] = \OCP\Share::SHARE_TYPE_LINK;
- $_POST['expireDate'] = $date->format('Y-m-d');
-
- $result = \OCA\Files_Sharing\API\Local::createShare([]);
-
+ $request = $this->createRequest([
+ 'path' => $this->folder,
+ 'shareType' => \OCP\Share::SHARE_TYPE_LINK,
+ 'expireDate' => $date->format('Y-m-d'),
+ ]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->createShare();
$this->assertTrue($result->succeeded());
$data = $result->getData();
@@ -1704,17 +1446,11 @@ class Test_Files_Sharing_Api extends TestCase {
$url = \OC::$server->getURLGenerator()->getAbsoluteURL('/index.php/s/' . $data['token']);
$this->assertEquals($url, $data['url']);
+ $share = $this->shareManager->getShareById('ocinternal:'.$data['id']);
+ $date->setTime(0,0,0);
+ $this->assertEquals($date, $share->getExpirationDate());
- $share = $this->getShareFromId($data['id']);
- $items = \OCP\Share::getItemShared('file', $share['item_source']);
- $this->assertTrue(!empty($items));
-
- $item = reset($items);
- $this->assertTrue(is_array($item));
- $this->assertEquals($date->format('Y-m-d'), substr($item['expiration'], 0, 10));
-
- $fileinfo = $this->view->getFileInfo($this->folder);
- \OCP\Share::unshare('folder', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
+ $this->shareManager->deleteShare($share);
$config->setAppValue('core', 'shareapi_default_expire_date', 'no');
$config->setAppValue('core', 'shareapi_enforce_expire_date', 'no');
@@ -1730,15 +1466,16 @@ class Test_Files_Sharing_Api extends TestCase {
$date = new \DateTime();
$date->add(new \DateInterval('P8D'));
- $_POST['path'] = $this->folder;
- $_POST['shareType'] = \OCP\Share::SHARE_TYPE_LINK;
- $_POST['expireDate'] = $date->format('Y-m-d');
-
- $result = \OCA\Files_Sharing\API\Local::createShare([]);
-
+ $request = $this->createRequest([
+ 'path' => $this->folder,
+ 'shareType' => \OCP\Share::SHARE_TYPE_LINK,
+ 'expireDate' => $date->format('Y-m-d'),
+ ]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->createShare();
$this->assertFalse($result->succeeded());
$this->assertEquals(404, $result->getStatusCode());
- $this->assertEquals('Cannot set expiration date. Shares cannot expire later than 7 after they have been shared', $result->getMeta()['message']);
+ $this->assertEquals('Cannot set expiration date more than 7 days in the future', $result->getMeta()['message']);
$config->setAppValue('core', 'shareapi_default_expire_date', 'no');
$config->setAppValue('core', 'shareapi_enforce_expire_date', 'no');
@@ -1750,15 +1487,16 @@ class Test_Files_Sharing_Api extends TestCase {
$date = new \DateTime();
$date->sub(new \DateInterval('P8D'));
- $_POST['path'] = $this->folder;
- $_POST['shareType'] = \OCP\Share::SHARE_TYPE_LINK;
- $_POST['expireDate'] = $date->format('Y-m-d');
-
- $result = \OCA\Files_Sharing\API\Local::createShare([]);
-
+ $request = $this->createRequest([
+ 'path' => $this->folder,
+ 'shareType' => \OCP\Share::SHARE_TYPE_LINK,
+ 'expireDate' => $date->format('Y-m-d'),
+ ]);
+ $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
+ $result = $ocs->createShare();
$this->assertFalse($result->succeeded());
$this->assertEquals(404, $result->getStatusCode());
- $this->assertEquals('Cannot set expiration date. Expiration date is in the past', $result->getMeta()['message']);
+ $this->assertEquals('Expiration date is in the past', $result->getMeta()['message']);
$config->setAppValue('core', 'shareapi_default_expire_date', 'no');
$config->setAppValue('core', 'shareapi_enforce_expire_date', 'no');
diff --git a/apps/files_sharing/tests/api/share20ocstest.php b/apps/files_sharing/tests/api/share20ocstest.php
index 81db3b96333..a2c70d7673c 100644
--- a/apps/files_sharing/tests/api/share20ocstest.php
+++ b/apps/files_sharing/tests/api/share20ocstest.php
@@ -203,12 +203,14 @@ class Share20OCSTest extends \Test\TestCase {
$file->method('getPath')->willReturn('file');
$file->method('getStorage')->willReturn($storage);
$file->method('getParent')->willReturn($parentFolder);
+ $file->method('getMimeType')->willReturn('myMimeType');
$folder = $this->getMock('OCP\Files\Folder');
$folder->method('getId')->willReturn(2);
$folder->method('getPath')->willReturn('folder');
$folder->method('getStorage')->willReturn($storage);
$folder->method('getParent')->willReturn($parentFolder);
+ $folder->method('getMimeType')->willReturn('myFolderMimeType');
// File shared with user
$share = $this->createShare(
@@ -247,7 +249,8 @@ class Share20OCSTest extends \Test\TestCase {
'storage' => 101,
'mail_send' => 0,
'uid_file_owner' => 'ownerId',
- 'displayname_file_owner' => 'ownerDisplay'
+ 'displayname_file_owner' => 'ownerDisplay',
+ 'mimetype' => 'myMimeType',
];
$data[] = [$share, $expected];
@@ -288,7 +291,8 @@ class Share20OCSTest extends \Test\TestCase {
'storage' => 101,
'mail_send' => 0,
'uid_file_owner' => 'ownerId',
- 'displayname_file_owner' => 'ownerDisplay'
+ 'displayname_file_owner' => 'ownerDisplay',
+ 'mimetype' => 'myFolderMimeType',
];
$data[] = [$share, $expected];
@@ -333,7 +337,8 @@ class Share20OCSTest extends \Test\TestCase {
'mail_send' => 0,
'url' => 'url',
'uid_file_owner' => 'ownerId',
- 'displayname_file_owner' => 'ownerDisplay'
+ 'displayname_file_owner' => 'ownerDisplay',
+ 'mimetype' => 'myFolderMimeType',
];
$data[] = [$share, $expected];
@@ -1514,6 +1519,9 @@ class Share20OCSTest extends \Test\TestCase {
$folder = $this->getMock('\OCP\Files\Folder');
$parent = $this->getMock('\OCP\Files\Folder');
+ $file->method('getMimeType')->willReturn('myMimeType');
+ $folder->method('getMimeType')->willReturn('myFolderMimeType');
+
$file->method('getPath')->willReturn('file');
$folder->method('getPath')->willReturn('folder');
@@ -1578,6 +1586,7 @@ class Share20OCSTest extends \Test\TestCase {
'share_with' => 'recipient',
'share_with_displayname' => 'recipient',
'mail_send' => 0,
+ 'mimetype' => 'myMimeType',
], $share, [], false
];
@@ -1606,6 +1615,7 @@ class Share20OCSTest extends \Test\TestCase {
'share_with' => 'recipient',
'share_with_displayname' => 'recipientDN',
'mail_send' => 0,
+ 'mimetype' => 'myMimeType',
], $share, [
['owner', $owner],
['initiator', $initiator],
@@ -1649,6 +1659,7 @@ class Share20OCSTest extends \Test\TestCase {
'share_with' => 'recipient',
'share_with_displayname' => 'recipient',
'mail_send' => 0,
+ 'mimetype' => 'myMimeType',
], $share, [], false
];
@@ -1687,6 +1698,7 @@ class Share20OCSTest extends \Test\TestCase {
'share_with' => 'recipient',
'share_with_displayname' => 'recipient',
'mail_send' => 0,
+ 'mimetype' => 'myMimeType',
], $share, [], false
];
@@ -1727,7 +1739,8 @@ class Share20OCSTest extends \Test\TestCase {
'share_with' => 'mypassword',
'share_with_displayname' => 'mypassword',
'mail_send' => 0,
- 'url' => 'myLink'
+ 'url' => 'myLink',
+ 'mimetype' => 'myMimeType',
], $share, [], false
];
@@ -1766,6 +1779,7 @@ class Share20OCSTest extends \Test\TestCase {
'share_with' => 'user@server.com',
'share_with_displayname' => 'user@server.com',
'mail_send' => 0,
+ 'mimetype' => 'myFolderMimeType',
], $share, [], false
];
diff --git a/apps/files_sharing/tests/server2server.php b/apps/files_sharing/tests/server2server.php
index 298f1008f71..7714f274c6d 100644
--- a/apps/files_sharing/tests/server2server.php
+++ b/apps/files_sharing/tests/server2server.php
@@ -147,6 +147,38 @@ class Test_Files_Sharing_S2S_OCS_API extends TestCase {
$this->assertEmpty($data);
}
+ function testDeclineShareMultiple() {
+ $dummy = \OCP\DB::prepare('
+ INSERT INTO `*PREFIX*share`
+ (`share_type`, `uid_owner`, `item_type`, `item_source`, `item_target`, `file_source`, `file_target`, `permissions`, `stime`, `token`, `share_with`)
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+ ');
+ $dummy->execute(array(\OCP\Share::SHARE_TYPE_REMOTE, self::TEST_FILES_SHARING_API_USER1, 'test', '1', '/1', '1', '/test.txt', '1', time(), 'token1', 'foo@bar'));
+ $dummy->execute(array(\OCP\Share::SHARE_TYPE_REMOTE, self::TEST_FILES_SHARING_API_USER1, 'test', '1', '/1', '1', '/test.txt', '1', time(), 'token2', 'bar@bar'));
+
+ $verify = \OCP\DB::prepare('SELECT * FROM `*PREFIX*share`');
+ $result = $verify->execute();
+ $data = $result->fetchAll();
+ $this->assertCount(2, $data);
+
+ $_POST['token'] = 'token1';
+ $this->s2s->declineShare(array('id' => $data[0]['id']));
+
+ $verify = \OCP\DB::prepare('SELECT * FROM `*PREFIX*share`');
+ $result = $verify->execute();
+ $data = $result->fetchAll();
+ $this->assertCount(1, $data);
+ $this->assertEquals('bar@bar', $data[0]['share_with']);
+
+ $_POST['token'] = 'token2';
+ $this->s2s->declineShare(array('id' => $data[0]['id']));
+
+ $verify = \OCP\DB::prepare('SELECT * FROM `*PREFIX*share`');
+ $result = $verify->execute();
+ $data = $result->fetchAll();
+ $this->assertEmpty($data);
+ }
+
/**
* @dataProvider dataTestDeleteUser
*/
diff --git a/apps/systemtags/l10n/pl.js b/apps/systemtags/l10n/pl.js
index 5e426a1e96e..ad361c38b81 100644
--- a/apps/systemtags/l10n/pl.js
+++ b/apps/systemtags/l10n/pl.js
@@ -1,7 +1,10 @@
OC.L10N.register(
"systemtags",
{
+ "%s (invisible)" : "%s (niewidoczny)",
"Tags" : "Tagi",
+ "Tagged files" : "Otagowane pliki",
+ "No files in here" : "Brak plików",
"No entries found in this folder" : "Brak wpisów w tym folderze",
"Name" : "Nazwa",
"Size" : "Rozmiar",
diff --git a/apps/systemtags/l10n/pl.json b/apps/systemtags/l10n/pl.json
index ca3158eaf4b..ba17954a472 100644
--- a/apps/systemtags/l10n/pl.json
+++ b/apps/systemtags/l10n/pl.json
@@ -1,5 +1,8 @@
{ "translations": {
+ "%s (invisible)" : "%s (niewidoczny)",
"Tags" : "Tagi",
+ "Tagged files" : "Otagowane pliki",
+ "No files in here" : "Brak plików",
"No entries found in this folder" : "Brak wpisów w tym folderze",
"Name" : "Nazwa",
"Size" : "Rozmiar",
diff --git a/apps/testing/appinfo/info.xml b/apps/testing/appinfo/info.xml
index cfbe75ddadc..4c07ed87d01 100644
--- a/apps/testing/appinfo/info.xml
+++ b/apps/testing/appinfo/info.xml
@@ -7,6 +7,6 @@
<author>Joas Schilling</author>
<version>0.1.0</version>
<dependencies>
- <owncloud min-version="9.0" max-version="9.0" />
+ <owncloud min-version="9.1" max-version="9.1" />
</dependencies>
</info>
diff --git a/apps/updatenotification/l10n/de_DE.js b/apps/updatenotification/l10n/de_DE.js
index cda4c603038..d93e8685671 100644
--- a/apps/updatenotification/l10n/de_DE.js
+++ b/apps/updatenotification/l10n/de_DE.js
@@ -6,6 +6,7 @@ OC.L10N.register(
"A new version is available: %s" : "Eine neue Version ist verfügbar: %s",
"Open updater" : "Updater aufrufen",
"Your version is up to date." : "Die neuste Version ist installiert.",
+ "Checked on %s" : "Überprüft auf %s",
"Update channel:" : "Update-Kanal:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/updatenotification/l10n/de_DE.json b/apps/updatenotification/l10n/de_DE.json
index 8df6bf57ab5..2c8d54da7fe 100644
--- a/apps/updatenotification/l10n/de_DE.json
+++ b/apps/updatenotification/l10n/de_DE.json
@@ -4,6 +4,7 @@
"A new version is available: %s" : "Eine neue Version ist verfügbar: %s",
"Open updater" : "Updater aufrufen",
"Your version is up to date." : "Die neuste Version ist installiert.",
+ "Checked on %s" : "Überprüft auf %s",
"Update channel:" : "Update-Kanal:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/is.js b/apps/updatenotification/l10n/is.js
index 3f3f12b215d..2ae1bc55db7 100644
--- a/apps/updatenotification/l10n/is.js
+++ b/apps/updatenotification/l10n/is.js
@@ -1,8 +1,14 @@
OC.L10N.register(
"updatenotification",
{
- "{version} is available. Get more information on how to update." : "{version} er í boði. Fá frekari upplýsingar um hvernig á að uppfæra.",
+ "Updated channel" : "Uppfærði rás",
+ "{version} is available. Get more information on how to update." : "{version} er í boði. Fáðu frekari upplýsingar um hvernig á að uppfæra.",
"Updater" : "Uppfærslustýring",
- "Open updater" : "Opna uppfærslustýringu"
+ "A new version is available: %s" : "Ný útgáfa er tiltæk: %s",
+ "Open updater" : "Opna uppfærslustýringu",
+ "Your version is up to date." : "Útgáfan þín er af nýjustu gerð.",
+ "Checked on %s" : "Athugað þann %s",
+ "Update channel:" : "Uppfærslurás:",
+ "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Þú getur alltaf uppfært í nýrri útgáfu eða tilraunaútgáfurás. En þú getur aldrei niðurfært í stöðugri rás."
},
"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");
diff --git a/apps/updatenotification/l10n/is.json b/apps/updatenotification/l10n/is.json
index 5cf085b66ed..8b5be024f4e 100644
--- a/apps/updatenotification/l10n/is.json
+++ b/apps/updatenotification/l10n/is.json
@@ -1,6 +1,12 @@
{ "translations": {
- "{version} is available. Get more information on how to update." : "{version} er í boði. Fá frekari upplýsingar um hvernig á að uppfæra.",
+ "Updated channel" : "Uppfærði rás",
+ "{version} is available. Get more information on how to update." : "{version} er í boði. Fáðu frekari upplýsingar um hvernig á að uppfæra.",
"Updater" : "Uppfærslustýring",
- "Open updater" : "Opna uppfærslustýringu"
+ "A new version is available: %s" : "Ný útgáfa er tiltæk: %s",
+ "Open updater" : "Opna uppfærslustýringu",
+ "Your version is up to date." : "Útgáfan þín er af nýjustu gerð.",
+ "Checked on %s" : "Athugað þann %s",
+ "Update channel:" : "Uppfærslurás:",
+ "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Þú getur alltaf uppfært í nýrri útgáfu eða tilraunaútgáfurás. En þú getur aldrei niðurfært í stöðugri rás."
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/ko.js b/apps/updatenotification/l10n/ko.js
index 0d150a8a64c..2025731fbf3 100644
--- a/apps/updatenotification/l10n/ko.js
+++ b/apps/updatenotification/l10n/ko.js
@@ -5,6 +5,7 @@ OC.L10N.register(
"Updater" : "업데이터",
"A new version is available: %s" : "새 버전을 사용할 수 있습니다: %s",
"Open updater" : "업데이터 열기",
+ "Your version is up to date." : "최신 버전을 사용하고 있습니다.",
"Update channel:" : "업데이트 채널:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "항상 새로운 버전이나 실험 채널로 업그레이드할 수 있지만, 안정 채널로 다운그레이드할 수는 없습니다."
},
diff --git a/apps/updatenotification/l10n/ko.json b/apps/updatenotification/l10n/ko.json
index ce622c046ba..1794dd919d0 100644
--- a/apps/updatenotification/l10n/ko.json
+++ b/apps/updatenotification/l10n/ko.json
@@ -3,6 +3,7 @@
"Updater" : "업데이터",
"A new version is available: %s" : "새 버전을 사용할 수 있습니다: %s",
"Open updater" : "업데이터 열기",
+ "Your version is up to date." : "최신 버전을 사용하고 있습니다.",
"Update channel:" : "업데이트 채널:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "항상 새로운 버전이나 실험 채널로 업그레이드할 수 있지만, 안정 채널로 다운그레이드할 수는 없습니다."
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/updatenotification/l10n/pt_PT.js b/apps/updatenotification/l10n/pt_PT.js
index 5fa78c9e0b6..7bcc1a720dc 100644
--- a/apps/updatenotification/l10n/pt_PT.js
+++ b/apps/updatenotification/l10n/pt_PT.js
@@ -1,10 +1,13 @@
OC.L10N.register(
"updatenotification",
{
+ "Updated channel" : "Actualizar canal",
"{version} is available. Get more information on how to update." : "{version} está disponível. Obtenha mais informação sobre como atualizar.",
"Updater" : "actualizar",
"A new version is available: %s" : "Está disponível uma nova versão: %s",
"Open updater" : "Abrir atualizador",
+ "Your version is up to date." : "A sua versão está actualizada.",
+ "Checked on %s" : "Verificado em %s",
"Update channel:" : "Atualizar canal:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Você pode sempre atualizar para uma nova versão / canal experimental. Mas nunca poderá recuar para um canal mais estável."
},
diff --git a/apps/updatenotification/l10n/pt_PT.json b/apps/updatenotification/l10n/pt_PT.json
index 27b49140cc3..dd7e6760dcf 100644
--- a/apps/updatenotification/l10n/pt_PT.json
+++ b/apps/updatenotification/l10n/pt_PT.json
@@ -1,8 +1,11 @@
{ "translations": {
+ "Updated channel" : "Actualizar canal",
"{version} is available. Get more information on how to update." : "{version} está disponível. Obtenha mais informação sobre como atualizar.",
"Updater" : "actualizar",
"A new version is available: %s" : "Está disponível uma nova versão: %s",
"Open updater" : "Abrir atualizador",
+ "Your version is up to date." : "A sua versão está actualizada.",
+ "Checked on %s" : "Verificado em %s",
"Update channel:" : "Atualizar canal:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Você pode sempre atualizar para uma nova versão / canal experimental. Mas nunca poderá recuar para um canal mais estável."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/updatenotification/l10n/sl.js b/apps/updatenotification/l10n/sl.js
index 9280e9c31e6..7e0e1d354a0 100644
--- a/apps/updatenotification/l10n/sl.js
+++ b/apps/updatenotification/l10n/sl.js
@@ -1,10 +1,13 @@
OC.L10N.register(
"updatenotification",
{
+ "Updated channel" : "Posodobljen kanal",
"{version} is available. Get more information on how to update." : "Na voljo je nova različica {version}. Na voljo je več podrobnosti o nadgradnji.",
"Updater" : "Posodabljalnik",
"A new version is available: %s" : "Na voljo je nova različica: %s",
"Open updater" : "Odpri posodabljalnik",
+ "Your version is up to date." : "Nameščena je najnovejša različica.",
+ "Checked on %s" : "Zadnjič preverjeno %s",
"Update channel:" : "Posodobi kanal:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Nadgradnja na višjo različico ali preizkusni kanal je vedno mogoča, ne pa tudi povrnitev na predhodno, bolj stabilno različico."
},
diff --git a/apps/updatenotification/l10n/sl.json b/apps/updatenotification/l10n/sl.json
index 949e054b912..9143b08e3e9 100644
--- a/apps/updatenotification/l10n/sl.json
+++ b/apps/updatenotification/l10n/sl.json
@@ -1,8 +1,11 @@
{ "translations": {
+ "Updated channel" : "Posodobljen kanal",
"{version} is available. Get more information on how to update." : "Na voljo je nova različica {version}. Na voljo je več podrobnosti o nadgradnji.",
"Updater" : "Posodabljalnik",
"A new version is available: %s" : "Na voljo je nova različica: %s",
"Open updater" : "Odpri posodabljalnik",
+ "Your version is up to date." : "Nameščena je najnovejša različica.",
+ "Checked on %s" : "Zadnjič preverjeno %s",
"Update channel:" : "Posodobi kanal:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Nadgradnja na višjo različico ali preizkusni kanal je vedno mogoča, ne pa tudi povrnitev na predhodno, bolj stabilno različico."
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
diff --git a/apps/updatenotification/l10n/zh_CN.js b/apps/updatenotification/l10n/zh_CN.js
index fd705d767c7..45acd3ec97b 100644
--- a/apps/updatenotification/l10n/zh_CN.js
+++ b/apps/updatenotification/l10n/zh_CN.js
@@ -1,9 +1,13 @@
OC.L10N.register(
"updatenotification",
{
+ "Updated channel" : "更新通道",
"{version} is available. Get more information on how to update." : "新版本 {version} 已可以使用。获取更多升级相关信息。",
"Updater" : "更新管理器",
+ "A new version is available: %s" : "有可用的新版本: %s",
"Open updater" : "打开更新管理器",
+ "Your version is up to date." : "您的版本已是最新。",
+ "Checked on %s" : "检查于 %s",
"Update channel:" : "更新通道:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "您可以随时更新到新版本 / 实验通道。但你永远不能降级到更稳定的通道。"
},
diff --git a/apps/updatenotification/l10n/zh_CN.json b/apps/updatenotification/l10n/zh_CN.json
index b95589b11a1..10764103dc9 100644
--- a/apps/updatenotification/l10n/zh_CN.json
+++ b/apps/updatenotification/l10n/zh_CN.json
@@ -1,7 +1,11 @@
{ "translations": {
+ "Updated channel" : "更新通道",
"{version} is available. Get more information on how to update." : "新版本 {version} 已可以使用。获取更多升级相关信息。",
"Updater" : "更新管理器",
+ "A new version is available: %s" : "有可用的新版本: %s",
"Open updater" : "打开更新管理器",
+ "Your version is up to date." : "您的版本已是最新。",
+ "Checked on %s" : "检查于 %s",
"Update channel:" : "更新通道:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "您可以随时更新到新版本 / 实验通道。但你永远不能降级到更稳定的通道。"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/user_ldap/l10n/cs_CZ.js b/apps/user_ldap/l10n/cs_CZ.js
index 0ed13594821..0bbe6c4afe3 100644
--- a/apps/user_ldap/l10n/cs_CZ.js
+++ b/apps/user_ldap/l10n/cs_CZ.js
@@ -92,7 +92,7 @@ OC.L10N.register(
"One Base DN per line" : "Jedna základní DN na řádku",
"You can specify Base DN for users and groups in the Advanced tab" : "V rozšířeném nastavení můžete určit základní DN pro uživatele a skupiny",
"Detect Base DN" : "Detekovat Base DN",
- "Test Base DN" : "Otestovat Base DN",
+ "Test Base DN" : "Test Base DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Zabraňuje automatickým LDAP požadavkům. Výhodné pro objemná nastavení, ale vyžaduje znalosti o LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Ručně vložit LDAP filtry (doporučeno pro obsáhlé adresáře)",
"Limit %s access to users meeting these criteria:" : "Omezit přístup %s uživatelům splňujícím tyto podmínky:",
diff --git a/apps/user_ldap/l10n/cs_CZ.json b/apps/user_ldap/l10n/cs_CZ.json
index 912e7c49b0f..79cd96a7f8c 100644
--- a/apps/user_ldap/l10n/cs_CZ.json
+++ b/apps/user_ldap/l10n/cs_CZ.json
@@ -90,7 +90,7 @@
"One Base DN per line" : "Jedna základní DN na řádku",
"You can specify Base DN for users and groups in the Advanced tab" : "V rozšířeném nastavení můžete určit základní DN pro uživatele a skupiny",
"Detect Base DN" : "Detekovat Base DN",
- "Test Base DN" : "Otestovat Base DN",
+ "Test Base DN" : "Test Base DN",
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Zabraňuje automatickým LDAP požadavkům. Výhodné pro objemná nastavení, ale vyžaduje znalosti o LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "Ručně vložit LDAP filtry (doporučeno pro obsáhlé adresáře)",
"Limit %s access to users meeting these criteria:" : "Omezit přístup %s uživatelům splňujícím tyto podmínky:",
diff --git a/apps/user_ldap/l10n/he.js b/apps/user_ldap/l10n/he.js
index 49de89877b0..29b07f0de05 100644
--- a/apps/user_ldap/l10n/he.js
+++ b/apps/user_ldap/l10n/he.js
@@ -133,6 +133,8 @@ OC.L10N.register(
"Group-Member association" : "שיוך חברי-קבוצה",
"Dynamic Group Member URL" : "נתיב חבר קבוצה דינמית",
"Nested Groups" : "קבוצות משנה",
+ "Paging chunksize" : "Paging chunksize",
+ "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Chunksize משמש לחיפושי paged LDAP שעלולים להחזיר תוצאות גסות כמו ספירת משתמש או קבוצה. (הגדרה כ- 0 מנטרל חיפושי paged LDAP במצבים אלה.)",
"Special Attributes" : "מאפיינים מיוחדים",
"Quota Field" : "שדה מכסה",
"Quota Default" : "ברירת מחדל מכסה",
diff --git a/apps/user_ldap/l10n/he.json b/apps/user_ldap/l10n/he.json
index cf55f7e4a60..d5db48f2285 100644
--- a/apps/user_ldap/l10n/he.json
+++ b/apps/user_ldap/l10n/he.json
@@ -131,6 +131,8 @@
"Group-Member association" : "שיוך חברי-קבוצה",
"Dynamic Group Member URL" : "נתיב חבר קבוצה דינמית",
"Nested Groups" : "קבוצות משנה",
+ "Paging chunksize" : "Paging chunksize",
+ "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Chunksize משמש לחיפושי paged LDAP שעלולים להחזיר תוצאות גסות כמו ספירת משתמש או קבוצה. (הגדרה כ- 0 מנטרל חיפושי paged LDAP במצבים אלה.)",
"Special Attributes" : "מאפיינים מיוחדים",
"Quota Field" : "שדה מכסה",
"Quota Default" : "ברירת מחדל מכסה",
diff --git a/apps/user_ldap/l10n/pt_PT.js b/apps/user_ldap/l10n/pt_PT.js
index 788c092eb32..31985b0c988 100644
--- a/apps/user_ldap/l10n/pt_PT.js
+++ b/apps/user_ldap/l10n/pt_PT.js
@@ -77,7 +77,7 @@ OC.L10N.register(
"Test Loginname" : "Testar nome de login",
"Verify settings" : "Verificar definições",
"1. Server" : "1. Servidor",
- "%s. Server:" : "%s. Servvidor",
+ "%s. Server:" : "%s. Servidor",
"Add a new and blank configuration" : "Adicione uma nova configuração em branco",
"Copy current configuration into new directory binding" : "Copiar a configuração actual para um novo registo de conexão",
"Delete the current configuration" : "Apagar a configuração actual",
diff --git a/apps/user_ldap/l10n/pt_PT.json b/apps/user_ldap/l10n/pt_PT.json
index f75b1d1e5ea..0c85d67bee0 100644
--- a/apps/user_ldap/l10n/pt_PT.json
+++ b/apps/user_ldap/l10n/pt_PT.json
@@ -75,7 +75,7 @@
"Test Loginname" : "Testar nome de login",
"Verify settings" : "Verificar definições",
"1. Server" : "1. Servidor",
- "%s. Server:" : "%s. Servvidor",
+ "%s. Server:" : "%s. Servidor",
"Add a new and blank configuration" : "Adicione uma nova configuração em branco",
"Copy current configuration into new directory binding" : "Copiar a configuração actual para um novo registo de conexão",
"Delete the current configuration" : "Apagar a configuração actual",
diff --git a/apps/user_ldap/l10n/sl.js b/apps/user_ldap/l10n/sl.js
index 0187bd4345b..77a8f64a7ef 100644
--- a/apps/user_ldap/l10n/sl.js
+++ b/apps/user_ldap/l10n/sl.js
@@ -48,12 +48,14 @@ OC.L10N.register(
"LDAP / AD Email Address:" : "Elektronski naslov LDAP / AD:",
"Other Attributes:" : "Drugi atributi:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Določi filter, ki bo uveljavljen ob poskusu prijave. %%uid zamenja uporabniško ime pri prijavi, na primer: \"uid=%%uid\"",
+ "Test Loginname" : "Preizkusi prijavno ime",
"Verify settings" : "Preveri nastavitve",
"1. Server" : "1. strežnik",
"%s. Server:" : "%s. strežnik:",
"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",
+ "Detect Port" : "Zaznaj vrata",
"User DN" : "Uporabnikovo enolično ime",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "Enolično ime uporabnikovega odjemalca, s katerim naj se opravi vezava, npr. uid=agent,dc=example,dc=com. Za brezimni dostop sta polji prikaznega imena in gesla prazni.",
"Password" : "Geslo",
diff --git a/apps/user_ldap/l10n/sl.json b/apps/user_ldap/l10n/sl.json
index 11e6d443c49..c3bec20d8c1 100644
--- a/apps/user_ldap/l10n/sl.json
+++ b/apps/user_ldap/l10n/sl.json
@@ -46,12 +46,14 @@
"LDAP / AD Email Address:" : "Elektronski naslov LDAP / AD:",
"Other Attributes:" : "Drugi atributi:",
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Določi filter, ki bo uveljavljen ob poskusu prijave. %%uid zamenja uporabniško ime pri prijavi, na primer: \"uid=%%uid\"",
+ "Test Loginname" : "Preizkusi prijavno ime",
"Verify settings" : "Preveri nastavitve",
"1. Server" : "1. strežnik",
"%s. Server:" : "%s. strežnik:",
"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",
+ "Detect Port" : "Zaznaj vrata",
"User DN" : "Uporabnikovo enolično ime",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "Enolično ime uporabnikovega odjemalca, s katerim naj se opravi vezava, npr. uid=agent,dc=example,dc=com. Za brezimni dostop sta polji prikaznega imena in gesla prazni.",
"Password" : "Geslo",
diff --git a/apps/user_ldap/l10n/zh_CN.js b/apps/user_ldap/l10n/zh_CN.js
index a6a8f7edff9..88b79f691d0 100644
--- a/apps/user_ldap/l10n/zh_CN.js
+++ b/apps/user_ldap/l10n/zh_CN.js
@@ -17,10 +17,12 @@ OC.L10N.register(
"Configuration incomplete" : "配置未完成",
"Configuration OK" : "配置完成",
"Select groups" : "选择分组",
+ "Select object classes" : "选择对象类型",
"Please check the credentials, they seem to be wrong." : "凭据错误,请检查凭据。",
"Please specify the port, it could not be auto-detected." : "无法自动识别,请指定一个端口。",
"Base DN could not be auto-detected, please revise credentials, host and port." : "无法自动识别DN,请检查凭证,主机和端口。",
"Could not detect Base DN, please enter it manually." : "无法探测Base DN,请手动输入。",
+ "{nthServer}. Server" : "{nthServer}. 服务器",
"No object found in the given Base DN. Please revise." : "基础DN中未能找到指定对象,请检查。",
"More than 1,000 directory entries available." : "超过1000个可用目录条目。",
" entries available within the provided Base DN" : "基础DN中的可用条目",
@@ -44,6 +46,8 @@ OC.L10N.register(
"The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "该%uid占位符缺失。它将在LDAP/ AD登录名查询时进行替换。",
"Please provide a login name to test against" : "请提供登录名以测试",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "该组框被禁用,因为LDAP/ AD服务器不支持memberOf。",
+ "_%s group found_::_%s groups found_" : ["发现 %s 个群组"],
+ "_%s user found_::_%s users found_" : ["发现 %s 个用户"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "无法检测到用户的显示名称属性。请在高级LDAP设置中指定。",
"Could not find the desired feature" : "无法找到所需的功能",
"Invalid Host" : "无效的主机",
diff --git a/apps/user_ldap/l10n/zh_CN.json b/apps/user_ldap/l10n/zh_CN.json
index 1ffac3742d6..7a6b2d5dd42 100644
--- a/apps/user_ldap/l10n/zh_CN.json
+++ b/apps/user_ldap/l10n/zh_CN.json
@@ -15,10 +15,12 @@
"Configuration incomplete" : "配置未完成",
"Configuration OK" : "配置完成",
"Select groups" : "选择分组",
+ "Select object classes" : "选择对象类型",
"Please check the credentials, they seem to be wrong." : "凭据错误,请检查凭据。",
"Please specify the port, it could not be auto-detected." : "无法自动识别,请指定一个端口。",
"Base DN could not be auto-detected, please revise credentials, host and port." : "无法自动识别DN,请检查凭证,主机和端口。",
"Could not detect Base DN, please enter it manually." : "无法探测Base DN,请手动输入。",
+ "{nthServer}. Server" : "{nthServer}. 服务器",
"No object found in the given Base DN. Please revise." : "基础DN中未能找到指定对象,请检查。",
"More than 1,000 directory entries available." : "超过1000个可用目录条目。",
" entries available within the provided Base DN" : "基础DN中的可用条目",
@@ -42,6 +44,8 @@
"The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "该%uid占位符缺失。它将在LDAP/ AD登录名查询时进行替换。",
"Please provide a login name to test against" : "请提供登录名以测试",
"The group box was disabled, because the LDAP / AD server does not support memberOf." : "该组框被禁用,因为LDAP/ AD服务器不支持memberOf。",
+ "_%s group found_::_%s groups found_" : ["发现 %s 个群组"],
+ "_%s user found_::_%s users found_" : ["发现 %s 个用户"],
"Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "无法检测到用户的显示名称属性。请在高级LDAP设置中指定。",
"Could not find the desired feature" : "无法找到所需的功能",
"Invalid Host" : "无效的主机",
diff --git a/apps/user_ldap/lib/access.php b/apps/user_ldap/lib/access.php
index 8409e6ce3d8..135eca1e625 100644
--- a/apps/user_ldap/lib/access.php
+++ b/apps/user_ldap/lib/access.php
@@ -1025,14 +1025,6 @@ class Access extends LDAPUtility implements user\IUserTools {
return array();
}
- // Do the server-side sorting
- foreach(array_reverse($attr) as $sortAttr){
- foreach($sr as $searchResource) {
- $this->ldap->sort($cr, $searchResource, $sortAttr);
- }
- }
-
-
foreach($sr as $res) {
$findings = array_merge($findings, $this->ldap->getEntries($cr , $res ));
}
diff --git a/apps/user_ldap/lib/ildapwrapper.php b/apps/user_ldap/lib/ildapwrapper.php
index 44ec08f59fd..d607a3fdb66 100644
--- a/apps/user_ldap/lib/ildapwrapper.php
+++ b/apps/user_ldap/lib/ildapwrapper.php
@@ -179,14 +179,6 @@ interface ILDAPWrapper {
public function startTls($link);
/**
- * Sort the result of a LDAP search
- * @param resource $link LDAP link resource
- * @param resource $result LDAP result resource
- * @param string $sortFilter attribute to use a key in sort
- */
- public function sort($link, $result, $sortFilter);
-
- /**
* Unbind from LDAP directory
* @param resource $link LDAP link resource
* @return bool true on success, false otherwise
diff --git a/apps/user_ldap/lib/ldap.php b/apps/user_ldap/lib/ldap.php
index ad8c338b587..383d71ca6eb 100644
--- a/apps/user_ldap/lib/ldap.php
+++ b/apps/user_ldap/lib/ldap.php
@@ -202,16 +202,6 @@ class LDAP implements ILDAPWrapper {
/**
* @param LDAP $link
- * @param LDAP $result
- * @param string $sortFilter
- * @return mixed
- */
- public function sort($link, $result, $sortFilter) {
- return $this->invokeLDAPMethod('sort', $link, $result, $sortFilter);
- }
-
- /**
- * @param LDAP $link
* @return mixed|true
*/
public function startTls($link) {
@@ -283,10 +273,7 @@ class LDAP implements ILDAPWrapper {
$errorCode = ldap_errno($this->curArgs[0]);
$errorMsg = ldap_error($this->curArgs[0]);
if($errorCode !== 0) {
- if($this->curFunc === 'ldap_sort' && $errorCode === -4) {
- //You can safely ignore that decoding error.
- //… says https://bugs.php.net/bug.php?id=18023
- } else if($this->curFunc === 'ldap_get_entries'
+ if($this->curFunc === 'ldap_get_entries'
&& $errorCode === -4) {
} else if ($errorCode === 32) {
//for now
diff --git a/build/integration/composer.json b/build/integration/composer.json
index a9516391a41..9e5335c4b24 100644
--- a/build/integration/composer.json
+++ b/build/integration/composer.json
@@ -4,6 +4,6 @@
"behat/behat": "^3.0",
"guzzlehttp/guzzle": "~5.0",
"jarnaiz/behat-junit-formatter": "^1.3",
- "sabre/dav": "3.0.x-dev"
+ "sabre/dav": "3.0.x-dev"
}
}
diff --git a/build/integration/features/bootstrap/BasicStructure.php b/build/integration/features/bootstrap/BasicStructure.php
index 0084597836f..d2aed82055a 100644
--- a/build/integration/features/bootstrap/BasicStructure.php
+++ b/build/integration/features/bootstrap/BasicStructure.php
@@ -1,7 +1,5 @@
<?php
-use Behat\Behat\Context\Context;
-use Behat\Behat\Context\SnippetAcceptingContext;
use GuzzleHttp\Client;
use GuzzleHttp\Message\ResponseInterface;
@@ -17,6 +15,9 @@ trait BasicStructure {
/** @var string */
private $baseUrl = '';
+ /** @var int */
+ private $apiVersion = 1;
+
/** @var ResponseInterface */
private $response = null;
@@ -52,29 +53,43 @@ trait BasicStructure {
}
/**
+ * @Given /^using api version "([^"]*)"$/
+ * @param string $version
+ */
+ public function usingApiVersion($version) {
+ $this->apiVersion = $version;
+ }
+
+ /**
* @Given /^As an "([^"]*)"$/
+ * @param string $user
*/
public function asAn($user) {
$this->currentUser = $user;
}
/**
- * @Given /^Using server "([^"]*)"$/
+ * @Given /^Using server "(LOCAL|REMOTE)"$/
+ * @param string $server
+ * @return string Previous used server
*/
public function usingServer($server) {
+ $previousServer = $this->currentServer;
if ($server === 'LOCAL'){
$this->baseUrl = $this->localBaseUrl;
$this->currentServer = 'LOCAL';
- } elseif ($server === 'REMOTE'){
+ return $previousServer;
+ } else {
$this->baseUrl = $this->remoteBaseUrl;
$this->currentServer = 'REMOTE';
- } else{
- PHPUnit_Framework_Assert::fail("Server can only be LOCAL or REMOTE");
+ return $previousServer;
}
}
/**
* @When /^sending "([^"]*)" to "([^"]*)"$/
+ * @param string $verb
+ * @param string $url
*/
public function sendingTo($verb, $url) {
$this->sendingToWith($verb, $url, null);
@@ -92,6 +107,8 @@ trait BasicStructure {
/**
* This function is needed to use a vertical fashion in the gherkin tables.
+ * @param array $arrayOfArrays
+ * @return array
*/
public function simplifyArray($arrayOfArrays){
$a = array_map(function($subArray) { return $subArray[0]; }, $arrayOfArrays);
@@ -100,6 +117,9 @@ trait BasicStructure {
/**
* @When /^sending "([^"]*)" to "([^"]*)" with$/
+ * @param string $verb
+ * @param string $url
+ * @param \Behat\Gherkin\Node\TableNode $body
*/
public function sendingToWith($verb, $url, $body) {
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php" . $url;
@@ -130,6 +150,7 @@ trait BasicStructure {
/**
* @Then /^the OCS status code should be "([^"]*)"$/
+ * @param int $statusCode
*/
public function theOCSStatusCodeShouldBe($statusCode) {
PHPUnit_Framework_Assert::assertEquals($statusCode, $this->getOCSResponse($this->response));
@@ -137,6 +158,7 @@ trait BasicStructure {
/**
* @Then /^the HTTP status code should be "([^"]*)"$/
+ * @param int $statusCode
*/
public function theHTTPStatusCodeShouldBe($statusCode) {
PHPUnit_Framework_Assert::assertEquals($statusCode, $this->response->getStatusCode());
@@ -151,6 +173,7 @@ trait BasicStructure {
/**
* @Given Logging in using web as :user
+ * @param string $user
*/
public function loggingInUsingWebAs($user) {
$loginUrl = substr($this->baseUrl, 0, -5);
@@ -183,6 +206,8 @@ trait BasicStructure {
/**
* @When Sending a :method to :url with requesttoken
+ * @param string $method
+ * @param string $url
*/
public function sendingAToWithRequesttoken($method, $url) {
$baseUrl = substr($this->baseUrl, 0, -5);
@@ -205,6 +230,8 @@ trait BasicStructure {
/**
* @When Sending a :method to :url without requesttoken
+ * @param string $method
+ * @param string $url
*/
public function sendingAToWithoutRequesttoken($method, $url) {
$baseUrl = substr($this->baseUrl, 0, -5);
@@ -248,7 +275,6 @@ trait BasicStructure {
mkdir("../../core/skeleton/PARENT/CHILD", 0777, true);
}
file_put_contents("../../core/skeleton/PARENT/CHILD/" . "child.txt", "ownCloud test text file\n");
-
}
/**
@@ -269,8 +295,6 @@ trait BasicStructure {
if (is_dir("../../core/skeleton/PARENT")) {
rmdir("../../core/skeleton/PARENT");
}
-
-
}
}
diff --git a/build/integration/features/bootstrap/CalDavContext.php b/build/integration/features/bootstrap/CalDavContext.php
index 88711f3aa73..30c50630b3e 100644
--- a/build/integration/features/bootstrap/CalDavContext.php
+++ b/build/integration/features/bootstrap/CalDavContext.php
@@ -71,6 +71,8 @@ class CalDavContext implements \Behat\Behat\Context\Context {
/**
* @When :user requests calendar :calendar
+ * @param string $user
+ * @param string $calendar
*/
public function requestsCalendar($user, $calendar) {
$davUrl = $this->baseUrl . '/remote.php/dav/calendars/'.$calendar;
@@ -93,6 +95,8 @@ class CalDavContext implements \Behat\Behat\Context\Context {
/**
* @Then The CalDAV HTTP status code should be :code
+ * @param int $code
+ * @throws \Exception
*/
public function theCaldavHttpStatusCodeShouldBe($code) {
if((int)$code !== $this->response->getStatusCode()) {
@@ -115,6 +119,8 @@ class CalDavContext implements \Behat\Behat\Context\Context {
/**
* @Then The exception is :message
+ * @param string $message
+ * @throws \Exception
*/
public function theExceptionIs($message) {
$result = $this->responseXml['value'][0]['value'];
@@ -132,6 +138,8 @@ class CalDavContext implements \Behat\Behat\Context\Context {
/**
* @Then The error message is :message
+ * @param string $message
+ * @throws \Exception
*/
public function theErrorMessageIs($message) {
$result = $this->responseXml['value'][1]['value'];
@@ -149,6 +157,8 @@ class CalDavContext implements \Behat\Behat\Context\Context {
/**
* @Given :user creates a calendar named :name
+ * @param string $user
+ * @param string $name
*/
public function createsACalendarNamed($user, $name) {
$davUrl = $this->baseUrl . '/remote.php/dav/calendars/'.$user.'/'.$name;
diff --git a/build/integration/features/bootstrap/CapabilitiesContext.php b/build/integration/features/bootstrap/CapabilitiesContext.php
index 83d5f5fd2f3..0eb6353a89a 100644
--- a/build/integration/features/bootstrap/CapabilitiesContext.php
+++ b/build/integration/features/bootstrap/CapabilitiesContext.php
@@ -15,8 +15,6 @@ require __DIR__ . '/../../vendor/autoload.php';
class CapabilitiesContext implements Context, SnippetAcceptingContext {
use BasicStructure;
- use Provisioning;
- use Sharing;
/**
* @Given /^parameter "([^"]*)" of app "([^"]*)" is set to "([^"]*)"$/
diff --git a/build/integration/features/bootstrap/CardDavContext.php b/build/integration/features/bootstrap/CardDavContext.php
index 251d76d0833..d317ba5193f 100644
--- a/build/integration/features/bootstrap/CardDavContext.php
+++ b/build/integration/features/bootstrap/CardDavContext.php
@@ -73,6 +73,10 @@ class CardDavContext implements \Behat\Behat\Context\Context {
/**
* @When :user requests addressbook :addressBook with statuscode :statusCode
+ * @param string $user
+ * @param string $addressBook
+ * @param int $statusCode
+ * @throws \Exception
*/
public function requestsAddressbookWithStatuscode($user, $addressBook, $statusCode) {
$davUrl = $this->baseUrl . '/remote.php/dav/addressbooks/users/'.$addressBook;
@@ -112,6 +116,10 @@ class CardDavContext implements \Behat\Behat\Context\Context {
/**
* @Given :user creates an addressbook named :addressBook with statuscode :statusCode
+ * @param string $user
+ * @param string $addressBook
+ * @param int $statusCode
+ * @throws \Exception
*/
public function createsAnAddressbookNamedWithStatuscode($user, $addressBook, $statusCode) {
$davUrl = $this->baseUrl . '/remote.php/dav/addressbooks/users/'.$user.'/'.$addressBook;
@@ -121,9 +129,7 @@ class CardDavContext implements \Behat\Behat\Context\Context {
'MKCOL',
$davUrl,
[
- 'body' => '<d:mkcol xmlns:c="urn:ietf:params:xml:ns:caldav"
- xmlns:card="urn:ietf:params:xml:ns:carddav"
- xmlns:cs="http://calendarserver.org/ns/"
+ 'body' => '<d:mkcol xmlns:card="urn:ietf:params:xml:ns:carddav"
xmlns:d="DAV:">
<d:set>
<d:prop>
@@ -158,6 +164,8 @@ class CardDavContext implements \Behat\Behat\Context\Context {
/**
* @When The CardDAV exception is :message
+ * @param string $message
+ * @throws \Exception
*/
public function theCarddavExceptionIs($message) {
$result = $this->responseXml['value'][0]['value'];
@@ -175,6 +183,8 @@ class CardDavContext implements \Behat\Behat\Context\Context {
/**
* @When The CardDAV error message is :arg1
+ * @param string $message
+ * @throws \Exception
*/
public function theCarddavErrorMessageIs($message) {
$result = $this->responseXml['value'][1]['value'];
diff --git a/build/integration/features/bootstrap/ChecksumsContext.php b/build/integration/features/bootstrap/ChecksumsContext.php
index a5d20ba965d..af8f9e5590d 100644
--- a/build/integration/features/bootstrap/ChecksumsContext.php
+++ b/build/integration/features/bootstrap/ChecksumsContext.php
@@ -2,7 +2,6 @@
require __DIR__ . '/../../vendor/autoload.php';
-use Behat\Gherkin\Node\TableNode;
use GuzzleHttp\Client;
use GuzzleHttp\Message\ResponseInterface;
@@ -50,6 +49,10 @@ class ChecksumsContext implements \Behat\Behat\Context\Context {
/**
* @When user :user uploads file :source to :destination with checksum :checksum
+ * @param string $user
+ * @param string $source
+ * @param string $destination
+ * @param string $checksum
*/
public function userUploadsFileToWithChecksum($user, $source, $destination, $checksum)
{
@@ -76,6 +79,8 @@ class ChecksumsContext implements \Behat\Behat\Context\Context {
/**
* @Then The webdav response should have a status code :statusCode
+ * @param int $statusCode
+ * @throws \Exception
*/
public function theWebdavResponseShouldHaveAStatusCode($statusCode) {
if((int)$statusCode !== $this->response->getStatusCode()) {
@@ -85,6 +90,8 @@ class ChecksumsContext implements \Behat\Behat\Context\Context {
/**
* @When user :user request the checksum of :path via propfind
+ * @param string $user
+ * @param string $path
*/
public function userRequestTheChecksumOfViaPropfind($user, $path)
{
@@ -109,6 +116,8 @@ class ChecksumsContext implements \Behat\Behat\Context\Context {
/**
* @Then The webdav checksum should match :checksum
+ * @param string $checksum
+ * @throws \Exception
*/
public function theWebdavChecksumShouldMatch($checksum)
{
@@ -128,6 +137,8 @@ class ChecksumsContext implements \Behat\Behat\Context\Context {
/**
* @When user :user downloads the file :path
+ * @param string $user
+ * @param string $path
*/
public function userDownloadsTheFile($user, $path)
{
@@ -144,6 +155,8 @@ class ChecksumsContext implements \Behat\Behat\Context\Context {
/**
* @Then The header checksum should match :checksum
+ * @param string $checksum
+ * @throws \Exception
*/
public function theHeaderChecksumShouldMatch($checksum)
{
@@ -154,6 +167,9 @@ class ChecksumsContext implements \Behat\Behat\Context\Context {
/**
* @Given User :user copied file :source to :destination
+ * @param string $user
+ * @param string $source
+ * @param string $destination
*/
public function userCopiedFileTo($user, $source, $destination)
{
@@ -204,6 +220,12 @@ class ChecksumsContext implements \Behat\Behat\Context\Context {
/**
* @Given user :user uploads chunk file :num of :total with :data to :destination with checksum :checksum
+ * @param string $user
+ * @param int $num
+ * @param int $total
+ * @param string $data
+ * @param string $destination
+ * @param string $checksum
*/
public function userUploadsChunkFileOfWithToWithChecksum($user, $num, $total, $data, $destination, $checksum)
{
diff --git a/build/integration/features/bootstrap/CommentsContext.php b/build/integration/features/bootstrap/CommentsContext.php
index d720bb8dcd6..e74e9580dcc 100644
--- a/build/integration/features/bootstrap/CommentsContext.php
+++ b/build/integration/features/bootstrap/CommentsContext.php
@@ -45,7 +45,7 @@ class CommentsContext implements \Behat\Behat\Context\Context {
}
/** @AfterScenario */
- public function teardownScenario(\Behat\Behat\Hook\Scope\AfterScenarioScope $scope) {
+ public function teardownScenario() {
$client = new \GuzzleHttp\Client();
try {
$client->delete(
@@ -66,6 +66,7 @@ class CommentsContext implements \Behat\Behat\Context\Context {
}
/**
+ * @param string $path
* @return int
*/
private function getFileIdForPath($path) {
@@ -90,6 +91,11 @@ class CommentsContext implements \Behat\Behat\Context\Context {
/**
* @When :user posts a comment with content :content on the file named :fileName it should return :statusCode
+ * @param string $user
+ * @param string $content
+ * @param string $fileName
+ * @param int $statusCode
+ * @throws \Exception
*/
public function postsACommentWithContentOnTheFileNamedItShouldReturn($user, $content, $fileName, $statusCode) {
$fileId = $this->getFileIdForPath($fileName);
@@ -123,6 +129,10 @@ class CommentsContext implements \Behat\Behat\Context\Context {
/**
* @Then As :user load all the comments of the file named :fileName it should return :statusCode
+ * @param string $user
+ * @param string $fileName
+ * @param int $statusCode
+ * @throws \Exception
*/
public function asLoadloadAllTheCommentsOfTheFileNamedItShouldReturn($user, $fileName, $statusCode) {
$fileId = $this->getFileIdForPath($fileName);
@@ -135,7 +145,7 @@ class CommentsContext implements \Behat\Behat\Context\Context {
$url,
[
'body' => '<?xml version="1.0" encoding="utf-8" ?>
-<oc:filter-comments xmlns:D="DAV:" xmlns:oc="http://owncloud.org/ns">
+<oc:filter-comments xmlns:oc="http://owncloud.org/ns">
<oc:limit>200</oc:limit>
<oc:offset>0</oc:offset>
</oc:filter-comments>
@@ -167,6 +177,11 @@ class CommentsContext implements \Behat\Behat\Context\Context {
/**
* @Given As :user sending :verb to :url with
+ * @param string $user
+ * @param string $verb
+ * @param string $url
+ * @param \Behat\Gherkin\Node\TableNode $body
+ * @throws \Exception
*/
public function asUserSendingToWith($user, $verb, $url, \Behat\Gherkin\Node\TableNode $body) {
$client = new \GuzzleHttp\Client();
@@ -179,6 +194,9 @@ class CommentsContext implements \Behat\Behat\Context\Context {
/**
* @Then As :user delete the created comment it should return :statusCode
+ * @param string $user
+ * @param int $statusCode
+ * @throws \Exception
*/
public function asDeleteTheCreatedCommentItShouldReturn($user, $statusCode) {
$url = $this->baseUrl.'/remote.php/dav/comments/files/'.$this->fileId.'/'.$this->commentId;
@@ -208,6 +226,9 @@ class CommentsContext implements \Behat\Behat\Context\Context {
/**
* @Then the response should contain a property :key with value :value
+ * @param string $key
+ * @param string $value
+ * @throws \Exception
*/
public function theResponseShouldContainAPropertyWithValue($key, $value) {
$keys = $this->response[0]['value'][2]['value'][0]['value'];
@@ -226,6 +247,8 @@ class CommentsContext implements \Behat\Behat\Context\Context {
/**
* @Then the response should contain only :number comments
+ * @param int $number
+ * @throws \Exception
*/
public function theResponseShouldContainOnlyComments($number) {
if(count($this->response) !== (int)$number) {
@@ -235,6 +258,10 @@ class CommentsContext implements \Behat\Behat\Context\Context {
/**
* @Then As :user edit the last created comment and set text to :text it should return :statusCode
+ * @param string $user
+ * @param string $text
+ * @param int $statusCode
+ * @throws \Exception
*/
public function asEditTheLastCreatedCommentAndSetTextToItShouldReturn($user, $text, $statusCode) {
$client = new \GuzzleHttp\Client();
diff --git a/build/integration/features/bootstrap/FeatureContext.php b/build/integration/features/bootstrap/FeatureContext.php
index 78ff4e7833d..21ca8d87295 100644
--- a/build/integration/features/bootstrap/FeatureContext.php
+++ b/build/integration/features/bootstrap/FeatureContext.php
@@ -2,8 +2,6 @@
use Behat\Behat\Context\Context;
use Behat\Behat\Context\SnippetAcceptingContext;
-use GuzzleHttp\Client;
-use GuzzleHttp\Message\ResponseInterface;
require __DIR__ . '/../../vendor/autoload.php';
@@ -12,8 +10,5 @@ require __DIR__ . '/../../vendor/autoload.php';
* Features context.
*/
class FeatureContext implements Context, SnippetAcceptingContext {
- use BasicStructure;
- use Provisioning;
- use Sharing;
use WebDav;
}
diff --git a/build/integration/features/bootstrap/FederationContext.php b/build/integration/features/bootstrap/FederationContext.php
index 279b5206dee..2809c6974fa 100644
--- a/build/integration/features/bootstrap/FederationContext.php
+++ b/build/integration/features/bootstrap/FederationContext.php
@@ -12,16 +12,43 @@ require __DIR__ . '/../../vendor/autoload.php';
*/
class FederationContext implements Context, SnippetAcceptingContext {
- use BasicStructure;
- use Provisioning;
use Sharing;
/**
- * @When /^User "([^"]*)" from server "([^"]*)" shares "([^"]*)" with user "([^"]*)" from server "([^"]*)"$/
+ * @Given /^User "([^"]*)" from server "(LOCAL|REMOTE)" shares "([^"]*)" with user "([^"]*)" from server "(LOCAL|REMOTE)"$/
+ *
+ * @param string $sharerUser
+ * @param string $sharerServer "LOCAL" or "REMOTE"
+ * @param string $sharerPath
+ * @param string $shareeUser
+ * @param string $shareeServer "LOCAL" or "REMOTE"
*/
- public function federateSharing($userLocal, $serverLocal, $pathLocal, $userRemote, $serverRemote){
- $shareWith = "$userRemote@" . substr($this->remoteBaseUrl, 0, -4);
- $this->createShare($userLocal, $pathLocal, 6, $shareWith, null, null, null);
+ public function federateSharing($sharerUser, $sharerServer, $sharerPath, $shareeUser, $shareeServer){
+ if ($shareeServer == "REMOTE"){
+ $shareWith = "$shareeUser@" . substr($this->remoteBaseUrl, 0, -4);
+ } else {
+ $shareWith = "$shareeUser@" . substr($this->localBaseUrl, 0, -4);
+ }
+ $previous = $this->usingServer($sharerServer);
+ $this->createShare($sharerUser, $sharerPath, 6, $shareWith, null, null, null);
+ $this->usingServer($previous);
}
+ /**
+ * @When /^User "([^"]*)" from server "(LOCAL|REMOTE)" accepts last pending share$/
+ * @param string $user
+ * @param string $server
+ */
+ public function acceptLastPendingShare($user, $server){
+ $previous = $this->usingServer($server);
+ $this->asAn($user);
+ $this->sendingToWith('GET', "/apps/files_sharing/api/v1/remote_shares/pending", null);
+ $this->theHTTPStatusCodeShouldBe('200');
+ $this->theOCSStatusCodeShouldBe('100');
+ $share_id = $this->response->xml()->data[0]->element[0]->id;
+ $this->sendingToWith('POST', "/apps/files_sharing/api/v1/remote_shares/pending/{$share_id}", null);
+ $this->theHTTPStatusCodeShouldBe('200');
+ $this->theOCSStatusCodeShouldBe('100');
+ $this->usingServer($previous);
+ }
}
diff --git a/build/integration/features/bootstrap/Provisioning.php b/build/integration/features/bootstrap/Provisioning.php
index 6d710b2016f..bf84058c05e 100644
--- a/build/integration/features/bootstrap/Provisioning.php
+++ b/build/integration/features/bootstrap/Provisioning.php
@@ -1,16 +1,12 @@
<?php
-use Behat\Behat\Context\Context;
-use Behat\Behat\Context\SnippetAcceptingContext;
use GuzzleHttp\Client;
use GuzzleHttp\Message\ResponseInterface;
require __DIR__ . '/../../vendor/autoload.php';
trait Provisioning {
-
- /** @var int */
- private $apiVersion = 1;
+ use BasicStructure;
/** @var array */
private $createdUsers = [];
@@ -25,14 +21,8 @@ trait Provisioning {
private $createdGroups = [];
/**
- * @Given /^using api version "([^"]*)"$/
- */
- public function usingApiVersion($version) {
- $this->apiVersion = $version;
- }
-
- /**
* @Given /^user "([^"]*)" exists$/
+ * @param string $user
*/
public function assureUserExists($user) {
try {
@@ -50,6 +40,7 @@ trait Provisioning {
/**
* @Given /^user "([^"]*)" does not exist$/
+ * @param string $user
*/
public function userDoesNotExist($user) {
try {
@@ -142,6 +133,8 @@ trait Provisioning {
/**
* @Then /^check that user "([^"]*)" belongs to group "([^"]*)"$/
+ * @param string $user
+ * @param string $group
*/
public function checkThatUserBelongsToGroup($user, $group) {
$fullUrl = $this->baseUrl . "v2.php/cloud/users/$user/groups";
@@ -167,7 +160,6 @@ trait Provisioning {
}
$this->response = $client->get($fullUrl, $options);
- $groups = array($group);
$respondedArray = $this->getArrayOfGroupsResponded($this->response);
if (array_key_exists($group, $respondedArray)) {
@@ -179,6 +171,8 @@ trait Provisioning {
/**
* @Given /^user "([^"]*)" belongs to group "([^"]*)"$/
+ * @param string $user
+ * @param string $group
*/
public function assureUserBelongsToGroup($user, $group){
if (!$this->userBelongsToGroup($user, $group)){
@@ -193,6 +187,8 @@ trait Provisioning {
/**
* @Given /^user "([^"]*)" does not belong to group "([^"]*)"$/
+ * @param string $user
+ * @param string $group
*/
public function userDoesNotBelongToGroup($user, $group) {
$fullUrl = $this->baseUrl . "v2.php/cloud/users/$user/groups";
@@ -209,8 +205,9 @@ trait Provisioning {
PHPUnit_Framework_Assert::assertEquals(200, $this->response->getStatusCode());
}
- /**
+ /**
* @When /^creating the group "([^"]*)"$/
+ * @param string $group
*/
public function creatingTheGroup($group) {
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/cloud/groups";
@@ -234,6 +231,7 @@ trait Provisioning {
/**
* @When /^Deleting the user "([^"]*)"$/
+ * @param string $user
*/
public function deletingTheUser($user) {
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/cloud/users/$user";
@@ -248,6 +246,7 @@ trait Provisioning {
/**
* @When /^Deleting the group "([^"]*)"$/
+ * @param string $group
*/
public function deletingTheGroup($group) {
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/cloud/groups/$group";
@@ -262,6 +261,8 @@ trait Provisioning {
/**
* @Given /^Add user "([^"]*)" to the group "([^"]*)"$/
+ * @param string $user
+ * @param string $group
*/
public function addUserToGroup($user, $group) {
$this->userExists($user);
@@ -272,6 +273,8 @@ trait Provisioning {
/**
* @When /^User "([^"]*)" is added to the group "([^"]*)"$/
+ * @param string $user
+ * @param string $group
*/
public function addingUserToGroup($user, $group) {
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/cloud/users/$user/groups";
@@ -300,6 +303,7 @@ trait Provisioning {
/**
* @Given /^group "([^"]*)" exists$/
+ * @param string $group
*/
public function assureGroupExists($group) {
try {
@@ -316,6 +320,7 @@ trait Provisioning {
/**
* @Given /^group "([^"]*)" does not exist$/
+ * @param string $group
*/
public function groupDoesNotExist($group) {
try {
@@ -339,6 +344,8 @@ trait Provisioning {
/**
* @Given /^user "([^"]*)" is subadmin of group "([^"]*)"$/
+ * @param string $user
+ * @param string $group
*/
public function userIsSubadminOfGroup($user, $group) {
$fullUrl = $this->baseUrl . "v2.php/cloud/groups/$group/subadmins";
@@ -357,6 +364,8 @@ trait Provisioning {
/**
* @Given /^user "([^"]*)" is not a subadmin of group "([^"]*)"$/
+ * @param string $user
+ * @param string $group
*/
public function userIsNotSubadminOfGroup($user, $group) {
$fullUrl = $this->baseUrl . "v2.php/cloud/groups/$group/subadmins";
@@ -484,6 +493,7 @@ trait Provisioning {
/**
* @Given /^app "([^"]*)" is disabled$/
+ * @param string $app
*/
public function appIsDisabled($app) {
$fullUrl = $this->baseUrl . "v2.php/cloud/apps?filter=disabled";
@@ -501,6 +511,7 @@ trait Provisioning {
/**
* @Given /^app "([^"]*)" is enabled$/
+ * @param string $app
*/
public function appIsEnabled($app) {
$fullUrl = $this->baseUrl . "v2.php/cloud/apps?filter=enabled";
@@ -518,6 +529,8 @@ trait Provisioning {
/**
* @Given user :user has a quota of :quota
+ * @param string $user
+ * @param string $quota
*/
public function userHasAQuotaOf($user, $quota)
{
@@ -532,6 +545,7 @@ trait Provisioning {
/**
* @Given user :user has unlimited quota
+ * @param string $user
*/
public function userHasUnlimitedQuota($user)
{
diff --git a/build/integration/features/bootstrap/Sharing.php b/build/integration/features/bootstrap/Sharing.php
index da2e9ca1094..f516b97146d 100644
--- a/build/integration/features/bootstrap/Sharing.php
+++ b/build/integration/features/bootstrap/Sharing.php
@@ -1,7 +1,5 @@
<?php
-use Behat\Behat\Context\Context;
-use Behat\Behat\Context\SnippetAcceptingContext;
use GuzzleHttp\Client;
use GuzzleHttp\Message\ResponseInterface;
@@ -10,6 +8,7 @@ require __DIR__ . '/../../vendor/autoload.php';
trait Sharing{
+ use Provisioning;
/** @var int */
private $sharingApiVersion = 1;
@@ -22,10 +21,11 @@ trait Sharing{
/**
* @Given /^as "([^"]*)" creating a share with$/
- * @param \Behat\Gherkin\Node\TableNode|null $formData
+ * @param string $user
+ * @param \Behat\Gherkin\Node\TableNode|null $body
*/
public function asCreatingAShareWith($user, $body) {
- $fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v1/shares";
+ $fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v{$this->sharingApiVersion}/shares";
$client = new Client();
$options = [];
if ($user === 'admin') {
@@ -54,10 +54,10 @@ trait Sharing{
/**
* @When /^creating a share with$/
- * @param \Behat\Gherkin\Node\TableNode|null $formData
+ * @param \Behat\Gherkin\Node\TableNode|null $body
*/
public function creatingShare($body) {
- return $this->asCreatingAShareWith($this->currentUser, $body);
+ $this->asCreatingAShareWith($this->currentUser, $body);
}
/**
@@ -112,7 +112,7 @@ trait Sharing{
* @When /^Adding expiration date to last share$/
*/
public function addingExpirationDate() {
- $share_id = $this->lastShareData->data[0]->id;
+ $share_id = (string) $this->lastShareData->data[0]->id;
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v{$this->sharingApiVersion}/shares/$share_id";
$client = new Client();
$options = [];
@@ -132,7 +132,7 @@ trait Sharing{
* @param \Behat\Gherkin\Node\TableNode|null $body
*/
public function updatingLastShare($body) {
- $share_id = $this->lastShareData->data[0]->id;
+ $share_id = (string) $this->lastShareData->data[0]->id;
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v{$this->sharingApiVersion}/shares/$share_id";
$client = new Client();
$options = [];
@@ -225,6 +225,9 @@ trait Sharing{
elseif ((string)$element->$field == $contentExpected){
return True;
}
+ else{
+ print($element->$field);
+ }
}
return False;
@@ -247,6 +250,8 @@ trait Sharing{
/**
* @Then /^File "([^"]*)" should be included in the response$/
+ *
+ * @param string $filename
*/
public function checkSharedFileInResponse($filename){
PHPUnit_Framework_Assert::assertEquals(True, $this->isFieldInResponse('file_target', "/$filename"));
@@ -254,6 +259,8 @@ trait Sharing{
/**
* @Then /^File "([^"]*)" should not be included in the response$/
+ *
+ * @param string $filename
*/
public function checkSharedFileNotInResponse($filename){
PHPUnit_Framework_Assert::assertEquals(False, $this->isFieldInResponse('file_target', "/$filename"));
@@ -261,6 +268,8 @@ trait Sharing{
/**
* @Then /^User "([^"]*)" should be included in the response$/
+ *
+ * @param string $user
*/
public function checkSharedUserInResponse($user){
PHPUnit_Framework_Assert::assertEquals(True, $this->isFieldInResponse('share_with', "$user"));
@@ -268,6 +277,8 @@ trait Sharing{
/**
* @Then /^User "([^"]*)" should not be included in the response$/
+ *
+ * @param string $user
*/
public function checkSharedUserNotInResponse($user){
PHPUnit_Framework_Assert::assertEquals(False, $this->isFieldInResponse('share_with', "$user"));
@@ -285,6 +296,10 @@ trait Sharing{
/**
* @Given /^file "([^"]*)" of user "([^"]*)" is shared with user "([^"]*)"$/
+ *
+ * @param string $filepath
+ * @param string $user1
+ * @param string $user2
*/
public function assureFileIsShared($filepath, $user1, $user2){
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v{$this->sharingApiVersion}/shares" . "?path=$filepath";
@@ -307,6 +322,10 @@ trait Sharing{
/**
* @Given /^file "([^"]*)" of user "([^"]*)" is shared with group "([^"]*)"$/
+ *
+ * @param string $filepath
+ * @param string $user
+ * @param string $group
*/
public function assureFileIsSharedWithGroup($filepath, $user, $group){
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v{$this->sharingApiVersion}/shares" . "?path=$filepath";
@@ -367,13 +386,21 @@ trait Sharing{
/**
* @Then /^Share fields of last share match with$/
- * @param \Behat\Gherkin\Node\TableNode|null $formData
+ * @param \Behat\Gherkin\Node\TableNode|null $body
*/
public function checkShareFields($body){
if ($body instanceof \Behat\Gherkin\Node\TableNode) {
$fd = $body->getRowsHash();
foreach($fd as $field => $value) {
+ if (substr($field, 0, 10 ) === "share_with"){
+ $value = str_replace("REMOTE", substr($this->remoteBaseUrl, 0, -5), $value);
+ $value = str_replace("LOCAL", substr($this->localBaseUrl, 0, -5), $value);
+ }
+ if (substr($field, 0, 6 ) === "remote"){
+ $value = str_replace("REMOTE", substr($this->remoteBaseUrl, 0, -4), $value);
+ $value = str_replace("LOCAL", substr($this->localBaseUrl, 0, -4), $value);
+ }
if (!$this->isFieldInResponse($field, $value)){
PHPUnit_Framework_Assert::fail("$field" . " doesn't have value " . "$value");
}
@@ -385,7 +412,7 @@ trait Sharing{
* @Then As :user remove all shares from the file named :fileName
*/
public function asRemoveAllSharesFromTheFileNamed($user, $fileName) {
- $url = $this->baseUrl.'v2.php/apps/files_sharing/api/v1/shares?format=json';
+ $url = $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v{$this->sharingApiVersion}/shares?format=json";
$client = new \GuzzleHttp\Client();
$res = $client->get(
$url,
@@ -405,7 +432,7 @@ trait Sharing{
if (stripslashes($data['path']) === $fileName) {
$id = $data['id'];
$client->delete(
- $this->baseUrl.'v2.php/apps/files_sharing/api/v1/shares/'.$id,
+ $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v{$this->sharingApiVersion}/shares/{$id}",
[
'auth' => [
$user,
@@ -439,8 +466,59 @@ trait Sharing{
public function shareIdsShouldMatch()
{
if ($this->savedShareId !== $this->lastShareData['data']['id']) {
- throw new \Excetion('Expected the same link share to be returned');
+ throw new \Exception('Expected the same link share to be returned');
+ }
+ }
+
+ /**
+ * @When /^getting sharees for$/
+ * @param \Behat\Gherkin\Node\TableNode $body
+ */
+ public function whenGettingShareesFor($body) {
+ $url = '/apps/files_sharing/api/v1/sharees';
+ if ($body instanceof \Behat\Gherkin\Node\TableNode) {
+ $parameters = [];
+ foreach ($body->getRowsHash() as $key => $value) {
+ $parameters[] = $key . '=' . $value;
+ }
+ if (!empty($parameters)) {
+ $url .= '?' . implode('&', $parameters);
+ }
+ }
+
+ $this->sendingTo('GET', $url);
+ }
+
+ /**
+ * @Then /^"([^"]*)" sharees returned (are|is empty)$/
+ * @param string $shareeType
+ * @param string $isEmpty
+ * @param \Behat\Gherkin\Node\TableNode|null $shareesList
+ */
+ public function thenListOfSharees($shareeType, $isEmpty, $shareesList = null) {
+ if ($isEmpty !== 'is empty') {
+ $sharees = $shareesList->getRows();
+ $respondedArray = $this->getArrayOfShareesResponded($this->response, $shareeType);
+ PHPUnit_Framework_Assert::assertEquals($sharees, $respondedArray);
+ } else {
+ $respondedArray = $this->getArrayOfShareesResponded($this->response, $shareeType);
+ PHPUnit_Framework_Assert::assertEmpty($respondedArray);
+ }
+ }
+
+ public function getArrayOfShareesResponded(ResponseInterface $response, $shareeType) {
+ $elements = $response->xml()->data;
+ $elements = json_decode(json_encode($elements), 1);
+ if (strpos($shareeType, 'exact ') === 0) {
+ $elements = $elements['exact'];
+ $shareeType = substr($shareeType, 6);
+ }
+
+ $sharees = [];
+ foreach ($elements[$shareeType] as $element) {
+ $sharees[] = [$element['label'], $element['value']['shareType'], $element['value']['shareWith']];
}
+ return $sharees;
}
}
diff --git a/build/integration/features/bootstrap/TagsContext.php b/build/integration/features/bootstrap/TagsContext.php
index 5e1f62ba838..10d0b9ae545 100644
--- a/build/integration/features/bootstrap/TagsContext.php
+++ b/build/integration/features/bootstrap/TagsContext.php
@@ -98,6 +98,10 @@ class TagsContext implements \Behat\Behat\Context\Context {
/**
* @When :user creates a :type tag with name :name
+ * @param string $user
+ * @param string $type
+ * @param string $name
+ * @throws \Exception
*/
public function createsATagWithName($user, $type, $name) {
$userVisible = 'true';
@@ -136,6 +140,8 @@ class TagsContext implements \Behat\Behat\Context\Context {
/**
* @Then The response should have a status code :statusCode
+ * @param int $statusCode
+ * @throws \Exception
*/
public function theResponseShouldHaveAStatusCode($statusCode) {
if((int)$statusCode !== $this->response->getStatusCode()) {
@@ -199,6 +205,9 @@ class TagsContext implements \Behat\Behat\Context\Context {
/**
* @Then The following tags should exist for :user
+ * @param string $user
+ * @param TableNode $table
+ * @throws \Exception
*/
public function theFollowingTagsShouldExistFor($user, TableNode $table) {
$tags = $this->requestTagsForUser($user);
@@ -231,6 +240,9 @@ class TagsContext implements \Behat\Behat\Context\Context {
/**
* @Then :count tags should exist for :user
+ * @param int $count
+ * @param string $user
+ * @throws \Exception
*/
public function tagsShouldExistFor($count, $user) {
if((int)$count !== count($this->requestTagsForUser($user))) {
@@ -256,6 +268,10 @@ class TagsContext implements \Behat\Behat\Context\Context {
/**
* @When :user edits the tag with name :oldNmae and sets its name to :newName
+ * @param string $user
+ * @param string $oldName
+ * @param string $newName
+ * @throws \Exception
*/
public function editsTheTagWithNameAndSetsItsNameTo($user, $oldName, $newName) {
$tagId = $this->findTagIdByName($oldName);
@@ -290,6 +306,8 @@ class TagsContext implements \Behat\Behat\Context\Context {
/**
* @When :user deletes the tag with name :name
+ * @param string $user
+ * @param string $name
*/
public function deletesTheTagWithName($user, $name) {
$tagId = $this->findTagIdByName($name);
@@ -338,6 +356,10 @@ class TagsContext implements \Behat\Behat\Context\Context {
/**
* @When :taggingUser adds the tag :tagName to :fileName shared by :sharingUser
+ * @param string $taggingUser
+ * @param string $tagName
+ * @param string $fileName
+ * @param string $sharingUser
*/
public function addsTheTagToSharedBy($taggingUser, $tagName, $fileName, $sharingUser) {
$fileId = $this->getFileIdForPath($fileName, $sharingUser);
@@ -360,6 +382,10 @@ class TagsContext implements \Behat\Behat\Context\Context {
/**
* @Then :fileName shared by :sharingUser has the following tags
+ * @param string $fileName
+ * @param string $sharingUser
+ * @param TableNode $table
+ * @throws \Exception
*/
public function sharedByHasTheFollowingTags($fileName, $sharingUser, TableNode $table) {
$loadedExpectedTags = $table->getTable();
@@ -406,6 +432,11 @@ class TagsContext implements \Behat\Behat\Context\Context {
/**
* @Then :fileName shared by :sharingUser has the following tags for :user
+ * @param string $fileName
+ * @param string $sharingUser
+ * @param string $user
+ * @param TableNode $table
+ * @throws \Exception
*/
public function sharedByHasTheFollowingTagsFor($fileName, $sharingUser, $user, TableNode $table) {
$loadedExpectedTags = $table->getTable();
@@ -460,6 +491,10 @@ class TagsContext implements \Behat\Behat\Context\Context {
/**
* @When :user removes the tag :tagName from :fileName shared by :shareUser
+ * @param string $user
+ * @param string $tagName
+ * @param string $fileName
+ * @param string $shareUser
*/
public function removesTheTagFromSharedBy($user, $tagName, $fileName, $shareUser) {
$tagId = $this->findTagIdByName($tagName);
diff --git a/build/integration/features/bootstrap/WebDav.php b/build/integration/features/bootstrap/WebDav.php
index 0430768022c..95a05f4ed6f 100644
--- a/build/integration/features/bootstrap/WebDav.php
+++ b/build/integration/features/bootstrap/WebDav.php
@@ -1,7 +1,5 @@
<?php
-use Behat\Behat\Context\Context;
-use Behat\Behat\Context\SnippetAcceptingContext;
use GuzzleHttp\Client as GClient;
use GuzzleHttp\Message\ResponseInterface;
use Sabre\DAV\Client as SClient;
@@ -10,6 +8,8 @@ require __DIR__ . '/../../vendor/autoload.php';
trait WebDav {
+ use Sharing;
+
/** @var string*/
private $davPath = "remote.php/webdav";
/** @var ResponseInterface */
@@ -47,6 +47,9 @@ trait WebDav {
/**
* @Given /^User "([^"]*)" moved file "([^"]*)" to "([^"]*)"$/
+ * @param string $user
+ * @param string $fileSource
+ * @param string $fileDestination
*/
public function userMovedFile($user, $fileSource, $fileDestination){
$fullUrl = substr($this->baseUrl, 0, -4) . $this->davPath;
@@ -57,6 +60,9 @@ trait WebDav {
/**
* @When /^User "([^"]*)" moves file "([^"]*)" to "([^"]*)"$/
+ * @param string $user
+ * @param string $fileSource
+ * @param string $fileDestination
*/
public function userMovesFile($user, $fileSource, $fileDestination){
$fullUrl = substr($this->baseUrl, 0, -4) . $this->davPath;
@@ -66,15 +72,17 @@ trait WebDav {
/**
* @When /^Downloading file "([^"]*)" with range "([^"]*)"$/
+ * @param string $fileSource
+ * @param string $range
*/
public function downloadFileWithRange($fileSource, $range){
- $fullUrl = substr($this->baseUrl, 0, -4) . $this->davPath;
$headers['Range'] = $range;
$this->response = $this->makeDavRequest($this->currentUser, "GET", $fileSource, $headers);
}
/**
* @When /^Downloading last public shared file with range "([^"]*)"$/
+ * @param string $range
*/
public function downloadPublicFileWithRange($range){
$token = $this->lastShareData->data->token;
@@ -93,6 +101,7 @@ trait WebDav {
/**
* @Then /^Downloaded content should be "([^"]*)"$/
+ * @param string $content
*/
public function downloadedContentShouldBe($content){
PHPUnit_Framework_Assert::assertEquals($content, (string)$this->response->getBody());
@@ -100,6 +109,9 @@ trait WebDav {
/**
* @Then /^Downloaded content when downloading file "([^"]*)" with range "([^"]*)" should be "([^"]*)"$/
+ * @param string $fileSource
+ * @param string $range
+ * @param string $content
*/
public function downloadedContentWhenDownloadindShouldBe($fileSource, $range, $content){
$this->downloadFileWithRange($fileSource, $range);
@@ -108,6 +120,7 @@ trait WebDav {
/**
* @When Downloading file :fileName
+ * @param string $fileName
*/
public function downloadingFile($fileName) {
$this->response = $this->makeDavRequest($this->currentUser, 'GET', $fileName, []);
@@ -115,6 +128,8 @@ trait WebDav {
/**
* @Then The following headers should be set
+ * @param \Behat\Gherkin\Node\TableNode $table
+ * @throws \Exception
*/
public function theFollowingHeadersShouldBeSet(\Behat\Gherkin\Node\TableNode $table) {
foreach($table->getTable() as $header) {
@@ -136,6 +151,8 @@ trait WebDav {
/**
* @Then Downloaded content should start with :start
+ * @param int $start
+ * @throws \Exception
*/
public function downloadedContentShouldStartWith($start) {
if(strpos($this->response->getBody()->getContents(), $start) !== 0) {
@@ -151,6 +168,8 @@ trait WebDav {
/**
* @Then /^as "([^"]*)" gets properties of folder "([^"]*)" with$/
+ * @param string $user
+ * @param string $path
* @param \Behat\Gherkin\Node\TableNode|null $propertiesTable
*/
public function asGetsPropertiesOfFolderWith($user, $path, $propertiesTable) {
@@ -165,11 +184,14 @@ trait WebDav {
/**
* @Then the single response should contain a property :key with value :value
+ * @param string $key
+ * @param string $expectedValue
+ * @throws \Exception
*/
public function theSingleResponseShouldContainAPropertyWithValue($key, $expectedValue) {
$keys = $this->response;
if (!isset($keys[$key])) {
- throw new \Exception("Cannot find property \"$key\" with \"$expectedalue\"");
+ throw new \Exception("Cannot find property \"$key\" with \"$expectedValue\"");
}
$value = $keys[$key];
@@ -208,6 +230,7 @@ trait WebDav {
/**
* @Then /^user "([^"]*)" should see following elements$/
+ * @param string $user
* @param \Behat\Gherkin\Node\TableNode|null $expectedElements
*/
public function checkElementList($user, $expectedElements){
@@ -226,6 +249,9 @@ trait WebDav {
/**
* @When User :user uploads file :source to :destination
+ * @param string $user
+ * @param string $source
+ * @param string $destination
*/
public function userUploadsAFileTo($user, $source, $destination)
{
@@ -240,6 +266,8 @@ trait WebDav {
/**
* @When User :user deletes file :file
+ * @param string $user
+ * @param string $file
*/
public function userDeletesFile($user, $file) {
try {
@@ -252,6 +280,8 @@ trait WebDav {
/**
* @Given User :user created a folder :destination
+ * @param string $user
+ * @param string $destination
*/
public function userCreatedAFolder($user, $destination){
try {
@@ -264,6 +294,11 @@ trait WebDav {
/**
* @Given user :user uploads chunk file :num of :total with :data to :destination
+ * @param string $user
+ * @param int $num
+ * @param int $total
+ * @param string $data
+ * @param string $destination
*/
public function userUploadsChunkFileOfWithToWithChecksum($user, $num, $total, $data, $destination)
{
diff --git a/build/integration/features/sharees.feature b/build/integration/features/sharees.feature
new file mode 100644
index 00000000000..35a80e72062
--- /dev/null
+++ b/build/integration/features/sharees.feature
@@ -0,0 +1,202 @@
+Feature: sharees
+ Background:
+ Given using api version "1"
+
+ Scenario: Search without exact match
+ Given user "test" exists
+ And user "Sharee1" exists
+ And group "ShareeGroup" exists
+ And As an "test"
+ When getting sharees for
+ | search | Sharee |
+ | itemType | file |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And "exact users" sharees returned is empty
+ And "users" sharees returned are
+ | Sharee1 | 0 | Sharee1 |
+ And "exact groups" sharees returned is empty
+ And "groups" sharees returned are
+ | ShareeGroup | 1 | ShareeGroup |
+ And "exact remotes" sharees returned is empty
+ And "remotes" sharees returned is empty
+
+ Scenario: Search without exact match not-exact casing
+ Given user "test" exists
+ And user "Sharee1" exists
+ And group "ShareeGroup" exists
+ And As an "test"
+ When getting sharees for
+ | search | sharee |
+ | itemType | file |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And "exact users" sharees returned is empty
+ And "users" sharees returned are
+ | Sharee1 | 0 | Sharee1 |
+ And "exact groups" sharees returned is empty
+ And "groups" sharees returned are
+ | ShareeGroup | 1 | ShareeGroup |
+ And "exact remotes" sharees returned is empty
+ And "remotes" sharees returned is empty
+
+# TODO need to move the appconfig setting from Capabilities to Basic/Provisioning
+# Scenario: Search without exact match no iteration allowed
+# Given user "test" exists
+# And user "Sharee1" exists
+# And group "ShareeGroup" exists
+# And As an "test"
+# When getting sharees for
+# | search | Sharee |
+# | itemType | file |
+# Then the OCS status code should be "100"
+# And the HTTP status code should be "200"
+# And "exact users" sharees returned is empty
+# And "users" sharees returned is empty
+# And "exact groups" sharees returned is empty
+# And "groups" sharees returned is empty
+# And "exact remotes" sharees returned is empty
+# And "remotes" sharees returned is empty
+#
+# Scenario: Search with exact match no iteration allowed
+# Given user "test" exists
+# And user "Sharee1" exists
+# And group "ShareeGroup" exists
+# And As an "test"
+# When getting sharees for
+# | search | Sharee1 |
+# | itemType | file |
+# Then the OCS status code should be "100"
+# And the HTTP status code should be "200"
+# And "exact users" sharees returned are
+# | Sharee1 | 0 | Sharee1 |
+# And "users" sharees returned is empty
+# And "exact groups" sharees returned is empty
+# And "groups" sharees returned is empty
+# And "exact remotes" sharees returned is empty
+# And "remotes" sharees returned is empty
+#
+# Scenario: Search with exact match group no iteration allowed
+# Given user "test" exists
+# And user "Sharee1" exists
+# And group "ShareeGroup" exists
+# And As an "test"
+# When getting sharees for
+# | search | ShareeGroup |
+# | itemType | file |
+# Then the OCS status code should be "100"
+# And the HTTP status code should be "200"
+# And "exact users" sharees returned is empty
+# And "users" sharees returned is empty
+# And "exact groups" sharees returned are
+# | ShareeGroup | 1 | ShareeGroup |
+# And "groups" sharees returned is empty
+# And "exact remotes" sharees returned is empty
+# And "remotes" sharees returned is empty
+
+ Scenario: Search with exact match
+ Given user "test" exists
+ And user "Sharee1" exists
+ And group "ShareeGroup" exists
+ And As an "test"
+ When getting sharees for
+ | search | Sharee1 |
+ | itemType | file |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ Then "exact users" sharees returned are
+ | Sharee1 | 0 | Sharee1 |
+ Then "users" sharees returned is empty
+ Then "exact groups" sharees returned is empty
+ Then "groups" sharees returned is empty
+ Then "exact remotes" sharees returned is empty
+ Then "remotes" sharees returned is empty
+
+ Scenario: Search with exact match not-exact casing
+ Given user "test" exists
+ And user "Sharee1" exists
+ And group "ShareeGroup" exists
+ And As an "test"
+ When getting sharees for
+ | search | sharee1 |
+ | itemType | file |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ Then "exact users" sharees returned are
+ | Sharee1 | 0 | Sharee1 |
+ Then "users" sharees returned is empty
+ Then "exact groups" sharees returned is empty
+ Then "groups" sharees returned is empty
+ Then "exact remotes" sharees returned is empty
+ Then "remotes" sharees returned is empty
+
+ Scenario: Search with exact match not-exact casing group
+ Given user "test" exists
+ And user "Sharee1" exists
+ And group "ShareeGroup" exists
+ And As an "test"
+ When getting sharees for
+ | search | shareegroup |
+ | itemType | file |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ Then "exact users" sharees returned is empty
+ Then "users" sharees returned is empty
+ Then "exact groups" sharees returned are
+ | ShareeGroup | 1 | ShareeGroup |
+ Then "groups" sharees returned is empty
+ Then "exact remotes" sharees returned is empty
+ Then "remotes" sharees returned is empty
+
+ Scenario: Search with "self"
+ Given user "test" exists
+ And user "Sharee1" exists
+ And group "ShareeGroup" exists
+ And As an "Sharee1"
+ When getting sharees for
+ | search | Sharee1 |
+ | itemType | file |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ Then "exact users" sharees returned are
+ | Sharee1 | 0 | Sharee1 |
+ Then "users" sharees returned is empty
+ Then "exact groups" sharees returned is empty
+ Then "groups" sharees returned is empty
+ Then "exact remotes" sharees returned is empty
+ Then "remotes" sharees returned is empty
+
+ Scenario: Remote sharee for files
+ Given user "test" exists
+ And user "Sharee1" exists
+ And group "ShareeGroup" exists
+ And As an "test"
+ When getting sharees for
+ | search | test@localhost |
+ | itemType | file |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ Then "exact users" sharees returned is empty
+ Then "users" sharees returned is empty
+ Then "exact groups" sharees returned is empty
+ Then "groups" sharees returned is empty
+ Then "exact remotes" sharees returned are
+ | test@localhost | 6 | test@localhost |
+ Then "remotes" sharees returned is empty
+
+ Scenario: Remote sharee for calendars not allowed
+ Given user "test" exists
+ And user "Sharee1" exists
+ And group "ShareeGroup" exists
+ And As an "test"
+ When getting sharees for
+ | search | test@localhost |
+ | itemType | calendar |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ Then "exact users" sharees returned is empty
+ Then "users" sharees returned is empty
+ Then "exact groups" sharees returned is empty
+ Then "groups" sharees returned is empty
+ Then "exact remotes" sharees returned is empty
+ Then "remotes" sharees returned is empty
diff --git a/build/integration/features/sharing-v1.feature b/build/integration/features/sharing-v1.feature
index 00e760ce167..ba535e83aab 100644
--- a/build/integration/features/sharing-v1.feature
+++ b/build/integration/features/sharing-v1.feature
@@ -65,6 +65,7 @@ Feature: sharing
| expiration | +3 days |
| url | AN_URL |
| token | A_TOKEN |
+ | mimetype | httpd/unix-directory |
Scenario: Creating a new public share with password and adding an expiration date
Given user "user0" exists
@@ -108,6 +109,7 @@ Feature: sharing
| file_parent | A_NUMBER |
| displayname_owner | user0 |
| url | AN_URL |
+ | mimetype | httpd/unix-directory |
Scenario: Creating a new public share, updating its password and getting its info
Given user "user0" exists
@@ -137,6 +139,7 @@ Feature: sharing
| file_parent | A_NUMBER |
| displayname_owner | user0 |
| url | AN_URL |
+ | mimetype | httpd/unix-directory |
Scenario: Creating a new public share, updating its permissions and getting its info
Given user "user0" exists
@@ -166,6 +169,7 @@ Feature: sharing
| file_parent | A_NUMBER |
| displayname_owner | user0 |
| url | AN_URL |
+ | mimetype | httpd/unix-directory |
Scenario: Creating a new public share, updating publicUpload option and getting its info
Given user "user0" exists
@@ -195,6 +199,7 @@ Feature: sharing
| file_parent | A_NUMBER |
| displayname_owner | user0 |
| url | AN_URL |
+ | mimetype | httpd/unix-directory |
Scenario: getting all shares of a user using that user
Given user "user0" exists
@@ -272,6 +277,7 @@ Feature: sharing
| file_parent | A_NUMBER |
| share_with_displayname | user1 |
| displayname_owner | user0 |
+ | mimetype | text/plain |
Scenario: keep group permissions in sync
Given As an "admin"
@@ -302,6 +308,7 @@ Feature: sharing
| storage_id | home::user0 |
| file_parent | A_NUMBER |
| displayname_owner | user0 |
+ | mimetype | text/plain |
Scenario: Sharee can see the share
Given user "user0" exists
diff --git a/build/integration/federation_features/federated.feature b/build/integration/federation_features/federated.feature
index 5437d01dee2..acd1f91e908 100644
--- a/build/integration/federation_features/federated.feature
+++ b/build/integration/federation_features/federated.feature
@@ -10,6 +10,115 @@ Feature: federated
When User "user0" from server "LOCAL" shares "/textfile0.txt" with user "user1" from server "REMOTE"
Then the OCS status code should be "100"
And the HTTP status code should be "200"
+ And Share fields of last share match with
+ | id | A_NUMBER |
+ | item_type | file |
+ | item_source | A_NUMBER |
+ | share_type | 6 |
+ | file_source | A_NUMBER |
+ | path | /textfile0.txt |
+ | permissions | 19 |
+ | stime | A_NUMBER |
+ | storage | A_NUMBER |
+ | mail_send | 0 |
+ | uid_owner | user0 |
+ | storage_id | home::user0 |
+ | file_parent | A_NUMBER |
+ | displayname_owner | user0 |
+ | share_with | user1@REMOTE |
+ | share_with_displayname | user1@REMOTE |
+
+ Scenario: Federate share a file with local server
+ Given Using server "LOCAL"
+ And user "user0" exists
+ And Using server "REMOTE"
+ And user "user1" exists
+ When User "user1" from server "REMOTE" shares "/textfile0.txt" with user "user0" from server "LOCAL"
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And Share fields of last share match with
+ | id | A_NUMBER |
+ | item_type | file |
+ | item_source | A_NUMBER |
+ | share_type | 6 |
+ | file_source | A_NUMBER |
+ | path | /textfile0.txt |
+ | permissions | 19 |
+ | stime | A_NUMBER |
+ | storage | A_NUMBER |
+ | mail_send | 0 |
+ | uid_owner | user1 |
+ | storage_id | home::user1 |
+ | file_parent | A_NUMBER |
+ | displayname_owner | user1 |
+ | share_with | user0@LOCAL |
+ | share_with_displayname | user0@LOCAL |
+
+ Scenario: Remote sharee can see the pending share
+ Given Using server "REMOTE"
+ And user "user1" exists
+ And Using server "LOCAL"
+ And user "user0" exists
+ And User "user0" from server "LOCAL" shares "/textfile0.txt" with user "user1" from server "REMOTE"
+ And Using server "REMOTE"
+ And As an "user1"
+ When sending "GET" to "/apps/files_sharing/api/v1/remote_shares/pending"
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And Share fields of last share match with
+ | id | A_NUMBER |
+ | remote | LOCAL |
+ | remote_id | A_NUMBER |
+ | share_token | A_TOKEN |
+ | name | /textfile0.txt |
+ | owner | user0 |
+ | user | user1 |
+ | mountpoint | {{TemporaryMountPointName#/textfile0.txt}} |
+ | accepted | 0 |
+
+ Scenario: accept a pending remote share
+ Given Using server "REMOTE"
+ And user "user1" exists
+ And Using server "LOCAL"
+ And user "user0" exists
+ And User "user0" from server "LOCAL" shares "/textfile0.txt" with user "user1" from server "REMOTE"
+ When User "user1" from server "REMOTE" accepts last pending share
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+
+ Scenario: Reshare a federated shared file
+ Given Using server "REMOTE"
+ And user "user1" exists
+ And user "user2" exists
+ And Using server "LOCAL"
+ And user "user0" exists
+ And User "user0" from server "LOCAL" shares "/textfile0.txt" with user "user1" from server "REMOTE"
+ And User "user1" from server "REMOTE" accepts last pending share
+ And Using server "REMOTE"
+ And As an "user1"
+ When creating a share with
+ | path | /textfile0 (2).txt |
+ | shareType | 0 |
+ | shareWith | user2 |
+ | permissions | 19 |
+ Then the OCS status code should be "100"
+ And the HTTP status code should be "200"
+ And Share fields of last share match with
+ | id | A_NUMBER |
+ | item_type | file |
+ | item_source | A_NUMBER |
+ | share_type | 0 |
+ | file_source | A_NUMBER |
+ | path | /textfile0 (2).txt |
+ | permissions | 19 |
+ | stime | A_NUMBER |
+ | storage | A_NUMBER |
+ | mail_send | 0 |
+ | uid_owner | user1 |
+ | file_parent | A_NUMBER |
+ | displayname_owner | user1 |
+ | share_with | user2 |
+ | share_with_displayname | user2 |
diff --git a/composer.json b/composer.json
index 98fdb3aa31c..495a9896ae2 100644
--- a/composer.json
+++ b/composer.json
@@ -4,5 +4,9 @@
},
"autoload" : {
"psr-4": {"OC\\": "lib/private"}
+ },
+ "require-dev": {
+ "jakub-onderka/php-parallel-lint": "^0.9.2",
+ "jakub-onderka/php-console-highlighter": "^0.3.2"
}
}
diff --git a/core/ajax/share.php b/core/ajax/share.php
index 8ece9945c23..44144b791e2 100644
--- a/core/ajax/share.php
+++ b/core/ajax/share.php
@@ -70,7 +70,8 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo
\OC::$server->getL10N('lib'),
\OC::$server->getMailer(),
\OC::$server->getLogger(),
- $defaults
+ $defaults,
+ \OC::$server->getURLGenerator()
);
$result = $mailNotification->sendInternalShareMail($recipientList, $itemSource, $itemType);
@@ -108,7 +109,8 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo
\OC::$server->getL10N('lib'),
\OC::$server->getMailer(),
\OC::$server->getLogger(),
- $defaults
+ $defaults,
+ \OC::$server->getURLGenerator()
);
$expiration = null;
diff --git a/core/js/files/iedavclient.js b/core/js/files/iedavclient.js
index e5b3968a197..9e83f5b9a22 100644
--- a/core/js/files/iedavclient.js
+++ b/core/js/files/iedavclient.js
@@ -39,7 +39,12 @@
for(ii in headers) {
xhr.setRequestHeader(ii, headers[ii]);
}
- xhr.send(body);
+
+ if (body === undefined) {
+ xhr.send();
+ } else {
+ xhr.send(body);
+ }
return new Promise(function(fulfill, reject) {
diff --git a/core/js/setupchecks.js b/core/js/setupchecks.js
index c29c4137c58..41f6a6e07b6 100644
--- a/core/js/setupchecks.js
+++ b/core/js/setupchecks.js
@@ -117,7 +117,7 @@
}
if(data.phpSupported && data.phpSupported.eol) {
messages.push({
- msg: t('core', 'Your PHP version ({version}) is no longer <a target="_blank" href="{phpLink}">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP.', {version: data.phpSupported.version, phpLink: 'https://secure.php.net/supported-versions.php'}),
+ msg: t('core', 'You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target="_blank" href="{phpLink}">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it.', {version: data.phpSupported.version, phpLink: 'https://secure.php.net/supported-versions.php'}),
type: OC.SetupChecks.MESSAGE_TYPE_INFO
});
}
diff --git a/core/js/tests/specs/setupchecksSpec.js b/core/js/tests/specs/setupchecksSpec.js
index fa0974c90f9..05be46781d6 100644
--- a/core/js/tests/specs/setupchecksSpec.js
+++ b/core/js/tests/specs/setupchecksSpec.js
@@ -358,7 +358,7 @@ describe('OC.SetupChecks tests', function() {
async.done(function( data, s, x ){
expect(data).toEqual([{
- msg: 'Your PHP version (5.4.0) is no longer <a target="_blank" href="https://secure.php.net/supported-versions.php">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP.',
+ msg: 'You are currently running PHP 5.4.0. We encourage you to upgrade your PHP version to take advantage of <a target="_blank" href="https://secure.php.net/supported-versions.php">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it.',
type: OC.SetupChecks.MESSAGE_TYPE_INFO
}]);
done();
diff --git a/core/l10n/cs_CZ.js b/core/l10n/cs_CZ.js
index 8f6b219024c..b4b8a60cc92 100644
--- a/core/l10n/cs_CZ.js
+++ b/core/l10n/cs_CZ.js
@@ -123,7 +123,6 @@ OC.L10N.register(
"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." : "Tento server nemá funkční připojení k Internetu. Některé moduly jako např. externí úložiště, oznámení o dostupných aktualizacích nebo instalace aplikací třetích stran nebudou fungovat. Přístup k souborům z jiných míst a odesílání oznamovacích emailů také nemusí fungovat. Pokud chcete využívat všechny možnosti ownCloud, doporučujeme povolit pro tento server připojení k Internetu.",
"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\" href=\"{docLink}\">documentation</a>." : "Nebyla nakonfigurována paměťová cache. Pro zlepšení výkonu a dostupnosti ji prosím nakonfigurujte. Další informace lze nalézt v naší <a href=\"{docLink}\">dokumentaci</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "PHP nemá práva pro čtení v /dev/urandom, to je ale z bezpečnostních důvodů velmi doporučováno. Více informací lze nalézt v <a href=\"{docLink}\">dokumentaci</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Vaše verze PHP ({version}) již není <a href=\"{phpLink}\">podporována</a>. Doporučujeme aktualizovat na poslední verzi PHP pro využití vylepšení výkonu a bezpečnosti.",
"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\" href=\"{docLink}\">documentation</a>." : "Konfigurace hlaviček zpětné proxy není správná nebo přistupujete na ownCloud přes důvěryhodnou proxy. Pokud přistupujete na ownCloud přes nedůvěryhodnou proxy je toto považováno za bezpečnostní problém který může útočníkovi umožnit záměnu IP adresy viděné ownCloudem. Více informací lze nalézt v naší <a href=\"{docLink}\">dokumentaci</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached je nakonfigurován jako distribuovaná cache, ale je nainstalován nesprávný PHP modul \"memcache\". \\OC\\Memcache\\Memcached podporuje pouze \"memcached\" a ne \"memcache\". Projděte si <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki popisující oba moduly</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Některé soubory neprošly kontrolou integrity. Více informací o tom jak tento problém vyřešit, lze nalézt v naší <a href=\"{docLink}\">dokumentaci</a>. (<a target=\"_blank\" href=\"{codeIntegrityDownloadEndpoint}\">Seznam neplatných souborů…</a> / <a href=\"{rescanEndpoint}\">Znovu ověřit…</a>)",
diff --git a/core/l10n/cs_CZ.json b/core/l10n/cs_CZ.json
index b906ee16796..473107667de 100644
--- a/core/l10n/cs_CZ.json
+++ b/core/l10n/cs_CZ.json
@@ -121,7 +121,6 @@
"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." : "Tento server nemá funkční připojení k Internetu. Některé moduly jako např. externí úložiště, oznámení o dostupných aktualizacích nebo instalace aplikací třetích stran nebudou fungovat. Přístup k souborům z jiných míst a odesílání oznamovacích emailů také nemusí fungovat. Pokud chcete využívat všechny možnosti ownCloud, doporučujeme povolit pro tento server připojení k Internetu.",
"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\" href=\"{docLink}\">documentation</a>." : "Nebyla nakonfigurována paměťová cache. Pro zlepšení výkonu a dostupnosti ji prosím nakonfigurujte. Další informace lze nalézt v naší <a href=\"{docLink}\">dokumentaci</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "PHP nemá práva pro čtení v /dev/urandom, to je ale z bezpečnostních důvodů velmi doporučováno. Více informací lze nalézt v <a href=\"{docLink}\">dokumentaci</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Vaše verze PHP ({version}) již není <a href=\"{phpLink}\">podporována</a>. Doporučujeme aktualizovat na poslední verzi PHP pro využití vylepšení výkonu a bezpečnosti.",
"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\" href=\"{docLink}\">documentation</a>." : "Konfigurace hlaviček zpětné proxy není správná nebo přistupujete na ownCloud přes důvěryhodnou proxy. Pokud přistupujete na ownCloud přes nedůvěryhodnou proxy je toto považováno za bezpečnostní problém který může útočníkovi umožnit záměnu IP adresy viděné ownCloudem. Více informací lze nalézt v naší <a href=\"{docLink}\">dokumentaci</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached je nakonfigurován jako distribuovaná cache, ale je nainstalován nesprávný PHP modul \"memcache\". \\OC\\Memcache\\Memcached podporuje pouze \"memcached\" a ne \"memcache\". Projděte si <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki popisující oba moduly</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Některé soubory neprošly kontrolou integrity. Více informací o tom jak tento problém vyřešit, lze nalézt v naší <a href=\"{docLink}\">dokumentaci</a>. (<a target=\"_blank\" href=\"{codeIntegrityDownloadEndpoint}\">Seznam neplatných souborů…</a> / <a href=\"{rescanEndpoint}\">Znovu ověřit…</a>)",
diff --git a/core/l10n/de.js b/core/l10n/de.js
index 91cabc1dc2f..77882ff6a23 100644
--- a/core/l10n/de.js
+++ b/core/l10n/de.js
@@ -123,7 +123,7 @@ OC.L10N.register(
"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." : "Dieser Server hat keine funktionierende Internetverbindung. Dies bedeutet, dass einige Funktionen wie das Einhängen externen Speicherplatzes, Update-Benachrichtigungen oder die Installation von Drittanbieter-Apps nicht funktionieren werden. Der Fernzugriff auf Dateien und der Versand von E-Mail-Benachrichtigungen kann ebenfalls nicht funktionieren. Es wird empfohlen, die Internetverbindung dieses Servers zu aktivieren, wenn Du alle Funktionen nutzen möchtest.",
"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\" href=\"{docLink}\">documentation</a>." : "Es wurde kein Memory Cache konfiguriert. Um die Leistung zu verbessern, konfiguriere bitte einen Cache-Speicher, sofern vorhanden. Weitere Informationen findest du in unserer <a target=\"_blank\" href=\"{docLink}\">Dokumentation</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "PHP hat keine Leserechte auf /dev/urandom wovon aus Sicherheitsgründen höchst abzuraten ist. Weitere Informationen sind in der <a target=\"_blank\" href=\"{docLink}\">Dokumentation</a> zu finden.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Deine PHP Version ({version}) wird nicht länger <a href=\"{phpLink}\">unterstützt</a>. Wir empfehlen ein Upgrade deiner PHP Version, um die volle Performance und Sicherheit zu gewährleisten.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Du verwendest im Moment PHP {version}. Wir empfehlen ein Upgrade deiner PHP Version, um die <a target=\"_blank\" href=\"{phpLink}\">Geschwindigkeits- und Sicherheitsupdates zu nutzen, welche von der PHP Gruppe bereitgestellt werden</a>, sobald diese deine Distribution diese unterstützt.",
"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\" href=\"{docLink}\">documentation</a>." : "Die Header-Einstellungen des Reverse Proxy sind falsch, oder du versuchst, dich mit ownCloud von einem vertrauten Proxy aus zu verbinden. Solltest du ownCloud nicht von einem vertrauten Proxy aus benutzen wollen, dann stellt die momentane Situation ein Sicherheitsproblem da und erlaubt Hackern, eine für ownCloud sichtbare IP-Adresse zu nutzen. Weitere Informationen findest du in der <a target=\"_blank\" href=\"{docLink}\">Dokumentation</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached ist als distributed cache konfiguriert aber das falsche PHP-Modul \"memcache\" ist installiert. \\OC\\Memcache\\Memcached unterstützt nur \"memcached\" jedoch nicht \"memcache\". Schau in der <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki nach beiden Modulen</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Einige Dateien haben die Integritätsprüfung nicht bestanden. Weiterführende Information findest Du in unserer <a target=\"_blank\" href=\"{docLink}\">Dokumentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste der ungültigen Dateien ...</a> / <a href=\"{rescanEndpoint}\">Erneut analysieren…</a>)",
diff --git a/core/l10n/de.json b/core/l10n/de.json
index 32404248e19..a997fc956be 100644
--- a/core/l10n/de.json
+++ b/core/l10n/de.json
@@ -121,7 +121,7 @@
"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." : "Dieser Server hat keine funktionierende Internetverbindung. Dies bedeutet, dass einige Funktionen wie das Einhängen externen Speicherplatzes, Update-Benachrichtigungen oder die Installation von Drittanbieter-Apps nicht funktionieren werden. Der Fernzugriff auf Dateien und der Versand von E-Mail-Benachrichtigungen kann ebenfalls nicht funktionieren. Es wird empfohlen, die Internetverbindung dieses Servers zu aktivieren, wenn Du alle Funktionen nutzen möchtest.",
"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\" href=\"{docLink}\">documentation</a>." : "Es wurde kein Memory Cache konfiguriert. Um die Leistung zu verbessern, konfiguriere bitte einen Cache-Speicher, sofern vorhanden. Weitere Informationen findest du in unserer <a target=\"_blank\" href=\"{docLink}\">Dokumentation</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "PHP hat keine Leserechte auf /dev/urandom wovon aus Sicherheitsgründen höchst abzuraten ist. Weitere Informationen sind in der <a target=\"_blank\" href=\"{docLink}\">Dokumentation</a> zu finden.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Deine PHP Version ({version}) wird nicht länger <a href=\"{phpLink}\">unterstützt</a>. Wir empfehlen ein Upgrade deiner PHP Version, um die volle Performance und Sicherheit zu gewährleisten.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Du verwendest im Moment PHP {version}. Wir empfehlen ein Upgrade deiner PHP Version, um die <a target=\"_blank\" href=\"{phpLink}\">Geschwindigkeits- und Sicherheitsupdates zu nutzen, welche von der PHP Gruppe bereitgestellt werden</a>, sobald diese deine Distribution diese unterstützt.",
"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\" href=\"{docLink}\">documentation</a>." : "Die Header-Einstellungen des Reverse Proxy sind falsch, oder du versuchst, dich mit ownCloud von einem vertrauten Proxy aus zu verbinden. Solltest du ownCloud nicht von einem vertrauten Proxy aus benutzen wollen, dann stellt die momentane Situation ein Sicherheitsproblem da und erlaubt Hackern, eine für ownCloud sichtbare IP-Adresse zu nutzen. Weitere Informationen findest du in der <a target=\"_blank\" href=\"{docLink}\">Dokumentation</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached ist als distributed cache konfiguriert aber das falsche PHP-Modul \"memcache\" ist installiert. \\OC\\Memcache\\Memcached unterstützt nur \"memcached\" jedoch nicht \"memcache\". Schau in der <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki nach beiden Modulen</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Einige Dateien haben die Integritätsprüfung nicht bestanden. Weiterführende Information findest Du in unserer <a target=\"_blank\" href=\"{docLink}\">Dokumentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste der ungültigen Dateien ...</a> / <a href=\"{rescanEndpoint}\">Erneut analysieren…</a>)",
diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js
index 2d6a1251fef..ef7087de73d 100644
--- a/core/l10n/de_DE.js
+++ b/core/l10n/de_DE.js
@@ -123,7 +123,6 @@ OC.L10N.register(
"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." : "Dieser Server hat keine funktionierende Internetverbindung. Dies bedeutet, dass einige Funktionen wie das Einhängen externen Speicherplatzes, Update-Benachrichtigungen oder die Installation von Drittanbieter-Apps nicht funktionieren werden. Der Fernzugriff auf Dateien und der Versand von E-Mail-Benachrichtigungen kann ebenfalls nicht funktionieren. Es wird empfohlen, die Internetverbindung dieses Servers zu aktivieren, wenn Sie alle Funktionen nutzen möchten.",
"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\" href=\"{docLink}\">documentation</a>." : "Es wurde kein Memory Cache konfiguriert. Um die Leistung zu verbessern, konfigurieren Sie bitte einen Cache-Speicher, sofern vorhanden. Weitere Informationen finden Sie in unserer <a target=\"_blank\" href=\"{docLink}\">Dokumentation</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom ist von PHP nicht lesbar, wovon aus Sicherheitsgründen dringend abgeraten wird. Weitere Informationen hierzu finden Sie in unserer <a href=\"{docLink}\">Dokumentation</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Ihre PHP Version ({version}) wird nicht länger <a href=\"{phpLink}\">unterstützt</a>. Wir empfehlen ein Upgrade ihrer PHP Version, um die volle Performance und Sicherheit zu gewährleisten.",
"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\" href=\"{docLink}\">documentation</a>." : "Die Einstellung der Reverse Proxy Kopfzeile is falsch oder Sie greifen über einen gesicherten Proxy auf ownCloud zu. Falls Sie nicht über einen gesicherten Proxy auf ownCloud zugreifen handelt es sich um eine Sicherheitslücke, die es Angreifern erlaubt ihre IP-Adresse ownCloud gegenüber als sichtbar darzustellen. Weitere Informationen hierzu finden Sie in unserer <a href=\"{docLink}\">Dokumentation</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcache ist als verteilter Cache konfiguriert, aber das falsche PHP Modul \"memcache\" ist installiert. \\OC\\Memcache\\Memcached unterstützt nud \"memcached\" und nicht \"memcache\". Siehe <a target=\"_blank\" href=\"{wikiLink}\">memcached Wiki über beide Module</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Manche Dateien haben die Integritätsprüfung nicht bestanden. Weitere Informationen um den Fehler zu behen finden Sie in unserer <a target=\"_blank\" href=\"{docLink}\">Dokumentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste der ungültigen Dateien...</a> / <a href=\"{rescanEndpoint}\">Erneut scannen…</a>)",
diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json
index c8fa782cd68..2579796060b 100644
--- a/core/l10n/de_DE.json
+++ b/core/l10n/de_DE.json
@@ -121,7 +121,6 @@
"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." : "Dieser Server hat keine funktionierende Internetverbindung. Dies bedeutet, dass einige Funktionen wie das Einhängen externen Speicherplatzes, Update-Benachrichtigungen oder die Installation von Drittanbieter-Apps nicht funktionieren werden. Der Fernzugriff auf Dateien und der Versand von E-Mail-Benachrichtigungen kann ebenfalls nicht funktionieren. Es wird empfohlen, die Internetverbindung dieses Servers zu aktivieren, wenn Sie alle Funktionen nutzen möchten.",
"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\" href=\"{docLink}\">documentation</a>." : "Es wurde kein Memory Cache konfiguriert. Um die Leistung zu verbessern, konfigurieren Sie bitte einen Cache-Speicher, sofern vorhanden. Weitere Informationen finden Sie in unserer <a target=\"_blank\" href=\"{docLink}\">Dokumentation</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom ist von PHP nicht lesbar, wovon aus Sicherheitsgründen dringend abgeraten wird. Weitere Informationen hierzu finden Sie in unserer <a href=\"{docLink}\">Dokumentation</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Ihre PHP Version ({version}) wird nicht länger <a href=\"{phpLink}\">unterstützt</a>. Wir empfehlen ein Upgrade ihrer PHP Version, um die volle Performance und Sicherheit zu gewährleisten.",
"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\" href=\"{docLink}\">documentation</a>." : "Die Einstellung der Reverse Proxy Kopfzeile is falsch oder Sie greifen über einen gesicherten Proxy auf ownCloud zu. Falls Sie nicht über einen gesicherten Proxy auf ownCloud zugreifen handelt es sich um eine Sicherheitslücke, die es Angreifern erlaubt ihre IP-Adresse ownCloud gegenüber als sichtbar darzustellen. Weitere Informationen hierzu finden Sie in unserer <a href=\"{docLink}\">Dokumentation</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcache ist als verteilter Cache konfiguriert, aber das falsche PHP Modul \"memcache\" ist installiert. \\OC\\Memcache\\Memcached unterstützt nud \"memcached\" und nicht \"memcache\". Siehe <a target=\"_blank\" href=\"{wikiLink}\">memcached Wiki über beide Module</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Manche Dateien haben die Integritätsprüfung nicht bestanden. Weitere Informationen um den Fehler zu behen finden Sie in unserer <a target=\"_blank\" href=\"{docLink}\">Dokumentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste der ungültigen Dateien...</a> / <a href=\"{rescanEndpoint}\">Erneut scannen…</a>)",
diff --git a/core/l10n/en_GB.js b/core/l10n/en_GB.js
index 1221264295b..405abae5692 100644
--- a/core/l10n/en_GB.js
+++ b/core/l10n/en_GB.js
@@ -123,7 +123,7 @@ OC.L10N.register(
"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." : "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 enabling the Internet connection for this server.",
"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\" href=\"{docLink}\">documentation</a>." : "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\" href=\"{docLink}\">documentation</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it.",
"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\" href=\"{docLink}\">documentation</a>." : "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\" href=\"{docLink}\">documentation</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)",
diff --git a/core/l10n/en_GB.json b/core/l10n/en_GB.json
index 31c6bb84927..cc420574bb4 100644
--- a/core/l10n/en_GB.json
+++ b/core/l10n/en_GB.json
@@ -121,7 +121,7 @@
"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." : "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 enabling the Internet connection for this server.",
"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\" href=\"{docLink}\">documentation</a>." : "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\" href=\"{docLink}\">documentation</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it.",
"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\" href=\"{docLink}\">documentation</a>." : "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\" href=\"{docLink}\">documentation</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)",
diff --git a/core/l10n/es.js b/core/l10n/es.js
index 99b5233976f..f3aed01bc7a 100644
--- a/core/l10n/es.js
+++ b/core/l10n/es.js
@@ -123,7 +123,6 @@ OC.L10N.register(
"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." : "Este servidor no tiene una conexión a Internet. Esto significa que algunas de las características como el montaje de almacenamiento externo, las notificaciones sobre actualizaciones o instalación de aplicaciones de terceros no funcionan. Podría no funcionar el acceso a los archivos de forma remota y el envío de correos electrónicos de notificación. Sugerimos habilitar la conexión a Internet de este servidor, si quiere tener todas las funciones.",
"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\" href=\"{docLink}\">documentation</a>." : "La memoria caché no ha sido configurada. Para aumentar su rendimiento por favor configure memcache si está disponible. Más información puede ser encontrada en nuestra <a target=\"_blank\" href=\"{docLink}\">documentación</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom no es legible por PHP el mismo es altamente desalentado por razones de seguridad. Más información puede ser encontrada en nuestra <a target=\"_blank\" href=\"{docLink}\">documentación</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Su versión PHP ({version}) ya no es <a target=\"_blank\" href=\"{phpLink}\">respaldada por PHP</a>. Recomendamos actualizar su versión de PHP para aprovechar las actualizaciones de rendimiento y seguridad proporcionadas por PHP.",
"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\" href=\"{docLink}\">documentation</a>." : "La configuración de las cabeceras inversas del proxy son incorrectas, o está accediendo a ownCloud desde un proxy confiable. Si no está accediendo a ownCloud desde un proxy certificado y confiable, este es un problema de seguridad y puede permitirle a un hacker camuflar su dirección IP a ownCloud. Más información puede ser encontrada en nuestra <a target=\"_blank\" href=\"{docLink}\">documentación</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "memcached es un sistema de cache distribuido. pero ha sido instalado por error el modulo PHP memcache.\nConsulte <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki acerca de ambos modulos</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Algunos archivos no han superado la comprobación de integridad. Para más información sobre cómo resolver este inconveniente consulte nuestra <a target=\"_blank\" href=\"{docLink}\">documentación</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lista de archivos inválidos…</a> / <a href=\"{rescanEndpoint}\">Reescanear…</a>)",
diff --git a/core/l10n/es.json b/core/l10n/es.json
index d9e837de90c..1a05bc31c8a 100644
--- a/core/l10n/es.json
+++ b/core/l10n/es.json
@@ -121,7 +121,6 @@
"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." : "Este servidor no tiene una conexión a Internet. Esto significa que algunas de las características como el montaje de almacenamiento externo, las notificaciones sobre actualizaciones o instalación de aplicaciones de terceros no funcionan. Podría no funcionar el acceso a los archivos de forma remota y el envío de correos electrónicos de notificación. Sugerimos habilitar la conexión a Internet de este servidor, si quiere tener todas las funciones.",
"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\" href=\"{docLink}\">documentation</a>." : "La memoria caché no ha sido configurada. Para aumentar su rendimiento por favor configure memcache si está disponible. Más información puede ser encontrada en nuestra <a target=\"_blank\" href=\"{docLink}\">documentación</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom no es legible por PHP el mismo es altamente desalentado por razones de seguridad. Más información puede ser encontrada en nuestra <a target=\"_blank\" href=\"{docLink}\">documentación</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Su versión PHP ({version}) ya no es <a target=\"_blank\" href=\"{phpLink}\">respaldada por PHP</a>. Recomendamos actualizar su versión de PHP para aprovechar las actualizaciones de rendimiento y seguridad proporcionadas por PHP.",
"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\" href=\"{docLink}\">documentation</a>." : "La configuración de las cabeceras inversas del proxy son incorrectas, o está accediendo a ownCloud desde un proxy confiable. Si no está accediendo a ownCloud desde un proxy certificado y confiable, este es un problema de seguridad y puede permitirle a un hacker camuflar su dirección IP a ownCloud. Más información puede ser encontrada en nuestra <a target=\"_blank\" href=\"{docLink}\">documentación</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "memcached es un sistema de cache distribuido. pero ha sido instalado por error el modulo PHP memcache.\nConsulte <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki acerca de ambos modulos</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Algunos archivos no han superado la comprobación de integridad. Para más información sobre cómo resolver este inconveniente consulte nuestra <a target=\"_blank\" href=\"{docLink}\">documentación</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lista de archivos inválidos…</a> / <a href=\"{rescanEndpoint}\">Reescanear…</a>)",
diff --git a/core/l10n/fi_FI.js b/core/l10n/fi_FI.js
index ee274733c58..2a3398bbf02 100644
--- a/core/l10n/fi_FI.js
+++ b/core/l10n/fi_FI.js
@@ -123,7 +123,7 @@ OC.L10N.register(
"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." : "Tällä palvelimella ei ole toimivaa internetyhteyttä. Sen seurauksena jotkin ominaisuudet, kuten erillinen tallennustila, ilmoitukset päivityksistä ja kolmansien osapuolten sovellusten asennus eivät toimi. Tiedostojen käyttö etänä tai ilmoitusten lähetys sähköpostitse eivät välttämättä toimi myöskään. Suosittelemme kytkemään palvelimen internetyhteyteen, jos haluat käyttää kaikkia ownCloudin ominaisuuksia.",
"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\" href=\"{docLink}\">documentation</a>." : "Välimuistia ei ole määritetty. Paranna suorituskykyä ottamalla memcache käyttöön. Lisätietoja on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom ei ole PHP:n luettavissa, eikä tätä missään tapauksessa suositella tietoturvasyistä. Lisätietoja on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "PHP-versiosi ({version}) ei ole enää tuettu <a target=\"_blank\" href=\"{phpLink}\"> PHP:n toimesta</a>. Suosittelemme päivittämään PHP:n version, jotta hyödyt suorituskykyparannuksista sekä tietoturvakorjauksista.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Käytössäsi on PHP:n versio {version}. Suosittelemme päivittämään PHP:n, jotta hyödyt <a target=\"_blank\" href=\"{phpLink}\">PHP Groupin tarjoamista suorituskyky- ja tietoturvapäivityksistä</a>.",
"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\" href=\"{docLink}\">documentation</a>." : "Käänteisen välityspalvelimen otsakemääritykset ovat väärin, tai olet yhteydessä ownCloudiin luotetun välityspalvelimen kautta. Jos et ole yhteydessä luotetun välityspalvelimen kautta, kyseessä on tietoturvaongelma, joka mahdollistaa hyökkääjän väärentävän ownCloudille näkyvän IP-osoitteen. Lisätietoja on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached on määritetty hajautetuksi välimuistiksi, mutta väärä PHP-moduuli \"memcache\" on asennettu. \\OC\\Memcache\\Memcached tukee vain moduulia \"memcached\", ei moduulia \"memcache\". Lisätietoja <a target=\"_blank\" href=\"{wikiLink}\">memcachedin wikissä molemmista moduuleista</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Jotkin tiedostot eivät läpäisseet eheystarkistusta. Lisätietoja ongelman selvittämiseksi on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Luettelo virheellisistä tiedostoista…</a> / <a href=\"{rescanEndpoint}\">Tarkista uudelleen…</a>)",
diff --git a/core/l10n/fi_FI.json b/core/l10n/fi_FI.json
index 1845167f2f9..49256c0877c 100644
--- a/core/l10n/fi_FI.json
+++ b/core/l10n/fi_FI.json
@@ -121,7 +121,7 @@
"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." : "Tällä palvelimella ei ole toimivaa internetyhteyttä. Sen seurauksena jotkin ominaisuudet, kuten erillinen tallennustila, ilmoitukset päivityksistä ja kolmansien osapuolten sovellusten asennus eivät toimi. Tiedostojen käyttö etänä tai ilmoitusten lähetys sähköpostitse eivät välttämättä toimi myöskään. Suosittelemme kytkemään palvelimen internetyhteyteen, jos haluat käyttää kaikkia ownCloudin ominaisuuksia.",
"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\" href=\"{docLink}\">documentation</a>." : "Välimuistia ei ole määritetty. Paranna suorituskykyä ottamalla memcache käyttöön. Lisätietoja on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom ei ole PHP:n luettavissa, eikä tätä missään tapauksessa suositella tietoturvasyistä. Lisätietoja on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "PHP-versiosi ({version}) ei ole enää tuettu <a target=\"_blank\" href=\"{phpLink}\"> PHP:n toimesta</a>. Suosittelemme päivittämään PHP:n version, jotta hyödyt suorituskykyparannuksista sekä tietoturvakorjauksista.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Käytössäsi on PHP:n versio {version}. Suosittelemme päivittämään PHP:n, jotta hyödyt <a target=\"_blank\" href=\"{phpLink}\">PHP Groupin tarjoamista suorituskyky- ja tietoturvapäivityksistä</a>.",
"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\" href=\"{docLink}\">documentation</a>." : "Käänteisen välityspalvelimen otsakemääritykset ovat väärin, tai olet yhteydessä ownCloudiin luotetun välityspalvelimen kautta. Jos et ole yhteydessä luotetun välityspalvelimen kautta, kyseessä on tietoturvaongelma, joka mahdollistaa hyökkääjän väärentävän ownCloudille näkyvän IP-osoitteen. Lisätietoja on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached on määritetty hajautetuksi välimuistiksi, mutta väärä PHP-moduuli \"memcache\" on asennettu. \\OC\\Memcache\\Memcached tukee vain moduulia \"memcached\", ei moduulia \"memcache\". Lisätietoja <a target=\"_blank\" href=\"{wikiLink}\">memcachedin wikissä molemmista moduuleista</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Jotkin tiedostot eivät läpäisseet eheystarkistusta. Lisätietoja ongelman selvittämiseksi on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Luettelo virheellisistä tiedostoista…</a> / <a href=\"{rescanEndpoint}\">Tarkista uudelleen…</a>)",
diff --git a/core/l10n/fr.js b/core/l10n/fr.js
index 0067bbbeecd..6fd63ffff6c 100644
--- a/core/l10n/fr.js
+++ b/core/l10n/fr.js
@@ -123,7 +123,6 @@ OC.L10N.register(
"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." : "Ce serveur ne peut se connecter à internet. Cela signifie que certaines fonctionnalités, telles que le montage de supports de stockage distants, les notifications de mises à jour ou l'installation d'applications tierces ne fonctionneront pas. L'accès aux fichiers à distance, ainsi que les notifications par mail peuvent aussi être indisponibles. Il est recommandé d'activer la connexion internet pour ce serveur si vous souhaitez disposer de l'ensemble des fonctionnalités offertes.",
"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\" href=\"{docLink}\">documentation</a>." : "Aucun cache mémoire n'est configuré. Si possible, configurez un cache pour augmenter les performances. Consultez la <a target=\"_blank\" href=\"{docLink}\">documentation</a> pour avoir plus d'informations à ce sujet.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom n'est pas lisible par PHP, ce qui est fortement déconseillé pour des raisons de sécurité. Consultez la <a target=\"_blank\" href=\"{docLink}\">documentation</a> pour avoir plus d'informations à ce sujet.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Votre version de PHP ({version}) <a target=\"_blank\" href=\"{phpLink}\">n'est plus prise en charge par les créateurs de PHP</a>. Nous vous recommandons de mettre à niveau votre installation de PHP pour bénéficier de meilleures performances et des mises à jour de sécurité fournies par PHP.",
"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\" href=\"{docLink}\">documentation</a>." : "La configuration des entêtes du proxy inverse est incorrecte, ou vous accédez à ownCloud depuis un proxy de confiance. Si vous n'êtes pas en train d’accéder à ownCloud depuis un proxy de confiance, ceci est un problème de sécurité qui peut permettre à un attaquant de masquer sa véritable adresse IP. Consultez la <a target=\"_blank\" href=\"{docLink}\">documentation</a> pour avoir plus d'informations à ce sujet.",
"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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "\"memcached\" est configuré comme cache distribué, mais le module installé est \"memcache\". \\OC\\Memcache\\Memcached ne prend en charge que \"memcached\" et non \"memcache\". <a target=\"_blank\" href=\"{wikiLink}\">Consulter le wiki de memcached à propos de ces deux modules.</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Des fichiers n'ont pas passé la vérification d’intégrité. \nConsultez la <a target=\"_blank\" href=\"{docLink}\">documentation</a> pour avoir plus d'informations sur comment résoudre ce problème. \n(<a target=\"_blank\" href=\"{codeIntegrityDownloadEndpoint}\">Liste des fichiers non valides…</a> / <a href=\"{rescanEndpoint}\">Relancer…</a>)",
diff --git a/core/l10n/fr.json b/core/l10n/fr.json
index fd3e875fcb8..981a28a0617 100644
--- a/core/l10n/fr.json
+++ b/core/l10n/fr.json
@@ -121,7 +121,6 @@
"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." : "Ce serveur ne peut se connecter à internet. Cela signifie que certaines fonctionnalités, telles que le montage de supports de stockage distants, les notifications de mises à jour ou l'installation d'applications tierces ne fonctionneront pas. L'accès aux fichiers à distance, ainsi que les notifications par mail peuvent aussi être indisponibles. Il est recommandé d'activer la connexion internet pour ce serveur si vous souhaitez disposer de l'ensemble des fonctionnalités offertes.",
"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\" href=\"{docLink}\">documentation</a>." : "Aucun cache mémoire n'est configuré. Si possible, configurez un cache pour augmenter les performances. Consultez la <a target=\"_blank\" href=\"{docLink}\">documentation</a> pour avoir plus d'informations à ce sujet.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom n'est pas lisible par PHP, ce qui est fortement déconseillé pour des raisons de sécurité. Consultez la <a target=\"_blank\" href=\"{docLink}\">documentation</a> pour avoir plus d'informations à ce sujet.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Votre version de PHP ({version}) <a target=\"_blank\" href=\"{phpLink}\">n'est plus prise en charge par les créateurs de PHP</a>. Nous vous recommandons de mettre à niveau votre installation de PHP pour bénéficier de meilleures performances et des mises à jour de sécurité fournies par PHP.",
"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\" href=\"{docLink}\">documentation</a>." : "La configuration des entêtes du proxy inverse est incorrecte, ou vous accédez à ownCloud depuis un proxy de confiance. Si vous n'êtes pas en train d’accéder à ownCloud depuis un proxy de confiance, ceci est un problème de sécurité qui peut permettre à un attaquant de masquer sa véritable adresse IP. Consultez la <a target=\"_blank\" href=\"{docLink}\">documentation</a> pour avoir plus d'informations à ce sujet.",
"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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "\"memcached\" est configuré comme cache distribué, mais le module installé est \"memcache\". \\OC\\Memcache\\Memcached ne prend en charge que \"memcached\" et non \"memcache\". <a target=\"_blank\" href=\"{wikiLink}\">Consulter le wiki de memcached à propos de ces deux modules.</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Des fichiers n'ont pas passé la vérification d’intégrité. \nConsultez la <a target=\"_blank\" href=\"{docLink}\">documentation</a> pour avoir plus d'informations sur comment résoudre ce problème. \n(<a target=\"_blank\" href=\"{codeIntegrityDownloadEndpoint}\">Liste des fichiers non valides…</a> / <a href=\"{rescanEndpoint}\">Relancer…</a>)",
diff --git a/core/l10n/he.js b/core/l10n/he.js
index 61846d6172f..3a3f52c34ec 100644
--- a/core/l10n/he.js
+++ b/core/l10n/he.js
@@ -123,7 +123,7 @@ OC.L10N.register(
"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." : "לשרת זה אין חיבור אינטרנט פעיל. לפיכך חלק מהתכונות כגון עגינת אחסון חיצוני, הודעות על עדכונים או התקנת יישומי צד שלישי לא יעבדו. ייתכן ולא יעבדו גם כניסה לקבצים מבחוץ ושליחת הודעות דואר אלקטרוני. אנו ממליצים לאפשר חיבור אינטרנט לשרת זה אם ברצונך שיהיו לך את כל התכונות.",
"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\" href=\"{docLink}\">documentation</a>." : "לא הוגדר memory cache. על מנת לשפר את הביצועים יש להגדיר memcache אם קיים. מידע נוסף ניתן לצפות ב- <a target=\"_blank\" href=\"{docLink}\">מסמכי התיעוד</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom אינו ניתן לקריאה על ידי PHP אשר אינו מומלץ בשל סיבות אבטחה. מידע נוסף ניתן לראות ב- <a target=\"_blank\" href=\"{docLink}\">מסמכי התיעוד</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "גרסת ה- PHP שלך ({version}) אינה <a target=\"_blank\" href=\"{phpLink}\">נתמכת כבר על ידי PHP</a>. אנו ממליצים לשדרג את גרסת ה- PHP ולהנות מהיתרון של עדכוני האבטחה והביצועים שמספק ה- PHP.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "כרגע המערכת מריצה PHP {version}. מומלץ מאוד לשדרג את גרסת ה- PHP vשלך כדי לנצל את <a target=\"_blank\" href=\"{phpLink}\">עדכוני הביצועים והאבטחה המופקים על ידי קבוצת ה- PHP</a> ברגע שההפצה אליך תתמוך בזה.",
"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\" href=\"{docLink}\">documentation</a>." : "תצורת כותרות פרוקסי ההפוכה אינה נכונה, או שהגישה ל- ownCloud מתבצעת מ- proxy אמין. אם הגישה ל- ownCloud אינה מ- proxy אמין, מדובר בבעיית אבטחה שמאפשרת לתוקף לזיין את כתובת ה- IP כגלויה ל- ownCloud. מידע נוסף ניתן למצוא ב- <a target=\"_blank\" href=\"{docLink}\">מסמכי התיעוד</a> שלנו.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached מוגדר כמטמון מופץ, אבל מותקן מודול PHP לא נכון \"memcache\". רק \\OC\\Memcache\\Memcached תומך ב- \"memcached\" אבל לא ב- \"memcache\". ניתן לצפות ב- <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki בנושא שני המודולים</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "חלק מהקבצים לא עברו את בדיקת התקינות. מידע נוסף איך לפתור את הבעיה ניתן למצוא ב- to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">מסמכי התיעוד</a> שלנו. (<a href=\"{codeIntegrityDownloadEndpoint}\">רשימה של קבצים לא תקינים…</a> / <a href=\"{rescanEndpoint}\">סריקה מחדש…</a>)",
diff --git a/core/l10n/he.json b/core/l10n/he.json
index 6ae708f005b..94bb51ab440 100644
--- a/core/l10n/he.json
+++ b/core/l10n/he.json
@@ -121,7 +121,7 @@
"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." : "לשרת זה אין חיבור אינטרנט פעיל. לפיכך חלק מהתכונות כגון עגינת אחסון חיצוני, הודעות על עדכונים או התקנת יישומי צד שלישי לא יעבדו. ייתכן ולא יעבדו גם כניסה לקבצים מבחוץ ושליחת הודעות דואר אלקטרוני. אנו ממליצים לאפשר חיבור אינטרנט לשרת זה אם ברצונך שיהיו לך את כל התכונות.",
"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\" href=\"{docLink}\">documentation</a>." : "לא הוגדר memory cache. על מנת לשפר את הביצועים יש להגדיר memcache אם קיים. מידע נוסף ניתן לצפות ב- <a target=\"_blank\" href=\"{docLink}\">מסמכי התיעוד</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom אינו ניתן לקריאה על ידי PHP אשר אינו מומלץ בשל סיבות אבטחה. מידע נוסף ניתן לראות ב- <a target=\"_blank\" href=\"{docLink}\">מסמכי התיעוד</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "גרסת ה- PHP שלך ({version}) אינה <a target=\"_blank\" href=\"{phpLink}\">נתמכת כבר על ידי PHP</a>. אנו ממליצים לשדרג את גרסת ה- PHP ולהנות מהיתרון של עדכוני האבטחה והביצועים שמספק ה- PHP.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "כרגע המערכת מריצה PHP {version}. מומלץ מאוד לשדרג את גרסת ה- PHP vשלך כדי לנצל את <a target=\"_blank\" href=\"{phpLink}\">עדכוני הביצועים והאבטחה המופקים על ידי קבוצת ה- PHP</a> ברגע שההפצה אליך תתמוך בזה.",
"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\" href=\"{docLink}\">documentation</a>." : "תצורת כותרות פרוקסי ההפוכה אינה נכונה, או שהגישה ל- ownCloud מתבצעת מ- proxy אמין. אם הגישה ל- ownCloud אינה מ- proxy אמין, מדובר בבעיית אבטחה שמאפשרת לתוקף לזיין את כתובת ה- IP כגלויה ל- ownCloud. מידע נוסף ניתן למצוא ב- <a target=\"_blank\" href=\"{docLink}\">מסמכי התיעוד</a> שלנו.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached מוגדר כמטמון מופץ, אבל מותקן מודול PHP לא נכון \"memcache\". רק \\OC\\Memcache\\Memcached תומך ב- \"memcached\" אבל לא ב- \"memcache\". ניתן לצפות ב- <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki בנושא שני המודולים</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "חלק מהקבצים לא עברו את בדיקת התקינות. מידע נוסף איך לפתור את הבעיה ניתן למצוא ב- to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">מסמכי התיעוד</a> שלנו. (<a href=\"{codeIntegrityDownloadEndpoint}\">רשימה של קבצים לא תקינים…</a> / <a href=\"{rescanEndpoint}\">סריקה מחדש…</a>)",
diff --git a/core/l10n/hu_HU.js b/core/l10n/hu_HU.js
index d372a6c40ef..536dec96ca9 100644
--- a/core/l10n/hu_HU.js
+++ b/core/l10n/hu_HU.js
@@ -7,14 +7,14 @@ OC.L10N.register(
"Turned off maintenance mode" : "A karbantartási mód kikapcsolva",
"Maintenance mode is kept active" : "Karbantartási mód aktiválva marad",
"Updating database schema" : "Adatbázis séma frissítése",
- "Updated database" : "Az adatbázis frissítése megtörtént",
+ "Updated database" : "Adatbázis frissítve",
"Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Annak ellenőrzése, hogy az adatbázis sémát lehet-e frissíteni (ez hosszabb ideig is eltarthat az adatbázis méretétől függően)",
"Checked database schema update" : "Az adatbázis séma frissítését ellenőriztük",
"Checking updates of apps" : "Alkalmazások frissítésének ellenőrzése",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Annak ellenőrzése, hogy a(z) %s adatbázis sémáját lehet-e frissíteni (ez hosszabb ideig is eltarthat az adatbázis méretétől függően)",
"Checked database schema update for apps" : "Az adatbázis séma frissítését ellenőriztük az alkalmazásokra vontakozóan",
- "Updated \"%s\" to %s" : "Frissítettük \"%s\"-t erre: %s",
- "Repair warning: " : "Javítás figyelmeztetés:",
+ "Updated \"%s\" to %s" : "\"%s\" frissítve erre: %s",
+ "Repair warning: " : "Javítási figyelmeztetés:",
"Repair error: " : "Javítás hiba:",
"Set log level to debug" : "Naplózási szint beállítása hibakeresésre",
"Reset log level" : "Naplózási szint visszaállítása",
@@ -22,7 +22,7 @@ OC.L10N.register(
"Finished code integrity check" : "Kódintegritás ellenőrzés befejezve!",
"%s (3rdparty)" : "%s (harmadik fél által)",
"%s (incompatible)" : "%s (nem kompatibilis)",
- "Following apps have been disabled: %s" : "A következő applikációk lettek tiltva: %s",
+ "Following apps have been disabled: %s" : "A következő alkalmazások le lettek tiltva: %s",
"Already up to date" : "Már a legfrissebb változat",
"Please select a file." : "Kérjük, válassz egy fájlt.",
"File is too big" : "A fájl túl nagy",
@@ -109,8 +109,8 @@ OC.L10N.register(
"If you select both versions, the copied file will have a number added to its name." : "Ha mindkét verziót kiválasztja, a másolt fájlok neve sorszámozva lesz.",
"Cancel" : "Mégsem",
"Continue" : "Folytatás",
- "(all selected)" : "(az összes ki lett választva)",
- "({count} selected)" : "({count} lett kiválasztva)",
+ "(all selected)" : "(összes kiválasztva)",
+ "({count} selected)" : "({count} kiválasztva)",
"Error loading file exists template" : "Hiba a létezőfájl-sablon betöltésekor",
"Very weak password" : "Nagyon gyenge jelszó",
"Weak password" : "Gyenge jelszó",
@@ -118,11 +118,13 @@ 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.",
- "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 applikációk nem működnek. A fájlok távoli elérése és az email é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 akar.",
- "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom nem olvasható a PHP számára, mely nagy biztonsági probléma. Bővebb információt találhatsz a <a target=\"_blank\" href=\"{docLink}\">dokumentációban</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "A PHP verziód ({version}) többé nem támogatott a <a target=\"_blank\" href=\"{phpLink}\">PHP által</a>. Azt javasoljuk, hogy frissítsd a PHP verziód, hogy kitud használni a teljesítménybeli és biztonsági javításokat.",
+ "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" 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\" 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\" 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\" 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\" 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\" href=\"{docLink}\">dokumentációban</a> találhat.",
+ "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" 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\" 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áljai valószínűleg elérhetőek az internetről. 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 mogassa ki az adatokat a webszerver gyökérkönyvtárából.",
+ "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",
"Shared" : "Megosztott",
@@ -134,33 +136,37 @@ OC.L10N.register(
"The public link will expire no later than {days} days after it is created" : "A nyilvános hivatkozás érvényessége legkorábban {days} nappal a létrehozása után jár csak le",
"Set expiration date" : "Legyen lejárati idő",
"Expiration" : "Lejárat",
- "Expiration date" : "A lejárati idő",
+ "Expiration date" : "Lejárati idő",
"Choose a password for the public link" : "Válasszon egy jelszót a nyilvános linkhez",
"Sending ..." : "Küldés ...",
- "Email sent" : "Az e-mailt elküldtük",
+ "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",
- "Password protect" : "Jelszóval is védem",
+ "Password protect" : "Jelszóval védett",
"Password" : "Jelszó",
"Allow editing" : "Szerkesztés engedélyezése",
- "Email link to person" : "Email címre küldjük el",
- "Send" : "Küldjük el",
- "Shared with you and the group {group} by {owner}" : "Megosztotta Önnel és a(z) {group} csoporttal: {owner}",
- "Shared with you by {owner}" : "Megosztotta Önnel: {owner}",
+ "Email link to person" : "Hivatkozás elküldése e-mail címre",
+ "Send" : "Küldés",
+ "Shared with you and the group {group} by {owner}" : "{owner} megosztotta Önnel és a(z) {group} csoporttal",
+ "Shared with you by {owner}" : "{owner} megosztotta Önnel",
"group" : "csoport",
"remote" : "távoli",
"notify by email" : "e-mail értesítés",
- "Unshare" : "A megosztás visszavonása",
- "can share" : "megosztható",
- "can edit" : "módosíthat",
+ "Unshare" : "Megosztás visszavonása",
+ "can share" : "megoszthatja",
+ "can edit" : "szerkesztheti",
"create" : "létrehoz",
- "change" : "változtatás",
+ "change" : "módosít",
"delete" : "töröl",
"access control" : "jogosultság",
"Could not unshare" : "Nem sikerült visszavonni a megosztást",
"Share details could not be loaded for this item." : "A megosztás részletei nem lehet betölteni ehhez az elemhez.",
+ "No users or groups found for {search}" : "{search} keresésre nem található felhasználó vagy csoport",
"An error occured. Please try again" : "Hiba történt. Kérjük, próbáld újra!",
+ "{sharee} (group)" : "{sharee} (csoport)",
+ "{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 users or groups …" : "Megosztás felhasználókkal vagy csoportokkal ...",
@@ -169,6 +175,7 @@ OC.L10N.register(
"Warning" : "Figyelmeztetés",
"Error while sending notification" : "Hiba történt az értesítő küldése közben",
"Non-existing tag #{tag}" : "Nem létező címke #{tag}",
+ "not assignable" : "nem hozzárendelhető",
"invisible" : "láthatatlan",
"({scope})" : "({scope})",
"Delete" : "Törlés",
@@ -182,15 +189,15 @@ OC.L10N.register(
"unknown text" : "ismeretlen szöveg",
"Hello world!" : "Üdv, világ!",
"sunny" : "napos",
- "Hello {name}, the weather is {weather}" : "Üdv, {name}, {weather} időnk van",
- "Hello {name}" : "Hello {name}",
+ "Hello {name}, the weather is {weather}" : "Üdv {name}, {weather} időnk van",
+ "Hello {name}" : "Üdv {name}!",
"new" : "új",
"_download %n file_::_download %n files_" : ["%n fájl letöltése","%n fájl letöltése"],
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "A frissítés folyamatban van, az oldal elhagyása néhány környezetben lehet, hogy megszakítja a folyamatot.",
"Updating {productName} to version {version}, this may take a while." : " {productName} frissítése zajlik erre a verzióra: {version}. Ez eltarthat egy darabig.",
"An error occurred." : "Hiba történt.",
"Please reload the page." : "Kérjük frissítse az oldalt!",
- "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Frissítés sikertelen. Bővebb információért <a href=\"{url}\">keresd fel a fórumunkat</a> a probléma lefedéséért.",
+ "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Frissítés sikertelen. Bővebb információért <a href=\"{url}\">keresse fel a fórumunkat</a> a probléma lefedéséért.",
"The update was unsuccessful. " : "A frissítés nem sikerült.",
"The update was successful. There were warnings." : "A frissítés sikerült. Figyelmeztetések találhatók.",
"The update was successful. Redirecting you to ownCloud now." : "A frissítés sikeres volt. Visszairányítjuk az ownCloud szolgáltatáshoz.",
@@ -214,11 +221,11 @@ OC.L10N.register(
"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.",
"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",
+ "The share will expire on %s." : "A megosztás lejár ekkor: %s.",
"Cheers!" : "Üdv.",
"Internal Server Error" : "Belső szerver hiba",
"The server encountered an internal error and was unable to complete your request." : "A szerver belső hibával találkozott és nem tudja teljesíteni a kérést.",
- "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Kérlek, keresd fel a szerver adminisztrátort, ha ez a hiba ismételten, többször előfordulna. Mellékeld a technikai részleteket a lenti jelentésbe.",
+ "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Kérjük keresse fel a szerver rendszergazdáját, ha ez a hiba ismételten, többször előfordulna. Kérjük, mellékelje a technikai részleteket a lenti jelentésbe.",
"More details can be found in the server log." : "További részletek a szerver naplóban találhatók.",
"Technical details" : "Technikai adatok",
"Remote Address: %s" : "Távoli cím: %s",
@@ -254,7 +261,7 @@ 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érem {linkstart}engedélyezze a JavaScript-et{linkend} és frissítse a lapot.",
+ "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",
"Search" : "Keresés",
"Server side authentication failed!" : "A szerveroldali hitelesítés sikertelen!",
@@ -263,25 +270,25 @@ OC.L10N.register(
"Please try again or contact your administrator." : "Kérem próbálja ú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." : "Rossz jelszó.",
+ "Wrong password." : "Hibás jelszó.",
"Stay logged in" : "Maradjon bejelentkezve",
"Alternative Logins" : "Alternatív bejelentkezés",
"Use the following link to reset your password: {link}" : "Használja ezt a linket a jelszó ismételt beállításához: {link}",
- "New password" : "Az új jelszó",
+ "New password" : "Új jelszó",
"New Password" : "Új jelszó",
"Reset password" : "Jelszó-visszaállítás",
"This ownCloud instance is currently in single user mode." : "Ez az ownCloud szolgáltatás jelenleg egyfelhasználós üzemmódban működik.",
"This means only administrators can use the instance." : "Ez azt jelenti, hogy csak az adminisztrátor használhatja ezt a példányt",
- "Contact your system administrator if this message persists or appeared unexpectedly." : "Ha ez az üzenet ismételten vagy indokolatlanul megjelenik, akkor keresse a rendszergazda segítségét!",
- "Thank you for your patience." : "Köszönjük a türelmét.",
- "You are accessing the server from an untrusted domain." : "A kiszolgálót nem megbízható tartományból éri el.",
+ "Contact your system administrator if this message persists or appeared unexpectedly." : "Ha ez az üzenet ismételten vagy indokolatlanul megjelenik, akkor keresse fel a rendszergazdáját!",
+ "Thank you for your patience." : "Köszönjük a türelmét!",
+ "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 tartomány megbízhatóvá tételéhez.",
- "Add \"%s\" as trusted domain" : "Adjuk hozzá \"%s\"-t a megbízható tartományokhoz!",
+ "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",
"%s will be updated to version %s" : "%s frissítve lesz erre a verzióra: %s",
- "These apps will be updated:" : "Ezek az alkalmazások lesznek frissítve:",
- "These incompatible apps will be disabled:" : "Ezek az inkompatibilis alkalmazásik tiltva lesznek:",
+ "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.",
"Start update" : "A frissítés megkezdése",
diff --git a/core/l10n/hu_HU.json b/core/l10n/hu_HU.json
index a8f5da8d898..ed96f2f01ca 100644
--- a/core/l10n/hu_HU.json
+++ b/core/l10n/hu_HU.json
@@ -5,14 +5,14 @@
"Turned off maintenance mode" : "A karbantartási mód kikapcsolva",
"Maintenance mode is kept active" : "Karbantartási mód aktiválva marad",
"Updating database schema" : "Adatbázis séma frissítése",
- "Updated database" : "Az adatbázis frissítése megtörtént",
+ "Updated database" : "Adatbázis frissítve",
"Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Annak ellenőrzése, hogy az adatbázis sémát lehet-e frissíteni (ez hosszabb ideig is eltarthat az adatbázis méretétől függően)",
"Checked database schema update" : "Az adatbázis séma frissítését ellenőriztük",
"Checking updates of apps" : "Alkalmazások frissítésének ellenőrzése",
"Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Annak ellenőrzése, hogy a(z) %s adatbázis sémáját lehet-e frissíteni (ez hosszabb ideig is eltarthat az adatbázis méretétől függően)",
"Checked database schema update for apps" : "Az adatbázis séma frissítését ellenőriztük az alkalmazásokra vontakozóan",
- "Updated \"%s\" to %s" : "Frissítettük \"%s\"-t erre: %s",
- "Repair warning: " : "Javítás figyelmeztetés:",
+ "Updated \"%s\" to %s" : "\"%s\" frissítve erre: %s",
+ "Repair warning: " : "Javítási figyelmeztetés:",
"Repair error: " : "Javítás hiba:",
"Set log level to debug" : "Naplózási szint beállítása hibakeresésre",
"Reset log level" : "Naplózási szint visszaállítása",
@@ -20,7 +20,7 @@
"Finished code integrity check" : "Kódintegritás ellenőrzés befejezve!",
"%s (3rdparty)" : "%s (harmadik fél által)",
"%s (incompatible)" : "%s (nem kompatibilis)",
- "Following apps have been disabled: %s" : "A következő applikációk lettek tiltva: %s",
+ "Following apps have been disabled: %s" : "A következő alkalmazások le lettek tiltva: %s",
"Already up to date" : "Már a legfrissebb változat",
"Please select a file." : "Kérjük, válassz egy fájlt.",
"File is too big" : "A fájl túl nagy",
@@ -107,8 +107,8 @@
"If you select both versions, the copied file will have a number added to its name." : "Ha mindkét verziót kiválasztja, a másolt fájlok neve sorszámozva lesz.",
"Cancel" : "Mégsem",
"Continue" : "Folytatás",
- "(all selected)" : "(az összes ki lett választva)",
- "({count} selected)" : "({count} lett kiválasztva)",
+ "(all selected)" : "(összes kiválasztva)",
+ "({count} selected)" : "({count} kiválasztva)",
"Error loading file exists template" : "Hiba a létezőfájl-sablon betöltésekor",
"Very weak password" : "Nagyon gyenge jelszó",
"Weak password" : "Gyenge jelszó",
@@ -116,11 +116,13 @@
"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.",
- "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 applikációk nem működnek. A fájlok távoli elérése és az email é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 akar.",
- "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom nem olvasható a PHP számára, mely nagy biztonsági probléma. Bővebb információt találhatsz a <a target=\"_blank\" href=\"{docLink}\">dokumentációban</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "A PHP verziód ({version}) többé nem támogatott a <a target=\"_blank\" href=\"{phpLink}\">PHP által</a>. Azt javasoljuk, hogy frissítsd a PHP verziód, hogy kitud használni a teljesítménybeli és biztonsági javításokat.",
+ "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" 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\" 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\" 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\" 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\" 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\" href=\"{docLink}\">dokumentációban</a> találhat.",
+ "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" 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\" 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áljai valószínűleg elérhetőek az internetről. 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 mogassa ki az adatokat a webszerver gyökérkönyvtárából.",
+ "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",
"Shared" : "Megosztott",
@@ -132,33 +134,37 @@
"The public link will expire no later than {days} days after it is created" : "A nyilvános hivatkozás érvényessége legkorábban {days} nappal a létrehozása után jár csak le",
"Set expiration date" : "Legyen lejárati idő",
"Expiration" : "Lejárat",
- "Expiration date" : "A lejárati idő",
+ "Expiration date" : "Lejárati idő",
"Choose a password for the public link" : "Válasszon egy jelszót a nyilvános linkhez",
"Sending ..." : "Küldés ...",
- "Email sent" : "Az e-mailt elküldtük",
+ "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",
- "Password protect" : "Jelszóval is védem",
+ "Password protect" : "Jelszóval védett",
"Password" : "Jelszó",
"Allow editing" : "Szerkesztés engedélyezése",
- "Email link to person" : "Email címre küldjük el",
- "Send" : "Küldjük el",
- "Shared with you and the group {group} by {owner}" : "Megosztotta Önnel és a(z) {group} csoporttal: {owner}",
- "Shared with you by {owner}" : "Megosztotta Önnel: {owner}",
+ "Email link to person" : "Hivatkozás elküldése e-mail címre",
+ "Send" : "Küldés",
+ "Shared with you and the group {group} by {owner}" : "{owner} megosztotta Önnel és a(z) {group} csoporttal",
+ "Shared with you by {owner}" : "{owner} megosztotta Önnel",
"group" : "csoport",
"remote" : "távoli",
"notify by email" : "e-mail értesítés",
- "Unshare" : "A megosztás visszavonása",
- "can share" : "megosztható",
- "can edit" : "módosíthat",
+ "Unshare" : "Megosztás visszavonása",
+ "can share" : "megoszthatja",
+ "can edit" : "szerkesztheti",
"create" : "létrehoz",
- "change" : "változtatás",
+ "change" : "módosít",
"delete" : "töröl",
"access control" : "jogosultság",
"Could not unshare" : "Nem sikerült visszavonni a megosztást",
"Share details could not be loaded for this item." : "A megosztás részletei nem lehet betölteni ehhez az elemhez.",
+ "No users or groups found for {search}" : "{search} keresésre nem található felhasználó vagy csoport",
"An error occured. Please try again" : "Hiba történt. Kérjük, próbáld újra!",
+ "{sharee} (group)" : "{sharee} (csoport)",
+ "{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 users or groups …" : "Megosztás felhasználókkal vagy csoportokkal ...",
@@ -167,6 +173,7 @@
"Warning" : "Figyelmeztetés",
"Error while sending notification" : "Hiba történt az értesítő küldése közben",
"Non-existing tag #{tag}" : "Nem létező címke #{tag}",
+ "not assignable" : "nem hozzárendelhető",
"invisible" : "láthatatlan",
"({scope})" : "({scope})",
"Delete" : "Törlés",
@@ -180,15 +187,15 @@
"unknown text" : "ismeretlen szöveg",
"Hello world!" : "Üdv, világ!",
"sunny" : "napos",
- "Hello {name}, the weather is {weather}" : "Üdv, {name}, {weather} időnk van",
- "Hello {name}" : "Hello {name}",
+ "Hello {name}, the weather is {weather}" : "Üdv {name}, {weather} időnk van",
+ "Hello {name}" : "Üdv {name}!",
"new" : "új",
"_download %n file_::_download %n files_" : ["%n fájl letöltése","%n fájl letöltése"],
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "A frissítés folyamatban van, az oldal elhagyása néhány környezetben lehet, hogy megszakítja a folyamatot.",
"Updating {productName} to version {version}, this may take a while." : " {productName} frissítése zajlik erre a verzióra: {version}. Ez eltarthat egy darabig.",
"An error occurred." : "Hiba történt.",
"Please reload the page." : "Kérjük frissítse az oldalt!",
- "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Frissítés sikertelen. Bővebb információért <a href=\"{url}\">keresd fel a fórumunkat</a> a probléma lefedéséért.",
+ "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Frissítés sikertelen. Bővebb információért <a href=\"{url}\">keresse fel a fórumunkat</a> a probléma lefedéséért.",
"The update was unsuccessful. " : "A frissítés nem sikerült.",
"The update was successful. There were warnings." : "A frissítés sikerült. Figyelmeztetések találhatók.",
"The update was successful. Redirecting you to ownCloud now." : "A frissítés sikeres volt. Visszairányítjuk az ownCloud szolgáltatáshoz.",
@@ -212,11 +219,11 @@
"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.",
"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",
+ "The share will expire on %s." : "A megosztás lejár ekkor: %s.",
"Cheers!" : "Üdv.",
"Internal Server Error" : "Belső szerver hiba",
"The server encountered an internal error and was unable to complete your request." : "A szerver belső hibával találkozott és nem tudja teljesíteni a kérést.",
- "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Kérlek, keresd fel a szerver adminisztrátort, ha ez a hiba ismételten, többször előfordulna. Mellékeld a technikai részleteket a lenti jelentésbe.",
+ "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Kérjük keresse fel a szerver rendszergazdáját, ha ez a hiba ismételten, többször előfordulna. Kérjük, mellékelje a technikai részleteket a lenti jelentésbe.",
"More details can be found in the server log." : "További részletek a szerver naplóban találhatók.",
"Technical details" : "Technikai adatok",
"Remote Address: %s" : "Távoli cím: %s",
@@ -252,7 +259,7 @@
"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érem {linkstart}engedélyezze a JavaScript-et{linkend} és frissítse a lapot.",
+ "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",
"Search" : "Keresés",
"Server side authentication failed!" : "A szerveroldali hitelesítés sikertelen!",
@@ -261,25 +268,25 @@
"Please try again or contact your administrator." : "Kérem próbálja ú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." : "Rossz jelszó.",
+ "Wrong password." : "Hibás jelszó.",
"Stay logged in" : "Maradjon bejelentkezve",
"Alternative Logins" : "Alternatív bejelentkezés",
"Use the following link to reset your password: {link}" : "Használja ezt a linket a jelszó ismételt beállításához: {link}",
- "New password" : "Az új jelszó",
+ "New password" : "Új jelszó",
"New Password" : "Új jelszó",
"Reset password" : "Jelszó-visszaállítás",
"This ownCloud instance is currently in single user mode." : "Ez az ownCloud szolgáltatás jelenleg egyfelhasználós üzemmódban működik.",
"This means only administrators can use the instance." : "Ez azt jelenti, hogy csak az adminisztrátor használhatja ezt a példányt",
- "Contact your system administrator if this message persists or appeared unexpectedly." : "Ha ez az üzenet ismételten vagy indokolatlanul megjelenik, akkor keresse a rendszergazda segítségét!",
- "Thank you for your patience." : "Köszönjük a türelmét.",
- "You are accessing the server from an untrusted domain." : "A kiszolgálót nem megbízható tartományból éri el.",
+ "Contact your system administrator if this message persists or appeared unexpectedly." : "Ha ez az üzenet ismételten vagy indokolatlanul megjelenik, akkor keresse fel a rendszergazdáját!",
+ "Thank you for your patience." : "Köszönjük a türelmét!",
+ "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 tartomány megbízhatóvá tételéhez.",
- "Add \"%s\" as trusted domain" : "Adjuk hozzá \"%s\"-t a megbízható tartományokhoz!",
+ "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",
"%s will be updated to version %s" : "%s frissítve lesz erre a verzióra: %s",
- "These apps will be updated:" : "Ezek az alkalmazások lesznek frissítve:",
- "These incompatible apps will be disabled:" : "Ezek az inkompatibilis alkalmazásik tiltva lesznek:",
+ "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.",
"Start update" : "A frissítés megkezdése",
diff --git a/core/l10n/is.js b/core/l10n/is.js
index 40388ee163e..57090fe4c93 100644
--- a/core/l10n/is.js
+++ b/core/l10n/is.js
@@ -122,7 +122,6 @@ OC.L10N.register(
"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." : "Þessi þjónn er ekki með virka nettengingu. Þetta þýðir að sumir eiginleikar eins og að virkja ytri gagnageymslu, tilkynningar um uppfærslur eða uppsetningu á forritum þriðja aðila, mun ekki virka. Fjartengdur aðgangur að skrám og sending tilkynninga í tölvupósti virka líklega ekki heldur. Við leggjum til að internettenging sé virkjuð fyrir þennan vefþjón ef þú vilt hafa alla eiginleika tiltæka.",
"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\" href=\"{docLink}\">documentation</a>." : "Ekkert skyndiminni (cache) hefur verið stillt. Til að auka afköst ættirðu að setja upp skyndiminni (með memcache) ef það er tiltækt. Hægt er að finna nánari upplýsingar um þetta í <a target=\"_blank\" href=\"{docLink}\">hjálparskjölum</a> okkar.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom er ekki lesanlegt af PHP sem er mjög óráðlegt af öryggisástæðum. Hægt er að finna nánari upplýsingar um þetta í <a target=\"_blank\" href=\"{docLink}\">hjálparskjölum</a> okkar.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "PHP-útgáfan þín, ({version}) er ekki lengur <a target=\"_blank\" href=\"{phpLink}\">studd af PHP</a>. Við hvetjum þig til að uppfæra PHP útgáfuna til að geta nýtt aukin afköst og betra öryggi með uppfærslunum frá PHP.",
"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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached er sett upp sem dreift skyndiminni, en hinsvegar er ranga PHP-einingin \"memcache\" uppsett. \\OC\\Memcache\\Memcached styður einungis \"memcached\" en ekki \"memcache\". Skoðaðu <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki-síðurnar um báðar einingarnar</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Sumar skrár hafa ekki staðist áreiðanleikaprófun. Hægt er að finna nánari upplýsingar um þetta í <a target=\"_blank\" href=\"{docLink}\">hjálparskjölum</a> okkar. (<a href=\"{codeIntegrityDownloadEndpoint}\">Listi yfir ógildar skrár…</a> / <a href=\"{rescanEndpoint}\">Endurskanna…</a>)",
"Error occurred while checking server setup" : "Villa kom upp við athugun á uppsetningu þjóns",
diff --git a/core/l10n/is.json b/core/l10n/is.json
index cef73059881..978f09804a0 100644
--- a/core/l10n/is.json
+++ b/core/l10n/is.json
@@ -120,7 +120,6 @@
"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." : "Þessi þjónn er ekki með virka nettengingu. Þetta þýðir að sumir eiginleikar eins og að virkja ytri gagnageymslu, tilkynningar um uppfærslur eða uppsetningu á forritum þriðja aðila, mun ekki virka. Fjartengdur aðgangur að skrám og sending tilkynninga í tölvupósti virka líklega ekki heldur. Við leggjum til að internettenging sé virkjuð fyrir þennan vefþjón ef þú vilt hafa alla eiginleika tiltæka.",
"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\" href=\"{docLink}\">documentation</a>." : "Ekkert skyndiminni (cache) hefur verið stillt. Til að auka afköst ættirðu að setja upp skyndiminni (með memcache) ef það er tiltækt. Hægt er að finna nánari upplýsingar um þetta í <a target=\"_blank\" href=\"{docLink}\">hjálparskjölum</a> okkar.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom er ekki lesanlegt af PHP sem er mjög óráðlegt af öryggisástæðum. Hægt er að finna nánari upplýsingar um þetta í <a target=\"_blank\" href=\"{docLink}\">hjálparskjölum</a> okkar.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "PHP-útgáfan þín, ({version}) er ekki lengur <a target=\"_blank\" href=\"{phpLink}\">studd af PHP</a>. Við hvetjum þig til að uppfæra PHP útgáfuna til að geta nýtt aukin afköst og betra öryggi með uppfærslunum frá PHP.",
"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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached er sett upp sem dreift skyndiminni, en hinsvegar er ranga PHP-einingin \"memcache\" uppsett. \\OC\\Memcache\\Memcached styður einungis \"memcached\" en ekki \"memcache\". Skoðaðu <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki-síðurnar um báðar einingarnar</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Sumar skrár hafa ekki staðist áreiðanleikaprófun. Hægt er að finna nánari upplýsingar um þetta í <a target=\"_blank\" href=\"{docLink}\">hjálparskjölum</a> okkar. (<a href=\"{codeIntegrityDownloadEndpoint}\">Listi yfir ógildar skrár…</a> / <a href=\"{rescanEndpoint}\">Endurskanna…</a>)",
"Error occurred while checking server setup" : "Villa kom upp við athugun á uppsetningu þjóns",
diff --git a/core/l10n/it.js b/core/l10n/it.js
index d2aa71ade8b..b706237b4e6 100644
--- a/core/l10n/it.js
+++ b/core/l10n/it.js
@@ -123,7 +123,7 @@ OC.L10N.register(
"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." : "Questo server non ha una connessione a Internet funzionante. Ciò significa che alcune delle funzionalità come il montaggio di archivi esterni, le notifiche degli aggiornamenti o l'installazione di applicazioni di terze parti non funzioneranno. L'accesso remoto ai file e l'invio di email di notifica potrebbero non funzionare. Ti suggeriamo di abilitare la connessione a Internet del server se desideri disporre di tutte le funzionalità.",
"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\" href=\"{docLink}\">documentation</a>." : "Non è stata configurata alcuna cache di memoria. Per migliorare le prestazioni, configura memcache, se disponibile. Ulteriori informazioni sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom non è leggibile da PHP e ciò è vivamente sconsigliato per motivi di sicurezza. Ulteriori informazioni sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "La tua versione ({version}) di PHP non è più <a target=\"_blank\" href=\"{phpLink}\">supportata da PHP</a>. Ti consigliamo di aggiornare la versione di PHP per trarre vantaggio dagli aggiornamenti in termini di prestazioni e sicurezza forniti da PHP.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Stai eseguendo attualmente PHP {version}. Ti esortiamo ad aggiornare la tua versione di PHP per trarre vantaggio dagli aggiornamenti in termini di <a target=\"_blank\" href=\"{phpLink}\">prestazioni e sicurezza forniti dal PHP Group</a> non appena la tua distribuzione la supporta.",
"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\" href=\"{docLink}\">documentation</a>." : "La configurazione delle intestazioni del proxy inverso non è corretta, o stai effettuando l'accesso a ownCloud da un proxy affidabile. Se non stai effettuando l'accesso da un proxy affidabile, questo è un problema di sicurezza e può consentire a un attaccante di falsificare il suo indirizzo IP, rendendo visibile a ownCloud. Ulteriori informazioni sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached è configurato come cache distribuita, ma è installato il modulo \"memcache\" errato. \\OC\\Memcache\\Memcached supporta solo \"memcached\" e non \"memcache\". Vedi il <a target=\"_blank\" href=\"{wikiLink}\">wiki di memcached per informazioni su entrambi i moduli</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alcuni file non hanno superato il controllo di integrità. Ulteriori informazioni su come risolvere questo problema sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Elenco dei file non validi…</a> / <a href=\"{rescanEndpoint}\">Nuova scansione…</a>)",
diff --git a/core/l10n/it.json b/core/l10n/it.json
index 90caceb76d0..053d805efae 100644
--- a/core/l10n/it.json
+++ b/core/l10n/it.json
@@ -121,7 +121,7 @@
"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." : "Questo server non ha una connessione a Internet funzionante. Ciò significa che alcune delle funzionalità come il montaggio di archivi esterni, le notifiche degli aggiornamenti o l'installazione di applicazioni di terze parti non funzioneranno. L'accesso remoto ai file e l'invio di email di notifica potrebbero non funzionare. Ti suggeriamo di abilitare la connessione a Internet del server se desideri disporre di tutte le funzionalità.",
"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\" href=\"{docLink}\">documentation</a>." : "Non è stata configurata alcuna cache di memoria. Per migliorare le prestazioni, configura memcache, se disponibile. Ulteriori informazioni sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom non è leggibile da PHP e ciò è vivamente sconsigliato per motivi di sicurezza. Ulteriori informazioni sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "La tua versione ({version}) di PHP non è più <a target=\"_blank\" href=\"{phpLink}\">supportata da PHP</a>. Ti consigliamo di aggiornare la versione di PHP per trarre vantaggio dagli aggiornamenti in termini di prestazioni e sicurezza forniti da PHP.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Stai eseguendo attualmente PHP {version}. Ti esortiamo ad aggiornare la tua versione di PHP per trarre vantaggio dagli aggiornamenti in termini di <a target=\"_blank\" href=\"{phpLink}\">prestazioni e sicurezza forniti dal PHP Group</a> non appena la tua distribuzione la supporta.",
"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\" href=\"{docLink}\">documentation</a>." : "La configurazione delle intestazioni del proxy inverso non è corretta, o stai effettuando l'accesso a ownCloud da un proxy affidabile. Se non stai effettuando l'accesso da un proxy affidabile, questo è un problema di sicurezza e può consentire a un attaccante di falsificare il suo indirizzo IP, rendendo visibile a ownCloud. Ulteriori informazioni sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached è configurato come cache distribuita, ma è installato il modulo \"memcache\" errato. \\OC\\Memcache\\Memcached supporta solo \"memcached\" e non \"memcache\". Vedi il <a target=\"_blank\" href=\"{wikiLink}\">wiki di memcached per informazioni su entrambi i moduli</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alcuni file non hanno superato il controllo di integrità. Ulteriori informazioni su come risolvere questo problema sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Elenco dei file non validi…</a> / <a href=\"{rescanEndpoint}\">Nuova scansione…</a>)",
diff --git a/core/l10n/ja.js b/core/l10n/ja.js
index fb20050bb7e..c7e5263a2a2 100644
--- a/core/l10n/ja.js
+++ b/core/l10n/ja.js
@@ -123,7 +123,6 @@ OC.L10N.register(
"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." : "このサーバーはインターネットに接続していません。この場合、外部ストレージのマウント、更新の通知やサードパーティ製のアプリ、といった一部の機能が利用できません。また、リモート接続でのファイルアクセス、通知メールの送信のような機能も利用できないことがあります。すべての機能を利用するには、このサーバーのインターネット接続を有効にすることをお勧めします。",
"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\" href=\"{docLink}\">documentation</a>." : "メモリキャッシュが設定されていません。パフォーマンスを向上するために、可能であれば memcache を設定してください。 より詳しい情報については、<a target=\"_blank\" href=\"{docLink}\">ドキュメント</a> を参照してください。",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom は PHP から読み取ることができず、この状態はセキュリティの観点からおすすめできません。より詳しい情報については、<a target=\"_blank\" href=\"{docLink}\">ドキュメント</a> を参照ください。",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "ご利用のPHPのバージョン ({version}) は、<a target=\"_blank\" href=\"{phpLink}\">PHPでサポート</a> されていません。セキュリティ確保とパフォーマンス向上のために、PHPから提供されている新しいバージョンにアップグレードすることを強くお勧めします。",
"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\" href=\"{docLink}\">documentation</a>." : "リバースプロキシのヘッダー設定が間違っているか、または信頼されたプロキシからownCloudにアクセスしていません。もし、信頼されたプロキシからアクセスしているのでないなら、セキュリティに問題があり、ownCloudを詐称したIPアドレスから攻撃者に対して見えるよう許可していることになります。詳細な情報は、 <a target=\"_blank\" href=\"{docLink}\">ドキュメント</a>を確認してください。",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached は分散キャッシュとして設定されています。しかし、PHPモジュール \"memcache\"が間違ってインストールされています。 \\OC\\Memcache\\Memcached は、\"memcached\" のみをサポートしています。\"memcache\" ではありません。<a target=\"_blank\" href=\"{wikiLink}\">memcached wiki で両方のモジュール</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "いくつかのファイルで整合性の確認に失敗しました。この問題を解決するための詳細情報は<a target=\"_blank\" href=\"{docLink}\">ドキュメント</a>にあります。 (<a href=\"{codeIntegrityDownloadEndpoint}\">不適正なファイルのリスト…</a> / <a href=\"{rescanEndpoint}\">再スキャン…</a>)",
diff --git a/core/l10n/ja.json b/core/l10n/ja.json
index 72e81c3d195..2db9a6089a9 100644
--- a/core/l10n/ja.json
+++ b/core/l10n/ja.json
@@ -121,7 +121,6 @@
"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." : "このサーバーはインターネットに接続していません。この場合、外部ストレージのマウント、更新の通知やサードパーティ製のアプリ、といった一部の機能が利用できません。また、リモート接続でのファイルアクセス、通知メールの送信のような機能も利用できないことがあります。すべての機能を利用するには、このサーバーのインターネット接続を有効にすることをお勧めします。",
"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\" href=\"{docLink}\">documentation</a>." : "メモリキャッシュが設定されていません。パフォーマンスを向上するために、可能であれば memcache を設定してください。 より詳しい情報については、<a target=\"_blank\" href=\"{docLink}\">ドキュメント</a> を参照してください。",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom は PHP から読み取ることができず、この状態はセキュリティの観点からおすすめできません。より詳しい情報については、<a target=\"_blank\" href=\"{docLink}\">ドキュメント</a> を参照ください。",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "ご利用のPHPのバージョン ({version}) は、<a target=\"_blank\" href=\"{phpLink}\">PHPでサポート</a> されていません。セキュリティ確保とパフォーマンス向上のために、PHPから提供されている新しいバージョンにアップグレードすることを強くお勧めします。",
"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\" href=\"{docLink}\">documentation</a>." : "リバースプロキシのヘッダー設定が間違っているか、または信頼されたプロキシからownCloudにアクセスしていません。もし、信頼されたプロキシからアクセスしているのでないなら、セキュリティに問題があり、ownCloudを詐称したIPアドレスから攻撃者に対して見えるよう許可していることになります。詳細な情報は、 <a target=\"_blank\" href=\"{docLink}\">ドキュメント</a>を確認してください。",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached は分散キャッシュとして設定されています。しかし、PHPモジュール \"memcache\"が間違ってインストールされています。 \\OC\\Memcache\\Memcached は、\"memcached\" のみをサポートしています。\"memcache\" ではありません。<a target=\"_blank\" href=\"{wikiLink}\">memcached wiki で両方のモジュール</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "いくつかのファイルで整合性の確認に失敗しました。この問題を解決するための詳細情報は<a target=\"_blank\" href=\"{docLink}\">ドキュメント</a>にあります。 (<a href=\"{codeIntegrityDownloadEndpoint}\">不適正なファイルのリスト…</a> / <a href=\"{rescanEndpoint}\">再スキャン…</a>)",
diff --git a/core/l10n/ko.js b/core/l10n/ko.js
index 2b4c6f1d1d9..15d27f7f3f0 100644
--- a/core/l10n/ko.js
+++ b/core/l10n/ko.js
@@ -123,7 +123,6 @@ OC.L10N.register(
"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." : "서버에서 인터넷 연결을 사용할 수 없습니다. 외부 저장소 마운트, 업데이트 알림, 제 3자 앱 설치 등 기능을 사용할 수 없습니다. 원격에서 파일에 접근하거나, 알림 이메일을 보내지 못할 수도 있습니다. 모든 기능을 사용하려면 인터넷에 연결하는 것을 추천합니다.",
"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\" href=\"{docLink}\">documentation</a>." : "메모리 캐시를 설정하지 않았습니다. 성능 향상을 위해서 사용 가능한 경우 memcache를 설정하십시오. 더 많은 정보를 보려면 <a target=\"_blank\" href=\"{docLink}\">문서</a>를 참고하십시오.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "PHP에서 /dev/urandom에 접근할 수 없으며, 보안상의 이유로 권장하지 않습니다. 더 많은 정보를 보려면 <a target=\"_blank\" href=\"{docLink}\">문서</a>를 참고하십시오.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "PHP 버전 {{version}}은(는) 더 이상 <a target=\"_blank\" href=\"{phpLink}\">PHP에서 지원하지 않습니다</a>. PHP를 업그레이드하면 성능 향상 및 보안성 개선이 가능합니다.",
"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\" href=\"{docLink}\">documentation</a>." : "역방향 프록시 헤더가 잘못 설정되었거나, ownCloud를 신뢰할 수 있는 프록시에서 접근하고 있습니다. 신뢰할 수 있는 프록시에서 ownCloud에 접근하고 있는 경우가 아니라면, 보안 문제가 발생하여 공격자가 ownCloud에 접근하는 IP를 속일 수 있습니다. 더 많은 정보를 보려면 <a target=\"_blank\" href=\"{docLink}\">문서</a>를 참고하십시오.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached가 분산형 캐시로 설정되어 있으나, 잘못된 PHP 모듈 \"memcache\"가 설치되어 있습니다. \\OC\\Memcache\\Memcached는 \"memcached\" 모듈에서만 지원하며, \"memcache\" 모듈은 해당하지 않습니다. <a target=\"_blank\" href=\"{wikiLink}\">memcached 위키의 모듈 정보</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "일부 파일이 무결성 검사를 통과하지 못했습니다. 이 문제를 해결하는 방법은 <a target=\"_blank\" href=\"{docLink}\">문서</a>를 참조하십시오.(<a href=\"{codeIntegrityDownloadEndpoint}\">잘못된 파일 목록…</a> / <a href=\"{rescanEndpoint}\">다시 검사…</a>)",
diff --git a/core/l10n/ko.json b/core/l10n/ko.json
index a5dc1824c63..5412800fbb3 100644
--- a/core/l10n/ko.json
+++ b/core/l10n/ko.json
@@ -121,7 +121,6 @@
"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." : "서버에서 인터넷 연결을 사용할 수 없습니다. 외부 저장소 마운트, 업데이트 알림, 제 3자 앱 설치 등 기능을 사용할 수 없습니다. 원격에서 파일에 접근하거나, 알림 이메일을 보내지 못할 수도 있습니다. 모든 기능을 사용하려면 인터넷에 연결하는 것을 추천합니다.",
"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\" href=\"{docLink}\">documentation</a>." : "메모리 캐시를 설정하지 않았습니다. 성능 향상을 위해서 사용 가능한 경우 memcache를 설정하십시오. 더 많은 정보를 보려면 <a target=\"_blank\" href=\"{docLink}\">문서</a>를 참고하십시오.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "PHP에서 /dev/urandom에 접근할 수 없으며, 보안상의 이유로 권장하지 않습니다. 더 많은 정보를 보려면 <a target=\"_blank\" href=\"{docLink}\">문서</a>를 참고하십시오.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "PHP 버전 {{version}}은(는) 더 이상 <a target=\"_blank\" href=\"{phpLink}\">PHP에서 지원하지 않습니다</a>. PHP를 업그레이드하면 성능 향상 및 보안성 개선이 가능합니다.",
"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\" href=\"{docLink}\">documentation</a>." : "역방향 프록시 헤더가 잘못 설정되었거나, ownCloud를 신뢰할 수 있는 프록시에서 접근하고 있습니다. 신뢰할 수 있는 프록시에서 ownCloud에 접근하고 있는 경우가 아니라면, 보안 문제가 발생하여 공격자가 ownCloud에 접근하는 IP를 속일 수 있습니다. 더 많은 정보를 보려면 <a target=\"_blank\" href=\"{docLink}\">문서</a>를 참고하십시오.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached가 분산형 캐시로 설정되어 있으나, 잘못된 PHP 모듈 \"memcache\"가 설치되어 있습니다. \\OC\\Memcache\\Memcached는 \"memcached\" 모듈에서만 지원하며, \"memcache\" 모듈은 해당하지 않습니다. <a target=\"_blank\" href=\"{wikiLink}\">memcached 위키의 모듈 정보</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "일부 파일이 무결성 검사를 통과하지 못했습니다. 이 문제를 해결하는 방법은 <a target=\"_blank\" href=\"{docLink}\">문서</a>를 참조하십시오.(<a href=\"{codeIntegrityDownloadEndpoint}\">잘못된 파일 목록…</a> / <a href=\"{rescanEndpoint}\">다시 검사…</a>)",
diff --git a/core/l10n/nb_NO.js b/core/l10n/nb_NO.js
index d1e15109d9a..69bc5e902e2 100644
--- a/core/l10n/nb_NO.js
+++ b/core/l10n/nb_NO.js
@@ -123,7 +123,6 @@ OC.L10N.register(
"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." : "Denne serveren har ingen fungerende internett-forbindelse. Dette betyr at noen funksjoner, som tilknytning av eksterne lagre, varslinger om oppdateringer eller installering av tredjeparts apper ikke vil virke. Fjerntilgang til filer og utsending av varsler på e-post vil kanskje ikke virke heller. Vi anbefaler å aktivere en internett-forbindelse for denne serveren hvis du vil ha full funksjonalitet.",
"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\" href=\"{docLink}\">documentation</a>." : "Minne-cache er ikke konfigurert. Installer et minne-cache for å forbedre ytelsen hvis det lar seg gjøre. Du finner mer informasjon i <a target=\"_blank\" href=\"{docLink}\">dokumentasjonen</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom kan ikke leses av PHP, noe som er sterkt frarådet av sikkerhetshensyn. Mer informasjon finnes i <a target=\"_blank\" href=\"{docLink}\">dokumentasjonen</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Din PHP-versjon ({version}) er ikke <a target=\"_blank\" href=\"{phpLink}\">støttet av PHP</a> lenger. Vi oppfordrer deg til å oppgradere din PHP-versjon for å nyte fordel av ytelses- og sikkerhetsoppdateringer som tilbys av PHP.",
"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\" href=\"{docLink}\">documentation</a>." : "Konfigurasjon av reverse proxy-headers er ikke korrekt, eller du aksesserer ownCloud fra en \"trusted proxy\". Hvis du ikke aksesserer ownCloud fra en \"trusted proxy\", er dette en sikkerhetsrisiko som kan la en angriper forfalske IP-addressen sin slik den oppfattes av ownCloud. Mer informasjon i <a target=\"_blank\" href=\"{docLink}\">dokumentasjonen</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached er konfigurert som distribuert cache, men feil PHP-module \"memcache\" er installert. \\OC\\Memcache\\Memcached støtter bare \"memcached\" og ikke \"memcache\". Se <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki om begge modulene</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Noen filer feilet integritets-sjekken. Informasjon for å løse problemet finnes i <a target=\"_blank\" href=\"{docLink}\">dokumentasjonen</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste med ugyldige filer…</a> / <a href=\"{rescanEndpoint}\">Skann på nytt…</a>)",
@@ -287,10 +286,10 @@ OC.L10N.register(
"This means only administrators can use the instance." : "Dette betyr at kun administratorer kan bruke instansen.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Kontakt systemadministratoren hvis denne meldingen var uventet eller ikke forsvinner.",
"Thank you for your patience." : "Takk for din tålmodighet.",
- "You are accessing the server from an untrusted domain." : "Du aksesserer serveren fra et ikke tiltrodd domene.",
+ "You are accessing the server from an untrusted domain." : "Du aksesserer serveren fra et ikke-klarert domene.",
"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." : "Vennligst kontakt administratoren. Hvis du er administrator for denne instansen, konfigurer innstillingen \"trusted_domains\" i config/config.php. Et eksempel på konfigurasjon er gitt i config/config.sample.php.",
"Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Avhengig av konfigurasjonen kan du, som administrator, kanskje også bruke kanppen nedenfor til å stole på dette domenet.",
- "Add \"%s\" as trusted domain" : "Legg til \"%s\" som et tiltrodd domene",
+ "Add \"%s\" as trusted domain" : "Legg til \"%s\" som et klarert domene",
"App update required" : "App-oppdatering kreves",
"%s will be updated to version %s" : "%s vil bli oppdatert til versjon %s",
"These apps will be updated:" : "Disse appene vil bli oppdatert:",
diff --git a/core/l10n/nb_NO.json b/core/l10n/nb_NO.json
index 7b5281a14ae..7d41610c001 100644
--- a/core/l10n/nb_NO.json
+++ b/core/l10n/nb_NO.json
@@ -121,7 +121,6 @@
"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." : "Denne serveren har ingen fungerende internett-forbindelse. Dette betyr at noen funksjoner, som tilknytning av eksterne lagre, varslinger om oppdateringer eller installering av tredjeparts apper ikke vil virke. Fjerntilgang til filer og utsending av varsler på e-post vil kanskje ikke virke heller. Vi anbefaler å aktivere en internett-forbindelse for denne serveren hvis du vil ha full funksjonalitet.",
"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\" href=\"{docLink}\">documentation</a>." : "Minne-cache er ikke konfigurert. Installer et minne-cache for å forbedre ytelsen hvis det lar seg gjøre. Du finner mer informasjon i <a target=\"_blank\" href=\"{docLink}\">dokumentasjonen</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom kan ikke leses av PHP, noe som er sterkt frarådet av sikkerhetshensyn. Mer informasjon finnes i <a target=\"_blank\" href=\"{docLink}\">dokumentasjonen</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Din PHP-versjon ({version}) er ikke <a target=\"_blank\" href=\"{phpLink}\">støttet av PHP</a> lenger. Vi oppfordrer deg til å oppgradere din PHP-versjon for å nyte fordel av ytelses- og sikkerhetsoppdateringer som tilbys av PHP.",
"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\" href=\"{docLink}\">documentation</a>." : "Konfigurasjon av reverse proxy-headers er ikke korrekt, eller du aksesserer ownCloud fra en \"trusted proxy\". Hvis du ikke aksesserer ownCloud fra en \"trusted proxy\", er dette en sikkerhetsrisiko som kan la en angriper forfalske IP-addressen sin slik den oppfattes av ownCloud. Mer informasjon i <a target=\"_blank\" href=\"{docLink}\">dokumentasjonen</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached er konfigurert som distribuert cache, men feil PHP-module \"memcache\" er installert. \\OC\\Memcache\\Memcached støtter bare \"memcached\" og ikke \"memcache\". Se <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki om begge modulene</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Noen filer feilet integritets-sjekken. Informasjon for å løse problemet finnes i <a target=\"_blank\" href=\"{docLink}\">dokumentasjonen</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste med ugyldige filer…</a> / <a href=\"{rescanEndpoint}\">Skann på nytt…</a>)",
@@ -285,10 +284,10 @@
"This means only administrators can use the instance." : "Dette betyr at kun administratorer kan bruke instansen.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Kontakt systemadministratoren hvis denne meldingen var uventet eller ikke forsvinner.",
"Thank you for your patience." : "Takk for din tålmodighet.",
- "You are accessing the server from an untrusted domain." : "Du aksesserer serveren fra et ikke tiltrodd domene.",
+ "You are accessing the server from an untrusted domain." : "Du aksesserer serveren fra et ikke-klarert domene.",
"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." : "Vennligst kontakt administratoren. Hvis du er administrator for denne instansen, konfigurer innstillingen \"trusted_domains\" i config/config.php. Et eksempel på konfigurasjon er gitt i config/config.sample.php.",
"Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Avhengig av konfigurasjonen kan du, som administrator, kanskje også bruke kanppen nedenfor til å stole på dette domenet.",
- "Add \"%s\" as trusted domain" : "Legg til \"%s\" som et tiltrodd domene",
+ "Add \"%s\" as trusted domain" : "Legg til \"%s\" som et klarert domene",
"App update required" : "App-oppdatering kreves",
"%s will be updated to version %s" : "%s vil bli oppdatert til versjon %s",
"These apps will be updated:" : "Disse appene vil bli oppdatert:",
diff --git a/core/l10n/nl.js b/core/l10n/nl.js
index dd185c79d76..28ffe9915b2 100644
--- a/core/l10n/nl.js
+++ b/core/l10n/nl.js
@@ -123,7 +123,7 @@ OC.L10N.register(
"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." : "Deze server heeft geen actieve internetverbinding. Dat betekent dat sommige functies, zoals aankoppelen van externe opslag, notificaties over updates of installatie van apps van 3e partijen niet werken. Ook het benaderen van bestanden vanaf een remote locatie en het versturen van notificatie emails kan mislukken. We adviseren om de internetverbinding voor deze server in te schakelen als u alle functies wilt gebruiken.",
"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\" href=\"{docLink}\">documentation</a>." : "Er is geen geheugencache geconfigureerd. Om de prestaties te verhogen kunt u de memcache configureren als die beschikbaar is. Meer informatie vind u in onze <a target=\"_blank\" href=\"{docLink}\">documentatie</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom is niet leesbaar door PHP, hetgeen wordt afgeraden wegens beveiligingsredenen. Meer informatie in onze <a target=\"_blank\" href=\"{docLink}\">documentatie</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "UwPHP versie ({version}) wordt niet langer <a target=\"_blank\" href=\"{phpLink}\">ondersteund door PHP</a>. We adviseren u om uw PHP versie te upgraden voor betere prestaties en security updates geleverd door PHP.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "U draait momenteel PHP {version}. We adviseren u om zo gauw uw distributie dat biedt, uw PHP versie bij te werken voor betere <a target=\"_blank\" href=\"{phpLink}\">prestaties en beveiliging geleverd door de PHP Group</a>.",
"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\" href=\"{docLink}\">documentation</a>." : "De reverse proxy headerconfiguratie is onjuist, of u hebt toegang tot ownCloud via een vertrouwde proxy. Als u ownCloud niet via een vertrouwde proxy benadert, dan levert dan een beveiligingsrisico op, waardoor een aanvaller het IP-adres dat ownCloud ziet kan spoofen. Meer informatie is te vinden in onze <a target=\"_blank\" href=\"{docLink}\">documentatie</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached is geconfigureerd als gedistribueerde cache, maar de verkeerde PHP module \"memcache\" is geïnstalleerd. \\OC\\Memcache\\Memcached ondersteunt alleen \"memcached\" en niet \"memcache\". Zie de <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki over beide modules</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Sommige bestanden kwamen niet door de code betrouwbaarheidscontrole. Meer informatie over het oplossen van dit probleem kan worden gevonden in onze <a target=\"_blank\" href=\"{docLink}\">documentatie</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lijst met ongeldige bestanden…</a> / <a href=\"{rescanEndpoint}\">Opnieuw…</a>)",
diff --git a/core/l10n/nl.json b/core/l10n/nl.json
index a47222fee3d..6a4034344f7 100644
--- a/core/l10n/nl.json
+++ b/core/l10n/nl.json
@@ -121,7 +121,7 @@
"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." : "Deze server heeft geen actieve internetverbinding. Dat betekent dat sommige functies, zoals aankoppelen van externe opslag, notificaties over updates of installatie van apps van 3e partijen niet werken. Ook het benaderen van bestanden vanaf een remote locatie en het versturen van notificatie emails kan mislukken. We adviseren om de internetverbinding voor deze server in te schakelen als u alle functies wilt gebruiken.",
"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\" href=\"{docLink}\">documentation</a>." : "Er is geen geheugencache geconfigureerd. Om de prestaties te verhogen kunt u de memcache configureren als die beschikbaar is. Meer informatie vind u in onze <a target=\"_blank\" href=\"{docLink}\">documentatie</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom is niet leesbaar door PHP, hetgeen wordt afgeraden wegens beveiligingsredenen. Meer informatie in onze <a target=\"_blank\" href=\"{docLink}\">documentatie</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "UwPHP versie ({version}) wordt niet langer <a target=\"_blank\" href=\"{phpLink}\">ondersteund door PHP</a>. We adviseren u om uw PHP versie te upgraden voor betere prestaties en security updates geleverd door PHP.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "U draait momenteel PHP {version}. We adviseren u om zo gauw uw distributie dat biedt, uw PHP versie bij te werken voor betere <a target=\"_blank\" href=\"{phpLink}\">prestaties en beveiliging geleverd door de PHP Group</a>.",
"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\" href=\"{docLink}\">documentation</a>." : "De reverse proxy headerconfiguratie is onjuist, of u hebt toegang tot ownCloud via een vertrouwde proxy. Als u ownCloud niet via een vertrouwde proxy benadert, dan levert dan een beveiligingsrisico op, waardoor een aanvaller het IP-adres dat ownCloud ziet kan spoofen. Meer informatie is te vinden in onze <a target=\"_blank\" href=\"{docLink}\">documentatie</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached is geconfigureerd als gedistribueerde cache, maar de verkeerde PHP module \"memcache\" is geïnstalleerd. \\OC\\Memcache\\Memcached ondersteunt alleen \"memcached\" en niet \"memcache\". Zie de <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki over beide modules</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Sommige bestanden kwamen niet door de code betrouwbaarheidscontrole. Meer informatie over het oplossen van dit probleem kan worden gevonden in onze <a target=\"_blank\" href=\"{docLink}\">documentatie</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lijst met ongeldige bestanden…</a> / <a href=\"{rescanEndpoint}\">Opnieuw…</a>)",
diff --git a/core/l10n/pl.js b/core/l10n/pl.js
index dca5d0dc734..8383239162a 100644
--- a/core/l10n/pl.js
+++ b/core/l10n/pl.js
@@ -2,20 +2,39 @@ OC.L10N.register(
"core",
{
"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",
+ "Updating database schema" : "Aktualizacja schematu bazy danych",
"Updated database" : "Zaktualizuj bazę",
+ "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Sprawdzam czy schemat bazy danych może zostać zaktualizowany (to może zająć sporo czasu i zależy od rozmiaru bazy danych)",
"Checked database schema update" : "Sprawdzono aktualizację schematu bazy danych",
+ "Checking updates of apps" : "Sprawdzam aktualizacje aplikacji",
+ "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Sprawdzam czy schemat bazy danych %s może zostać zaktualizowany (to może zająć sporo czasu i zależy od rozmiaru bazy danych)",
"Checked database schema update for apps" : "Sprawdzono aktualizację schematu bazy danych dla aplikacji",
"Updated \"%s\" to %s" : "Zaktualizowano \"%s\" do %s",
"Repair warning: " : "Ostrzeżenie naprawiania:",
"Repair error: " : "Błąd naprawiania:",
+ "Set log level to debug" : "Ustaw poziom logowania na debug",
+ "Reset log level" : "Zresetuj poziom logowania",
+ "Starting code integrity check" : "Rozpoczynam sprawdzanie spójności kodu",
+ "Finished code integrity check" : "Zakończono sprawdzanie spójności kodu",
+ "%s (3rdparty)" : "%s (od innych)",
+ "%s (incompatible)" : "%s (niekompatybilne)",
+ "Following apps have been disabled: %s" : "Poniższe aplikacje zostały wyłączone: %s",
+ "Already up to date" : "Już zaktualizowano",
+ "Please select a file." : "Proszę wybrać plik",
+ "File is too big" : "Plik jest za duży",
"Invalid file provided" : "Podano błędny plik",
"No image or file provided" : "Brak obrazu lub pliku dostarczonego",
"Unknown filetype" : "Nieznany typ pliku",
"Invalid image" : "Nieprawidłowe zdjęcie",
+ "An error occurred. Please contact your admin." : "Pojawił się błąd. Skontaktuj się z administratorem.",
"No temporary profile picture available, try again" : "Brak obrazka profilu tymczasowego, spróbuj ponownie",
"No crop data provided" : "Brak danych do przycięcia",
+ "No valid crop data provided" : "Brak danych do przycięcia",
+ "Crop is not square" : "Przycięcie nie jest prostokątem",
"Couldn't reset password because the token is invalid" : "Nie można zresetować hasła, ponieważ token jest niepoprawny",
"Couldn't send reset email. Please make sure your username is correct." : "Nie mogę wysłać maila resetującego. Sprawdź czy nazwa użytkownika jest poprawna.",
"%s password reset" : "%s reset hasła",
diff --git a/core/l10n/pl.json b/core/l10n/pl.json
index 00356d39db3..a59306f689e 100644
--- a/core/l10n/pl.json
+++ b/core/l10n/pl.json
@@ -1,19 +1,38 @@
{ "translations": {
"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",
+ "Updating database schema" : "Aktualizacja schematu bazy danych",
"Updated database" : "Zaktualizuj bazę",
+ "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Sprawdzam czy schemat bazy danych może zostać zaktualizowany (to może zająć sporo czasu i zależy od rozmiaru bazy danych)",
"Checked database schema update" : "Sprawdzono aktualizację schematu bazy danych",
+ "Checking updates of apps" : "Sprawdzam aktualizacje aplikacji",
+ "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Sprawdzam czy schemat bazy danych %s może zostać zaktualizowany (to może zająć sporo czasu i zależy od rozmiaru bazy danych)",
"Checked database schema update for apps" : "Sprawdzono aktualizację schematu bazy danych dla aplikacji",
"Updated \"%s\" to %s" : "Zaktualizowano \"%s\" do %s",
"Repair warning: " : "Ostrzeżenie naprawiania:",
"Repair error: " : "Błąd naprawiania:",
+ "Set log level to debug" : "Ustaw poziom logowania na debug",
+ "Reset log level" : "Zresetuj poziom logowania",
+ "Starting code integrity check" : "Rozpoczynam sprawdzanie spójności kodu",
+ "Finished code integrity check" : "Zakończono sprawdzanie spójności kodu",
+ "%s (3rdparty)" : "%s (od innych)",
+ "%s (incompatible)" : "%s (niekompatybilne)",
+ "Following apps have been disabled: %s" : "Poniższe aplikacje zostały wyłączone: %s",
+ "Already up to date" : "Już zaktualizowano",
+ "Please select a file." : "Proszę wybrać plik",
+ "File is too big" : "Plik jest za duży",
"Invalid file provided" : "Podano błędny plik",
"No image or file provided" : "Brak obrazu lub pliku dostarczonego",
"Unknown filetype" : "Nieznany typ pliku",
"Invalid image" : "Nieprawidłowe zdjęcie",
+ "An error occurred. Please contact your admin." : "Pojawił się błąd. Skontaktuj się z administratorem.",
"No temporary profile picture available, try again" : "Brak obrazka profilu tymczasowego, spróbuj ponownie",
"No crop data provided" : "Brak danych do przycięcia",
+ "No valid crop data provided" : "Brak danych do przycięcia",
+ "Crop is not square" : "Przycięcie nie jest prostokątem",
"Couldn't reset password because the token is invalid" : "Nie można zresetować hasła, ponieważ token jest niepoprawny",
"Couldn't send reset email. Please make sure your username is correct." : "Nie mogę wysłać maila resetującego. Sprawdź czy nazwa użytkownika jest poprawna.",
"%s password reset" : "%s reset hasła",
diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js
index 9fe8589701a..ae8a7762b0a 100644
--- a/core/l10n/pt_BR.js
+++ b/core/l10n/pt_BR.js
@@ -123,7 +123,6 @@ OC.L10N.register(
"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." : "Este servidor não tem nenhuma conexão com a Internet. Isto significa que algumas das características como a montagem de armazenamento externo, notificações sobre atualizações ou instalação de aplicativos de terceiros não vai funcionar. Acessar arquivos remotamente e envio de e-mails de notificação pode não funcionar, também. Sugerimos permitir conexão com a Internet para este servidor, se você quer ter todas as funcionalidades.",
"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\" href=\"{docLink}\">documentation</a>." : "Nenhuma memória cache foi configurada. Para melhorar o seu desempenho, por favor configure um cache de memória, se disponível. Mais informação podem ser encontradas em nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom não pode ser lido pelo PHP o que é altamente desencorajado por razões de segurança. Mais informações podem ser encontradas na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "A sua versão do PHP ({version}) não é mais <a target=\"_blank\" href=\"{phpLink}\">suportada pelo PHP</a>. Nós o incentivamos a atualizar sua versão do PHP para tirar proveito de atualizações de desempenho e de segurança fornecidas pelo PHP.",
"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\" href=\"{docLink}\">documentation</a>." : "A configuração de cabeçalhos do proxy reverso está incorreta, ou você está acessando ownCloud de um proxy confiável. Se você não está acessando ownCloud de um proxy confiável, esta é uma questão de segurança e pode permitir a um invasor falsificar seu endereço IP como visível para ownCloud. Mais informação pode ser encontrada na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached está configurado como cache distribuído, mas o módulo PHP \"memcache\" errado está instalado. \\OC\\Memcache\\Memcached suporta apenas \"memcached\" e não \"memcache\". Veja a <a target=\"_blank\" href=\"{wikiLink}\">o wiki sobre memcached sobre ambos os módulos</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alguns arquivos não passaram na verificação de integridade. Mais informações sobre como resolver este problema podem ser encontradas na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lista de arquivos inválidos…</a> / <a href=\"{rescanEndpoint}\">Reexaminar…</a>)",
diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json
index f31423f7ac5..599a49a941d 100644
--- a/core/l10n/pt_BR.json
+++ b/core/l10n/pt_BR.json
@@ -121,7 +121,6 @@
"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." : "Este servidor não tem nenhuma conexão com a Internet. Isto significa que algumas das características como a montagem de armazenamento externo, notificações sobre atualizações ou instalação de aplicativos de terceiros não vai funcionar. Acessar arquivos remotamente e envio de e-mails de notificação pode não funcionar, também. Sugerimos permitir conexão com a Internet para este servidor, se você quer ter todas as funcionalidades.",
"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\" href=\"{docLink}\">documentation</a>." : "Nenhuma memória cache foi configurada. Para melhorar o seu desempenho, por favor configure um cache de memória, se disponível. Mais informação podem ser encontradas em nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom não pode ser lido pelo PHP o que é altamente desencorajado por razões de segurança. Mais informações podem ser encontradas na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "A sua versão do PHP ({version}) não é mais <a target=\"_blank\" href=\"{phpLink}\">suportada pelo PHP</a>. Nós o incentivamos a atualizar sua versão do PHP para tirar proveito de atualizações de desempenho e de segurança fornecidas pelo PHP.",
"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\" href=\"{docLink}\">documentation</a>." : "A configuração de cabeçalhos do proxy reverso está incorreta, ou você está acessando ownCloud de um proxy confiável. Se você não está acessando ownCloud de um proxy confiável, esta é uma questão de segurança e pode permitir a um invasor falsificar seu endereço IP como visível para ownCloud. Mais informação pode ser encontrada na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached está configurado como cache distribuído, mas o módulo PHP \"memcache\" errado está instalado. \\OC\\Memcache\\Memcached suporta apenas \"memcached\" e não \"memcache\". Veja a <a target=\"_blank\" href=\"{wikiLink}\">o wiki sobre memcached sobre ambos os módulos</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alguns arquivos não passaram na verificação de integridade. Mais informações sobre como resolver este problema podem ser encontradas na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lista de arquivos inválidos…</a> / <a href=\"{rescanEndpoint}\">Reexaminar…</a>)",
diff --git a/core/l10n/pt_PT.js b/core/l10n/pt_PT.js
index e40a01e6afc..4a2f8dd4204 100644
--- a/core/l10n/pt_PT.js
+++ b/core/l10n/pt_PT.js
@@ -123,7 +123,7 @@ OC.L10N.register(
"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." : "Este servidor ownCloud não tem uma ligação de Internet a funcionar. Isto significa que algumas funcionalidades como o acesso a locais externos, notificações sobre actualizações, ou a instalação de aplicações de terceiros não irá funcionar. Aceder aos ficheiros remotamente e enviar notificações de email poderão não funcionar também. Sugerimos que active uma ligação à Internet se pretende obter todas as funcionalidades do ownCloud.",
"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\" href=\"{docLink}\">documentation</a>." : "Nenhuma memória cache foi configurada. Para melhorar o seu desempenho, por favor configure a memcache, se disponível. Mais informação pode ser encontrada na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom não é legível pelo PHP, o que é altamente desanimador por motivos de segurança. Pode ser encontrada mais informação na <a target=\"_blank\" href=\"{docLink}\">documentação</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "A sua versão ({version}) do PHP já não é <a target=\"_blank\" href=\"{phpLink}\">suportada pelo PHP</a>. Nós encorajamos-lhe a atualizar a sua versão do PHP para aproveitar o desempenho e as atualizações de segurança fornecidas pelo PHP.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Neste momento está a executar PHP {version}. Aconselhamos actualizar a versão de PHP para tirar partido das <a target=\"_blank\" href=\"{phpLink}\">actualizações de desempenho e segurança fornecidas pelo PHP Group</a> assim que a sua distribuição as suporte.",
"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\" href=\"{docLink}\">documentation</a>." : "A configuração dos proxy headers reversos está incorreta, ou então está a aceder ao ownCloud através de um proxy de confiança. Se não está a aceder ao ownCloud através de um proxy de confiança, isto é um problema de segurança e poderá permitir a um invasor falsificar o seu endereço IP como visível para o ownCloud. Mais informação pode ser encontrada na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached está configurada como cache distribuída, mas o módulo \"memcache\" PHP errado está instalado. \\OC\\Memcache\\Memcached apenas suporta \"memcached\" e não \"memcache\". Leia a <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki sobre ambos os módulos</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alguns ficheiros não passaram na verificação de integridade. Mais informação sobre este assunto pode ser encontrada na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lists de ficheiros inválidos…</a> / <a href=\"{rescanEndpoint}\">Reverificar…</a>)",
@@ -197,6 +197,7 @@ OC.L10N.register(
"sunny" : "soalheiro",
"Hello {name}, the weather is {weather}" : "Olá {name}, o tempo está {weather}",
"Hello {name}" : "Olá {name}",
+ "new" : "novo",
"_download %n file_::_download %n files_" : ["transferir %n ficheiro","transferir %n ficheiros"],
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "A atualização está em curso. Deixar esta página agora poderá interromper o processo nalguns ambientes.",
"Updating {productName} to version {version}, this may take a while." : "A atualizar {productName} para a versão {version}, isto poderá demorar algum tempo.",
diff --git a/core/l10n/pt_PT.json b/core/l10n/pt_PT.json
index a5f3b8aef77..9c183eef468 100644
--- a/core/l10n/pt_PT.json
+++ b/core/l10n/pt_PT.json
@@ -121,7 +121,7 @@
"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." : "Este servidor ownCloud não tem uma ligação de Internet a funcionar. Isto significa que algumas funcionalidades como o acesso a locais externos, notificações sobre actualizações, ou a instalação de aplicações de terceiros não irá funcionar. Aceder aos ficheiros remotamente e enviar notificações de email poderão não funcionar também. Sugerimos que active uma ligação à Internet se pretende obter todas as funcionalidades do ownCloud.",
"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\" href=\"{docLink}\">documentation</a>." : "Nenhuma memória cache foi configurada. Para melhorar o seu desempenho, por favor configure a memcache, se disponível. Mais informação pode ser encontrada na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom não é legível pelo PHP, o que é altamente desanimador por motivos de segurança. Pode ser encontrada mais informação na <a target=\"_blank\" href=\"{docLink}\">documentação</a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "A sua versão ({version}) do PHP já não é <a target=\"_blank\" href=\"{phpLink}\">suportada pelo PHP</a>. Nós encorajamos-lhe a atualizar a sua versão do PHP para aproveitar o desempenho e as atualizações de segurança fornecidas pelo PHP.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Neste momento está a executar PHP {version}. Aconselhamos actualizar a versão de PHP para tirar partido das <a target=\"_blank\" href=\"{phpLink}\">actualizações de desempenho e segurança fornecidas pelo PHP Group</a> assim que a sua distribuição as suporte.",
"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\" href=\"{docLink}\">documentation</a>." : "A configuração dos proxy headers reversos está incorreta, ou então está a aceder ao ownCloud através de um proxy de confiança. Se não está a aceder ao ownCloud através de um proxy de confiança, isto é um problema de segurança e poderá permitir a um invasor falsificar o seu endereço IP como visível para o ownCloud. Mais informação pode ser encontrada na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached está configurada como cache distribuída, mas o módulo \"memcache\" PHP errado está instalado. \\OC\\Memcache\\Memcached apenas suporta \"memcached\" e não \"memcache\". Leia a <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki sobre ambos os módulos</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alguns ficheiros não passaram na verificação de integridade. Mais informação sobre este assunto pode ser encontrada na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lists de ficheiros inválidos…</a> / <a href=\"{rescanEndpoint}\">Reverificar…</a>)",
@@ -195,6 +195,7 @@
"sunny" : "soalheiro",
"Hello {name}, the weather is {weather}" : "Olá {name}, o tempo está {weather}",
"Hello {name}" : "Olá {name}",
+ "new" : "novo",
"_download %n file_::_download %n files_" : ["transferir %n ficheiro","transferir %n ficheiros"],
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "A atualização está em curso. Deixar esta página agora poderá interromper o processo nalguns ambientes.",
"Updating {productName} to version {version}, this may take a while." : "A atualizar {productName} para a versão {version}, isto poderá demorar algum tempo.",
diff --git a/core/l10n/ru.js b/core/l10n/ru.js
index 3e96f1275b6..85b08d28ef2 100644
--- a/core/l10n/ru.js
+++ b/core/l10n/ru.js
@@ -123,13 +123,13 @@ OC.L10N.register(
"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." : "Этот сервер не имеет подключения к Интернету. Это означает, что некоторые из функций, таких как внешнее хранилище, уведомления об обновлениях и установка сторонних приложений не будут работать. Доступ к файлам удаленно и отправки уведомлений по почте могут не работать. Рекомендуется разрешить данному серверу доступ в Интернет если хотите, чтобы все функции работали.",
"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\" href=\"{docLink}\">documentation</a>." : "Кэш-памяти не настроено. Для повышения производительности, пожалуйста, настройте кэш-памяти (memcache) если есть такая возможность. Дополнительную информацию можно найти в нашей <a target=\"_blank\" href=\"{docLink}\"> документации </a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom не доступно чтение для PHP, что крайне нежелательно по соображениям безопасности. Дополнительную информацию можно найти в нашей <a target=\"_blank\" href=\"{docLink}\"> документации </a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Ваша версия PHP ({version}) больше не <a target=\"_blank\" href=\"{phpLink}\"> поддерживается разработчиками PHP</a>. Мы рекомендуем Вам обновить версию PHP, чтобы воспользоваться производительностью и безопасностью, предусмотренных в обновленной версии PHP.",
"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\" href=\"{docLink}\">documentation</a>." : "Конфигурация заголовков обратного прокси не верна, либо доступ к ownCloud осуществлён через доверенный прокси. Если ownCloud открыт не через доверенный прокси то это проблема безопасности, которая может позволить атакующему подделать IP адрес, который видит ownCloud. Дополнительная информация доступна в нашей <a target=\"_blank\" href=\"{docLink}\">документации</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "В качестве распределённого кеша настроен memcached, но установлен неверный модуль PHP \"memcache\". \\OC\\Memcache\\Memcached поддерживает только \"memcached\", но не \"memcache\". Изучите <a target=\"_blank\" href=\"{wikiLink}\">оба модуля в memcached wiki</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Некоторые файлы не прошли проверку целостности. Дополнительная информация о том, как устранить данную проблему доступна в нашей <a target=\"_blank\" href=\"{docLink}\">документации</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Список проблемных файлов…</a> / <a href=\"{rescanEndpoint}\">Сканировать ещё раз…</a>)",
"Error occurred while checking server setup" : "Произошла ошибка при проверке настроек сервера",
"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." : "Ваш каталог данных и ваши файлы возможно доступны из Интернета. Файл .htaccess не работает. Мы настоятельно рекомендуем Вам настроить веб сервер таким образом, чтобы каталог данных не был больше доступен или переместить каталог данных за пределы корня веб сервера.",
"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." : "Заголовок HTTP \"{header}\" не настроен на значение \"{expected}\". Это потенциальная проблема безопасности и мы рекомендуем изменить эти настройки.",
+ "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}\">security tips</a>." : "Заголовок HTTP \"Strict-Transport-Security\" не настроен хотя бы на \"{seconds}\" секунд. Для улучшения безопасности мы рекомендуем включить HSTS согласно нашим <a href=\"{docUrl}\">подсказкам по безопасности</a>.",
"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>." : "Вы зашли на этот сайт через HTTP. Мы настоятельно рекомендуем настроить ваш сервер на использование HTTPS согласно нашим <a href=\"{docUrl}\">подсказкам по безопасности</a>.",
"Shared" : "Общий доступ",
"Shared with {recipients}" : "Вы поделились с {recipients}",
@@ -195,6 +195,7 @@ OC.L10N.register(
"sunny" : "солнечно",
"Hello {name}, the weather is {weather}" : "Здравствуйте {name}, погода {weather}",
"Hello {name}" : "Здравствуйте {name}",
+ "new" : "новый",
"_download %n file_::_download %n files_" : ["скачать %n файл","скачать %n файла","скачать %n файлов","скачать %n файлов"],
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Идет обновление. Покидая эту страницу, вы можете прервать процесс обновления.",
"Updating {productName} to version {version}, this may take a while." : "Идет обновление {productName} до версии {version}, это может занять некоторое время.",
diff --git a/core/l10n/ru.json b/core/l10n/ru.json
index b3534d4fc6e..0f2fcb5191b 100644
--- a/core/l10n/ru.json
+++ b/core/l10n/ru.json
@@ -121,13 +121,13 @@
"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." : "Этот сервер не имеет подключения к Интернету. Это означает, что некоторые из функций, таких как внешнее хранилище, уведомления об обновлениях и установка сторонних приложений не будут работать. Доступ к файлам удаленно и отправки уведомлений по почте могут не работать. Рекомендуется разрешить данному серверу доступ в Интернет если хотите, чтобы все функции работали.",
"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\" href=\"{docLink}\">documentation</a>." : "Кэш-памяти не настроено. Для повышения производительности, пожалуйста, настройте кэш-памяти (memcache) если есть такая возможность. Дополнительную информацию можно найти в нашей <a target=\"_blank\" href=\"{docLink}\"> документации </a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom не доступно чтение для PHP, что крайне нежелательно по соображениям безопасности. Дополнительную информацию можно найти в нашей <a target=\"_blank\" href=\"{docLink}\"> документации </a>.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Ваша версия PHP ({version}) больше не <a target=\"_blank\" href=\"{phpLink}\"> поддерживается разработчиками PHP</a>. Мы рекомендуем Вам обновить версию PHP, чтобы воспользоваться производительностью и безопасностью, предусмотренных в обновленной версии PHP.",
"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\" href=\"{docLink}\">documentation</a>." : "Конфигурация заголовков обратного прокси не верна, либо доступ к ownCloud осуществлён через доверенный прокси. Если ownCloud открыт не через доверенный прокси то это проблема безопасности, которая может позволить атакующему подделать IP адрес, который видит ownCloud. Дополнительная информация доступна в нашей <a target=\"_blank\" href=\"{docLink}\">документации</a>.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "В качестве распределённого кеша настроен memcached, но установлен неверный модуль PHP \"memcache\". \\OC\\Memcache\\Memcached поддерживает только \"memcached\", но не \"memcache\". Изучите <a target=\"_blank\" href=\"{wikiLink}\">оба модуля в memcached wiki</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Некоторые файлы не прошли проверку целостности. Дополнительная информация о том, как устранить данную проблему доступна в нашей <a target=\"_blank\" href=\"{docLink}\">документации</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Список проблемных файлов…</a> / <a href=\"{rescanEndpoint}\">Сканировать ещё раз…</a>)",
"Error occurred while checking server setup" : "Произошла ошибка при проверке настроек сервера",
"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." : "Ваш каталог данных и ваши файлы возможно доступны из Интернета. Файл .htaccess не работает. Мы настоятельно рекомендуем Вам настроить веб сервер таким образом, чтобы каталог данных не был больше доступен или переместить каталог данных за пределы корня веб сервера.",
"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." : "Заголовок HTTP \"{header}\" не настроен на значение \"{expected}\". Это потенциальная проблема безопасности и мы рекомендуем изменить эти настройки.",
+ "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}\">security tips</a>." : "Заголовок HTTP \"Strict-Transport-Security\" не настроен хотя бы на \"{seconds}\" секунд. Для улучшения безопасности мы рекомендуем включить HSTS согласно нашим <a href=\"{docUrl}\">подсказкам по безопасности</a>.",
"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>." : "Вы зашли на этот сайт через HTTP. Мы настоятельно рекомендуем настроить ваш сервер на использование HTTPS согласно нашим <a href=\"{docUrl}\">подсказкам по безопасности</a>.",
"Shared" : "Общий доступ",
"Shared with {recipients}" : "Вы поделились с {recipients}",
@@ -193,6 +193,7 @@
"sunny" : "солнечно",
"Hello {name}, the weather is {weather}" : "Здравствуйте {name}, погода {weather}",
"Hello {name}" : "Здравствуйте {name}",
+ "new" : "новый",
"_download %n file_::_download %n files_" : ["скачать %n файл","скачать %n файла","скачать %n файлов","скачать %n файлов"],
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Идет обновление. Покидая эту страницу, вы можете прервать процесс обновления.",
"Updating {productName} to version {version}, this may take a while." : "Идет обновление {productName} до версии {version}, это может занять некоторое время.",
diff --git a/core/l10n/sl.js b/core/l10n/sl.js
index 3cb9f0762c6..cd1b637f510 100644
--- a/core/l10n/sl.js
+++ b/core/l10n/sl.js
@@ -8,16 +8,18 @@ OC.L10N.register(
"Maintenance mode is kept active" : "Vzdrževalni način je še vedno dejaven",
"Updating database schema" : "Poteka posodabljanje sheme podatkovne zbirke",
"Updated database" : "Posodobljena podatkovna zbirka",
- "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Preverjam, ali lahko posodobim strukturo baze (zaradi velikosti lahko traja dlje časa)",
+ "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Poteka preverjanje, ali je shemo podatkovne zbirke mogoče posodobiti (zaradi velikosti je lahko opravilo dolgotrajno).",
"Checked database schema update" : "Izbrana posodobitev sheme podatkovne zbirke",
"Checking updates of apps" : "Poteka preverjanje za posodobitve programov",
- "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Preverjam, ali lahko posodobim strukturo baze za %s (lahko traja dlje zaradi velikosti baze)",
+ "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Poteka preverjanje, ali je shemo podatkovne zbirke za %s mogoče posodobiti (trajanje posodobitve je odvisno od velikosti zbirke).",
"Checked database schema update for apps" : "Izbrana posodobitev sheme podatkovne zbirke za programe",
"Updated \"%s\" to %s" : "Datoteka \"%s\" je posodobljena na %s",
"Repair warning: " : "Opozorilo popravila:",
"Repair error: " : "Napaka popravila:",
"Set log level to debug" : "Nastavi raven beleženja za razhroščevanje",
"Reset log level" : "Počisti raven beleženja",
+ "Starting code integrity check" : "Začenjanje preverjanja stanja kode",
+ "Finished code integrity check" : "Končano preverjanje stanja kode",
"%s (3rdparty)" : "%s (zunanje)",
"%s (incompatible)" : "%s (neskladno)",
"Following apps have been disabled: %s" : "Navedeni programi so onemogočeni: %s",
@@ -114,6 +116,7 @@ OC.L10N.register(
"So-so password" : "Slabo geslo",
"Good password" : "Dobro geslo",
"Strong password" : "Odlično geslo",
+ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Spletni stražnik še ni ustrezno nastavljen in ne omogoča usklajevanja, saj je vmesnik WebDAV videti okvarjen.",
"Error occurred while checking server setup" : "Prišlo je do napake med preverjanjem nastavitev strežnika",
"Shared" : "V souporabi",
"Shared with {recipients}" : "V souporabi z {recipients}",
@@ -148,14 +151,24 @@ OC.L10N.register(
"change" : "sprememba",
"delete" : "izbriše",
"access control" : "nadzor dostopa",
+ "Could not unshare" : "Ni mogoče prekiniti souporabe",
"Share details could not be loaded for this item." : "Podrobnosti souporabe za te predmet ni mogoče naložiti.",
+ "No users or groups found for {search}" : "Ni najdenih uporabnikov ali skupin za {search}",
"An error occured. Please try again" : "Prišlo je do napake. Poskusite znova.",
+ "{sharee} (group)" : "{sharee} (skupina)",
+ "{sharee} (at {server})" : "{sharee} (na {server})",
+ "{sharee} (remote)" : "{sharee} (oddaljeno)",
"Share" : "Souporaba",
- "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Soupraba z ljudmi v drugih ownCloud oblakih v formatu uporabnik@domena.si/owncloud",
+ "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Souporaba z uporabniki, ki so na drugih oblakih ownCloud s povezavo uporabnik@domena.si/owncloud",
"Share with users or groups …" : "Souporaba z uporabniki ali skupinami ...",
"Share with users, groups or remote users …" : "Souporaba z uporabniki, skupinami ali oddaljenimi uporabniki ...",
+ "Error removing share" : "Napaka odstranjevanja souporabe",
"Warning" : "Opozorilo",
"Error while sending notification" : "Napaka med pošiljanjem obvestila",
+ "Non-existing tag #{tag}" : "Neobstoječa oznaka #{tag}",
+ "not assignable" : "ni dodeljivo",
+ "invisible" : "nevidno",
+ "({scope})" : "({scope})",
"Delete" : "Izbriši",
"Rename" : "Preimenuj",
"The object type is not specified." : "Vrsta predmeta ni podana.",
@@ -169,8 +182,9 @@ OC.L10N.register(
"sunny" : "sončno",
"Hello {name}, the weather is {weather}" : "Pozdravljeni, {name}, vreme je {weather}",
"Hello {name}" : "Pozdravljeni, {name}",
+ "new" : "novo",
"_download %n file_::_download %n files_" : ["prejmi %n datoteko","prejmi %n datoteki","prejmi %n datoteke","prejmi %n datotek"],
- "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Posodobitev sistema je v teku. Če zapustite stran, lahko v nekaterih okoljih prekine ta proces.",
+ "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Trenutno se izvaja posodobitev sistema. Priporočljivo je počakati, saj se lahko opravilo, če stran zapustite, prekine.",
"Updating {productName} to version {version}, this may take a while." : "Poteka posodabljanje {productName} na različico {version}. Opravilo je lahko dolgotrajno.",
"An error occurred." : "Prišlo je do napake.",
"Please reload the page." : "Stran je treba ponovno naložiti",
@@ -221,6 +235,8 @@ OC.L10N.register(
"Data folder" : "Podatkovna mapa",
"Configure the database" : "Nastavi podatkovno zbirko",
"Only %s is available." : "Le %s je na voljo.",
+ "Install and activate additional PHP modules to choose other database types." : "Namestite in omogočite dodatne module PHP za izbor drugih vrst podatkovnih zbirk.",
+ "For more details check out the documentation." : "Za več podrobnosti preverite dokumentacijo.",
"Database user" : "Uporabnik podatkovne zbirke",
"Database password" : "Geslo podatkovne zbirke",
"Database name" : "Ime podatkovne zbirke",
@@ -240,7 +256,7 @@ OC.L10N.register(
"An internal error occured." : "Prišlo je do notranje napake.",
"Please try again or contact your administrator." : "Poskusite znova ali pa stopite v stik s skrbnikom sistema.",
"Log in" : "Prijava",
- "Wrong password. Reset it?" : "Napačno gelo. Ponastavimo?",
+ "Wrong password. Reset it?" : "Napačno geslo. Ali ga želite ponastaviti?",
"Wrong password." : "Napačno geslo!",
"Stay logged in" : "Ohrani prijavo",
"Alternative Logins" : "Druge prijavne možnosti",
@@ -256,14 +272,14 @@ OC.L10N.register(
"Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Glede na nastavitve bi lahko kot skrbnik uporabili spodnji gumb in domeno ročno določili kot varno.",
"Add \"%s\" as trusted domain" : "Dodaj \"%s\" kot varno domeno",
"App update required" : "Zahtevana je posodobitev programa",
- "%s will be updated to version %s" : "%s bo posodbljena na verzijo %s",
- "These apps will be updated:" : "Te aplikacije bodo posodbljene:",
- "These incompatible apps will be disabled:" : "Te neskladne aplikacije bodo onemogočene:",
+ "%s will be updated to version %s" : "%s bo posodobljen na različico %s.",
+ "These apps will be updated:" : "Posodobljeni bodo naslednji vstavki:",
+ "These incompatible apps will be disabled:" : "Ti neskladni vstavki bodo onemogočeni:",
"The theme %s has been disabled." : "Tema %s je onemogočena za uporabo.",
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Pred nadaljevanjem se prepričajte se, da je ustvarjena varnostna kopija podatkovne zbirke, nastavitvenih datotek in podatkovne mape.",
"Start update" : "Začni posodobitev",
"To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Za razreševanje časovnih zahtev večjih namestitev lahko uporabite ukaz iz namestitvene mape:",
- "This %s instance is currently in maintenance mode, which may take a while." : "Ta %s strežnik je trenutno v načinu vzdrževanja, kar lahko traja dlje časa.",
+ "This %s instance is currently in maintenance mode, which may take a while." : "Strežnik %s je trenutno v načinu vzdrževanja, kar lahko traja.",
"This page will refresh itself when the %s instance is available again." : "Stran bo osvežena ko bo %s spet na voljo."
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/core/l10n/sl.json b/core/l10n/sl.json
index 1b184793888..6649d094f11 100644
--- a/core/l10n/sl.json
+++ b/core/l10n/sl.json
@@ -6,16 +6,18 @@
"Maintenance mode is kept active" : "Vzdrževalni način je še vedno dejaven",
"Updating database schema" : "Poteka posodabljanje sheme podatkovne zbirke",
"Updated database" : "Posodobljena podatkovna zbirka",
- "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Preverjam, ali lahko posodobim strukturo baze (zaradi velikosti lahko traja dlje časa)",
+ "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Poteka preverjanje, ali je shemo podatkovne zbirke mogoče posodobiti (zaradi velikosti je lahko opravilo dolgotrajno).",
"Checked database schema update" : "Izbrana posodobitev sheme podatkovne zbirke",
"Checking updates of apps" : "Poteka preverjanje za posodobitve programov",
- "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Preverjam, ali lahko posodobim strukturo baze za %s (lahko traja dlje zaradi velikosti baze)",
+ "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Poteka preverjanje, ali je shemo podatkovne zbirke za %s mogoče posodobiti (trajanje posodobitve je odvisno od velikosti zbirke).",
"Checked database schema update for apps" : "Izbrana posodobitev sheme podatkovne zbirke za programe",
"Updated \"%s\" to %s" : "Datoteka \"%s\" je posodobljena na %s",
"Repair warning: " : "Opozorilo popravila:",
"Repair error: " : "Napaka popravila:",
"Set log level to debug" : "Nastavi raven beleženja za razhroščevanje",
"Reset log level" : "Počisti raven beleženja",
+ "Starting code integrity check" : "Začenjanje preverjanja stanja kode",
+ "Finished code integrity check" : "Končano preverjanje stanja kode",
"%s (3rdparty)" : "%s (zunanje)",
"%s (incompatible)" : "%s (neskladno)",
"Following apps have been disabled: %s" : "Navedeni programi so onemogočeni: %s",
@@ -112,6 +114,7 @@
"So-so password" : "Slabo geslo",
"Good password" : "Dobro geslo",
"Strong password" : "Odlično geslo",
+ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Spletni stražnik še ni ustrezno nastavljen in ne omogoča usklajevanja, saj je vmesnik WebDAV videti okvarjen.",
"Error occurred while checking server setup" : "Prišlo je do napake med preverjanjem nastavitev strežnika",
"Shared" : "V souporabi",
"Shared with {recipients}" : "V souporabi z {recipients}",
@@ -146,14 +149,24 @@
"change" : "sprememba",
"delete" : "izbriše",
"access control" : "nadzor dostopa",
+ "Could not unshare" : "Ni mogoče prekiniti souporabe",
"Share details could not be loaded for this item." : "Podrobnosti souporabe za te predmet ni mogoče naložiti.",
+ "No users or groups found for {search}" : "Ni najdenih uporabnikov ali skupin za {search}",
"An error occured. Please try again" : "Prišlo je do napake. Poskusite znova.",
+ "{sharee} (group)" : "{sharee} (skupina)",
+ "{sharee} (at {server})" : "{sharee} (na {server})",
+ "{sharee} (remote)" : "{sharee} (oddaljeno)",
"Share" : "Souporaba",
- "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Soupraba z ljudmi v drugih ownCloud oblakih v formatu uporabnik@domena.si/owncloud",
+ "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Souporaba z uporabniki, ki so na drugih oblakih ownCloud s povezavo uporabnik@domena.si/owncloud",
"Share with users or groups …" : "Souporaba z uporabniki ali skupinami ...",
"Share with users, groups or remote users …" : "Souporaba z uporabniki, skupinami ali oddaljenimi uporabniki ...",
+ "Error removing share" : "Napaka odstranjevanja souporabe",
"Warning" : "Opozorilo",
"Error while sending notification" : "Napaka med pošiljanjem obvestila",
+ "Non-existing tag #{tag}" : "Neobstoječa oznaka #{tag}",
+ "not assignable" : "ni dodeljivo",
+ "invisible" : "nevidno",
+ "({scope})" : "({scope})",
"Delete" : "Izbriši",
"Rename" : "Preimenuj",
"The object type is not specified." : "Vrsta predmeta ni podana.",
@@ -167,8 +180,9 @@
"sunny" : "sončno",
"Hello {name}, the weather is {weather}" : "Pozdravljeni, {name}, vreme je {weather}",
"Hello {name}" : "Pozdravljeni, {name}",
+ "new" : "novo",
"_download %n file_::_download %n files_" : ["prejmi %n datoteko","prejmi %n datoteki","prejmi %n datoteke","prejmi %n datotek"],
- "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Posodobitev sistema je v teku. Če zapustite stran, lahko v nekaterih okoljih prekine ta proces.",
+ "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Trenutno se izvaja posodobitev sistema. Priporočljivo je počakati, saj se lahko opravilo, če stran zapustite, prekine.",
"Updating {productName} to version {version}, this may take a while." : "Poteka posodabljanje {productName} na različico {version}. Opravilo je lahko dolgotrajno.",
"An error occurred." : "Prišlo je do napake.",
"Please reload the page." : "Stran je treba ponovno naložiti",
@@ -219,6 +233,8 @@
"Data folder" : "Podatkovna mapa",
"Configure the database" : "Nastavi podatkovno zbirko",
"Only %s is available." : "Le %s je na voljo.",
+ "Install and activate additional PHP modules to choose other database types." : "Namestite in omogočite dodatne module PHP za izbor drugih vrst podatkovnih zbirk.",
+ "For more details check out the documentation." : "Za več podrobnosti preverite dokumentacijo.",
"Database user" : "Uporabnik podatkovne zbirke",
"Database password" : "Geslo podatkovne zbirke",
"Database name" : "Ime podatkovne zbirke",
@@ -238,7 +254,7 @@
"An internal error occured." : "Prišlo je do notranje napake.",
"Please try again or contact your administrator." : "Poskusite znova ali pa stopite v stik s skrbnikom sistema.",
"Log in" : "Prijava",
- "Wrong password. Reset it?" : "Napačno gelo. Ponastavimo?",
+ "Wrong password. Reset it?" : "Napačno geslo. Ali ga želite ponastaviti?",
"Wrong password." : "Napačno geslo!",
"Stay logged in" : "Ohrani prijavo",
"Alternative Logins" : "Druge prijavne možnosti",
@@ -254,14 +270,14 @@
"Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Glede na nastavitve bi lahko kot skrbnik uporabili spodnji gumb in domeno ročno določili kot varno.",
"Add \"%s\" as trusted domain" : "Dodaj \"%s\" kot varno domeno",
"App update required" : "Zahtevana je posodobitev programa",
- "%s will be updated to version %s" : "%s bo posodbljena na verzijo %s",
- "These apps will be updated:" : "Te aplikacije bodo posodbljene:",
- "These incompatible apps will be disabled:" : "Te neskladne aplikacije bodo onemogočene:",
+ "%s will be updated to version %s" : "%s bo posodobljen na različico %s.",
+ "These apps will be updated:" : "Posodobljeni bodo naslednji vstavki:",
+ "These incompatible apps will be disabled:" : "Ti neskladni vstavki bodo onemogočeni:",
"The theme %s has been disabled." : "Tema %s je onemogočena za uporabo.",
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Pred nadaljevanjem se prepričajte se, da je ustvarjena varnostna kopija podatkovne zbirke, nastavitvenih datotek in podatkovne mape.",
"Start update" : "Začni posodobitev",
"To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Za razreševanje časovnih zahtev večjih namestitev lahko uporabite ukaz iz namestitvene mape:",
- "This %s instance is currently in maintenance mode, which may take a while." : "Ta %s strežnik je trenutno v načinu vzdrževanja, kar lahko traja dlje časa.",
+ "This %s instance is currently in maintenance mode, which may take a while." : "Strežnik %s je trenutno v načinu vzdrževanja, kar lahko traja.",
"This page will refresh itself when the %s instance is available again." : "Stran bo osvežena ko bo %s spet na voljo."
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
} \ No newline at end of file
diff --git a/core/l10n/sq.js b/core/l10n/sq.js
index 01359e4d6dd..0ab35de0f70 100644
--- a/core/l10n/sq.js
+++ b/core/l10n/sq.js
@@ -123,7 +123,7 @@ OC.L10N.register(
"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." : "Ky shërbyes nuk ka lidhje Internet që funksionon. Kjo do të thotë që disa prej veçorive, të tilla si montimi i depozitave të jashtme, njoftimet mbi përditësime apo instalim aplikacionesh nga palë të treta, s’do të funksionojnë. Edhe hyrja në kartela së largëti, apo dërgimi i email-eve për njoftime mund të mos funksionojnë. Këshillojmë të aktivizoni për këtë shërbyes lidhjen në Internet, nëse doni t’i keni krejt këto veçori.",
"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\" href=\"{docLink}\">documentation</a>." : "S’është formësuar ndonjë fshehtinë kujtese. Që të përmirësohet punimi juaj, ju lutemi, formësoni një fshehtinë kujtese, në pastë. Të dhëna të mëtejshme mund të gjenden te <a target=\"_blank\" href=\"{docLink}\">dokumentimi</a> ynë.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom s’është i lexueshëm nga PHP-ja, çka shkëshillohet me forcë, për arsye sigurie. Më tepër informacion mund të gjendet te <a target=\"_blank\" href=\"{docLink}\">dokumentimi</a> ynë.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Versioni juaj i PHP-së ({version}) nuk <a target=\"_blank\" href=\"{phpLink}\">mbulohet më nga PHP-ja</a>. Ju nxisim ta përmirësoni versionin tuaj të PHP-së që të përfitoni nga përditësimet e funksionimit dhe sigurisë të ofruara nga PHP-ja.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Xhironi PHP {version}. Ju nxitim ta përmirësoni PHP-në me një version të ri që të përfitoni <a target=\"_blank\" href=\"{phpLink}\">nga përditësimet e funksionimit dhe sigurisë të ofruara nga PHP Group</a>, sapo kjo të mbulohet nga shpërndarja juaj.",
"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\" href=\"{docLink}\">documentation</a>." : "Formësimi për krye ndërmjetësi prapësor është i pasaktë, ose jeni duke hyrë në ownCloud prej një ndërmjetësi të besuar. Nëse s’jeni duke hyrë në ownCloud prej një ndërmjetësi të besuar, ky është një problem sigurie dhe mund t’i lejojë një agresori të maskojë adresën e vet IP si një të pranueshme nga ownCloud-i. Të dhëna të mëtejshme mund të gjeni te <a target=\"_blank\" href=\"{docLink}\">dokumentimi</a> ynë.",
"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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached është formësuar si fshehtinë e shpërndarë, por është instaluar moduli i gabuar PHP \"memcache\". \\OC\\Memcache\\Memcached mbulon vetëm \"memcached\" dhe jo \"memcache\". Shihni <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki për të dy modulet</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Disa prej kartelave s’e kaluan dot kontrollin e integritetit. Si si mund të zgjidhet ky problem mund ta shihni më në thellësi te <a target=\"_blank\" href=\"{docLink}\">dokumentimi ynë</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Listë e kartelave të pavlefshme…</a> / <a href=\"{rescanEndpoint}\">Rikontrolloji…</a>)",
diff --git a/core/l10n/sq.json b/core/l10n/sq.json
index aa5d502a95b..b9d5031625a 100644
--- a/core/l10n/sq.json
+++ b/core/l10n/sq.json
@@ -121,7 +121,7 @@
"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." : "Ky shërbyes nuk ka lidhje Internet që funksionon. Kjo do të thotë që disa prej veçorive, të tilla si montimi i depozitave të jashtme, njoftimet mbi përditësime apo instalim aplikacionesh nga palë të treta, s’do të funksionojnë. Edhe hyrja në kartela së largëti, apo dërgimi i email-eve për njoftime mund të mos funksionojnë. Këshillojmë të aktivizoni për këtë shërbyes lidhjen në Internet, nëse doni t’i keni krejt këto veçori.",
"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\" href=\"{docLink}\">documentation</a>." : "S’është formësuar ndonjë fshehtinë kujtese. Që të përmirësohet punimi juaj, ju lutemi, formësoni një fshehtinë kujtese, në pastë. Të dhëna të mëtejshme mund të gjenden te <a target=\"_blank\" href=\"{docLink}\">dokumentimi</a> ynë.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom s’është i lexueshëm nga PHP-ja, çka shkëshillohet me forcë, për arsye sigurie. Më tepër informacion mund të gjendet te <a target=\"_blank\" href=\"{docLink}\">dokumentimi</a> ynë.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Versioni juaj i PHP-së ({version}) nuk <a target=\"_blank\" href=\"{phpLink}\">mbulohet më nga PHP-ja</a>. Ju nxisim ta përmirësoni versionin tuaj të PHP-së që të përfitoni nga përditësimet e funksionimit dhe sigurisë të ofruara nga PHP-ja.",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Xhironi PHP {version}. Ju nxitim ta përmirësoni PHP-në me një version të ri që të përfitoni <a target=\"_blank\" href=\"{phpLink}\">nga përditësimet e funksionimit dhe sigurisë të ofruara nga PHP Group</a>, sapo kjo të mbulohet nga shpërndarja juaj.",
"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\" href=\"{docLink}\">documentation</a>." : "Formësimi për krye ndërmjetësi prapësor është i pasaktë, ose jeni duke hyrë në ownCloud prej një ndërmjetësi të besuar. Nëse s’jeni duke hyrë në ownCloud prej një ndërmjetësi të besuar, ky është një problem sigurie dhe mund t’i lejojë një agresori të maskojë adresën e vet IP si një të pranueshme nga ownCloud-i. Të dhëna të mëtejshme mund të gjeni te <a target=\"_blank\" href=\"{docLink}\">dokumentimi</a> ynë.",
"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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached është formësuar si fshehtinë e shpërndarë, por është instaluar moduli i gabuar PHP \"memcache\". \\OC\\Memcache\\Memcached mbulon vetëm \"memcached\" dhe jo \"memcache\". Shihni <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki për të dy modulet</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Disa prej kartelave s’e kaluan dot kontrollin e integritetit. Si si mund të zgjidhet ky problem mund ta shihni më në thellësi te <a target=\"_blank\" href=\"{docLink}\">dokumentimi ynë</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Listë e kartelave të pavlefshme…</a> / <a href=\"{rescanEndpoint}\">Rikontrolloji…</a>)",
diff --git a/core/l10n/sv.js b/core/l10n/sv.js
index a960966527e..559a38d456a 100644
--- a/core/l10n/sv.js
+++ b/core/l10n/sv.js
@@ -9,14 +9,22 @@ OC.L10N.register(
"Updating database schema" : "Uppdaterar databasschema",
"Updated database" : "Uppdaterade databasen",
"Checked database schema update" : "Kontrollerade uppdatering av databasschemat",
+ "Checking updates of apps" : "Kontrollerar uppdatering utav appar",
"Checked database schema update for apps" : "Kontrollerade uppdatering av databasschemat för applikationer",
"Updated \"%s\" to %s" : "Uppdaterade \"%s\" till %s",
+ "Repair warning: " : "Reperationsvarning:",
+ "Repair error: " : "Reperationsfel:",
+ "Set log level to debug" : "Sätter loggingsnivå till \"debug\"",
+ "Reset log level" : "Återställer loggningsnivå",
+ "%s (3rdparty)" : "%s (3rdparty)",
+ "%s (incompatible)" : "%s (incompatible)",
"Already up to date" : "Redan uppdaterad",
"Please select a file." : "Vänligen välj en fil.",
"File is too big" : "Filen är för stor",
"No image or file provided" : "Ingen bild eller fil har tillhandahållits",
"Unknown filetype" : "Okänd filtyp",
"Invalid image" : "Ogiltig bild",
+ "An error occurred. Please contact your admin." : "Ett fel har inträffat. Kontakta din administratör.",
"No temporary profile picture available, try again" : "Ingen temporär profilbild finns tillgänglig, försök igen",
"No crop data provided" : "Ingen beskärdata har angivits",
"Couldn't reset password because the token is invalid" : "Kunde inte återställa lösenordet på grund av felaktig token",
@@ -134,25 +142,31 @@ OC.L10N.register(
"delete" : "radera",
"access control" : "åtkomstkontroll",
"An error occured. Please try again" : "Ett fel uppstod. Var god försök igen",
+ "{sharee} (group)" : "{sharee} (group)",
+ "{sharee} (at {server})" : "{sharee} (at {server})",
+ "{sharee} (remote)" : "{sharee} (remote)",
"Share" : "Dela",
"Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Dela med folk på andra ownClouds med följande syntax username@example.com/owncloud",
"Share with users or groups …" : "Dela med användare eller grupper ...",
"Share with users, groups or remote users …" : "Dela med användare, grupper eller fjärranvändare ...",
"Warning" : "Varning",
+ "Error while sending notification" : "Fel när notifikation skulle skickas",
"invisible" : "osynlig",
+ "({scope})" : "({scope})",
"Delete" : "Radera",
"Rename" : "Byt namn",
"The object type is not specified." : "Objekttypen är inte specificerad.",
"Enter new" : "Skriv nytt",
"Add" : "Lägg till",
- "Edit tags" : "Editera taggar",
- "Error loading dialog template: {error}" : "Fel under laddning utav dialog mall: {fel}",
+ "Edit tags" : "Redigera taggar",
+ "Error loading dialog template: {error}" : "Fel vid inläsning av dialogmall: {fel}",
"No tags selected for deletion." : "Inga taggar valda för borttagning.",
"unknown text" : "okänd text",
- "Hello world!" : "Hej värld!",
+ "Hello world!" : "Hej världen!",
"sunny" : "soligt",
"Hello {name}, the weather is {weather}" : "Hej {name}, vädret är {weather}",
"Hello {name}" : "Hej {name}",
+ "new" : "ny",
"_download %n file_::_download %n files_" : ["Ladda ner %n fil","Ladda ner %n filer"],
"Updating {productName} to version {version}, this may take a while." : "Uppdaterar {productName} till version {version}, detta kan ta en stund.",
"An error occurred." : "Ett fel inträffade.",
@@ -165,13 +179,13 @@ OC.L10N.register(
"Apps" : "Program",
"Admin" : "Admin",
"Help" : "Hjälp",
- "Error loading tags" : "Fel vid laddning utav taggar",
+ "Error loading tags" : "Fel vid inläsning utav taggar",
"Tag already exists" : "Tagg existerar redan",
"Error deleting tag(s)" : "Fel vid borttagning utav tagg(ar)",
- "Error tagging" : "Fel taggning",
- "Error untagging" : "Fel av taggning",
- "Error favoriting" : "Fel favorisering",
- "Error unfavoriting" : "Fel av favorisering ",
+ "Error tagging" : "Fel vid taggning",
+ "Error untagging" : "Fel vid avtaggning",
+ "Error favoriting" : "Fel vid favorisering",
+ "Error unfavoriting" : "Fel vid avfavorisering ",
"Access forbidden" : "Åtkomst förbjuden",
"File not found" : "Filen kunde inte hittas",
"The specified document has not been found on the server." : "Det angivna dokumentet hittades inte på servern.",
@@ -230,15 +244,15 @@ OC.L10N.register(
"Reset password" : "Återställ lösenordet",
"This ownCloud instance is currently in single user mode." : "Denna ownCloud instans är för närvarande i enanvändarläge",
"This means only administrators can use the instance." : "Detta betyder att endast administartörer kan använda instansen.",
- "Contact your system administrator if this message persists or appeared unexpectedly." : "Hör av dig till din system administratör ifall detta meddelande fortsätter eller visas oväntat.",
+ "Contact your system administrator if this message persists or appeared unexpectedly." : "Hör av dig till din systemadministratör ifall detta meddelande fortsätter eller visas oväntat.",
"Thank you for your patience." : "Tack för ditt tålamod.",
"You are accessing the server from an untrusted domain." : "Du ansluter till servern från en osäker domän.",
"Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Beroende på din konfiguartion, så finns det möjlighet att du som administratör kan använda knappen nedan för att verifiera på denna domän.",
- "Add \"%s\" as trusted domain" : "Lägg till \"%s\" som en trusted domain",
+ "Add \"%s\" as trusted domain" : "Lägg till \"%s\" som en pålitlig domän",
"App update required" : "Appen behöver uppdateras",
"%s will be updated to version %s" : "%s kommer att uppdateras till version %s",
"These apps will be updated:" : "Dessa appar kommer att uppdateras:",
- "These incompatible apps will be disabled:" : "Dessa inkompatibla apparna kommer att inaktiveras",
+ "These incompatible apps will be disabled:" : "Dessa inkompatibla appar kommer att inaktiveras",
"The theme %s has been disabled." : "Temat %s har blivit inaktiverat.",
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Vänligen säkerställ att en säkerhetskopia har gjorts av databasen, konfigurations- och datamappen innan du fortsätter.",
"Start update" : "Starta uppdateringen",
diff --git a/core/l10n/sv.json b/core/l10n/sv.json
index 019c9c94369..1969118737c 100644
--- a/core/l10n/sv.json
+++ b/core/l10n/sv.json
@@ -7,14 +7,22 @@
"Updating database schema" : "Uppdaterar databasschema",
"Updated database" : "Uppdaterade databasen",
"Checked database schema update" : "Kontrollerade uppdatering av databasschemat",
+ "Checking updates of apps" : "Kontrollerar uppdatering utav appar",
"Checked database schema update for apps" : "Kontrollerade uppdatering av databasschemat för applikationer",
"Updated \"%s\" to %s" : "Uppdaterade \"%s\" till %s",
+ "Repair warning: " : "Reperationsvarning:",
+ "Repair error: " : "Reperationsfel:",
+ "Set log level to debug" : "Sätter loggingsnivå till \"debug\"",
+ "Reset log level" : "Återställer loggningsnivå",
+ "%s (3rdparty)" : "%s (3rdparty)",
+ "%s (incompatible)" : "%s (incompatible)",
"Already up to date" : "Redan uppdaterad",
"Please select a file." : "Vänligen välj en fil.",
"File is too big" : "Filen är för stor",
"No image or file provided" : "Ingen bild eller fil har tillhandahållits",
"Unknown filetype" : "Okänd filtyp",
"Invalid image" : "Ogiltig bild",
+ "An error occurred. Please contact your admin." : "Ett fel har inträffat. Kontakta din administratör.",
"No temporary profile picture available, try again" : "Ingen temporär profilbild finns tillgänglig, försök igen",
"No crop data provided" : "Ingen beskärdata har angivits",
"Couldn't reset password because the token is invalid" : "Kunde inte återställa lösenordet på grund av felaktig token",
@@ -132,25 +140,31 @@
"delete" : "radera",
"access control" : "åtkomstkontroll",
"An error occured. Please try again" : "Ett fel uppstod. Var god försök igen",
+ "{sharee} (group)" : "{sharee} (group)",
+ "{sharee} (at {server})" : "{sharee} (at {server})",
+ "{sharee} (remote)" : "{sharee} (remote)",
"Share" : "Dela",
"Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Dela med folk på andra ownClouds med följande syntax username@example.com/owncloud",
"Share with users or groups …" : "Dela med användare eller grupper ...",
"Share with users, groups or remote users …" : "Dela med användare, grupper eller fjärranvändare ...",
"Warning" : "Varning",
+ "Error while sending notification" : "Fel när notifikation skulle skickas",
"invisible" : "osynlig",
+ "({scope})" : "({scope})",
"Delete" : "Radera",
"Rename" : "Byt namn",
"The object type is not specified." : "Objekttypen är inte specificerad.",
"Enter new" : "Skriv nytt",
"Add" : "Lägg till",
- "Edit tags" : "Editera taggar",
- "Error loading dialog template: {error}" : "Fel under laddning utav dialog mall: {fel}",
+ "Edit tags" : "Redigera taggar",
+ "Error loading dialog template: {error}" : "Fel vid inläsning av dialogmall: {fel}",
"No tags selected for deletion." : "Inga taggar valda för borttagning.",
"unknown text" : "okänd text",
- "Hello world!" : "Hej värld!",
+ "Hello world!" : "Hej världen!",
"sunny" : "soligt",
"Hello {name}, the weather is {weather}" : "Hej {name}, vädret är {weather}",
"Hello {name}" : "Hej {name}",
+ "new" : "ny",
"_download %n file_::_download %n files_" : ["Ladda ner %n fil","Ladda ner %n filer"],
"Updating {productName} to version {version}, this may take a while." : "Uppdaterar {productName} till version {version}, detta kan ta en stund.",
"An error occurred." : "Ett fel inträffade.",
@@ -163,13 +177,13 @@
"Apps" : "Program",
"Admin" : "Admin",
"Help" : "Hjälp",
- "Error loading tags" : "Fel vid laddning utav taggar",
+ "Error loading tags" : "Fel vid inläsning utav taggar",
"Tag already exists" : "Tagg existerar redan",
"Error deleting tag(s)" : "Fel vid borttagning utav tagg(ar)",
- "Error tagging" : "Fel taggning",
- "Error untagging" : "Fel av taggning",
- "Error favoriting" : "Fel favorisering",
- "Error unfavoriting" : "Fel av favorisering ",
+ "Error tagging" : "Fel vid taggning",
+ "Error untagging" : "Fel vid avtaggning",
+ "Error favoriting" : "Fel vid favorisering",
+ "Error unfavoriting" : "Fel vid avfavorisering ",
"Access forbidden" : "Åtkomst förbjuden",
"File not found" : "Filen kunde inte hittas",
"The specified document has not been found on the server." : "Det angivna dokumentet hittades inte på servern.",
@@ -228,15 +242,15 @@
"Reset password" : "Återställ lösenordet",
"This ownCloud instance is currently in single user mode." : "Denna ownCloud instans är för närvarande i enanvändarläge",
"This means only administrators can use the instance." : "Detta betyder att endast administartörer kan använda instansen.",
- "Contact your system administrator if this message persists or appeared unexpectedly." : "Hör av dig till din system administratör ifall detta meddelande fortsätter eller visas oväntat.",
+ "Contact your system administrator if this message persists or appeared unexpectedly." : "Hör av dig till din systemadministratör ifall detta meddelande fortsätter eller visas oväntat.",
"Thank you for your patience." : "Tack för ditt tålamod.",
"You are accessing the server from an untrusted domain." : "Du ansluter till servern från en osäker domän.",
"Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Beroende på din konfiguartion, så finns det möjlighet att du som administratör kan använda knappen nedan för att verifiera på denna domän.",
- "Add \"%s\" as trusted domain" : "Lägg till \"%s\" som en trusted domain",
+ "Add \"%s\" as trusted domain" : "Lägg till \"%s\" som en pålitlig domän",
"App update required" : "Appen behöver uppdateras",
"%s will be updated to version %s" : "%s kommer att uppdateras till version %s",
"These apps will be updated:" : "Dessa appar kommer att uppdateras:",
- "These incompatible apps will be disabled:" : "Dessa inkompatibla apparna kommer att inaktiveras",
+ "These incompatible apps will be disabled:" : "Dessa inkompatibla appar kommer att inaktiveras",
"The theme %s has been disabled." : "Temat %s har blivit inaktiverat.",
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Vänligen säkerställ att en säkerhetskopia har gjorts av databasen, konfigurations- och datamappen innan du fortsätter.",
"Start update" : "Starta uppdateringen",
diff --git a/core/l10n/th_TH.js b/core/l10n/th_TH.js
index fb9005d526d..65d912d72d5 100644
--- a/core/l10n/th_TH.js
+++ b/core/l10n/th_TH.js
@@ -123,7 +123,6 @@ OC.L10N.register(
"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." : "เซิร์ฟเวอร์นี้ไม่มีการเชื่อมต่ออินเทอร์เน็ตซึ่งหมายความว่าบางส่วนของคุณสมบัติ เช่น การจัดเก็บข้อมูลภายนอก การแจ้งเตือนเกี่ยวกับการปรับปรุงหรือการติดตั้งแอพพลิเคชันของบุคคลที่สามจะไม่ทำงาน การเข้าถึงไฟล์จากระยะไกลและการส่งอีเมล์แจ้งเตือนอาจจะไม่ทำงาน เราขอแนะนำให้เปิดใช้งานการเชื่อมต่ออินเทอร์เน็ตสำหรับเซิร์ฟเวอร์นี้ถ้าคุณต้องการใช้งานคุณสมบัติทั้งหมด",
"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\" href=\"{docLink}\">documentation</a>." : "ไม่ได้กำหนดค่าหน่วยความจำแคช เพื่อเพิ่มประสิทธิภาพของคุณโปรดกำหนดค่า memcache หากต้องการข้อมูลเพิ่มเติมสามารถอ่านได้ใน <a target=\"_blank\" href=\"{docLink}\">เอกสาร</a> ของเรา",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "ไม่สามารถอ่าน /dev/urandom โดย PHP ซึ่งมีผลอย่างมากสำหรับเหตุผลด้านความปลอดภัย สามารถข้อมูลเพิ่มเติมได้ใน <a target=\"_blank\" href=\"{docLink}\">เอกสาร</a> ของเรา",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "PHP ของคุณรุ่น ({version}) <a target=\"_blank\" href=\"{phpLink}\">ไม่สนับสนุน PHP</a> เราขอแนะนำให้อัพเกรดรุ่น PHP ของคุณ เพื่อปรับปรุงประสิทธิภาพการทำงานและเนื้อหาด้านความปลอดภัย",
"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\" href=\"{docLink}\">documentation</a>." : "การกำหนดค่าส่วนหัวของรีเวิร์สพร็อกซี่ไม่ถูกต้องหรือคุณกำลังเข้าถึง ownCloud จากพร็อกซี่ที่เชื่อถือได้ ถ้าคุณไม่ได้เข้าถึง ownCloud จากพร็อกซี่ที่เชื่อถือได้นี้เป็นปัญหาด้านความปลอดภัยและมันจะอณุญาตทำให้แฮกเกอร์ปลอมที่อยู่ IP ของพวกเขา ข้อมูลเพิ่มเติมสามารถอ่านได้ใน <a target=\"_blank\" href=\"{docLink}\">เอกสาร</a> ของเรา",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "การกำหนดค่า memcach ผิดพลาดเนื่องจากมีโมดูล PHP ของ memcache ได้ถูกติดตั้งไปแล้ว มีการติดตั้ง \\OC\\Memcache\\Memcached สนับสนุนเฉพาะ \"memcached\" แต่ไม่สนับสนุน \"memcache\" คุณสามารถดู <a target=\"_blank\" href=\"{wikiLink}\">ข้อมูลเกี่ยวกับทั้ง 2 โมดูล</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "บางไฟล์ยังไม่ผ่านการตรวจสอบความสมบูรณ์ ข้อมูลเพิ่มเติมเกี่ยวกับวิธีการแก้ไขปัญหาเหล่านี้สามารถอ่านได้จาก <a target=\"_blank\" href=\"{docLink}\">เอกสาร</a> ของเรา (<a href=\"{codeIntegrityDownloadEndpoint}\">รายชื่อของไฟล์ที่ไม่ถูกต้อง…</a> / <a href=\"{rescanEndpoint}\">ค้นหาใหม่…</a>)",
diff --git a/core/l10n/th_TH.json b/core/l10n/th_TH.json
index 38dcbee715a..db6424f0323 100644
--- a/core/l10n/th_TH.json
+++ b/core/l10n/th_TH.json
@@ -121,7 +121,6 @@
"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." : "เซิร์ฟเวอร์นี้ไม่มีการเชื่อมต่ออินเทอร์เน็ตซึ่งหมายความว่าบางส่วนของคุณสมบัติ เช่น การจัดเก็บข้อมูลภายนอก การแจ้งเตือนเกี่ยวกับการปรับปรุงหรือการติดตั้งแอพพลิเคชันของบุคคลที่สามจะไม่ทำงาน การเข้าถึงไฟล์จากระยะไกลและการส่งอีเมล์แจ้งเตือนอาจจะไม่ทำงาน เราขอแนะนำให้เปิดใช้งานการเชื่อมต่ออินเทอร์เน็ตสำหรับเซิร์ฟเวอร์นี้ถ้าคุณต้องการใช้งานคุณสมบัติทั้งหมด",
"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\" href=\"{docLink}\">documentation</a>." : "ไม่ได้กำหนดค่าหน่วยความจำแคช เพื่อเพิ่มประสิทธิภาพของคุณโปรดกำหนดค่า memcache หากต้องการข้อมูลเพิ่มเติมสามารถอ่านได้ใน <a target=\"_blank\" href=\"{docLink}\">เอกสาร</a> ของเรา",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "ไม่สามารถอ่าน /dev/urandom โดย PHP ซึ่งมีผลอย่างมากสำหรับเหตุผลด้านความปลอดภัย สามารถข้อมูลเพิ่มเติมได้ใน <a target=\"_blank\" href=\"{docLink}\">เอกสาร</a> ของเรา",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "PHP ของคุณรุ่น ({version}) <a target=\"_blank\" href=\"{phpLink}\">ไม่สนับสนุน PHP</a> เราขอแนะนำให้อัพเกรดรุ่น PHP ของคุณ เพื่อปรับปรุงประสิทธิภาพการทำงานและเนื้อหาด้านความปลอดภัย",
"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\" href=\"{docLink}\">documentation</a>." : "การกำหนดค่าส่วนหัวของรีเวิร์สพร็อกซี่ไม่ถูกต้องหรือคุณกำลังเข้าถึง ownCloud จากพร็อกซี่ที่เชื่อถือได้ ถ้าคุณไม่ได้เข้าถึง ownCloud จากพร็อกซี่ที่เชื่อถือได้นี้เป็นปัญหาด้านความปลอดภัยและมันจะอณุญาตทำให้แฮกเกอร์ปลอมที่อยู่ IP ของพวกเขา ข้อมูลเพิ่มเติมสามารถอ่านได้ใน <a target=\"_blank\" href=\"{docLink}\">เอกสาร</a> ของเรา",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "การกำหนดค่า memcach ผิดพลาดเนื่องจากมีโมดูล PHP ของ memcache ได้ถูกติดตั้งไปแล้ว มีการติดตั้ง \\OC\\Memcache\\Memcached สนับสนุนเฉพาะ \"memcached\" แต่ไม่สนับสนุน \"memcache\" คุณสามารถดู <a target=\"_blank\" href=\"{wikiLink}\">ข้อมูลเกี่ยวกับทั้ง 2 โมดูล</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "บางไฟล์ยังไม่ผ่านการตรวจสอบความสมบูรณ์ ข้อมูลเพิ่มเติมเกี่ยวกับวิธีการแก้ไขปัญหาเหล่านี้สามารถอ่านได้จาก <a target=\"_blank\" href=\"{docLink}\">เอกสาร</a> ของเรา (<a href=\"{codeIntegrityDownloadEndpoint}\">รายชื่อของไฟล์ที่ไม่ถูกต้อง…</a> / <a href=\"{rescanEndpoint}\">ค้นหาใหม่…</a>)",
diff --git a/core/l10n/tr.js b/core/l10n/tr.js
index 1e0600e7996..c094eb45bd4 100644
--- a/core/l10n/tr.js
+++ b/core/l10n/tr.js
@@ -123,7 +123,6 @@ OC.L10N.register(
"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." : "Bu sunucunun çalışan bir İnternet bağlantısı yok. Bu, harici depolama alanı bağlama, güncelleştirme bildirimleri veya üçüncü parti uygulama kurma gibi bazı özellikler çalışmayacak demektir. Uzak dosyalara erişim ve e-posta ile bildirim gönderme de çalışmayacaktır. Eğer bu özelliklerin tamamını kullanmak istiyorsanız, sunucu için İnternet bağlantısını etkinleştirmenizi öneriyoruz.",
"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\" href=\"{docLink}\">documentation</a>." : "Hafıza önbelleği ayarlanmamış. Performansın artması için mümkünse lütfen bir memcache ayarlayın. Detaylı bilgiye <a target=\"_blank\" href=\"{docLink}\">belgelendirmemizden</a> ulaşabilirsiniz.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "Güvenlik sebepleri ile şiddetle kaçınılması gereken /dev/urandom PHP tarafından okunamıyor. Daha fazla bilgi <a target=\"_blank\" href=\"{docLink}\">belgelendirmemizde</a> bulunabilir.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Kullandığınız PHP sürümü ({version}) artık <a target=\"_blank\" href=\"{phpLink}\">PHP tarafından desteklenmiyor</a>. PHP tarafından sağlanan performans ve güvenlik güncellemelerinden faydalanmak için PHP sürümünüzü güncellemenizi öneririz.",
"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\" href=\"{docLink}\">documentation</a>." : "Ters vekil sunucu başlık yapılandırması hatalı veya ownCloud'a güvenilen bir vekil sunucusundan erişiyorsunuz. ownCloud'a güvenilen bir vekil sunucusundan erişmiyorsanız bu bir güvenlik problemidir ve bir saldırganın IP adresinizi taklit etmesine izin verebilir. Ayrıntılı bilgiyi <a target=\"_blank\" href=\"{docLink}\">belgelendirmemizde</a> bulabilirsiniz.",
"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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached ayrılmış önbellek olarak yapılandırıldı, ancak yanlış PHP modülü \"memcache\" olarak yüklendi. \\OC\\Memcache\\Memcached sadece \"memcached\" olarak desteklenir, \"memcache\" olarak kullanamazsınız. <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a> linkine bakınız.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Bazı dosyalar bütünleme sınamasından geçemedi. Bu sorunu çözmek için daha fazla bilgi <a target=\"_blank\" href=\"{docLink}\">belgelendirmemizde</a> bulunabilir. (<a href=\"{codeIntegrityDownloadEndpoint}\">Geçersiz dosyaların listesi…</a> / <a href=\"{rescanEndpoint}\">Yeniden tara…</a>)",
diff --git a/core/l10n/tr.json b/core/l10n/tr.json
index 36e12f3176b..81f7d907aa8 100644
--- a/core/l10n/tr.json
+++ b/core/l10n/tr.json
@@ -121,7 +121,6 @@
"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." : "Bu sunucunun çalışan bir İnternet bağlantısı yok. Bu, harici depolama alanı bağlama, güncelleştirme bildirimleri veya üçüncü parti uygulama kurma gibi bazı özellikler çalışmayacak demektir. Uzak dosyalara erişim ve e-posta ile bildirim gönderme de çalışmayacaktır. Eğer bu özelliklerin tamamını kullanmak istiyorsanız, sunucu için İnternet bağlantısını etkinleştirmenizi öneriyoruz.",
"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\" href=\"{docLink}\">documentation</a>." : "Hafıza önbelleği ayarlanmamış. Performansın artması için mümkünse lütfen bir memcache ayarlayın. Detaylı bilgiye <a target=\"_blank\" href=\"{docLink}\">belgelendirmemizden</a> ulaşabilirsiniz.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "Güvenlik sebepleri ile şiddetle kaçınılması gereken /dev/urandom PHP tarafından okunamıyor. Daha fazla bilgi <a target=\"_blank\" href=\"{docLink}\">belgelendirmemizde</a> bulunabilir.",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Kullandığınız PHP sürümü ({version}) artık <a target=\"_blank\" href=\"{phpLink}\">PHP tarafından desteklenmiyor</a>. PHP tarafından sağlanan performans ve güvenlik güncellemelerinden faydalanmak için PHP sürümünüzü güncellemenizi öneririz.",
"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\" href=\"{docLink}\">documentation</a>." : "Ters vekil sunucu başlık yapılandırması hatalı veya ownCloud'a güvenilen bir vekil sunucusundan erişiyorsunuz. ownCloud'a güvenilen bir vekil sunucusundan erişmiyorsanız bu bir güvenlik problemidir ve bir saldırganın IP adresinizi taklit etmesine izin verebilir. Ayrıntılı bilgiyi <a target=\"_blank\" href=\"{docLink}\">belgelendirmemizde</a> bulabilirsiniz.",
"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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached ayrılmış önbellek olarak yapılandırıldı, ancak yanlış PHP modülü \"memcache\" olarak yüklendi. \\OC\\Memcache\\Memcached sadece \"memcached\" olarak desteklenir, \"memcache\" olarak kullanamazsınız. <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a> linkine bakınız.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Bazı dosyalar bütünleme sınamasından geçemedi. Bu sorunu çözmek için daha fazla bilgi <a target=\"_blank\" href=\"{docLink}\">belgelendirmemizde</a> bulunabilir. (<a href=\"{codeIntegrityDownloadEndpoint}\">Geçersiz dosyaların listesi…</a> / <a href=\"{rescanEndpoint}\">Yeniden tara…</a>)",
diff --git a/core/l10n/uk.js b/core/l10n/uk.js
index 5df7f8244c5..58dda0b85a5 100644
--- a/core/l10n/uk.js
+++ b/core/l10n/uk.js
@@ -175,6 +175,7 @@ OC.L10N.register(
"sunny" : "сонячно",
"Hello {name}, the weather is {weather}" : "Привіт {name}, погода {weather} ",
"Hello {name}" : "Привіт {name}",
+ "new" : "новий",
"_download %n file_::_download %n files_" : ["завантаження %n файлу","завантаження %n файлів","завантаження %n файлів"],
"Updating {productName} to version {version}, this may take a while." : "Оновлення {productName} до версії {version}, це може займати деякий час.",
"An error occurred." : "Виникла помилка.",
diff --git a/core/l10n/uk.json b/core/l10n/uk.json
index a8ce3552427..0960135ab4e 100644
--- a/core/l10n/uk.json
+++ b/core/l10n/uk.json
@@ -173,6 +173,7 @@
"sunny" : "сонячно",
"Hello {name}, the weather is {weather}" : "Привіт {name}, погода {weather} ",
"Hello {name}" : "Привіт {name}",
+ "new" : "новий",
"_download %n file_::_download %n files_" : ["завантаження %n файлу","завантаження %n файлів","завантаження %n файлів"],
"Updating {productName} to version {version}, this may take a while." : "Оновлення {productName} до версії {version}, це може займати деякий час.",
"An error occurred." : "Виникла помилка.",
diff --git a/core/l10n/zh_CN.js b/core/l10n/zh_CN.js
index 15dd1090e2f..fc5e1395d96 100644
--- a/core/l10n/zh_CN.js
+++ b/core/l10n/zh_CN.js
@@ -119,11 +119,18 @@ OC.L10N.register(
"Good password" : "较强的密码",
"Strong password" : "强密码",
"Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "由于 WebDAV 接口似乎被破坏,因此你的网页服务器没有正确地设置来允许文件同步。",
+ "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "您的 Web 服务器没有正确设置来解决 \"{url}\"。更多信息可以在我们的<a target=\"_blank\" href=\"{docLink}\">文档</a>找到。",
"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." : "此服务器上没有可用的因特网连接. 这意味着某些特性将无法工作,例如挂载外部存储器, 提醒更新或安装第三方应用等. 从远程访问文件和发送提醒电子邮件也可能无法工作. 如果你想要ownCloud的所有特性, 我们建议启用此服务器的因特网连接.",
"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\" href=\"{docLink}\">documentation</a>." : "内存缓存未配置。如果可用,请配置 memcache 来增强性能。更多信息请查看我们的<a target=\"_blank\" href=\"{docLink}\">文档</a> 。",
+ "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom 无法被 PHP 读取,出于安全原因,这是强烈不推荐的。请查看<a href=\"{docLink}\">文档</a>了解详情。",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "你的 PHP 版本 ({version}) 不再被 <a href=\"{phpLink}\"> PHP </a>支持。我们建议您升级您的PHP版本,以便获得 PHP 性能和安全提升。",
+ "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\" href=\"{docLink}\">documentation</a>." : "反向代理头配置不正确,或者您正从一个受信任的代理访问ownCloud。如果你不是通过受信任的代理访问 ownCloud,这将引发一个安全问题,可能由于 ownCloud IP 地址可见导致欺骗攻击。更多信息可以查看我们的 <a href=\"{docLink}\">文档</a>。",
+ "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached 配置为分布式缓存,但是已经安装的 PHP 模块是 \"memcache\" 。 \\OC\\Memcache\\Memcached 仅支持 \"memcached\" 而不是 \"memcache\"。点击 <a href=\"{wikiLink}\"> memcached wiki 了解两个模块的不同</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "一些文件没有通过完整性检查。如何解决此问题的详细信息可以查看我们的 <a target=\"_blank\" href=\"{docLink}\">文档</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">无效文件列表…</a> / <a href=\"{rescanEndpoint}\">重新扫描…</a>)",
"Error occurred while checking server setup" : "当检查服务器启动时出错",
"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." : "你的数据目录和你的文件可能从互联网被访问到。.htaccess 文件不工作。我们强烈建议你配置你的网页服务器,使数据目录不再可访问,或者将数据目录移动到网页服务器根文档目录之外。",
"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." : "\"{header}\" HTTP 头部没有配置和 \"{expected}\" 的一样。这是一个潜在的安全或者隐私风险,我们调整这项设置。",
+ "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}\">security tips</a>." : "HTTP 严格传输安全(Strict-Transport-Security)报头未配置到至少“{seconds}”秒。处于增强安全性考虑,我们推荐按照<a href=\"{docUrl}\">安全提示</a>启用 HSTS。",
"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>." : "您正在通过 HTTP 访问该站点,我们强烈建议您按照<a href=\"{docUrl}\">安全提示</a>配置服务器强制使用 HTTPS。",
"Shared" : "已共享",
"Shared with {recipients}" : "由{recipients}分享",
@@ -178,6 +185,7 @@ OC.L10N.register(
"({scope})" : "({scope})",
"Delete" : "删除",
"Rename" : "重命名",
+ "Collaborative tags" : "协作标签",
"The object type is not specified." : "未指定对象类型。",
"Enter new" : "输入新...",
"Add" : "增加",
@@ -189,11 +197,13 @@ OC.L10N.register(
"sunny" : "晴",
"Hello {name}, the weather is {weather}" : "您好 {name},今天天气是{weather}",
"Hello {name}" : "你好 {name}",
+ "new" : "新建",
"_download %n file_::_download %n files_" : ["下载 %n 个文件"],
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "升级正在进行,在某些环境中离开此网页可能中断该过程。",
"Updating {productName} to version {version}, this may take a while." : "更新 {productName} 到版本 {version},这可能需要一些时间。",
"An error occurred." : "发生了一个错误",
"Please reload the page." : "请重新加载页面。",
+ "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "更新不成功。有关此问题的更多信息请<a href=\"{url}\">查看我们的论坛帖子</a>。",
"The update was unsuccessful. " : "升级未成功",
"The update was successful. There were warnings." : "更新成功。有警告。",
"The update was successful. Redirecting you to ownCloud now." : "更新成功。正在重定向至 ownCloud。",
diff --git a/core/l10n/zh_CN.json b/core/l10n/zh_CN.json
index cc75e35fd9e..ee8bc2732b5 100644
--- a/core/l10n/zh_CN.json
+++ b/core/l10n/zh_CN.json
@@ -117,11 +117,18 @@
"Good password" : "较强的密码",
"Strong password" : "强密码",
"Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "由于 WebDAV 接口似乎被破坏,因此你的网页服务器没有正确地设置来允许文件同步。",
+ "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "您的 Web 服务器没有正确设置来解决 \"{url}\"。更多信息可以在我们的<a target=\"_blank\" href=\"{docLink}\">文档</a>找到。",
"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." : "此服务器上没有可用的因特网连接. 这意味着某些特性将无法工作,例如挂载外部存储器, 提醒更新或安装第三方应用等. 从远程访问文件和发送提醒电子邮件也可能无法工作. 如果你想要ownCloud的所有特性, 我们建议启用此服务器的因特网连接.",
"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\" href=\"{docLink}\">documentation</a>." : "内存缓存未配置。如果可用,请配置 memcache 来增强性能。更多信息请查看我们的<a target=\"_blank\" href=\"{docLink}\">文档</a> 。",
+ "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom 无法被 PHP 读取,出于安全原因,这是强烈不推荐的。请查看<a href=\"{docLink}\">文档</a>了解详情。",
+ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "你的 PHP 版本 ({version}) 不再被 <a href=\"{phpLink}\"> PHP </a>支持。我们建议您升级您的PHP版本,以便获得 PHP 性能和安全提升。",
+ "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\" href=\"{docLink}\">documentation</a>." : "反向代理头配置不正确,或者您正从一个受信任的代理访问ownCloud。如果你不是通过受信任的代理访问 ownCloud,这将引发一个安全问题,可能由于 ownCloud IP 地址可见导致欺骗攻击。更多信息可以查看我们的 <a href=\"{docLink}\">文档</a>。",
+ "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached 配置为分布式缓存,但是已经安装的 PHP 模块是 \"memcache\" 。 \\OC\\Memcache\\Memcached 仅支持 \"memcached\" 而不是 \"memcache\"。点击 <a href=\"{wikiLink}\"> memcached wiki 了解两个模块的不同</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "一些文件没有通过完整性检查。如何解决此问题的详细信息可以查看我们的 <a target=\"_blank\" href=\"{docLink}\">文档</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">无效文件列表…</a> / <a href=\"{rescanEndpoint}\">重新扫描…</a>)",
"Error occurred while checking server setup" : "当检查服务器启动时出错",
"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." : "你的数据目录和你的文件可能从互联网被访问到。.htaccess 文件不工作。我们强烈建议你配置你的网页服务器,使数据目录不再可访问,或者将数据目录移动到网页服务器根文档目录之外。",
"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." : "\"{header}\" HTTP 头部没有配置和 \"{expected}\" 的一样。这是一个潜在的安全或者隐私风险,我们调整这项设置。",
+ "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}\">security tips</a>." : "HTTP 严格传输安全(Strict-Transport-Security)报头未配置到至少“{seconds}”秒。处于增强安全性考虑,我们推荐按照<a href=\"{docUrl}\">安全提示</a>启用 HSTS。",
"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>." : "您正在通过 HTTP 访问该站点,我们强烈建议您按照<a href=\"{docUrl}\">安全提示</a>配置服务器强制使用 HTTPS。",
"Shared" : "已共享",
"Shared with {recipients}" : "由{recipients}分享",
@@ -176,6 +183,7 @@
"({scope})" : "({scope})",
"Delete" : "删除",
"Rename" : "重命名",
+ "Collaborative tags" : "协作标签",
"The object type is not specified." : "未指定对象类型。",
"Enter new" : "输入新...",
"Add" : "增加",
@@ -187,11 +195,13 @@
"sunny" : "晴",
"Hello {name}, the weather is {weather}" : "您好 {name},今天天气是{weather}",
"Hello {name}" : "你好 {name}",
+ "new" : "新建",
"_download %n file_::_download %n files_" : ["下载 %n 个文件"],
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "升级正在进行,在某些环境中离开此网页可能中断该过程。",
"Updating {productName} to version {version}, this may take a while." : "更新 {productName} 到版本 {version},这可能需要一些时间。",
"An error occurred." : "发生了一个错误",
"Please reload the page." : "请重新加载页面。",
+ "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "更新不成功。有关此问题的更多信息请<a href=\"{url}\">查看我们的论坛帖子</a>。",
"The update was unsuccessful. " : "升级未成功",
"The update was successful. There were warnings." : "更新成功。有警告。",
"The update was successful. Redirecting you to ownCloud now." : "更新成功。正在重定向至 ownCloud。",
diff --git a/core/l10n/zh_TW.js b/core/l10n/zh_TW.js
index 4de7b3e8cfa..8c380396788 100644
--- a/core/l10n/zh_TW.js
+++ b/core/l10n/zh_TW.js
@@ -122,7 +122,6 @@ OC.L10N.register(
"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." : "伺服器沒有網際網路連線,有些功能,像是外部儲存、更新版通知將無法運作。從遠端存取資料或是寄送 email 通知可能也無法運作。建議您設定好網際網路連線以使用所有功能。",
"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\" href=\"{docLink}\">documentation</a>." : "沒有設定 memory cache,為了增加效能,可以設定一個 memory cache ,請到<a target=\"_blank\" href=\"{docLink}\">我們的文件</a>取得更多資訊",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom 無法被 PHP 讀取,將造成安全性風險,請到<a target=\"_blank\" href=\"{docLink}\">我們的文件</a>取得更多資訊",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "您的PHP版本 ({version}) 不再被<a href=\"{phpLink}\">PHP</a>支援,我們建議您升級您的PHP版本來提升效能以及安全性。",
"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\" href=\"{docLink}\">documentation</a>." : "反向代理伺服器標頭配置不正確或者您正從一個受信任的代理伺服器訪問ownCloud,如果您不是從受信任的代理伺服器訪問ownCloud,表示這是一個安全性問題,攻擊者可利用IP詐騙存取ownCloud,更多訊息查看 <a href=\"{docLink}\">文件</a>。",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached 被設置成分散式緩存模式,但已經安裝了錯誤的PHP模組 \"memcache\"。\\OC\\Memcache\\Memcached 只支援 \"memcached\",並未支援\"memcache\"。請參閱<a target=\"_blank\" href=\"{wikiLink}\">關於這兩個模組的wiki</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "有些檔案並未通過程式碼完整性的檢查,更多有關如何解決上述問題的資訊請參閱我們的 <a target=\"_blank\" href=\"{docLink}\">文件</a>。(<a href=\"{codeIntegrityDownloadEndpoint}\">列出所有無效的檔案…</a> / <a href=\"{rescanEndpoint}\">重新掃描…</a>)",
diff --git a/core/l10n/zh_TW.json b/core/l10n/zh_TW.json
index 682c06e4b6e..3479f9e29b6 100644
--- a/core/l10n/zh_TW.json
+++ b/core/l10n/zh_TW.json
@@ -120,7 +120,6 @@
"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." : "伺服器沒有網際網路連線,有些功能,像是外部儲存、更新版通知將無法運作。從遠端存取資料或是寄送 email 通知可能也無法運作。建議您設定好網際網路連線以使用所有功能。",
"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\" href=\"{docLink}\">documentation</a>." : "沒有設定 memory cache,為了增加效能,可以設定一個 memory cache ,請到<a target=\"_blank\" href=\"{docLink}\">我們的文件</a>取得更多資訊",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom 無法被 PHP 讀取,將造成安全性風險,請到<a target=\"_blank\" href=\"{docLink}\">我們的文件</a>取得更多資訊",
- "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "您的PHP版本 ({version}) 不再被<a href=\"{phpLink}\">PHP</a>支援,我們建議您升級您的PHP版本來提升效能以及安全性。",
"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\" href=\"{docLink}\">documentation</a>." : "反向代理伺服器標頭配置不正確或者您正從一個受信任的代理伺服器訪問ownCloud,如果您不是從受信任的代理伺服器訪問ownCloud,表示這是一個安全性問題,攻擊者可利用IP詐騙存取ownCloud,更多訊息查看 <a href=\"{docLink}\">文件</a>。",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached 被設置成分散式緩存模式,但已經安裝了錯誤的PHP模組 \"memcache\"。\\OC\\Memcache\\Memcached 只支援 \"memcached\",並未支援\"memcache\"。請參閱<a target=\"_blank\" href=\"{wikiLink}\">關於這兩個模組的wiki</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "有些檔案並未通過程式碼完整性的檢查,更多有關如何解決上述問題的資訊請參閱我們的 <a target=\"_blank\" href=\"{docLink}\">文件</a>。(<a href=\"{codeIntegrityDownloadEndpoint}\">列出所有無效的檔案…</a> / <a href=\"{rescanEndpoint}\">重新掃描…</a>)",
diff --git a/lib/base.php b/lib/base.php
index 7db4ec4a8fa..7659148c140 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -339,16 +339,6 @@ class OC {
}
/**
- * check if the instance needs to perform an upgrade
- *
- * @return bool
- * @deprecated use \OCP\Util::needUpgrade() instead
- */
- public static function needUpgrade() {
- return \OCP\Util::needUpgrade();
- }
-
- /**
* Checks if the version requires an update and shows
* @param bool $showTemplate Whether an update screen should get shown
* @return bool|void
diff --git a/lib/l10n/de.js b/lib/l10n/de.js
index 99bcd6c33a3..2acca36fb89 100644
--- a/lib/l10n/de.js
+++ b/lib/l10n/de.js
@@ -97,7 +97,7 @@ OC.L10N.register(
"Sharing %s failed, because %s is not a member of the group %s" : "Freigabe von %s fehlgeschlagen, da %s kein Mitglied der Gruppe %s ist",
"You need to provide a password to create a public link, only protected links are allowed" : "Es sind nur geschützte Links zulässig, daher müssen Sie ein Passwort angeben, um einen öffentlichen Link zu generieren",
"Sharing %s failed, because sharing with links is not allowed" : "Freigabe von %s fehlgeschlagen, da das Teilen von Verknüpfungen nicht erlaubt ist",
- "Not allowed to create a federated share with the same user" : "Nicht erlaubt eine föderierte Freigabe mit dem gleichen Benutzer zu erstellen",
+ "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Freigabe von %s fehlgeschlagen, da %s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar.",
"Share type %s is not valid for %s" : "Freigabetyp %s ist nicht gültig für %s",
"Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Das Setzen der Berechtigungen für %s ist fehlgeschlagen, da die Berechtigungen, die erteilten Berechtigungen %s überschreiten",
diff --git a/lib/l10n/de.json b/lib/l10n/de.json
index b768e39d026..4514234f8d2 100644
--- a/lib/l10n/de.json
+++ b/lib/l10n/de.json
@@ -95,7 +95,7 @@
"Sharing %s failed, because %s is not a member of the group %s" : "Freigabe von %s fehlgeschlagen, da %s kein Mitglied der Gruppe %s ist",
"You need to provide a password to create a public link, only protected links are allowed" : "Es sind nur geschützte Links zulässig, daher müssen Sie ein Passwort angeben, um einen öffentlichen Link zu generieren",
"Sharing %s failed, because sharing with links is not allowed" : "Freigabe von %s fehlgeschlagen, da das Teilen von Verknüpfungen nicht erlaubt ist",
- "Not allowed to create a federated share with the same user" : "Nicht erlaubt eine föderierte Freigabe mit dem gleichen Benutzer zu erstellen",
+ "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Freigabe von %s fehlgeschlagen, da %s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar.",
"Share type %s is not valid for %s" : "Freigabetyp %s ist nicht gültig für %s",
"Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Das Setzen der Berechtigungen für %s ist fehlgeschlagen, da die Berechtigungen, die erteilten Berechtigungen %s überschreiten",
diff --git a/lib/l10n/de_DE.js b/lib/l10n/de_DE.js
index c4b066f22d1..453070ebf3c 100644
--- a/lib/l10n/de_DE.js
+++ b/lib/l10n/de_DE.js
@@ -97,7 +97,7 @@ OC.L10N.register(
"Sharing %s failed, because %s is not a member of the group %s" : "Freigabe von %s fehlgeschlagen, da %s kein Mitglied der Gruppe %s ist",
"You need to provide a password to create a public link, only protected links are allowed" : "Es sind nur geschützte Links zulässig, daher müssen Sie ein Passwort angeben, um einen öffentlichen Link zu generieren",
"Sharing %s failed, because sharing with links is not allowed" : "Freigabe von %s fehlgeschlagen, da das Teilen von Verknüpfungen nicht erlaubt ist",
- "Not allowed to create a federated share with the same user" : "Das Erstellen einer föderierten Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
+ "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Freigabe von %s fehlgeschlagen, da %s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar.",
"Share type %s is not valid for %s" : "Freigabetyp %s ist nicht gültig für %s",
"Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Das Setzen der Berechtigungen für %s ist fehlgeschlagen, da die Berechtigungen, die erteilten Berechtigungen %s überschreiten",
diff --git a/lib/l10n/de_DE.json b/lib/l10n/de_DE.json
index e4971efdb30..077567792bc 100644
--- a/lib/l10n/de_DE.json
+++ b/lib/l10n/de_DE.json
@@ -95,7 +95,7 @@
"Sharing %s failed, because %s is not a member of the group %s" : "Freigabe von %s fehlgeschlagen, da %s kein Mitglied der Gruppe %s ist",
"You need to provide a password to create a public link, only protected links are allowed" : "Es sind nur geschützte Links zulässig, daher müssen Sie ein Passwort angeben, um einen öffentlichen Link zu generieren",
"Sharing %s failed, because sharing with links is not allowed" : "Freigabe von %s fehlgeschlagen, da das Teilen von Verknüpfungen nicht erlaubt ist",
- "Not allowed to create a federated share with the same user" : "Das Erstellen einer föderierten Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
+ "Not allowed to create a federated share with the same user" : "Das Erstellen einer Federated Cloud Freigabe mit dem gleichen Benutzer ist nicht erlaubt",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Freigabe von %s fehlgeschlagen, da %s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar.",
"Share type %s is not valid for %s" : "Freigabetyp %s ist nicht gültig für %s",
"Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Das Setzen der Berechtigungen für %s ist fehlgeschlagen, da die Berechtigungen, die erteilten Berechtigungen %s überschreiten",
diff --git a/lib/l10n/hu_HU.js b/lib/l10n/hu_HU.js
index 69f23c14997..c8bf2a797e1 100644
--- a/lib/l10n/hu_HU.js
+++ b/lib/l10n/hu_HU.js
@@ -9,7 +9,7 @@ OC.L10N.register(
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Úgy tűnik a példakonfigurációt próbálja ténylegesen használni. Ez nem támogatott, és működésképtelenné teheti a telepítést. Kérjük olvassa el a dokumentációt és azt követően változtasson a config.php-n!",
"PHP %s or higher is required." : "PHP %s vagy ennél újabb szükséges.",
"PHP with a version lower than %s is required." : "Ennél régebbi PHP szükséges: %s.",
- "Following databases are supported: %s" : "A következő adatbázis nem támogatott: %s",
+ "Following databases are supported: %s" : "A következő adatbázisok támogatottak: %s",
"The library %s is not available." : "A könyvtár %s nem áll rendelkezésre.",
"Following platforms are supported: %s" : "Ezek a platformok támogatottak: %s",
"ownCloud %s or higher is required." : "ownCoud %s vagy ennél újabb szükséges.",
diff --git a/lib/l10n/hu_HU.json b/lib/l10n/hu_HU.json
index cd934efe99d..1f76a72e150 100644
--- a/lib/l10n/hu_HU.json
+++ b/lib/l10n/hu_HU.json
@@ -7,7 +7,7 @@
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Úgy tűnik a példakonfigurációt próbálja ténylegesen használni. Ez nem támogatott, és működésképtelenné teheti a telepítést. Kérjük olvassa el a dokumentációt és azt követően változtasson a config.php-n!",
"PHP %s or higher is required." : "PHP %s vagy ennél újabb szükséges.",
"PHP with a version lower than %s is required." : "Ennél régebbi PHP szükséges: %s.",
- "Following databases are supported: %s" : "A következő adatbázis nem támogatott: %s",
+ "Following databases are supported: %s" : "A következő adatbázisok támogatottak: %s",
"The library %s is not available." : "A könyvtár %s nem áll rendelkezésre.",
"Following platforms are supported: %s" : "Ezek a platformok támogatottak: %s",
"ownCloud %s or higher is required." : "ownCoud %s vagy ennél újabb szükséges.",
diff --git a/lib/l10n/is.js b/lib/l10n/is.js
index 490f6dda4c3..deac31170ad 100644
--- a/lib/l10n/is.js
+++ b/lib/l10n/is.js
@@ -5,20 +5,36 @@ OC.L10N.register(
"Personal" : "Um mig",
"Users" : "Notendur",
"Admin" : "Stjórnun",
- "Unknown filetype" : "Óþekkt skráartegund",
+ "Recommended" : "Mælt með",
+ "No app name specified" : "Ekkert heiti forrits tilgreint",
+ "Unknown filetype" : "Óþekkt skráategund",
"Invalid image" : "Ógild mynd",
"today" : "í dag",
"yesterday" : "í gær",
- "last month" : "síðasta mánuði",
+ "_%n day ago_::_%n days ago_" : ["fyrir %n degi síðan","fyrir %n dögum síðan"],
+ "last month" : "í síðasta mánuði",
+ "_%n month ago_::_%n months ago_" : ["fyrir %n mánuði","fyrir %n mánuðum"],
"last year" : "síðasta ári",
- "seconds ago" : "sek.",
+ "_%n year ago_::_%n years ago_" : ["fyrir %n degi síðan","fyrir %n árum síðan"],
+ "_%n hour ago_::_%n hours ago_" : ["fyrir %n klukkustund síðan","fyrir %n klukkustundum síðan"],
+ "_%n minute ago_::_%n minutes ago_" : ["fyrir %n mínútu síðan","fyrir %n mínútum síðan"],
+ "seconds ago" : "sekúndum síðan",
"web services under your control" : "vefþjónusta undir þinni stjórn",
+ "Empty filename is not allowed" : "Autt skráarheiti er ekki leyft.",
+ "File name is too long" : "Skráarheiti er of langt",
+ "Can't read file" : "Get ekki lesið skrána",
"Application is not enabled" : "Forrit ekki virkt",
"Authentication error" : "Villa við auðkenningu",
- "Token expired. Please reload page." : "Auðkenning útrunnin. Vinsamlegast skráðu þig aftur inn.",
+ "Token expired. Please reload page." : "Kenniteikn er útrunnið. Þú ættir að hlaða síðunni aftur inn.",
+ "Unknown user" : "Óþekktur notandi",
+ "Invalid Federated Cloud ID" : "Ógilt skýjasambandsauðkenni (Federated Cloud ID)",
+ "Sharing %s failed, because this item is already shared with %s" : "Deiling %s mistókst, því þessu atriði er þegar deilt með %s",
+ "Not allowed to create a federated share with the same user" : "Ekki er heimilt að búa til skýjasambandssameign með sama notanda",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Deiling %s mistókst, gat ekki fundið %s, hugsanlega er þjónninn ekki tiltækur í augnablikinu.",
"Could not find category \"%s\"" : "Fann ekki flokkinn \"%s\"",
"Apps" : "Forrit",
"A valid username must be provided" : "Skráðu inn gilt notandanafn",
- "A valid password must be provided" : "Skráðu inn gilt lykilorð"
+ "A valid password must be provided" : "Skráðu inn gilt lykilorð",
+ "Storage not available" : "Geymsla ekki tiltæk"
},
"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");
diff --git a/lib/l10n/is.json b/lib/l10n/is.json
index a44b0f74512..fc3208d043c 100644
--- a/lib/l10n/is.json
+++ b/lib/l10n/is.json
@@ -3,20 +3,36 @@
"Personal" : "Um mig",
"Users" : "Notendur",
"Admin" : "Stjórnun",
- "Unknown filetype" : "Óþekkt skráartegund",
+ "Recommended" : "Mælt með",
+ "No app name specified" : "Ekkert heiti forrits tilgreint",
+ "Unknown filetype" : "Óþekkt skráategund",
"Invalid image" : "Ógild mynd",
"today" : "í dag",
"yesterday" : "í gær",
- "last month" : "síðasta mánuði",
+ "_%n day ago_::_%n days ago_" : ["fyrir %n degi síðan","fyrir %n dögum síðan"],
+ "last month" : "í síðasta mánuði",
+ "_%n month ago_::_%n months ago_" : ["fyrir %n mánuði","fyrir %n mánuðum"],
"last year" : "síðasta ári",
- "seconds ago" : "sek.",
+ "_%n year ago_::_%n years ago_" : ["fyrir %n degi síðan","fyrir %n árum síðan"],
+ "_%n hour ago_::_%n hours ago_" : ["fyrir %n klukkustund síðan","fyrir %n klukkustundum síðan"],
+ "_%n minute ago_::_%n minutes ago_" : ["fyrir %n mínútu síðan","fyrir %n mínútum síðan"],
+ "seconds ago" : "sekúndum síðan",
"web services under your control" : "vefþjónusta undir þinni stjórn",
+ "Empty filename is not allowed" : "Autt skráarheiti er ekki leyft.",
+ "File name is too long" : "Skráarheiti er of langt",
+ "Can't read file" : "Get ekki lesið skrána",
"Application is not enabled" : "Forrit ekki virkt",
"Authentication error" : "Villa við auðkenningu",
- "Token expired. Please reload page." : "Auðkenning útrunnin. Vinsamlegast skráðu þig aftur inn.",
+ "Token expired. Please reload page." : "Kenniteikn er útrunnið. Þú ættir að hlaða síðunni aftur inn.",
+ "Unknown user" : "Óþekktur notandi",
+ "Invalid Federated Cloud ID" : "Ógilt skýjasambandsauðkenni (Federated Cloud ID)",
+ "Sharing %s failed, because this item is already shared with %s" : "Deiling %s mistókst, því þessu atriði er þegar deilt með %s",
+ "Not allowed to create a federated share with the same user" : "Ekki er heimilt að búa til skýjasambandssameign með sama notanda",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Deiling %s mistókst, gat ekki fundið %s, hugsanlega er þjónninn ekki tiltækur í augnablikinu.",
"Could not find category \"%s\"" : "Fann ekki flokkinn \"%s\"",
"Apps" : "Forrit",
"A valid username must be provided" : "Skráðu inn gilt notandanafn",
- "A valid password must be provided" : "Skráðu inn gilt lykilorð"
+ "A valid password must be provided" : "Skráðu inn gilt lykilorð",
+ "Storage not available" : "Geymsla ekki tiltæk"
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
} \ No newline at end of file
diff --git a/lib/l10n/pl.js b/lib/l10n/pl.js
index ea276b76f1c..ddcb8c3c2af 100644
--- a/lib/l10n/pl.js
+++ b/lib/l10n/pl.js
@@ -15,12 +15,14 @@ OC.L10N.register(
"Library %s with a version higher than %s is required - available version %s." : "Biblioteka %s w wersji wyższej niż %s, która jest wymagana - dostępna wersja %s.",
"Library %s with a version lower than %s is required - available version %s." : "Biblioteka w wersji %s jest niższa niż %s, która jest wymagana - dostępna wersja %s.",
"Following platforms are supported: %s" : "Obsługiwane są następujące platformy: %s",
- "ownCloud %s or higher is required." : "ownCloud %s jest w wersji wyższej niż wymagana.",
+ "ownCloud %s or higher is required." : "ownCloud %s jest w wersji nowszej niż wymagana.",
+ "ownCloud %s or lower is required." : "ownCloud %s jest w wersji starszej niż wymagana.",
"Help" : "Pomoc",
"Personal" : "Osobiste",
"Users" : "Użytkownicy",
"Admin" : "Administrator",
"Recommended" : "Polecane",
+ "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "Aplikacja \\\"%s\\\" nie może zostać zainstalowana ponieważ nie jest kompatybilna z tą wersją ownCloud.",
"No app name specified" : "Nie określono nazwy aplikacji",
"Unknown filetype" : "Nieznany typ pliku",
"Invalid image" : "Błędne zdjęcie",
@@ -35,15 +37,21 @@ OC.L10N.register(
"_%n minute ago_::_%n minutes ago_" : ["%n minute temu","%n minut temu","%n minut temu"],
"seconds ago" : "sekund temu",
"web services under your control" : "Kontrolowane serwisy",
+ "Empty filename is not allowed" : "Pusta nazwa nie jest dozwolona.",
"File name contains at least one invalid character" : "Nazwa pliku zawiera co najmniej jeden nieprawidłowy znak",
+ "File name is too long" : "Nazwa pliku zbyt długa",
+ "File is currently busy, please try again later" : "Plik jest obecnie niedostępny, proszę spróbować ponownie później",
+ "Can't read file" : "Nie można odczytać pliku.",
"App directory already exists" : "Katalog aplikacji już isnieje",
"Can't create app folder. Please fix permissions. %s" : "Nie mogę utworzyć katalogu aplikacji. Proszę popraw uprawnienia. %s",
+ "Archive does not contain a directory named %s" : "Archiwum nie zawiera ścieżki o nazwie %s",
"No source specified when installing app" : "Nie określono źródła podczas instalacji aplikacji",
"No href specified when installing app from http" : "Nie określono linku skąd aplikacja ma być zainstalowana",
"No path specified when installing app from local file" : "Nie określono lokalnego pliku z którego miała być instalowana aplikacja",
"Archives of type %s are not supported" : "Typ archiwum %s nie jest obsługiwany",
"Failed to open archive when installing app" : "Nie udało się otworzyć archiwum podczas instalacji aplikacji",
"App does not provide an info.xml file" : "Aplikacja nie posiada pliku info.xml",
+ "Signature could not get checked. Please contact the app developer and check your admin screen." : "Sygnatura nie mogła zostać sprawdzona. Proszę o skontaktownie się z twórcą aplikacji i sprawdzenie panelu administratora.",
"App can't be installed because of not allowed code in the App" : "Aplikacja nie może być zainstalowany ponieważ nie dopuszcza kod w aplikacji",
"App can't be installed because it is not compatible with this version of ownCloud" : "Aplikacja nie może zostać zainstalowana ponieważ jest niekompatybilna z tą wersja ownCloud",
"App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Aplikacja nie może być zainstalowana ponieważ true tag nie jest <shipped>true</shipped> , co nie jest dozwolone dla aplikacji nie wysłanych",
@@ -76,6 +84,7 @@ OC.L10N.register(
"Sharing %s failed, because %s is not a member of the group %s" : "Współdzielenie %s nie powiodło się, ponieważ %s nie jest członkiem grupy %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Musisz zapewnić hasło aby utworzyć link publiczny, dozwolone są tylko linki chronione",
"Sharing %s failed, because sharing with links is not allowed" : "Współdzielenie %s nie powiodło się, ponieważ współdzielenie z linkami nie jest dozwolone",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Współdzielenie %s nie powiodło się, nie można odnaleźć %s. Prawdopobnie serwer nie jest teraz osiągalny.",
"Share type %s is not valid for %s" : "Typ udziału %s nie jest właściwy dla %s",
"Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Ustawienie uprawnień dla %s nie powiodło się, ponieważ uprawnienia wykraczają poza przydzielone %s",
"Setting permissions for %s failed, because the item was not found" : "Ustawienie uprawnień dla %s nie powiodło się, ponieważ element nie został znaleziony",
diff --git a/lib/l10n/pl.json b/lib/l10n/pl.json
index 0314da202c3..6b53b3101f7 100644
--- a/lib/l10n/pl.json
+++ b/lib/l10n/pl.json
@@ -13,12 +13,14 @@
"Library %s with a version higher than %s is required - available version %s." : "Biblioteka %s w wersji wyższej niż %s, która jest wymagana - dostępna wersja %s.",
"Library %s with a version lower than %s is required - available version %s." : "Biblioteka w wersji %s jest niższa niż %s, która jest wymagana - dostępna wersja %s.",
"Following platforms are supported: %s" : "Obsługiwane są następujące platformy: %s",
- "ownCloud %s or higher is required." : "ownCloud %s jest w wersji wyższej niż wymagana.",
+ "ownCloud %s or higher is required." : "ownCloud %s jest w wersji nowszej niż wymagana.",
+ "ownCloud %s or lower is required." : "ownCloud %s jest w wersji starszej niż wymagana.",
"Help" : "Pomoc",
"Personal" : "Osobiste",
"Users" : "Użytkownicy",
"Admin" : "Administrator",
"Recommended" : "Polecane",
+ "App \"%s\" cannot be installed because it is not compatible with this version of ownCloud." : "Aplikacja \\\"%s\\\" nie może zostać zainstalowana ponieważ nie jest kompatybilna z tą wersją ownCloud.",
"No app name specified" : "Nie określono nazwy aplikacji",
"Unknown filetype" : "Nieznany typ pliku",
"Invalid image" : "Błędne zdjęcie",
@@ -33,15 +35,21 @@
"_%n minute ago_::_%n minutes ago_" : ["%n minute temu","%n minut temu","%n minut temu"],
"seconds ago" : "sekund temu",
"web services under your control" : "Kontrolowane serwisy",
+ "Empty filename is not allowed" : "Pusta nazwa nie jest dozwolona.",
"File name contains at least one invalid character" : "Nazwa pliku zawiera co najmniej jeden nieprawidłowy znak",
+ "File name is too long" : "Nazwa pliku zbyt długa",
+ "File is currently busy, please try again later" : "Plik jest obecnie niedostępny, proszę spróbować ponownie później",
+ "Can't read file" : "Nie można odczytać pliku.",
"App directory already exists" : "Katalog aplikacji już isnieje",
"Can't create app folder. Please fix permissions. %s" : "Nie mogę utworzyć katalogu aplikacji. Proszę popraw uprawnienia. %s",
+ "Archive does not contain a directory named %s" : "Archiwum nie zawiera ścieżki o nazwie %s",
"No source specified when installing app" : "Nie określono źródła podczas instalacji aplikacji",
"No href specified when installing app from http" : "Nie określono linku skąd aplikacja ma być zainstalowana",
"No path specified when installing app from local file" : "Nie określono lokalnego pliku z którego miała być instalowana aplikacja",
"Archives of type %s are not supported" : "Typ archiwum %s nie jest obsługiwany",
"Failed to open archive when installing app" : "Nie udało się otworzyć archiwum podczas instalacji aplikacji",
"App does not provide an info.xml file" : "Aplikacja nie posiada pliku info.xml",
+ "Signature could not get checked. Please contact the app developer and check your admin screen." : "Sygnatura nie mogła zostać sprawdzona. Proszę o skontaktownie się z twórcą aplikacji i sprawdzenie panelu administratora.",
"App can't be installed because of not allowed code in the App" : "Aplikacja nie może być zainstalowany ponieważ nie dopuszcza kod w aplikacji",
"App can't be installed because it is not compatible with this version of ownCloud" : "Aplikacja nie może zostać zainstalowana ponieważ jest niekompatybilna z tą wersja ownCloud",
"App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Aplikacja nie może być zainstalowana ponieważ true tag nie jest <shipped>true</shipped> , co nie jest dozwolone dla aplikacji nie wysłanych",
@@ -74,6 +82,7 @@
"Sharing %s failed, because %s is not a member of the group %s" : "Współdzielenie %s nie powiodło się, ponieważ %s nie jest członkiem grupy %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Musisz zapewnić hasło aby utworzyć link publiczny, dozwolone są tylko linki chronione",
"Sharing %s failed, because sharing with links is not allowed" : "Współdzielenie %s nie powiodło się, ponieważ współdzielenie z linkami nie jest dozwolone",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Współdzielenie %s nie powiodło się, nie można odnaleźć %s. Prawdopobnie serwer nie jest teraz osiągalny.",
"Share type %s is not valid for %s" : "Typ udziału %s nie jest właściwy dla %s",
"Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Ustawienie uprawnień dla %s nie powiodło się, ponieważ uprawnienia wykraczają poza przydzielone %s",
"Setting permissions for %s failed, because the item was not found" : "Ustawienie uprawnień dla %s nie powiodło się, ponieważ element nie został znaleziony",
diff --git a/lib/l10n/sl.js b/lib/l10n/sl.js
index cde356b03ee..af8a9a14021 100644
--- a/lib/l10n/sl.js
+++ b/lib/l10n/sl.js
@@ -16,6 +16,7 @@ OC.L10N.register(
"Library %s with a version lower than %s is required - available version %s." : "Zahtevana je knjižnica %s z različico, manjšo od %s – na voljo je različica %s.",
"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.",
"Help" : "Pomoč",
"Personal" : "Osebno",
"Users" : "Uporabniki",
@@ -37,6 +38,7 @@ OC.L10N.register(
"web services under your control" : "spletne storitve pod vašim nadzorom",
"Empty filename is not allowed" : "Prazno polje imena datoteke ni dovoljeno.",
"Dot files are not allowed" : "Skrite datoteke niso dovoljene",
+ "4-byte characters are not supported in file names" : "4-bitni znaki v imenih datotek niso podprti",
"File name is a reserved word" : "Ime datoteke je zadržana beseda",
"File name contains at least one invalid character" : "Ime datoteke vsebuje vsaj en neveljaven znak.",
"File name is too long" : "Ime datoteke je predolgo",
@@ -44,6 +46,7 @@ OC.L10N.register(
"Can't read file" : "Datoteke ni mogoče prebrati.",
"App directory already exists" : "Programska mapa že obstaja",
"Can't create app folder. Please fix permissions. %s" : "Programske mape ni mogoče ustvariti. Ni ustreznih dovoljenj. %s",
+ "Archive does not contain a directory named %s" : "V arhivu ni mape z imenom %s",
"No source specified when installing app" : "Ni podanega vira med nameščenjem programa",
"No href specified when installing app from http" : "Ni podanega podatka naslova HREF med nameščenjem programa preko protokola HTTP.",
"No path specified when installing app from local file" : "Ni podane poti med nameščenjem programa iz krajevne datoteke",
@@ -72,7 +75,7 @@ OC.L10N.register(
"Set an admin username." : "Nastavi uporabniško ime skrbnika.",
"Set an admin password." : "Nastavi geslo skrbnika.",
"Can't create or write into the data directory %s" : "Ni mogoče zapisati podatkov v podatkovno mapo %s",
- "Invalid Federated Cloud ID" : "Neveljaven ID za prenos dovoljenj ownCloud",
+ "Invalid Federated Cloud ID" : "Neveljaven ID zveznega oblaka ownCloud",
"%s shared »%s« with you" : "%s je omogočil souporabo »%s«",
"%s via %s" : "%s prek %s",
"Sharing %s failed, because the backend does not allow shares from type %i" : "Omogočanje souporabe %s je spodletelo, ker ozadnji program ne dopušča souporabe vrste %i.",
@@ -85,7 +88,7 @@ OC.L10N.register(
"Sharing %s failed, because %s is not a member of the group %s" : "Nastavljanje souporabe %s je spodletelo, ker uporabnik %s ni član skupine %s.",
"You need to provide a password to create a public link, only protected links are allowed" : "Navesti je treba geslo za ustvarjanje javne povezave, saj so dovoljene le zaščitene.",
"Sharing %s failed, because sharing with links is not allowed" : "Nastavljanje souporabe %s je spodletelo, ker souporaba preko povezave ni dovoljena.",
- "Not allowed to create a federated share with the same user" : "Ni dovoljeno ustvariti souporabe s prenosom dovoljenj z istim uporabnikom",
+ "Not allowed to create a federated share with the same user" : "Ni dovoljeno ustvariti souporabe zveznega oblaka z istim uporabnikom",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Omogočanje souporabe %s je spodletelo, ker ni mogoče najti %s. Najverjetneje je strežnik nedosegljiv.",
"Share type %s is not valid for %s" : "Vrsta souporabe %s za %s ni veljavna.",
"Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Nastavljanje dovoljenj za %s je spodletelo, saj ta presegajo dovoljenja dodeljena uporabniku %s.",
@@ -99,6 +102,7 @@ OC.L10N.register(
"Sharing %s failed, because resharing is not allowed" : "Nastavljanje souporabe %s je spodletelo, ker nadaljnje omogočanje souporabe ni dovoljeno.",
"Sharing %s failed, because the sharing backend for %s could not find its source" : "Nastavljanje souporabe %s je spodletelo, ker ozadnji program %s ne upravlja z viri.",
"Sharing %s failed, because the file could not be found in the file cache" : "Nastavljanje souporabe %s je spodletelo, ker v predpomnilniku zahtevana datoteka ne obstaja.",
+ "Cannot increase permissions of %s" : "Ni mogoče povečati dovoljen %s",
"Expiration date is in the past" : "Datum preteka je že mimo!",
"Could not find category \"%s\"" : "Kategorije \"%s\" ni mogoče najti.",
"Apps" : "Programi",
diff --git a/lib/l10n/sl.json b/lib/l10n/sl.json
index 8bd781a7371..5526369ea96 100644
--- a/lib/l10n/sl.json
+++ b/lib/l10n/sl.json
@@ -14,6 +14,7 @@
"Library %s with a version lower than %s is required - available version %s." : "Zahtevana je knjižnica %s z različico, manjšo od %s – na voljo je različica %s.",
"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.",
"Help" : "Pomoč",
"Personal" : "Osebno",
"Users" : "Uporabniki",
@@ -35,6 +36,7 @@
"web services under your control" : "spletne storitve pod vašim nadzorom",
"Empty filename is not allowed" : "Prazno polje imena datoteke ni dovoljeno.",
"Dot files are not allowed" : "Skrite datoteke niso dovoljene",
+ "4-byte characters are not supported in file names" : "4-bitni znaki v imenih datotek niso podprti",
"File name is a reserved word" : "Ime datoteke je zadržana beseda",
"File name contains at least one invalid character" : "Ime datoteke vsebuje vsaj en neveljaven znak.",
"File name is too long" : "Ime datoteke je predolgo",
@@ -42,6 +44,7 @@
"Can't read file" : "Datoteke ni mogoče prebrati.",
"App directory already exists" : "Programska mapa že obstaja",
"Can't create app folder. Please fix permissions. %s" : "Programske mape ni mogoče ustvariti. Ni ustreznih dovoljenj. %s",
+ "Archive does not contain a directory named %s" : "V arhivu ni mape z imenom %s",
"No source specified when installing app" : "Ni podanega vira med nameščenjem programa",
"No href specified when installing app from http" : "Ni podanega podatka naslova HREF med nameščenjem programa preko protokola HTTP.",
"No path specified when installing app from local file" : "Ni podane poti med nameščenjem programa iz krajevne datoteke",
@@ -70,7 +73,7 @@
"Set an admin username." : "Nastavi uporabniško ime skrbnika.",
"Set an admin password." : "Nastavi geslo skrbnika.",
"Can't create or write into the data directory %s" : "Ni mogoče zapisati podatkov v podatkovno mapo %s",
- "Invalid Federated Cloud ID" : "Neveljaven ID za prenos dovoljenj ownCloud",
+ "Invalid Federated Cloud ID" : "Neveljaven ID zveznega oblaka ownCloud",
"%s shared »%s« with you" : "%s je omogočil souporabo »%s«",
"%s via %s" : "%s prek %s",
"Sharing %s failed, because the backend does not allow shares from type %i" : "Omogočanje souporabe %s je spodletelo, ker ozadnji program ne dopušča souporabe vrste %i.",
@@ -83,7 +86,7 @@
"Sharing %s failed, because %s is not a member of the group %s" : "Nastavljanje souporabe %s je spodletelo, ker uporabnik %s ni član skupine %s.",
"You need to provide a password to create a public link, only protected links are allowed" : "Navesti je treba geslo za ustvarjanje javne povezave, saj so dovoljene le zaščitene.",
"Sharing %s failed, because sharing with links is not allowed" : "Nastavljanje souporabe %s je spodletelo, ker souporaba preko povezave ni dovoljena.",
- "Not allowed to create a federated share with the same user" : "Ni dovoljeno ustvariti souporabe s prenosom dovoljenj z istim uporabnikom",
+ "Not allowed to create a federated share with the same user" : "Ni dovoljeno ustvariti souporabe zveznega oblaka z istim uporabnikom",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Omogočanje souporabe %s je spodletelo, ker ni mogoče najti %s. Najverjetneje je strežnik nedosegljiv.",
"Share type %s is not valid for %s" : "Vrsta souporabe %s za %s ni veljavna.",
"Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Nastavljanje dovoljenj za %s je spodletelo, saj ta presegajo dovoljenja dodeljena uporabniku %s.",
@@ -97,6 +100,7 @@
"Sharing %s failed, because resharing is not allowed" : "Nastavljanje souporabe %s je spodletelo, ker nadaljnje omogočanje souporabe ni dovoljeno.",
"Sharing %s failed, because the sharing backend for %s could not find its source" : "Nastavljanje souporabe %s je spodletelo, ker ozadnji program %s ne upravlja z viri.",
"Sharing %s failed, because the file could not be found in the file cache" : "Nastavljanje souporabe %s je spodletelo, ker v predpomnilniku zahtevana datoteka ne obstaja.",
+ "Cannot increase permissions of %s" : "Ni mogoče povečati dovoljen %s",
"Expiration date is in the past" : "Datum preteka je že mimo!",
"Could not find category \"%s\"" : "Kategorije \"%s\" ni mogoče najti.",
"Apps" : "Programi",
diff --git a/lib/private/Server.php b/lib/private/Server.php
index 81187cdd715..d68a361955f 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -462,7 +462,8 @@ class Server extends ServerContainer implements IServerContainer {
new AppLocator(),
$config,
$c->getMemCacheFactory(),
- $appManager
+ $appManager,
+ $c->getTempManager()
);
});
$this->registerService('Request', function ($c) {
diff --git a/lib/private/api.php b/lib/private/api.php
index 87f2aa9b118..12a78f1424b 100644
--- a/lib/private/api.php
+++ b/lib/private/api.php
@@ -364,6 +364,18 @@ class OC_API {
\OC_Util::setUpFS(\OC_User::getUser());
self::$isLoggedIn = true;
+ /**
+ * Add DAV authenticated. This should in an ideal world not be
+ * necessary but the iOS App reads cookies from anywhere instead
+ * only the DAV endpoint.
+ * This makes sure that the cookies will be valid for the whole scope
+ * @see https://github.com/owncloud/core/issues/22893
+ */
+ \OC::$server->getSession()->set(
+ \OCA\DAV\Connector\Sabre\Auth::DAV_AUTHENTICATED,
+ \OC::$server->getUserSession()->getUser()->getUID()
+ );
+
return \OC_User::getUser();
}
}
diff --git a/lib/private/db/connection.php b/lib/private/db/connection.php
index 584904e6370..7904fab0726 100644
--- a/lib/private/db/connection.php
+++ b/lib/private/db/connection.php
@@ -293,7 +293,7 @@ class Connection extends \Doctrine\DBAL\Connection implements IDBConnection {
$updateQb->where($where);
$affected = $updateQb->execute();
- if ($affected === 0) {
+ if ($affected === 0 && !empty($updatePreconditionValues)) {
throw new PreconditionNotMetException();
}
diff --git a/lib/private/files.php b/lib/private/files.php
index b0d070637d7..9b6a1a4465f 100644
--- a/lib/private/files.php
+++ b/lib/private/files.php
@@ -267,7 +267,7 @@ class OC_Files {
$pattern = vsprintf($patternMap['pattern'], [$key]);
$setting = vsprintf($patternMap['setting'], [$key, $size]);
$hasReplaced = 0;
- $newContent = preg_replace($pattern, $setting, $content, 1, $hasReplaced);
+ $newContent = preg_replace($pattern, $setting, $content, 2, $hasReplaced);
if ($newContent !== null) {
$content = $newContent;
}
diff --git a/apps/files_external/lib/failedcache.php b/lib/private/files/cache/failedcache.php
index 0f59495e595..0386ba3ca32 100644
--- a/apps/files_external/lib/failedcache.php
+++ b/lib/private/files/cache/failedcache.php
@@ -19,9 +19,8 @@
*
*/
-namespace OCA\Files_External\Lib;
+namespace OC\Files\Cache;
-use OC\Files\Cache\CacheEntry;
use OCP\Constants;
use OCP\Files\Cache\ICache;
@@ -29,6 +28,18 @@ use OCP\Files\Cache\ICache;
* Storage placeholder to represent a missing precondition, storage unavailable
*/
class FailedCache implements ICache {
+ /** @var bool whether to show the failed storage in the ui */
+ private $visible;
+
+ /**
+ * FailedCache constructor.
+ *
+ * @param bool $visible
+ */
+ public function __construct($visible = true) {
+ $this->visible = $visible;
+ }
+
public function getNumericStorageId() {
return -1;
@@ -41,7 +52,7 @@ class FailedCache implements ICache {
'size' => 0,
'mimetype' => 'httpd/unix-directory',
'mimepart' => 'httpd',
- 'permissions' => Constants::PERMISSION_READ,
+ 'permissions' => $this->visible ? Constants::PERMISSION_READ : 0,
'mtime' => time()
]);
} else {
diff --git a/lib/private/files/storage/dav.php b/lib/private/files/storage/dav.php
index 495419fa865..df0f4c7e91d 100644
--- a/lib/private/files/storage/dav.php
+++ b/lib/private/files/storage/dav.php
@@ -34,6 +34,7 @@ namespace OC\Files\Storage;
use Exception;
use GuzzleHttp\Exception\RequestException;
+use GuzzleHttp\Message\ResponseInterface;
use OC\Files\Filesystem;
use OC\Files\Stream\Close;
use Icewind\Streams\IteratorDirectory;
@@ -351,7 +352,8 @@ class DAV extends Common {
'stream' => true
]);
} catch (RequestException $e) {
- if ($e->getResponse()->getStatusCode() === 404) {
+ if ($e->getResponse() instanceof ResponseInterface
+ && $e->getResponse()->getStatusCode() === 404) {
return false;
} else {
throw $e;
diff --git a/apps/files_external/lib/failedstorage.php b/lib/private/files/storage/failedstorage.php
index 20cf43d74b2..df7f76856d5 100644
--- a/apps/files_external/lib/failedstorage.php
+++ b/lib/private/files/storage/failedstorage.php
@@ -20,10 +20,10 @@
*
*/
-namespace OCA\Files_External\Lib;
+namespace OC\Files\Storage;
+use OC\Files\Cache\FailedCache;
use \OCP\Lock\ILockingProvider;
-use \OC\Files\Storage\Common;
use \OCP\Files\StorageNotAvailableException;
/**
diff --git a/lib/private/files/storage/wrapper/encryption.php b/lib/private/files/storage/wrapper/encryption.php
index 0b4816174bf..81eea9944f8 100644
--- a/lib/private/files/storage/wrapper/encryption.php
+++ b/lib/private/files/storage/wrapper/encryption.php
@@ -634,7 +634,18 @@ class Encryption extends Wrapper {
'encrypted' => (bool)$isEncrypted,
];
if($isEncrypted === 1) {
- $cacheInformation['encryptedVersion'] = $sourceStorage->getCache()->get($sourceInternalPath)['encryptedVersion'];
+ $encryptedVersion = $sourceStorage->getCache()->get($sourceInternalPath)['encryptedVersion'];
+
+ // In case of a move operation from an unencrypted to an encrypted
+ // storage the old encrypted version would stay with "0" while the
+ // correct value would be "1". Thus we manually set the value to "1"
+ // for those cases.
+ // See also https://github.com/owncloud/core/issues/23078
+ if($encryptedVersion === 0) {
+ $encryptedVersion = 1;
+ }
+
+ $cacheInformation['encryptedVersion'] = $encryptedVersion;
}
// in case of a rename we need to manipulate the source cache because
diff --git a/lib/private/integritycheck/checker.php b/lib/private/integritycheck/checker.php
index 8ede6216b76..d7867936887 100644
--- a/lib/private/integritycheck/checker.php
+++ b/lib/private/integritycheck/checker.php
@@ -31,6 +31,7 @@ use OCP\App\IAppManager;
use OCP\ICache;
use OCP\ICacheFactory;
use OCP\IConfig;
+use OCP\ITempManager;
use phpseclib\Crypt\RSA;
use phpseclib\File\X509;
@@ -58,6 +59,8 @@ class Checker {
private $cache;
/** @var IAppManager */
private $appManager;
+ /** @var ITempManager */
+ private $tempManager;
/**
* @param EnvironmentHelper $environmentHelper
@@ -66,19 +69,22 @@ class Checker {
* @param IConfig $config
* @param ICacheFactory $cacheFactory
* @param IAppManager $appManager
+ * @param ITempManager $tempManager
*/
public function __construct(EnvironmentHelper $environmentHelper,
FileAccessHelper $fileAccessHelper,
AppLocator $appLocator,
IConfig $config = null,
ICacheFactory $cacheFactory,
- IAppManager $appManager = null) {
+ IAppManager $appManager = null,
+ ITempManager $tempManager) {
$this->environmentHelper = $environmentHelper;
$this->fileAccessHelper = $fileAccessHelper;
$this->appLocator = $appLocator;
$this->config = $config;
$this->cache = $cacheFactory->create(self::CACHE_KEY);
$this->appManager = $appManager;
+ $this->tempManager = $tempManager;
}
/**
@@ -147,6 +153,8 @@ class Checker {
private function generateHashes(\RecursiveIteratorIterator $iterator,
$path) {
$hashes = [];
+ $copiedWebserverSettingFiles = false;
+ $tmpFolder = '';
$baseDirectoryLength = strlen($path);
foreach($iterator as $filename => $data) {
@@ -167,6 +175,36 @@ class Checker {
continue;
}
+ // The .user.ini and the .htaccess file of ownCloud can contain some
+ // custom modifications such as for example the maximum upload size
+ // to ensure that this will not lead to false positives this will
+ // copy the file to a temporary folder and reset it to the default
+ // values.
+ if($filename === $this->environmentHelper->getServerRoot() . '/.htaccess'
+ || $filename === $this->environmentHelper->getServerRoot() . '/.user.ini') {
+
+ if(!$copiedWebserverSettingFiles) {
+ $tmpFolder = rtrim($this->tempManager->getTemporaryFolder(), '/');
+ copy($this->environmentHelper->getServerRoot() . '/.htaccess', $tmpFolder . '/.htaccess');
+ copy($this->environmentHelper->getServerRoot() . '/.user.ini', $tmpFolder . '/.user.ini');
+ \OC_Files::setUploadLimit(
+ \OCP\Util::computerFileSize('513MB'),
+ [
+ '.htaccess' => $tmpFolder . '/.htaccess',
+ '.user.ini' => $tmpFolder . '/.user.ini',
+ ]
+ );
+ }
+ }
+
+ // The .user.ini file can contain custom modifications to the file size
+ // as well.
+ if($filename === $this->environmentHelper->getServerRoot() . '/.user.ini') {
+ $fileContent = file_get_contents($tmpFolder . '/.user.ini');
+ $hashes[$relativeFileName] = hash('sha512', $fileContent);
+ continue;
+ }
+
// The .htaccess file in the root folder of ownCloud can contain
// custom content after the installation due to the fact that dynamic
// content is written into it at installation time as well. This
@@ -175,7 +213,7 @@ class Checker {
// "#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####" and have the
// hash generated based on this.
if($filename === $this->environmentHelper->getServerRoot() . '/.htaccess') {
- $fileContent = file_get_contents($filename);
+ $fileContent = file_get_contents($tmpFolder . '/.htaccess');
$explodedArray = explode('#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####', $fileContent);
if(count($explodedArray) === 2) {
$hashes[$relativeFileName] = hash('sha512', $explodedArray[0]);
@@ -185,6 +223,7 @@ class Checker {
$hashes[$relativeFileName] = hash_file('sha512', $filename);
}
+
return $hashes;
}
diff --git a/lib/private/log/owncloud.php b/lib/private/log/owncloud.php
index 5a48f9e1c6d..6399d7ee588 100644
--- a/lib/private/log/owncloud.php
+++ b/lib/private/log/owncloud.php
@@ -76,9 +76,12 @@ class OC_Log_Owncloud {
} catch (Exception $e) {
$timezone = new DateTimeZone('UTC');
}
- $time = DateTime::createFromFormat("U.u", number_format(microtime(true), 4, ".", ""), $timezone);
+ $time = DateTime::createFromFormat("U.u", number_format(microtime(true), 4, ".", ""));
if ($time === false) {
$time = new DateTime(null, $timezone);
+ } else {
+ // apply timezone if $time is created from UNIX timestamp
+ $time->setTimezone($timezone);
}
$request = \OC::$server->getRequest();
$reqId = $request->getId();
@@ -90,8 +93,7 @@ class OC_Log_Owncloud {
$url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '--';
$method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : '--';
$entry = compact('reqId', 'remoteAddr', 'app', 'message', 'level', 'time', 'method', 'url');
- }
- else {
+ } else {
$entry = compact('reqId', 'remoteAddr', 'app', 'message', 'level', 'time');
}
$entry = json_encode($entry);
diff --git a/lib/private/memcache/memcached.php b/lib/private/memcache/memcached.php
index c13be68b47f..a30f9da7ed7 100644
--- a/lib/private/memcache/memcached.php
+++ b/lib/private/memcache/memcached.php
@@ -88,7 +88,9 @@ class Memcached extends Cache implements IMemcache {
public function remove($key) {
$result= self::$cache->delete($this->getNamespace() . $key);
- $this->verifyReturnCode();
+ if (self::$cache->getResultCode() !== \Memcached::RES_NOTFOUND) {
+ $this->verifyReturnCode();
+ }
return $result;
}
@@ -124,10 +126,13 @@ class Memcached extends Cache implements IMemcache {
* @param mixed $value
* @param int $ttl Time To Live in seconds. Defaults to 60*60*24
* @return bool
+ * @throws \Exception
*/
public function add($key, $value, $ttl = 0) {
$result = self::$cache->add($this->getPrefix() . $key, $value, $ttl);
- $this->verifyReturnCode();
+ if (self::$cache->getResultCode() !== \Memcached::RES_NOTSTORED) {
+ $this->verifyReturnCode();
+ }
return $result;
}
@@ -141,7 +146,11 @@ class Memcached extends Cache implements IMemcache {
public function inc($key, $step = 1) {
$this->add($key, 0);
$result = self::$cache->increment($this->getPrefix() . $key, $step);
- $this->verifyReturnCode();
+
+ if (self::$cache->getResultCode() !== \Memcached::RES_SUCCESS) {
+ return false;
+ }
+
return $result;
}
@@ -154,7 +163,11 @@ class Memcached extends Cache implements IMemcache {
*/
public function dec($key, $step = 1) {
$result = self::$cache->decrement($this->getPrefix() . $key, $step);
- $this->verifyReturnCode();
+
+ if (self::$cache->getResultCode() !== \Memcached::RES_SUCCESS) {
+ return false;
+ }
+
return $result;
}
diff --git a/lib/private/repair.php b/lib/private/repair.php
index d40c6464e14..779f09d42ec 100644
--- a/lib/private/repair.php
+++ b/lib/private/repair.php
@@ -36,6 +36,7 @@ use OC\Repair\Collation;
use OC\Repair\DropOldJobs;
use OC\Repair\OldGroupMembershipShares;
use OC\Repair\RemoveGetETagEntries;
+use OC\Repair\SharePropagation;
use OC\Repair\SqliteAutoincrement;
use OC\Repair\DropOldTables;
use OC\Repair\FillETags;
@@ -114,6 +115,7 @@ class Repair extends BasicEmitter {
new RemoveGetETagEntries(\OC::$server->getDatabaseConnection()),
new UpdateOutdatedOcsIds(\OC::$server->getConfig()),
new RepairInvalidShares(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()),
+ new SharePropagation(\OC::$server->getConfig()),
];
}
diff --git a/lib/private/repair/oldgroupmembershipshares.php b/lib/private/repair/oldgroupmembershipshares.php
index bae1bf61a7f..627645b116d 100644
--- a/lib/private/repair/oldgroupmembershipshares.php
+++ b/lib/private/repair/oldgroupmembershipshares.php
@@ -69,7 +69,7 @@ class OldGroupMembershipShares extends BasicEmitter implements RepairStep {
$deletedEntries = 0;
$query = $this->connection->getQueryBuilder();
- $query->select(['s1.id', $query->createFunction('s1.`share_with` AS `user`'), $query->createFunction('s2.`share_with` AS `group`')])
+ $query->select('s1.id')->selectAlias('s1.share_with', 'user')->selectAlias('s2.share_with', 'group')
->from('share', 's1')
->where($query->expr()->isNotNull('s1.parent'))
// \OC\Share\Constant::$shareTypeGroupUserUnique === 2
diff --git a/lib/private/repair/sharepropagation.php b/lib/private/repair/sharepropagation.php
new file mode 100644
index 00000000000..26d7a9e128c
--- /dev/null
+++ b/lib/private/repair/sharepropagation.php
@@ -0,0 +1,52 @@
+<?php
+/**
+ * @author Georg Ehrke <georg@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\Repair;
+
+use OC\Hooks\BasicEmitter;
+use OCP\IConfig;
+
+class SharePropagation extends BasicEmitter implements \OC\RepairStep {
+ /** @var IConfig */
+ private $config;
+
+ /**
+ * SharePropagation constructor.
+ *
+ * @param IConfig $config
+ */
+ public function __construct(IConfig $config) {
+ $this->config = $config;
+ }
+
+ public function getName() {
+ return 'Remove old share propagation app entries';
+ }
+
+ public function run() {
+ $keys = $this->config->getAppKeys('files_sharing');
+
+ foreach ($keys as $key) {
+ if (is_numeric($key)) {
+ $this->config->deleteAppValue('files_sharing', $key);
+ }
+ }
+ }
+}
diff --git a/lib/private/route/cachingrouter.php b/lib/private/route/cachingrouter.php
index 4c702bb8e04..d6270dcf2c7 100644
--- a/lib/private/route/cachingrouter.php
+++ b/lib/private/route/cachingrouter.php
@@ -49,7 +49,7 @@ class CachingRouter extends Router {
*/
public function generate($name, $parameters = array(), $absolute = false) {
asort($parameters);
- $key = $this->context->getHost() . '#' . $this->context->getBaseUrl() . $name . json_encode($parameters) . intval($absolute);
+ $key = $this->context->getHost() . '#' . $this->context->getBaseUrl() . $name . sha1(json_encode($parameters)) . intval($absolute);
if ($this->cache->hasKey($key)) {
return $this->cache->get($key);
} else {
diff --git a/lib/private/search/result/file.php b/lib/private/search/result/file.php
index d987d6c8e73..f1347001eaf 100644
--- a/lib/private/search/result/file.php
+++ b/lib/private/search/result/file.php
@@ -79,10 +79,12 @@ class File extends \OCP\Search\Result {
$info = pathinfo($path);
$this->id = $data->getId();
$this->name = $info['basename'];
- $this->link = \OCP\Util::linkTo(
- 'files',
- 'index.php',
- array('dir' => $info['dirname'], 'scrollto' => $info['basename'])
+ $this->link = \OC::$server->getURLGenerator()->linkToRoute(
+ 'files.view.index',
+ [
+ 'dir' => $info['dirname'],
+ 'scrollto' => $info['basename'],
+ ]
);
$this->permissions = $data->getPermissions();
$this->path = $path;
diff --git a/lib/private/security/trusteddomainhelper.php b/lib/private/security/trusteddomainhelper.php
index 885ceee23c3..409628677a7 100644
--- a/lib/private/security/trusteddomainhelper.php
+++ b/lib/private/security/trusteddomainhelper.php
@@ -78,6 +78,12 @@ class TrustedDomainHelper {
if (preg_match(Request::REGEX_LOCALHOST, $domain) === 1) {
return true;
}
+
+ // Compare with port appended
+ if(in_array($domainWithPort, $trustedList, true)) {
+ return true;
+ }
+
return in_array($domain, $trustedList, true);
}
diff --git a/lib/private/setup.php b/lib/private/setup.php
index 8a10a9cfbec..5988a0b2d1d 100644
--- a/lib/private/setup.php
+++ b/lib/private/setup.php
@@ -423,7 +423,7 @@ class Setup {
// Add rewrite base
$webRoot = !empty(\OC::$WEBROOT) ? \OC::$WEBROOT : '/';
$content .= "\n<IfModule mod_rewrite.c>";
- $content .= "\n RewriteRule .* index.php [PT,E=PATH_INFO:$1]";
+ $content .= "\n RewriteRule . index.php [PT,E=PATH_INFO:$1]";
$content .= "\n RewriteBase ".$webRoot;
$content .= "\n <IfModule mod_env.c>";
$content .= "\n SetEnv front_controller_active true";
diff --git a/lib/private/share/mailnotifications.php b/lib/private/share/mailnotifications.php
index a664d4ebf47..f71651e71fc 100644
--- a/lib/private/share/mailnotifications.php
+++ b/lib/private/share/mailnotifications.php
@@ -30,6 +30,7 @@ namespace OC\Share;
use DateTime;
use OCP\IL10N;
+use OCP\IURLGenerator;
use OCP\IUser;
use OCP\Mail\IMailer;
use OCP\ILogger;
@@ -57,6 +58,8 @@ class MailNotifications {
private $defaults;
/** @var ILogger */
private $logger;
+ /** @var IURLGenerator */
+ private $urlGenerator;
/**
* @param IUser $user
@@ -64,17 +67,20 @@ class MailNotifications {
* @param IMailer $mailer
* @param ILogger $logger
* @param Defaults $defaults
+ * @param IURLGenerator $urlGenerator
*/
public function __construct(IUser $user,
IL10N $l10n,
IMailer $mailer,
ILogger $logger,
- Defaults $defaults) {
+ Defaults $defaults,
+ IURLGenerator $urlGenerator) {
$this->l = $l10n;
$this->user = $user;
$this->mailer = $mailer;
$this->logger = $logger;
$this->defaults = $defaults;
+ $this->urlGenerator = $urlGenerator;
$this->replyTo = $this->user->getEMailAddress();
$this->senderDisplayName = $this->user->getDisplayName();
@@ -131,7 +137,10 @@ class MailNotifications {
);
}
- $link = Util::linkToAbsolute('files', 'index.php', $args);
+ $link = $this->urlGenerator->linkToRouteAbsolute(
+ 'files.view.index',
+ $args
+ );
list($htmlBody, $textBody) = $this->createMailBody($filename, $link, $expiration, 'internal');
diff --git a/lib/private/share20/defaultshareprovider.php b/lib/private/share20/defaultshareprovider.php
index 43dc6090a35..b91ac24d44f 100644
--- a/lib/private/share20/defaultshareprovider.php
+++ b/lib/private/share20/defaultshareprovider.php
@@ -454,15 +454,7 @@ class DefaultShareProvider implements IShareProvider {
}
/**
- * Get all shares by the given user. Sharetype and path can be used to filter.
- *
- * @param string $userId
- * @param int $shareType
- * @param \OCP\Files\File|\OCP\Files\Folder $node
- * @param bool $reshares Also get the shares where $user is the owner instead of just the shares where $user is the initiator
- * @param int $limit The maximum number of shares to be returned, -1 for all shares
- * @param int $offset
- * @return Share[]
+ * @inheritdoc
*/
public function getSharesBy($userId, $shareType, $node, $reshares, $limit, $offset) {
$qb = $this->dbConn->getQueryBuilder();
diff --git a/lib/private/share20/manager.php b/lib/private/share20/manager.php
index 6f370eea424..95662dc0b60 100644
--- a/lib/private/share20/manager.php
+++ b/lib/private/share20/manager.php
@@ -834,15 +834,7 @@ class Manager implements IManager {
}
/**
- * Get shares shared by (initiated) by the provided user.
- *
- * @param string $userId
- * @param int $shareType
- * @param \OCP\Files\File|\OCP\Files\Folder $path
- * @param bool $reshares
- * @param int $limit The maximum number of returned results, -1 for all results
- * @param int $offset
- * @return \OCP\Share\IShare[]
+ * @inheritdoc
*/
public function getSharesBy($userId, $shareType, $path = null, $reshares = false, $limit = 50, $offset = 0) {
if ($path !== null &&
@@ -889,6 +881,11 @@ class Manager implements IManager {
break;
}
+ // If there was no limit on the select we are done
+ if ($limit === -1) {
+ break;
+ }
+
$offset += $added;
// Fetch again $limit shares
diff --git a/lib/private/user.php b/lib/private/user.php
index b91f60e3b9b..26062f503d2 100644
--- a/lib/private/user.php
+++ b/lib/private/user.php
@@ -281,7 +281,20 @@ class OC_User {
*/
public static function tryBasicAuthLogin() {
if (!empty($_SERVER['PHP_AUTH_USER']) && !empty($_SERVER['PHP_AUTH_PW'])) {
- \OC_User::login($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']);
+ $result = \OC_User::login($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']);
+ if($result === true) {
+ /**
+ * Add DAV authenticated. This should in an ideal world not be
+ * necessary but the iOS App reads cookies from anywhere instead
+ * only the DAV endpoint.
+ * This makes sure that the cookies will be valid for the whole scope
+ * @see https://github.com/owncloud/core/issues/22893
+ */
+ \OC::$server->getSession()->set(
+ \OCA\DAV\Connector\Sabre\Auth::DAV_AUTHENTICATED,
+ \OC::$server->getUserSession()->getUser()->getUID()
+ );
+ }
}
}
diff --git a/lib/private/util.php b/lib/private/util.php
index 6f53be8446a..88d78ad83c6 100644
--- a/lib/private/util.php
+++ b/lib/private/util.php
@@ -828,6 +828,14 @@ class OC_Util {
);
}
+ if(function_exists('xml_parser_create') &&
+ version_compare('2.7.0', LIBXML_DOTTED_VERSION) === 1) {
+ $errors[] = array(
+ 'error' => $l->t('libxml2 2.7.0 is at least required. Currently %s is installed.', [LIBXML_DOTTED_VERSION]),
+ 'hint' => $l->t('To fix this issue update your libxml2 version and restart your web server.')
+ );
+ }
+
if (!self::isAnnotationsWorking()) {
$errors[] = array(
'error' => $l->t('PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible.'),
diff --git a/lib/public/backgroundjob.php b/lib/public/backgroundjob.php
index 69397bb3e45..f532a97c747 100644
--- a/lib/public/backgroundjob.php
+++ b/lib/public/backgroundjob.php
@@ -99,7 +99,7 @@ class BackgroundJob {
* @since 4.5.0
*/
public static function addRegularTask($klass, $method) {
- if (!\OC::needUpgrade()) {
+ if (!\OCP\Util::needUpgrade()) {
self::registerJob('OC\BackgroundJob\Legacy\RegularJob', array($klass, $method));
return true;
}
diff --git a/lib/public/share/imanager.php b/lib/public/share/imanager.php
index f926104dde0..86a31e1f06d 100644
--- a/lib/public/share/imanager.php
+++ b/lib/public/share/imanager.php
@@ -21,9 +21,10 @@
namespace OCP\Share;
+use OCP\Files\Node;
use OCP\IUser;
-use OC\Share20\Exception\ShareNotFound;
+use OCP\Share\Exceptions\ShareNotFound;
/**
* Interface IManager
@@ -91,7 +92,7 @@ interface IManager {
*
* @param string $userId
* @param int $shareType
- * @param \OCP\Files\File|\OCP\Files\Folder $path
+ * @param Node|null $path
* @param bool $reshares
* @param int $limit The maximum number of returned results, -1 for all results
* @param int $offset
@@ -106,7 +107,7 @@ interface IManager {
*
* @param string $userId
* @param int $shareType
- * @param File|Folder|null $node
+ * @param Node|null $node
* @param int $limit The maximum number of shares returned, -1 for all
* @param int $offset
* @return IShare[]
diff --git a/lib/public/share/ishareprovider.php b/lib/public/share/ishareprovider.php
index b339ce63d34..d00b9da7b59 100644
--- a/lib/public/share/ishareprovider.php
+++ b/lib/public/share/ishareprovider.php
@@ -21,10 +21,8 @@
namespace OCP\Share;
-use OC\Share20\Exception\ShareNotFound;
-use OC\Share20\Exception\BackendError;
+use OCP\Share\Exceptions\ShareNotFound;
use OCP\Files\Node;
-use OCP\IUser;
/**
* Interface IShareProvider
@@ -97,7 +95,7 @@ interface IShareProvider {
*
* @param string $userId
* @param int $shareType
- * @param \OCP\Files\File|\OCP\Files\Folder $node
+ * @param Node|null $node
* @param bool $reshares Also get the shares where $user is the owner instead of just the shares where $user is the initiator
* @param int $limit The maximum number of shares to be returned, -1 for all shares
* @param int $offset
@@ -120,11 +118,11 @@ interface IShareProvider {
/**
* Get shares for a given path
*
- * @param \OCP\Files\Node $path
+ * @param Node $path
* @return \OCP\Share\IShare[]
* @since 9.0.0
*/
- public function getSharesByPath(\OCP\Files\Node $path);
+ public function getSharesByPath(Node $path);
/**
* Get shared with the given user
diff --git a/settings/l10n/cs_CZ.js b/settings/l10n/cs_CZ.js
index 5eb82ca0239..a9e6c6f4c91 100644
--- a/settings/l10n/cs_CZ.js
+++ b/settings/l10n/cs_CZ.js
@@ -38,7 +38,7 @@ OC.L10N.register(
"Unable to delete group." : "Nelze smazat skupinu.",
"log-level out of allowed range" : "úroveň logování z povoleného rozpětí",
"Saved" : "Uloženo",
- "test email settings" : "otestovat nastavení emailu",
+ "test email settings" : "Test nastavení emailu",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Při odesílání emailu nastala chyba. Překontrolujte prosím svá nastavení. (Error: %s)",
"Email sent" : "Email odeslán",
"You need to set your user email before being able to send test emails." : "Pro možnost odeslání zkušebních emailů musíte nejprve nastavit svou emailovou adresu.",
@@ -189,7 +189,7 @@ OC.L10N.register(
"SMTP Username" : "SMTP uživatelské jméno ",
"SMTP Password" : "SMTP heslo",
"Store credentials" : "Ukládat přihlašovací údaje",
- "Test email settings" : "Otestovat nastavení emailu",
+ "Test email settings" : "Test nastavení emailu",
"Send email" : "Odeslat email",
"Download logfile" : "Stáhnout soubor logu",
"More" : "Více",
diff --git a/settings/l10n/cs_CZ.json b/settings/l10n/cs_CZ.json
index 197e6f2e1b6..f4dc78aa376 100644
--- a/settings/l10n/cs_CZ.json
+++ b/settings/l10n/cs_CZ.json
@@ -36,7 +36,7 @@
"Unable to delete group." : "Nelze smazat skupinu.",
"log-level out of allowed range" : "úroveň logování z povoleného rozpětí",
"Saved" : "Uloženo",
- "test email settings" : "otestovat nastavení emailu",
+ "test email settings" : "Test nastavení emailu",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Při odesílání emailu nastala chyba. Překontrolujte prosím svá nastavení. (Error: %s)",
"Email sent" : "Email odeslán",
"You need to set your user email before being able to send test emails." : "Pro možnost odeslání zkušebních emailů musíte nejprve nastavit svou emailovou adresu.",
@@ -187,7 +187,7 @@
"SMTP Username" : "SMTP uživatelské jméno ",
"SMTP Password" : "SMTP heslo",
"Store credentials" : "Ukládat přihlašovací údaje",
- "Test email settings" : "Otestovat nastavení emailu",
+ "Test email settings" : "Test nastavení emailu",
"Send email" : "Odeslat email",
"Download logfile" : "Stáhnout soubor logu",
"More" : "Více",
diff --git a/settings/l10n/de_DE.js b/settings/l10n/de_DE.js
index c263d7215e2..031857d087d 100644
--- a/settings/l10n/de_DE.js
+++ b/settings/l10n/de_DE.js
@@ -70,6 +70,7 @@ OC.L10N.register(
"Disable" : "Deaktivieren",
"Enable" : "Aktivieren",
"Error while enabling app" : "Beim Aktivieren der App ist ein Fehler aufgetreten",
+ "Error: this app cannot be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da es den Server instabil macht.",
"Updating...." : "Update…",
"Error while updating app" : "Es ist ein Fehler während des Updates aufgetreten",
"Updated" : "Aktualisiert",
diff --git a/settings/l10n/de_DE.json b/settings/l10n/de_DE.json
index 93e8d731de2..f61859bc2a3 100644
--- a/settings/l10n/de_DE.json
+++ b/settings/l10n/de_DE.json
@@ -68,6 +68,7 @@
"Disable" : "Deaktivieren",
"Enable" : "Aktivieren",
"Error while enabling app" : "Beim Aktivieren der App ist ein Fehler aufgetreten",
+ "Error: this app cannot be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da es den Server instabil macht.",
"Updating...." : "Update…",
"Error while updating app" : "Es ist ein Fehler während des Updates aufgetreten",
"Updated" : "Aktualisiert",
diff --git a/settings/l10n/is.js b/settings/l10n/is.js
index 7038b16bf73..3dd4db086f6 100644
--- a/settings/l10n/is.js
+++ b/settings/l10n/is.js
@@ -26,6 +26,7 @@ OC.L10N.register(
"Enabled" : "Virkt",
"Not enabled" : "Óvirkt",
"Federated Cloud Sharing" : "Deiling með skýjasambandi",
+ "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL er að nota úrelda útgáfu af %s (%s). Uppfærðu stýrikerfið þitt, annars er hætt við að eiginleikar á borð við %s virki ekki sem skyldi.",
"A problem occurred, please check your log files (Error: %s)" : "Vandamál kom upp, skoðaðu yfir annálana þína (Villa: %s)",
"Migration Completed" : "Yfirfærslu lokið",
"Group already exists." : "Hópur er þegar til.",
@@ -47,13 +48,16 @@ OC.L10N.register(
"Email saved" : "Tölvupóstfang vistað",
"Your full name has been changed." : "Fullu nafni þínu hefur verið breytt.",
"Unable to change full name" : "Get ekki breytt fullu nafni",
+ "Are you really sure you want add \"{domain}\" as trusted domain?" : "Ertu viss um að þú viljir bæta \"{domain}\" við sem treystu léni?",
"Add trusted domain" : "Bæta við treystu léni",
+ "Migration in progress. Please wait until the migration is finished" : "Yfirfærsla er í gangi. Dokaðu við þar til henni er lokið",
"Migration started …" : "Yfirfærsla hafin...",
"Sending..." : "Sendi...",
"Official" : "Opinbert",
"Approved" : "Samþykkt",
"Experimental" : "Á tilraunastigi",
"All" : "Allt",
+ "No apps found for your version" : "Engin forrit fundust fyrir útgáfuna þína",
"Update to %s" : "Uppfæra í %s",
"Please wait...." : "Andartak....",
"Error while disabling app" : "Villa við að afvirkja forrit",
@@ -66,7 +70,9 @@ OC.L10N.register(
"Uninstalling ...." : "Tek út uppsetningu ....",
"Error while uninstalling app" : "Villa við að fjarlægja forrit",
"Uninstall" : "Henda út",
+ "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Forritið hefur verið virkjað, en það þarf að uppfæra það. Þú verður áframsendur á uppfærslusíðuna eftir 5 sekúndur.",
"App update" : "Uppfærsla forrits",
+ "No apps found for \"{query}\"" : "Engin forrit fundust fyrir \"{query}\"",
"An error occurred. Please upload an ASCII-encoded PEM certificate." : "Villa kom upp. Sendu inn ASCII-kóðað PEM-skilríki.",
"Valid until {date}" : "Gildir til {date}",
"Delete" : "Eyða",
@@ -101,13 +107,26 @@ OC.L10N.register(
"None" : "Ekkert",
"Login" : "Innskráning",
"Plain" : "Einfalt",
+ "NT LAN Manager" : "NT LAN stjórnun",
"SSL" : "SSL",
"TLS" : "TLS",
"All checks passed." : "Stóðst allar prófanir.",
"Open documentation" : "Opna hjálparskjöl",
+ "Allow apps to use the Share API" : "Leyfa forritum að nota Share API",
+ "Allow users to share via link" : "Leyfa notendum að deila með tengli",
+ "Enforce password protection" : "Krefjast verndunar með aðgangsorði",
+ "Allow public uploads" : "Leyfa opinberar innsendingar",
+ "Allow users to send mail notification for shared files" : "Leyfa notendum að senda tilkynningar í tölvupósti vegna deildra skráa",
+ "Set default expiration date" : "Setja sjálfgefinn gildistíma",
"Expire after " : "Rennur út eftir ",
"days" : "daga",
+ "Enforce expiration date" : "Krefjast dagsetningar á gildistíma",
"Allow resharing" : "Leyfa endurdeilingu",
+ "Restrict users to only share with users in their groups" : "Takmarka notendur við að deila með notendum í þeirra eigin hópum",
+ "Allow users to send mail notification for shared files to other users" : "Leyfa notendum að senda tilkynningar til annarra notenda í tölvupósti vegna deildra skráa",
+ "Exclude groups from sharing" : "Undanskilja hópa frá því að deila",
+ "Last cron job execution: %s." : "Síðasta keyrsla cron-verks: %s.",
+ "Last cron job execution: %s. Something seems wrong." : "Síðasta keyrsla cron-verks: %s. Eitthvað er ekki eins og það á að sér að vera.",
"Enable server-side encryption" : "Virkja dulritun á þjóni",
"Enable encryption" : "Virkja dulritun",
"Select default encryption module:" : "Veldu sjálfgefna dulritunareiningu:",
diff --git a/settings/l10n/is.json b/settings/l10n/is.json
index e69279f8215..d64b2f0354a 100644
--- a/settings/l10n/is.json
+++ b/settings/l10n/is.json
@@ -24,6 +24,7 @@
"Enabled" : "Virkt",
"Not enabled" : "Óvirkt",
"Federated Cloud Sharing" : "Deiling með skýjasambandi",
+ "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL er að nota úrelda útgáfu af %s (%s). Uppfærðu stýrikerfið þitt, annars er hætt við að eiginleikar á borð við %s virki ekki sem skyldi.",
"A problem occurred, please check your log files (Error: %s)" : "Vandamál kom upp, skoðaðu yfir annálana þína (Villa: %s)",
"Migration Completed" : "Yfirfærslu lokið",
"Group already exists." : "Hópur er þegar til.",
@@ -45,13 +46,16 @@
"Email saved" : "Tölvupóstfang vistað",
"Your full name has been changed." : "Fullu nafni þínu hefur verið breytt.",
"Unable to change full name" : "Get ekki breytt fullu nafni",
+ "Are you really sure you want add \"{domain}\" as trusted domain?" : "Ertu viss um að þú viljir bæta \"{domain}\" við sem treystu léni?",
"Add trusted domain" : "Bæta við treystu léni",
+ "Migration in progress. Please wait until the migration is finished" : "Yfirfærsla er í gangi. Dokaðu við þar til henni er lokið",
"Migration started …" : "Yfirfærsla hafin...",
"Sending..." : "Sendi...",
"Official" : "Opinbert",
"Approved" : "Samþykkt",
"Experimental" : "Á tilraunastigi",
"All" : "Allt",
+ "No apps found for your version" : "Engin forrit fundust fyrir útgáfuna þína",
"Update to %s" : "Uppfæra í %s",
"Please wait...." : "Andartak....",
"Error while disabling app" : "Villa við að afvirkja forrit",
@@ -64,7 +68,9 @@
"Uninstalling ...." : "Tek út uppsetningu ....",
"Error while uninstalling app" : "Villa við að fjarlægja forrit",
"Uninstall" : "Henda út",
+ "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Forritið hefur verið virkjað, en það þarf að uppfæra það. Þú verður áframsendur á uppfærslusíðuna eftir 5 sekúndur.",
"App update" : "Uppfærsla forrits",
+ "No apps found for \"{query}\"" : "Engin forrit fundust fyrir \"{query}\"",
"An error occurred. Please upload an ASCII-encoded PEM certificate." : "Villa kom upp. Sendu inn ASCII-kóðað PEM-skilríki.",
"Valid until {date}" : "Gildir til {date}",
"Delete" : "Eyða",
@@ -99,13 +105,26 @@
"None" : "Ekkert",
"Login" : "Innskráning",
"Plain" : "Einfalt",
+ "NT LAN Manager" : "NT LAN stjórnun",
"SSL" : "SSL",
"TLS" : "TLS",
"All checks passed." : "Stóðst allar prófanir.",
"Open documentation" : "Opna hjálparskjöl",
+ "Allow apps to use the Share API" : "Leyfa forritum að nota Share API",
+ "Allow users to share via link" : "Leyfa notendum að deila með tengli",
+ "Enforce password protection" : "Krefjast verndunar með aðgangsorði",
+ "Allow public uploads" : "Leyfa opinberar innsendingar",
+ "Allow users to send mail notification for shared files" : "Leyfa notendum að senda tilkynningar í tölvupósti vegna deildra skráa",
+ "Set default expiration date" : "Setja sjálfgefinn gildistíma",
"Expire after " : "Rennur út eftir ",
"days" : "daga",
+ "Enforce expiration date" : "Krefjast dagsetningar á gildistíma",
"Allow resharing" : "Leyfa endurdeilingu",
+ "Restrict users to only share with users in their groups" : "Takmarka notendur við að deila með notendum í þeirra eigin hópum",
+ "Allow users to send mail notification for shared files to other users" : "Leyfa notendum að senda tilkynningar til annarra notenda í tölvupósti vegna deildra skráa",
+ "Exclude groups from sharing" : "Undanskilja hópa frá því að deila",
+ "Last cron job execution: %s." : "Síðasta keyrsla cron-verks: %s.",
+ "Last cron job execution: %s. Something seems wrong." : "Síðasta keyrsla cron-verks: %s. Eitthvað er ekki eins og það á að sér að vera.",
"Enable server-side encryption" : "Virkja dulritun á þjóni",
"Enable encryption" : "Virkja dulritun",
"Select default encryption module:" : "Veldu sjálfgefna dulritunareiningu:",
diff --git a/settings/l10n/nb_NO.js b/settings/l10n/nb_NO.js
index d745ba465b8..f258d65186e 100644
--- a/settings/l10n/nb_NO.js
+++ b/settings/l10n/nb_NO.js
@@ -53,8 +53,8 @@ OC.L10N.register(
"Email saved" : "Epost lagret",
"Your full name has been changed." : "Ditt fulle navn er blitt endret.",
"Unable to change full name" : "Klarte ikke å endre fullt navn",
- "Are you really sure you want add \"{domain}\" as trusted domain?" : "Ønsker du virkelig å legge til \"{domain}\" som tiltrodd domene?",
- "Add trusted domain" : "Legg til et tiltrodd domene",
+ "Are you really sure you want add \"{domain}\" as trusted domain?" : "Ønsker du virkelig å legge til \"{domain}\" som klarert domene?",
+ "Add trusted domain" : "Legg til et klarert domene",
"Migration in progress. Please wait until the migration is finished" : "Migrering utføres. Vent til migreringen er ferdig.",
"Migration started …" : "Migrering startet ..",
"Sending..." : "Sender...",
@@ -64,7 +64,7 @@ OC.L10N.register(
"All" : "Alle",
"No apps found for your version" : "Ingen apper funnet for din versjon",
"Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Offisielle apper utvikles av og innenfor ownCloud-fellesskapet. De tilbyr funksjonalitet som er sentral for ownCloud og er forberedt for produksjonsbruk.",
- "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." : "Godkjente apper er utviklet av pålitelige utviklere og har gjennomgått en rask sikkerhetssjekk. De vedlikeholdes aktivt i et åpent kode-depot og utviklerne anser dem for å være stabile for tidvis eller normal bruk.",
+ "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." : "Godkjente apper er utviklet av tiltrodde utviklere og har gjennomgått en rask sikkerhetssjekk. De vedlikeholdes aktivt i et åpent kode-depot og utviklerne anser dem for å være stabile for tidvis eller normal bruk.",
"This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Denne appen er ikke sjekket for sikkerhetsproblemer og er ny eller ansett for å være ustabil. Installer på egen risiko.",
"Update to %s" : "Oppdater til %s",
"_You have %n app update pending_::_You have %n app updates pending_" : ["Du har %n app-oppdatering som venter","Du har %n app-oppdateringer som venter"],
diff --git a/settings/l10n/nb_NO.json b/settings/l10n/nb_NO.json
index eed64672207..f33889703e9 100644
--- a/settings/l10n/nb_NO.json
+++ b/settings/l10n/nb_NO.json
@@ -51,8 +51,8 @@
"Email saved" : "Epost lagret",
"Your full name has been changed." : "Ditt fulle navn er blitt endret.",
"Unable to change full name" : "Klarte ikke å endre fullt navn",
- "Are you really sure you want add \"{domain}\" as trusted domain?" : "Ønsker du virkelig å legge til \"{domain}\" som tiltrodd domene?",
- "Add trusted domain" : "Legg til et tiltrodd domene",
+ "Are you really sure you want add \"{domain}\" as trusted domain?" : "Ønsker du virkelig å legge til \"{domain}\" som klarert domene?",
+ "Add trusted domain" : "Legg til et klarert domene",
"Migration in progress. Please wait until the migration is finished" : "Migrering utføres. Vent til migreringen er ferdig.",
"Migration started …" : "Migrering startet ..",
"Sending..." : "Sender...",
@@ -62,7 +62,7 @@
"All" : "Alle",
"No apps found for your version" : "Ingen apper funnet for din versjon",
"Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Offisielle apper utvikles av og innenfor ownCloud-fellesskapet. De tilbyr funksjonalitet som er sentral for ownCloud og er forberedt for produksjonsbruk.",
- "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." : "Godkjente apper er utviklet av pålitelige utviklere og har gjennomgått en rask sikkerhetssjekk. De vedlikeholdes aktivt i et åpent kode-depot og utviklerne anser dem for å være stabile for tidvis eller normal bruk.",
+ "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." : "Godkjente apper er utviklet av tiltrodde utviklere og har gjennomgått en rask sikkerhetssjekk. De vedlikeholdes aktivt i et åpent kode-depot og utviklerne anser dem for å være stabile for tidvis eller normal bruk.",
"This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Denne appen er ikke sjekket for sikkerhetsproblemer og er ny eller ansett for å være ustabil. Installer på egen risiko.",
"Update to %s" : "Oppdater til %s",
"_You have %n app update pending_::_You have %n app updates pending_" : ["Du har %n app-oppdatering som venter","Du har %n app-oppdateringer som venter"],
diff --git a/settings/l10n/pt_PT.js b/settings/l10n/pt_PT.js
index 135cfeaa2fe..7a6a9788707 100644
--- a/settings/l10n/pt_PT.js
+++ b/settings/l10n/pt_PT.js
@@ -10,7 +10,7 @@ OC.L10N.register(
"Cron" : "Cron",
"Email server" : "Servidor de Correio Eletrónico",
"Log" : "Registo",
- "Tips & tricks" : "Dicas e truqes",
+ "Tips & tricks" : "Dicas e truques",
"Updates" : "Atualizações",
"Couldn't remove app." : "Não foi possível remover a aplicação.",
"Language changed" : "Idioma alterado",
@@ -73,6 +73,9 @@ OC.L10N.register(
"Disable" : "Desativar",
"Enable" : "Ativar",
"Error while enabling app" : "Ocorreu um erro enquanto ativava a app",
+ "Error: this app cannot be enabled because it makes the server unstable" : "Erro: esta app não pode ser activada porque torna o servidor instável",
+ "Error: could not disable broken app" : "Erro: não foi possível desactivar app estragada",
+ "Error while disabling broken app" : "Erro ao desactivar app estragada",
"Updating...." : "A atualizar...",
"Error while updating app" : "Ocorreu um erro enquanto atualizava a app",
"Updated" : "Atualizada",
@@ -125,7 +128,7 @@ OC.L10N.register(
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php não parece estar bem instalado para consultar variáveis de ambiente do sistema. O teste com getenv(\"PATH\") apenas devolveu uma resposta em branco.",
"Please check the <a target=\"_blank\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Por favor, verifique a <a target=\"_blank\" href=\"%s\">documentação de instalação ↗</a> para notas de configuração do php e configuração php do seu servidor, especialmente quando utiliza php-fpm.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "A configuração Só-de-Leitura foi ativada. Isto evita definir algumas configurações através da interface da Web. Além disso, o ficheiro precisa de ser definido gravável manualmente para cada atualização.",
- "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP está aparentemente configurado a remover blocos doc em linha. Isto vai fazer algumas aplicações basicas inacessíveis.",
+ "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "O PHP está aparentemente configurado para remover blocos doc em linha. Isto vai tornar inacessíveis várias aplicações básicas.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Isto é provavelmente causado por uma cache/acelerador como o Zend OPcache or eAcelerador.",
"Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "O seu servidor está a correr Microsoft Windows. Nós recomendamos Linux para uma experiência de utilizador optimizada.",
"%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s abaixo da versão %2$s está instalado. Por motivos de estabilidade e desempenho, recomendamos que atualize para a nova versão %1$s.",
diff --git a/settings/l10n/pt_PT.json b/settings/l10n/pt_PT.json
index fea2d1b375f..042f1505e93 100644
--- a/settings/l10n/pt_PT.json
+++ b/settings/l10n/pt_PT.json
@@ -8,7 +8,7 @@
"Cron" : "Cron",
"Email server" : "Servidor de Correio Eletrónico",
"Log" : "Registo",
- "Tips & tricks" : "Dicas e truqes",
+ "Tips & tricks" : "Dicas e truques",
"Updates" : "Atualizações",
"Couldn't remove app." : "Não foi possível remover a aplicação.",
"Language changed" : "Idioma alterado",
@@ -71,6 +71,9 @@
"Disable" : "Desativar",
"Enable" : "Ativar",
"Error while enabling app" : "Ocorreu um erro enquanto ativava a app",
+ "Error: this app cannot be enabled because it makes the server unstable" : "Erro: esta app não pode ser activada porque torna o servidor instável",
+ "Error: could not disable broken app" : "Erro: não foi possível desactivar app estragada",
+ "Error while disabling broken app" : "Erro ao desactivar app estragada",
"Updating...." : "A atualizar...",
"Error while updating app" : "Ocorreu um erro enquanto atualizava a app",
"Updated" : "Atualizada",
@@ -123,7 +126,7 @@
"php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php não parece estar bem instalado para consultar variáveis de ambiente do sistema. O teste com getenv(\"PATH\") apenas devolveu uma resposta em branco.",
"Please check the <a target=\"_blank\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Por favor, verifique a <a target=\"_blank\" href=\"%s\">documentação de instalação ↗</a> para notas de configuração do php e configuração php do seu servidor, especialmente quando utiliza php-fpm.",
"The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "A configuração Só-de-Leitura foi ativada. Isto evita definir algumas configurações através da interface da Web. Além disso, o ficheiro precisa de ser definido gravável manualmente para cada atualização.",
- "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP está aparentemente configurado a remover blocos doc em linha. Isto vai fazer algumas aplicações basicas inacessíveis.",
+ "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "O PHP está aparentemente configurado para remover blocos doc em linha. Isto vai tornar inacessíveis várias aplicações básicas.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Isto é provavelmente causado por uma cache/acelerador como o Zend OPcache or eAcelerador.",
"Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "O seu servidor está a correr Microsoft Windows. Nós recomendamos Linux para uma experiência de utilizador optimizada.",
"%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s abaixo da versão %2$s está instalado. Por motivos de estabilidade e desempenho, recomendamos que atualize para a nova versão %1$s.",
diff --git a/settings/l10n/sl.js b/settings/l10n/sl.js
index 976e77145c4..b59c8d21b9c 100644
--- a/settings/l10n/sl.js
+++ b/settings/l10n/sl.js
@@ -27,7 +27,8 @@ OC.L10N.register(
"Unable to change password" : "Ni mogoče spremeniti gesla",
"Enabled" : "Omogočeno",
"Not enabled" : "Ni omogočeno",
- "Federated Cloud Sharing" : "Souporaba s prenosom dovoljenj",
+ "installing and updating apps via the app store or Federated Cloud Sharing" : "nameščanje in posodabljanje programov prek programske zbirke ali zveznega oblaka",
+ "Federated Cloud Sharing" : "Souporaba zveznega oblaka",
"A problem occurred, please check your log files (Error: %s)" : "Prišlo je do napake. Preverite dnevniške zapise (napaka: %s).",
"Migration Completed" : "Selitev je končana",
"Group already exists." : "Skupina že obstaja.",
@@ -59,7 +60,7 @@ OC.L10N.register(
"Approved" : "Odobreno",
"Experimental" : "Preizkusno",
"All" : "Vsi",
- "No apps found for your version" : "Ni aplikacij za vašo verzijo",
+ "No apps found for your version" : "Za to različico ni na voljo noben vstavek",
"Update to %s" : "Posodobi na %s",
"_You have %n app update pending_::_You have %n app updates pending_" : ["Na čakanju je %n posodobitev","Na čakanju sta %n posodobitvi","Na čakanju so %n posodobitve","Na čakanju je %n posodobitev"],
"Please wait...." : "Počakajte ...",
@@ -67,15 +68,17 @@ OC.L10N.register(
"Disable" : "Onemogoči",
"Enable" : "Omogoči",
"Error while enabling app" : "Napaka omogočanja programa",
+ "Error: could not disable broken app" : "Napaka: ni mogoče onemogočiti okvarjenega programa",
+ "Error while disabling broken app" : "Napaka onemogočanja okvarjenega programa",
"Updating...." : "Poteka posodabljanje ...",
"Error while updating app" : "Prišlo je do napake med posodabljanjem programa.",
"Updated" : "Posodobljeno",
"Uninstalling ...." : "Odstranjevanje namestitve ...",
"Error while uninstalling app" : "Prišlo je do napake med odstranjevanjem programa.",
"Uninstall" : "Odstrani namestitev",
- "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikacija je bila vključena in zahteva še posodobitev. Preusmerjeni boste na stran za posodobitev v 5 sekundah.",
- "App update" : "Posodabljanje aplikacije",
- "No apps found for \"{query}\"" : "Ne najdem aplikacije za \"{query}\"",
+ "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}\"" : "Za \"{query}\" ni na voljo nobenega vstavka.",
"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",
@@ -116,7 +119,7 @@ OC.L10N.register(
"NT LAN Manager" : "Upravljalnik NT LAN",
"SSL" : "SSL",
"TLS" : "TLS",
- "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Vaš strežnik je nameščen na Microsoft Windows. Toplo priporočamo Linux okolje za optimalno uporabniško izkušnjo.",
+ "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Strežnik ownCloud je nameščen v okolju Microsoft Windows. Toplo priporočamo okolje Linux za najboljšo uporabniško izkušnjo.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Manjka modul PHP 'fileinfo'. Priporočljivo je omogočiti ta modul za popolno zaznavanje vrst MIME.",
"System locale can not be set to a one which supports UTF-8." : "Sistemskih jezikovnih nastavitev ni mogoče nastaviti na možnost, ki podpira nabor UTF-8.",
"This means that there might be problems with certain characters in file names." : "To pomeni, da se lahko pojavijo napake pri nekaterih znakih v imenih datotek.",
@@ -133,7 +136,7 @@ OC.L10N.register(
"Enforce expiration date" : "Vsili datum preteka",
"Allow resharing" : "Dovoli nadaljnjo souporabo",
"Restrict users to only share with users in their groups" : "Uporabnikom dovoli omogočanje souporabe le znotraj njihove skupine",
- "Allow users to send mail notification for shared files to other users" : "Omogočite uporabnikom, da pošiljajo poštna obvestila za deljene datoteke drugim uporabnikom.",
+ "Allow users to send mail notification for shared files to other users" : "Dovoli uporabnikom pošiljanje obvestil o souporabi datotek z drugimi uporabniki.",
"Exclude groups from sharing" : "Izloči skupine iz souporabe",
"These groups will still be able to receive shares, but not to initiate them." : "Te skupine lahko sprejemajo mape v souporabo, ne morejo pa souporabe dovoliti",
"Cron was not executed yet!" : "Periodično opravilo cron še ni zagnano!",
@@ -141,6 +144,7 @@ OC.L10N.register(
"cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "Datoteka cron.php je vpisana za periodično opravilo webcron za potrditev sklica vsakih 15 minut pri povezavi preko HTTP.",
"Use system's cron service to call the cron.php file every 15 minutes." : "Uporabi storitev periodičnih opravil za klic datoteke cron.php vsakih 15 minut.",
"Enable server-side encryption" : "Omogoči šifriranje na strežniku",
+ "Please read carefully before activating server-side encryption: " : "Pozorno preberite opombe, preden omogočite strežniško šifriranje:",
"Enable encryption" : "Omogoči šifriranje",
"Select default encryption module:" : "Izbor privzetega modula za šifriranje:",
"Start migration" : "Začni selitev",
@@ -162,18 +166,19 @@ OC.L10N.register(
"Download logfile" : "Prejmi dnevniško datoteko",
"More" : "Več",
"Less" : "Manj",
- "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Datoteeka dnevniškega zapisa je večja od 100MB. Prenos lahko traja dlje!",
+ "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Dnevniškega datoteka je večja od 100 MB. Hitrost prejema je odvisna od širokopasovne povezave!",
"What to log" : "Kaj naj se beleži?",
- "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "Uporabljena baza je SQLite. Za večje namestitve priporočamo prehod na drugačno bazo.",
+ "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "Uporabljena zbirka je SQLite. Za obsežnejše sisteme je priporočljiv prehod na drugo vrsto zbirke.",
"How to do backups" : "Kako ustvariti varnostne kopije",
"Advanced monitoring" : "Napredno sledenje",
- "Performance tuning" : "Optimizacija izvajanja",
+ "Performance tuning" : "Prilagajanje delovanja",
"Improving the config.php" : "Izboljšave v config.php",
"Theming" : "Teme",
"Hardening and security guidance" : "Varnost in varnostni napotki",
"Version" : "Različica",
"Developer documentation" : "Dokumentacija za razvijalce",
"Experimental applications ahead" : "Preizkusni programi",
+ "%s-licensed" : "dovoljenje-%s",
"Documentation:" : "Dokumentacija:",
"User documentation" : "Uporabniška dokumentacija",
"Admin documentation" : "Skrbniška dokumentacija",
@@ -189,14 +194,14 @@ OC.L10N.register(
"Valid until" : "Veljavno do",
"Issued By" : "Izdajatelj",
"Valid until %s" : "Veljavno do %s",
- "Import root certificate" : "Uvozite korenski certifikat",
- "Hey there,<br><br>just letting you know that you now have an %s account.<br><br>Your username: %s<br>Access it: <a href=\"%s\">%s</a><br><br>" : "Pozdravljeni,<br><br>samo sporočamo, da imate %s račun.<br><br>Vaše uporabniško ime: %s<br>Dostop: <a href=\"%s\">%s</a><br><br>",
+ "Import root certificate" : "Uvozi korensko potrdilo",
+ "Hey there,<br><br>just letting you know that you now have an %s account.<br><br>Your username: %s<br>Access it: <a href=\"%s\">%s</a><br><br>" : "Pozdravljeni,<br><br>obveščamo vas, da je račun %s pripravljen.<br><br>Uporabniško ime: %s<br>Dostop: <a href=\"%s\">%s</a><br><br>",
"Cheers!" : "Na zdravje!",
- "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Pozdravljeni,\n\nsamo sporočamo, da imate %s račun.\n\nVaše uporabniško ime: %s\nDostop: %s\n",
+ "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Pozdravljeni,\n\nobveščamo vas, da je račun %s pripravljen.\n\nUporabniško ime: %s\nDostop: %s\n",
"Administrator documentation" : "Skrbniška dokumentacija",
"Online documentation" : "Spletna dokumentacija",
"Forum" : "Forum",
- "Issue tracker" : "Spremljanje težav",
+ "Issue tracker" : "Sledilnih zahtevkov",
"Commercial support" : "Podpora strankam",
"You are using <strong>%s</strong> of <strong>%s</strong>" : "Uporabljate <strong>%s</strong> od <strong>%s</strong>",
"Profile picture" : "Slika profila",
@@ -207,12 +212,12 @@ OC.L10N.register(
"Cancel" : "Prekliči",
"Choose as profile picture" : "Izberi kot sliko profila",
"Full name" : "Polno ime",
- "No display name set" : "Ime za prikaz ni bilo nastavljeno",
+ "No display name set" : "Prikazno ime ni nastavljeno",
"Email" : "Elektronski naslov",
"Your email address" : "Osebni elektronski naslov",
"For password recovery and notifications" : "Za obnovo gesla in obveščanje",
- "No email address set" : "Poštni naslov ni bil vpisan",
- "You are member of the following groups:" : "Vi ste član sledečih skupin:",
+ "No email address set" : "Poštni naslov ni nastavljen",
+ "You are member of the following groups:" : "Ste član naslednjih skupin:",
"Password" : "Geslo",
"Unable to change your password" : "Gesla ni mogoče spremeniti.",
"Current password" : "Trenutno geslo",
@@ -224,9 +229,9 @@ OC.L10N.register(
"Desktop client" : "Namizni odjemalec",
"Android app" : "Program za Android",
"iOS app" : "Program za iOS",
- "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Če bi radi podprli projekt\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">pristopite razvoju</a>\n\t\tali\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">razširite glas</a>!",
+ "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Če želite podpreti projekt\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">se pridružite razvijalcem</a>\n\t\tali pa le\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">razširite dober glas</a>!",
"Show First Run Wizard again" : "Zaženi čarovnika prvega zagona",
- "Developed by the {communityopen}ownCloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "Produkt razvija {communityopen}ownCloud skupnost{linkclose}, {githubopen}izvorna koda{linkclose} je licencirana pod {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}.",
+ "Developed by the {communityopen}ownCloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "Programski paket razvija {communityopen}skupnost ownCloud{linkclose}, {githubopen}izvorna koda{linkclose} pa je objavljena z dovoljenjem {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}.",
"Show storage location" : "Pokaži mesto shrambe",
"Show last log in" : "Pokaži podatke zadnje prijave",
"Show user backend" : "Pokaži ozadnji program",
diff --git a/settings/l10n/sl.json b/settings/l10n/sl.json
index e212815124d..9531946bbe0 100644
--- a/settings/l10n/sl.json
+++ b/settings/l10n/sl.json
@@ -25,7 +25,8 @@
"Unable to change password" : "Ni mogoče spremeniti gesla",
"Enabled" : "Omogočeno",
"Not enabled" : "Ni omogočeno",
- "Federated Cloud Sharing" : "Souporaba s prenosom dovoljenj",
+ "installing and updating apps via the app store or Federated Cloud Sharing" : "nameščanje in posodabljanje programov prek programske zbirke ali zveznega oblaka",
+ "Federated Cloud Sharing" : "Souporaba zveznega oblaka",
"A problem occurred, please check your log files (Error: %s)" : "Prišlo je do napake. Preverite dnevniške zapise (napaka: %s).",
"Migration Completed" : "Selitev je končana",
"Group already exists." : "Skupina že obstaja.",
@@ -57,7 +58,7 @@
"Approved" : "Odobreno",
"Experimental" : "Preizkusno",
"All" : "Vsi",
- "No apps found for your version" : "Ni aplikacij za vašo verzijo",
+ "No apps found for your version" : "Za to različico ni na voljo noben vstavek",
"Update to %s" : "Posodobi na %s",
"_You have %n app update pending_::_You have %n app updates pending_" : ["Na čakanju je %n posodobitev","Na čakanju sta %n posodobitvi","Na čakanju so %n posodobitve","Na čakanju je %n posodobitev"],
"Please wait...." : "Počakajte ...",
@@ -65,15 +66,17 @@
"Disable" : "Onemogoči",
"Enable" : "Omogoči",
"Error while enabling app" : "Napaka omogočanja programa",
+ "Error: could not disable broken app" : "Napaka: ni mogoče onemogočiti okvarjenega programa",
+ "Error while disabling broken app" : "Napaka onemogočanja okvarjenega programa",
"Updating...." : "Poteka posodabljanje ...",
"Error while updating app" : "Prišlo je do napake med posodabljanjem programa.",
"Updated" : "Posodobljeno",
"Uninstalling ...." : "Odstranjevanje namestitve ...",
"Error while uninstalling app" : "Prišlo je do napake med odstranjevanjem programa.",
"Uninstall" : "Odstrani namestitev",
- "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikacija je bila vključena in zahteva še posodobitev. Preusmerjeni boste na stran za posodobitev v 5 sekundah.",
- "App update" : "Posodabljanje aplikacije",
- "No apps found for \"{query}\"" : "Ne najdem aplikacije za \"{query}\"",
+ "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}\"" : "Za \"{query}\" ni na voljo nobenega vstavka.",
"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",
@@ -114,7 +117,7 @@
"NT LAN Manager" : "Upravljalnik NT LAN",
"SSL" : "SSL",
"TLS" : "TLS",
- "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Vaš strežnik je nameščen na Microsoft Windows. Toplo priporočamo Linux okolje za optimalno uporabniško izkušnjo.",
+ "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Strežnik ownCloud je nameščen v okolju Microsoft Windows. Toplo priporočamo okolje Linux za najboljšo uporabniško izkušnjo.",
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Manjka modul PHP 'fileinfo'. Priporočljivo je omogočiti ta modul za popolno zaznavanje vrst MIME.",
"System locale can not be set to a one which supports UTF-8." : "Sistemskih jezikovnih nastavitev ni mogoče nastaviti na možnost, ki podpira nabor UTF-8.",
"This means that there might be problems with certain characters in file names." : "To pomeni, da se lahko pojavijo napake pri nekaterih znakih v imenih datotek.",
@@ -131,7 +134,7 @@
"Enforce expiration date" : "Vsili datum preteka",
"Allow resharing" : "Dovoli nadaljnjo souporabo",
"Restrict users to only share with users in their groups" : "Uporabnikom dovoli omogočanje souporabe le znotraj njihove skupine",
- "Allow users to send mail notification for shared files to other users" : "Omogočite uporabnikom, da pošiljajo poštna obvestila za deljene datoteke drugim uporabnikom.",
+ "Allow users to send mail notification for shared files to other users" : "Dovoli uporabnikom pošiljanje obvestil o souporabi datotek z drugimi uporabniki.",
"Exclude groups from sharing" : "Izloči skupine iz souporabe",
"These groups will still be able to receive shares, but not to initiate them." : "Te skupine lahko sprejemajo mape v souporabo, ne morejo pa souporabe dovoliti",
"Cron was not executed yet!" : "Periodično opravilo cron še ni zagnano!",
@@ -139,6 +142,7 @@
"cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "Datoteka cron.php je vpisana za periodično opravilo webcron za potrditev sklica vsakih 15 minut pri povezavi preko HTTP.",
"Use system's cron service to call the cron.php file every 15 minutes." : "Uporabi storitev periodičnih opravil za klic datoteke cron.php vsakih 15 minut.",
"Enable server-side encryption" : "Omogoči šifriranje na strežniku",
+ "Please read carefully before activating server-side encryption: " : "Pozorno preberite opombe, preden omogočite strežniško šifriranje:",
"Enable encryption" : "Omogoči šifriranje",
"Select default encryption module:" : "Izbor privzetega modula za šifriranje:",
"Start migration" : "Začni selitev",
@@ -160,18 +164,19 @@
"Download logfile" : "Prejmi dnevniško datoteko",
"More" : "Več",
"Less" : "Manj",
- "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Datoteeka dnevniškega zapisa je večja od 100MB. Prenos lahko traja dlje!",
+ "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Dnevniškega datoteka je večja od 100 MB. Hitrost prejema je odvisna od širokopasovne povezave!",
"What to log" : "Kaj naj se beleži?",
- "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "Uporabljena baza je SQLite. Za večje namestitve priporočamo prehod na drugačno bazo.",
+ "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "Uporabljena zbirka je SQLite. Za obsežnejše sisteme je priporočljiv prehod na drugo vrsto zbirke.",
"How to do backups" : "Kako ustvariti varnostne kopije",
"Advanced monitoring" : "Napredno sledenje",
- "Performance tuning" : "Optimizacija izvajanja",
+ "Performance tuning" : "Prilagajanje delovanja",
"Improving the config.php" : "Izboljšave v config.php",
"Theming" : "Teme",
"Hardening and security guidance" : "Varnost in varnostni napotki",
"Version" : "Različica",
"Developer documentation" : "Dokumentacija za razvijalce",
"Experimental applications ahead" : "Preizkusni programi",
+ "%s-licensed" : "dovoljenje-%s",
"Documentation:" : "Dokumentacija:",
"User documentation" : "Uporabniška dokumentacija",
"Admin documentation" : "Skrbniška dokumentacija",
@@ -187,14 +192,14 @@
"Valid until" : "Veljavno do",
"Issued By" : "Izdajatelj",
"Valid until %s" : "Veljavno do %s",
- "Import root certificate" : "Uvozite korenski certifikat",
- "Hey there,<br><br>just letting you know that you now have an %s account.<br><br>Your username: %s<br>Access it: <a href=\"%s\">%s</a><br><br>" : "Pozdravljeni,<br><br>samo sporočamo, da imate %s račun.<br><br>Vaše uporabniško ime: %s<br>Dostop: <a href=\"%s\">%s</a><br><br>",
+ "Import root certificate" : "Uvozi korensko potrdilo",
+ "Hey there,<br><br>just letting you know that you now have an %s account.<br><br>Your username: %s<br>Access it: <a href=\"%s\">%s</a><br><br>" : "Pozdravljeni,<br><br>obveščamo vas, da je račun %s pripravljen.<br><br>Uporabniško ime: %s<br>Dostop: <a href=\"%s\">%s</a><br><br>",
"Cheers!" : "Na zdravje!",
- "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Pozdravljeni,\n\nsamo sporočamo, da imate %s račun.\n\nVaše uporabniško ime: %s\nDostop: %s\n",
+ "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Pozdravljeni,\n\nobveščamo vas, da je račun %s pripravljen.\n\nUporabniško ime: %s\nDostop: %s\n",
"Administrator documentation" : "Skrbniška dokumentacija",
"Online documentation" : "Spletna dokumentacija",
"Forum" : "Forum",
- "Issue tracker" : "Spremljanje težav",
+ "Issue tracker" : "Sledilnih zahtevkov",
"Commercial support" : "Podpora strankam",
"You are using <strong>%s</strong> of <strong>%s</strong>" : "Uporabljate <strong>%s</strong> od <strong>%s</strong>",
"Profile picture" : "Slika profila",
@@ -205,12 +210,12 @@
"Cancel" : "Prekliči",
"Choose as profile picture" : "Izberi kot sliko profila",
"Full name" : "Polno ime",
- "No display name set" : "Ime za prikaz ni bilo nastavljeno",
+ "No display name set" : "Prikazno ime ni nastavljeno",
"Email" : "Elektronski naslov",
"Your email address" : "Osebni elektronski naslov",
"For password recovery and notifications" : "Za obnovo gesla in obveščanje",
- "No email address set" : "Poštni naslov ni bil vpisan",
- "You are member of the following groups:" : "Vi ste član sledečih skupin:",
+ "No email address set" : "Poštni naslov ni nastavljen",
+ "You are member of the following groups:" : "Ste član naslednjih skupin:",
"Password" : "Geslo",
"Unable to change your password" : "Gesla ni mogoče spremeniti.",
"Current password" : "Trenutno geslo",
@@ -222,9 +227,9 @@
"Desktop client" : "Namizni odjemalec",
"Android app" : "Program za Android",
"iOS app" : "Program za iOS",
- "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Če bi radi podprli projekt\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">pristopite razvoju</a>\n\t\tali\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">razširite glas</a>!",
+ "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Če želite podpreti projekt\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">se pridružite razvijalcem</a>\n\t\tali pa le\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">razširite dober glas</a>!",
"Show First Run Wizard again" : "Zaženi čarovnika prvega zagona",
- "Developed by the {communityopen}ownCloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "Produkt razvija {communityopen}ownCloud skupnost{linkclose}, {githubopen}izvorna koda{linkclose} je licencirana pod {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}.",
+ "Developed by the {communityopen}ownCloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "Programski paket razvija {communityopen}skupnost ownCloud{linkclose}, {githubopen}izvorna koda{linkclose} pa je objavljena z dovoljenjem {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}.",
"Show storage location" : "Pokaži mesto shrambe",
"Show last log in" : "Pokaži podatke zadnje prijave",
"Show user backend" : "Pokaži ozadnji program",
diff --git a/settings/l10n/zh_CN.js b/settings/l10n/zh_CN.js
index d9e33e1d2fc..5265d3c31ac 100644
--- a/settings/l10n/zh_CN.js
+++ b/settings/l10n/zh_CN.js
@@ -19,7 +19,7 @@ OC.L10N.register(
"Admins can't remove themself from the admin group" : "管理员不能将自己移出管理组。",
"Unable to add user to group %s" : "无法把用户增加到组 %s",
"Unable to remove user from group %s" : "无法从组%s中移除用户",
- "Couldn't update app." : "无法更新 app。",
+ "Couldn't update app." : "无法更新应用。",
"Wrong password" : "错误密码",
"No user supplied" : "没有满足的用户",
"Please provide an admin recovery password, otherwise all user data will be lost" : "请提供管理员恢复密码,否则所有用户的数据都将遗失。",
@@ -67,13 +67,17 @@ OC.L10N.register(
"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." : "已认可的应用是由值得信赖的开发商开发,并已通过了一个粗略的安全检查。他们放在一个开放的代码库并且维护人员认为他们是稳定的差不多可以正常使用。",
"This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "此应用未检查安全问题,它是新的或已知是不稳定的。安装风险自担。",
"Update to %s" : "更新为 %s",
+ "_You have %n app update pending_::_You have %n app updates pending_" : ["%n 个应用正在等待升级"],
"Please wait...." : "请稍等....",
- "Error while disabling app" : "禁用 app 时出错",
+ "Error while disabling app" : "禁用应用时出错",
"Disable" : "禁用",
"Enable" : "开启",
- "Error while enabling app" : "启用 app 时出错",
+ "Error while enabling app" : "启用应用时出错",
+ "Error: this app cannot be enabled because it makes the server unstable" : "错误: 无法启用应用因为它会导致服务器不稳定",
+ "Error: could not disable broken app" : "错误: 无法禁用损坏的应用",
+ "Error while disabling broken app" : "禁用损坏的应用时出错",
"Updating...." : "正在更新....",
- "Error while updating app" : "更新 app 时出错",
+ "Error while updating app" : "更新应用时出错",
"Updated" : "已更新",
"Uninstalling ...." : "卸载中....",
"Error while uninstalling app" : "卸载应用时发生了一个错误",
@@ -93,6 +97,7 @@ OC.L10N.register(
"Strong password" : "强密码",
"Groups" : "组",
"Unable to delete {objName}" : "无法删除 {objName}",
+ "Error creating group: {message}" : "创建组时出错: {message}",
"A valid group name must be provided" : "请提供一个有效的组名称",
"deleted {groupName}" : "已删除 {groupName}",
"undo" : "撤销",
@@ -102,6 +107,7 @@ OC.L10N.register(
"add group" : "增加组",
"Changing the password will result in data loss, because data recovery is not available for this user" : "更改密码会导致数据丢失,因为数据恢复不适用于此用户",
"A valid username must be provided" : "必须提供合法的用户名",
+ "Error creating user: {message}" : "创建用户出错: {message}",
"A valid password must be provided" : "必须提供合法的密码",
"A valid email must be provided" : "必须提供合法的用户名",
"__language_name__" : "简体中文",
@@ -202,11 +208,13 @@ OC.L10N.register(
"Developer documentation" : "开发者文档",
"Experimental applications ahead" : "未来的实验应用",
"Experimental apps are not checked for security issues, new or known to be unstable and under heavy development. Installing them can cause data loss or security breaches." : "实验应用程序没有在安全性的问题上作过多检查,新的或已知的不稳定 BUG 都在开发中。安装它们可能会导致数据丢失或安全漏洞。",
+ "%s-licensed" : "%s-许可协议",
"Documentation:" : "文档:",
"User documentation" : "用户文档",
"Admin documentation" : "管理员文档",
"Show description …" : "显示描述...",
"Hide description …" : "隐藏描述...",
+ "This app has an update available." : "此应用有可用的更新。",
"This app has no minimum ownCloud version assigned. This will be an error in ownCloud 11 and later." : "这个程序没有指定最低的ownCloud版本。这是在ownCloud11之后版本的错误。",
"This app has no maximum ownCloud version assigned. This will be an error in ownCloud 11 and later." : "这个程序没有指定最高的ownCloud版本。这是在ownCloud11之后版本的错误。",
"This app cannot be installed because the following dependencies are not fulfilled:" : "此应用程序无法安装,因为以下依赖性不满足:",
diff --git a/settings/l10n/zh_CN.json b/settings/l10n/zh_CN.json
index fa818569fe7..c3614b9050b 100644
--- a/settings/l10n/zh_CN.json
+++ b/settings/l10n/zh_CN.json
@@ -17,7 +17,7 @@
"Admins can't remove themself from the admin group" : "管理员不能将自己移出管理组。",
"Unable to add user to group %s" : "无法把用户增加到组 %s",
"Unable to remove user from group %s" : "无法从组%s中移除用户",
- "Couldn't update app." : "无法更新 app。",
+ "Couldn't update app." : "无法更新应用。",
"Wrong password" : "错误密码",
"No user supplied" : "没有满足的用户",
"Please provide an admin recovery password, otherwise all user data will be lost" : "请提供管理员恢复密码,否则所有用户的数据都将遗失。",
@@ -65,13 +65,17 @@
"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." : "已认可的应用是由值得信赖的开发商开发,并已通过了一个粗略的安全检查。他们放在一个开放的代码库并且维护人员认为他们是稳定的差不多可以正常使用。",
"This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "此应用未检查安全问题,它是新的或已知是不稳定的。安装风险自担。",
"Update to %s" : "更新为 %s",
+ "_You have %n app update pending_::_You have %n app updates pending_" : ["%n 个应用正在等待升级"],
"Please wait...." : "请稍等....",
- "Error while disabling app" : "禁用 app 时出错",
+ "Error while disabling app" : "禁用应用时出错",
"Disable" : "禁用",
"Enable" : "开启",
- "Error while enabling app" : "启用 app 时出错",
+ "Error while enabling app" : "启用应用时出错",
+ "Error: this app cannot be enabled because it makes the server unstable" : "错误: 无法启用应用因为它会导致服务器不稳定",
+ "Error: could not disable broken app" : "错误: 无法禁用损坏的应用",
+ "Error while disabling broken app" : "禁用损坏的应用时出错",
"Updating...." : "正在更新....",
- "Error while updating app" : "更新 app 时出错",
+ "Error while updating app" : "更新应用时出错",
"Updated" : "已更新",
"Uninstalling ...." : "卸载中....",
"Error while uninstalling app" : "卸载应用时发生了一个错误",
@@ -91,6 +95,7 @@
"Strong password" : "强密码",
"Groups" : "组",
"Unable to delete {objName}" : "无法删除 {objName}",
+ "Error creating group: {message}" : "创建组时出错: {message}",
"A valid group name must be provided" : "请提供一个有效的组名称",
"deleted {groupName}" : "已删除 {groupName}",
"undo" : "撤销",
@@ -100,6 +105,7 @@
"add group" : "增加组",
"Changing the password will result in data loss, because data recovery is not available for this user" : "更改密码会导致数据丢失,因为数据恢复不适用于此用户",
"A valid username must be provided" : "必须提供合法的用户名",
+ "Error creating user: {message}" : "创建用户出错: {message}",
"A valid password must be provided" : "必须提供合法的密码",
"A valid email must be provided" : "必须提供合法的用户名",
"__language_name__" : "简体中文",
@@ -200,11 +206,13 @@
"Developer documentation" : "开发者文档",
"Experimental applications ahead" : "未来的实验应用",
"Experimental apps are not checked for security issues, new or known to be unstable and under heavy development. Installing them can cause data loss or security breaches." : "实验应用程序没有在安全性的问题上作过多检查,新的或已知的不稳定 BUG 都在开发中。安装它们可能会导致数据丢失或安全漏洞。",
+ "%s-licensed" : "%s-许可协议",
"Documentation:" : "文档:",
"User documentation" : "用户文档",
"Admin documentation" : "管理员文档",
"Show description …" : "显示描述...",
"Hide description …" : "隐藏描述...",
+ "This app has an update available." : "此应用有可用的更新。",
"This app has no minimum ownCloud version assigned. This will be an error in ownCloud 11 and later." : "这个程序没有指定最低的ownCloud版本。这是在ownCloud11之后版本的错误。",
"This app has no maximum ownCloud version assigned. This will be an error in ownCloud 11 and later." : "这个程序没有指定最高的ownCloud版本。这是在ownCloud11之后版本的错误。",
"This app cannot be installed because the following dependencies are not fulfilled:" : "此应用程序无法安装,因为以下依赖性不满足:",
diff --git a/tests/data/integritycheck/htaccessWithValidModifiedContent/.htaccess b/tests/data/integritycheck/htaccessWithValidModifiedContent/.htaccess
index 33d4437c928..596d6718a88 100644
--- a/tests/data/integritycheck/htaccessWithValidModifiedContent/.htaccess
+++ b/tests/data/integritycheck/htaccessWithValidModifiedContent/.htaccess
@@ -1,4 +1,28 @@
# Start of valid file
+<IfModule mod_php5.c>
+ php_value upload_max_filesize 519M
+ php_value post_max_size 519M
+ php_value memory_limit 512M
+ php_value mbstring.func_overload 0
+ php_value always_populate_raw_post_data -1
+ php_value default_charset 'UTF-8'
+ php_value output_buffering 0
+ <IfModule mod_env.c>
+ SetEnv htaccessWorking true
+ </IfModule>
+</IfModule>
+<IfModule mod_php7.c>
+ php_value upload_max_filesize 519M
+ php_value post_max_size 519M
+ php_value memory_limit 512M
+ php_value mbstring.func_overload 0
+ php_value always_populate_raw_post_data -1
+ php_value default_charset 'UTF-8'
+ php_value output_buffering 0
+ <IfModule mod_env.c>
+ SetEnv htaccessWorking true
+ </IfModule>
+</IfModule>
#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####
# Content that should change the hash in the root folder \ No newline at end of file
diff --git a/tests/data/integritycheck/htaccessWithValidModifiedContent/.user.ini b/tests/data/integritycheck/htaccessWithValidModifiedContent/.user.ini
new file mode 100644
index 00000000000..90959b1e649
--- /dev/null
+++ b/tests/data/integritycheck/htaccessWithValidModifiedContent/.user.ini
@@ -0,0 +1,7 @@
+upload_max_filesize=519M
+post_max_size=519M
+memory_limit=512M
+mbstring.func_overload=0
+always_populate_raw_post_data=-1
+default_charset='UTF-8'
+output_buffering=0
diff --git a/tests/lib/db/connection.php b/tests/lib/db/connection.php
index b10b1a322a9..62d0a77ca1f 100644
--- a/tests/lib/db/connection.php
+++ b/tests/lib/db/connection.php
@@ -47,6 +47,11 @@ class Connection extends \Test\TestCase {
$this->connection = \OC::$server->getDatabaseConnection();
}
+ public function tearDown() {
+ parent::tearDown();
+ $this->connection->dropTable('table');
+ }
+
/**
* @param string $table
*/
@@ -86,6 +91,7 @@ class Connection extends \Test\TestCase {
* @depends testTableExists
*/
public function testDropTable() {
+ $this->makeTestTable();
$this->assertTableExist('table');
$this->connection->dropTable('table');
$this->assertTableNotExist('table');
@@ -111,8 +117,6 @@ class Connection extends \Test\TestCase {
]);
$this->assertEquals('foo', $this->getTextValueByIntergerField(1));
-
- $this->connection->dropTable('table');
}
public function testSetValuesOverWrite() {
@@ -131,8 +135,6 @@ class Connection extends \Test\TestCase {
]);
$this->assertEquals('bar', $this->getTextValueByIntergerField(1));
-
- $this->connection->dropTable('table');
}
public function testSetValuesOverWritePrecondition() {
@@ -154,8 +156,6 @@ class Connection extends \Test\TestCase {
]);
$this->assertEquals('bar', $this->getTextValueByIntergerField(1));
-
- $this->connection->dropTable('table');
}
/**
@@ -179,4 +179,22 @@ class Connection extends \Test\TestCase {
'booleanfield' => false
]);
}
+
+ public function testSetValuesSameNoError() {
+ $this->makeTestTable();
+ $this->connection->setValues('table', [
+ 'integerfield' => 1
+ ], [
+ 'textfield' => 'foo',
+ 'clobfield' => 'not_null'
+ ]);
+
+ // this will result in 'no affected rows' on certain optimizing DBs
+ // ensure the PreConditionNotMetException isn't thrown
+ $this->connection->setValues('table', [
+ 'integerfield' => 1
+ ], [
+ 'textfield' => 'foo'
+ ]);
+ }
}
diff --git a/tests/lib/files/storage/wrapper/encryption.php b/tests/lib/files/storage/wrapper/encryption.php
index b5ec15b12bf..bde920e440e 100644
--- a/tests/lib/files/storage/wrapper/encryption.php
+++ b/tests/lib/files/storage/wrapper/encryption.php
@@ -672,6 +672,48 @@ class Encryption extends Storage {
];
}
+ public function testCopyBetweenStorageMinimumEncryptedVersion() {
+ $storage2 = $this->getMockBuilder('OCP\Files\Storage')
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $sourceInternalPath = $targetInternalPath = 'file.txt';
+ $preserveMtime = $isRename = false;
+
+ $storage2->expects($this->any())
+ ->method('fopen')
+ ->willReturnCallback(function($path, $mode) {
+ $temp = \OC::$server->getTempManager();
+ return fopen($temp->getTemporaryFile(), $mode);
+ });
+ $cache = $this->getMock('\OCP\Files\Cache\ICache');
+ $cache->expects($this->once())
+ ->method('get')
+ ->with($sourceInternalPath)
+ ->willReturn(['encryptedVersion' => 0]);
+ $storage2->expects($this->once())
+ ->method('getCache')
+ ->willReturn($cache);
+ $this->encryptionManager->expects($this->any())
+ ->method('isEnabled')
+ ->willReturn(true);
+ global $mockedMountPointEncryptionEnabled;
+ $mockedMountPointEncryptionEnabled = true;
+
+ $expectedCachePut = [
+ 'encrypted' => true,
+ ];
+ $expectedCachePut['encryptedVersion'] = 1;
+
+ $this->cache->expects($this->once())
+ ->method('put')
+ ->with($sourceInternalPath, $expectedCachePut);
+
+ $this->invokePrivate($this->instance, 'copyBetweenStorage', [$storage2, $sourceInternalPath, $targetInternalPath, $preserveMtime, $isRename]);
+
+ $this->assertFalse(false);
+ }
+
/**
* @dataProvider dataCopyBetweenStorage
*
diff --git a/tests/lib/integritycheck/checkertest.php b/tests/lib/integritycheck/checkertest.php
index fac60b0c123..0910c543a7a 100644
--- a/tests/lib/integritycheck/checkertest.php
+++ b/tests/lib/integritycheck/checkertest.php
@@ -71,7 +71,8 @@ class CheckerTest extends TestCase {
$this->appLocator,
$this->config,
$this->cacheFactory,
- $this->appManager
+ $this->appManager,
+ \OC::$server->getTempManager()
);
}
@@ -523,13 +524,14 @@ class CheckerTest extends TestCase {
$this->checker->writeCoreSignature($x509, $rsa, \OC::$SERVERROOT . '/tests/data/integritycheck/htaccessWithInvalidModifiedContent/');
}
- public function testWriteCoreSignatureWithValidModifiedHtaccess() {
+ public function testWriteCoreSignatureWithValidModifiedHtaccessAndUserIni() {
$expectedSignatureFileData = '{
"hashes": {
- ".htaccess": "a232e6a616c40635d0220e47ebaade40348aadf141a67a331b8870b8fae056584e52fe8b56c49468ee17b58f92cbcd269dc30ae598d6206e97f7d8bb00a766c6",
+ ".htaccess": "ef34c5f35fffb6e8e3008c2118617b53243cfc5ac2513edba9ebd383169862bc16e4f889316ad65788d6b172fe14713af90908c19838c4ba13b4146e12c7ac62",
+ ".user.ini": "0a557e3cdca4c2e3675deed761d79d109011dcdebbd9c7f6429f1d3476938ec95729543d7384651d1d0c48e26c5024cc5f517445920915a704ea748bdb903c5f",
"subfolder\/.htaccess": "2c57b1e25050e11dc3ae975832f378c452159f7b69f818e47eeeafadd6ba568517461dcb4d843b90b906cd7c89d161bc1b89dff8e3ae0eb6f5088508c47befd1"
},
- "signature": "LNHvrAFg7NJL9h8TanIFmiI3xnmNRz8pltVgRJpnQTqLJCkhZWV5+poHIii\/\/dI4NhBijsoN0AAJckf1KFzyeI2rOk3w+niaOEXX7khoJDgbxuz0kwN13Bxa1A6j0cMFqm9IIWet0JK9MKaL8K\/n3CzNYovXhRBdJsYTQVWvkaY5KMQgTP2roqgaLBABfI8+fuZVnKie1D737UJ3LhxesEtqr9mJEUSdYuN1QpaScdv7bMkX7xTcg02T5Ljs4F0KsKSME43Pzxm33qCQ\/Gyfsz\/iNKHYQztg9wPkSanbqvFnDtHhcIhKBsETCbNuBZqBk0AwYCupLIJTjC6SShHc4TtWiv834wtSmc1fYfzrsq7gJalJifFAaeGemzFwkePFlVqjdYc63KSqK8ut0jEcjKPAmJ+5NCUoxc8iASMJCesf31mzUPlw1L9LCBMA0aywDqkZYK4tJHZYMvXc4UkSs19OuAzUbXMoVHsJ03ftfC02gpg4hqZDSiBqYuyKMvt2xuutTA+xQcl3fQGUuNdSmBqUFm0D5cCvT10aZPNUXA2cnS+89u58QSxO1wEZJCYKOrDvX1oqOyJs\/c8GNip3LwheIF2KB8\/Zh83h8ZncDxuesAzq89IjV815K3P1G\/kSVPhvQapw1KMLu9rBDZ3FVvQw8K8fg5a7opBrK2ggGds=",
+ "signature": "d6pqYc0pj5hihZK4Pi\/rM9XguY1xK9LEch+jUcxZWwhzOPL4qVHx5LN4FAhEOnr5ZjuhK\/umVEUjieamF4z8tP\/4nnnu2LmRuPMmj6+1tBEwbsKoeg7NiYfYL5h+VSdBePpIZDmjk0tjEpsMtCPhUPAY5vOSSDJ3Xef4KQIpeL6RKIctDcVdO26QWPLFpCo9NK3j91KHuXTcjbAsATDo+oXQzi0CaomBqL6Ft1SU\/Bdes6usgeVWd6mGygZ6zUCLqB4hSi6335xIkkUO1c3NekWksiqTWqdmVIpsTEsIpapx+nE0UFBGc7ZF2rnamg5813g67M5V\/UwhBRcHobMFWfbp73QDUsHcuLCOhamgYh7hbVIlDP7LS2V3kIRLgMLBVwLnvb8LAbaGUsdYGtbfmrhcMK\/jkpGCv0pqUCc4I+1QuVexNEQrdqafwYRnQUsmdFSFaCASYVvgxPrY5jA+y1HwNX5HEc5mMzVORNPhZXUcxWBRUQxUESY5j473DInMQUhq7SLVNAaglxDR1a9M5tQO8engvIJ5eTImLITm0qdefmEvFrxQ0BrrGmPNFYUysrHeNGDhMkGX+JIONj+T4Ht3Z7dr7cfufYDHRaummsTGgRx6206zRSqavsBWL\/Cbzrfu1HhiRagncVcoL40EommJt8lobaKHs3GZ8k861Wo=",
"certificate": "-----BEGIN CERTIFICATE-----\r\nMIIEvjCCAqagAwIBAgIUc\/0FxYrsgSs9rDxp03EJmbjN0NwwDQYJKoZIhvcNAQEF\r\nBQAwIzEhMB8GA1UECgwYb3duQ2xvdWQgQ29kZSBTaWduaW5nIENBMB4XDTE1MTEw\r\nMzIxMDMzM1oXDTE2MTEwMzIxMDMzM1owDzENMAsGA1UEAwwEY29yZTCCAiIwDQYJ\r\nKoZIhvcNAQEBBQADggIPADCCAgoCggIBALb6EgHpkAqZbO5vRO8XSh7G7XGWHw5s\r\niOf4RwPXR6SE9bWZEm\/b72SfWk\/\/J6AbrD8WiOzBuT\/ODy6k5T1arEdHO+Pux0W1\r\nMxYJJI4kH74KKgMpC0SB0Rt+8WrMqV1r3hhJ46df6Xr\/xolP3oD+eLbShPcblhdS\r\nVtkZEkoev8Sh6L2wDCeHDyPxzvj1w2dTdGVO9Kztn0xIlyfEBakqvBWtcxyi3Ln0\r\nklnxlMx3tPDUE4kqvpia9qNiB1AN2PV93eNr5\/2riAzIssMFSCarWCx0AKYb54+d\r\nxLpcYFyqPJ0ydBCkF78DD45RCZet6PNYkdzgbqlUWEGGomkuDoJbBg4wzgzO0D77\r\nH87KFhYW8tKFFvF1V3AHl\/sFQ9tDHaxM9Y0pZ2jPp\/ccdiqnmdkBxBDqsiRvHvVB\r\nCn6qpb4vWGFC7vHOBfYspmEL1zLlKXZv3ezMZEZw7O9ZvUP3VO\/wAtd2vUW8UFiq\r\ns2v1QnNLN6jNh51obcwmrBvWhJy9vQIdtIjQbDxqWTHh1zUSrw9wrlklCBZ\/zrM0\r\ni8nfCFwTxWRxp3H9KoECzO\/zS5R5KIS7s3\/wq\/w9T2Ie4rcecgXwDizwnn0C\/aKc\r\nbDIjujpL1s9HO05pcD\/V3wKcPZ1izymBkmMyIbL52iRVN5FTVHeZdXPpFuq+CTQJ\r\nQ238lC+A\/KOVAgMBAAEwDQYJKoZIhvcNAQEFBQADggIBAGoKTnh8RfJV4sQItVC2\r\nAvfJagkrIqZ3iiQTUBQGTKBsTnAqE1H7QgUSV9vSd+8rgvHkyZsRjmtyR1e3A6Ji\r\noNCXUbExC\/0iCPUqdHZIVb+Lc\/vWuv4ByFMybGPydgtLoEUX2ZrKFWmcgZFDUSRd\r\n9Uj26vtUhCC4bU4jgu6hIrR9IuxOBLQUxGTRZyAcXvj7obqRAEZwFAKQgFpfpqTb\r\nH+kjcbZSaAlLVSF7vBc1syyI8RGYbqpwvtREqJtl5IEIwe6huEqJ3zPnlP2th\/55\r\ncf3Fovj6JJgbb9XFxrdnsOsDOu\/tpnaRWlvv5ib4+SzG5wWFT5UUEo4Wg2STQiiX\r\nuVSRQxK1LE1yg84bs3NZk9FSQh4B8vZVuRr5FaJsZZkwlFlhRO\/\/+TJtXRbyNgsf\r\noMRZGi8DLGU2SGEAHcRH\/QZHq\/XDUWVzdxrSBYcy7GSpT7UDVzGv1rEJUrn5veP1\r\n0KmauAqtiIaYRm4f6YBsn0INcZxzIPZ0p8qFtVZBPeHhvQtvOt0iXI\/XUxEWOa2F\r\nK2EqhErgMK\/N07U1JJJay5tYZRtvkGq46oP\/5kQG8hYST0MDK6VihJoPpvCmAm4E\r\npEYKQ96x6A4EH9Y9mZlYozH\/eqmxPbTK8n89\/p7Ydun4rI+B2iiLnY8REWWy6+UQ\r\nV204fGUkJqW5CrKy3P3XvY9X\r\n-----END CERTIFICATE-----"
}';
$this->environmentHelper
@@ -614,6 +616,48 @@ class CheckerTest extends TestCase {
$this->assertSame([], $this->checker->verifyCoreSignature());
}
+ public function testVerifyCoreSignatureWithValidModifiedHtaccessAndUserIniSignatureData() {
+ $this->environmentHelper
+ ->expects($this->once())
+ ->method('getChannel')
+ ->will($this->returnValue('stable'));
+ $this->config
+ ->expects($this->any())
+ ->method('getSystemValue')
+ ->with('integrity.check.disabled', false)
+ ->will($this->returnValue(false));
+
+ $this->environmentHelper
+ ->expects($this->any())
+ ->method('getServerRoot')
+ ->will($this->returnValue(\OC::$SERVERROOT . '/tests/data/integritycheck/htaccessWithValidModifiedContent'));
+ $signatureDataFile = '{
+ "hashes": {
+ ".htaccess": "ef34c5f35fffb6e8e3008c2118617b53243cfc5ac2513edba9ebd383169862bc16e4f889316ad65788d6b172fe14713af90908c19838c4ba13b4146e12c7ac62",
+ ".user.ini": "0a557e3cdca4c2e3675deed761d79d109011dcdebbd9c7f6429f1d3476938ec95729543d7384651d1d0c48e26c5024cc5f517445920915a704ea748bdb903c5f",
+ "subfolder\/.htaccess": "2c57b1e25050e11dc3ae975832f378c452159f7b69f818e47eeeafadd6ba568517461dcb4d843b90b906cd7c89d161bc1b89dff8e3ae0eb6f5088508c47befd1"
+ },
+ "signature": "d6pqYc0pj5hihZK4Pi\/rM9XguY1xK9LEch+jUcxZWwhzOPL4qVHx5LN4FAhEOnr5ZjuhK\/umVEUjieamF4z8tP\/4nnnu2LmRuPMmj6+1tBEwbsKoeg7NiYfYL5h+VSdBePpIZDmjk0tjEpsMtCPhUPAY5vOSSDJ3Xef4KQIpeL6RKIctDcVdO26QWPLFpCo9NK3j91KHuXTcjbAsATDo+oXQzi0CaomBqL6Ft1SU\/Bdes6usgeVWd6mGygZ6zUCLqB4hSi6335xIkkUO1c3NekWksiqTWqdmVIpsTEsIpapx+nE0UFBGc7ZF2rnamg5813g67M5V\/UwhBRcHobMFWfbp73QDUsHcuLCOhamgYh7hbVIlDP7LS2V3kIRLgMLBVwLnvb8LAbaGUsdYGtbfmrhcMK\/jkpGCv0pqUCc4I+1QuVexNEQrdqafwYRnQUsmdFSFaCASYVvgxPrY5jA+y1HwNX5HEc5mMzVORNPhZXUcxWBRUQxUESY5j473DInMQUhq7SLVNAaglxDR1a9M5tQO8engvIJ5eTImLITm0qdefmEvFrxQ0BrrGmPNFYUysrHeNGDhMkGX+JIONj+T4Ht3Z7dr7cfufYDHRaummsTGgRx6206zRSqavsBWL\/Cbzrfu1HhiRagncVcoL40EommJt8lobaKHs3GZ8k861Wo=",
+ "certificate": "-----BEGIN CERTIFICATE-----\r\nMIIEvjCCAqagAwIBAgIUc\/0FxYrsgSs9rDxp03EJmbjN0NwwDQYJKoZIhvcNAQEF\r\nBQAwIzEhMB8GA1UECgwYb3duQ2xvdWQgQ29kZSBTaWduaW5nIENBMB4XDTE1MTEw\r\nMzIxMDMzM1oXDTE2MTEwMzIxMDMzM1owDzENMAsGA1UEAwwEY29yZTCCAiIwDQYJ\r\nKoZIhvcNAQEBBQADggIPADCCAgoCggIBALb6EgHpkAqZbO5vRO8XSh7G7XGWHw5s\r\niOf4RwPXR6SE9bWZEm\/b72SfWk\/\/J6AbrD8WiOzBuT\/ODy6k5T1arEdHO+Pux0W1\r\nMxYJJI4kH74KKgMpC0SB0Rt+8WrMqV1r3hhJ46df6Xr\/xolP3oD+eLbShPcblhdS\r\nVtkZEkoev8Sh6L2wDCeHDyPxzvj1w2dTdGVO9Kztn0xIlyfEBakqvBWtcxyi3Ln0\r\nklnxlMx3tPDUE4kqvpia9qNiB1AN2PV93eNr5\/2riAzIssMFSCarWCx0AKYb54+d\r\nxLpcYFyqPJ0ydBCkF78DD45RCZet6PNYkdzgbqlUWEGGomkuDoJbBg4wzgzO0D77\r\nH87KFhYW8tKFFvF1V3AHl\/sFQ9tDHaxM9Y0pZ2jPp\/ccdiqnmdkBxBDqsiRvHvVB\r\nCn6qpb4vWGFC7vHOBfYspmEL1zLlKXZv3ezMZEZw7O9ZvUP3VO\/wAtd2vUW8UFiq\r\ns2v1QnNLN6jNh51obcwmrBvWhJy9vQIdtIjQbDxqWTHh1zUSrw9wrlklCBZ\/zrM0\r\ni8nfCFwTxWRxp3H9KoECzO\/zS5R5KIS7s3\/wq\/w9T2Ie4rcecgXwDizwnn0C\/aKc\r\nbDIjujpL1s9HO05pcD\/V3wKcPZ1izymBkmMyIbL52iRVN5FTVHeZdXPpFuq+CTQJ\r\nQ238lC+A\/KOVAgMBAAEwDQYJKoZIhvcNAQEFBQADggIBAGoKTnh8RfJV4sQItVC2\r\nAvfJagkrIqZ3iiQTUBQGTKBsTnAqE1H7QgUSV9vSd+8rgvHkyZsRjmtyR1e3A6Ji\r\noNCXUbExC\/0iCPUqdHZIVb+Lc\/vWuv4ByFMybGPydgtLoEUX2ZrKFWmcgZFDUSRd\r\n9Uj26vtUhCC4bU4jgu6hIrR9IuxOBLQUxGTRZyAcXvj7obqRAEZwFAKQgFpfpqTb\r\nH+kjcbZSaAlLVSF7vBc1syyI8RGYbqpwvtREqJtl5IEIwe6huEqJ3zPnlP2th\/55\r\ncf3Fovj6JJgbb9XFxrdnsOsDOu\/tpnaRWlvv5ib4+SzG5wWFT5UUEo4Wg2STQiiX\r\nuVSRQxK1LE1yg84bs3NZk9FSQh4B8vZVuRr5FaJsZZkwlFlhRO\/\/+TJtXRbyNgsf\r\noMRZGi8DLGU2SGEAHcRH\/QZHq\/XDUWVzdxrSBYcy7GSpT7UDVzGv1rEJUrn5veP1\r\n0KmauAqtiIaYRm4f6YBsn0INcZxzIPZ0p8qFtVZBPeHhvQtvOt0iXI\/XUxEWOa2F\r\nK2EqhErgMK\/N07U1JJJay5tYZRtvkGq46oP\/5kQG8hYST0MDK6VihJoPpvCmAm4E\r\npEYKQ96x6A4EH9Y9mZlYozH\/eqmxPbTK8n89\/p7Ydun4rI+B2iiLnY8REWWy6+UQ\r\nV204fGUkJqW5CrKy3P3XvY9X\r\n-----END CERTIFICATE-----"
+}';
+ $this->fileAccessHelper
+ ->expects($this->at(0))
+ ->method('file_get_contents')
+ ->with(
+ \OC::$SERVERROOT . '/tests/data/integritycheck/htaccessWithValidModifiedContent/core/signature.json'
+ )
+ ->will($this->returnValue($signatureDataFile));
+ $this->fileAccessHelper
+ ->expects($this->at(1))
+ ->method('file_get_contents')
+ ->with(
+ \OC::$SERVERROOT . '/tests/data/integritycheck/htaccessWithValidModifiedContent/resources/codesigning/root.crt'
+ )
+ ->will($this->returnValue(file_get_contents(__DIR__ .'/../../data/integritycheck/root.crt')));
+
+ $this->assertSame([], $this->checker->verifyCoreSignature());
+ }
+
public function testVerifyCoreSignatureWithValidSignatureDataAndNotAlphabeticOrder() {
$this->environmentHelper
->expects($this->once())
@@ -867,6 +911,7 @@ class CheckerTest extends TestCase {
$this->config,
$this->cacheFactory,
$this->appManager,
+ \OC::$server->getTempManager()
])
->setMethods([
'verifyCoreSignature',
diff --git a/tests/lib/memcache/cache.php b/tests/lib/memcache/cache.php
index 3ff72ee931c..725b0fbbf57 100644
--- a/tests/lib/memcache/cache.php
+++ b/tests/lib/memcache/cache.php
@@ -39,6 +39,11 @@ abstract class Cache extends \Test_Cache {
$this->assertFalse($this->instance->hasKey('foo'));
}
+ public function testRemoveNonExisting() {
+ $this->instance->remove('foo');
+ $this->assertFalse($this->instance->hasKey('foo'));
+ }
+
public function testArrayAccessSet() {
$this->instance['foo'] = 'bar';
$this->assertEquals('bar', $this->instance->get('foo'));
@@ -72,7 +77,9 @@ abstract class Cache extends \Test_Cache {
$this->assertEquals(1, $this->instance->inc('foo'));
$this->assertEquals(1, $this->instance->get('foo'));
$this->assertEquals(2, $this->instance->inc('foo'));
+ $this->assertEquals(2, $this->instance->get('foo'));
$this->assertEquals(12, $this->instance->inc('foo', 10));
+ $this->assertEquals(12, $this->instance->get('foo'));
$this->instance->set('foo', 'bar');
$this->assertFalse($this->instance->inc('foo'));
@@ -80,7 +87,7 @@ abstract class Cache extends \Test_Cache {
}
public function testDec() {
- $this->assertEquals(false, $this->instance->dec('foo'));
+ $this->assertFalse($this->instance->dec('foo'));
$this->instance->set('foo', 20);
$this->assertEquals(19, $this->instance->dec('foo'));
$this->assertEquals(19, $this->instance->get('foo'));
diff --git a/tests/lib/repair/repairsharepropagation.php b/tests/lib/repair/repairsharepropagation.php
new file mode 100644
index 00000000000..6ec8b98ec56
--- /dev/null
+++ b/tests/lib/repair/repairsharepropagation.php
@@ -0,0 +1,51 @@
+<?php
+/**
+ * Copyright (c) 2016 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace Test\Repair;
+
+use OC\Repair\SharePropagation;
+
+class RepairSharePropagation extends \Test\TestCase {
+ public function keyProvider() {
+ return [
+ [['1', '2'], ['1', '2']],
+ [['1', '2', 'foo'], ['1', '2']],
+ [['foo'], []],
+ ];
+ }
+
+ /**
+ * @dataProvider keyProvider
+ * @param array $startKeys
+ * @param array $expectedRemovedKeys
+ */
+ public function testRemovePropagationEntries(array $startKeys, array $expectedRemovedKeys) {
+ /** @var \PHPUnit_Framework_MockObject_MockObject|\OCP\IConfig $config */
+ $config = $this->getMock('\OCP\IConfig');
+ $config->expects($this->once())
+ ->method('getAppKeys')
+ ->with('files_sharing')
+ ->will($this->returnValue($startKeys));
+
+ $removedKeys = [];
+
+ $config->expects($this->any())
+ ->method('deleteAppValue')
+ ->will($this->returnCallback(function ($app, $key) use (&$removedKeys) {
+ $removedKeys[] = $key;
+ }));
+
+ $step = new SharePropagation($config);
+ $step->run();
+
+ sort($expectedRemovedKeys);
+ sort($removedKeys);
+
+ $this->assertEquals($expectedRemovedKeys, $removedKeys);
+ }
+}
diff --git a/tests/lib/security/trusteddomainhelper.php b/tests/lib/security/trusteddomainhelper.php
index 52a8f1be630..3581211ce61 100644
--- a/tests/lib/security/trusteddomainhelper.php
+++ b/tests/lib/security/trusteddomainhelper.php
@@ -42,7 +42,12 @@ class TrustedDomainHelperTest extends \Test\TestCase {
* @return array
*/
public function trustedDomainDataProvider() {
- $trustedHostTestList = ['host.one.test', 'host.two.test', '[1fff:0:a88:85a3::ac1f]'];
+ $trustedHostTestList = [
+ 'host.one.test',
+ 'host.two.test',
+ '[1fff:0:a88:85a3::ac1f]',
+ 'host.three.test:443',
+ ];
return [
// empty defaults to false with 8.1
[null, 'host.one.test:8080', false],
@@ -56,6 +61,9 @@ class TrustedDomainHelperTest extends \Test\TestCase {
[$trustedHostTestList, '[1fff:0:a88:85a3::ac1f]', true],
[$trustedHostTestList, '[1fff:0:a88:85a3::ac1f]:801', true],
[$trustedHostTestList, '[1fff:0:a88:85a3::ac1f]:801:34', false],
+ [$trustedHostTestList, 'host.three.test:443', true],
+ [$trustedHostTestList, 'host.three.test:80', false],
+ [$trustedHostTestList, 'host.three.test', false],
// trust localhost regardless of trust list
[$trustedHostTestList, 'localhost', true],
[$trustedHostTestList, 'localhost:8080', true],
diff --git a/tests/lib/share/MailNotificationsTest.php b/tests/lib/share/MailNotificationsTest.php
index 66bec8653fb..8c8ca78f39a 100644
--- a/tests/lib/share/MailNotificationsTest.php
+++ b/tests/lib/share/MailNotificationsTest.php
@@ -25,6 +25,7 @@ use OCP\IUser;
use OCP\Mail\IMailer;
use OCP\ILogger;
use OCP\Defaults;
+use OCP\IURLGenerator;
/**
* Class MailNotificationsTest
@@ -40,6 +41,8 @@ class MailNotificationsTest extends \Test\TestCase {
private $defaults;
/** @var IUser | PHPUnit_Framework_MockObject_MockObject */
private $user;
+ /** @var IURLGenerator | PHPUnit_Framework_MockObject_MockObject */
+ private $urlGenerator;
public function setUp() {
@@ -55,6 +58,7 @@ class MailNotificationsTest extends \Test\TestCase {
->disableOriginalConstructor()->getMock();
$this->user = $this->getMockBuilder('\OCP\IUser')
->disableOriginalConstructor()->getMock();
+ $this->urlGenerator = $this->getMock('\OCP\IURLGenerator');
$this->l10n->expects($this->any())
->method('t')
@@ -116,7 +120,8 @@ class MailNotificationsTest extends \Test\TestCase {
$this->l10n,
$this->mailer,
$this->logger,
- $this->defaults
+ $this->defaults,
+ $this->urlGenerator
);
$this->assertSame([], $mailNotifications->sendLinkShareMail('lukas@owncloud.com', 'MyFile', 'https://owncloud.com/file/?foo=bar', 3600));
@@ -180,7 +185,8 @@ class MailNotificationsTest extends \Test\TestCase {
$this->l10n,
$this->mailer,
$this->logger,
- $this->defaults
+ $this->defaults,
+ $this->urlGenerator
);
$this->assertSame([], $mailNotifications->sendLinkShareMail($to, 'MyFile', 'https://owncloud.com/file/?foo=bar', 3600));
}
@@ -193,7 +199,8 @@ class MailNotificationsTest extends \Test\TestCase {
$this->l10n,
$this->mailer,
$this->logger,
- $this->defaults
+ $this->defaults,
+ $this->urlGenerator
);
$this->assertSame(['lukas@owncloud.com'], $mailNotifications->sendLinkShareMail('lukas@owncloud.com', 'MyFile', 'https://owncloud.com/file/?foo=bar', 3600));
@@ -208,7 +215,9 @@ class MailNotificationsTest extends \Test\TestCase {
$this->l10n,
$this->mailer,
$this->logger,
- $this->defaults]);
+ $this->defaults,
+ $this->urlGenerator
+ ]);
$mailNotifications->method('getItemSharedWithUser')
->withAnyParameters()
@@ -227,6 +236,16 @@ class MailNotificationsTest extends \Test\TestCase {
->method('getDisplayName')
->willReturn('Recipient');
+ $this->urlGenerator->expects($this->once())
+ ->method('linkToRouteAbsolute')
+ ->with(
+ $this->equalTo('files.view.index'),
+ $this->equalTo([
+ 'dir' => '/',
+ 'scrollto' => 'welcome.txt'
+ ])
+ );
+
$recipientList = [$recipient];
$result = $mailNotifications->sendInternalShareMail($recipientList, '3', 'file');
$this->assertSame([], $result);