diff options
519 files changed, 3749 insertions, 629 deletions
@@ -304,7 +304,7 @@ Robin Appelman <icewind@owncloud.com> Robin <robin@Amaya.(none)> Robin Appelman <icewind@owncloud.com> Robin Appelman <icewind1991@gmail.com> Robin Appelman <icewind@owncloud.com> Robin Appelman <icewind1991@gmail> Robin Appelman <icewind@owncloud.com> Robin Appelman <robin@icewind.nl> -Robin McCorkell <rmccorkell@karoshi.org.uk> +Robin McCorkell <rmccorkell@karoshi.org.uk> Robin McCorkell <rmccorkell@owncloud.com> Rodrigo Hjort <rodrigo.hjort@gmail.com> Roeland Jago Douma <roeland@famdouma.nl> rok <brejktru@gmail.com> diff --git a/apps/encryption/appinfo/app.php b/apps/encryption/appinfo/app.php index 2eb12f638ed..1f336c05a8c 100644 --- a/apps/encryption/appinfo/app.php +++ b/apps/encryption/appinfo/app.php @@ -2,7 +2,6 @@ /** * @author Björn Schießle <schiessle@owncloud.com> * @author Clark Tomlinson <fallen013@gmail.com> - * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/encryption/appinfo/application.php b/apps/encryption/appinfo/application.php index d89833a5ab2..812f1042a8f 100644 --- a/apps/encryption/appinfo/application.php +++ b/apps/encryption/appinfo/application.php @@ -2,8 +2,6 @@ /** * @author Björn Schießle <schiessle@owncloud.com> * @author Clark Tomlinson <fallen013@gmail.com> - * @author Lukas Reschke <lukas@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/encryption/appinfo/register_command.php b/apps/encryption/appinfo/register_command.php index 0f03b63560a..4987ef24d61 100644 --- a/apps/encryption/appinfo/register_command.php +++ b/apps/encryption/appinfo/register_command.php @@ -1,7 +1,6 @@ <?php /** * @author Björn Schießle <schiessle@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/encryption/appinfo/routes.php b/apps/encryption/appinfo/routes.php index a73cc578437..8fa163d0751 100644 --- a/apps/encryption/appinfo/routes.php +++ b/apps/encryption/appinfo/routes.php @@ -2,8 +2,6 @@ /** * @author Björn Schießle <schiessle@owncloud.com> * @author Clark Tomlinson <fallen013@gmail.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/encryption/command/migratekeys.php b/apps/encryption/command/migratekeys.php index 7e320102172..89e2aa01610 100644 --- a/apps/encryption/command/migratekeys.php +++ b/apps/encryption/command/migratekeys.php @@ -1,7 +1,6 @@ <?php /** * @author Björn Schießle <schiessle@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/encryption/controller/recoverycontroller.php b/apps/encryption/controller/recoverycontroller.php index a92c49f539f..f1a2651443e 100644 --- a/apps/encryption/controller/recoverycontroller.php +++ b/apps/encryption/controller/recoverycontroller.php @@ -3,8 +3,6 @@ * @author Björn Schießle <schiessle@owncloud.com> * @author Clark Tomlinson <fallen013@gmail.com> * @author Lukas Reschke <lukas@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/encryption/controller/settingscontroller.php b/apps/encryption/controller/settingscontroller.php index 8e6de19e784..e5bb79a1d40 100644 --- a/apps/encryption/controller/settingscontroller.php +++ b/apps/encryption/controller/settingscontroller.php @@ -2,7 +2,6 @@ /** * @author Björn Schießle <schiessle@owncloud.com> * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/encryption/controller/statuscontroller.php b/apps/encryption/controller/statuscontroller.php index f330f726c0b..409fe1a258b 100644 --- a/apps/encryption/controller/statuscontroller.php +++ b/apps/encryption/controller/statuscontroller.php @@ -1,7 +1,6 @@ <?php /** * @author Björn Schießle <schiessle@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/encryption/hooks/contracts/ihook.php b/apps/encryption/hooks/contracts/ihook.php index 53217f8ac06..d4f20700d78 100644 --- a/apps/encryption/hooks/contracts/ihook.php +++ b/apps/encryption/hooks/contracts/ihook.php @@ -1,8 +1,6 @@ <?php /** * @author Clark Tomlinson <fallen013@gmail.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/encryption/l10n/fa.js b/apps/encryption/l10n/fa.js index 1793326a3f9..ac39a7fbe88 100644 --- a/apps/encryption/l10n/fa.js +++ b/apps/encryption/l10n/fa.js @@ -1,18 +1,37 @@ OC.L10N.register( "encryption", { + "Missing recovery key password" : "فاقد رمزعبور کلید بازیابی", + "Please repeat the recovery key password" : "لطفا رمز کلید بازیابی را تکرار کنید", "Recovery key successfully enabled" : "کلید بازیابی با موفقیت فعال شده است.", "Could not enable recovery key. Please check your recovery key password!" : "کلید بازیابی نمی تواند فعال شود. لطفا رمزعبور کلید بازیابی خود را بررسی نمایید!", "Recovery key successfully disabled" : "کلید بازیابی با موفقیت غیر فعال شده است.", "Could not disable recovery key. Please check your recovery key password!" : "کلید بازیابی را نمی تواند غیرفعال نماید. لطفا رمزعبور کلید بازیابی خود را بررسی کنید!", "Missing parameters" : "پارامترهای فراموش شده", + "Please provide the old recovery password" : "لطفا رمز بازیابی قدیمی را وارد کنید", + "Please provide a new recovery password" : "لطفا رمز بازیابی جدید را وارد کنید", + "Please repeat the new recovery password" : "لطفا رمز بازیابی جدید را مجددا وارد کنید", "Password successfully changed." : "رمزعبور با موفقیت تغییر یافت.", "Could not change the password. Maybe the old password was not correct." : "رمزعبور را نمیتواند تغییر دهد. شاید رمزعبورقدیمی صحیح نمی باشد.", + "Recovery Key disabled" : "کلید بازیابی غیرفعال شد", + "Recovery Key enabled" : "کلید بازیابی فعال شد", + "Could not enable the recovery key, please try again or contact your administrator" : "امکان فعالسازی کلید بازیابی وجود ندارد، لطفا مجددا تلاش کرده و یا با مدیر تماس بگیرید", + "Could not update the private key password." : "امکان بروزرسانی رمزعبور کلید خصوصی وجود ندارد.", + "The old password was not correct, please try again." : "رمزعبور قدیمی اشتباه است، لطفا مجددا تلاش کنید.", "Private key password successfully updated." : "رمزعبور کلید خصوصی با موفقیت به روز شد.", + "Encryption App is enabled and ready" : "برنامه رمزگذاری فعال و آماده است", + "The share will expire on %s." : "اشتراکگذاری در %s منقضی خواهد شد.", "Cheers!" : "سلامتی!", + "Enable recovery key" : "فعالسازی کلید بازیابی", + "Disable recovery key" : "غیرفعالسازی کلید بازیابی", "Recovery key password" : "رمزعبور کلید بازیابی", + "Repeat recovery key password" : "تکرار رمزعبور کلید بازیابی", "Change recovery key password:" : "تغییر رمزعبور کلید بازیابی:", + "Old recovery key password" : "رمزعبور قدیمی کلید بازیابی", + "New recovery key password" : "رمزعبور جدید کلید بازیابی", + "Repeat new recovery key password" : "تکرار رمزعبور جدید کلید بازیابی", "Change Password" : "تغییر رمزعبور", + "ownCloud basic encryption module" : "ماژول پایه رمزگذاری ownCloud", " If you don't remember your old password you can ask your administrator to recover your files." : "اگر رمزعبور قدیمی را فراموش کرده اید میتوانید از مدیر خود برای بازیابی فایل هایتان درخواست نمایید.", "Old log-in password" : "رمزعبور قدیمی", "Current log-in password" : "رمزعبور فعلی", diff --git a/apps/encryption/l10n/fa.json b/apps/encryption/l10n/fa.json index 3b863326db4..1a6e7d16275 100644 --- a/apps/encryption/l10n/fa.json +++ b/apps/encryption/l10n/fa.json @@ -1,16 +1,35 @@ { "translations": { + "Missing recovery key password" : "فاقد رمزعبور کلید بازیابی", + "Please repeat the recovery key password" : "لطفا رمز کلید بازیابی را تکرار کنید", "Recovery key successfully enabled" : "کلید بازیابی با موفقیت فعال شده است.", "Could not enable recovery key. Please check your recovery key password!" : "کلید بازیابی نمی تواند فعال شود. لطفا رمزعبور کلید بازیابی خود را بررسی نمایید!", "Recovery key successfully disabled" : "کلید بازیابی با موفقیت غیر فعال شده است.", "Could not disable recovery key. Please check your recovery key password!" : "کلید بازیابی را نمی تواند غیرفعال نماید. لطفا رمزعبور کلید بازیابی خود را بررسی کنید!", "Missing parameters" : "پارامترهای فراموش شده", + "Please provide the old recovery password" : "لطفا رمز بازیابی قدیمی را وارد کنید", + "Please provide a new recovery password" : "لطفا رمز بازیابی جدید را وارد کنید", + "Please repeat the new recovery password" : "لطفا رمز بازیابی جدید را مجددا وارد کنید", "Password successfully changed." : "رمزعبور با موفقیت تغییر یافت.", "Could not change the password. Maybe the old password was not correct." : "رمزعبور را نمیتواند تغییر دهد. شاید رمزعبورقدیمی صحیح نمی باشد.", + "Recovery Key disabled" : "کلید بازیابی غیرفعال شد", + "Recovery Key enabled" : "کلید بازیابی فعال شد", + "Could not enable the recovery key, please try again or contact your administrator" : "امکان فعالسازی کلید بازیابی وجود ندارد، لطفا مجددا تلاش کرده و یا با مدیر تماس بگیرید", + "Could not update the private key password." : "امکان بروزرسانی رمزعبور کلید خصوصی وجود ندارد.", + "The old password was not correct, please try again." : "رمزعبور قدیمی اشتباه است، لطفا مجددا تلاش کنید.", "Private key password successfully updated." : "رمزعبور کلید خصوصی با موفقیت به روز شد.", + "Encryption App is enabled and ready" : "برنامه رمزگذاری فعال و آماده است", + "The share will expire on %s." : "اشتراکگذاری در %s منقضی خواهد شد.", "Cheers!" : "سلامتی!", + "Enable recovery key" : "فعالسازی کلید بازیابی", + "Disable recovery key" : "غیرفعالسازی کلید بازیابی", "Recovery key password" : "رمزعبور کلید بازیابی", + "Repeat recovery key password" : "تکرار رمزعبور کلید بازیابی", "Change recovery key password:" : "تغییر رمزعبور کلید بازیابی:", + "Old recovery key password" : "رمزعبور قدیمی کلید بازیابی", + "New recovery key password" : "رمزعبور جدید کلید بازیابی", + "Repeat new recovery key password" : "تکرار رمزعبور جدید کلید بازیابی", "Change Password" : "تغییر رمزعبور", + "ownCloud basic encryption module" : "ماژول پایه رمزگذاری ownCloud", " If you don't remember your old password you can ask your administrator to recover your files." : "اگر رمزعبور قدیمی را فراموش کرده اید میتوانید از مدیر خود برای بازیابی فایل هایتان درخواست نمایید.", "Old log-in password" : "رمزعبور قدیمی", "Current log-in password" : "رمزعبور فعلی", diff --git a/apps/encryption/l10n/ru.js b/apps/encryption/l10n/ru.js index 2b64fa66ed9..b326b71456d 100644 --- a/apps/encryption/l10n/ru.js +++ b/apps/encryption/l10n/ru.js @@ -25,10 +25,13 @@ OC.L10N.register( "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Закрытый ключ приложения шифрования недействителен. Обновите закрытый ключ в личных настройках, чтобы восстановить доступ к зашифрованным файлам.", "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Приложение шифрования активно, но ваши ключи не инициализированы, выйдите из системы и войдите заново", "Encryption App is enabled and ready" : "Приложение шифрования включено и готово", + "one-time password for server-side-encryption" : "одноразовый пароль для шифрования на стороне сервера", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не удалось расшифровать файл, возможно это опубликованный файл. Попросите владельца файла повторно открыть к нему доступ.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не удается прочитать файл, возможно это публичный файл. Пожалуйста попросите владельца открыть доступ снова.", + "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'ownCloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Привет,\n\nадминистратор включил шифрование на стороне сервера. Ваши файлы были зашифрованы с помощью пароля '%s'.\n\nПожалуйста войдите в веб-приложение, в разделе 'ownCloud простой модуль шифрования' в личных настройках вам нужно обновить пароль шифрования.\n\n", "The share will expire on %s." : "Доступ будет закрыт %s", "Cheers!" : "Всего наилучшего!", + "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Привет,<br><br>администратор включил шифрование на стороне сервера. Ваши файлы были зашифрованы с помощью пароля <strong>%s</strong>.<br><br>Пожалуйста войдите в веб-приложение, в разделе \"ownCloud простой модуль шифрования\" в личных настройках вам нужно обновить пароль шифрования.<br><br>", "Enable recovery key" : "Включить ключ восстановления", "Disable recovery key" : "Отключить ключ восстановления", "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "Ключ восстановления это дополнительный ключ, который используется для шифрования файлов. Он позволяет восстановить пользовательские файлы в случае утери пароля.", diff --git a/apps/encryption/l10n/ru.json b/apps/encryption/l10n/ru.json index 229d4e32dee..f4a14cb841f 100644 --- a/apps/encryption/l10n/ru.json +++ b/apps/encryption/l10n/ru.json @@ -23,10 +23,13 @@ "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Закрытый ключ приложения шифрования недействителен. Обновите закрытый ключ в личных настройках, чтобы восстановить доступ к зашифрованным файлам.", "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Приложение шифрования активно, но ваши ключи не инициализированы, выйдите из системы и войдите заново", "Encryption App is enabled and ready" : "Приложение шифрования включено и готово", + "one-time password for server-side-encryption" : "одноразовый пароль для шифрования на стороне сервера", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не удалось расшифровать файл, возможно это опубликованный файл. Попросите владельца файла повторно открыть к нему доступ.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не удается прочитать файл, возможно это публичный файл. Пожалуйста попросите владельца открыть доступ снова.", + "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'ownCloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Привет,\n\nадминистратор включил шифрование на стороне сервера. Ваши файлы были зашифрованы с помощью пароля '%s'.\n\nПожалуйста войдите в веб-приложение, в разделе 'ownCloud простой модуль шифрования' в личных настройках вам нужно обновить пароль шифрования.\n\n", "The share will expire on %s." : "Доступ будет закрыт %s", "Cheers!" : "Всего наилучшего!", + "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Привет,<br><br>администратор включил шифрование на стороне сервера. Ваши файлы были зашифрованы с помощью пароля <strong>%s</strong>.<br><br>Пожалуйста войдите в веб-приложение, в разделе \"ownCloud простой модуль шифрования\" в личных настройках вам нужно обновить пароль шифрования.<br><br>", "Enable recovery key" : "Включить ключ восстановления", "Disable recovery key" : "Отключить ключ восстановления", "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "Ключ восстановления это дополнительный ключ, который используется для шифрования файлов. Он позволяет восстановить пользовательские файлы в случае утери пароля.", diff --git a/apps/encryption/lib/crypto/crypt.php b/apps/encryption/lib/crypto/crypt.php index 5d1bb92460a..c55fb00f838 100644 --- a/apps/encryption/lib/crypto/crypt.php +++ b/apps/encryption/lib/crypto/crypt.php @@ -3,7 +3,6 @@ * @author Björn Schießle <schiessle@owncloud.com> * @author Clark Tomlinson <fallen013@gmail.com> * @author Lukas Reschke <lukas@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/encryption/lib/crypto/encryption.php b/apps/encryption/lib/crypto/encryption.php index fde4a2c4a9c..1a05277e20d 100644 --- a/apps/encryption/lib/crypto/encryption.php +++ b/apps/encryption/lib/crypto/encryption.php @@ -5,7 +5,6 @@ * @author Jan-Christoph Borchardt <hey@jancborchardt.net> * @author Joas Schilling <nickvergessen@owncloud.com> * @author Lukas Reschke <lukas@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/encryption/lib/hookmanager.php b/apps/encryption/lib/hookmanager.php index 0fea1b0f9f2..ab059369333 100644 --- a/apps/encryption/lib/hookmanager.php +++ b/apps/encryption/lib/hookmanager.php @@ -2,9 +2,6 @@ /** * @author Björn Schießle <schiessle@owncloud.com> * @author Clark Tomlinson <fallen013@gmail.com> - * @author Lukas Reschke <lukas@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/encryption/lib/migration.php b/apps/encryption/lib/migration.php index 5396a7db627..1a7c2e9877d 100644 --- a/apps/encryption/lib/migration.php +++ b/apps/encryption/lib/migration.php @@ -1,7 +1,7 @@ <?php /** * @author Björn Schießle <schiessle@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> + * @author Joas Schilling <nickvergessen@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/encryption/lib/recovery.php b/apps/encryption/lib/recovery.php index b22e3265628..e7b20e2c4af 100644 --- a/apps/encryption/lib/recovery.php +++ b/apps/encryption/lib/recovery.php @@ -2,8 +2,6 @@ /** * @author Björn Schießle <schiessle@owncloud.com> * @author Clark Tomlinson <fallen013@gmail.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/encryption/lib/session.php b/apps/encryption/lib/session.php index 1d0c3711487..2c83319d71e 100644 --- a/apps/encryption/lib/session.php +++ b/apps/encryption/lib/session.php @@ -3,8 +3,6 @@ * @author Björn Schießle <schiessle@owncloud.com> * @author Clark Tomlinson <fallen013@gmail.com> * @author Lukas Reschke <lukas@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/encryption/lib/users/setup.php b/apps/encryption/lib/users/setup.php index d4f7c374547..99368cab080 100644 --- a/apps/encryption/lib/users/setup.php +++ b/apps/encryption/lib/users/setup.php @@ -3,7 +3,6 @@ * @author Björn Schießle <schiessle@owncloud.com> * @author Clark Tomlinson <fallen013@gmail.com> * @author Lukas Reschke <lukas@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/encryption/lib/util.php b/apps/encryption/lib/util.php index e9f916eff38..a162dcde305 100644 --- a/apps/encryption/lib/util.php +++ b/apps/encryption/lib/util.php @@ -2,8 +2,6 @@ /** * @author Björn Schießle <schiessle@owncloud.com> * @author Clark Tomlinson <fallen013@gmail.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/encryption/tests/controller/RecoveryControllerTest.php b/apps/encryption/tests/controller/RecoveryControllerTest.php index d122b992ef0..6c554c97ae9 100644 --- a/apps/encryption/tests/controller/RecoveryControllerTest.php +++ b/apps/encryption/tests/controller/RecoveryControllerTest.php @@ -1,7 +1,6 @@ <?php /** * @author Clark Tomlinson <fallen013@gmail.com> - * @author Morris Jobke <hey@morrisjobke.de> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/encryption/tests/controller/SettingsControllerTest.php b/apps/encryption/tests/controller/SettingsControllerTest.php index 34aa5a27a75..724a01522af 100644 --- a/apps/encryption/tests/controller/SettingsControllerTest.php +++ b/apps/encryption/tests/controller/SettingsControllerTest.php @@ -2,7 +2,6 @@ /** * @author Björn Schießle <schiessle@owncloud.com> * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/encryption/tests/hooks/UserHooksTest.php b/apps/encryption/tests/hooks/UserHooksTest.php index 0b0222ce861..ada0081f649 100644 --- a/apps/encryption/tests/hooks/UserHooksTest.php +++ b/apps/encryption/tests/hooks/UserHooksTest.php @@ -2,7 +2,6 @@ /** * @author Björn Schießle <schiessle@owncloud.com> * @author Clark Tomlinson <fallen013@gmail.com> - * @author Morris Jobke <hey@morrisjobke.de> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/encryption/tests/lib/HookManagerTest.php b/apps/encryption/tests/lib/HookManagerTest.php index b1d511cb89b..288b27b5d8b 100644 --- a/apps/encryption/tests/lib/HookManagerTest.php +++ b/apps/encryption/tests/lib/HookManagerTest.php @@ -2,8 +2,6 @@ /** * @author Clark Tomlinson <fallen013@gmail.com> * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/encryption/tests/lib/KeyManagerTest.php b/apps/encryption/tests/lib/KeyManagerTest.php index 8f1da623efb..35ae8ad6ca0 100644 --- a/apps/encryption/tests/lib/KeyManagerTest.php +++ b/apps/encryption/tests/lib/KeyManagerTest.php @@ -3,7 +3,6 @@ * @author Björn Schießle <schiessle@owncloud.com> * @author Clark Tomlinson <fallen013@gmail.com> * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/encryption/tests/lib/MigrationTest.php b/apps/encryption/tests/lib/MigrationTest.php index bb1f0a310a2..6146e4e7cfb 100644 --- a/apps/encryption/tests/lib/MigrationTest.php +++ b/apps/encryption/tests/lib/MigrationTest.php @@ -2,7 +2,6 @@ /** * @author Björn Schießle <schiessle@owncloud.com> * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/encryption/tests/lib/RecoveryTest.php b/apps/encryption/tests/lib/RecoveryTest.php index c0624a36be9..0cdd76d6b44 100644 --- a/apps/encryption/tests/lib/RecoveryTest.php +++ b/apps/encryption/tests/lib/RecoveryTest.php @@ -3,8 +3,6 @@ * @author Björn Schießle <schiessle@owncloud.com> * @author Clark Tomlinson <fallen013@gmail.com> * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/encryption/tests/lib/SessionTest.php b/apps/encryption/tests/lib/SessionTest.php index 0fa48666d70..1cc0d89a93d 100644 --- a/apps/encryption/tests/lib/SessionTest.php +++ b/apps/encryption/tests/lib/SessionTest.php @@ -1,5 +1,6 @@ <?php /** + * @author Björn Schießle <schiessle@owncloud.com> * @author Clark Tomlinson <fallen013@gmail.com> * @author Thomas Müller <thomas.mueller@tmit.eu> * diff --git a/apps/encryption/tests/lib/UtilTest.php b/apps/encryption/tests/lib/UtilTest.php index 9988ff93f43..723cc9fb910 100644 --- a/apps/encryption/tests/lib/UtilTest.php +++ b/apps/encryption/tests/lib/UtilTest.php @@ -2,8 +2,6 @@ /** * @author Björn Schießle <schiessle@owncloud.com> * @author Clark Tomlinson <fallen013@gmail.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/encryption/tests/lib/crypto/cryptTest.php b/apps/encryption/tests/lib/crypto/cryptTest.php index c6f16e952d7..cad34761840 100644 --- a/apps/encryption/tests/lib/crypto/cryptTest.php +++ b/apps/encryption/tests/lib/crypto/cryptTest.php @@ -2,7 +2,6 @@ /** * @author Björn Schießle <schiessle@owncloud.com> * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/encryption/tests/lib/crypto/encryptionTest.php b/apps/encryption/tests/lib/crypto/encryptionTest.php index 9e0cb2f09d1..f76bdfb6d61 100644 --- a/apps/encryption/tests/lib/crypto/encryptionTest.php +++ b/apps/encryption/tests/lib/crypto/encryptionTest.php @@ -2,8 +2,6 @@ /** * @author Björn Schießle <schiessle@owncloud.com> * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/encryption/tests/lib/users/SetupTest.php b/apps/encryption/tests/lib/users/SetupTest.php index bca3ff58b07..022bf5dc466 100644 --- a/apps/encryption/tests/lib/users/SetupTest.php +++ b/apps/encryption/tests/lib/users/SetupTest.php @@ -1,8 +1,7 @@ <?php /** + * @author Björn Schießle <schiessle@owncloud.com> * @author Clark Tomlinson <fallen013@gmail.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files/admin.php b/apps/files/admin.php index 349c27ff742..786a8edf2a6 100644 --- a/apps/files/admin.php +++ b/apps/files/admin.php @@ -7,6 +7,7 @@ * @author Michael Göhler <somebody.here@gmx.de> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files/ajax/list.php b/apps/files/ajax/list.php index 19129e9de11..6cfa04b49d6 100644 --- a/apps/files/ajax/list.php +++ b/apps/files/ajax/list.php @@ -1,6 +1,5 @@ <?php /** - * @author Jakob Sack <mail@jakobsack.de> * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> diff --git a/apps/files/ajax/scan.php b/apps/files/ajax/scan.php index 7d47a538fa1..491adaa9b88 100644 --- a/apps/files/ajax/scan.php +++ b/apps/files/ajax/scan.php @@ -4,6 +4,7 @@ * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@owncloud.com> * @author Robin Appelman <icewind@owncloud.com> + * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files/ajax/upload.php b/apps/files/ajax/upload.php index 7ff02d8db8e..a784642728f 100644 --- a/apps/files/ajax/upload.php +++ b/apps/files/ajax/upload.php @@ -5,6 +5,7 @@ * @author Björn Schießle <schiessle@owncloud.com> * @author Florian Pritz <bluewind@xinu.at> * @author Frank Karlitschek <frank@owncloud.org> + * @author Individual IT Services <info@individual-it.net> * @author Joas Schilling <nickvergessen@owncloud.com> * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@owncloud.com> diff --git a/apps/files/appinfo/remote.php b/apps/files/appinfo/remote.php index 4d0d8b3e2ec..02f7f3c027f 100644 --- a/apps/files/appinfo/remote.php +++ b/apps/files/appinfo/remote.php @@ -1,9 +1,8 @@ <?php /** - * @author Bart Visscher <bartv@thisnet.nl> * @author Frank Karlitschek <frank@owncloud.org> * @author Jakob Sack <mail@jakobsack.de> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> + * @author Joas Schilling <nickvergessen@owncloud.com> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> diff --git a/apps/files/appinfo/routes.php b/apps/files/appinfo/routes.php index d1b8954d5ce..41aeec6a152 100644 --- a/apps/files/appinfo/routes.php +++ b/apps/files/appinfo/routes.php @@ -2,7 +2,6 @@ /** * @author Bart Visscher <bartv@thisnet.nl> * @author Lukas Reschke <lukas@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Tobias Kaminsky <tobias@kaminsky.me> * @author Tom Needham <tom@owncloud.com> diff --git a/apps/files/appinfo/update.php b/apps/files/appinfo/update.php index ff1369bb1a5..6084435fa5a 100644 --- a/apps/files/appinfo/update.php +++ b/apps/files/appinfo/update.php @@ -2,6 +2,7 @@ /** * @author Björn Schießle <schiessle@owncloud.com> * @author Joas Schilling <nickvergessen@owncloud.com> + * @author Morris Jobke <hey@morrisjobke.de> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files/controller/apicontroller.php b/apps/files/controller/apicontroller.php index 494d97db7a6..ea5ee81a9f6 100644 --- a/apps/files/controller/apicontroller.php +++ b/apps/files/controller/apicontroller.php @@ -4,6 +4,7 @@ * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Roeland Jago Douma <roeland@famdouma.nl> + * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Tobias Kaminsky <tobias@kaminsky.me> * @author Vincent Petry <pvince81@owncloud.com> * diff --git a/apps/files/l10n/cs_CZ.js b/apps/files/l10n/cs_CZ.js index 7ef3a2ec9aa..10f9d49984f 100644 --- a/apps/files/l10n/cs_CZ.js +++ b/apps/files/l10n/cs_CZ.js @@ -96,6 +96,9 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s smazal(a) %1$s", "You restored %1$s" : "Obnovili jste %1$s", "%2$s restored %1$s" : "%2$s obnovil(a) %1$s", + "Changed by %2$s" : "Změněno uživatelem %2$s", + "Deleted by %2$s" : "Smazáno uživatelem %2$s", + "Restored by %2$s" : "Obnoveno uživatelem %2$s", "%s could not be renamed as it has been deleted" : "%s nelze přejmenovat, protože byl smazán", "%s could not be renamed" : "%s nemůže být přejmenován", "Upload (max. %s)" : "Nahrát (max. %s)", diff --git a/apps/files/l10n/cs_CZ.json b/apps/files/l10n/cs_CZ.json index 55b374f9ea6..cc475fbfd5c 100644 --- a/apps/files/l10n/cs_CZ.json +++ b/apps/files/l10n/cs_CZ.json @@ -94,6 +94,9 @@ "%2$s deleted %1$s" : "%2$s smazal(a) %1$s", "You restored %1$s" : "Obnovili jste %1$s", "%2$s restored %1$s" : "%2$s obnovil(a) %1$s", + "Changed by %2$s" : "Změněno uživatelem %2$s", + "Deleted by %2$s" : "Smazáno uživatelem %2$s", + "Restored by %2$s" : "Obnoveno uživatelem %2$s", "%s could not be renamed as it has been deleted" : "%s nelze přejmenovat, protože byl smazán", "%s could not be renamed" : "%s nemůže být přejmenován", "Upload (max. %s)" : "Nahrát (max. %s)", diff --git a/apps/files/l10n/el.js b/apps/files/l10n/el.js index 895ffe19267..063c9f0fe44 100644 --- a/apps/files/l10n/el.js +++ b/apps/files/l10n/el.js @@ -96,6 +96,9 @@ OC.L10N.register( "%2$s deleted %1$s" : "Ο %2$s διέγραψε %1$s", "You restored %1$s" : "Επαναφέρατε %1$s", "%2$s restored %1$s" : "%2$s επανέφερε %1$s", + "Changed by %2$s" : "Άλλαξε από %2$s", + "Deleted by %2$s" : "Διαγράφηκε από %2$s", + "Restored by %2$s" : "Επαναφορά απο %2$s", "%s could not be renamed as it has been deleted" : "%s δεν μπορούσε να μετονομαστεί εφόσον είχε διαγραφεί", "%s could not be renamed" : "Αδυναμία μετονομασίας του %s", "Upload (max. %s)" : "Διαμοιρασμός (max. %s)", diff --git a/apps/files/l10n/el.json b/apps/files/l10n/el.json index 0d24b6c7015..b374964c8b6 100644 --- a/apps/files/l10n/el.json +++ b/apps/files/l10n/el.json @@ -94,6 +94,9 @@ "%2$s deleted %1$s" : "Ο %2$s διέγραψε %1$s", "You restored %1$s" : "Επαναφέρατε %1$s", "%2$s restored %1$s" : "%2$s επανέφερε %1$s", + "Changed by %2$s" : "Άλλαξε από %2$s", + "Deleted by %2$s" : "Διαγράφηκε από %2$s", + "Restored by %2$s" : "Επαναφορά απο %2$s", "%s could not be renamed as it has been deleted" : "%s δεν μπορούσε να μετονομαστεί εφόσον είχε διαγραφεί", "%s could not be renamed" : "Αδυναμία μετονομασίας του %s", "Upload (max. %s)" : "Διαμοιρασμός (max. %s)", diff --git a/apps/files/l10n/fa.js b/apps/files/l10n/fa.js index 1dc459ab584..b053d4af79b 100644 --- a/apps/files/l10n/fa.js +++ b/apps/files/l10n/fa.js @@ -94,6 +94,9 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s مورد %1$s را حذف کرد", "You restored %1$s" : "شما %1$s را بازگردانی کردید", "%2$s restored %1$s" : "%2$s %1$s را بازگردانی کرد", + "Changed by %2$s" : "تغییریافته توسط %2$s", + "Deleted by %2$s" : "حذف شده توسط %2$s", + "Restored by %2$s" : "بازگردانی شده توسط %2$s", "%s could not be renamed as it has been deleted" : "امکان تغییر نام %s با توجه به حذف شدن آن وجود ندارد", "%s could not be renamed" : "%s نمیتواند تغییر نام دهد.", "Upload (max. %s)" : "آپلود (بیشترین سایز %s)", diff --git a/apps/files/l10n/fa.json b/apps/files/l10n/fa.json index 4ea1170c288..0f745e7f243 100644 --- a/apps/files/l10n/fa.json +++ b/apps/files/l10n/fa.json @@ -92,6 +92,9 @@ "%2$s deleted %1$s" : "%2$s مورد %1$s را حذف کرد", "You restored %1$s" : "شما %1$s را بازگردانی کردید", "%2$s restored %1$s" : "%2$s %1$s را بازگردانی کرد", + "Changed by %2$s" : "تغییریافته توسط %2$s", + "Deleted by %2$s" : "حذف شده توسط %2$s", + "Restored by %2$s" : "بازگردانی شده توسط %2$s", "%s could not be renamed as it has been deleted" : "امکان تغییر نام %s با توجه به حذف شدن آن وجود ندارد", "%s could not be renamed" : "%s نمیتواند تغییر نام دهد.", "Upload (max. %s)" : "آپلود (بیشترین سایز %s)", diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js index bd39511a431..650401d6fa3 100644 --- a/apps/files/l10n/fr.js +++ b/apps/files/l10n/fr.js @@ -96,6 +96,9 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s a supprimé %1$s", "You restored %1$s" : "Vous avez restauré %1$s", "%2$s restored %1$s" : "%2$s a restauré %1$s", + "Changed by %2$s" : "Modifié par %2$s", + "Deleted by %2$s" : "Supprimé par %2$s", + "Restored by %2$s" : "Restauré par %2$s", "%s could not be renamed as it has been deleted" : "%s ne peut être renommé car il a été supprimé ", "%s could not be renamed" : "%s ne peut être renommé", "Upload (max. %s)" : "Envoi (max. %s)", @@ -109,7 +112,7 @@ OC.L10N.register( "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Utilisez cette adresse pour <a href=\"%s\" target=\"_blank\">accéder à vos fichiers par WebDAV</a>", "Cancel upload" : "Annuler l'envoi", - "No files in here" : "Aucun fichier ici", + "No files in here" : "Aucun fichier", "Upload some content or sync with your devices!" : "Déposez du contenu ou synchronisez vos appareils !", "No entries found in this folder" : "Aucune entrée trouvée dans ce dossier", "Select all" : "Tout sélectionner", diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json index dbff6e6731d..5f28b9d12e7 100644 --- a/apps/files/l10n/fr.json +++ b/apps/files/l10n/fr.json @@ -94,6 +94,9 @@ "%2$s deleted %1$s" : "%2$s a supprimé %1$s", "You restored %1$s" : "Vous avez restauré %1$s", "%2$s restored %1$s" : "%2$s a restauré %1$s", + "Changed by %2$s" : "Modifié par %2$s", + "Deleted by %2$s" : "Supprimé par %2$s", + "Restored by %2$s" : "Restauré par %2$s", "%s could not be renamed as it has been deleted" : "%s ne peut être renommé car il a été supprimé ", "%s could not be renamed" : "%s ne peut être renommé", "Upload (max. %s)" : "Envoi (max. %s)", @@ -107,7 +110,7 @@ "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Utilisez cette adresse pour <a href=\"%s\" target=\"_blank\">accéder à vos fichiers par WebDAV</a>", "Cancel upload" : "Annuler l'envoi", - "No files in here" : "Aucun fichier ici", + "No files in here" : "Aucun fichier", "Upload some content or sync with your devices!" : "Déposez du contenu ou synchronisez vos appareils !", "No entries found in this folder" : "Aucune entrée trouvée dans ce dossier", "Select all" : "Tout sélectionner", diff --git a/apps/files/l10n/hu_HU.js b/apps/files/l10n/hu_HU.js index dfa628279c9..5eff7a8f842 100644 --- a/apps/files/l10n/hu_HU.js +++ b/apps/files/l10n/hu_HU.js @@ -96,6 +96,9 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s törölte: %1$s", "You restored %1$s" : "Visszatöltötted %1$s", "%2$s restored %1$s" : "%1$s visszatöltötte %2$s", + "Changed by %2$s" : "Megváltoztatta: %2$s", + "Deleted by %2$s" : "Törölte: %2$s", + "Restored by %2$s" : "Visszaállította: %2$s", "%s could not be renamed as it has been deleted" : "%s nem lehet átnevezni, mivel törölve lett", "%s could not be renamed" : "%s átnevezése nem sikerült", "Upload (max. %s)" : "Feltöltés (max.: %s)", diff --git a/apps/files/l10n/hu_HU.json b/apps/files/l10n/hu_HU.json index 0a6c87b9892..da5eed09733 100644 --- a/apps/files/l10n/hu_HU.json +++ b/apps/files/l10n/hu_HU.json @@ -94,6 +94,9 @@ "%2$s deleted %1$s" : "%2$s törölte: %1$s", "You restored %1$s" : "Visszatöltötted %1$s", "%2$s restored %1$s" : "%1$s visszatöltötte %2$s", + "Changed by %2$s" : "Megváltoztatta: %2$s", + "Deleted by %2$s" : "Törölte: %2$s", + "Restored by %2$s" : "Visszaállította: %2$s", "%s could not be renamed as it has been deleted" : "%s nem lehet átnevezni, mivel törölve lett", "%s could not be renamed" : "%s átnevezése nem sikerült", "Upload (max. %s)" : "Feltöltés (max.: %s)", diff --git a/apps/files/l10n/nds.js b/apps/files/l10n/nds.js index 7988332fa91..9b28220ae43 100644 --- a/apps/files/l10n/nds.js +++ b/apps/files/l10n/nds.js @@ -1,9 +1,10 @@ OC.L10N.register( "files", { - "_%n folder_::_%n folders_" : ["",""], - "_%n file_::_%n files_" : ["",""], - "_Uploading %n file_::_Uploading %n files_" : ["",""], - "_matches '{filter}'_::_match '{filter}'_" : ["",""] + "Files" : "Dateien", + "Delete" : "Löschen", + "Name" : "Name", + "Settings" : "Einstellungen", + "WebDAV" : "WebDAV" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/nds.json b/apps/files/l10n/nds.json index ef5fc586755..4ab8de68b35 100644 --- a/apps/files/l10n/nds.json +++ b/apps/files/l10n/nds.json @@ -1,7 +1,8 @@ { "translations": { - "_%n folder_::_%n folders_" : ["",""], - "_%n file_::_%n files_" : ["",""], - "_Uploading %n file_::_Uploading %n files_" : ["",""], - "_matches '{filter}'_::_match '{filter}'_" : ["",""] + "Files" : "Dateien", + "Delete" : "Löschen", + "Name" : "Name", + "Settings" : "Einstellungen", + "WebDAV" : "WebDAV" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js index 60583d6baf1..270cc3c6a85 100644 --- a/apps/files/l10n/ru.js +++ b/apps/files/l10n/ru.js @@ -75,8 +75,10 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n байт","%n байта","%n байтов","%n байта(ов)"], "Favorited" : "Избранное", "Favorite" : "Избранное", + "{newname} already exists" : "{newname} уже существует", "Upload" : "Загрузить", "Text file" : "Текстовый файл", + "New text file.txt" : "Новый текстовый документ.txt", "Folder" : "Каталог", "New folder" : "Новый каталог", "An error occurred while trying to update the tags" : "Во время обновления тегов возникла ошибка", @@ -94,6 +96,9 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s удалил %1$s", "You restored %1$s" : "Вы восстановили %1$s", "%2$s restored %1$s" : "%2$s восстановил %1$s", + "Changed by %2$s" : "Изменено %2$s", + "Deleted by %2$s" : "Удалено %2$s", + "Restored by %2$s" : "Восстановлено %2$s", "%s could not be renamed as it has been deleted" : "Невозможно переименовать %s, поскольку объект удалён.", "%s could not be renamed" : "%s не может быть переименован", "Upload (max. %s)" : "Загрузка (максимум %s)", diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json index d15e181096f..36aae3834a9 100644 --- a/apps/files/l10n/ru.json +++ b/apps/files/l10n/ru.json @@ -73,8 +73,10 @@ "_%n byte_::_%n bytes_" : ["%n байт","%n байта","%n байтов","%n байта(ов)"], "Favorited" : "Избранное", "Favorite" : "Избранное", + "{newname} already exists" : "{newname} уже существует", "Upload" : "Загрузить", "Text file" : "Текстовый файл", + "New text file.txt" : "Новый текстовый документ.txt", "Folder" : "Каталог", "New folder" : "Новый каталог", "An error occurred while trying to update the tags" : "Во время обновления тегов возникла ошибка", @@ -92,6 +94,9 @@ "%2$s deleted %1$s" : "%2$s удалил %1$s", "You restored %1$s" : "Вы восстановили %1$s", "%2$s restored %1$s" : "%2$s восстановил %1$s", + "Changed by %2$s" : "Изменено %2$s", + "Deleted by %2$s" : "Удалено %2$s", + "Restored by %2$s" : "Восстановлено %2$s", "%s could not be renamed as it has been deleted" : "Невозможно переименовать %s, поскольку объект удалён.", "%s could not be renamed" : "%s не может быть переименован", "Upload (max. %s)" : "Загрузка (максимум %s)", diff --git a/apps/files/tests/ajax_rename.php b/apps/files/tests/ajax_rename.php index 8abde9094d9..45d49c9549d 100644 --- a/apps/files/tests/ajax_rename.php +++ b/apps/files/tests/ajax_rename.php @@ -5,6 +5,7 @@ * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author tbartenstein <tbartenstein@users.noreply.github.com> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> * diff --git a/apps/files_external/ajax/applicable.php b/apps/files_external/ajax/applicable.php index 5ae91c8e182..7f1b4dc9221 100644 --- a/apps/files_external/ajax/applicable.php +++ b/apps/files_external/ajax/applicable.php @@ -2,6 +2,7 @@ /** * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/ajax/oauth1.php b/apps/files_external/ajax/oauth1.php index ca339aeec58..3d6736b3b59 100644 --- a/apps/files_external/ajax/oauth1.php +++ b/apps/files_external/ajax/oauth1.php @@ -4,8 +4,8 @@ * @author Lukas Reschke <lukas@owncloud.com> * @author Michael Gapczynski <GapczynskiM@gmail.com> * @author Robin Appelman <icewind@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Volkan Gezer <volkangezer@gmail.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/ajax/oauth2.php b/apps/files_external/ajax/oauth2.php index 0a202e3ddcb..e3e32c4b912 100644 --- a/apps/files_external/ajax/oauth2.php +++ b/apps/files_external/ajax/oauth2.php @@ -6,6 +6,7 @@ * @author Lukas Reschke <lukas@owncloud.com> * @author Michael Gapczynski <GapczynskiM@gmail.com> * @author Robin Appelman <icewind@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Volkan Gezer <volkangezer@gmail.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_external/appinfo/app.php b/apps/files_external/appinfo/app.php index f33012b5f09..aa39d79a85e 100644 --- a/apps/files_external/appinfo/app.php +++ b/apps/files_external/appinfo/app.php @@ -1,18 +1,14 @@ <?php /** * @author Christian Berendt <berendt@b1-systems.de> - * @author fibsifan <fi@volans.uberspace.de> * @author Jan-Christoph Borchardt <hey@jancborchardt.net> * @author j-ed <juergen@eisfair.org> - * @author Martin Mattel <martin.mattel@diemattels.at> * @author Michael Gapczynski <GapczynskiM@gmail.com> - * @author Philipp Kapfer <philipp.kapfer@gmx.at> * @author Robin Appelman <icewind@owncloud.com> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Ross Nicoll <jrn@jrn.me.uk> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> - * @author Volkan Gezer <volkangezer@gmail.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/appinfo/application.php b/apps/files_external/appinfo/application.php index 3a222141fb5..c7deaaf270e 100644 --- a/apps/files_external/appinfo/application.php +++ b/apps/files_external/appinfo/application.php @@ -1,9 +1,10 @@ <?php /** * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Ross Nicoll <jrn@jrn.me.uk> * @author Vincent Petry <pvince81@owncloud.com> - * @author Robin McCorkell <rmccorkell@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/appinfo/routes.php b/apps/files_external/appinfo/routes.php index a371273e74e..a98a63c711d 100644 --- a/apps/files_external/appinfo/routes.php +++ b/apps/files_external/appinfo/routes.php @@ -3,6 +3,8 @@ * @author Joas Schilling <nickvergessen@owncloud.com> * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Ross Nicoll <jrn@jrn.me.uk> * @author Vincent Petry <pvince81@owncloud.com> * diff --git a/apps/files_external/controller/ajaxcontroller.php b/apps/files_external/controller/ajaxcontroller.php index c285cd34e70..b278d66c1c0 100644 --- a/apps/files_external/controller/ajaxcontroller.php +++ b/apps/files_external/controller/ajaxcontroller.php @@ -1,6 +1,7 @@ <?php /** * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Ross Nicoll <jrn@jrn.me.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_external/controller/globalstoragescontroller.php b/apps/files_external/controller/globalstoragescontroller.php index 3c1f2022505..e36d1fb2c03 100644 --- a/apps/files_external/controller/globalstoragescontroller.php +++ b/apps/files_external/controller/globalstoragescontroller.php @@ -1,5 +1,6 @@ <?php /** + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_external/controller/storagescontroller.php b/apps/files_external/controller/storagescontroller.php index 6a01112f8c5..f754565f628 100644 --- a/apps/files_external/controller/storagescontroller.php +++ b/apps/files_external/controller/storagescontroller.php @@ -1,5 +1,6 @@ <?php /** + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_external/controller/userstoragescontroller.php b/apps/files_external/controller/userstoragescontroller.php index f39f8a85d2d..71d1f7cca46 100644 --- a/apps/files_external/controller/userstoragescontroller.php +++ b/apps/files_external/controller/userstoragescontroller.php @@ -1,5 +1,6 @@ <?php /** + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_external/l10n/cs_CZ.js b/apps/files_external/l10n/cs_CZ.js index 59b3f9b148c..efa5f227a90 100644 --- a/apps/files_external/l10n/cs_CZ.js +++ b/apps/files_external/l10n/cs_CZ.js @@ -41,6 +41,7 @@ OC.L10N.register( "OpenStack" : "OpenStack", "Username" : "Uživatelské jméno", "Password" : "Heslo", + "Rackspace" : "Rackspace", "API key" : "Klíč API", "Username and password" : "Uživatelské jméno a heslo", "Session credentials" : "Přihlašovací údaje sezení", @@ -74,6 +75,7 @@ OC.L10N.register( "SMB / CIFS using OC login" : "SMB / CIFS za použití přihlašovacího jména OC", "Username as share" : "Uživatelské jméno jako sdílený adresář", "OpenStack Object Storage" : "OpenStack Object Storage", + "Service name" : "Jméno služby", "Request timeout (seconds)" : "Čas vypršení požadavku (sekundy)", "<b>Note:</b> " : "<b>Poznámka:</b>", "<b>Note:</b> The cURL 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> cURL 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.", diff --git a/apps/files_external/l10n/cs_CZ.json b/apps/files_external/l10n/cs_CZ.json index 08837e76a83..8aa349522f9 100644 --- a/apps/files_external/l10n/cs_CZ.json +++ b/apps/files_external/l10n/cs_CZ.json @@ -39,6 +39,7 @@ "OpenStack" : "OpenStack", "Username" : "Uživatelské jméno", "Password" : "Heslo", + "Rackspace" : "Rackspace", "API key" : "Klíč API", "Username and password" : "Uživatelské jméno a heslo", "Session credentials" : "Přihlašovací údaje sezení", @@ -72,6 +73,7 @@ "SMB / CIFS using OC login" : "SMB / CIFS za použití přihlašovacího jména OC", "Username as share" : "Uživatelské jméno jako sdílený adresář", "OpenStack Object Storage" : "OpenStack Object Storage", + "Service name" : "Jméno služby", "Request timeout (seconds)" : "Čas vypršení požadavku (sekundy)", "<b>Note:</b> " : "<b>Poznámka:</b>", "<b>Note:</b> The cURL 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> cURL 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.", diff --git a/apps/files_external/l10n/fa.js b/apps/files_external/l10n/fa.js index 53723eae96e..efcb4fea048 100644 --- a/apps/files_external/l10n/fa.js +++ b/apps/files_external/l10n/fa.js @@ -1,11 +1,17 @@ OC.L10N.register( "files_external", { + "Please provide a valid app key and secret." : "لطفا یک کلید و رمز معتبر برای برنامه فرآهم کنید.", + "Step 1 failed. Exception: %s" : "گام 1 ناموفق بود. خطا: %s", + "Step 2 failed. Exception: %s" : "گام 2ناموفق بود. خطا: %s", "External storage" : "حافظه خارجی", + "Storage with id \"%i\" not found" : "فضای ذخیرهسازی با شماره \"%i\" یافت نشد", "Personal" : "شخصی", "System" : "سیستم", "Grant access" : " مجوز اعطا دسترسی", "Access granted" : "مجوز دسترسی صادر شد", + "Error configuring OAuth1" : "خطا پیکربندی OAuth1", + "Error configuring OAuth2" : "خطا پیکربندی OAuth2", "Generate keys" : "تولید کلید", "Enable encryption" : "فعال کردن رمزگذاری", "Check for changes" : "بررسی برای تغییرات", @@ -15,6 +21,10 @@ OC.L10N.register( "Access key" : "کلید دسترسی", "Secret key" : "کلید مخفی", "None" : "هیچکدام", + "OAuth1" : "OAuth1", + "App secret" : "کد برنامه", + "OAuth2" : "OAuth2", + "OpenStack" : "OpenStack", "Username" : "نام کاربری", "Password" : "گذرواژه", "API key" : "کلید API ", diff --git a/apps/files_external/l10n/fa.json b/apps/files_external/l10n/fa.json index 98aa7c58827..9e4e3b00365 100644 --- a/apps/files_external/l10n/fa.json +++ b/apps/files_external/l10n/fa.json @@ -1,9 +1,15 @@ { "translations": { + "Please provide a valid app key and secret." : "لطفا یک کلید و رمز معتبر برای برنامه فرآهم کنید.", + "Step 1 failed. Exception: %s" : "گام 1 ناموفق بود. خطا: %s", + "Step 2 failed. Exception: %s" : "گام 2ناموفق بود. خطا: %s", "External storage" : "حافظه خارجی", + "Storage with id \"%i\" not found" : "فضای ذخیرهسازی با شماره \"%i\" یافت نشد", "Personal" : "شخصی", "System" : "سیستم", "Grant access" : " مجوز اعطا دسترسی", "Access granted" : "مجوز دسترسی صادر شد", + "Error configuring OAuth1" : "خطا پیکربندی OAuth1", + "Error configuring OAuth2" : "خطا پیکربندی OAuth2", "Generate keys" : "تولید کلید", "Enable encryption" : "فعال کردن رمزگذاری", "Check for changes" : "بررسی برای تغییرات", @@ -13,6 +19,10 @@ "Access key" : "کلید دسترسی", "Secret key" : "کلید مخفی", "None" : "هیچکدام", + "OAuth1" : "OAuth1", + "App secret" : "کد برنامه", + "OAuth2" : "OAuth2", + "OpenStack" : "OpenStack", "Username" : "نام کاربری", "Password" : "گذرواژه", "API key" : "کلید API ", diff --git a/apps/files_external/l10n/fr.js b/apps/files_external/l10n/fr.js index f183bfeef57..c5ceea05566 100644 --- a/apps/files_external/l10n/fr.js +++ b/apps/files_external/l10n/fr.js @@ -12,6 +12,8 @@ OC.L10N.register( "Invalid mount point" : "Point de montage non valide", "Objectstore forbidden" : "\"Objectstore\" interdit", "Invalid storage backend \"%s\"" : "Service de stockage non valide : \"%s\"", + "Not permitted to use backend \"%s\"" : "Non autorisé à utiliser backend \"%s\"", + "Not permitted to use authentication mechanism \"%s\"" : "Non autorisé à utiliser le mécanisme d'authentification \"%s\"", "Unsatisfied backend parameters" : "Paramètres manquants pour le service", "Unsatisfied authentication mechanism parameters" : "Paramètres manquants pour la méthode d'authentification", "Personal" : "Personnel", @@ -77,6 +79,7 @@ OC.L10N.register( "SMB / CIFS using OC login" : "SMB / CIFS en utilisant les identifiants OC", "Username as share" : "Nom d'utilisateur comme nom de partage", "OpenStack Object Storage" : "OpenStack Object Storage", + "Service name" : "Nom du service", "<b>Note:</b> " : "<b>Attention :</b>", "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Attention :</b> La prise en charge de cURL par PHP n'est pas activée ou installée. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.", "<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>Attention : </b> La prise en charge du FTP par PHP n'est pas activée ou installée. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.", diff --git a/apps/files_external/l10n/fr.json b/apps/files_external/l10n/fr.json index ed5c397f302..3eab0afee30 100644 --- a/apps/files_external/l10n/fr.json +++ b/apps/files_external/l10n/fr.json @@ -10,6 +10,8 @@ "Invalid mount point" : "Point de montage non valide", "Objectstore forbidden" : "\"Objectstore\" interdit", "Invalid storage backend \"%s\"" : "Service de stockage non valide : \"%s\"", + "Not permitted to use backend \"%s\"" : "Non autorisé à utiliser backend \"%s\"", + "Not permitted to use authentication mechanism \"%s\"" : "Non autorisé à utiliser le mécanisme d'authentification \"%s\"", "Unsatisfied backend parameters" : "Paramètres manquants pour le service", "Unsatisfied authentication mechanism parameters" : "Paramètres manquants pour la méthode d'authentification", "Personal" : "Personnel", @@ -75,6 +77,7 @@ "SMB / CIFS using OC login" : "SMB / CIFS en utilisant les identifiants OC", "Username as share" : "Nom d'utilisateur comme nom de partage", "OpenStack Object Storage" : "OpenStack Object Storage", + "Service name" : "Nom du service", "<b>Note:</b> " : "<b>Attention :</b>", "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Attention :</b> La prise en charge de cURL par PHP n'est pas activée ou installée. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.", "<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>Attention : </b> La prise en charge du FTP par PHP n'est pas activée ou installée. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.", diff --git a/apps/files_external/l10n/nds.js b/apps/files_external/l10n/nds.js new file mode 100644 index 00000000000..717417fdc2b --- /dev/null +++ b/apps/files_external/l10n/nds.js @@ -0,0 +1,102 @@ +OC.L10N.register( + "files_external", + { + "Fetching request tokens failed. Verify that your app key and secret are correct." : "Holen des Requesttokens fehlgeschlagen. Bitte überprüfe Schlüssel und Secret deiner App.", + "Fetching access tokens failed. Verify that your app key and secret are correct." : "Holen des Zugrifftokens fehlgeschlagen. Bitte überprüfe Schlüssel und Secret deiner App.", + "Please provide a valid app key and secret." : "Bitte verwende für deine App einen gültigen Schüssel und ein gültiges Secret.", + "Step 1 failed. Exception: %s" : "Schritt 1 fehlgeschlagen. Exception: %s", + "Step 2 failed. Exception: %s" : "Schritt 2 fehlgeschlagen. Exception: %s", + "External storage" : "Externer Speicher", + "Storage with id \"%i\" not found" : "Speicher mit der ID \"%i\" wurde nicht gefunden", + "Invalid backend or authentication mechanism class" : "Ungültige Klasse für das Backend oder für den Authentifizierungsmechanismus", + "Invalid mount point" : "Ungültiger Einhängepunkt", + "Objectstore forbidden" : "Objectstore nicht erlaubt", + "Invalid storage backend \"%s\"" : "Ungültiges Speicherbackend \"%s\"", + "Not permitted to use backend \"%s\"" : "Verwendung des Backends \"%s\" nicht erlaubt", + "Not permitted to use authentication mechanism \"%s\"" : "Verwendung des Authentifizierungsmechanismus \"%s\" nicht erlaubt", + "Unsatisfied backend parameters" : "Nicht bediente Backendparameter", + "Unsatisfied authentication mechanism parameters" : "Nicht bediente Authentifizierungsmechanismusparamter", + "Personal" : "Persönlich", + "System" : "System", + "Grant access" : "Erlaube Zugriff", + "Access granted" : "Zugriff erlaubt", + "Error configuring OAuth1" : "Fehler bei der Konfiguration von OAuth1", + "Error configuring OAuth2" : "Fehler bei der Konfiguration von OAuth2", + "Generate keys" : "Generiere Schlüssel", + "Error generating key pair" : "Fehler beim Generieren des Schlüsselpaars", + "Enable encryption" : "Verschlüsselung aktivieren", + "Enable previews" : "Vorschau aktivieren", + "Check for changes" : "Auf Änderungen prüfen", + "Never" : "Nie", + "Once every direct access" : "Einmal bei jedem direkten Zugriff", + "Every time the filesystem is used" : "Bei jeder Verwendung des Dateisystems", + "All users. Type to select user or group." : "Alle Benutzer. Tippe, um eine Benutzergruppe auszuwählen.", + "(group)" : "(Gruppe)", + "Saved" : "Gespeichert", + "Access key" : "Schlüssel für Zugriff", + "Secret key" : "Geheimer Schlüssel", + "Builtin" : "Eingebaut", + "None" : "Keine(r)", + "OAuth1" : "OAuth1", + "App key" : "App Schlüssel", + "App secret" : "App Secret", + "OAuth2" : "OAuth2", + "Client ID" : "Client ID", + "Client secret" : "Client Geheimnis", + "OpenStack" : "OpenStack", + "Username" : "Benutzername", + "Password" : "Passwort", + "API key" : "API Schlüssel", + "Username and password" : "Benutzername und Passwort", + "Session credentials" : "Anmeldedaten der Sitzung", + "RSA public key" : "Öffentlicher RSA Schlüssel", + "Public key" : "Öffentlicher Schlüssel", + "Amazon S3" : "Amazon S3", + "Hostname" : "Hostname", + "Port" : "Port", + "Region" : "Region", + "Enable SSL" : "SSL aktivieren", + "Enable Path Style" : "Path Style aktivieren", + "WebDAV" : "WebDAV", + "URL" : "URL", + "Remote subfolder" : "Entfernter Unterordner", + "Secure https://" : "Sicheres https://", + "Dropbox" : "Dropbox", + "FTP" : "FTP", + "Host" : "Host", + "Secure ftps://" : "Sicheres fpts://", + "Google Drive" : "Google Drive", + "Local" : "Lokal", + "Location" : "Ort", + "ownCloud" : "ownCloud", + "SFTP" : "SFTP", + "Root" : "Root", + "SFTP with secret key login" : "SFTP mit Anmeldung über geheimen Schlüssel", + "SMB / CIFS" : "SMB / CIFS", + "Share" : "Teilen", + "Domain" : "Domäne", + "SMB / CIFS using OC login" : "SMB / DIFS mit OC Anmeldung", + "Username as share" : "Benutzername als Freigabe", + "Service name" : "Name des Dienstes", + "Request timeout (seconds)" : "Zeitüberschreitung der Anfrage (Sekunden)", + "<b>Note:</b> " : "<b>Notiz:</b>", + "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Notiz:</b> Die cURL-Unterstützung ist in PHP nicht aktiviert oder nicht installiert, deshalb ist das Einhängen von %s nicht möglich. Bitte deinen Administrator diese zu installieren.", + "<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>Notiz:</b> Die FTP-Unterstützung ist in PHP nicht aktiviert oder nicht installiert, deshalb ist das Einhängen von %s nicht möglich. Bitte deinen Administrator diese zu installieren.", + "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Notiz:</b> \"%s\" ist nicht installiert, deshalb ist das Einhängen von %s nicht möglich. Bitte deinen Administrator diese zu installieren.", + "No external storage configured" : "Kein externer Speicher konfiguriert", + "You can add external storages in the personal settings" : "Du kannst externe Speicher in deinen persönlichen Einstellungen hinzufügen", + "Name" : "Name", + "Storage type" : "Speicherart", + "Scope" : "Bereich", + "External Storage" : "Externer Speicher", + "Folder name" : "Ordnername", + "Authentication" : "Authentifizierung", + "Configuration" : "Konfiguration", + "Available for" : "Verfügbar für", + "Advanced settings" : "Erweiterte Einstellungen", + "Delete" : "Löschen", + "Add storage" : "Speicher hinzufügen", + "Enable User External Storage" : "Externen Speicher für Nutzer aktivieren", + "Allow users to mount the following external storage" : "Erlaube Benutzern folgenden externen Speicher einzuhängen" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/nds.json b/apps/files_external/l10n/nds.json new file mode 100644 index 00000000000..b7c196ef64c --- /dev/null +++ b/apps/files_external/l10n/nds.json @@ -0,0 +1,100 @@ +{ "translations": { + "Fetching request tokens failed. Verify that your app key and secret are correct." : "Holen des Requesttokens fehlgeschlagen. Bitte überprüfe Schlüssel und Secret deiner App.", + "Fetching access tokens failed. Verify that your app key and secret are correct." : "Holen des Zugrifftokens fehlgeschlagen. Bitte überprüfe Schlüssel und Secret deiner App.", + "Please provide a valid app key and secret." : "Bitte verwende für deine App einen gültigen Schüssel und ein gültiges Secret.", + "Step 1 failed. Exception: %s" : "Schritt 1 fehlgeschlagen. Exception: %s", + "Step 2 failed. Exception: %s" : "Schritt 2 fehlgeschlagen. Exception: %s", + "External storage" : "Externer Speicher", + "Storage with id \"%i\" not found" : "Speicher mit der ID \"%i\" wurde nicht gefunden", + "Invalid backend or authentication mechanism class" : "Ungültige Klasse für das Backend oder für den Authentifizierungsmechanismus", + "Invalid mount point" : "Ungültiger Einhängepunkt", + "Objectstore forbidden" : "Objectstore nicht erlaubt", + "Invalid storage backend \"%s\"" : "Ungültiges Speicherbackend \"%s\"", + "Not permitted to use backend \"%s\"" : "Verwendung des Backends \"%s\" nicht erlaubt", + "Not permitted to use authentication mechanism \"%s\"" : "Verwendung des Authentifizierungsmechanismus \"%s\" nicht erlaubt", + "Unsatisfied backend parameters" : "Nicht bediente Backendparameter", + "Unsatisfied authentication mechanism parameters" : "Nicht bediente Authentifizierungsmechanismusparamter", + "Personal" : "Persönlich", + "System" : "System", + "Grant access" : "Erlaube Zugriff", + "Access granted" : "Zugriff erlaubt", + "Error configuring OAuth1" : "Fehler bei der Konfiguration von OAuth1", + "Error configuring OAuth2" : "Fehler bei der Konfiguration von OAuth2", + "Generate keys" : "Generiere Schlüssel", + "Error generating key pair" : "Fehler beim Generieren des Schlüsselpaars", + "Enable encryption" : "Verschlüsselung aktivieren", + "Enable previews" : "Vorschau aktivieren", + "Check for changes" : "Auf Änderungen prüfen", + "Never" : "Nie", + "Once every direct access" : "Einmal bei jedem direkten Zugriff", + "Every time the filesystem is used" : "Bei jeder Verwendung des Dateisystems", + "All users. Type to select user or group." : "Alle Benutzer. Tippe, um eine Benutzergruppe auszuwählen.", + "(group)" : "(Gruppe)", + "Saved" : "Gespeichert", + "Access key" : "Schlüssel für Zugriff", + "Secret key" : "Geheimer Schlüssel", + "Builtin" : "Eingebaut", + "None" : "Keine(r)", + "OAuth1" : "OAuth1", + "App key" : "App Schlüssel", + "App secret" : "App Secret", + "OAuth2" : "OAuth2", + "Client ID" : "Client ID", + "Client secret" : "Client Geheimnis", + "OpenStack" : "OpenStack", + "Username" : "Benutzername", + "Password" : "Passwort", + "API key" : "API Schlüssel", + "Username and password" : "Benutzername und Passwort", + "Session credentials" : "Anmeldedaten der Sitzung", + "RSA public key" : "Öffentlicher RSA Schlüssel", + "Public key" : "Öffentlicher Schlüssel", + "Amazon S3" : "Amazon S3", + "Hostname" : "Hostname", + "Port" : "Port", + "Region" : "Region", + "Enable SSL" : "SSL aktivieren", + "Enable Path Style" : "Path Style aktivieren", + "WebDAV" : "WebDAV", + "URL" : "URL", + "Remote subfolder" : "Entfernter Unterordner", + "Secure https://" : "Sicheres https://", + "Dropbox" : "Dropbox", + "FTP" : "FTP", + "Host" : "Host", + "Secure ftps://" : "Sicheres fpts://", + "Google Drive" : "Google Drive", + "Local" : "Lokal", + "Location" : "Ort", + "ownCloud" : "ownCloud", + "SFTP" : "SFTP", + "Root" : "Root", + "SFTP with secret key login" : "SFTP mit Anmeldung über geheimen Schlüssel", + "SMB / CIFS" : "SMB / CIFS", + "Share" : "Teilen", + "Domain" : "Domäne", + "SMB / CIFS using OC login" : "SMB / DIFS mit OC Anmeldung", + "Username as share" : "Benutzername als Freigabe", + "Service name" : "Name des Dienstes", + "Request timeout (seconds)" : "Zeitüberschreitung der Anfrage (Sekunden)", + "<b>Note:</b> " : "<b>Notiz:</b>", + "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Notiz:</b> Die cURL-Unterstützung ist in PHP nicht aktiviert oder nicht installiert, deshalb ist das Einhängen von %s nicht möglich. Bitte deinen Administrator diese zu installieren.", + "<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>Notiz:</b> Die FTP-Unterstützung ist in PHP nicht aktiviert oder nicht installiert, deshalb ist das Einhängen von %s nicht möglich. Bitte deinen Administrator diese zu installieren.", + "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Notiz:</b> \"%s\" ist nicht installiert, deshalb ist das Einhängen von %s nicht möglich. Bitte deinen Administrator diese zu installieren.", + "No external storage configured" : "Kein externer Speicher konfiguriert", + "You can add external storages in the personal settings" : "Du kannst externe Speicher in deinen persönlichen Einstellungen hinzufügen", + "Name" : "Name", + "Storage type" : "Speicherart", + "Scope" : "Bereich", + "External Storage" : "Externer Speicher", + "Folder name" : "Ordnername", + "Authentication" : "Authentifizierung", + "Configuration" : "Konfiguration", + "Available for" : "Verfügbar für", + "Advanced settings" : "Erweiterte Einstellungen", + "Delete" : "Löschen", + "Add storage" : "Speicher hinzufügen", + "Enable User External Storage" : "Externen Speicher für Nutzer aktivieren", + "Allow users to mount the following external storage" : "Erlaube Benutzern folgenden externen Speicher einzuhängen" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/files_external/l10n/ru.js b/apps/files_external/l10n/ru.js index e4415e2e2b3..7e4bfc18730 100644 --- a/apps/files_external/l10n/ru.js +++ b/apps/files_external/l10n/ru.js @@ -1,16 +1,27 @@ OC.L10N.register( "files_external", { + "Fetching request tokens failed. Verify that your app key and secret are correct." : "Ошибка получения токенов запроса. Проверьте корректность ключа и секрета приложения.", + "Fetching access tokens failed. Verify that your app key and secret are correct." : "Ошибка получения токенов доступа. Проверьте корректность ключа и секрета приложения.", + "Please provide a valid app key and secret." : "Пожалуйста укажите корректные ключ и секрет приложения.", "Step 1 failed. Exception: %s" : "Шаг 1 неудачен. Исключение: %s", "Step 2 failed. Exception: %s" : "Шаг 2 неудачен. Исключение: %s", "External storage" : "Внешнее хранилище", "Storage with id \"%i\" not found" : "Хранилище с идентификатором \"%i\" не найдено", + "Invalid backend or authentication mechanism class" : "Некорректный механизм авторизации или бэкенд", "Invalid mount point" : "Неправильная точка входа", + "Objectstore forbidden" : "Хранение объектов запрещено", "Invalid storage backend \"%s\"" : "Неверный бэкенд хранилища \"%s\"", + "Not permitted to use backend \"%s\"" : "Не допускается использование бэкенда \"%s\"", + "Not permitted to use authentication mechanism \"%s\"" : "Не допускается использование механизма авторизации \"%s\"", + "Unsatisfied backend parameters" : "Недопустимые настройки бэкенда", + "Unsatisfied authentication mechanism parameters" : "Недопустимые настройки механизма авторизации", "Personal" : "Личное", "System" : "Система", "Grant access" : "Предоставить доступ", "Access granted" : "Доступ предоставлен", + "Error configuring OAuth1" : "Ошибка настройки OAuth1", + "Error configuring OAuth2" : "Ошибка настройки OAuth2", "Generate keys" : "Создать ключи", "Error generating key pair" : "Ошибка создания ключевой пары", "Enable encryption" : "Включить шифрование", @@ -22,14 +33,26 @@ OC.L10N.register( "All users. Type to select user or group." : "Все пользователи. Введите имя пользователя или группы.", "(group)" : "(группа)", "Saved" : "Сохранено", + "Access key" : "Ключ доступа", + "Secret key" : "Секретный ключ", + "Builtin" : "Встроенный", "None" : "Отсутствует", + "OAuth1" : "OAuth1", "App key" : "Ключ приложения", "App secret" : "Секретный ключ ", + "OAuth2" : "OAuth2", "Client ID" : "Идентификатор клиента", "Client secret" : "Клиентский ключ ", + "OpenStack" : "OpenStack", "Username" : "Имя пользователя", "Password" : "Пароль", + "Tenant name" : "Имя арендатора", + "Identity endpoint URL" : "Удостоверение конечной точки URL", + "Rackspace" : "Rackspace", "API key" : "Ключ API", + "Username and password" : "Имя пользователя и пароль", + "Session credentials" : "Учетные данные сессии", + "RSA public key" : "Открытый ключ RSA", "Public key" : "Открытый ключ", "Amazon S3" : "Amazon S3", "Bucket" : "Корзина", @@ -43,17 +66,24 @@ OC.L10N.register( "Remote subfolder" : "Удаленный подкаталог", "Secure https://" : "Безопасный https://", "Dropbox" : "Dropbox", + "FTP" : "FTP", "Host" : "Сервер", "Secure ftps://" : "Защищённый ftps://", + "Google Drive" : "Google Drive", "Local" : "Локально", "Location" : "Местоположение", "ownCloud" : "ownCloud", + "SFTP" : "SFTP", "Root" : "Корневой каталог", "SFTP with secret key login" : "SFTP с помощью секретного ключа", + "SMB / CIFS" : "SMB / CIFS", "Share" : "Общий доступ", + "Domain" : "Домен", "SMB / CIFS using OC login" : "SMB / CIFS с ипользованием логина OC", "Username as share" : "Имя пользователя в качестве имени общего ресурса", "OpenStack Object Storage" : "Хранилище объектов OpenStack", + "Service name" : "Название сервиса", + "Request timeout (seconds)" : "Таймаут запроса (секунды)", "<b>Note:</b> " : "<b>Примечание:</b> ", "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Примечание:</b> Поддержка cURL в PHP не включена или не установлена. Монтирование %s невозможно. Обратитесь к вашему системному администратору.", "<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>Примечание:</b> Поддержка FTP в PHP не включена или не установлена. Монтирование %s невозможно. Пожалуйста, обратитесь к системному администратору.", @@ -65,6 +95,7 @@ OC.L10N.register( "Scope" : "Область", "External Storage" : "Внешнее хранилище", "Folder name" : "Имя каталога", + "Authentication" : "Авторизация", "Configuration" : "Конфигурация", "Available for" : "Доступно для", "Advanced settings" : "Расширенные настройки", diff --git a/apps/files_external/l10n/ru.json b/apps/files_external/l10n/ru.json index 1ea452f5408..50754b309ec 100644 --- a/apps/files_external/l10n/ru.json +++ b/apps/files_external/l10n/ru.json @@ -1,14 +1,25 @@ { "translations": { + "Fetching request tokens failed. Verify that your app key and secret are correct." : "Ошибка получения токенов запроса. Проверьте корректность ключа и секрета приложения.", + "Fetching access tokens failed. Verify that your app key and secret are correct." : "Ошибка получения токенов доступа. Проверьте корректность ключа и секрета приложения.", + "Please provide a valid app key and secret." : "Пожалуйста укажите корректные ключ и секрет приложения.", "Step 1 failed. Exception: %s" : "Шаг 1 неудачен. Исключение: %s", "Step 2 failed. Exception: %s" : "Шаг 2 неудачен. Исключение: %s", "External storage" : "Внешнее хранилище", "Storage with id \"%i\" not found" : "Хранилище с идентификатором \"%i\" не найдено", + "Invalid backend or authentication mechanism class" : "Некорректный механизм авторизации или бэкенд", "Invalid mount point" : "Неправильная точка входа", + "Objectstore forbidden" : "Хранение объектов запрещено", "Invalid storage backend \"%s\"" : "Неверный бэкенд хранилища \"%s\"", + "Not permitted to use backend \"%s\"" : "Не допускается использование бэкенда \"%s\"", + "Not permitted to use authentication mechanism \"%s\"" : "Не допускается использование механизма авторизации \"%s\"", + "Unsatisfied backend parameters" : "Недопустимые настройки бэкенда", + "Unsatisfied authentication mechanism parameters" : "Недопустимые настройки механизма авторизации", "Personal" : "Личное", "System" : "Система", "Grant access" : "Предоставить доступ", "Access granted" : "Доступ предоставлен", + "Error configuring OAuth1" : "Ошибка настройки OAuth1", + "Error configuring OAuth2" : "Ошибка настройки OAuth2", "Generate keys" : "Создать ключи", "Error generating key pair" : "Ошибка создания ключевой пары", "Enable encryption" : "Включить шифрование", @@ -20,14 +31,26 @@ "All users. Type to select user or group." : "Все пользователи. Введите имя пользователя или группы.", "(group)" : "(группа)", "Saved" : "Сохранено", + "Access key" : "Ключ доступа", + "Secret key" : "Секретный ключ", + "Builtin" : "Встроенный", "None" : "Отсутствует", + "OAuth1" : "OAuth1", "App key" : "Ключ приложения", "App secret" : "Секретный ключ ", + "OAuth2" : "OAuth2", "Client ID" : "Идентификатор клиента", "Client secret" : "Клиентский ключ ", + "OpenStack" : "OpenStack", "Username" : "Имя пользователя", "Password" : "Пароль", + "Tenant name" : "Имя арендатора", + "Identity endpoint URL" : "Удостоверение конечной точки URL", + "Rackspace" : "Rackspace", "API key" : "Ключ API", + "Username and password" : "Имя пользователя и пароль", + "Session credentials" : "Учетные данные сессии", + "RSA public key" : "Открытый ключ RSA", "Public key" : "Открытый ключ", "Amazon S3" : "Amazon S3", "Bucket" : "Корзина", @@ -41,17 +64,24 @@ "Remote subfolder" : "Удаленный подкаталог", "Secure https://" : "Безопасный https://", "Dropbox" : "Dropbox", + "FTP" : "FTP", "Host" : "Сервер", "Secure ftps://" : "Защищённый ftps://", + "Google Drive" : "Google Drive", "Local" : "Локально", "Location" : "Местоположение", "ownCloud" : "ownCloud", + "SFTP" : "SFTP", "Root" : "Корневой каталог", "SFTP with secret key login" : "SFTP с помощью секретного ключа", + "SMB / CIFS" : "SMB / CIFS", "Share" : "Общий доступ", + "Domain" : "Домен", "SMB / CIFS using OC login" : "SMB / CIFS с ипользованием логина OC", "Username as share" : "Имя пользователя в качестве имени общего ресурса", "OpenStack Object Storage" : "Хранилище объектов OpenStack", + "Service name" : "Название сервиса", + "Request timeout (seconds)" : "Таймаут запроса (секунды)", "<b>Note:</b> " : "<b>Примечание:</b> ", "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Примечание:</b> Поддержка cURL в PHP не включена или не установлена. Монтирование %s невозможно. Обратитесь к вашему системному администратору.", "<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>Примечание:</b> Поддержка FTP в PHP не включена или не установлена. Монтирование %s невозможно. Пожалуйста, обратитесь к системному администратору.", @@ -63,6 +93,7 @@ "Scope" : "Область", "External Storage" : "Внешнее хранилище", "Folder name" : "Имя каталога", + "Authentication" : "Авторизация", "Configuration" : "Конфигурация", "Available for" : "Доступно для", "Advanced settings" : "Расширенные настройки", diff --git a/apps/files_external/lib/amazons3.php b/apps/files_external/lib/amazons3.php index 24a0346df63..00915140bab 100644 --- a/apps/files_external/lib/amazons3.php +++ b/apps/files_external/lib/amazons3.php @@ -7,6 +7,7 @@ * @author Christopher T. Johnson <ctjctj@gmail.com> * @author Johan Björk <johanimon@gmail.com> * @author Jörn Friedrich Dreyer <jfd@butonic.de> + * @author Martin Mattel <martin.mattel@diemattels.at> * @author Michael Gapczynski <GapczynskiM@gmail.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Philipp Kapfer <philipp.kapfer@gmx.at> diff --git a/apps/files_external/lib/api.php b/apps/files_external/lib/api.php index 015c15c41ff..af9b802e522 100644 --- a/apps/files_external/lib/api.php +++ b/apps/files_external/lib/api.php @@ -2,6 +2,7 @@ /** * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_external/lib/auth/amazons3/accesskey.php b/apps/files_external/lib/auth/amazons3/accesskey.php index 9e3aab374b9..d265db6279f 100644 --- a/apps/files_external/lib/auth/amazons3/accesskey.php +++ b/apps/files_external/lib/auth/amazons3/accesskey.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/auth/authmechanism.php b/apps/files_external/lib/auth/authmechanism.php index 2ab34ed0105..e695cbbebd5 100644 --- a/apps/files_external/lib/auth/authmechanism.php +++ b/apps/files_external/lib/auth/authmechanism.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/auth/builtin.php b/apps/files_external/lib/auth/builtin.php index ee28a4e8a5c..8fb4c901cbc 100644 --- a/apps/files_external/lib/auth/builtin.php +++ b/apps/files_external/lib/auth/builtin.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/auth/nullmechanism.php b/apps/files_external/lib/auth/nullmechanism.php index 1765fc67396..399c8301c5a 100644 --- a/apps/files_external/lib/auth/nullmechanism.php +++ b/apps/files_external/lib/auth/nullmechanism.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/auth/oauth1/oauth1.php b/apps/files_external/lib/auth/oauth1/oauth1.php index 3fb1b16aa6d..7bdd01d4c16 100644 --- a/apps/files_external/lib/auth/oauth1/oauth1.php +++ b/apps/files_external/lib/auth/oauth1/oauth1.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/auth/oauth2/oauth2.php b/apps/files_external/lib/auth/oauth2/oauth2.php index 73faa85a44e..7123f8c16e3 100644 --- a/apps/files_external/lib/auth/oauth2/oauth2.php +++ b/apps/files_external/lib/auth/oauth2/oauth2.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/auth/openstack/openstack.php b/apps/files_external/lib/auth/openstack/openstack.php index faf356bcf2e..757fdab9ea6 100644 --- a/apps/files_external/lib/auth/openstack/openstack.php +++ b/apps/files_external/lib/auth/openstack/openstack.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/auth/openstack/rackspace.php b/apps/files_external/lib/auth/openstack/rackspace.php index 9268f3aad87..395b58e6fae 100644 --- a/apps/files_external/lib/auth/openstack/rackspace.php +++ b/apps/files_external/lib/auth/openstack/rackspace.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/auth/password/password.php b/apps/files_external/lib/auth/password/password.php index 96ad4b496d4..d3444cb1419 100644 --- a/apps/files_external/lib/auth/password/password.php +++ b/apps/files_external/lib/auth/password/password.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/auth/password/sessioncredentials.php b/apps/files_external/lib/auth/password/sessioncredentials.php index 37cfd97a176..8e36ff5f1d8 100644 --- a/apps/files_external/lib/auth/password/sessioncredentials.php +++ b/apps/files_external/lib/auth/password/sessioncredentials.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/auth/publickey/rsa.php b/apps/files_external/lib/auth/publickey/rsa.php index f40136dda01..4e19f90c83b 100644 --- a/apps/files_external/lib/auth/publickey/rsa.php +++ b/apps/files_external/lib/auth/publickey/rsa.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/backend/amazons3.php b/apps/files_external/lib/backend/amazons3.php index 1cf62d7cb09..538b53637e3 100644 --- a/apps/files_external/lib/backend/amazons3.php +++ b/apps/files_external/lib/backend/amazons3.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/backend/backend.php b/apps/files_external/lib/backend/backend.php index 68585cf377e..9868519ed4f 100644 --- a/apps/files_external/lib/backend/backend.php +++ b/apps/files_external/lib/backend/backend.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/backend/dav.php b/apps/files_external/lib/backend/dav.php index c4f446548e1..abc5103c70f 100644 --- a/apps/files_external/lib/backend/dav.php +++ b/apps/files_external/lib/backend/dav.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/backend/dropbox.php b/apps/files_external/lib/backend/dropbox.php index 3e595cb0a9c..01b7a62edbe 100644 --- a/apps/files_external/lib/backend/dropbox.php +++ b/apps/files_external/lib/backend/dropbox.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/backend/ftp.php b/apps/files_external/lib/backend/ftp.php index 1caf3a8fcb8..8f3dfffc77b 100644 --- a/apps/files_external/lib/backend/ftp.php +++ b/apps/files_external/lib/backend/ftp.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/backend/google.php b/apps/files_external/lib/backend/google.php index bc0b52c464b..14b2815b6e5 100644 --- a/apps/files_external/lib/backend/google.php +++ b/apps/files_external/lib/backend/google.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/backend/legacybackend.php b/apps/files_external/lib/backend/legacybackend.php index 83a5b45940d..5ebf143f749 100644 --- a/apps/files_external/lib/backend/legacybackend.php +++ b/apps/files_external/lib/backend/legacybackend.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/backend/local.php b/apps/files_external/lib/backend/local.php index a80b437fab7..7827055eeac 100644 --- a/apps/files_external/lib/backend/local.php +++ b/apps/files_external/lib/backend/local.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/backend/owncloud.php b/apps/files_external/lib/backend/owncloud.php index d06625de241..d10f0b3bd0b 100644 --- a/apps/files_external/lib/backend/owncloud.php +++ b/apps/files_external/lib/backend/owncloud.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/backend/sftp.php b/apps/files_external/lib/backend/sftp.php index c0bcd27c54b..d3fcd41d520 100644 --- a/apps/files_external/lib/backend/sftp.php +++ b/apps/files_external/lib/backend/sftp.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/backend/sftp_key.php b/apps/files_external/lib/backend/sftp_key.php index 13f45f1140c..8db5761c1b2 100644 --- a/apps/files_external/lib/backend/sftp_key.php +++ b/apps/files_external/lib/backend/sftp_key.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/backend/smb.php b/apps/files_external/lib/backend/smb.php index 7865b44d689..aa91cf51e85 100644 --- a/apps/files_external/lib/backend/smb.php +++ b/apps/files_external/lib/backend/smb.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/backend/smb_oc.php b/apps/files_external/lib/backend/smb_oc.php index 9fc17400884..b84b0b9dcb1 100644 --- a/apps/files_external/lib/backend/smb_oc.php +++ b/apps/files_external/lib/backend/smb_oc.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/backend/swift.php b/apps/files_external/lib/backend/swift.php index 2e14855206c..8c64c791ad8 100644 --- a/apps/files_external/lib/backend/swift.php +++ b/apps/files_external/lib/backend/swift.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/config.php b/apps/files_external/lib/config.php index 457fd58f0f8..d9fdb748fcd 100644 --- a/apps/files_external/lib/config.php +++ b/apps/files_external/lib/config.php @@ -1,10 +1,10 @@ <?php /** + * @author Andreas Fischer <bantu@owncloud.com> * @author Bart Visscher <bartv@thisnet.nl> * @author Björn Schießle <schiessle@owncloud.com> * @author Frank Karlitschek <frank@owncloud.org> * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@owncloud.com> * @author Michael Gapczynski <GapczynskiM@gmail.com> * @author Morris Jobke <hey@morrisjobke.de> diff --git a/apps/files_external/lib/config/configadapter.php b/apps/files_external/lib/config/configadapter.php index fb36e011655..3a04512e8a8 100644 --- a/apps/files_external/lib/config/configadapter.php +++ b/apps/files_external/lib/config/configadapter.php @@ -2,7 +2,7 @@ /** * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/dependencytrait.php b/apps/files_external/lib/dependencytrait.php index f0d6d6080e5..f112f6c2e66 100644 --- a/apps/files_external/lib/dependencytrait.php +++ b/apps/files_external/lib/dependencytrait.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/failedstorage.php b/apps/files_external/lib/failedstorage.php index 22ee5326491..c3181fd6b02 100644 --- a/apps/files_external/lib/failedstorage.php +++ b/apps/files_external/lib/failedstorage.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/frontenddefinitiontrait.php b/apps/files_external/lib/frontenddefinitiontrait.php index a5fb1a3f62f..d3b78aa56d4 100644 --- a/apps/files_external/lib/frontenddefinitiontrait.php +++ b/apps/files_external/lib/frontenddefinitiontrait.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/google.php b/apps/files_external/lib/google.php index 94f954178c0..eba2ee7f9b5 100644 --- a/apps/files_external/lib/google.php +++ b/apps/files_external/lib/google.php @@ -10,6 +10,7 @@ * @author Morris Jobke <hey@morrisjobke.de> * @author Philipp Kapfer <philipp.kapfer@gmx.at> * @author Robin Appelman <icewind@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> * diff --git a/apps/files_external/lib/identifiertrait.php b/apps/files_external/lib/identifiertrait.php index 7f36144e474..913e1899db8 100644 --- a/apps/files_external/lib/identifiertrait.php +++ b/apps/files_external/lib/identifiertrait.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/insufficientdataformeaningfulanswerexception.php b/apps/files_external/lib/insufficientdataformeaningfulanswerexception.php index dd4cd75df12..f77667cb70a 100644 --- a/apps/files_external/lib/insufficientdataformeaningfulanswerexception.php +++ b/apps/files_external/lib/insufficientdataformeaningfulanswerexception.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/legacydependencycheckpolyfill.php b/apps/files_external/lib/legacydependencycheckpolyfill.php index 7bb137fb3e1..bd0095debcd 100644 --- a/apps/files_external/lib/legacydependencycheckpolyfill.php +++ b/apps/files_external/lib/legacydependencycheckpolyfill.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/personalmount.php b/apps/files_external/lib/personalmount.php index d177f1a1ad0..26f68ba32db 100644 --- a/apps/files_external/lib/personalmount.php +++ b/apps/files_external/lib/personalmount.php @@ -2,6 +2,7 @@ /** * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/sessionstoragewrapper.php b/apps/files_external/lib/sessionstoragewrapper.php index f8f5aba53a2..e45589c4472 100644 --- a/apps/files_external/lib/sessionstoragewrapper.php +++ b/apps/files_external/lib/sessionstoragewrapper.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/sftp.php b/apps/files_external/lib/sftp.php index 921e7283c66..5dcc7686ca3 100644 --- a/apps/files_external/lib/sftp.php +++ b/apps/files_external/lib/sftp.php @@ -7,6 +7,7 @@ * @author Lennart Rosam <lennart.rosam@medien-systempartner.de> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin Appelman <icewind@owncloud.com> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Ross Nicoll <jrn@jrn.me.uk> * @author SA <stephen@mthosting.net> diff --git a/apps/files_external/lib/storageconfig.php b/apps/files_external/lib/storageconfig.php index aeb8f527078..70aaa186783 100644 --- a/apps/files_external/lib/storageconfig.php +++ b/apps/files_external/lib/storageconfig.php @@ -1,5 +1,6 @@ <?php /** + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_external/lib/storagemodifiertrait.php b/apps/files_external/lib/storagemodifiertrait.php index 3af0bb234d9..6d31ce8999a 100644 --- a/apps/files_external/lib/storagemodifiertrait.php +++ b/apps/files_external/lib/storagemodifiertrait.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/lib/swift.php b/apps/files_external/lib/swift.php index 20d2b8f4988..b9454b8d671 100644 --- a/apps/files_external/lib/swift.php +++ b/apps/files_external/lib/swift.php @@ -5,6 +5,7 @@ * @author Christian Berendt <berendt@b1-systems.de> * @author Felix Moeller <mail@felixmoeller.de> * @author Jörn Friedrich Dreyer <jfd@butonic.de> + * @author Martin Mattel <martin.mattel@diemattels.at> * @author Morris Jobke <hey@morrisjobke.de> * @author Philipp Kapfer <philipp.kapfer@gmx.at> * @author Robin Appelman <icewind@owncloud.com> diff --git a/apps/files_external/personal.php b/apps/files_external/personal.php index f048d65540b..df15c3bd258 100644 --- a/apps/files_external/personal.php +++ b/apps/files_external/personal.php @@ -5,6 +5,7 @@ * @author Michael Gapczynski <GapczynskiM@gmail.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_external/service/globalstoragesservice.php b/apps/files_external/service/globalstoragesservice.php index 49ffea43d1b..ec9b8e782fa 100644 --- a/apps/files_external/service/globalstoragesservice.php +++ b/apps/files_external/service/globalstoragesservice.php @@ -1,7 +1,7 @@ <?php /** * @author Lukas Reschke <lukas@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_external/service/storagesservice.php b/apps/files_external/service/storagesservice.php index 83a82de0bed..41bb0ca9b80 100644 --- a/apps/files_external/service/storagesservice.php +++ b/apps/files_external/service/storagesservice.php @@ -1,7 +1,7 @@ <?php /** * @author Lukas Reschke <lukas@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. @@ -550,6 +550,21 @@ abstract class StoragesService { $this->writeConfig($allStorages); $this->triggerHooks($deletedStorage, Filesystem::signal_delete_mount); + + // delete oc_storages entries and oc_filecache + try { + $rustyStorageId = $this->getRustyStorageIdFromConfig($deletedStorage); + \OC\Files\Cache\Storage::remove($rustyStorageId); + } catch (\Exception $e) { + // can happen either for invalid configs where the storage could not + // be instantiated or whenever $user vars where used, in which case + // the storage id could not be computed + \OCP\Util::writeLog( + 'files_external', + 'Exception: "' . $e->getMessage() . '"', + \OCP\Util::ERROR + ); + } } /** @@ -570,4 +585,30 @@ abstract class StoragesService { return (max(array_keys($allStorages)) + 1); } + /** + * Returns the rusty storage id from oc_storages from the given storage config. + * + * @param StorageConfig $storageConfig + * @return string rusty storage id + */ + private function getRustyStorageIdFromConfig(StorageConfig $storageConfig) { + // if any of the storage options contains $user, it is not possible + // to compute the possible storage id as we don't know which users + // mounted it already (and we certainly don't want to iterate over ALL users) + foreach ($storageConfig->getBackendOptions() as $value) { + if (strpos($value, '$user') !== false) { + throw new \Exception('Cannot compute storage id for deletion due to $user vars in the configuration'); + } + } + + // note: similar to ConfigAdapter->prepateStorageConfig() + $storageConfig->getAuthMechanism()->manipulateStorageConfig($storageConfig); + $storageConfig->getBackend()->manipulateStorageConfig($storageConfig); + + $class = $storageConfig->getBackend()->getStorageClass(); + $storageImpl = new $class($storageConfig->getBackendOptions()); + + return $storageImpl->getId(); + } + } diff --git a/apps/files_external/service/userglobalstoragesservice.php b/apps/files_external/service/userglobalstoragesservice.php index 7c60bc6d497..afe77e1e059 100644 --- a/apps/files_external/service/userglobalstoragesservice.php +++ b/apps/files_external/service/userglobalstoragesservice.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/service/userstoragesservice.php b/apps/files_external/service/userstoragesservice.php index 6e3c327c09c..a8cdf60ad9c 100644 --- a/apps/files_external/service/userstoragesservice.php +++ b/apps/files_external/service/userstoragesservice.php @@ -1,5 +1,6 @@ <?php /** + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_external/service/usertrait.php b/apps/files_external/service/usertrait.php index 4f84543565c..924f358f939 100644 --- a/apps/files_external/service/usertrait.php +++ b/apps/files_external/service/usertrait.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/settings.php b/apps/files_external/settings.php index f82ab035c1c..03ed363bdb2 100644 --- a/apps/files_external/settings.php +++ b/apps/files_external/settings.php @@ -7,7 +7,7 @@ * @author Michael Gapczynski <GapczynskiM@gmail.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> - * @author Vincent Petry <pvince81@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/tests/auth/authmechanismtest.php b/apps/files_external/tests/auth/authmechanismtest.php index b09d65a02df..6933cc988b1 100644 --- a/apps/files_external/tests/auth/authmechanismtest.php +++ b/apps/files_external/tests/auth/authmechanismtest.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/tests/backend/backendtest.php b/apps/files_external/tests/backend/backendtest.php index 4956a923e94..9e0e27c824b 100644 --- a/apps/files_external/tests/backend/backendtest.php +++ b/apps/files_external/tests/backend/backendtest.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/tests/backend/legacybackendtest.php b/apps/files_external/tests/backend/legacybackendtest.php index d57810de29b..6c977522e9e 100644 --- a/apps/files_external/tests/backend/legacybackendtest.php +++ b/apps/files_external/tests/backend/legacybackendtest.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/tests/backends/amazons3.php b/apps/files_external/tests/backends/amazons3.php index 7e88f3d0b74..c16581a4495 100644 --- a/apps/files_external/tests/backends/amazons3.php +++ b/apps/files_external/tests/backends/amazons3.php @@ -1,10 +1,10 @@ <?php /** * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Michael Gapczynski <GapczynskiM@gmail.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/tests/backends/sftp_key.php b/apps/files_external/tests/backends/sftp_key.php index c83d12251aa..6e8ac9f7239 100644 --- a/apps/files_external/tests/backends/sftp_key.php +++ b/apps/files_external/tests/backends/sftp_key.php @@ -2,6 +2,7 @@ /** * @author Morris Jobke <hey@morrisjobke.de> * @author Ross Nicoll <jrn@jrn.me.uk> + * @author Viktor Szépe <viktor@szepe.net> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/tests/controller/globalstoragescontrollertest.php b/apps/files_external/tests/controller/globalstoragescontrollertest.php index 6b020198bd8..37b5fed1481 100644 --- a/apps/files_external/tests/controller/globalstoragescontrollertest.php +++ b/apps/files_external/tests/controller/globalstoragescontrollertest.php @@ -1,5 +1,6 @@ <?php /** + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_external/tests/controller/storagescontrollertest.php b/apps/files_external/tests/controller/storagescontrollertest.php index 5e1deb821f4..8a7acf81009 100644 --- a/apps/files_external/tests/controller/storagescontrollertest.php +++ b/apps/files_external/tests/controller/storagescontrollertest.php @@ -1,7 +1,7 @@ <?php /** + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Vincent Petry <pvince81@owncloud.com> - * @author Robin McCorkell <rmccorkell@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/tests/controller/userstoragescontrollertest.php b/apps/files_external/tests/controller/userstoragescontrollertest.php index 33ef274c87c..acb25d11d09 100644 --- a/apps/files_external/tests/controller/userstoragescontrollertest.php +++ b/apps/files_external/tests/controller/userstoragescontrollertest.php @@ -1,5 +1,6 @@ <?php /** + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_external/tests/definitionparameterttest.php b/apps/files_external/tests/definitionparameterttest.php index 22e0b842254..3983a805dad 100644 --- a/apps/files_external/tests/definitionparameterttest.php +++ b/apps/files_external/tests/definitionparameterttest.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/tests/frontenddefinitiontraittest.php b/apps/files_external/tests/frontenddefinitiontraittest.php index d92d02b9854..d446813fe92 100644 --- a/apps/files_external/tests/frontenddefinitiontraittest.php +++ b/apps/files_external/tests/frontenddefinitiontraittest.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/tests/legacydependencycheckpolyfilltest.php b/apps/files_external/tests/legacydependencycheckpolyfilltest.php index 49d825d77aa..41109b63c1e 100644 --- a/apps/files_external/tests/legacydependencycheckpolyfilltest.php +++ b/apps/files_external/tests/legacydependencycheckpolyfilltest.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/tests/service/backendservicetest.php b/apps/files_external/tests/service/backendservicetest.php index 414a9eee2ec..5097b479a5f 100644 --- a/apps/files_external/tests/service/backendservicetest.php +++ b/apps/files_external/tests/service/backendservicetest.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/tests/service/globalstoragesservicetest.php b/apps/files_external/tests/service/globalstoragesservicetest.php index 94c34c221fc..c129365913f 100644 --- a/apps/files_external/tests/service/globalstoragesservicetest.php +++ b/apps/files_external/tests/service/globalstoragesservicetest.php @@ -1,5 +1,6 @@ <?php /** + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_external/tests/service/storagesservicetest.php b/apps/files_external/tests/service/storagesservicetest.php index ddf52e6272e..7487ba459af 100644 --- a/apps/files_external/tests/service/storagesservicetest.php +++ b/apps/files_external/tests/service/storagesservicetest.php @@ -1,7 +1,7 @@ <?php /** + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Vincent Petry <pvince81@owncloud.com> - * @author Robin McCorkell <rmccorkell@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 @@ -216,18 +216,57 @@ abstract class StoragesServiceTest extends \Test\TestCase { $this->service->updateStorage($storage); } - public function testDeleteStorage() { + public function deleteStorageDataProvider() { + return [ + // regular case, can properly delete the oc_storages entry + [ + [ + 'share' => 'share', + 'host' => 'example.com', + 'user' => 'test', + 'password' => 'testPassword', + 'root' => 'someroot', + ], + 'smb::test@example.com//share//someroot/', + 0 + ], + // special case with $user vars, cannot auto-remove the oc_storages entry + [ + [ + 'share' => 'share', + 'host' => 'example.com', + 'user' => '$user', + 'password' => 'testPassword', + 'root' => 'someroot', + ], + 'smb::someone@example.com//share//someroot/', + 1 + ], + ]; + } + + /** + * @dataProvider deleteStorageDataProvider + */ + public function testDeleteStorage($backendOptions, $rustyStorageId, $expectedCountAfterDeletion) { $backend = $this->backendService->getBackend('identifier:\OCA\Files_External\Lib\Backend\SMB'); $authMechanism = $this->backendService->getAuthMechanism('identifier:\Auth\Mechanism'); $storage = new StorageConfig(255); $storage->setMountPoint('mountpoint'); $storage->setBackend($backend); $storage->setAuthMechanism($authMechanism); - $storage->setBackendOptions(['password' => 'testPassword']); + $storage->setBackendOptions($backendOptions); $newStorage = $this->service->addStorage($storage); $this->assertEquals(1, $newStorage->getId()); + // manually trigger storage entry because normally it happens on first + // access, which isn't possible within this test + $storageCache = new \OC\Files\Cache\Storage($rustyStorageId); + + // get numeric id for later check + $numericId = $storageCache->getNumericId(); + $newStorage = $this->service->removeStorage(1); $caught = false; @@ -238,6 +277,13 @@ abstract class StoragesServiceTest extends \Test\TestCase { } $this->assertTrue($caught); + + // storage id was removed from oc_storages + $qb = \OC::$server->getDatabaseConnection()->getQueryBuilder(); + $storageCheckQuery = $qb->select('*') + ->from('storages') + ->where($qb->expr()->eq('numeric_id', $qb->expr()->literal($numericId))); + $this->assertCount($expectedCountAfterDeletion, $storageCheckQuery->execute()->fetchAll()); } /** diff --git a/apps/files_external/tests/service/userglobalstoragesservicetest.php b/apps/files_external/tests/service/userglobalstoragesservicetest.php index b6dc952605d..7c2516f0477 100644 --- a/apps/files_external/tests/service/userglobalstoragesservicetest.php +++ b/apps/files_external/tests/service/userglobalstoragesservicetest.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_external/tests/service/userstoragesservicetest.php b/apps/files_external/tests/service/userstoragesservicetest.php index 8bbfbe5a050..78f9231c3d1 100644 --- a/apps/files_external/tests/service/userstoragesservicetest.php +++ b/apps/files_external/tests/service/userstoragesservicetest.php @@ -1,5 +1,6 @@ <?php /** + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. @@ -137,8 +138,11 @@ class UserStoragesServiceTest extends StoragesServiceTest { $this->assertEmpty(self::$hookCalls); } - public function testDeleteStorage() { - parent::testDeleteStorage(); + /** + * @dataProvider deleteStorageDataProvider + */ + public function testDeleteStorage($backendOptions, $rustyStorageId, $expectedCountAfterDeletion) { + parent::testDeleteStorage($backendOptions, $rustyStorageId, $expectedCountAfterDeletion); // hook called once for user (first one was during test creation) $this->assertHookCall( diff --git a/apps/files_external/tests/storageconfigtest.php b/apps/files_external/tests/storageconfigtest.php index dba5105d7db..c987f7a84e2 100644 --- a/apps/files_external/tests/storageconfigtest.php +++ b/apps/files_external/tests/storageconfigtest.php @@ -1,5 +1,6 @@ <?php /** + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_sharing/ajax/external.php b/apps/files_sharing/ajax/external.php index 66cfd8e9d1a..c80f0e0b288 100644 --- a/apps/files_sharing/ajax/external.php +++ b/apps/files_sharing/ajax/external.php @@ -1,9 +1,11 @@ <?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 <roeland@famdouma.nl> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_sharing/ajax/list.php b/apps/files_sharing/ajax/list.php index 9185e508e67..9819048b881 100644 --- a/apps/files_sharing/ajax/list.php +++ b/apps/files_sharing/ajax/list.php @@ -3,6 +3,7 @@ * @author Joas Schilling <nickvergessen@owncloud.com> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> * diff --git a/apps/files_sharing/ajax/publicpreview.php b/apps/files_sharing/ajax/publicpreview.php index 69894bb8da5..62157e0ac0e 100644 --- a/apps/files_sharing/ajax/publicpreview.php +++ b/apps/files_sharing/ajax/publicpreview.php @@ -4,6 +4,7 @@ * @author Georg Ehrke <georg@owncloud.com> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_sharing/api/local.php b/apps/files_sharing/api/local.php index 61b8b47d2d3..42e77570f95 100644 --- a/apps/files_sharing/api/local.php +++ b/apps/files_sharing/api/local.php @@ -1,6 +1,7 @@ <?php /** * @author Björn Schießle <schiessle@owncloud.com> + * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Roeland Jago Douma <roeland@famdouma.nl> diff --git a/apps/files_sharing/api/remote.php b/apps/files_sharing/api/remote.php index 76f9babcd19..d67920c3521 100644 --- a/apps/files_sharing/api/remote.php +++ b/apps/files_sharing/api/remote.php @@ -1,6 +1,7 @@ <?php /** * @author Joas Schilling <nickvergessen@owncloud.com> + * @author Roeland Jago Douma <roeland@famdouma.nl> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_sharing/api/server2server.php b/apps/files_sharing/api/server2server.php index 7d8860ad6ff..a74b329aed5 100644 --- a/apps/files_sharing/api/server2server.php +++ b/apps/files_sharing/api/server2server.php @@ -1,6 +1,8 @@ <?php /** + * @author Arthur Schiwon <blizzz@owncloud.com> * @author Björn Schießle <schiessle@owncloud.com> + * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_sharing/api/sharees.php b/apps/files_sharing/api/sharees.php index 734c267020f..b34aef72163 100644 --- a/apps/files_sharing/api/sharees.php +++ b/apps/files_sharing/api/sharees.php @@ -1,5 +1,6 @@ <?php /** + * @author Joas Schilling <nickvergessen@owncloud.com> * @author Roeland Jago Douma <roeland@famdouma.nl> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_sharing/appinfo/app.php b/apps/files_sharing/appinfo/app.php index 793a1789a0f..03e448be0af 100644 --- a/apps/files_sharing/appinfo/app.php +++ b/apps/files_sharing/appinfo/app.php @@ -1,5 +1,6 @@ <?php /** + * @author Arthur Schiwon <blizzz@owncloud.com> * @author Björn Schießle <schiessle@owncloud.com> * @author Gadzy <dev@gadzy.fr> * @author Joas Schilling <nickvergessen@owncloud.com> diff --git a/apps/files_sharing/appinfo/application.php b/apps/files_sharing/appinfo/application.php index ad5d5d63231..9dc0e0618b5 100644 --- a/apps/files_sharing/appinfo/application.php +++ b/apps/files_sharing/appinfo/application.php @@ -1,6 +1,7 @@ <?php /** - * @author Morris Jobke <hey@morrisjobke.de> + * @author Joas Schilling <nickvergessen@owncloud.com> + * @author Lukas Reschke <lukas@owncloud.com> * @author Robin Appelman <icewind@owncloud.com> * @author Roeland Jago Douma <roeland@famdouma.nl> * @@ -26,6 +27,7 @@ namespace OCA\Files_Sharing\AppInfo; use OCA\Files_Sharing\Helper; use OCA\Files_Sharing\MountProvider; use OCA\Files_Sharing\Propagation\PropagationManager; +use OCA\Files_Sharing\Propagation\GroupPropagationManager; use OCP\AppFramework\App; use OC\AppFramework\Utility\SimpleContainer; use OCA\Files_Sharing\Controllers\ExternalSharesController; @@ -118,6 +120,17 @@ class Application extends App { ); }); + $container->registerService('ExternalMountProvider', function (IContainer $c) { + /** @var \OCP\IServerContainer $server */ + $server = $c->query('ServerContainer'); + return new \OCA\Files_Sharing\External\MountProvider( + $server->getDatabaseConnection(), + function() use ($c) { + return $c->query('ExternalManager'); + } + ); + }); + $container->registerService('PropagationManager', function (IContainer $c) { /** @var \OCP\IServerContainer $server */ $server = $c->query('ServerContainer'); @@ -127,6 +140,16 @@ class Application extends App { ); }); + $container->registerService('GroupPropagationManager', function (IContainer $c) { + /** @var \OCP\IServerContainer $server */ + $server = $c->query('ServerContainer'); + return new GroupPropagationManager( + $server->getUserSession(), + $server->getGroupManager(), + $c->query('PropagationManager') + ); + }); + /* * Register capabilities */ @@ -138,10 +161,13 @@ class Application extends App { $server = $this->getContainer()->query('ServerContainer'); $mountProviderCollection = $server->getMountProviderCollection(); $mountProviderCollection->registerProvider($this->getContainer()->query('MountProvider')); + $mountProviderCollection->registerProvider($this->getContainer()->query('ExternalMountProvider')); } public function setupPropagation() { $propagationManager = $this->getContainer()->query('PropagationManager'); \OCP\Util::connectHook('OC_Filesystem', 'setup', $propagationManager, 'globalSetup'); + + $this->getContainer()->query('GroupPropagationManager')->globalSetup(); } } diff --git a/apps/files_sharing/appinfo/routes.php b/apps/files_sharing/appinfo/routes.php index 3794df37992..a466c4fc6cc 100644 --- a/apps/files_sharing/appinfo/routes.php +++ b/apps/files_sharing/appinfo/routes.php @@ -4,7 +4,6 @@ * @author Georg Ehrke <georg@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 <roeland@famdouma.nl> * @author Thomas Müller <thomas.mueller@tmit.eu> diff --git a/apps/files_sharing/appinfo/update.php b/apps/files_sharing/appinfo/update.php index 66b8b78cacf..0eb3224c1ca 100644 --- a/apps/files_sharing/appinfo/update.php +++ b/apps/files_sharing/appinfo/update.php @@ -1,6 +1,7 @@ <?php /** * @author Björn Schießle <schiessle@owncloud.com> + * @author Joas Schilling <nickvergessen@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_sharing/css/public.css b/apps/files_sharing/css/public.css index 2b7e84c987d..bd8e98e966d 100644 --- a/apps/files_sharing/css/public.css +++ b/apps/files_sharing/css/public.css @@ -1,8 +1,12 @@ +#content { + height: initial; + min-height: calc(100vh - 120px); + overflow: hidden; +} + #preview { background: #fff; text-align: center; - margin: 45px auto 0; - min-height: 200px; } #preview .notCreatable { diff --git a/apps/files_sharing/l10n/cs_CZ.js b/apps/files_sharing/l10n/cs_CZ.js index be924134ae2..7c52f1c21ff 100644 --- a/apps/files_sharing/l10n/cs_CZ.js +++ b/apps/files_sharing/l10n/cs_CZ.js @@ -43,6 +43,14 @@ OC.L10N.register( "%2$s shared %1$s via link" : "%2$s nasdílel(a) %1$s jako odkaz", "%2$s shared %1$s with you" : "%2$s s vámi sdílí %1$s", "You shared %1$s via link" : "Sdílíte %1$s přes odkaz", + "Downloaded via public link" : "Staženo pomocí veřejného odkazu", + "Shared with %2$s" : "Sdíleno s %2$s", + "Shared with group %2$s" : "Sdíleno se skupinou %2$s", + "Shared with %3$s by %2$s" : "%2$s sdílí s %3$s", + "Shared with group %3$s by %2$s" : "%2$s sdílí se skupinou %3$s", + "Shared via link by %2$s" : "%2$s sdílel(a) jako odkaz", + "Shared by %2$s" : "%2$s sdílel(a)", + "Shared via public link" : "Sdíleno jako veřejný odkaz", "Shares" : "Sdílení", "Accept" : "Přijmout", "Decline" : "Zamítnout", diff --git a/apps/files_sharing/l10n/cs_CZ.json b/apps/files_sharing/l10n/cs_CZ.json index a889bbc1235..0e139f7bbf5 100644 --- a/apps/files_sharing/l10n/cs_CZ.json +++ b/apps/files_sharing/l10n/cs_CZ.json @@ -41,6 +41,14 @@ "%2$s shared %1$s via link" : "%2$s nasdílel(a) %1$s jako odkaz", "%2$s shared %1$s with you" : "%2$s s vámi sdílí %1$s", "You shared %1$s via link" : "Sdílíte %1$s přes odkaz", + "Downloaded via public link" : "Staženo pomocí veřejného odkazu", + "Shared with %2$s" : "Sdíleno s %2$s", + "Shared with group %2$s" : "Sdíleno se skupinou %2$s", + "Shared with %3$s by %2$s" : "%2$s sdílí s %3$s", + "Shared with group %3$s by %2$s" : "%2$s sdílí se skupinou %3$s", + "Shared via link by %2$s" : "%2$s sdílel(a) jako odkaz", + "Shared by %2$s" : "%2$s sdílel(a)", + "Shared via public link" : "Sdíleno jako veřejný odkaz", "Shares" : "Sdílení", "Accept" : "Přijmout", "Decline" : "Zamítnout", diff --git a/apps/files_sharing/l10n/el.js b/apps/files_sharing/l10n/el.js index 6f71bdc2832..e4024492b65 100644 --- a/apps/files_sharing/l10n/el.js +++ b/apps/files_sharing/l10n/el.js @@ -43,6 +43,14 @@ OC.L10N.register( "%2$s shared %1$s via link" : "Ο %2$s διαμοιράστηκε το %1$s μέσω συνδέσμου", "%2$s shared %1$s with you" : "Ο %2$s διαμοιράστηκε το %1$s με εσάς", "You shared %1$s via link" : "Μοιραστήκατε το %1$s μέσω συνδέσμου", + "Downloaded via public link" : "Μεταφορτώθηκε μέσω δημόσιου συνδέσμου", + "Shared with %2$s" : "Διαμοιράστηκε με %2$s", + "Shared with group %2$s" : "Διαμοιράστηκε με την ομάδα %2$s", + "Shared with %3$s by %2$s" : "Διαμοιράστηκε με %3$s από %2$s", + "Shared with group %3$s by %2$s" : "Διαμοιράστηκε με την ομάδα %3$s από %2$s", + "Shared via link by %2$s" : "Διαμοιράστηκε μέσω συνδέσμου από %2$s", + "Shared by %2$s" : "Διαμοιράστηκε από %2$s", + "Shared via public link" : "Διαμοιράστηκε μέσω δημόσιου συνδέσμου", "Shares" : "Κοινόχρηστοι φάκελοι", "You received %2$s as a remote share from %1$s" : "Λάβατε το %2$s ως απομακρυσμένο διαμοιρασμό από %1$s", "Accept" : "Αποδοχή", diff --git a/apps/files_sharing/l10n/el.json b/apps/files_sharing/l10n/el.json index c1bdc039f9d..7bf5c00841e 100644 --- a/apps/files_sharing/l10n/el.json +++ b/apps/files_sharing/l10n/el.json @@ -41,6 +41,14 @@ "%2$s shared %1$s via link" : "Ο %2$s διαμοιράστηκε το %1$s μέσω συνδέσμου", "%2$s shared %1$s with you" : "Ο %2$s διαμοιράστηκε το %1$s με εσάς", "You shared %1$s via link" : "Μοιραστήκατε το %1$s μέσω συνδέσμου", + "Downloaded via public link" : "Μεταφορτώθηκε μέσω δημόσιου συνδέσμου", + "Shared with %2$s" : "Διαμοιράστηκε με %2$s", + "Shared with group %2$s" : "Διαμοιράστηκε με την ομάδα %2$s", + "Shared with %3$s by %2$s" : "Διαμοιράστηκε με %3$s από %2$s", + "Shared with group %3$s by %2$s" : "Διαμοιράστηκε με την ομάδα %3$s από %2$s", + "Shared via link by %2$s" : "Διαμοιράστηκε μέσω συνδέσμου από %2$s", + "Shared by %2$s" : "Διαμοιράστηκε από %2$s", + "Shared via public link" : "Διαμοιράστηκε μέσω δημόσιου συνδέσμου", "Shares" : "Κοινόχρηστοι φάκελοι", "You received %2$s as a remote share from %1$s" : "Λάβατε το %2$s ως απομακρυσμένο διαμοιρασμό από %1$s", "Accept" : "Αποδοχή", diff --git a/apps/files_sharing/l10n/fa.js b/apps/files_sharing/l10n/fa.js index 29cd5818d40..cd915b79a17 100644 --- a/apps/files_sharing/l10n/fa.js +++ b/apps/files_sharing/l10n/fa.js @@ -3,18 +3,22 @@ OC.L10N.register( { "Server to server sharing is not enabled on this server" : "اشتراک سرور به سرور در این سرور فعال نیست .", "Invalid or untrusted SSL certificate" : "گواهینامه SSL غیر قابل اعتماد یا غیر معتبر است.", + "Could not authenticate to remote share, password might be wrong" : "احرازهویت برای اشتراکگذاری راهدور انجام نشد، احتمالا رمزعبور نادرست است", "Storage not valid" : "فضای ذخیرهسازی معتبر نیست", "Couldn't add remote share" : "امکان افزودن اشتراک گذاری از راه دور وجود ندارد", "Shared with you" : "موارد به اشتراک گذاشته شده با شما", "Shared with others" : "موارد به اشتراک گذاشته شده با دیگران", "Shared by link" : "اشتراک گذاشته شده از طریق پیوند", + "Nothing shared with you yet" : "هیچ موردی با شما به اشتراک گذاشته نشده است", "Nothing shared yet" : "هیچ موردی تاکنون به اشتراک گذاشته نشده است", "No shared links" : "هیچ لینک اشتراکگذاری وجود ندارد", + "Files and folders you share by link will show up here" : "فایلها و پوشههای اشتراکگذاشته توسط شما همراه با لینک در اینجا نمایش داده خواهد شد", "Do you want to add the remote share {name} from {owner}@{remote}?" : "آیا مایل به افزودن اشتراک از راه دور {name} از {owner}@{remote} هستید.", "Remote share" : "اشتراک از راه دور", "Remote share password" : "رمز عبور اشتراک از راه دور", "Cancel" : "منصرف شدن", "Add remote share" : "افزودن اشتراک از راه دور", + "You can upload into this folder" : "میتوانید در این پوشه آپلود کنید", "Invalid ownCloud url" : "آدرس نمونه ownCloud غیر معتبر است", "Shared by" : "اشتراک گذاشته شده به وسیله", "Sharing" : "اشتراک گذاری", diff --git a/apps/files_sharing/l10n/fa.json b/apps/files_sharing/l10n/fa.json index 64d03e5186a..a345d9f1401 100644 --- a/apps/files_sharing/l10n/fa.json +++ b/apps/files_sharing/l10n/fa.json @@ -1,18 +1,22 @@ { "translations": { "Server to server sharing is not enabled on this server" : "اشتراک سرور به سرور در این سرور فعال نیست .", "Invalid or untrusted SSL certificate" : "گواهینامه SSL غیر قابل اعتماد یا غیر معتبر است.", + "Could not authenticate to remote share, password might be wrong" : "احرازهویت برای اشتراکگذاری راهدور انجام نشد، احتمالا رمزعبور نادرست است", "Storage not valid" : "فضای ذخیرهسازی معتبر نیست", "Couldn't add remote share" : "امکان افزودن اشتراک گذاری از راه دور وجود ندارد", "Shared with you" : "موارد به اشتراک گذاشته شده با شما", "Shared with others" : "موارد به اشتراک گذاشته شده با دیگران", "Shared by link" : "اشتراک گذاشته شده از طریق پیوند", + "Nothing shared with you yet" : "هیچ موردی با شما به اشتراک گذاشته نشده است", "Nothing shared yet" : "هیچ موردی تاکنون به اشتراک گذاشته نشده است", "No shared links" : "هیچ لینک اشتراکگذاری وجود ندارد", + "Files and folders you share by link will show up here" : "فایلها و پوشههای اشتراکگذاشته توسط شما همراه با لینک در اینجا نمایش داده خواهد شد", "Do you want to add the remote share {name} from {owner}@{remote}?" : "آیا مایل به افزودن اشتراک از راه دور {name} از {owner}@{remote} هستید.", "Remote share" : "اشتراک از راه دور", "Remote share password" : "رمز عبور اشتراک از راه دور", "Cancel" : "منصرف شدن", "Add remote share" : "افزودن اشتراک از راه دور", + "You can upload into this folder" : "میتوانید در این پوشه آپلود کنید", "Invalid ownCloud url" : "آدرس نمونه ownCloud غیر معتبر است", "Shared by" : "اشتراک گذاشته شده به وسیله", "Sharing" : "اشتراک گذاری", diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js index 382bc1e69e5..f0c7d6c331c 100644 --- a/apps/files_sharing/l10n/fr.js +++ b/apps/files_sharing/l10n/fr.js @@ -42,6 +42,8 @@ OC.L10N.register( "%2$s shared %1$s with group %3$s" : "%2$s partagé %1$s avec le groupe %3$s", "%2$s shared %1$s with you" : "%2$s a partagé %1$s avec vous", "You shared %1$s via link" : "Vous avez partagé %1$s par lien public", + "Downloaded via public link" : "Téléchargé via un lien publique", + "Shared via public link" : "Partagé via un lien publique", "Shares" : "Partages", "You received %2$s as a remote share from %1$s" : "Vous avez reçu %2$s en tant que partage distant par %1$s", "Accept" : "Accepter", diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json index 7766b016f3b..524eb382568 100644 --- a/apps/files_sharing/l10n/fr.json +++ b/apps/files_sharing/l10n/fr.json @@ -40,6 +40,8 @@ "%2$s shared %1$s with group %3$s" : "%2$s partagé %1$s avec le groupe %3$s", "%2$s shared %1$s with you" : "%2$s a partagé %1$s avec vous", "You shared %1$s via link" : "Vous avez partagé %1$s par lien public", + "Downloaded via public link" : "Téléchargé via un lien publique", + "Shared via public link" : "Partagé via un lien publique", "Shares" : "Partages", "You received %2$s as a remote share from %1$s" : "Vous avez reçu %2$s en tant que partage distant par %1$s", "Accept" : "Accepter", diff --git a/apps/files_sharing/l10n/hu_HU.js b/apps/files_sharing/l10n/hu_HU.js index 7b85e236b44..c0d2d01b2c4 100644 --- a/apps/files_sharing/l10n/hu_HU.js +++ b/apps/files_sharing/l10n/hu_HU.js @@ -43,6 +43,14 @@ OC.L10N.register( "%2$s shared %1$s via link" : "%2$s megosztotta ezt: %1$s, hivatkozással", "%2$s shared %1$s with you" : "%2$s megosztotta velem ezt: %1$s", "You shared %1$s via link" : "Megosztottam link segítségével: %1$s", + "Downloaded via public link" : "Letöltve publikus hivatkozással", + "Shared with %2$s" : "Megosztva vele: %2$s", + "Shared with group %2$s" : "Megosztva ezzel a csoporttal: %2$s", + "Shared with %3$s by %2$s" : "Megosztva vele: %3$s, megosztó: %2$s", + "Shared with group %3$s by %2$s" : "Megosztva ezzel a csoporttal: %3$s, megosztó: %2$s", + "Shared via link by %2$s" : "Megosztva hivatkozással: %2$s", + "Shared by %2$s" : "Megosztó: %2$s", + "Shared via public link" : "Megosztva publikus hivatkozással", "Shares" : "Megosztások", "You received %2$s as a remote share from %1$s" : "Kaptál egy távoli megosztást: %2$s, innen: %1$s", "Accept" : "Elfogadás", diff --git a/apps/files_sharing/l10n/hu_HU.json b/apps/files_sharing/l10n/hu_HU.json index c749a5add97..a2e15c46c52 100644 --- a/apps/files_sharing/l10n/hu_HU.json +++ b/apps/files_sharing/l10n/hu_HU.json @@ -41,6 +41,14 @@ "%2$s shared %1$s via link" : "%2$s megosztotta ezt: %1$s, hivatkozással", "%2$s shared %1$s with you" : "%2$s megosztotta velem ezt: %1$s", "You shared %1$s via link" : "Megosztottam link segítségével: %1$s", + "Downloaded via public link" : "Letöltve publikus hivatkozással", + "Shared with %2$s" : "Megosztva vele: %2$s", + "Shared with group %2$s" : "Megosztva ezzel a csoporttal: %2$s", + "Shared with %3$s by %2$s" : "Megosztva vele: %3$s, megosztó: %2$s", + "Shared with group %3$s by %2$s" : "Megosztva ezzel a csoporttal: %3$s, megosztó: %2$s", + "Shared via link by %2$s" : "Megosztva hivatkozással: %2$s", + "Shared by %2$s" : "Megosztó: %2$s", + "Shared via public link" : "Megosztva publikus hivatkozással", "Shares" : "Megosztások", "You received %2$s as a remote share from %1$s" : "Kaptál egy távoli megosztást: %2$s, innen: %1$s", "Accept" : "Elfogadás", diff --git a/apps/files_sharing/l10n/nds.js b/apps/files_sharing/l10n/nds.js new file mode 100644 index 00000000000..e263ab143a8 --- /dev/null +++ b/apps/files_sharing/l10n/nds.js @@ -0,0 +1,8 @@ +OC.L10N.register( + "files_sharing", + { + "Cancel" : "Abbrechen", + "Password" : "Passwort", + "Name" : "Name" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/files_sharing/l10n/nds.json b/apps/files_sharing/l10n/nds.json new file mode 100644 index 00000000000..15e6870cb0e --- /dev/null +++ b/apps/files_sharing/l10n/nds.json @@ -0,0 +1,6 @@ +{ "translations": { + "Cancel" : "Abbrechen", + "Password" : "Passwort", + "Name" : "Name" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/files_sharing/l10n/ru.js b/apps/files_sharing/l10n/ru.js index 2d89b5e3102..1a84d10ecea 100644 --- a/apps/files_sharing/l10n/ru.js +++ b/apps/files_sharing/l10n/ru.js @@ -38,10 +38,23 @@ OC.L10N.register( "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 with %3$s" : "%2$s поделился %1$s с %3$s", + "%2$s shared %1$s with group %3$s" : "%2$s поделился %1$s с группой %3$s", + "%2$s shared %1$s via link" : "%2$s поделился %1$s по ссылке", "%2$s shared %1$s with you" : "%2$s поделился с вами %1$s", "You shared %1$s via link" : "Вы поделились %1$s с помощью ссылки", + "Downloaded via public link" : "Загружено по открытой ссылке", + "Shared with %2$s" : "Поделился с %2$s", + "Shared with group %2$s" : "Поделился с группой %2$s", + "Shared with %3$s by %2$s" : "Поделился %2$s с %3$s", + "Shared with group %3$s by %2$s" : "Поделился %2$s с группой %3$s", + "Shared via link by %2$s" : "Поделился ссылкой %2$s", + "Shared by %2$s" : "Поделился %2$s", + "Shared via public link" : "Поделился открытой ссылкой", "Shares" : "События обмена файлами", + "You received %2$s as a remote share from %1$s" : "Вы получили %2$s через удаленный общий ресурс %1$s", "Accept" : "Принять", + "Decline" : "Отклонить", "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Поделитесь со мной через мой #ownCloud ID в объединении облачных хранилищ, смотрите %s", "Share with me through my #ownCloud Federated Cloud ID" : "Поделитесь со мной через мой #ownCloud ID в объединении облачных хранилищ", "This share is password-protected" : "Общий ресурс защищен паролем", @@ -67,6 +80,7 @@ OC.L10N.register( "Federated Cloud" : "Объединение облачных хранилищ", "Your Federated Cloud ID:" : "Ваш ID в объединении облачных хранилищ:", "Share it:" : "Поделись этим:", + "Add to your website" : "Добавить к себе на сайт", "Share with me via ownCloud" : "Поделитесь мной через ownCloud", "HTML Code:" : "HTML код:" }, diff --git a/apps/files_sharing/l10n/ru.json b/apps/files_sharing/l10n/ru.json index 0f7a152f536..401896709d6 100644 --- a/apps/files_sharing/l10n/ru.json +++ b/apps/files_sharing/l10n/ru.json @@ -36,10 +36,23 @@ "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 with %3$s" : "%2$s поделился %1$s с %3$s", + "%2$s shared %1$s with group %3$s" : "%2$s поделился %1$s с группой %3$s", + "%2$s shared %1$s via link" : "%2$s поделился %1$s по ссылке", "%2$s shared %1$s with you" : "%2$s поделился с вами %1$s", "You shared %1$s via link" : "Вы поделились %1$s с помощью ссылки", + "Downloaded via public link" : "Загружено по открытой ссылке", + "Shared with %2$s" : "Поделился с %2$s", + "Shared with group %2$s" : "Поделился с группой %2$s", + "Shared with %3$s by %2$s" : "Поделился %2$s с %3$s", + "Shared with group %3$s by %2$s" : "Поделился %2$s с группой %3$s", + "Shared via link by %2$s" : "Поделился ссылкой %2$s", + "Shared by %2$s" : "Поделился %2$s", + "Shared via public link" : "Поделился открытой ссылкой", "Shares" : "События обмена файлами", + "You received %2$s as a remote share from %1$s" : "Вы получили %2$s через удаленный общий ресурс %1$s", "Accept" : "Принять", + "Decline" : "Отклонить", "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Поделитесь со мной через мой #ownCloud ID в объединении облачных хранилищ, смотрите %s", "Share with me through my #ownCloud Federated Cloud ID" : "Поделитесь со мной через мой #ownCloud ID в объединении облачных хранилищ", "This share is password-protected" : "Общий ресурс защищен паролем", @@ -65,6 +78,7 @@ "Federated Cloud" : "Объединение облачных хранилищ", "Your Federated Cloud ID:" : "Ваш ID в объединении облачных хранилищ:", "Share it:" : "Поделись этим:", + "Add to your website" : "Добавить к себе на сайт", "Share with me via ownCloud" : "Поделитесь мной через ownCloud", "HTML Code:" : "HTML код:" },"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);" diff --git a/apps/files_sharing/l10n/zh_TW.js b/apps/files_sharing/l10n/zh_TW.js index a5f97c92092..bc49d1d8a48 100644 --- a/apps/files_sharing/l10n/zh_TW.js +++ b/apps/files_sharing/l10n/zh_TW.js @@ -35,6 +35,7 @@ OC.L10N.register( "Add to your ownCloud" : "加入到你的 ownCloud", "Download" : "下載", "Download %s" : "下載 %s", - "Direct link" : "直接連結" + "Direct link" : "直接連結", + "Federated Cloud Sharing" : "聯盟式雲端分享" }, "nplurals=1; plural=0;"); diff --git a/apps/files_sharing/l10n/zh_TW.json b/apps/files_sharing/l10n/zh_TW.json index 67150e495b9..3567ed51df4 100644 --- a/apps/files_sharing/l10n/zh_TW.json +++ b/apps/files_sharing/l10n/zh_TW.json @@ -33,6 +33,7 @@ "Add to your ownCloud" : "加入到你的 ownCloud", "Download" : "下載", "Download %s" : "下載 %s", - "Direct link" : "直接連結" + "Direct link" : "直接連結", + "Federated Cloud Sharing" : "聯盟式雲端分享" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_sharing/lib/cache.php b/apps/files_sharing/lib/cache.php index 377c9f02253..fa6c2d4c4f5 100644 --- a/apps/files_sharing/lib/cache.php +++ b/apps/files_sharing/lib/cache.php @@ -8,6 +8,7 @@ * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Scrutinizer Auto-Fixer <auto-fixer@scrutinizer-ci.com> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> diff --git a/apps/files_sharing/lib/connector/publicauth.php b/apps/files_sharing/lib/connector/publicauth.php index 9d1bf391560..4ac355180fc 100644 --- a/apps/files_sharing/lib/connector/publicauth.php +++ b/apps/files_sharing/lib/connector/publicauth.php @@ -5,6 +5,7 @@ * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Thomas Müller <thomas.mueller@tmit.eu> + * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_sharing/lib/controllers/externalsharescontroller.php b/apps/files_sharing/lib/controllers/externalsharescontroller.php index 1b8351da420..71cc956ec98 100644 --- a/apps/files_sharing/lib/controllers/externalsharescontroller.php +++ b/apps/files_sharing/lib/controllers/externalsharescontroller.php @@ -3,6 +3,7 @@ * @author Björn Schießle <schiessle@owncloud.com> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Roeland Jago Douma <roeland@famdouma.nl> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_sharing/lib/controllers/sharecontroller.php b/apps/files_sharing/lib/controllers/sharecontroller.php index 28feb3110b4..616b64e6c59 100644 --- a/apps/files_sharing/lib/controllers/sharecontroller.php +++ b/apps/files_sharing/lib/controllers/sharecontroller.php @@ -233,9 +233,10 @@ class ShareController extends Controller { * @param string $token * @param string $files * @param string $path + * @param string $downloadStartSecret * @return void|RedirectResponse */ - public function downloadShare($token, $files = null, $path = '') { + public function downloadShare($token, $files = null, $path = '', $downloadStartSecret = '') { \OC_User::setIncognitoMode(true); $linkItem = OCP\Share::getShareByToken($token, false); @@ -288,6 +289,19 @@ class ShareController extends Controller { } } + /** + * this sets a cookie to be able to recognize the start of the download + * the content must not be longer than 32 characters and must only contain + * alphanumeric characters + */ + if (!empty($downloadStartSecret) + && !isset($downloadStartSecret[32]) + && preg_match('!^[a-zA-Z0-9]+$!', $downloadStartSecret) === 1) { + + // FIXME: set on the response once we use an actual app framework response + setcookie('ocDownloadStarted', $downloadStartSecret, time() + 20, '/'); + } + // download selected files if (!is_null($files)) { // FIXME: The exit is required here because otherwise the AppFramework is trying to add headers as well diff --git a/apps/files_sharing/lib/exceptions/s2sexception.php b/apps/files_sharing/lib/exceptions/s2sexception.php index 7f5557f8cd3..d914e9e06db 100644 --- a/apps/files_sharing/lib/exceptions/s2sexception.php +++ b/apps/files_sharing/lib/exceptions/s2sexception.php @@ -1,5 +1,9 @@ <?php /** + * @author Björn Schießle <schiessle@owncloud.com> + * @author Morris Jobke <hey@morrisjobke.de> + * @author Roeland Jago Douma <roeland@famdouma.nl> + * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 * diff --git a/apps/files_sharing/lib/external/manager.php b/apps/files_sharing/lib/external/manager.php index 2ba02f40d2f..86b8904cc9a 100644 --- a/apps/files_sharing/lib/external/manager.php +++ b/apps/files_sharing/lib/external/manager.php @@ -5,6 +5,7 @@ * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. @@ -152,28 +153,6 @@ class Manager { return $this->mountShare($options); } - private function setupMounts() { - // don't setup server-to-server shares if the admin disabled it - if (\OCA\Files_Sharing\Helper::isIncomingServer2serverShareEnabled() === false) { - return false; - } - - if (!is_null($this->uid)) { - $query = $this->connection->prepare(' - SELECT `remote`, `share_token`, `password`, `mountpoint`, `owner` - FROM `*PREFIX*share_external` - WHERE `user` = ? AND `accepted` = ? - '); - $query->execute(array($this->uid, 1)); - - while ($row = $query->fetch()) { - $row['manager'] = $this; - $row['token'] = $row['share_token']; - $this->mountShare($row); - } - } - } - /** * get share * @@ -276,24 +255,6 @@ class Manager { } /** - * setup the server-to-server mounts - * - * @param array $params - */ - public static function setup(array $params) { - $externalManager = new \OCA\Files_Sharing\External\Manager( - \OC::$server->getDatabaseConnection(), - \OC\Files\Filesystem::getMountManager(), - \OC\Files\Filesystem::getLoader(), - \OC::$server->getHTTPHelper(), - \OC::$server->getNotificationManager(), - $params['user'] - ); - - $externalManager->setupMounts(); - } - - /** * remove '/user/files' from the path and trailing slashes * * @param string $path @@ -304,16 +265,20 @@ class Manager { return rtrim(substr($path, strlen($prefix)), '/'); } + public function getMount($data) { + $data['manager'] = $this; + $mountPoint = '/' . $this->uid . '/files' . $data['mountpoint']; + $data['mountpoint'] = $mountPoint; + $data['certificateManager'] = \OC::$server->getCertificateManager($this->uid); + return new Mount(self::STORAGE, $mountPoint, $data, $this, $this->storageLoader); + } + /** * @param array $data * @return Mount */ protected function mountShare($data) { - $data['manager'] = $this; - $mountPoint = '/' . $this->uid . '/files' . $data['mountpoint']; - $data['mountpoint'] = $mountPoint; - $data['certificateManager'] = \OC::$server->getCertificateManager($this->uid); - $mount = new Mount(self::STORAGE, $mountPoint, $data, $this, $this->storageLoader); + $mount = $this->getMount($data); $this->mountManager->addMount($mount); return $mount; } diff --git a/apps/files_sharing/lib/external/mountprovider.php b/apps/files_sharing/lib/external/mountprovider.php new file mode 100644 index 00000000000..1739cec543f --- /dev/null +++ b/apps/files_sharing/lib/external/mountprovider.php @@ -0,0 +1,75 @@ +<?php +/** + * @author Robin Appelman <icewind@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Files_Sharing\External; + +use OCP\Files\Config\IMountProvider; +use OCP\Files\Storage\IStorageFactory; +use OCP\IDBConnection; +use OCP\IUser; + +class MountProvider implements IMountProvider { + const STORAGE = '\OCA\Files_Sharing\External\Storage'; + + /** + * @var \OCP\IDBConnection + */ + private $connection; + + /** + * @var callable + */ + private $managerProvider; + + /** + * @param \OCP\IDBConnection $connection + * @param callable $managerProvider due to setup order we need a callable that return the manager instead of the manager itself + */ + public function __construct(IDBConnection $connection, callable $managerProvider) { + $this->connection = $connection; + $this->managerProvider = $managerProvider; + } + + public function getMount(IUser $user, $data, IStorageFactory $storageFactory) { + $data['manager'] = $this; + $mountPoint = '/' . $user->getUID() . '/files/' . ltrim($data['mountpoint'], '/'); + $data['mountpoint'] = $mountPoint; + $data['certificateManager'] = \OC::$server->getCertificateManager($user->getUID()); + $managerProvider = $this->managerProvider; + return new Mount(self::STORAGE, $mountPoint, $data, $managerProvider(), $storageFactory); + } + + public function getMountsForUser(IUser $user, IStorageFactory $loader) { + $query = $this->connection->prepare(' + SELECT `remote`, `share_token`, `password`, `mountpoint`, `owner` + FROM `*PREFIX*share_external` + WHERE `user` = ? AND `accepted` = ? + '); + $query->execute([$user->getUID(), 1]); + $mounts = []; + while ($row = $query->fetch()) { + $row['manager'] = $this; + $row['token'] = $row['share_token']; + $mounts[] = $this->getMount($user, $row, $loader); + } + return $mounts; + } +} diff --git a/apps/files_sharing/lib/external/scanner.php b/apps/files_sharing/lib/external/scanner.php index 60eb7c8dacd..455225b2b79 100644 --- a/apps/files_sharing/lib/external/scanner.php +++ b/apps/files_sharing/lib/external/scanner.php @@ -2,6 +2,7 @@ /** * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Olivier Paroz <github@oparoz.com> * @author Robin Appelman <icewind@owncloud.com> * @author Vincent Petry <pvince81@owncloud.com> * diff --git a/apps/files_sharing/lib/helper.php b/apps/files_sharing/lib/helper.php index 38cb73be29c..b15f70fcde3 100644 --- a/apps/files_sharing/lib/helper.php +++ b/apps/files_sharing/lib/helper.php @@ -7,6 +7,7 @@ * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. @@ -30,7 +31,6 @@ namespace OCA\Files_Sharing; class Helper { public static function registerHooks() { - \OCP\Util::connectHook('OC_Filesystem', 'setup', '\OCA\Files_Sharing\External\Manager', 'setup'); \OCP\Util::connectHook('OC_Filesystem', 'delete', '\OC\Files\Cache\Shared_Updater', 'deleteHook'); \OCP\Util::connectHook('OC_Filesystem', 'post_rename', '\OC\Files\Cache\Shared_Updater', 'renameHook'); \OCP\Util::connectHook('OC_Filesystem', 'post_delete', '\OCA\Files_Sharing\Hooks', 'unshareChildren'); diff --git a/apps/files_sharing/lib/hooks.php b/apps/files_sharing/lib/hooks.php index 1937010f390..079824f7fb0 100644 --- a/apps/files_sharing/lib/hooks.php +++ b/apps/files_sharing/lib/hooks.php @@ -1,6 +1,7 @@ <?php /** * @author Björn Schießle <schiessle@owncloud.com> + * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * diff --git a/apps/files_sharing/lib/middleware/sharingcheckmiddleware.php b/apps/files_sharing/lib/middleware/sharingcheckmiddleware.php index 942efc0483e..9170c08b59d 100644 --- a/apps/files_sharing/lib/middleware/sharingcheckmiddleware.php +++ b/apps/files_sharing/lib/middleware/sharingcheckmiddleware.php @@ -2,6 +2,7 @@ /** * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_sharing/lib/propagation/changewatcher.php b/apps/files_sharing/lib/propagation/changewatcher.php index 9f23c19be88..e61c161da19 100644 --- a/apps/files_sharing/lib/propagation/changewatcher.php +++ b/apps/files_sharing/lib/propagation/changewatcher.php @@ -1,6 +1,5 @@ <?php /** - * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. @@ -100,4 +99,12 @@ class ChangeWatcher { $propagator->propagateChanges(); } } + + public function permissionsHook($params) { + $share = $params['share']; + + if ($share['item_type'] === 'file' || $share['item_type'] === 'folder') { + $this->recipientPropagator->markDirty($share, microtime(true)); + } + } } diff --git a/apps/files_sharing/lib/propagation/grouppropagationmanager.php b/apps/files_sharing/lib/propagation/grouppropagationmanager.php new file mode 100644 index 00000000000..ba550dccec3 --- /dev/null +++ b/apps/files_sharing/lib/propagation/grouppropagationmanager.php @@ -0,0 +1,133 @@ +<?php +/** + * @author Vincent Petry <pvince81@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Files_Sharing\Propagation; + +use OC\Files\Filesystem; +use OC\Files\View; +use OCP\IConfig; +use OCP\IUserSession; +use OCP\IGroup; +use OCP\IUser; +use OCP\IGroupManager; +use OCA\Files_Sharing\Propagation\PropagationManager; + +/** + * Propagate changes on group changes + */ +class GroupPropagationManager { + /** + * @var \OCP\IUserSession + */ + private $userSession; + + /** + * @var \OCP\IGroupManager + */ + private $groupManager; + + /** + * @var PropagationManager + */ + private $propagationManager; + + /** + * Items shared with a given user. + * Key is user id and value is an array of shares. + * + * @var array + */ + private $userShares = []; + + public function __construct(IUserSession $userSession, IGroupManager $groupManager, PropagationManager $propagationManager) { + $this->userSession = $userSession; + $this->groupManager = $groupManager; + $this->propagationManager = $propagationManager; + } + + public function onPreProcessUser(IGroup $group, IUser $targetUser) { + $this->userShares[$targetUser->getUID()] = $this->getUserShares($targetUser->getUID()); + } + + public function onPostAddUser(IGroup $group, IUser $targetUser) { + $targetUserId = $targetUser->getUID(); + $sharesAfter = $this->getUserShares($targetUserId); + + $this->propagateSharesDiff($targetUserId, $sharesAfter, $this->userShares[$targetUserId]); + unset($this->userShares[$targetUserId]); + } + + public function onPostRemoveUser(IGroup $group, IUser $targetUser) { + $targetUserId = $targetUser->getUID(); + $sharesAfter = $this->getUserShares($targetUserId); + + $this->propagateSharesDiff($targetUserId, $this->userShares[$targetUserId], $sharesAfter); + unset($this->userShares[$targetUserId]); + } + + private function getUserShares($targetUserId) { + return \OCP\Share::getItemsSharedWithUser('file', $targetUserId); + } + + /** + * Propagate etag for the shares that are in $shares1 but not in $shares2. + * + * @param string $targetUserId user id for which to propagate shares + * @param array $shares1 + * @param array $shares2 + */ + private function propagateSharesDiff($targetUserId, $shares1, $shares2) { + $sharesToPropagate = array_udiff( + $shares1, + $shares2, + function($share1, $share2) { + return ($share2['id'] - $share1['id']); + } + ); + + \OC\Files\Filesystem::initMountPoints($targetUserId); + $this->propagationManager->propagateSharesToUser($sharesToPropagate, $targetUserId); + } + + /** + * To be called from setupFS trough a hook + * + * Sets up listening to changes made to shares owned by the current user + */ + public function globalSetup() { + $user = $this->userSession->getUser(); + if (!$user) { + return; + } + + $this->groupManager->listen('\OC\Group', 'preAddUser', [$this, 'onPreProcessUser']); + $this->groupManager->listen('\OC\Group', 'postAddUser', [$this, 'onPostAddUser']); + $this->groupManager->listen('\OC\Group', 'preRemoveUser', [$this, 'onPreProcessUser']); + $this->groupManager->listen('\OC\Group', 'postRemoveUser', [$this, 'onPostRemoveUser']); + } + + public function tearDown() { + $this->groupManager->removeListener('\OC\Group', 'preAddUser', [$this, 'onPreProcessUser']); + $this->groupManager->removeListener('\OC\Group', 'postAddUser', [$this, 'onPostAddUser']); + $this->groupManager->removeListener('\OC\Group', 'preRemoveUser', [$this, 'onPreProcessUser']); + $this->groupManager->removeListener('\OC\Group', 'postRemoveUser', [$this, 'onPostRemoveUser']); + } +} diff --git a/apps/files_sharing/lib/propagation/propagationmanager.php b/apps/files_sharing/lib/propagation/propagationmanager.php index 7929c2aa5bb..6ed70e93f84 100644 --- a/apps/files_sharing/lib/propagation/propagationmanager.php +++ b/apps/files_sharing/lib/propagation/propagationmanager.php @@ -1,6 +1,5 @@ <?php /** - * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. @@ -26,6 +25,7 @@ use OC\Files\Filesystem; use OC\Files\View; use OCP\IConfig; use OCP\IUserSession; +use OCP\Util; /** @@ -82,6 +82,21 @@ class PropagationManager { } /** + * Propagates etag changes for the given shares to the given user + * + * @param array array of shares for which to trigger etag change + * @param string $user + */ + public function propagateSharesToUser($shares, $user) { + $changePropagator = $this->getChangePropagator($user); + foreach ($shares as $share) { + $changePropagator->addChange($share['file_target']); + } + $time = microtime(true); + $changePropagator->propagateChanges(floor($time)); + } + + /** * @param string $user * @return \OCA\Files_Sharing\Propagation\RecipientPropagator */ @@ -120,8 +135,9 @@ class PropagationManager { // for marking shares owned by the active user as dirty when a file inside them changes $this->listenToOwnerChanges($user->getUID(), $user->getUID()); - \OC_Hook::connect('OC_Filesystem', 'post_write', $watcher, 'writeHook'); - \OC_Hook::connect('OC_Filesystem', 'post_delete', $watcher, 'writeHook'); - \OC_Hook::connect('OC_Filesystem', 'post_rename', $watcher, 'renameHook'); + Util::connectHook('OC_Filesystem', 'post_write', $watcher, 'writeHook'); + Util::connectHook('OC_Filesystem', 'post_delete', $watcher, 'writeHook'); + Util::connectHook('OC_Filesystem', 'post_rename', $watcher, 'renameHook'); + Util::connectHook('OCP\Share', 'post_update_permissions', $watcher, 'permissionsHook'); } } diff --git a/apps/files_sharing/lib/propagation/recipientpropagator.php b/apps/files_sharing/lib/propagation/recipientpropagator.php index 420cacb3d2f..8e064e2ee54 100644 --- a/apps/files_sharing/lib/propagation/recipientpropagator.php +++ b/apps/files_sharing/lib/propagation/recipientpropagator.php @@ -105,7 +105,7 @@ class RecipientPropagator { /** * @param array $share - * @param int $time + * @param float $time */ public function markDirty($share, $time = null) { if ($time === null) { diff --git a/apps/files_sharing/lib/share/file.php b/apps/files_sharing/lib/share/file.php index 7bbc2083702..6c676f47a0c 100644 --- a/apps/files_sharing/lib/share/file.php +++ b/apps/files_sharing/lib/share/file.php @@ -5,6 +5,8 @@ * @author Björn Schießle <schiessle@owncloud.com> * @author Michael Gapczynski <GapczynskiM@gmail.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin Appelman <icewind@owncloud.com> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> * diff --git a/apps/files_sharing/lib/share/folder.php b/apps/files_sharing/lib/share/folder.php index ef42393f58d..daa5b5e9eb8 100644 --- a/apps/files_sharing/lib/share/folder.php +++ b/apps/files_sharing/lib/share/folder.php @@ -4,6 +4,8 @@ * @author Björn Schießle <schiessle@owncloud.com> * @author Michael Gapczynski <GapczynskiM@gmail.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> + * @author Roeland Jago Douma <roeland@famdouma.nl> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_sharing/lib/sharedmount.php b/apps/files_sharing/lib/sharedmount.php index 9aa9bbf562b..85eb264ce09 100644 --- a/apps/files_sharing/lib/sharedmount.php +++ b/apps/files_sharing/lib/sharedmount.php @@ -1,8 +1,10 @@ <?php /** * @author Björn Schießle <schiessle@owncloud.com> + * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Roeland Jago Douma <roeland@famdouma.nl> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php index 27dd2f1e485..b0e56f5f054 100644 --- a/apps/files_sharing/lib/sharedstorage.php +++ b/apps/files_sharing/lib/sharedstorage.php @@ -583,9 +583,6 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage { } public function getETag($path) { - if ($path == '') { - $path = $this->getMountPoint(); - } if ($source = $this->getSourcePath($path)) { list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source); return $storage->getETag($internalPath); diff --git a/apps/files_sharing/lib/updater.php b/apps/files_sharing/lib/updater.php index 9dd106a548c..d70ed23b941 100644 --- a/apps/files_sharing/lib/updater.php +++ b/apps/files_sharing/lib/updater.php @@ -4,6 +4,8 @@ * @author Joas Schilling <nickvergessen@owncloud.com> * @author Michael Gapczynski <GapczynskiM@gmail.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin Appelman <icewind@owncloud.com> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_sharing/public.php b/apps/files_sharing/public.php index 2cf8476f721..772419e64e4 100644 --- a/apps/files_sharing/public.php +++ b/apps/files_sharing/public.php @@ -1,6 +1,5 @@ <?php /** - * @author Felix Moeller <mail@felixmoeller.de> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * diff --git a/apps/files_sharing/publicwebdav.php b/apps/files_sharing/publicwebdav.php index fbf9d22cf76..7d96c8e8c97 100644 --- a/apps/files_sharing/publicwebdav.php +++ b/apps/files_sharing/publicwebdav.php @@ -1,9 +1,8 @@ <?php /** - * @author Lukas Reschke <lukas@owncloud.com> + * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> - * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_sharing/settings-personal.php b/apps/files_sharing/settings-personal.php index f4c9c6cd308..deaa7b92ac7 100644 --- a/apps/files_sharing/settings-personal.php +++ b/apps/files_sharing/settings-personal.php @@ -3,6 +3,7 @@ * @author Björn Schießle <schiessle@owncloud.com> * @author Jan-Christoph Borchardt <hey@jancborchardt.net> * @author Morris Jobke <hey@morrisjobke.de> + * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php index 06d797c3c6f..b5dd653d718 100644 --- a/apps/files_sharing/templates/public.php +++ b/apps/files_sharing/templates/public.php @@ -86,38 +86,39 @@ $thumbSize = 1024; </a> </span> </div> - </div></header> -<div id="content"> - <div id="preview"> - <?php if (isset($_['folder'])): ?> - <?php print_unescaped($_['folder']); ?> - <?php else: ?> - <?php if ($_['previewEnabled'] && substr($_['mimetype'], 0, strpos($_['mimetype'], '/')) == 'video'): ?> - <div id="imgframe"> - <video tabindex="0" controls="" preload="none"> - <source src="<?php p($_['downloadURL']); ?>" type="<?php p($_['mimetype']); ?>" /> - </video> - </div> +</div></header> +<div id="content-wrapper"> + <div id="content"> + <div id="preview"> + <?php if (isset($_['folder'])): ?> + <?php print_unescaped($_['folder']); ?> <?php else: ?> - <!-- Preview frame is filled via JS to support SVG images for modern browsers --> - <div id="imgframe"></div> + <?php if ($_['previewEnabled'] && substr($_['mimetype'], 0, strpos($_['mimetype'], '/')) == 'video'): ?> + <div id="imgframe"> + <video tabindex="0" controls="" preload="none"> + <source src="<?php p($_['downloadURL']); ?>" type="<?php p($_['mimetype']); ?>" /> + </video> + </div> + <?php else: ?> + <!-- Preview frame is filled via JS to support SVG images for modern browsers --> + <div id="imgframe"></div> + <?php endif; ?> + <div class="directDownload"> + <a href="<?php p($_['downloadURL']); ?>" id="downloadFile" class="button"> + <img class="svg" alt="" src="<?php print_unescaped(OCP\image_path("core", "actions/download.svg")); ?>"/> + <?php p($l->t('Download %s', array($_['filename'])))?> (<?php p($_['fileSize']) ?>) + </a> + </div> + <div class="directLink"> + <label for="directLink"><?php p($l->t('Direct link')) ?></label> + <input id="directLink" type="text" readonly value="<?php p($_['downloadURL']); ?>"> + </div> <?php endif; ?> - <div class="directDownload"> - <a href="<?php p($_['downloadURL']); ?>" id="downloadFile" class="button"> - <img class="svg" alt="" src="<?php print_unescaped(OCP\image_path("core", "actions/download.svg")); ?>"/> - <?php p($l->t('Download %s', array($_['filename'])))?> (<?php p($_['fileSize']) ?>) - </a> - </div> - <div class="directLink"> - <label for="directLink"><?php p($l->t('Direct link')) ?></label> - <input id="directLink" type="text" readonly value="<?php p($_['downloadURL']); ?>"> - </div> - <?php endif; ?> + </div> </div> - + <footer> + <p class="info"> + <?php print_unescaped($theme->getLongFooter()); ?> + </p> + </footer> </div> -<footer> - <p class="info"> - <?php print_unescaped($theme->getLongFooter()); ?> - </p> -</footer> diff --git a/apps/files_sharing/tests/api/shareestest.php b/apps/files_sharing/tests/api/shareestest.php index 91b8b1c7e66..923881d4569 100644 --- a/apps/files_sharing/tests/api/shareestest.php +++ b/apps/files_sharing/tests/api/shareestest.php @@ -1,6 +1,7 @@ <?php /** * @author Joas Schilling <nickvergessen@owncloud.com> + * @author Roeland Jago Douma <roeland@famdouma.nl> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_sharing/tests/capabilities.php b/apps/files_sharing/tests/capabilities.php index cff7bdf1fe8..b151f47a468 100644 --- a/apps/files_sharing/tests/capabilities.php +++ b/apps/files_sharing/tests/capabilities.php @@ -1,5 +1,6 @@ <?php /** + * @author Joas Schilling <nickvergessen@owncloud.com> * @author Roeland Jago Douma <roeland@famdouma.nl> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_sharing/tests/controller/externalsharecontroller.php b/apps/files_sharing/tests/controller/externalsharecontroller.php index 7b3e1af4c74..7bc11f7fb94 100644 --- a/apps/files_sharing/tests/controller/externalsharecontroller.php +++ b/apps/files_sharing/tests/controller/externalsharecontroller.php @@ -1,6 +1,7 @@ <?php /** * @author Lukas Reschke <lukas@owncloud.com> + * @author Roeland Jago Douma <roeland@famdouma.nl> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_sharing/tests/etagpropagation.php b/apps/files_sharing/tests/etagpropagation.php index 8da4e6f29bd..2490fef03e1 100644 --- a/apps/files_sharing/tests/etagpropagation.php +++ b/apps/files_sharing/tests/etagpropagation.php @@ -1,6 +1,5 @@ <?php /** - * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Vincent Petry <pvince81@owncloud.com> * @@ -48,6 +47,7 @@ class EtagPropagation extends TestCase { \OC_Hook::clear('OC_Filesystem', 'post_write'); \OC_Hook::clear('OC_Filesystem', 'post_delete'); \OC_Hook::clear('OC_Filesystem', 'post_rename'); + \OC_Hook::clear('OCP\Share', 'post_update_permissions'); parent::tearDown(); } @@ -75,11 +75,14 @@ class EtagPropagation extends TestCase { $view1->file_put_contents('/sub1/sub2/folder/file.txt', 'foobar'); $view1->file_put_contents('/sub1/sub2/folder/inside/file.txt', 'foobar'); $folderInfo = $view1->getFileInfo('/sub1/sub2/folder'); + $this->assertInstanceOf('\OC\Files\FileInfo', $folderInfo); $fileInfo = $view1->getFileInfo('/foo.txt'); + $this->assertInstanceOf('\OC\Files\FileInfo', $fileInfo); \OCP\Share::shareItem('file', $fileInfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2, 31); \OCP\Share::shareItem('folder', $folderInfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2, 31); \OCP\Share::shareItem('folder', $folderInfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER3, 31); $folderInfo = $view1->getFileInfo('/directReshare'); + $this->assertInstanceOf('\OC\Files\FileInfo', $folderInfo); \OCP\Share::shareItem('folder', $folderInfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2, 31); $this->fileIds[self::TEST_FILES_SHARING_API_USER1][''] = $view1->getFileInfo('')->getId(); $this->fileIds[self::TEST_FILES_SHARING_API_USER1]['sub1'] = $view1->getFileInfo('sub1')->getId(); @@ -90,8 +93,10 @@ class EtagPropagation extends TestCase { $view2->mkdir('/sub1/sub2'); $view2->rename('/folder', '/sub1/sub2/folder'); $insideInfo = $view2->getFileInfo('/sub1/sub2/folder/inside'); + $this->assertInstanceOf('\OC\Files\FileInfo', $insideInfo); \OCP\Share::shareItem('folder', $insideInfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER4, 31); $folderInfo = $view2->getFileInfo('/directReshare'); + $this->assertInstanceOf('\OC\Files\FileInfo', $folderInfo); \OCP\Share::shareItem('folder', $folderInfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER4, 31); $this->fileIds[self::TEST_FILES_SHARING_API_USER2][''] = $view2->getFileInfo('')->getId(); $this->fileIds[self::TEST_FILES_SHARING_API_USER2]['sub1'] = $view2->getFileInfo('sub1')->getId(); @@ -261,6 +266,7 @@ class EtagPropagation extends TestCase { public function testOwnerUnshares() { $this->loginAsUser(self::TEST_FILES_SHARING_API_USER1); $folderInfo = $this->rootView->getFileInfo('/' . self::TEST_FILES_SHARING_API_USER1 . '/files/sub1/sub2/folder'); + $this->assertInstanceOf('\OC\Files\FileInfo', $folderInfo); $folderId = $folderInfo->getId(); $this->assertTrue( \OCP\Share::unshare( @@ -407,4 +413,17 @@ class EtagPropagation extends TestCase { $this->assertAllUnchaged(); } + + public function testEtagChangeOnPermissionsChange() { + $this->loginAsUser(self::TEST_FILES_SHARING_API_USER1); + + $view = new View('/' . self::TEST_FILES_SHARING_API_USER1 . '/files'); + $folderInfo = $view->getFileInfo('/sub1/sub2/folder'); + + \OCP\Share::setPermissions('folder', $folderInfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2, 17); + + $this->assertEtagsForFoldersChanged([self::TEST_FILES_SHARING_API_USER2, self::TEST_FILES_SHARING_API_USER4]); + + $this->assertAllUnchaged(); + } } diff --git a/apps/files_sharing/tests/external/managertest.php b/apps/files_sharing/tests/external/managertest.php index 8e03c67a9a3..7242779d455 100644 --- a/apps/files_sharing/tests/external/managertest.php +++ b/apps/files_sharing/tests/external/managertest.php @@ -23,9 +23,12 @@ namespace OCA\Files_Sharing\Tests\External; use OC\Files\Storage\StorageFactory; use OCA\Files_Sharing\External\Manager; +use OCA\Files_Sharing\External\MountProvider; use OCA\Files_Sharing\Tests\TestCase; +use Test\Traits\UserTrait; class ManagerTest extends TestCase { + use UserTrait; /** @var Manager **/ private $manager; @@ -38,10 +41,18 @@ class ManagerTest extends TestCase { private $uid; + /** + * @var \OCP\IUser + */ + private $user; + private $mountProvider; + protected function setUp() { parent::setUp(); $this->uid = $this->getUniqueID('user'); + $this->createUser($this->uid, ''); + $this->user = \OC::$server->getUserManager()->get($this->uid); $this->mountManager = new \OC\Files\Mount\Manager(); $this->httpHelper = $httpHelper = $this->getMockBuilder('\OC\HTTPHelper')->disableOriginalConstructor()->getMock(); /** @var \OC\HTTPHelper $httpHelper */ @@ -53,6 +64,16 @@ class ManagerTest extends TestCase { \OC::$server->getNotificationManager(), $this->uid ); + $this->mountProvider = new MountProvider(\OC::$server->getDatabaseConnection(), function() { + return $this->manager; + }); + } + + private function setupMounts() { + $mounts = $this->mountProvider->getMountsForUser($this->user, new StorageFactory()); + foreach ($mounts as $mount) { + $this->mountManager->addMount($mount); + } } public function testAddShare() { @@ -77,7 +98,7 @@ class ManagerTest extends TestCase { $this->assertCount(1, $openShares); $this->assertExternalShareEntry($shareData1, $openShares[0], 1, '{{TemporaryMountPointName#' . $shareData1['name'] . '}}'); - self::invokePrivate($this->manager, 'setupMounts'); + $this->setupMounts(); $this->assertNotMount('SharedFolder'); $this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}'); @@ -89,7 +110,7 @@ class ManagerTest extends TestCase { // New share falls back to "-1" appendix, because the name is already taken $this->assertExternalShareEntry($shareData2, $openShares[1], 2, '{{TemporaryMountPointName#' . $shareData2['name'] . '}}-1'); - self::invokePrivate($this->manager, 'setupMounts'); + $this->setupMounts(); $this->assertNotMount('SharedFolder'); $this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}'); $this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}-1'); @@ -111,7 +132,7 @@ class ManagerTest extends TestCase { $this->assertCount(1, $openShares); $this->assertExternalShareEntry($shareData2, $openShares[0], 2, '{{TemporaryMountPointName#' . $shareData2['name'] . '}}-1'); - self::invokePrivate($this->manager, 'setupMounts'); + $this->setupMounts(); $this->assertMount($shareData1['name']); $this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}'); $this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}-1'); @@ -124,7 +145,7 @@ class ManagerTest extends TestCase { // New share falls back to the original name (no "-\d", because the name is not taken) $this->assertExternalShareEntry($shareData3, $openShares[1], 3, '{{TemporaryMountPointName#' . $shareData3['name'] . '}}'); - self::invokePrivate($this->manager, 'setupMounts'); + $this->setupMounts(); $this->assertMount($shareData1['name']); $this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}'); $this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}-1'); @@ -136,7 +157,7 @@ class ManagerTest extends TestCase { // Decline the third share $this->manager->declineShare($openShares[1]['id']); - self::invokePrivate($this->manager, 'setupMounts'); + $this->setupMounts(); $this->assertMount($shareData1['name']); $this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}'); $this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}-1'); @@ -151,7 +172,7 @@ class ManagerTest extends TestCase { $this->assertCount(1, $openShares); $this->assertExternalShareEntry($shareData2, $openShares[0], 2, '{{TemporaryMountPointName#' . $shareData2['name'] . '}}-1'); - self::invokePrivate($this->manager, 'setupMounts'); + $this->setupMounts(); $this->assertMount($shareData1['name']); $this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}'); $this->assertNotMount('{{TemporaryMountPointName#' . $shareData1['name'] . '}}-1'); diff --git a/apps/files_sharing/tests/grouppropagationmanager.php b/apps/files_sharing/tests/grouppropagationmanager.php new file mode 100644 index 00000000000..6fc6ef7a532 --- /dev/null +++ b/apps/files_sharing/tests/grouppropagationmanager.php @@ -0,0 +1,175 @@ +<?php +/** + * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin Appelman <icewind@owncloud.com> + * @author Vincent Petry <pvince81@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Files_sharing\Tests; + +use OC\Files\View; +use OCP\IGroupManager; +use OCP\IGroup; +use OCP\IUser; +use OCP\Share; +use OCA\Files_Sharing\Propagation\GroupPropagationManager; +use OCA\Files_Sharing\Propagation\PropagationManager; + +class GroupPropagationManagerTest extends TestCase { + + /** + * @var GroupPropagationManager + */ + private $groupPropagationManager; + + /** + * @var IGroupManager + */ + private $groupManager; + + /** + * @var PropagationManager + */ + private $propagationManager; + + /** + * @var IGroup + */ + private $recipientGroup; + + /** + * @var IUser + */ + private $recipientUser; + + /** + * @var array + */ + private $fileInfo; + + protected function setUp() { + parent::setUp(); + + $user = $this->getMockBuilder('\OCP\IUser') + ->disableOriginalConstructor() + ->getMock(); + $user->method('getUID')->willReturn(self::TEST_FILES_SHARING_API_USER1); + $userSession = $this->getMockBuilder('\OCP\IUserSession') + ->disableOriginalConstructor() + ->getMock(); + $userSession->method('getUser')->willReturn(selF::TEST_FILES_SHARING_API_USER1); + + $this->propagationManager = $this->getMockBuilder('OCA\Files_Sharing\Propagation\PropagationManager') + ->disableOriginalConstructor() + ->getMock(); + + $this->groupManager = \OC::$server->getGroupManager(); + $this->groupPropagationManager = new GroupPropagationManager( + $userSession, + $this->groupManager, + $this->propagationManager + ); + $this->groupPropagationManager->globalSetup(); + + // since the sharing code is not mockable, we have to create a real folder + $this->loginAsUser(self::TEST_FILES_SHARING_API_USER1); + $view1 = new View('/' . self::TEST_FILES_SHARING_API_USER1 . '/files'); + $view1->mkdir('/folder'); + + $this->fileInfo = $view1->getFileInfo('/folder'); + + $this->recipientGroup = $this->groupManager->get(self::TEST_FILES_SHARING_API_GROUP1); + $this->recipientUser = \OC::$server->getUserManager()->get(self::TEST_FILES_SHARING_API_USER3); + + Share::shareItem( + 'folder', + $this->fileInfo['fileid'], + Share::SHARE_TYPE_GROUP, + $this->recipientGroup->getGID(), + \OCP\Constants::PERMISSION_READ + ); + + $this->loginAsUser($this->recipientUser->getUID()); + } + + protected function tearDown() { + $this->groupPropagationManager->tearDown(); + $this->recipientGroup->removeUser($this->recipientUser); + parent::tearDown(); + } + + public function testPropagateWhenAddedToGroup() { + $this->propagationManager->expects($this->once()) + ->method('propagateSharesToUser') + ->with($this->callback(function($shares) { + if (count($shares) !== 1) { + return false; + } + $share = array_values($shares)[0]; + return $share['file_source'] === $this->fileInfo['fileid'] && + $share['share_with'] === $this->recipientGroup->getGID() && + $share['file_target'] === '/folder'; + }), $this->recipientUser->getUID()); + + $this->recipientGroup->addUser($this->recipientUser); + } + + public function testPropagateWhenRemovedFromGroup() { + $this->recipientGroup->addUser($this->recipientUser); + + $this->propagationManager->expects($this->once()) + ->method('propagateSharesToUser') + ->with($this->callback(function($shares) { + if (count($shares) !== 1) { + return false; + } + $share = array_values($shares)[0]; + return $share['file_source'] === $this->fileInfo['fileid'] && + $share['share_with'] === $this->recipientGroup->getGID() && + $share['file_target'] === '/folder'; + }), $this->recipientUser->getUID()); + + $this->recipientGroup->removeUser($this->recipientUser); + } + + public function testPropagateWhenRemovedFromGroupWithSubdirTarget() { + $this->recipientGroup->addUser($this->recipientUser); + + // relogin to refresh mount points + $this->loginAsUser($this->recipientUser->getUID()); + $recipientView = new View('/' . $this->recipientUser->getUID() . '/files'); + + $this->assertTrue($recipientView->mkdir('sub')); + $this->assertTrue($recipientView->rename('folder', 'sub/folder')); + + $this->propagationManager->expects($this->once()) + ->method('propagateSharesToUser') + ->with($this->callback(function($shares) { + if (count($shares) !== 1) { + return false; + } + $share = array_values($shares)[0]; + return $share['file_source'] === $this->fileInfo['fileid'] && + $share['share_with'] === $this->recipientGroup->getGID() && + $share['file_target'] === '/sub/folder'; + }), $this->recipientUser->getUID()); + + $this->recipientGroup->removeUser($this->recipientUser); + } +} diff --git a/apps/files_sharing/tests/locking.php b/apps/files_sharing/tests/locking.php index 269c924d142..ae1fcf30a53 100644 --- a/apps/files_sharing/tests/locking.php +++ b/apps/files_sharing/tests/locking.php @@ -1,8 +1,7 @@ <?php /** - * @author Morris Jobke <hey@morrisjobke.de> + * @author Lukas Reschke <lukas@owncloud.com> * @author Robin Appelman <icewind@owncloud.com> - * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_sharing/tests/middleware/sharingcheckmiddleware.php b/apps/files_sharing/tests/middleware/sharingcheckmiddleware.php index 05cb7497680..0269f77d0d5 100644 --- a/apps/files_sharing/tests/middleware/sharingcheckmiddleware.php +++ b/apps/files_sharing/tests/middleware/sharingcheckmiddleware.php @@ -1,8 +1,8 @@ <?php /** - * @author Joas Schilling <nickvergessen@owncloud.com> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_sharing/tests/permissions.php b/apps/files_sharing/tests/permissions.php index c10333defaa..80e727b7178 100644 --- a/apps/files_sharing/tests/permissions.php +++ b/apps/files_sharing/tests/permissions.php @@ -2,7 +2,6 @@ /** * @author Björn Schießle <schiessle@owncloud.com> * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> diff --git a/apps/files_sharing/tests/server2server.php b/apps/files_sharing/tests/server2server.php index a4cc8209a8e..300c637c777 100644 --- a/apps/files_sharing/tests/server2server.php +++ b/apps/files_sharing/tests/server2server.php @@ -1,6 +1,7 @@ <?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> * diff --git a/apps/files_sharing/tests/share.php b/apps/files_sharing/tests/share.php index ed21e20f751..abff820c168 100644 --- a/apps/files_sharing/tests/share.php +++ b/apps/files_sharing/tests/share.php @@ -4,6 +4,7 @@ * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> + * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_sharing/tests/sharedmount.php b/apps/files_sharing/tests/sharedmount.php index d1db6a644f0..6f487892b8f 100644 --- a/apps/files_sharing/tests/sharedmount.php +++ b/apps/files_sharing/tests/sharedmount.php @@ -4,6 +4,7 @@ * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> * diff --git a/apps/files_sharing/tests/sizepropagation.php b/apps/files_sharing/tests/sizepropagation.php index dbaa316f603..c596003de76 100644 --- a/apps/files_sharing/tests/sizepropagation.php +++ b/apps/files_sharing/tests/sizepropagation.php @@ -1,6 +1,5 @@ <?php /** - * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. @@ -36,6 +35,7 @@ class SizePropagation extends TestCase { $ownerView->file_put_contents('/sharedfolder/subfolder/foo.txt', 'bar'); $sharedFolderInfo = $ownerView->getFileInfo('/sharedfolder', false); + $this->assertInstanceOf('\OC\Files\FileInfo', $sharedFolderInfo); \OCP\Share::shareItem('folder', $sharedFolderInfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER1, 31); $ownerRootInfo = $ownerView->getFileInfo('', false); @@ -68,6 +68,7 @@ class SizePropagation extends TestCase { $ownerView->file_put_contents('/sharedfolder/subfolder/foo.txt', 'bar'); $sharedFolderInfo = $ownerView->getFileInfo('/sharedfolder', false); + $this->assertInstanceOf('\OC\Files\FileInfo', $sharedFolderInfo); \OCP\Share::shareItem('folder', $sharedFolderInfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER1, 31); $ownerRootInfo = $ownerView->getFileInfo('', false); diff --git a/apps/files_trashbin/ajax/delete.php b/apps/files_trashbin/ajax/delete.php index 63002671bfa..7ce8d632e4b 100644 --- a/apps/files_trashbin/ajax/delete.php +++ b/apps/files_trashbin/ajax/delete.php @@ -4,6 +4,7 @@ * @author Björn Schießle <schiessle@owncloud.com> * @author Lukas Reschke <lukas@owncloud.com> * @author Robin Appelman <icewind@owncloud.com> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_trashbin/ajax/preview.php b/apps/files_trashbin/ajax/preview.php index c8bae2c5ce9..90add53f77f 100644 --- a/apps/files_trashbin/ajax/preview.php +++ b/apps/files_trashbin/ajax/preview.php @@ -3,6 +3,7 @@ * @author Björn Schießle <schiessle@owncloud.com> * @author Georg Ehrke <georg@owncloud.com> * @author Lukas Reschke <lukas@owncloud.com> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_trashbin/ajax/undelete.php b/apps/files_trashbin/ajax/undelete.php index 8eda7a8d640..01dc91f9bac 100644 --- a/apps/files_trashbin/ajax/undelete.php +++ b/apps/files_trashbin/ajax/undelete.php @@ -4,6 +4,7 @@ * @author Björn Schießle <schiessle@owncloud.com> * @author Lukas Reschke <lukas@owncloud.com> * @author Robin Appelman <icewind@owncloud.com> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> * diff --git a/apps/files_trashbin/appinfo/app.php b/apps/files_trashbin/appinfo/app.php index 4805f9eeafd..7d99270557f 100644 --- a/apps/files_trashbin/appinfo/app.php +++ b/apps/files_trashbin/appinfo/app.php @@ -1,10 +1,10 @@ <?php /** * @author Bart Visscher <bartv@thisnet.nl> - * @author Björn Schießle <schiessle@owncloud.com> * @author Christopher Schäpers <kondou@ts.unde.re> * @author Florin Peter <github@florin-peter.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Victor Dubiniuk <dubiniuk@owncloud.com> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_trashbin/appinfo/routes.php b/apps/files_trashbin/appinfo/routes.php index cf3d7b77ec2..caa9f0864a1 100644 --- a/apps/files_trashbin/appinfo/routes.php +++ b/apps/files_trashbin/appinfo/routes.php @@ -1,6 +1,5 @@ <?php /** - * @author Georg Ehrke <georg@owncloud.com> * @author Lukas Reschke <lukas@owncloud.com> * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Vincent Petry <pvince81@owncloud.com> diff --git a/apps/files_trashbin/appinfo/update.php b/apps/files_trashbin/appinfo/update.php index ae018a9da5d..bd2ee6bb390 100644 --- a/apps/files_trashbin/appinfo/update.php +++ b/apps/files_trashbin/appinfo/update.php @@ -3,6 +3,7 @@ * @author Björn Schießle <schiessle@owncloud.com> * @author Christopher Schäpers <kondou@ts.unde.re> * @author Thomas Müller <thomas.mueller@tmit.eu> + * @author Victor Dubiniuk <dubiniuk@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_trashbin/command/cleanup.php b/apps/files_trashbin/command/cleanup.php index 60717abac18..8af5dee4fcb 100644 --- a/apps/files_trashbin/command/cleanup.php +++ b/apps/files_trashbin/command/cleanup.php @@ -1,6 +1,7 @@ <?php /** * @author Björn Schießle <schiessle@owncloud.com> + * @author Joas Schilling <nickvergessen@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_trashbin/command/expire.php b/apps/files_trashbin/command/expire.php index 89b949bbcdf..f34c63b718b 100644 --- a/apps/files_trashbin/command/expire.php +++ b/apps/files_trashbin/command/expire.php @@ -1,7 +1,6 @@ <?php /** * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> diff --git a/apps/files_trashbin/l10n/nds.js b/apps/files_trashbin/l10n/nds.js new file mode 100644 index 00000000000..b2dd9ff4ca6 --- /dev/null +++ b/apps/files_trashbin/l10n/nds.js @@ -0,0 +1,7 @@ +OC.L10N.register( + "files_trashbin", + { + "Delete" : "Löschen", + "Name" : "Name" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/nds.json b/apps/files_trashbin/l10n/nds.json new file mode 100644 index 00000000000..45b0caa74ac --- /dev/null +++ b/apps/files_trashbin/l10n/nds.json @@ -0,0 +1,5 @@ +{ "translations": { + "Delete" : "Löschen", + "Name" : "Name" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/files_trashbin/lib/backgroundjob/expiretrash.php b/apps/files_trashbin/lib/backgroundjob/expiretrash.php index a222767669a..079fdd29912 100644 --- a/apps/files_trashbin/lib/backgroundjob/expiretrash.php +++ b/apps/files_trashbin/lib/backgroundjob/expiretrash.php @@ -1,5 +1,6 @@ <?php /** + * @author Lukas Reschke <lukas@owncloud.com> * @author Victor Dubiniuk <dubiniuk@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_trashbin/lib/expiration.php b/apps/files_trashbin/lib/expiration.php index 5069521aab3..1c08e2869f6 100644 --- a/apps/files_trashbin/lib/expiration.php +++ b/apps/files_trashbin/lib/expiration.php @@ -1,5 +1,6 @@ <?php /** + * @author Lukas Reschke <lukas@owncloud.com> * @author Victor Dubiniuk <dubiniuk@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_trashbin/lib/helper.php b/apps/files_trashbin/lib/helper.php index 0baa2b5414b..3d6a02c7776 100644 --- a/apps/files_trashbin/lib/helper.php +++ b/apps/files_trashbin/lib/helper.php @@ -5,6 +5,7 @@ * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Robin Appelman <icewind@owncloud.com> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_trashbin/lib/hooks.php b/apps/files_trashbin/lib/hooks.php index d11890aa4a7..57fc8d7a8d3 100644 --- a/apps/files_trashbin/lib/hooks.php +++ b/apps/files_trashbin/lib/hooks.php @@ -1,6 +1,5 @@ <?php /** - * @author Bart Visscher <bartv@thisnet.nl> * @author Björn Schießle <schiessle@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> diff --git a/apps/files_trashbin/lib/trashbin.php b/apps/files_trashbin/lib/trashbin.php index ea6f0993dd6..ef015c3566a 100644 --- a/apps/files_trashbin/lib/trashbin.php +++ b/apps/files_trashbin/lib/trashbin.php @@ -7,6 +7,7 @@ * @author Georg Ehrke <georg@owncloud.com> * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@owncloud.com> + * @author Martin Mattel <martin.mattel@diemattels.at> * @author Morris Jobke <hey@morrisjobke.de> * @author Qingping Hou <dave2008713@gmail.com> * @author Robin Appelman <icewind@owncloud.com> diff --git a/apps/files_trashbin/tests/command/cleanuptest.php b/apps/files_trashbin/tests/command/cleanuptest.php index d4cccee448e..e928f55eb8b 100644 --- a/apps/files_trashbin/tests/command/cleanuptest.php +++ b/apps/files_trashbin/tests/command/cleanuptest.php @@ -1,6 +1,7 @@ <?php /** * @author Björn Schießle <schiessle@owncloud.com> + * @author Joas Schilling <nickvergessen@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_trashbin/tests/expiration.php b/apps/files_trashbin/tests/expiration.php index 76fb24aa4df..c142133ceb7 100644 --- a/apps/files_trashbin/tests/expiration.php +++ b/apps/files_trashbin/tests/expiration.php @@ -1,5 +1,6 @@ <?php /** + * @author Joas Schilling <nickvergessen@owncloud.com> * @author Victor Dubiniuk <dubiniuk@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_trashbin/tests/storage.php b/apps/files_trashbin/tests/storage.php index 64540505d22..44b680f265c 100644 --- a/apps/files_trashbin/tests/storage.php +++ b/apps/files_trashbin/tests/storage.php @@ -1,5 +1,6 @@ <?php /** + * @author Björn Schießle <schiessle@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Vincent Petry <pvince81@owncloud.com> diff --git a/apps/files_trashbin/tests/trashbin.php b/apps/files_trashbin/tests/trashbin.php index f60367a77e2..757239b8cc4 100644 --- a/apps/files_trashbin/tests/trashbin.php +++ b/apps/files_trashbin/tests/trashbin.php @@ -5,6 +5,7 @@ * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Victor Dubiniuk <dubiniuk@owncloud.com> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_versions/ajax/getVersions.php b/apps/files_versions/ajax/getVersions.php index 59bd30f434f..d50545f7c69 100644 --- a/apps/files_versions/ajax/getVersions.php +++ b/apps/files_versions/ajax/getVersions.php @@ -5,6 +5,7 @@ * @author Frank Karlitschek <frank@owncloud.org> * @author Lukas Reschke <lukas@owncloud.com> * @author Sam Tuke <mail@samtuke.com> + * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_versions/ajax/preview.php b/apps/files_versions/ajax/preview.php index 2f33f0278ef..d7bc44f17a2 100644 --- a/apps/files_versions/ajax/preview.php +++ b/apps/files_versions/ajax/preview.php @@ -1,7 +1,9 @@ <?php /** * @author Björn Schießle <schiessle@owncloud.com> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Thomas Müller <thomas.mueller@tmit.eu> + * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_versions/appinfo/app.php b/apps/files_versions/appinfo/app.php index eadc7c69a23..89990fdf0d8 100644 --- a/apps/files_versions/appinfo/app.php +++ b/apps/files_versions/appinfo/app.php @@ -2,6 +2,7 @@ /** * @author Björn Schießle <schiessle@owncloud.com> * @author Frank Karlitschek <frank@owncloud.org> + * @author Victor Dubiniuk <dubiniuk@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_versions/appinfo/application.php b/apps/files_versions/appinfo/application.php index b61b03dab13..00723e621ac 100644 --- a/apps/files_versions/appinfo/application.php +++ b/apps/files_versions/appinfo/application.php @@ -1,6 +1,7 @@ <?php /** * @author Roeland Jago Douma <roeland@famdouma.nl> + * @author Victor Dubiniuk <dubiniuk@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_versions/appinfo/update.php b/apps/files_versions/appinfo/update.php index 687e5d3b5d4..ef6772f3079 100644 --- a/apps/files_versions/appinfo/update.php +++ b/apps/files_versions/appinfo/update.php @@ -2,6 +2,7 @@ /** * @author Björn Schießle <schiessle@owncloud.com> * @author Thomas Müller <thomas.mueller@tmit.eu> + * @author Victor Dubiniuk <dubiniuk@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_versions/command/expire.php b/apps/files_versions/command/expire.php index 4492497f851..5db33f38772 100644 --- a/apps/files_versions/command/expire.php +++ b/apps/files_versions/command/expire.php @@ -1,7 +1,6 @@ <?php /** * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_versions/lib/expiration.php b/apps/files_versions/lib/expiration.php index fba705251e9..4b3cecc1202 100644 --- a/apps/files_versions/lib/expiration.php +++ b/apps/files_versions/lib/expiration.php @@ -138,7 +138,7 @@ class Expiration { } if (!isset($splitValues[1])) { - $maxValue = self::NO_OBLIGATION; + $maxValue = 'auto'; } else { $maxValue = trim($splitValues[1]); } diff --git a/apps/files_versions/lib/hooks.php b/apps/files_versions/lib/hooks.php index 5ef2cc3c7d0..f9d9eddf5e2 100644 --- a/apps/files_versions/lib/hooks.php +++ b/apps/files_versions/lib/hooks.php @@ -7,6 +7,7 @@ * @author Robin Appelman <icewind@owncloud.com> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Sam Tuke <mail@samtuke.com> + * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/files_versions/lib/storage.php b/apps/files_versions/lib/storage.php index cd2077d2922..fd51a54b108 100644 --- a/apps/files_versions/lib/storage.php +++ b/apps/files_versions/lib/storage.php @@ -13,6 +13,7 @@ * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Scrutinizer Auto-Fixer <auto-fixer@scrutinizer-ci.com> * @author Thomas Müller <thomas.mueller@tmit.eu> + * @author Victor Dubiniuk <dubiniuk@owncloud.com> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_versions/tests/command/expiretest.php b/apps/files_versions/tests/command/expiretest.php index 247fb99b767..eb622689c33 100644 --- a/apps/files_versions/tests/command/expiretest.php +++ b/apps/files_versions/tests/command/expiretest.php @@ -26,7 +26,7 @@ use Test\TestCase; class ExpireTest extends TestCase { public function testExpireNonExistingUser() { - $command = new Expire('test', ''); + $command = new Expire($this->getUniqueID('test'), ''); $command->handle(); $this->assertTrue(true); diff --git a/apps/files_versions/tests/expirationtest.php b/apps/files_versions/tests/expirationtest.php index 11a4746c5e7..1081e412ce9 100644 --- a/apps/files_versions/tests/expirationtest.php +++ b/apps/files_versions/tests/expirationtest.php @@ -1,5 +1,6 @@ <?php /** + * @author Joas Schilling <nickvergessen@owncloud.com> * @author Victor Dubiniuk <dubiniuk@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/files_versions/tests/versions.php b/apps/files_versions/tests/versions.php index d4a85c8bffe..00d2b75b7a9 100644 --- a/apps/files_versions/tests/versions.php +++ b/apps/files_versions/tests/versions.php @@ -1,8 +1,10 @@ <?php /** * @author Björn Schießle <schiessle@owncloud.com> + * @author Georg Ehrke <georg@owncloud.com> * @author Joas Schilling <nickvergessen@owncloud.com> * @author Jörn Friedrich Dreyer <jfd@butonic.de> + * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Thomas Müller <thomas.mueller@tmit.eu> diff --git a/apps/provisioning_api/appinfo/app.php b/apps/provisioning_api/appinfo/app.php index bb5c541c4fd..40d8d5d04d3 100644 --- a/apps/provisioning_api/appinfo/app.php +++ b/apps/provisioning_api/appinfo/app.php @@ -1,6 +1,6 @@ <?php /** - * @author Tom Needham <tom@owncloud.com> + * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/provisioning_api/appinfo/routes.php b/apps/provisioning_api/appinfo/routes.php index 2ee3a185dae..5c53684fd77 100644 --- a/apps/provisioning_api/appinfo/routes.php +++ b/apps/provisioning_api/appinfo/routes.php @@ -2,6 +2,7 @@ /** * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Tom Needham <tom@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/provisioning_api/lib/apps.php b/apps/provisioning_api/lib/apps.php index 80f6e7049c6..ba920c7a9c9 100644 --- a/apps/provisioning_api/lib/apps.php +++ b/apps/provisioning_api/lib/apps.php @@ -1,7 +1,9 @@ <?php /** * @author Joas Schilling <nickvergessen@owncloud.com> + * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Tom Needham <tom@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/provisioning_api/lib/groups.php b/apps/provisioning_api/lib/groups.php index c6fbe12b34e..7e7515bc709 100644 --- a/apps/provisioning_api/lib/groups.php +++ b/apps/provisioning_api/lib/groups.php @@ -1,7 +1,9 @@ <?php /** * @author Joas Schilling <nickvergessen@owncloud.com> + * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Tom Needham <tom@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/provisioning_api/lib/users.php b/apps/provisioning_api/lib/users.php index 617e50b403e..add6325bde0 100644 --- a/apps/provisioning_api/lib/users.php +++ b/apps/provisioning_api/lib/users.php @@ -1,6 +1,7 @@ <?php /** * @author Joas Schilling <nickvergessen@owncloud.com> + * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Thomas Müller <thomas.mueller@tmit.eu> diff --git a/apps/provisioning_api/tests/appstest.php b/apps/provisioning_api/tests/appstest.php index f2a3977eac4..2baea5bbc8c 100644 --- a/apps/provisioning_api/tests/appstest.php +++ b/apps/provisioning_api/tests/appstest.php @@ -2,8 +2,8 @@ /** * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Tom Needham <tom@owncloud.com> - * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/provisioning_api/tests/groupstest.php b/apps/provisioning_api/tests/groupstest.php index 73044e33120..4afd246abcd 100644 --- a/apps/provisioning_api/tests/groupstest.php +++ b/apps/provisioning_api/tests/groupstest.php @@ -2,8 +2,8 @@ /** * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Tom Needham <tom@owncloud.com> - * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/provisioning_api/tests/testcase.php b/apps/provisioning_api/tests/testcase.php index ee7eb2a5a9a..cc8f5c1d16d 100644 --- a/apps/provisioning_api/tests/testcase.php +++ b/apps/provisioning_api/tests/testcase.php @@ -2,6 +2,7 @@ /** * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Roeland Jago Douma <roeland@famdouma.nl> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/user_ldap/ajax/setConfiguration.php b/apps/user_ldap/ajax/setConfiguration.php index 9311d72d21f..3b0ba1b7754 100644 --- a/apps/user_ldap/ajax/setConfiguration.php +++ b/apps/user_ldap/ajax/setConfiguration.php @@ -2,6 +2,7 @@ /** * @author Arthur Schiwon <blizzz@owncloud.com> * @author Christopher Schäpers <kondou@ts.unde.re> + * @author Lennart Rosam <hello@takuto.de> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * diff --git a/apps/user_ldap/appinfo/install.php b/apps/user_ldap/appinfo/install.php index f70eb746480..844c724ac25 100644 --- a/apps/user_ldap/appinfo/install.php +++ b/apps/user_ldap/appinfo/install.php @@ -2,6 +2,7 @@ /** * @author Arthur Schiwon <blizzz@owncloud.com> * @author Christopher Schäpers <kondou@ts.unde.re> + * @author Joas Schilling <nickvergessen@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/user_ldap/appinfo/update.php b/apps/user_ldap/appinfo/update.php index 33a7219644b..7d358e5b268 100644 --- a/apps/user_ldap/appinfo/update.php +++ b/apps/user_ldap/appinfo/update.php @@ -1,5 +1,7 @@ <?php /** + * @author Joas Schilling <nickvergessen@owncloud.com> + * @author Lennart Rosam <hello@takuto.de> * @author Morris Jobke <hey@morrisjobke.de> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/apps/user_ldap/group_ldap.php b/apps/user_ldap/group_ldap.php index d2e69b4e12a..97ed8fa91ac 100644 --- a/apps/user_ldap/group_ldap.php +++ b/apps/user_ldap/group_ldap.php @@ -5,7 +5,9 @@ * @author Arthur Schiwon <blizzz@owncloud.com> * @author Bart Visscher <bartv@thisnet.nl> * @author Christopher Schäpers <kondou@ts.unde.re> + * @author Frédéric Fortier <frederic.fortier@oronospolytechnique.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Nicolas Grekas <nicolas.grekas@gmail.com> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> diff --git a/apps/user_ldap/l10n/fa.js b/apps/user_ldap/l10n/fa.js index 7dd4e884a4d..082f297f98f 100644 --- a/apps/user_ldap/l10n/fa.js +++ b/apps/user_ldap/l10n/fa.js @@ -13,6 +13,8 @@ OC.L10N.register( "Configuration OK" : "پیکربندی صحیح است", "Select groups" : "انتخاب گروه ها", "Select object classes" : "انتخاب کلاس های اشیا", + "Please specify the port, it could not be auto-detected." : "لطفا پورت را مشخص کنید، امکان تعیین خودکار وجود ندارد.", + "Could not detect Base DN, please enter it manually." : "امکان شناسایی Base DN, وجود ندارد، لطفا بصورت دستی آنرا وارد کنید.", "{nthServer}. Server" : "سرور {nthServer}.", "Do you really want to delete the current Server Configuration?" : "آیا واقعا می خواهید پیکربندی کنونی سرور را حذف کنید؟", "Confirm Deletion" : "تایید حذف", @@ -43,6 +45,7 @@ OC.L10N.register( "For anonymous access, leave DN and Password empty." : "برای دسترسی ناشناس، DN را رها نموده و رمزعبور را خالی بگذارید.", "One Base DN per line" : "یک پایه DN در هر خط", "You can specify Base DN for users and groups in the Advanced tab" : "شما می توانید پایه DN را برای کاربران و گروه ها در زبانه Advanced مشخص کنید.", + "Test Base DN" : "تست DN پایه", "Saving" : "درحال ذخیره", "Back" : "بازگشت", "Continue" : "ادامه", @@ -56,6 +59,7 @@ OC.L10N.register( "Backup (Replica) Port" : "پشتیبان گیری (بدل) پورت", "Disable Main Server" : "غیر فعال کردن سرور اصلی", "Turn off SSL certificate validation." : "غیرفعال کردن اعتبار گواهی نامه SSL .", + "Cache Time-To-Live" : "مدت زمان کش", "Directory Settings" : "تنظیمات پوشه", "User Display Name Field" : "فیلد نام کاربر", "Base User Tree" : "کاربر درخت پایه", @@ -67,6 +71,7 @@ OC.L10N.register( "One Group Base DN per line" : "یک گروه پایه DN در هر خط", "Group Search Attributes" : "گروه صفات جستجو", "Group-Member association" : "انجمن گروه کاربران", + "Nested Groups" : "گروههای زیرمجموعه", "Special Attributes" : "ویژگی های مخصوص", "Quota Field" : "سهمیه بندی انجام نشد.", "Quota Default" : "سهمیه بندی پیش فرض", @@ -77,6 +82,7 @@ OC.L10N.register( "Internal Username" : "نام کاربری داخلی", "Internal Username Attribute:" : "ویژگی نام کاربری داخلی:", "Override UUID detection" : "نادیده گرفتن تشخیص UUID ", + "UUID Attribute for Users:" : "UUID ویژگی برای کاربران:", "Username-LDAP User Mapping" : "نام کاربری - نگاشت کاربر LDAP ", "Clear Username-LDAP User Mapping" : "پاک کردن نام کاربری- LDAP نگاشت کاربر ", "Clear Groupname-LDAP Group Mapping" : "پاک کردن نام گروه -LDAP گروه نقشه برداری" diff --git a/apps/user_ldap/l10n/fa.json b/apps/user_ldap/l10n/fa.json index 34a36eaf3bd..7a8b3e8212e 100644 --- a/apps/user_ldap/l10n/fa.json +++ b/apps/user_ldap/l10n/fa.json @@ -11,6 +11,8 @@ "Configuration OK" : "پیکربندی صحیح است", "Select groups" : "انتخاب گروه ها", "Select object classes" : "انتخاب کلاس های اشیا", + "Please specify the port, it could not be auto-detected." : "لطفا پورت را مشخص کنید، امکان تعیین خودکار وجود ندارد.", + "Could not detect Base DN, please enter it manually." : "امکان شناسایی Base DN, وجود ندارد، لطفا بصورت دستی آنرا وارد کنید.", "{nthServer}. Server" : "سرور {nthServer}.", "Do you really want to delete the current Server Configuration?" : "آیا واقعا می خواهید پیکربندی کنونی سرور را حذف کنید؟", "Confirm Deletion" : "تایید حذف", @@ -41,6 +43,7 @@ "For anonymous access, leave DN and Password empty." : "برای دسترسی ناشناس، DN را رها نموده و رمزعبور را خالی بگذارید.", "One Base DN per line" : "یک پایه DN در هر خط", "You can specify Base DN for users and groups in the Advanced tab" : "شما می توانید پایه DN را برای کاربران و گروه ها در زبانه Advanced مشخص کنید.", + "Test Base DN" : "تست DN پایه", "Saving" : "درحال ذخیره", "Back" : "بازگشت", "Continue" : "ادامه", @@ -54,6 +57,7 @@ "Backup (Replica) Port" : "پشتیبان گیری (بدل) پورت", "Disable Main Server" : "غیر فعال کردن سرور اصلی", "Turn off SSL certificate validation." : "غیرفعال کردن اعتبار گواهی نامه SSL .", + "Cache Time-To-Live" : "مدت زمان کش", "Directory Settings" : "تنظیمات پوشه", "User Display Name Field" : "فیلد نام کاربر", "Base User Tree" : "کاربر درخت پایه", @@ -65,6 +69,7 @@ "One Group Base DN per line" : "یک گروه پایه DN در هر خط", "Group Search Attributes" : "گروه صفات جستجو", "Group-Member association" : "انجمن گروه کاربران", + "Nested Groups" : "گروههای زیرمجموعه", "Special Attributes" : "ویژگی های مخصوص", "Quota Field" : "سهمیه بندی انجام نشد.", "Quota Default" : "سهمیه بندی پیش فرض", @@ -75,6 +80,7 @@ "Internal Username" : "نام کاربری داخلی", "Internal Username Attribute:" : "ویژگی نام کاربری داخلی:", "Override UUID detection" : "نادیده گرفتن تشخیص UUID ", + "UUID Attribute for Users:" : "UUID ویژگی برای کاربران:", "Username-LDAP User Mapping" : "نام کاربری - نگاشت کاربر LDAP ", "Clear Username-LDAP User Mapping" : "پاک کردن نام کاربری- LDAP نگاشت کاربر ", "Clear Groupname-LDAP Group Mapping" : "پاک کردن نام گروه -LDAP گروه نقشه برداری" diff --git a/apps/user_ldap/l10n/nds.js b/apps/user_ldap/l10n/nds.js index 37042a4f412..7fe0e420a11 100644 --- a/apps/user_ldap/l10n/nds.js +++ b/apps/user_ldap/l10n/nds.js @@ -1,7 +1,9 @@ OC.L10N.register( "user_ldap", { - "_%s group found_::_%s groups found_" : ["",""], - "_%s user found_::_%s users found_" : ["",""] + "Host" : "Host", + "Port" : "Port", + "Password" : "Passwort", + "Continue" : "Fortsetzen" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_ldap/l10n/nds.json b/apps/user_ldap/l10n/nds.json index 521de7ba1a8..78a3e1c8efd 100644 --- a/apps/user_ldap/l10n/nds.json +++ b/apps/user_ldap/l10n/nds.json @@ -1,5 +1,7 @@ { "translations": { - "_%s group found_::_%s groups found_" : ["",""], - "_%s user found_::_%s users found_" : ["",""] + "Host" : "Host", + "Port" : "Port", + "Password" : "Passwort", + "Continue" : "Fortsetzen" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/pt_PT.js b/apps/user_ldap/l10n/pt_PT.js index 38da6186e90..459fe817603 100644 --- a/apps/user_ldap/l10n/pt_PT.js +++ b/apps/user_ldap/l10n/pt_PT.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Failed to clear the mappings." : "Falhou a limpar os mapas.", "Failed to delete the server configuration" : "Erro ao eliminar a configuração do servidor", + "The configuration is invalid: anonymous bind is not allowed." : "A configuração é inválida: ligação anónima não é permitida.", "The configuration is valid and the connection could be established!" : "A configuração está correcta e foi possível estabelecer a ligação!", "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "A configuração está correcta, mas não foi possível estabelecer o \"laço\", por favor, verifique as configurações do servidor e as credenciais.", "The configuration is invalid. Please have a look at the logs for further details." : "A configuração é inválida. Por favor, veja o log do ownCloud para mais detalhes.", @@ -32,6 +33,9 @@ OC.L10N.register( "Error while clearing the mappings." : "Erro a limpar os mapas.", "Anonymous bind is not allowed. Please provide a User DN and Password." : "Ligação anónima não permitida. Por favor forneça um ND de utilizador e password.", "LDAP Operations error. Anonymous bind might not be allowed." : "Erro de operações LDAP. Ligação anónima pode não ser permitida.", + "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Falha na gravação. Por favor verifique que a base de dados está operacional. Recarregar antes de continuar.", + "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Trocando o modo vai permitir a busca automática no LDAP. Dependendo do tamanho do seu LDAP poderá demorar um pouco. Ainda pretende trocar o modo?", + "Mode switch" : "Trocar de modo", "Select attributes" : "Selecionar atributos", "User found and settings verified." : "Utilizador encontrado e as definilções verificadas", "_%s group found_::_%s groups found_" : ["%s grupo encontrado","%s grupos encontrados"], diff --git a/apps/user_ldap/l10n/pt_PT.json b/apps/user_ldap/l10n/pt_PT.json index 594b6ac1907..c7358f61bd5 100644 --- a/apps/user_ldap/l10n/pt_PT.json +++ b/apps/user_ldap/l10n/pt_PT.json @@ -1,6 +1,7 @@ { "translations": { "Failed to clear the mappings." : "Falhou a limpar os mapas.", "Failed to delete the server configuration" : "Erro ao eliminar a configuração do servidor", + "The configuration is invalid: anonymous bind is not allowed." : "A configuração é inválida: ligação anónima não é permitida.", "The configuration is valid and the connection could be established!" : "A configuração está correcta e foi possível estabelecer a ligação!", "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "A configuração está correcta, mas não foi possível estabelecer o \"laço\", por favor, verifique as configurações do servidor e as credenciais.", "The configuration is invalid. Please have a look at the logs for further details." : "A configuração é inválida. Por favor, veja o log do ownCloud para mais detalhes.", @@ -30,6 +31,9 @@ "Error while clearing the mappings." : "Erro a limpar os mapas.", "Anonymous bind is not allowed. Please provide a User DN and Password." : "Ligação anónima não permitida. Por favor forneça um ND de utilizador e password.", "LDAP Operations error. Anonymous bind might not be allowed." : "Erro de operações LDAP. Ligação anónima pode não ser permitida.", + "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Falha na gravação. Por favor verifique que a base de dados está operacional. Recarregar antes de continuar.", + "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Trocando o modo vai permitir a busca automática no LDAP. Dependendo do tamanho do seu LDAP poderá demorar um pouco. Ainda pretende trocar o modo?", + "Mode switch" : "Trocar de modo", "Select attributes" : "Selecionar atributos", "User found and settings verified." : "Utilizador encontrado e as definilções verificadas", "_%s group found_::_%s groups found_" : ["%s grupo encontrado","%s grupos encontrados"], diff --git a/apps/user_ldap/lib/access.php b/apps/user_ldap/lib/access.php index 2a605a2a0f0..0707b95013c 100644 --- a/apps/user_ldap/lib/access.php +++ b/apps/user_ldap/lib/access.php @@ -12,6 +12,7 @@ * @author Lukas Reschke <lukas@owncloud.com> * @author Lyonel Vincent <lyonel@ezix.org> * @author Morris Jobke <hey@morrisjobke.de> + * @author Nicolas Grekas <nicolas.grekas@gmail.com> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Scrutinizer Auto-Fixer <auto-fixer@scrutinizer-ci.com> * @@ -1467,6 +1468,30 @@ class Access extends LDAPUtility implements user\IUserTools { } /** + * checks whether an LDAP paged search operation has more pages that can be + * retrieved, typically when offset and limit are provided. + * + * Be very careful to use it: the last cookie value, which is inspected, can + * be reset by other operations. Best, call it immediately after a search(), + * searchUsers() or searchGroups() call. count-methods are probably safe as + * well. Don't rely on it with any fetchList-method. + * @return bool + */ + public function hasMoreResults() { + if(!$this->connection->hasPagedResultSupport) { + return false; + } + + if(empty($this->lastCookie) && $this->lastCookie !== '0') { + // as in RFC 2696, when all results are returned, the cookie will + // be empty. + return false; + } + + return true; + } + + /** * set a cookie for LDAP paged search run * @param string $base a string with the base DN for the search * @param string $filter the search filter to identify the correct search diff --git a/apps/user_ldap/lib/wizard.php b/apps/user_ldap/lib/wizard.php index 8d96e7de91d..84a1225d6ec 100644 --- a/apps/user_ldap/lib/wizard.php +++ b/apps/user_ldap/lib/wizard.php @@ -7,6 +7,7 @@ * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Nicolas Grekas <nicolas.grekas@gmail.com> * @author Robin Appelman <icewind@owncloud.com> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Scrutinizer Auto-Fixer <auto-fixer@scrutinizer-ci.com> @@ -438,7 +439,7 @@ class Wizard extends LDAPUtility { $groupEntries[] = $item; } $offset += $limit; - } while (count($groupNames) > 0 && count($groupNames) % $limit === 0); + } while ($this->access->hasMoreResults()); if(count($groupNames) > 0) { natsort($groupNames); diff --git a/apps/user_ldap/tests/group_ldap.php b/apps/user_ldap/tests/group_ldap.php index 7007afd5162..132fbfdf687 100644 --- a/apps/user_ldap/tests/group_ldap.php +++ b/apps/user_ldap/tests/group_ldap.php @@ -1,6 +1,7 @@ <?php /** * @author Arthur Schiwon <blizzz@owncloud.com> + * @author Frédéric Fortier <frederic.fortier@oronospolytechnique.com> * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * diff --git a/apps/user_ldap/tests/integration/lib/integrationtestpaging.php b/apps/user_ldap/tests/integration/lib/integrationtestpaging.php new file mode 100644 index 00000000000..f8d008d065f --- /dev/null +++ b/apps/user_ldap/tests/integration/lib/integrationtestpaging.php @@ -0,0 +1,81 @@ +<?php +/** + * @author Arthur Schiwon <blizzz@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\user_ldap\tests\integration\lib; + +use OCA\user_ldap\lib\user\Manager as LDAPUserManager; +use OCA\user_ldap\tests\integration\AbstractIntegrationTest; +use OCA\User_LDAP\Mapping\UserMapping; +use OCA\user_ldap\USER_LDAP; + +require_once __DIR__ . '/../../../../../lib/base.php'; + +class IntegrationTestPaging extends AbstractIntegrationTest { + /** @var UserMapping */ + protected $mapping; + + /** @var USER_LDAP */ + protected $backend; + + /** + * prepares the LDAP environment and sets up a test configuration for + * the LDAP backend. + */ + public function init() { + require(__DIR__ . '/../setup-scripts/createExplicitUsers.php'); + parent::init(); + + $this->backend = new \OCA\user_ldap\USER_LDAP($this->access, \OC::$server->getConfig()); + } + + /** + * tests that paging works properly against a simple example (reading all + * of few users in smallest steps) + * + * @return bool + */ + protected function case1() { + $limit = 1; + $offset = 0; + + $filter = 'objectclass=inetorgperson'; + $attributes = ['cn', 'dn']; + $users = []; + do { + $result = $this->access->searchUsers($filter, $attributes, $limit, $offset); + foreach($result as $user) { + $users[] = $user['cn']; + } + $offset += $limit; + } while ($this->access->hasMoreResults()); + + if(count($users) === 2) { + return true; + } + + return false; + } +} + +require_once(__DIR__ . '/../setup-scripts/config.php'); +$test = new IntegrationTestPaging($host, $port, $adn, $apwd, $bdn); +$test->init(); +$test->run(); diff --git a/apps/user_ldap/tests/integration/lib/integrationtestuserhome.php b/apps/user_ldap/tests/integration/lib/integrationtestuserhome.php index f34fca81c2d..ef000286109 100644 --- a/apps/user_ldap/tests/integration/lib/integrationtestuserhome.php +++ b/apps/user_ldap/tests/integration/lib/integrationtestuserhome.php @@ -1,9 +1,22 @@ <?php /** - * Created by PhpStorm. - * User: blizzz - * Date: 06.08.15 - * Time: 08:19 + * @author Arthur Schiwon <blizzz@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * */ namespace OCA\user_ldap\tests\integration\lib; diff --git a/apps/user_ldap/tests/integration/lib/user/IntegrationTestUserAvatar.php b/apps/user_ldap/tests/integration/lib/user/IntegrationTestUserAvatar.php index a03d6b0c0c6..6bb8afc01a2 100644 --- a/apps/user_ldap/tests/integration/lib/user/IntegrationTestUserAvatar.php +++ b/apps/user_ldap/tests/integration/lib/user/IntegrationTestUserAvatar.php @@ -1,5 +1,24 @@ <?php - +/** + * @author Arthur Schiwon <blizzz@owncloud.com> + * @author Morris Jobke <hey@morrisjobke.de> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ use OCA\user_ldap\lib\user\User; use OCA\User_LDAP\Mapping\UserMapping; use OCA\user_ldap\tests\integration\AbstractIntegrationTest; diff --git a/apps/user_ldap/tests/integration/setup-scripts/createExplicitGroups.php b/apps/user_ldap/tests/integration/setup-scripts/createExplicitGroups.php index 68854de5571..8ac35a54528 100644 --- a/apps/user_ldap/tests/integration/setup-scripts/createExplicitGroups.php +++ b/apps/user_ldap/tests/integration/setup-scripts/createExplicitGroups.php @@ -1,5 +1,24 @@ <?php - +/** + * @author Arthur Schiwon <blizzz@owncloud.com> + * @author Morris Jobke <hey@morrisjobke.de> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ if(php_sapi_name() !== 'cli') { print('Only via CLI, please.'); exit(1); diff --git a/apps/user_ldap/tests/integration/setup-scripts/createExplicitGroupsDifferentOU.php b/apps/user_ldap/tests/integration/setup-scripts/createExplicitGroupsDifferentOU.php index 361881969cc..e22b72c452c 100644 --- a/apps/user_ldap/tests/integration/setup-scripts/createExplicitGroupsDifferentOU.php +++ b/apps/user_ldap/tests/integration/setup-scripts/createExplicitGroupsDifferentOU.php @@ -1,5 +1,24 @@ <?php - +/** + * @author Arthur Schiwon <blizzz@owncloud.com> + * @author Morris Jobke <hey@morrisjobke.de> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ if(php_sapi_name() !== 'cli') { print('Only via CLI, please.'); exit(1); diff --git a/apps/user_ldap/tests/integration/setup-scripts/createExplicitUsers.php b/apps/user_ldap/tests/integration/setup-scripts/createExplicitUsers.php index bb784d60f7b..3e9cb674254 100644 --- a/apps/user_ldap/tests/integration/setup-scripts/createExplicitUsers.php +++ b/apps/user_ldap/tests/integration/setup-scripts/createExplicitUsers.php @@ -1,5 +1,24 @@ <?php - +/** + * @author Arthur Schiwon <blizzz@owncloud.com> + * @author Morris Jobke <hey@morrisjobke.de> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ if(php_sapi_name() !== 'cli') { print('Only via CLI, please.'); exit(1); diff --git a/apps/user_ldap/tests/wizard.php b/apps/user_ldap/tests/wizard.php index 525364390bc..7b046187831 100644 --- a/apps/user_ldap/tests/wizard.php +++ b/apps/user_ldap/tests/wizard.php @@ -3,6 +3,7 @@ * @author Arthur Schiwon <blizzz@owncloud.com> * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Viktor Szépe <viktor@szepe.net> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/apps/user_ldap/user_ldap.php b/apps/user_ldap/user_ldap.php index 7304088ba95..59c61524c9b 100644 --- a/apps/user_ldap/user_ldap.php +++ b/apps/user_ldap/user_ldap.php @@ -1,11 +1,10 @@ <?php /** - * @author Andreas Fischer <bantu@owncloud.com> * @author Arthur Schiwon <blizzz@owncloud.com> * @author Bart Visscher <bartv@thisnet.nl> - * @author Christopher Schäpers <kondou@ts.unde.re> * @author Dominik Schmidt <dev@dominik-schmidt.de> * @author Jörn Friedrich Dreyer <jfd@butonic.de> + * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> diff --git a/apps/user_ldap/user_proxy.php b/apps/user_ldap/user_proxy.php index 1491be3f394..2582355e4a3 100644 --- a/apps/user_ldap/user_proxy.php +++ b/apps/user_ldap/user_proxy.php @@ -2,6 +2,7 @@ /** * @author Arthur Schiwon <blizzz@owncloud.com> * @author Christopher Schäpers <kondou@ts.unde.re> + * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Thomas Müller <thomas.mueller@tmit.eu> diff --git a/autotest.sh b/autotest.sh index f69a9b34a48..42807b83e11 100755 --- a/autotest.sh +++ b/autotest.sh @@ -9,6 +9,7 @@ # @author Andreas Fischer # @author Joas Schilling # @author Lukas Reschke +# @author Jörn Friedrich Dreyer # @copyright 2012-2015 Thomas Müller thomas.mueller@tmit.eu # @@ -21,6 +22,7 @@ DATABASEHOST=localhost ADMINLOGIN=admin$EXECUTOR_NUMBER BASEDIR=$PWD +PRIMARY_STORAGE_CONFIGS="local swift" DBCONFIGS="sqlite mysql mariadb pgsql oci" # $PHP_EXE is run through 'which' and as such e.g. 'php' or 'hhvm' is usually @@ -91,6 +93,22 @@ if [ "$1" ]; then exit 2 fi fi +if [ "$PRIMARY_STORAGE_CONFIG" ]; then + FOUND=0 + for PSC in $PRIMARY_STORAGE_CONFIGS; do + if [ "$PRIMARY_STORAGE_CONFIG" = "$PSC" ]; then + FOUND=1 + break + fi + done + if [ $FOUND = 0 ]; then + echo -e "Unknown primary storage config name \"$PRIMARY_STORAGE_CONFIG\"\n" >&2 + print_syntax + exit 2 + fi +else + PRIMARY_STORAGE_CONFIG="local" +fi # check for the presence of @since in all OCP methods $PHP build/OCPSinceChecker.php @@ -101,12 +119,17 @@ if [ -f config/config.php ] && [ ! -f config/config-autotest-backup.php ]; then fi function cleanup_config { + if [ ! -z "$DOCKER_CONTAINER_ID" ]; then echo "Kill the docker $DOCKER_CONTAINER_ID" docker rm -f "$DOCKER_CONTAINER_ID" fi cd "$BASEDIR" + if [ "$PRIMARY_STORAGE_CONFIG" == "swift" ] ; then + echo "Kill the swift docker" + tests/objectstore/stop-swift-ceph.sh + fi # Restore existing config if [ -f config/config-autotest-backup.php ]; then mv config/config-autotest-backup.php config/config.php @@ -115,6 +138,10 @@ function cleanup_config { if [ -f config/autoconfig.php ]; then rm config/autoconfig.php fi + # Remove autotest swift storage config + if [ -f config/autotest-storage-swift.config.php ]; then + rm config/autotest-storage-swift.config.php + fi } # restore config on exit @@ -131,7 +158,7 @@ echo "Using database $DATABASENAME" function execute_tests { DB=$1 - echo "Setup environment for $DB testing ..." + echo "Setup environment for $DB testing on $PRIMARY_STORAGE_CONFIG storage ..." # back to root folder cd "$BASEDIR" @@ -142,6 +169,10 @@ function execute_tests { rm -rf "$DATADIR" mkdir "$DATADIR" + if [ "$PRIMARY_STORAGE_CONFIG" == "swift" ] ; then + tests/objectstore/start-swift-ceph.sh + cp tests/objectstore/swift.config.php config/autotest-storage-swift.config.php + fi cp tests/preseed-config.php config/config.php _DB=$DB @@ -238,6 +269,11 @@ function execute_tests { RESULT=$? fi + if [ "$PRIMARY_STORAGE_CONFIG" == "swift" ] ; then + echo "Kill the swift docker" + tests/objectstore/stop-swift-ceph.sh + fi + if [ ! -z "$DOCKER_CONTAINER_ID" ] ; then echo "Kill the docker $DOCKER_CONTAINER_ID" docker rm -f $DOCKER_CONTAINER_ID diff --git a/build/integration/features/bootstrap/FeatureContext.php b/build/integration/features/bootstrap/FeatureContext.php index b7a04e1ca76..caff517a16d 100644 --- a/build/integration/features/bootstrap/FeatureContext.php +++ b/build/integration/features/bootstrap/FeatureContext.php @@ -50,9 +50,68 @@ class FeatureContext extends BehatContext { } /** - * @Then /^the status code should be "([^"]*)"$/ + * Parses the xml answer to get ocs response which doesn't match with + * http one in v1 of the api. */ - public function theStatusCodeShouldBe($statusCode) { + public function getOCSResponse($response) { + return $response->xml()->meta[0]->statuscode; + } + + /** + * Parses the xml answer to get the array of users returned. + */ + public function getArrayOfUsersResponded($resp) { + $listCheckedElements = $resp->xml()->data[0]->users[0]->element; + $extractedElementsArray = json_decode(json_encode($listCheckedElements), 1); + return $extractedElementsArray; + } + + /** + * Parses the xml answer to get the array of groups returned. + */ + public function getArrayOfGroupsResponded($resp) { + $listCheckedElements = $resp->xml()->data[0]->groups[0]->element; + $extractedElementsArray = json_decode(json_encode($listCheckedElements), 1); + return $extractedElementsArray; + } + + /** + * @Then /^users returned are$/ + * @param \Behat\Gherkin\Node\TableNode|null $formData + */ + public function theUsersShouldBe($usersList) { + if ($usersList instanceof \Behat\Gherkin\Node\TableNode) { + $users = $usersList->getRows()[0]; + $respondedArray = $this->getArrayOfUsersResponded($this->response); + PHPUnit_Framework_Assert::assertEquals(asort($users), asort($respondedArray)); + } + + } + + /** + * @Then /^groups returned are$/ + * @param \Behat\Gherkin\Node\TableNode|null $formData + */ + public function theGroupsShouldBe($groupsList) { + if ($groupsList instanceof \Behat\Gherkin\Node\TableNode) { + $groups = $groupsList->getRows()[0]; + $respondedArray = $this->getArrayOfGroupsResponded($this->response); + PHPUnit_Framework_Assert::assertEquals(asort($groups), asort($respondedArray)); + } + + } + + /** + * @Then /^the OCS status code should be "([^"]*)"$/ + */ + public function theOCSStatusCodeShouldBe($statusCode) { + PHPUnit_Framework_Assert::assertEquals($statusCode, $this->getOCSResponse($this->response)); + } + + /** + * @Then /^the HTTP status code should be "([^"]*)"$/ + */ + public function theHTTPStatusCodeShouldBe($statusCode) { PHPUnit_Framework_Assert::assertEquals($statusCode, $this->response->getStatusCode()); } @@ -91,7 +150,9 @@ class FeatureContext extends BehatContext { public function userDoesNotExist($user) { try { $this->userExists($user); + PHPUnit_Framework_Assert::fail('The user "' . $user . '" exists'); } catch (\GuzzleHttp\Exception\ClientException $ex) { + $this->response = $ex->getResponse(); PHPUnit_Framework_Assert::assertEquals(404, $ex->getResponse()->getStatusCode()); } } @@ -100,7 +161,7 @@ class FeatureContext extends BehatContext { * @When /^creating the user "([^"]*)r"$/ */ public function creatingTheUser($user) { - $fullUrl = $this->baseUrl . "v2.php/cloud/users/$user"; + $fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/cloud/users/$user"; $client = new Client(); $options = []; if ($this->currentUser === 'admin') { @@ -113,10 +174,56 @@ class FeatureContext extends BehatContext { 'password' => '123456' ] ]); + + } + + /** + * @When /^creating the group "([^"]*)r"$/ + */ + public function creatingTheGroup($group) { + $fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/cloud/groups/addgroup"; + $client = new Client(); + $options = []; + if ($this->currentUser === 'admin') { + $options['auth'] = $this->adminUser; + } + + $this->response = $client->post($fullUrl, [ + 'form_params' => [ + 'groupid' => $user + ] + ]); + } + + /** + * @Given /^group "([^"]*)" exists$/ + */ + public function groupExists($group) { + $fullUrl = $this->baseUrl . "v2.php/cloud/groups/$group"; + $client = new Client(); + $options = []; + if ($this->currentUser === 'admin') { + $options['auth'] = $this->adminUser; + } + + $this->response = $client->get($fullUrl, $options); PHPUnit_Framework_Assert::assertEquals(200, $this->response->getStatusCode()); } /** + * @Given /^group "([^"]*)" does not exist$/ + */ + public function groupDoesNotExist($group) { + try { + $this->groupExists($group); + PHPUnit_Framework_Assert::fail('The group "' . $group . '" exists'); + } catch (\GuzzleHttp\Exception\ClientException $ex) { + $this->response = $ex->getResponse(); + PHPUnit_Framework_Assert::assertEquals(404, $ex->getResponse()->getStatusCode()); + } + } + + /** * @When /^sending "([^"]*)" to "([^"]*)" with$/ * @param \Behat\Gherkin\Node\TableNode|null $formData */ @@ -138,5 +245,4 @@ class FeatureContext extends BehatContext { $this->response = $ex->getResponse(); } } - } diff --git a/build/integration/features/provisioning-v1.feature b/build/integration/features/provisioning-v1.feature index 9e3d2df50bb..d865ee687ed 100644 --- a/build/integration/features/provisioning-v1.feature +++ b/build/integration/features/provisioning-v1.feature @@ -5,12 +5,14 @@ Feature: provisioning Scenario: Getting an not existing user Given As an "admin" When sending "GET" to "/cloud/users/test" - Then the status code should be "200" + Then the OCS status code should be "998" + And the HTTP status code should be "200" Scenario: Listing all users Given As an "admin" When sending "GET" to "/cloud/users" - Then the status code should be "200" + Then the OCS status code should be "100" + And the HTTP status code should be "200" Scenario: Create a user Given As an "admin" @@ -18,15 +20,87 @@ Feature: provisioning When sending "POST" to "/cloud/users" with | userid | brand-new-user | | password | 123456 | + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And user "brand-new-user" exists + + Scenario: Create an existing user + Given As an "admin" + And user "brand-new-user" exists + When sending "POST" to "/cloud/users" with + | userid | brand-new-user | + | password | 123456 | + Then the OCS status code should be "102" + And the HTTP status code should be "200" + + Scenario: Get an existing user + Given As an "admin" + When sending "GET" to "/cloud/users/brand-new-user" + Then the OCS status code should be "100" + And the HTTP status code should be "200" - Then the status code should be "200" + + Scenario: Getting all users + Given As an "admin" + And user "brand-new-user" exists + And user "admin" exists + When sending "GET" to "/cloud/users" + And users returned are + | brand-new-user | + | admin | + + + Scenario: Edit a user + Given As an "admin" + And user "brand-new-user" exists + When sending "PUT" to "/cloud/users/brand-new-user" with + | key | quota | + | value | 12MB | + | key | email | + | value | brand-new-user@gmail.com | + Then the OCS status code should be "100" + And the HTTP status code should be "200" And user "brand-new-user" exists Scenario: Delete a user Given As an "admin" And user "brand-new-user" exists - When sending "POST" to "/cloud/users" with - | userid | brand-new-user | - Then the status code should be "200" + When sending "DELETE" to "/cloud/users/brand-new-user" + Then the OCS status code should be "100" + And the HTTP status code should be "200" And user "brand-new-user" does not exist + + + Scenario: Create a group + Given As an "admin" + And group "new-group" does not exist + When sending "POST" to "/cloud/groups" with + | groupid | new-group | + | password | 123456 | + + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And group "new-group" exists + + + Scenario: Getting all groups + Given As an "admin" + And group "new-group" exists + And group "admin" exists + When sending "GET" to "/cloud/groups" + And groups returned are + | admin | + | new-group | + + + Scenario: Delete a group + Given As an "admin" + And group "new-group" exists + When sending "DELETE" to "/cloud/groups/new-group" + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And group "new-group" does not exist + + + diff --git a/build/integration/features/provisioning-v2.feature b/build/integration/features/provisioning-v2.feature index 72ceed5d6a5..6140128684d 100644 --- a/build/integration/features/provisioning-v2.feature +++ b/build/integration/features/provisioning-v2.feature @@ -5,5 +5,5 @@ Feature: provisioning Scenario: Getting an not existing user Given As an "admin" When sending "GET" to "/cloud/users/test" - Then the status code should be "404" + Then the HTTP status code should be "404" diff --git a/build/license.php b/build/license.php index 214ea3c2269..26b02bc71c3 100644 --- a/build/license.php +++ b/build/license.php @@ -144,7 +144,9 @@ EOD; } private function getAuthors($file) { - $out = shell_exec("git blame --line-porcelain $file | sed -n 's/^author //p;s/^author-mail //p' | sed 'N;s/\\n/ /' | sort -f | uniq"); + // only add authors that changed code and not the license header + $licenseHeaderEndsAtLine = trim(shell_exec("grep -n '*/' $file | head -n 1 | cut -d ':' -f 1")); + $out = shell_exec("git blame --line-porcelain -L $licenseHeaderEndsAtLine, $file | sed -n 's/^author //p;s/^author-mail //p' | sed 'N;s/\\n/ /' | sort -f | uniq"); $authors = explode(PHP_EOL, $out); $authors = array_filter($authors, function($author) { @@ -173,7 +175,6 @@ if (isset($argv[1])) { '../apps/files_versions', '../apps/provisioning_api', '../apps/user_ldap', - '../apps/user_webdavauth', '../core', '../lib', '../ocs', diff --git a/config/config.sample.php b/config/config.sample.php index 2a2bca708a8..432569f12a9 100644 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -1070,8 +1070,9 @@ $CONFIG = array( /** * Where ``mount.json`` file should be stored, defaults to ``data/mount.json`` + * in the ownCloud directory. */ -'mount_file' => 'data/mount.json', +'mount_file' => '/var/www/owncloud/data/mount.json', /** * When ``true``, prevent ownCloud from changing the cache due to changes in the diff --git a/console.php b/console.php index a5808f4a06a..8bfbabf2a03 100644 --- a/console.php +++ b/console.php @@ -5,6 +5,7 @@ * @author Jost Baron <Jost.Baron@gmx.de> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Philippe Le Brouster <plb@nebkha.net> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/core/ajax/preview.php b/core/ajax/preview.php index b6362fb3a70..05eb4b62b79 100644 --- a/core/ajax/preview.php +++ b/core/ajax/preview.php @@ -3,6 +3,7 @@ * @author Georg Ehrke <georg@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 Thomas Müller <thomas.mueller@tmit.eu> * diff --git a/core/ajax/share.php b/core/ajax/share.php index 50c99cb56b4..4738d0e0827 100644 --- a/core/ajax/share.php +++ b/core/ajax/share.php @@ -5,6 +5,7 @@ * @author Björn Schießle <schiessle@owncloud.com> * @author Craig Morrissey <craig@owncloud.com> * @author dampfklon <me@dampfklon.de> + * @author Felix Böhm <felixboehm@gmx.de> * @author Joas Schilling <nickvergessen@owncloud.com> * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@owncloud.com> diff --git a/core/avatar/avatarcontroller.php b/core/avatar/avatarcontroller.php index 945e022600a..97b3615c032 100644 --- a/core/avatar/avatarcontroller.php +++ b/core/avatar/avatarcontroller.php @@ -5,6 +5,7 @@ * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Roeland Jago Douma <roeland@famdouma.nl> + * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 @@ -139,12 +140,21 @@ class AvatarController extends Controller { $userId = $this->userSession->getUser()->getUID(); $files = $this->request->getUploadedFile('files'); + $headers = []; + if ($this->request->isUserAgent([\OC\AppFramework\Http\Request::USER_AGENT_IE_8])) { + // due to upload iframe workaround, need to set content-type to text/plain + $headers['Content-Type'] = 'text/plain'; + } + if (isset($path)) { $path = stripslashes($path); $node = $this->userFolder->get($path); if ($node->getSize() > 20*1024*1024) { - return new DataResponse(['data' => ['message' => $this->l->t('File is too big')]], - Http::STATUS_BAD_REQUEST); + return new DataResponse( + ['data' => ['message' => $this->l->t('File is too big')]], + Http::STATUS_BAD_REQUEST, + $headers + ); } $content = $node->getContent(); } elseif (!is_null($files)) { @@ -154,20 +164,29 @@ class AvatarController extends Controller { !\OC\Files\Filesystem::isFileBlacklisted($files['tmp_name'][0]) ) { if ($files['size'][0] > 20*1024*1024) { - return new DataResponse(['data' => ['message' => $this->l->t('File is too big')]], - Http::STATUS_BAD_REQUEST); + return new DataResponse( + ['data' => ['message' => $this->l->t('File is too big')]], + Http::STATUS_BAD_REQUEST, + $headers + ); } $this->cache->set('avatar_upload', file_get_contents($files['tmp_name'][0]), 7200); $content = $this->cache->get('avatar_upload'); unlink($files['tmp_name'][0]); } else { - return new DataResponse(['data' => ['message' => $this->l->t('Invalid file provided')]], - Http::STATUS_BAD_REQUEST); + return new DataResponse( + ['data' => ['message' => $this->l->t('Invalid file provided')]], + Http::STATUS_BAD_REQUEST, + $headers + ); } } else { //Add imgfile - return new DataResponse(['data' => ['message' => $this->l->t('No image or file provided')]], - Http::STATUS_BAD_REQUEST); + return new DataResponse( + ['data' => ['message' => $this->l->t('No image or file provided')]], + Http::STATUS_BAD_REQUEST, + $headers + ); } try { @@ -178,16 +197,32 @@ class AvatarController extends Controller { if ($image->valid()) { $mimeType = $image->mimeType(); if ($mimeType !== 'image/jpeg' && $mimeType !== 'image/png') { - return new DataResponse(['data' => ['message' => $this->l->t('Unknown filetype')]]); + return new DataResponse( + ['data' => ['message' => $this->l->t('Unknown filetype')]], + Http::STATUS_OK, + $headers + ); } $this->cache->set('tmpAvatar', $image->data(), 7200); - return new DataResponse(['data' => 'notsquare']); + return new DataResponse( + ['data' => 'notsquare'], + Http::STATUS_OK, + $headers + ); } else { - return new DataResponse(['data' => ['message' => $this->l->t('Invalid image')]]); + return new DataResponse( + ['data' => ['message' => $this->l->t('Invalid image')]], + Http::STATUS_OK, + $headers + ); } } catch (\Exception $e) { - return new DataResponse(['data' => ['message' => $e->getMessage()]]); + return new DataResponse( + ['data' => ['message' => $e->getMessage()]], + Http::STATUS_OK, + $headers + ); } } diff --git a/core/command/app/checkcode.php b/core/command/app/checkcode.php index 9f6e0729ce9..a04f4bb5e03 100644 --- a/core/command/app/checkcode.php +++ b/core/command/app/checkcode.php @@ -2,8 +2,8 @@ /** * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> - * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> + * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/core/command/app/disable.php b/core/command/app/disable.php index f2096448279..6c04860789f 100644 --- a/core/command/app/disable.php +++ b/core/command/app/disable.php @@ -2,6 +2,7 @@ /** * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/core/command/app/enable.php b/core/command/app/enable.php index 907006961dc..f82c23e7e60 100644 --- a/core/command/app/enable.php +++ b/core/command/app/enable.php @@ -2,6 +2,7 @@ /** * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/core/command/encryption/decryptall.php b/core/command/encryption/decryptall.php index a8560ce88bb..4755a9dc7ba 100644 --- a/core/command/encryption/decryptall.php +++ b/core/command/encryption/decryptall.php @@ -1,6 +1,7 @@ <?php /** * @author Björn Schießle <schiessle@owncloud.com> + * @author Joas Schilling <nickvergessen@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/core/command/encryption/encryptall.php b/core/command/encryption/encryptall.php index 8294264f212..572991039ef 100644 --- a/core/command/encryption/encryptall.php +++ b/core/command/encryption/encryptall.php @@ -1,6 +1,7 @@ <?php /** * @author Björn Schießle <schiessle@owncloud.com> + * @author Joas Schilling <nickvergessen@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/core/command/log/manage.php b/core/command/log/manage.php index f3d18cffca0..1a5cd142413 100644 --- a/core/command/log/manage.php +++ b/core/command/log/manage.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/core/command/log/owncloud.php b/core/command/log/owncloud.php index a2d9e4bc7c8..6200a8b6a53 100644 --- a/core/command/log/owncloud.php +++ b/core/command/log/owncloud.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/core/command/maintenance/install.php b/core/command/maintenance/install.php index 7f5d9cae647..b0235c518ec 100644 --- a/core/command/maintenance/install.php +++ b/core/command/maintenance/install.php @@ -2,7 +2,6 @@ /** * @author Bernhard Posselt <dev@bernhard-posselt.com> * @author Christian Kampka <christian@kampka.net> - * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/core/command/maintenance/mimetype/updatedb.php b/core/command/maintenance/mimetype/updatedb.php index 37c401c0338..42d6af49baf 100644 --- a/core/command/maintenance/mimetype/updatedb.php +++ b/core/command/maintenance/mimetype/updatedb.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 @@ -16,6 +16,7 @@ * * You should have received a copy of the GNU Affero General Public License, version 3, * along with this program. If not, see <http://www.gnu.org/licenses/> + * */ namespace OC\Core\Command\Maintenance\Mimetype; diff --git a/core/command/maintenance/mimetype/updatejs.php b/core/command/maintenance/mimetype/updatejs.php index 5de75d53a3f..5329475c0a6 100644 --- a/core/command/maintenance/mimetype/updatejs.php +++ b/core/command/maintenance/mimetype/updatejs.php @@ -1,5 +1,7 @@ <?php /** + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> + * @author Roeland Jago Douma <roeland@famdouma.nl> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/core/command/upgrade.php b/core/command/upgrade.php index f50a0d92479..0f1b828ba25 100644 --- a/core/command/upgrade.php +++ b/core/command/upgrade.php @@ -1,6 +1,7 @@ <?php /** * @author Andreas Fischer <bantu@owncloud.com> + * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Owen Winkler <a_github@midnightcircus.com> * @author Steffen Lindner <mail@steffen-lindner.de> diff --git a/core/command/user/add.php b/core/command/user/add.php index 07060bb172f..426b8489ccf 100644 --- a/core/command/user/add.php +++ b/core/command/user/add.php @@ -2,7 +2,6 @@ /** * @author Joas Schilling <nickvergessen@owncloud.com> * @author Laurens Post <lkpost@scept.re> - * @author Morris Jobke <hey@morrisjobke.de> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/core/css/styles.css b/core/css/styles.css index df533aab318..3d68a591522 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -404,8 +404,7 @@ input[type="submit"].enabled { width: 100%; } #content .hascontrols { - position: relative; - top: 45px; + margin-top: 45px; } #content-wrapper { position: absolute; @@ -425,9 +424,9 @@ input[type="submit"].enabled { .emptycontent { font-size: 16px; color: #888; - position: absolute; text-align: center; - top: 30%; + margin-top: 100px; /* ie8 */ + margin-top: 30vh; width: 100%; } #emptycontent h2, @@ -1164,7 +1163,7 @@ div.crumb:active { /* public footer */ #body-public footer { - margin-top: 65px; + position: relative; text-align: center; } diff --git a/core/js/config.php b/core/js/config.php index 5da610698df..e2d7ae3784c 100644 --- a/core/js/config.php +++ b/core/js/config.php @@ -3,6 +3,7 @@ * @author Bart Visscher <bartv@thisnet.nl> * @author Björn Schießle <schiessle@owncloud.com> * @author Guillaume AMAT <guillaume.amat@informatique-libre.com> + * @author Hasso Tepper <hasso@zone.ee> * @author Joas Schilling <nickvergessen@owncloud.com> * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@owncloud.com> diff --git a/core/js/js.js b/core/js/js.js index 4f0f288bd0c..00a775b8027 100644 --- a/core/js/js.js +++ b/core/js/js.js @@ -85,6 +85,7 @@ var OC={ appConfig: window.oc_appconfig || {}, theme: window.oc_defaults || {}, coreApps:['', 'admin','log','core/search','settings','core','3rdparty'], + requestToken: oc_requesttoken, menuSpeed: 50, /** diff --git a/core/l10n/cs_CZ.js b/core/l10n/cs_CZ.js index b11e7eab730..30c7e7d2b78 100644 --- a/core/l10n/cs_CZ.js +++ b/core/l10n/cs_CZ.js @@ -183,6 +183,7 @@ OC.L10N.register( "Reset password" : "Obnovit heslo", "Searching other places" : "Prohledávání ostatních umístění", "No search results in other folders" : "V ostatních adresářích nebylo nic nalezeno", + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} nález v dalším adresáři","{count} nálezy v dalších adresářích","{count} nálezů v dalších adresářích"], "Personal" : "Osobní", "Users" : "Uživatelé", "Apps" : "Aplikace", diff --git a/core/l10n/cs_CZ.json b/core/l10n/cs_CZ.json index 7f92a531a69..ede877c6f23 100644 --- a/core/l10n/cs_CZ.json +++ b/core/l10n/cs_CZ.json @@ -181,6 +181,7 @@ "Reset password" : "Obnovit heslo", "Searching other places" : "Prohledávání ostatních umístění", "No search results in other folders" : "V ostatních adresářích nebylo nic nalezeno", + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} nález v dalším adresáři","{count} nálezy v dalších adresářích","{count} nálezů v dalších adresářích"], "Personal" : "Osobní", "Users" : "Uživatelé", "Apps" : "Aplikace", diff --git a/core/l10n/de.js b/core/l10n/de.js index d012c2238d9..326aae34329 100644 --- a/core/l10n/de.js +++ b/core/l10n/de.js @@ -3,7 +3,7 @@ OC.L10N.register( { "Couldn't send mail to following users: %s " : "Die E-Mail konnte nicht an folgende Benutzer gesendet werden: %s", "Preparing update" : "Update vorbereiten", - "Migration tests are skipped - \"update.skip-migration-test\" is activated in config.php" : "Migrationstests wurden übersprungen - \"update.skip-migration-test\" is in der config.php aktiviert", + "Migration tests are skipped - \"update.skip-migration-test\" is activated in config.php" : "Migrationstests wurden übersprungen - \"update.skip-migration-test\" ist in der config.php aktiviert", "Turned on maintenance mode" : "Wartungsmodus eingeschaltet", "Turned off maintenance mode" : "Wartungsmodus ausgeschaltet", "Maintenance mode is kept active" : "Wartungsmodus wird aktiv gehalten", @@ -13,8 +13,8 @@ OC.L10N.register( "Updated \"%s\" to %s" : "„%s“ zu %s aktualisiert", "Repair warning: " : "Reperaturwarnung:", "Repair error: " : "Reperaturfehler:", - "Set log level to debug - current level: \"%s\"" : "Setze Log-Level auf Debug - aktuelles Level: \"%s\"", - "Reset log level to \"%s\"" : "Setze Log-Level zu \"%s\" zurück", + "Set log level to debug - current level: \"%s\"" : "Log-Level auf Debug gesetzt - aktuelles Level: \"%s\"", + "Reset log level to \"%s\"" : "Log-Level auf \"%s\" zurückgesetzt", "Following incompatible apps have been disabled: %s" : "Die folgenden inkompatiblen Apps sind deaktiviert worden: %s", "Following apps have been disabled: %s" : "Die folgenden Apps sind deaktiviert worden: %s", "Already up to date" : "Bereits aktuell", @@ -108,7 +108,7 @@ OC.L10N.register( "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." : "Dein Datenverzeichnis und Deine Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, Deinen Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass Du es aus dem Document-Root-Verzeichnis des Webservers herausverschiebst.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Es wurde kein PHP Memory Cache konfiguriert. Konfiguriere zur Erhöhung der Leistungsfähigkeit, soweit verfügbar, einen Memory Cache. Weitere Informationen finden Sie in unserer <a 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 href=\"{docLink}\">documentation</a>." : "/dev/urandom ist für PHP nicht lesbar, wovon aus Sicherheitsgründen dringend abgeraten wird. Weitere Informationen hierzu findest Du in unserer <a href=\"{docLink}\">Dokumentation</a>.", - "Your PHP version ({version}) is no longer <a 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}) ist nicht länger <a href=\"{phpLink}\">supported</a>. Wir empfehlen ein Upgrade deiner PHP Version, um die volle Performance und Sicherheit zu gewährleisten.", + "Your PHP version ({version}) is no longer <a 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.", "Error occurred while checking server setup" : "Fehler beim Überprüfen der Servereinrichtung", "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." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "Der „Strict-Transport-Security“-HTTP-Header ist nicht auf mindestens „{seconds}“ Sekunden eingestellt. Für umfassende Sicherheit wird das Aktivieren von HSTS empfohlen, wie es in unseren <a href=\"{docUrl}\">Sicherheitshinweisen</a> erläutert ist.", diff --git a/core/l10n/de.json b/core/l10n/de.json index 7e207557dc5..975a325ddc4 100644 --- a/core/l10n/de.json +++ b/core/l10n/de.json @@ -1,7 +1,7 @@ { "translations": { "Couldn't send mail to following users: %s " : "Die E-Mail konnte nicht an folgende Benutzer gesendet werden: %s", "Preparing update" : "Update vorbereiten", - "Migration tests are skipped - \"update.skip-migration-test\" is activated in config.php" : "Migrationstests wurden übersprungen - \"update.skip-migration-test\" is in der config.php aktiviert", + "Migration tests are skipped - \"update.skip-migration-test\" is activated in config.php" : "Migrationstests wurden übersprungen - \"update.skip-migration-test\" ist in der config.php aktiviert", "Turned on maintenance mode" : "Wartungsmodus eingeschaltet", "Turned off maintenance mode" : "Wartungsmodus ausgeschaltet", "Maintenance mode is kept active" : "Wartungsmodus wird aktiv gehalten", @@ -11,8 +11,8 @@ "Updated \"%s\" to %s" : "„%s“ zu %s aktualisiert", "Repair warning: " : "Reperaturwarnung:", "Repair error: " : "Reperaturfehler:", - "Set log level to debug - current level: \"%s\"" : "Setze Log-Level auf Debug - aktuelles Level: \"%s\"", - "Reset log level to \"%s\"" : "Setze Log-Level zu \"%s\" zurück", + "Set log level to debug - current level: \"%s\"" : "Log-Level auf Debug gesetzt - aktuelles Level: \"%s\"", + "Reset log level to \"%s\"" : "Log-Level auf \"%s\" zurückgesetzt", "Following incompatible apps have been disabled: %s" : "Die folgenden inkompatiblen Apps sind deaktiviert worden: %s", "Following apps have been disabled: %s" : "Die folgenden Apps sind deaktiviert worden: %s", "Already up to date" : "Bereits aktuell", @@ -106,7 +106,7 @@ "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." : "Dein Datenverzeichnis und Deine Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, Deinen Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass Du es aus dem Document-Root-Verzeichnis des Webservers herausverschiebst.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Es wurde kein PHP Memory Cache konfiguriert. Konfiguriere zur Erhöhung der Leistungsfähigkeit, soweit verfügbar, einen Memory Cache. Weitere Informationen finden Sie in unserer <a 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 href=\"{docLink}\">documentation</a>." : "/dev/urandom ist für PHP nicht lesbar, wovon aus Sicherheitsgründen dringend abgeraten wird. Weitere Informationen hierzu findest Du in unserer <a href=\"{docLink}\">Dokumentation</a>.", - "Your PHP version ({version}) is no longer <a 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}) ist nicht länger <a href=\"{phpLink}\">supported</a>. Wir empfehlen ein Upgrade deiner PHP Version, um die volle Performance und Sicherheit zu gewährleisten.", + "Your PHP version ({version}) is no longer <a 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.", "Error occurred while checking server setup" : "Fehler beim Überprüfen der Servereinrichtung", "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." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "Der „Strict-Transport-Security“-HTTP-Header ist nicht auf mindestens „{seconds}“ Sekunden eingestellt. Für umfassende Sicherheit wird das Aktivieren von HSTS empfohlen, wie es in unseren <a href=\"{docUrl}\">Sicherheitshinweisen</a> erläutert ist.", diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js index 644149ddc1a..b593fc452ae 100644 --- a/core/l10n/de_DE.js +++ b/core/l10n/de_DE.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Couldn't send mail to following users: %s " : "An folgende Benutzer konnte keine E-Mail gesendet werden: %s", "Preparing update" : "Update vorbereiten", + "Migration tests are skipped - \"update.skip-migration-test\" is activated in config.php" : "Migrationstests wurden übersprungen - \"update.skip-migration-test\" ist in der config.php aktiviert", "Turned on maintenance mode" : "Wartungsmodus eingeschaltet ", "Turned off maintenance mode" : "Wartungsmodus ausgeschaltet", "Maintenance mode is kept active" : "Wartungsmodus wird aktiv gehalten", @@ -12,6 +13,8 @@ OC.L10N.register( "Updated \"%s\" to %s" : "„%s“ zu %s aktualisiert", "Repair warning: " : "Reperaturwarnung:", "Repair error: " : "Reperaturfehler:", + "Set log level to debug - current level: \"%s\"" : "Log-Level auf Debug gesetzt - aktuelles Level: \"%s\"", + "Reset log level to \"%s\"" : "Log-Level auf \"%s\" zurückgesetzt", "Following incompatible apps have been disabled: %s" : "Die folgenden inkompatiblen Apps sind deaktiviert worden: %s", "Following apps have been disabled: %s" : "Die folgenden Apps sind deaktiviert worden: %s", "Already up to date" : "Bereits aktuell", @@ -105,6 +108,7 @@ OC.L10N.register( "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." : "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, Ihren Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass Sie es aus dem Document-Root-Verzeichnis des Webservers herausverschieben.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Es wurde kein PHP Memory Cache konfiguriert. Konfiguriere zur Erhöhung der Leistungsfähigkeit, soweit verfügbar, einen Memory Cache. Weitere Informationen finden Sie in unserer <a 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 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 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.", "Error occurred while checking server setup" : "Fehler beim Überprüfen der Servereinrichtung", "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." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "Der „Strict-Transport-Security“-HTTP-Header ist nicht auf mindestens „{seconds}“ Sekunden eingestellt. Für umfassende Sicherheit wird das Aktivieren von HSTS empfohlen, wie es in unseren <a href=\"{docUrl}\">Sicherheitshinweisen</a> erläutert ist.", @@ -150,6 +154,7 @@ OC.L10N.register( "Share with users or groups …" : "Mit Benutzern oder Gruppen teilen…", "Share with users, groups or remote users …" : "Mit Benutzern, Gruppen oder entfernten Benutzern teilen…", "Warning" : "Warnung", + "Error while sending notification" : "Fehler beim Senden der Benachrichtigung", "The object type is not specified." : "Der Objekttyp ist nicht angegeben.", "Enter new" : "Neuen eingeben", "Delete" : "Löschen", @@ -170,6 +175,7 @@ OC.L10N.register( "The update was successful. There were warnings." : "Das Update war erfolgreich. Warnungen wurden ausgegeben.", "The update was successful. Redirecting you to ownCloud now." : "Das Update war erfolgreich. Sie werden nun zu ownCloud weitergeleitet.", "Couldn't reset password because the token is invalid" : "Das Passwort konnte aufgrund eines ungültigen Tokens nicht zurückgesetzt werden", + "Couldn't reset password because the token is expired" : "Das Passwort konnte nicht zurückgesetzt werden, da der Token abgelaufen ist", "Couldn't send reset email. Please make sure your username is correct." : "E-Mail zum Zurücksetzen kann nicht versendet werden. Bitte stellen Sie sicher, dass Ihr Benutzername richtig ist.", "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Die E-Mail zum Zurücksetzen konnte nicht versandt werden, weil für diesen Benutzernamen keine E-Mail-Adresse hinterlegt ist. Bitte kontaktieren Sie Ihren Administrator.", "%s password reset" : "%s-Passwort zurücksetzen", @@ -178,6 +184,8 @@ OC.L10N.register( "New Password" : "Neues Passwort", "Reset password" : "Passwort zurücksetzen", "Searching other places" : "Andere Orte durchsuchen", + "No search results in other folders" : "Keine Suchergebnisse in anderen Ordnern", + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} Suchergebnis in anderen Ordnern","{count} Suchergebnisse in anderen Ordnern"], "Personal" : "Persönlich", "Users" : "Benutzer", "Apps" : "Apps", @@ -203,13 +211,13 @@ OC.L10N.register( "More details can be found in the server log." : "Weitere Details können im Serverprotokoll gefunden werden.", "Technical details" : "Technische Details", "Remote Address: %s" : "Entfernte Adresse: %s", - "Request ID: %s" : "Anforderungskennung: %s", + "Request ID: %s" : "Anfragekennung: %s", "Type: %s" : "Typ: %s", "Code: %s" : "Code: %s", "Message: %s" : "Nachricht: %s", "File: %s" : "Datei: %s", "Line: %s" : "Zeile: %s", - "Trace" : "Spur", + "Trace" : "Ablauf", "Security warning" : "Sicherheitshinweis", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar, weil die .htaccess-Datei nicht funktioniert.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Informationen zum richtigen Konfigurieren Ihres Servers können Sie der <a href=\"%s\" target=\"_blank\">Dokumentation</a> entnehmen.", diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json index 95bd4ff7b06..c7fa1e368a9 100644 --- a/core/l10n/de_DE.json +++ b/core/l10n/de_DE.json @@ -1,6 +1,7 @@ { "translations": { "Couldn't send mail to following users: %s " : "An folgende Benutzer konnte keine E-Mail gesendet werden: %s", "Preparing update" : "Update vorbereiten", + "Migration tests are skipped - \"update.skip-migration-test\" is activated in config.php" : "Migrationstests wurden übersprungen - \"update.skip-migration-test\" ist in der config.php aktiviert", "Turned on maintenance mode" : "Wartungsmodus eingeschaltet ", "Turned off maintenance mode" : "Wartungsmodus ausgeschaltet", "Maintenance mode is kept active" : "Wartungsmodus wird aktiv gehalten", @@ -10,6 +11,8 @@ "Updated \"%s\" to %s" : "„%s“ zu %s aktualisiert", "Repair warning: " : "Reperaturwarnung:", "Repair error: " : "Reperaturfehler:", + "Set log level to debug - current level: \"%s\"" : "Log-Level auf Debug gesetzt - aktuelles Level: \"%s\"", + "Reset log level to \"%s\"" : "Log-Level auf \"%s\" zurückgesetzt", "Following incompatible apps have been disabled: %s" : "Die folgenden inkompatiblen Apps sind deaktiviert worden: %s", "Following apps have been disabled: %s" : "Die folgenden Apps sind deaktiviert worden: %s", "Already up to date" : "Bereits aktuell", @@ -103,6 +106,7 @@ "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." : "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, Ihren Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass Sie es aus dem Document-Root-Verzeichnis des Webservers herausverschieben.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Es wurde kein PHP Memory Cache konfiguriert. Konfiguriere zur Erhöhung der Leistungsfähigkeit, soweit verfügbar, einen Memory Cache. Weitere Informationen finden Sie in unserer <a 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 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 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.", "Error occurred while checking server setup" : "Fehler beim Überprüfen der Servereinrichtung", "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." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "Der „Strict-Transport-Security“-HTTP-Header ist nicht auf mindestens „{seconds}“ Sekunden eingestellt. Für umfassende Sicherheit wird das Aktivieren von HSTS empfohlen, wie es in unseren <a href=\"{docUrl}\">Sicherheitshinweisen</a> erläutert ist.", @@ -148,6 +152,7 @@ "Share with users or groups …" : "Mit Benutzern oder Gruppen teilen…", "Share with users, groups or remote users …" : "Mit Benutzern, Gruppen oder entfernten Benutzern teilen…", "Warning" : "Warnung", + "Error while sending notification" : "Fehler beim Senden der Benachrichtigung", "The object type is not specified." : "Der Objekttyp ist nicht angegeben.", "Enter new" : "Neuen eingeben", "Delete" : "Löschen", @@ -168,6 +173,7 @@ "The update was successful. There were warnings." : "Das Update war erfolgreich. Warnungen wurden ausgegeben.", "The update was successful. Redirecting you to ownCloud now." : "Das Update war erfolgreich. Sie werden nun zu ownCloud weitergeleitet.", "Couldn't reset password because the token is invalid" : "Das Passwort konnte aufgrund eines ungültigen Tokens nicht zurückgesetzt werden", + "Couldn't reset password because the token is expired" : "Das Passwort konnte nicht zurückgesetzt werden, da der Token abgelaufen ist", "Couldn't send reset email. Please make sure your username is correct." : "E-Mail zum Zurücksetzen kann nicht versendet werden. Bitte stellen Sie sicher, dass Ihr Benutzername richtig ist.", "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Die E-Mail zum Zurücksetzen konnte nicht versandt werden, weil für diesen Benutzernamen keine E-Mail-Adresse hinterlegt ist. Bitte kontaktieren Sie Ihren Administrator.", "%s password reset" : "%s-Passwort zurücksetzen", @@ -176,6 +182,8 @@ "New Password" : "Neues Passwort", "Reset password" : "Passwort zurücksetzen", "Searching other places" : "Andere Orte durchsuchen", + "No search results in other folders" : "Keine Suchergebnisse in anderen Ordnern", + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} Suchergebnis in anderen Ordnern","{count} Suchergebnisse in anderen Ordnern"], "Personal" : "Persönlich", "Users" : "Benutzer", "Apps" : "Apps", @@ -201,13 +209,13 @@ "More details can be found in the server log." : "Weitere Details können im Serverprotokoll gefunden werden.", "Technical details" : "Technische Details", "Remote Address: %s" : "Entfernte Adresse: %s", - "Request ID: %s" : "Anforderungskennung: %s", + "Request ID: %s" : "Anfragekennung: %s", "Type: %s" : "Typ: %s", "Code: %s" : "Code: %s", "Message: %s" : "Nachricht: %s", "File: %s" : "Datei: %s", "Line: %s" : "Zeile: %s", - "Trace" : "Spur", + "Trace" : "Ablauf", "Security warning" : "Sicherheitshinweis", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar, weil die .htaccess-Datei nicht funktioniert.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Informationen zum richtigen Konfigurieren Ihres Servers können Sie der <a href=\"%s\" target=\"_blank\">Dokumentation</a> entnehmen.", diff --git a/core/l10n/el.js b/core/l10n/el.js index 7552a0f7b32..96b0053ec1a 100644 --- a/core/l10n/el.js +++ b/core/l10n/el.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Couldn't send mail to following users: %s " : "Αδυναμία αποστολής μηνύματος στους ακόλουθους χρήστες: %s", "Preparing update" : "Προετοιμασία ενημέρωσης", + "Migration tests are skipped - \"update.skip-migration-test\" is activated in config.php" : "Οι δοκιμές μεταφοράς έχουν παρακαμφθεί - το \"update.skip-migration-test\" ελιναι ενεργοποιημένο στο ", "Turned on maintenance mode" : "Η κατάσταση συντήρησης ενεργοποιήθηκε", "Turned off maintenance mode" : "Η κατάσταση συντήρησης απενεργοποιήθηκε", "Maintenance mode is kept active" : "Η λειτουργία συντήρησης διατηρήθηκε ενεργή", @@ -12,6 +13,8 @@ OC.L10N.register( "Updated \"%s\" to %s" : "Αναβαθμίστηκε \"%s\" σε %s", "Repair warning: " : "Προειδοποίηση διόρθωσης:", "Repair error: " : "Σφάλμα διόρθωσης:", + "Set log level to debug - current level: \"%s\"" : "Καθορισμός του επιπέδου καταγραφής σε αποσφαλμάτωση - τρέχον επίπεδο: \"%s\"", + "Reset log level to \"%s\"" : "Επαναφορά επιπέδου καταγραφής σε \"%s\"", "Following incompatible apps have been disabled: %s" : "Οι παρακάτω εφαρμογές έχουν απενεργοποιηθεί: %s", "Following apps have been disabled: %s" : "Οι ακόλουθες εφαρμογές έχουν απενεργοποιηθεί: %s", "Already up to date" : "Ήδη ενημερωμένο", @@ -107,6 +110,7 @@ OC.L10N.register( "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Το /dev/urandom δεν είναι αναγνώσιμο από την PHP, το οποίο δεν συνίσταται για λόγους ασφαλείας. Περισσότερες πληροφορίες υπάρχουν στην <a href=\"{docLink}\">τεκμηρίωσή</a> μας.", "Your PHP version ({version}) is no longer <a 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 για να επωφεληθείτε από την απόδοση και την ασφάλεια που παρέχει η 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 href=\"{docLink}\">documentation</a>." : "Η διαμόρφωση των reverse proxy headers δεν είναι σωστή ή συνδέεστε στο 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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Το Memcached είναι ρυθμισμένο ως κατανεμημένη cache, αλλά είναι εγκατεστημένη η λάθος μονάδα \"memcache\" της PHP. Το \\OC\\Memcache\\Memcached υποστηρίζει μόνο τη \"memcached\" και όχι τη \"memcache\". Δείτε τη <a href=\"{wikiLink}\">memcached wiki και για τις δύο μονάδες</a>.", "Error occurred while checking server setup" : "Παρουσιάστηκε σφάλμα κατά τον έλεγχο της εγκατάστασης με το διακομιστή", "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." : "H \"{header}\" κεφαλίδα HTTP δεν έχει ρυθμιστεί ώστε να ισούται με \"{expected}\". Αυτό αποτελεί ενδεχόμενο κίνδυνο ασφάλειας ή ιδιωτικότητας και συστήνουμε τη διόρθωση αυτής της ρύθμισης.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "Η «Strict-Transport-Security\" κεφαλίδα HTTP δεν έχει ρυθμιστεί για τουλάχιστον \"{seconds}\" δευτερόλεπτα. Για αυξημένη ασφάλεια συστήνουμε την ενεργοποίηση του HSTS όπως περιγράφεται στις <a href=\"{docUrl}\">προτάσεις ασφαλείας</a> μας.", diff --git a/core/l10n/el.json b/core/l10n/el.json index 824bd30398c..36ea47aa2c3 100644 --- a/core/l10n/el.json +++ b/core/l10n/el.json @@ -1,6 +1,7 @@ { "translations": { "Couldn't send mail to following users: %s " : "Αδυναμία αποστολής μηνύματος στους ακόλουθους χρήστες: %s", "Preparing update" : "Προετοιμασία ενημέρωσης", + "Migration tests are skipped - \"update.skip-migration-test\" is activated in config.php" : "Οι δοκιμές μεταφοράς έχουν παρακαμφθεί - το \"update.skip-migration-test\" ελιναι ενεργοποιημένο στο ", "Turned on maintenance mode" : "Η κατάσταση συντήρησης ενεργοποιήθηκε", "Turned off maintenance mode" : "Η κατάσταση συντήρησης απενεργοποιήθηκε", "Maintenance mode is kept active" : "Η λειτουργία συντήρησης διατηρήθηκε ενεργή", @@ -10,6 +11,8 @@ "Updated \"%s\" to %s" : "Αναβαθμίστηκε \"%s\" σε %s", "Repair warning: " : "Προειδοποίηση διόρθωσης:", "Repair error: " : "Σφάλμα διόρθωσης:", + "Set log level to debug - current level: \"%s\"" : "Καθορισμός του επιπέδου καταγραφής σε αποσφαλμάτωση - τρέχον επίπεδο: \"%s\"", + "Reset log level to \"%s\"" : "Επαναφορά επιπέδου καταγραφής σε \"%s\"", "Following incompatible apps have been disabled: %s" : "Οι παρακάτω εφαρμογές έχουν απενεργοποιηθεί: %s", "Following apps have been disabled: %s" : "Οι ακόλουθες εφαρμογές έχουν απενεργοποιηθεί: %s", "Already up to date" : "Ήδη ενημερωμένο", @@ -105,6 +108,7 @@ "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Το /dev/urandom δεν είναι αναγνώσιμο από την PHP, το οποίο δεν συνίσταται για λόγους ασφαλείας. Περισσότερες πληροφορίες υπάρχουν στην <a href=\"{docLink}\">τεκμηρίωσή</a> μας.", "Your PHP version ({version}) is no longer <a 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 για να επωφεληθείτε από την απόδοση και την ασφάλεια που παρέχει η 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 href=\"{docLink}\">documentation</a>." : "Η διαμόρφωση των reverse proxy headers δεν είναι σωστή ή συνδέεστε στο 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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Το Memcached είναι ρυθμισμένο ως κατανεμημένη cache, αλλά είναι εγκατεστημένη η λάθος μονάδα \"memcache\" της PHP. Το \\OC\\Memcache\\Memcached υποστηρίζει μόνο τη \"memcached\" και όχι τη \"memcache\". Δείτε τη <a href=\"{wikiLink}\">memcached wiki και για τις δύο μονάδες</a>.", "Error occurred while checking server setup" : "Παρουσιάστηκε σφάλμα κατά τον έλεγχο της εγκατάστασης με το διακομιστή", "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." : "H \"{header}\" κεφαλίδα HTTP δεν έχει ρυθμιστεί ώστε να ισούται με \"{expected}\". Αυτό αποτελεί ενδεχόμενο κίνδυνο ασφάλειας ή ιδιωτικότητας και συστήνουμε τη διόρθωση αυτής της ρύθμισης.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "Η «Strict-Transport-Security\" κεφαλίδα HTTP δεν έχει ρυθμιστεί για τουλάχιστον \"{seconds}\" δευτερόλεπτα. Για αυξημένη ασφάλεια συστήνουμε την ενεργοποίηση του HSTS όπως περιγράφεται στις <a href=\"{docUrl}\">προτάσεις ασφαλείας</a> μας.", diff --git a/core/l10n/es.js b/core/l10n/es.js index 816e4601520..598ab77ac09 100644 --- a/core/l10n/es.js +++ b/core/l10n/es.js @@ -110,6 +110,7 @@ OC.L10N.register( "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a 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 href=\"{docLink}\">documentación</a>.", "Your PHP version ({version}) is no longer <a 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 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 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 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 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 href=\"{wikiLink}\">memcached wiki acerca de ambos modulos</a>", "Error occurred while checking server setup" : "Ha ocurrido un error al revisar la configuración del servidor", "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." : "La \"{header}\" cabecera HTTP no está configurado para ser igual a \"{expected}\". Esto puede suponer un riesgo para la seguridad o la privacidad, por lo que se recomienda ajustar esta opción.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "La cabecera HTTP \"Strict-Transport-Security\" no está configurada en al menos \"{segundos}\" segundos. Para una mejor seguridad recomendamos que habilite HSTS como es descripta en nuestros <a href=\"{docUrl}\">consejos de seguridad</a>.", diff --git a/core/l10n/es.json b/core/l10n/es.json index bc4b3c4dd34..f650b9ba45e 100644 --- a/core/l10n/es.json +++ b/core/l10n/es.json @@ -108,6 +108,7 @@ "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a 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 href=\"{docLink}\">documentación</a>.", "Your PHP version ({version}) is no longer <a 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 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 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 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 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 href=\"{wikiLink}\">memcached wiki acerca de ambos modulos</a>", "Error occurred while checking server setup" : "Ha ocurrido un error al revisar la configuración del servidor", "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." : "La \"{header}\" cabecera HTTP no está configurado para ser igual a \"{expected}\". Esto puede suponer un riesgo para la seguridad o la privacidad, por lo que se recomienda ajustar esta opción.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "La cabecera HTTP \"Strict-Transport-Security\" no está configurada en al menos \"{segundos}\" segundos. Para una mejor seguridad recomendamos que habilite HSTS como es descripta en nuestros <a href=\"{docUrl}\">consejos de seguridad</a>.", diff --git a/core/l10n/fa.js b/core/l10n/fa.js index 694750bba81..7a1becdbd5f 100644 --- a/core/l10n/fa.js +++ b/core/l10n/fa.js @@ -5,8 +5,14 @@ OC.L10N.register( "Preparing update" : "آمادهسازی به روز رسانی", "Turned on maintenance mode" : "حالت \" در دست تعمیر \" فعال شد .", "Turned off maintenance mode" : "حالت \" در دست تعمیر \" غیرفعال شد .", + "Maintenance mode is kept active" : "حالت تعمیرات فعال نگهداشته شده است", "Updated database" : "بروز رسانی پایگاه داده انجام شد .", + "Updated \"%s\" to %s" : "\"%s\" به %s بروزرسانی شد", + "Repair warning: " : "اخطار تعمیر:", + "Repair error: " : "خطای تعمیر:", + "Already up to date" : "در حال حاضر بروز است", "File is too big" : "فایل خیلی بزرگ است", + "Invalid file provided" : "فایل دادهشده نا معتبر است", "No image or file provided" : "هیچ فایل یا تصویری وارد نشده است", "Unknown filetype" : "نوع فایل ناشناخته", "Invalid image" : "عکس نامعتبر", @@ -25,6 +31,13 @@ OC.L10N.register( "Thu." : "پنج شنبه", "Fri." : "جمعه", "Sat." : "شنبه", + "Su" : "یکشنبه", + "Mo" : "دوشنبه", + "Tu" : "سهشنبه", + "We" : "چهارشنبه", + "Th" : "پنجشنبه", + "Fr" : "جمعه", + "Sa" : "شنبه", "January" : "ژانویه", "February" : "فبریه", "March" : "مارس", @@ -72,6 +85,7 @@ OC.L10N.register( "Continue" : "ادامه", "(all selected)" : "(همه انتخاب شده اند)", "({count} selected)" : "({count} انتخاب شده)", + "Error loading file exists template" : "خطا در بارگزاری فایل قالب", "Very weak password" : "رمز عبور بسیار ضعیف", "Weak password" : "رمز عبور ضعیف", "So-so password" : "رمز عبور متوسط", @@ -118,6 +132,7 @@ OC.L10N.register( "Share with users or groups …" : "اشتراک گذاری با کاربران یا گروه ها ...", "Share with users, groups or remote users …" : "اشتراک گذاری با کاربران، گروهها یا کاربران راه دور...", "Warning" : "اخطار", + "Error while sending notification" : "خطا در حین ارسال نوتیفیکیشن", "The object type is not specified." : "نوع شی تعیین نشده است.", "Enter new" : "مورد جدید را وارد کنید", "Delete" : "حذف", @@ -126,9 +141,13 @@ OC.L10N.register( "unknown text" : "متن نامعلوم", "Hello world!" : "سلام دنیا!", "sunny" : "آفتابی", + "Hello {name}, the weather is {weather}" : "سلام {name}, هوا {weather} است", "Hello {name}" : "سلام {name}", "_download %n file_::_download %n files_" : ["دانلود %n فایل"], + "The update was unsuccessful. " : "بروزرسانی ناموفق بود.", + "The update was successful. There were warnings." : "بروزرسانی با موفقیت انجام شد، اخطارهایی وجود دارد.", "The update was successful. Redirecting you to ownCloud now." : "به روزرسانی موفقیت آمیز بود. در حال انتقال شما به OwnCloud.", + "%s password reset" : "%s رمزعبور تغییر کرد", "Use the following link to reset your password: {link}" : "از لینک زیر جهت دوباره سازی پسورد استفاده کنید :\n{link}", "New password" : "گذرواژه جدید", "New Password" : "رمزعبور جدید", @@ -147,14 +166,18 @@ OC.L10N.register( "Error unfavoriting" : "خطا هنگام حذف از موارد محبوب", "Access forbidden" : "اجازه دسترسی به مناطق ممنوعه را ندارید", "File not found" : "فایل یافت نشد", + "The share will expire on %s." : "اشتراکگذاری در %s منقضی خواهد شد.", "Cheers!" : "سلامتی!", "Internal Server Error" : "خطای داخلی سرور", "Technical details" : "جزئیات فنی", + "Remote Address: %s" : "آدرس راهدور: %s", + "Request ID: %s" : "ID درخواست: %s", "Type: %s" : "نوع: %s", "Code: %s" : "کد: %s", "Message: %s" : "پیام: %s", "File: %s" : "فایل : %s", "Line: %s" : "خط: %s", + "Security warning" : "اخطار امنیتی", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "فایلها و فهرست های داده های شما قابل از اینترنت قابل دسترسی هستند، چونکه فایل htacces. کار نمی کند.", "Create an <strong>admin account</strong>" : "لطفا یک <strong> شناسه برای مدیر</strong> بسازید", "Username" : "نام کاربری", @@ -167,14 +190,23 @@ OC.L10N.register( "Database name" : "نام پایگاه داده", "Database tablespace" : "جدول پایگاه داده", "Database host" : "هاست پایگاه داده", + "Performance warning" : "اخطار کارایی", "Finish setup" : "اتمام نصب", "Finishing …" : "در حال اتمام ...", + "Need help?" : "کمک لازم دارید ؟", + "See the documentation" : "مشاهدهی مستندات", "Log out" : "خروج", "Search" : "جستوجو", + "Please contact your administrator." : "لطفا با مدیر وبسایت تماس بگیرید.", + "An internal error occured." : "یک خطای داخلی رخ دادهاست.", + "Please try again or contact your administrator." : "لطفا مجددا تلاش کنید یا با مدیر سیستم تماس بگیرید.", "Log in" : "ورود", "remember" : "بیاد آوری", "Alternative Logins" : "ورود متناوب", "Thank you for your patience." : "از صبر شما متشکریم", + "Add \"%s\" as trusted domain" : "افزودن \"%s\" به عنوان دامنه مورد اعتماد", + "These apps will be updated:" : "این برنامهها بروزرسانی شدهاند:", + "The theme %s has been disabled." : "قالب %s غیر فعال شد.", "Start update" : "اغاز به روز رسانی" }, "nplurals=1; plural=0;"); diff --git a/core/l10n/fa.json b/core/l10n/fa.json index d1dd024ec42..4f3d4163903 100644 --- a/core/l10n/fa.json +++ b/core/l10n/fa.json @@ -3,8 +3,14 @@ "Preparing update" : "آمادهسازی به روز رسانی", "Turned on maintenance mode" : "حالت \" در دست تعمیر \" فعال شد .", "Turned off maintenance mode" : "حالت \" در دست تعمیر \" غیرفعال شد .", + "Maintenance mode is kept active" : "حالت تعمیرات فعال نگهداشته شده است", "Updated database" : "بروز رسانی پایگاه داده انجام شد .", + "Updated \"%s\" to %s" : "\"%s\" به %s بروزرسانی شد", + "Repair warning: " : "اخطار تعمیر:", + "Repair error: " : "خطای تعمیر:", + "Already up to date" : "در حال حاضر بروز است", "File is too big" : "فایل خیلی بزرگ است", + "Invalid file provided" : "فایل دادهشده نا معتبر است", "No image or file provided" : "هیچ فایل یا تصویری وارد نشده است", "Unknown filetype" : "نوع فایل ناشناخته", "Invalid image" : "عکس نامعتبر", @@ -23,6 +29,13 @@ "Thu." : "پنج شنبه", "Fri." : "جمعه", "Sat." : "شنبه", + "Su" : "یکشنبه", + "Mo" : "دوشنبه", + "Tu" : "سهشنبه", + "We" : "چهارشنبه", + "Th" : "پنجشنبه", + "Fr" : "جمعه", + "Sa" : "شنبه", "January" : "ژانویه", "February" : "فبریه", "March" : "مارس", @@ -70,6 +83,7 @@ "Continue" : "ادامه", "(all selected)" : "(همه انتخاب شده اند)", "({count} selected)" : "({count} انتخاب شده)", + "Error loading file exists template" : "خطا در بارگزاری فایل قالب", "Very weak password" : "رمز عبور بسیار ضعیف", "Weak password" : "رمز عبور ضعیف", "So-so password" : "رمز عبور متوسط", @@ -116,6 +130,7 @@ "Share with users or groups …" : "اشتراک گذاری با کاربران یا گروه ها ...", "Share with users, groups or remote users …" : "اشتراک گذاری با کاربران، گروهها یا کاربران راه دور...", "Warning" : "اخطار", + "Error while sending notification" : "خطا در حین ارسال نوتیفیکیشن", "The object type is not specified." : "نوع شی تعیین نشده است.", "Enter new" : "مورد جدید را وارد کنید", "Delete" : "حذف", @@ -124,9 +139,13 @@ "unknown text" : "متن نامعلوم", "Hello world!" : "سلام دنیا!", "sunny" : "آفتابی", + "Hello {name}, the weather is {weather}" : "سلام {name}, هوا {weather} است", "Hello {name}" : "سلام {name}", "_download %n file_::_download %n files_" : ["دانلود %n فایل"], + "The update was unsuccessful. " : "بروزرسانی ناموفق بود.", + "The update was successful. There were warnings." : "بروزرسانی با موفقیت انجام شد، اخطارهایی وجود دارد.", "The update was successful. Redirecting you to ownCloud now." : "به روزرسانی موفقیت آمیز بود. در حال انتقال شما به OwnCloud.", + "%s password reset" : "%s رمزعبور تغییر کرد", "Use the following link to reset your password: {link}" : "از لینک زیر جهت دوباره سازی پسورد استفاده کنید :\n{link}", "New password" : "گذرواژه جدید", "New Password" : "رمزعبور جدید", @@ -145,14 +164,18 @@ "Error unfavoriting" : "خطا هنگام حذف از موارد محبوب", "Access forbidden" : "اجازه دسترسی به مناطق ممنوعه را ندارید", "File not found" : "فایل یافت نشد", + "The share will expire on %s." : "اشتراکگذاری در %s منقضی خواهد شد.", "Cheers!" : "سلامتی!", "Internal Server Error" : "خطای داخلی سرور", "Technical details" : "جزئیات فنی", + "Remote Address: %s" : "آدرس راهدور: %s", + "Request ID: %s" : "ID درخواست: %s", "Type: %s" : "نوع: %s", "Code: %s" : "کد: %s", "Message: %s" : "پیام: %s", "File: %s" : "فایل : %s", "Line: %s" : "خط: %s", + "Security warning" : "اخطار امنیتی", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "فایلها و فهرست های داده های شما قابل از اینترنت قابل دسترسی هستند، چونکه فایل htacces. کار نمی کند.", "Create an <strong>admin account</strong>" : "لطفا یک <strong> شناسه برای مدیر</strong> بسازید", "Username" : "نام کاربری", @@ -165,14 +188,23 @@ "Database name" : "نام پایگاه داده", "Database tablespace" : "جدول پایگاه داده", "Database host" : "هاست پایگاه داده", + "Performance warning" : "اخطار کارایی", "Finish setup" : "اتمام نصب", "Finishing …" : "در حال اتمام ...", + "Need help?" : "کمک لازم دارید ؟", + "See the documentation" : "مشاهدهی مستندات", "Log out" : "خروج", "Search" : "جستوجو", + "Please contact your administrator." : "لطفا با مدیر وبسایت تماس بگیرید.", + "An internal error occured." : "یک خطای داخلی رخ دادهاست.", + "Please try again or contact your administrator." : "لطفا مجددا تلاش کنید یا با مدیر سیستم تماس بگیرید.", "Log in" : "ورود", "remember" : "بیاد آوری", "Alternative Logins" : "ورود متناوب", "Thank you for your patience." : "از صبر شما متشکریم", + "Add \"%s\" as trusted domain" : "افزودن \"%s\" به عنوان دامنه مورد اعتماد", + "These apps will be updated:" : "این برنامهها بروزرسانی شدهاند:", + "The theme %s has been disabled." : "قالب %s غیر فعال شد.", "Start update" : "اغاز به روز رسانی" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/core/l10n/fi_FI.js b/core/l10n/fi_FI.js index 4bc91566ac2..a0e89b03383 100644 --- a/core/l10n/fi_FI.js +++ b/core/l10n/fi_FI.js @@ -110,6 +110,7 @@ OC.L10N.register( "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom ei ole luettavissa PHP:n toimesta. Turvallisuussyistä tämä ei ole suositeltava asetus. Lisätietoja on tarjolla <a href=\"{docLink}\">dokumentaatiossa</a>.", "Your PHP version ({version}) is no longer <a 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." : "Käytössäsi oleva PHP-versio ({version}) ei ole enää <a href=\"{phpLink}\">PHP:n tukema</a>. Päivitä PHP:n versio, jotta hyödyt suorituskykyyn ja tietoturvaan vaikuttavista päivityksistä.", "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 href=\"{docLink}\">documentation</a>." : "Käänteisen välityspalvelimen otsakkaiden asetukset ovat väärin, tai vaihtoehtoisesti käytät ownCloudia luotetun välityspalvelimen kautta. Jos et käytä ownCloudia luotetun välityspalvelimen kautta, kyseessä on tietoturvaongelma, joka mahdollistaa hyökkääjän väärentää ownCloudille näkyvän IP-osoitteen. Lisätietoja on saatavilla <a href=\"{docLink}\">dokumentaatiosta</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached on määritelty hajautetuksi välimuistiksi, mutta väärä PHP-moduuli \"memcache\" on asennettuna. \\OC\\Memcache\\Memcached tukee vain \"memcached\":ia, ei \"memcache\":a. Lisätietoja <a href=\"{wikiLink}\">memcachedin wikissä molemmista moduuleista</a>.", "Error occurred while checking server setup" : "Virhe palvelimen määrityksiä tarkistaessa", "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-otsaketta \"{header}\" ei ole määritetty vastaamaan arvoa \"{expected}\". Kyseessä on mahdollinen tietoturvaan tai -suojaan liittyvä riski, joten suosittelemme muuttamaan asetuksen arvoa.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "HTTP-otsaketta \"Strict-Transport-Security\" ei ole määritetty vähintään \"{seconds}\" sekuntiin. Suosittelemme HSTS:n käyttöä paremman tietoturvan vuoksi, kuten <a href=\"{docUrl}\">tietoturvavinkeissä</a> neuvotaan.", diff --git a/core/l10n/fi_FI.json b/core/l10n/fi_FI.json index 36e4bdfe2df..17ca162655f 100644 --- a/core/l10n/fi_FI.json +++ b/core/l10n/fi_FI.json @@ -108,6 +108,7 @@ "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom ei ole luettavissa PHP:n toimesta. Turvallisuussyistä tämä ei ole suositeltava asetus. Lisätietoja on tarjolla <a href=\"{docLink}\">dokumentaatiossa</a>.", "Your PHP version ({version}) is no longer <a 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." : "Käytössäsi oleva PHP-versio ({version}) ei ole enää <a href=\"{phpLink}\">PHP:n tukema</a>. Päivitä PHP:n versio, jotta hyödyt suorituskykyyn ja tietoturvaan vaikuttavista päivityksistä.", "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 href=\"{docLink}\">documentation</a>." : "Käänteisen välityspalvelimen otsakkaiden asetukset ovat väärin, tai vaihtoehtoisesti käytät ownCloudia luotetun välityspalvelimen kautta. Jos et käytä ownCloudia luotetun välityspalvelimen kautta, kyseessä on tietoturvaongelma, joka mahdollistaa hyökkääjän väärentää ownCloudille näkyvän IP-osoitteen. Lisätietoja on saatavilla <a href=\"{docLink}\">dokumentaatiosta</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached on määritelty hajautetuksi välimuistiksi, mutta väärä PHP-moduuli \"memcache\" on asennettuna. \\OC\\Memcache\\Memcached tukee vain \"memcached\":ia, ei \"memcache\":a. Lisätietoja <a href=\"{wikiLink}\">memcachedin wikissä molemmista moduuleista</a>.", "Error occurred while checking server setup" : "Virhe palvelimen määrityksiä tarkistaessa", "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-otsaketta \"{header}\" ei ole määritetty vastaamaan arvoa \"{expected}\". Kyseessä on mahdollinen tietoturvaan tai -suojaan liittyvä riski, joten suosittelemme muuttamaan asetuksen arvoa.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "HTTP-otsaketta \"Strict-Transport-Security\" ei ole määritetty vähintään \"{seconds}\" sekuntiin. Suosittelemme HSTS:n käyttöä paremman tietoturvan vuoksi, kuten <a href=\"{docUrl}\">tietoturvavinkeissä</a> neuvotaan.", diff --git a/core/l10n/fr.js b/core/l10n/fr.js index 6e8343a0675..9ab3dc1f1ed 100644 --- a/core/l10n/fr.js +++ b/core/l10n/fr.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Couldn't send mail to following users: %s " : "Impossible d'envoyer un courriel aux utilisateurs suivants : %s", "Preparing update" : "Préparation de la mise à jour", + "Migration tests are skipped - \"update.skip-migration-test\" is activated in config.php" : "Les tests de migration sont ignorées - \"update.skip-migration-test\" est activée dans le fichier config.php", "Turned on maintenance mode" : "Mode de maintenance activé", "Turned off maintenance mode" : "Mode de maintenance désactivé", "Maintenance mode is kept active" : "Le mode de maintenance est laissé actif", @@ -12,6 +13,8 @@ OC.L10N.register( "Updated \"%s\" to %s" : "Mise à jour de « %s » vers %s", "Repair warning: " : "Avertissement de réparation :", "Repair error: " : "Erreur de réparation :", + "Set log level to debug - current level: \"%s\"" : "Régler le niveau de journal pour le débogage - niveau actuel: \"%s\"", + "Reset log level to \"%s\"" : "Réinitialiser le niveau des journaux pour \"%s\"", "Following incompatible apps have been disabled: %s" : "Les applications incompatibles suivantes ont été désactivées : %s", "Following apps have been disabled: %s" : "Les applications suivantes ont été désactivées : %s", "Already up to date" : "Déjà à jour", @@ -183,6 +186,7 @@ OC.L10N.register( "New Password" : "Nouveau mot de passe", "Reset password" : "Réinitialiser le mot de passe", "Searching other places" : "Recherche en cours dans d'autres emplacements", + "No search results in other folders" : "Aucun résultat de recherche dans les autres dossiers", "Personal" : "Personnel", "Users" : "Utilisateurs", "Apps" : "Applications", diff --git a/core/l10n/fr.json b/core/l10n/fr.json index 62e6ba164f6..a6c01c55636 100644 --- a/core/l10n/fr.json +++ b/core/l10n/fr.json @@ -1,6 +1,7 @@ { "translations": { "Couldn't send mail to following users: %s " : "Impossible d'envoyer un courriel aux utilisateurs suivants : %s", "Preparing update" : "Préparation de la mise à jour", + "Migration tests are skipped - \"update.skip-migration-test\" is activated in config.php" : "Les tests de migration sont ignorées - \"update.skip-migration-test\" est activée dans le fichier config.php", "Turned on maintenance mode" : "Mode de maintenance activé", "Turned off maintenance mode" : "Mode de maintenance désactivé", "Maintenance mode is kept active" : "Le mode de maintenance est laissé actif", @@ -10,6 +11,8 @@ "Updated \"%s\" to %s" : "Mise à jour de « %s » vers %s", "Repair warning: " : "Avertissement de réparation :", "Repair error: " : "Erreur de réparation :", + "Set log level to debug - current level: \"%s\"" : "Régler le niveau de journal pour le débogage - niveau actuel: \"%s\"", + "Reset log level to \"%s\"" : "Réinitialiser le niveau des journaux pour \"%s\"", "Following incompatible apps have been disabled: %s" : "Les applications incompatibles suivantes ont été désactivées : %s", "Following apps have been disabled: %s" : "Les applications suivantes ont été désactivées : %s", "Already up to date" : "Déjà à jour", @@ -181,6 +184,7 @@ "New Password" : "Nouveau mot de passe", "Reset password" : "Réinitialiser le mot de passe", "Searching other places" : "Recherche en cours dans d'autres emplacements", + "No search results in other folders" : "Aucun résultat de recherche dans les autres dossiers", "Personal" : "Personnel", "Users" : "Utilisateurs", "Apps" : "Applications", diff --git a/core/l10n/hu_HU.js b/core/l10n/hu_HU.js index c1ee751df34..f90cd8d2b62 100644 --- a/core/l10n/hu_HU.js +++ b/core/l10n/hu_HU.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Couldn't send mail to following users: %s " : "Nem sikerült e-mailt küldeni a következő felhasználóknak: %s", "Preparing update" : "Felkészülés a frissítésre", + "Migration tests are skipped - \"update.skip-migration-test\" is activated in config.php" : "Migrációs tesztek kihagyva - „update.skip-migration-test” aktiválva van a config.php fájlban", "Turned on maintenance mode" : "A karbantartási mód bekapcsolva", "Turned off maintenance mode" : "A karbantartási mód kikapcsolva", "Maintenance mode is kept active" : "Karbantartási mód aktiválva marad", @@ -109,6 +110,7 @@ OC.L10N.register( "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "a /dev/urandom eszköz nem elérhető PHP-ből, ami nagyon nagy biztonsági problémát jelent. További információ található az alábbi <a href=\"{docLink}\">dokumentációban</a>.", "Your PHP version ({version}) is no longer <a 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}) már nem <a href=\"{phpLink}\">támogatott a PHP által</a>. Javasoljuk, hogy frissítsd a PHP verziót, hogy kihasználd a teljesítménybeli és biztonsági javításokat.", "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 href=\"{docLink}\">documentation</a>." : "A fordított proxy fejlécek konfigurációs beállításai helytelenek, vagy egy megbízható proxy-ból próbálja az ownCloud-ot elérni. Ha nem megbízható proxy-ból próbálja elérni az ownCloud-ot, akkor ez egy biztonsági probléma, a támadó az ownCloud számára látható IP cím csalást tud végrehajtani. További információ található a <a href=\"{docLink}\">dokumentációban</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached be van konfigurálva gyorsítótárnak, de rossz \"memcache\" PHP modul van telepítve. \\OC\\Memcache\\Memcached csak a \"memcached\"-t támogatja, és nem a \"memcache\"-t. Kérjük, nézd meg a <a href=\"{wikiLink}\">memcached wiki oldalt a modulokkal kapcsolatban</a>.", "Error occurred while checking server setup" : "Hiba történt a szerver beállítások ellenőrzése közben", "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.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "A \"Strict-Transport-Security\" HTTP fejléc nincs beállítva hogy \"{seconds}\" másodpercig tartson. Biztonsági okokból ajánljuk, hogy engedélyezze a HSTS, ahogyan ezt részletezzük a <a href=\"{docUrl}\">biztonsági tippek</a> dokumentációban.", diff --git a/core/l10n/hu_HU.json b/core/l10n/hu_HU.json index 55e9e828245..429c5e095ea 100644 --- a/core/l10n/hu_HU.json +++ b/core/l10n/hu_HU.json @@ -1,6 +1,7 @@ { "translations": { "Couldn't send mail to following users: %s " : "Nem sikerült e-mailt küldeni a következő felhasználóknak: %s", "Preparing update" : "Felkészülés a frissítésre", + "Migration tests are skipped - \"update.skip-migration-test\" is activated in config.php" : "Migrációs tesztek kihagyva - „update.skip-migration-test” aktiválva van a config.php fájlban", "Turned on maintenance mode" : "A karbantartási mód bekapcsolva", "Turned off maintenance mode" : "A karbantartási mód kikapcsolva", "Maintenance mode is kept active" : "Karbantartási mód aktiválva marad", @@ -107,6 +108,7 @@ "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "a /dev/urandom eszköz nem elérhető PHP-ből, ami nagyon nagy biztonsági problémát jelent. További információ található az alábbi <a href=\"{docLink}\">dokumentációban</a>.", "Your PHP version ({version}) is no longer <a 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}) már nem <a href=\"{phpLink}\">támogatott a PHP által</a>. Javasoljuk, hogy frissítsd a PHP verziót, hogy kihasználd a teljesítménybeli és biztonsági javításokat.", "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 href=\"{docLink}\">documentation</a>." : "A fordított proxy fejlécek konfigurációs beállításai helytelenek, vagy egy megbízható proxy-ból próbálja az ownCloud-ot elérni. Ha nem megbízható proxy-ból próbálja elérni az ownCloud-ot, akkor ez egy biztonsági probléma, a támadó az ownCloud számára látható IP cím csalást tud végrehajtani. További információ található a <a href=\"{docLink}\">dokumentációban</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached be van konfigurálva gyorsítótárnak, de rossz \"memcache\" PHP modul van telepítve. \\OC\\Memcache\\Memcached csak a \"memcached\"-t támogatja, és nem a \"memcache\"-t. Kérjük, nézd meg a <a href=\"{wikiLink}\">memcached wiki oldalt a modulokkal kapcsolatban</a>.", "Error occurred while checking server setup" : "Hiba történt a szerver beállítások ellenőrzése közben", "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.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "A \"Strict-Transport-Security\" HTTP fejléc nincs beállítva hogy \"{seconds}\" másodpercig tartson. Biztonsági okokból ajánljuk, hogy engedélyezze a HSTS, ahogyan ezt részletezzük a <a href=\"{docUrl}\">biztonsági tippek</a> dokumentációban.", diff --git a/core/l10n/it.js b/core/l10n/it.js index 1409fe93c8c..50f7799ff13 100644 --- a/core/l10n/it.js +++ b/core/l10n/it.js @@ -110,6 +110,7 @@ OC.L10N.register( "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a 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 href=\"{docLink}\">documentazione</a>.", "Your PHP version ({version}) is no longer <a 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 href=\"{phpLink}\">supportata da PHP</a>. Ti esortiamo ad aggiornare la versione di PHP per trarre vantaggio dagli aggiornamenti in termini di prestazioni e sicurezza forniti da 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 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 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 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 href=\"{wikiLink}\">wiki di memcached per informazioni su entrambi i moduli</a>.", "Error occurred while checking server setup" : "Si è verificato un errore durante il controllo della configurazione del server", "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." : "L'intestazione HTTP \"{header}\" non è configurata come \"{expected}\". \nQuesto è un potenziale rischio di sicurezza o di riservatezza dei dati e noi consigliamo di modificare questa impostazione.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "L'intestazione HTTP \"Strict-Transport-Security\" non è configurata con un valore almeno di \"{seconds}\" secondi. Per migliorare la sicurezza, consigliamo di abilitare HSTS come descritto nei nostri <a href=\"{docUrl}\">consigli sulla sicurezza</a>.", diff --git a/core/l10n/it.json b/core/l10n/it.json index 94d434cffd3..18052b86633 100644 --- a/core/l10n/it.json +++ b/core/l10n/it.json @@ -108,6 +108,7 @@ "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a 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 href=\"{docLink}\">documentazione</a>.", "Your PHP version ({version}) is no longer <a 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 href=\"{phpLink}\">supportata da PHP</a>. Ti esortiamo ad aggiornare la versione di PHP per trarre vantaggio dagli aggiornamenti in termini di prestazioni e sicurezza forniti da 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 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 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 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 href=\"{wikiLink}\">wiki di memcached per informazioni su entrambi i moduli</a>.", "Error occurred while checking server setup" : "Si è verificato un errore durante il controllo della configurazione del server", "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." : "L'intestazione HTTP \"{header}\" non è configurata come \"{expected}\". \nQuesto è un potenziale rischio di sicurezza o di riservatezza dei dati e noi consigliamo di modificare questa impostazione.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "L'intestazione HTTP \"Strict-Transport-Security\" non è configurata con un valore almeno di \"{seconds}\" secondi. Per migliorare la sicurezza, consigliamo di abilitare HSTS come descritto nei nostri <a href=\"{docUrl}\">consigli sulla sicurezza</a>.", diff --git a/core/l10n/nds.js b/core/l10n/nds.js index 4cb36aaaaac..9c81f34e70f 100644 --- a/core/l10n/nds.js +++ b/core/l10n/nds.js @@ -1,8 +1,115 @@ OC.L10N.register( "core", { - "_{count} file conflict_::_{count} file conflicts_" : ["",""], - "_download %n file_::_download %n files_" : ["",""], - "_{count} search result in other places_::_{count} search results in other places_" : ["",""] + "Couldn't send mail to following users: %s " : "Senden der E-Mail an folgende Benutzer fehlgeschlagen: %s", + "Preparing update" : "Bereite Aktualisierung vor", + "Migration tests are skipped - \"update.skip-migration-test\" is activated in config.php" : "Migrierungstests werden übersprungen - \"update.skip-migration-test\" ist in der config.php aktiviert", + "Turned on maintenance mode" : "Wartungsmodus eingeschaltet", + "Turned off maintenance mode" : "Wartungsmodus ausgeschaltet", + "Maintenance mode is kept active" : "Wartungsmodus wird fortgeführt", + "Updated database" : "Datenbank wurde aktualisiert", + "Checked database schema update" : "Datenbankschemaaktualisierung wurde geprüft", + "Checked database schema update for apps" : "Datenbankschemaaktualisierung für Apps wurde geprüft", + "Updated \"%s\" to %s" : "\"%s\" auf %s aktualisiert", + "Repair warning: " : "Reparaturwarnung", + "Repair error: " : "Reparaturfehler", + "Set log level to debug - current level: \"%s\"" : "Protokollierungsstufe auf Debug gesetzt - Aktuelle Stufe: \"%s\"", + "Reset log level to \"%s\"" : "Protokollierungsstufe auf \"%s\" zurückgesetzt", + "Following incompatible apps have been disabled: %s" : "Folgende inkompatible Apps wurden deaktiviert: %s", + "Following apps have been disabled: %s" : "Folgende Apps wurden deaktiviert: %s", + "Already up to date" : "Bereits aktuell", + "File is too big" : "Datei ist zu groß", + "Invalid file provided" : "Ungültige Datei geliefert", + "No image or file provided" : "Kein Bild oder keine Datei geliefert", + "Unknown filetype" : "Unbekannter Dateityp", + "Invalid image" : "Ungültiges Bild", + "No temporary profile picture available, try again" : "Kein flüchtiges Profilbild verfügbar, bitte versuche es noch einmal", + "No crop data provided" : "Keine Angaben zum Zuschneiden geliefert", + "No valid crop data provided" : "Keine gültigen Angaben zum Zuschnitt geliefert", + "Crop is not square" : "Zuschnitt ist nicht quadratisch", + "Sunday" : "Sonntag", + "Monday" : "Montag", + "Tuesday" : "Dienstag", + "Wednesday" : "Mittwoch", + "Thursday" : "Donnerstag", + "Friday" : "Freitag", + "Saturday" : "Samstag", + "Sun." : "Son.", + "Mon." : "Mon.", + "Tue." : "Die.", + "Wed." : "Mit.", + "Thu." : "Don.", + "Fri." : "Fre.", + "Sat." : "Sam.", + "Su" : "So", + "Mo" : "Mo", + "Tu" : "Di", + "We" : "Mi", + "Th" : "Do", + "Fr" : "Fr", + "Sa" : "Sa", + "January" : "Januar", + "February" : "Februar", + "March" : "März", + "April" : "April", + "May" : "Mai", + "June" : "Juni", + "July" : "Juli", + "August" : "August", + "September" : "September", + "October" : "Oktober", + "November" : "November", + "December" : "Dezember", + "Jan." : "Jan.", + "Feb." : "Feb.", + "Mar." : "Mrz.", + "Apr." : "Apr.", + "May." : "Mai.", + "Jun." : "Jun.", + "Jul." : "Jul.", + "Aug." : "Aug.", + "Sep." : "Sep.", + "Oct." : "Okt.", + "Nov." : "Nov.", + "Dec." : "Dez.", + "Settings" : "Einstellungen", + "Saving..." : "Speichern...", + "seconds ago" : "vor wenigen Sekunden", + "Couldn't send reset email. Please contact your administrator." : "E-Mail zum Zurücksetzen konnte nicht gesendet werden. Bitte wende Dich an Deinem Administrator.", + "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Der Link zum Zurücksetzen deines Passworts wurde an Deine E-Mailadresse geschickt. Wenn Du diesen in einer angemessenen Zeit nicht erhältst, prüfe bitte deine Spam/Junk Ordner.<br> Wenn die E-Mail dort nicht ist, wende Dich an Deinen lokalen Administrator.", + "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Deine Dateien sind verschlüsselt. Wenn Dein Wiederherstellungsschlüssel nicht aktiviert ist, gibt es keine Möglichkeit die Daten wiederherzustellen, nachdem Dein Passwort zurückgesetzt wurde.<br /> Wenn Du nicht sicher weißt was zu tun ist, wende Dich bitte an deinen Adminstrator bevor du fortfährst.<br />Willst du wirklich fortfahren?", + "I know what I'm doing" : "Ich weiß was ich tue", + "Password can not be changed. Please contact your administrator." : "Das Passwort kann nicht geändert werden. Bitte wende Dich an Deinen Administrator.", + "No" : "Nein", + "Yes" : "Ja", + "Choose" : "Auswählen", + "Error loading file picker template: {error}" : "Fehler beim Laden der Vorlage zum Auswählen von Dateien: {error}", + "Ok" : "Ok", + "Error loading message template: {error}" : "Fehler beim Laden der Nachrichtenvorlage: {error}", + "read-only" : "Nur Lesezugriff", + "_{count} file conflict_::_{count} file conflicts_" : ["{count} Dateikonflikt","{count} Dateikonflikte"], + "One file conflict" : "Ein Dateikonflikt", + "New Files" : "Neue Dateien", + "Already existing files" : "Bereits vorhandene Dateien", + "Which files do you want to keep?" : "Welche Dateien willst du behalten?", + "If you select both versions, the copied file will have a number added to its name." : "Wenn Du beide Versionen behältst, wird eine Nummer an den Namen der kopierten Datei angehängt.", + "Cancel" : "Abbrechen", + "Continue" : "Fortsetzen", + "(all selected)" : "(alle ausgewählt)", + "({count} selected)" : "({count} ausgewählt)", + "Error loading file exists template" : "Fehler beim Laden der Vorlage \"Datei existiert\"", + "Very weak password" : "Sehr schwaches Passwort", + "Weak password" : "Schwaches Passwort", + "So-so password" : "Mittelstarkes Passwort", + "Good password" : "Gutes Passwort", + "Strong password" : "Starkes Passwort", + "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Dein Webserver ist für die Dateisynchronisierung noch nicht ordentlich eingerichtet, da die WebDAV-Schnittstelle fehlerhaft scheint. ", + "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 ist nicht mit dem Internet verbunden. Das bedeutet, dass manche Funktionen, wie das Einbinden von externen Speichern, Benachrichtigungen über Aktualisierungen oder die Installation von Drittanbieter Apps nicht zur Verfügung stehen. Auch der Fernzugriff auf Dateien und das Senden von Hinweis-E-Mails könnte nicht funktionieren. Wir empfehlen die Internetverbindung dieses Servers zu aktivieren, wenn Du diese Funktionen nutzen möchtest.", + "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." : "Der Zugriff auf Dein Datenverzeichnis und Deine Dateien ist über das Internet vermutlich möglich. Die .htaccess-Datei greift nicht. Wir empfehlen dringend den Webserver derart zu konfigurieren, dass das Datenverzeichnis nicht mehr zugreifbar ist oder das Datenverzeichnis nach außerhalb des Dokumentenwurzelverzeichnisses des Webservers zu verschieben.", + "Password" : "Passwort", + "Share" : "Teilen", + "Delete" : "Löschen", + "Personal" : "Persönlich", + "Username" : "Benutzername" }, "nplurals=2; plural=(n != 1);"); diff --git a/core/l10n/nds.json b/core/l10n/nds.json index 43fce52c5cf..e62ab93e307 100644 --- a/core/l10n/nds.json +++ b/core/l10n/nds.json @@ -1,6 +1,113 @@ { "translations": { - "_{count} file conflict_::_{count} file conflicts_" : ["",""], - "_download %n file_::_download %n files_" : ["",""], - "_{count} search result in other places_::_{count} search results in other places_" : ["",""] + "Couldn't send mail to following users: %s " : "Senden der E-Mail an folgende Benutzer fehlgeschlagen: %s", + "Preparing update" : "Bereite Aktualisierung vor", + "Migration tests are skipped - \"update.skip-migration-test\" is activated in config.php" : "Migrierungstests werden übersprungen - \"update.skip-migration-test\" ist in der config.php aktiviert", + "Turned on maintenance mode" : "Wartungsmodus eingeschaltet", + "Turned off maintenance mode" : "Wartungsmodus ausgeschaltet", + "Maintenance mode is kept active" : "Wartungsmodus wird fortgeführt", + "Updated database" : "Datenbank wurde aktualisiert", + "Checked database schema update" : "Datenbankschemaaktualisierung wurde geprüft", + "Checked database schema update for apps" : "Datenbankschemaaktualisierung für Apps wurde geprüft", + "Updated \"%s\" to %s" : "\"%s\" auf %s aktualisiert", + "Repair warning: " : "Reparaturwarnung", + "Repair error: " : "Reparaturfehler", + "Set log level to debug - current level: \"%s\"" : "Protokollierungsstufe auf Debug gesetzt - Aktuelle Stufe: \"%s\"", + "Reset log level to \"%s\"" : "Protokollierungsstufe auf \"%s\" zurückgesetzt", + "Following incompatible apps have been disabled: %s" : "Folgende inkompatible Apps wurden deaktiviert: %s", + "Following apps have been disabled: %s" : "Folgende Apps wurden deaktiviert: %s", + "Already up to date" : "Bereits aktuell", + "File is too big" : "Datei ist zu groß", + "Invalid file provided" : "Ungültige Datei geliefert", + "No image or file provided" : "Kein Bild oder keine Datei geliefert", + "Unknown filetype" : "Unbekannter Dateityp", + "Invalid image" : "Ungültiges Bild", + "No temporary profile picture available, try again" : "Kein flüchtiges Profilbild verfügbar, bitte versuche es noch einmal", + "No crop data provided" : "Keine Angaben zum Zuschneiden geliefert", + "No valid crop data provided" : "Keine gültigen Angaben zum Zuschnitt geliefert", + "Crop is not square" : "Zuschnitt ist nicht quadratisch", + "Sunday" : "Sonntag", + "Monday" : "Montag", + "Tuesday" : "Dienstag", + "Wednesday" : "Mittwoch", + "Thursday" : "Donnerstag", + "Friday" : "Freitag", + "Saturday" : "Samstag", + "Sun." : "Son.", + "Mon." : "Mon.", + "Tue." : "Die.", + "Wed." : "Mit.", + "Thu." : "Don.", + "Fri." : "Fre.", + "Sat." : "Sam.", + "Su" : "So", + "Mo" : "Mo", + "Tu" : "Di", + "We" : "Mi", + "Th" : "Do", + "Fr" : "Fr", + "Sa" : "Sa", + "January" : "Januar", + "February" : "Februar", + "March" : "März", + "April" : "April", + "May" : "Mai", + "June" : "Juni", + "July" : "Juli", + "August" : "August", + "September" : "September", + "October" : "Oktober", + "November" : "November", + "December" : "Dezember", + "Jan." : "Jan.", + "Feb." : "Feb.", + "Mar." : "Mrz.", + "Apr." : "Apr.", + "May." : "Mai.", + "Jun." : "Jun.", + "Jul." : "Jul.", + "Aug." : "Aug.", + "Sep." : "Sep.", + "Oct." : "Okt.", + "Nov." : "Nov.", + "Dec." : "Dez.", + "Settings" : "Einstellungen", + "Saving..." : "Speichern...", + "seconds ago" : "vor wenigen Sekunden", + "Couldn't send reset email. Please contact your administrator." : "E-Mail zum Zurücksetzen konnte nicht gesendet werden. Bitte wende Dich an Deinem Administrator.", + "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Der Link zum Zurücksetzen deines Passworts wurde an Deine E-Mailadresse geschickt. Wenn Du diesen in einer angemessenen Zeit nicht erhältst, prüfe bitte deine Spam/Junk Ordner.<br> Wenn die E-Mail dort nicht ist, wende Dich an Deinen lokalen Administrator.", + "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Deine Dateien sind verschlüsselt. Wenn Dein Wiederherstellungsschlüssel nicht aktiviert ist, gibt es keine Möglichkeit die Daten wiederherzustellen, nachdem Dein Passwort zurückgesetzt wurde.<br /> Wenn Du nicht sicher weißt was zu tun ist, wende Dich bitte an deinen Adminstrator bevor du fortfährst.<br />Willst du wirklich fortfahren?", + "I know what I'm doing" : "Ich weiß was ich tue", + "Password can not be changed. Please contact your administrator." : "Das Passwort kann nicht geändert werden. Bitte wende Dich an Deinen Administrator.", + "No" : "Nein", + "Yes" : "Ja", + "Choose" : "Auswählen", + "Error loading file picker template: {error}" : "Fehler beim Laden der Vorlage zum Auswählen von Dateien: {error}", + "Ok" : "Ok", + "Error loading message template: {error}" : "Fehler beim Laden der Nachrichtenvorlage: {error}", + "read-only" : "Nur Lesezugriff", + "_{count} file conflict_::_{count} file conflicts_" : ["{count} Dateikonflikt","{count} Dateikonflikte"], + "One file conflict" : "Ein Dateikonflikt", + "New Files" : "Neue Dateien", + "Already existing files" : "Bereits vorhandene Dateien", + "Which files do you want to keep?" : "Welche Dateien willst du behalten?", + "If you select both versions, the copied file will have a number added to its name." : "Wenn Du beide Versionen behältst, wird eine Nummer an den Namen der kopierten Datei angehängt.", + "Cancel" : "Abbrechen", + "Continue" : "Fortsetzen", + "(all selected)" : "(alle ausgewählt)", + "({count} selected)" : "({count} ausgewählt)", + "Error loading file exists template" : "Fehler beim Laden der Vorlage \"Datei existiert\"", + "Very weak password" : "Sehr schwaches Passwort", + "Weak password" : "Schwaches Passwort", + "So-so password" : "Mittelstarkes Passwort", + "Good password" : "Gutes Passwort", + "Strong password" : "Starkes Passwort", + "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Dein Webserver ist für die Dateisynchronisierung noch nicht ordentlich eingerichtet, da die WebDAV-Schnittstelle fehlerhaft scheint. ", + "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 ist nicht mit dem Internet verbunden. Das bedeutet, dass manche Funktionen, wie das Einbinden von externen Speichern, Benachrichtigungen über Aktualisierungen oder die Installation von Drittanbieter Apps nicht zur Verfügung stehen. Auch der Fernzugriff auf Dateien und das Senden von Hinweis-E-Mails könnte nicht funktionieren. Wir empfehlen die Internetverbindung dieses Servers zu aktivieren, wenn Du diese Funktionen nutzen möchtest.", + "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." : "Der Zugriff auf Dein Datenverzeichnis und Deine Dateien ist über das Internet vermutlich möglich. Die .htaccess-Datei greift nicht. Wir empfehlen dringend den Webserver derart zu konfigurieren, dass das Datenverzeichnis nicht mehr zugreifbar ist oder das Datenverzeichnis nach außerhalb des Dokumentenwurzelverzeichnisses des Webservers zu verschieben.", + "Password" : "Passwort", + "Share" : "Teilen", + "Delete" : "Löschen", + "Personal" : "Persönlich", + "Username" : "Benutzername" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js index 895fab159f3..fc5b0c053dd 100644 --- a/core/l10n/pt_BR.js +++ b/core/l10n/pt_BR.js @@ -110,6 +110,7 @@ OC.L10N.register( "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom não pode ser lido por PHP o que é altamente desencorajado por razões de segurança. Mais informações podem ser encontradas em nossa <a href=\"{docLink}\">documentation</a>.", "Your PHP version ({version}) is no longer <a 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 é <a href=\"{phpLink}\">suportada pela 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 fornecidos pela 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 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ções podem ser encontradas em nossa <a 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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached está configurado como cache distribuído, mas o módulo PHP errado \"memcache\" está instalado. \\OC\\Memcache\\Memcached somente suporta \"memcached\" e não \"memcache\". Veja o <a href=\"{wikiLink}\">memcached wiki sobre esse módulo</a>.", "Error occurred while checking server setup" : "Erro ao verificar a configuração do servidor", "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." : "O \"{header}\" cabeçalho HTTP não está configurado igual ao \"{expected}\". Este é um risco potencial para a segurança e recomendamos ajustar essa configuração.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "O cabeçalho \"Transporte-de-Segurança-Restrita\"HTTP não está configurada para menos de \"{seconds}\" segundos. Para uma maior segurança recomendamos a ativação HSTS conforme descrito em nossas <a href=\"{docUrl}\">dicas de segurança</a>.", diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json index 817c9e1fa98..90d361b57f6 100644 --- a/core/l10n/pt_BR.json +++ b/core/l10n/pt_BR.json @@ -108,6 +108,7 @@ "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom não pode ser lido por PHP o que é altamente desencorajado por razões de segurança. Mais informações podem ser encontradas em nossa <a href=\"{docLink}\">documentation</a>.", "Your PHP version ({version}) is no longer <a 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 é <a href=\"{phpLink}\">suportada pela 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 fornecidos pela 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 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ções podem ser encontradas em nossa <a 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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached está configurado como cache distribuído, mas o módulo PHP errado \"memcache\" está instalado. \\OC\\Memcache\\Memcached somente suporta \"memcached\" e não \"memcache\". Veja o <a href=\"{wikiLink}\">memcached wiki sobre esse módulo</a>.", "Error occurred while checking server setup" : "Erro ao verificar a configuração do servidor", "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." : "O \"{header}\" cabeçalho HTTP não está configurado igual ao \"{expected}\". Este é um risco potencial para a segurança e recomendamos ajustar essa configuração.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "O cabeçalho \"Transporte-de-Segurança-Restrita\"HTTP não está configurada para menos de \"{seconds}\" segundos. Para uma maior segurança recomendamos a ativação HSTS conforme descrito em nossas <a href=\"{docUrl}\">dicas de segurança</a>.", diff --git a/core/l10n/ru.js b/core/l10n/ru.js index b2ef1b422fe..eadbc2eac72 100644 --- a/core/l10n/ru.js +++ b/core/l10n/ru.js @@ -2,6 +2,8 @@ OC.L10N.register( "core", { "Couldn't send mail to following users: %s " : "Невозможно отправить письмо следующим пользователям: %s", + "Preparing update" : "Подготовка к обновлению", + "Migration tests are skipped - \"update.skip-migration-test\" is activated in config.php" : "Миграционные тесты пропущены - параметр \"update.skip-migration-test\" указан в config.php", "Turned on maintenance mode" : "Режим отладки включён", "Turned off maintenance mode" : "Режим отладки отключён", "Maintenance mode is kept active" : "Режим обслуживания оставлен включенным", @@ -11,8 +13,11 @@ OC.L10N.register( "Updated \"%s\" to %s" : "Обновлено \"%s\" до %s", "Repair warning: " : "Предупреждение восстановления:", "Repair error: " : "Ошибка восстановления:", + "Set log level to debug - current level: \"%s\"" : "Установить отладочное журналирование - текущий уровень: \"%s\"", + "Reset log level to \"%s\"" : "Сбросить уровень журналирования в \"%s\"", "Following incompatible apps have been disabled: %s" : "Следующие несовместимые приложения были отключены: %s", "Following apps have been disabled: %s" : "Были отключены следующие приложения: %s", + "Already up to date" : "Не нуждается в обновлении", "File is too big" : "Файл слишком большой", "Invalid file provided" : "Указан неправильный файл", "No image or file provided" : "Не указано изображение или файл", @@ -36,6 +41,13 @@ OC.L10N.register( "Thu." : "Чт.", "Fri." : "Пт.", "Sat." : "Сб.", + "Su" : "Вс", + "Mo" : "Пн", + "Tu" : "Вт", + "We" : "Ср", + "Th" : "Чт", + "Fr" : "Пт", + "Sa" : "Сб", "January" : "Январь", "February" : "Февраль", "March" : "Март", @@ -137,12 +149,14 @@ OC.L10N.register( "change" : "изменить", "delete" : "удалить", "access control" : "контроль доступа", + "Share details could not be loaded for this item." : "Информация об общем доступе для этого элемента не может быть загружена.", "An error occured. Please try again" : "Произошла ошибка. Попробуйте ещё раз", "Share" : "Поделиться", "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Поделиться с людьми на других серверах ownCloud используя синтакс username@example.com/owncloud", "Share with users or groups …" : "Поделиться с пользователями или группами ...", "Share with users, groups or remote users …" : "Поделиться с пользователями, группами или удаленными пользователями ...", "Warning" : "Предупреждение", + "Error while sending notification" : "Ошибка отправки уведомления", "The object type is not specified." : "Тип объекта не указан", "Enter new" : "Ввести новое", "Delete" : "Удалить", @@ -163,6 +177,7 @@ OC.L10N.register( "The update was successful. There were warnings." : "Обновление прошло успешно. Были предупреждения.", "The update was successful. Redirecting you to ownCloud now." : "Обновление прошло успешно. Перенаправляем в ownCloud.", "Couldn't reset password because the token is invalid" : "Невозможно сбросить пароль из-за неверного токена", + "Couldn't reset password because the token is expired" : "Не удается сбросить пароль, так как токен истек.", "Couldn't send reset email. Please make sure your username is correct." : "Не удалось отправить письмо для сброса пароля. Убедитесь, что имя пользователя указано верно.", "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Невозможно отправить письмо для сброса пароля, для вашей учетной записи не указан адрес электронной почты. Пожалуйста, свяжитесь с администратором.", "%s password reset" : "Сброс пароля %s", @@ -171,6 +186,8 @@ OC.L10N.register( "New Password" : "Новый пароль", "Reset password" : "Сбросить пароль", "Searching other places" : "Идет поиск в других местах", + "No search results in other folders" : "Нет результатов поиска в других папках", + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} результат в другой папке","{count} результата в другой папке","{count} результатов в другой папке","{count} результатов в другой папке"], "Personal" : "Личное", "Users" : "Пользователи", "Apps" : "Приложения", @@ -247,6 +264,10 @@ OC.L10N.register( "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domain\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Пожалуйста, свяжитесь с вашим администратором. Если вы администратор этого сервера, сконфигурируйте \"trusted_domain\" в config/config.php. Пример настройки можно найти в /config/config.sample.php.", "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "В зависимости от конфигурации, как администратор вы можете также внести домен в доверенные с помощью кнопки ниже.", "Add \"%s\" as trusted domain" : "Добавить \"%s\" как доверенный домен", + "App update required" : "Требуется обновление приложения", + "%s will be updated to version %s" : "%s будет обновлен до версии %s", + "These apps will be updated:" : "Следующие приложения будут обновлены:", + "These incompatible apps will be disabled:" : "Эти несовместимые приложения будут отключены:", "The theme %s has been disabled." : "Тема %s была отключена.", "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Перед продолжением убедитесь, что вы сделали резервную копию базы данных, каталога конфигурации и каталога с данными.", "Start update" : "Запустить обновление", diff --git a/core/l10n/ru.json b/core/l10n/ru.json index 46ee1af1afe..54b96e373f2 100644 --- a/core/l10n/ru.json +++ b/core/l10n/ru.json @@ -1,5 +1,7 @@ { "translations": { "Couldn't send mail to following users: %s " : "Невозможно отправить письмо следующим пользователям: %s", + "Preparing update" : "Подготовка к обновлению", + "Migration tests are skipped - \"update.skip-migration-test\" is activated in config.php" : "Миграционные тесты пропущены - параметр \"update.skip-migration-test\" указан в config.php", "Turned on maintenance mode" : "Режим отладки включён", "Turned off maintenance mode" : "Режим отладки отключён", "Maintenance mode is kept active" : "Режим обслуживания оставлен включенным", @@ -9,8 +11,11 @@ "Updated \"%s\" to %s" : "Обновлено \"%s\" до %s", "Repair warning: " : "Предупреждение восстановления:", "Repair error: " : "Ошибка восстановления:", + "Set log level to debug - current level: \"%s\"" : "Установить отладочное журналирование - текущий уровень: \"%s\"", + "Reset log level to \"%s\"" : "Сбросить уровень журналирования в \"%s\"", "Following incompatible apps have been disabled: %s" : "Следующие несовместимые приложения были отключены: %s", "Following apps have been disabled: %s" : "Были отключены следующие приложения: %s", + "Already up to date" : "Не нуждается в обновлении", "File is too big" : "Файл слишком большой", "Invalid file provided" : "Указан неправильный файл", "No image or file provided" : "Не указано изображение или файл", @@ -34,6 +39,13 @@ "Thu." : "Чт.", "Fri." : "Пт.", "Sat." : "Сб.", + "Su" : "Вс", + "Mo" : "Пн", + "Tu" : "Вт", + "We" : "Ср", + "Th" : "Чт", + "Fr" : "Пт", + "Sa" : "Сб", "January" : "Январь", "February" : "Февраль", "March" : "Март", @@ -135,12 +147,14 @@ "change" : "изменить", "delete" : "удалить", "access control" : "контроль доступа", + "Share details could not be loaded for this item." : "Информация об общем доступе для этого элемента не может быть загружена.", "An error occured. Please try again" : "Произошла ошибка. Попробуйте ещё раз", "Share" : "Поделиться", "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Поделиться с людьми на других серверах ownCloud используя синтакс username@example.com/owncloud", "Share with users or groups …" : "Поделиться с пользователями или группами ...", "Share with users, groups or remote users …" : "Поделиться с пользователями, группами или удаленными пользователями ...", "Warning" : "Предупреждение", + "Error while sending notification" : "Ошибка отправки уведомления", "The object type is not specified." : "Тип объекта не указан", "Enter new" : "Ввести новое", "Delete" : "Удалить", @@ -161,6 +175,7 @@ "The update was successful. There were warnings." : "Обновление прошло успешно. Были предупреждения.", "The update was successful. Redirecting you to ownCloud now." : "Обновление прошло успешно. Перенаправляем в ownCloud.", "Couldn't reset password because the token is invalid" : "Невозможно сбросить пароль из-за неверного токена", + "Couldn't reset password because the token is expired" : "Не удается сбросить пароль, так как токен истек.", "Couldn't send reset email. Please make sure your username is correct." : "Не удалось отправить письмо для сброса пароля. Убедитесь, что имя пользователя указано верно.", "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Невозможно отправить письмо для сброса пароля, для вашей учетной записи не указан адрес электронной почты. Пожалуйста, свяжитесь с администратором.", "%s password reset" : "Сброс пароля %s", @@ -169,6 +184,8 @@ "New Password" : "Новый пароль", "Reset password" : "Сбросить пароль", "Searching other places" : "Идет поиск в других местах", + "No search results in other folders" : "Нет результатов поиска в других папках", + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} результат в другой папке","{count} результата в другой папке","{count} результатов в другой папке","{count} результатов в другой папке"], "Personal" : "Личное", "Users" : "Пользователи", "Apps" : "Приложения", @@ -245,6 +262,10 @@ "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domain\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Пожалуйста, свяжитесь с вашим администратором. Если вы администратор этого сервера, сконфигурируйте \"trusted_domain\" в config/config.php. Пример настройки можно найти в /config/config.sample.php.", "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "В зависимости от конфигурации, как администратор вы можете также внести домен в доверенные с помощью кнопки ниже.", "Add \"%s\" as trusted domain" : "Добавить \"%s\" как доверенный домен", + "App update required" : "Требуется обновление приложения", + "%s will be updated to version %s" : "%s будет обновлен до версии %s", + "These apps will be updated:" : "Следующие приложения будут обновлены:", + "These incompatible apps will be disabled:" : "Эти несовместимые приложения будут отключены:", "The theme %s has been disabled." : "Тема %s была отключена.", "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Перед продолжением убедитесь, что вы сделали резервную копию базы данных, каталога конфигурации и каталога с данными.", "Start update" : "Запустить обновление", diff --git a/core/lostpassword/templates/email.php b/core/lostpassword/templates/email.php index db968246600..618ac5dcd5c 100644 --- a/core/lostpassword/templates/email.php +++ b/core/lostpassword/templates/email.php @@ -1,7 +1,6 @@ <?php /** * @author Christopher Schäpers <kondou@ts.unde.re> - * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/core/register_command.php b/core/register_command.php index 878542f72c9..460e8626e5e 100644 --- a/core/register_command.php +++ b/core/register_command.php @@ -1,6 +1,7 @@ <?php /** * @author Bart Visscher <bartv@thisnet.nl> + * @author Björn Schießle <schiessle@owncloud.com> * @author Christian Kampka <christian@kampka.net> * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> diff --git a/core/setup/controller.php b/core/setup/controller.php index f616ae5a5b3..36ba33f2a42 100644 --- a/core/setup/controller.php +++ b/core/setup/controller.php @@ -1,7 +1,6 @@ <?php /** * @author Bart Visscher <bartv@thisnet.nl> - * @author cmeh <cmeh@users.noreply.github.com> * @author ideaship <ideaship@users.noreply.github.com> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> @@ -3,9 +3,11 @@ * @author Bernhard Posselt <dev@bernhard-posselt.com> * @author Christopher Schäpers <kondou@ts.unde.re> * @author Jakob Sack <mail@jakobsack.de> + * @author Joas Schilling <nickvergessen@owncloud.com> * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Morris Jobke <hey@morrisjobke.de> * @author Oliver Kohl D.Sc. <oliver@kohl.bz> + * @author Phil Davis <phil.davis@inf.org> * @author Robin Appelman <icewind@owncloud.com> * @author Steffen Lindner <mail@steffen-lindner.de> * @author Thomas Müller <thomas.mueller@tmit.eu> diff --git a/index.php b/index.php index 536a55ad6eb..5c376dcf285 100644 --- a/index.php +++ b/index.php @@ -1,6 +1,5 @@ <?php /** - * @author Frank Karlitschek <frank@owncloud.org> * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> diff --git a/lib/autoloader.php b/lib/autoloader.php index 8361f31b038..f60f5a358ca 100644 --- a/lib/autoloader.php +++ b/lib/autoloader.php @@ -5,6 +5,7 @@ * @author Markus Goetz <markus@woboq.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Victor Dubiniuk <dubiniuk@owncloud.com> * diff --git a/lib/base.php b/lib/base.php index 889801f9653..12c23f5ce1b 100644 --- a/lib/base.php +++ b/lib/base.php @@ -13,15 +13,17 @@ * @author Frank Karlitschek <frank@owncloud.org> * @author Georg Ehrke <georg@owncloud.com> * @author Hugo Gonzalez Labrador <hglavra@gmail.com> + * @author Individual IT Services <info@individual-it.net> * @author Jakob Sack <mail@jakobsack.de> - * @author Jan-Christoph Borchardt <hey@jancborchardt.net> * @author Joas Schilling <nickvergessen@owncloud.com> * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@owncloud.com> * @author marc0s <marcos@tenak.net> + * @author Martin Mattel <martin.mattel@diemattels.at> * @author Michael Gapczynski <GapczynskiM@gmail.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Owen Winkler <a_github@midnightcircus.com> + * @author Phil Davis <phil.davis@inf.org> * @author Ramiro Aparicio <rapariciog@gmail.com> * @author Robin Appelman <icewind@owncloud.com> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> diff --git a/lib/l10n/fa.js b/lib/l10n/fa.js index bd6435da10d..3e77cf40baa 100644 --- a/lib/l10n/fa.js +++ b/lib/l10n/fa.js @@ -4,6 +4,7 @@ OC.L10N.register( "Cannot write into \"config\" directory!" : "نمیتوانید داخل دایرکتوری \"config\" تغییراتی ایجاد کنید", "See %s" : "مشاهده %s", "Sample configuration detected" : "فایل پیکربندی نمونه پیدا شد", + "PHP %s or higher is required." : "PHP نسخهی %s یا بالاتر نیاز است.", "Following databases are supported: %s" : "پایگاهداده های ذکر شده مورد نیاز است: %s", "The command line tool %s could not be found" : "ابزار کامندلاین %s پیدا نشد", "Help" : "راهنما", @@ -53,6 +54,9 @@ OC.L10N.register( "Microsoft Windows Platform is not supported" : "بستر Microsoft Windows پشتیبانی نمیشود", "Cannot write into \"config\" directory" : "امکان نوشتن درون شاخهی \"config\" وجود ندارد", "Please ask your server administrator to install the module." : "لطفا از مدیر سیستم بخواهید تا ماژول را نصب کند.", - "PostgreSQL >= 9 required" : "PostgreSQL >= 9 نیاز است" + "PHP module %s not installed." : "ماژول PHP %s نصب نشده است.", + "PostgreSQL >= 9 required" : "PostgreSQL >= 9 نیاز است", + "Please upgrade your database version" : "لطفا نسخهی پایگاهدادهی خود را بروز کنید", + "Error occurred while checking PostgreSQL version" : "خطا در هنگام بررسی نسخهی PostgreSQL" }, "nplurals=1; plural=0;"); diff --git a/lib/l10n/fa.json b/lib/l10n/fa.json index 620a0ef2ffc..ae18861fa8a 100644 --- a/lib/l10n/fa.json +++ b/lib/l10n/fa.json @@ -2,6 +2,7 @@ "Cannot write into \"config\" directory!" : "نمیتوانید داخل دایرکتوری \"config\" تغییراتی ایجاد کنید", "See %s" : "مشاهده %s", "Sample configuration detected" : "فایل پیکربندی نمونه پیدا شد", + "PHP %s or higher is required." : "PHP نسخهی %s یا بالاتر نیاز است.", "Following databases are supported: %s" : "پایگاهداده های ذکر شده مورد نیاز است: %s", "The command line tool %s could not be found" : "ابزار کامندلاین %s پیدا نشد", "Help" : "راهنما", @@ -51,6 +52,9 @@ "Microsoft Windows Platform is not supported" : "بستر Microsoft Windows پشتیبانی نمیشود", "Cannot write into \"config\" directory" : "امکان نوشتن درون شاخهی \"config\" وجود ندارد", "Please ask your server administrator to install the module." : "لطفا از مدیر سیستم بخواهید تا ماژول را نصب کند.", - "PostgreSQL >= 9 required" : "PostgreSQL >= 9 نیاز است" + "PHP module %s not installed." : "ماژول PHP %s نصب نشده است.", + "PostgreSQL >= 9 required" : "PostgreSQL >= 9 نیاز است", + "Please upgrade your database version" : "لطفا نسخهی پایگاهدادهی خود را بروز کنید", + "Error occurred while checking PostgreSQL version" : "خطا در هنگام بررسی نسخهی PostgreSQL" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/lib/l10n/nds.js b/lib/l10n/nds.js index a12702211c2..04b6bdf25a8 100644 --- a/lib/l10n/nds.js +++ b/lib/l10n/nds.js @@ -1,10 +1,9 @@ OC.L10N.register( "lib", { - "_%n day ago_::_%n days ago_" : ["",""], - "_%n month ago_::_%n months ago_" : ["",""], - "_%n year ago_::_%n years ago_" : ["",""], - "_%n hour ago_::_%n hours ago_" : ["",""], - "_%n minute ago_::_%n minutes ago_" : ["",""] + "Personal" : "Persönlich", + "Unknown filetype" : "Unbekannter Dateityp", + "Invalid image" : "Ungültiges Bild", + "seconds ago" : "vor wenigen Sekunden" }, "nplurals=2; plural=(n != 1);"); diff --git a/lib/l10n/nds.json b/lib/l10n/nds.json index b994fa289eb..1c9232d838a 100644 --- a/lib/l10n/nds.json +++ b/lib/l10n/nds.json @@ -1,8 +1,7 @@ { "translations": { - "_%n day ago_::_%n days ago_" : ["",""], - "_%n month ago_::_%n months ago_" : ["",""], - "_%n year ago_::_%n years ago_" : ["",""], - "_%n hour ago_::_%n hours ago_" : ["",""], - "_%n minute ago_::_%n minutes ago_" : ["",""] + "Personal" : "Persönlich", + "Unknown filetype" : "Unbekannter Dateityp", + "Invalid image" : "Ungültiges Bild", + "seconds ago" : "vor wenigen Sekunden" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js index 215bd4f0ebb..7ef161a96a0 100644 --- a/lib/l10n/ru.js +++ b/lib/l10n/ru.js @@ -49,6 +49,7 @@ OC.L10N.register( "Can't read file" : "Не удается прочитать файл", "App directory already exists" : "Каталог приложения уже существует", "Can't create app folder. Please fix permissions. %s" : "Не удалось создать каталог. Исправьте права доступа. %s", + "Archive does not contain a directory named %s" : "Архив не содержит папки с именем %s", "No source specified when installing app" : "Не указан источник при установке приложения", "No href specified when installing app from http" : "Не указан атрибут href при установке приложения через http", "No path specified when installing app from local file" : "Не указан путь при установке приложения из локального файла", @@ -90,6 +91,7 @@ OC.L10N.register( "Sharing %s failed, because the user %s does not exist" : "Не удалось поделиться %s, пользователь %s не существует.", "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Не удалось поделиться %s, пользователь %s не состоит в какой-либо группе в которой состоит %s", "Sharing %s failed, because this item is already shared with %s" : "Не удалось поделиться %s, пользователь %s уже имеет доступ к этому элементу", + "Sharing %s failed, because this item is already shared with user %s" : "Не удалось поделиться %s, так как элемент находится в общем доступе у %s", "Sharing %s failed, because the group %s does not exist" : "Не удалось поделиться %s, группа %s не существует", "Sharing %s failed, because %s is not a member of the group %s" : "Не удалось поделиться %s, пользователь %s не является членом группы %s", "You need to provide a password to create a public link, only protected links are allowed" : "Вам нужно задать пароль для создания публичной ссылки. Разрешены только защищённые ссылки", diff --git a/lib/l10n/ru.json b/lib/l10n/ru.json index a0120518dfa..206f7371472 100644 --- a/lib/l10n/ru.json +++ b/lib/l10n/ru.json @@ -47,6 +47,7 @@ "Can't read file" : "Не удается прочитать файл", "App directory already exists" : "Каталог приложения уже существует", "Can't create app folder. Please fix permissions. %s" : "Не удалось создать каталог. Исправьте права доступа. %s", + "Archive does not contain a directory named %s" : "Архив не содержит папки с именем %s", "No source specified when installing app" : "Не указан источник при установке приложения", "No href specified when installing app from http" : "Не указан атрибут href при установке приложения через http", "No path specified when installing app from local file" : "Не указан путь при установке приложения из локального файла", @@ -88,6 +89,7 @@ "Sharing %s failed, because the user %s does not exist" : "Не удалось поделиться %s, пользователь %s не существует.", "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Не удалось поделиться %s, пользователь %s не состоит в какой-либо группе в которой состоит %s", "Sharing %s failed, because this item is already shared with %s" : "Не удалось поделиться %s, пользователь %s уже имеет доступ к этому элементу", + "Sharing %s failed, because this item is already shared with user %s" : "Не удалось поделиться %s, так как элемент находится в общем доступе у %s", "Sharing %s failed, because the group %s does not exist" : "Не удалось поделиться %s, группа %s не существует", "Sharing %s failed, because %s is not a member of the group %s" : "Не удалось поделиться %s, пользователь %s не является членом группы %s", "You need to provide a password to create a public link, only protected links are allowed" : "Вам нужно задать пароль для создания публичной ссылки. Разрешены только защищённые ссылки", diff --git a/lib/private/activity/event.php b/lib/private/activity/event.php index 247113d54a9..413ff613186 100644 --- a/lib/private/activity/event.php +++ b/lib/private/activity/event.php @@ -1,6 +1,7 @@ <?php /** * @author Joas Schilling <nickvergessen@owncloud.com> + * @author Phil Davis <phil.davis@inf.org> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/activitymanager.php b/lib/private/activitymanager.php index 340f3d335e5..fadfedf277f 100644 --- a/lib/private/activitymanager.php +++ b/lib/private/activitymanager.php @@ -2,7 +2,6 @@ /** * @author Björn Schießle <schiessle@owncloud.com> * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Lukas Reschke <lukas@owncloud.com> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/api.php b/lib/private/api.php index 3c599de25a9..cd5148c51a1 100644 --- a/lib/private/api.php +++ b/lib/private/api.php @@ -1,4 +1,34 @@ <?php +/** + * @author Bart Visscher <bartv@thisnet.nl> + * @author Bernhard Posselt <dev@bernhard-posselt.com> + * @author Björn Schießle <schiessle@owncloud.com> + * @author Joas Schilling <nickvergessen@owncloud.com> + * @author Jörn Friedrich Dreyer <jfd@butonic.de> + * @author Lukas Reschke <lukas@owncloud.com> + * @author Michael Gapczynski <GapczynskiM@gmail.com> + * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin Appelman <icewind@owncloud.com> + * @author Thomas Müller <thomas.mueller@tmit.eu> + * @author Tom Needham <tom@owncloud.com> + * @author Vincent Petry <pvince81@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ use OCP\API; use OCP\AppFramework\Http; diff --git a/lib/private/app.php b/lib/private/app.php index 5122a4964d4..718adcd25c1 100644 --- a/lib/private/app.php +++ b/lib/private/app.php @@ -18,6 +18,7 @@ * @author Lukas Reschke <lukas@owncloud.com> * @author Markus Goetz <markus@woboq.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author RealRancor <Fisch.666@gmx.de> * @author Robin Appelman <icewind@owncloud.com> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Sam Tuke <mail@samtuke.com> diff --git a/lib/private/app/appmanager.php b/lib/private/app/appmanager.php index 75b1c0a7865..8fb197e73ff 100644 --- a/lib/private/app/appmanager.php +++ b/lib/private/app/appmanager.php @@ -4,6 +4,7 @@ * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/app/codechecker/nodevisitor.php b/lib/private/app/codechecker/nodevisitor.php index a22f852f36a..3295f354324 100644 --- a/lib/private/app/codechecker/nodevisitor.php +++ b/lib/private/app/codechecker/nodevisitor.php @@ -1,5 +1,6 @@ <?php /** + * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * diff --git a/lib/private/app/codechecker/privatecheck.php b/lib/private/app/codechecker/privatecheck.php index d6f4eb06981..bafcfd1d03e 100644 --- a/lib/private/app/codechecker/privatecheck.php +++ b/lib/private/app/codechecker/privatecheck.php @@ -1,8 +1,6 @@ <?php /** * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/app/codechecker/strongcomparisoncheck.php b/lib/private/app/codechecker/strongcomparisoncheck.php index 7de0fe3e5c3..3072027b258 100644 --- a/lib/private/app/codechecker/strongcomparisoncheck.php +++ b/lib/private/app/codechecker/strongcomparisoncheck.php @@ -1,8 +1,6 @@ <?php /** * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/app/dependencyanalyzer.php b/lib/private/app/dependencyanalyzer.php index dd40e4052a7..5d86368ea83 100644 --- a/lib/private/app/dependencyanalyzer.php +++ b/lib/private/app/dependencyanalyzer.php @@ -2,6 +2,7 @@ /** * @author Bernhard Posselt <dev@bernhard-posselt.com> * @author Joas Schilling <nickvergessen@owncloud.com> + * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * diff --git a/lib/private/appconfig.php b/lib/private/appconfig.php index cf2a057f224..d1c1e4bfc45 100644 --- a/lib/private/appconfig.php +++ b/lib/private/appconfig.php @@ -5,12 +5,10 @@ * @author Jakob Sack <mail@jakobsack.de> * @author Joas Schilling <nickvergessen@owncloud.com> * @author Jörn Friedrich Dreyer <jfd@butonic.de> - * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Scrutinizer Auto-Fixer <auto-fixer@scrutinizer-ci.com> - * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/appframework/dependencyinjection/dicontainer.php b/lib/private/appframework/dependencyinjection/dicontainer.php index 544da74a010..651b268a35e 100644 --- a/lib/private/appframework/dependencyinjection/dicontainer.php +++ b/lib/private/appframework/dependencyinjection/dicontainer.php @@ -5,6 +5,7 @@ * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Thomas Tanghus <thomas@tanghus.net> * @@ -78,7 +79,7 @@ class DIContainer extends SimpleContainer implements IAppContainer { }); $this->registerService('OCP\\AppFramework\\Http\\IOutput', function($c){ - return new Output(); + return new Output($this->getServer()->getWebRoot()); }); $this->registerService('OCP\\IAvatarManager', function($c) { diff --git a/lib/private/appframework/http.php b/lib/private/appframework/http.php index dee9818f4bc..f892ee7e5e3 100644 --- a/lib/private/appframework/http.php +++ b/lib/private/appframework/http.php @@ -3,6 +3,7 @@ * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Thomas Tanghus <thomas@tanghus.net> * diff --git a/lib/private/appframework/http/output.php b/lib/private/appframework/http/output.php index f04157665f8..01636d397b2 100644 --- a/lib/private/appframework/http/output.php +++ b/lib/private/appframework/http/output.php @@ -27,6 +27,15 @@ use OCP\AppFramework\Http\IOutput; * Very thin wrapper class to make output testable */ class Output implements IOutput { + /** @var string */ + private $webRoot; + + /** + * @param $webRoot + */ + public function __construct($webRoot) { + $this->webRoot = $webRoot; + } /** * @param string $out @@ -72,10 +81,11 @@ class Output implements IOutput { * @param string $path * @param string $domain * @param bool $secure - * @param bool $httponly + * @param bool $httpOnly */ - public function setCookie($name, $value, $expire, $path, $domain, $secure, $httponly) { - setcookie($name, $value, $expire, $path, $domain, $secure, $httponly); + public function setCookie($name, $value, $expire, $path, $domain, $secure, $httpOnly) { + $path = $this->webRoot ? : '/'; + setcookie($name, $value, $expire, $path, $domain, $secure, $httpOnly); } } diff --git a/lib/private/appframework/http/request.php b/lib/private/appframework/http/request.php index af6015b0eef..77785135162 100644 --- a/lib/private/appframework/http/request.php +++ b/lib/private/appframework/http/request.php @@ -6,10 +6,10 @@ * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Thomas Tanghus <thomas@tanghus.net> * @author Vincent Petry <pvince81@owncloud.com> - * @author Robin McCorkell <rmccorkell@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 @@ -43,6 +43,7 @@ use OCP\Security\ISecureRandom; class Request implements \ArrayAccess, \Countable, IRequest { const USER_AGENT_IE = '/MSIE/'; + const USER_AGENT_IE_8 = '/MSIE 8.0/'; // Android Chrome user agent: https://developers.google.com/chrome/mobile/docs/user-agent const USER_AGENT_ANDROID_MOBILE_CHROME = '#Android.*Chrome/[.0-9]*#'; const USER_AGENT_FREEBOX = '#^Mozilla/5\.0$#'; @@ -410,7 +411,9 @@ class Request implements \ArrayAccess, \Countable, IRequest { } } - $this->items['parameters'] = array_merge($this->items['parameters'], $params); + if (is_array($params)) { + $this->items['parameters'] = array_merge($this->items['parameters'], $params); + } $this->contentDecoded = true; } @@ -553,6 +556,27 @@ class Request implements \ArrayAccess, \Countable, IRequest { } /** + * Returns the used HTTP protocol. + * + * @return string HTTP protocol. HTTP/2, HTTP/1.1 or HTTP/1.0. + */ + public function getHttpProtocol() { + $claimedProtocol = strtoupper($this->server['SERVER_PROTOCOL']); + + $validProtocols = [ + 'HTTP/1.0', + 'HTTP/1.1', + 'HTTP/2', + ]; + + if(in_array($claimedProtocol, $validProtocols, true)) { + return $claimedProtocol; + } + + return 'HTTP/1.1'; + } + + /** * Returns the request uri, even if the website uses one or more * reverse proxies * @return string diff --git a/lib/private/appframework/middleware/security/corsmiddleware.php b/lib/private/appframework/middleware/security/corsmiddleware.php index d7c42cd9b13..74b0dd09974 100644 --- a/lib/private/appframework/middleware/security/corsmiddleware.php +++ b/lib/private/appframework/middleware/security/corsmiddleware.php @@ -1,8 +1,8 @@ <?php /** * @author Bernhard Posselt <dev@bernhard-posselt.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Lukas Reschke <lukas@owncloud.com> + * @author Morris Jobke <hey@morrisjobke.de> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/appframework/utility/simplecontainer.php b/lib/private/appframework/utility/simplecontainer.php index 3de6d9ba5bc..bcae351e023 100644 --- a/lib/private/appframework/utility/simplecontainer.php +++ b/lib/private/appframework/utility/simplecontainer.php @@ -2,9 +2,9 @@ /** * @author Bernhard Posselt <dev@bernhard-posselt.com> * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/backgroundjob/joblist.php b/lib/private/backgroundjob/joblist.php index deadadfb77e..03c9180ddb0 100644 --- a/lib/private/backgroundjob/joblist.php +++ b/lib/private/backgroundjob/joblist.php @@ -4,7 +4,6 @@ * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> - * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/cache/file.php b/lib/private/cache/file.php index a433b84d7bf..1cda05f28e5 100644 --- a/lib/private/cache/file.php +++ b/lib/private/cache/file.php @@ -1,8 +1,8 @@ <?php /** * @author Lukas Reschke <lukas@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> + * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/connector/sabre/auth.php b/lib/private/connector/sabre/auth.php index 8a6eaab5bf8..d33ffad7d5c 100644 --- a/lib/private/connector/sabre/auth.php +++ b/lib/private/connector/sabre/auth.php @@ -8,7 +8,6 @@ * @author Markus Goetz <markus@woboq.com> * @author Michael Gapczynski <GapczynskiM@gmail.com> * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> * diff --git a/lib/private/connector/sabre/copyetagheaderplugin.php b/lib/private/connector/sabre/copyetagheaderplugin.php index 863d4cf3e10..fe1a8fab70e 100644 --- a/lib/private/connector/sabre/copyetagheaderplugin.php +++ b/lib/private/connector/sabre/copyetagheaderplugin.php @@ -1,6 +1,5 @@ <?php /** - * @author Morris Jobke <hey@morrisjobke.de> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/connector/sabre/custompropertiesbackend.php b/lib/private/connector/sabre/custompropertiesbackend.php index 47f34909a08..a05de1adb35 100644 --- a/lib/private/connector/sabre/custompropertiesbackend.php +++ b/lib/private/connector/sabre/custompropertiesbackend.php @@ -1,7 +1,6 @@ <?php /** * @author Lukas Reschke <lukas@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> * diff --git a/lib/private/connector/sabre/exceptionloggerplugin.php b/lib/private/connector/sabre/exceptionloggerplugin.php index 53a1f738ea6..3f53431c8a1 100644 --- a/lib/private/connector/sabre/exceptionloggerplugin.php +++ b/lib/private/connector/sabre/exceptionloggerplugin.php @@ -1,6 +1,7 @@ <?php /** * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin Appelman <icewind@owncloud.com> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> * diff --git a/lib/private/connector/sabre/filesplugin.php b/lib/private/connector/sabre/filesplugin.php index 84620f454aa..ab7f6884a5e 100644 --- a/lib/private/connector/sabre/filesplugin.php +++ b/lib/private/connector/sabre/filesplugin.php @@ -64,10 +64,20 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin { private $isPublic; /** + * @var \OC\Files\View + */ + private $fileView; + + /** * @param \Sabre\DAV\Tree $tree + * @param \OC\Files\View $view + * @param bool $isPublic */ - public function __construct(\Sabre\DAV\Tree $tree, $isPublic = false) { + public function __construct(\Sabre\DAV\Tree $tree, + \OC\Files\View $view, + $isPublic = false) { $this->tree = $tree; + $this->fileView = $view; $this->isPublic = $isPublic; } @@ -106,6 +116,26 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin { fclose($body); } }); + $this->server->on('beforeMove', [$this, 'checkMove']); + } + + /** + * Plugin that checks if a move can actually be performed. + * @param string $source source path + * @param string $destination destination path + * @throws \Sabre\DAV\Exception\Forbidden + */ + function checkMove($source, $destination) { + list($sourceDir,) = \Sabre\HTTP\URLUtil::splitPath($source); + list($destinationDir,) = \Sabre\HTTP\URLUtil::splitPath($destination); + + if ($sourceDir !== $destinationDir) { + $sourceFileInfo = $this->fileView->getFileInfo($source); + + if (!$sourceFileInfo->isDeletable()) { + throw new \Sabre\DAV\Exception\Forbidden($source . " cannot be deleted"); + } + } } /** diff --git a/lib/private/connector/sabre/maintenanceplugin.php b/lib/private/connector/sabre/maintenanceplugin.php index f886332418a..4b7ff8a39da 100644 --- a/lib/private/connector/sabre/maintenanceplugin.php +++ b/lib/private/connector/sabre/maintenanceplugin.php @@ -1,6 +1,7 @@ <?php /** * @author Bart Visscher <bartv@thisnet.nl> + * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Thomas Müller <thomas.mueller@tmit.eu> diff --git a/lib/private/connector/sabre/serverfactory.php b/lib/private/connector/sabre/serverfactory.php index 54470b0b8aa..893e29fd41c 100644 --- a/lib/private/connector/sabre/serverfactory.php +++ b/lib/private/connector/sabre/serverfactory.php @@ -1,5 +1,6 @@ <?php /** + * @author Joas Schilling <nickvergessen@owncloud.com> * @author Robin Appelman <icewind@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. @@ -71,7 +72,6 @@ class ServerFactory { $server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend, $defaults->getName())); // FIXME: The following line is a workaround for legacy components relying on being able to send a GET to / $server->addPlugin(new \OC\Connector\Sabre\DummyGetResponsePlugin()); - $server->addPlugin(new \OC\Connector\Sabre\FilesPlugin($objectTree)); $server->addPlugin(new \OC\Connector\Sabre\ExceptionLoggerPlugin('webdav', $this->logger)); $server->addPlugin(new \OC\Connector\Sabre\LockPlugin($objectTree)); $server->addPlugin(new \OC\Connector\Sabre\ListenerPlugin($this->dispatcher)); @@ -90,6 +90,7 @@ class ServerFactory { } $objectTree->init($root, $view, $this->mountManager); + $server->addPlugin(new \OC\Connector\Sabre\FilesPlugin($objectTree, $view)); $server->addPlugin(new \OC\Connector\Sabre\QuotaPlugin($view)); if($this->userSession->isLoggedIn()) { diff --git a/lib/private/console/application.php b/lib/private/console/application.php index edfb45c8577..e7ddeed7d25 100644 --- a/lib/private/console/application.php +++ b/lib/private/console/application.php @@ -1,6 +1,7 @@ <?php /** * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/db/ocsqliteplatform.php b/lib/private/db/ocsqliteplatform.php index 543f58b90ec..2456d262fe3 100644 --- a/lib/private/db/ocsqliteplatform.php +++ b/lib/private/db/ocsqliteplatform.php @@ -1,6 +1,5 @@ <?php /** - * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/encryption/hookmanager.php b/lib/private/encryption/hookmanager.php index d096b7ff3ad..8969379c957 100644 --- a/lib/private/encryption/hookmanager.php +++ b/lib/private/encryption/hookmanager.php @@ -1,7 +1,6 @@ <?php /** * @author Björn Schießle <schiessle@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/encryption/keys/storage.php b/lib/private/encryption/keys/storage.php index d0c094538b0..e21fd62e366 100644 --- a/lib/private/encryption/keys/storage.php +++ b/lib/private/encryption/keys/storage.php @@ -2,7 +2,6 @@ /** * @author Björn Schießle <schiessle@owncloud.com> * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/encryption/manager.php b/lib/private/encryption/manager.php index c004dfda0d9..d38ec6684a6 100644 --- a/lib/private/encryption/manager.php +++ b/lib/private/encryption/manager.php @@ -3,7 +3,6 @@ * @author Björn Schießle <schiessle@owncloud.com> * @author Jan-Christoph Borchardt <hey@jancborchardt.net> * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/encryption/update.php b/lib/private/encryption/update.php index 125946ab266..64cccc16ed8 100644 --- a/lib/private/encryption/update.php +++ b/lib/private/encryption/update.php @@ -2,7 +2,6 @@ /** * @author Björn Schießle <schiessle@owncloud.com> * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/encryption/util.php b/lib/private/encryption/util.php index 90ae8259972..ef500883865 100644 --- a/lib/private/encryption/util.php +++ b/lib/private/encryption/util.php @@ -3,7 +3,6 @@ * @author Björn Schießle <schiessle@owncloud.com> * @author Jan-Christoph Borchardt <hey@jancborchardt.net> * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/eventsource.php b/lib/private/eventsource.php index e2be808e726..c076b87ddd9 100644 --- a/lib/private/eventsource.php +++ b/lib/private/eventsource.php @@ -2,6 +2,7 @@ /** * @author Bart Visscher <bartv@thisnet.nl> * @author Felix Moeller <mail@felixmoeller.de> + * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Thomas Müller <thomas.mueller@tmit.eu> diff --git a/lib/private/files.php b/lib/private/files.php index 86ebf40cc57..e24e10ec299 100644 --- a/lib/private/files.php +++ b/lib/private/files.php @@ -1,27 +1,22 @@ <?php /** - * @author Andreas Fischer <bantu@owncloud.com> * @author Arthur Schiwon <blizzz@owncloud.com> * @author Bart Visscher <bartv@thisnet.nl> * @author Björn Schießle <schiessle@owncloud.com> - * @author dratini0 <dratini0@gmail.com> * @author Frank Karlitschek <frank@owncloud.org> * @author Jakob Sack <mail@jakobsack.de> * @author Joas Schilling <nickvergessen@owncloud.com> * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@owncloud.com> * @author Michael Gapczynski <GapczynskiM@gmail.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author mvn23 <schopdiedwaas@gmail.com> * @author Nicolai Ehemann <en@enlightened.de> * @author Robin Appelman <icewind@owncloud.com> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Scrutinizer Auto-Fixer <auto-fixer@scrutinizer-ci.com> * @author Thibaut GRIDEL <tgridel@free.fr> * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Valerio Ponte <valerio.ponte@gmail.com> + * @author Victor Dubiniuk <dubiniuk@owncloud.com> * @author Vincent Petry <pvince81@owncloud.com> - * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 @@ -40,7 +35,7 @@ * */ -use OC\Lock\NoopLockingProvider; +use OC\Files\View; use OC\Streamer; use OCP\Lock\ILockingProvider; @@ -63,10 +58,11 @@ class OC_Files { OC_Response::setContentDispositionHeader($name, 'attachment'); header('Content-Transfer-Encoding: binary'); OC_Response::disableCaching(); - $filesize = \OC\Files\Filesystem::filesize($filename); - header('Content-Type: '.\OC_Helper::getSecureMimeType(\OC\Files\Filesystem::getMimeType($filename))); - if ($filesize > -1) { - OC_Response::setContentLengthHeader($filesize); + $fileSize = \OC\Files\Filesystem::filesize($filename); + $type = \OC::$server->getMimeTypeDetector()->getSecureMimeType(\OC\Files\Filesystem::getMimeType($filename)); + header('Content-Type: '.$type); + if ($fileSize > -1) { + OC_Response::setContentLengthHeader($fileSize); } } @@ -78,99 +74,78 @@ class OC_Files { * @param boolean $onlyHeader ; boolean to only send header of the request */ public static function get($dir, $files, $onlyHeader = false) { + $view = \OC\Files\Filesystem::getView(); + $getType = self::FILE; + $filename = $dir; + try { - if (is_array($files) && count($files) === 1) { - $files = $files[0]; - } + if (is_array($files) && count($files) === 1) { + $files = $files[0]; + } - if (is_array($files)) { - $getType = self::ZIP_FILES; - $basename = basename($dir); - if ($basename) { - $name = $basename; - } else { - $name = 'download'; + if (!is_array($files)) { + $filename = $dir . '/' . $files; + if (!$view->is_dir($files)) { + self::getSingleFile($view, $dir, $files, $onlyHeader); + return; + } } - $filename = $dir . '/' . $name; - } else { - $filename = $dir . '/' . $files; - if (\OC\Files\Filesystem::is_dir($dir . '/' . $files)) { + $name = 'download'; + if (is_array($files)) { + $getType = self::ZIP_FILES; + $basename = basename($dir); + if ($basename) { + $name = $basename; + } + + $filename = $dir . '/' . $name; + } else { + $filename = $dir . '/' . $files; $getType = self::ZIP_DIR; // downloading root ? - if ($files === '') { - $name = 'download'; - } else { + if ($files !== '') { $name = $files; } - - } else { - $getType = self::FILE; - $name = $files; } - } - if ($getType === self::FILE) { - $streamer = false; - } else { $streamer = new Streamer(); - } - OC_Util::obEnd(); + OC_Util::obEnd(); - try { - if ($getType === self::FILE) { - $view->lockFile($filename, ILockingProvider::LOCK_SHARED); - } - - if ($streamer) { - $streamer->sendHeaders($name); - } elseif (\OC\Files\Filesystem::isReadable($filename)) { - self::sendHeaders($filename, $name); - } elseif (!\OC\Files\Filesystem::file_exists($filename)) { - header("HTTP/1.0 404 Not Found"); - $tmpl = new OC_Template('', '404', 'guest'); - $tmpl->printPage(); - exit(); - } else { - header("HTTP/1.0 403 Forbidden"); - die('403 Forbidden'); - } - if ($onlyHeader) { - return; - } - if ($streamer) { - $executionTime = intval(ini_get('max_execution_time')); - set_time_limit(0); - if ($getType === self::ZIP_FILES) { - foreach ($files as $file) { - $file = $dir . '/' . $file; - if (\OC\Files\Filesystem::is_file($file)) { - $fileSize = \OC\Files\Filesystem::filesize($file); - $fh = \OC\Files\Filesystem::fopen($file, 'r'); - $streamer->addFileFromStream($fh, basename($file), $fileSize); - fclose($fh); - } elseif (\OC\Files\Filesystem::is_dir($file)) { - $streamer->addDirRecursive($file); - } + self::lockFiles($view, $dir, $files); + + $streamer->sendHeaders($name); + $executionTime = intval(ini_get('max_execution_time')); + set_time_limit(0); + if ($getType === self::ZIP_FILES) { + foreach ($files as $file) { + $file = $dir . '/' . $file; + if (\OC\Files\Filesystem::is_file($file)) { + $fileSize = \OC\Files\Filesystem::filesize($file); + $fh = \OC\Files\Filesystem::fopen($file, 'r'); + $streamer->addFileFromStream($fh, basename($file), $fileSize); + fclose($fh); + } elseif (\OC\Files\Filesystem::is_dir($file)) { + $streamer->addDirRecursive($file); } - } elseif ($getType === self::ZIP_DIR) { - $file = $dir . '/' . $files; - $streamer->addDirRecursive($file); } - $streamer->finalize(); - set_time_limit($executionTime); - } else { - \OC\Files\Filesystem::readfile($filename); - } - if ($getType === self::FILE) { - $view->unlockFile($filename, ILockingProvider::LOCK_SHARED); + } elseif ($getType === self::ZIP_DIR) { + $file = $dir . '/' . $files; + $streamer->addDirRecursive($file); } + $streamer->finalize(); + set_time_limit($executionTime); + self::unlockAllTheFiles($dir, $files, $getType, $view, $filename); } catch (\OCP\Lock\LockedException $ex) { + self::unlockAllTheFiles($dir, $files, $getType, $view, $filename); + OC::$server->getLogger()->logException($ex); $l = \OC::$server->getL10N('core'); $hint = method_exists($ex, 'getHint') ? $ex->getHint() : ''; \OC_Template::printErrorPage($l->t('File is currently busy, please try again later'), $hint); } catch (\Exception $ex) { + self::unlockAllTheFiles($dir, $files, $getType, $view, $filename); + OC::$server->getLogger()->logException($ex); $l = \OC::$server->getL10N('core'); $hint = method_exists($ex, 'getHint') ? $ex->getHint() : ''; \OC_Template::printErrorPage($l->t('Can\'t read file'), $hint); @@ -178,6 +153,56 @@ class OC_Files { } /** + * @param View $view + * @param string $name + */ + private static function getSingleFile($view, $dir, $name, $onlyHeader) { + $filename = $dir . '/' . $name; + OC_Util::obEnd(); + $view->lockFile($filename, ILockingProvider::LOCK_SHARED); + + if (\OC\Files\Filesystem::isReadable($filename)) { + self::sendHeaders($filename, $name); + } elseif (!\OC\Files\Filesystem::file_exists($filename)) { + header("HTTP/1.0 404 Not Found"); + $tmpl = new OC_Template('', '404', 'guest'); + $tmpl->printPage(); + exit(); + } else { + header("HTTP/1.0 403 Forbidden"); + die('403 Forbidden'); + } + if ($onlyHeader) { + return; + } + $view->readfile($filename); + } + + /** + * @param View $view + * @param $dir + * @param string[]|string $files + */ + public static function lockFiles($view, $dir, $files) { + if (!is_array($files)) { + $file = $dir . '/' . $files; + $files = [$file]; + } + foreach ($files as $file) { + $file = $dir . '/' . $file; + $view->lockFile($file, ILockingProvider::LOCK_SHARED); + if ($view->is_dir($file)) { + $contents = $view->getDirectoryContent($file); + $contents = array_map(function($fileInfo) use ($file) { + /** @var \OCP\Files\FileInfo $fileInfo */ + return $file . '/' . $fileInfo->getName(); + }, $contents); + self::lockFiles($view, $dir, $contents); + } + } + } + + /** * set the maximum upload size limit for apache hosts using .htaccess * * @param int $size file size in bytes @@ -258,4 +283,28 @@ class OC_Files { } return false; } + + /** + * @param $dir + * @param $files + * @param $getType + * @param View $view + * @param $filename + */ + private static function unlockAllTheFiles($dir, $files, $getType, $view, $filename) { + if ($getType === self::FILE) { + $view->unlockFile($filename, ILockingProvider::LOCK_SHARED); + } + if ($getType === self::ZIP_FILES) { + foreach ($files as $file) { + $file = $dir . '/' . $file; + $view->unlockFile($file, ILockingProvider::LOCK_SHARED); + } + } + if ($getType === self::ZIP_DIR) { + $file = $dir . '/' . $files; + $view->unlockFile($file, ILockingProvider::LOCK_SHARED); + } + } + } diff --git a/lib/private/files/cache/cache.php b/lib/private/files/cache/cache.php index 5c04da1f0d5..f3e22701f40 100644 --- a/lib/private/files/cache/cache.php +++ b/lib/private/files/cache/cache.php @@ -13,7 +13,6 @@ * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author TheSFReader <TheSFReader@gmail.com> * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Victor Dubiniuk <dubiniuk@owncloud.com> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/files/cache/scanner.php b/lib/private/files/cache/scanner.php index bfdab16b645..dbffba1e306 100644 --- a/lib/private/files/cache/scanner.php +++ b/lib/private/files/cache/scanner.php @@ -6,6 +6,7 @@ * @author Martin Mattel <martin.mattel@diemattels.at> * @author Michael Gapczynski <GapczynskiM@gmail.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Olivier Paroz <github@oparoz.com> * @author Owen Winkler <a_github@midnightcircus.com> * @author Robin Appelman <icewind@owncloud.com> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> diff --git a/lib/private/files/cache/storage.php b/lib/private/files/cache/storage.php index 88ceb287fb9..cee69194095 100644 --- a/lib/private/files/cache/storage.php +++ b/lib/private/files/cache/storage.php @@ -4,6 +4,7 @@ * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> * diff --git a/lib/private/files/fileinfo.php b/lib/private/files/fileinfo.php index b333844f8c8..cf9524241dd 100644 --- a/lib/private/files/fileinfo.php +++ b/lib/private/files/fileinfo.php @@ -6,6 +6,7 @@ * @author Robin Appelman <icewind@owncloud.com> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Scrutinizer Auto-Fixer <auto-fixer@scrutinizer-ci.com> + * @author tbartenstein <tbartenstein@users.noreply.github.com> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/files/mount/mountpoint.php b/lib/private/files/mount/mountpoint.php index 2871bbd9083..fad8678aae1 100644 --- a/lib/private/files/mount/mountpoint.php +++ b/lib/private/files/mount/mountpoint.php @@ -5,6 +5,7 @@ * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> + * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/files/node/folder.php b/lib/private/files/node/folder.php index 23004fc3527..9032c2bfb9d 100644 --- a/lib/private/files/node/folder.php +++ b/lib/private/files/node/folder.php @@ -215,7 +215,10 @@ class Folder extends Node implements \OCP\Files\Folder { * @var \OC\Files\Storage\Storage $storage */ list($storage, $internalPath) = $this->view->resolvePath($this->path); - $internalPath = rtrim($internalPath, '/') . '/'; + $internalPath = rtrim($internalPath, '/'); + if ($internalPath !== '') { + $internalPath = $internalPath . '/'; + } $internalRootLength = strlen($internalPath); $cache = $storage->getCache(''); diff --git a/lib/private/files/objectstore/objectstorestorage.php b/lib/private/files/objectstore/objectstorestorage.php index a85553186ae..40d52feb893 100644 --- a/lib/private/files/objectstore/objectstorestorage.php +++ b/lib/private/files/objectstore/objectstorestorage.php @@ -62,41 +62,44 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common { public function mkdir($path) { $path = $this->normalizePath($path); - if ($this->is_dir($path)) { + if ($this->file_exists($path)) { return false; } - $dirName = $this->normalizePath(dirname($path)); - $parentExists = $this->is_dir($dirName); - $mTime = time(); - - $data = array( + $data = [ 'mimetype' => 'httpd/unix-directory', 'size' => 0, 'mtime' => $mTime, 'storage_mtime' => $mTime, 'permissions' => \OCP\Constants::PERMISSION_ALL, - ); - - if ($dirName === '' && !$parentExists) { + ]; + if ($path === '') { //create root on the fly $data['etag'] = $this->getETag(''); $this->getCache()->put('', $data); - $parentExists = true; - - // we are done when the root folder was meant to be created - if ($dirName === $path) { - return true; + return true; + } else { + // if parent does not exist, create it + $parent = $this->normalizePath(dirname($path)); + $parentType = $this->filetype($parent); + if ($parentType === false) { + if (!$this->mkdir($parent)) { + // something went wrong + return false; + } + } else if ($parentType === 'file') { + // parent is a file + return false; } - } - - if ($parentExists) { + // finally create the new dir + $mTime = time(); // update mtime + $data['mtime'] = $mTime; + $data['storage_mtime'] = $mTime; $data['etag'] = $this->getETag($path); $this->getCache()->put($path, $data); return true; } - return false; } /** diff --git a/lib/private/files/storage/common.php b/lib/private/files/storage/common.php index 2d579fa2b60..d9fee48bedb 100644 --- a/lib/private/files/storage/common.php +++ b/lib/private/files/storage/common.php @@ -7,6 +7,7 @@ * @author Joas Schilling <nickvergessen@owncloud.com> * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@owncloud.com> + * @author Martin Mattel <martin.mattel@diemattels.at> * @author Michael Gapczynski <GapczynskiM@gmail.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> diff --git a/lib/private/files/storage/dav.php b/lib/private/files/storage/dav.php index 171afd649c6..dcde7b8029b 100644 --- a/lib/private/files/storage/dav.php +++ b/lib/private/files/storage/dav.php @@ -1,6 +1,5 @@ <?php /** - * @author Alexander Bogdanov <syn@li.ru> * @author Bart Visscher <bartv@thisnet.nl> * @author Björn Schießle <schiessle@owncloud.com> * @author Carlos Cerrillo <ccerrillo@gmail.com> @@ -9,7 +8,6 @@ * @author Lukas Reschke <lukas@owncloud.com> * @author Michael Gapczynski <GapczynskiM@gmail.com> * @author Morris Jobke <hey@morrisjobke.de> - * @author Philippe Kueck <pk@plusline.de> * @author Philipp Kapfer <philipp.kapfer@gmx.at> * @author Robin Appelman <icewind@owncloud.com> * @author Scrutinizer Auto-Fixer <auto-fixer@scrutinizer-ci.com> diff --git a/lib/private/files/storage/flysystem.php b/lib/private/files/storage/flysystem.php index 6d8dee10622..3ad2b8adc4c 100644 --- a/lib/private/files/storage/flysystem.php +++ b/lib/private/files/storage/flysystem.php @@ -1,9 +1,22 @@ <?php /** - * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. + * @author Robin Appelman <icewind@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * */ namespace OC\Files\Storage; diff --git a/lib/private/files/storage/local.php b/lib/private/files/storage/local.php index 4b6b08a16fd..2b2a433c013 100644 --- a/lib/private/files/storage/local.php +++ b/lib/private/files/storage/local.php @@ -1,17 +1,14 @@ <?php /** - * @author Andreas Fischer <bantu@owncloud.com> * @author Bart Visscher <bartv@thisnet.nl> * @author Brice Maron <brice@bmaron.net> * @author Jakob Sack <mail@jakobsack.de> * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Klaas Freitag <freitag@owncloud.com> - * @author Lukas Reschke <lukas@owncloud.com> + * @author Martin Mattel <martin.mattel@diemattels.at> * @author Michael Gapczynski <GapczynskiM@gmail.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> - * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Sjors van der Pluijm <sjors@desjors.nl> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Tigran Mkrtchyan <tigran.mkrtchyan@desy.de> diff --git a/lib/private/files/storage/localtempfiletrait.php b/lib/private/files/storage/localtempfiletrait.php index 86c8b5c8377..84331f49b19 100644 --- a/lib/private/files/storage/localtempfiletrait.php +++ b/lib/private/files/storage/localtempfiletrait.php @@ -1,7 +1,6 @@ <?php /** * @author Lukas Reschke <lukas@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/files/storage/polyfill/copydirectory.php b/lib/private/files/storage/polyfill/copydirectory.php index 73c6d3d5436..df4f5c27dcf 100644 --- a/lib/private/files/storage/polyfill/copydirectory.php +++ b/lib/private/files/storage/polyfill/copydirectory.php @@ -1,9 +1,23 @@ <?php /** - * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. + * @author Martin Mattel <martin.mattel@diemattels.at> + * @author Robin Appelman <icewind@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * */ namespace OC\Files\Storage\PolyFill; diff --git a/lib/private/files/storage/temporary.php b/lib/private/files/storage/temporary.php index ca348313e45..c8b99a55637 100644 --- a/lib/private/files/storage/temporary.php +++ b/lib/private/files/storage/temporary.php @@ -3,6 +3,7 @@ * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Thomas Müller <thomas.mueller@tmit.eu> + * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/files/storage/wrapper/encryption.php b/lib/private/files/storage/wrapper/encryption.php index e9aabe2e5a2..d6b7f53408f 100644 --- a/lib/private/files/storage/wrapper/encryption.php +++ b/lib/private/files/storage/wrapper/encryption.php @@ -3,7 +3,6 @@ * @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 Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/files/storage/wrapper/permissionsmask.php b/lib/private/files/storage/wrapper/permissionsmask.php index 8d40d023630..e1822905692 100644 --- a/lib/private/files/storage/wrapper/permissionsmask.php +++ b/lib/private/files/storage/wrapper/permissionsmask.php @@ -1,7 +1,9 @@ <?php /** + * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/files/storage/wrapper/wrapper.php b/lib/private/files/storage/wrapper/wrapper.php index b43dd4fe142..048738170db 100644 --- a/lib/private/files/storage/wrapper/wrapper.php +++ b/lib/private/files/storage/wrapper/wrapper.php @@ -2,6 +2,7 @@ /** * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> * diff --git a/lib/private/files/stream/encryption.php b/lib/private/files/stream/encryption.php index 1cef37baf9f..e0d263d80b1 100644 --- a/lib/private/files/stream/encryption.php +++ b/lib/private/files/stream/encryption.php @@ -2,7 +2,6 @@ /** * @author Björn Schießle <schiessle@owncloud.com> * @author jknockaert <jasper@knockaert.nl> - * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> * diff --git a/lib/private/files/type/detection.php b/lib/private/files/type/detection.php index dc8aff2f30c..fd27d88eae6 100644 --- a/lib/private/files/type/detection.php +++ b/lib/private/files/type/detection.php @@ -2,11 +2,12 @@ /** * @author Andreas Fischer <bantu@owncloud.com> * @author Jens-Christian Fischer <jens-christian.fischer@switch.ch> + * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Thomas Tanghus <thomas@tanghus.net> - * @author Robin McCorkell <rmccorkell@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/files/type/loader.php b/lib/private/files/type/loader.php index 78bfcf60bff..55dc09ab9b8 100644 --- a/lib/private/files/type/loader.php +++ b/lib/private/files/type/loader.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/files/utils/scanner.php b/lib/private/files/utils/scanner.php index 558a1fba028..460c8007bf4 100644 --- a/lib/private/files/utils/scanner.php +++ b/lib/private/files/utils/scanner.php @@ -2,6 +2,7 @@ /** * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Morris Jobke <hey@morrisjobke.de> + * @author Olivier Paroz <github@oparoz.com> * @author Robin Appelman <icewind@owncloud.com> * @author Scrutinizer Auto-Fixer <auto-fixer@scrutinizer-ci.com> * @author Thomas Müller <thomas.mueller@tmit.eu> @@ -30,6 +31,7 @@ use OC\Files\Cache\ChangePropagator; use OC\Files\Filesystem; use OC\ForbiddenException; use OC\Hooks\PublicEmitter; +use OC\Lock\DBLockingProvider; /** * Class Scanner @@ -155,9 +157,14 @@ class Scanner extends PublicEmitter { $scanner = $storage->getScanner(); $scanner->setUseTransactions(false); $this->attachListener($mount); - $this->db->beginTransaction(); + $isDbLocking = \OC::$server->getLockingProvider() instanceof DBLockingProvider; + if (!$isDbLocking) { + $this->db->beginTransaction(); + } $scanner->scan($relativePath, \OC\Files\Cache\Scanner::SCAN_RECURSIVE, \OC\Files\Cache\Scanner::REUSE_ETAG | \OC\Files\Cache\Scanner::REUSE_SIZE); - $this->db->commit(); + if (!$isDbLocking) { + $this->db->commit(); + } } $this->propagator->propagateChanges(time()); } diff --git a/lib/private/files/view.php b/lib/private/files/view.php index c8dbc001f2d..1353fac51ff 100644 --- a/lib/private/files/view.php +++ b/lib/private/files/view.php @@ -11,6 +11,7 @@ * @author Klaas Freitag <freitag@owncloud.com> * @author Lukas Reschke <lukas@owncloud.com> * @author Luke Policinski <lpolicinski@gmail.com> + * @author Martin Mattel <martin.mattel@diemattels.at> * @author Michael Gapczynski <GapczynskiM@gmail.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> diff --git a/lib/private/helper.php b/lib/private/helper.php index 973960ca7a5..ac91164dfb0 100644 --- a/lib/private/helper.php +++ b/lib/private/helper.php @@ -16,6 +16,7 @@ * @author Lukas Reschke <lukas@owncloud.com> * @author Michael Gapczynski <GapczynskiM@gmail.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Nicolas Grekas <nicolas.grekas@gmail.com> * @author Olivier Paroz <github@oparoz.com> * @author Owen Winkler <a_github@midnightcircus.com> * @author Pellaeon Lin <nfsmwlin@gmail.com> diff --git a/lib/private/http/client/client.php b/lib/private/http/client/client.php index 1907937e55e..5f298e1acd7 100644 --- a/lib/private/http/client/client.php +++ b/lib/private/http/client/client.php @@ -1,6 +1,7 @@ <?php /** * @author Lukas Reschke <lukas@owncloud.com> + * @author Robin Appelman <icewind@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/http/client/response.php b/lib/private/http/client/response.php index 558482491d1..b3429f36d04 100644 --- a/lib/private/http/client/response.php +++ b/lib/private/http/client/response.php @@ -1,6 +1,7 @@ <?php /** * @author Lukas Reschke <lukas@owncloud.com> + * @author Robin Appelman <icewind@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/installer.php b/lib/private/installer.php index 392dc1c0817..861ce6ea41b 100644 --- a/lib/private/installer.php +++ b/lib/private/installer.php @@ -12,6 +12,7 @@ * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Kamil Domanski <kdomanski@kdemail.net> * @author Lukas Reschke <lukas@owncloud.com> + * @author michag86 <micha_g@arcor.de> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> diff --git a/lib/private/l10n.php b/lib/private/l10n.php index b3c87292f1d..5816e20b104 100644 --- a/lib/private/l10n.php +++ b/lib/private/l10n.php @@ -4,7 +4,6 @@ * @author Andreas Fischer <bantu@owncloud.com> * @author Bart Visscher <bartv@thisnet.nl> * @author Bernhard Posselt <dev@bernhard-posselt.com> - * @author Christopher Schäpers <kondou@ts.unde.re> * @author Felix Moeller <mail@felixmoeller.de> * @author Jakob Sack <mail@jakobsack.de> * @author Jan-Christoph Borchardt <hey@jancborchardt.net> diff --git a/lib/private/l10n/factory.php b/lib/private/l10n/factory.php index a9ac4da42a2..b92c21b2d5d 100644 --- a/lib/private/l10n/factory.php +++ b/lib/private/l10n/factory.php @@ -1,10 +1,10 @@ <?php /** * @author Bart Visscher <bartv@thisnet.nl> + * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> - * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/lock/dblockingprovider.php b/lib/private/lock/dblockingprovider.php index 8f017a713c1..1e93a6cec6c 100644 --- a/lib/private/lock/dblockingprovider.php +++ b/lib/private/lock/dblockingprovider.php @@ -1,5 +1,6 @@ <?php /** + * @author Individual IT Services <info@individual-it.net> * @author Robin Appelman <icewind@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. @@ -184,6 +185,13 @@ class DBLockingProvider extends AbstractLockingProvider { } public function __destruct() { - $this->cleanEmptyLocks(); + try { + $this->cleanEmptyLocks(); + } catch (\PDOException $e) { + // If the table is missing, the clean up was successful + if ($this->connection->tableExists('file_locks')) { + throw $e; + } + } } } diff --git a/lib/private/lock/memcachelockingprovider.php b/lib/private/lock/memcachelockingprovider.php index 871572f7e3e..e4158dcdfdf 100644 --- a/lib/private/lock/memcachelockingprovider.php +++ b/lib/private/lock/memcachelockingprovider.php @@ -1,8 +1,6 @@ <?php /** - * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> - * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/lock/nooplockingprovider.php b/lib/private/lock/nooplockingprovider.php index a8571f2aec4..9f88e6148f8 100644 --- a/lib/private/lock/nooplockingprovider.php +++ b/lib/private/lock/nooplockingprovider.php @@ -1,6 +1,5 @@ <?php /** - * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Vincent Petry <pvince81@owncloud.com> * diff --git a/lib/private/log.php b/lib/private/log.php index 4a0a34b7113..ee5d61e98df 100644 --- a/lib/private/log.php +++ b/lib/private/log.php @@ -3,7 +3,7 @@ * @author Bart Visscher <bartv@thisnet.nl> * @author Bernhard Posselt <dev@bernhard-posselt.com> * @author Morris Jobke <hey@morrisjobke.de> - * @author Olivier Paroz <owncloud@oparoz.com> + * @author Olivier Paroz <github@oparoz.com> * @author Robin Appelman <icewind@owncloud.com> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Victor Dubiniuk <dubiniuk@owncloud.com> diff --git a/lib/private/log/rotate.php b/lib/private/log/rotate.php index 4572a9904d2..27731c07db2 100644 --- a/lib/private/log/rotate.php +++ b/lib/private/log/rotate.php @@ -2,6 +2,7 @@ /** * @author Bart Visscher <bartv@thisnet.nl> * @author Morris Jobke <hey@morrisjobke.de> + * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/memcache/memcached.php b/lib/private/memcache/memcached.php index e99303ecc15..ce7c6fa9577 100644 --- a/lib/private/memcache/memcached.php +++ b/lib/private/memcache/memcached.php @@ -4,6 +4,7 @@ * @author Bart Visscher <bartv@thisnet.nl> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/naturalsort.php b/lib/private/naturalsort.php index 26b9cec6cf1..2071ede43e0 100644 --- a/lib/private/naturalsort.php +++ b/lib/private/naturalsort.php @@ -4,6 +4,7 @@ * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> + * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/ocs.php b/lib/private/ocs.php index c5133bf9ee8..7b474fa439f 100644 --- a/lib/private/ocs.php +++ b/lib/private/ocs.php @@ -1,15 +1,10 @@ <?php /** * @author Bart Visscher <bartv@thisnet.nl> - * @author Bernhard Posselt <dev@bernhard-posselt.com> * @author Frank Karlitschek <frank@owncloud.org> - * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> - * @author Robin McCorkell <rmccorkell@karoshi.org.uk> - * @author Scrutinizer Auto-Fixer <auto-fixer@scrutinizer-ci.com> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/ocs/privatedata.php b/lib/private/ocs/privatedata.php index 249c17b3792..92f029aa12a 100644 --- a/lib/private/ocs/privatedata.php +++ b/lib/private/ocs/privatedata.php @@ -3,6 +3,7 @@ * @author Andreas Fischer <bantu@owncloud.com> * @author Bart Visscher <bartv@thisnet.nl> * @author Frank Karlitschek <frank@owncloud.org> + * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Tom Needham <tom@owncloud.com> diff --git a/lib/private/ocs/result.php b/lib/private/ocs/result.php index 42b6166b823..916e25e45ae 100644 --- a/lib/private/ocs/result.php +++ b/lib/private/ocs/result.php @@ -6,6 +6,7 @@ * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> + * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Tom Needham <tom@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/ocsclient.php b/lib/private/ocsclient.php index 78df3b79bb6..e2973f82605 100644 --- a/lib/private/ocsclient.php +++ b/lib/private/ocsclient.php @@ -4,10 +4,10 @@ * @author Brice Maron <brice@bmaron.net> * @author Felix Moeller <mail@felixmoeller.de> * @author Frank Karlitschek <frank@owncloud.org> + * @author Joas Schilling <nickvergessen@owncloud.com> * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Kamil Domanski <kdomanski@kdemail.net> * @author Lukas Reschke <lukas@owncloud.com> - * @author Martin Mattel <martin.mattel@diemattels.at> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Sam Tuke <mail@samtuke.com> @@ -68,7 +68,13 @@ class OCSClient { * @return bool */ public function isAppStoreEnabled() { - return $this->config->getSystemValue('appstoreenabled', true) === true; + // For a regular edition default to true, all others default to false + $default = false; + if (\OC_Util::getEditionString() === '') { + $default = true; + } + + return $this->config->getSystemValue('appstoreenabled', $default) === true; } /** diff --git a/lib/private/preview/bitmap.php b/lib/private/preview/bitmap.php index 065425c9a1d..ad0ef000510 100644 --- a/lib/private/preview/bitmap.php +++ b/lib/private/preview/bitmap.php @@ -3,6 +3,7 @@ * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Olivier Paroz <github@oparoz.com> + * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/preview/bmp.php b/lib/private/preview/bmp.php index 2a24a783d52..36439626f08 100644 --- a/lib/private/preview/bmp.php +++ b/lib/private/preview/bmp.php @@ -1,6 +1,5 @@ <?php /** - * @author Morris Jobke <hey@morrisjobke.de> * @author Olivier Paroz <github@oparoz.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/preview/gif.php b/lib/private/preview/gif.php index 08f6c41d98c..a3b57484999 100644 --- a/lib/private/preview/gif.php +++ b/lib/private/preview/gif.php @@ -1,6 +1,5 @@ <?php /** - * @author Morris Jobke <hey@morrisjobke.de> * @author Olivier Paroz <github@oparoz.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/preview/image.php b/lib/private/preview/image.php index fd90b15eb0c..9287d9c888b 100644 --- a/lib/private/preview/image.php +++ b/lib/private/preview/image.php @@ -2,8 +2,8 @@ /** * @author Georg Ehrke <georg@owncloud.com> * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Olivier Paroz <github@oparoz.com> + * @author Robin Appelman <icewind@owncloud.com> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Thomas Tanghus <thomas@tanghus.net> * diff --git a/lib/private/preview/jpeg.php b/lib/private/preview/jpeg.php index 86e447d3406..96f89f4d57e 100644 --- a/lib/private/preview/jpeg.php +++ b/lib/private/preview/jpeg.php @@ -1,6 +1,5 @@ <?php /** - * @author Morris Jobke <hey@morrisjobke.de> * @author Olivier Paroz <github@oparoz.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/preview/movie.php b/lib/private/preview/movie.php index a687fefff65..f71eaaf3eb2 100644 --- a/lib/private/preview/movie.php +++ b/lib/private/preview/movie.php @@ -2,7 +2,6 @@ /** * @author Georg Ehrke <georg@owncloud.com> * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Olivier Paroz <github@oparoz.com> * @author Thomas Müller <thomas.mueller@tmit.eu> * diff --git a/lib/private/preview/mp3.php b/lib/private/preview/mp3.php index 25fe6566e44..ffe596db71b 100644 --- a/lib/private/preview/mp3.php +++ b/lib/private/preview/mp3.php @@ -2,7 +2,6 @@ /** * @author Georg Ehrke <georg@owncloud.com> * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Olivier Paroz <github@oparoz.com> * @author Thomas Tanghus <thomas@tanghus.net> * diff --git a/lib/private/preview/office.php b/lib/private/preview/office.php index ac6b4afa0cc..415220ed4af 100644 --- a/lib/private/preview/office.php +++ b/lib/private/preview/office.php @@ -1,8 +1,9 @@ <?php /** * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Olivier Paroz <github@oparoz.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> + * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/preview/png.php b/lib/private/preview/png.php index a6755671326..bab63c16ada 100644 --- a/lib/private/preview/png.php +++ b/lib/private/preview/png.php @@ -1,6 +1,5 @@ <?php /** - * @author Morris Jobke <hey@morrisjobke.de> * @author Olivier Paroz <github@oparoz.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/preview/provider.php b/lib/private/preview/provider.php index d9b80939246..8f4a9f9fc3f 100644 --- a/lib/private/preview/provider.php +++ b/lib/private/preview/provider.php @@ -3,7 +3,6 @@ * @author Georg Ehrke <georg@owncloud.com> * @author Joas Schilling <nickvergessen@owncloud.com> * @author Jörn Friedrich Dreyer <jfd@butonic.de> - * @author Morris Jobke <hey@morrisjobke.de> * @author Olivier Paroz <github@oparoz.com> * @author Robin Appelman <icewind@owncloud.com> * diff --git a/lib/private/preview/svg.php b/lib/private/preview/svg.php index f8318e9a69a..26ce0fa9411 100644 --- a/lib/private/preview/svg.php +++ b/lib/private/preview/svg.php @@ -2,8 +2,8 @@ /** * @author Georg Ehrke <georg@owncloud.com> * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Olivier Paroz <github@oparoz.com> + * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/preview/txt.php b/lib/private/preview/txt.php index 2fdc86d9546..b6c21b7c1b1 100644 --- a/lib/private/preview/txt.php +++ b/lib/private/preview/txt.php @@ -2,6 +2,7 @@ /** * @author Georg Ehrke <georg@owncloud.com> * @author Joas Schilling <nickvergessen@owncloud.com> + * @author Morris Jobke <hey@morrisjobke.de> * @author Nmz <nemesiz@nmz.lt> * @author Robin Appelman <icewind@owncloud.com> * @author Thomas Müller <thomas.mueller@tmit.eu> diff --git a/lib/private/preview/xbitmap.php b/lib/private/preview/xbitmap.php index 8001f21684a..7887f2b73f5 100644 --- a/lib/private/preview/xbitmap.php +++ b/lib/private/preview/xbitmap.php @@ -1,6 +1,5 @@ <?php /** - * @author Morris Jobke <hey@morrisjobke.de> * @author Olivier Paroz <github@oparoz.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/private/route/router.php b/lib/private/route/router.php index 7b7849a6da0..f4abfae0f43 100644 --- a/lib/private/route/router.php +++ b/lib/private/route/router.php @@ -7,6 +7,7 @@ * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> * diff --git a/lib/private/security/crypto.php b/lib/private/security/crypto.php index 9bae1d6992c..0bd34df3f36 100644 --- a/lib/private/security/crypto.php +++ b/lib/private/security/crypto.php @@ -1,5 +1,6 @@ <?php /** + * @author Andreas Fischer <bantu@owncloud.com> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * diff --git a/lib/private/server.php b/lib/private/server.php index 9055f092800..14fa323f74d 100644 --- a/lib/private/server.php +++ b/lib/private/server.php @@ -6,6 +6,7 @@ * @author Bernhard Reiter <ockham@raz.or.at> * @author Björn Schießle <schiessle@owncloud.com> * @author Christopher Schäpers <kondou@ts.unde.re> + * @author Individual IT Services <info@individual-it.net> * @author Joas Schilling <nickvergessen@owncloud.com> * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@owncloud.com> diff --git a/lib/private/session/cryptosessiondata.php b/lib/private/session/cryptosessiondata.php index 6826ede5e33..dcae1648fe1 100644 --- a/lib/private/session/cryptosessiondata.php +++ b/lib/private/session/cryptosessiondata.php @@ -1,6 +1,7 @@ <?php /** * @author Joas Schilling <nickvergessen@owncloud.com> + * @author Lukas Reschke <lukas@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/session/cryptowrapper.php b/lib/private/session/cryptowrapper.php index 70c1dab7404..c79778587e0 100644 --- a/lib/private/session/cryptowrapper.php +++ b/lib/private/session/cryptowrapper.php @@ -1,6 +1,8 @@ <?php /** * @author Joas Schilling <nickvergessen@owncloud.com> + * @author Lukas Reschke <lukas@owncloud.com> + * @author Phil Davis <phil.davis@inf.org> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/session/internal.php b/lib/private/session/internal.php index e10999ec48f..01d4569fd81 100644 --- a/lib/private/session/internal.php +++ b/lib/private/session/internal.php @@ -1,7 +1,9 @@ <?php /** * @author cetra3 <peter@parashift.com.au> + * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Phil Davis <phil.davis@inf.org> * @author Robin Appelman <icewind@owncloud.com> * @author Thomas Müller <thomas.mueller@tmit.eu> * diff --git a/lib/private/session/memory.php b/lib/private/session/memory.php index 0fc9165c7cd..ff95efc5345 100644 --- a/lib/private/session/memory.php +++ b/lib/private/session/memory.php @@ -2,6 +2,7 @@ /** * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Morris Jobke <hey@morrisjobke.de> + * @author Phil Davis <phil.davis@inf.org> * @author Robin Appelman <icewind@owncloud.com> * @author Thomas Müller <thomas.mueller@tmit.eu> * diff --git a/lib/private/setup/mysql.php b/lib/private/setup/mysql.php index 5597592f21e..f2d2b15cd90 100644 --- a/lib/private/setup/mysql.php +++ b/lib/private/setup/mysql.php @@ -3,7 +3,7 @@ * @author Bart Visscher <bartv@thisnet.nl> * @author Joas Schilling <nickvergessen@owncloud.com> * @author Michael Göhler <somebody.here@gmx.de> - * @author Robin Appelman <icewind@owncloud.com> + * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/setup/postgresql.php b/lib/private/setup/postgresql.php index 319b6676ef8..0a559e7a589 100644 --- a/lib/private/setup/postgresql.php +++ b/lib/private/setup/postgresql.php @@ -1,9 +1,9 @@ <?php /** * @author Bart Visscher <bartv@thisnet.nl> - * @author Christopher Schäpers <kondou@ts.unde.re> * @author eduardo <eduardo@vnexu.net> * @author Joas Schilling <nickvergessen@owncloud.com> + * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/share/share.php b/lib/private/share/share.php index ca94c51cf76..932586b5c27 100644 --- a/lib/private/share/share.php +++ b/lib/private/share/share.php @@ -1,5 +1,6 @@ <?php /** + * @author Arthur Schiwon <blizzz@owncloud.com> * @author Bart Visscher <bartv@thisnet.nl> * @author Bernhard Reiter <ockham@raz.or.at> * @author Björn Schießle <schiessle@owncloud.com> @@ -718,7 +719,7 @@ class Share extends Constants { if ($checkExists['uid_owner'] != $uidOwner || $checkExists['share_type'] == $shareType) { $message = 'Sharing %s failed, because this item is already shared with user %s'; $message_t = $l->t('Sharing %s failed, because this item is already shared with user %s', array($itemSourceName, $shareWith)); - \OC_Log::write('OCP\Share', sprintf($message, $itemSourceName, $shareWith), \OC_Log::ERROR); + \OCP\Util::writeLog('OCP\Share', sprintf($message, $itemSourceName, $shareWith), \OCP\Util::ERROR); throw new \Exception($message_t); } } @@ -1098,6 +1099,7 @@ class Share extends Constants { 'uidOwner' => \OC_User::getUser(), 'permissions' => $permissions, 'path' => $item['path'], + 'share' => $item )); } // Check if permissions were removed @@ -1108,16 +1110,18 @@ class Share extends Constants { Helper::delete($item['id'], true, null, null, true); } else { $ids = array(); + $items = []; $parents = array($item['id']); while (!empty($parents)) { $parents = "'".implode("','", $parents)."'"; - $query = \OC_DB::prepare('SELECT `id`, `permissions` FROM `*PREFIX*share`' + $query = \OC_DB::prepare('SELECT `id`, `permissions`, `item_type` FROM `*PREFIX*share`' .' WHERE `parent` IN ('.$parents.')'); $result = $query->execute(); // Reset parents array, only go through loop again if // items are found that need permissions removed $parents = array(); while ($item = $result->fetchRow()) { + $items[] = $item; // Check if permissions need to be removed if ($item['permissions'] & ~$permissions) { // Add to list of items that need permissions removed @@ -1139,8 +1143,13 @@ class Share extends Constants { .' WHERE `id` IN ('.$ids.')'); $query->execute(array($permissions)); } + + foreach ($items as $item) { + \OC_Hook::emit('OCP\Share', 'post_update_permissions', ['share' => $item]); + } } } + return true; } $message = 'Setting permissions for %s failed, because the item was not found'; diff --git a/lib/private/streamer.php b/lib/private/streamer.php index 6f0a70e2388..a08c8444f02 100644 --- a/lib/private/streamer.php +++ b/lib/private/streamer.php @@ -1,5 +1,6 @@ <?php /** + * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Victor Dubiniuk <dubiniuk@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. @@ -38,7 +39,7 @@ class Streamer { if ($request->isUserAgent($this->preferTarFor)) { $this->streamerInstance = new TarStreamer(); } else { - $this->streamerInstance = new ZipStreamer(); + $this->streamerInstance = new ZipStreamer(['zip64' => PHP_INT_SIZE !== 4]); } } @@ -89,9 +90,9 @@ class Streamer { /** * Add a file to the archive at the specified location and file name. * - * @param string $stream Stream to read data from - * @param string $internalName Filepath and name to be used in the archive. - * @param int $size Filesize + * @param string $stream Stream to read data from + * @param string $internalName Filepath and name to be used in the archive. + * @param int $size Filesize * @return bool $success */ public function addFileFromStream($stream, $internalName, $size){ @@ -101,17 +102,17 @@ class Streamer { return $this->streamerInstance->addFileFromStream($stream, $internalName, $size); } } - + /** * Add an empty directory entry to the archive. * - * @param string $directoryPath Directory Path and name to be added to the archive. + * @param string $dirName Directory Path and name to be added to the archive. * @return bool $success */ public function addEmptyDir($dirName){ return $this->streamerInstance->addEmptyDir($dirName); } - + /** * Close the archive. * A closed archive can no longer have new files added to it. After diff --git a/lib/private/template.php b/lib/private/template.php index 0300e43edea..0deb26d8f19 100644 --- a/lib/private/template.php +++ b/lib/private/template.php @@ -6,6 +6,7 @@ * @author Brice Maron <brice@bmaron.net> * @author drarko <drarko@users.noreply.github.com> * @author Frank Karlitschek <frank@owncloud.org> + * @author Individual IT Services <info@individual-it.net> * @author Jakob Sack <mail@jakobsack.de> * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@owncloud.com> @@ -69,7 +70,7 @@ class OC_Template extends \OC\Template\Base { public function __construct( $app, $name, $renderAs = "", $registerCall = true ) { // Read the selected theme from the config file - self::initTemplateEngine(); + self::initTemplateEngine($renderAs); $theme = OC_Util::getTheme(); @@ -89,13 +90,13 @@ class OC_Template extends \OC\Template\Base { parent::__construct($template, $requesttoken, $l10n, $themeDefaults); } - public static function initTemplateEngine() { + public static function initTemplateEngine($renderAs) { if (self::$initTemplateEngineFirstRun){ //apps that started before the template initialization can load their own scripts/styles //so to make sure this scripts/styles here are loaded first we use OC_Util::addScript() with $prepend=true //meaning the last script/style in this list will be loaded first - if (\OC::$server->getSystemConfig ()->getValue ( 'installed', false ) && ! \OCP\Util::needUpgrade ()) { + if (\OC::$server->getSystemConfig()->getValue ('installed', false) && $renderAs !== 'error' && !\OCP\Util::needUpgrade()) { if (\OC::$server->getConfig ()->getAppValue ( 'core', 'backgroundjobs_mode', 'ajax' ) == 'ajax') { OC_Util::addScript ( 'backgroundjobs', null, true ); } @@ -300,10 +301,20 @@ class OC_Template extends \OC\Template\Base { * @param string $hint An optional hint message - needs to be properly escaped */ public static function printErrorPage( $error_msg, $hint = '' ) { - $content = new \OC_Template( '', 'error', 'error', false ); - $errors = array(array('error' => $error_msg, 'hint' => $hint)); - $content->assign( 'errors', $errors ); - $content->printPage(); + try { + $content = new \OC_Template( '', 'error', 'error', false ); + $errors = array(array('error' => $error_msg, 'hint' => $hint)); + $content->assign( 'errors', $errors ); + $content->printPage(); + } catch (\Exception $e) { + $logger = \OC::$server->getLogger(); + $logger->error("$error_msg $hint", ['app' => 'core']); + $logger->logException($e, ['app' => 'core']); + + header(self::getHttpProtocol() . ' 500 Internal Server Error'); + header('Content-Type: text/plain; charset=utf-8'); + print("$error_msg $hint"); + } die(); } @@ -312,22 +323,57 @@ class OC_Template extends \OC\Template\Base { * @param Exception $exception */ public static function printExceptionErrorPage($exception) { - $request = \OC::$server->getRequest(); - $content = new \OC_Template('', 'exception', 'error', false); - $content->assign('errorClass', get_class($exception)); - $content->assign('errorMsg', $exception->getMessage()); - $content->assign('errorCode', $exception->getCode()); - $content->assign('file', $exception->getFile()); - $content->assign('line', $exception->getLine()); - $content->assign('trace', $exception->getTraceAsString()); - $content->assign('debugMode', \OC::$server->getSystemConfig()->getValue('debug', false)); - $content->assign('remoteAddr', $request->getRemoteAddress()); - $content->assign('requestID', $request->getId()); - $content->printPage(); + try { + $request = \OC::$server->getRequest(); + $content = new \OC_Template('', 'exception', 'error', false); + $content->assign('errorClass', get_class($exception)); + $content->assign('errorMsg', $exception->getMessage()); + $content->assign('errorCode', $exception->getCode()); + $content->assign('file', $exception->getFile()); + $content->assign('line', $exception->getLine()); + $content->assign('trace', $exception->getTraceAsString()); + $content->assign('debugMode', \OC::$server->getSystemConfig()->getValue('debug', false)); + $content->assign('remoteAddr', $request->getRemoteAddress()); + $content->assign('requestID', $request->getId()); + $content->printPage(); + } catch (\Exception $e) { + $logger = \OC::$server->getLogger(); + $logger->logException($exception, ['app' => 'core']); + $logger->logException($e, ['app' => 'core']); + + header(self::getHttpProtocol() . ' 500 Internal Server Error'); + header('Content-Type: text/plain; charset=utf-8'); + print("Internal Server Error\n\n"); + print("The server encountered an internal error and was unable to complete your request.\n"); + print("Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report.\n"); + print("More details can be found in the server log.\n"); + } die(); } /** + * This is only here to reduce the dependencies in case of an exception to + * still be able to print a plain error message. + * + * Returns the used HTTP protocol. + * + * @return string HTTP protocol. HTTP/2, HTTP/1.1 or HTTP/1.0. + * @internal Don't use this - use AppFramework\Http\Request->getHttpProtocol instead + */ + protected static function getHttpProtocol() { + $claimedProtocol = strtoupper($_SERVER['SERVER_PROTOCOL']); + $validProtocols = [ + 'HTTP/1.0', + 'HTTP/1.1', + 'HTTP/2', + ]; + if(in_array($claimedProtocol, $validProtocols, true)) { + return $claimedProtocol; + } + return 'HTTP/1.1'; + } + + /** * @return bool */ public static function isAssetPipelineEnabled() { diff --git a/lib/private/tempmanager.php b/lib/private/tempmanager.php index cc7c51d8568..365d639389f 100644 --- a/lib/private/tempmanager.php +++ b/lib/private/tempmanager.php @@ -1,9 +1,11 @@ <?php /** * @author Lukas Reschke <lukas@owncloud.com> + * @author Martin Mattel <martin.mattel@diemattels.at> * @author Morris Jobke <hey@morrisjobke.de> * @author Olivier Paroz <github@oparoz.com> * @author Robin Appelman <icewind@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/user/backend.php b/lib/private/user/backend.php index 10bf3e28085..cda91398a84 100644 --- a/lib/private/user/backend.php +++ b/lib/private/user/backend.php @@ -9,9 +9,9 @@ * @author Jakob Sack <mail@jakobsack.de> * @author Joas Schilling <nickvergessen@owncloud.com> * @author Jörn Friedrich Dreyer <jfd@butonic.de> + * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> - * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Sam Tuke <mail@samtuke.com> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Tigran Mkrtchyan <tigran.mkrtchyan@desy.de> diff --git a/lib/private/user/interface.php b/lib/private/user/interface.php index 1ccda618e10..0b36340c4f9 100644 --- a/lib/private/user/interface.php +++ b/lib/private/user/interface.php @@ -2,8 +2,8 @@ /** * @author Arthur Schiwon <blizzz@owncloud.com> * @author Christopher Schäpers <kondou@ts.unde.re> - * @author Joas Schilling <nickvergessen@owncloud.com> * @author Jörn Friedrich Dreyer <jfd@butonic.de> + * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Thomas Müller <thomas.mueller@tmit.eu> diff --git a/lib/private/user/manager.php b/lib/private/user/manager.php index 6a57aa3f7ae..109f08f47a0 100644 --- a/lib/private/user/manager.php +++ b/lib/private/user/manager.php @@ -5,6 +5,7 @@ * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author RealRancor <Fisch.666@gmx.de> * @author Robin Appelman <icewind@owncloud.com> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Volkan Gezer <volkangezer@gmail.com> diff --git a/lib/private/user/nouserexception.php b/lib/private/user/nouserexception.php index 0a077d960bd..09874887469 100644 --- a/lib/private/user/nouserexception.php +++ b/lib/private/user/nouserexception.php @@ -1,7 +1,6 @@ <?php /** * @author Jörn Friedrich Dreyer <jfd@butonic.de> - * @author Morris Jobke <hey@morrisjobke.de> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/private/util.php b/lib/private/util.php index 746a2e09523..9ea355f0168 100644 --- a/lib/private/util.php +++ b/lib/private/util.php @@ -16,17 +16,20 @@ * @author Frank Karlitschek <frank@owncloud.org> * @author Georg Ehrke <georg@owncloud.com> * @author helix84 <helix84@centrum.sk> + * @author Individual IT Services <info@individual-it.net> * @author Jakob Sack <mail@jakobsack.de> * @author Joas Schilling <nickvergessen@owncloud.com> * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@owncloud.com> * @author Markus Goetz <markus@woboq.com> + * @author Martin Mattel <martin.mattel@diemattels.at> * @author Marvin Thomas Rabe <mrabe@marvinrabe.de> * @author Michael Gapczynski <GapczynskiM@gmail.com> * @author Michael Göhler <somebody.here@gmx.de> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Scrutinizer Auto-Fixer <auto-fixer@scrutinizer-ci.com> * @author Stefan Rado <owncloud@sradonia.net> * @author Thomas Müller <thomas.mueller@tmit.eu> diff --git a/lib/public/activity/iconsumer.php b/lib/public/activity/iconsumer.php index e74884d76c5..796bf1d8884 100644 --- a/lib/public/activity/iconsumer.php +++ b/lib/public/activity/iconsumer.php @@ -1,5 +1,6 @@ <?php /** + * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * diff --git a/lib/public/appframework/controller.php b/lib/public/appframework/controller.php index b8986c0b772..5c7292cd130 100644 --- a/lib/public/appframework/controller.php +++ b/lib/public/appframework/controller.php @@ -83,7 +83,13 @@ abstract class Controller { $data->getData(), $data->getStatus() ); - $response->setHeaders(array_merge($data->getHeaders(), $response->getHeaders())); + $dataHeaders = $data->getHeaders(); + $headers = $response->getHeaders(); + // do not overwrite Content-Type if it already exists + if (isset($dataHeaders['Content-Type'])) { + unset($headers['Content-Type']); + } + $response->setHeaders(array_merge($dataHeaders, $headers)); return $response; } else { return new JSONResponse($data); diff --git a/lib/public/appframework/http/contentsecuritypolicy.php b/lib/public/appframework/http/contentsecuritypolicy.php index 07c76f2969c..5371d76ff22 100644 --- a/lib/public/appframework/http/contentsecuritypolicy.php +++ b/lib/public/appframework/http/contentsecuritypolicy.php @@ -2,6 +2,7 @@ /** * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author sualko <klaus@jsxc.org> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/public/appframework/http/ioutput.php b/lib/public/appframework/http/ioutput.php index ba4c031001b..185bc589f22 100644 --- a/lib/public/appframework/http/ioutput.php +++ b/lib/public/appframework/http/ioutput.php @@ -68,9 +68,9 @@ interface IOutput { * @param string $path * @param string $domain * @param bool $secure - * @param bool $httponly + * @param bool $httpOnly * @since 8.1.0 */ - public function setCookie($name, $value, $expire, $path, $domain, $secure, $httponly); + public function setCookie($name, $value, $expire, $path, $domain, $secure, $httpOnly); } diff --git a/lib/public/appframework/http/jsonresponse.php b/lib/public/appframework/http/jsonresponse.php index 1a509200dd7..306c70327b1 100644 --- a/lib/public/appframework/http/jsonresponse.php +++ b/lib/public/appframework/http/jsonresponse.php @@ -1,6 +1,7 @@ <?php /** * @author Bernhard Posselt <dev@bernhard-posselt.com> + * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Thomas Tanghus <thomas@tanghus.net> diff --git a/lib/public/appframework/http/ocsresponse.php b/lib/public/appframework/http/ocsresponse.php index 37af07b70c8..f26d219e581 100644 --- a/lib/public/appframework/http/ocsresponse.php +++ b/lib/public/appframework/http/ocsresponse.php @@ -2,6 +2,7 @@ /** * @author Bernhard Posselt <dev@bernhard-posselt.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/public/appframework/iappcontainer.php b/lib/public/appframework/iappcontainer.php index 7338dbd858d..c92146124e2 100644 --- a/lib/public/appframework/iappcontainer.php +++ b/lib/public/appframework/iappcontainer.php @@ -3,6 +3,7 @@ * @author Bernhard Posselt <dev@bernhard-posselt.com> * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Morris Jobke <hey@morrisjobke.de> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/public/appframework/ocscontroller.php b/lib/public/appframework/ocscontroller.php index 55ba518020a..8b04d65d8c3 100644 --- a/lib/public/appframework/ocscontroller.php +++ b/lib/public/appframework/ocscontroller.php @@ -2,6 +2,7 @@ /** * @author Bernhard Posselt <dev@bernhard-posselt.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/public/autoloadnotallowedexception.php b/lib/public/autoloadnotallowedexception.php index edb7121c065..2e6556c4a7b 100644 --- a/lib/public/autoloadnotallowedexception.php +++ b/lib/public/autoloadnotallowedexception.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 @@ -16,6 +16,7 @@ * * 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 OCP; diff --git a/lib/public/db/querybuilder/iliteral.php b/lib/public/db/querybuilder/iliteral.php index f5db1ce0456..a2665e47a7d 100644 --- a/lib/public/db/querybuilder/iliteral.php +++ b/lib/public/db/querybuilder/iliteral.php @@ -1,6 +1,7 @@ <?php /** * @author Joas Schilling <nickvergessen@owncloud.com> + * @author Morris Jobke <hey@morrisjobke.de> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/public/db/querybuilder/iparameter.php b/lib/public/db/querybuilder/iparameter.php index f597163ba00..ef822a9c97f 100644 --- a/lib/public/db/querybuilder/iparameter.php +++ b/lib/public/db/querybuilder/iparameter.php @@ -1,6 +1,7 @@ <?php /** * @author Joas Schilling <nickvergessen@owncloud.com> + * @author Morris Jobke <hey@morrisjobke.de> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/public/db/querybuilder/iqueryfunction.php b/lib/public/db/querybuilder/iqueryfunction.php index 4e8c163f777..7051f2f38a3 100644 --- a/lib/public/db/querybuilder/iqueryfunction.php +++ b/lib/public/db/querybuilder/iqueryfunction.php @@ -1,6 +1,7 @@ <?php /** * @author Joas Schilling <nickvergessen@owncloud.com> + * @author Morris Jobke <hey@morrisjobke.de> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/public/encryption/iencryptionmodule.php b/lib/public/encryption/iencryptionmodule.php index 66cf1a80e0d..bb4dfdcdda8 100644 --- a/lib/public/encryption/iencryptionmodule.php +++ b/lib/public/encryption/iencryptionmodule.php @@ -3,7 +3,6 @@ * @author Björn Schießle <schiessle@owncloud.com> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> - * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/public/encryption/imanager.php b/lib/public/encryption/imanager.php index 07e2925b76c..c963c19e660 100644 --- a/lib/public/encryption/imanager.php +++ b/lib/public/encryption/imanager.php @@ -3,7 +3,6 @@ * @author Björn Schießle <schiessle@owncloud.com> * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> - * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/public/files/imimetypeloader.php b/lib/public/files/imimetypeloader.php index 6d00c4a0b31..1ff8bc1b6c1 100644 --- a/lib/public/files/imimetypeloader.php +++ b/lib/public/files/imimetypeloader.php @@ -1,6 +1,6 @@ <?php /** - * @author Robin McCorkell <rmccorkell@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/public/files/mount/imountmanager.php b/lib/public/files/mount/imountmanager.php index 1eb9b66dad8..9a0362b12fb 100644 --- a/lib/public/files/mount/imountmanager.php +++ b/lib/public/files/mount/imountmanager.php @@ -1,5 +1,6 @@ <?php /** + * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/public/files/storage.php b/lib/public/files/storage.php index ac3603e48d4..7931a683ae1 100644 --- a/lib/public/files/storage.php +++ b/lib/public/files/storage.php @@ -1,5 +1,6 @@ <?php /** + * @author Michael Roth <michael.roth@rz.uni-augsburg.de> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Robin McCorkell <rmccorkell@karoshi.org.uk> @@ -61,6 +62,7 @@ interface Storage { /** * see http://php.net/manual/en/function.mkdir.php + * implementations need to implement a recursive mkdir * * @param string $path * @return bool diff --git a/lib/public/http/client/iresponse.php b/lib/public/http/client/iresponse.php index 92bb7af82dd..18371ddbbe6 100644 --- a/lib/public/http/client/iresponse.php +++ b/lib/public/http/client/iresponse.php @@ -2,6 +2,7 @@ /** * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin Appelman <icewind@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/public/icontainer.php b/lib/public/icontainer.php index 64d5a7d8c1a..23c75aeaaf8 100644 --- a/lib/public/icontainer.php +++ b/lib/public/icontainer.php @@ -1,5 +1,7 @@ <?php /** + * @author Bernhard Posselt <dev@bernhard-posselt.com> + * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * diff --git a/lib/public/irequest.php b/lib/public/irequest.php index 20fa543dd69..acfc4f3f1d0 100644 --- a/lib/public/irequest.php +++ b/lib/public/irequest.php @@ -168,6 +168,14 @@ interface IRequest { public function getServerProtocol(); /** + * Returns the used HTTP protocol. + * + * @return string HTTP protocol. HTTP/2, HTTP/1.1 or HTTP/1.0. + * @since 8.2.0 + */ + public function getHttpProtocol(); + + /** * Returns the request uri, even if the website uses one or more * reverse proxies * @return string diff --git a/lib/public/iservercontainer.php b/lib/public/iservercontainer.php index e37652c1adc..56afae95a40 100644 --- a/lib/public/iservercontainer.php +++ b/lib/public/iservercontainer.php @@ -9,6 +9,7 @@ * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Thomas Tanghus <thomas@tanghus.net> diff --git a/lib/public/itempmanager.php b/lib/public/itempmanager.php index 6364fa71913..73e21dd0aeb 100644 --- a/lib/public/itempmanager.php +++ b/lib/public/itempmanager.php @@ -2,6 +2,7 @@ /** * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/lib/public/util.php b/lib/public/util.php index 1ba091d1952..76b61347d46 100644 --- a/lib/public/util.php +++ b/lib/public/util.php @@ -5,12 +5,14 @@ * @author Björn Schießle <schiessle@owncloud.com> * @author Frank Karlitschek <frank@owncloud.org> * @author Georg Ehrke <georg@owncloud.com> + * @author Individual IT Services <info@individual-it.net> * @author itheiss <ingo.theiss@i-matrixx.de> * @author Jens-Christian Fischer <jens-christian.fischer@switch.ch> * @author Joas Schilling <nickvergessen@owncloud.com> * @author Lukas Reschke <lukas@owncloud.com> * @author Michael Gapczynski <GapczynskiM@gmail.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Nicolas Grekas <nicolas.grekas@gmail.com> * @author Pellaeon Lin <nfsmwlin@gmail.com> * @author Randolph Carter <RandolphCarter@fantasymail.de> * @author Robin Appelman <icewind@owncloud.com> diff --git a/lib/repair/filletags.php b/lib/repair/filletags.php index 40072209982..8cfc4a7c258 100644 --- a/lib/repair/filletags.php +++ b/lib/repair/filletags.php @@ -1,5 +1,6 @@ <?php /** + * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * diff --git a/lib/repair/repairinvalidshares.php b/lib/repair/repairinvalidshares.php index 21b4d8013e7..4b0aeb70c12 100644 --- a/lib/repair/repairinvalidshares.php +++ b/lib/repair/repairinvalidshares.php @@ -1,5 +1,6 @@ <?php /** + * @author Morris Jobke <hey@morrisjobke.de> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/repair/repairmimetypes.php b/lib/repair/repairmimetypes.php index b9cd42f3136..aeac69d00db 100644 --- a/lib/repair/repairmimetypes.php +++ b/lib/repair/repairmimetypes.php @@ -4,6 +4,7 @@ * @author Morris Jobke <hey@morrisjobke.de> * @author Normal Ra <normalraw@gmail.com> * @author Olivier Paroz <github@oparoz.com> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Victor Dubiniuk <dubiniuk@owncloud.com> * @author Vincent Petry <pvince81@owncloud.com> * diff --git a/lib/repair/sqliteautoincrement.php b/lib/repair/sqliteautoincrement.php index b8ae5c47ff3..70d0adae5d7 100644 --- a/lib/repair/sqliteautoincrement.php +++ b/lib/repair/sqliteautoincrement.php @@ -1,6 +1,5 @@ <?php /** - * @author Morris Jobke <hey@morrisjobke.de> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. diff --git a/lib/repair/updateoutdatedocsids.php b/lib/repair/updateoutdatedocsids.php index afc9e968cad..5f6ee029536 100644 --- a/lib/repair/updateoutdatedocsids.php +++ b/lib/repair/updateoutdatedocsids.php @@ -1,6 +1,6 @@ <?php /** - * @author Lukas Reschke <l8kas@owncloud.com> + * @author Lukas Reschke <lukas@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/ocs/routes.php b/ocs/routes.php index 9a8625bcc31..1722180c201 100644 --- a/ocs/routes.php +++ b/ocs/routes.php @@ -4,6 +4,7 @@ * @author Christopher Schäpers <kondou@ts.unde.re> * @author Joas Schilling <nickvergessen@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Tom Needham <tom@owncloud.com> * diff --git a/ocs/v1.php b/ocs/v1.php index c5c18d20b8a..0aaa5d228da 100644 --- a/ocs/v1.php +++ b/ocs/v1.php @@ -1,7 +1,6 @@ <?php /** * @author Bart Visscher <bartv@thisnet.nl> - * @author Frank Karlitschek <frank@owncloud.org> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> diff --git a/public.php b/public.php index 858e8af7782..aac3c3e517b 100644 --- a/public.php +++ b/public.php @@ -2,10 +2,8 @@ /** * @author Björn Schießle <schiessle@owncloud.com> * @author Christopher Schäpers <kondou@ts.unde.re> - * @author Georg Ehrke <georg@owncloud.com> * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> diff --git a/remote.php b/remote.php index 01077e805eb..b901b1f0fd7 100644 --- a/remote.php +++ b/remote.php @@ -2,10 +2,10 @@ /** * @author Brice Maron <brice@bmaron.net> * @author Christopher Schäpers <kondou@ts.unde.re> - * @author Georg Ehrke <georg@owncloud.com> * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Lukas Reschke <lukas@owncloud.com> * @author Robin Appelman <icewind@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> * diff --git a/settings/admin.php b/settings/admin.php index aa891314fab..bccb1171743 100644 --- a/settings/admin.php +++ b/settings/admin.php @@ -12,7 +12,6 @@ * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/settings/ajax/enableapp.php b/settings/ajax/enableapp.php index 55298430e28..04b92283f3e 100644 --- a/settings/ajax/enableapp.php +++ b/settings/ajax/enableapp.php @@ -5,6 +5,7 @@ * @author Kamil Domanski <kdomanski@kdemail.net> * @author Lukas Reschke <lukas@owncloud.com> * @author Robin Appelman <icewind@owncloud.com> + * @author Thomas Müller <thomas.mueller@tmit.eu> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 @@ -28,8 +29,9 @@ OCP\JSON::callCheck(); $groups = isset($_POST['groups']) ? (array)$_POST['groups'] : null; try { - OC_App::enable(OC_App::cleanAppId((string)$_POST['appid']), $groups); - OC_JSON::success(); + $app = OC_App::cleanAppId((string)$_POST['appid']); + OC_App::enable($app, $groups); + OC_JSON::success(['data' => ['update_required' => \OC_App::shouldUpgrade($app)]]); } catch (Exception $e) { \OCP\Util::writeLog('core', $e->getMessage(), \OCP\Util::ERROR); OC_JSON::error(array("data" => array("message" => $e->getMessage()) )); diff --git a/settings/ajax/navigationdetect.php b/settings/ajax/navigationdetect.php index 5d3b34e10ef..be410b874ee 100644 --- a/settings/ajax/navigationdetect.php +++ b/settings/ajax/navigationdetect.php @@ -1,8 +1,7 @@ <?php /** - * @author Bart Visscher <bartv@thisnet.nl> - * @author Lukas Reschke <lukas@owncloud.com> * @author Robin Appelman <icewind@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/settings/changepassword/controller.php b/settings/changepassword/controller.php index 12499ada15d..3fa3ac67edb 100644 --- a/settings/changepassword/controller.php +++ b/settings/changepassword/controller.php @@ -6,7 +6,6 @@ * @author cmeh <cmeh@users.noreply.github.com> * @author Florin Peter <github@florin-peter.de> * @author Jakob Sack <mail@jakobsack.de> - * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Sam Tuke <mail@samtuke.com> * @author Thomas Müller <thomas.mueller@tmit.eu> diff --git a/settings/controller/certificatecontroller.php b/settings/controller/certificatecontroller.php index 4c129dcd588..750144e7a2c 100644 --- a/settings/controller/certificatecontroller.php +++ b/settings/controller/certificatecontroller.php @@ -1,6 +1,8 @@ <?php /** + * @author Björn Schießle <schiessle@owncloud.com> * @author Lukas Reschke <lukas@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 @@ -66,19 +68,25 @@ class CertificateController extends Controller { * @return array */ public function addPersonalRootCertificate() { + $headers = []; + if ($this->request->isUserAgent([\OC\AppFramework\Http\Request::USER_AGENT_IE_8])) { + // due to upload iframe workaround, need to set content-type to text/plain + $headers['Content-Type'] = 'text/plain'; + } if ($this->isCertificateImportAllowed() === false) { - return new DataResponse('Individual certificate management disabled', Http::STATUS_FORBIDDEN); + return new DataResponse(['message' => 'Individual certificate management disabled'], Http::STATUS_FORBIDDEN, $headers); } $file = $this->request->getUploadedFile('rootcert_import'); if(empty($file)) { - return new DataResponse(['message' => 'No file uploaded'], Http::STATUS_UNPROCESSABLE_ENTITY); + return new DataResponse(['message' => 'No file uploaded'], Http::STATUS_UNPROCESSABLE_ENTITY, $headers); } try { $certificate = $this->certificateManager->addCertificate(file_get_contents($file['tmp_name']), $file['name']); - return new DataResponse([ + return new DataResponse( + [ 'name' => $certificate->getName(), 'commonName' => $certificate->getCommonName(), 'organization' => $certificate->getOrganization(), @@ -88,9 +96,12 @@ class CertificateController extends Controller { 'validTillString' => $this->l10n->l('date', $certificate->getExpireDate()), 'issuer' => $certificate->getIssuerName(), 'issuerOrganization' => $certificate->getIssuerOrganization(), - ]); + ], + Http::STATUS_OK, + $headers + ); } catch (\Exception $e) { - return new DataResponse('An error occurred.', Http::STATUS_UNPROCESSABLE_ENTITY); + return new DataResponse('An error occurred.', Http::STATUS_UNPROCESSABLE_ENTITY, $headers); } } @@ -120,8 +131,9 @@ class CertificateController extends Controller { protected function isCertificateImportAllowed() { $externalStorageEnabled = $this->appManager->isEnabledForUser('files_external'); if ($externalStorageEnabled) { - $backendService = \OC_Mount_Config::$app->getContainer()->query('OCA\Files_External\Service\BackendService'); - if ($backendService->getBackendsVisibleFor(\OCA\Files_External\Service\BackendService::VISIBILITY_PERSONAL)) { + /** @var \OCA\Files_External\Service\BackendService $backendService */ + $backendService = \OC_Mount_Config::$app->getContainer()->query('\OCA\Files_External\Service\BackendService'); + if ($backendService->isUserMountingAllowed()) { return true; } } diff --git a/settings/controller/checksetupcontroller.php b/settings/controller/checksetupcontroller.php index 34fe824bc97..2ff55fc72c9 100644 --- a/settings/controller/checksetupcontroller.php +++ b/settings/controller/checksetupcontroller.php @@ -3,6 +3,8 @@ * @author Joas Schilling <nickvergessen@owncloud.com> * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> + * @author Roeland Jago Douma <roeland@famdouma.nl> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 @@ -121,7 +123,7 @@ class CheckSetupController extends Controller { * * @return array */ - public function getCurlVersion() { + protected function getCurlVersion() { return curl_version(); } @@ -135,6 +137,24 @@ class CheckSetupController extends Controller { * @return string */ private function isUsedTlsLibOutdated() { + // Appstore is disabled by default in EE + $appStoreDefault = false; + if (\OC_Util::getEditionString() === '') { + $appStoreDefault = true; + } + + // Don't run check when: + // 1. Server has `has_internet_connection` set to false + // 2. AppStore AND S2S is disabled + if(!$this->config->getSystemValue('has_internet_connection', true)) { + return ''; + } + if(!$this->config->getSystemValue('appstoreenabled', $appStoreDefault) + && $this->config->getAppValue('files_sharing', 'outgoing_server2server_share_enabled', 'yes') === 'no' + && $this->config->getAppValue('files_sharing', 'incoming_server2server_share_enabled', 'yes') === 'no') { + return ''; + } + $versionString = $this->getCurlVersion(); if(isset($versionString['ssl_version'])) { $versionString = $versionString['ssl_version']; @@ -143,7 +163,7 @@ class CheckSetupController extends Controller { } $features = (string)$this->l10n->t('installing and updating apps via the app store or Federated Cloud Sharing'); - if(!$this->config->getSystemValue('appstoreenabled', true)) { + if(!$this->config->getSystemValue('appstoreenabled', $appStoreDefault)) { $features = (string)$this->l10n->t('Federated Cloud Sharing'); } @@ -176,7 +196,7 @@ class CheckSetupController extends Controller { return ''; } - /* + /** * Whether the php version is still supported (at time of release) * according to: https://secure.php.net/supported-versions.php * @@ -193,7 +213,7 @@ class CheckSetupController extends Controller { return ['eol' => $eol, 'version' => PHP_VERSION]; } - /* + /** * Check if the reverse proxy configuration is working as expected * * @return bool diff --git a/settings/controller/encryptioncontroller.php b/settings/controller/encryptioncontroller.php index 7aaf184482f..b3515f962f4 100644 --- a/settings/controller/encryptioncontroller.php +++ b/settings/controller/encryptioncontroller.php @@ -1,6 +1,7 @@ <?php /** * @author Björn Schießle <schiessle@owncloud.com> + * @author Lukas Reschke <lukas@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 diff --git a/settings/js/apps.js b/settings/js/apps.js index f775ecad620..d51c642c9c9 100644 --- a/settings/js/apps.js +++ b/settings/js/apps.js @@ -245,6 +245,14 @@ OC.Settings.Apps = OC.Settings.Apps || { element.val(t('settings','Enable')); appItem.addClass('appwarning'); } else { + if (result.data.update_required) { + OC.Settings.Apps.showReloadMessage(); + + setTimeout(function() { + location.reload(); + }, 5000); + } + OC.Settings.Apps.rebuildNavigation(); appItem.data('active',true); element.data('active',true); @@ -390,6 +398,20 @@ OC.Settings.Apps = OC.Settings.Apps || { .text(''); }, + showReloadMessage: function(appId) { + OC.dialogs.info( + t( + 'settings', + 'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.' + ), + t('settings','App update'), + function (result) { + window.location.reload(); + }, + true + ); + }, + filter: function(query) { query = query.toLowerCase(); $('#apps-list').find('.section').addClass('hidden'); diff --git a/settings/js/personal.js b/settings/js/personal.js index 33746d22aca..acc1478cd78 100644 --- a/settings/js/personal.js +++ b/settings/js/personal.js @@ -5,8 +5,6 @@ * See the COPYING-README file. */ -/* global OC, t */ - /** * The callback will be fired as soon as enter is pressed by the * user or 1 second after the last data entry @@ -156,6 +154,9 @@ function cleanCropper () { } function avatarResponseHandler (data) { + if (typeof data === 'string') { + data = $.parseJSON(data); + } var $warning = $('#avatar .warning'); $warning.hide(); if (data.status === "success") { @@ -233,7 +234,21 @@ $(document).ready(function () { var uploadparms = { done: function (e, data) { - avatarResponseHandler(data.result); + var response = data; + if (typeof data.result === 'string') { + response = $.parseJSON(data.result); + } else if (data.result && data.result.length) { + // fetch response from iframe + response = $.parseJSON(data.result[0].body.innerText); + } else { + response = data.result; + } + avatarResponseHandler(response); + }, + submit: function(e, data) { + data.formData = _.extend(data.formData || {}, { + requesttoken: OC.requestToken + }); }, fail: function (e, data){ var msg = data.jqXHR.statusText + ' (' + data.jqXHR.status + ')'; @@ -251,10 +266,6 @@ $(document).ready(function () { } }; - $('#uploadavatarbutton').click(function () { - $('#uploadavatar').click(); - }); - $('#uploadavatar').fileupload(uploadparms); $('#selectavatar').click(function () { @@ -344,7 +355,24 @@ $(document).ready(function () { $('#sslCertificate tr > td').tipsy({gravity: 'n', live: true}); $('#rootcert_import').fileupload({ + submit: function(e, data) { + data.formData = _.extend(data.formData || {}, { + requesttoken: OC.requestToken + }); + }, success: function (data) { + if (typeof data === 'string') { + data = $.parseJSON(data); + } else if (data && data.length) { + // fetch response from iframe + data = $.parseJSON(data[0].body.innerText); + } + if (!data || typeof(data) === 'string') { + // IE8 iframe workaround comes here instead of fail() + OC.Notification.showTemporary( + t('settings', 'An error occurred. Please upload an ASCII-encoded PEM certificate.')); + return; + } var issueDate = new Date(data.validFrom * 1000); var expireDate = new Date(data.validTill * 1000); var now = new Date(); @@ -374,10 +402,6 @@ $(document).ready(function () { } }); - $('#rootcert_import_button').click(function () { - $('#rootcert_import').click(); - }); - if ($('#sslCertificate > tbody > tr').length === 0) { $('#sslCertificate').hide(); } diff --git a/settings/l10n/cs_CZ.js b/settings/l10n/cs_CZ.js index 17f02402aee..9af784c1c96 100644 --- a/settings/l10n/cs_CZ.js +++ b/settings/l10n/cs_CZ.js @@ -146,6 +146,7 @@ OC.L10N.register( "Allow users to send mail notification for shared files to other users" : "Povolit uživatelům odesílat emailová upozornění na sdílené soubory ostatním uživatelům", "Exclude groups from sharing" : "Vyjmout skupiny ze sdílení", "These groups will still be able to receive shares, but not to initiate them." : "Těmto skupinám bude stále možno sdílet, nemohou ale sami sdílet ostatním.", + "Allow username autocompletion in share dialog. If this is disabled the full username needs to be entered." : "Povolit automatické vyplňování v dialogu sdílení. Pokud je toto vypnuto, je třeba ručně vyplňovat celé uživatelské jméno.", "Last cron job execution: %s." : "Poslední cron proběhl: %s.", "Last cron job execution: %s. Something seems wrong." : "Poslední cron proběhl: %s. Vypadá to, že něco není v pořádku.", "Cron was not executed yet!" : "Cron ještě nebyl spuštěn!", diff --git a/settings/l10n/cs_CZ.json b/settings/l10n/cs_CZ.json index 455280dbeb8..3d750f668a1 100644 --- a/settings/l10n/cs_CZ.json +++ b/settings/l10n/cs_CZ.json @@ -144,6 +144,7 @@ "Allow users to send mail notification for shared files to other users" : "Povolit uživatelům odesílat emailová upozornění na sdílené soubory ostatním uživatelům", "Exclude groups from sharing" : "Vyjmout skupiny ze sdílení", "These groups will still be able to receive shares, but not to initiate them." : "Těmto skupinám bude stále možno sdílet, nemohou ale sami sdílet ostatním.", + "Allow username autocompletion in share dialog. If this is disabled the full username needs to be entered." : "Povolit automatické vyplňování v dialogu sdílení. Pokud je toto vypnuto, je třeba ručně vyplňovat celé uživatelské jméno.", "Last cron job execution: %s." : "Poslední cron proběhl: %s.", "Last cron job execution: %s. Something seems wrong." : "Poslední cron proběhl: %s. Vypadá to, že něco není v pořádku.", "Cron was not executed yet!" : "Cron ještě nebyl spuštěn!", diff --git a/settings/l10n/de.js b/settings/l10n/de.js index 709b95f9424..7e59f4567ac 100644 --- a/settings/l10n/de.js +++ b/settings/l10n/de.js @@ -118,7 +118,7 @@ OC.L10N.register( "SSL" : "SSL", "TLS" : "TLS", "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP scheint zur Abfrage von Systemumgebungsvariablen nicht richtig eingerichtet zu sein. Der Test mit getenv (\"PATH\") liefert nur eine leere Antwort zurück.", - "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." : "Bitten überprüfe die <a target=\"_blank\" href=\"%s\">Installationsdokumentation ↗</a>auf Hinweise zur PHP-Konfiguration, sowie die PHP-Konfiguration Deines Servers, insbesondere dann, wenn Du PHP-FPM einsetzt.", + "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." : "Bitte schau in der <a target=\"_blank\" href=\"%s\">Installationsdokumentation ↗</a>auf Hinweise zur PHP-Konfiguration, sowie die PHP-Konfiguration Deines Servers, insbesondere dann, wenn Du PHP-FPM einsetzt.", "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." : "Die schreibgeschützte Konfiguration wurde aktiviert. Dies verhindert das Setzen einiger Einstellungen über die Web-Schnittstelle. Weiterhin muss bei jedem Update der Schreibzugriff auf die Datei händisch aktiviert werden.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP ist offenbar so konfiguriert, dass PHPDoc-Blöcke in der Anweisung entfernt werden. Dadurch sind mehrere Kern-Apps nicht erreichbar.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dies wird wahrscheinlich durch Zwischenspeicher/Beschleuniger wie etwa Zend OPcache oder eAccelerator verursacht.", @@ -218,7 +218,7 @@ OC.L10N.register( "Desktop client" : "Desktop-Client", "Android app" : "Android-App", "iOS app" : "iOS-App", - "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>!" : "Wenn Du das Projekt unterstützen möchtest,\n⇥⇥<a href=\"https://owncloud.org/contribute\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">beteilige Dich an der Entwicklung</a>\n⇥⇥oder\n⇥⇥<a href=\"https://owncloud.org/promote\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">hilf mit, es bekannter zu machen</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>!" : "Wenn Du das Projekt unterstützen möchtest,\n<a href=\"https://owncloud.org/contribute\"\ntarget=\"_blank\" rel=\"noreferrer\">beteilige Dich an der Entwicklung</a>\noder\n<a href=\"https://owncloud.org/promote\"\ntarget=\"_blank\" rel=\"noreferrer\">hilf mit, es bekannter zu machen</a>!", "Show First Run Wizard again" : "Den Einrichtungsassistenten erneut anzeigen", "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Du verwendest <strong>%s</strong> der verfügbaren <strong>%s</strong>", "Password" : "Passwort", diff --git a/settings/l10n/de.json b/settings/l10n/de.json index 29352fe9232..f5265888072 100644 --- a/settings/l10n/de.json +++ b/settings/l10n/de.json @@ -116,7 +116,7 @@ "SSL" : "SSL", "TLS" : "TLS", "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP scheint zur Abfrage von Systemumgebungsvariablen nicht richtig eingerichtet zu sein. Der Test mit getenv (\"PATH\") liefert nur eine leere Antwort zurück.", - "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." : "Bitten überprüfe die <a target=\"_blank\" href=\"%s\">Installationsdokumentation ↗</a>auf Hinweise zur PHP-Konfiguration, sowie die PHP-Konfiguration Deines Servers, insbesondere dann, wenn Du PHP-FPM einsetzt.", + "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." : "Bitte schau in der <a target=\"_blank\" href=\"%s\">Installationsdokumentation ↗</a>auf Hinweise zur PHP-Konfiguration, sowie die PHP-Konfiguration Deines Servers, insbesondere dann, wenn Du PHP-FPM einsetzt.", "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." : "Die schreibgeschützte Konfiguration wurde aktiviert. Dies verhindert das Setzen einiger Einstellungen über die Web-Schnittstelle. Weiterhin muss bei jedem Update der Schreibzugriff auf die Datei händisch aktiviert werden.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP ist offenbar so konfiguriert, dass PHPDoc-Blöcke in der Anweisung entfernt werden. Dadurch sind mehrere Kern-Apps nicht erreichbar.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dies wird wahrscheinlich durch Zwischenspeicher/Beschleuniger wie etwa Zend OPcache oder eAccelerator verursacht.", @@ -216,7 +216,7 @@ "Desktop client" : "Desktop-Client", "Android app" : "Android-App", "iOS app" : "iOS-App", - "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>!" : "Wenn Du das Projekt unterstützen möchtest,\n⇥⇥<a href=\"https://owncloud.org/contribute\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">beteilige Dich an der Entwicklung</a>\n⇥⇥oder\n⇥⇥<a href=\"https://owncloud.org/promote\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">hilf mit, es bekannter zu machen</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>!" : "Wenn Du das Projekt unterstützen möchtest,\n<a href=\"https://owncloud.org/contribute\"\ntarget=\"_blank\" rel=\"noreferrer\">beteilige Dich an der Entwicklung</a>\noder\n<a href=\"https://owncloud.org/promote\"\ntarget=\"_blank\" rel=\"noreferrer\">hilf mit, es bekannter zu machen</a>!", "Show First Run Wizard again" : "Den Einrichtungsassistenten erneut anzeigen", "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Du verwendest <strong>%s</strong> der verfügbaren <strong>%s</strong>", "Password" : "Passwort", diff --git a/settings/l10n/de_DE.js b/settings/l10n/de_DE.js index 5c931504348..ddf85fb4515 100644 --- a/settings/l10n/de_DE.js +++ b/settings/l10n/de_DE.js @@ -212,7 +212,7 @@ OC.L10N.register( "Desktop client" : "Desktop-Client", "Android app" : "Android-App", "iOS app" : "iOS-App", - "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>!" : "Wenn Sie das Projekt unterstützen möchten,\n⇥⇥<a href=\"https://owncloud.org/contribute\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">beteiligen Sie sich an der Entwicklung</a>\n⇥⇥oder\n⇥⇥<a href=\"https://owncloud.org/promote\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">helfen Sie mit, es bekannter zu machen</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>!" : "Wenn Sie das Projekt unterstützen möchten,\n<a href=\"https://owncloud.org/contribute\"\ntarget=\"_blank\" rel=\"noreferrer\">beteiligen Sie sich an der Entwicklung</a>\noder\n<a href=\"https://owncloud.org/promote\"\ntarget=\"_blank\" rel=\"noreferrer\">helfen Sie mit, es bekannter zu machen</a>!", "Show First Run Wizard again" : "Den Einrichtungsassistenten erneut anzeigen", "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Sie verwenden <strong>%s</strong> der verfügbaren <strong>%s</strong>", "Password" : "Passwort", diff --git a/settings/l10n/de_DE.json b/settings/l10n/de_DE.json index 0518e75c4e5..ba5b2edeecb 100644 --- a/settings/l10n/de_DE.json +++ b/settings/l10n/de_DE.json @@ -210,7 +210,7 @@ "Desktop client" : "Desktop-Client", "Android app" : "Android-App", "iOS app" : "iOS-App", - "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>!" : "Wenn Sie das Projekt unterstützen möchten,\n⇥⇥<a href=\"https://owncloud.org/contribute\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">beteiligen Sie sich an der Entwicklung</a>\n⇥⇥oder\n⇥⇥<a href=\"https://owncloud.org/promote\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">helfen Sie mit, es bekannter zu machen</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>!" : "Wenn Sie das Projekt unterstützen möchten,\n<a href=\"https://owncloud.org/contribute\"\ntarget=\"_blank\" rel=\"noreferrer\">beteiligen Sie sich an der Entwicklung</a>\noder\n<a href=\"https://owncloud.org/promote\"\ntarget=\"_blank\" rel=\"noreferrer\">helfen Sie mit, es bekannter zu machen</a>!", "Show First Run Wizard again" : "Den Einrichtungsassistenten erneut anzeigen", "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Sie verwenden <strong>%s</strong> der verfügbaren <strong>%s</strong>", "Password" : "Passwort", diff --git a/settings/l10n/el.js b/settings/l10n/el.js index 363758011e1..c9bd6733321 100644 --- a/settings/l10n/el.js +++ b/settings/l10n/el.js @@ -77,6 +77,8 @@ OC.L10N.register( "Uninstalling ...." : "Απεγκατάσταση ....", "Error while uninstalling app" : "Σφάλμα κατά την απεγκατάσταση της εφαρμογής", "Uninstall" : "Απεγκατάσταση", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Η εφαρμογή έχει ενεργοποιηθεί αλλά χρειάζεται ενημέρωση. Θα μεταφερθείτε στη σελίδα ενημέρωσης σε 5 δευτερόλεπτα.", + "App update" : "Ενημέρωση εφαρμογής", "An error occurred: {message}" : "Παρουσιάστηκε σφάλμα: {message}", "Select a profile picture" : "Επιλογή εικόνας προφίλ", "Very weak password" : "Πολύ αδύναμο συνθηματικό", diff --git a/settings/l10n/el.json b/settings/l10n/el.json index 12d2436fc92..3b2a1412273 100644 --- a/settings/l10n/el.json +++ b/settings/l10n/el.json @@ -75,6 +75,8 @@ "Uninstalling ...." : "Απεγκατάσταση ....", "Error while uninstalling app" : "Σφάλμα κατά την απεγκατάσταση της εφαρμογής", "Uninstall" : "Απεγκατάσταση", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Η εφαρμογή έχει ενεργοποιηθεί αλλά χρειάζεται ενημέρωση. Θα μεταφερθείτε στη σελίδα ενημέρωσης σε 5 δευτερόλεπτα.", + "App update" : "Ενημέρωση εφαρμογής", "An error occurred: {message}" : "Παρουσιάστηκε σφάλμα: {message}", "Select a profile picture" : "Επιλογή εικόνας προφίλ", "Very weak password" : "Πολύ αδύναμο συνθηματικό", diff --git a/settings/l10n/fa.js b/settings/l10n/fa.js index 641e8ae3f80..b6345dbb767 100644 --- a/settings/l10n/fa.js +++ b/settings/l10n/fa.js @@ -3,12 +3,14 @@ OC.L10N.register( { "APCu" : "APCu", "Redis" : "Redis", + "Security & setup warnings" : "اخطارهای نصب و امنیتی", "Sharing" : "اشتراک گذاری", "Server-side encryption" : "رمزگذاری سمت سرور", "External Storage" : "حافظه خارجی", "Cron" : "زمانبند", "Email server" : "سرور ایمیل", "Log" : "کارنامه", + "Tips & tricks" : "نکات و راهنماییها", "Updates" : "به روز رسانی ها", "Authentication error" : "خطا در اعتبار سنجی", "Your full name has been changed." : "نام کامل شما تغییر یافت", @@ -70,6 +72,7 @@ OC.L10N.register( "A valid username must be provided" : "نام کاربری صحیح باید وارد شود", "Error creating user" : "خطا در ایجاد کاربر", "A valid password must be provided" : "رمز عبور صحیح باید وارد شود", + "A valid email must be provided" : "یک ایمیل معتبر باید وارد شود", "__language_name__" : "__language_name__", "Sync clients" : "همگامسازی مشتریان", "Personal info" : "مشخصات شخصی", @@ -86,6 +89,7 @@ OC.L10N.register( "SSL" : "SSL", "TLS" : "TLS", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "ماژول 'fileinfo' PHP از کار افتاده است.ما اکیدا توصیه می کنیم که این ماژول را فعال کنید تا نتایج بهتری به وسیله ی mime-type detection دریافت کنید.", + "All checks passed." : "تمامی موارد با موفقیت چک شدند.", "Open documentation" : "بازکردن مستند", "Allow apps to use the Share API" : "اجازه ی برنامه ها برای استفاده از API اشتراک گذاری", "Allow users to share via link" : "اجازه دادن به کاربران برای اشتراک گذاری توسط پیوند", @@ -158,9 +162,13 @@ OC.L10N.register( "Choose as profile image" : "یک تصویر پروفایل انتخاب کنید", "Language" : "زبان", "Help translate" : "به ترجمه آن کمک کنید", + "Common Name" : "نام مشترک", "Valid until" : "متعبر تا", + "Issued By" : "صدور توسط", + "Valid until %s" : "متعبر تا %s", "Show storage location" : "نمایش محل ذخیرهسازی", "Show last log in" : "نمایش اخرین ورود", + "Send email to new user" : "ارسال ایمیل به کاربر جدید", "Show email address" : "نمایش پست الکترونیکی", "Username" : "نام کاربری", "E-Mail" : "ایمیل", diff --git a/settings/l10n/fa.json b/settings/l10n/fa.json index 1b9c287348a..b9f5e3aca22 100644 --- a/settings/l10n/fa.json +++ b/settings/l10n/fa.json @@ -1,12 +1,14 @@ { "translations": { "APCu" : "APCu", "Redis" : "Redis", + "Security & setup warnings" : "اخطارهای نصب و امنیتی", "Sharing" : "اشتراک گذاری", "Server-side encryption" : "رمزگذاری سمت سرور", "External Storage" : "حافظه خارجی", "Cron" : "زمانبند", "Email server" : "سرور ایمیل", "Log" : "کارنامه", + "Tips & tricks" : "نکات و راهنماییها", "Updates" : "به روز رسانی ها", "Authentication error" : "خطا در اعتبار سنجی", "Your full name has been changed." : "نام کامل شما تغییر یافت", @@ -68,6 +70,7 @@ "A valid username must be provided" : "نام کاربری صحیح باید وارد شود", "Error creating user" : "خطا در ایجاد کاربر", "A valid password must be provided" : "رمز عبور صحیح باید وارد شود", + "A valid email must be provided" : "یک ایمیل معتبر باید وارد شود", "__language_name__" : "__language_name__", "Sync clients" : "همگامسازی مشتریان", "Personal info" : "مشخصات شخصی", @@ -84,6 +87,7 @@ "SSL" : "SSL", "TLS" : "TLS", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "ماژول 'fileinfo' PHP از کار افتاده است.ما اکیدا توصیه می کنیم که این ماژول را فعال کنید تا نتایج بهتری به وسیله ی mime-type detection دریافت کنید.", + "All checks passed." : "تمامی موارد با موفقیت چک شدند.", "Open documentation" : "بازکردن مستند", "Allow apps to use the Share API" : "اجازه ی برنامه ها برای استفاده از API اشتراک گذاری", "Allow users to share via link" : "اجازه دادن به کاربران برای اشتراک گذاری توسط پیوند", @@ -156,9 +160,13 @@ "Choose as profile image" : "یک تصویر پروفایل انتخاب کنید", "Language" : "زبان", "Help translate" : "به ترجمه آن کمک کنید", + "Common Name" : "نام مشترک", "Valid until" : "متعبر تا", + "Issued By" : "صدور توسط", + "Valid until %s" : "متعبر تا %s", "Show storage location" : "نمایش محل ذخیرهسازی", "Show last log in" : "نمایش اخرین ورود", + "Send email to new user" : "ارسال ایمیل به کاربر جدید", "Show email address" : "نمایش پست الکترونیکی", "Username" : "نام کاربری", "E-Mail" : "ایمیل", diff --git a/settings/l10n/fi_FI.js b/settings/l10n/fi_FI.js index a7db9452562..cff1591d1e4 100644 --- a/settings/l10n/fi_FI.js +++ b/settings/l10n/fi_FI.js @@ -76,6 +76,8 @@ OC.L10N.register( "Uninstalling ...." : "Poistetaan asennusta....", "Error while uninstalling app" : "Virhe sovellusta poistaessa", "Uninstall" : "Poista asennus", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Tämä sovellus on otettu käyttöön, mutta se vaatii päivityksen. Sinut ohjataan päivityssivulle viiden sekunnin kuluttua.", + "App update" : "Sovelluspäivitys", "An error occurred: {message}" : "Tapahtui virhe: {message}", "Select a profile picture" : "Valitse profiilikuva", "Very weak password" : "Erittäin heikko salasana", diff --git a/settings/l10n/fi_FI.json b/settings/l10n/fi_FI.json index 9705353642b..853028e72ed 100644 --- a/settings/l10n/fi_FI.json +++ b/settings/l10n/fi_FI.json @@ -74,6 +74,8 @@ "Uninstalling ...." : "Poistetaan asennusta....", "Error while uninstalling app" : "Virhe sovellusta poistaessa", "Uninstall" : "Poista asennus", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Tämä sovellus on otettu käyttöön, mutta se vaatii päivityksen. Sinut ohjataan päivityssivulle viiden sekunnin kuluttua.", + "App update" : "Sovelluspäivitys", "An error occurred: {message}" : "Tapahtui virhe: {message}", "Select a profile picture" : "Valitse profiilikuva", "Very weak password" : "Erittäin heikko salasana", diff --git a/settings/l10n/fr.js b/settings/l10n/fr.js index a7c389aab1e..23cc6357a2a 100644 --- a/settings/l10n/fr.js +++ b/settings/l10n/fr.js @@ -77,6 +77,7 @@ OC.L10N.register( "Uninstalling ...." : "Désinstallation...", "Error while uninstalling app" : "Erreur lors de la désinstallation de l'application", "Uninstall" : "Désinstaller", + "App update" : "Mise à jour App", "An error occurred: {message}" : "Une erreur est survenue : {message}", "Select a profile picture" : "Selectionnez une photo de profil ", "Very weak password" : "Mot de passe de très faible sécurité", diff --git a/settings/l10n/fr.json b/settings/l10n/fr.json index 81011944298..b51a82df574 100644 --- a/settings/l10n/fr.json +++ b/settings/l10n/fr.json @@ -75,6 +75,7 @@ "Uninstalling ...." : "Désinstallation...", "Error while uninstalling app" : "Erreur lors de la désinstallation de l'application", "Uninstall" : "Désinstaller", + "App update" : "Mise à jour App", "An error occurred: {message}" : "Une erreur est survenue : {message}", "Select a profile picture" : "Selectionnez une photo de profil ", "Very weak password" : "Mot de passe de très faible sécurité", diff --git a/settings/l10n/hu_HU.js b/settings/l10n/hu_HU.js index 226ce7e01d9..5451728773b 100644 --- a/settings/l10n/hu_HU.js +++ b/settings/l10n/hu_HU.js @@ -72,6 +72,7 @@ OC.L10N.register( "Uninstalling ...." : "Eltávolítás ...", "Error while uninstalling app" : "Hiba történt az alkalmazás eltávolítása közben", "Uninstall" : "Eltávolítás", + "App update" : "Alkalmazás frissítése", "An error occurred: {message}" : "Hiba történt: {message}", "Select a profile picture" : "Válasszon profilképet!", "Very weak password" : "Nagyon gyenge jelszó", diff --git a/settings/l10n/hu_HU.json b/settings/l10n/hu_HU.json index 14577924e94..08a34e158f5 100644 --- a/settings/l10n/hu_HU.json +++ b/settings/l10n/hu_HU.json @@ -70,6 +70,7 @@ "Uninstalling ...." : "Eltávolítás ...", "Error while uninstalling app" : "Hiba történt az alkalmazás eltávolítása közben", "Uninstall" : "Eltávolítás", + "App update" : "Alkalmazás frissítése", "An error occurred: {message}" : "Hiba történt: {message}", "Select a profile picture" : "Válasszon profilképet!", "Very weak password" : "Nagyon gyenge jelszó", diff --git a/settings/l10n/it.js b/settings/l10n/it.js index 7081214d89d..f6fd6352fef 100644 --- a/settings/l10n/it.js +++ b/settings/l10n/it.js @@ -77,6 +77,8 @@ OC.L10N.register( "Uninstalling ...." : "Disinstallazione...", "Error while uninstalling app" : "Errore durante la disinstallazione dell'applicazione", "Uninstall" : "Disinstalla", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "L'applicazione è stata abilitata, ma deve essere aggiornata. Sarai rediretto alla pagina di aggiornamento in 5 secondi.", + "App update" : "Aggiornamento applicazione", "An error occurred: {message}" : "Si è verificato un errore: {message}", "Select a profile picture" : "Seleziona un'immagine del profilo", "Very weak password" : "Password molto debole", diff --git a/settings/l10n/it.json b/settings/l10n/it.json index 70325f7071a..a51b053c2c9 100644 --- a/settings/l10n/it.json +++ b/settings/l10n/it.json @@ -75,6 +75,8 @@ "Uninstalling ...." : "Disinstallazione...", "Error while uninstalling app" : "Errore durante la disinstallazione dell'applicazione", "Uninstall" : "Disinstalla", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "L'applicazione è stata abilitata, ma deve essere aggiornata. Sarai rediretto alla pagina di aggiornamento in 5 secondi.", + "App update" : "Aggiornamento applicazione", "An error occurred: {message}" : "Si è verificato un errore: {message}", "Select a profile picture" : "Seleziona un'immagine del profilo", "Very weak password" : "Password molto debole", diff --git a/settings/l10n/nds.js b/settings/l10n/nds.js new file mode 100644 index 00000000000..e1998c807fd --- /dev/null +++ b/settings/l10n/nds.js @@ -0,0 +1,19 @@ +OC.L10N.register( + "settings", + { + "External Storage" : "Externer Speicher", + "Saved" : "Gespeichert", + "Very weak password" : "Sehr schwaches Passwort", + "Weak password" : "Schwaches Passwort", + "So-so password" : "Mittelstarkes Passwort", + "Good password" : "Gutes Passwort", + "Strong password" : "Starkes Passwort", + "Delete" : "Löschen", + "None" : "Keine(r)", + "Enable encryption" : "Verschlüsselung aktivieren", + "Port" : "Port", + "Password" : "Passwort", + "Cancel" : "Abbrechen", + "Username" : "Benutzername" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/nds.json b/settings/l10n/nds.json new file mode 100644 index 00000000000..2c56decc573 --- /dev/null +++ b/settings/l10n/nds.json @@ -0,0 +1,17 @@ +{ "translations": { + "External Storage" : "Externer Speicher", + "Saved" : "Gespeichert", + "Very weak password" : "Sehr schwaches Passwort", + "Weak password" : "Schwaches Passwort", + "So-so password" : "Mittelstarkes Passwort", + "Good password" : "Gutes Passwort", + "Strong password" : "Starkes Passwort", + "Delete" : "Löschen", + "None" : "Keine(r)", + "Enable encryption" : "Verschlüsselung aktivieren", + "Port" : "Port", + "Password" : "Passwort", + "Cancel" : "Abbrechen", + "Username" : "Benutzername" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/settings/l10n/pt_BR.js b/settings/l10n/pt_BR.js index f4bbc350a93..8adfebcac11 100644 --- a/settings/l10n/pt_BR.js +++ b/settings/l10n/pt_BR.js @@ -77,6 +77,8 @@ OC.L10N.register( "Uninstalling ...." : "Desinstalando ...", "Error while uninstalling app" : "Erro enquanto desinstalava aplicativo", "Uninstall" : "Desinstalar", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "O aplicativo foi habilitado, mas precisa ser atualizado. Você será redirecionado para a página de atualização em 5 segundos.", + "App update" : "Atualização de aplicativo", "An error occurred: {message}" : "Ocorreu um erro: {message}", "Select a profile picture" : "Selecione uma imagem para o perfil", "Very weak password" : "Senha muito fraca", diff --git a/settings/l10n/pt_BR.json b/settings/l10n/pt_BR.json index f27256b828f..2bd0848cee5 100644 --- a/settings/l10n/pt_BR.json +++ b/settings/l10n/pt_BR.json @@ -75,6 +75,8 @@ "Uninstalling ...." : "Desinstalando ...", "Error while uninstalling app" : "Erro enquanto desinstalava aplicativo", "Uninstall" : "Desinstalar", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "O aplicativo foi habilitado, mas precisa ser atualizado. Você será redirecionado para a página de atualização em 5 segundos.", + "App update" : "Atualização de aplicativo", "An error occurred: {message}" : "Ocorreu um erro: {message}", "Select a profile picture" : "Selecione uma imagem para o perfil", "Very weak password" : "Senha muito fraca", diff --git a/settings/l10n/ru.js b/settings/l10n/ru.js index 4366083d5c2..24b1d9e96f5 100644 --- a/settings/l10n/ru.js +++ b/settings/l10n/ru.js @@ -118,18 +118,22 @@ OC.L10N.register( "SSL" : "SSL", "TLS" : "TLS", "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP был установлен неверно. Запрос getenv(\"PATH\") возвращает пустые результаты.", + "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." : "Пожалуйста обратитесь к <a target=\"_blank\" href=\"%s\">документации по установке</a> для получения заметок по настройке php, а также к настройкам php вашего сервера, особенно это касается 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." : "Конфигурационный файл в режиме только для чтения. В связи с этим некоторые настройки веб-интерфейса невозможно изменить. Учтите, что для установки обновлений, вам потребуется самостоятельно разрешить запись в конфигурационный файл.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Очевидно, PHP настроен на вычищение блоков встроенной документации. Это сделает несколько центральных приложений недоступными.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Возможно это вызвано кешем/ускорителем вроде Zend OPcache или eAccelerator.", "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Ваш сервер работает на ОС Microsoft Windows. Мы настоятельно рекомендуем использовать ОС семейства Linux для достижения наилучших условий использования.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend to update to a newer %1$s version." : "%1$s ниже установленной версии %2$s, по причинам стабильности и производительности мы рекомендуем обновиться до новой версии %1$s.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "PHP-модуль 'fileinfo' отсутствует. Мы настоятельно рекомендуем включить этот модуль для улучшения определения типов (mime-type) файлов.", + "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" href=\"%s\">documentation ↗</a> for more information." : "Блокировка файлов во время передачи отключена, это может привести к состоянию гонки. Включите параметр 'filelocking.enabled' в config.php для избежания этой проблемы. За подробной информацией обратитесь к <a target=\"_blank\" href=\"%s\">документации</a>.", "System locale can not be set to a one which supports UTF-8." : "Невозможно установить системную локаль, поддерживающую UTF-8", "This means that there might be problems with certain characters in file names." : "Это значит, что могут быть проблемы с некоторыми символами в именах файлов.", "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Мы рекомендуем установить требуемые пакеты для вашей системы для поддержки одного из следующих языков: %s.", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Если ваша копия ownCloud установлена не в корне домена и использует системный планировщик cron, возможны проблемы с правильной генерацией URL. Чтобы избежать этого, установите опцию \"overwrite.cli.url\" в файле config.php равной пути папки установки. (Предположительно: \"%s\".)", "It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "Не удается запустить задачу планировщика через CLI. Произошли следующие технические ошибки:", + "Transactional file locking is using the database as locking backend, for best performance it's advised to configure a memcache for locking. See the <a target=\"_blank\" href=\"%s\">documentation ↗</a> for more information." : "Механизм блокировки файлов во время передачи основан на базе данных, для лучшей производительности рекомендуется использование memcache. За подробной информацией обратитесь к <a target=\"_blank\" href=\"%s\">документации</a>.", "Please double check the <a target=\"_blank\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"#log-section\">log</a>." : "Пожалуйста, перепроверьте <a href=\"%s\">инструкцию по установке</a> и проверьте ошибки или предупреждения в <a href=\"#log-section\">журнале</a>", + "All checks passed." : "Все проверки пройдены.", "Open documentation" : "Открыть документацию", "Allow apps to use the Share API" : "Позволить приложениям использовать API общего доступа", "Allow users to share via link" : "Разрешить пользователям публикации через ссылки", @@ -145,6 +149,7 @@ OC.L10N.register( "Allow users to send mail notification for shared files to other users" : "Разрешить пользователям отправлять оповещение других пользователей об открытии доступа к файлам", "Exclude groups from sharing" : "Исключить группы из общего доступа", "These groups will still be able to receive shares, but not to initiate them." : "Эти группы смогут получать общие ресурсы, но не могут их создавать.", + "Allow username autocompletion in share dialog. If this is disabled the full username needs to be entered." : "Включить автоматическое завершение имен пользователей в окне общего доступа. Если отключено, то необходимо вводить полное имя вручную.", "Last cron job execution: %s." : "Последнее выполненное Cron задание: %s.", "Last cron job execution: %s. Something seems wrong." : "Последнее выполненное Cron задание: %s. Что-то кажется неправильным.", "Cron was not executed yet!" : "Задачи cron ещё не запускались!", @@ -152,6 +157,12 @@ OC.L10N.register( "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php зарегистрирован в webcron и будет вызываться каждые 15 минут по http.", "Use system's cron service to call the cron.php file every 15 minutes." : "Использовать системный cron для вызова cron.php каждые 15 минут.", "Enable server-side encryption" : "Включить шифрование на стороне сервера", + "Please read carefully before activating server-side encryption: " : "Пожалуйста прочтите внимательно прежде чем включать шифрование на стороне сервера:", + "Server-side encryption is a one way process. Once encryption is enabled, all files from that point forward will be encrypted on the server and it will not be possible to disable encryption at a later date" : "Шифрование на стороне сервера необратимый процесс. После включения шифрования все файлы на сервере будут зашифрованы, отключение этой опции невозможно.", + "Anyone who has privileged access to your ownCloud server can decrypt your files either by intercepting requests or reading out user passwords which are stored in plain text session files. Server-side encryption does therefore not protect against malicious administrators but is useful for protecting your data on externally hosted storage." : "Любой привилегированный пользователь, который имеет доступ к серверу ownCloud может расшифровать файлы путем перехвата паролей от пользователей, которые хранятся в открытом в виде в файлах сессии. Шифрование на стороне сервера не защищает от администраторов-злоумышленников, но оно может быть полезно при использовании стороннего хостинга.", + "Depending on the actual encryption module the general file size is increased (by 35%% or more when using the default module)" : "В зависимости от модуля шифрования общий размер файла может увеличиться (на 35 или более %% при использовании модуля по умолчанию)", + "You should regularly backup all encryption keys to prevent permanent data loss (data/<user>/files_encryption and data/files_encryption)" : "Вам необходимо постоянно создавать резервную копию ключей шифрования с целью предотвращения потери данных (data/<user>/files_encryption и data/files_encryption)", + "This is the final warning: Do you really want to enable encryption?" : "Это последнее предупреждение: Вы действительно желаете включить шифрование?", "Enable encryption" : "Включить шифрование", "No encryption module loaded, please enable an encryption module in the app menu." : "Модуль шифрования не загружен, пожалуйста включите модуль шифрования в меню приложений.", "Select default encryption module:" : "Выберите модуль шифрования по умолчанию:", diff --git a/settings/l10n/ru.json b/settings/l10n/ru.json index 55a2680ed30..0cc7346af1c 100644 --- a/settings/l10n/ru.json +++ b/settings/l10n/ru.json @@ -116,18 +116,22 @@ "SSL" : "SSL", "TLS" : "TLS", "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP был установлен неверно. Запрос getenv(\"PATH\") возвращает пустые результаты.", + "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." : "Пожалуйста обратитесь к <a target=\"_blank\" href=\"%s\">документации по установке</a> для получения заметок по настройке php, а также к настройкам php вашего сервера, особенно это касается 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." : "Конфигурационный файл в режиме только для чтения. В связи с этим некоторые настройки веб-интерфейса невозможно изменить. Учтите, что для установки обновлений, вам потребуется самостоятельно разрешить запись в конфигурационный файл.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Очевидно, PHP настроен на вычищение блоков встроенной документации. Это сделает несколько центральных приложений недоступными.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Возможно это вызвано кешем/ускорителем вроде Zend OPcache или eAccelerator.", "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Ваш сервер работает на ОС Microsoft Windows. Мы настоятельно рекомендуем использовать ОС семейства Linux для достижения наилучших условий использования.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend to update to a newer %1$s version." : "%1$s ниже установленной версии %2$s, по причинам стабильности и производительности мы рекомендуем обновиться до новой версии %1$s.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "PHP-модуль 'fileinfo' отсутствует. Мы настоятельно рекомендуем включить этот модуль для улучшения определения типов (mime-type) файлов.", + "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" href=\"%s\">documentation ↗</a> for more information." : "Блокировка файлов во время передачи отключена, это может привести к состоянию гонки. Включите параметр 'filelocking.enabled' в config.php для избежания этой проблемы. За подробной информацией обратитесь к <a target=\"_blank\" href=\"%s\">документации</a>.", "System locale can not be set to a one which supports UTF-8." : "Невозможно установить системную локаль, поддерживающую UTF-8", "This means that there might be problems with certain characters in file names." : "Это значит, что могут быть проблемы с некоторыми символами в именах файлов.", "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Мы рекомендуем установить требуемые пакеты для вашей системы для поддержки одного из следующих языков: %s.", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Если ваша копия ownCloud установлена не в корне домена и использует системный планировщик cron, возможны проблемы с правильной генерацией URL. Чтобы избежать этого, установите опцию \"overwrite.cli.url\" в файле config.php равной пути папки установки. (Предположительно: \"%s\".)", "It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "Не удается запустить задачу планировщика через CLI. Произошли следующие технические ошибки:", + "Transactional file locking is using the database as locking backend, for best performance it's advised to configure a memcache for locking. See the <a target=\"_blank\" href=\"%s\">documentation ↗</a> for more information." : "Механизм блокировки файлов во время передачи основан на базе данных, для лучшей производительности рекомендуется использование memcache. За подробной информацией обратитесь к <a target=\"_blank\" href=\"%s\">документации</a>.", "Please double check the <a target=\"_blank\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"#log-section\">log</a>." : "Пожалуйста, перепроверьте <a href=\"%s\">инструкцию по установке</a> и проверьте ошибки или предупреждения в <a href=\"#log-section\">журнале</a>", + "All checks passed." : "Все проверки пройдены.", "Open documentation" : "Открыть документацию", "Allow apps to use the Share API" : "Позволить приложениям использовать API общего доступа", "Allow users to share via link" : "Разрешить пользователям публикации через ссылки", @@ -143,6 +147,7 @@ "Allow users to send mail notification for shared files to other users" : "Разрешить пользователям отправлять оповещение других пользователей об открытии доступа к файлам", "Exclude groups from sharing" : "Исключить группы из общего доступа", "These groups will still be able to receive shares, but not to initiate them." : "Эти группы смогут получать общие ресурсы, но не могут их создавать.", + "Allow username autocompletion in share dialog. If this is disabled the full username needs to be entered." : "Включить автоматическое завершение имен пользователей в окне общего доступа. Если отключено, то необходимо вводить полное имя вручную.", "Last cron job execution: %s." : "Последнее выполненное Cron задание: %s.", "Last cron job execution: %s. Something seems wrong." : "Последнее выполненное Cron задание: %s. Что-то кажется неправильным.", "Cron was not executed yet!" : "Задачи cron ещё не запускались!", @@ -150,6 +155,12 @@ "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php зарегистрирован в webcron и будет вызываться каждые 15 минут по http.", "Use system's cron service to call the cron.php file every 15 minutes." : "Использовать системный cron для вызова cron.php каждые 15 минут.", "Enable server-side encryption" : "Включить шифрование на стороне сервера", + "Please read carefully before activating server-side encryption: " : "Пожалуйста прочтите внимательно прежде чем включать шифрование на стороне сервера:", + "Server-side encryption is a one way process. Once encryption is enabled, all files from that point forward will be encrypted on the server and it will not be possible to disable encryption at a later date" : "Шифрование на стороне сервера необратимый процесс. После включения шифрования все файлы на сервере будут зашифрованы, отключение этой опции невозможно.", + "Anyone who has privileged access to your ownCloud server can decrypt your files either by intercepting requests or reading out user passwords which are stored in plain text session files. Server-side encryption does therefore not protect against malicious administrators but is useful for protecting your data on externally hosted storage." : "Любой привилегированный пользователь, который имеет доступ к серверу ownCloud может расшифровать файлы путем перехвата паролей от пользователей, которые хранятся в открытом в виде в файлах сессии. Шифрование на стороне сервера не защищает от администраторов-злоумышленников, но оно может быть полезно при использовании стороннего хостинга.", + "Depending on the actual encryption module the general file size is increased (by 35%% or more when using the default module)" : "В зависимости от модуля шифрования общий размер файла может увеличиться (на 35 или более %% при использовании модуля по умолчанию)", + "You should regularly backup all encryption keys to prevent permanent data loss (data/<user>/files_encryption and data/files_encryption)" : "Вам необходимо постоянно создавать резервную копию ключей шифрования с целью предотвращения потери данных (data/<user>/files_encryption и data/files_encryption)", + "This is the final warning: Do you really want to enable encryption?" : "Это последнее предупреждение: Вы действительно желаете включить шифрование?", "Enable encryption" : "Включить шифрование", "No encryption module loaded, please enable an encryption module in the app menu." : "Модуль шифрования не загружен, пожалуйста включите модуль шифрования в меню приложений.", "Select default encryption module:" : "Выберите модуль шифрования по умолчанию:", diff --git a/settings/l10n/zh_TW.js b/settings/l10n/zh_TW.js index 9f3946a930f..355533c0e67 100644 --- a/settings/l10n/zh_TW.js +++ b/settings/l10n/zh_TW.js @@ -29,6 +29,7 @@ OC.L10N.register( "Unable to change password" : "無法修改密碼", "Enabled" : "已啓用", "Not enabled" : "無啟動", + "Federated Cloud Sharing" : "聯盟式雲端分享", "Migration Completed" : "遷移已完成", "Group already exists." : "群組已存在", "Unable to add group." : "無法新增群組", @@ -98,13 +99,18 @@ OC.L10N.register( "System locale can not be set to a one which supports UTF-8." : "系統語系無法設定只支援 UTF-8", "This means that there might be problems with certain characters in file names." : "這個意思是指在檔名中使用一些字元可能會有問題", "Allow apps to use the Share API" : "允許 apps 使用分享 API", + "Enforce password protection" : "強制分享連結使用密碼保護", "Allow public uploads" : "允許任何人上傳", "Allow users to send mail notification for shared files" : "允許使用者寄送有關分享檔案的郵件通知", "days" : "天", + "Enforce expiration date" : "強制分享連結設置分享期限", "Allow resharing" : "允許轉貼分享", + "Allow users to send mail notification for shared files to other users" : "允許使用者寄送檔案分享通知給其他使用者", + "Exclude groups from sharing" : "禁止群組分享檔案", "Cron was not executed yet!" : "排程沒有執行!", "Execute one task with each page loaded" : "當頁面載入時,執行", "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "已經與 webcron 服務註冊好,將會每15分鐘呼叫 cron.php", + "Enable server-side encryption" : "啓用伺服器端加密", "This is used for sending out notifications." : "寄送通知用", "Send mode" : "寄送模式", "Encryption" : "加密", @@ -180,6 +186,7 @@ OC.L10N.register( "Language" : "語言", "Help translate" : "幫助翻譯", "Common Name" : "Common Name", + "Issued By" : "發行者:", "Show storage location" : "顯示儲存位置", "Show last log in" : "顯示最近登入", "Show user backend" : "顯示用戶後台", diff --git a/settings/l10n/zh_TW.json b/settings/l10n/zh_TW.json index ce87ffa614a..fad9ad99ed5 100644 --- a/settings/l10n/zh_TW.json +++ b/settings/l10n/zh_TW.json @@ -27,6 +27,7 @@ "Unable to change password" : "無法修改密碼", "Enabled" : "已啓用", "Not enabled" : "無啟動", + "Federated Cloud Sharing" : "聯盟式雲端分享", "Migration Completed" : "遷移已完成", "Group already exists." : "群組已存在", "Unable to add group." : "無法新增群組", @@ -96,13 +97,18 @@ "System locale can not be set to a one which supports UTF-8." : "系統語系無法設定只支援 UTF-8", "This means that there might be problems with certain characters in file names." : "這個意思是指在檔名中使用一些字元可能會有問題", "Allow apps to use the Share API" : "允許 apps 使用分享 API", + "Enforce password protection" : "強制分享連結使用密碼保護", "Allow public uploads" : "允許任何人上傳", "Allow users to send mail notification for shared files" : "允許使用者寄送有關分享檔案的郵件通知", "days" : "天", + "Enforce expiration date" : "強制分享連結設置分享期限", "Allow resharing" : "允許轉貼分享", + "Allow users to send mail notification for shared files to other users" : "允許使用者寄送檔案分享通知給其他使用者", + "Exclude groups from sharing" : "禁止群組分享檔案", "Cron was not executed yet!" : "排程沒有執行!", "Execute one task with each page loaded" : "當頁面載入時,執行", "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "已經與 webcron 服務註冊好,將會每15分鐘呼叫 cron.php", + "Enable server-side encryption" : "啓用伺服器端加密", "This is used for sending out notifications." : "寄送通知用", "Send mode" : "寄送模式", "Encryption" : "加密", @@ -178,6 +184,7 @@ "Language" : "語言", "Help translate" : "幫助翻譯", "Common Name" : "Common Name", + "Issued By" : "發行者:", "Show storage location" : "顯示儲存位置", "Show last log in" : "顯示最近登入", "Show user backend" : "顯示用戶後台", diff --git a/settings/personal.php b/settings/personal.php index 26e730d8089..8cbcf923a58 100644 --- a/settings/personal.php +++ b/settings/personal.php @@ -4,14 +4,15 @@ * @author Bart Visscher <bartv@thisnet.nl> * @author Björn Schießle <schiessle@owncloud.com> * @author Christopher Schäpers <kondou@ts.unde.re> - * @author Frank Karlitschek <frank@owncloud.org> * @author Georg Ehrke <georg@owncloud.com> * @author Jakob Sack <mail@jakobsack.de> * @author Jan-Christoph Borchardt <hey@jancborchardt.net> + * @author Joas Schilling <nickvergessen@owncloud.com> * @author Lukas Reschke <lukas@owncloud.com> * @author Marvin Thomas Rabe <mrabe@marvinrabe.de> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Volkan Gezer <volkangezer@gmail.com> @@ -45,6 +46,7 @@ OC_Util::addScript( 'settings', 'personal' ); OC_Util::addStyle( 'settings', 'settings' ); \OC_Util::addVendorScript('strengthify/jquery.strengthify'); \OC_Util::addVendorStyle('strengthify/strengthify'); +\OC_Util::addScript('files', 'jquery.iframe-transport'); \OC_Util::addScript('files', 'jquery.fileupload'); if ($config->getSystemValue('enable_avatars', true) === true) { \OC_Util::addVendorScript('jcrop/js/jquery.Jcrop'); @@ -118,7 +120,9 @@ $clients = array( $enableCertImport = false; $externalStorageEnabled = \OC::$server->getAppManager()->isEnabledForUser('files_external'); if ($externalStorageEnabled) { - $enableCertImport = true; + /** @var \OCA\Files_External\Service\BackendService $backendService */ + $backendService = \OC_Mount_Config::$app->getContainer()->query('\OCA\Files_External\Service\BackendService'); + $enableCertImport = $backendService->isUserMountingAllowed(); } diff --git a/settings/templates/personal.php b/settings/templates/personal.php index c0adaf9c5a3..0eba71d77d1 100644 --- a/settings/templates/personal.php +++ b/settings/templates/personal.php @@ -155,10 +155,11 @@ if($_['passwordChangeSupported']) { <div class="avatardiv"></div><br> <div class="warning hidden"></div> <?php if ($_['avatarChangeSupported']): ?> - <div class="inlineblock button" id="uploadavatarbutton"><?php p($l->t('Upload new')); ?></div> - <input type="file" class="hidden" name="files[]" id="uploadavatar"> + <label for="uploadavatar" class="inlineblock button" id="uploadavatarbutton"><?php p($l->t('Upload new')); ?></label> <div class="inlineblock button" id="selectavatar"><?php p($l->t('Select new from Files')); ?></div> - <div class="inlineblock button" id="removeavatar"><?php p($l->t('Remove image')); ?></div><br> + <div class="inlineblock button" id="removeavatar"><?php p($l->t('Remove image')); ?></div> + <input type="file" name="files[]" id="uploadavatar" class="hiddenuploadfield"> + <br> <?php p($l->t('Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB.')); ?> <?php else: ?> <?php p($l->t('Your avatar is provided by your original account.')); ?> @@ -239,8 +240,8 @@ if($_['passwordChangeSupported']) { </tbody> </table> <form class="uploadButton" method="post" action="<?php p($_['urlGenerator']->linkToRoute('settings.Certificate.addPersonalRootCertificate')); ?>" target="certUploadFrame"> - <input type="file" id="rootcert_import" name="rootcert_import" class="hidden"> - <input type="button" id="rootcert_import_button" value="<?php p($l->t('Import root certificate')); ?>"/> + <label for="rootcert_import" class="inlineblock button" id="rootcert_import_button"><?php p($l->t('Import root certificate')); ?></label> + <input type="file" id="rootcert_import" name="rootcert_import" class="hiddenuploadfield"> </form> </div> <?php endif; ?> diff --git a/settings/users.php b/settings/users.php index e0ef56f15c5..f16cbca2ae9 100644 --- a/settings/users.php +++ b/settings/users.php @@ -11,6 +11,8 @@ * @author Lukas Reschke <lukas@owncloud.com> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> + * @author Robin McCorkell <rmccorkell@karoshi.org.uk> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Stephan Peijnik <speijnik@anexia-it.com> * @author Thomas Müller <thomas.mueller@tmit.eu> * diff --git a/status.php b/status.php index 90250ff2615..f59dc16b6a2 100644 --- a/status.php +++ b/status.php @@ -4,6 +4,7 @@ * @author Christopher Schäpers <kondou@ts.unde.re> * @author Frank Karlitschek <frank@owncloud.org> * @author Jörn Friedrich Dreyer <jfd@butonic.de> + * @author Lukas Reschke <lukas@owncloud.com> * @author Masaki Kawabata Neto <masaki.kawabata@gmail.com> * @author Morris Jobke <hey@morrisjobke.de> * diff --git a/tests/lib/appframework/http/RequestTest.php b/tests/lib/appframework/http/RequestTest.php index e9a0755d1f8..bb9910b6a46 100644 --- a/tests/lib/appframework/http/RequestTest.php +++ b/tests/lib/appframework/http/RequestTest.php @@ -202,6 +202,27 @@ class RequestTest extends \Test\TestCase { $this->assertSame('Joey', $request['nickname']); } + public function testNotJsonPost() { + global $data; + $data = 'this is not valid json'; + $vars = array( + 'method' => 'POST', + 'server' => array('CONTENT_TYPE' => 'application/json; utf-8') + ); + + $request = new Request( + $vars, + $this->secureRandom, + $this->getMock('\OCP\Security\ICrypto'), + $this->config, + $this->stream + ); + + $this->assertEquals('POST', $request->method); + $result = $request->post; + // ensure there's no error attempting to decode the content + } + public function testPatch() { global $data; $data = http_build_query(array('name' => 'John Q. Public', 'nickname' => 'Joey'), '', '&'); @@ -497,6 +518,57 @@ class RequestTest extends \Test\TestCase { $this->assertSame('192.168.0.233', $request->getRemoteAddress()); } + /** + * @return array + */ + public function httpProtocolProvider() { + return [ + // Valid HTTP 1.0 + ['HTTP/1.0', 'HTTP/1.0'], + ['http/1.0', 'HTTP/1.0'], + ['HTTp/1.0', 'HTTP/1.0'], + + // Valid HTTP 1.1 + ['HTTP/1.1', 'HTTP/1.1'], + ['http/1.1', 'HTTP/1.1'], + ['HTTp/1.1', 'HTTP/1.1'], + + // Valid HTTP 2.0 + ['HTTP/2', 'HTTP/2'], + ['http/2', 'HTTP/2'], + ['HTTp/2', 'HTTP/2'], + + // Invalid + ['HTTp/394', 'HTTP/1.1'], + ['InvalidProvider/1.1', 'HTTP/1.1'], + [null, 'HTTP/1.1'], + ['', 'HTTP/1.1'], + + ]; + } + + /** + * @dataProvider httpProtocolProvider + * + * @param mixed $input + * @param string $expected + */ + public function testGetHttpProtocol($input, $expected) { + $request = new Request( + [ + 'server' => [ + 'SERVER_PROTOCOL' => $input, + ], + ], + $this->secureRandom, + $this->getMock('\OCP\Security\ICrypto'), + $this->config, + $this->stream + ); + + $this->assertSame($expected, $request->getHttpProtocol()); + } + public function testGetServerProtocolWithOverride() { $this->config ->expects($this->at(0)) diff --git a/tests/lib/connector/sabre/filesplugin.php b/tests/lib/connector/sabre/filesplugin.php index a4cf9f7bfb9..0aa62cab176 100644 --- a/tests/lib/connector/sabre/filesplugin.php +++ b/tests/lib/connector/sabre/filesplugin.php @@ -31,13 +31,24 @@ class FilesPlugin extends \Test\TestCase { */ private $plugin; + /** + * @var \OC\Files\View + */ + private $view; + public function setUp() { parent::setUp(); - $this->server = new \Sabre\DAV\Server(); + $this->server = $this->getMockBuilder('\Sabre\DAV\Server') + ->disableOriginalConstructor() + ->getMock(); $this->tree = $this->getMockBuilder('\Sabre\DAV\Tree') ->disableOriginalConstructor() ->getMock(); - $this->plugin = new \OC\Connector\Sabre\FilesPlugin($this->tree); + $this->view = $this->getMockBuilder('\OC\Files\View') + ->disableOriginalConstructor() + ->getMock(); + + $this->plugin = new \OC\Connector\Sabre\FilesPlugin($this->tree, $this->view); $this->plugin->initialize($this->server); } @@ -104,7 +115,7 @@ class FilesPlugin extends \Test\TestCase { } public function testGetPublicPermissions() { - $this->plugin = new \OC\Connector\Sabre\FilesPlugin($this->tree, true); + $this->plugin = new \OC\Connector\Sabre\FilesPlugin($this->tree, $this->view, true); $this->plugin->initialize($this->server); $propFind = new \Sabre\DAV\PropFind( @@ -196,4 +207,48 @@ class FilesPlugin extends \Test\TestCase { $this->assertEquals(200, $result[self::GETETAG_PROPERTYNAME]); } + /** + * Testcase from https://github.com/owncloud/core/issues/5251 + * + * |-FolderA + * |-text.txt + * |-test.txt + * + * FolderA is an incomming shared folder and there are no delete permissions. + * Thus moving /FolderA/test.txt to /test.txt should fail already on that check + * + * @expectedException \Sabre\DAV\Exception\Forbidden + * @expectedExceptionMessage FolderA/test.txt cannot be deleted + */ + public function testMoveSrcNotDeletable() { + $fileInfoFolderATestTXT = $this->getMockBuilder('\OCP\Files\FileInfo') + ->disableOriginalConstructor() + ->getMock(); + $fileInfoFolderATestTXT->expects($this->once()) + ->method('isDeletable') + ->willReturn(false); + + $this->view->expects($this->once()) + ->method('getFileInfo') + ->with('FolderA/test.txt') + ->willReturn($fileInfoFolderATestTXT); + + $this->plugin->checkMove('FolderA/test.txt', 'test.txt'); + } + + public function testMoveSrcDeletable() { + $fileInfoFolderATestTXT = $this->getMockBuilder('\OCP\Files\FileInfo') + ->disableOriginalConstructor() + ->getMock(); + $fileInfoFolderATestTXT->expects($this->once()) + ->method('isDeletable') + ->willReturn(true); + + $this->view->expects($this->once()) + ->method('getFileInfo') + ->with('FolderA/test.txt') + ->willReturn($fileInfoFolderATestTXT); + + $this->plugin->checkMove('FolderA/test.txt', 'test.txt'); + } } diff --git a/tests/lib/files/filesystem.php b/tests/lib/files/filesystem.php index cc01ed70b5d..15a7c235405 100644 --- a/tests/lib/files/filesystem.php +++ b/tests/lib/files/filesystem.php @@ -325,8 +325,14 @@ class Filesystem extends \Test\TestCase { $homeMount = \OC\Files\Filesystem::getStorage('/' . $userId . '/'); - $this->assertTrue($homeMount->instanceOfStorage('\OC\Files\Storage\Home')); - $this->assertEquals('home::' . $userId, $homeMount->getId()); + $this->assertTrue($homeMount->instanceOfStorage('\OCP\Files\IHomeStorage')); + if (getenv('RUN_OBJECTSTORE_TESTS')) { + $this->assertTrue($homeMount->instanceOfStorage('\OC\Files\ObjectStore\HomeObjectStoreStorage')); + $this->assertEquals('object::user:' . $userId, $homeMount->getId()); + } else { + $this->assertTrue($homeMount->instanceOfStorage('\OC\Files\Storage\Home')); + $this->assertEquals('home::' . $userId, $homeMount->getId()); + } \OC_User::deleteUser($userId); } @@ -336,6 +342,9 @@ class Filesystem extends \Test\TestCase { * for the user's mount point */ public function testLegacyHomeMount() { + if (getenv('RUN_OBJECTSTORE_TESTS')) { + $this->markTestSkipped('legacy storage unrelated to objectstore environments'); + } $datadir = \OC_Config::getValue("datadirectory", \OC::$SERVERROOT . "/data"); $userId = $this->getUniqueID('user_'); @@ -380,7 +389,7 @@ class Filesystem extends \Test\TestCase { \OC\Files\Filesystem::getMountPoint('/' . $userId . '/cache') ); list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath('/' . $userId . '/cache'); - $this->assertTrue($storage->instanceOfStorage('\OC\Files\Storage\Home')); + $this->assertTrue($storage->instanceOfStorage('\OCP\Files\IHomeStorage')); $this->assertEquals('cache', $internalPath); \OC_User::deleteUser($userId); diff --git a/tests/lib/files/node/folder.php b/tests/lib/files/node/folder.php index b30f352847d..8c98256575e 100644 --- a/tests/lib/files/node/folder.php +++ b/tests/lib/files/node/folder.php @@ -421,6 +421,45 @@ class Folder extends \Test\TestCase { $this->assertEquals('/foo', $result[0]->getPath()); } + public function testSearchInStorageRoot() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + $storage = $this->getMock('\OC\Files\Storage\Storage'); + $cache = $this->getMock('\OC\Files\Cache\Cache', array(), array('')); + + $storage->expects($this->once()) + ->method('getCache') + ->will($this->returnValue($cache)); + + $cache->expects($this->once()) + ->method('search') + ->with('%qw%') + ->will($this->returnValue(array( + array('fileid' => 3, 'path' => 'foo/qwerty', 'name' => 'qwerty', 'size' => 200, 'mtime' => 55, 'mimetype' => 'text/plain') + ))); + + $root->expects($this->once()) + ->method('getMountsIn') + ->with('/bar') + ->will($this->returnValue(array())); + + $view->expects($this->once()) + ->method('resolvePath') + ->will($this->returnValue(array($storage, ''))); + + $node = new \OC\Files\Node\Folder($root, $view, '/bar'); + $result = $node->search('qw'); + $this->assertEquals(1, count($result)); + $this->assertEquals('/bar/foo/qwerty', $result[0]->getPath()); + } + public function testSearchByTag() { $manager = $this->getMock('\OC\Files\Mount\Manager'); /** diff --git a/tests/lib/files/objectstore/swift.php b/tests/lib/files/objectstore/swift.php index 0aaf7d906dd..136d8d18039 100644 --- a/tests/lib/files/objectstore/swift.php +++ b/tests/lib/files/objectstore/swift.php @@ -23,9 +23,11 @@ namespace OCA\ObjectStore\Tests\Unit; use OC\Files\ObjectStore\ObjectStoreStorage; use OC\Files\ObjectStore\Swift as ObjectStoreToTest; -//class Swift extends PHPUnit_Framework_TestCase { class Swift extends \Test\Files\Storage\Storage { + /** + * @var ObjectStoreToTest + */ private $objectStorage; protected function setUp() { @@ -35,9 +37,6 @@ class Swift extends \Test\Files\Storage\Storage { $this->markTestSkipped('objectstore tests are unreliable in some environments'); } - \OC_App::disable('files_sharing'); - \OC_App::disable('files_versions'); - // reset backend \OC_User::clearBackends(); \OC_User::useBackend('database'); @@ -50,28 +49,15 @@ class Swift extends \Test\Files\Storage\Storage { } // main test user - $userName = 'test'; \OC_Util::tearDownFS(); \OC_User::setUserId(''); \OC\Files\Filesystem::tearDown(); \OC_User::setUserId('test'); - $testContainer = 'oc-test-container-'.substr( md5(rand()), 0, 7); - - $params = array( - 'username' => 'facebook100000330192569', - 'password' => 'Dbdj1sXnRSHxIGc4', - 'container' => $testContainer, - 'autocreate' => true, - 'region' => 'RegionOne', //required, trystack defaults to 'RegionOne' - 'url' => 'http://8.21.28.222:5000/v2.0', // The Identity / Keystone endpoint - 'tenantName' => 'facebook100000330192569', // required on trystack - 'serviceName' => 'swift', //trystack uses swift by default, the lib defaults to 'cloudFiles' if omitted - 'user' => \OC_User::getManager()->get($userName) - ); - $this->objectStorage = new ObjectStoreToTest($params); - $params['objectstore'] = $this->objectStorage; - $this->instance = new ObjectStoreStorage($params); + $config = \OC::$server->getConfig()->getSystemValue('objectstore'); + $this->objectStorage = new ObjectStoreToTest($config['arguments']); + $config['objectstore'] = $this->objectStorage; + $this->instance = new ObjectStoreStorage($config); } protected function tearDown() { @@ -81,6 +67,10 @@ class Swift extends \Test\Files\Storage\Storage { $this->objectStorage->deleteContainer(true); $this->instance->getCache()->clear(); + $users = array('test'); + foreach($users as $userName) { + \OC_User::deleteUser($userName); + } parent::tearDown(); } diff --git a/tests/lib/share/share.php b/tests/lib/share/share.php index 2ca54390e65..4cb0577cc8c 100644 --- a/tests/lib/share/share.php +++ b/tests/lib/share/share.php @@ -405,6 +405,7 @@ class Test_Share extends \Test\TestCase { $view->mkdir('files_trashbin/files'); $fileInfo = $view->getFileInfo('files/test/sub'); + $this->assertInstanceOf('\OC\Files\FileInfo', $fileInfo); $fileId = $fileInfo->getId(); $this->assertTrue( @@ -509,6 +510,7 @@ class Test_Share extends \Test\TestCase { $view->mkdir('files/test/sub1/sub2'); $fileInfo = $view->getFileInfo('files/test/sub1'); + $this->assertInstanceOf('\OC\Files\FileInfo', $fileInfo); $fileId = $fileInfo->getId(); $this->assertTrue( @@ -521,6 +523,7 @@ class Test_Share extends \Test\TestCase { $this->assertEquals(\OCP\Constants::PERMISSION_READ + \OCP\Constants::PERMISSION_CREATE, $result['permissions']); $fileInfo = $view->getFileInfo('files/test/sub1/sub2'); + $this->assertInstanceOf('\OC\Files\FileInfo', $fileInfo); $fileId = $fileInfo->getId(); $this->assertTrue( @@ -541,9 +544,11 @@ class Test_Share extends \Test\TestCase { $view->file_put_contents('files/test/sub1/file.txt', 'abc'); $folderInfo = $view->getFileInfo('files/test/sub1'); + $this->assertInstanceOf('\OC\Files\FileInfo', $folderInfo); $folderId = $folderInfo->getId(); $fileInfo = $view->getFileInfo('files/test/sub1/file.txt'); + $this->assertInstanceOf('\OC\Files\FileInfo', $fileInfo); $fileId = $fileInfo->getId(); $this->assertTrue( diff --git a/tests/objectstore/entrypoint.sh b/tests/objectstore/entrypoint.sh new file mode 100755 index 00000000000..b490d760a2f --- /dev/null +++ b/tests/objectstore/entrypoint.sh @@ -0,0 +1,271 @@ +#!/bin/bash +set -e + +: ${CLUSTER:=ceph} +: ${RGW_NAME:=$(hostname -s)} +: ${MON_NAME:=$(hostname -s)} +: ${RGW_CIVETWEB_PORT:=80} +: ${OSD_SIZE:=100} + +: ${KEYSTONE_ADMIN_TOKEN:=admin} +: ${KEYSTONE_ADMIN_PORT:=35357} +: ${KEYSTONE_PUBLIC_PORT:=5001} + +: ${KEYSTONE_SERVICE:=${CLUSTER}} +: ${KEYSTONE_ENDPOINT_REGION:=region} + +: ${KEYSTONE_ADMIN_USER:=admin} +: ${KEYSTONE_ADMIN_TENANT:=admin} +: ${KEYSTONE_ADMIN_PASS:=admin} + +ip_address=$(head -n1 /etc/hosts | cut -d" " -f1) +: ${MON_IP:=${ip_address}} +subnet=$(ip route | grep "src ${ip_address}" | cut -d" " -f1) +: ${CEPH_NETWORK:=${subnet}} + +####### +# MON # +####### + +if [ ! -n "$CEPH_NETWORK" ]; then + echo "ERROR- CEPH_NETWORK must be defined as the name of the network for the OSDs" + exit 1 +fi + +if [ ! -n "$MON_IP" ]; then + echo "ERROR- MON_IP must be defined as the IP address of the monitor" + exit 1 +fi + +# bootstrap MON +if [ ! -e /etc/ceph/ceph.conf ]; then + fsid=$(uuidgen) + cat <<ENDHERE >/etc/ceph/${CLUSTER}.conf +[global] +fsid = $fsid +mon initial members = ${MON_NAME} +mon host = ${MON_IP} +auth cluster required = cephx +auth service required = cephx +auth client required = cephx +osd crush chooseleaf type = 0 +osd journal size = 100 +osd pool default pg num = 8 +osd pool default pgp num = 8 +osd pool default size = 1 +public network = ${CEPH_NETWORK} +cluster network = ${CEPH_NETWORK} +debug ms = 1 + +[mon] +debug mon = 20 +debug paxos = 20 +debug auth = 20 + +[osd] +debug osd = 20 +debug filestore = 20 +debug journal = 20 +debug monc = 20 + +[mds] +debug mds = 20 +debug mds balancer = 20 +debug mds log = 20 +debug mds migrator = 20 + +[client.radosgw.gateway] +rgw keystone url = http://${MON_IP}:${KEYSTONE_ADMIN_PORT} +rgw keystone admin token = ${KEYSTONE_ADMIN_TOKEN} +rgw keystone accepted roles = _member_ +ENDHERE + + # Generate administrator key + ceph-authtool /etc/ceph/${CLUSTER}.client.admin.keyring --create-keyring --gen-key -n client.admin --set-uid=0 --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow' + + # Generate the mon. key + ceph-authtool /etc/ceph/${CLUSTER}.mon.keyring --create-keyring --gen-key -n mon. --cap mon 'allow *' + + # Generate initial monitor map + monmaptool --create --add ${MON_NAME} ${MON_IP} --fsid ${fsid} /etc/ceph/monmap +fi + +# If we don't have a monitor keyring, this is a new monitor +if [ ! -e /var/lib/ceph/mon/${CLUSTER}-${MON_NAME}/keyring ]; then + + if [ ! -e /etc/ceph/${CLUSTER}.client.admin.keyring ]; then + echo "ERROR- /etc/ceph/${CLUSTER}.client.admin.keyring must exist; get it from your existing mon" + exit 2 + fi + + if [ ! -e /etc/ceph/${CLUSTER}.mon.keyring ]; then + echo "ERROR- /etc/ceph/${CLUSTER}.mon.keyring must exist. You can extract it from your current monitor by running 'ceph auth get mon. -o /tmp/${CLUSTER}.mon.keyring'" + exit 3 + fi + + if [ ! -e /etc/ceph/monmap ]; then + echo "ERROR- /etc/ceph/monmap must exist. You can extract it from your current monitor by running 'ceph mon getmap -o /tmp/monmap'" + exit 4 + fi + + # Import the client.admin keyring and the monitor keyring into a new, temporary one + ceph-authtool /tmp/${CLUSTER}.mon.keyring --create-keyring --import-keyring /etc/ceph/${CLUSTER}.client.admin.keyring + ceph-authtool /tmp/${CLUSTER}.mon.keyring --import-keyring /etc/ceph/${CLUSTER}.mon.keyring + + # Make the monitor directory + mkdir -p /var/lib/ceph/mon/${CLUSTER}-${MON_NAME} + + # Prepare the monitor daemon's directory with the map and keyring + ceph-mon --mkfs -i ${MON_NAME} --monmap /etc/ceph/monmap --keyring /tmp/${CLUSTER}.mon.keyring + + # Clean up the temporary key + rm /tmp/${CLUSTER}.mon.keyring +fi + +# start MON +ceph-mon -i ${MON_NAME} --public-addr ${MON_IP}:6789 + +# change replica size +ceph osd pool set rbd size 1 + + +####### +# OSD # +####### + +if [ ! -e /var/lib/ceph/osd/${CLUSTER}-0/keyring ]; then + # bootstrap OSD + mkdir -p /var/lib/ceph/osd/${CLUSTER}-0 + # HACK create btrfs loopback device + echo "creating osd storage image" + dd if=/dev/zero of=/tmp/osddata bs=1M count=${OSD_SIZE} + mkfs.btrfs /tmp/osddata + echo "mounting via loopback" + mount -o loop /tmp/osddata /var/lib/ceph/osd/${CLUSTER}-0 + echo "now mounted:" + mount + # end HACK + echo "creating osd" + ceph osd create + echo "creating osd filesystem" + ceph-osd -i 0 --mkfs + echo "creating osd keyring" + ceph auth get-or-create osd.0 osd 'allow *' mon 'allow profile osd' -o /var/lib/ceph/osd/${CLUSTER}-0/keyring + echo "configuring osd crush" + ceph osd crush add 0 1 root=default host=$(hostname -s) + echo "adding osd keyring" + ceph-osd -i 0 -k /var/lib/ceph/osd/${CLUSTER}-0/keyring +fi + +# start OSD +echo "starting osd" +ceph-osd --cluster=${CLUSTER} -i 0 + +#sleep 10 + +####### +# MDS # +####### + +if [ ! -e /var/lib/ceph/mds/${CLUSTER}-0/keyring ]; then + # create ceph filesystem + echo "creating osd pool" + ceph osd pool create cephfs_data 8 + echo "creating osd pool metadata" + ceph osd pool create cephfs_metadata 8 + echo "creating cephfs" + ceph fs new cephfs cephfs_metadata cephfs_data + + # bootstrap MDS + mkdir -p /var/lib/ceph/mds/${CLUSTER}-0 + echo "creating mds auth" + ceph auth get-or-create mds.0 mds 'allow' osd 'allow *' mon 'allow profile mds' > /var/lib/ceph/mds/${CLUSTER}-0/keyring +fi + +# start MDS +echo "starting mds" +ceph-mds --cluster=${CLUSTER} -i 0 + +#sleep 10 + + +####### +# RGW # +####### + +if [ ! -e /var/lib/ceph/radosgw/${RGW_NAME}/keyring ]; then + # bootstrap RGW + mkdir -p /var/lib/ceph/radosgw/${RGW_NAME} + echo "creating rgw auth" + ceph auth get-or-create client.radosgw.gateway osd 'allow rwx' mon 'allow rw' -o /var/lib/ceph/radosgw/${RGW_NAME}/keyring +fi + +# start RGW +echo "starting rgw" +radosgw -c /etc/ceph/ceph.conf -n client.radosgw.gateway -k /var/lib/ceph/radosgw/${RGW_NAME}/keyring --rgw-socket-path="" --rgw-frontends="civetweb port=${RGW_CIVETWEB_PORT}" + + +####### +# API # +####### + +# start ceph-rest-api +echo "starting rest api" +ceph-rest-api -n client.admin & + +############ +# Keystone # +############ + +if [ ! -e /etc/keystone/${CLUSTER}.conf ]; then + cat <<ENDHERE > /etc/keystone/${CLUSTER}.conf +[DEFAULT] +admin_token=${KEYSTONE_ADMIN_TOKEN} +admin_port=${KEYSTONE_ADMIN_PORT} +public_port=${KEYSTONE_PUBLIC_PORT} + +[database] +connection = sqlite:////var/lib/keystone/keystone.db +ENDHERE + + # start Keystone + echo "starting keystone" + keystone-all --config-file /etc/keystone/${CLUSTER}.conf & + + # wait until up + while ! nc ${MON_IP} ${KEYSTONE_ADMIN_PORT} </dev/null; do + sleep 1 + done + + export OS_SERVICE_TOKEN=${KEYSTONE_ADMIN_TOKEN} + export OS_SERVICE_ENDPOINT=http://${MON_IP}:${KEYSTONE_ADMIN_PORT}/v2.0 + + echo "creating keystone service ${KEYSTONE_SERVICE}" + keystone service-create --name ${KEYSTONE_SERVICE} --type object-store + echo "creating keystone endpoint ${KEYSTONE_SERVICE}" + keystone endpoint-create --service ${KEYSTONE_SERVICE} \ + --region ${KEYSTONE_ENDPOINT_REGION} \ + --publicurl http://${MON_IP}:${RGW_CIVETWEB_PORT}/swift/v1 \ + --internalurl http://${MON_IP}:${RGW_CIVETWEB_PORT}/swift/v1 \ + --adminurl http://${MON_IP}:${RGW_CIVETWEB_PORT}/swift/v1 + + echo "creating keystone user ${KEYSTONE_ADMIN_USER}" + keystone user-create --name=${KEYSTONE_ADMIN_USER} --pass=${KEYSTONE_ADMIN_PASS} --email=dev@null.com + echo "creating keystone tenant ${KEYSTONE_ADMIN_TENANT}" + keystone tenant-create --name=${KEYSTONE_ADMIN_TENANT} --description=admin + echo "adding keystone role _member_" + keystone user-role-add --user=${KEYSTONE_ADMIN_USER} --tenant=${KEYSTONE_ADMIN_TENANT} --role=_member_ + + echo "creating keystone role admin" + keystone role-create --name=admin + echo "adding keystone role admin" + keystone user-role-add --user=${KEYSTONE_ADMIN_USER} --tenant=${KEYSTONE_ADMIN_TENANT} --role=admin +fi + + +######### +# WATCH # +######### + +echo "watching ceph" +exec ceph -w
\ No newline at end of file diff --git a/tests/objectstore/start-swift-ceph.sh b/tests/objectstore/start-swift-ceph.sh new file mode 100755 index 00000000000..91a813f8bb3 --- /dev/null +++ b/tests/objectstore/start-swift-ceph.sh @@ -0,0 +1,108 @@ +#!/bin/bash +# +# ownCloud +# +# This script start a docker container to test the files_external tests +# against. It will also change the files_external config to use the docker +# container as testing environment. This is reverted in the stop step.W +# +# Set environment variable DEBUG to print config file +# +# @author Morris Jobke +# @author Robin McCorkell +# @copyright 2015 ownCloud + +if ! command -v docker >/dev/null 2>&1; then + echo "No docker executable found - skipped docker setup" + exit 0; +fi + +echo "Docker executable found - setup docker" + + +docker_image=xenopathic/ceph-keystone + +echo "Fetch recent ${docker_image} docker image" +docker pull ${docker_image} + +# retrieve current folder to place the config in the parent folder +thisFolder="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +port=5034 + +user=test +pass=testing +tenant=testenant +region=testregion +service=testceph + +container=`docker run -d \ + -e KEYSTONE_PUBLIC_PORT=${port} \ + -e KEYSTONE_ADMIN_USER=${user} \ + -e KEYSTONE_ADMIN_PASS=${pass} \ + -e KEYSTONE_ADMIN_TENANT=${tenant} \ + -e KEYSTONE_ENDPOINT_REGION=${region} \ + -e KEYSTONE_SERVICE=${service} \ + -e OSD_SIZE=300 \ + -v ${thisFolder}/entrypoint.sh:/entrypoint.sh \ + --privileged \ + --entrypoint /entrypoint.sh ${docker_image}` + +host=`docker inspect $container | grep IPAddress | cut -d '"' -f 4` + + +echo "${docker_image} container: $container" + +# put container IDs into a file to drop them after the test run (keep in mind that multiple tests run in parallel on the same host) +echo $container >> $thisFolder/dockerContainerCeph.$EXECUTOR_NUMBER.swift + +echo -n "Waiting for ceph initialization" +starttime=$(date +%s) +# support for GNU netcat and BSD netcat +while ! (nc -c -w 1 ${host} 80 </dev/null >&/dev/null \ + || nc -w 1 ${host} 80 </dev/null >&/dev/null); do + sleep 1 + echo -n '.' + if (( $(date +%s) > starttime + 160 )); then + echo + echo "[ERROR] Waited 120 seconds, no response" >&2 + exit 1 + fi +done +echo +sleep 20 # the keystone server also needs some time to fully initialize + +cat > $thisFolder/swift.config.php <<DELIM +<?php +\$CONFIG = array ( +'objectstore' => array( + 'class' => 'OC\\Files\\ObjectStore\\Swift', + 'arguments' => array( + 'username' => '$user', + 'password' => '$pass', + 'container' => 'owncloud-autotest$EXECUTOR_NUMBER', + 'autocreate' => true, + 'region' => '$region', + 'url' => 'http://$host:$port/v2.0', + 'tenantName' => '$tenant', + 'serviceName' => '$service', + ), +), +); + +DELIM + +if [ -n "$DEBUG" ]; then + echo "############## DEBUG info ###############" + echo "### Docker info" + docker info + echo "### Docker images" + docker images + echo "### current mountpoints" + mount + echo "### contents of $thisFolder/swift.config.php" + cat $thisFolder/swift.config.php + echo "### contents of $thisFolder/dockerContainerCeph.$EXECUTOR_NUMBER.swift" + cat $thisFolder/dockerContainerCeph.$EXECUTOR_NUMBER.swift + echo "############## DEBUG info end ###########" +fi diff --git a/tests/objectstore/stop-swift-ceph.sh b/tests/objectstore/stop-swift-ceph.sh new file mode 100755 index 00000000000..fcf5fdfdcd7 --- /dev/null +++ b/tests/objectstore/stop-swift-ceph.sh @@ -0,0 +1,38 @@ +#!/bin/bash +# +# ownCloud +# +# This script stops the docker container the files_external tests were run +# against. It will also revert the config changes done in start step. +# +# @author Morris Jobke +# @author Robin McCorkell +# @copyright 2015 ownCloud + +if ! command -v docker >/dev/null 2>&1; then + echo "No docker executable found - skipped docker stop" + exit 0; +fi + +echo "Docker executable found - stop and remove docker containers" + +# retrieve current folder to remove the config from the parent folder +thisFolder=`echo $0 | replace "stop-swift-ceph.sh" ""` + +if [ -z "$thisFolder" ]; then + thisFolder="." +fi; + +# stopping and removing docker containers +for container in `cat $thisFolder/dockerContainerCeph.$EXECUTOR_NUMBER.swift`; do + if [ -n "$DEBUG" ]; then + docker logs $container + fi + echo "Stopping and removing docker container $container" + # kills running container and removes it + docker rm -f $container +done; + +# cleanup +rm $thisFolder/swift.config.php +rm $thisFolder/dockerContainerCeph.$EXECUTOR_NUMBER.swift
\ No newline at end of file diff --git a/tests/settings/controller/CheckSetupControllerTest.php b/tests/settings/controller/CheckSetupControllerTest.php index c453822464f..ebba18de5fd 100644 --- a/tests/settings/controller/CheckSetupControllerTest.php +++ b/tests/settings/controller/CheckSetupControllerTest.php @@ -293,6 +293,10 @@ class CheckSetupControllerTest extends TestCase { ->will($this->returnValue('SomeProvider')); $this->config->expects($this->at(2)) ->method('getSystemValue') + ->with('has_internet_connection', true) + ->will($this->returnValue(false)); + $this->config->expects($this->at(3)) + ->method('getSystemValue') ->with('trusted_proxies', []) ->willReturn(['1.2.3.4']); @@ -365,10 +369,13 @@ class CheckSetupControllerTest extends TestCase { ]) ->setMethods(null)->getMock(); - $this->assertArrayHasKey('ssl_version', $checkSetupController->getCurlVersion()); + $this->assertArrayHasKey('ssl_version', $this->invokePrivate($checkSetupController, 'getCurlVersion')); } public function testIsUsedTlsLibOutdatedWithAnotherLibrary() { + $this->config->expects($this->any()) + ->method('getSystemValue') + ->will($this->returnValue(true)); $this->checkSetupController ->expects($this->once()) ->method('getCurlVersion') @@ -377,6 +384,9 @@ class CheckSetupControllerTest extends TestCase { } public function testIsUsedTlsLibOutdatedWithMisbehavingCurl() { + $this->config->expects($this->any()) + ->method('getSystemValue') + ->will($this->returnValue(true)); $this->checkSetupController ->expects($this->once()) ->method('getCurlVersion') @@ -385,10 +395,8 @@ class CheckSetupControllerTest extends TestCase { } public function testIsUsedTlsLibOutdatedWithOlderOpenSsl() { - $this->config - ->expects($this->once()) + $this->config->expects($this->any()) ->method('getSystemValue') - ->with('appstoreenabled', true) ->will($this->returnValue(true)); $this->checkSetupController ->expects($this->once()) @@ -399,10 +407,10 @@ class CheckSetupControllerTest extends TestCase { public function testIsUsedTlsLibOutdatedWithOlderOpenSslAndWithoutAppstore() { $this->config - ->expects($this->once()) + ->expects($this->at(0)) ->method('getSystemValue') - ->with('appstoreenabled', true) - ->will($this->returnValue(false)); + ->with('has_internet_connection', true) + ->will($this->returnValue(true)); $this->checkSetupController ->expects($this->once()) ->method('getCurlVersion') @@ -411,10 +419,8 @@ class CheckSetupControllerTest extends TestCase { } public function testIsUsedTlsLibOutdatedWithOlderOpenSsl1() { - $this->config - ->expects($this->once()) + $this->config->expects($this->any()) ->method('getSystemValue') - ->with('appstoreenabled', true) ->will($this->returnValue(true)); $this->checkSetupController ->expects($this->once()) @@ -424,6 +430,9 @@ class CheckSetupControllerTest extends TestCase { } public function testIsUsedTlsLibOutdatedWithMatchingOpenSslVersion() { + $this->config->expects($this->any()) + ->method('getSystemValue') + ->will($this->returnValue(true)); $this->checkSetupController ->expects($this->once()) ->method('getCurlVersion') @@ -432,6 +441,9 @@ class CheckSetupControllerTest extends TestCase { } public function testIsUsedTlsLibOutdatedWithMatchingOpenSslVersion1() { + $this->config->expects($this->any()) + ->method('getSystemValue') + ->will($this->returnValue(true)); $this->checkSetupController ->expects($this->once()) ->method('getCurlVersion') @@ -440,10 +452,8 @@ class CheckSetupControllerTest extends TestCase { } public function testIsBuggyNss400() { - $this->config - ->expects($this->once()) + $this->config->expects($this->any()) ->method('getSystemValue') - ->with('appstoreenabled', true) ->will($this->returnValue(true)); $this->checkSetupController ->expects($this->once()) @@ -476,6 +486,9 @@ class CheckSetupControllerTest extends TestCase { public function testIsBuggyNss200() { + $this->config->expects($this->any()) + ->method('getSystemValue') + ->will($this->returnValue(true)); $this->checkSetupController ->expects($this->once()) ->method('getCurlVersion') @@ -504,4 +517,83 @@ class CheckSetupControllerTest extends TestCase { $this->assertSame('', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); } + + public function testIsUsedTlsLibOutdatedWithInternetDisabled() { + $this->config + ->expects($this->at(0)) + ->method('getSystemValue') + ->with('has_internet_connection', true) + ->will($this->returnValue(false)); + $this->assertSame('', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); + } + + public function testIsUsedTlsLibOutdatedWithAppstoreDisabledAndServerToServerSharingEnabled() { + // Appstore is disabled by default in EE + $appStoreDefault = false; + if (\OC_Util::getEditionString() === '') { + $appStoreDefault = true; + } + + $this->config + ->expects($this->at(0)) + ->method('getSystemValue') + ->with('has_internet_connection', true) + ->will($this->returnValue(true)); + $this->config + ->expects($this->at(1)) + ->method('getSystemValue') + ->with('appstoreenabled', $appStoreDefault) + ->will($this->returnValue(false)); + $this->config + ->expects($this->at(2)) + ->method('getAppValue') + ->with('files_sharing', 'outgoing_server2server_share_enabled', 'yes') + ->will($this->returnValue('no')); + $this->config + ->expects($this->at(3)) + ->method('getAppValue') + ->with('files_sharing', 'incoming_server2server_share_enabled', 'yes') + ->will($this->returnValue('yes')); + + $this->checkSetupController + ->expects($this->once()) + ->method('getCurlVersion') + ->will($this->returnValue([])); + $this->assertSame('', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); + } + + public function testIsUsedTlsLibOutdatedWithAppstoreDisabledAndServerToServerSharingDisabled() { + // Appstore is disabled by default in EE + $appStoreDefault = false; + if (\OC_Util::getEditionString() === '') { + $appStoreDefault = true; + } + + $this->config + ->expects($this->at(0)) + ->method('getSystemValue') + ->with('has_internet_connection', true) + ->will($this->returnValue(true)); + $this->config + ->expects($this->at(1)) + ->method('getSystemValue') + ->with('appstoreenabled', $appStoreDefault) + ->will($this->returnValue(false)); + $this->config + ->expects($this->at(2)) + ->method('getAppValue') + ->with('files_sharing', 'outgoing_server2server_share_enabled', 'yes') + ->will($this->returnValue('no')); + $this->config + ->expects($this->at(3)) + ->method('getAppValue') + ->with('files_sharing', 'incoming_server2server_share_enabled', 'yes') + ->will($this->returnValue('no')); + + $this->checkSetupController + ->expects($this->never()) + ->method('getCurlVersion') + ->will($this->returnValue([])); + $this->assertSame('', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); + } } diff --git a/version.php b/version.php index 7ba6c3d93bc..458cb6389f5 100644 --- a/version.php +++ b/version.php @@ -1,7 +1,9 @@ <?php /** + * @author C Montero-Luque <cml@owncloud.com> * @author Frank Karlitschek <frank@owncloud.org> * @author Lukas Reschke <lukas@owncloud.com> + * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2015, ownCloud, Inc. @@ -23,10 +25,10 @@ // We only can count up. The 4. digit is only for the internal patchlevel to trigger DB upgrades // between betas, final and RCs. This is _not_ the public version number. Reset minor/patchlevel // when updating major/minor version number. -$OC_Version = array(8, 2, 0, 8); +$OC_Version = array(8, 2, 0, 9); // The human readable string -$OC_VersionString = '8.2 beta1'; +$OC_VersionString = '8.2 RC1'; $OC_VersionCanBeUpgradedFrom = array(8, 1); |