summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/base.php54
-rw-r--r--lib/l10n/ca.php1
-rw-r--r--lib/l10n/cs_CZ.php1
-rw-r--r--lib/l10n/da.php1
-rw-r--r--lib/l10n/de.php2
-rw-r--r--lib/l10n/de_CH.php1
-rw-r--r--lib/l10n/de_DE.php2
-rw-r--r--lib/l10n/el.php3
-rw-r--r--lib/l10n/en_GB.php2
-rw-r--r--lib/l10n/es.php1
-rw-r--r--lib/l10n/es_AR.php1
-rw-r--r--lib/l10n/et_EE.php2
-rw-r--r--lib/l10n/eu.php1
-rw-r--r--lib/l10n/fr.php1
-rw-r--r--lib/l10n/gl.php2
-rw-r--r--lib/l10n/hu_HU.php1
-rw-r--r--lib/l10n/it.php2
-rw-r--r--lib/l10n/ja_JP.php1
-rw-r--r--lib/l10n/ko.php1
-rw-r--r--lib/l10n/lt_LT.php1
-rw-r--r--lib/l10n/lv.php1
-rw-r--r--lib/l10n/nl.php1
-rw-r--r--lib/l10n/pl.php1
-rw-r--r--lib/l10n/pt_BR.php2
-rw-r--r--lib/l10n/pt_PT.php1
-rw-r--r--lib/l10n/ru.php2
-rw-r--r--lib/l10n/ru_RU.php1
-rw-r--r--lib/l10n/sk_SK.php1
-rw-r--r--lib/l10n/sl.php6
-rw-r--r--lib/l10n/sv.php1
-rw-r--r--lib/l10n/tr.php2
-rw-r--r--lib/l10n/zh_TW.php1
-rw-r--r--lib/private/avatar.php8
-rw-r--r--lib/private/avatarmanager.php26
-rw-r--r--lib/private/connector/sabre/filesplugin.php14
-rw-r--r--lib/private/defaults.php50
-rw-r--r--lib/private/files.php10
-rw-r--r--lib/private/files/cache/cache.php2
-rw-r--r--lib/private/files/cache/updater.php2
-rw-r--r--lib/private/files/storage/common.php39
-rw-r--r--lib/private/files/storage/commontest.php2
-rw-r--r--lib/private/files/storage/home.php17
-rw-r--r--lib/private/files/storage/local.php8
-rw-r--r--lib/private/files/storage/mappedlocal.php8
-rw-r--r--lib/private/preview/movies.php10
-rwxr-xr-xlib/private/request.php16
-rw-r--r--lib/private/server.php12
-rw-r--r--lib/private/updater.php1
-rw-r--r--lib/private/user.php14
-rwxr-xr-xlib/private/util.php45
-rw-r--r--lib/public/activity/iconsumer.php5
-rw-r--r--lib/public/activity/imanager.php6
-rw-r--r--lib/public/appframework/app.php5
-rw-r--r--lib/public/appframework/controller.php7
-rw-r--r--lib/public/appframework/http.php8
-rw-r--r--lib/public/appframework/http/jsonresponse.php11
-rw-r--r--lib/public/appframework/http/response.php4
-rw-r--r--lib/public/appframework/http/templateresponse.php26
-rw-r--r--lib/public/appframework/iapi.php4
-rw-r--r--lib/public/appframework/middleware.php4
-rw-r--r--lib/public/authentication/iapachebackend.php5
-rw-r--r--lib/public/db.php2
-rw-r--r--lib/public/defaults.php28
-rw-r--r--lib/public/files/alreadyexistsexception.php8
-rw-r--r--lib/public/files/entitytoolargeexception.php8
-rw-r--r--lib/public/files/file.php5
-rw-r--r--lib/public/files/folder.php5
-rw-r--r--lib/public/files/invalidcontentexception.php8
-rw-r--r--lib/public/files/invalidpathexception.php8
-rw-r--r--lib/public/files/node.php5
-rw-r--r--lib/public/files/notenoughspaceexception.php8
-rw-r--r--lib/public/files/notfoundexception.php8
-rw-r--r--lib/public/files/notpermittedexception.php8
-rw-r--r--lib/public/files/storage.php5
-rw-r--r--lib/public/iaddressbook.php5
-rw-r--r--lib/public/iavatar.php38
-rw-r--r--lib/public/iavatarmanager.php23
-rw-r--r--lib/public/icontainer.php2
-rw-r--r--lib/public/idbconnection.php2
-rw-r--r--lib/public/iservercontainer.php6
-rw-r--r--lib/public/share.php6
81 files changed, 523 insertions, 135 deletions
diff --git a/lib/base.php b/lib/base.php
index f3983a3800f..2feedd81d8c 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -178,11 +178,19 @@ class OC {
if (file_exists(OC::$SERVERROOT . "/config/config.php")
and !is_writable(OC::$SERVERROOT . "/config/config.php")) {
$defaults = new OC_Defaults();
- OC_Template::printErrorPage(
- "Can't write into config directory!",
- 'This can usually be fixed by '
- .'<a href="' . \OC_Helper::linkToDocs('admin-dir_permissions') . '" target="_blank">giving the webserver write access to the config directory</a>.'
- );
+ if (self::$CLI) {
+ echo "Can't write into config directory!\n";
+ echo "This can usually be fixed by giving the webserver write access to the config directory\n";
+ echo "\n";
+ echo "See " . \OC_Helper::linkToDocs('admin-dir_permissions') . "\n";
+ exit;
+ } else {
+ OC_Template::printErrorPage(
+ "Can't write into config directory!",
+ 'This can usually be fixed by '
+ .'<a href="' . \OC_Helper::linkToDocs('admin-dir_permissions') . '" target="_blank">giving the webserver write access to the config directory</a>.'
+ );
+ }
}
}
@@ -230,6 +238,22 @@ class OC {
}
}
+ public static function checkSingleUserMode() {
+ $user = OC_User::getUserSession()->getUser();
+ $group = OC_Group::getManager()->get('admin');
+ if ($user && OC_Config::getValue('singleuser', false) && !$group->inGroup($user)) {
+ // send http status 503
+ header('HTTP/1.1 503 Service Temporarily Unavailable');
+ header('Status: 503 Service Temporarily Unavailable');
+ header('Retry-After: 120');
+
+ // render error page
+ $tmpl = new OC_Template('', 'singleuser.user', 'guest');
+ $tmpl->printPage();
+ die();
+ }
+ }
+
public static function checkUpgrade($showTemplate = true) {
if (OC_Config::getValue('installed', false)) {
$installedVersion = OC_Config::getValue('version', '0.0.0');
@@ -241,7 +265,7 @@ class OC {
$minimizerCSS->clearCache();
$minimizerJS = new OC_Minimizer_JS();
$minimizerJS->clearCache();
- OC_Util::addscript('update');
+ OC_Util::addScript('update');
$tmpl = new OC_Template('', 'update.admin', 'guest');
$tmpl->assign('version', OC_Util::getVersionString());
$tmpl->printPage();
@@ -480,7 +504,14 @@ class OC {
$errors = OC_Util::checkServer();
if (count($errors) > 0) {
- OC_Template::printGuestPage('', 'error', array('errors' => $errors));
+ if (self::$CLI) {
+ foreach ($errors as $error) {
+ echo $error['error']."\n";
+ echo $error['hint'] . "\n\n";
+ }
+ } else {
+ OC_Template::printGuestPage('', 'error', array('errors' => $errors));
+ }
exit;
}
@@ -559,12 +590,6 @@ class OC {
}
}
- // write error into log if locale can't be set
- if (OC_Util::isSetLocaleWorking() == false) {
- OC_Log::write('core',
- 'setting locale to en_US.UTF-8/en_US.UTF8 failed. Support is probably not installed on your system',
- OC_Log::ERROR);
- }
if (OC_Config::getValue('installed', false) && !self::checkUpgrade(false)) {
if (OC_Appconfig::getValue('core', 'backgroundjobs_mode', 'ajax') == 'ajax') {
OC_Util::addScript('backgroundjobs');
@@ -658,11 +683,12 @@ class OC {
// Test it the user is already authenticated using Apaches AuthType Basic... very usable in combination with LDAP
OC::tryBasicAuthLogin();
- if (!self::$CLI) {
+ if (!self::$CLI and (!isset($_GET["logout"]) or ($_GET["logout"] !== 'true'))) {
try {
if (!OC_Config::getValue('maintenance', false)) {
OC_App::loadApps();
}
+ self::checkSingleUserMode();
OC::getRouter()->match(OC_Request::getRawPathInfo());
return;
} catch (Symfony\Component\Routing\Exception\ResourceNotFoundException $e) {
diff --git a/lib/l10n/ca.php b/lib/l10n/ca.php
index f0cbe6a5a07..01457275cf2 100644
--- a/lib/l10n/ca.php
+++ b/lib/l10n/ca.php
@@ -16,7 +16,6 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "Els fitxers s'han de baixar d'un en un.",
"Back to Files" => "Torna a Fitxers",
"Selected files too large to generate zip file." => "Els fitxers seleccionats son massa grans per generar un fitxer zip.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Baixeu els fitxers en trossos petits, de forma separada, o pregunteu a l'administrador.",
"No source specified when installing app" => "No heu especificat la font en instalยทlar l'aplicaciรณ",
"No href specified when installing app from http" => "No heu especificat href en instalยทlar l'aplicaciรณ des de http",
"No path specified when installing app from local file" => "No heu seleccionat el camรญ en instalยทlar una aplicaciรณ des d'un fitxer local",
diff --git a/lib/l10n/cs_CZ.php b/lib/l10n/cs_CZ.php
index 0b09997ee2f..0e44dd2a4bd 100644
--- a/lib/l10n/cs_CZ.php
+++ b/lib/l10n/cs_CZ.php
@@ -16,7 +16,6 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "Soubory musรญ bรฝt stahovรกny jednotlivฤ›.",
"Back to Files" => "Zpฤ›t k souborลฏm",
"Selected files too large to generate zip file." => "Vybranรฉ soubory jsou pล™รญliลก velkรฉ pro vytvoล™enรญ ZIP souboru.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Stรกhnฤ›te soubory po menลกรญch ฤรกstech, samostatnฤ›, nebo se obraลฅte na sprรกvce.",
"No source specified when installing app" => "Nebyl zadรกn zdroj pล™i instalaci aplikace",
"No href specified when installing app from http" => "Nebyl zadรกn odkaz pro instalaci aplikace z HTTP",
"No path specified when installing app from local file" => "Nebyla zadรกna cesta pro instalaci aplikace z mรญstnรญho souboru",
diff --git a/lib/l10n/da.php b/lib/l10n/da.php
index bf233e0338d..f95aa30d7a0 100644
--- a/lib/l10n/da.php
+++ b/lib/l10n/da.php
@@ -16,7 +16,6 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "Filer skal downloades en for en.",
"Back to Files" => "Tilbage til Filer",
"Selected files too large to generate zip file." => "De markerede filer er for store til at generere en ZIP-fil.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Download filerne i smรฅ bider, seperat, eller kontakt venligst din administrator.",
"No source specified when installing app" => "Ingen kilde angivet under installation af app",
"No href specified when installing app from http" => "Ingen href angivet under installation af app via http",
"No path specified when installing app from local file" => "Ingen sti angivet under installation af app fra lokal fil",
diff --git a/lib/l10n/de.php b/lib/l10n/de.php
index 84543fa75d2..5b09d350a7d 100644
--- a/lib/l10n/de.php
+++ b/lib/l10n/de.php
@@ -16,7 +16,7 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "Die Dateien mรผssen einzeln heruntergeladen werden.",
"Back to Files" => "Zurรผck zu \"Dateien\"",
"Selected files too large to generate zip file." => "Die gewรคhlten Dateien sind zu groรŸ, um eine ZIP-Datei zu erstellen.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Lade die Dateien in kleineren, separaten, Stรผcken herunter oder bitte deinen Administrator.",
+"Please download the files separately in smaller chunks or kindly ask your administrator." => "Bitte lade die Dateien einzeln in kleineren Teilen herunter oder bitte Deinen Administrator.",
"No source specified when installing app" => "Fรผr die Installation der Applikation wurde keine Quelle angegeben",
"No href specified when installing app from http" => "Der Link (href) wurde nicht angegeben um die Applikation per http zu installieren",
"No path specified when installing app from local file" => "Bei der Installation der Applikation aus einer lokalen Datei wurde kein Pfad angegeben",
diff --git a/lib/l10n/de_CH.php b/lib/l10n/de_CH.php
index c4f06520b50..502791ff578 100644
--- a/lib/l10n/de_CH.php
+++ b/lib/l10n/de_CH.php
@@ -14,7 +14,6 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "Die Dateien mรผssen einzeln heruntergeladen werden.",
"Back to Files" => "Zurรผck zu \"Dateien\"",
"Selected files too large to generate zip file." => "Die gewรคhlten Dateien sind zu gross, um eine ZIP-Datei zu erstellen.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Laden Sie die Dateien in kleineren, separaten, Stรผcken herunter oder bitten Sie Ihren Administrator.",
"App can't be installed because of not allowed code in the App" => "Anwendung kann wegen nicht erlaubten Codes nicht installiert werden",
"App directory already exists" => "Anwendungsverzeichnis existiert bereits",
"Application is not enabled" => "Die Anwendung ist nicht aktiviert",
diff --git a/lib/l10n/de_DE.php b/lib/l10n/de_DE.php
index a84b954eb44..e76718b4117 100644
--- a/lib/l10n/de_DE.php
+++ b/lib/l10n/de_DE.php
@@ -16,7 +16,7 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "Die Dateien mรผssen einzeln heruntergeladen werden.",
"Back to Files" => "Zurรผck zu \"Dateien\"",
"Selected files too large to generate zip file." => "Die gewรคhlten Dateien sind zu groรŸ, um eine ZIP-Datei zu erstellen.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Laden Sie die Dateien in kleineren, separaten, Stรผcken herunter oder bitten Sie Ihren Administrator.",
+"Please download the files separately in smaller chunks or kindly ask your administrator." => "Bitte laden Sie die Dateien einzeln in kleineren Teilen herunter oder bitten Sie Ihren Administrator.",
"No source specified when installing app" => "Fรผr die Installation der Applikation wurde keine Quelle angegeben",
"No href specified when installing app from http" => "Der Link (href) wurde nicht angegeben um die Applikation per http zu installieren",
"No path specified when installing app from local file" => "Bei der Installation der Applikation aus einer lokalen Datei wurde kein Pfad angegeben",
diff --git a/lib/l10n/el.php b/lib/l10n/el.php
index aed5e052a8e..d536b699a9e 100644
--- a/lib/l10n/el.php
+++ b/lib/l10n/el.php
@@ -14,7 +14,6 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "ฮคฮฑ ฮฑฯฯ‡ฮตฮฏฮฑ ฯ€ฯฮญฯ€ฮตฮน ฮฝฮฑ ฮปฮทฯ†ฮธฮฟฯฮฝ ฮญฮฝฮฑ-ฮญฮฝฮฑ.",
"Back to Files" => "ฮ ฮฏฯƒฯ‰ ฯƒฯ„ฮฑ ฮ‘ฯฯ‡ฮตฮฏฮฑ",
"Selected files too large to generate zip file." => "ฮคฮฑ ฮตฯ€ฮนฮปฮตฮณฮผฮญฮฝฮฑ ฮฑฯฯ‡ฮตฮฏฮฑ ฮตฮฏฮฝฮฑฮน ฮผฮตฮณฮฌฮปฮฑ ฯŽฯƒฯ„ฮต ฮฝฮฑ ฮดฮทฮผฮนฮฟฯ…ฯฮณฮทฮธฮตฮฏ ฮฑฯฯ‡ฮตฮฏฮฟ zip.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "ฮ›ฮฎฯˆฮท ฯ„ฯ‰ฮฝ ฮฑฯฯ‡ฮตฮฏฯ‰ฮฝ ฯƒฮต ฮผฮนฮบฯฯŒฯ„ฮตฯฮฑ ฮบฮฟฮผฮผฮฌฯ„ฮนฮฑ, ฯ‡ฯ‰ฯฮนฯƒฯ„ฮฌ ฮฎ ฯฯ‰ฯ„ฮฎฯƒฯ„ฮต ฯ„ฮฟฮฝ ฮดฮนฮฑฯ‡ฮตฮนฯฮนฯƒฯ„ฮฎ ฯƒฮฑฯ‚.",
"Application is not enabled" => "ฮ”ฮตฮฝ ฮตฮฝฮตฯฮณฮฟฯ€ฮฟฮนฮฎฮธฮทฮบฮต ฮท ฮตฯ†ฮฑฯฮผฮฟฮณฮฎ",
"Authentication error" => "ฮฃฯ†ฮฌฮปฮผฮฑ ฯ€ฮนฯƒฯ„ฮฟฯ€ฮฟฮฏฮทฯƒฮทฯ‚",
"Token expired. Please reload page." => "ฮคฮฟ ฮฑฮฝฮฑฮณฮฝฯ‰ฯฮนฯƒฯ„ฮนฮบฯŒ ฮญฮปฮทฮพฮต. ฮ ฮฑฯฮฑฮบฮฑฮปฯŽ ฯ†ฮฟฯฯ„ฯŽฯƒฯ„ฮต ฮพฮฑฮฝฮฌ ฯ„ฮทฮฝ ฯƒฮตฮปฮฏฮดฮฑ.",
@@ -43,7 +42,7 @@ $TRANSLATIONS = array(
"Please double check the <a href='%s'>installation guides</a>." => "ฮ•ฮปฮญฮณฮพฯ„ฮต ฮพฮฑฮฝฮฌ ฯ„ฮนฯ‚ <a href='%s'>ฮฟฮดฮทฮณฮฏฮตฯ‚ ฮตฮณฮบฮฑฯ„ฮฌฯƒฯ„ฮฑฯƒฮทฯ‚</a>.",
"Could not find category \"%s\"" => "ฮ‘ฮดฯ…ฮฝฮฑฮผฮฏฮฑ ฮตฯฯฮตฯƒฮทฯ‚ ฮบฮฑฯ„ฮทฮณฮฟฯฮฏฮฑฯ‚ \"%s\"",
"seconds ago" => "ฮดฮตฯ…ฯ„ฮตฯฯŒฮปฮตฯ€ฯ„ฮฑ ฯ€ฯฮนฮฝ",
-"_%n minute ago_::_%n minutes ago_" => array("",""),
+"_%n minute ago_::_%n minutes ago_" => array("","%n ฮปฮตฯ€ฯ„ฮฌ ฯ€ฯฮนฮฝ"),
"_%n hour ago_::_%n hours ago_" => array("",""),
"today" => "ฯƒฮฎฮผฮตฯฮฑ",
"yesterday" => "ฯ‡ฯ„ฮตฯ‚",
diff --git a/lib/l10n/en_GB.php b/lib/l10n/en_GB.php
index 73697d101c1..295700d234a 100644
--- a/lib/l10n/en_GB.php
+++ b/lib/l10n/en_GB.php
@@ -16,7 +16,7 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "Files need to be downloaded one by one.",
"Back to Files" => "Back to Files",
"Selected files too large to generate zip file." => "Selected files too large to generate zip file.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Download the files in smaller chunks, seperately or kindly ask your administrator.",
+"Please download the files separately in smaller chunks or kindly ask your administrator." => "Please download the files separately in smaller chunks or kindly ask your administrator.",
"No source specified when installing app" => "No source specified when installing app",
"No href specified when installing app from http" => "No href specified when installing app from http",
"No path specified when installing app from local file" => "No path specified when installing app from local file",
diff --git a/lib/l10n/es.php b/lib/l10n/es.php
index 7e56e31aeaf..8e79c9f1059 100644
--- a/lib/l10n/es.php
+++ b/lib/l10n/es.php
@@ -16,7 +16,6 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "Los archivos deben ser descargados uno por uno.",
"Back to Files" => "Volver a Archivos",
"Selected files too large to generate zip file." => "Los archivos seleccionados son demasiado grandes para generar el archivo zip.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Descargue los archivos en trozos mรกs pequeรฑos, por separado o solicรญtelos amablemente su administrador.",
"No source specified when installing app" => "No se ha especificado origen cuando se ha instalado la aplicaciรณn",
"No href specified when installing app from http" => "No href especificado cuando se ha instalado la aplicaciรณn",
"No path specified when installing app from local file" => "Sin path especificado cuando se ha instalado la aplicaciรณn desde el fichero local",
diff --git a/lib/l10n/es_AR.php b/lib/l10n/es_AR.php
index 4e65755ba87..e2c771d47ad 100644
--- a/lib/l10n/es_AR.php
+++ b/lib/l10n/es_AR.php
@@ -16,7 +16,6 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "Los archivos deben ser descargados de a uno.",
"Back to Files" => "Volver a Archivos",
"Selected files too large to generate zip file." => "Los archivos seleccionados son demasiado grandes para generar el archivo zip.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Descargรก los archivos en partes mรกs chicas, de forma separada, o pedรญselos al administrador",
"No source specified when installing app" => "No se especificรณ el origen al instalar la app",
"No href specified when installing app from http" => "No se especificรณ href al instalar la app",
"No path specified when installing app from local file" => "No se especificรณ PATH al instalar la app desde el archivo local",
diff --git a/lib/l10n/et_EE.php b/lib/l10n/et_EE.php
index e307979fa74..7340ee72c28 100644
--- a/lib/l10n/et_EE.php
+++ b/lib/l10n/et_EE.php
@@ -16,7 +16,7 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "Failid tuleb alla laadida รผkshaaval.",
"Back to Files" => "Tagasi failide juurde",
"Selected files too large to generate zip file." => "Valitud failid on ZIP-faili loomiseks liiga suured.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Laadi failid alla eraldi vรคiksemate osadena vรตi kรผsi nรตu oma sรผsteemiadminstraatorilt.",
+"Please download the files separately in smaller chunks or kindly ask your administrator." => "Palun laadi failid alla eraldi vรคiksemate osadena vรตi palu abi oma sรผsteemihaldurilt.",
"No source specified when installing app" => "รœhegi lรคhteallikat pole rakendi paigalduseks mรครคratletud",
"No href specified when installing app from http" => "รœhtegi aadressi pole mรครคratletud rakendi paigalduseks veebist",
"No path specified when installing app from local file" => "รœhtegi teed pole mรครคratletud paigaldamaks rakendit kohalikust failist",
diff --git a/lib/l10n/eu.php b/lib/l10n/eu.php
index 9758fdd1f32..f28a77eeb03 100644
--- a/lib/l10n/eu.php
+++ b/lib/l10n/eu.php
@@ -12,7 +12,6 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "Fitxategiak banan-banan deskargatu behar dira.",
"Back to Files" => "Itzuli fitxategietara",
"Selected files too large to generate zip file." => "Hautatuko fitxategiak oso handiak dira zip fitxategia sortzeko.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Deskargatu fitzategiak zati txikiagoetan, banan-banan edo eskatu mesedez zure administradoreari",
"Application is not enabled" => "Aplikazioa ez dago gaituta",
"Authentication error" => "Autentifikazio errorea",
"Token expired. Please reload page." => "Tokena iraungitu da. Mesedez birkargatu orria.",
diff --git a/lib/l10n/fr.php b/lib/l10n/fr.php
index 895daa5b452..c9767565b18 100644
--- a/lib/l10n/fr.php
+++ b/lib/l10n/fr.php
@@ -16,7 +16,6 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "Les fichiers nรฉcessitent d'รชtre tรฉlรฉchargรฉs un par un.",
"Back to Files" => "Retour aux Fichiers",
"Selected files too large to generate zip file." => "Les fichiers sรฉlectionnรฉs sont trop volumineux pour รชtre compressรฉs.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Tรฉlรฉcharger les fichiers en parties plus petites, sรฉparรฉment ou demander avec bienveillance ร  votre administrateur.",
"No source specified when installing app" => "Aucune source spรฉcifiรฉe pour installer l'application",
"No href specified when installing app from http" => "Aucun href spรฉcifiรฉ pour installer l'application par http",
"No path specified when installing app from local file" => "Aucun chemin spรฉcifiรฉ pour installer l'application depuis un fichier local",
diff --git a/lib/l10n/gl.php b/lib/l10n/gl.php
index 72ee66b6f57..cf13408b2cd 100644
--- a/lib/l10n/gl.php
+++ b/lib/l10n/gl.php
@@ -16,7 +16,7 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "Os ficheiros necesitan seren descargados dun en un.",
"Back to Files" => "Volver aos ficheiros",
"Selected files too large to generate zip file." => "Os ficheiros seleccionados son demasiado grandes como para xerar un ficheiro zip.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Descargue os ficheiros en cachos mรกis pequenos e por separado, ou pรญdallos amabelmente ao seu administrador.",
+"Please download the files separately in smaller chunks or kindly ask your administrator." => "Descargue os ficheiros en fragmentos mรกis pequenos e por separado, ou pรญdallos amabelmente ao seu administrador.",
"No source specified when installing app" => "Non foi especificada ningunha orixe ao instalar aplicativos",
"No href specified when installing app from http" => "Non foi especificada ningunha href ao instalar aplicativos",
"No path specified when installing app from local file" => "Non foi especificada ningunha ruta ao instalar aplicativos desde un ficheiro local",
diff --git a/lib/l10n/hu_HU.php b/lib/l10n/hu_HU.php
index cf1e6c2f100..0d91b70b51a 100644
--- a/lib/l10n/hu_HU.php
+++ b/lib/l10n/hu_HU.php
@@ -16,7 +16,6 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "A fรกjlokat egyenkรฉnt kell letรถlteni.",
"Back to Files" => "Vissza a Fรกjlokhoz",
"Selected files too large to generate zip file." => "A kivรกlasztott fรกjlok tรบl nagyok a zip tรถmรถrรญtรฉshez.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Tรถlts le a fileokat kisebb chunkokban, kรถlรผn vagy kรฉrj segitsรฉget a rendszergazdรกdtรณl.",
"No source specified when installing app" => "Az alkalmazรกs telepรญtรฉsรฉhez nincs forrรกs megadva",
"No href specified when installing app from http" => "Az alkalmazรกs http-n keresztรผl tรถrtรฉnล‘ telepรญtรฉsรฉhez nincs href hivetkozรกs megadva",
"No path specified when installing app from local file" => "Az alkalmazรกs helyi telepรญtรฉsรฉhez nincs รบtvonal (mappa) megadva",
diff --git a/lib/l10n/it.php b/lib/l10n/it.php
index 240442d396d..b1259a0a874 100644
--- a/lib/l10n/it.php
+++ b/lib/l10n/it.php
@@ -16,7 +16,7 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "I file devono essere scaricati uno alla volta.",
"Back to Files" => "Torna ai file",
"Selected files too large to generate zip file." => "I file selezionati sono troppo grandi per generare un file zip.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Scarica i file in blocchi piรน piccoli, separatamente o chiedi al tuo amministratore.",
+"Please download the files separately in smaller chunks or kindly ask your administrator." => "Scarica i file separatamente in blocchi piรน piccoli o chiedi al tuo amministratore.",
"No source specified when installing app" => "Nessuna fonte specificata durante l'installazione dell'applicazione",
"No href specified when installing app from http" => "Nessun href specificato durante l'installazione dell'applicazione da http",
"No path specified when installing app from local file" => "Nessun percorso specificato durante l'installazione dell'applicazione da file locale",
diff --git a/lib/l10n/ja_JP.php b/lib/l10n/ja_JP.php
index f156c68715c..f7af9b592ad 100644
--- a/lib/l10n/ja_JP.php
+++ b/lib/l10n/ja_JP.php
@@ -16,7 +16,6 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "ใƒ•ใ‚กใ‚คใƒซใฏ1ใคใšใคใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚",
"Back to Files" => "ใƒ•ใ‚กใ‚คใƒซใซๆˆปใ‚‹",
"Selected files too large to generate zip file." => "้ธๆŠžใ—ใŸใƒ•ใ‚กใ‚คใƒซใฏZIPใƒ•ใ‚กใ‚คใƒซใฎ็”Ÿๆˆใซใฏๅคงใใ™ใŽใพใ™ใ€‚",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "ใƒ•ใ‚กใ‚คใƒซใฏใ€ๅฐใ•ใ„ใƒ•ใ‚กใ‚คใƒซใซๅˆ†ๅ‰ฒใ•ใ‚Œใฆใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ•ใ‚Œใพใ™ใ€‚ใ‚‚ใ—ใใฏใ€็ฎก็†่€…ใซใŠๅฐ‹ใญใใ ใ•ใ„ใ€‚",
"No source specified when installing app" => "ใ‚ขใƒ—ใƒชใ‚คใƒณใ‚นใƒˆใƒผใƒซๆ™‚ใฎใ‚ฝใƒผใ‚นใŒๆœชๆŒ‡ๅฎš",
"No href specified when installing app from http" => "ใ‚ขใƒ—ใƒชใ‚คใƒณใ‚นใƒˆใƒผใƒซๆ™‚ใฎhttpใฎ URL ใŒๆœชๆŒ‡ๅฎš",
"No path specified when installing app from local file" => "ใ‚ขใƒ—ใƒชใ‚คใƒณใ‚นใƒˆใƒผใƒซๆ™‚ใฎใƒญใƒผใ‚ซใƒซใƒ•ใ‚กใ‚คใƒซใฎใƒ‘ใ‚นใŒๆœชๆŒ‡ๅฎš",
diff --git a/lib/l10n/ko.php b/lib/l10n/ko.php
index 297e7ac5805..102bf9f978d 100644
--- a/lib/l10n/ko.php
+++ b/lib/l10n/ko.php
@@ -16,7 +16,6 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "ํŒŒ์ผ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.",
"Back to Files" => "ํŒŒ์ผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ",
"Selected files too large to generate zip file." => "์„ ํƒํ•œ ํŒŒ์ผ๋“ค์€ ZIP ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ธฐ์— ๋„ˆ๋ฌด ํฝ๋‹ˆ๋‹ค.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "์ž‘์€ ์กฐ๊ฐ๋“ค ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ํŒŒ์ผ๋“ค์„ ๋ฐ›๊ณ ์ž ํ•˜์‹ ๋‹ค๋ฉด, ๋‚˜๋ˆ„์–ด์„œ ๋ฐ›์œผ์‹œ๊ฑฐ๋‚˜ ํ˜น์€ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์ •์ค‘ํ•˜๊ฒŒ ๋ฌผ์–ด๋ณด์‹ญ์‹œ์˜ค",
"No source specified when installing app" => "์•ฑ์„ ์„ค์น˜ํ•  ๋•Œ ์†Œ์Šค๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.",
"No href specified when installing app from http" => "http์—์„œ ์•ฑ์„ ์„ค์น˜ํ•  ๋Œ€ href๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.",
"No path specified when installing app from local file" => "๋กœ์ปฌ ํŒŒ์ผ์—์„œ ์•ฑ์„ ์„ค์น˜ํ•  ๋•Œ ๊ฒฝ๋กœ๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.",
diff --git a/lib/l10n/lt_LT.php b/lib/l10n/lt_LT.php
index e322c9141d8..9c4eccd9d62 100644
--- a/lib/l10n/lt_LT.php
+++ b/lib/l10n/lt_LT.php
@@ -16,7 +16,6 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "Failai turi bลซti parsiunฤiami vienas po kito.",
"Back to Files" => "Atgal ฤฏ Failus",
"Selected files too large to generate zip file." => "Pasirinkti failai per dideli archyvavimui ฤฏ ZIP.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Atsisiลณskite failus maลพesnฤ—mis dalimis atskirai, arba mandagiai praลกykite savo administratoriaus.",
"No source specified when installing app" => "Nenurodytas ลกaltinis diegiant programฤ…",
"No href specified when installing app from http" => "Nenurodytas href diegiant programฤ… iลก http",
"No path specified when installing app from local file" => "Nenurodytas kelias diegiant programฤ… iลก vietinio failo",
diff --git a/lib/l10n/lv.php b/lib/l10n/lv.php
index cf96c4c4ab8..ef5fd2d5ca8 100644
--- a/lib/l10n/lv.php
+++ b/lib/l10n/lv.php
@@ -12,7 +12,6 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "Datnes var lejupielฤdฤ“t tikai katru atseviลกฤทi.",
"Back to Files" => "Atpakaฤผ pie datnฤ“m",
"Selected files too large to generate zip file." => "Izvฤ“lฤ“tฤs datnes ir pฤrฤk lielas, lai izveidotu zip datni.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Lejupielฤdฤ“jiet savus failus mazฤkฤs daฤผฤs, atseviลกฤทi vai palลซdziet tos administratoram.",
"Application is not enabled" => "Lietotne nav aktivฤ“ta",
"Authentication error" => "Autentifikฤcijas kฤผลซda",
"Token expired. Please reload page." => "Pilnvarai ir beidzies termiล†ลก. Lลซdzu, pฤrlฤdฤ“jiet lapu.",
diff --git a/lib/l10n/nl.php b/lib/l10n/nl.php
index 91ce25c13cc..d3a94d20f54 100644
--- a/lib/l10n/nl.php
+++ b/lib/l10n/nl.php
@@ -16,7 +16,6 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "Bestanden moeten รฉรฉn voor รฉรฉn worden gedownload.",
"Back to Files" => "Terug naar bestanden",
"Selected files too large to generate zip file." => "De geselecteerde bestanden zijn te groot om een zip bestand te maken.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Download de bestanden in kleinere brokken, appart of vraag uw administrator.",
"No source specified when installing app" => "Geen bron opgegeven bij installatie van de app",
"No href specified when installing app from http" => "Geen href opgegeven bij installeren van de app vanaf http",
"No path specified when installing app from local file" => "Geen pad opgegeven bij installeren van de app vanaf een lokaal bestand",
diff --git a/lib/l10n/pl.php b/lib/l10n/pl.php
index 72f01d784c4..82d4f753a81 100644
--- a/lib/l10n/pl.php
+++ b/lib/l10n/pl.php
@@ -16,7 +16,6 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "Pliki muszฤ… zostaฤ‡ pobrane pojedynczo.",
"Back to Files" => "Wrรณฤ‡ do plikรณw",
"Selected files too large to generate zip file." => "Wybrane pliki sฤ… zbyt duลผe, aby wygenerowaฤ‡ plik zip.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Pobierz pliki w mniejszy kawaล‚kach, oddzielnie lub poproล› administratora o zwiฤ™kszenie limitu.",
"No source specified when installing app" => "Nie okreล›lono ลบrรณdล‚a podczas instalacji aplikacji",
"No href specified when installing app from http" => "Nie okreล›lono linku skฤ…d aplikacja ma byฤ‡ zainstalowana",
"No path specified when installing app from local file" => "Nie okreล›lono lokalnego pliku z ktรณrego miaล‚a byฤ‡ instalowana aplikacja",
diff --git a/lib/l10n/pt_BR.php b/lib/l10n/pt_BR.php
index 784f9fe9f66..d6912f07110 100644
--- a/lib/l10n/pt_BR.php
+++ b/lib/l10n/pt_BR.php
@@ -16,7 +16,7 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "Arquivos precisam ser baixados um de cada vez.",
"Back to Files" => "Voltar para Arquivos",
"Selected files too large to generate zip file." => "Arquivos selecionados sรฃo muito grandes para gerar arquivo zip.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Baixe os arquivos em pedaรงos menores, separadamente ou solicite educadamente ao seu administrador.",
+"Please download the files separately in smaller chunks or kindly ask your administrator." => "Por favor baixe os arquivos separadamente em pedaรงos ou educadamente pergunte ao seu administrador.",
"No source specified when installing app" => "Nenhuma fonte foi especificada enquanto instalava o aplicativo",
"No href specified when installing app from http" => "Nenhuma href foi especificada enquanto instalava o aplicativo de httml",
"No path specified when installing app from local file" => "Nenhum caminho foi especificado enquanto instalava o aplicativo do arquivo local",
diff --git a/lib/l10n/pt_PT.php b/lib/l10n/pt_PT.php
index 44b5f0831e4..2b12b4d8a17 100644
--- a/lib/l10n/pt_PT.php
+++ b/lib/l10n/pt_PT.php
@@ -16,7 +16,6 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "Os ficheiros precisam de ser descarregados um por um.",
"Back to Files" => "Voltar a Ficheiros",
"Selected files too large to generate zip file." => "Os ficheiros seleccionados sรฃo grandes demais para gerar um ficheiro zip.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Descarregue os ficheiros em partes menores, separados ou peรงa gentilmente ao seu administrador.",
"Archives of type %s are not supported" => "Arquivos do tipo %s nรฃo sรฃo suportados",
"App does not provide an info.xml file" => "A aplicaรงรฃo nรฃo disponibiliza um ficheiro info.xml",
"App can't be installed because of not allowed code in the App" => "A aplicaรงรฃo nรฃo pode ser instalado devido a cรณdigo nรฃo permitido dentro da aplicaรงรฃo",
diff --git a/lib/l10n/ru.php b/lib/l10n/ru.php
index e77daa7dfdb..baf80cbf24e 100644
--- a/lib/l10n/ru.php
+++ b/lib/l10n/ru.php
@@ -16,7 +16,7 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "ะคะฐะนะปั‹ ะดะพะปะถะฝั‹ ะฑั‹ั‚ัŒ ะทะฐะณั€ัƒะถะตะฝั‹ ะฟะพ ะพะดะฝะพะผัƒ.",
"Back to Files" => "ะะฐะทะฐะด ะบ ั„ะฐะนะปะฐะผ",
"Selected files too large to generate zip file." => "ะ’ั‹ะฑั€ะฐะฝะฝั‹ะต ั„ะฐะนะปั‹ ัะปะธัˆะบะพะผ ะฒะตะปะธะบะธ, ั‡ั‚ะพะฑั‹ ัะพะทะดะฐั‚ัŒ zip ั„ะฐะนะป.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "ะ—ะฐะณั€ัƒะทะธั‚ะต ั„ะฐะนะป ะผะฐะปะตะฝัŒัˆะธะผะธ ะฟะพั€ั†ะธัะผะธ, ั€ะฐะทะดะตะปัŒะฝะพ ะธะปะธ ะฒะตะถะปะธะฒะพ ะฟะพะฟั€ะพัะธั‚ะต ะ’ะฐัˆะตะณะพ ะฐะดะผะธะฝะธัั‚ั€ะฐั‚ะพั€ะฐ.",
+"Please download the files separately in smaller chunks or kindly ask your administrator." => "ะ—ะฐะณั€ัƒะทะธั‚ะต ั„ะฐะนะปั‹ ั€ะฐะทะดะตะปัŒะฝะพ ะผะฐะปะตะฝัŒะบะธะผะธ ั‡ะฐัั‚ัะผะธ ะธะปะธ ะฒะตะถะปะธะฒะพ ะฟะพะฟั€ะพัะธั‚ะต ะฒะฐัˆะตะณะพ ะฐะดะผะธะฝะธัั‚ั€ะฐั‚ะพั€ะฐ.",
"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" => "ะะต ัƒะบะฐะทะฐะฝ ะฟัƒั‚ัŒ ะฟั€ะธ ัƒัั‚ะฐะฝะพะฒะบะต ะฟั€ะธะปะพะถะตะฝะธั ะธะท ะปะพะบะฐะปัŒะฝะพะณะพ ั„ะฐะนะปะฐ",
diff --git a/lib/l10n/ru_RU.php b/lib/l10n/ru_RU.php
index 622333c3855..23e900721e8 100644
--- a/lib/l10n/ru_RU.php
+++ b/lib/l10n/ru_RU.php
@@ -3,6 +3,7 @@ $TRANSLATIONS = array(
"Help" => "ะŸะพะผะพั‰ัŒ",
"Settings" => "ะะฐัั‚ั€ะพะนะบะธ",
"Files" => "ะคะฐะนะปั‹",
+"Text" => "ะขะตะบัั‚",
"_%n minute ago_::_%n minutes ago_" => array("","",""),
"_%n hour ago_::_%n hours ago_" => array("","",""),
"_%n day go_::_%n days ago_" => array("","",""),
diff --git a/lib/l10n/sk_SK.php b/lib/l10n/sk_SK.php
index 8bb97e7e6c0..493374ade09 100644
--- a/lib/l10n/sk_SK.php
+++ b/lib/l10n/sk_SK.php
@@ -16,7 +16,6 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "Sรบbory musia byลฅ nahrรกvanรฉ jeden za druhรฝm.",
"Back to Files" => "Spรคลฅ na sรบbory",
"Selected files too large to generate zip file." => "Zvolenรฉ sรบbory sรบ prรญliลก veฤพkรฉ na vygenerovanie zip sรบboru.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Stiahnite sรบbory po menลกรญch ฤastiach, samostatne, alebo sa obrรกลฅte na sprรกvcu.",
"No source specified when installing app" => "Neลกpecifikovanรฝ zdroj pri inลกtalรกcii aplikรกcie",
"No href specified when installing app from http" => "Neลกpecifikovanรฝ atribรบt \"href\" pri inลกtalรกcii aplikรกcie pomocou protokolu \"http\"",
"No path specified when installing app from local file" => "Neลกpecifikovanรก cesta pri inลกtalรกcii aplikรกcie z lokรกlneho sรบboru",
diff --git a/lib/l10n/sl.php b/lib/l10n/sl.php
index 0aee3cbfad6..56be601f54d 100644
--- a/lib/l10n/sl.php
+++ b/lib/l10n/sl.php
@@ -30,10 +30,10 @@ $TRANSLATIONS = array(
"DB Error: \"%s\"" => "Napaka podatkovne zbirke: \"%s\"",
"Offending command was: \"%s\"" => "Napaฤni ukaz je: \"%s\"",
"MySQL user '%s'@'localhost' exists already." => "Uporabnik MySQL '%s'@'localhost' ลพe obstaja.",
-"Drop this user from MySQL" => "Odstrani uporabnika s podatkovne zbirke MySQL",
+"Drop this user from MySQL" => "Odstrani uporabnika iz podatkovne zbirke MySQL",
"MySQL user '%s'@'%%' already exists" => "Uporabnik MySQL '%s'@'%%' ลพe obstaja.",
-"Drop this user from MySQL." => "Odstrani uporabnika s podatkovne zbirke MySQL",
-"Oracle connection could not be established" => "Povezava z bazo Oracle ni uspela.",
+"Drop this user from MySQL." => "Odstrani uporabnika iz podatkovne zbirke MySQL",
+"Oracle connection could not be established" => "Povezave s sistemom Oracle ni mogoฤe vzpostaviti.",
"Oracle username and/or password not valid" => "Uporabniลกko ime ali geslo Oracle ni veljavno",
"Offending command was: \"%s\", name: %s, password: %s" => "Napaฤni ukaz je: \"%s\", ime: %s, geslo: %s",
"PostgreSQL username and/or password not valid" => "Uporabniลกko ime ali geslo PostgreSQL ni veljavno",
diff --git a/lib/l10n/sv.php b/lib/l10n/sv.php
index 5432eed5858..66cd34f73dd 100644
--- a/lib/l10n/sv.php
+++ b/lib/l10n/sv.php
@@ -16,7 +16,6 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "Filer laddas ner en รฅt gรฅngen.",
"Back to Files" => "Tillbaka till Filer",
"Selected files too large to generate zip file." => "Valda filer รคr fรถr stora fรถr att skapa zip-fil.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Ladda ner filerna i mindre bitar, separat eller frรฅga din administratรถr.",
"No source specified when installing app" => "Ingen kรคlla angiven vid installation av app ",
"No href specified when installing app from http" => "Ingen href angiven vid installation av app frรฅn http",
"No path specified when installing app from local file" => "Ingen sรถkvรคg angiven vid installation av app frรฅn lokal fil",
diff --git a/lib/l10n/tr.php b/lib/l10n/tr.php
index eb838f6c537..11f0c72671f 100644
--- a/lib/l10n/tr.php
+++ b/lib/l10n/tr.php
@@ -16,7 +16,7 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "Dosyalarฤฑn birer birer indirilmesi gerekmektedir.",
"Back to Files" => "Dosyalara dรถn",
"Selected files too large to generate zip file." => "Seรงilen dosyalar bir zip dosyasฤฑ oluลŸturmak iรงin fazla bรผyรผktรผr.",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Dosyalarฤฑ ayrฤฑ ayrฤฑ, kรผรงรผk parรงalar halinde indirin ya da yรถneticinizden yardฤฑm isteyin. ",
+"Please download the files separately in smaller chunks or kindly ask your administrator." => "Dosyalarฤฑ ayrฤฑ ayrฤฑ, kรผรงรผk parรงalar halinde indirin veya yรถneticinizden yardฤฑm isteyin. ",
"No source specified when installing app" => "Uygulama kurulurken bir kaynak belirtilmedi",
"No href specified when installing app from http" => "Uygulama kuruluyorken http'de href belirtilmedi.",
"No path specified when installing app from local file" => "Uygulama yerel dosyadan kuruluyorken dosya yolu belirtilmedi",
diff --git a/lib/l10n/zh_TW.php b/lib/l10n/zh_TW.php
index 0081a37dadd..187d40e540e 100644
--- a/lib/l10n/zh_TW.php
+++ b/lib/l10n/zh_TW.php
@@ -16,7 +16,6 @@ $TRANSLATIONS = array(
"Files need to be downloaded one by one." => "ๆช”ๆกˆ้œ€่ฆ้€ไธ€ไธ‹่ผ‰ใ€‚",
"Back to Files" => "ๅ›žๅˆฐๆช”ๆกˆๅˆ—่กจ",
"Selected files too large to generate zip file." => "้ธๆ“‡็š„ๆช”ๆกˆๅคชๅคงไปฅ่‡ดๆ–ผ็„กๆณ•็”ข็”Ÿๅฃ“็ธฎๆช”ใ€‚",
-"Download the files in smaller chunks, seperately or kindly ask your administrator." => "ไปฅๅฐๅˆ†ๅ‰ฒไธ‹่ผ‰ๆ‚จ็š„ๆช”ๆกˆ๏ผŒ่ซ‹่ฉขๅ•ๆ‚จ็š„็ณป็ตฑ็ฎก็†ๅ“กใ€‚",
"No source specified when installing app" => "ๆฒ’ๆœ‰ๆŒ‡ๅฎšๆ‡‰็”จ็จ‹ๅผๅฎ‰่ฃไพ†ๆบ",
"No href specified when installing app from http" => "ๅพž http ๅฎ‰่ฃๆ‡‰็”จ็จ‹ๅผ๏ผŒๆ‰พไธๅˆฐ href ๅฑฌๆ€ง",
"No path specified when installing app from local file" => "ๅพžๆœฌๅœฐๆช”ๆกˆๅฎ‰่ฃๆ‡‰็”จ็จ‹ๅผๆ™‚ๆฒ’ๆœ‰ๆŒ‡ๅฎš่ทฏๅพ‘",
diff --git a/lib/private/avatar.php b/lib/private/avatar.php
index 720740569df..814a9b22bed 100644
--- a/lib/private/avatar.php
+++ b/lib/private/avatar.php
@@ -10,7 +10,7 @@
* This class gets and sets users avatars.
*/
-class OC_Avatar {
+class OC_Avatar implements \OCP\IAvatar {
private $view;
@@ -24,7 +24,7 @@ class OC_Avatar {
/**
* @brief get the users avatar
- * @param $size integer size in px of the avatar, defaults to 64
+ * @param $size integer size in px of the avatar, avatars are square, defaults to 64
* @return boolean|\OC_Image containing the avatar or false if there's no image
*/
public function get ($size = 64) {
@@ -54,7 +54,9 @@ class OC_Avatar {
$img = new OC_Image($data);
$type = substr($img->mimeType(), -3);
- if ($type === 'peg') { $type = 'jpg'; }
+ if ($type === 'peg') {
+ $type = 'jpg';
+ }
if ($type !== 'jpg' && $type !== 'png') {
$l = \OC_L10N::get('lib');
throw new \Exception($l->t("Unknown filetype"));
diff --git a/lib/private/avatarmanager.php b/lib/private/avatarmanager.php
new file mode 100644
index 00000000000..3ca46868ea6
--- /dev/null
+++ b/lib/private/avatarmanager.php
@@ -0,0 +1,26 @@
+<?php
+/**
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OC;
+
+use OCP\IAvatarManager;
+
+/*
+ * This class implements methods to access Avatar functionality
+ */
+class AvatarManager implements IAvatarManager {
+
+ /**
+ * @brief return a user specific instance of \OCP\IAvatar
+ * @see \OCP\IAvatar
+ * @param $user string the ownCloud user id
+ * @return \OCP\IAvatar
+ */
+ function getAvatar($user) {
+ return new \OC_Avatar($user);
+ }
+}
diff --git a/lib/private/connector/sabre/filesplugin.php b/lib/private/connector/sabre/filesplugin.php
index 89444cb8d18..65231040fb5 100644
--- a/lib/private/connector/sabre/filesplugin.php
+++ b/lib/private/connector/sabre/filesplugin.php
@@ -78,6 +78,20 @@ class OC_Connector_Sabre_FilesPlugin extends Sabre_DAV_ServerPlugin
* @throws Sabre_DAV_Exception_BadRequest
*/
public function sendFileIdHeader($filePath, Sabre_DAV_INode $node = null) {
+ // chunked upload handling
+ if (isset($_SERVER['HTTP_OC_CHUNKED'])) {
+ list($path, $name) = \Sabre_DAV_URLUtil::splitPath($filePath);
+ $info = OC_FileChunking::decodeName($name);
+ if (!empty($info)) {
+ $filePath = $path . '/' . $info['name'];
+ }
+ }
+
+ // we get the node for the given $filePath here because in case of afterCreateFile $node is the parent folder
+ if (!$this->server->tree->nodeExists($filePath)) {
+ return;
+ }
+ $node = $this->server->tree->getNodeForPath($filePath);
if ($node instanceof OC_Connector_Sabre_Node) {
$fileId = $node->getFileId();
if (!is_null($fileId)) {
diff --git a/lib/private/defaults.php b/lib/private/defaults.php
index 4951c6f50ae..cec9a65c7f3 100644
--- a/lib/private/defaults.php
+++ b/lib/private/defaults.php
@@ -1,15 +1,13 @@
<?php
-/**
- * Default strings and values which differ between the enterprise and the
- * community edition. Use the get methods to always get the right strings.
- */
-
-
if (file_exists(OC::$SERVERROOT . '/themes/' . OC_Util::getTheme() . '/defaults.php')) {
require_once 'themes/' . OC_Util::getTheme() . '/defaults.php';
}
+/**
+ * Default strings and values which differ between the enterprise and the
+ * community edition. Use the get methods to always get the right strings.
+ */
class OC_Defaults {
private $theme;
@@ -48,6 +46,10 @@ class OC_Defaults {
return false;
}
+ /**
+ * Returns the base URL
+ * @return string URL
+ */
public function getBaseUrl() {
if ($this->themeExist('getBaseUrl')) {
return $this->theme->getBaseUrl();
@@ -56,6 +58,10 @@ class OC_Defaults {
}
}
+ /**
+ * Returns the URL where the sync clients are listed
+ * @return string URL
+ */
public function getSyncClientUrl() {
if ($this->themeExist('getSyncClientUrl')) {
return $this->theme->getSyncClientUrl();
@@ -64,6 +70,10 @@ class OC_Defaults {
}
}
+ /**
+ * Returns the documentation URL
+ * @return string URL
+ */
public function getDocBaseUrl() {
if ($this->themeExist('getDocBaseUrl')) {
return $this->theme->getDocBaseUrl();
@@ -72,6 +82,10 @@ class OC_Defaults {
}
}
+ /**
+ * Returns the title
+ * @return string title
+ */
public function getTitle() {
if ($this->themeExist('getTitle')) {
return $this->theme->getTitle();
@@ -80,6 +94,10 @@ class OC_Defaults {
}
}
+ /**
+ * Returns the short name of the software
+ * @return string title
+ */
public function getName() {
if ($this->themeExist('getName')) {
return $this->theme->getName();
@@ -88,6 +106,10 @@ class OC_Defaults {
}
}
+ /**
+ * Returns entity (e.g. company name) - used for footer, copyright
+ * @return string entity name
+ */
public function getEntity() {
if ($this->themeExist('getEntity')) {
return $this->theme->getEntity();
@@ -96,6 +118,10 @@ class OC_Defaults {
}
}
+ /**
+ * Returns slogan
+ * @return string slogan
+ */
public function getSlogan() {
if ($this->themeExist('getSlogan')) {
return $this->theme->getSlogan();
@@ -104,6 +130,10 @@ class OC_Defaults {
}
}
+ /**
+ * Returns logo claim
+ * @return string logo claim
+ */
public function getLogoClaim() {
if ($this->themeExist('getLogoClaim')) {
return $this->theme->getLogoClaim();
@@ -112,6 +142,10 @@ class OC_Defaults {
}
}
+ /**
+ * Returns short version of the footer
+ * @return string short footer
+ */
public function getShortFooter() {
if ($this->themeExist('getShortFooter')) {
$footer = $this->theme->getShortFooter();
@@ -123,6 +157,10 @@ class OC_Defaults {
return $footer;
}
+ /**
+ * Returns long version of the footer
+ * @return string long footer
+ */
public function getLongFooter() {
if ($this->themeExist('getLongFooter')) {
$footer = $this->theme->getLongFooter();
diff --git a/lib/private/files.php b/lib/private/files.php
index 8b4d5c59aee..8b8ff81ec5e 100644
--- a/lib/private/files.php
+++ b/lib/private/files.php
@@ -131,9 +131,11 @@ class OC_Files {
if ($filesize > -1) {
header("Content-Length: ".$filesize);
}
- list($storage) = \OC\Files\Filesystem::resolvePath($filename);
- if ($storage instanceof \OC\Files\Storage\Local) {
- self::addSendfileHeader(\OC\Files\Filesystem::getLocalFile($filename));
+ if ($xsendfile) {
+ list($storage) = \OC\Files\Filesystem::resolvePath(\OC\Files\Filesystem::getView()->getAbsolutePath($filename));
+ if ($storage instanceof \OC\Files\Storage\Local) {
+ self::addSendfileHeader(\OC\Files\Filesystem::getLocalFile($filename));
+ }
}
}
} elseif ($zip or !\OC\Files\Filesystem::file_exists($filename)) {
@@ -251,7 +253,7 @@ class OC_Files {
header("HTTP/1.0 409 Conflict");
OC_Template::printErrorPage(
$l->t('Selected files too large to generate zip file.'),
- $l->t('Download the files in smaller chunks, seperately or kindly ask your administrator.')
+ $l->t('Please download the files separately in smaller chunks or kindly ask your administrator.')
.'<br/><a href="javascript:history.back()">'
. $l->t('Back to Files') . '</a>'
);
diff --git a/lib/private/files/cache/cache.php b/lib/private/files/cache/cache.php
index 8c34fa58540..ac50a988e32 100644
--- a/lib/private/files/cache/cache.php
+++ b/lib/private/files/cache/cache.php
@@ -507,7 +507,7 @@ class Cache {
$entry = $this->get($path);
if ($entry && $entry['mimetype'] === 'httpd/unix-directory') {
$id = $entry['fileid'];
- $sql = 'SELECT SUM(`size`), MIN(`size`) FROM `*PREFIX*filecache` '.
+ $sql = 'SELECT SUM(`size`) AS f1, MIN(`size`) AS f2 FROM `*PREFIX*filecache` '.
'WHERE `parent` = ? AND `storage` = ?';
$result = \OC_DB::executeAudited($sql, array($id, $this->getNumericStorageId()));
if ($row = $result->fetchRow()) {
diff --git a/lib/private/files/cache/updater.php b/lib/private/files/cache/updater.php
index da223567001..d45c5e17fc8 100644
--- a/lib/private/files/cache/updater.php
+++ b/lib/private/files/cache/updater.php
@@ -142,7 +142,7 @@ class Updater {
$cache->update($id, array('mtime' => $time, 'etag' => $storage->getETag($internalPath)));
if ($realPath !== '') {
$realPath = dirname($realPath);
- if($realPath === '/') {
+ if($realPath === DIRECTORY_SEPARATOR ) {
$realPath = "";
}
// check storage for parent in case we change the storage in this step
diff --git a/lib/private/files/storage/common.php b/lib/private/files/storage/common.php
index 3943d667c35..678bf419023 100644
--- a/lib/private/files/storage/common.php
+++ b/lib/private/files/storage/common.php
@@ -51,6 +51,19 @@ abstract class Common implements \OC\Files\Storage\Storage {
}
}
+ public function isReadable($path) {
+ // at least check whether it exists
+ // subclasses might want to implement this more thoroughly
+ return $this->file_exists($path);
+ }
+
+ public function isUpdatable($path) {
+ // at least check whether it exists
+ // subclasses might want to implement this more thoroughly
+ // a non-existing file/folder isn't updatable
+ return $this->file_exists($path);
+ }
+
public function isCreatable($path) {
if ($this->is_dir($path) && $this->isUpdatable($path)) {
return true;
@@ -142,7 +155,7 @@ abstract class Common implements \OC\Files\Storage\Storage {
return false;
} else {
$directoryHandle = $this->opendir($directory);
- if(is_resource($directoryHandle)) {
+ if (is_resource($directoryHandle)) {
while (($contents = readdir($directoryHandle)) !== false) {
if (!\OC\Files\Filesystem::isIgnoredDir($contents)) {
$path = $directory . '/' . $contents;
@@ -165,27 +178,13 @@ abstract class Common implements \OC\Files\Storage\Storage {
}
public function getMimeType($path) {
- if (!$this->file_exists($path)) {
- return false;
- }
if ($this->is_dir($path)) {
return 'httpd/unix-directory';
- }
- $source = $this->fopen($path, 'r');
- if (!$source) {
- return false;
- }
- $head = fread($source, 8192); //8kb should suffice to determine a mimetype
- if ($pos = strrpos($path, '.')) {
- $extension = substr($path, $pos);
+ } elseif ($this->file_exists($path)) {
+ return \OC_Helper::getFileNameMimeType($path);
} else {
- $extension = '';
+ return false;
}
- $tmpFile = \OC_Helper::tmpFile($extension);
- file_put_contents($tmpFile, $head);
- $mime = \OC_Helper::getMimeType($tmpFile);
- unlink($tmpFile);
- return $mime;
}
public function hash($type, $path, $raw = false) {
@@ -227,7 +226,7 @@ abstract class Common implements \OC\Files\Storage\Storage {
private function addLocalFolder($path, $target) {
$dh = $this->opendir($path);
- if(is_resource($dh)) {
+ if (is_resource($dh)) {
while (($file = readdir($dh)) !== false) {
if ($file !== '.' and $file !== '..') {
if ($this->is_dir($path . '/' . $file)) {
@@ -298,7 +297,7 @@ abstract class Common implements \OC\Files\Storage\Storage {
return $this->watcher;
}
- public function getStorageCache(){
+ public function getStorageCache() {
if (!isset($this->storageCache)) {
$this->storageCache = new \OC\Files\Cache\Storage($this);
}
diff --git a/lib/private/files/storage/commontest.php b/lib/private/files/storage/commontest.php
index c3f1eb31955..2394b14a82f 100644
--- a/lib/private/files/storage/commontest.php
+++ b/lib/private/files/storage/commontest.php
@@ -54,7 +54,7 @@ class CommonTest extends \OC\Files\Storage\Common{
return $this->storage->stat($path);
}
public function filetype($path) {
- return $this->storage->filetype($path);
+ return @$this->storage->filetype($path);
}
public function isReadable($path) {
return $this->storage->isReadable($path);
diff --git a/lib/private/files/storage/home.php b/lib/private/files/storage/home.php
index b4ceb8f4f9b..1c2a682f197 100644
--- a/lib/private/files/storage/home.php
+++ b/lib/private/files/storage/home.php
@@ -22,6 +22,12 @@ class Home extends Local {
*/
protected $user;
+ /**
+ * @brief Construct a Home storage instance
+ * @param array $arguments array with "user" containing the
+ * storage owner and "legacy" containing "true" if the storage is
+ * a legacy storage with "local::" URL instead of the new "home::" one.
+ */
public function __construct($arguments) {
$this->user = $arguments['user'];
$datadir = $this->user->getHome();
@@ -40,10 +46,21 @@ class Home extends Local {
return $this->id;
}
+ /**
+ * @return \OC\Files\Cache\HomeCache
+ */
public function getCache($path = '') {
if (!isset($this->cache)) {
$this->cache = new \OC\Files\Cache\HomeCache($this);
}
return $this->cache;
}
+
+ /**
+ * @brief Returns the owner of this home storage
+ * @return \OC\User\User owner of this home storage
+ */
+ public function getUser() {
+ return $this->user;
+ }
}
diff --git a/lib/private/files/storage/local.php b/lib/private/files/storage/local.php
index 5209fabc30a..02e8df4af4e 100644
--- a/lib/private/files/storage/local.php
+++ b/lib/private/files/storage/local.php
@@ -203,14 +203,6 @@ if (\OC_Util::runningOnWindows()) {
return $return;
}
- public function getMimeType($path) {
- if ($this->isReadable($path)) {
- return \OC_Helper::getMimeType($this->datadir . $path);
- } else {
- return false;
- }
- }
-
private function delTree($dir) {
$dirRelative = $dir;
$dir = $this->datadir . $dir;
diff --git a/lib/private/files/storage/mappedlocal.php b/lib/private/files/storage/mappedlocal.php
index ba5ac4191c5..6c37d445867 100644
--- a/lib/private/files/storage/mappedlocal.php
+++ b/lib/private/files/storage/mappedlocal.php
@@ -210,14 +210,6 @@ class MappedLocal extends \OC\Files\Storage\Common{
return $return;
}
- public function getMimeType($path) {
- if($this->isReadable($path)) {
- return \OC_Helper::getMimeType($this->buildPath($path));
- }else{
- return false;
- }
- }
-
private function delTree($dir, $isLogicPath=true) {
$dirRelative=$dir;
if ($isLogicPath) {
diff --git a/lib/private/preview/movies.php b/lib/private/preview/movies.php
index 28f130f7506..ac771deb413 100644
--- a/lib/private/preview/movies.php
+++ b/lib/private/preview/movies.php
@@ -46,17 +46,19 @@ if (!\OC_Util::runningOnWindows()) {
$handle = $fileview->fopen($path, 'rb');
- $firstmb = stream_get_contents($handle, 1048576); //1024 * 1024 = 1048576
+ // we better use 5MB (1024 * 1024 * 5 = 5242880) instead of 1MB.
+ // in some cases 1MB was no enough to generate thumbnail
+ $firstmb = stream_get_contents($handle, 5242880);
file_put_contents($absPath, $firstmb);
if (self::$avconvBinary) {
- $cmd = self::$avconvBinary . ' -an -y -ss 1'.
+ $cmd = self::$avconvBinary . ' -an -y -ss 5'.
' -i ' . escapeshellarg($absPath) .
- ' -f mjpeg -vframes 1 ' . escapeshellarg($tmpPath) .
+ ' -f mjpeg -vframes 1 -vsync 1 ' . escapeshellarg($tmpPath) .
' > /dev/null 2>&1';
}
else {
- $cmd = self::$ffmpegBinary . ' -y -ss 1' .
+ $cmd = self::$ffmpegBinary . ' -y -ss 5' .
' -i ' . escapeshellarg($absPath) .
' -f mjpeg -vframes 1' .
' -s ' . escapeshellarg($maxX) . 'x' . escapeshellarg($maxY) .
diff --git a/lib/private/request.php b/lib/private/request.php
index df33217f95d..7a75bf25208 100755
--- a/lib/private/request.php
+++ b/lib/private/request.php
@@ -9,6 +9,7 @@
class OC_Request {
/**
* @brief Check overwrite condition
+ * @param string $type
* @returns bool
*/
private static function isOverwriteCondition($type = '') {
@@ -99,7 +100,7 @@ class OC_Request {
public static function scriptName() {
$name = $_SERVER['SCRIPT_NAME'];
if (OC_Config::getValue('overwritewebroot', '') !== '' and self::isOverwriteCondition()) {
- $serverroot = str_replace("\\", '/', substr(__DIR__, 0, -4));
+ $serverroot = str_replace("\\", '/', substr(__DIR__, 0, -strlen('lib/private/')));
$suburi = str_replace("\\", "/", substr(realpath($_SERVER["SCRIPT_FILENAME"]), strlen($serverroot)));
$name = OC_Config::getValue('overwritewebroot', '') . $suburi;
}
@@ -135,7 +136,18 @@ class OC_Request {
* @returns string Path info or false when not found
*/
public static function getRawPathInfo() {
- $path_info = substr($_SERVER['REQUEST_URI'], strlen($_SERVER['SCRIPT_NAME']));
+ $requestUri = $_SERVER['REQUEST_URI'];
+ // remove too many leading slashes - can be caused by reverse proxy configuration
+ if (strpos($requestUri, '/') === 0) {
+ $requestUri = '/' . ltrim($requestUri, '/');
+ }
+
+ $scriptName = $_SERVER['SCRIPT_NAME'];
+ // in case uri and script name don't match we better throw an exception
+ if (strpos($requestUri, $scriptName) !== 0) {
+ throw new Exception("REQUEST_URI($requestUri) does not start with the SCRIPT_NAME($scriptName)");
+ }
+ $path_info = substr($requestUri, strlen($scriptName));
// Remove the query string from REQUEST_URI
if ($pos = strpos($path_info, '?')) {
$path_info = substr($path_info, 0, $pos);
diff --git a/lib/private/server.php b/lib/private/server.php
index 65899f3007e..77c3732a9ca 100644
--- a/lib/private/server.php
+++ b/lib/private/server.php
@@ -131,6 +131,9 @@ class Server extends SimpleContainer implements IServerContainer {
$this->registerService('ActivityManager', function($c) {
return new ActivityManager();
});
+ $this->registerService('AvatarManager', function($c) {
+ return new AvatarManager();
+ });
}
/**
@@ -171,6 +174,15 @@ class Server extends SimpleContainer implements IServerContainer {
}
/**
+ * Returns the avatar manager, used for avatar functionality
+ *
+ * @return \OCP\IAvatarManager
+ */
+ function getAvatarManager() {
+ return $this->query('AvatarManager');
+ }
+
+ /**
* Returns the root folder of ownCloud's data directory
*
* @return \OCP\Files\Folder
diff --git a/lib/private/updater.php b/lib/private/updater.php
index 9827d8a8c12..a1b07c5a242 100644
--- a/lib/private/updater.php
+++ b/lib/private/updater.php
@@ -58,6 +58,7 @@ class Updater extends BasicEmitter {
$version['updated'] = \OC_Appconfig::getValue('core', 'lastupdatedat');
$version['updatechannel'] = \OC_Util::getChannel();
$version['edition'] = \OC_Util::getEditionString();
+ $version['build'] = \OC_Util::getBuild();
$versionString = implode('x', $version);
//fetch xml data from updater
diff --git a/lib/private/user.php b/lib/private/user.php
index f15fdf1dbbc..5bd36006750 100644
--- a/lib/private/user.php
+++ b/lib/private/user.php
@@ -54,6 +54,9 @@ class OC_User {
private static $_setupedBackends = array();
+ // bool, stores if a user want to access a resource anonymously, e.g if he opens a public link
+ private static $incognitoMode = false;
+
/**
* @brief registers backend
* @param string $backend name of the backend
@@ -320,6 +323,15 @@ class OC_User {
}
/**
+ * @brief set incognito mode, e.g. if a user wants to open a public link
+ * @param bool $status
+ */
+ public static function setIncognitoMode($status) {
+ self::$incognitoMode = $status;
+
+ }
+
+ /**
* Supplies an attribute to the logout hyperlink. The default behaviour
* is to return an href with '?logout=true' appended. However, it can
* supply any attribute(s) which are valid for <a>.
@@ -354,7 +366,7 @@ class OC_User {
*/
public static function getUser() {
$uid = OC::$session ? OC::$session->get('user_id') : null;
- if (!is_null($uid)) {
+ if (!is_null($uid) && self::$incognitoMode === false) {
return $uid;
} else {
return false;
diff --git a/lib/private/util.php b/lib/private/util.php
index 176eb4bc369..b5c5546da35 100755
--- a/lib/private/util.php
+++ b/lib/private/util.php
@@ -53,16 +53,21 @@ class OC_Util {
//if we aren't logged in, there is no use to set up the filesystem
if( $user != "" ) {
- $quota = self::getUserQuota($user);
- if ($quota !== \OC\Files\SPACE_UNLIMITED) {
- \OC\Files\Filesystem::addStorageWrapper(function($mountPoint, $storage) use ($quota, $user) {
- if ($mountPoint === '/' . $user . '/'){
+ \OC\Files\Filesystem::addStorageWrapper(function($mountPoint, $storage){
+ // set up quota for home storages, even for other users
+ // which can happen when using sharing
+
+ if ($storage instanceof \OC\Files\Storage\Home) {
+ $user = $storage->getUser()->getUID();
+ $quota = OC_Util::getUserQuota($user);
+ if ($quota !== \OC\Files\SPACE_UNLIMITED) {
return new \OC\Files\Storage\Wrapper\Quota(array('storage' => $storage, 'quota' => $quota));
- } else {
- return $storage;
}
- });
- }
+ }
+
+ return $storage;
+ });
+
$userDir = '/'.$user.'/files';
$userRoot = OC_User::getHome($user);
$userDirectory = $userRoot . '/files';
@@ -353,6 +358,13 @@ class OC_Util {
$errors = array_merge($errors, self::checkDataDirectoryPermissions($CONFIG_DATADIRECTORY));
}
+ if(!OC_Util::isSetLocaleWorking()) {
+ $errors[] = array(
+ 'error' => 'Setting locale to en_US.UTF-8/fr_FR.UTF-8/es_ES.UTF-8/de_DE.UTF-8/ru_RU.UTF-8/pt_BR.UTF-8/it_IT.UTF-8/ja_JP.UTF-8/zh_CN.UTF-8 failed',
+ 'hint' => 'Please install one of theses locales on your system and restart your webserver.'
+ );
+ }
+
$moduleHint = "Please ask your server administrator to install the module.";
// check if all required php modules are present
if(!class_exists('ZipArchive')) {
@@ -847,8 +859,8 @@ class OC_Util {
return true;
}
- $result = setlocale(LC_ALL, 'en_US.UTF-8', 'en_US.UTF8');
- if($result == false) {
+ \Patchwork\Utf8\Bootup::initLocale();
+ if ('' === basename('ยง')) {
return false;
}
return true;
@@ -1099,4 +1111,17 @@ class OC_Util {
$t = explode('/', $file);
return array_pop($t);
}
+
+ /**
+ * A human readable string is generated based on version, channel and build number
+ * @return string
+ */
+ public static function getHumanVersion() {
+ $version = OC_Util::getVersionString().' ('.OC_Util::getChannel().')';
+ $build = OC_Util::getBuild();
+ if(!empty($build) and OC_Util::getChannel() === 'daily') {
+ $version .= ' Build:' . $build;
+ }
+ return $version;
+ }
}
diff --git a/lib/public/activity/iconsumer.php b/lib/public/activity/iconsumer.php
index a0134a379dc..9afacf4e745 100644
--- a/lib/public/activity/iconsumer.php
+++ b/lib/public/activity/iconsumer.php
@@ -20,6 +20,11 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Activity/IConsumer interface
+ */
+
// use OCP namespace for all classes that are considered public.
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP\Activity;
diff --git a/lib/public/activity/imanager.php b/lib/public/activity/imanager.php
index 90215d637c0..086e430d677 100644
--- a/lib/public/activity/imanager.php
+++ b/lib/public/activity/imanager.php
@@ -20,6 +20,11 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Activity/IManager interface
+ */
+
// use OCP namespace for all classes that are considered public.
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP\Activity;
@@ -47,7 +52,6 @@ interface IManager {
*
* $callable has to return an instance of OCA\Activity\IConsumer
*
- * @param string $key
* @param \Closure $callable
*/
function registerConsumer(\Closure $callable);
diff --git a/lib/public/appframework/app.php b/lib/public/appframework/app.php
index 6ac48bf102a..0ff6648c5d4 100644
--- a/lib/public/appframework/app.php
+++ b/lib/public/appframework/app.php
@@ -20,6 +20,11 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * AppFramework/App class
+ */
+
namespace OCP\AppFramework;
diff --git a/lib/public/appframework/controller.php b/lib/public/appframework/controller.php
index 320e0cfebb2..dc8da967871 100644
--- a/lib/public/appframework/controller.php
+++ b/lib/public/appframework/controller.php
@@ -20,6 +20,10 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * AppFramework\Controller class
+ */
namespace OCP\AppFramework;
@@ -34,16 +38,19 @@ use OCP\IRequest;
abstract class Controller {
/**
+ * app container for dependency injection
* @var \OCP\AppFramework\IAppContainer
*/
protected $app;
/**
+ * current request
* @var \OCP\IRequest
*/
protected $request;
/**
+ * constructor of the controller
* @param IAppContainer $app interface to the app
* @param IRequest $request an instance of the request
*/
diff --git a/lib/public/appframework/http.php b/lib/public/appframework/http.php
index c584d4ec670..60f314202cc 100644
--- a/lib/public/appframework/http.php
+++ b/lib/public/appframework/http.php
@@ -20,10 +20,16 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * AppFramework\HTTP class
+ */
namespace OCP\AppFramework;
-
+/**
+ * Base class which contains constants for HTTP status codes
+ */
class Http {
const STATUS_CONTINUE = 100;
diff --git a/lib/public/appframework/http/jsonresponse.php b/lib/public/appframework/http/jsonresponse.php
index 7c2b609bc2e..b54b23a34e6 100644
--- a/lib/public/appframework/http/jsonresponse.php
+++ b/lib/public/appframework/http/jsonresponse.php
@@ -20,6 +20,10 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * AppFramework\HTTP\JSONResponse class
+ */
namespace OCP\AppFramework\Http;
@@ -30,10 +34,15 @@ use OCP\AppFramework\Http;
*/
class JSONResponse extends Response {
+ /**
+ * response data
+ * @var array|object
+ */
protected $data;
/**
+ * constructor of JSONResponse
* @param array|object $data the object or array that should be transformed
* @param int $statusCode the Http status code, defaults to 200
*/
@@ -55,7 +64,7 @@ class JSONResponse extends Response {
/**
* Sets values in the data json array
- * @param array|object $params an array or object which will be transformed
+ * @param array|object $data an array or object which will be transformed
* to JSON
*/
public function setData($data){
diff --git a/lib/public/appframework/http/response.php b/lib/public/appframework/http/response.php
index f776878a814..0f5a18ca4fe 100644
--- a/lib/public/appframework/http/response.php
+++ b/lib/public/appframework/http/response.php
@@ -20,6 +20,10 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * AppFramework\HTTP\Response class
+ */
namespace OCP\AppFramework\Http;
diff --git a/lib/public/appframework/http/templateresponse.php b/lib/public/appframework/http/templateresponse.php
index 6156f8062fc..2200a38beca 100644
--- a/lib/public/appframework/http/templateresponse.php
+++ b/lib/public/appframework/http/templateresponse.php
@@ -20,6 +20,10 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * AppFramework\HTTP\TemplateResponse class
+ */
namespace OCP\AppFramework\Http;
@@ -29,14 +33,34 @@ namespace OCP\AppFramework\Http;
*/
class TemplateResponse extends Response {
+ /**
+ * name of the template
+ * @var string
+ */
protected $templateName;
+
+ /**
+ * parameters
+ * @var array
+ */
protected $params;
+
+ /**
+ * rendering type (admin, user, blank)
+ * @var string
+ */
protected $renderAs;
+
+ /**
+ * app name
+ * @var string
+ */
protected $appName;
/**
- * @param string $templateName the name of the template
+ * constructor of TemplateResponse
* @param string $appName the name of the app to load the template from
+ * @param string $templateName the name of the template
*/
public function __construct($appName, $templateName) {
$this->templateName = $templateName;
diff --git a/lib/public/appframework/iapi.php b/lib/public/appframework/iapi.php
index a22b056635e..963e870f79b 100644
--- a/lib/public/appframework/iapi.php
+++ b/lib/public/appframework/iapi.php
@@ -20,6 +20,10 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * AppFramework/IApi interface
+ */
namespace OCP\AppFramework;
diff --git a/lib/public/appframework/middleware.php b/lib/public/appframework/middleware.php
index c4ee1c0dbae..24f31939935 100644
--- a/lib/public/appframework/middleware.php
+++ b/lib/public/appframework/middleware.php
@@ -20,6 +20,10 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * AppFramework\Middleware class
+ */
namespace OCP\AppFramework;
diff --git a/lib/public/authentication/iapachebackend.php b/lib/public/authentication/iapachebackend.php
index 2d2f8c4e486..3979a14302e 100644
--- a/lib/public/authentication/iapachebackend.php
+++ b/lib/public/authentication/iapachebackend.php
@@ -20,6 +20,11 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Authentication/IApacheBackend interface
+ */
+
// use OCP namespace for all classes that are considered public.
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP\Authentication;
diff --git a/lib/public/db.php b/lib/public/db.php
index b9424b53862..c9997c79c3c 100644
--- a/lib/public/db.php
+++ b/lib/public/db.php
@@ -37,6 +37,8 @@ class DB {
/**
* Prepare a SQL query
* @param string $query Query string
+ * @param int $limit Limit of the SQL statement
+ * @param int $offset Offset of the SQL statement
* @return \MDB2_Statement_Common prepared SQL query
*
* SQL query via MDB2 prepare(), needs to be execute()'d!
diff --git a/lib/public/defaults.php b/lib/public/defaults.php
index 8f7853a86a3..34b68903ee8 100644
--- a/lib/public/defaults.php
+++ b/lib/public/defaults.php
@@ -30,19 +30,27 @@
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP;
-/*
+/**
* public api to access default strings and urls for your templates
*/
class Defaults {
+ /**
+ * \OC_Defaults instance to retrieve the defaults
+ * @return string
+ */
private $defaults;
+ /**
+ * creates a \OC_Defaults instance which is used in all methods to retrieve the
+ * actual defaults
+ */
function __construct() {
$this->defaults = new \OC_Defaults();
}
/**
- * @breif get base URL for the organisation behind your ownCloud instance
+ * get base URL for the organisation behind your ownCloud instance
* @return string
*/
public function getBaseUrl() {
@@ -50,7 +58,7 @@ class Defaults {
}
/**
- * @breif link to the desktop sync client
+ * link to the desktop sync client
* @return string
*/
public function getSyncClientUrl() {
@@ -58,7 +66,7 @@ class Defaults {
}
/**
- * @breif base URL to the documentation of your ownCloud instance
+ * base URL to the documentation of your ownCloud instance
* @return string
*/
public function getDocBaseUrl() {
@@ -66,7 +74,7 @@ class Defaults {
}
/**
- * @breif name of your ownCloud instance
+ * name of your ownCloud instance
* @return string
*/
public function getName() {
@@ -74,7 +82,7 @@ class Defaults {
}
/**
- * @breif Entity behind your onwCloud instance
+ * Entity behind your onwCloud instance
* @return string
*/
public function getEntity() {
@@ -82,7 +90,7 @@ class Defaults {
}
/**
- * @breif ownCloud slogan
+ * ownCloud slogan
* @return string
*/
public function getSlogan() {
@@ -90,7 +98,7 @@ class Defaults {
}
/**
- * @breif logo claim
+ * logo claim
* @return string
*/
public function getLogoClaim() {
@@ -98,7 +106,7 @@ class Defaults {
}
/**
- * @breif footer, short version
+ * footer, short version
* @return string
*/
public function getShortFooter() {
@@ -106,7 +114,7 @@ class Defaults {
}
/**
- * @breif footer, long version
+ * footer, long version
* @return string
*/
public function getLongFooter() {
diff --git a/lib/public/files/alreadyexistsexception.php b/lib/public/files/alreadyexistsexception.php
index 3132e3b0c31..7bea947aef0 100644
--- a/lib/public/files/alreadyexistsexception.php
+++ b/lib/public/files/alreadyexistsexception.php
@@ -20,8 +20,16 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/AlreadyExistsException class
+ */
+
// use OCP namespace for all classes that are considered public.
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP\Files;
+/**
+ * Exception for already existing files/folders
+ */
class AlreadyExistsException extends \Exception {}
diff --git a/lib/public/files/entitytoolargeexception.php b/lib/public/files/entitytoolargeexception.php
index e0d93ccbcd0..eaa68a548b9 100644
--- a/lib/public/files/entitytoolargeexception.php
+++ b/lib/public/files/entitytoolargeexception.php
@@ -20,8 +20,16 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/EntityTooLargeException class
+ */
+
// use OCP namespace for all classes that are considered public.
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP\Files;
+/**
+ * Exception for too large entity
+ */
class EntityTooLargeException extends \Exception {}
diff --git a/lib/public/files/file.php b/lib/public/files/file.php
index 730213039d0..c6cda59f9b0 100644
--- a/lib/public/files/file.php
+++ b/lib/public/files/file.php
@@ -20,6 +20,11 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/File interface
+ */
+
// use OCP namespace for all classes that are considered public.
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP\Files;
diff --git a/lib/public/files/folder.php b/lib/public/files/folder.php
index 5c9785db571..7fec1c529a5 100644
--- a/lib/public/files/folder.php
+++ b/lib/public/files/folder.php
@@ -20,6 +20,11 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/Folder interface
+ */
+
// use OCP namespace for all classes that are considered public.
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP\Files;
diff --git a/lib/public/files/invalidcontentexception.php b/lib/public/files/invalidcontentexception.php
index 2e1356e2ba3..3dfe7378c4d 100644
--- a/lib/public/files/invalidcontentexception.php
+++ b/lib/public/files/invalidcontentexception.php
@@ -20,8 +20,16 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/InvalidContentException class
+ */
+
// use OCP namespace for all classes that are considered public.
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP\Files;
+/**
+ * Exception for invalid content
+ */
class InvalidContentException extends \Exception {}
diff --git a/lib/public/files/invalidpathexception.php b/lib/public/files/invalidpathexception.php
index 893eb1e43f8..8ecfa7d89ad 100644
--- a/lib/public/files/invalidpathexception.php
+++ b/lib/public/files/invalidpathexception.php
@@ -20,8 +20,16 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/InvalidPathException class
+ */
+
// use OCP namespace for all classes that are considered public.
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP\Files;
+/**
+ * Exception for invalid path
+ */
class InvalidPathException extends \Exception {}
diff --git a/lib/public/files/node.php b/lib/public/files/node.php
index e38bfa3b2ef..972b1cfa492 100644
--- a/lib/public/files/node.php
+++ b/lib/public/files/node.php
@@ -20,6 +20,11 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/Node interface
+ */
+
// use OCP namespace for all classes that are considered public.
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP\Files;
diff --git a/lib/public/files/notenoughspaceexception.php b/lib/public/files/notenoughspaceexception.php
index 1597a4518b0..17f91b31bfc 100644
--- a/lib/public/files/notenoughspaceexception.php
+++ b/lib/public/files/notenoughspaceexception.php
@@ -20,8 +20,16 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/NotEnoughSpaceException class
+ */
+
// use OCP namespace for all classes that are considered public.
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP\Files;
+/**
+ * Exception for not enough space
+ */
class NotEnoughSpaceException extends \Exception {}
diff --git a/lib/public/files/notfoundexception.php b/lib/public/files/notfoundexception.php
index 489e43fc5fb..cb35199220b 100644
--- a/lib/public/files/notfoundexception.php
+++ b/lib/public/files/notfoundexception.php
@@ -20,8 +20,16 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/NotFoundException class
+ */
+
// use OCP namespace for all classes that are considered public.
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP\Files;
+/**
+ * Exception for not found entity
+ */
class NotFoundException extends \Exception {}
diff --git a/lib/public/files/notpermittedexception.php b/lib/public/files/notpermittedexception.php
index a5be43dbf57..e37bd6fad3c 100644
--- a/lib/public/files/notpermittedexception.php
+++ b/lib/public/files/notpermittedexception.php
@@ -20,8 +20,16 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/NotPermittedException class
+ */
+
// use OCP namespace for all classes that are considered public.
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP\Files;
+/**
+ * Exception for not permitted action
+ */
class NotPermittedException extends \Exception {}
diff --git a/lib/public/files/storage.php b/lib/public/files/storage.php
index 7a7d5ec1efc..194b42a6481 100644
--- a/lib/public/files/storage.php
+++ b/lib/public/files/storage.php
@@ -20,6 +20,11 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * Files/Storage interface
+ */
+
// use OCP namespace for all classes that are considered public.
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP\Files;
diff --git a/lib/public/iaddressbook.php b/lib/public/iaddressbook.php
index 77e8750d9da..dcfe08012e6 100644
--- a/lib/public/iaddressbook.php
+++ b/lib/public/iaddressbook.php
@@ -20,6 +20,11 @@
*
*/
+/**
+ * Public interface of ownCloud for apps to use.
+ * IAddressBook interface
+ */
+
// use OCP namespace for all classes that are considered public.
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP {
diff --git a/lib/public/iavatar.php b/lib/public/iavatar.php
new file mode 100644
index 00000000000..2cbec0d45c3
--- /dev/null
+++ b/lib/public/iavatar.php
@@ -0,0 +1,38 @@
+<?php
+/**
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OCP;
+
+/**
+ * This class provides avatar functionality
+ */
+
+interface IAvatar {
+
+ /**
+ * @brief get the users avatar
+ * @param $size integer size in px of the avatar, avatars are square, defaults to 64
+ * @return boolean|\OC_Image containing the avatar or false if there's no image
+ */
+ function get($size = 64);
+
+ /**
+ * @brief sets the users avatar
+ * @param $data mixed imagedata or path to set a new avatar
+ * @throws Exception if the provided file is not a jpg or png image
+ * @throws Exception if the provided image is not valid
+ * @throws \OCP\NotSquareException if the image is not square
+ * @return void
+ */
+ function set($data);
+
+ /**
+ * @brief remove the users avatar
+ * @return void
+ */
+ function remove();
+}
diff --git a/lib/public/iavatarmanager.php b/lib/public/iavatarmanager.php
new file mode 100644
index 00000000000..9b185ae0467
--- /dev/null
+++ b/lib/public/iavatarmanager.php
@@ -0,0 +1,23 @@
+<?php
+/**
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OCP;
+
+/**
+ * This class provides avatar functionality
+ */
+
+interface IAvatarManager {
+
+ /**
+ * @brief return a user specific instance of \OCP\IAvatar
+ * @see \OCP\IAvatar
+ * @param $user string the ownCloud user id
+ * @return \OCP\IAvatar
+ */
+ function getAvatar($user);
+}
diff --git a/lib/public/icontainer.php b/lib/public/icontainer.php
index 6b7052cc4f4..eaffa5d5a06 100644
--- a/lib/public/icontainer.php
+++ b/lib/public/icontainer.php
@@ -64,7 +64,7 @@ interface IContainer {
* In case the parameter is false the service will be recreated on every call.
*
* @param string $name
- * @param callable $closure
+ * @param \Closure $closure
* @param bool $shared
* @return void
*/
diff --git a/lib/public/idbconnection.php b/lib/public/idbconnection.php
index 17e3de0ffe7..656b5e7e5b2 100644
--- a/lib/public/idbconnection.php
+++ b/lib/public/idbconnection.php
@@ -45,7 +45,7 @@ interface IDBConnection {
/**
* Used to get the id of the just inserted element
- * @param string $tableName the name of the table where we inserted the item
+ * @param string $table the name of the table where we inserted the item
* @return int the id of the inserted element
*/
public function lastInsertId($table = null);
diff --git a/lib/public/iservercontainer.php b/lib/public/iservercontainer.php
index 14822817a47..36296a59850 100644
--- a/lib/public/iservercontainer.php
+++ b/lib/public/iservercontainer.php
@@ -154,4 +154,10 @@ interface IServerContainer {
*/
function getDatabaseConnection();
+ /**
+ * @brief Returns an avatar manager, used for avatar functionality
+ * @return \OCP\IAvatarManager
+ */
+ function getAvatarManager();
+
}
diff --git a/lib/public/share.php b/lib/public/share.php
index caa274b8579..6178a5ae043 100644
--- a/lib/public/share.php
+++ b/lib/public/share.php
@@ -256,7 +256,7 @@ class Share {
/**
* Get the item of item type shared with the current user
* @param string $itemType
- * @param string $ItemTarget
+ * @param string $itemTarget
* @param int $format (optional) Format type must be defined by the backend
* @return Return depends on format
*/
@@ -268,8 +268,8 @@ class Share {
/**
* Get the item of item type shared with a given user by source
- * @param string $ItemType
- * @param string $ItemSource
+ * @param string $itemType
+ * @param string $itemSource
* @param string $user User user to whom the item was shared
* @return array Return list of items with file_target, permissions and expiration
*/